Обновить

Как я устал копировать посты из Telegram в VK и написал сервис, который делает это за меня

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

На связи Monami! Я веб-разработчик. Делаю сайты и приложения на заказ. А ещё веду пару Telegram-каналов — для души и для портфолио.

В какой-то момент я понял, что мне нужно быть и в VK тоже. Ну а куда деваться — после блокировки Instagram это стало обязательным для всех, кто работает с российской аудиторией. Ну, ок. Завёл группы в VK, начал дублировать контент.

И начался ад.

Читать далее

Как я построил AI-агента для управления здоровьем на базе Claude Code

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

Оцифровал свою медицинскую историю за 20 лет, собрал 13 AI-агентов разных врачебных специальностей и построил систему, которая помогает готовиться к визитам, расшифровывать анализы и проводить AI-консилиумы. Всё работает в VS Code + Claude Code, данные хранятся локально. Рассказываю, как устроено под капотом.

Подробнее

Дизайн на 100 миллионов: как мы пересобирали главную страницу Госуслуг

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

О чём дизайн сегодня? Про украшение? Про управление вниманием или про помощь и заботу? Разберём чем мы занимались когда я работал в Лабсе, а именно главной страницей Госуслуг. Хоть со стороны и не заметно что изменения внушительны, когда ты находишься внутри этой структуры становится понятно что всё совсем не так.

Подробнее

Я сделал Telegram-канал, который сам находит хорошие новости

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

Claude Haiku фильтрует 30 RSS-лент, Opus пишет посты, а я только нажимаю кнопку

Откройте любой новостной канал в Telegram. Что там? Война, кризис, очередной скандал, «учёные предупреждают о катастрофе». Закрываешь — и настроение на нуле.

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

Проблема в том, что вручную это тяжело. Нужно каждый день мониторить десятки источников, отбирать подходящие новости, переписывать их живым языком, подбирать картинки, публиковать в нужное время. Это 2-3 часа в день — фактически работа SMM-менеджера.

Тогда я задал себе вопрос: а что если это автоматизировать? Не полностью — я хочу контролировать, что уходит в канал. Но чтобы бот делал 90% рутины, а мне оставалось только нажать «Опубликовать» или «Другую».

Так появился @GoodN3wsChannel — и бот, который его обслуживает. Весь код — на Python, AI — на Claude API от Anthropic, хостинг — Railway за $5/мес. Общие расходы на AI — меньше 5$ в месяц.

Дальше расскажу, как это устроено внутри.

Читать далее

Создаём свой облачный музыкальный стриминг через WebDAV (без Яндекс Музыки и ограничений)

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

Всем привет!

В какой-то момент я понял: музыка у меня есть – а контроля над ней нет...

В текущих условиях (цензура треков, отсутствие релизов, качество звука на стриминговых платформах) внезапно вышли из тени наши старые подходы: загрузка и прослушивание музыки локально. Лично у меня в шкафу до сих пор валяется старый Sony Ericsson K550i с флешкой Memory Stick Micro, где хранится капсула времени в виде низкокачественных MP3 файлов времён школы из нулевых. Конечно, мы не будем с вами слушать подобное сейчас, так как у нас имеется возможность достать почти любой релиз в формате без потерь или в более-менее приемлемом качестве. Именно такую собственноручно собранную коллекцию я и хочу слушать, прогуливаясь в наушниках по улицам в прекрасный весенний день.

Читать далее

LLM как Stateless-процесс: как я перестал полагаться на память нейросети и вынес состояние в файлы

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

Проблема: Иллюзия памяти и стохастический хаос

Большинство проблем при работе с AI-ассистентами (Cursor, Windsurf, Kiro и др.) проистекают из одной иллюзии: мы ждем от них «памяти». Но LLM по своей природе — это стохастический stateless-исполнитель с эфемерным контекстом.

Любая сессия со временем подвергается «гнили контекста» (Context Rot). IDE автоматически суммаризирует историю, при этом важные детали реализации просто выбрасываются. Один сбой сессии или обрыв связи — и вы тратите время на повторное «обучение» модели. Я подошел к этому как к задаче проектирования отказоустойчивых систем: если процесс не может надежно хранить состояние — состояние должно быть внешним.

Парадигма: External State vs Embedded Memory

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

Читать далее

Менеджер паролей на python

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

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

Весь мой путь наполнен любовью к русским разработчикам и открытому коду, а также желанием продвигать российские IT-продукты (не все конечно).

Читать далее

PBT или подбор гиперпараметров с помощью популяции

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

Существует достаточно большое количество методов для автоматического подбора гиперпараметров, но у меня своя история с эволюционными методами, так что я сегодня выбрал PBT или Population Based Training или подбор на основе популяции.

Читать далее

TG WS Proxy: Ускоряем Telegram на macOS через WebSocket

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

Telegram - один из самых популярных мессенджеров, и многие пользователи macOS и других ОС заметили что в последнее время загрузка фото и видео работает медленнее. Причина часто кроется не в скорости интернета, а в особенностях работы TCP-соединений с серверами Telegram.

