Aleksand
хорошо, пойду допишу сервер на knex, выглядит как многообещающе :)
пиши консистентные миграции и обязательно down, даже для самых сложных, тогда тебя не будут проклинать коллеги и просто те кто взял твой код. за миграцию без отката надо публично унижать
Willy
#оффтоп Кто нибудь покупал ардуино? Как оно вам?
arts
Для наколенных поделок вполне удобно.
Max
кто использует supertest, там можно сделать что-то типа мидлвара? хочу проверять, что в каждом ответе с кодом >= 400 есть определенное поле
Stepan
#оффтоп Кто нибудь покупал ардуино? Как оно вам?
90% людей кто покупал чуть поигрался и валяется) вообще интересно но надо под какой то конкретный проект иначе быстро надоедает игрушка
arts
Лол, да. У меня валяется ардуино, пяток esp'шек и коробка всяких реле, датчиков, сдвиговых регистров и прочей мелочи. Ждут своего звёздного часа. Или помойки, как повезёт :-)
Stepan
у меня 2 ящика забитых всякой электроникой, моторами, колесами ИТД )))
Stepan
тоже чет приуныли и ждут чего то
arts
Собери ОБЧР :-)
Stepan
кстати NodeMCU прикольней чем ардуинка, вайфай из коробки
Stepan
для новичка лучше зайдет
Таймураз
В начальной школе разобрал блок питания, начал играться с его частями, поджог ковер
Oleksandr
Кто то умеет для webdriver io дампить сессию, а потом переиспользовать ее?
Матрос
Ребят, подскажите как архитектурненько сделать. Есть модуль который работает с superagent'ом и шлет данные от микросервиса на другие сервисы через кролика. Проблема в том что кролик (именно он, сервисы все за ним, напрямую я к ним не обращаюсь и не планируется) может лечь. Пока что гипотетически. Я собираюсь под это дело впаять в сервис MQ на редиске. Вопрос - оставлять один модуль который шлет данные на кролика и впаять MQ прямо туда (назовем его условно client.js), или сделать под MQ отдельный модуль и общаться с ним через шину?
Матрос
если что непонятно сформулировал, скажите - я поясню
Матрос
а, пока писал, сходу возник другой вопрос - там еще ELK стэк, в LogStash тоже через именутый MQ все складывать для красоты картины?
Матрос
Ща поясню, почти
Матрос
-> 1. какой-либо модуль в моем сервисе отправляет задачу на отправку в модуль в котором есть require('superagent') -> 2. Superagent отправляет это в RabbitMQ на другом хосте -> 3. Другой любой сервис принимает это
Матрос
я хочу вкорячить между 1 и 2 свой локальный MQ
Матрос
на случай если лёг Rabbit
Матрос
модуль который собирает сообщения и делает прочую хрень и отправляет все с помощью суперагента - client.js
Матрос
так понятнее?)
Матрос
я б схемку нафигачил но долго
Матрос
надо было наверное это написать еще - все модули общаются через pub/sub
Anton
ну так понятнее, некий буфер на случай пиздеца со стороны mq, чтобы не проебать сообщения. почему бы и нет, если нет доверия к сторонней системе, но в идеале коенчо сторону MQ попинать, чтобы гарантировали отказоустойчивоть
Матрос
да, все так - но вопрос в силе) стоит ли делать отдельный модуль чисто для работы с MQ или вкорячить MQ прям в client.js?
Матрос
условно - require('bull') (bee/que/какой угодно mq пакет) прям в client.js и там всю логику или все таки отдельно*
Матрос
вариант с вкорячиванием прямо в client.js сильно нарушает SRP... но блин отдельный модуль херачить чисто для MQ мне почему-то кажется оверхэдом
Дима
У тебя всё в одном файле?
Anton
по идее можно вообще без mq обойтись доплнительной, например, при недоступности ты складываешь сообщения в базу/кеш (самый простой вариант во встроенную, чтобы отдельно не запускат ьвсякие редисы), а как только коннект появился - достаешь их оттуда.
Дима
Базу тоже можно самому написать
Матрос
У тебя всё в одном файле?
не, ты что)))) упаси боже
Дима
И tcp
Матрос
ну так у меня MQ в редиску в любом случае все сливает, и в редиске стоит та опция чтоб все персистилось
Anton
ну и сливай это в редиску тогда, дополнительный сервис для этого городить, имхо, не стоит. просто доработать существующий и вынести в конфиг какую-нибудь настройку по вкл/выкл, подсистемы хранения сообщений при недоступности mq
Матрос
ладно, по разному попробую
Konstantin
Вроде бы bull умеет накапливать очередь
Konstantin
Вопрос только насколько большой она может оказаться
A
народ, согласно 12 factor app нужно различные конфижные данные хранить в переменных окружения, какой тут best practice может быть? не пилить же их в package.json перед командами запуска
Матрос
я в ENV запихал. про best practice тож послушаю, интересно
Anonymous
> народ, согласно 12 factor app нужно различные конфижные данные хранить в переменных окружения во первых, 12fa это не стандарт в целом - это лишь имплементация best practices от heroku заточеная под heroku то есть те же самые ENV... ну вроде бы и норм, но как-то прям в переменных... просто в heroku по другому нельзя :) во вторых, 12fa в целом неплох для сервера но тут зависит от того что и КАК ты деплоишь: кластер ли это kubernetes/swarm, локальное приложение на юникс-хостинге, или еще что
A
да хз, обычный nodejs (koa) сервер для АPI, про кластеризацию пока и мыслей нету
Anonymous
лично я (так, для инфы) обычно юзаю модуль https://www.npmjs.com/package/config в проекте что-нибудь типа config/default.js: module.exports = { someitem: 'qwe', someitem2: process.env.SOME_ITEM2 || 'default' } :)
Матрос
смотри как у тебя развертывание происходит
Матрос
какие-то переменные необходимые для сборки храни в переменных окружения, если что-то надо поменять уже в рантайме - делай config.json какой-нибудь например. ну... по крайней мере у меня так)
Anonymous
локально подсовываю .env в рут-директории, в продакшне https://github.com/deis/workflow (кубернетес-фигня), в тестах docker-compose
Aleksand
народ, согласно 12 factor app нужно различные конфижные данные хранить в переменных окружения, какой тут best practice может быть? не пилить же их в package.json перед командами запуска
многие используют такой подход - дефолтные настройки хранят в конфиге из репозитория, а динамические переопределяют из переменных, в общем случае это не налагает ограничений на структуру конфига например такой переменной MY_PREFIX_custom_list='[{"key1": "value1"}, {"key2": "value2"}]'перегружаются значения из конфига { "custom": { "list": [ { "key1": "value1" }, { "key2": "value2" } ] } }
Anonymous
собственно, я че зашел на этот замечательный канал (сори за оффтоп :): кто-нибудь играется с amqp ha кластерами и подключением к ним из под ноды? у меня куча вопросов почему все дрова amqp такие старые и не умеют файловер/рекавери нормально, и поиск того кто нашел ответы :)
Anonymous
эм, ну ладно, вероятно я немного не в тему топика... сорян если помешал, если у кого есть опыт то пишите в приват (с канала выйду чтоб в телефоне спама много не было, приятно было познакомиться :)
Матрос
тут многие спят прост
Stepan
а nodemon можно и на продакшене использовать или не надо? Он какой то оверхед дает? В докере себе для разработки его прекрутил, стоит ли заморачиватся как то 2 версии делать для продакшена и разработки или и так сойдет?
Alexander
они тоже могут перезапустить упавшее
Alexander
но ещё много чего
Матрос
перезапустить упавшее звучит как аварийно передёрнуть:D
Stepan
да мне перегружать не надо после падения (докер это сам сделает если че) я пока для целей чтоб не перегружать в ручную каждый раз когда поменял что то, во время разработки
Матрос
да для разработки вообще пофиг, бери что понравится
Alexander
да для разработки вообще пофиг, бери что понравится
так он про использование в продакшне говорил
Матрос
"я пока для целей чтоб не перегружать в ручную каждый раз когда поменял что то, во время разработки"
Alexander
я запутался кароч(
Матрос
я запутался. истина где-то там
Матрос
вот-вот
Stepan
докер контейнер общий для разработки и продакшена, стоит ли заморачиватся по разному запускать в продакшене и разработке или пофиг если в продакшене будет через nodemon тоже
GG
Как вообще вам докер? Нравится?
GG
Как то пробовал, мне чет не зашло
GG
Может я его просто не для тех задач использовал
Stepan
я не представляю как я жил до докера
Stepan
то на что раньше уходили иногда дни, делается за пару минут
Stepan
но он как бы и не везде нужен
Nurik
Всем привет. Кто знает как в winston можно поменять стандартный цвет для debug записей ? Сейчас цвет дебаг записей синий. А нужен оранжевый.
Матрос
а почему именно оранжевый?....о_О
Матрос
просто интересно
Vint
докер контейнер общий для разработки и продакшена, стоит ли заморачиватся по разному запускать в продакшене и разработке или пофиг если в продакшене будет через nodemon тоже
nodemon падучий очень, в любой момент при перезапуске приложения. Однозначно не стоит в prod. Если хочется чуть стабильнее, то pm2, у него есть свой вотчер изменений (сам не пробовал).
Sergey
pm2 startOrRestart process.config.js и хватит
Nurik
а почему именно оранжевый?....о_О
Монитор такой, что цвета: синий и голубой (который для verbose используется) неотличимы с расстояния