Как не надо строить документацию: история одного парсера HTML
Как мы пытались обмануть Doxygen, переделать его разметку под наши стандарты и почему это привело нас к созданию собственного движка.
Как Flude вырос из одноразового скрипта в самостоятельный движок документации — по одной архитектурной ошибке за эпизод.
Как мы пытались обмануть Doxygen, переделать его разметку под наши стандарты и почему это привело нас к созданию собственного движка.
Как мы пытались парсить XML, почему ИИ внезапно потянул за собой tree-sitter и почему контроль важнее гениального кода.
Почему проще переписать ИИ-код с нуля, как тесты стали нашим контрактом и как заставить нейросеть саму писать для себя проверки.
Как один вопрос от Infrastructure Lead заставил нас переписать пайплайн документации, отказаться от HTML и случайно создать Flude.
Корпоративная инфраструктура, отпуска коллег и медленные инструменты заставили нас построить независимый CI/CD пайплайн. Рассказываю, как ИИ помог освоить YAML за пару вечеров.
Написать быстрый генератор документации — это весело. Легализовать его в кровавом энтерпрайзе — та еще задача. Рассказываю, как мы доказывали надежность Flude, сравнивая его со старым стандартом.
Мёртвые кросс-ссылки между рукописными гайдами и страницами автосгенерированного API быстро объяснили, почему решение вести гайды в стороне от Flude, чистым Markdown, было ошибкой.
Старая универсальная модель хранила данные как бесформенные строки, что приводило к тихим потерям информации. Мы переписали ядро на строгие типы, заменив тихую деградацию на громкие ошибки валидации.
Никакой драмы с падением прода — только курьёзная и показательная находка. Прогнали автономный ИИ-аудит по ядру движка и наткнулись на условие, которое гарантированно выполняется всегда.
Как мы за один присест распутали монорепозиторий из пяти репозиториев — и чему нас научил единственный на весь аккаунт Cloudflare-токен.
Рабочее название движка оказалось занято брендом отладчика микроконтроллеров. Мы перебирали короткие варианты с подстрокой ude, одновременно оценивая благозвучие, чистоту и продвигаемость.
Каждая пересборка гоняла Doxygen и парсинг XML заново, даже если ничего не изменилось. Двухуровневый кэш на двух отпечатках эту боль снял. Но название неслучайно с подвохом: реальную скорость он дать не может, потому что кэшировать умеет только то, что вообще можно пропустить целиком.
Трижды наш сервер падал от нехватки дискового пространства. История о том, почему нельзя делегировать управление файлами Garbage Collector'у.
Что делать, если парсер генерирует документацию для класса, которого не может найти глобальный текстовый поиск по всему репозиторию? История одной ложной паники.