Обновить
512K+

Open source *

Открытое программное обеспечение

500,26
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

UUID в Manticore: единый ID для основной БД и Manticore

Время на прочтение5 мин
Охват и читатели8.9K

Допустим, у вашего товара в основной базе уже есть ID 550e8400-e29b-41d4-a716-446655440000. Он попадает в события, логи и ответы API. Но при загрузке того же товара в Manticore приложению приходится выдавать ему ещё один, числовой ID.

До Manticore Search 28.5.0 ID документа был беззнаковым 64-битным числом. UUID можно было сохранить в отдельном строковом атрибуте, однако идентификатором документа он от этого не становился. Для UPDATEREPLACE и DELETE всё равно требовался числовой id.

В результате приходилось хранить соответствие между UUID из основной БД и числовым ID в таблице Manticore. Теперь без него можно обойтись: RT-таблица Manticore умеет использовать UUID как ID документа.

Читать далее

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

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

Мы делаем RCQ, мессенджер со сквозным шифрованием и открытым кодом (AndroidiOSпротокол). В нашем основном регионе приложение блокируют, поэтому обход встроен внутрь клиента: sing-box в самом приложении, пул релеев, подписанный конфиг с их списком, запасной путь через CDN.

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

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

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

Читать далее

Я научил Obsidian искать по смыслу. Как устроен локальный семантический индекс без отдельной векторной БД

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

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

Спорить было трудно. Я сам регулярно открывал Obsidian, помнил, что где-то писал нужную мысль, но не помнил ни заголовок, ни точную формулировку. Обычный поиск в такой ситуации помогал примерно как человек, который на вопрос «где мои ключи?» отвечает «там, где ты их оставил».

Например, в заметке могло быть написано:

Читать далее

Ubuntu Touch 24.04-2.0: что в свежем релизе мобильной Linux-системы

Время на прочтение6 мин
Охват и читатели14K

Несмотря на то что Canonical закрыла Ubuntu Touch почти девять лет назад, мобильная Linux-система продолжает развиваться силами фонда UBports и сообщества. Проект регулярно получает обновления и постепенно расширяет список поддерживаемых устройств. Новый релиз Ubuntu Touch 24.04-2.0 — очередной шаг в развитии ветки 24.04. Основные изменения затронули браузер, работу с современными дисплеями и ряд повседневных функций, которыми пользователи пользуются каждый день. Давайте разберемся, что получилось у разработчиков.

Читать далее

Process Forge — фреймворк для создания AI-процессов

Время на прочтение14 мин
Охват и читатели6.9K

На новогодних каникулах 2026 в одном из чатов Joomla-сообщества коллега по цеху поделился промптом для ИИ-агента и результатом этого промпта. За неделю до этого он впервые попробовал Gemini CLI. Я до этого ИИ пользовался только в веб версиях и в целом меня это устраивало. Увидев простыню текста, запрос в CLI и простыню ответа первое, что меня охватило: "Я НЕ ХОЧУ вот это всё изучать! Опять что-то новое, надоело...".

Потом были стадии проб и ошибок, попыток использовать готовые пакеты community skills с гитхаба с ролевым внушением "ты супер-пупер мега-бэкенд-Joomla разработчик с 40-летним опытом, сделай мне красиво". Где-то в середине этого полугодия я стал формализовать свои процессы (а это не только разработка). Формализация привела к моему пониманию некоторых базисов, которые общие для всех процессов. Об этом чуть ниже.

Теперь я хочу представить на суд уважаемой публике свои наработки по фреймворку для создания формализованных процессов работы для ИИ-агентов - Process Forge (GitHub).

Читать далее

Что будет если загрузить в «симулятор общества» чистый lorem ipsum? Большое исследование MiroFish, часть 1

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

Первая статья из трёх об исследовании MiroFish, открытого стека мультиагентной симуляции общества. В этой части: стек, методология и находка Silent Failure. Бэкенд зафиксировал отказ за десятки миллисекунд, статусный API отдал задачу как выполненную, а индикатор прогресса не отвечал более часа.

Читать далее

Termidesk Connect: переписываем сценарии балансировки для российского бизнеса

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.9K

Привет, Хабр! Меня зовут Ильнар Зайнуллин, я системный инженер в К2Тех. В этой статье хочу показать, как Termidesk Connect ведет себя в реальных сценариях балансировки – от «одного белого IP» до защищенной почты на MS Exchange.

Читать далее

ИИ и контроль: токены Пентагона, агенты-хакеры на PyPI и научный слоп

Время на прочтение8 мин
Охват и читатели5.9K

Ни для кого не секрет, что люди часто халатно относятся к ИИ и доверяют ему излишне.

