JavaWhiteBook
92 subscribers
202 photos
4 videos
81 links
Привет!
Меня зовут Алексей. Мне 50.
Я третий год работаю java-разработчиком.
В этом канале я рассказываю про трудности-печали, с которыми сталкиваюсь, а также радости-победы, которые случаются.
Только практика, никакой теории, и очень простыми словами.
Download Telegram
Трудовые будни

На работе происходит слияние. Некоторые структуры разделяются, некоторые объединяются.
GitLab и JIRA разработки переезжают. Короче, интересно наблюдать и слушать.

Что касается непосредственно меня:

1️⃣ Отдал свой сервис на тестирование.
Если все ок, то скоро будем выкатываться на прод.

2️⃣ Начался полномасштабный переезд всех сервисов на Yandex OS.
Одну задачу сделал - отдал в тестирование.
Если все ок, то буду делать следующие, если, конечно, их найду.
После переезда Jira не очень ко мне дружелюбна👹.

3️⃣ Архитектура замутила новую версию модульной библиотеки - особенность Spring Boot 3 и Java 17, соответственно.

Но это не самое интересное!

В новой модульной отказались от JPA в пользу JDBC.🤔
Пробую перевести свой сервис на нее. В некоторых местах приходится использовать JdbсTemplate. 😂
Для тех, кто тоже забыл - видосик от Алишева

Что-то мне подсказывает, что скоро все остальные сервисы мы тоже будем переводить на нее🥴.
👍3
🎓 Развитие

🗒 Год новый - план старый

Итак, возвращаюсь к намеченному плану.
Сегодня наконец-то закончил курс по SQL 🥇 🥳
Конечно, сертификат я получать не пойду, но силы в себе чувствую!!! 🤘

Конечно же, сделал заметочки в книжечке. 📖 ✍️

Мне сегодня некоторые сказали, что SQL это вчерашний день - что думаете?
Какие есть альтернативы?
👍6
Трудовые будни

У нас ввели дресс-код 🤘
а точнее - общие правила для написания кода 🔥

Внутренние и технические установки я опущу 🤫

🔸 Введен code style & code quality
Прям первой строчкой - основываясь на принципах чистого кода - и ссылочка
Подняли SonarQube (это я люблю)
В IDEA обязательно CheckStyle и SonarLint

🔸 Обязательное использование JavaDoc (и это люблю)

🔸 Так же рекомендовано покрытие тестами до 80%
(с этим пока туго)

🔸 Swagger UI делаем на SPRINGDOC
(с этим уже разобрался)

🔸 Формат записи SQL
Тут тоже прям как я люблю: ключевые UPPERCASE, имена snake_case.
Так что переучиваться не придется.

🔸Сообщение коммитов на русском
Пожалуй, единственное, что меня не порадовало.

А у вас на работе следят за чистотой кода? Если да, то как?
👍41
Обожаю Яндекс 🥳

Сегодня был день раздачи призов за Тренировки 🏆

Пришло письмо, открываю, а там поздравляют Маслова Михаила... 🤦🏻‍♂️
Расстроился, думаю накосячили и исправить не допросишься. Забил... 😢

Приходит второе письмо. :
В нем тоже сертификат... И тоже не мой!!! 🙈
Настроение поднялось 🎶

Но когда пришел третий, я был уже заинтригован.
Думаю сколько там Масловых может быть ⁉️ 🥴
С какого раза угадают? :🎰

На третьем сертификате мое имя, но мой ли это сертификат - вопрос остается открытым! 😜🤪
Т.к. я точно знаю, что в тренировках учавствовал мой тезка однофамилец. 🤝

Кстати думалось, что если решишь все задачи, то получишь сертификат с немного другой формулировкой. 💩

Короче, вилки нашлись, но осадочек остался. 😎

#algorithm_training
😁4
🎓Развитие

Вчера получил от жены подарочек.🎁
Просто так, без повода.
Я конечно не знаю, на что она намекает😄, но мне очень приятно.

А как ваши родные и близкие поддерживают вас?
👍52
Трудовые будни

В целом, это была рутинная неделя. Перевод на Яндекс S3.

При тестировании одной задачи обнаружил, что на контуре разработки, мягко говоря, невалидные данные😱.

Все знают, что "Кривые данные - это боль", но эта боль ни в коем случае не должна приводить "падению". А тестируемый сервис прям зацвел NPE и SQL ошибками⚠️.

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

С моей точки зрения, это очень неправильно. Даже при полном отсутствии данных сервис должен подняться и все части должны отработать. Да, в логах будет куча варнингов и ероров, но сервис не должен выкидывать 500 никогда.

По-хорошему, надо еще возвращать описание того, с чем случилась проблема📄, но в данной реализации это невозможно, поэтому будут только логи.

Словом, я потратил много времени, чтобы отловить и исправить эти ошибки.

А как бы вы поступили на моем месте?
👍3
Откровение сегодняшнего дня, или как сейчас модно говорить, инсайт.

В последние пару лет единственное ПО, за которое мне не жалко денег💸, это IntelliJ IDEA Ultimate.

