Willy
#оффтоп
Кто нибудь покупал ардуино?
Как оно вам?
arts
Для наколенных поделок вполне удобно.
Andrew Kiselev
Max
кто использует supertest, там можно сделать что-то типа мидлвара? хочу проверять, что в каждом ответе с кодом >= 400 есть определенное поле
arts
Лол, да. У меня валяется ардуино, пяток esp'шек и коробка всяких реле, датчиков, сдвиговых регистров и прочей мелочи. Ждут своего звёздного часа. Или помойки, как повезёт :-)
Stepan
у меня 2 ящика забитых всякой электроникой, моторами, колесами ИТД )))
Stepan
тоже чет приуныли и ждут чего то
arts
Собери ОБЧР :-)
Stepan
кстати NodeMCU прикольней чем ардуинка, вайфай из коробки
Stepan
для новичка лучше зайдет
Таймураз
В начальной школе разобрал блок питания, начал играться с его частями, поджог ковер
Willy
Oleksandr
Кто то умеет для webdriver io дампить сессию, а потом переиспользовать ее?
Матрос
Ребят, подскажите как архитектурненько сделать. Есть модуль который работает с superagent'ом и шлет данные от микросервиса на другие сервисы через кролика. Проблема в том что кролик (именно он, сервисы все за ним, напрямую я к ним не обращаюсь и не планируется) может лечь. Пока что гипотетически. Я собираюсь под это дело впаять в сервис MQ на редиске. Вопрос - оставлять один модуль который шлет данные на кролика и впаять MQ прямо туда (назовем его условно client.js), или сделать под MQ отдельный модуль и общаться с ним через шину?
Матрос
если что непонятно сформулировал, скажите - я поясню
Матрос
а, пока писал, сходу возник другой вопрос - там еще ELK стэк, в LogStash тоже через именутый MQ все складывать для красоты картины?
Anton
Матрос
Ща поясню, почти
Матрос
-> 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
Вопрос только насколько большой она может оказаться
Aleksand
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
Anonymous
собственно, я че зашел на этот замечательный канал (сори за оффтоп :): кто-нибудь играется с amqp ha кластерами и подключением к ним из под ноды? у меня куча вопросов почему все дрова amqp такие старые и не умеют файловер/рекавери нормально, и поиск того кто нашел ответы :)
Anonymous
эм, ну ладно, вероятно я немного не в тему топика... сорян если помешал, если у кого есть опыт то пишите в приват (с канала выйду чтоб в телефоне спама много не было, приятно было познакомиться :)
Матрос
тут многие спят прост
Stepan
а nodemon можно и на продакшене использовать или не надо? Он какой то оверхед дает? В докере себе для разработки его прекрутил, стоит ли заморачиватся как то 2 версии делать для продакшена и разработки или и так сойдет?
Alexander
Alexander
они тоже могут перезапустить упавшее
Alexander
но ещё много чего
Матрос
перезапустить упавшее звучит как аварийно передёрнуть:D
Stepan
да мне перегружать не надо после падения (докер это сам сделает если че) я пока для целей чтоб не перегружать в ручную каждый раз когда поменял что то, во время разработки
Матрос
да для разработки вообще пофиг, бери что понравится
Alexander
Матрос
"я пока для целей чтоб не перегружать в ручную каждый раз когда поменял что то, во время разработки"
Alexander
я запутался кароч(
Матрос
я запутался. истина где-то там
Матрос
вот-вот
Stepan
докер контейнер общий для разработки и продакшена, стоит ли заморачиватся по разному запускать в продакшене и разработке или пофиг если в продакшене будет через nodemon тоже
GG
Как вообще вам докер? Нравится?
GG
Как то пробовал, мне чет не зашло
GG
Может я его просто не для тех задач использовал
Stepan
я не представляю как я жил до докера
Stepan
то на что раньше уходили иногда дни, делается за пару минут
Stepan
но он как бы и не везде нужен
Nurik
Всем привет. Кто знает как в winston можно поменять стандартный цвет для debug записей ?
Сейчас цвет дебаг записей синий. А нужен оранжевый.
Матрос
а почему именно оранжевый?....о_О
Матрос
просто интересно
Sergey
Sergey
pm2 startOrRestart process.config.js
и хватит