Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 16 min 44 sec ago

Anti-corruption Layer на C#: три шва на проекте миграции с Rails

56 min 42 sec ago

Anti-corruption layer в учебниках выглядит как одна аккуратная коробка между чужой системой и вашей: всё чужое остаётся снаружи, внутрь проходит только то, что уже переведено на язык вашего домена. Граница ровная, как по линейке. Почти за год, что мы вытесняли 10-летний Rails-монолит на .NET, такой ровной границы я не увидел ни разу – ни у себя, ни, кажется, у кого-то ещё на живом проекте.

Понятно это стало в первую же неделю. Мы открыли таблицу exercises и нашли в одной JSONB-колонке 14 разных форм одного типа задания, слепленных за 10 лет. Смаппить это в новые DTO как есть – и новая модель отрастит ровно ту же форму, что у Rails. “Нужен ACL”, подумали мы. Только, как выяснилось на практике, не один.

Читать далее

Иллюзия легких денег: почему американский API не быстрее активов, торгуемых на Московской бирже

3 hours 21 min ago

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

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

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

Как устроен ГИГАХРУЩ: клеточный мир, WebGL-рейкастер и A-Life без движка

5 hours 16 min ago

В прошлой статье про ГИГАХРУЩ мы показали игру как живой weird-проект: браузерный survival horror / ARPG без движка, ассетов и спокойной жизни.

С тех пор проект уже стал заметен в локальном инди-комьюнити: в него играют, о нем спорят, его архитектурные решения стали отдельной темой. Поэтому этот текст не питч и не просьба оценить демку. Это инженерный разбор проекта, который уже обрастает сообществом: где данные, где системы, где рендер, что хранится постоянно, что материализуется, почему мы не берем готовую mesh-сцену и как все это держится в браузере.

Разберем, как ГИГАХРУЩ устроен под бетоном: один активный клеточный этаж, typed arrays, плоские сущности, WebGL raycasting, A-Life, самосбор как мутация мира, сохранение, ограничения и MESH PASS как render-only объем поверх клеточной симуляции.

Читать дальше

REDB: индексы, или почему на любую схему — это быстро

6 hours 24 min ago

В предыдущей части цикла разобрали 13 таблиц REDB: как устроены objects, values, structures, как RTTI-хранение значений отличается от старого EAV-паттерна, зачем нужен scheme_metadata_cache. Если не читали — начните с неё, без понимания схемы дальше тяжело.

В этой статье — то, что обычно идёт следующим вопросом: «А индексы где? У вас же значения всех полей лежат в одной таблице. Любой WHERE — это Seq Scan по миллионам строк».

Это статья 1.1, а не 2 — потому что она прямое продолжение разговора про физическое хранение. Глубокое погружение в C# — это статьи 3-5 цикла: Code-first схемы (SyncSchemeAsync<T>), CRUD (SaveAsync/LoadAsync), LINQ-транслятор. Здесь разговор остаётся в плоскости БД и DDL.

Цифры, на которые опираемся, — с реального прода: TSUM, логистическая система, обслуживает движение грузовиков и заказов через РЦ.

Читать далее

Отладка bash-скриптов: инструменты, о которых мало кто

6 hours 39 min ago

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

Скрипт мониторинга написан и работает. Теперь поговорим о том, что делать, когда он перестаёт работать или ведёт себя странно. Я собрал инструменты и приёмы, которые реально меняют то, как работать с bash. Не абстрактный список из документации, а вещи которые я использую сам и которые несколько раз спасали в ситуации «скрипт упал на проде, надо найти за пять минут».

Для тех, кто спешит: быстрая шпаргалка

Читать далее

OBTF + AI -&gt; WTF? (новая\старая система личной продуктивности)

7 hours 10 min ago

Система продуктивности Один большой текстовый файл OBTF - исследуем какие фишечки можно навесить концепцию в эпоху ИИ.

Читать далее

Конечный автомат инкрементного энкодера

7 hours 40 min ago

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

Читать далее

AI B2B SaaS с нуля: что стоит между MVP и продуктом

8 hours 8 min ago

Привет! Меня зовут Дмитрий. Я делал несколько проектов в разных сферах, но все они заканчивались на стадии MVP, хоть и по разным причинам: идея стала никому не нужна, команда выгорела или не хватило скиллов довести до результата.

