Pull to refresh
-2
0.2
Send message

Как мы сделали капчу, когда hCaptcha отказался работать для российских пользователей

Level of difficultyMedium
Reading time10 min
Views868

В 2022 году, когда hCaptcha перестал обслуживать часть российских пользователей, мы оказались перед выбором: искать новый сервис или создать свою капчу с нуля. Выбрали второе — и не прогадали. В этой статье я расскажу, как из аварийного решения родилась система, которая сегодня защищает миллионы запросов ежедневно. Поделюсь ключевыми выводами наших исследований по устойчивости к распознаванию, раскрою секреты масштабирования без пиковых нагрузок на серверы. Немного затрону тему того, как легко настроить страницу капчи под требуемый дизайн, чтобы переход на проверку оставался незаметным для пользователей. Также объясню, как наша капча превратилась из внутреннего инструмента в самостоятельный продукт.

Читать далее

Анализ аудио потока HLS с помощью Web Audio API и hls.js

Reading time7 min
Views771

В современных веб-приложениях для потокового видео всё чаще требуется не просто воспроизводить контент, но и анализировать аудиодорожку в реальном времени. Например, строить индикаторы уровня громкости (VU/PPM метры), визуализировать спектрограммы или детектировать тишину. В этой статье разберём, как корректно объединить hls.js и Web Audio API для анализа аудио из HLS-потока в браузере, избежав типичных подводных камней.

Читать далее

Парсинг Телеграм каналов, групп и чатов с обработкой в LLM

Level of difficultyMedium
Reading time10 min
Views18K

Всем привет! Вероятно, у каждого бывало: открываешь Телеграм-чат, а там тысячи новых сообщений за день. И где-то внутри этой «солянки» важный ответ на твой вопрос или обсуждение нужной темы. Или вам нужно отслеживать определённые сообщения для бизнес-целей.

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

Читать далее

OpenTelemetry — не то, чем кажется…

Level of difficultyEasy
Reading time6 min
Views9.3K

Привет! Меня зовут — Евгений, работаю в финтехе и проектирую системы, которые обрабатывают миллионы запросов, интегрируются с десятками внешних сервисов и живут в Kubernetes. А еще я преподаю Java/Spring Boot и рассказываю студентам, как не наступать на чужие грабли, а создавать свои и прыгать на них.

Больше 10 лет в разработке — и за эти годы в череде проектов я видел одну и ту же боль: отсутствие системного подхода к наблюдаемости. Логи, метрики и трейсы появляются «по остаточному принципу»: что‑то добавили при отладке, что‑то прилетело из чужой либы, что‑то настроили на проде. Итог — инженеры часами разбирают простые инциденты, а продуктовые команды теряют скорость.

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

Ну давай посмотрим что у тебя там...

Получить цены акций, фондов и ОФЗ в Google Sheets

Reading time3 min
Views841

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

Изучая информацию по работе с API в таблицах Google/Excel, понял лишь то, что я ничего не понимаю, разбираться в xpath, в парсинге XML внутри формулы это всё, как-то очень тяжело и громостко. У меня была простая задача, разработать что бы то ни было для получения текущей цены по конкретному активу с Мосбиржи. И как мне кажется, у меня это получилось в дотаточной степени чтобы можно было получить информацию и далее, как-то её агригировать, как вам удобно. Также сразу поясню, что функция GOOGLEFINANCE больше не работает, по этому остается искать другие пути решения.

Читать далее

/e/OS 3.2: приватный Android без слежки, который только что стал еще лучше

Reading time4 min
Views20K

В конце октября 2025-го вышла /e/OS 3.2 — свежая версия мобильной ОС на базе Android 15. Она полностью избавлена от Google-сервисов, телеметрии и скрытых трекеров, но сохраняет полную совместимость с приложениями. Проект основал Гаэль Дюваль, создатель Mandrake Linux. Он решил, что смартфон должен оставаться удобным, но без скрытой передачи личных данных — все хранится у пользователя и никуда не уходит без его ведома. Давайте посмотрим, что это за ОС и что в ней появилось нового.

