Обновить

Геометрический паспорт матрицы: извлекаем инварианты из n-мерных симплексов

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

Каждая невырожденная матрица — это не просто набор чисел. Геометрически это «скелет» n‑мерного тела (симплекса), зафиксированный в пространстве. Обычно мы описываем матрицы через детерминант или спектр собственных чисел, но эти характеристики часто «слепнут», когда нужно описать внутреннюю форму объекта или когда мы сталкиваемся с экстремально плохой обусловленностью. В этой статье я представлю метод построения метрического дескриптора («паспорта») матрицы. Векторы‑строки матрицы интерпретируются как вершины симплекса, далее вписываем симплекс в гиперсферу и извлекаем набор инвариантов, которые не зависят от вращения, перестановки строк или выбора базовой вершины.

Читать далее

Редактирование системных настроек (смена языка) для APK приложений

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

Данная статься посвящена простейшей (по моему мнению) настройке локализации пакета для отдельного приложения Android через инструмент adb.

Читать далее

Чужой среди своих. ИИ инстинктивно объединяются против людей

Привет. Я Алекс, и последние месяцы я строю многоагентные среды, где LLM-модели играют друг с другом и с людьми на равных. Недавно запустил очередную итерацию — стратегию «Купол» — и получил результаты, которые стоит разобрать.

Читать далее

Как я написал антиспам-бота (TAB) для Telegram на собственной нейросети

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

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

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

Забегая вперёд: бот бесплатный и открытый к тестированию. И он работает. Но обо всём по порядку.

Читать далее

Визуализация движения небесных тел на Python

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

Визуализация движения небесных тел

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

(Код программы внутри, на превью картинка с Википедии).

Читать далее

MCP-сервер, чтобы Claude искал российское ПО: ФСТЭК, ФСБ и реестр Минцифры

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

TL;DR: Написал open-source MCP-сервер для каталогпо.рф. Теперь Claude Code/Claude Desktop умеет искать российское ПО прямо в диалоге: «найди антивирус для Linux с ФСТЭК-сертификатом», «покажи SIEM от отечественных производителей», «что заменит Veeam из реестра». Репо: velvetway/minreestr-mcp.

Читать далее

Пульс блокировок: как мы мониторим 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-серверами.

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

Читать далее
1
23 ...