⚒ Трудовые будни
В целом, это была рутинная неделя. Перевод на Яндекс S3.
При тестировании одной задачи обнаружил, что на контуре разработки, мягко говоря, невалидные данные😱.
Все знают, что "Кривые данные - это боль", но эта боль ни в коем случае не должна приводить "падению". А тестируемый сервис прям зацвел NPE и SQL ошибками⚠️.
Конечно, одним из простых решений запуститься было бы попросить девопсов прокатить базу, но мне это решение показалось сомнительным.🧐
С моей точки зрения, это очень неправильно. Даже при полном отсутствии данных сервис должен подняться и все части должны отработать. Да, в логах будет куча варнингов и ероров, но сервис не должен выкидывать 500 никогда.
По-хорошему, надо еще возвращать описание того, с чем случилась проблема📄, но в данной реализации это невозможно, поэтому будут только логи.
Словом, я потратил много времени, чтобы отловить и исправить эти ошибки.
А как бы вы поступили на моем месте?
В целом, это была рутинная неделя. Перевод на Яндекс S3.
При тестировании одной задачи обнаружил, что на контуре разработки, мягко говоря, невалидные данные😱.
Все знают, что "Кривые данные - это боль", но эта боль ни в коем случае не должна приводить "падению". А тестируемый сервис прям зацвел NPE и SQL ошибками⚠️.
Конечно, одним из простых решений запуститься было бы попросить девопсов прокатить базу, но мне это решение показалось сомнительным.🧐
С моей точки зрения, это очень неправильно. Даже при полном отсутствии данных сервис должен подняться и все части должны отработать. Да, в логах будет куча варнингов и ероров, но сервис не должен выкидывать 500 никогда.
По-хорошему, надо еще возвращать описание того, с чем случилась проблема📄, но в данной реализации это невозможно, поэтому будут только логи.
Словом, я потратил много времени, чтобы отловить и исправить эти ошибки.
А как бы вы поступили на моем месте?
👍3
Откровение сегодняшнего дня, или как сейчас модно говорить, инсайт.
В последние пару лет единственное ПО, за которое мне не жалко денег💸, это IntelliJ IDEA Ultimate.
Но недавно мне показали, что в ней можно дебажить.... стримы!!!
💣Стримы, вашужмать, стримы!!!
Это ж, блин, как узнать, что происходит внутри черной дыры!!!
Если кто-то не знает, как это делается, посмотрите это короткое видео.
Надеюсь, вы испытаете тот же восторг, что и я!!!🤩
В последние пару лет единственное ПО, за которое мне не жалко денег💸, это IntelliJ IDEA Ultimate.
Но недавно мне показали, что в ней можно дебажить.... стримы!!!
💣Стримы, вашужмать, стримы!!!
Это ж, блин, как узнать, что происходит внутри черной дыры!!!
Если кто-то не знает, как это делается, посмотрите это короткое видео.
Надеюсь, вы испытаете тот же восторг, что и я!!!🤩
👍9
⚒ Трудовые будни
Как я уже говорил раньше, у нас ввели общие требования к коду 📋.
В том числе, обязательным стало наличие swaggera'а для api.
Мы используем sprigdoc.
Кстати, я недавно понял, почему💡. Оказывается, spingfox перестал поддерживать свой продукт с 2020.
Внезапно столкнулся со сложностью 🤬, что sprigdoc не хочет работать с spring boot 3.
Точнее, не так. На некоторых сервисах после апдейтов версий компонентов, sprigdoc перестал работать - просто тихо возвращал 404 и все 👀.
Метод тыка и чтение инета прояснили, что у sprigdoc есть версии:
Версия 1 хорошо работает со spring boot 2, но не работает с третьей, не выдавая никаких ошибок.
Версия 2 как раз заточена под третий спринг-бут.
При подключении второй версии, там где перестало работать, вообще перестало запускаться из-за конфликта версий, потому что первая была "приколочена" в модульной библиотеке..
Пришлось научиться исключать часть внутри зависимости и внести изменения в модульную. 🏅
Про то как использовать можно прочитать у меня в заметках.
Как я уже говорил раньше, у нас ввели общие требования к коду 📋.
В том числе, обязательным стало наличие 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.
💡 Оказывается, если просто использовать
Единственная сложность - это стили. Насколько я успел поэкспериментировать, работают только атрибуты в тегах, и туда, вроде, можно подсовывать стили.
Но и с тут не все просто. 🤦🏻♂️
Локально (в идее) стили полностью работают, а на гитхабе, например, часть не применяется.
Разбираться с этим не стал, т.к. основная цель достигнута и есть задачи по-важнее и по-интереснее.
Однако то, что постиг - хоть мелочь, а приятно!
Какие приятные мелочи случились с вами за последнее время❓
Как-то давно возникла проблема с тестом в markdown - нужно было вставить несколько строчек в одну ячейку таблицы. 🤯
Как сделать это стандартными методами, я не разобрался 😢
A, точнее, невнимательно читал:
Mожно смешивать Markdown и HTML.
Можно и наоборот, внутри HTML-тегов использовать Markdown.
💡 Оказывается, если просто использовать
<table>, то никакой проблемы нет!!!Единственная сложность - это стили. Насколько я успел поэкспериментировать, работают только атрибуты в тегах, и туда, вроде, можно подсовывать стили.
Но и с тут не все просто. 🤦🏻♂️
Локально (в идее) стили полностью работают, а на гитхабе, например, часть не применяется.
Разбираться с этим не стал, т.к. основная цель достигнута и есть задачи по-важнее и по-интереснее.
Однако то, что постиг - хоть мелочь, а приятно!
Какие приятные мелочи случились с вами за последнее время❓
👍4
⚒ Трудовые будни
Одна из часто используемых аннотаций lombok - это Builder🥳
Написал цепочку,
Мне пришлось добавлять в объект данные, основываясь на состоянии этого объекта 🧐
Все поля у меня были final, setter'ов тоже не планировалось. Пришлось "колхозить", чтобы выполнить задачу 💩
Ну, должен же быть какой-то метод, который выполняется перед сборкой, но в ломбоковских методах я ничего подобного не нашел. 😢
💡 Тогда я подумал, а что, если переопределить сам метод build()?
Небольшой гуглеж - и решение найдено:
Создаем статический метод в нашем MyClass, возвращаем сгенерированный билдер с переопределенным build().
И все...
Вот и вся магия. ✨
А вы используете Lombok?
Какую аннотацию считаете самой волшебной?
Одна из часто используемых аннотаций 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
Сегодня кратко...
На работе выдали лицензию на IntelliJ IDEA 🥳
Обновился до 2022.2.5
Конечно, сейчас доступна 2023.1.3, но пока скачивать не стал.
Не люблю эксперименты по вторникам😆
А у вас есть лицензия?
А может кто другой IDE пользуется?
#idea
❤4
🎓Развитие
Сегодня сделал первые шаги в изучении Kafka.
Несмотря на то, что это было запланировано давно.
Теперь могу ответить на несколько базовых вопросов:
- Что такое кафка?
- Чем она отличается от очередей?
- Какова структура данных?
- Как кафка масштабируется? (хотя бы теоретически)
- Что такое группы консьюмеров?
Конечно же, сделал в книжечку заметочку
А у вас на проектах есть кафка?
Кто ее настраивал? Кто поддерживает?
#kafka
Сегодня сделал первые шаги в изучении Kafka.
Несмотря на то, что это было запланировано давно.
Теперь могу ответить на несколько базовых вопросов:
- Что такое кафка?
- Чем она отличается от очередей?
- Какова структура данных?
- Как кафка масштабируется? (хотя бы теоретически)
- Что такое группы консьюмеров?
Конечно же, сделал в книжечку заметочку
А у вас на проектах есть кафка?
Кто ее настраивал? Кто поддерживает?
#kafka
👏3
Медленно, но уверенно продолжаю двигаться по плану 🚑
Нарешал на leetcode 200 задачек!!! 🥳
Одной из последних и интереснейших была
139. Word Break 🤬🤯
Благодаря ей познакомился c префиксными деревьями и закрепил знания по ним 🛠🔨🔨
На подходе полиномиальные хэши 🙈
А у вас есть план, мистер Фикс?
#leetcode
Нарешал на leetcode 200 задачек!!! 🥳
Одной из последних и интереснейших была
139. Word Break 🤬🤯
Благодаря ей познакомился c префиксными деревьями и закрепил знания по ним 🛠🔨🔨
На подходе полиномиальные хэши 🙈
А у вас есть план, мистер Фикс?
#leetcode
🔥5👍4
🛠 Трудовые будни
Сегодня работу работаю не из дома, а из отелю в Москве.
А всё почему, а потому что завтра корпоратив 🔥🔥🔥
Тем кому интересны мои небольшие похождения можно смотреть тут
Сегодня работу работаю не из дома, а из отелю в Москве.
А всё почему, а потому что завтра корпоратив 🔥🔥🔥
Тем кому интересны мои небольшие похождения можно смотреть тут
👍2
🛠 Трудовые будни
Всем привет!
Вчера мне дали задачу по кафке!!!
Что имеем:
Первый сервис создает запись в БД, а другой ее должен апдейтить.
Запись и апдейт происходят через другой сервис.
Эти сервисы комуницируют через кафку. 🪄💫✨
Проблема:
Так вот, бывает такая фигня, что апдейт прилетает раньше, чем создание и все ломается. 🤬
Предполагаемое решение:
Ждать ответа от сервиса записи в первом сервисе, и после получения отправлять сообщение во второй с разрешением на апдейт. 🤞
На обсуждении мне сказали: "Все очень просто! (тут уже стало страшно) Создаешь топик, в первом продюсер, во втором консьюмер. Делаешь логику. И все..." 🤦♂️
Чтож, пошел делать 😬
Всем привет!
Вчера мне дали задачу по кафке!!!
Что имеем:
Первый сервис создает запись в БД, а другой ее должен апдейтить.
Запись и апдейт происходят через другой сервис.
Эти сервисы комуницируют через кафку. 🪄💫✨
Проблема:
Так вот, бывает такая фигня, что апдейт прилетает раньше, чем создание и все ломается. 🤬
Предполагаемое решение:
Ждать ответа от сервиса записи в первом сервисе, и после получения отправлять сообщение во второй с разрешением на апдейт. 🤞
На обсуждении мне сказали: "Все очень просто! (тут уже стало страшно) Создаешь топик, в первом продюсер, во втором консьюмер. Делаешь логику. И все..." 🤦♂️
Чтож, пошел делать 😬
🔥7
Ровно год назад я вышел на текущую работу, и мне до сих пор нравится. 🥳
Очень приятно когда люди вокруг обременены интеллектом. Кстати коллектив достаточно молодой и активный 🏀🏂⛷🏄♂️🚴
Большинство задач интересные и не "кровавые". 💥
Из до сих пор не познанного из благ это ДМС и премии.
Думаю что всё и впереди. 😁
Не могу сказать что я сильно вырос за этот год, но то что точно стал увереннее в своих знаниях, это точно. 🧐
На вопрос: Рассматриваете предложения о смене места?
Я искренне отвечаю: Нет!
А вам нравится где вы работаете и какими задачами занимаетесь?
Очень приятно когда люди вокруг обременены интеллектом. Кстати коллектив достаточно молодой и активный 🏀🏂⛷🏄♂️🚴
Большинство задач интересные и не "кровавые". 💥
Из до сих пор не познанного из благ это ДМС и премии.
Думаю что всё и впереди. 😁
Не могу сказать что я сильно вырос за этот год, но то что точно стал увереннее в своих знаниях, это точно. 🧐
На вопрос: Рассматриваете предложения о смене места?
Я искренне отвечаю: Нет!
А вам нравится где вы работаете и какими задачами занимаетесь?
👍7
🎓 Развитие
Вчера внезапно попал на беседу о SOLID. И понял, что такие беседы будут еженедельными в рамках подготовки меня к повышению грейда. 🙈
Дома как раз почти закончил ремонт, поэтому можно безнаказанно переключиться на учёбу. 😜
А раз так - сегодня утро начал с покупки новой книжечки. 📖
А что вы сейчас читаете или учите?
#algorithm
Вчера внезапно попал на беседу о SOLID. И понял, что такие беседы будут еженедельными в рамках подготовки меня к повышению грейда. 🙈
Дома как раз почти закончил ремонт, поэтому можно безнаказанно переключиться на учёбу. 😜
А раз так - сегодня утро начал с покупки новой книжечки. 📖
А что вы сейчас читаете или учите?
#algorithm
👍6
🎓 Развитие
Утром прочитал первую главу 🤔
Пока ничего нового не узнал 🤗
Но заметочку все же сделал 🤭
Кто по картинке угадает что за алгоритм?
#algorithm
Утром прочитал первую главу 🤔
Пока ничего нового не узнал 🤗
Но заметочку все же сделал 🤭
Кто по картинке угадает что за алгоритм?
#algorithm