-
jscpd-rs: быстрый поиск дублей в коде У меня есть ощущение, что мы входим в довольно странный этап разработки. Код стало писать заметно дешевле. Большие команды и раньше могли случайно размножать похожие куски логики в разных частях монорепы. Но теперь к…
-
Как я довёл расходы на LLM до нуля: почему на бесплатных тарифах параллелизм — враг
Это продолжение первой статьи про Briefka — там я описывал самого бота и базовую архитектуру каскада LLM-провайдеров. За прошедшие 4 месяца бот органически вырос с 59 до 84 пользователей, и именно на этом масштабе бесплатный каскад начал срываться на платного…
-
KODE.market: Как я написал первый в мире поисковик по GitHub и GitLab + P2P-раздатчик open-source кода
Без модерации, комиссий и SEO-мусора. Мгновенный поиск, проверка идей + гибридная раздача релизов в одном инструменте.Привет, Хабр! На связи TechnoL0g. Если вы хоть раз пробовали опубликовать своё детище в официальных сторах или годами поддерживали open-source репозиторий, то прекрасно знаете, сколько…
-
Создание эскиза тату с помощью нейросети: Выбираем лучший ИИ для генерации татуировок
Выбор мощной нейросети для создания эскиза тату во многом определяет качество будущей работы. Разбираем проверенные ИИ для татуировок, алгоритмы генерации и рабочие схемы составления промптов.Создание эскиза тату с помощью нейросетиНайти идеальный нательный рисунок трудно, если полагаться исключительно на абстрактные идеи.…
-
Как упростить тестирование ASP.NET Core API
Разрабатывая приложения, мы стараемся не злоупотреблять дублированием кода. Из часто встречающегося кода мы формируем библиотеки, а для их соединения в инфраструктуре ASP.NET Core приложения используем DI-контейнер.Инфраструктура тестирования для ASP.NET Core API, как правило, тоже повторяется, но какие инструменты помогают нам…
-
«Ваш аккаунт заблокирован». Часть 2: Немой бан — это скрытая агрессия
В прошлом посте я предложил концепцию «Паспорта бана»: любая блокировка должна сопровождаться чёткими фактами, указанием причин и фиксацией ответственного лица.Мне возразили:«Без жёсткой модерации любой цифровой сад сгниёт. Пацифизм губит ухоженные пространства, сорняки нужно пропалывать без лишних разговоров» (мне ответили не…
-
Специалист против универсала: GLM‑OCR читает таблицы, которые Gemma 4 выдумывала
В первой части локальная Gemma 4 на мыльной таблице сочинила целую строку зарплат, а на гигантской — насыпала гладких круглых тысяч вместо реальных чисел. В комментариях читатель сказал: для OCR таблиц бери специальную модель, GLM‑OCR, она и меньше, и точнее. Я взял. На той же строке, которую Gemma выдумала, GLM…
-
Как мы превращаем звонок риэлтора в карточку лида за 15 секунд: ИИ-автолид изнутри
Риэлтор за рулём. Звонит собственник трёшки на Соколе: «Видел ваше объявление, хочу обсудить продажу». Двадцать минут живого разговора — район, перепланировка, срочность, вилка по цене. Разговор кончается, риэлтор едет на показ, к вечеру у него ещё пять звонков. Утром он…
-
Генератор лендингов на Claude Code skills: статика, SEO, A/B и автодеплой из коробки
Я соло-фаундер и единственный разработчик нишевого B2B-продукта. Лендинги для него я переделывал не раз: новая гипотеза — новая посадочная, под кампанию — ещё одна, плюс блог. Каждый раз повторялась одна и та же возня: не забыть мета-теги и Open Graph,…
-
Категории типов. Часть 7½. Свободная монада
Здесь мы разбираем реализации основных возможностей расширений Кана и некоторые частные случаи. Большое внимание уделено устройству свободной монады, как монады коплотности различных забывающих функторов.В прошлый раз мы рассмотрели, как исчисление концов позволяет конструировать функторы расширений Кана, а теперь пойдём дальше.…