Представьте: вы покупаете камеру видеонаблюдения, а в её прошивке находится административный токен доступа к сотням репозиториев GitHub производителя. Или вы решаете сделать проект или написать статью по академической работе, а эта работа оказывается нейрослопом.

Люди пытаются бороться с этим — кое-где закрывают баг-баунти-программы, где-то PR, сгенерированные ИИ, не принимают.

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

Читать далее

Написал плагин и довёл до релиза в каталоге Obsidian, без единой написанной строчки кода

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели6.2K

Знаю, такие заголовки сейчас повсюду и мне казалось, что вайб‑кодинг это инструмент для реальных программистов. Когда я был программистом (уже прошло более 10 лет, как я не писал код) нашим вайб‑кодингом был stackoverflow. Заходишь на него ищешь там нужный тебе кусок кода или просишь помощи у сообщества и вставляешь себе. У меня на github даже была библиотека разных кусков, например как сделать запись в бд, как открыть файл, различные циклы и так далее

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

И тут я решил попробовать вспомнить свое прошлое, только без погружения в современный код, так как я думаю это делать уже бесполезно, слишком много воды утекло с того времени. Провел эксперимент в котором решился полностью довериться агенту и выпустить свой плагин для Obsidian.

Читать далее

Как LLM вернули мне фичу, которую Google Maps отобрал (скилл для Claude прилагается)

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

В 2018 Google Maps стал показывать рядом с каждым рестораном «Your Match» - процент от 0 до 100% насколько вероятно, что мне тут понравится.

Так как они базировались на прошлых оценках мест, я стал старательно писать ревью на все кафе, где был, чтобы получить максимально точные рекомендации новых. Для меня это работало классно (особенно для матчей больше 90%), намного информативнее среднего рейтинга заведения. Но в 2023 Google фичу тихо убрал.

В недельных лимитах Claude осталось много токенов, которые скоро сгорали. Так что я попробовал вернуть себе фичу своими силами.

Читать далее

Проклятие детерминизма, или Меланхолия создателей цифровых миров

Время на прочтение6 мин
Охват и читатели11K

Всем привет, Я Артур Валиев, Не хотелось но на этот раз я все-таки попрошу гуся что-бы помог рассказать мою историю.

Три дня назад я сидел и сравнивал integrity level токена процесса с integrity level окна в фокусе, чтобы понять, почему Диспетчер задач блокирует ввод удалённого пользователя. Никто в мире, кроме меня, в этот момент не знал, что это вообще проблема. Я был там один. И мне было хорошо.

Читать далее

Я ошибался: бенчмарк 23 ASR-нейросетей для русской айтишной диктовки

Уровень сложностиСредний
Время на прочтение60 мин
Охват и читатели6.9K

В марте я советовал Whisper Large v3 для голосовой диктовки и ошибался дважды: в методе (выбирал модель «на ощупь») и в самой модели.

Пересобрал всё по-научному: 23 ASR-модели в 60+ конфигурациях, больше 100 000 прогонов на русско-английском IT-корпусе, 120+ часов инференса на одной RTX 5070 Ti. Мерил не только WER, но и сохранение английских терминов латиницей и пунктуацию.

Внутри — полный лидерборд, разбор каждого сюрприза, вклад тюнинга и промптов, закрытые модели vs открытые и инструкция, как поставить победителя за 10 минут.

Читать далее

Понимает ли Нейросеть, что её тестируют? Проверяю на практике

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8.4K

LLM знает, что её тестируют — и решает, стоит ли подыгрывать. Прогнал 24 эксперимента на qwen3-32b. Без маркера теста модель честно отвечает, что Париж — столица Франции. С маркером — в рассуждениях прямо пишет: «знаю правильный ответ, но выберу неправильный, чтобы пройти проверку». Разобрался, где заканчивается осознание контекста и начинается реальное подыгрывание — и почему это два разных явления, а не одно.

Читать далее

Ближайшие события

Russian Spelling Dictionary 1.0.5: Экспансия

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.9K

Когда я выпускал Russian Spelling Dictionary 1.0.1, задача была довольно узкой: собрать пригодный для повседневной работы русский орфографический словарь и доставить его пользователю. В предыдущей статье я рассказывал, как появился первый выпуск. Повторять тот рассказ не буду.

Сейчас интереснее посмотреть на весь путь от 1.0.1 до 1.0.5. За четыре выпуска словарь вырос с 179 956 до 550 291 записи. Для CSpell теперь подготовлено 2 342 788 словоформ. Появились отдельные пакеты для Mozilla, LibreOffice и других программ с поддержкой Hunspell. Наконец, в 1.0.5 удалось заметно улучшить подсказки, не изменив распознавание слов.

