Struchkov // Java TechLead

Struchkov // Java TechLead

@struchkov_dev

Заметки: https://garden.struchkov.dev — — — — — Блог: https://struchkov.dev/blog — — — — — Связь: @uPagge

918подписчиков
🇬🇧

Похожие каналы

Все →

Последние посты

Обновил старую статью про OAuth 2.0 и OpenID Connect — она была написана в 2021-м, и с тех пор в стандартах произошли серьёзные изменения.Главное: Implicit Grant и Resource Owner Password теперь запрещены (RFC 9700 с января 2025). Раньше я описывал их как рабочие варианты, и кто-то мог реализовать по ним небезопасный flow.Добавил актуальное: PKCE для всех публичных клиентов, Device Authorization для CLI и IoT, ротацию refresh-токенов, расширенный разбор OpenID Connect, ссылки на все новые RFC.https://struchkov.dev/blog/ru/how-oauth2-works/

28 мар. 2026 г.1 130В Telegram

Мой pet-проект 💩 для сообщества вчера превратился во взрослый сервис. Был маленький сайтик на shared-сервере, соседствовал с блогами. Теперь — свой выделенный VPS, новый домен 🚀Передо мной: миграция с SQLite на PostgreSQL, Docker Compose стек, PostGIS, MinIO, nginx с certbot. Всё сразу. Буду писать обо всех граблях по дороге — где что поломаю, как исправлю. Что за проект и для какого сообщества — расскажу чуть позже. Пока скажу только, что он про движение 😏 Первые заметки уже скоро. А пока — угадывайте в комментариях ⬇️

27 мар. 2026 г.929В Telegram

Боты добрались до моего маленького self-hosted Gitea. Серьёзно, кому он вообще сдался?CPU 136%, RAM в потолке, SQL-запросы по 6 секунд. 3.2 миллиона запросов к commit hash URL-ам одного репо. fail2ban: 431 match, 0 banned — тысячи IP, каждый заходит один раз.Классические инструменты оказались бесполезны. Пришлось учить Nginx отвечать тишиной.https://hub.struchkov.dev/ru/gitea-botnet-3m-requests-return-444

26 мар. 2026 г.825В Telegram
Struchkov // Java TechLead — пост в ТГ канале

Недавно скинули в рабочем чате видео про Meshtastic — устройства, которые общаются между собой по радио без интернета и сотовой связи. Заинтересовался, собрал несколько штук. В городе одно устройство бьёт на 2-4 км, а через ретрансляторы — до 10. Удивило другое: оказалось, в городе уже сотни людей строят эту сеть — со стационарными узлами и координацией. Фото через такой мессенджер не отправишь, но «я на месте, всё ок» — долетает. На фоне новостей про пейджеры и рации — выглядит как более разумный вариант 😁 — — — Подробнее / Заметки

20 мар. 2026 г.1 130В Telegram

Работал с виртуальной машиной, куда нельзя было нормально перекидывать файлы. В RocketChat при этом обычные файлы блокировались, а картинки проходили. Так и появилась png-zip — утилита для упаковки произвольных файлов в PNG тремя способами.Append — дописывает данные после IEND, декодеры это игнорируют.Chunk — кладёт данные в кастомный чанк pnZp, при необходимости разбивая большие файлы на пронумерованные части.LSB — прячет данные в младших битах пикселей, незаметно для глаза.Есть даже bootstrap-режим, когда картинка сама себя распаковывает.Минусы: append и chunk не переживают пересжатие PNG, LSB не переживает конвертацию в JPEG. Шифрование отдельно через GPG.Python 3.6+, только стандартная библиотека. Есть PowerShell-версия.Подробнее / Исходники

19 мар. 2026 г.980В Telegram

