Автоматическое обновление Chrome в Ubuntu
Чот надоело руками обновлять, а не обновлять не получается — чуть что, сразу авторизации везде слетают и прочие оказии...
1. Редактируем файл
#ubuntu #advices
Чот надоело руками обновлять, а не обновлять не получается — чуть что, сразу авторизации везде слетают и прочие оказии...
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
👍1
Что нового в 20 ноде
Из интересного - нативный тест раннер вышел в стейбл, и можно добавлять разрешения на запуск скриптов
https://www.sitepoint.com/node-js-20-new/
#nodejs
Из интересного - нативный тест раннер вышел в стейбл, и можно добавлять разрешения на запуск скриптов
https://www.sitepoint.com/node-js-20-new/
#nodejs
SitePoint
What’s New in Node.js 20
Node.js 20 was released in April 2023. Learn about the new options available to developers with the world's most-used JavaScript runtime.
👍1
Вакансия - Вуй мидл фронт
Мои друзья из https://www.hellride.ru/ ищут middle-frontend разработчика на Vue3.
На беке крутится Laravel. Сам вуй сидит в Laravel Mix.
По скилам - нужна верстка и разработка фронта, навык рефакторинга.
По деньгам - 150-200к рублей. Фултайм, ремоут.
Будет восхитительно, если вы товарищ-фуллстек с опытом работы в Ларе.
Нужно будет развивать основной сайт магазина, а так же другие грядущие проекты компании.
По формату сотрудничества - ИП или самозанятость в идеале, но есть варианты и с оформлением в штат. Есть еще тема с оформлением в IT компанию, но нужно будет подробней тему обсуждать.
Собсно кидайте резюмешки мне в ЛС @bearlogin, а дальше уже направлюна светлый путь.
#vue #вакансия
Мои друзья из https://www.hellride.ru/ ищут middle-frontend разработчика на Vue3.
На беке крутится Laravel. Сам вуй сидит в Laravel Mix.
По скилам - нужна верстка и разработка фронта, навык рефакторинга.
По деньгам - 150-200к рублей. Фултайм, ремоут.
Будет восхитительно, если вы товарищ-фуллстек с опытом работы в Ларе.
Нужно будет развивать основной сайт магазина, а так же другие грядущие проекты компании.
По формату сотрудничества - ИП или самозанятость в идеале, но есть варианты и с оформлением в штат. Есть еще тема с оформлением в IT компанию, но нужно будет подробней тему обсуждать.
Собсно кидайте резюмешки мне в ЛС @bearlogin, а дальше уже направлю
#vue #вакансия
Hellride.ru
Трюковые самокаты: купить трюковой самокат в Москве | Цены трюковых самокатов в интернет магазине Hellride
Если вы хотите купить трюковой самокат, заказать с доставкой детали для самоката, одежду или обувь - вы попали по адресу! Хелрайд - крупнейший скутершоп в России. Мы доставляем не только самики для начинающих, но и трюковые самокаты для продвинутых райдеров…
🔥4👍1
Forwarded from artalog (artalar)
Просто напоминалочка, строки в ЖС могут течь: https://habr.com/ru/articles/449368/
Если интересно как оно под капотом работает, то это rope или что-то похожее, вот понятный коментарий в сурсах V8.
Если интересно как оно под капотом работает, то это rope или что-то похожее, вот понятный коментарий в сурсах V8.
Хабр
Нужно ли чистить строки в JavaScript?
Что? Строки могут быть «грязными»? Да, могут. //.....Какой-то код console.log(typeof str); // string console.log(str.length); // 15 console.log(str); // "ччччччччччччччч" Вы думаете, в этом примере...
🔥6
Быстрый вызов docker ID
Только сегодня узнал фичу, что можно обращаться к контейнеру только по уникальной части ID.
Допустим у нас есть вывод команды ps
#docker #advices #devops
Только сегодня узнал фичу, что можно обращаться к контейнеру только по уникальной части 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
🔥18👍6
Как уменьшить размера образа Docker
1. Используйте маленький базовый образ, например alpine
2. Собирайте в multistage build, чтобы в финальный образ попадали только дистрибутивы
3. В финальных образах используйте distro-less базовые образы, например gcr.io/distroless/nodejs
4. Объединяйте установку зависимостей в одну команду через && и очищайте кеш в ней же
6. Не используйте chown рекурсивно, используйте
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/
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/
🔥8👍2
Масштабирование вебсокет приложений
Неплохая статья, как скейлить websocket приложения.
Спойлер - если сокет клиента подключен к конкретному инстансу на который попал запрос, отправляем сообщение ему напрямую. Если нет - кидаем в PubSub Redis, и инстанс, на котором есть этот клиент получит сообщение и отправит данные клиенту)
Подробней тут
https://shrihariprakash.medium.com/scaling-node-js-chat-apps-to-the-moon-6bc64dd3f638
#backend #redis #websockets
Неплохая статья, как скейлить websocket приложения.
Спойлер - если сокет клиента подключен к конкретному инстансу на который попал запрос, отправляем сообщение ему напрямую. Если нет - кидаем в PubSub Redis, и инстанс, на котором есть этот клиент получит сообщение и отправит данные клиенту)
Подробней тут
https://shrihariprakash.medium.com/scaling-node-js-chat-apps-to-the-moon-6bc64dd3f638
#backend #redis #websockets
Medium
Scaling Node.js Chat Apps to the Moon!
Scaling is not always hard. It seems hard because most times, getting started examples teach you code that doesn’t scale. Let’s build a…
👍4
Dockerd грузит процессор на 100%
Столкнулись сегодня с такой напастью — внезапно начал тормозить сайт. Расследование показало, что dockerd грузит все ядра, при том, что контейнеры жрут мало. Дело оказалось в логах докера.
Нашли такой пост https://forums.docker.com/t/dockerd-using-100-cpu/94962
Помогло переместить логи и перезапустить dockerd
#docker #dockerd #high_cpu_load
Столкнулись сегодня с такой напастью — внезапно начал тормозить сайт. Расследование показало, что dockerd грузит все ядра, при том, что контейнеры жрут мало. Дело оказалось в логах докера.
Нашли такой пост https://forums.docker.com/t/dockerd-using-100-cpu/94962
Помогло переместить логи и перезапустить dockerd
#docker #dockerd #high_cpu_load
👍11
Акция невиданной щедрости!
Так как я на этой неделепрокрастинирую работу горю желанием обучать — стартую акцию на личные консультации - 3500 2000р за час консультации до конца рабочей недели!
Помогу по следующим областям:
- фронту
- беку
- девопсу
- карьерным штукам
- поиску работы
- тестовым заданиям
- рабочим задачам
- ну или можем за жизнь поговорить)
P.S. Верну денег, если не смогу помочь, но пока такой опцией никто не пользовался :)
P.P.S Отзывы тут можно почитать https://solvery.io/ru/mentor/bearlogin
Пишете в ЛС @bearlogin описание проблемы, запланируем созвон ;)
#акция #ментор #менторюзаеду
Так как я на этой неделе
Помогу по следующим областям:
- фронту
- беку
- девопсу
- карьерным штукам
- поиску работы
- тестовым заданиям
- рабочим задачам
- ну или можем за жизнь поговорить)
P.S. Верну денег, если не смогу помочь, но пока такой опцией никто не пользовался :)
P.P.S Отзывы тут можно почитать https://solvery.io/ru/mentor/bearlogin
Пишете в ЛС @bearlogin описание проблемы, запланируем созвон ;)
#акция #ментор #менторюзаеду
Solvery.io
Андрей Луговской — наставник на Solvery.io
Помогу прокачать навыки: JavaScript, React, Next.Js, Nuxt.js, Redux, RxJs, Node.js, TypeScript, Jest, Java, DevOps, Docker, Бэкенд, Spring, Microservices, Vue.js, GitlabCI, Redux Saga, Kubernetes, GraphQL, Фронтенд, NestJS
👍7😁1
Большие PR
Каждому, кто делает ревью, нет-нет, да прилетают от некоторых молчаливых товарищей монструозные PR в тысячи строк и пару сотней файлов :)
Что вы делаете в таких случаях? И какие практики и методы используете, чтобы такого не было?
Каждому, кто делает ревью, нет-нет, да прилетают от некоторых молчаливых товарищей монструозные PR в тысячи строк и пару сотней файлов :)
Что вы делаете в таких случаях? И какие практики и методы используете, чтобы такого не было?
Continuous Delivery vs Continuous Deployment
Каверзный вопрос на собеседовании — «в чем отличие между Continuous Deployment и Continuous Delivery?»
Так вот, основное отличие в том, что при delivery измения автоматически попадают на stage и test окружение, а релиз на продакшн запускается руками.
В Continuous Deployment все происходит без вашего участия, если предыдущая часть пайплайна отработала, запускается следующая.
По-этому когда в следующий раз попросите devops сделать ci\cd (или это вы devops и вас просят), сразу уточните, какой CD :)
А какой Continuousты сегодня используется на вашем проекте?
Статьи по теме:
https://www.puppet.com/blog/continuous-delivery-vs-deployment
https://doam.ru/difference_between_continuous_delivery_and_continuous_deployment/
#cicd #devops
Каверзный вопрос на собеседовании — «в чем отличие между Continuous Deployment и Continuous Delivery?»
Так вот, основное отличие в том, что при delivery измения автоматически попадают на stage и test окружение, а релиз на продакшн запускается руками.
В Continuous Deployment все происходит без вашего участия, если предыдущая часть пайплайна отработала, запускается следующая.
По-этому когда в следующий раз попросите devops сделать ci\cd (или это вы devops и вас просят), сразу уточните, какой CD :)
А какой Continuous
Статьи по теме:
https://www.puppet.com/blog/continuous-delivery-vs-deployment
https://doam.ru/difference_between_continuous_delivery_and_continuous_deployment/
#cicd #devops
👍10
React useReducer
Я вижу много кода и часто замечаю, что useReducer незаслуженно обходят вниманием, предпочитая решать все через useState.
Чаще всего это происходит потому, что люди либо не знают про такой хук, либо слышали, но никогда не использовали.
При этом useReducer позволяет писать более читабельный и элегантный код для работы с стейтом компонента. Особенно хорош для сложной логики, но бывает и полезен для простых задач: булевые переключатели, формы и т.д.
Сравните два примера:
Или пример с объектами:
#frontend #react #hooks #state
Я вижу много кода и часто замечаю, что useReducer незаслуженно обходят вниманием, предпочитая решать все через useState.
Чаще всего это происходит потому, что люди либо не знают про такой хук, либо слышали, но никогда не использовали.
При этом useReducer позволяет писать более читабельный и элегантный код для работы с стейтом компонента. Особенно хорош для сложной логики, но бывает и полезен для простых задач: булевые переключатели, формы и т.д.
Сравните два примера:
const [isEnabled, setIsEnabled] = useState(false);С useReducer мы отделяем логику от отображения и делаем код более семантичным.
<button onClick={setIsEnabled(!isEnabled)}>Click Me</button>
...
const [isEnabled, toggle] = useReducer((state) => !state, false);
<button onClick={toggle}>Click Me</button>
Или пример с объектами:
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
CodeSandbox
laughing-aryabhata-c9w89m - CodeSandbox
laughing-aryabhata-c9w89m by m.bearlogin using loader-utils, react, react-dom, react-noscripts
👍6🔥6😢1
Совет дня: Говорите коллегам не "Что за говно вы сделали?!!", а "Вам есть что здесь улучшить..."
#советдня #менеджмент
#советдня #менеджмент
👍15
nuxtjs/proxy модуль
Если при работе с nuxt 2 у вас возникнет желание использовать вот это https://github.com/nuxt-community/proxy-module на проде, просто НЕ ДЕЛАЙТЕ ЭТОГО!
Конечно, если вам нужны внезапные проблемы с нагрузкой, дисконнекты и прочие радости жизни, или просто скучно живется, то вперед :)
Если вам нужен reverse-proxy, то используйте для этого что-то нормальное, типа nginx или traefik.
P.S. Вы вполне можете его использовать при разработке, но лучше сразу dev окружение создавать с учетом проксирования запросов внешним инструментом.
#nuxt #frontend #proxy
Если при работе с nuxt 2 у вас возникнет желание использовать вот это https://github.com/nuxt-community/proxy-module на проде, просто НЕ ДЕЛАЙТЕ ЭТОГО!
Конечно, если вам нужны внезапные проблемы с нагрузкой, дисконнекты и прочие радости жизни, или просто скучно живется, то вперед :)
Если вам нужен reverse-proxy, то используйте для этого что-то нормальное, типа nginx или traefik.
P.S. Вы вполне можете его использовать при разработке, но лучше сразу dev окружение создавать с учетом проксирования запросов внешним инструментом.
#nuxt #frontend #proxy
GitHub
GitHub - nuxt-community/proxy-module: The one-liner node.js http-proxy middleware solution for Nuxt 2 using http-proxy-middleware
The one-liner node.js http-proxy middleware solution for Nuxt 2 using http-proxy-middleware - nuxt-community/proxy-module
👍5
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
Возникла задача придумать решение для реализации 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
CodeSandbox
stoic-tdd-lldrp9 - CodeSandbox
stoic-tdd-lldrp9 by m.bearlogin using loader-utils, react, react-dom, react-noscripts
🔥2
Нужен PHP разработчик любого уровня
Есть кто на пыхе кодит? Есть отличная вакансия!
https://telegra.ph/Vakansiya-PHP-razrabotchik-v-Perfluence-07-04
Рассмотрим от джунов до синьоров.
Вилка от 100 до 300, белая з\п, айти компания, все дела. Можно ремоут, гибрид или офис в Москве 🙂
Расскажи своему другу пыхапешнику, что пыхапе еще не умер)
Пиши мне @bearlogin и все обсудим)
#php #вакансия
Есть кто на пыхе кодит? Есть отличная вакансия!
https://telegra.ph/Vakansiya-PHP-razrabotchik-v-Perfluence-07-04
Рассмотрим от джунов до синьоров.
Вилка от 100 до 300, белая з\п, айти компания, все дела. Можно ремоут, гибрид или офис в Москве 🙂
Расскажи своему другу пыхапешнику, что пыхапе еще не умер)
Пиши мне @bearlogin и все обсудим)
#php #вакансия
Telegraph
Вакансия PHP-разработчик в Perfluence
Perfluence — маркетинговая платформа, объединившая блогеров и рекламодателей. Мы забрали приз «Компания №1 в сегменте Биржи блогеров» на AdIndex Awards 2021, на премии AdIndex Awards 2022 - награду в номинации «Агентство №1 в сегменте Influence Marketing»…
🔥6
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
Часто можно услышать фразу: "Мы попробовали 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
👍3😁3
SCC
Нашел (подсказали) такой интересный инструмент, который показывает стату проекта. Сколько человек, времени и денег нужно чтобы такой разработать. Довольно точно кстати показывает) https://github.com/boyter/scc
Делитесь в комментах проектами, над которыми работаете)
#инструменты
Нашел (подсказали) такой интересный инструмент, который показывает стату проекта. Сколько человек, времени и денег нужно чтобы такой разработать. Довольно точно кстати показывает) https://github.com/boyter/scc
Делитесь в комментах проектами, над которыми работаете)
#инструменты
🔥4
Nginx Docker Resolver
Когда вы докерезируете frontend приложение, то может возникнуть задача спроксировать API, например чтобы просто не светить сервер API, либо обойти CORS
И удобно это делать в том же самом Nginx, который и сервит ваш фронт.
Например так
Чтобы этого не было, нужно добавитьпростую советскую... инструкции для resolver
Ставьте реакции, делитесь моим каналом с друзьями :)
#frontend #devops #nginx
Когда вы докерезируете frontend приложение, то может возникнуть задача спроксировать API, например чтобы просто не светить сервер API, либо обойти CORS
И удобно это делать в том же самом Nginx, который и сервит ваш фронт.
Например так
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
rewrite /api/(.*) /$1 break;
proxy_pass http://my-server:10000;
proxy_redirect off;
proxy_set_header Host $host;
}
Но здесь есть проблема, если сервис my-server перезагрузится, то nginx будет продолжать отправлять трафик на старый IPЧтобы этого не было, нужно добавить
resolver 127.0.0.11;Так же, если у вас древний докер по каким то причинам, добавьте отключение ipv6
resolver_timeout 10s;
resolver 127.0.0.11 ipv6=off;Успешных вам докеризаций)
Ставьте реакции, делитесь моим каналом с друзьями :)
#frontend #devops #nginx
👍18