Select a country

SayFable: офлайн-библиотека с NLP-разметкой, синтезом на 68 языков и чатом по книге

Привет, Хабр! В прошлых статьях я рассказывал про локальный переводчик с синтезом голоса на кабардинском и про то, как собрать полный
Наука - Хабрахабр

SayFable: офлайн-библиотека с NLP-разметкой, синтезом на 68 языков и чатом по книге

Привет, Хабр! В прошлых статьях я рассказывал про локальный переводчик с синтезом голоса на кабардинском и про то, как собрать полный NLP-стек для «финального босса лингвистики» из старых словарей. За прошедшие месяцы весь этот стек - лемматизация, POS, NER, тональность, эмбеддинги, синтез - переехал с Python/Flask на десктопе в Swift-приложение на iOS и заодно перерос сам себя: начиналось всё как синтезатор речи для одного языка, а выросло в персональную библиотеку для любого контента - книги, статьи, подкасты, видео, музыка, файлами или ссылками. Полгода на голом Swift 6, вечерами и выходными.Приложение уже можно ставить и ломать - оно в бете, включая рабочий CarPlay. Под катом: что оно умеет, как устроено внутри и какие цифры получились на реальном железе. Читать далее

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust. В этой статье попытаюсь осветить нюансы написание своего игру
Наука - Хабрахабр

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust. В этой статье попытаюсь осветить нюансы написание своего игрушечного индекса. Читать далее

Как ИИ-помощник работает с данными 1С: семь практических сценариев

Для разового запроса к данным 1С не всегда нужно заранее создавать отдельный отчет или обработку. Задачу можно сформулировать обычным языком
Наука - Хабрахабр

Как ИИ-помощник работает с данными 1С: семь практических сценариев

Для разового запроса к данным 1С не всегда нужно заранее создавать отдельный отчет или обработку. Задачу можно сформулировать обычным языком: найти документы, проверить ошибки, сопоставить показатели или разобраться в устройстве конфигурации.В статье разберем, как работает Codex для 1С — решение, которое подключает ИИ-помощника к информационным базам 1С. На примерах посмотрим, как он ищет данные, анализирует журнал регистрации, проверяет права пользователей, находит связанные документы и сравнивает показатели в нескольких базах. Читать далее

VPN с российским IP: что о вашем адресе видно на самом деле

Поднял сервер за границей, всё летает - а потом маркетплейс просит капчу, банк отказывает в операции, сайт объявлений не открывается. Совет од
Наука - Хабрахабр

VPN с российским IP: что о вашем адресе видно на самом деле

Поднял сервер за границей, всё летает - а потом маркетплейс просит капчу, банк отказывает в операции, сайт объявлений не открывается. Совет один: сделай обратный впн. Рецептов несколько, и работают они по-разному.Собрал их у себя и посмотрел не на описания, а на то, что о вашем адресе видно снаружи. «Российский IP» оказался не одним свойством, а тремя, и закрывает все три только один вариант из четырёх. Читать далее

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

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

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

Допустим, у вашего товара в основной базе уже есть ID 550e8400-e29b-41d4-a716-446655440000. Он попадает в события, логи и ответы API. Но при загрузке того же товара в Manticore приложению приходится выдавать ему ещё один, числовой ID.До Manticore Search 28.5.0 ID документа был беззнаковым 64-битным числом. UUID можно было сохранить в отдельном строковом атрибуте, однако идентификатором документа он от этого не становился. Для UPDATE, REPLACE и DELETE всё равно требовался числовой id.В результате приходилось хранить соответствие между UUID из основной БД и числовым ID в таблице Manticore. Теперь без него можно обойтись: RT-таблица Manticore умеет использовать UUID как ID документа. Читать далее

Step-Up Authentication vs 2FA: зачем нужен второй фактор внутри активной сессии

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

Step-Up Authentication vs 2FA: зачем нужен второй фактор внутри активной сессии

Двухфакторная аутентификация давно стала стандартом защиты корпоративных систем. Но для работы с персональными данными и другими критичными операциями проверки только при входе в систему может быть недостаточно. В этой статье разберем, чем Step-Up Authentication отличается от классической 2FA, в каких сценариях она применяется и как мы реализовали этот механизм в одном из наших проектов Читать далее

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

Мы делаем RCQ, мессенджер со сквозным шифрованием и открытым кодом (Android, iOS, протокол). В нашем основном регионе приложение блокируют, п
Наука - Хабрахабр

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

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