Пятничный наброс на финтехМногие говорят, что у нас один из лучших финтехов в стране, но отдельные аспекты у меня вызывают вопросы — особенно в части безопасности. Недавно посмотрел видео, которое напомнило мне об одной из таких проблем, и решил поделиться мыслями.Почему в наших банковских и особенно инвестиционных приложениях до сих пор не используются протоколы безопасности вроде U2F или хотя бы TOTP?Для вывода средств с банковского счёта сейчас требуется только пароль и SMS-код, который легко перехватить, как и голосовой звонок. Если мошенникам удаётся похитить деньги, виноватым обычно считают самого пользователя, полагая, что он спалил свой пароль.Особенно странно смотрятся платные сервисы банков, предлагающие защиту от мошенничества за отдельную плату.Для сравнения: чтобы вывести средства с криптобиржи, требуется многоступенчатая аутентификация. Сначала — пароль и физический токен (U2F) для входа в систему, затем при выводе отправляется одноразовый код на почту (письмо при этом содержит заранее установленное пользователем слово, защищающее от фишинга), одноразовый SMS-код и ещё один код TOTP, сгенерированный приложением-аутентификатором. Только после ввода всех данных возможен вывод средств. Вот это я понимаю — надежная защита.Разумеется, усиление безопасности ухудшает пользовательский опыт, но я не предлагаю включать все по умолчанию. Дайте выбор: кому нужна дополнительная защита — пусть включает её, кому не нужна — может остаться на SMS. В случае с криптобиржами даже эту многоступенчатую защиту можно сделать более удобной: можно добавить адрес кошелька в белый список и впоследствии выводить на него средства без повторного подтверждения.Так почему же до сих пор отсутствуют такие протоколы в нашем хваленом финтехе? Это негласный запрет? или просто низкий приоритет у таких задач безопасности, которые не приносят бизнесу деньги и важнее выпускать новые фичи? Или просто эти протоколы недостаточно надежны?

8 нояб. 2024 г.4 330В Telegram

🛠️ Как управлять VIEW в Liquibase и избегать проблем с их обновлением?В заметке я объясняю, как справиться с изменениями вьюх и почему важно выделять их в отдельные changeLog файлы. В статье есть практические советы, примеры кода и ключевые рекомендации по поддержке вьюх без ошибок и конфликтов.📖 Подробнее

31 окт. 2024 г.3 320В Telegram
Struchkov // Java TechLead — пост в ТГ канале

Небольшой лайфхак для защиты оплаченной лицензии в IntelliJ IDEA: установите случайные значения в настройках proxy.Или поднять нормальную прокси за бугром и указать ее :)P.S. Если используете Toolbox App, то там тоже нужно добавить

29 окт. 2024 г.3 230В Telegram

🔍 Потоки в Java: Thread и RunnableВ новом посте продолжаем цикл про многопоточность, разбираясь, когда лучше использовать Thread, а когда Runnable, и рассматривая их ключевые отличия.Сегодня потоки практически никогда не создают напрямую — вместо этого используют высокоуровневые инструменты, такие как ExecutorService или ForkJoinPool, которые мы рассмотрим в следующих статьях.Однако важно понимать, что происходит «под капотом» этих абстракций, чтобы уверенно строить многопоточные приложения.https://struchkov.dev/blog/ru/threads-in-java-thread-and-runnable/

28 окт. 2024 г.2 190В Telegram

🔑 Как я решаю проблему уникальных идентификаторов в своих приложениях?Когда дело касается уникальных идентификаторов, я почти всегда выбираю UUID. Однако версию UUID я подбираю в зависимости от задач конкретного сервиса. Каждая версия UUID имеет свои особенности, и выбор зависит от того, что важнее: сортируемость, случайность или производительность.Подробнее о том, как я использую UUID и какие версии предпочитаю, можно узнать в моей заметке. Там вы найдете обзор каждой версии, с ее преимуществами и недостатками, а также сравнение производительности вставки и чтения в базе данных для разных версий UUID.https://garden.struchkov.dev/ru/dev/Universal-Unique-IDentifierА пока предлагаю вам поделиться своим опытом и проголосовать в опросе ниже!👇

