Возьмем простой пример из области аутентификации. Реализовать обработку Refresh Token сегодня способен практически любой AI. Более того, скорее всего он предложит несколько вариантов реализации, соответствующих спецификации OAuth 2.0. Я недавно давал такую задачу ИИ-агенту для создания демо-приложения. В итоге я удалил ~30% его кода и часть переписал - он использовал хранение рефреш-токена в браузере, в обычных куках, создав критическую уязвимость. Потому ли, что он не знает OAuth 2.0 или OIDC, или принципов безопасности? Нет. Просто среди данных, на которых его обучали оказалось такое решение, может какое-то демо из открытых репозиториев, и что-то еще, я достоверно не угадаю. А общий вес этого решения оказался выше в рамках контекста моего агента.
Не верю. Или модель была очень слабая, или в постановке задачи не было задания уделить внимание безопасности. Модель уровня Fable и даже Opus при хорошем промпте наверняка все сделают так что не подкопаешься.
Что интересно пытался всегда сначала писать спецификации, а потом по ним код. Для меня это работает не всегда. Хорошо для бизнес логики и серверных процессов. UI требует большей интерактивности. В итоге зачастую сначала делаю UI, а потом уже спецификации. Но тоже сомнения зачем если АИ код понимает отлично.
Но правильно написанные спецификации (с условиями приёмки) значительно повышают качество тестов. По крайней мере на текущих моделях для моих задач.
Явно можно быстрее обойдясь без ConcurrentBag коли уж возвращаете `string[]` - можно же сразу создать итоговый массив и писать в него по индексу `num`?
Объяснение для технарей: работают динамические окружения так:разработчик пушит отдельную ветку на гите, затем по отдельной ссылке получает независимую копию проекта, которую можно показать менеджеру и тестировщику.
@snakers4ваша мотивация понятна и в целом мне кажется вы правы.
Но ваш тон корёбит и отталкивает. Понятно что вас сильно задело, но почему читатели должны купаться в этом негативе?
Уверен можно было среагировать в спокойном, может быть чуть уставшем, стиле. Или ещё лучше с доброй иронией. И в целом выйти в плюс. А так, субъективно, больше в минус.
Не верю. Или модель была очень слабая, или в постановке задачи не было задания уделить внимание безопасности. Модель уровня Fable и даже Opus при хорошем промпте наверняка все сделают так что не подкопаешься.
Я для управления своими пет проектами запилил - https://specscore.md/ru/
Что интересно пытался всегда сначала писать спецификации, а потом по ним код. Для меня это работает не всегда. Хорошо для бизнес логики и серверных процессов. UI требует большей интерактивности. В итоге зачастую сначала делаю UI, а потом уже спецификации. Но тоже сомнения зачем если АИ код понимает отлично.
Но правильно написанные спецификации (с условиями приёмки) значительно повышают качество тестов. По крайней мере на текущих моделях для моих задач.
Если использование АИ видно то откуда кризис доверия?
Завершаете собеседования с читерами досрочно и берете тех кто не читит?
Зачем в заголовке врать?
Явно можно быстрее обойдясь без ConcurrentBag коли уж возвращаете `string[]` - можно же сразу создать итоговый массив и писать в него по индексу `num`?
Питон бы вы наверное вообще возненавидели?
Куда файлы тестов писать и с каким именем? Как запускать? Было бы неплохо указать в водной статье.
То есть если есть миллиард записей и надо выбрать первые 100 всегда будет делаться full table or index scan?
Пользователи будут очень довольны.
Много лет назад пришёл к мысли что пользователям не нужна "пагинация". Кого интересует конкретно 3я страница например?
Достаточно load N first + load more = load N starting from last ID. Если позволяет можно позволить "load all".
Никто ни разу не пришёл и не попросил страницы.
Интересно, а строку 45 они поправили?...
Просвятите?
Каким боком тут релевантна информация про небинарного квира?
Очень хотелось сообщить о своей гомофобии?
В самарской области в селе Богатырь ездили по общим дорогам.
Не только по памяти но и по CPU.
В массиве хранить коды соответсвующие буквам. Код находить по индексу буквы где А=0
Зачем хэш-таблицу? Достаточно массива и [CharCode-A]
Непонятно каким образом это табличные тесты?
Почему например в последнем «func TestDeleteUser» не вызвать напрямую t.Run()?
в моем понимание тест табличный когда вход разный (из массива) а ассерты общие.
Объяснение для технарей: работают динамические окружения так: разработчик пушит отдельную ветку на гите, затем по отдельной ссылке получает независимую копию проекта, которую можно показать менеджеру и тестировщику.
@snakers4ваша мотивация понятна и в целом мне кажется вы правы.
Но ваш тон корёбит и отталкивает. Понятно что вас сильно задело, но почему читатели должны купаться в этом негативе?
Уверен можно было среагировать в спокойном, может быть чуть уставшем, стиле. Или ещё лучше с доброй иронией. И в целом выйти в плюс. А так, субъективно, больше в минус.
Крутая работа. Не знаю что вы выкинули, но читалось хорошо.
Хотелось бы увидеть реальный пример бизнес логики на нём.