Я собрал 33 ИИ-агента на одном движке. Показываю, как устроены пять из них

За последний год я собрал 33 ИИ-агента. Шахматный тренер для ребёнка, помощник по учёбе, ассистент для жены, тьюторы образовательных программ,
Наука - Хабрахабр

Я собрал 33 ИИ-агента на одном движке. Показываю, как устроены пять из них

За последний год я собрал 33 ИИ-агента. Шахматный тренер для ребёнка, помощник по учёбе, ассистент для жены, тьюторы образовательных программ, боты для металлургического холдинга и энергетической компании, внутренние агенты отдела продаж и CRM.Все они работают на одном движке. Один и тот же Docker-образ, одна и та же кодовая база. Форков ядра — ноль.Различаются они ровно одним: где у каждого проходит граница между тем, что считает код, и тем, что говорит модель. Это и есть содержание всей работы. Не промпт-инжиниринг, не выбор модели, не RAG. Граница.Ниже — разбор шести агентов с двух полюсов этой границы, реальный код, замеры и грабли, включая те, где я сам эту границу провёл неправильно.TL;DR Читать далее

Получение shell и root shell на свитче Huawei S6330 с прошивкой V200R021

В прошлой статье было рассказано как “в три промпта” был получен shell для свитча SNR-2990X-24FQ (OEM DCN), в этой статье будет рассказано о более сложном
Наука - Хабрахабр

Получение shell и root shell на свитче Huawei S6330 с прошивкой V200R021

В прошлой статье было рассказано как “в три промпта” был получен shell для свитча SNR-2990X-24FQ (OEM DCN), в этой статье будет рассказано о более сложном реверс-инжиниринге свитча одного из топ-вендоров в мире сетевого оборудования. Читать далее

proxy_pass и fastcgi_pass — одна машина

У директив proxy_* и fastcgi_* совпадает 46 опций из 53 — буферизация, таймауты, кеш, next_upstream, с точностью до префикса и вплоть до значений по умолчанию.
Наука - Хабрахабр

proxy_pass и fastcgi_pass — одна машина

У директив proxy_* и fastcgi_* совпадает 46 опций из 53 — буферизация, таймауты, кеш, next_upstream, с точностью до префикса и вплоть до значений по умолчанию. Два независимо написанных модуля так не сходятся.Они и не независимы. Всё, чем proxy_pass отличается от fastcgi_pass, — девять указателей на функции в ngx_http_upstream_t. Соединение, таймауты, повторы, буферизация и отдача клиенту лежат в общих 7352 строках ngx_http_upstream.c, и восемь модулей — от proxy до свежего tunnel — дёргают один и тот же код.Только контракт из этих девяти указателей врёт в обе стороны. Один из них, abort_request, ставят все восемь модулей — а машинерия не вызывает его ни разу: ноль вызовов во всём дереве и ни одного коммита с вызовом за всю публичную историю, с импорта 0.1.14 в январе 2005-го. Другой, pipe->input_filter, в контракте не объявлен вовсе — но обязателен, как только включена буферизация, и вызывается без проверки на NULL.Разбираем по тегу release-1.31.3 со ссылками файл:строка: все места вызова каждого колбэка, включая тот, который разбирает заголовок не из сокета, а из файла кеша; матрица «кто какие указатели ставит» по всем восьми модулям; два сценария падения с разными стек-трейсами. Плюс свой рабочий upstream-модуль на 335 строк, собранный и проверенный curl'ом, и tunnel — самый маленький из восьми, приехавший в open source в апреле. Читать далее

Как я починил энергосбережение OnePlus 3T на mainline ядре

Первая часть закончилась тем, что телефон заработал, и какое-то время этим всё и ограничивалось. postmarketOS на mainline-ядре, сверху Docker, Tailscale и один н
Наука - Хабрахабр

Как я починил энергосбережение OnePlus 3T на mainline ядре

Первая часть закончилась тем, что телефон заработал, и какое-то время этим всё и ограничивалось. postmarketOS на mainline-ядре, сверху Docker, Tailscale и один небольшой сервис, которому от меня ничего не требовалось. Я убрал телефон на полку и перестал о нём думать — ровно этого я от него и хотел.Сервис работал. Заодно выяснилось, что процессор всё это время держался на 70 °C. Не под нагрузкой, а в покое, днём и ночью, на устройстве без вентилятора и без радиатора, где тепло уходит только через собственный алюминиевый корпус.Вопрос, который стоило задать сразу: чем он занят, что даёт такую температуру. Дальше — ответ на него. Читать далее