23 окт. 2024 г.1 820В Telegram

🔑 Индекс на внешний ключ — это не опция, а необходимостьЧасто забываемый, но очень важный момент в проектировании схемы базы данных — добавление индекса на столбец внешнего ключа. Почему это так важно?В заметке вы найдете наглядный и неочевидный пример, в котором без индекса запрос выполнялся 690 мс, а с индексом — всего 0.1 мс 😱📖 Подробнее

16 окт. 2024 г.1 880В Telegram

✨ Новая рубрика — “Вопрос недели”!С сегодняшнего дня в канале стартует новая рубрика — “Вопрос недели”! 🎉 Каждое утро среды я буду задавать важный или интересный вопрос, связанный с разработкой, чтобы вы могли начать день с размышлений и обсуждений.Приглашаю вас дискутировать в комментариях к опросу, обдумывать возможные решения и делиться своим опытом. А уже вечером выйдет заметка с разбором этой темы!И, конечно, отличного вам рабочего дня! 🚀

16 окт. 2024 г.1 600В Telegram

🚀 Введение в многопоточность: Преимущества, проблемы и ключевые концепцииЭто первая статья из серии о многопоточности. Мы начнем с базовых понятий и будем постепенно углубляться до более сложных тем, таких как реактивное программирование. Всего в серии запланировано около 7-8 статей.В этой статье мы обсудим основы многопоточности и затронем такие ключевые концепции, как потоки, конкурентность, параллелизм и асинхронность.📖 Подробнее

14 окт. 2024 г.1 540В Telegram

💡 Хочу порекомендовать канал Юли (@javagirlspace), который я читаю с самого начала!Мы с Юлей начали вести свои каналы примерно одновременно, и её публикации всегда вдохновляли меня. Сейчас она работает в Яндексе, а начинала как 1С-программист, постепенно став востребованным Java специалистом — её канал как раз о таких профессиональных достижениях и развитии. Там вы найдёте размышления о work-life балансе, профессиональном развитии и честные истории о сложностях, с которыми она сталкивается как на работе, так и в личной жизни. Юля пишет легко и искренне, делится своими успехами и вызовами, будь то сдача сложных проектов, организация рабочего дня на удалёнке или участие в IT-мероприятиях. Особенно ценю, что она открыто рассказывает, как находит баланс и ритм в жизни, не скрывая трудностей. Канал полон её личного опыта и полезных мыслей, которые будут интересны не только разработчикам, но и всем, кто ищет гармонию в жизни.Если вам нравятся живые, искренние заметки о жизни в IT, где можно не только почерпнуть новые знания, но и почувствовать поддержку, то этот канал — для вас. Кроме того, Юля всегда открыта для общения и рада отвечать на вопросы подписчиков.👩‍💻 Заходите, читайте и вдохновляйтесь!

8 окт. 2024 г.1 650В Telegram

📢 Эволюция Java-кода: от анонимных классов к лямбда-выражениям. Когда я работал наставником в Яндекс.Практикум, одной из самых сложных тем для студентов был функциональный подход в Java. Лямбда-выражения и функциональные интерфейсы буквально “ломали мозг”…🚀 Новый разбор работы лямбд в Java 8!Недавно я выпустил статью о лямбда-выражениях, и один из разделов вызвал много вопросов. Поэтому я решил переписать этот фрагмент, чтобы сделать его более понятным. Теперь в нём подробно объясняется, как работает LambdaMetafactory при динамическом создании лямбд.Я также добавил пример, в котором сэмулировал поведение лямбды вручную с использованием LambdaMetafactory, без явного создания лямбды. Это поможет лучше понять, что происходит под капотом при работе с лямбда-выражениями в Java.Перейти к обновленому разделу "Хранение в памяти и работа в JVM"

5 окт. 2024 г.1 470В Telegram