Re[41]: Догонит ли net java?
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.12.22 10:35
Оценка:
Здравствуйте, ·, Вы писали:

·>Это видимо только ты не понял у кого проблемы. Проблема у Ночного Смотрящего, с которым я тут непосредственно беседую. Именно он перебрал кучу кодогенераторов, плюнул и предложил писать всё ручками.


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

P>>Если это про OpenApi, то с ним большие проблемы. О чем и речь.

·>Т.е. твой вариант — не использовать никакой openapi и весь код писать руками, как деды завещали и Ночной Смотрящий делает. Так? Или какую альтернативу ты предлагаешь?

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

P>>При чем независимо от того, генерируешь ли ты манифест, или задаёшь руками.

·>Очень даже зависимо. Вручную сделанный openapi проще поддерживать во вменяемом состоянии.

Как мы выяснили, у OpenAPI проблема не с манифестом, а с кодогенерацией.
Поскольку кодогенераторы для OpenAPI кривые, шо сабля, то тебе надо точно знать фичи кодогенератора, и избегать лишнего в манифесте
В противном случае лишняя строчка в манифесте или сломает клиент, или сломает сервер, или просто проигнорится
И то, и другое, и третье есть проблема
Поэтому в своём уме никто манифест OpenAPI руками не набивает.

P>>Заявление "на проде проблем нет" сводится к неполному профессионализму. Лучше отказаться от предположений "у нас на проде проблем нету", и рассмотреть риски и способы управления ими.

·>Ты как-то упустил слово _таких_. Этот подход решает вполне определённый класс проблем. Но, ясен пень, не решает все проблемы.

А раз не решает все, то часть останутся на проде. Гы-гы. Откуда и следует, что нужно тестировать и прод. Например — при обновлении 3rd party зависимостей.

P>>Соответственно если у тебя есть тесты прода — пусканул после обновления их сервиса, выявил проблемы, и до того, как юзеры проснулись, уже всё пофиксано.

·>Чтобы пускануть тесты в проде и выявить эту проблему, в этом самом проде уже должно оказаться их обновление.

Алё — они поменяли свой сервис глядя в свои тесты. И подломали некоторые запросы твоего сервиса.

·>И выкатил в прод без тестов интеграции с вами? Так тут проблема в том, что кто-то что-то выкатывает в прод без тестов.


Это норма, а не проблема. Крупные вендоры апи имеют десятки и сотни тысяч консумеров. Ты для них один из сотен тысяч.
Например, ты заюзал sendgrid или mailgun. Они трохи обновились. Ты же фанат емейлов и всё такое. И вот после их обновления часть ваших юзеров перестала получать уведомления. Гы-гы.
Пускаешь тесты прода и видишь, что емейлы таки глючат. Опаньки!

P>>То есть, вы не смогли промигрировать код на нужную версию яп — всё, большой проект, оло-ло-ло-ло!

·>Что значит "не смогли"? Тут всё просто. Бюджета нет, проект в состоянии EoL, команду разогнали — никто мигрировать не будет. Ты в большой организации никогда не работал? +100к работников чтобы...

Тогда это не признак большого проекта, а скорее признак тухлого проекта, который еле держится на плаву.

·>Совершенно верно, и не поспоришь — лучше быть здоровым и богатым, чем больным и бедным. Ну так бери проверенное протестированное решение и в contract-first с openapi, я разрешаю.


Мы уже выяснили — бредогенераторов для openapi 100500 единиц, и почти все из них или не подходят, или их нельзя использовать
Типичный кейс — понадобилась некоторая фича, а кодогенератор не поддерживает, приплызд

P>>В лучшем случае, я уже сказал, генератор не нужен. Он необходим только для экспорта АПИ.

·>Продолжай. Что за экспорт АПИ? И что с результатом экспорта потом делать?

Экспорт АПИ — это ты предоставляешь АПИ своего сервиса внешним консумерам.

P>>Ты описал типичную картину для OpenAPI, независимо от того, генеришь манифест, или пишешь руками.

·>Очень даже зависимо. Т.к. цепочка жонглирования становится короче и количество сущностей уменьшается (не нужно писать метаданные, не нужен их парсер и схемогенератор).

