Обновить

Зачем внедрять разметку Speakable в эпоху генеративного поиска

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

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

Читать далее

Когда protobuf-схемы эволюционируют быстрее, чем ваш код успевает адаптироваться

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

Protobuf позволяет эволюционировать схемы,
но не даёт инструментов для эволюции API на уровне кода.

В статье — реальный production-кейс, почему OrderV1 / OrderV2 / OrderV3 превращаются в ад, и как мы решили это через кодогенерацию: единый типобезопасный API для всех версий protobuf.

Читать далее

High Performance API Gateway или путь к собственному шлюзу

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

10 лет — срок, за который успеваешь пройти путь от восторженного первооткрывателя до усталого прагматика, а затем, если повезёт, вернуться к чему-то вроде осознанного энтузиазма. Именно столько я живу бок о бок с микросервисной архитектурой, и почти всё это время меня преследует один и тот же вопрос: почему ни один API Gateway не делает всё так, как хотелось бы?

Всё начиналось с Ocelot — .NET-овского решения, которое в своё время казалось откровением. Отличный конструктор с декларативная конфигурацией и понятной маршрутизацией. Но стоило выйти за рамки типовых сценариев — и приходилось лезть в код, дописывать middleware, мириться с ограничениями или искать обходные пути. Потом был KrakenD — быстрый, написанный на Go, с красивой идеей агрегации бэкендов. Lura, лежащая в его основе, обещала расширяемость, но на практике каждая дополительная нетривиальная задача значительно увеличивала время ответа и даже реализация gRPC Unary требовала «костыля».

Отдельная боль, которую я испытывал годами — управление секретами и сертификатами. Пароли в конфигах. API-ключи в environment variables. Сертификаты, которые забывают обновить и сервис падает в три часа ночи. Ротация credentials, которая требует рестарта.

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

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

Читать далее

Добавил стриминг в Qwen3-TTS

На днях вышла Qwen3-TTS, но стриминг туда не завезли. Пришлось писать самому.

Ситуация интересная - В тех. репорте Qwen хвалятся "Extreme Low-Latency Streaming Generation", в репо лежат бенчмарки стриминга - а самого стриминга нет =) Разрабы переложили это на vLLM Omni, которые тоже пока не сделали online inference для Qwen3-TTS.

Читать далее

SSD быстрый, но ненадежный. Куда со временем пропадают данные

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

Приветствую, если почитать комментарии под любыми роликами или статьями про накопители, очень быстро всплывают одни и те же мысли. SSD надёжный, потому что в нём нет механики. Если его не трогать и не записывать — он не изнашивается. А если что-то случится, данные всегда можно восстановить, как с обычного жёсткого диска.
Когда-то я и сам так думал. Это кажется логичным: нет вращающихся блинов, нет головок, которые могут поцарапать поверхность, всё быстро, современно и технологично. Но чем глубже начинаешь разбираться, тем яснее становится одна простая вещь — в SSD ломается не механика. В SSD медленно и незаметно "деградирует" механизм хранения данных.

Читать далее

Почему 95% пилотов с LLM-агентами не доходят до прода: технический разбор

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

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

Паттерн один и тот же: красивый PoC → попытка масштабирования → провал.

MIT Media Lab в 2025 году подтвердил это цифрами: 95% пилотов по GenAI не дают измеримого влияния на P&L. Gartner добавляет: 40%+ проектов по агентному ИИ отменят к 2027.

Причина не в моделях. GPT-4, Claude, GigaChat — все работают нормально.

Проблема на стыке технологий и инфраструктуры. И о ней интеграторы предпочитают молчать, т.к. её решение — это 70-80% бюджета проекта.

Нырнём глубже

Флаги в программировании: наглядный пример для новичков

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

Обсудим использование флагов в коде на примерах.
Статья предназначена для тех кто только начинает осваивать программирование и испытывает трудности в определении флага (переменную булевого типа)

Например есть такая задача перебрать данные и определить есть ли там нужные нам для примера возьмем ситуацию из жизни: переберем мешок с картошкой, нужно узнать есть ли там гнилая мешок представим списком [] из 1 и 2, где 1 - означает гнилую картофелину.

Как бы мы это делали? сначала мы бы взяли одну картофелину и посмотрели на нее, и так делали бы до конца или пока не встретили гнилую....

А в конце основываясь на наблюдениях делали бы выводы.

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

Читать далее

Большой и хрупкий. Ремонт Samsung Galaxy Z Fold (7) и мнение Сервисного цетра — стоит ли оно того?

Складные смартфоны любят показывать на презентациях. Их любят блогеры. Их любят те, кто никогда не платил за их ремонт.

Samsung Galaxy Z Fold – эффектный, статусный, технологичный. Но в бытовом использовании это один из самых капризных аппаратов, которые вообще попадают к нам в сервис.

Читать далее

Тайны GIL: что реально замедляет Python в продакшене

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

Все любят Python за простоту, скорость разработки и огромную экосистему. Но есть одно известное «подводное камня», о котором слышали многие, но почти никто не понимает глубоко: GIL — Global Interpreter Lock.

GIL часто называют врагом многопоточности в CPython, и правда — он реально может тормозить ваши сервисы. Но не всё так просто. Иногда медленное поведение Python связано не с GIL, а с другими нюансами, о которых мало кто рассказывает.

Читать далее

Код без исключений: как except Exception ломает системы годами

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

Знаете, что самое опасное в проде на Python? Когда кто-то говорит:

Да там всё просто работает».

На старте кажется нормально: сервис не падает, пользователи довольны. Но на практике это один из самых тихих способов убить систему. Особенно если речь идёт о except Exception.

Читать далее