Но недавно мне показали, что в ней можно дебажить.... стримы!!!
💣Стримы, вашужмать, стримы!!!

Это ж, блин, как узнать, что происходит внутри черной дыры!!!

Если кто-то не знает, как это делается, посмотрите это короткое видео.
Надеюсь, вы испытаете тот же восторг, что и я!!!🤩
👍9
Трудовые будни

Как я уже говорил раньше, у нас ввели общие требования к коду 📋.
В том числе, обязательным стало наличие swaggera'а для api.

Мы используем sprigdoc.
Кстати, я недавно понял, почему💡. Оказывается, spingfox перестал поддерживать свой продукт с 2020.

Внезапно столкнулся со сложностью 🤬, что sprigdoc не хочет работать с spring boot 3.
Точнее, не так. На некоторых сервисах после апдейтов версий компонентов, sprigdoc перестал работать - просто тихо возвращал 404 и все 👀.

Метод тыка и чтение инета прояснили, что у sprigdoc есть версии:
Версия 1 хорошо работает со spring boot 2, но не работает с третьей, не выдавая никаких ошибок.
Версия 2 как раз заточена под третий спринг-бут.

При подключении второй версии, там где перестало работать, вообще перестало запускаться из-за конфликта версий, потому что первая была "приколочена" в модульной библиотеке..
Пришлось научиться исключать часть внутри зависимости и внести изменения в модульную. 🏅

Про то как использовать можно прочитать у меня в заметках.
🔥5
Трудовые будни

Как-то давно возникла проблема с тестом в markdown - нужно было вставить несколько строчек в одну ячейку таблицы. 🤯

Как сделать это стандартными методами, я не разобрался 😢
A, точнее, невнимательно читал:
Mожно смешивать Markdown и HTML.
Можно и наоборот, внутри HTML-тегов использовать Markdown.

💡 Оказывается, если просто использовать <table>, то никакой проблемы нет!!!
Единственная сложность - это стили. Насколько я успел поэкспериментировать, работают только атрибуты в тегах, и туда, вроде, можно подсовывать стили.

Но и с тут не все просто. 🤦🏻‍♂️
Локально (в идее) стили полностью работают, а на гитхабе, например, часть не применяется.
Разбираться с этим не стал, т.к. основная цель достигнута и есть задачи по-важнее и по-интереснее.
Однако то, что постиг - хоть мелочь, а приятно!

Какие приятные мелочи случились с вами за последнее время
👍4
Трудовые будни

Одна из часто используемых аннотаций lombok - это Builder🥳
Написал цепочку, build() и вроде все хорошо, но...
Мне пришлось добавлять в объект данные, основываясь на состоянии этого объекта 🧐
Все поля у меня были final, setter'ов тоже не планировалось. Пришлось "колхозить", чтобы выполнить задачу 💩

Ну, должен же быть какой-то метод, который выполняется перед сборкой, но в ломбоковских методах я ничего подобного не нашел. 😢

💡 Тогда я подумал, а что, если переопределить сам метод build()?
Небольшой гуглеж - и решение найдено:

Создаем статический метод в нашем MyClass, возвращаем сгенерированный билдер с переопределенным build().
И все...
public static MyClassBuilder builder() {
return new MyClassBuilder() {
@Override
public MyClass build() {
prebuild();
return super.build();
}
};
}

В prebuild() или просто кодом засовываем все, что хотели.
Вот и вся магия.

А вы используете Lombok?
Какую аннотацию считаете самой волшебной?
👍8
Трудовые будни

Сегодня кратко...
На работе выдали лицензию на IntelliJ IDEA 🥳
Обновился до 2022.2.5

Конечно, сейчас доступна 2023.1.3, но пока скачивать не стал.
Не люблю эксперименты по вторникам😆

А у вас есть лицензия?
А может кто другой IDE пользуется?

#idea
4
🎓Развитие

Сегодня сделал первые шаги в изучении Kafka.
Несмотря на то, что это было запланировано давно.

Теперь могу ответить на несколько базовых вопросов:
- Что такое кафка?
- Чем она отличается от очередей?
- Какова структура данных?
- Как кафка масштабируется? (хотя бы теоретически)
- Что такое группы консьюмеров?

Конечно же, сделал в книжечку заметочку

А у вас на проектах есть кафка?
Кто ее настраивал? Кто поддерживает?

#kafka
👏3
Медленно, но уверенно продолжаю двигаться по плану 🚑

Нарешал на leetcode 200 задачек!!! 🥳

Одной из последних и интереснейших была
139. Word Break 🤬🤯

Благодаря ей познакомился c префиксными деревьями и закрепил знания по ним 🛠🔨🔨

На подходе полиномиальные хэши 🙈

А у вас есть план, мистер Фикс?

#leetcode
🔥5👍4
Сегодня на конфе в Перми...
😜😝👍
🔥9👍2
🛠 Трудовые будни

Сегодня работу работаю не из дома, а из отелю в Москве.
А всё почему, а потому что завтра корпоратив 🔥🔥🔥

Тем кому интересны мои небольшие похождения можно смотреть тут
👍2