Бенчмаркая Enumerable.Chunk: почему батчей меньше, а проход до ×2,7 дольше

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

Бенчмаркая Enumerable.Chunk: почему батчей меньше, а проход до ×2,7 дольше

Chunk делит коллекцию на массивы — одна строка кода. Но есть размер чанка, после которого он замедляется в разы при тех же данных и той же памяти. А на массиве и на List<int> внутри разный код, и в самой строке этого не видно. Читать далее

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

Когда работа, к которой вы долго стремились, перестаёт радовать, легко решить, что вы обленились, выгорели или выбрали не ту профессию. Но иног
Наука - Хабрахабр

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

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

3. Bonsai-27B на рекурсивном форке llama.cpp: полный запуск и реальный бенчмарк на RTX 3050

В этой статье я расскажу, как запустить Bonsai-27B на обычной видеокарте и как мой форк llama.cpp делает модель умнее прямо на инференсе. Показываю реа
Наука - Хабрахабр

3. Bonsai-27B на рекурсивном форке llama.cpp: полный запуск и реальный бенчмарк на RTX 3050

В этой статье я расскажу, как запустить Bonsai-27B на обычной видеокарте и как мой форк llama.cpp делает модель умнее прямо на инференсе. Показываю реальный тест: на одной и той же задаче базовая модель зависла и не смогла решить, а рекуррентная довела до ответа. Объясняю, что происходит внутри, сколько это стоит по скорости, и даю команды, чтобы повторить всё у себя на железе. Ну давай посомтрим

Детектор не приступов, а тряски. Приложение для часов Garmin

Приложение называлось SeizureDetector — «детектор приступа». Под таким именем Connect IQ Store публиковать его отказался. Слишком много ответственности.
Наука - Хабрахабр

Детектор не приступов, а тряски. Приложение для часов Garmin

Приложение называлось SeizureDetector — «детектор приступа». Под таким именем Connect IQ Store публиковать его отказался. Слишком много ответственности. И правильно сделал. Так что теперь это ShakeDetector, детектор тряски. Никогда не думал, что столкнусь с этой темой. Читать далее

ИИ за полтора часа взял задачу, над которой статистики бились 20 лет

Эдгар Добрибан, статистик из Уортонской школы Пенсильванского университета, сел за разговор с GPT-5.6 Pro. Модели он дал только математическое оп
Наука - Хабрахабр

ИИ за полтора часа взял задачу, над которой статистики бились 20 лет

Эдгар Добрибан, статистик из Уортонской школы Пенсильванского университета, сел за разговор с GPT-5.6 Pro. Модели он дал только математическое определение процедуры Бенджамини-Хохберга и вопрос: доказать или опровергнуть. Примерно через полтора часа рассуждений она выдала доказательство, конкретный контрпример и код численного сертификата к нему. Читать далее

От object detection к классическому CV: разрабатываем сканер для слабых смартфонов

Привет хабр!Мы разрабатываем приложение для управления линейным персоналом.Хочу рассказать об одной из самых сложных наших разработок — ди
Наука - Хабрахабр

От object detection к классическому CV: разрабатываем сканер для слабых смартфонов

Привет хабр!Мы разрабатываем приложение для управления линейным персоналом.Хочу рассказать об одной из самых сложных наших разработок — динамического визуального кода, который должен считываться камерой обычного смартфона в реальном времени.Внутри продукта эта технология называется MotionCode. Внешне всё выглядит довольно просто: панель воспроизводит последовательность визуальных элементов, камера телефона считывает их, а приложение восстанавливает код.На практике путь от первого прототипа до стабильной работы оказался гораздо сложнее. Мы успели обучить модель для object detection, столкнуться с ограничениями мобильного железа, отказаться от нейросети и почти без опыта в компьютерном зрении построить собственный real-time-пайплайн обработки кадров. Читать далее

Как рассказ на литконкурс превратил меня в исследователя копирования сознания

Началось всё беззаботно. Я участвовала в локальном писательском конкурсе, где рассказ надо писать по выпавшему жанру, и мне выпала антиутопи
Наука - Хабрахабр

Как рассказ на литконкурс превратил меня в исследователя копирования сознания

