BEARlogin – Telegram
BEARlogin
707 subscribers
159 photos
29 videos
6 files
214 links
Примус починяю.

Канал с хокку тут https://news.1rj.ru/str/devs_hokku

Рекламу не беру
Download Telegram
Бей своих, чтобы чужие боялись

Американское НКО пострадало от автора node-ipc

https://github.com/RIAEvangelist/node-ipc/issues/308#issuecomment-1070975082
Храните lock файлы в репозитории

Вот просто всегда заливайте lock файлы в git. Я это делал еще до этой всей истории с малварями, и всем советовал. Если у вас вдруг есть репа без лок файла, срочно залейте его туда.
👍2
BEARlogin pinned «Ментор vs самообучение Сейчас все больше людей понимают, что пройдя курсы, которые обещают сделать вас как минимум джуном за 3 месяца, а то и сразу миддлом с нуля, в лучшем случае только начинаешь понимать что то на уровне стажера. С трудоустройством, естественно…»
Хроники первой мировой интернет войны

Обсуждали сейчас в техдирском чате https://news.1rj.ru/str/ctorecordschat как жить в таких условия. Собрал список рекомендаций.

- lock файлы хранить в репозитории
- Изоляция сборки в контейнерах в том числе и для промежуточных сборок на машинах разработчиков, хотя бы до появления lock файла.
- Форки всех библиотек (по возможности) и контейнеров к себе.
- Зеркалирование репозиториев пакетов.
- Включение в CI как минимум поиска по ключевым словам, UTF символам с изображением украинского флага и сравнение списка файлов с вайтлистом.
- Ресерч по инструментам анализа кода.

Конечно, форки всех библиотек - это очень дорого, но тут нужно смотреть по рискам, что дороже - потеря данных или форки.

Пишите свои советы в комменты
👍4
Laravel Facades

При работе с 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
👍1
Фризы SSH терминала

Я думаю все замечали, что если на какое то время оставить в терминале SSH подключение, то через некоторое время оно перестает отвечать, и либо отваливается, либо фризит терминал.

Чтобы это фиксануть, нужно в файле /etc/ssh/ssh_config дописать конфиг

Host *
ServerAliveInterval 100

Клиент будет отправлять пустой пакет каждые 100 секунд и не даст умереть соединению

#devops #ssh #advices
👍6
Yarn и проблема с install в 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
👍4
Grepper

Недавно наткнулся на такой сервис https://www.codegrepper.com/

Его суть, что любой человек может сохранить code сниппет как ответ на вопрос.

Например, ищу я как в vue3 сделать компонент с v-model:

В 1 клик сохраняю этот сниппет, и теперь любой у кого установлен плагин grepper увидит этот ответ при вводе вопроса в гугл.

Записал небольшое демо https://www.loom.com/share/a632fb66dc214ac3893f0c892c1560f0
👍5
Идемпотентность

Наверное вы сталкивались с проблемой дублирования запросов к API при быстром нажатии на кнопки или проблемами с сетью, в результате которых создавались дублирующие заказы.

По этой теме очень советую статью от Яндекса https://habr.com/ru/company/yandex/blog/442762/

#api #backend #arcitecture
👍11
Обратная связь

Буду очень признателен за обратную связь по постам - вам секундное дело жмакнуть 👍👎, а я буду понимать, насколько релеватную инфу выкладываю. Спасибо!
👍6
Сегодня узнал что такое ханипот, как говорится и в мемах есть полезная информация
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
Пентестер находит бекдор, но это всего лишь ханипот
👍9
Определение области применения

В предыдущем посте в книге про 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
👍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
👍8🔥5
Форки и зависимости

В работе синьора или миддла возникает такой момент, когда “хватит это терпеть!”©

И делаешь форк какой-нибудь супер либы, потому что уже год не хотят поправить злой баг, который похоже аффектит только твою работу.

А что делать потом? Надо же проверить, как изменения работают в твоем приложении.

И тут у нас варианты:

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
yarn link

cd ../react-dom
yarn link

cd app
yarn link react
yarn link react-dom

Для vue нужно линкануть сам vue и vue-template-compiler

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 листы очень скучно, плюс это хороший челлендж для практики - читаешь туториал, и реализуешь другое приложение.
👍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
👍5