BEARlogin Dev
Open in Telegram
Примус починяю. Канал с хокку тут https://t.me/devs_hokku По сотрудничеству @bearlogin
Show more767
Subscribers
No data24 hours
-17 days
No data30 days
Posts Archive
Scrum
Часто можно услышать фразу: "Мы попробовали Scrum, то еще говно".
Но по факту максимум что было спринты, которые переносились, и дейли на которые все забивали.
Собсно скрам не может работать по кускам. Это свойство называется эмерджентность, когда сумма свойств отдельных частей не дает свойства всей системы.
По-этому скрам не будет работать без всех этих на первый взгляд не нужных ритуалов и церемоний.
Внедрение всех этих штук занимает определенное время, встречает сопротивление изменениям.
Нередко доходит до саботажа. И если у вас нет знаний теории и практического опыта, либо приглашенного скрам мастера, то попытки обречены на провал.
Я видел примеры, когда люди не то что книги не читали по скраму, а со статьи на Хабре пытались что то делать (сам так делал, каюсь :)).
Естественно такие начинания заканчиваются хреново.
Собственно если вам интересна эта тема, рекомендую сходить на этот 2-дневный интенсив
https://EnterAgility.ru/psm_1?utm_source=tg&utm_medium=banner&utm_campaign=bearlogin
После которого можно даже сдать экзамен на PSM I и понтоваться что ты не хер с горы, а сертифицированный скрам мастер :) Ну и под это дело выпросить повышение з\п.
Ну или перешли эту тему своему ПМ, который думает, что он умеет в Scrum :)
P.S. Чуваки обещали мне процент с продаж, так что го на интенсив :)
P.P.S Если хочется набраться умных слов типа "эмерджентность", советую эту книгу) https://www.ozon.ru/product/kniga-agile-menedzhment-liderstvo-i-upravlenie-komandami-biznes-literatura-myagkaya-oblozhka-229075631/
А какое у вас отношение к скраму, скрам мастерам, и прочим сектантам аджаил менеджменту?
#management #scrum #agile
Нужен PHP разработчик любого уровня
Есть кто на пыхе кодит? Есть отличная вакансия!
https://telegra.ph/Vakansiya-PHP-razrabotchik-v-Perfluence-07-04
Рассмотрим от джунов до синьоров.
Вилка от 100 до 300, белая з\п, айти компания, все дела. Можно ремоут, гибрид или офис в Москве 🙂
Расскажи своему другу пыхапешнику, что пыхапе еще не умер)
Пиши мне @bearlogin и все обсудим)
#php #вакансия
Undo\Redo
Возникла задача придумать решение для реализации undo\redo для данных в Event Sourcing.
Для тех кто не в курсе, Event Sourcing — это архитектурный паттерн, когда мы храним все события, произошедшие с аггрегатом и собираем его состояние применяя эти события последовательно.
Плюс еще момент — события - immutable, т.е. мы не можем их изменять, удалять.
В итоге остановился на решении с стеком Undo.
1. При undo добавляем в стек события, при redo - удаляем из него.
2. Результирующим будет список событий за вычетом добавленных в список Undo.
3. Если порождается новое событие и при этом стек undo не пустой, то сохраняем событие отсечки, которое уже не может откатываться.
Набросал прототип https://codesandbox.io/s/stoic-tdd-lldrp9?file=/src/App.js:495-588
Что думаете? Есть ли какой то кейс, который я не учел?
#eventsourcing #architecture #undoredo
nuxtjs/proxy модуль
Если при работе с nuxt 2 у вас возникнет желание использовать вот это https://github.com/nuxt-community/proxy-module на проде, просто НЕ ДЕЛАЙТЕ ЭТОГО!
Конечно, если вам нужны внезапные проблемы с нагрузкой, дисконеннекты и прочие радости жизни, или просто скучно живется, то вперед :)
Если вам нужен reverse-proxy, то используйте для этого что-то нормальное, типа nginx или traefik.
P.S. Вы вполне можете его использовать при разработке, но лучше сразу dev окружение создавать с учетом проксирования запросов внешним инструментом.
#nuxt #frontend #nuxt-proxy
Совет дня: Говорите коллегам не "Что за говно вы сделали?!!", а "Вам есть что здесь улучшить..."
#советдня #менеджмент
React useReducer
Я вижу много кода и часто замечаю, что useReducer незаслуженно обходят вниманием, предпочитая решать все через useState.
Чаще всего это происходит по тому, что люди либо не знают про такой хук, либо слышали, но никогда не использовали.
При этом useReducer позволяет писать более читабельный и элегантный код для работы с стейтом компонента. Особенно со сложной логикой, но бывает и полезен для простых задач, как булевые переключатели, формы и т.д.
Сравните два примера:
const [isEnabled, setIsEnabled] = useState(false);
<button onClick={setIsEnabled(!isEnabled)}>Click Me</button>
...
const [isEnabled, toggle] = useReducer((state) => !state, false);
<button onClick={toggle}>Click Me</button>
С useReducer мы отделяем логику от отображения и делаем код более семантичным.
Или пример с объектами:
const [user, setUser] = useState({});
return (
<input
onChange={(e) =>
setUser((old) => ({ ...old, name: e.target.value }))
}
value="user.name"
placeholder={"name"}
name={"name"}
/>
);
И вариант с useReducer:
const [user, updateUser] = useReducer((oldData, newData) => ({...oldData, newData})
return (
<input
onChange={(e) =>
updateUser({ name: e.target.value })
}
value="user.name"
placeholder={"name"}
name={"name"}
/>
);
Сделал сэндбокс поиграться https://codesandbox.io/s/laughing-aryabhata-c9w89m?file=/src/App.js
#frontend #react #hooks #stateContinues Delivery vs Continues Deployment
Каверзный вопрос на собеседовании — «в чем отличие между continues deployment и continues delivery?»
Так вот, основное отличие в том, что при delivery измения автоматически попадают на stage и test окружение, а релиз на продакшн запускается руками.
В Continues Deployment все происходит без вашего участия, если предыдущая часть пайплайна отработала, запускается следующая.
Статьи по теме:
https://www.puppet.com/blog/continuous-delivery-vs-deployment
https://doam.ru/difference_between_continuous_delivery_and_continuous_deployment/
#cicd #devops
Большие PR
Каждому, кто делает ревью, нет-нет, да прилетают от некоторых молчаливых товарищей монструозные PR в тысячи строк и пару сотней файлов :)
Что вы делаете в таких случаях? И какие практики и методы используете, чтобы такого не было?
Акция невиданной щедрости!
Так как я на этой неделе прокрастинирую работу горю желанием обучать — стартую акцию на личные консультации - 3500 2000р за час консультации до конца рабочей недели!
Помогу по следующим областям:
- фронту
- беку
- девопсу
- карьерным штукам
- поиску работы
- тестовым заданиям
- рабочим задачам
- ну или можем за жизнь поговорить)
P.S. Верну денег, если не смогу помочь, но пока такой опцией никто не пользовался :)
P.P.S Отзывы тут можно почитать https://solvery.io/ru/mentor-page-preview/4239
Пишете в ЛС @bearlogin, запланируем созвон ;)
#акция #ментор #менторюзаеду
Dockerd грузит процессор на 100%
Столкнулись сегодня с такой напастью — внезапно начал тормозить сайт. Расследование показало, что dockerd грузит все ядра, при том, что контейнеры жрут мало. Дело оказалось в логах докера.
Нашли такой пост https://forums.docker.com/t/dockerd-using-100-cpu/94962
Помогло переместить логи и перезапустить dockerd
#docker #dockerd #high_cpu_load
Масштабирование вебсокет приложений
Неплохая статья, как скейлить websocket приложения.
Спойлер - если сокет клиента подключен к конкретному инстансу, отправляем сообщение ему напрямую. Если нет - кидаем в pubSub Redis, и инстанс, на котором есть этот клиент получит сообщение и отправит данные клиенту)
Подробней тут
https://shrihariprakash.medium.com/scaling-node-js-chat-apps-to-the-moon-6bc64dd3f638
#backend #redis #websockets
Как уменьшить размера образа Docker
1. Используйте маленький базовый образ, например alpine
2. Собирайте в multistage build, чтобы в финальный образ попадали только дистрибутивы
3. В финальных образах используйте distro-less базовые образы, например gcr.io/distroless/nodejs
4. Объединяйте установку зависимостей в одну команду через && и очищайте кеш в ней же
&& apt-get clean && rm -rf /var/lib/apt/lists/*5. При установке зависимостей используйте
--no-install-recommendsили аналоги 6. Не используйте chown рекурсивно, используйте
COPY --chown=7. Используйте .dockerignore файл 8. Утилиты для оптимизации https://github.com/slimtoolkit/slim https://github.com/wagoodman/dive Статьи по теме: https://www.augmentedmind.de/2022/02/06/optimize-docker-image-size/ https://devopscube.com/reduce-docker-image-size/
Быстрый вызов docker ID
Только сегодня узнал фичу, что можно обращаться к контейнеру только по уникальной части ID.
Допустим у нас есть вывод команды ps
❯ docker ps --format 'table {{.ID}}\t{{.Image}}'
CONTAINER ID IMAGE
514019ccaaff confluentinc/cp-kafka:7.3.0
1d3f566badfa confluentinc/cp-zookeeper:7.3.0
0d300e19077b redis
037b7ad33544 provectuslabs/kafka-ui
dc04138cf5b9 minio/minio:RELEASE.2021-07-30T00-02-00Z
Я хочу посмотреть логи контейнера
514019ccaaffМне достаточно указать только уникальную часть ID, в данном случае хватит даже "5"
docker logs 5При этому у меня 2 контейнера с ведущим нулем, по этому чтобы почитать логи редис, мне нужно уже 2 символа - 0d #docker #advices #devops
Repost from artalog
Просто напоминалочка, строки в ЖС могут течь: https://habr.com/ru/articles/449368/
Если интересно как оно под капотом работает, то это rope или что-то похожее, вот понятный коментарий в сурсах V8.
Вакансия - Вуй мидл фронт
Мои друзья из https://www.hellride.ru/ ищут middle-frontend разработчика на Vue3.
На беке крутится Laravel. Сам вуй сидит в Laravel Mix.
По скилам - нужна верстка и разработка фронта, навык рефакторинга.
По деньгам - 150-200к рублей. Фултайм, ремоут.
Будет восхитительно, если вы товарищ-фуллстек с опытом работы в Ларе.
Нужно будет развивать основной сайт магазина, а так же другие грядущие проекты компании.
По формату сотрудничества - ИП или самозанятость в идеале, но есть варианты и с оформлением в штат. Есть еще тема с оформлением в IT компанию, но нужно будет подробней тему обсуждать.
Собсно кидайте резюмешки мне в ЛС @bearlogin, а дальше уже направлю на светлый путь.
#vue #вакансия
Что нового в 20 ноде
Из интересного - нативный тест раннер вышел в стейбл, и можно добавлять разрешения на запуск скриптов
https://www.sitepoint.com/node-js-20-new/
#nodejs
Автоматическое обновление Chrome в Ubuntu
Чот надоело руками обновлять, а не обновлять не получается — чуть что, сразу авторизации везде слетают и прочие оказии...
1. Редактируем файл
sudo nano /etc/apt/sources.list.d/google-chrome.list2. Добавляем туда эту строку
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main3. Скачиваем и добавляем ключ
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo tee /usr/share/keyrings/google-linux-signing-keyring.gpg >/dev/null4. Обновляем список пакетов
sudo apt update5. Устанавливаем Chrome
sudo apt install google-chrome-stableТеперь хром должен обновляться автоматически, но если нет, то посмотрите в сторону unattended-upgrades #ubuntu #advices