Началось всё беззаботно. Я участвовала в локальном писательском конкурсе, где рассказ надо писать по выпавшему жанру, и мне выпала антиутопия, а я выпала в осадочек.Что я знала про антиутопию? Ну, читала «1984» когда-то давно, ещё в той жизни, где у меня было время читать что-то кроме логов. Помнила, что это когда мир вокруг тебя хреновый, но старательно притворяется хорошим, а главный герой, сколько бы ни бился, всё равно проигрывает. Плюс бонусы: кодовые имена и лозунги на плакатах. Негусто, короче.И тут мне в голову пришла идея, (старая как мир): злой мир, где людей вместо казни или после смерти просто копируют. Не убивают, а «продолжают». Загружают весь твой цифровой след, обучают модель, а потом навешивают на тебя датчики, и ты неделю ходишь, живёшь, а система за эту неделю учится думать за тебя. Ты мёртв, твоё копия машет с экрана, все счастливы. Красиво же? Жутко. По-антиутопически. Я довольная села писать.Приз я не получила, зато получила вопрос, который потом не отпускал меня всю неделю: а что я, собственно, написала? Антиутопию aka выдумку? Или научную фантастику aka научпоп, а может вообще прогноз будущего?Сразу дисклеймер, чтобы вы не пришли меня бить: я не эксперт в LLM-архитектуре и вообще не нейробиолог. Я пришла сюда не с ноги «смотрите какая я умная», а с ноги «мне стало интересно, я пошла гуглить и офигела, насколько случайно попала и не попала». Это разбор моей наивной идеи, сначала написанной на вдохновении как просто писака, а потом уже отрефлексированной после публикации. Погнали по кускам: ровно в том порядке, в каком я сама во всё это проваливалась. Читать далее

Конвейер по созданию презентаций на базе заметок obsidian и локального ИИ

Идея: понедельник, 10:00. Что если из заметок в obsidian собирать (пересобирать) готовые презентации образовательных курсов? Читать далее
Наука - Хабрахабр

Конвейер по созданию презентаций на базе заметок obsidian и локального ИИ

Идея: понедельник, 10:00. Что если из заметок в obsidian собирать (пересобирать) готовые презентации образовательных курсов? Читать далее

AudioToText: управление требованиями через записи встреч

Как превратить записи встреч в рабочий материал для согласования требований: текущая версия проекта AudioToText. В статье показываю, как собрать с
Наука - Хабрахабр

AudioToText: управление требованиями через записи встреч

Как превратить записи встреч в рабочий материал для согласования требований: текущая версия проекта AudioToText. В статье показываю, как собрать сервис транскрибации на базе MLX Whisper и Django, чтобы автоматически получать структурированные протоколы созвонов, а не просто длинные текстовые файлы. Разбираю сценарий работы, ключевые элементы веб‑интерфейса, review‑контур и планы развития проекта в сторону NER и поиска противоречий по summary. Как запись встречи становится рабочим арте

Я написал мессенджер в одиночку … Разбор 149-ФЗ

Омаж на статью https://habr.com/ru/articles/1066668/ от @BorisXQЯ тоже написал «мессенджер» на любимом $mol ( благодаря которому я могу добавить этот мессендже
Наука - Хабрахабр

Я написал мессенджер в одиночку … Разбор 149-ФЗ

Омаж на статью https://habr.com/ru/articles/1066668/ от @BorisXQЯ тоже написал «мессенджер» на любимом $mol ( благодаря которому я могу добавить этот мессенджер в любое своё $mol приложение за 1 строчку кода ) и GiperBaza, без слежки, логина, пароля, и вообще без сбора каких либо данныхИ даже почти без сервера)P.S Только для домашнего использованияМожно создать диалог с тем, чей айди тебе известен, либо создать беседу и пригласить туда людей, либо создать реестр, что бы все кто хотел туда бы добавились. Например реестр всех айтишников) Вступайте в очередной реестр всех айтишников!) https://b-on-g.github.io/gram/#!users=xa77SU2P_FSMnTiSP Или написать мне напрямую https://b-on-g.github.io/gram/#!invite=J2kVT1UX_fmQm09dd Читать далее

Похоже, мы проспали рубеж в 3 ТВт солнечной энергетики

Тут такая забавная ситуация получается. Похоже, мировая солнечная энергетика уже перешагнула отметку в 3 ТВт установленной мощности, но при э
Наука - Хабрахабр

Похоже, мы проспали рубеж в 3 ТВт солнечной энергетики