Изучая эту проблему, я обнаружил интересный подход: перенаправление трафика через WebSocket Secure (WSS) соединения может значительно ускорить загрузку медиафайлов и работу телеграма. WebSocket работает поверх TLS и имеет оптимизации для долгоживущих соединений, что особенно важно для мессенджеров.

Однако готового решения для macOS не существовало. Так родилась идея создать нативное приложение, которое будет работать в фоне, не отвлекать меня и при этом эффективно ускорять Telegram.

Читать далее

Стековые аллокации срезов в Go 1.25 и 1.26: как компилятор учился не мусорить

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

Это пересказ статьи разработчика компилятора Go Кита Ренделла. Не нужно воспринимать это как перевод. Я постарался упростить и обойтись без некоторых блоков текста из статьи, которые по моему мнению могут только запутать читателя.

Читать далее

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

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

Как математики (почти) спасли гномов от дракона

История одной задачи с шапками, в которой я решил пойти по максимуму.

Читать далее

Python-микросервисы: Как подружить Django и FastAPI без головной боли

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

Хотите FastAPI-микросервисы, но нужна внутренняя админка? Выход есть, и он дешевый! Разбираю архитектуру на примере LMS-системы с PostgreSQL-схемами, Alembic-миграциями и аккуратным разделением зон ответственности по данным между сервисами.

Читать далее

Организация удаленного доступа в защищенный контур на базе Openvpn + Keycloak

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

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

У одного из наших заказчиков вся инфраструктура расположена в Yandex Cloud и для доступа во внутреннюю сеть ко внутренним ресурсам компании а-ля Grafana, Prometheus, Elasticsearch и т.д. использовался VPN-сервис на базе Self-Hosted OpenVPN. При этом аутентификация пользователей VPN осуществлялась просто по локальным учетным записям на сервере через конфигурацию сервера вида

Читать далее

Как навести порядок на складе цветочного магазина: учет, сроки хранения и доставка

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

Цветочный ритейл сильно отличается от большинства других видов торговли. Основной товар здесь — скоропортящийся, поставки происходят часто, а спрос может резко меняться буквально за несколько дней до праздников. Магазин может спокойно работать неделю, а затем за два дня перед 8 Марта через склад проходит объем, сравнимый с обычным месячным оборотом.

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

Читать далее

Я написал файловую систему для Linux за вечер

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

Когда мы говорим файловая система, обычно представляем что-то очень сложное: ext4, btrfs, десятки тысяч строк кода в ядре, журналирование, кеши, оптимизации. Но если убрать все оптимизации, минимальная файловая система оказывается удивительно простой. В этой статье я попробовал сделать эксперимент: написать минимальную файловую систему для Linux, которую можно смонтировать и использовать как обычную. Без написания кода ядра, без драйверов.Только пользовательский код и FUSE. В итоге получилась работающая файловая система примерно на 200 строках Python, которая умеет:

Читать далее

Пишем сетевой слой в Swift как надо: гибко, понятно и без лишних зависимостей [Часть 1]

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

Расскажу как написать типобезопасный и масштабируемый сетевой слой на Swift с использованием async/await.

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

Читать далее

Annotate PDF: как я написал клиентский редактор без бэкенда и всё запорол в погоне за улучшениями

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

Представьте ситуацию: вам прислали контракт или учебный материал в PDF. Нужно быстро поставить подпись, обвести важный абзац или добавить пару комментариев. Идти в Adobe Acrobat долго, а загружать документ на сомнительные онлайн-сервисы небезопасно.

Я столкнулся с этой проблемой и решил сделать свой инструмент. Так появился проект Annotate PDF

Это простая «рисовалка» поверх документов, которая работает полностью в браузере.

Читать далее

Как мой телеграмм бот заменил мне Anki

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

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

Обычно для таких вещей все советуют Anki. Но чтобы им пользоваться, нужно скачать приложение, потом как-то вытащить данные, отформатировать их в нужный формат таблицы (CSV и т.д.) или использовать сторонние чат-боты. Более того, у меня почему-то не работала синхронизация с мобильным приложением.

В итоге терпение лопнуло, и так появилась идея Mnemocards. Мой подход: не нужно нигде регистрироваться, не нужно ничего скачивать. Открыл бота — и учишь.

Читать далее

Playwright + MockAPI: тестируем форму логина без живого бэкенда

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

Пишем E2E-тесты на Playwright для формы логина — без живого бэкенда. Вместо встроенного page.route() используем внешний мок-сервер: настраиваем один эндпоинт с пятью сценариями (успех, неверный пароль, таймаут, 500, 429), матчинг по телу запроса и заголовкам. В итоге — тесты не зависят от состояния бэкенда, граничные кейсы воспроизводятся стабильно, а история запросов доступна в логах.

Читать далее

Запускаем старые игры на Linux с помощью Bottles

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

Steam активно портирует игры на Linux с помощью Proton, да и нативные версии игр (особенно учитывая популярность Steam Deck) сейчас не редкость. Но что делать с остальным софтом и играми? Для них есть проверенное решение — Wine и его удобная обертка Bottles.

Я решил проверить на практике, насколько сложно запустить олдскульную игру на моей Fedora 43. В качестве подопытного выбрал S.T.A.L.K.E.R.: Тень Чернобыля.

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