Pull to refresh
103
0
Иван Вахрушев @IvanVakhrushev

Java Developer, Open Source Enthusiast

«Яндекс» объявил финансовые результаты за IV квартал 2022 года и 2022 год

С точки зрения диванного аналитика в оригинале, в целом, всё есть. EBITDA -37%

Практический кейс: как быстро развернуть Testcontainer PostgreSQL для Spring Boot API

@rogue06, можете рассказать, в каких случаях будет работать withResure(true)? Есть ли какая-то статистика по ускорению?
На своих проектах не заметил никакого прироста.

Топ полезных SQL-запросов для PostgreSQL

Статистика накапливается с момента её соседнего сброса. Смотрите pg_stat_reset и аналогичные ей функции.

Пиратство и четыре валюты

Да, я тоже на это попал. Предзаказал Скайрим на DVD-диске, забрал диск, приехал домой с работы… и облом — скачивание обновлений заняло весь вечер и всю ночь.
Аналогичная ситуация была с GTA IV — куча проблем с установкой и запуском лицензионной игры. Такие ситуации могут отбить всякое желание покупать лицензионные игры.

Публикуем проект с помощью Gradle и Sonatype в Maven Central без рук

Небольшой апдейт. Приседания с secring.gpg-файлами не нужны, если использовать gpg-agent

signing {
    if (!version.endsWith('SNAPSHOT')) {
        useGpgCmd()
        sign publishing.publications.mavenJava
    }
}

Файл gradle.properties должен иметь примерно следующий вид:

signing.gnupg.executable=gpg
signing.gnupg.useLegacyGpg=false
signing.gnupg.keyName=<ваш ключ>
signing.gnupg.passphrase=<ваш пароль>

Как ускорить работу PostgreSQL с помощью конфигурации базы и оптимизации запросов

ставят autovacuum_work_mem -1, чтобы он заимствовал

Оно так по умолчанию стоит. Формулировка оставляет желать лучшего.

Введение в DbChange JUnit расширение

Скопировать скаченный JAR файл в директорию libs.

Какой-то колхоз!) Завёл https://github.com/DarrMirr/dbchange/issues/1

А за статью большое спасибо; взял себе на заметку.

Управление временем в Java приложениях

Пулл реквесты в демо-проект приветствуются. Можно перейти на OffsetDateTime

Управление временем в Java приложениях

Покажите код, который запишет ваш пример с ZonedDateTime в БД PostgreSQL, а там посмотрим, в чём конкретно я не прав. Попутно можете почитать https://jdbc.postgresql.org/documentation/head/java8-date-time.html и https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html

Управление временем в Java приложениях

В предлагаемом мною варианте разработчик получит ошибку компиляции при попытке использовать now(). Checkstyle позволяет настраивать сообщения об ошибках, и туда можно прокинуть, например, ссылку на эту статью или на внутреннюю wiki, где будет объясняться концепция.

Попытки обойти это ограничение должны отлавливаться уже на этапе код ревью.

Управление временем в Java приложениях

А что помешает разработчику вызвать LocalDateTime.now()? И здесь речь даже не про злой умысел/раздолбайство, а просто про нового человека в команде, который ещё слабо ориентируется в кодовой базе?
Простой вариант не жизнеспособен на большом отрезке времени, когда команда может полностью обновиться или продукт уйдёт на поддержку совершенно другой команде.

Статический анализ кода в современной Java-разработке

Мне кажется, вы сильно утрируете. Обычный code coverage прекрасно решает свою задачу. На code review будет видно, что проверки в тестах бесполезны, и задача вернётся на доработку.
Мутационное тестирование - очень интересная вещь, но не для всех, я бы сказал. Я сейчас внедряю pitest на личных проектах. При использовании со Spring есть сложности. Если у вас есть рекомендации/опыт внедрения, поделитесь, пожалуйста, буду очень благодарен.

Статический анализ кода в современной Java-разработке

Нет, без рукоприкладства, конечно)

На проекте должен быть кто-то, кто принимает технические решения. Такой человек должен быть один, иначе будет коллективная безответственность. Этот человек разруливает спорные/конфликтные ситуации по технической части. Например, один разработчик хочет Кафку для нового проекта, а другой - RabbitMQ. И они никак не могут договориться. Архитектор должен сделать выбор. Он не должен идти на компромиссы и стараться угодить всем. Он может выбрать, например, Pulsar)

Эта ответственность чаще всего зашивается в KPI и премиальную часть.

Если такой человек раз за разом принимает неудачные решения, то однозначно, что роль архитектора не для него. Вовсе не обязательно его за это увольнять (если это не был специально нанятый архитектор в команду).

Статический анализ кода в современной Java-разработке

Спасибо за наводку. Посмотрю на досуге.

AssertJ как способ значительно улучшить код ваших тестов

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

Сопротивление новому - черта, свойственная любому человеку. AssertJ - капля в море. Внедрение checkstyle, например, вызывает гораздо большее сопротивление, но даже оно преодолимо без потерь.

AssertJ как способ значительно улучшить код ваших тестов

Концепция большинства тестов достаточно простая: вызвал метод, получил результат, проверил результат.

В assertThat() можно передать только один параметр - результат, который будем проверять. Это достаточно интуитивно. Я пока что не встречал разработчиков, у которых с этим бы возникли проблемы.

assertEquals() из JUnit противоречит концепции "чистого кода" - два параметра одинакового типа, которые легко перепутать местами, и код скомпилируется. В большинстве случаев это не проблема, но иногда мешает: читать логи упавшего теста в CI-пайплайне (особенно когда локально тест проходит) или на code review, когда один разработчик поучает другого правильно использовать assertEquals.

Набор практик по работе с Postgresql глазами Spring java backend разработчика

Я предпочитаю проверять интеграционным тестом (с Testcontainers, например). Потом на тестовом стенде, который не жалко, и который в случае чего можно перераскатить с нуля.

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

Набор практик по работе с Postgresql глазами Spring java backend разработчика

В статье есть деструктивные примеры, которые лучше не применять на практике. В частности, "проверь свой запрос".

Всё, что вы делаете в БД, остаётся в БД и влияет на её прямым образом.

Нельзя просто так начать транзакцию, откатить ее и сделать вид, что ничего не было. База по-честному будет выполнять ваш запрос, используя backend процесс, потребляя CPU/диск и генерируя WAL.

Бездумно используя подход с begin/rollback, можно выстрелить себе в ногу и на время положить кластер БД.

Сравнение платформ Kubernetes: Red Hat OpenShift, SUSE Rancher и Canonical Kubernetes

Не понял про одну ноду для OpenShift. CRC чем не устраивает? https://developers.redhat.com/products/codeready-containers/overview

Information

Rating
Does not participate
Location
Yerevan, Yerevan, Армения
Date of birth
Registered
Activity

Specialization

Specialist
Lead
Java
PostgreSQL