Теоретик?
1 Тебе надо держать в уме возможности кодогенератора. Заюзал ты ResponseHeaders, а у тебя такое не поддерживается. Гы-гы.
2 Метаданные парсить не нужно, это типизированый интерфейс, по которому генерить что угодно легко и просто.
3 Вместо схемогенератора у тебя кодогенератор, при чем — два штуки, каждый со своими особенностями, клиент и сервер.

P>>·>Схема должна быть проще:

P>>·>spec --[generator1]--> code1
P>>·>spec --[generator2]--> code2
P>>Если под spec взять OpenAPI, то получим геморрой, который ты сам же описал выше.
·>Что значит "взять"? У тебя оно уже вроде есть, но генерится.

"Взять" — подставляем вместо spec в твоей форумуле успеха OpenAPI, и проверяем твою гипотезу
И оказывается, что именно здесь получается бред, который ты сам же и описал.

P>>Приплызд!

·>А абсолютно всемогущий безбажный генератор спеки из развешанных метаданных вам бог ниспосылает. Счастливчики, не всем так везёт, вот Ночному Смотрящему и тем погромистам из restapi.moedelo.org не повезло, например.

С генератором спеки гораздо проще. Кодогенератор это намного более сложная задача.
Я например писал и то, и другое. Кодогенератор это хтонический ужос по сравнению с генерацией джсон по метаданным.

P>>Это проблема — пока найдешь нужную комбинацию, вспотеешь. А если у тебя уже готовый проект, то втиснуть него нечто иное не факт, что выйдет.

·>А сгенерить нечто полезное почему выйдет из произвольно написанного готового проекта на произвольном фреймворке?

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

P>>И тут приходится писать кодогенератор самому, т.к. другого выхода нет.

·>Так же придётся писать спекогенератор, что Ночной Смотрящий рассуждал 2 года назад: "большая работа, включающая допиливание swashbuckle на предмет добавления в swagger.json дополнительной метаинформации о семантике методов".

Он пишет про другое — ты внимательно прочитай.

P>>С чего ты взял, что доработаешь? Фантазии? Использовать или доработать напильником мешает

·>С того, что это тупо шаблончик типа mustache, результат работы которого надёжно проверяется компилятором.

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

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


Наоборот — генераторы приходится писать, потому что они в основной массе ни на что не годятся. Берешь генератор кода, и вдруг оказывается, что в генеренном коде нужен хук для инструментирования.
А его нет. Гы-гы. Надо писать новый генератор, потому что допилить напильником не выходит из за GPL лицензии.

> На порядок проще, чем придумывать и развешивать метаданные, добавлять дополнительную метаинформацию, обрабатывать всё это дело и пытаться сгенерить хоть что-то полезное из этого, именно поэтому лишь "чисто теоретически я знаю как все таки сделать нормальный генератор".


Еще раз — не надо придумывать метаданные. Алё, ты вообще читаешь? Берем проверенную либу, закладываемся на её возможности.

P>>1. например лицензия, GPL какой

P>>2. архитектура генератора, где всё огорожено забором
P>>3. сложность этого генератора, например, отсутствие тестов. Гы-гы.
·>Ровно эти же проблемы могут быть и у твоего схемогенератора.

Нисколько. Схемогенератор это простая вещь по сравнению с кодогенератором.

P>>То есть, твоя "доработка" по сложности даст примерно то же, что генерация JSON по метаданным. Примерно та же сложность сопровождения, примерно то же количество тестов.

·>Это неправда. Более того, тебе придётся такой генератор писать в любом случае, если ты хочешь хоть как-то использовать спеку.

Снова теоретизирования Нам нужно проверить, что схема валидная. Мы берем готовый тул, который умеет слать запросы по такой спеке, и пишем под него тесты. Здесь у нас ровно 0 генеренного кода.

> Единственное как можно "решить" эту проблему, это сваять какую-нибудь хрень, вывалить сгенерённую спеку клиентам и сказать, что это их проблема что они потом будут с ней делать. Это именно то, что сделали погромисты тут
Автор: varenikAA
Дата: 07.09.20
.


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