Обновить

Пульс блокировок: как мы мониторим VPN-протоколы по регионам РФ в реальном времени

Уровень сложностиПростой

Полгода назад я пытался объяснить маме по телефону, почему у неё в Казани «интернет сломался», а у меня в Питере всё работает. Проблема была не в интернете — у неё лёг VLESS, на который я её посадил. А я об этом узнал только из её звонка.

Потом знакомый из Новосибирска написал, что у него XHTTP тоже отвалился. Я полез в чаты — там каша: у кого-то работает, у кого-то нет, кто-то перезагрузил роутер и «починилось», кто-то поменял порт и тоже «починилось». Системных данных — ноль. Одни анекдоты.

Тогда я задумался: а почему вообще нет публичной карты, показывающей какие VPN-протоколы работают в каком регионе? GoodbyeDPI есть, zapret есть, DPI-detector есть — а живого мониторинга нет. Собственно, я его и написал. Называется BlockPulse, код открыт, работает прямо сейчас.

Читать далее

Как я написал оффлайн-шредер метаданных, который умеет не только удалять, но и врать

Уровень сложностиСредний

Каждый раз, когда мы скидываем фото или PDF, мы сливаем GPS-координаты (многие соц сети удаляют по умолчанию), серийники камер и историю правок. Большинство «чистильщиков» просто затирают данные, что выглядит подозрительно. Я написал DMS - оффлайн-инструмент на Python, который умеет не только удалять метаданные, но и правдоподобно их подменять (spoofing), имитируя другие устройства и локации.

Читать далее

Почему управление диалогами в QML почти всегда сделано плохо

Уровень сложностиПростой

Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами.

QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат.

Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем.

Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно.

Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться.

Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны.

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

Читать далее

Поиск работы в 2026 и почему это уже смешно

Уровень сложностиПростой

Друзья, привет!

Забираясь по карьерной лестнице в маркетинге (кореша разрабы подтвердят, что ситуация актуальна для всех), я ориентировался на BigTech компании по нескольким причинам: это круто, это стабильно, и это блин еще раз круто!

И как же сильно изменилась ситуация в конце 2025 года, когда все больше компании или отдельные юниты начали заявлять об оптимизациях, реструктуризациях, реорганизациях, и десятке других терминов, которые по сути говорят о трех вещах:

Читать далее

Как меня назвали «невовлечённым», а я нашёл офшоры на Кипре

Уровень сложностиПростой

«Бизнес — это не то, что написано на сайте. Это то, что написано в налоговой декларации.»

Мне заблокировали доступ к GitLab. За неделю до этого я нашёл первую аномалию в бизнес-структуре и отправил им письмо. После блокировки копал глубже — и нашёл офшоры на Кипре.

Всё началось с того, что меня назвали «невовлечённым специалистом».

Это история о том, как два вечерка на Руспрофайле и нейросетка дали больше информации, чем почти два года работы внутри компании. И о том, что любой разработчик может проверить своего работодателя так же.

Начать расследование

Как моя мини CMS для блога превратилась в полноценную CMS

Уровень сложностиСредний

Привет, Хабр! Меня зовут Алексей, и я разрабатываю BloggyCMS — систему управления контентом, которая выросла из маленького пет-проекта во что-то гораздо более серьёзное.

Читать далее

transactional foreign mailbox o_O

Уровень сложностиСредний

Избавляемся от поллинга аутбокс-таблицы (почти) бесплатно: можно просто использовать встроенный в postgresql механизм внешних таблиц

Читать далее

Как я создал идеальный онлайн-таймер для работы и почему стандартные приложения убивают вашу продуктивность

Уровень сложностиПростой

Привет, Хабр!

Если вы работаете на удаленке или часами пишете код, то наверняка сталкивались с проблемой поддержания концентрации. Вы садитесь за сложную задачу, решаете засечь время, открываете таймер на смартфоне... и зависаете в Telegram или X (бывший Twitter) на следующие полчаса.

Я сам долгое время страдал от этого. Большинство существующих решений мне не подходили: приложения в телефоне — это прямой путь к отвлечениям, десктопные программы перегружены ненужным функционалом, а популярные веб-таймеры либо кишат агрессивной рекламой, либо не имеют нормальной темной темы.

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

Читать далее

Руководство: настройка локального прокси‑сервера (опыт самоучки)

Уровень сложностиСредний

Доброго времени суток!

На своём ПК я перепробовал несколько разных VPN — как бесплатных, так и платных, — а также разные протоколы, клиенты и в итоге пришёл к одному варианту: локальному прокси‑серверу. Мне он кажется наиболее удобным.

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

Читать далее

std::visit против virtual: в 10 раз быстрее без смены алгоритма

Уровень сложностиПростой

Виртуальные функции — удобный инструмент. Но удобство не бывает бесплатным.

В одном из проектов (обычный бекенд, обработка событий) профилировщик показал, что около 30% времени уходит на вызовы виртуальных методов. Горячий цикл, миллиарды итераций. Каждый вызов — косвенный прыжок через vtable, плюс объекты раскиданы по куче.

Обычно на это забивают. Но когда 30% времени — уже не забить.

Читать далее

Определение модификации PDF: как это работает и где метод не работает

Уровень сложностиСредний

Вопрос звучит просто: был ли этот PDF-файл отредактирован после создания? На практике определение модификации PDF требует понимания того, как формат хранит историю изменений на уровне байтов — и почему любой подход к детекции имеет принципиальные ограничения.

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

Читать далее

