Насколько я понимаю, цена там сейчас определяется индивидуально, но: а сколько у вас примерно таблиц? Не исключено, что проще уговорить подвинуть лимиты бесплатной версии
Вот, надо мне проверить, что сервис ищет какие-то данные в БД, используя внешнее соединение таблиц
Посмотрите ещё раз на getTalksByConference.В нем мы проверяем, что из доклада вытаскивается и конференция, и спикеры, т. е. ровно то, о чём Вы и пишете :-)
Помимо шуток -- я согласен с тем, что в общем случае случайно выбранная запись может не обладать нужным состоянием и её придётся в это состояние загонять. Но по опыту можно исходить из того, что делать это придётся реже (и прикладывать меньше усилий), чем пытаясь заполнить базу с нуля. Здесь мы имеем классический инженерный трейд-офф, что за какие-то преимущества приходится платить какую-то цену. Преимущество, которое мы получаем -- объективно меньше кода для сетапа тестов и меньше затрат на его поддержку. Цена, которую платим: тесты надо писать, помня о том, что по умолчанию мы ничего не можем "подразумевать" о входных данных, не прописав в них явно какое-то состояние. В 9 случаях из 10 нам подойдёт и то, что сгенерировано случайным образом. В 1 случае из 10 придётся заморочиться. Не используя генерацию, мы будем заморачиваться в 10 случаях из 10.
К сожалению, нет: jOOQ это jOOQ, Celesta это Celesta, вы выбираете либо одно либо другое
Да, TC тесты с реальным постгресом сильно проигрывают по скорости тестам с in-memory H2. Можно попробовать заточить ваши тесты для jOOQ для in-memory H2, но нужно быть очень осторожным, чтобы не попасть в проблему связанную с различиями в реализации PostgreSQL и H2 (именно эту проблему решает Celesta, абстрагируясь вообще над всеми поддерживаемыми базами данных)
Дорогие JUG, вот ваши видео больше не в YouTube, а в собственной платформе. И для тех, у кого есть туда доступ, всё стало очень удобно.
Но я не могу больше поделиться с коллегами, у которых не было билета на конференцию, ссылкой на видео какого-нибудь определённого доклада, как бывало раньше. Ну разве если только выдать человеку свой собственный логин-пароль от личного кабинета, что нехорошо.
Можно ли как-то решить эту проблему? Например, если бы была возможность за разумную цену купить доступ к контенту уже прошедших конференций, я бы ею воспользовался
Тут в комментариях все набросились на volatile, а в статье требуют апдейта гораздо более базовые вещи.
Пожалуйста, пожалуйста, пожалуйста замените Random на ThreadLocalRandom. Класс ThreadLocalRandom существует начиная с Java 7. Он в 3-4 раза быстрее, потокобезопасный, более удобный. О его абсолютном преимуществе перед Random написано в книге «Effective Java». Использовать Random сейчас — то же самое, что использовать какой-нибудь Vector вместо ArrayList.
Для чего нужен LinkedHashMap? — почему-то не увидел в ответе «для реализации LRU cache», хотя это один из основных сценариев использования, о чём даже сказано в его Javadoc
Секция про ввод-вывод крайне куцая и устаревшая. Вообще ничего нет про java.nio, что странно в 2020м. Хотя бы включите вопрос «какие знаете способы прочитать текстовый файл?»
Проверка идемпотентности — это запуск плейбуки повторно с проверкой состояний changed/ok на каждом шаге — только так.
Спасибо, Капитан Очевидность, а я-то не знал :-) Да, также как и всевозможные findbugs и другие средства статического анализа — это не тестирование от слова совсем. Ansible-lint — это средство статического анализа, которое позволяет найти некоторые явные проблемы в коде, не запуская его.
В ansible-lint есть проверки, запрещающие выполнять «незащищённые» command/shell операции, которые будут приводить к изменениям при каждом выполнении. Разумеется, это формальная проверка, но она находит такие случаи.
Ещё раз напомню, что это — расшифровка доклада, который готовился летом 2018 года. На тот момент я не помню, чтобы в молекуле был верификтор Ansible. Testinfra был дефолтным.
* Докладу уже 2 года, кое-что и устарело.
* С помощью ansible-lint _можно_ находить неидемпотентность!
* Плейбуки тестить можно, но это не основной use case.
* Выше уже отметили. Да, не знал я про `changed_when`. Но интересно, что когда я доклад готовил с ревьюерами и потом делал на одном большом митапе и двух конференциях, мне на это никто не указал. Видимо, на тот момент это не очень известная фича была.
* Да, именно так. В контексте того что я говорю в докладе.
* Почему не упомянут? Упомянут assert.
Понял, changed_when: false будет всегда говорить ансиблу, что ничего не изменилось, и поэтому не будет провален тест на идемпотентность. Век живи, век учись!!!
Бесконечный скроллинг — это лишь один из возможных подходов, довольно тривиальный. Я же рассказывал про то, как мы сделали честный скроллинг на датасете в несколько млн записей, развивая идею про «пляшем от ключа».
Развивая данную идею (OFFSET не нужен, «пляшем» от ключа), можно построить не только пагинацию, но и непрерывный скроллинг — что гораздо интереснее, чем пагинация. Более того, reverse engineering некоторых вещей показывает, что люди давно так его и делают.
Поддержка подобных запросов была бы хороша не только на уровне фреймворков, но и на уровне СУБД.
В таких обзорах всех не упомянешь) или надо писать нескольким авторам.
Да, мне тоже понравился Хорстман, неплохой overview по новым фичам Java. Хотя например прошлогодний доклад Тагира про «pattern matching и его воображаемых друзей» ничуть не хуже погружает в проблемы эволюции языка.
Кстати, не задумывался о том, что такое возможно с PDF… В ситуации, когда конференция не даёт подключать свой ноутбук, у них в любом случае будет только Adobe Acrobat в Full-screen режиме.
В ситуации, когда свой ноутбук подключить можно, я открываю RevealJS презентацию в браузере, нажимаю кнопку S — и в отдельном окне браузера всё есть. Но я этим обычно не пользуюсь, текущего слайда мне вполне достаточно.
Насколько я понимаю, цена там сейчас определяется индивидуально, но: а сколько у вас примерно таблиц? Не исключено, что проще уговорить подвинуть лимиты бесплатной версии
Посмотрите ещё раз на
getTalksByConference.
В нем мы проверяем, что из доклада вытаскивается и конференция, и спикеры, т. е. ровно то, о чём Вы и пишете :-)Помимо шуток -- я согласен с тем, что в общем случае случайно выбранная запись может не обладать нужным состоянием и её придётся в это состояние загонять. Но по опыту можно исходить из того, что делать это придётся реже (и прикладывать меньше усилий), чем пытаясь заполнить базу с нуля. Здесь мы имеем классический инженерный трейд-офф, что за какие-то преимущества приходится платить какую-то цену. Преимущество, которое мы получаем -- объективно меньше кода для сетапа тестов и меньше затрат на его поддержку. Цена, которую платим: тесты надо писать, помня о том, что по умолчанию мы ничего не можем "подразумевать" о входных данных, не прописав в них явно какое-то состояние. В 9 случаях из 10 нам подойдёт и то, что сгенерировано случайным образом. В 1 случае из 10 придётся заморочиться. Не используя генерацию, мы будем заморачиваться в 10 случаях из 10.
К сожалению, нет: jOOQ это jOOQ, Celesta это Celesta, вы выбираете либо одно либо другое
Да, TC тесты с реальным постгресом сильно проигрывают по скорости тестам с in-memory H2. Можно попробовать заточить ваши тесты для jOOQ для in-memory H2, но нужно быть очень осторожным, чтобы не попасть в проблему связанную с различиями в реализации PostgreSQL и H2 (именно эту проблему решает Celesta, абстрагируясь вообще над всеми поддерживаемыми базами данных)
Так вот, видео же можно закрывать — а открывать или через подписочку, или заполнившим ФОС :-))
Но я не могу больше поделиться с коллегами, у которых не было билета на конференцию, ссылкой на видео какого-нибудь определённого доклада, как бывало раньше. Ну разве если только выдать человеку свой собственный логин-пароль от личного кабинета, что нехорошо.
Можно ли как-то решить эту проблему? Например, если бы была возможность за разумную цену купить доступ к контенту уже прошедших конференций, я бы ею воспользовался
Спасибо, Капитан Очевидность, а я-то не знал :-) Да, также как и всевозможные findbugs и другие средства статического анализа — это не тестирование от слова совсем. Ansible-lint — это средство статического анализа, которое позволяет найти некоторые явные проблемы в коде, не запуская его.
Ещё раз напомню, что это — расшифровка доклада, который готовился летом 2018 года. На тот момент я не помню, чтобы в молекуле был верификтор Ansible. Testinfra был дефолтным.
* С помощью ansible-lint _можно_ находить неидемпотентность!
* Плейбуки тестить можно, но это не основной use case.
* Выше уже отметили. Да, не знал я про `changed_when`. Но интересно, что когда я доклад готовил с ревьюерами и потом делал на одном большом митапе и двух конференциях, мне на это никто не указал. Видимо, на тот момент это не очень известная фича была.
* Да, именно так. В контексте того что я говорю в докладе.
* Почему не упомянут? Упомянут assert.
Поддержка подобных запросов была бы хороша не только на уровне фреймворков, но и на уровне СУБД.
Уже несколько лет как я пишу по этой проблеме и делал доклад на JPoint, наиболее удачное изложение, на мой взгляд, здесь: dzone.com/articles/hidden-complexity-of-a-routine-task-presenting-tab
Да, мне тоже понравился Хорстман, неплохой overview по новым фичам Java. Хотя например прошлогодний доклад Тагира про «pattern matching и его воображаемых друзей» ничуть не хуже погружает в проблемы эволюции языка.
В ситуации, когда свой ноутбук подключить можно, я открываю RevealJS презентацию в браузере, нажимаю кнопку S — и в отдельном окне браузера всё есть. Но я этим обычно не пользуюсь, текущего слайда мне вполне достаточно.