Есть разные темы, на которые я могу писать. Какие 3 темы вам больше всего интересны?
Anonymous Poll
47%
Frontend
53%
Backend
32%
Devops
9%
Management
9%
Product
26%
Личный опыт и мнение
30%
Профессиональный рост
32%
Интересные статьи, примеры кода, полезные материалы
6%
Переговоры
4%
Другое
Traefik vs Nginx
Обычно я для проксирования сервисов на docker-compose или stack применял nginx. Но у него есть очень неприятный недостаток - нет поддержки Letsencrypt из коробки.
Если standalone nginx еще норм дружит с certbot, который сам после обновления сертификата перезагружает сервер, то с docker все сложней.
Так как Nginx не может без перезагрузки применить новый сертификат, то приходится либо руками перезагружать контейнер, либо писать хуки для контейнера с certbot. Плюс нужно подкладывать фейковый сертификат в конфиг nginx на первый запуск, чтобы он вообще запустился. В общем те еще танцы с бубном. Плюс бывает что certbot подкидывает проблем, например не может авторизоваться.
Так получилось, что в последнее время мне пришлось поднимать много хостов и сервисов для нашего нового сервиса видео звонков для проведения интервью в Huntica.
Изрядно повоевав с Nginx, я решил посмотреть в сторону Traefik, с которым уже имел позитивный опыт использования.
Полный пост тут https://bearlogin.notion.site/Traefik-vs-Nginx-614c207be76f49ab9c7207331642e9a0
Обычно я для проксирования сервисов на docker-compose или stack применял nginx. Но у него есть очень неприятный недостаток - нет поддержки Letsencrypt из коробки.
Если standalone nginx еще норм дружит с certbot, который сам после обновления сертификата перезагружает сервер, то с docker все сложней.
Так как Nginx не может без перезагрузки применить новый сертификат, то приходится либо руками перезагружать контейнер, либо писать хуки для контейнера с certbot. Плюс нужно подкладывать фейковый сертификат в конфиг nginx на первый запуск, чтобы он вообще запустился. В общем те еще танцы с бубном. Плюс бывает что certbot подкидывает проблем, например не может авторизоваться.
Так получилось, что в последнее время мне пришлось поднимать много хостов и сервисов для нашего нового сервиса видео звонков для проведения интервью в Huntica.
Изрядно повоевав с Nginx, я решил посмотреть в сторону Traefik, с которым уже имел позитивный опыт использования.
Полный пост тут https://bearlogin.notion.site/Traefik-vs-Nginx-614c207be76f49ab9c7207331642e9a0
Andrei's Notion on Notion
Traefik vs Nginx
Обычно я для проксирования сервисов на docker-compose или stack применял nginx. Но у него есть очень неприятный недостаток - нет поддержки Letsencrypt из коробки.
Event Loop или почему страницы тормозят 💤
Наверное вы замечали что страницы сайтов в какой то момент перестают отвечать и "зависают". По большей части это происходит потому, что JS - однопоточный язык. А вся асинхронность это не часть самого языка, а часть браузерного WebAPI или среды NodeJS.
Так же для реализации мнопоточности с определенными ограничениями можно использовать Web Workers API. https://developer.mozilla.org/ru/docs/Web/API/Web_Workers_API/Using_web_workers
Но вернемся к основной теме, почему страницы зависают. Все дело в Event Loop - событийном цикле.
Это бесконечный цикл, который с определенным приоритетом обрабатывает задачи, полученные от разных заказчиков:
1. Macrotasks - сам js скрипт, события, отложенные задачи - setTimeout, setInterval, ajax и т.д.
2. Microtasks - promises, MutationObserver, queueMicrotask(task)
3. Render - задачи на отрисовку
Как отрабатывает цикл
1. Сначала event loop берет одну макротаску и выполняет ее.
2. После ее выполнения, он переходит к очереди microtasks и выполняет ее пока она не закончится, если их нет - пропускает и идет дальше.
3. Выполняет задачи на Render, если их нет - пропускает и идет дальше.
Дальше все повторяется.
То есть, пока исполняются таска и микротаски, браузер не приступает к отрисовке.
Это означает, если код в таске или микротаске будет исполнятся 15 секунд, то все это время страница будет висеть и не реагировать.
Подробней и с картинками тут https://bearlogin.notion.site/Event-Loop-84c24de514544b7bb05ada9d36199abe
Если Вам понравилась статья, и то что я делаю, поддержите меня и расскажите про мой канал друзьям. 👍
#frontend #nodejs #eventloop #js
Наверное вы замечали что страницы сайтов в какой то момент перестают отвечать и "зависают". По большей части это происходит потому, что JS - однопоточный язык. А вся асинхронность это не часть самого языка, а часть браузерного WebAPI или среды NodeJS.
Так же для реализации мнопоточности с определенными ограничениями можно использовать Web Workers API. https://developer.mozilla.org/ru/docs/Web/API/Web_Workers_API/Using_web_workers
Но вернемся к основной теме, почему страницы зависают. Все дело в Event Loop - событийном цикле.
Это бесконечный цикл, который с определенным приоритетом обрабатывает задачи, полученные от разных заказчиков:
1. Macrotasks - сам js скрипт, события, отложенные задачи - setTimeout, setInterval, ajax и т.д.
2. Microtasks - promises, MutationObserver, queueMicrotask(task)
3. Render - задачи на отрисовку
Как отрабатывает цикл
1. Сначала event loop берет одну макротаску и выполняет ее.
2. После ее выполнения, он переходит к очереди microtasks и выполняет ее пока она не закончится, если их нет - пропускает и идет дальше.
3. Выполняет задачи на Render, если их нет - пропускает и идет дальше.
Дальше все повторяется.
То есть, пока исполняются таска и микротаски, браузер не приступает к отрисовке.
Это означает, если код в таске или микротаске будет исполнятся 15 секунд, то все это время страница будет висеть и не реагировать.
Подробней и с картинками тут https://bearlogin.notion.site/Event-Loop-84c24de514544b7bb05ada9d36199abe
Если Вам понравилась статья, и то что я делаю, поддержите меня и расскажите про мой канал друзьям. 👍
#frontend #nodejs #eventloop #js
👍1
Deffered Promises
При работе с Promise многим кажется, что callback, который мы передаем в конструктор выполнится только тогда, когда мы вызовем метод then() или воспользуемся async / await.
Но реальное поведение совершенно противоположное...
Создадим Promise, например так
И запустим код
Подробней тут https://bearlogin.notion.site/Deffered-Promises-d24e7f01608447dea1f8da272b4cbe9e
#js #promises
При работе с Promise многим кажется, что callback, который мы передаем в конструктор выполнится только тогда, когда мы вызовем метод then() или воспользуемся async / await.
Но реальное поведение совершенно противоположное...
Создадим Promise, например так
const promise = new Promise((resolve,reject) => {
console.log('Promise callback executed');
resolve(1)
})И запустим код
Promise callback executed
Подробней тут https://bearlogin.notion.site/Deffered-Promises-d24e7f01608447dea1f8da272b4cbe9e
#js #promises
Миссия
Я определяю свою миссию так: помогать людям - бизнесу и разработчикам делать крутые штуки, которые будут делать жизнь легче и комфортней.
По этому я создал чат, где бесплатно и не токсично помогаем с Vue.js, Javanoscript, React.js, Typenoscript, PHP, Laravel, Go, Docker, Kubernetes, Node.JS, HTML, CSS. У нас уже в составе есть эксперты из Яндекс, Озон! Так что, залетайте! Ждем экспертов, и желающих учится! https://news.1rj.ru/str/junior_happens #полезное
Я определяю свою миссию так: помогать людям - бизнесу и разработчикам делать крутые штуки, которые будут делать жизнь легче и комфортней.
По этому я создал чат, где бесплатно и не токсично помогаем с Vue.js, Javanoscript, React.js, Typenoscript, PHP, Laravel, Go, Docker, Kubernetes, Node.JS, HTML, CSS. У нас уже в составе есть эксперты из Яндекс, Озон! Так что, залетайте! Ждем экспертов, и желающих учится! https://news.1rj.ru/str/junior_happens #полезное
Telegram
WebDev чат для джунов и сочуствующих
Бесплатно и не токсично помогаем с Vue.js, Javanoscript, React.js, Typenoscript, PHP, Laravel, Go, Java, Docker, Kubernetes, Node.JS, HTML, CSS
Мой канал https://news.1rj.ru/str/bearlogin_dev
Frontend Junior Middle Chat, Another frontend chat
Мой канал https://news.1rj.ru/str/bearlogin_dev
Frontend Junior Middle Chat, Another frontend chat
Set vs object
Недавно зашел разговор, что лучше использовать для создания списка без повторяющихся значений. Нашел интересный эксперимент по этому поводу https://github.com/anvaka/set-vs-object
Спойлер - Set быстрей :)
#js #быстродействие #frontend
Недавно зашел разговор, что лучше использовать для создания списка без повторяющихся значений. Нашел интересный эксперимент по этому поводу https://github.com/anvaka/set-vs-object
Спойлер - Set быстрей :)
#js #быстродействие #frontend
GitHub
GitHub - anvaka/set-vs-object: What is faster Set or Object?
What is faster Set or Object? Contribute to anvaka/set-vs-object development by creating an account on GitHub.
👍2
Ментор vs самообучение
Сейчас все больше людей понимают, что пройдя курсы, которые обещают сделать вас как минимум джуном за 3 месяца, а то и сразу миддлом с нуля, в лучшем случае только начинаешь понимать что то на уровне стажера. С трудоустройством, естественно, возникают проблемы.
И тут есть 2 пути: продолжать развиваться самостоятельно и потратить кучу времени или найти ментора, который соберет всю ту кашу после курса в какой то базис и даст направление развития.
Для первых могу посоветовать прочитать хорошую книгу по языку и основательно разобраться во всех вопросах, искать стажировки, выполнять тестовые задания с условием обратной связи.
Для вторых есть сервисы для подбора ментора. Я, например, начал работать с Solvery. Вот мой профиль https://solvery.io/ru/mentor/bearlogin
От себя могу посоветовать желающим войти в IT такой путь - книга -> курс -> (ментор/стажировка)
Начав с хорошей книги, вы уже сможете определять качество курса и полезность его программы, получите базовое представление о выбранном языке и сможете безболезненно поменять специализацию в начале пути.
#войтивайти #менторство #профессиональныйрост
Сейчас все больше людей понимают, что пройдя курсы, которые обещают сделать вас как минимум джуном за 3 месяца, а то и сразу миддлом с нуля, в лучшем случае только начинаешь понимать что то на уровне стажера. С трудоустройством, естественно, возникают проблемы.
И тут есть 2 пути: продолжать развиваться самостоятельно и потратить кучу времени или найти ментора, который соберет всю ту кашу после курса в какой то базис и даст направление развития.
Для первых могу посоветовать прочитать хорошую книгу по языку и основательно разобраться во всех вопросах, искать стажировки, выполнять тестовые задания с условием обратной связи.
Для вторых есть сервисы для подбора ментора. Я, например, начал работать с Solvery. Вот мой профиль https://solvery.io/ru/mentor/bearlogin
От себя могу посоветовать желающим войти в IT такой путь - книга -> курс -> (ментор/стажировка)
Начав с хорошей книги, вы уже сможете определять качество курса и полезность его программы, получите базовое представление о выбранном языке и сможете безболезненно поменять специализацию в начале пути.
#войтивайти #менторство #профессиональныйрост
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
🔥3
А как Вы профессионально развиваетесь?
Anonymous Poll
5%
С ментором
64%
Сам бесплатно
14%
Прохожу курсы
17%
Никак, успешно стагнирую
Hetzner Cloud
Я давно пользуюсь Hetzner, еще со времен, когда никакого Cloud в помине не было. ИМХО лучшее предложение по цена/качество. Если вы еще не пробовали его, не сочтите за дерзость просьбу воспользоваться моей реферралочкой :D https://hetzner.cloud/?ref=MTXkDijTGcMH :D Вы получите €20 халявных денег на счет.
А какими облаками пользуетесь вы?
Я давно пользуюсь Hetzner, еще со времен, когда никакого Cloud в помине не было. ИМХО лучшее предложение по цена/качество. Если вы еще не пробовали его, не сочтите за дерзость просьбу воспользоваться моей реферралочкой :D https://hetzner.cloud/?ref=MTXkDijTGcMH :D Вы получите €20 халявных денег на счет.
А какими облаками пользуетесь вы?
Я 💛 Фронтенд
26 февраля состоится онлайн конференция https://yandex.ru/promo/events/ya-love-frontend-2022#registration с кучей разных вкусностей, а активности идут уже сейчас. Так же завтра 20 февраля в 13:00 откроется доступ к Capture the flag. Кто еще не знает что это такое, зацените предыдущий CTF https://ctf.ilovefrontend.ru/ - очень захватывает :)
P.S. я застрял на Монализе :) Пишите ваши результаты в комментарии
26 февраля состоится онлайн конференция https://yandex.ru/promo/events/ya-love-frontend-2022#registration с кучей разных вкусностей, а активности идут уже сейчас. Так же завтра 20 февраля в 13:00 откроется доступ к Capture the flag. Кто еще не знает что это такое, зацените предыдущий CTF https://ctf.ilovefrontend.ru/ - очень захватывает :)
P.S. я застрял на Монализе :) Пишите ваши результаты в комментарии
Я ❤ Фронтенд
В четвёртый раз соберём фронтенд-сообщество, чтобы обсудить новости веба, поделиться опытом и провести время в отличной компании. Будут доклады про Node.js, производительность, доступность и многое другое, а также подведём итоги CTF.
У нас в Huntica появилась интересная вакансия https://bearlogin.notion.site/Trainee-Juniour-Frontend-Developer-bda45f185d8e483d844680df4d875b04 если интересно, пишите :)
Webpack aliases в IDE
Обычно IDE сами автоматически резолвят алиасы, если есть webpack. Но если мы используем другой бандлер, например Vite, то необходимо прописать в корне проекта файл jsconfig.json, где указать paths:
Обычно IDE сами автоматически резолвят алиасы, если есть webpack. Но если мы используем другой бандлер, например Vite, то необходимо прописать в корне проекта файл jsconfig.json, где указать paths:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
"~/*": ["./src/*"]
}
}
}Laravel Test Mock With Constructor
При написании тестов часто требуется замокать ответы стороннего API, но при этом часто нужно мокнуть только те методы, которые возвращают ответ, а остальные оставить оригинальными. При этом нужно собрать инстанс сервиса вместе с параметрами конструктора.
Подробней тут https://bearlogin.notion.site/Laravel-Test-Mock-With-Constructor-ff5904277d86458ca8bb1429c1e102fa
#advices #tests #laravel #php
При написании тестов часто требуется замокать ответы стороннего API, но при этом часто нужно мокнуть только те методы, которые возвращают ответ, а остальные оставить оригинальными. При этом нужно собрать инстанс сервиса вместе с параметрами конструктора.
Подробней тут https://bearlogin.notion.site/Laravel-Test-Mock-With-Constructor-ff5904277d86458ca8bb1429c1e102fa
#advices #tests #laravel #php
Andrei's Notion on Notion
Laravel Test Mock With Constructor
При написании тестов часто требуется замокать ответы стороннего API, но при этом часто нужно мокнуть только те методы, которые возвращают ответ, а остальные оставить оригинальными. При этом нужно собрать инстанс сервиса вместе с параметрами конструктора.
Makewarnotpeace
Только сегодня прилетели новости, что не надо обновлять зависимости. Как минимум может прилететь эта шляпа https://www.npmjs.com/package/peacenotwar, а как максимум шифровальщик или удаление всех ваших файлов. Чекните этот тред https://github.com/vuejs/vue-cli/issues/7054
Upd. Бро прислал ссылку, где собирают список зловредов https://docs.google.com/spreadsheets/d/1H3xPB4PgWeFcHjZ7NOPtrcya_Ua4jUolWm-7z9-jSpQ/htmlview?usp=sharing&pru=AAABf7rCuSo*bIOpMXcSv6-ORZvEudbuAw
#ебанулись #оборзели #thisiswar
Только сегодня прилетели новости, что не надо обновлять зависимости. Как минимум может прилететь эта шляпа https://www.npmjs.com/package/peacenotwar, а как максимум шифровальщик или удаление всех ваших файлов. Чекните этот тред https://github.com/vuejs/vue-cli/issues/7054
Upd. Бро прислал ссылку, где собирают список зловредов https://docs.google.com/spreadsheets/d/1H3xPB4PgWeFcHjZ7NOPtrcya_Ua4jUolWm-7z9-jSpQ/htmlview?usp=sharing&pru=AAABf7rCuSo*bIOpMXcSv6-ORZvEudbuAw
#ебанулись #оборзели #thisiswar
Бей своих, чтобы чужие боялись
Американское НКО пострадало от автора 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