🎓 Развитие
JUnit 5
Сегодня наконец-то появилось время для себя, точнее "для поучиться".🧑💻
Начал смотреть небольшой курс по тестированию.👩💻
Из плюсов - видосики короткие и очень понятные.👍
Так же есть на чем сразу пробовать - на работе сейчас тема тестирования становится очень актуальной.🔥
Посмотрел пока не много, но как обычно сделал заметки в книжечке.
А как у вас с тестами⁉️
JUnit 5
Сегодня наконец-то появилось время для себя, точнее "для поучиться".
Начал смотреть небольшой курс по тестированию.
Из плюсов - видосики короткие и очень понятные.
Так же есть на чем сразу пробовать - на работе сейчас тема тестирования становится очень актуальной.
Посмотрел пока не много, но как обычно сделал заметки в книжечке.
А как у вас с тестами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👎1
Сегодня внезапно узнал что у дяди Яши начались тренировки.
Записался.
Если кому интересно присоединяйтесь!
#algorithm_training
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🛠 Трудовые будни
В одном из последних ревью (задача по рефакторингу) было предложено использовать аннотацию @UtilityClass
До этого я ни разу ее не использовал.😇
Для начала я решил проверить, а правильно ли я понимаю понятие утилитный класс.
🔸Утилитный класс - класс-помощник, содержащий статические переменные и статические методы, которые выполняют определенный перечень задач, объединённых одним смыслом.
В Java нет встроенной поддержки для создания утилитных классов напрямую. Поэтому используют @UtilityClass в Lombok.
Пошел к известной нейросетке и спросил о плюсах-минусах.
Плюсы использования @UtilityClass в Lombok (кратко):
1. Меньше шаблонного кода
2. Неявный private конструктор
3. Предотвращение наследования
4. Повышение читаемости
Минусы использования @UtilityClass (кратко):
1. Зависимость от Lombok
2. Необходимость плагина
3. Понимание магии Lombok
4. Ограничения при сериализации
5. Ограниченная поддержка в инструментарии рефакторинга
В итоге я отказался от использования этого утилитного класса, т.к. он по факту использовался для хранения пропертей.
Я посчитал такое хранение не верным и перенес их куда положено.
A вы используете утилитные классы ⁉️
В каких случаях и для чего ⁉️
В одном из последних ревью (задача по рефакторингу) было предложено использовать аннотацию @UtilityClass
До этого я ни разу ее не использовал.
Для начала я решил проверить, а правильно ли я понимаю понятие утилитный класс.
🔸Утилитный класс - класс-помощник, содержащий статические переменные и статические методы, которые выполняют определенный перечень задач, объединённых одним смыслом.
В Java нет встроенной поддержки для создания утилитных классов напрямую. Поэтому используют @UtilityClass в Lombok.
Пошел к известной нейросетке и спросил о плюсах-минусах.
Плюсы использования @UtilityClass в Lombok (кратко):
1. Меньше шаблонного кода
2. Неявный private конструктор
3. Предотвращение наследования
4. Повышение читаемости
Минусы использования @UtilityClass (кратко):
1. Зависимость от Lombok
2. Необходимость плагина
3. Понимание магии Lombok
4. Ограничения при сериализации
5. Ограниченная поддержка в инструментарии рефакторинга
В итоге я отказался от использования этого утилитного класса, т.к. он по факту использовался для хранения пропертей.
Я посчитал такое хранение не верным и перенес их куда положено.
A вы используете утилитные классы ⁉️
В каких случаях и для чего ⁉️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
🎓 Развитие
Завершился очередной тренинг по алгоритмам.
Прислали сертификат.
Типа ура!
И вот в тот единственный раз, когда решил не все задачи, эти собаки сутулые решили написать количество решенных задач.
28/40 - в целом тоже не плохо, надо будет все таки дорешать, потому что последние задачи были самые интересные.
#algorithm_training
Завершился очередной тренинг по алгоритмам.
Прислали сертификат.
Типа ура!
И вот в тот единственный раз, когда решил не все задачи, эти собаки сутулые решили написать количество решенных задач.
28/40 - в целом тоже не плохо, надо будет все таки дорешать, потому что последние задачи были самые интересные.
#algorithm_training
🔥7💯3👎1
🎓 Транзакции
Вчера повторял про транзакции в БД.
Тезисно, что бы закрепить
Аномалии:
🔸 Потерянное обновление
🔸 Грязное чтение
🔸 Неповторяющееся чтение
🔸 Фантомное чтение
Свойства ACID:
🔸 Атомарность (atomicity)
🔸 Согласованность (consistency)
🔸 Изоляция (isolation)
🔸 Устойчивость (durability)
Уровни изоляции в SQL:
🔸 Read uncommitted (чтение незафиксированных данных).
🔸 Read committed (чтение фиксированных данных).
🔸 Repeatable read (повторяющееся чтение).
🔸 Serializable (упорядочиваемость).
⚠️ А еще надо не забывать что СУБД не обязательно поддерживает все эти уровни.
💥 Например, Postgres поддерживает только последние 3ри, а oracle и того меньше - Read committed и Serializable
А вы когда-нибудь наступали на грабли транзакционности ⁉️
#interview
Вчера повторял про транзакции в БД.
Тезисно, что бы закрепить
Аномалии:
🔸 Потерянное обновление
🔸 Грязное чтение
🔸 Неповторяющееся чтение
🔸 Фантомное чтение
Свойства ACID:
🔸 Атомарность (atomicity)
🔸 Согласованность (consistency)
🔸 Изоляция (isolation)
🔸 Устойчивость (durability)
Уровни изоляции в SQL:
🔸 Read uncommitted (чтение незафиксированных данных).
🔸 Read committed (чтение фиксированных данных).
🔸 Repeatable read (повторяющееся чтение).
🔸 Serializable (упорядочиваемость).
А вы когда-нибудь наступали на грабли транзакционности ⁉️
#interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
И опять про идею.
Не знаю у кого, где и когда я это увидел, но очень хотел видеть прямо в среде разработки комменты которые оставляют ревьюверы на нашем GitLab 🥕🥕🥕
Оказалось что это предельно просто!!!
Есть плагин GitLab, в нем создаем соединение, указываем адрес репы, генерируем токен доступа и все!!!
Теперь прямо в коде видно кто и что тебе прокомментировал, тут же можно ответить или зарезолвить проблему.
И не надо лазить в почту, потом идти в репу и там смотреть, потом, если сложный вопрос опять возвращаться в IDE и смотреть код....
Короче мне это очень понравилось❗️
А вы таким пользуетесь⁉️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1
И опять-опять про идею.
На работе закончилась лафа с лицензией - продлил свою.
Перерыв два года - никаких скидок нет.
Плюс небольшая комиссия за перевод, что минус.
Кто какими лицензиями пользуется и пользуется ли вообще?
#idea
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🛠 Трудовые будни
Стояла задача в сервисе принимать команды, которые имеют разную структуру.
Т.е. в одном месте из json получить разные объекты❓
Я, конечно, сделал, и оно, конечно, работает, но...
На ревью меня завернули и отправили читать про полиморфный json😮
Очень интересный зверь🤓
Настраивается просто:
т.е. в полученном json ищем поле (в моем случае type) и по его значению выбираем класс, в который будет произведена десереализация.🔥
Почитать можно тут
А вы сталкивались с таким зверем⁉️
Стояла задача в сервисе принимать команды, которые имеют разную структуру.
Т.е. в одном месте из json получить разные объекты
Я, конечно, сделал, и оно, конечно, работает, но...
На ревью меня завернули и отправили читать про полиморфный json
Очень интересный зверь
Настраивается просто:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = AddCommand.class, name = "AddCommand"),
@JsonSubTypes.Type(value = DeleteCommand.class, name = "DeleteFortsLimitsCommand")
})
public interface Command {
EventType getType();
}
public abstract class BaseCommand implements Command {...}
public class AddCommand extends BaseCommand {...}
т.е. в полученном json ищем поле (в моем случае type) и по его значению выбираем класс, в который будет произведена десереализация.
Почитать можно тут
А вы сталкивались с таким зверем
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🎓 CodeReview
На собесах иногда просят сделать код-ревью.
Набросал себе схему, как проводить это самое ревью.
1️⃣ Корректность работы
(т.е. что делаем, что ожидаем, проверяем, что закрыли ресурсы, и т.п.)
2️⃣ Обработка ошибок
(все ли обработаны и в нужном ли месте)
3️⃣ Алгоритмы и перфоманс
(можно ли сделать лучше)
4️⃣ Read-n-Code Quality
(кривые имена, дублирование кода, и т.д)
Ничего не забыл⁉️
Если есть примеры кода, которые вам давали или вы давали на собесе, бросьте в коменты посмотреть
#interview
На собесах иногда просят сделать код-ревью.
Набросал себе схему, как проводить это самое ревью.
1️⃣ Корректность работы
(т.е. что делаем, что ожидаем, проверяем, что закрыли ресурсы, и т.п.)
2️⃣ Обработка ошибок
(все ли обработаны и в нужном ли месте)
3️⃣ Алгоритмы и перфоманс
(можно ли сделать лучше)
4️⃣ Read-n-Code Quality
(кривые имена, дублирование кода, и т.д)
Ничего не забыл
Если есть примеры кода, которые вам давали или вы давали на собесе, бросьте в коменты посмотреть
#interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2