Бей своих, чтобы чужие боялись
Американское НКО пострадало от автора node-ipc
https://github.com/RIAEvangelist/node-ipc/issues/308#issuecomment-1070975082
Американское НКО пострадало от автора node-ipc
https://github.com/RIAEvangelist/node-ipc/issues/308#issuecomment-1070975082
Храните lock файлы в репозитории
Вот просто всегда заливайте lock файлы в git. Я это делал еще до этой всей истории с малварями, и всем советовал. Если у вас вдруг есть репа без лок файла, срочно залейте его туда.
Вот просто всегда заливайте lock файлы в git. Я это делал еще до этой всей истории с малварями, и всем советовал. Если у вас вдруг есть репа без лок файла, срочно залейте его туда.
👍2
Хроники первой мировой интернет войны
Обсуждали сейчас в техдирском чате https://news.1rj.ru/str/ctorecordschat как жить в таких условия. Собрал список рекомендаций.
- lock файлы хранить в репозитории
- Изоляция сборки в контейнерах в том числе и для промежуточных сборок на машинах разработчиков, хотя бы до появления lock файла.
- Форки всех библиотек (по возможности) и контейнеров к себе.
- Зеркалирование репозиториев пакетов.
- Включение в CI как минимум поиска по ключевым словам, UTF символам с изображением украинского флага и сравнение списка файлов с вайтлистом.
- Ресерч по инструментам анализа кода.
Конечно, форки всех библиотек - это очень дорого, но тут нужно смотреть по рискам, что дороже - потеря данных или форки.
Пишите свои советы в комменты
Обсуждали сейчас в техдирском чате https://news.1rj.ru/str/ctorecordschat как жить в таких условия. Собрал список рекомендаций.
- lock файлы хранить в репозитории
- Изоляция сборки в контейнерах в том числе и для промежуточных сборок на машинах разработчиков, хотя бы до появления lock файла.
- Форки всех библиотек (по возможности) и контейнеров к себе.
- Зеркалирование репозиториев пакетов.
- Включение в CI как минимум поиска по ключевым словам, UTF символам с изображением украинского флага и сравнение списка файлов с вайтлистом.
- Ресерч по инструментам анализа кода.
Конечно, форки всех библиотек - это очень дорого, но тут нужно смотреть по рискам, что дороже - потеря данных или форки.
Пишите свои советы в комменты
👍4
Laravel Facades
При работе с Laravel приходится много работать с Facades и многие их не любят, так как непонятно, с каким реальным классом они работают. Но есть способ узнать это. Например так мы узнаем, какой класс используется для URL:
При работе с Laravel приходится много работать с Facades и многие их не любят, так как непонятно, с каким реальным классом они работают. Но есть способ узнать это. Например так мы узнаем, какой класс используется для URL:
\dd(get_class(\Illuminate\Support\Facades\URL::getFacadeRoot()));#laravel #facades #advices #backend #php
Как оплатить Hetzner
Комрады интересуются, как в таких условиях платить за хостинг.
У Hetzner есть возможность оплатить через Bank Transfer.
Тема работает со Сбер, Тинькофф и Альфа.
У Сбера вроде коммисия самая маленькая - 150р. Тинькофф берут 15 евро, Альфа 0.9%
Тут тема https://vc.ru/ask/376006-kak-oplachivat-hosting-hetzner-kuda-perehodit
Комрады интересуются, как в таких условиях платить за хостинг.
У Hetzner есть возможность оплатить через Bank Transfer.
Тема работает со Сбер, Тинькофф и Альфа.
У Сбера вроде коммисия самая маленькая - 150р. Тинькофф берут 15 евро, Альфа 0.9%
Тут тема https://vc.ru/ask/376006-kak-oplachivat-hosting-hetzner-kuda-perehodit
vc.ru
Как оплачивать хостинг Hetzner? Куда переходить? — Вопросы на vc.ru
Коллеги, как думаете оплачивать хостинг Hetzner? Payment options там такие:
👍1
Фризы SSH терминала
Я думаю все замечали, что если на какое то время оставить в терминале SSH подключение, то через некоторое время оно перестает отвечать, и либо отваливается, либо фризит терминал.
Чтобы это фиксануть, нужно в файле /etc/ssh/ssh_config дописать конфиг
#devops #ssh #advices
Я думаю все замечали, что если на какое то время оставить в терминале SSH подключение, то через некоторое время оно перестает отвечать, и либо отваливается, либо фризит терминал.
Чтобы это фиксануть, нужно в файле /etc/ssh/ssh_config дописать конфиг
Host *Клиент будет отправлять пустой пакет каждые 100 секунд и не даст умереть соединению
ServerAliveInterval 100
#devops #ssh #advices
👍6
Yarn и проблема с install в CI окружениях
Если вы используете yarn для билда, то думаю замечали, что у него бывают проблемы со скачиванием зависимостей в CI билдах, хотя локально все отрабатывает отлично.
Обычно мы получаем такие ошибки:
А вы как решаете такие проблемы?
#yarn #ci
Если вы используете yarn для билда, то думаю замечали, что у него бывают проблемы со скачиванием зависимостей в CI билдах, хотя локально все отрабатывает отлично.
Обычно мы получаем такие ошибки:
error An unexpected error occurred: "ENOENT: no such file or directory, open '/usr/local/share/.cache/yarn/v6/npm-esbuild-linux-ppc64le-0.14.38-dceb0a1b186f5df679618882a7990bd422089b47-integrity/node_modules/esbuild-linux-ppc64le/.yarn-metadata.json'".Эта проблема решается флагом --network-concurrency 1, которая ограничивает конкурентные запросы, правда при этом страдает скорость билда.
А вы как решаете такие проблемы?
#yarn #ci
👍1
Кеширование сборки докера в multistage конфигурациях
В CI билдить приложение можно как в окружении runner, так и в docker in docker.
Если в первом случае мы можем сделать service specific конфигурацию, настроить кеши и т.д. То во втором случае мы будем в меньшей степени зависить от конкретного CI сервиса и не придется для теста билда гонять CI.
Но при билде docker-in-docker возникает вопрос производительности и кеширования.
Универсальный способ - спулить последний образ и использовать его как кеш.
Вот пример из документации Gitlab https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
Но если Dockerfile содержит несколько stage, то данный вариант не будет работать, так как кешироваться будет только последняя стадия.
Подробней тут https://bearlogin.notion.site/multistage-88aab91f9848490ea1b41bf87b23b917
#docker #devops #ci #cache
В CI билдить приложение можно как в окружении runner, так и в docker in docker.
Если в первом случае мы можем сделать service specific конфигурацию, настроить кеши и т.д. То во втором случае мы будем в меньшей степени зависить от конкретного CI сервиса и не придется для теста билда гонять CI.
Но при билде docker-in-docker возникает вопрос производительности и кеширования.
Универсальный способ - спулить последний образ и использовать его как кеш.
Вот пример из документации Gitlab https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
Но если Dockerfile содержит несколько stage, то данный вариант не будет работать, так как кешироваться будет только последняя стадия.
Подробней тут https://bearlogin.notion.site/multistage-88aab91f9848490ea1b41bf87b23b917
#docker #devops #ci #cache
👍4
Grepper
Недавно наткнулся на такой сервис https://www.codegrepper.com/
Его суть, что любой человек может сохранить code сниппет как ответ на вопрос.
Например, ищу я как в vue3 сделать компонент с v-model:
В 1 клик сохраняю этот сниппет, и теперь любой у кого установлен плагин grepper увидит этот ответ при вводе вопроса в гугл.
Записал небольшое демо https://www.loom.com/share/a632fb66dc214ac3893f0c892c1560f0
Недавно наткнулся на такой сервис https://www.codegrepper.com/
Его суть, что любой человек может сохранить code сниппет как ответ на вопрос.
Например, ищу я как в vue3 сделать компонент с v-model:
В 1 клик сохраняю этот сниппет, и теперь любой у кого установлен плагин grepper увидит этот ответ при вводе вопроса в гугл.
Записал небольшое демо https://www.loom.com/share/a632fb66dc214ac3893f0c892c1560f0
You
Enterprise AI, Built Your Way | You.com
From APIs to full-service support, You.com empowers every business to build secure, scalable, and trustworthy AI apps and agents — all with complete control.
👍5
Идемпотентность
Наверное вы сталкивались с проблемой дублирования запросов к API при быстром нажатии на кнопки или проблемами с сетью, в результате которых создавались дублирующие заказы.
По этой теме очень советую статью от Яндекса https://habr.com/ru/company/yandex/blog/442762/
#api #backend #arcitecture
Наверное вы сталкивались с проблемой дублирования запросов к API при быстром нажатии на кнопки или проблемами с сетью, в результате которых создавались дублирующие заказы.
По этой теме очень советую статью от Яндекса https://habr.com/ru/company/yandex/blog/442762/
#api #backend #arcitecture
Хабр
Стажёр Вася и его истории об идемпотентности API
Идемпотентность — звучит сложно, говорят о ней редко, но это касается всех приложений, использующих API в своей работе. Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси....
👍11
Обратная связь
Буду очень признателен за обратную связь по постам - вам секундное дело жмакнуть 👍👎, а я буду понимать, насколько релеватную инфу выкладываю. Спасибо!
Буду очень признателен за обратную связь по постам - вам секундное дело жмакнуть 👍👎, а я буду понимать, насколько релеватную инфу выкладываю. Спасибо!
👍6
Сегодня узнал что такое ханипот, как говорится и в мемах есть полезная информация
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
Пентестер находит бекдор, но это всего лишь ханипот
👍9
API
Еще в догонку к теме API - отличная книга Сергея Константинова. Маст хев для всех бэкендеров, кому приходится проектировать REST API.
https://twirl.github.io/The-API-Book/index.ru.html
Еще в догонку к теме API - отличная книга Сергея Константинова. Маст хев для всех бэкендеров, кому приходится проектировать REST API.
https://twirl.github.io/The-API-Book/index.ru.html
twirl.github.io
Сергей Константинов. API
Разработка API — особый навык: API является как мультипликатором ваших возможностей, так и мультипликатором ваших ошибок. Эта книга написана для того, чтобы поделиться опытом и изложить лучшие практики разработки API. Книга состоит из шести разделов, посвящённых…
👍7
Определение области применения
В предыдущем посте в книге про API описан хороший метод аналитики задач:
"Ключевой вопрос, который вы должны задать себе четыре раза, выглядит так: какую проблему мы решаем? Задать его следует четыре раза с ударением на каждом из четырёх слов.
Какую проблему мы решаем? Можем ли мы чётко описать, в какой ситуации гипотетическим потребителям-разработчикам нужен наш API?
Какую проблему мы решаем? А мы правда уверены, что описанная выше ситуация — проблема? Действительно ли кто-то готов платить (в прямом и переносном смысле) за то, что ситуация будет как-то автоматизирована?
Какую проблему мы решаем? Действительно ли решение этой проблемы находится в нашей компетенции? Действительно ли мы находимся в той позиции, чтобы решить эту проблему?
Какую проблему мы решаем? Правда ли, что решение, которое мы предлагаем, действительно решает проблему? Не создаём ли мы на её месте другую проблему, более сложную?" https://twirl.github.io/The-API-Book/docs/API.ru.html#chapter-8
Особенно мне нравится пункт 4. Действительно бывают случаи, когда вместо одной проблемы создаем другую, городим костыли и т.д.
#product_management #development
В предыдущем посте в книге про API описан хороший метод аналитики задач:
"Ключевой вопрос, который вы должны задать себе четыре раза, выглядит так: какую проблему мы решаем? Задать его следует четыре раза с ударением на каждом из четырёх слов.
Какую проблему мы решаем? Можем ли мы чётко описать, в какой ситуации гипотетическим потребителям-разработчикам нужен наш API?
Какую проблему мы решаем? А мы правда уверены, что описанная выше ситуация — проблема? Действительно ли кто-то готов платить (в прямом и переносном смысле) за то, что ситуация будет как-то автоматизирована?
Какую проблему мы решаем? Действительно ли решение этой проблемы находится в нашей компетенции? Действительно ли мы находимся в той позиции, чтобы решить эту проблему?
Какую проблему мы решаем? Правда ли, что решение, которое мы предлагаем, действительно решает проблему? Не создаём ли мы на её месте другую проблему, более сложную?" https://twirl.github.io/The-API-Book/docs/API.ru.html#chapter-8
Особенно мне нравится пункт 4. Действительно бывают случаи, когда вместо одной проблемы создаем другую, городим костыли и т.д.
#product_management #development
👍4🔥2
Значит, прилетает к нам такое письмецо.
Моя первая реакция - ты чо, пёс, у нас кубернейтесы с масштабированием до 10 нод сударь, тут какая то ошибка, у нас все хорошо с мощностями...
Ну иблагополучно забил отложил в беклог данный тикет.
Но несколько дней спустя заметил, что huntica.works у меня с домашнего интернета не открывается, хотя с 4G все отлично. В то же время у нашего CEO извражеской солнечной Калифорнии все отлично загружается.
Более того, оказалось, что я не могу подключится к нашему кластеру на DO.
При этом при включении VPN все начинало работать "like a charm"
Пишу George Gaál, спрашиваю, вотневедомая хуйня оказия такая случилась, знаешь чего? Он говорит - ага, похоже блокируют, на днях комрады по этой причине драпали с DO на Яндексы...
А так же скинул эту статью https://habr.com/ru/amp/post/667096/
Собственно, привет РКН, КПСС или что там у нас.
На этом месте лимит телеги кончается, дальше решение читайте тут https://bearlogin.notion.site/a62fb447700646e59b790f9450d081ae
#devops
Моя первая реакция - т
Ну и
Но несколько дней спустя заметил, что huntica.works у меня с домашнего интернета не открывается, хотя с 4G все отлично. В то же время у нашего CEO из
Более того, оказалось, что я не могу подключится к нашему кластеру на DO.
При этом при включении VPN все начинало работать "like a charm"
Пишу George Gaál, спрашиваю, вот
А так же скинул эту статью https://habr.com/ru/amp/post/667096/
Собственно, привет РКН, КПСС или что там у нас.
На этом месте лимит телеги кончается, дальше решение читайте тут https://bearlogin.notion.site/a62fb447700646e59b790f9450d081ae
#devops
👍10
Шпаргалочки
В каждой (но это не точно) технологии можно найти cheetsheets - шпаргалки. Это основные возможности и конструкции языка/фреймворка и т.д.
По ним очень удобно готовиться к собесам или быстро ознакомится с технологией.
Примеры:
https://github.com/typenoscript-cheatsheets/react
https://github.com/dekadentno/vue-cheat-sheet
https://github.com/mbeaudru/modern-js-cheatsheet
https://github.com/wsargent/docker-cheat-sheet
https://github.com/LeCoupa/awesome-cheatsheets
P.S. О шпаргалках я узнал у своего падавана @VicSmol :) Он кстати ищет работу NodeJS Developer
#advices
В каждой (но это не точно) технологии можно найти cheetsheets - шпаргалки. Это основные возможности и конструкции языка/фреймворка и т.д.
По ним очень удобно готовиться к собесам или быстро ознакомится с технологией.
Примеры:
https://github.com/typenoscript-cheatsheets/react
https://github.com/dekadentno/vue-cheat-sheet
https://github.com/mbeaudru/modern-js-cheatsheet
https://github.com/wsargent/docker-cheat-sheet
https://github.com/LeCoupa/awesome-cheatsheets
P.S. О шпаргалках я узнал у своего падавана @VicSmol :) Он кстати ищет работу NodeJS Developer
#advices
👍8🔥5
Форки и зависимости
В работе синьора или миддла возникает такой момент, когда “хватит это терпеть!”©
И делаешь форк какой-нибудь супер либы, потому что уже год не хотят поправить злой баг, который похоже аффектит только твою работу.
А что делать потом? Надо же проверить, как изменения работают в твоем приложении.
И тут у нас варианты:
1. Правки залить на гитхабы и создать pull request в родительский репозиторий. Затем ждать когда их примут и опубликуют в npm. Выглядит жуть как долго и неудобно.
2. Переназначить зависимость на свой git репозиторий. Например так
3. Деплоить изменения прямиком в node_modules приложения. Дешево, сердито и костыль
4. Использовать yarn link
Делаем
Последний вариант выглядит интересней всего, но есть нюанс из-за которого, не разобравшись, мне пришлось выбрать третий вариант в далеком(нет) прошлом.
Если эта библиотечка имеет в dependencies какую то зависимость, которая должна быть только одна, например vue или react, то мы получим кучу левых ошибок, из которых не сразу разберем, что дело в link.
Например такое
Нужно дополнительно сделать link этих зависимостей
Happy contributing :)
P.S. Эта история работает так же и при разработке своих либ и создании example к ним. Только нужно указать зависимости через link - "react": "link:../node_modules/react" . Так же можно использовать https://www.npmjs.com/package/create-react-library которая сразу создаст папку example с правильно подключенными зависимостями.
Ну и по традиции, лайки там, дизлайки, реакции
#react #vue
В работе синьора или миддла возникает такой момент, когда “хватит это терпеть!”©
И делаешь форк какой-нибудь супер либы, потому что уже год не хотят поправить злой баг, который похоже аффектит только твою работу.
А что делать потом? Надо же проверить, как изменения работают в твоем приложении.
И тут у нас варианты:
1. Правки залить на гитхабы и создать pull request в родительский репозиторий. Затем ждать когда их примут и опубликуют в npm. Выглядит жуть как долго и неудобно.
2. Переназначить зависимость на свой git репозиторий. Например так
"super-lib": "git+https://github.com/org/super-lib.git",Ну и инсталлить изменения оттуда, что, конечно, быстрей чем первый вариант, но все равно не очень.
3. Деплоить изменения прямиком в node_modules приложения. Дешево, сердито и костыль
4. Использовать yarn link
Делаем
yarn linkв root дирректории форка, затем заходим в наше приложение и делаем
yarn link super-libТаким образом зависимость линкуется прямиком в локальную дирректорию без изменения package.json
Последний вариант выглядит интересней всего, но есть нюанс из-за которого, не разобравшись, мне пришлось выбрать третий вариант в далеком(нет) прошлом.
Если эта библиотечка имеет в dependencies какую то зависимость, которая должна быть только одна, например vue или react, то мы получим кучу левых ошибок, из которых не сразу разберем, что дело в link.
Например такое
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:Решение
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
или
[Vue warn]: $listeners is readonly.
[Vue warn]: $attrs is readonly.
Нужно дополнительно сделать link этих зависимостей
cd /mysuperfork/node_modules/reactДля vue нужно линкануть сам vue и vue-template-compiler
yarn link
cd ../react-dom
yarn link
cd app
yarn link react
yarn link react-dom
Happy contributing :)
P.S. Эта история работает так же и при разработке своих либ и создании example к ним. Только нужно указать зависимости через link - "react": "link:../node_modules/react" . Так же можно использовать https://www.npmjs.com/package/create-react-library которая сразу создаст папку example с правильно подключенными зависимостями.
Ну и по традиции, лайки там, дизлайки, реакции
#react #vue
👍9
Sample Apps
В Реакт чате нашел список идей для приложений-примеров. https://flaviocopes.com/sample-app-ideas/
Что очень удобно, когда изучаешь новый фреймворк, или пишешь tutorial.
Копипастить бесконечные to-do листы очень скучно, плюс это хороший челлендж для практики - читаешь туториал, и реализуешь другое приложение.
В Реакт чате нашел список идей для приложений-примеров. https://flaviocopes.com/sample-app-ideas/
Что очень удобно, когда изучаешь новый фреймворк, или пишешь tutorial.
Копипастить бесконечные to-do листы очень скучно, плюс это хороший челлендж для практики - читаешь туториал, и реализуешь другое приложение.
Flaviocopes
A list of sample Web App Ideas
Every time I start a tutorial I find myself in a limbo wondering which app should I build. A to-do app? Not again!
👍10
Deno
Вчера только узнал, что есть новая среда исполнения для JS и TS от автора NodeJS Ryan Dahl - https://deno.land/
При первом рассмотрении довольно занимательная штука:
- Написана на Rust и ориентирована на высокую производительность
- Поддержка TS из коробки (правда без runtime type checking)
- Инструменты для разработчика (система разрешения зависимостей и формат кода)
- Приложения работают в песочницах, и требуют выдачи разрешений для доступа к система (например сеть, файловая система, env)
- ES Modules
- стандартная библиотека модулей
- зависимости через url
Нашел даже nestjs порт на https://github.com/SampaioLeal/destjs и full stack фреймворк https://github.com/alephjs/aleph.js
Здесь можно посмотреть про философию Deno https://www.youtube.com/watch?v=1gIiZfSbEAE
А вы уже пробовали Deno?
#js #ts
Вчера только узнал, что есть новая среда исполнения для JS и TS от автора NodeJS Ryan Dahl - https://deno.land/
При первом рассмотрении довольно занимательная штука:
- Написана на Rust и ориентирована на высокую производительность
- Поддержка TS из коробки (правда без runtime type checking)
- Инструменты для разработчика (система разрешения зависимостей и формат кода)
- Приложения работают в песочницах, и требуют выдачи разрешений для доступа к система (например сеть, файловая система, env)
- ES Modules
- стандартная библиотека модулей
- зависимости через url
Нашел даже nestjs порт на https://github.com/SampaioLeal/destjs и full stack фреймворк https://github.com/alephjs/aleph.js
Здесь можно посмотреть про философию Deno https://www.youtube.com/watch?v=1gIiZfSbEAE
А вы уже пробовали Deno?
#js #ts
Deno
Deno, the next-generation JavaScript runtime
Deno features improved security, performance, and developer experience compared to its predecessor. It's a great time to upgrade your Node.js project to run on Deno.
👍5