Re[44]: Догонит ли net java?
От: · Великобритания  
Дата: 16.12.22 14:26
Оценка:
Здравствуйте, Pauel, Вы писали:

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

P>·>Угу. Так используй проверенную оттестированную либу для кодогенерации. Кто запрещает-то?
P>Отсутствие таких в природе с силу принципиальной сложности кодогенерации.
Я ими пользовался. Работает хорошо, если схема вменяемая.

P>·>И чем поможет схемогенератор?

P>Генератор схемы это не какая нибудь сложная вещь, легко покрывается тестами, в отличие от кодогенератора.
P>Когда имплементишь апи, то эту часть и так нужно покрыть тестами, что естественно.
Вообще элементарно. Результат кодогенерации очень надёжно тестируется компилятором.

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

P>·>Нет, не следует.
P>У тебя снова нет аргументов, поздравляю!
Ну не следует и всё тут. Достаточно тестировать тестовое окружение.

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

P>>> Алё — они поменяли свой сервис глядя в свои тесты. И подломали некоторые запросы твоего сервиса.
P>·>Это и лечится SIT.
P>Не лечится. Напомню — у вендора таких как ты 100500 контрактов. Тестировать как их новое апи ведет себя с каждым из консумером они никак не могут.
P>Максимум, для особых кейсов могут предоставить тестовые инстансы.
Этого достаточно.

P>Но это не гарантирует решение всех проблем.

А что гарантирует решение всех проблем?

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

P>·>Про conformance tests я уже тоже рассказывал.
P>Ты же не собираешься запускать их на проде. А значит будешь тестировать "юзером".
тестовым юзером.

P>>>Пускаешь тесты прода и видишь, что емейлы таки глючат. Опаньки!

P>·>Нормальные вендоры предоставляют средства для тестирования. Ищем для первого упомянутого: https://docs.sendgrid.com/ui/sending-email/email-testing
P>Именно такие тесты и нужно пускануть после обновления с их стороны. Альтернатива — "у нас багов нет", это твой любимый вариант.
Только это не прод, а тест.

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

P>·>И что?
P>Ты говоришь про большой проект, а под признаки подходит любой, где нет денег. Например — 1 человек работает вместо команды и кое как справляется, на миграцию денег-времени нет.
Вот только что свежачок
Автор: Ночной Смотрящий
Дата: 16.12.22
от Ночного Смотрящего: "уже год пытаемся с 3.1 слезть, но пока только отдельные сервисы переползли". Вот и расскажи ему какой у него тухляк и денег у них нет и научи его жизни.

P>То есть, ты просто накидываешь абы что.

Это не накидывание, а реальность.

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

P>·>И? В чём твой солюшн-то?
P>Я ж сказал — исключить кодогенерацию, оставить генерацию схемы для внешних консумеров, если у них платформа отличная от твоей.
Ты расскажи. Зачем схема внешним консьюмерам?

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

Не распарсил. Что автоматически?

P>>>Типичный кейс — понадобилась некоторая фича, а кодогенератор не поддерживает, приплызд

P>·>Я сам их подпатчивал и даже пулл-реквесты засылал, мелочёвку правда, и их даже мержили, не рокет-сайнс совершенно.
P>Именно что мелочевку. А что делать с большими фичами-багами — не ясно.
P>Обилие кривых кодогенераторов гарантирует затраты времени на выбор подходящего.
Брад какой — "слишком много выбора, значит плохо". Ну не выбирай, напиши свой. Это вполне под силу даже миддлу.

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

P>·>Хорошо, уже теплее. Ради чего стараться-то? Что внешние консьюмеры будут с этим твоим экспортированным АПИ делать будут?
P>Что им надо делать, то и будут.
Ясно. Проблемы консьюмеров шерифа не волнуют. ЧТД.

P>>>1 Тебе надо держать в уме возможности кодогенератора. Заюзал ты ResponseHeaders, а у тебя такое не поддерживается. Гы-гы.

P>·>То же и со схемогенератором. Или он у тебя универсальный всемогутер?
P>Схемогенератор это вещь намного проще. Типичный разработчик искаропки умеет генерировать json по набору данных, все приложения состоят из такой логики. А вот внятную кодогенерацию сделать — это вещь нетривиальная.
Гораздо проще. Валидировать сгенерённый код можно компилятором. Валидировать генерённый json и по каким критериям — не знаю как.

