TGViewer
nikalexxx nikalexxx @nik_alex_flow · 479 subscribers
Post #596 745
Несомненный плюс пет-проектов в том, что там не обязательно следовать всем правилам расширяемого кода и можно захардкодить решения. Мне не подошёл опенсорсный protoc плагин к mongo, так как требовал указания аннотаций, поэтому я написал свой.

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

Но есть и особенности, например нет многих хелперов (или я плохо искал), поэтому например proto сообщение для map я ищу в файле просто двумя циклами (даже не рекурсией), так как у меня нет вложенных message (первая картинка).

Для шаблонов использовал классический text/template, на второй картинке результат кодогенерации, на третьей кусок шаблона для этого кода.

Это написал я на прошлых выходных, потому что стало много grpc сервисов и надоело перекладывать руками. Могу сказать, что писать плагины для прото таким способом совсем несложно, особенно под себя. У меня например шарятся enum, убираются указатели кроме optional полей и перекладывается поле id для монговского _id. По итогу просто вызываю метод ToProto() и радуюсь жизни.

Наверно в каком-нибудь zig (или даже rust с его макросами) это всё удобнее. Но так как писать кодген очень быстро, текущее решение мне вполне подходит. Хотя потом там особенности возникают на стыке кодгена и дженериков (ограничения на параметры дженериков элегантно не написать, нужно догенерить небольшую функцию обёртку, которая через аргументы делает switch case).
  • 👍 4
  • 👏 1
More from @nik_alex_flow
  1. Sep 10, 2026Я наконец-то надел эту фиолетовую жилетку) В прошедшую субботу на https://deeptechnight.ru…
  2. Aug 26, 2026Визуализация квантовой хромодинамики готова 🎉https://nikalexxx.github.io/?/physics/qcd В…
  3. May 26, 2026Это были не просто красивые фракталы, а настоящее программирование. По сути мы на фестивал…
  4. May 25, 2026Фестиваль прошёл отлично! Так много незнакомым людям про графы я ещё не рассказывал 😃 У м…
  5. May 17, 2026Фрактальная Одиссея Полвека назад Мандельброт придумал слово «фрактал». В честь этого 23 м…
  6. May 17, 2026В следующую субботу на фестивале "Фрактальная Одиссея" будет мой стенд про эволюцию графов…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →