Обновить

Как стать автором

Как я организовал проект на Next.js

Уровень сложностиСредний
Время на прочтение20 мин

В этой статье я расскажу, как организовал свой проект на Next.js. На примере реального приложения рассмотрены структура проекта, организация маршрутизации, работа с данными через DAL, аутентификация, валидация, тестирование и другие подходы, которые я использовал в процессе разработки. Статья не претендует на универсальное руководство, а показывает один из возможных вариантов организации приложения.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии3

Пингвин в гостях у Дельфина, или UNIX‑like система на Flipper Zero

Уровень сложностиСредний
Время на прочтение23 мин

Когда на экране терминала появилось приглашение #, Flipper Zero уже сложно было назвать просто устройством для работы с радиопротоколами, NFC и инфракрасными пультами. Передо мной находился маленький Unix-подобный компьютер: с ядром, процессами, командной оболочкой и файловой системой на microSD.

Читать далее
Всего голосов 15: ↑14 и ↓1+17
Комментарии1

Расширенный аудит Windows. Или с чего начать расследование инцидентов?

Уровень сложностиПростой
Время на прочтение11 мин

Когда я начал разбираться в SOC (Security Operations Center), то довольно быстро понял, что стандартная Windows не дает особого понимания, что вообще внутри нее происходит. События входа, создание процессов, изменение политик – все это просто не пишется либо пишется в достаточно урезанном виде.

Здесь я хотел бы показать (конечно, частично), каким вообще образом настроить аудит безопасности Windows 10/11 так, чтобы получить вполне читаемые и полезные события, которые можно будет использовать для расследования инцидентов ИБ. Разберемся, что и зачем мы включаем, что такое Event ID и как потом выглядят события на реальной практике. Все действия будут выполняться на ВМ, дабы не затрагивать хост.

Читать далее
Всего голосов 3: ↑3 и ↓0+6
Комментарии1

Я написал свой self-hosted MDM для смешанного парка корпоративных устройств

Уровень сложностиСредний
Время на прочтение8 мин

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

Готового, что легло бы на мою ситуацию, я так и не нашёл — и в итоге сел писать своё. Ниже — не анонс, а разбор инженерных решений, которые по дороге пришлось принять, и честная карта того, где у этой конструкции проходит настоящая граница безопасности. Последнее для меня важнее всей остальной механики: MDM по определению даёт слишком много власти над чужими машинами, и делать вид, что это не так, было бы нечестно. Поэтому архитектуру ниже я разбираю не как список возможностей, а как ответ на вопрос «где это ломается».

Читать далее
Всего голосов 3: ↑3 и ↓0+5
Комментарии3

Несколько взглядов на кросс-энтропию

Уровень сложностиСредний
Время на прочтение6 мин

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

Читать далее
Всего голосов 3: ↑3 и ↓0+6
Комментарии0

Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам

Уровень сложностиСредний
Время на прочтение14 мин

Каждый C#‑разработчик писал numbers.Where(x => x > 10).Select(x => x * 2) — и удивлялся, узнав, что эта строчка ничего не вычисляет. Цепочка спит, пока мы не начнём перебирать результат.

За этим стоит конкретный механизм — отложенные вычисления, а в его основе лежит обычная фича языка: yield. Разбираем, как устроены ленивые методы LINQ изнутри — от ручной реализации Where без yield до того, во что этот yield разворачивается компилятором.

А вы точно знаете, что происходит под капотом каждый раз, когда пишете .Where(...).Select(...)?

К статье приложен репозиторий с полной реализацией.

Читать далее
Всего голосов 4: ↑4 и ↓0+8
Комментарии1

Браузер вместо API: как я объединил DeepSeek, Qwen и ChatGPT в одного локального агента

Уровень сложностиСредний
Время на прочтение9 мин

Я хотел получить локального AI-агента без отдельного API для каждой модели — и превратил браузерные сессии DeepSeek, Qwen и ChatGPT в единый транспорт. В статье разбираю архитектуру AI Free: WASM proof-of-work, подписанные запросы через авторизованную вкладку, работу через штатный UI, общий оркестратор, память, skills и восстановление после сбоев. А ещё рассказываю, почему первый успешный запрос оказался самой простой частью проекта, который я разрабатываю один.

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии3

Я сделал полностью локальный Telegram Wrapped после того, как у меня угнали фейк с тремя переписками

Уровень сложностиПростой
Время на прочтение7 мин

Всем привет, начиная с прошлого лета я потихоньку клепал свою версию Telegram Wrapped.

Началось всё максимально тупо. Я увидел в TikTok рекламу очередного сервиса, который обещал красиво проанализировать мой Telegram. Проверять такое на основном аккаунте мне показалось сомнительной идеей, поэтому я зашёл туда с фейка, на котором было буквально три переписки.

В итоге фейк угнали.

Да, аккаунт с тремя чатами.

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

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Как мы делаем 2D-симулятор грузоперевозок: что уже готово и куда движемся к MVP

Уровень сложностиПростой
Время на прочтение4 мин

Делаем Truck Sim 2D — 2D-симулятор грузоперевозок на Godot 4.6 для Android и ПК. Физический груз на RigidBody2D, который реально может выпасть из кузова, производственная цепочка от шахты до завода и первая сетевая версия на ENet — уже играбельная сборка 0.2.8. Рассказываем, как это устроено внутри и что планируем до MVP: превращаем LAN-конвой в настоящий кооператив

Читать далее
Всего голосов 8: ↑8 и ↓0+11
Комментарии2

Как мы перестали копировать .gitlab-ci.yml и спасли пайплайны от хаоса с помощью модулей

Уровень сложностиСредний
Время на прочтение23 мин

Копипаст .gitlab-ci.yml по десяткам сервисов привел к config drift: пайплайны расходились, а правка одной строчки требовала 10+ MR. Вынесли логику CI в отдельный репозиторий модулей, подключаемых через include с версионированием по SemVer — в проекте остается только короткий файл с переменными. В итоге миграция с Kaniko на BuildKit заняла 5 дней вместо 2-3 недель, а типовой багфикс на 20 сервисах — 1 час вместо 11.

Смотреть, как устроены модули ->
Всего голосов 2: ↑2 и ↓0+4
Комментарии2

N тел в браузере: PWA‑бенчмарк на Rust, WebAssembly и Three.js

Время на прочтение10 мин

В статье расскажу о PWA‑бенчмарке, который основан на задаче N тел. Физический движок написан на Rust/WebAssembly, визуализация через Three.js, и результаты запусков сохраняются в Supabase. Тут присутствует разбор архитектуры, сравнение алгоритмов расчета — прямой и Barnes‑Hut, а также тут расписаны проблемы, связанные с измерением производительности в браузере.

Читать далее
Всего голосов 3: ↑3 и ↓0+6
Комментарии1

«Приватное» оказалось не приватным: разбираю свежий Gitea auth-bypass на живом стенде

Уровень сложностиСредний
Время на прочтение4 мин

Self-hosted git ставят ради приватности кода. А оказалось, что “приватное” в Gitea открывается одним HTTP-заголовком: без пароля утекают секреты из приватных репозиториев и открывается админка. Поднял уязвимую версию на стенде, воспроизвёл атаку целиком, показал как ловить в логах и чинить. И почему это не единичный баг, а паттерн 2026 года.

Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии0

AI‑assisted development в малом бизнесе: как я собрала систему обработки отзывов для ресторанной сети

Уровень сложностиСредний
Время на прочтение15 мин

Я маркетолог и до этого проекта не писала код. Но с помощью GPT собрала рабочую систему сбора, обработки и аналитики отзывов для ресторанной сети: 16 500 отзывов в одном контуре, более 9 500 записей в собственном хранилище, четыре XML-фида, мониторинг, автоответы и 130+ страниц документации. Все это обходится в 8,5К в месяц.

Это кейс не только про AI-assisted development, но и про вполне прикладную пользу для бизнеса: меньше ручной работы, меньше пропусков и ошибок, единая аналитика и понятная стоимость эксплуатации. А заодно – честный разбор того, где AI действительно снижает порог входа в разработку, а где без человеческого контроля быстро начинает моросить.

Читать далее
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

DarkGram: как мы делаем power‑user Telegram‑клиент для iOS — и почему его нет в App Store

Уровень сложностиПростой
Время на прочтение5 мин

Мы сделали клиент Telegram для iOS, у которого не будет ни страницы в App Store, ни кнопки Get. И дело не в деньгах. Рассказываем, что мы построили и почему пошли своим путём.

Читать далее
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Как я три года пилю свой музыкальный сервер: часть первая

Уровень сложностиСредний
Время на прочтение11 мин

Описываю настроение словами — и Raspberry Pi находит подходящие треки в моей коллекции, полностью локально, без облака и подписки. Как это устроено внутри.

Читать далее
Всего голосов 10: ↑10 и ↓0+14
Комментарии5

Ваш бэкап не восстановится. Вы просто ещё об этом не знаете

Уровень сложностиПростой
Время на прочтение6 мин

Крон отработал. Экзит-код ноль. Файл лежит в S3, размер похож на правду. Мониторинг зелёный. Всё говорит о том, что бэкап сделан успешно, вот только его никогда не пробовали восстановить.

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

Читать далее
Всего голосов 9: ↑8 и ↓1+9
Комментарии13

Почему эффективность контекста редко лежит в одних настройках кабинета

Уровень сложностиПростой
Время на прочтение6 мин

Самый частый запрос, который я слышу от собственников и маркетологов, звучит так: «настройте нам кабинет правильно, и реклама поедет». За ним стоит молчаливое допущение, что эффективность контекста живёт где-то внутри Директа — в ставках, корректировках, наборе целей, выборе автостратегии. Допущение удобное: чинить кабинет понятно как. Но рычаг эффективности чаще лежит в другом месте.

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

Разбор для коллег, которые ведут контекст и аналитику руками. Кейсов с конкретными цифрами здесь не будет: материал про подход и насмотренность, метрики клиентов я выдумывать не стану.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Как фильтровать GPS‑треки от ложных точек: спуфинг, заморозка координат, подмена времени

Уровень сложностиСредний
Время на прочтение14 мин

Спуфинг и подмена координат превращают gps треки в мусор. За год разработки бэка для сервиса GPS‑мониторинга я прошёл путь от наивных порогов по скорости и высоте до конвейера из двух десятков фильтров.

В статье разбираю эволюцию воздействий: телепорты, заморозка координат, подмена timestamp, самосогласованный спуф с честными скоростями и высотами. Плюс разберу «коллегию адвокатов» для точек по принципу презумпции невиновности — лучше пропустить ложную точку, чем убить реальную и почему конвейер пришлось учить не только резать, но и восстанавливать срезанное.

Читать далее
Всего голосов 15: ↑15 и ↓0+17
Комментарии25

Нас сломала elbow‑стрелка: как мы с братом учились проектировать продукт до кода

Уровень сложностиСредний
Время на прочтение12 мин

Мы с братом вдвоём разрабатываем WorkHub. До этого у нас не было профильного образования и опыта создания цифровых продуктов. Мы не работали внутри IT‑команд и не проходили путь от стажёра до разработчика. Возможность начать появилась во многом благодаря ИИ‑инструментам.

Я, в основном, отвечаю за продуктовую документацию, проработку функций и тексты. Код мы пишем вместе. Брат сильнее влияет на общее видение продукта и занимается аналитикой. Жёсткого разделения ролей у нас нет: небольшие UX‑проблемы, разработку и проверку реализации мы часто разбираем совместно.

Читать, что у братьев получилось
Всего голосов 3: ↑1 и ↓2+1
Комментарии0

Ключ Bedrock в каждом dotfile: AWS и Anthropic выкатили self-hosted gateway для Claude Code

Время на прочтение3 мин

Anthropic и AWS выпустили Claude apps gateway — self-hosted control plane для Claude Code и Claude Desktop, который живёт в вашей инфраструктуре и забирает с ноутбуков разработчиков ключи, настройки и учёт расходов. Один stateless-контейнер за внутренним ALB, вход через корпоративный OIDC, managed settings по группам, телеметрия по OTLP и лимиты трат через admin API. Разбираю по конфигам, что он реально контролирует, где проходит граница enforcement и в каких местах я бы притормозил перед раскаткой на сотни рабочих мест.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии1
1
23 ...