Скрытая деградация продакшена: когда система работает, но уже больна

Уровень сложностиСредний

Многие думают о продакшене как о бинарной системе: либо «работает», либо «упала». На практике почти все сложные сервисы живут в режиме постепенной деградации. Сервис вроде отвечает на запросы, пользователи вроде ничего не замечают, но внутри уже происходят скрытые сбои, которые со временем могут стать критичными.

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

Читать далее

MTProxy jumper — делаем автоматическое переключение прокси-серверов Telegram

Уровень сложностиСредний

В свете последних новостей вокруг Telegram провела некоторые эксперименты с протоколом MTProxy.

Основная идея: сделать ПО, выглядящее для Telegram-клиента как MTProxy-сервер, и осуществляющее дальнейший обмен данными со сторонними MTProxy-серверами.

В идеале, эти сторониие серверы должны обнаруживаться автоматически, и переключение между ними тоже должно происходить автоматически.

Читать далее

Установка и настройка VPN-сервера на протоколе Hysteria 2

Уровень сложностиПростой

Пошаговое руководство для новичков, которые хотят самостоятельно настроить свой собственный VPN-сервер на протоколе Hysteria 2. Вам не нужны глубокие знания Linux или сетевых технологий - достаточно уметь копировать команды и внимательно следовать инструкции.

Читать далее

Рынок труда — слив кандидатов. Диверсия или импотенция?

Уровень сложностиПростой

Что сейчас происходит на рынке труда? Естественно у тех, кто пишет статьи, есть достаточно глубокое со своей стороны погружение. Тем не менее это не создаёт полную картину. Классическая картина со слоном, у которого кто-то щупает ноги, кто-то хвост, кто-то хобот.

Она присутствует и в рынке труда. Чтобы сделать скрининг этой отрасли, нужно залезть в самый частотный и быстрый процесс, который находится на каких-нибудь сайтах резюме. Типа Headhunter. Великий и ужасный. Так вот. Вы можете отправить за очень короткое время 100 резюме в разные компании. Какой прогресс! А есть еще чатботы с еще большими цифрами. ...

В агрегаторе резюме вам сразу же дадут ответы и пошлют нафиг. Под разными предлогами. И с разной степенью тяжести.

Где-то ваш отклик попадет в собеседование. И вам скажут, что вас уже записали на собеседование. Уже всё. Бежать нужно. Потом тишина неделями.

И если переходить сразу к решению. Решение существует. Оно есть в других отраслях. Это всё уже проходили. Пока не буду его озвучивать. Вдруг, интересно.

Чтобы увидеть его самостоятельно нужно рассмотреть всю цепочку. И все варианты. Все клиентские пути. Например всех ли нужно по одному пайплайну оправлять? Или мож гибкость в приеме позволит немного смеслости мысли?

А как же всё-таки клиент доходит у нас до… вот того самого первого регистационного действия. Но при этом нужно сказать, что если мы (грамотно) обнародуем клиентский путь, он становится общественным знанием. Это то, что нужно делать, чтобы перейти к новой парадигме. Неожиданно, да?

Согласно Томасу Куну, который написал «Структура научных революций», смена парадигмы происходит с обобществлением знаний и индоктринацией их. Условно говоря если мы говорим что зож это хорошо, то все наши города распланированы, чтобы некий минимум в 30 минут ходьбы был гарантирован расположением зданий. И если вдруг этот норматив повысится или снизится, всего города надо снести и построить заново. К счастью те кто строил Питер или другие вечные города не предоставили нам такой расточительности.

Я всем очень советую прочитать Т.Кун "Структура научных революций".

Потому что сейчас то, что происходит, это ускоренный вариант (научных революций). Того, что ему в своё время понадобилось анализировать десятилетия разных бизнесов. А сейчас это в течение смены технологии.

Цикл смены технологии сейчас 2,5 года. Может уже даже 2 стал. И вот соответственно эти технологии.

Подробнее можно послушать здесь
Какие то предварительные обсуждения были в "Стратегия Экосистем" @t6str
И в местных сетка, тенчат. Ссылки они блочат, но стихи им не время писать
Везде ник @art1step в телеге были каналы @isyntez с музыкой и @moderneco про информационную повестку пробные кирпичи.

Можно поделиться звуковым файлом mp.3

Деплой веб-приложения на Yandex Cloud: Terraform + GitHub Actions от нуля до продакшна

Уровень сложностиСредний

В этой статье — полный разбор инфраструктуры. Поднимаем всё через Terraform, деплоим через GitHub Actions, секреты храним в Lockbox. Никаких (почти) кликов в панели управления облаком вручную — всё воспроизводимо.

Читать далее

Корректировка внешнего вида «Отчётов» в Яндекс Метрике

Уровень сложностиСредний

В Яндекс Метрике окончательно изменился дизайн и больше нет возможности использовать более старую версию. В новой же есть ряд неудобств. Корректируем. Совсем немного, несколько деталей в разделах «Источники, сводка», «Поисковые запросы», «Страницы входа», «Устройства», «Браузеры» и так далее.

Читать далее

Jarvis Pattern: почему AI-агенту не нужен фреймворк, а нужна операционная система

Уровень сложностиСредний

Один AI-агент на базе Claude Sonnet закрывает 100% моих DevSecOps-задач. Без фреймворков, без оркестраторов, без векторных баз. Только LLM, операционная система и markdown-файлы. Рассказываю архитектуру, которая за этим стоит.

Формула: LLM + OS + Files
1
23 ...