Тут такая забавная ситуация получается. Похоже, мировая солнечная энергетика уже перешагнула отметку в 3 ТВт установленной мощности, но при этом до сих пор никто не может точно сказать, в какой именно день это произошло ¯_(ツ)_/¯ Читать далее

Сшивка кадров с микроскопа: как собрать большое изображение из видео

Рассматривать предметный образец под микроскопом — всё равно что пытаться увидеть концертный зал через замочную скважину: в поле зрения поп
Наука - Хабрахабр

Сшивка кадров с микроскопа: как собрать большое изображение из видео

Рассматривать предметный образец под микроскопом — всё равно что пытаться увидеть концертный зал через замочную скважину: в поле зрения попадает только небольшой фрагмент, а общей картины не видно. Поэтому предметное стекло постепенно перемещают под камерой, а система записывает видео и собирает отдельные кадры в одно большое изображение, которое можно сохранить и использовать для исследования. Сделать это простым наложением кадров нельзя: во время движения они могут смазываться, освещение меняется, а похожие участки легко перепутать. Мы сравнили несколько подходов к совмещению соседних кадров. Читать далее

Как понять, что tg-канал накручен и лучше на него не заливать?

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

Как понять, что tg-канал накручен и лучше на него не заливать?

Шапка канала и его биография это два разных документа. В шапке может быть красивая цифра, а в биографии столб из трёх тысяч подписчиков, пришедших во вторник ночью без причины. В Telegram Ads такая площадка покупает вам воздух: объявление показывается людям, которых нет. Рассказываю, по каким признакам я отличают накрутку за час разглядывания графиков, и почему один признак ещё ничего не доказывает. Читать далее

Как я воевал с Яндексом и решил проблему «мертвых душ» на диске

Статья посвящается недавнему сомнительному решению Яндекса уменьшить объём своего диска и жестоко покарать всех, кто посмел: впихнуть невпи
Наука - Хабрахабр

Как я воевал с Яндексом и решил проблему «мертвых душ» на диске

Статья посвящается недавнему сомнительному решению Яндекса уменьшить объём своего диска и жестоко покарать всех, кто посмел: впихнуть невпихуемое, не удалить старые файлы или просто не суметь разобраться в их «гениальном» интерфейсе и удалить снимки, которые не подчиняются абстракции файлов вообще. Ваш покорный слуга создаёт расширение, которое позволяет решить проблему. На превью то, кем он себя видит: грозным защитником угнетённых бабуль из бухгалтерии, в клетчатой рубашке инженера и с волшебным мечом. Читать далее

0.9 от вашего классификатора — это не 90%: почему модели врут о своей уверенности и как это чинить

Порог 0,8 часто воспринимают как 80% уверенности — и на этом строят автоматизацию. Разберём, почему predict_proba может врать, как измерить
Наука - Хабрахабр

0.9 от вашего классификатора — это не 90%: почему модели врут о своей уверенности и как это чинить

Порог 0,8 часто воспринимают как 80% уверенности — и на этом строят автоматизацию. Разберём, почему predict_proba может врать, как измерить калибровку модели и вернуть её вероятностям практический смысл. Читать далее

Агентный RAG, бенчмарк TRuST и при чём здесь Нафаня?

Тестирование агентного RAG на многошаговых задачах бенчмарка TRuST: эволюция архитектуры, сравнение моделей и правила работы с промптами для сл
Наука - Хабрахабр

Агентный RAG, бенчмарк TRuST и при чём здесь Нафаня?

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

Я попросил ИИ самостоятельно опубликовать мое приложение в App Store и ушел сочинять лампу

К началу июля я выгорел. Первую версию я дебажил несколько недель и в какой‑то момент понял, что в 47 раз запускать симулятор я не 
Наука - Хабрахабр

Я попросил ИИ самостоятельно опубликовать мое приложение в App Store и ушел сочинять лампу