Поэтому новый проект я начал с намерением дойти до реального работающего продукта с клиентами.

Первое с чего я начал — поиск идеи. Тут есть разные подходы, но один из тех что точно работает: решить боль свою или кого-то из близкого окружения. И если таких людей будет много, то идея стоит усилий.

Читать далее

C++101

8 hours 10 min ago

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

Большинство этих примеров родилось в эпоху до C++11, когда у языка ещё не было ни умных указателей в стандарте, ни move-семантики, ни constexpr, ни концептов, и приходилось руками собирать из шаблонов и перегрузок некоторые кострукции, которые в более поздниях стандартах язык даёт почти бесплатно. Многие идиомы, примеры и идеи стоит читать в двух смыслах сразу, как исторический артефакт, объясняющий «почему старый код выглядит вот так», и как живой приём, который всё ещё применяется в движках и играх.

Разработка игр тут не случайно, потому что игровой движок это обычно место, где абстракции встречаются с профилировщиком, и проигрывают ему чаще, чем хотелось бы. А легаси паттерны цветут и пахнут из-за чьих-то забытых в углу костылей, но большинство вещей вполне правильны, применяются и спасают от ошибок. Многое из этого спрашивают если не дословно, то хотя в паре слов, хорошие лиды на собесе, перед тем как позвать вас в команду, и просто взяв рандомо 5-6 пунктов можно составить впечатление, сталкивался ли новый человек с определенными проблемами.

Когда я собирал оглавление Game++, раздел про идиомы, идеи, паттерны и механизмы C++ планировался шестым и завершающим, и должен был занять страниц сто, по одной на каждый пункт, но чем дальше я собирал материал, тем яснее становилось, что каждая секция тянет за собой историю, а каждая история требует контекста, а каждый контекст в игрострое никогда не бывает простым. В итоге текст разросся до размеров, при которых он просто сломал бы структуру книги, и мне пришлось выбирать между «урезать до неузнаваемости» и «отпустить жить отдельно». Пришлось выбрать второе.

Перед вами то, что могло бы стать половиной Game++, но стало самостоятельным материалом. Здесь собраны идиомы, идеи, паттерны и механизмы C++, которые сложились в сообществе за несколько десятилетий и продолжают жить в кодовых базах игровых движков, иногда под своими именами, иногда под другими, иногда вообще без имён, потому что их давно перестали объяснять. У большинства имена все же есть, есть и история с ответом почему именно так, а не иначе.

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

Читать далее

Паттерн экономии токенов в Claude Code на правке файлов

8 hours 11 min ago

Как обычно, я сидел и думал, как бы уменьшить расходы токенов в Claude Code.. Рефлексировал содержимое сессий, исследовал вместе с самим Claude Code и наткнулся на интересную штуку.
Сначала я было хотел написать свой писатель файлов из под клода, вместо Write. Но подумал, что это будет слишком напряжно, если делать это в клоде, поддерживать, и так далее.
Но для редактирования файла его надо читать(обязательно! Как минимум в Claude Code) - что логично. Вопрос: а сколько его надо читать? Конкретно сколько строк его надо читать? Теоретически весь? А практически? Для замены, к примеру, одной строки?!
И да, Read читает по-разному, Но всегда больше одной строки(мелкие файлы читаются за один Read)..Ок, а обязательно ли для редактирования читать весь файл(или куски)? И вот вот тут-то нас ожидает сюрприз! Для снятия "защиты" файла от редактирования (в сессии Claude Code) достаточно прочитать ОДНУ строку указанного файла:):)
Если у тебя есть средство поддержки актуальности теста файла(я намекаю на code-index), то снятие гейта в модели будет выглядеть примерно как:

(кусок кода сессии)

Read C:\MCP-Servers\code-index\Cargo.toml (lines 2-2)

Read C:\MCP-Servers\code-index\CHANGELOG.md (lines 2-2)

Read C:\MCP-Servers\code-index\CHANGELOG_EN.md (lines 2-2)

Read C:\MCP-Servers\code-index\README.md (lines 2-2)

Read C:\MCP-Servers\code-index\README_RU.md (lines 2-2)

(это я готовил к выкладке очередной апдейт code-index.
Почему (2-2)? Сам не знаю, в промте указано (1-1), но везде модель ставит 2-2. Тайна сия великая есть:)).

