Vladis🩸Love ️
Я
ALEX
Я
https://ipinfo.io/developers я этим пользуюсь. Get Запрос с ip - ответ в json. 1000 запросов в день халявные. Пример ответа: { "ip": "203.205.28.14", "hostname": "static.cmcti.vn", "city": "Ho Chi Minh City", "region": "Ho Chi Minh City", "country": "VN", "loc": "10.8142,106.6438", "org": "AS45903 CMC Telecom Infrastructure Company" }
Ivan
Все уже написано, нужно переделать некоторые формы и дописать перевод в нужные места. Для шарящего в node js задача простая
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Как-то я не очень догоняю про авторизацию и токены. Имеем рестфул. Каждый раз, при обращении к серверу(по любому эндпоинту) перед тем, как делать выборку по эндпоинту, мы сначала берем из базы токен, сверяем его, если да, то next, если нет, то 401. Вопрос, а если человек делает 3000 запросов в день, можно ли не доставать каждый раз токен из базы? Достать токен 1 мс, но если пользователей тысячи?
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
С авторизацией 200 мс обрабатывается запрос, без нее 160 мс. Как ускорить этот процесс?
Дмитрий
С авторизацией 200 мс обрабатывается запрос, без нее 160 мс. Как ускорить этот процесс?
Как минимум сделать всё асинхронными операциями... + кеширование умное
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Пересмотрел все примеры, там каждый раз достается из базы...
Дмитрий
Кешируй в Redis или Nedb
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Как минимум сделать всё асинхронными операциями... + кеширование умное
Все и так асинхронно)) Про милисекунды, я условно, для круглого числа
Дмитрий
Кеширование нужно на уровне приложения тогда
Дмитрий
А почему JWT просто не расшифровывается? ведь там может быть нужная инфа
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Кешируй в Redis или Nedb
А редис быстрее постри что ли?
Bogdan
А редис быстрее постри что ли?
Они совершенно разные
Anton
Редис в ram лежит
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Anton
Он оч быстрый
Дмитрий
редис - инмемори, постгри - классическая реляционная субд. но я бы советовал посмотреть на задачу... вполне может оказаться она не реляционная
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Почитаю про редис, спасибо
Дмитрий
Если можно задачу в нереляцию положить - то можно монгу... на для ноды она более однородна
Bogdan
Почитаю про редис, спасибо
Тарантул еще посмотри, активно продвигают, и вроде бы хорош)
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
редис - инмемори, постгри - классическая реляционная субд. но я бы советовал посмотреть на задачу... вполне может оказаться она не реляционная
Куча кадастровых участков, работа с геометрией и прочие шалости, так что кроме постгри, еще накатан постгис
Дмитрий
раз уже готовое... можно еще индексы таблицы постгри сделать. чтобы на уровне БД быстрее работало
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
40 мс, скорее всего, с индексом уже у него
Милисекунды условно были взяты
Дмитрий
Спасибо, я просто думал, что есть другой способ сверки токенов
Можно токен дешифровать... если он не сильно зашифрован - то будет быстро) А результаты дешифровки тоже можно в инмемори хранить
Дмитрий
Зачем в БД ломиться...
Bogdan
А вообще, по моему, не стоит заморачиваться. 3000 запросов в день — это ерунда, не очень то ты теряешь на проверке авторизации
Fedor
С jwt можно токен проверять без обращения к бд
И даже дешифровать ничего не надо
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Система будет расширяться до 10к пользователей, и это должно работать очень быстро, так как есть еще куча долгих обработок
Bogdan
Система будет расширяться до 10к пользователей, и это должно работать очень быстро, так как есть еще куча долгих обработок
Примерно 40 мс на проверку авторизации это и есть очень быстро :))) А если еще быстрее, то это уже помешательство
Bogdan
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
Видимо ....блат, в метро раздавили...придется архетиктурно извернуться.
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
У меня знакомый в 7мс уложился. При том же железе
Дмитрий
без сетевых издержек 7мс?
Дмитрий
так там скорее всего другая архитектура... да и если честно не реальные циферы
Дмитрий
7мс только роутер экспресса выполняться будет
Дмитрий
без мидлварей и прочего
Дмитрий
7мс я получал только на голом коннекте (задачи минимальной обработки и отправки) и без учета сетевых издержек... но это потом поддерживать не реально
𝒟𝓂𝒾𝓉𝓇𝒾𝓎
На коа, коа быстрее
Дмитрий
На коа, коа быстрее
Нет, со всеми обвесами они примерно одинаковое время покажут. Единственное преимущество коа - ты можешь не ставть модули, которые тебе не нужны... как понимаю вы уже сделали из него аналог экспресса)
Дмитрий
кстати
Tony
привет))
Таймураз
Паспорт неповоротливая хрень
Таймураз
Можешь передавать request в паспорте (нужно параметр еще один передавать) и самостоятельно это поле проверять
Ale
а npm теперь совсем на shrinkwrap не смотрит?
Ale
или надо с каким-то флагом запускать
Ale
как только поставлю нужные версии)
Nikita
yarn
Ale
ярн точно не может из шринкврапа ставить, я с радостью возьму package-lock, когда смогу поставить из shrinkwrap зависимости
Yarik
Всем привет)
Yarik
Нужен совет)
Yarik
Есть два node.js приложения, лежат в одной папке. Работают с MySQL через ORM Sequelizejs, запускаю их одновременно ложится MySQL, по одиночке все ок
Yarik
Что это может быть ?) Уже все гуглил)
Ale
поставь древний npm
да, на 4ом сработало
Ale
и теперь на пятом если запустить, то он обновит формат
Ale
а новый shrinkwrap имеет тот же формат, что и package-lock?
Ale
One key detail about package-lock.json is that it cannot be published, and it will be ignored if found in any place other than the toplevel package. It shares a format with npm-shrinkwrap.json
Ale
https://docs.npmjs.com/files/package-lock.json 🤔
Ale
короч сработало откатить npm на 4, установить, поставить 5, обновить shrinkwrap и потом переименовать его в package-lock. Очевидно все 👍
енот
Помогите советом. Я использую passport-ldapauth Вот я отмучился и получаю "status": "ok" а как мне дальше быть? Я никогда раньше с паспортом вообще не работал. Мне как-то придумать токен, сохранить на сервере, отдать юзеру и по нему смотреть? Или где-то я в доке прошляпил и всё это уже есть?
енот
в хидере мне ETag пришел, это не оно?
Yar
изучу. спасибо
енот
ладно, примерно понятно куда копать, примреы с ним я смотрел для другого проекта
ALEX
ммм
с паспортом норм работает. Кажется он в стандартной связке
енот
да, просто я не очень в этом всём
енот
так, на удивление CTRL+C CTRL+V сработал
енот
теперь надо как- то с безопасностью