Gleb
Ну тут отдельная история) С 2015 года примерно юзался jshint. Недавно выделили команду на перенос фронта на React, они заюзали eslint. Попробовали перенести правила jshint на eslint, повалилась куча ошибок, так что просто добавили код вне папочки с React в .eslintignore 😄
Когда я запускал с набором правил от google, то с —fix он перефигачил 98% кода за ~20 минут и завис.
Тесты пытался один чувак впилить пару месяцев, но команда отказалась их писать/исправлять после фиксов, так что они теперь не рабочие. Например мы не можем протестировать биллинг, так что после обновления на NodeJS 8 будем тупо ночью следить за процентом ошибок и если что, укатывать всё назад)
Скажем так, тут пол года назад появился GitLab, до этого был bare репозиторий.
Gleb
С eslint проблема в том, что есть народ, который фигачит в sublime/vim на удалённом сервере, так что им просто так не дашь плагин для подсветки ошибок. Из-за сломанных тестов все повыключали хуки.
Таймураз
Ну тут отдельная история) С 2015 года примерно юзался jshint. Недавно выделили команду на перенос фронта на React, они заюзали eslint. Попробовали перенести правила jshint на eslint, повалилась куча ошибок, так что просто добавили код вне папочки с React в .eslintignore 😄
Когда я запускал с набором правил от google, то с —fix он перефигачил 98% кода за ~20 минут и завис.
Тесты пытался один чувак впилить пару месяцев, но команда отказалась их писать/исправлять после фиксов, так что они теперь не рабочие. Например мы не можем протестировать биллинг, так что после обновления на NodeJS 8 будем тупо ночью следить за процентом ошибок и если что, укатывать всё назад)
Скажем так, тут пол года назад появился GitLab, до этого был bare репозиторий.
У меня только одна реакция
ебааааааааать
Таймураз
Блин, круто понимать, что у нас все не так плохо
Gleb
Но с другой стороны есть один плюс - если твоя фича сломала прод - все вопросы к тестировщикам =)
Таймураз
Gleb
А, отдельный вопрос это работа с БД. Модели огромные, в некоторых больше сотни полей, весят по 2-3+ мегабайта некоторые. Но работаем мы с ними по особому. Например: user.findOne({ ... }) -> _.getFoo() -> _.getBar() -> _.getBaz(). На каждое действие поднимается вся модель из MongoDB, у неё берётся, например, _id, и по нему ищется следущая модель. И итоге на каждый чих читается N моделей, от которых нужны только _id или userId.
Anton
Таймураз
Nikolay
Gleb
Причём они переодически выкидываются внутри какого-нибудь waterfall и создаётся ситуация: user.getFoo() -> _.getBar() -> _.getUser() /тот же/ -> _.getFoo() ... Лимит памяти каждого инстанса увеличен минимум до 4Гб, иначе всё ломается.
Алексей
Как-то у вас там не очень.
Таймураз
Более чем уверен, что ему нравится
енот
Таймураз
Увы, но насчет алгоритмов все меньше людей заебывается
Картинка, в целом, в тему
Gleb
Более чем уверен, что ему нравится
Ну я люблю урдюлей раздавать, так что мне нормально) Это прикольная задача - разгрести такую кучу говна) Плюс сбоку ещё несколько проектов, один с машинным обучением, который хочет через N месяцев обратно к нам в репу залиться, так что кроме NodeJS будет ещё и Python + TensorFlow =) Тут просто много народа до этого было либо на фронте, либо на Perl (предыдущий проект компании), вот и такой результат тут)
Anton
Более чем уверен, что ему нравится
нормас, человек выговорился, сразу полегчало пади. как в клубе ановнимных алкоголиков, только тут не алгоколь, а говнокод и ужасающие архитектурные решения. тут наоборот нужно похлопать и поддержать, в духе "ты выкарабкаешься, чувак, борись"
Таймураз
Gleb
нормас, человек выговорился, сразу полегчало пади. как в клубе ановнимных алкоголиков, только тут не алгоколь, а говнокод и ужасающие архитектурные решения. тут наоборот нужно похлопать и поддержать, в духе "ты выкарабкаешься, чувак, борись"
Ну типа того) Просто после проекта, красиво поделённого на микросервисы и живущего в Kubernetes (до этого swarm) как-то не очень) Такое впечатление, что откатился к началу своего прихода в Web, к временам самописных шаблонизаторов на похапе.
Vladislav
Гайс никто не находил решение для конверта из RTSP в webRTC ? бесплатное
Artem
всем приввет
Artem
ни у кого не было проблемы с запуском node + docker + passportjs(azure)?
Artem
один запрос отрабатывает дальше не проходит 😢
Artem
локально все работает
Artem
без докера
Vladimir
Приветствую!
Пытаюсь сделать на GitHub что бы сразу после попадания коммитов в мастер в одной репе:
RepoA$ git push RepoA master
они сразу же появлялись в подпапке в другой репе:
RepoB$ git subtree pull --prefix=sub/folder/ RepoA master
Думаю как это лучше автоматизировать, релевантно ли использовать docker container с запущенным node.js который слушает hooks от RepoA с GitHub и обновляет RepoB или есть способ проще? Кто-нибудь знает где можно на халяву хостить такой контейнер?
P.S.: Open Source
Alexander
Vladimir
CircleCI вроде умеет кучу всего, может через него замутить https://github.com/DevProgress/onboarding/wiki/Using-Circle-CI-with-Github-Pages-for-Continuous-Delivery
Sergey
/stat@combot
Combot
combot.org/chat/-1001041204341
CherryTea
CherryTea
Ну тут отдельная история) С 2015 года примерно юзался jshint. Недавно выделили команду на перенос фронта на React, они заюзали eslint. Попробовали перенести правила jshint на eslint, повалилась куча ошибок, так что просто добавили код вне папочки с React в .eslintignore 😄
Когда я запускал с набором правил от google, то с —fix он перефигачил 98% кода за ~20 минут и завис.
Тесты пытался один чувак впилить пару месяцев, но команда отказалась их писать/исправлять после фиксов, так что они теперь не рабочие. Например мы не можем протестировать биллинг, так что после обновления на NodeJS 8 будем тупо ночью следить за процентом ошибок и если что, укатывать всё назад)
Скажем так, тут пол года назад появился GitLab, до этого был bare репозиторий.
Самое время все сжечь))
CherryTea
CherryTea
Стивен кинг для нод разработчика)
CherryTea
Хотя, хотя, говорят хлебнуть дермеца бывает полезно, чтобы самому не плодить такого. Главное не долго
Gleb
Самое время все сжечь))
Да, у нас уже есть впечатление, что при втором запуске eslint --fix скажет "git reset --hard HEAD~9999999 && git push --force". Проблема в том, что такой подход расползается и на остальные проекты, который начинают писать с нуля. Например, тут много что запускается руками с помощью bin скриптов. Так вот в них понапихали в начало файла
#!/usr/bin/node.sh
, где node.sh - это копия папки с нодой из под nvm. Или например в начале всех bash скриптов делается импорт nvm из папки /home/www/.nvm (типа при запуске по крону всё ломалось, лень было настраивать). Недавно я это нашёл в проекте соседнего отдела, который пишут новые люди с нуля( Отругал, исправил. Но всё ж так не исправишь... А ещё есть один файл e.js, который импортирует в себя стандартные модули типа path, fs, util и т.д., а потом из e.js это берут уже другие файлы. Проблема в том, что потом в e.js подключается большая часть моделей, а другая часть кладётся в него руками 😁
Дима
Мой опыт с плохими проектами: однажды я узнал, что в eslint есть баг и он падает после полутора тысяч ошибок в файле
Gleb
А ещё тут есть папка lib, внутри которой есть файлы h.js и helper.js, а так же папки h и helper.
Gleb
Ну тут есть файлы по 10к+ строк, так что вроде этот тест он прошёл)
Paruyr
https://www.youtube.com/watch?v=ZpgC07aXdWI&feature=share
Сори за ютуб, но очень в тему
Gleb
Ещё есть гениальная штука как cb.ok. Это метод ok, который воткнут в прототип Function, принимает на фход колбэк. Если его вызвать у колбэка, то он возвращает функцию, которая используется как колбэк. Когда в эту функцию прилетает первый агрумент, то он выплёвывает в ту функцию, от которой был вызван, ошибку, иначе передаёт всё, кроме ошибки, в переданную функцию. Всё бы хорошо, красивое решение. Но вот только он где-то по пути теряет куски стектрейса и контекст вызова (аргументы функции).
Gleb
Kibana с обвесом тут появилась только недавно, ещё чуть раньше кое-как распилили функционал на воркеры поверх RabbitMQ. И то, только потому, что прод начал стабильно падать раз в пару дней по неизвестным причинам.
Дима
> Всё бы хорошо, красивое решение
Alex ZeroDub
Всем привет. Подскажите, node-fibers жив или мертв ? Использует кто fiber в проектах ? Или раз есть async/await то fiber не нужны ?
Alex ZeroDub
Alex ZeroDub
Под капотом
CherryTea
Ещё есть гениальная штука как cb.ok. Это метод ok, который воткнут в прототип Function, принимает на фход колбэк. Если его вызвать у колбэка, то он возвращает функцию, которая используется как колбэк. Когда в эту функцию прилетает первый агрумент, то он выплёвывает в ту функцию, от которой был вызван, ошибку, иначе передаёт всё, кроме ошибки, в переданную функцию. Всё бы хорошо, красивое решение. Но вот только он где-то по пути теряет куски стектрейса и контекст вызова (аргументы функции).
Ногалицо
Gleb
А ещё тут в качестве id страниц использовались имена страниц. А они отличаются для разных локализаций, соответственно для того, что бы посмотреть, чем в БД отличаются страницы сайтов в разных локализациях пришлось писать скрипт, который по расстоянию Левинштейна находит примерно одинаковые страницы и потом уже выбирает данные из БД 😐
Дима
Вот это круто конечно
CherryTea
Мне кажется это все от избытка времени
Nikita
Nikita
И оракуль.
Gleb
А, ну и вместо ObjectId тут запилен свой костыль, который руками генерирует id из 12 символов. И есть спициальная штука, которая проверяет, уникален этот id или нет, если конфликт - то идёт перегенерировать. Да, штуку эту запилили только тогда, когда посыпались конфликты. Теперь вот переодически увеличивают кол-во перегенераций в случае конфликта.
Vint
Ну а чего? PG в V8 умеет же.
Nikita
Вы не видели цмсок на sql, да? ;-)
CherryTea
Nikita
Пихаешь ему sqli такой, а там код шаблона хтмл страницы вываливается.
CherryTea
Кажется такой же алгоритм в реализации питона для хеширования массивов
Nikita
На sql
CherryTea
Nikita
Modx на пыхе, не?
CherryTea
Дадада
Gleb
Зато это приводит к появлению таких вот шедевров
Nikita
Дадада
А я о цмсках на эскуэль говорю.
Nikita
Такие бывают. К сожалению.
Anonymous
Дима
Граф Эскуэль
Gleb
Nikita
а на чем ты хочешь?
Эм. Ну на чём-то отличном от языка написания запросов к бд. Слои там, изоляция, вот это всё.
Nikita
Да и библиотеки.
Дима
Anonymous
стоп
Anonymous
веб сервер на SQL?
Дима
😂
Nikita
Когда у людей sql запрос генерит хтмл страницу для отдачи в браузер - это, имхо, слишком адово.
Anonymous
я думал что "на sql" подразумевает "с использованием sql бд"
Nikita
веб сервер на SQL?
Я не знаю, мб там между базой и хттп и была какая прослойка, но генерация хтмл страниц была на функциях sql.