P>>>2 Метаданные парсить не нужно, это типизированый интерфейс, по которому генерить что угодно легко и просто.

P>·>А надо-то генерировать не что угодно, а только то, что умеет openapi.
P>В слова решил поиграть?
Нет. Пытаюсь достучаться. Ты должен писать такие метаданные и такой интерфейс, который хорошо ложится в openapi. Иначе то что нагенерится будет коту под хвост.

P>>>3 Вместо схемогенератора у тебя кодогенератор, при чем — два штуки, каждый со своими особенностями, клиент и сервер.

P>·>У тебя не просто схемогенератор, а схемогенератор+кодогенератор. Иначе генерить схему без последующей кодогенерации — зря электричество жечь.
P>Мне нужна генерация схемы + тесты по этой схеме. Тестировать конкретным генереным клиентом в корне неверно.
Ты так и не рассказал зачем нужная эта схема.

P>·>Сделать два кодогенератора проще, чем схемогенератор+кодогенератор.

P>Нужен только схемогенератор — апи будет тестироваться не абы чем, а конкретным тулом который умеет openapi.
Зачем? Чтобы что?

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

Не важно. Можно взять несколько самых популярных, попробовать самому и оформить в виде туториала для новых клиентов.

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

P>·>Спекогенератор без кодогенератора не нужен.
P>Ты так и не сказал, зачем кодогенератор есть уже есть генератор спеки.
Сказал уже много раз. Ты просто не читаешь. Чтобы сгенерированную спеку можно было использовать с пользой.

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

P>·>Я прочитал и понял именно так. Если у тебя есть другая интерпретация, выкладывай.
P>Ну так дай ссылку дай на сообщение, где НС это утверждает. Насколько я понимаю, ты искусно вырезал часть его утверждения.
Вот
Автор: varenikAA
Дата: 07.09.20
полная цитата:

Чисто теоретически я знаю как все таки сделать нормальный генератор, но это большая работа, включающая допиливание swashbuckle на предмет добавления в swagger.json дополнительной метаинформации о семантике методов.

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

P>>>А его нет. Гы-гы. Надо писать новый генератор, потому что допилить напильником не выходит из за GPL лицензии.

P>·>Ну зашли пулл-реквест.
P>И чем тебе пулл реквест поможет если лицуха GPL ? Такой софт не факт что можно в любой конторе использовать.
Имя софта в студию. Или ты теоретег?

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

P>·>Это не я их предлагаю придумывать, а Ночной Смотрящий, ему это и советуй.
P>Это твои домыслы. У него ничего не сказано, либу он берет, или врукопашную чегото делает.
Его цитаты: "пришли к выводу что писать клиентов нужно руками". "добавления в swagger.json дополнительной метаинформации".

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

P>·>Тесты можно писать проще, без схемы и специальных тулов.
P> Нам нужно не просто абы что абы куда послать, а дать гарантии, что тест посланый согласно спецификации OpenAPI будет понят твоим сервисом.
Зачем? Если эту спецификацию ни для чего более использовать не выходит?

P>В противном случае получится так, что тесты зеленые, потому что девелоперы-тестеры намастырили их по записям со стейджа, а у клиента ничо не работает, т.к. он шлет в строгом соответствии со спекой.

Хорошо, но уже лучше. Осталось тебе понять, что не обязательно для этого генерить спеку.

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

P>·>Ты читать точно умеешь? https://restapi.moedelo.org/docs — это именно что сгенерённая swagger схема. Которую невозможно ни для чего полезного применить, даже глазками почитать и то проблема, тулзы на ней затыкаются.
P>1. есть схема
P>2. какие то кодогенераторы с ней не справляются
Да мало кто справился. В этом и дело. Сделано на от*бись.

P>С чего ты взял, что она генерированая? Подробнее. Я видел и бОльшие простыни, созданные вручную.

У тебя есть сомнения?! Подскажи мне вещества, которые позволят человеку написать "Moedelo.DocumentsRegister.Api.Models.Dto.ApiDataResponseDto`1[[System.Collections.Generic.List`1[[Moedelo.DocumentsRegister.Api.Models.Dto.DocumentRegisterDto, Moedelo.DocumentsRegister.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]" в однострочный полутрамеговый json.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.