К началу июля я выгорел. Первую версию я дебажил несколько недель и в какой‑то момент понял, что в 47 раз запускать симулятор я не готов. Наклепал скриншотов, сложил в папочку, показал Клоду и сказал: «Шурши и не булькай». Сам собирать вайбовую лампу дачную лампу из того что нашел в гараже. Вернулся через 2 часа. В браузере полностью заполненная форма App Store Connect и синенькая кнопка «Отправить на проверку». Нажал. Все сработало — первая версия приложения ушла на проверку в эпл. Сколько бы мне потребовалось времени, чтобы на работе организовать отправку приложения в стор? Я сидел и честно говоря был «поражен». ИИ управлял браузером, разобрался интерфейсе сайта, и нормально заполнил поля, о существовании которых я даже не думал. Через неделю я загружал следующую версию и решил сравнить, сколько времени на это уходит у меня самого. Не вышло вообще. Apple сыпала ошибками и душила всем чем могла: скриншоты определенного размера и формата, какие‑то подпункты, поля, про которые я не знал. Я считаю, что терпение это моя сильная сторона и его хватило на +‑ на 24 минуты. Потом я позвал Клода, у него весь процесс занял 10 минут.Вот после этого мне и захотелось рассказать историю целиком. Читать далее

Гант для РП, канбан для команды: как мы связываем OpenProject и PLANKA

У нас в компании давно живёт странная двойственность. Я как руководитель смотрю на проект сроками, вехами и деньгами. Разработчик смотрит на
Наука - Хабрахабр

Гант для РП, канбан для команды: как мы связываем OpenProject и PLANKA

У нас в компании давно живёт странная двойственность. Я как руководитель смотрю на проект сроками, вехами и деньгами. Разработчик смотрит на него колонкой «в работе». Это два разных языка, и переводчиком обычно работает статус-митинг на сорок минут, после которого никто не стал умнее.Мы пришли к схеме, где OpenProject остаётся инструментом верхнего уровня, а канбан-доска — рабочим местом команды. У нас в роли доски PLANKA: self-hosted, с OIDC через Authentik, живёт на нашем же контуре. Ниже —  как это устроено и, что важнее, где эта конструкция ломается. Я специально не буду обещать, что всё это собирается за вечер. Читать далее

DLL Sideloading через version.dll в WinSCP: порядок поиска DLL, прокси на Rust и перехват payload

DLL sideloading - это когда в каталог программы подсовывают библиотеку с тем же именем, что и нужная ей DLL. В результате Windows сначала цепляется именно
Наука - Хабрахабр

DLL Sideloading через version.dll в WinSCP: порядок поиска DLL, прокси на Rust и перехват payload

DLL sideloading - это когда в каталог программы подсовывают библиотеку с тем же именем, что и нужная ей DLL. В результате Windows сначала цепляется именно за неё и загружает её вместо системного файла. Этот приём по-прежнему работает, даже если включён SafeDllSearchMode, и недавно его использовали в атаках против FileZilla и CPU-Z.В статье я разбираю этот метод на примере WinSCP. Сначала делаю статический анализ: проверяю зависимости в Import Table и сверяю их со списком Known DLLs, чтобы сразу отсеять те варианты, которые загрузчик всё равно берёт только из системной папки. Затем провожу динамическую проверку в Procmon и смотрю, где именно загрузчик действительно ищет DLL. В финале - прокси-библиотека на Rust. Читать далее

Как я придумывал замену Redis и что из этого получилось

Некоторое время назад мне пришла задача спроектировать высокопроизводительный балансировщик нагрузки для протокола Diameter. Через 3 месяца за
Наука - Хабрахабр

Как я придумывал замену Redis и что из этого получилось

Некоторое время назад мне пришла задача спроектировать высокопроизводительный балансировщик нагрузки для протокола Diameter. Через 3 месяца задача исчезла, так как как оказалось слишком долго и дорого, но в итоге балансировщик был сделан и имеется его MVP которое готово к установке как на реальное железо так и в облаке. В итоге продукт получился неплохим, и он с лихвой выигрывал имееющееся решение в той компании, по производительности был выигрыш раз в 6 по ресурсам раз в 100. Но суть не в этом, а в том что балансировщик был кластерным и умел хранить сессии в Redis. Решение было сделано, оно показало работоспособность, все хорошо, но меня не устраивала производительность. В тот момент я столкнулся с очень интересной проблемой - по каким то причинам я не мог пробить барьер в 5-7К Diameter Transactions per second. В принципе 5-7К TPS было неплохо, но проблемным участком как показал анализ был Redis. Проведя немного времени я смог добиться приемлемого результать и производительность поднялась до 20К TPS но там были другие проблемы. Читать далее

Одна статья, 90 языковых версий и Google: как пет‑проект превратился в платформу

Я начинал с учебной социальной сети на Vue/Nuxt и NestJS, а в итоге собрал платформу, где одна публикация превращается в отдельные реда
Наука - Хабрахабр