И потом просто в темпе пулемета вызываются команды Edit.

Следовательно, в контекст тебе НЕ сыпятся куски файлов(которые тебе не нужны), и контекст остается максимально чистым.

Читать далее

[Перевод] Структурированная разработка на основе промптов

8 hours 29 min ago

Как сделать изменения, вносимые с помощью LLM, управляемыми, проверяемыми и воспроизводимыми.

Программные ассистенты LLM продемонстрировали значительную ценность, но в основном для отдельных разработчиков. Внутренняя ИТ-организация Thoughtworks использует их для своих команд и разработала метод и рабочий процесс, называемый структурированной разработкой на основе промптов (Structured Prompt-Driven Development, SPDD). В одноименной статье Вэй Чжан и Джесси Цзе Ся, опубликованной на сайте Мартина Фаулера, описывается простой пример этого рабочего процесса с подробностями на GitHub. Этот рабочий процесс рассматривает промпты как артефакт первого класса, хранящийся вместе с кодом в системе контроля версий и используемый для согласования разработки с потребностями бизнеса. Авторы обнаружили, что разработчикам для эффективной работы необходимы три ключевых навыка: согласованность, подход «сначала абстракция» и итеративный анализ.

Читать далее

Экономическая безопасность и ИИ

Mon, 06/08/2026 - 23:49

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

Казалось бы, сколько можно писать про ИИ, но здесь действительно помогло и гармонично влилось в процесс. При этом я убежден, что ИИ в большинстве случаев может сэкономить время, но не деньги, а половина красивых проектов (точнее рассказов про них) с ИИ - не окупились.

Читать далее

Neurotopia: может ли ИИ помочь талантам находить свою аудиторию?

Mon, 06/08/2026 - 23:33

Когда мы говорим об успехе творческих проектов, часто обсуждают качество работы, талант автора или удачную идею.

Но на практике между созданием продукта и его признанием лежит огромный пласт задач, которые не имеют прямого отношения к творчеству:

Читать далее

Анализ САУ гребной дизель-электрической установки

Mon, 06/08/2026 - 22:55

В данной статье рассмотрена модель корабельного привода который состоит из дизельной установки, генератора и электродвигателя вращающего винт, модель построена с помощью Engee

Читать далее

А вам точно нужна видимость в нейровыдаче поисковых систем?

Mon, 06/08/2026 - 22:50

Последние месяцы я наблюдаю одну и ту же картину. Бизнес массово бросился оптимизировать сайты под нейросети, число запросов по теме GEO-оптимизации в Wordstat за январь 2026 года выросло в тысячу раз год к году. Внутренняя аналитика Morizo фиксирует рост спроса на текстовую модернизацию сайтов на 27% за квартал. Пока весь рынок переписывает контент под ИИ-ассистентов, я предлагаю остановиться и задать неудобный вопрос: а вашему бизнесу это вообще нужно?

Читать далее

Как сделать свой сервис распознавания голоса вместо PLAUD и закрытых ИИ-диктофонов

Mon, 06/08/2026 - 22:45

Звук сегодня является важным интерфейсом. Работа с чат-ботом своей "ИИшечки" упрощается в разы. Кроме того, помимо вайб-кодинга - есть еще и обычная жизнь - с совещаниями, лекциями, собраниями, которых столько, что не успеваешь фиксировать все, о чем было обсуждение. С этими мыслями, а также увидев потрясающий по своей внешней эстетике приборчик - был заказан ИИ-диктофон PLAUD. Но. Ограничения для России такие, что заплатить за сервис (ок 20 тыс. руб.) - не получилось. Но, уже появилось желание и даже потребность в удобном цифровом распознавании. Конечно, были установлены все простые приложения на телефон, а также распознавание в Telegram, но все это было не то. Сформилировал требования, которые у меня есть:

Читать далее

Про индустрию преподавания языков

Mon, 06/08/2026 - 22:08

Для тех, кто уже читал: переписана 2-я часть (после чёрточки).

Помните огромную школу английского English First (EF)? В нулевые в одной только Москве было больше ста филиалов. Цены были высокие, но бедные семьи буквально на последние деньги отправляли детей туда учиться. Такой бизнес был… чё ж развалились-то?

