V
А ктото Elasticache юзает?
Николаич
А что мешает? Конечно можно.
Denis
Внутри одного скрипта?
Denis
Экспресс юзаешь?
Denis
Несколько http.createServer внутри одного скрипта
Макс
Ребят
Макс
А что бы использывать oauth2 обязательно надо на сайте их регать?
Николаич
Функция принимает номер порта и возвращает объект app.
function listen(port){
const app = express();
app.listen(/* port, host, etc */);
return app;
}
Николаич
Естественно псевдокод 😊
Николаич
/stat@combot
Combot
combot.org/chat/-1001041204341
Denis
На авито)
Таймураз
Учитывай, что один порт- один инстанс приложения
V
Почему? Можно слушать сразу несколько, не?
Таймураз
Не процесса, а именно экземпляра http.createServer
V
А, ну это да :)
dexofan
Посоветуй библиотеку шоб работать с Callback API VK
V
knex
Таймураз
Пользуюсь knex относительно недолго, но вроде как покрывает все юзкейсы
V
Я уже достаточно давно, сначала bookshelf использовал, но по факту оказалось проще писать запросы самому :)
Таймураз
Практически всегда проще писать запросы самому
Таймураз
А когда переписываешь чужой код- тем более
Таймураз
ребят, а бабель умеет чистить код от if(false) {}?
V
ну просто seq и bookshelf это орм, а knex - просто квери билдер
Таймураз
Если с нуля разворачиваешь проект, то в сторону sequelize смотри, насчёт bookshelf ничего конкретного сказать не могу
На knex удобно сложные запросы собирать, но это с тем учётом, что ты можешь в SQL
Таймураз
Попробуй bookshelf. Убьешь день, зато поймёшь, что тебе точно нужно
Andrew Kiselev
благодарю за совет
Таймураз
Ilya
И сильно ускоряет
Ilya
findOne в моделях сиквалайза очень даже
V
ускоряет разработку?
V
или что?
Ilya
Ilya
Работу кода оно не ускорит. А замедлит.
Ilya
Несущественно правда
V
А, блин, я что-то подумал что идет свранеие обертки типа того же кнекса и секвелайза в плане findOne :)
Ilya
Ну сложные джойны по мне лучше писать руками. Я так лучше понимаю, что я делаю
Ilya
А простой селект и апсерт пусть делает обёртка
V
Да, я из-за сложны х джойнов и начал кнекс использовать, а потом вообще на него перешел, ибо нет смысла делать new Account().find({email}) если можно сделать селект через кнекс, выбрать нужные поля сразу и тп
Таймураз
V
это же на уровне базы решается?
Andrew Kiselev
да, на уровне базы тоже можно прописывать https://i.imgur.com/UfegsNR.png
Таймураз
Таймураз
Anonymous
pg-promise
Anonymous
Что использовать sequelize или node-postgres? Какие у кого предпочтения? Может есть другие варианты для node и postgres?
Anonymous
https://github.com/vitaly-t/pg-promise
Таймураз
pg-promise
knex из-под коробки с промисами
Ilya
Да все ща уже на промисах
Матрос
ребят, для периодических обновлений состояния небольших независимых объектов коих будет over9000 (не факт что однотипных) в одном инстансе ноды что лучше - заюзать что-нибудь cron'like (node-cron, later) и реализовать функцию update как в unity3d или все таки продолжать использовать таймеры?
Матрос
считайте что у меня онлайн игра (нет конечно, но похоже крайне в этом моменте)
Матрос
я прост хз как с точки зрения дизайна правильнее будет
V
а обьекты у тебя где? в памяти?
Матрос
да, еще скидываются в кэш и персистятся
Матрос
в кэш в редиску и в монгу на постоянку
Матрос
но в памяти только текущее состояние
V
а апдейт один на всех или у каждого свой7
V
время апдейт*
Матрос
у каждого предполагается
Матрос
ну может конечно потом сбрасывать однотипные объекты в один пул по какому-либо признаку чтоб всем скопом обновлять - но до этого еще далеко, пока что не буду делать, не успею
Матрос
хотя кардинально наличие такого пула ничего собственно по сути не меняет) один хрен будет update у всех звать, если cron'like подход использовать
Матрос
изменения состояния предполагаются раз в сутки (запланированные). не запланированные понятно дело в любой момент времени могут прилететь
V
Я с тким не сталкивался, но наверное надо бы отдельный сервис мутить, типа скедулера, куда добавлять задачи на обновление и оно бы обновляло в монге-редисе для каждого
V
а там уже можно и на таймерах и на кроне или взять какой-то таск раннер
Матрос
так в монге/редиске они и так обновляются через шину. мне их самих обновлять надо))) как раз в памяти
Матрос
ну то есть у них у самих есть логика которая по истечении или раз в какое-то время должна отрабатывать. в монгу и редиску через pub-sub я обновления скидываю и так
V
ну так в приложухе подпишись на шину и обновляй когда в нее что-то придет
Матрос
та не
Матрос
ща
Матрос
function Some(name) {
this.name = name;
this.doSomething = () => {};
this.doSomethingElse = () => {};
this.interval = setInterval(() => {
this.doSomething();
}, 1000);
this.setTimeout(() => {
this.doSomethingElse();
}, 5 *1000);
}
V
Если у тебя уже есть шина, по которой приходят апдейты в другое место, почему ее же не прикрутить сюда
Матрос
допустим вот так. могу привести пример - представим себе что это стадо кроликов. живет само по себе, боты, и раз в какое-то время что-то делают. может быть сложная логика, могут прилетать различные внешние принудительные (локация снесена) воздействия, могут внутренние
Andrew Kiselev
pg-promise
Так то сам pg тоже поддерживает промисы
Матрос
Всеволод, да есть она там) вопрос не в том как изменения этих объектов стянуть, а как их эмитить.
Ilya
Матрос
через функцию update которая вызывается либо в loop'е либо кроном, либо в колбэках на таймерах вешать