Одна статья, 90 языковых версий и Google: как пет‑проект превратился в платформу

Я начинал с учебной социальной сети на Vue/Nuxt и NestJS, а в итоге собрал платформу, где одна публикация превращается в отдельные редактируемые версии на разных языках. Рассказываю о выборе LLM, культурных адаптациях, расчёте стоимости переводов, изменениях интерфейса после запуска и первых результатах индексации в Google. Читать далее

Двигаем PostgreSQL в сторону OLAP: оптимизация параллельного вычисления агрегатов

В данной статье я хочу рассказать о проверке одной гипотезы - возможности использования shared memory для ускорения параллельной агрегации методо
Наука - Хабрахабр

Двигаем PostgreSQL в сторону OLAP: оптимизация параллельного вычисления агрегатов

В данной статье я хочу рассказать о проверке одной гипотезы - возможности использования shared memory для ускорения параллельной агрегации методом хэширования. Статья Xu&Marcus, PVLDB, 2025 утверждает, что общая хэш-таблица — незаслуженно списанный со счетов способ параллельной агрегации, если использовать т.н. тикетинг и разделить операции поиска группы и обновления агрегата.Звучит завлекательно. Собираем в кучу свои знания Internals, подписку на Claude и, поскольку в период летних Heat Wave выходные всё-равно проходят дома под кондиционером - разрабатываем идею так глубоко, насколько это получится. Читать далее

Шиномонтаж методом Симпсона: как красивая статистика чуть не убила премиум-сервис

Что делать, если средний чек премиального автосервиса оказался в 4 раза меньше планового? Первое «очевидное» решение руководства — немедлен
Наука - Хабрахабр

Шиномонтаж методом Симпсона: как красивая статистика чуть не убила премиум-сервис

Что делать, если средний чек премиального автосервиса оказался в 4 раза меньше планового? Первое «очевидное» решение руководства — немедленно избавиться от дешёвой мелочёвки вроде сезонного шиномонтажа и хранения колес, которая перегружает мастеров и портит красивую статистику.Звучит логично? Абсолютно. Вот только глубокий дата-анализ показал, что такое «оптимизаторское» решение лишило бы компанию доброй трети валовой выручки.В этой статье мы разбираем реальный кейс анализа массива из сотен тысяч заказов за 10 лет работы крупного автодилера. Разберем обработку данных в Python (Pandas/Seaborn), столкнемся с Парадоксом Симпсона в действии и рассчитаем честный LTV клиентов. Вы узнаете, как сезонная переобувка работает в роли «троянского коня» и почему клиенты с шиномонтажом за свой жизненный цикл приносят компании в 3.1 раза больше денег. Читать далее

Нейросетевая архитектура формирования автоматических навыков. Часть 1

Идея предлагаемой архитектуры возникла из наблюдения за тем, как человеческий мозг осваивает новые действия и превращает их в привычки.Когд
Наука - Хабрахабр

Нейросетевая архитектура формирования автоматических навыков. Часть 1

Идея предлагаемой архитектуры возникла из наблюдения за тем, как человеческий мозг осваивает новые действия и превращает их в привычки.Когда человек впервые сталкивается с незнакомой задачей, её решение требует сознательного внимания. Необходимо сосредоточиться, попробовать один или несколько вариантов, получить обратную связь и скорректировать поведение. Однако после многократного успешного повторения действие постепенно становится автоматическим и выполняется практически без участия сознания.В общем случае наш мозг работает по принципу «стимул-желание-реакция-подкрепление». Этот принцип хорошо описывается в книге Джеймса Клира «Атомные привычки», что и вдохновило меня на создание подобной архитектуры.Хороший пример — обучение вождению. Начинающий водитель отдельно контролирует положение педалей, переключение передач, поворот руля и дорожную обстановку. По мере накопления опыта значительная часть этих операций превращается в привычку и начинает выполняться автоматически.Прямо во время написания статьи я сдаю на водительские права, так что мне везёт воочию наблюдать как обучается моя собственная «нейронка».Предлагаемая архитектура переносит этот принцип в систему из нескольких простых нейронных сетей. Незнакомые входные данные сначала обрабатываются «сознательной» сетью. После получения правильного ответа и положительного подкрепления генеративная сеть создаёт множество похожих примеров. На них дообучается «подсознательная» сеть, после чего сходные ситуации начинают обрабатываться быстро и автоматически. Читать далее