Struchkov // Java TechLead
919 subscribers
16 photos
2 videos
73 links
Заметки: https://garden.struchkov.dev
— — — — —
Блог: https://struchkov.dev/blog
— — — — —
Связь: @uPagge
Download Telegram
🔍 Потоки в Java: Thread и Runnable

В новом посте продолжаем цикл про многопоточность, разбираясь, когда лучше использовать Thread, а когда Runnable, и рассматривая их ключевые отличия.

Сегодня потоки практически никогда не создают напрямую — вместо этого используют высокоуровневые инструменты, такие как ExecutorService или ForkJoinPool, которые мы рассмотрим в следующих статьях.

Однако важно понимать, что происходит «под капотом» этих абстракций, чтобы уверенно строить многопоточные приложения.

https://struchkov.dev/blog/ru/threads-in-java-thread-and-runnable/
3👍21🔥8
Небольшой лайфхак для защиты оплаченной лицензии в IntelliJ IDEA: установите случайные значения в настройках proxy.

Или поднять нормальную прокси за бугром и указать ее :)

P.S. Если используете Toolbox App, то там тоже нужно добавить
3👍20❤‍🔥1🔥1
🛠️ Как управлять VIEW в Liquibase и избегать проблем с их обновлением?

В заметке я объясняю, как справиться с изменениями вьюх и почему важно выделять их в отдельные changeLog файлы. В статье есть практические советы, примеры кода и ключевые рекомендации по поддержке вьюх без ошибок и конфликтов.

📖 Подробнее
3👍12🔥2🤔1
🧩 Пятничный Java-пазлер: `System.out.println(-Integer.MIN_VALUE)`
Anonymous Quiz
45%
-2147483648
15%
Исключение
5%
0
4%
-1
32%
2147483648
👍11🤔10
Пятничный наброс на финтех

Многие говорят, что у нас один из лучших финтехов в стране, но отдельные аспекты у меня вызывают вопросы — особенно в части безопасности. Недавно посмотрел видео, которое напомнило мне об одной из таких проблем, и решил поделиться мыслями.

Почему в наших банковских и особенно инвестиционных приложениях до сих пор не используются протоколы безопасности вроде U2F или хотя бы TOTP?

Для вывода средств с банковского счёта сейчас требуется только пароль и SMS-код, который легко перехватить, как и голосовой звонок. Если мошенникам удаётся похитить деньги, виноватым обычно считают самого пользователя, полагая, что он спалил свой пароль.

Особенно странно смотрятся платные сервисы банков, предлагающие защиту от мошенничества за отдельную плату.

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

Разумеется, усиление безопасности ухудшает пользовательский опыт, но я не предлагаю включать все по умолчанию. Дайте выбор: кому нужна дополнительная защита — пусть включает её, кому не нужна — может остаться на SMS. В случае с криптобиржами даже эту многоступенчатую защиту можно сделать более удобной: можно добавить адрес кошелька в белый список и впоследствии выводить на него средства без повторного подтверждения.

Так почему же до сих пор отсутствуют такие протоколы в нашем хваленом финтехе? Это негласный запрет? или просто низкий приоритет у таких задач безопасности, которые не приносят бизнесу деньги и важнее выпускать новые фичи? Или просто эти протоколы недостаточно надежны?
👍21🤔5💯3
Работал с виртуальной машиной, куда нельзя было нормально перекидывать файлы. В RocketChat при этом обычные файлы блокировались, а картинки проходили. Так и появилась png-zip — утилита для упаковки произвольных файлов в PNG тремя способами.

Append — дописывает данные после IEND, декодеры это игнорируют.
Chunk — кладёт данные в кастомный чанк pnZp, при необходимости разбивая большие файлы на пронумерованные части.
LSB — прячет данные в младших битах пикселей, незаметно для глаза.

Есть даже bootstrap-режим, когда картинка сама себя распаковывает.

Минусы: append и chunk не переживают пересжатие PNG, LSB не переживает конвертацию в JPEG. Шифрование отдельно через GPG.

Python 3.6+, только стандартная библиотека. Есть PowerShell-версия.

Подробнее / Исходники
111👍5😁5👏1
Недавно скинули в рабочем чате видео про Meshtastic — устройства, которые общаются между собой по радио без интернета и сотовой связи. Заинтересовался, собрал несколько штук.

В городе одно устройство бьёт на 2-4 км, а через ретрансляторы — до 10. Удивило другое: оказалось, в городе уже сотни людей строят эту сеть — со стационарными узлами и координацией.

Фото через такой мессенджер не отправишь, но «я на месте, всё ок» — долетает. На фоне новостей про пейджеры и рации — выглядит как более разумный вариант 😁
— — —
Подробнее / Заметки
14😁5🔥2👍1
Боты добрались до моего маленького 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
👍14🤔21
Мой pet-проект 💩 для сообщества вчера превратился во взрослый сервис. Был маленький сайтик на shared-сервере, соседствовал с блогами. Теперь — свой выделенный VPS, новый домен 🚀

Передо мной: миграция с SQLite на PostgreSQL, Docker Compose стек, PostGIS, MinIO, nginx с certbot. Всё сразу. Буду писать обо всех граблях по дороге — где что поломаю, как исправлю.

Что за проект и для какого сообщества — расскажу чуть позже. Пока скажу только, что он про движение 😏

Первые заметки уже скоро. А пока — угадывайте в комментариях ⬇️
1👍27👏2
Обновил старую статью про 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/
👍16🔥8
Обновил старую статью про NGINX. Добавил Brotli, HTTP/3, исправил синтаксис для свежих версий. Ещё вычистил кучу мёртвого кода типа поддержки IE6 и Flash (привет, 2010-е 🥲). Заодно обновил секцию SSL — теперь там OCSP Stapling и session cache. Вроде всё, что я использую сейчас на своих сайтах, собрано в одном месте.

https://struchkov.dev/blog/ru/nginx-optimization/
1👍1731🥰1
Последние месяцы все свободное время уходило в один проект, который наконец дошёл до публичной беты 🎉

Встречайте RideHub — велопортал для велосипедистов.

Проблема простая: все покатушки живут в чатиках. анонсы текстом, маршрут скриншотом, запись плюсиком в комментах, погоду гуглишь сам. я решил собрать это в нормальный продукт

Что внутри:
— покатушки с маршрутом на карте, погодой, списком участников
— Telegram и VK боты — анонсы, запись, напоминания прямо в мессенджере
— маршруты с GPX, профилем высот, покрытием дороги
— Strava-интеграция без VPN — рейтинг, лидерборд, автоматический матчинг по треку
— live-карта с позицией группы и SOS-кнопка
— челленджи, достижения, стрики
— фотоотчёты с поиском по описанию
— велокарта с мастерскими, водой, опасными участками

Сейчас на платформе 20+ регионов и десятки клубов. В Рязани месяц обкатываем с реальными пользователями — работает стабильно. Это публичная бета, так что баги возможны, о них можно сообщать сюда: @ridehub_forum

если катаете — заходите, буду рад фидбеку

Большая часть возможностей описана тут: ridehub.bike/features
👍23🔥10❤‍🔥5