Ну, гайз, фиксируем +15кг за зиму и начинаем тихонечко срезать калорийность рациона 🍔
Не личный рекорд по массонабору, но показатель, что ваш маленький ИТ-блоггер хорошо кушал 💪
Считаю зажировку успешной 🥳
#CodeLifeBalance #Зал #Зажировка
Не личный рекорд по массонабору, но показатель, что ваш маленький ИТ-блоггер хорошо кушал 💪
Считаю зажировку успешной 🥳
#CodeLifeBalance #Зал #Зажировка
2🥰10👍5🔥5🍌1
Good News, everyone! 🔥
Гайз, есть таки и хорошие новости про российский ИТ-сектор 💪
Он в 2026 году переходит от ажиотажного импортозамещения к более зрелой фазе роста.
Рынку прогнозируют восстановление динамики после замедления в 2025-м.
В общем, если бы я был каналом-миллионником, то начал бы как-то так:
РОСТ РЫНКА ВОЗОБНОВЛЯЕТСЯ!!! 📈💰🥳💪🫶
А если без кликбейта, то ожидают роста ИТ-рынка на ~10% в 2026 году (было 3–4% в 2025-м). Объём может достичь 4,5 трлн рублей, а доля в ВВП вырастет до 1,9%!
Среди возможных причин указывается: переход к тиражируемым архитектурам, управляемым сервисам и стандартизации после «быстрых миграций».
Да, редко бывают новости, подходящие под #ITХорошести, но это одна из них 😉
#ИТ_Хорошести #Импортозамещение #IT_Новости #IT_Хорошести
Гайз, есть таки и хорошие новости про российский ИТ-сектор 💪
Он в 2026 году переходит от ажиотажного импортозамещения к более зрелой фазе роста.
Рынку прогнозируют восстановление динамики после замедления в 2025-м.
В общем, если бы я был каналом-миллионником, то начал бы как-то так:
РОСТ РЫНКА ВОЗОБНОВЛЯЕТСЯ!!! 📈💰🥳💪🫶
А если без кликбейта, то ожидают роста ИТ-рынка на ~10% в 2026 году (было 3–4% в 2025-м). Объём может достичь 4,5 трлн рублей, а доля в ВВП вырастет до 1,9%!
Среди возможных причин указывается: переход к тиражируемым архитектурам, управляемым сервисам и стандартизации после «быстрых миграций».
Да, редко бывают новости, подходящие под #ITХорошести, но это одна из них 😉
#ИТ_Хорошести #Импортозамещение #IT_Новости #IT_Хорошести
Вчера камрад спросил меня, как я решил проблему с блокировкой АПИ Телеграмма 🤔
Я сначала ответил, что у меня нет серверов в РФ, которые работают с их АПИ.
…я ошибся 😒
У меня же есть blog.polar-dev.com, который используется как архив моего канала… и этот сервер в РФ 😐
В общем, если хотите, то я расскажу завтра, как решил эту проблему, не перенося основной функционал
#API #Telegram #Блокировки
Я сначала ответил, что у меня нет серверов в РФ, которые работают с их АПИ.
…я ошибся 😒
У меня же есть blog.polar-dev.com, который используется как архив моего канала… и этот сервер в РФ 😐
В общем, если хотите, то я расскажу завтра, как решил эту проблему, не перенося основной функционал
#API #Telegram #Блокировки
1👍8😱3😢3
Гайз, как обещал — рассказываю, как решил проблему с блокировкой АПИ Телеграмма на сервере 🔧
Дисклеймер: сразу скажу, что тут никакого рокет саенс не будет, это даже не единственный способ. Я выбрал его и он рабочий. Всё!
Итак, вводная: мой блог (blog.polar-dev.com) парсит канал через Telethon — тянет посты, медиа, пишет в базу. Сервер стоит в РФ, на FreeBSD. И вчера всё тихо сломалось — парсер перестал доставать новые посты 😐
Ясно-понятно, похоже, появились ограничения доступа к API Telegram с российских IP.
Для защиты граждан, конечно же 🫡
Первая мысль — поднять SOCKS5-туннель через SSH до зарубежного VPS. Telethon это умеет нативно.
Но меня напрягло, что постоянное соединение, которое надо держать и мониторить,
весь трафик (включая медиа) через туннель приведёт к просадке скорости. Ну, и это лишняя точка отказа
Решил, как по мне, проще:💡
Вынес сам парсер на зарубежный VPS. Теперь он парсит канал, скачивает фото/аудио, конвертит в WebP — и складывает всё в JSON + папку media/.
А на FreeBSD-сервере по крону запускается sync-скрипт:
1. SSH на VPS -> запускает парсер
2. rsync забирает posts.json + media/
3. Скрипт импорта пишет в MySQL
Получается, парсер работает там, где нет блокировок. Сервер забирает готовый результат. Никаких туннелей, никаких прокси в рантайме 🤫
Получился такой вот пайплайн:
VPS: Telegram API -> JSON + WebP
FreeBSD: rsync -> MySQL -> сайт
З.Ы. Заметьте, делая полностью законный сервис для использования гражданами РФ, разработчики вынуждены для этого переносить сервер из РФ. Т.е. буквально лишают возможности соблюдать закон о локализации персональных данных (152-ФЗ)🤯
И да, мой способ позволит сохранять данные юзеров (если собираете) на территории РФ 💪
В общем, в этом случае я vs «Контора Оптимистов» — 1:0 😉
#API #Telegram #Блокировки #DevOps #РКН
Дисклеймер: сразу скажу, что тут никакого рокет саенс не будет, это даже не единственный способ. Я выбрал его и он рабочий. Всё!
Итак, вводная: мой блог (blog.polar-dev.com) парсит канал через Telethon — тянет посты, медиа, пишет в базу. Сервер стоит в РФ, на FreeBSD. И вчера всё тихо сломалось — парсер перестал доставать новые посты 😐
Ясно-понятно, похоже, появились ограничения доступа к API Telegram с российских IP.
Для защиты граждан, конечно же 🫡
Первая мысль — поднять SOCKS5-туннель через SSH до зарубежного VPS. Telethon это умеет нативно.
Но меня напрягло, что постоянное соединение, которое надо держать и мониторить,
весь трафик (включая медиа) через туннель приведёт к просадке скорости. Ну, и это лишняя точка отказа
Решил, как по мне, проще:💡
Вынес сам парсер на зарубежный VPS. Теперь он парсит канал, скачивает фото/аудио, конвертит в WebP — и складывает всё в JSON + папку media/.
А на FreeBSD-сервере по крону запускается sync-скрипт:
1. SSH на VPS -> запускает парсер
2. rsync забирает posts.json + media/
3. Скрипт импорта пишет в MySQL
Получается, парсер работает там, где нет блокировок. Сервер забирает готовый результат. Никаких туннелей, никаких прокси в рантайме 🤫
Получился такой вот пайплайн:
VPS: Telegram API -> JSON + WebP
FreeBSD: rsync -> MySQL -> сайт
З.Ы. Заметьте, делая полностью законный сервис для использования гражданами РФ, разработчики вынуждены для этого переносить сервер из РФ. Т.е. буквально лишают возможности соблюдать закон о локализации персональных данных (152-ФЗ)🤯
И да, мой способ позволит сохранять данные юзеров (если собираете) на территории РФ 💪
В общем, в этом случае я vs «Контора Оптимистов» — 1:0 😉
#API #Telegram #Блокировки #DevOps #РКН
1👍4🔥3 3
Я обещал пояснить утренний вайб 🤔
Вот вам история, детишки о том, как я продолбался с N+1 запросами и не замечал этого 😳
Писал несколько ночей подряд, так что ногами не пинайте, но получилось так, что всё вроде работает. А потом открываю АПИ через Postman — и он грузится 11 секунд.
И данных-то кот наплакал.
Открываю
Для КАЖДОГО товара — отдельный SQL-запрос за размерами. Ну,кайф?
.collect(Collectors.toMap(
MenuItem::getId,
menuItemSizeRepository::findByMenuItemId));
Т.е. то, что называют N+1.
Вместо того чтобы одним SELECT ... WHERE id IN (...) загрузить все размеры разом, для каждого товара делал отдельный поход в базу.
И это ещё, сука, не всё — то же самое для модификаторов 😒
Причём модификаторы — это N+1 в квадрате: сначала для каждой категории запрос за списком ID модификаторов, потом для каждого ID — ещё запрос за самим модификатором.
Итого при 50 позициях в меню: 1 запрос за товарами + 50 за размерами + 8 за связями категорий + 24 за модификаторами = 83 SQL-запроса на один API-эндпоинт.
И этот паттерн был в 6 методах. Переделал на batch-метод
findByMenuItemIds(List<String>) с IN(...)
И 83 запроса превратились в 4 😊
Но вот в чём ирония: после деплоя фикса почти не стало лучше 😩
А потом оказалось, что у провайдера были проблемы с каналом 😡
Но в итоге, это толкнуло меня к рефакторингу и вместо 11 секунд — меньше секунды.
З.Ы. Гоните меня, насмехайтесь надо мной 😅
#Разработка #Рефакторинг #СраныйПровайдер
Вот вам история, детишки о том, как я продолбался с N+1 запросами и не замечал этого 😳
Писал несколько ночей подряд, так что ногами не пинайте, но получилось так, что всё вроде работает. А потом открываю АПИ через Postman — и он грузится 11 секунд.
И данных-то кот наплакал.
Открываю
MenuService и вижу красивое:Для КАЖДОГО товара — отдельный SQL-запрос за размерами. Ну,кайф?
menuItems. stream().collect(Collectors.toMap(
MenuItem::getId,
menuItemSizeRepository::findByMenuItemId));
Т.е. то, что называют N+1.
Вместо того чтобы одним SELECT ... WHERE id IN (...) загрузить все размеры разом, для каждого товара делал отдельный поход в базу.
И это ещё, сука, не всё — то же самое для модификаторов 😒
Причём модификаторы — это N+1 в квадрате: сначала для каждой категории запрос за списком ID модификаторов, потом для каждого ID — ещё запрос за самим модификатором.
Итого при 50 позициях в меню: 1 запрос за товарами + 50 за размерами + 8 за связями категорий + 24 за модификаторами = 83 SQL-запроса на один API-эндпоинт.
И этот паттерн был в 6 методах. Переделал на batch-метод
findByMenuItemIds(List<String>) с IN(...)
И 83 запроса превратились в 4 😊
Но вот в чём ирония: после деплоя фикса почти не стало лучше 😩
А потом оказалось, что у провайдера были проблемы с каналом 😡
Но в итоге, это толкнуло меня к рефакторингу и вместо 11 секунд — меньше секунды.
З.Ы. Гоните меня, насмехайтесь надо мной 😅
#Разработка #Рефакторинг #СраныйПровайдер
1🔥8😱2🫡2 1
WARP скорости 🚀
Гайз, помните я виртуально «переезжал» в Финляндию?
Так вот, Гугл оказался хитрее — одной сменой страны дело не обошлось. Gemini наотрез отказывался работать, даже через чистый финский IP.
Гугл палит не только по стране, но и по типу IP. Видит, что адрес дата-центровый — и лепит свою заглушку про «недоступно в вашей стране». Мол, мы тебя не знаем, мальчик, иди отсюда 🫠
А у меня картиночки к постам 😭
В общем, пускаем трафик Gemini через Cloudflare WARP. Схема такая: я —> мой сервер в Финляндии —> Cloudflare —> Гугл.
Гугл видит IP Cloudflare и думает: «О, свой пацан, заходи». К клаудфлейр у Гугла претензий нет по понятным причинам 😅
Кстати, скажу сразу про причину щедрости: Cloudflare раздаёт WARP не по доброте душевной — им нужен наш трафик для телеметрии и чтобы потом продавать корпоративные продукты. Но мне-то что, работает и ладно 🤷♂️
З.Ы. Если у вас Gemini не работает даже с VPN — первым делом проверьте привязку аккаунта к стране: policies.google.com/country-association-form. Если там Россия — никакой WARP может не спасти.
З.З.Ы. Так как за меня уже переживает, насчет моей темы про блокировки, даже старший коллега по цеху @vvg1975 , то отмечу, что речь не о блокировках со стороны РФ, а о внешних блокировках. Их можно обходить небоясь 💪
#Блокировки #WARP #Gemini #VPN
Гайз, помните я виртуально «переезжал» в Финляндию?
Так вот, Гугл оказался хитрее — одной сменой страны дело не обошлось. Gemini наотрез отказывался работать, даже через чистый финский IP.
Гугл палит не только по стране, но и по типу IP. Видит, что адрес дата-центровый — и лепит свою заглушку про «недоступно в вашей стране». Мол, мы тебя не знаем, мальчик, иди отсюда 🫠
А у меня картиночки к постам 😭
В общем, пускаем трафик Gemini через Cloudflare WARP. Схема такая: я —> мой сервер в Финляндии —> Cloudflare —> Гугл.
Гугл видит IP Cloudflare и думает: «О, свой пацан, заходи». К клаудфлейр у Гугла претензий нет по понятным причинам 😅
Кстати, скажу сразу про причину щедрости: Cloudflare раздаёт WARP не по доброте душевной — им нужен наш трафик для телеметрии и чтобы потом продавать корпоративные продукты. Но мне-то что, работает и ладно 🤷♂️
З.Ы. Если у вас Gemini не работает даже с VPN — первым делом проверьте привязку аккаунта к стране: policies.google.com/country-association-form. Если там Россия — никакой WARP может не спасти.
З.З.Ы. Так как за меня уже переживает, насчет моей темы про блокировки, даже старший коллега по цеху @vvg1975 , то отмечу, что речь не о блокировках со стороны РФ, а о внешних блокировках. Их можно обходить небоясь 💪
#Блокировки #WARP #Gemini #VPN
1👍6🔥4🫡3
This media is not supported in your browser
VIEW IN TELEGRAM
Гайз, насколько реалистичным вы оцениваете такой сценарий?
🤣10🔥3👍2