Читать далее

Почему я выбрал Warp, а не Cursor или Claude Code: мои инструменты, MCP, подход и конкретные приёмы разработки с LLM

Level of difficultyMedium
Reading time14 min
Views27K

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

Всё благодаря правильной связке инструментов, которые превращают AI в младшего разработчика, архитектора и DevOps одновременно. Делюсь конкретикой: почему терминал лучше IDE для AI-разработки, как управлять контекстом через Rules и MCP, какие модели выбирать для разных задач, и почему фреймворки — ваша защита от галлюцинаций LLM.

Читать далее

Апгрейд Postgres с 11 до 17 версии без боли: мой гайд по логической репликации

Level of difficultyMedium
Reading time25 min
Views2.8K

Вступление: Почему я вообще это пишу?

Представьте: нужно обновить базу данных размером с небольшое озеро — целых 10 ТБ. Классические методы тут не работают. Сделать дамп и восстановить? Это ж на неделю бизнес встанет. Обновлять «в лоб» с 11-й до 17-й версии? Это рискованно и надолго всё упадёт.

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

Пока я готовился, я наступил на все возможные грабли — от устаревших расширений до разницы в ОС. Чтобы вы не повторяли моих ошибок, я решил написать этот неформальный гайд. Здесь — только суровая практика, без воды и заумных терминов.

Читать далее

Как собрать платный AI-микро-SaaS (Next.js + Django + ЮKassa + Web Stories) и не застрять в пет-проекте

Level of difficultyMedium
Reading time8 min
Views3.4K

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

Проект как раз про то, чтобы скучное сделать готовым и многоразовым. Мы один раз собираем связку: AI → Django/DRF → ЮKassa → деплой → Web Stories → SEO, а дальше в неё можно подставлять вашу идею — не только Mermaid. Mermaid здесь как манекен: на нём удобно показывать, куда вешать оплату, куда прикручивать экспорт, где пускать трафик.

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

Читать далее

Я зарабатываю 1.8 млн в год, но мне нужно постараться, чтобы они не умерли

Level of difficultyEasy
Reading time11 min
Views108K

Пока на ферме работают только я. Если я куда-то уехал, есть сын, который меня подстрахует. И то в режиме «не навреди».

Ежедневной работы около часа в день. Нужно спустить грязную воду, почистить дно пылесосом, убрать водоросли со стенок бассейнов. Добавить дезинфицирующую жидкость, проверить биохимические показатели воды и понаблюдать за состоянием питомцев.

Читать далее

Когда мейнтейнер молчит

Reading time4 min
Views1.1K

Странно писать про форк open-source проекта для ушедшего в историю Docker Swarm. Но после Millau остался ещё один гештальт - периодические задачи. Посмотрел на Ofelia и Swarm-cronjob, их звезды, обновления, количество незакрытых репортов. Попытался связаться с автором - тишина. Так что с чистой совестью взял код и добавил недостающее. Получилась Cirona - Swarm-cronjob с телеметрией и дашбордами.

Читать далее

Как я уменьшил Docker-образ Go-приложения с 1.92 GB до 9 MB

Reading time6 min
Views31K

Первый Docker-образ для моего Go-приложения весил 1.92 GB. Для микросервиса на 100 строк — абсурдно. Решил разобраться, куда именно уходит место и как добиться максимально лёгкого образа.

Читать далее

Запускаем GPT-OSS-120B на 6 Гб GPU и ускоряем до 30 t/s. Вам нужна RAM, а не VRAM. Параметр -cmoe для ускорения MoE LLM

Reading time10 min
Views29K

Всё больше выходит больших MoE моделей с малым числом активных параметров. У MoE совсем другой сценарий нагрузки и использования ресурсов нежели у Dense моделей, достаточно немного VRAM. Большие MoE модели устроит 1 GPU и много обычной RAM. О том, как устроены MoE и как ускорить работу одним параметром не меняя железо.

Читать далее

