en
Feedback
BEARlogin Dev

BEARlogin Dev

Open in Telegram

Примус починяю. Канал с хокку тут https://t.me/devs_hokku По сотрудничеству @bearlogin

Show more
767
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 #state

Continues 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 грузит процессор на 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 #вакансия

Какой ты javascript сегодня? https://dev-questions.com/js/js-basics

Что нового в 20 ноде Из интересного - нативный тест раннер вышел в стейбл, и можно добавлять разрешения на запуск скриптов https://www.sitepoint.com/node-js-20-new/ #nodejs

Автоматическое обновление Chrome в Ubuntu Чот надоело руками обновлять, а не обновлять не получается — чуть что, сразу авторизации везде слетают и прочие оказии... 1. Редактируем файл
sudo nano /etc/apt/sources.list.d/google-chrome.list
2. Добавляем туда эту строку
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
3. Скачиваем и добавляем ключ
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo tee /usr/share/keyrings/google-linux-signing-keyring.gpg >/dev/null
4. Обновляем список пакетов
sudo apt update
5. Устанавливаем Chrome
sudo apt install google-chrome-stable

Теперь хром должен обновляться автоматически, но если нет, то посмотрите в сторону unattended-upgrades #ubuntu #advices