В последние годы своего господства EF стали символом некачественного преподавания. У репетиторов, которые непосредственно занимались реабилитацией пострадавших, «инглишфёрст» было ругательным словом. Плохие отзывы офлайн, восторженные – онлайн, реклама повсюду. Репутация догнала их и раздавила: в начале 20-х от былого хайпа оставалось лишь несколько филиалов.

В те же годы в Москве была популярна школа Speak Up. Тоже много сияющих офисов, дорого, бестолково + они прославились совсем уж нечистоплотными практиками отъёма денег у населения. После их закрытия был большой скандал, даже с коллективными исками.

Есть похожие истории про ещё существующие школы, но о них я помолчу.

Итого. Эти две школы ограбили невероятное количество людей, но годы идут, а ни особых комментариев, ни аналитических статей с серьёзным осмыслением произошедшего я как-то не заметил. Поэтому многие даже не поняли, что их ограбили – просто тихо решили, что «языки – не моё». Что это было? Как такое удалось провернуть?

В этих школах учились глупые люди? Не только. В них училось много умных людей, некоторые даже в обеих. В Москве вообще максимальная концентрация толковых, развитых людей: лучшие ВУЗы + лучшие специалисты исторически съезжаются, знакомых экспертов подтягивают с периферии. Дело не в критическом мышлении – им просто сказали то, что они хотели услышать. Нам всем ведь очень, очень хочется однорукого экономиста простых, понятных решений.

Читать далее

Security Week 2624: троян в хентай-играх

Mon, 06/08/2026 - 22:00

Исследователи «Лаборатории Касперского» опубликовали подробный разбор вредоносного ПО Argamal, распространяемого на специализированных ресурсах вместе с хентай-играми. Данная вредоносная кампания была обнаружена в этом году, хотя некоторые связанные с ней DLL-файлы существовали как минимум с 2024 года.

Игры с вредоносным довеском, как правило, заливались на публичный файлообменник, ссылки на который публиковались на тематических веб-сайтах. Распространялись они и через торрент-трекеры. Во всех случаях это был архив с полностью функциональной игрой, которая дополнялась модифицированной библиотекой ffmpeg.dll.

Читать далее

Как я сжёг 17,4 миллиарда токенов за 25 дней. По тарифам API это 3,2 миллиона рублей. IT приходит конец

Mon, 06/08/2026 - 22:00

В конце цикла я прогнал скрипт по своим логам Claude Code и увидел число, в которое сам не сразу поверил. За 25 дней, с 24 апреля по 19 мая, я сжёг 17,4 миллиарда токенов. Один человек, 344 сессии, 75 587 ответов ассистента, 176 695 строк транскриптов. Посчитайте это по тарифам API, и выходит 39 651 доллар. Около 3,17 миллиона рублей. Примерно 1586 долларов в день. Почти всё это Opus, самая дорогая модель на рынке.

Читать далее

Преобразование Фурье в цифровой обработке сигналов. Часть 1: Дискретное преобразование Фурье (ДПФ)

Mon, 06/08/2026 - 21:21

В этой статье мы начинаем погружение в одну из фундаментальных тем цифровой обработки сигналов (ЦОС) — дискретное преобразование Фурье (ДПФ). Именно ДПФ служит математической основой для понимания более сложных методов спектрального анализа и является отправной точкой для изучения всех остальных видов преобразования Фурье в ЦОС. Будет рассмотрено ДПФ действительных сигналов.

Материал построен так, чтобы объединить теорию, наглядные графики и практический код на Python.

Тема преобразования Фурье в ЦОС обширна и многогранна, поэтому я разбил материал на несколько частей. В первой части мы сосредоточимся на базовых принципах, интуитивном понимании алгоритма и его реализации.

Краткое содержание статьи. Часть 1

В ней поэтапно разбираются фундаментальные понятия, необходимые для понимания ДПФ:

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

Корреляция и ортогональность функций — ключевые понятия, лежащие в основе ДПФ. Именно эти свойства позволяют разложить сложный сигнал на отдельные частотные составляющие.

Зависимость корреляции от сдвига фазы — на примерах показано, как изменение фазы влияет на результат скалярного произведения и почему это важно для анализа сигналов.

Формула ДПФ — финальный этап, где все изученные понятия сводятся к классической формуле дискретного преобразования Фурье.

Читать далее

Who's online

There are currently 0 users and 5 guests online.