Production AI сервер за ₽0: полный гайд по сборке ML-станции для Stable Diffusion на б/у комплектующих

Level of difficultyMedium
Reading time8 min
Views5.6K

Собрал production ML-сервер на двух RTX 2060 из хлама за ₽0. PyTorch + CUDA 11.8 + Stable Diffusion генерируют 512x512 за 38 секунд. YOLOv8 работает параллельно на второй GPU. Вот полный гайд: от BIOS настроек до первого теста. Никакого облака, только локальное железо.

Читать далее

ERC-6909 vs ERC-1155: простой, как три копейки

Level of difficultyMedium
Reading time10 min
Views428

ERC-6909 – это интересный пример того, что стандарты токенов не всегда становятся сложнее. Этот стандарт сознательно упрощает ERC-1155:
- без batch-вызовов
- без callback’ов
- с гибкой системой апрувов

За счет этого он становится проще для понимания, имеет меньший размер, но сохраняет возможность управлять множеством токенов.

В статье разберем, как устроен стандарт ERC-6909, чем он отличается от ERC-1155, как работает новая система апрувов и почему Uniswap v4 уже использует его внутри протокола.

Читать далее

От идеи до платформы: полгода разработки собственного AI радио

Level of difficultyMedium
Reading time9 min
Views4.9K

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

Читать далее

Как я построил AI-радио без команды и инвестиций: архитектура изнутри

Level of difficultyMedium
Reading time8 min
Views5.4K

Когда я только начинал Tunio, я хотел просто познакомиться с Kubernetes. В итоге получилось построить полноценную платформу для радио с AI-музыкой, новостями, прогнозами погоды, подкастами, гео-кластеризацией и TTS-ведущими - без команды, инвестиций и грантов. Эта статья - о том, как из pet-проекта вырос продакшн-сервис с реальными клиентами, и какие технические фэйлы и открытия случились по дороге.

Читать далее

Путь к Computer Vision: Чему меня научил простой NLP-классификатор на 5 МБ

Level of difficultyEasy
Reading time11 min
Views6.9K

Ретроспектива pet-проекта, который стал полигоном для отладки, архитектуры и оптимизации перед более сложными задачами в CV.

Читать далее

Собираем ANPR-систему на Python: от YOLOv8 и кастомного OCR до INT8-квантизации

Reading time13 min
Views5.6K

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

Распознавание автомобильных номеров (ANPR) — задача не новая. Существует множество коммерческих решений и open-source библиотек. Но что, если стандартные инструменты не не подходят? А что, если нам нужна система, которая будет молниеносно работать на обычном CPU, без дорогих видеокарт?

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

Читать далее

Зачем я решил научить Statuser следить за DNS — и что из этого вышло

Level of difficultyEasy
Reading time4 min
Views2.1K

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

Меня зовут Михаил Шпаков, я создаю и развиваю сервис мониторинга Statuser.

Недавно я общался с руководителем IT-отдела одной компании, которая использует Statuser для мониторинга своих сервисов. Он поделился интересным кейсом: несколько часов подряд у них перестала отправляться почта с корпоративного домена. Сайт работал, сервер был доступен, SSL-сертификат в порядке — всё зелёное, а письма не уходят. Проблема выглядела случайной: часть писем доставлялась, часть возвращалась с ошибкой, а из-за этого срывались заказы и возникали прямые убытки.

Когда их команда начала разбираться, выяснилось, что недавно один из сотрудников сменил почтового провайдера и добавил новые MX-записи в DNS, но старые при этом не удалил. В результате часть писем уходила на старый сервер, который уже не принимал почту, а часть — на новый. Снаружи всё выглядело исправно, но на деле домен был «раздвоен» между двумя почтовыми системами.

После этого разговора я понял, что в Statuser не хватает отдельного типа мониторинга — контроля DNS-записей. HTTP, SSL и Ping могут быть зелёными, но если в DNS остались старые MX, сервис уже фактически неисправен.

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

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

Information

Rating
2,900-th
Registered
Activity