GGUF-конвертер: простой способ квантизировать LLM (включая AWQ INT4 → FP16) под ваше железо

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

В последние два года формат GGUF стал стандартом для локального запуска больших языковых моделей: llama.cpp, koboldcpp, text-generation-webui и десятки GUI умеют работать именно с GGUF‑чекпойнтами.​

Проблема в том, что большинство моделей распространяются на Hugging Face в «сыром» виде (FP16/FP32, иногда в формате AWQ INT4), а конвертация в GGUF с нужной квантизацией требует отдельного набора скриптов, ключей и танцев с бубном.​

В этой статье покажу свою утилиту GGUF-converter — маленький open‑source проект, который:

Читать далее

Как подключить Meta Quest 3S к интернету через VPN в Windows 11

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

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

Делюсь рабочим способом подключения Meta Quest 3S к интернету через VPN без настройки роутера. Пошагово показываю, как пробросить трафик мобильного хот-спота Windows 11 через VPN-соединение.

Читать далее

Как JVM загружает классы — просто о ClassLoader

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

В этой статье вы узнаете, как JVM загружает классы по мере необходимости, какие бывают загрузчики, почему нельзя подменить String, и откуда берётся ClassNotFoundException. Полезно для junior специалиста.

Когда вы запускаете Java-приложение, JVM не грузит все классы сразу. Она делает это по мере необходимости и именно ClassLoader-ы отвечают за загрузку байткода в память. Давайте разберёмся, как это работает и почему важно понимать эту механику.

Кто такие ClassLoader-ы?

ClassLoader – это часть JVM, которая находит .class-файлы, загружает их в память и создаёт объект Class, который уже можно использовать в программе.

В Java есть три основных загрузчика (можете создать свой):

Читать далее

Настройка транзита пакетов на ядре Linux

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

В данной статье описано как настроить транзит пакетов на системах ядра Linux. В качестве стенда под данную работу будет происходить в гипервизоре VMware, в качестве основного ядра будет использоваться ALT Linux. Так же для симуляции локально вычислительной сети будет использоваться утилита GNS3.

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

Читать далее

Простой способ получить пинг, mtr (и многое другое) от посетителей вашего сайта

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

Привет, Хабр. В последнее время интернет в России стал работать совсем плохо. Жалоб на недоступность сайтов в рунете становится всё больше. Поэтому я написал удобную программку, которая в один клик сможет собрать отчёт почему не работает сайт. В отчёт входит: пинг, mtr, проверка SSL и другая диагностическая информация. Подробности под катом.

Читать далее

Аннотации типов в Python. Что это и почему важно указывать

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

🔥 Аннотации типов в Python часть 2. TypedDict и другие продвинутые аннотации. PEP 484

def add(a: int, b: int) → int:

msg: str = f"Сумма чисел {a} и {b} = {a + b}"
print(msg)
return a + b


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

Для аннотации типа значений аргумента используется двоеточие и после идёт указываемый тип. Для указания возвращаемого значения используется ->и после возвращаемый тип.

❗️ Заметим что Python не проверяет типы при вызове функции. Аннотации просто подсказывают тип.

Если мы вызовем add("Hello ", "World") то получим вывод "Сумма чисел Hello и World = Hello World".

Но зачем они нужны если они не влияют на код?

Читать далее

Квантовый генератор паролей на Q#

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

Когда квантовая механика встречается с программированием, рождаются удивительные проекты. Мой генератор паролей на Q# — именно такой случай. Зачем использовать квантовые вычисления для паролей? Ответ прост: настоящая случайность.

Обычные генераторы используют математические алгоритмы, которые лишь имитируют случайность. Квантовые кубиты дают фундаментальную непредсказуемость: суперпозиция состояний |0⟩ и |1⟩ коллапсирует в случайное значение при измерении.

Как это работает?

Проект предлагает два режима:

Режим 1 использует один кубит: H|0⟩ = (|0⟩ + |1⟩)/√2 — классическая 50/50 вероятность.

Режим 2 задействует EPR-пару — два запутанных кубита в состоянии (|00⟩ + |11⟩)/√2. Это добавляет квантовые корреляции в процесс.

Технически всё просто: генерируем случайные биты, преобразуем в числа, выбираем символы из алфавита 62 символов (буквы + цифры). Python-интерфейс делает использование интуитивным.

Почему это интересно?

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

Код чисто модульный, его можно расширять: добавить спецсимволы, веб-интерфейс, статистический анализ. Главное — он работает и демонстрирует потенциал Q# для решения повседневных задач необычными методами.

Технологии: Q#, Python, .NET 6
Сложность: средняя
Практическая ценность: высокая

Узнать как сгенерировать настоящий пароль

CLite — библиотека для упрощения программирования на C

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

CLite — библиотека для упрощения программирования на языке C.

Библиотека CLite создана для C-програмистов, которые устали ошибаться в большом коде или писать много ненужных строк, чтобы функция работала стабильно.

Читать далее

Program Locker: простой способ защитить исполняемые файлы Windows паролем

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

В Windows нет удобного и быстро настраиваемого механизма, который позволяет защитить запуск исполняемого файла паролем.

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

Читать далее

Аннотации типов в Python — мода или необходимость

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

Ещё несколько лет назад аннотации типов в Python воспринимались как нечто факультативное — «игрушка для перфекционистов» или заимствование идей из статически типизированных языков. Сегодня ситуация изменилась: type hints стали стандартной частью экосистемы Python.

Возникает закономерный вопрос: аннотации типов — это временная мода или реальная необходимость? В этой статье разберёмся без идеологии и крайностей: что именно дают аннотации, где они действительно полезны, а где от них нет практического смысла.

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