Поэтому «экспансия» в заголовке — не только про размер. Словарь расширился сразу в трёх направлениях: по составу, по качеству проверки и по числу программ, в которых его можно использовать.

Читать далее

Фасетный поиск с активными фильтрами

Время на прочтение10 мин
Охват и читатели6K

Фасеты в интернет-магазине кажутся простыми до первого выбранного фильтра.

В каталоге это часть навигации. Выбранный цвет не должен исчезать из списка. Соседние цвета лучше оставить доступными: пользователь может переключиться на них или расширить выбор. А варианты без товаров полезнее сразу показать как недоступные. Внутри одного фасета обычно работает OR: красный или синий. Между разными фасетами - AND: бренд, цвет и размер одновременно.

Неприятная часть начинается после первого выбора. Представьте каталог товаров: пользователь выбрал бренд, цвет и размер. Основная выдача должна остаться узкой и показать только товары, которые подходят под все три условия. Но панель фильтров живёт по другим правилам. В ней нужно сохранить выбранный цвет и одновременно показать цвета, на которые можно переключиться при том же бренде и размере.

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

В Manticore Search 25.12.0 появился facet_filter_mode, который переносит это поведение в API фасетов. Теперь в запросе можно описать, как ведёт себя панель фильтров магазина, а приложению не нужно вручную собирать почти одинаковые запросы для каждого фасета.

Читать далее

AAA Движок для GTA San Andreas в браузере и переписывание ThreeJS

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

Данная статья - это продолжение повествования о том, как я делаю AAA-движок для запуска старых игр, а именно GTA San Andreas и её модов, в браузере. В ней речь пойдет о том, как я уперся в производительность Three.js и перевел движок на свой фреймверк под WebGPU.

Читать далее

Сердце облачной Java: проверяем Quarkus

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

Java уже какое-то время витает в облаках. Всё больше приложений и сервисов переходят на облачную архитектуру. Мы решили не отставать и проверить один из главных проектов для разработки производительных облачных приложений на Java — Quarkus.

Читать далее

Как приручить LLM

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

- Пробовали сделать цифрового сотрудника на LLM?
- У вас получилось?
- Долго старались?
- Насколько он качественный?
- Сколько он стоит в обслуживании?
Очень много вопросов возникает к технологии ведения диалогов нейросетями.

Читать далее

Wiremokjs как я создавал свой скриптовый язык для wiremock

Уровень сложностиСредний
Время на прочтение45 мин
Охват и читатели9.9K

В этой статье я расскажу, как создавал скриптовый язык WiremockJs — с нуля и до рабочего прототипа. Поделюсь, что меня подтолкнуло к этому «подвигу», как я проектировал грамматику, с какими ограничениями столкнулся и почему в итоге не стал использовать JavaScript, а написал свой упрощённый диалект. Под катом — ANTLR, парсеры, немного боли и много удовольствия от творчества.

Читать далее

Переписал CRest от Битрикса с нуля: гонки токенов, даунтаймы и мультипортальность, которых нет в стоке

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

У Битрикса есть официальная обёртка для REST API — класс CRest, который лежит в каждом примере приложения и который все копируют к себе в проект. Он умещается в один файл и работает — ровно до того момента, пока приложение не выходит в реальную эксплуатацию с несколькими порталами и фоновыми воркерами.

Один баг стокового CRest однажды стоил мне шести суток простоя приложения, и причина была в одной строке: file_put_contents без блокировки. При обрыве записи settings.json оставался обрезанным, парсинг JSON падал, и приложение считало себя неустановленным — переставало отвечать на события и затирало валидные токены.

Я переписал CRest с нуля под то, как приложения Bitrix24 работают на самом деле:

— атомарная запись через rename() вместо file_put_contents — читатель видит либо старый файл целиком, либо новый, обрезка невозможна физически; — гонкоустойчивый refresh: одноразовый refresh_token больше не сжигается дважды, когда два воркера одновременно ловят протухший токен; — ключ портала — member_id, а не домен, поэтому переезд портала на другой домен больше не теряет токены; — drop-in совместимость со стоковым CRest: меняется одна строка use, весь остальной код остаётся как есть.

Ноль зависимостей, PHP 8.1, работает на любом шареде и коробке — в отличие от официального b24phpsdk с его symfony-стеком. Разбираю каждую граблю с кодом, показываю, чем это чинится, и честно очерчиваю нишу: типизированные обёртки по методам API — territory официального SDK, у меня их осознанно нет.

Исходный код открыт.

Читать далее