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

Как я уже говорил раньше, у нас ввели общие требования к коду 📋.
В том числе, обязательным стало наличие 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
🛠 Трудовые будни

Всем привет!

Вчера мне дали задачу по кафке!!!

Что имеем:
Первый сервис создает запись в БД, а другой ее должен апдейтить.
Запись и апдейт происходят через другой сервис.
Эти сервисы комуницируют через кафку. 🪄💫

Проблема:
Так вот, бывает такая фигня, что апдейт прилетает раньше, чем создание и все ломается. 🤬

Предполагаемое решение:
Ждать ответа от сервиса записи в первом сервисе, и после получения отправлять сообщение во второй с разрешением на апдейт. 🤞

На обсуждении мне сказали: "Все очень просто! (тут уже стало страшно) Создаешь топик, в первом продюсер, во втором консьюмер. Делаешь логику. И все..." 🤦‍♂️

Чтож, пошел делать 😬
🔥7
Ровно год назад я вышел на текущую работу, и мне до сих пор нравится. 🥳

Очень приятно когда люди вокруг обременены интеллектом. Кстати коллектив достаточно молодой и активный 🏀🏂🏄‍♂️🚴

Большинство задач интересные и не "кровавые". 💥
Из до сих пор не познанного из благ это ДМС и премии.
Думаю что всё и впереди. 😁

Не могу сказать что я сильно вырос за этот год, но то что точно стал увереннее в своих знаниях, это точно. 🧐

На вопрос: Рассматриваете предложения о смене места?
Я искренне отвечаю: Нет!

А вам нравится где вы работаете и какими задачами занимаетесь?
👍7
🎓 Развитие

Вчера внезапно попал на беседу о SOLID. И понял, что такие беседы будут еженедельными в рамках подготовки меня к повышению грейда. 🙈

Дома как раз почти закончил ремонт, поэтому можно безнаказанно переключиться на учёбу. 😜

А раз так - сегодня утро начал с покупки новой книжечки. 📖

А что вы сейчас читаете или учите?

#algorithm
👍6
🎓 Развитие

Утром прочитал первую главу 🤔

Пока ничего нового не узнал 🤗

Но заметочку все же сделал 🤭

Кто по картинке угадает что за алгоритм?

#algorithm
Если кому интересно можете присоединятся
идет прямо сейчас 😏
🎓 Развитие

Осень. Яндекс. Алгоритмы.

Кто хочет пошевелить мозгами присоединяйтесь! 🥳

В прошлом году было очень весело и интересно.
Надеюсь что в это они придумают что-то не менее увлекательное!!! 🤞

И сразу - на финальный спринт я не пойду. 🙈

#algorithm_training
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
🎓 Развитие

Пара инсайтов на тему "Учите матчасть!"

И так задача первая
список каких либо элементов надо "нарезать кусками".

Конечно нужно написать свой метод и гордится, до тех пор пока не узнаешь про класс ListUtils из пакета org.apache.commons.collections4
и его метод:
partition(List<T> list, int size)

После этого просветленный удаляешь 40 строк своего уже не столь восхитительного кода и заменяешь его одной строкой.

Задача вторая
Есть мапа из которой надо всегда получать какое-то значение, т.е. если такого ключа нет, то надо вернуть значение какого близкого ключа.

Что делал я, и тоже гордился собой, как хранилище использовал HashMap и хранил ключи в отсортированном массиве, искал в нем бинарным поиском ключ и если не находил, то брал ключ на котором остановился поиск.

Но после того как узнаешь про методы TreeMap:
floorKey(K obj), lowerKey(K obj) и higherKey(K obj)
можно много строчек по удалять.
До сих пор не понимаю, как я их пропустил мимо ушей, но спасибо задачкам на литкоде...

#учитематчасть
🔥7
23. Merge k Sorted Lists

Сегодня внезапно порешал и главное решил хародовую задачу. 🥳

Получилось не сразу.
Сначала пошел в лоб - загонял элементы в массив и его сортировал. А уже из него брал меньший и засовывал в результирующий список.
Получилось плохо и по времени и по памяти. 🤦‍♂️

Потом после поиска структур данных, которые хранят отсортированные данные попробовал PriorityQueue - и сразу улучшил время почти в три раза.
Но дойти до заветных 4мс так и не смог. 🤔

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

А вы решали эту задачу
🔴 23. Merge k Sorted Lists?

#leetcode #algorithm
👍3