Всех с наступающим!!! 🎉
Этот год был богат на события. Эти события привели ко множеству перемен. Я, как адепт "глобального позитива", считаю, что все к лучшему 😜
А еще, у нас в семье есть традиция перед новым годом делать тазик имбирных печенек. 🍪🍪🍪
Одно из моих желаний, что бы это продолжалось как можно дольше. 🪄💫
Желаю всем здоровья и любви, молока и переченек!!! 🥳🥳🥳
Этот год был богат на события. Эти события привели ко множеству перемен. Я, как адепт "глобального позитива", считаю, что все к лучшему 😜
А еще, у нас в семье есть традиция перед новым годом делать тазик имбирных печенек. 🍪🍪🍪
Одно из моих желаний, что бы это продолжалось как можно дольше. 🪄💫
Желаю всем здоровья и любви, молока и переченек!!! 🥳🥳🥳
🔥5❤1👍1
🎓 Развитие
Медленно продолжаю продвигаться по по плану.
В курсе по SQL осталось два самых интересных раздела - Constraint и Index.
Так же удается найти время на легкие задачи с leetcode.
Последние заставили вспомнить алгоритм для поиска наибольшего общего делителя НОД (Greatest common divisor GCD), и найти красивую реализацию, прям как я люблю - с магией побитовых операций:
Медленно продолжаю продвигаться по по плану.
В курсе по SQL осталось два самых интересных раздела - Constraint и Index.
Так же удается найти время на легкие задачи с leetcode.
Последние заставили вспомнить алгоритм для поиска наибольшего общего делителя НОД (Greatest common divisor GCD), и найти красивую реализацию, прям как я люблю - с магией побитовых операций:
public static int gcd(int a, int b) {
if (b == 0) return a;
int i = a % b;
return gcd(b, i);
}👍2
🖥 Трудовые будни (1/3)
Недавно возникла необходимость спарсить csv файл.
Вроде бы простая задача. 🐥
Я быстренько списал следующее:
Но потом мне дали несколько файлов на тест - и мой парсер падает. 🤯
Небольшое расследование показало, что проблема в кодировке, но я к этому готов - предусмотрел поле
Сменил его значение с
(продолжение следует)
Недавно возникла необходимость спарсить csv файл.
Вроде бы простая задача. 🐥
Я быстренько списал следующее:
try (var fileReader = new BufferedReader(new InputStreamReader(file.getInputStream(), CHARSET));
var csvParser = new CSVParser(fileReader,
CSVFormat.EXCEL.withFirstRecordAsHeader()
.withIgnoreHeaderCase()
.withTrim()
.withDelimiter(';'))) {
for (CSVRecord csvRecord : csvParser.getRecords()) {
...
}
}
И вроде все заработало... Но потом мне дали несколько файлов на тест - и мой парсер падает. 🤯
Небольшое расследование показало, что проблема в кодировке, но я к этому готов - предусмотрел поле
CHARSET.Сменил его значение с
Charset.forName("Windows-1251") на StandardCharsets.UTF_8 и ожидал рабочего варианта...(продолжение следует)
🖥 Трудовые будни (2/3)
Ожидаемого рабочего варианта не получилось, все равно продолжало падать с ошибкой: 🤬
Проверял руками - значение есть, в списке ожидаемых тоже есть, в файле тоже совпадет.
Гуглеж в этот день почему-то к решению не привел, даже пришлось немного жаловаться коллегам.
В итоге, выяснил, что полученные файлы были в кодировке UTF-8 BOM !!! 🤘
С этим нужно было что-то делать...
(это еще не конец)
Ожидаемого рабочего варианта не получилось, все равно продолжало падать с ошибкой: 🤬
java.lang.IllegalArgumentException: Mapping for ... not found, expected one of [..., ..., ...]
at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:123) ~[commons-csv-1.8.jar:1.8]
at group.nwtn.broker.service.CsvService.parsingImport(CsvService.java:494) ~[classes/:na]
Проверял руками - значение есть, в списке ожидаемых тоже есть, в файле тоже совпадет.
Гуглеж в этот день почему-то к решению не привел, даже пришлось немного жаловаться коллегам.
В итоге, выяснил, что полученные файлы были в кодировке UTF-8 BOM !!! 🤘
С этим нужно было что-то делать...
(это еще не конец)
👍1
🖥 Трудовые будни (3/3)
BOM - Я надолго запомню, что значат эти три буквы!!! 🤦🏻♂️
BOM (BYTE ORDER MARK) - это несколько магических байтов, добавленных в начало файла для каких-то благих служебных целей. Так вот, не все умеют с ними работать.
В моём случае, использованный реадер просто добавлял эти символы в начало имени первого столбца. Это, естественно, приводило к несовпадению с ожидаемым значением.
Конечно, конвертация в безBOM решила проблему, но осадочек, как говорится, остался.
Чтобы в последствии избежать конвертации, решил добить проблему. Нашел доку, использовал класс BOMInputStream:
Повесил себе медальку за то, что разобрался. 🥇
(конец)
BOM - Я надолго запомню, что значат эти три буквы!!! 🤦🏻♂️
BOM (BYTE ORDER MARK) - это несколько магических байтов, добавленных в начало файла для каких-то благих служебных целей. Так вот, не все умеют с ними работать.
В моём случае, использованный реадер просто добавлял эти символы в начало имени первого столбца. Это, естественно, приводило к несовпадению с ожидаемым значением.
Конечно, конвертация в безBOM решила проблему, но осадочек, как говорится, остался.
Чтобы в последствии избежать конвертации, решил добить проблему. Нашел доку, использовал класс BOMInputStream:
var fileReader = new InputStreamReader(new BOMInputStream(file.getInputStream()), CHARSET);
При таком варианте без ошибок парсятся как файлы с BOM, так и без.Повесил себе медальку за то, что разобрался. 🥇
(конец)
👍5
🎓 Развитие
Стараюсь пройти тренировки по алгоритмам от Яндекса, так сказать, онлайн, делая все задания вовремя. Т.е. сдавать задачи до того, как появились новые, а не дожидаясь дедлайна. 🚀
Пока удается. 🤘
Из интересного - вчера узнал про устаревший класс StringTokenizer, который можно использовать как альтернативу для split().
Его единственный, но важный плюс - он работает быстрее, а это как раз то, что требовалось для задачи. ✅
Недавно закончилась лекция, которая лично для меня была самой интересной. Особенно часть про кучу.🔥
Самое сложное было слушать и одновременно отвечать на внезапно появившиеся у сына вопросы про CSS. Оказалось, не так то просто объяснять второкласснику на пальцах. Но, кажется, я справился с обеими задачами сразу😝
А вы чем занимаетесь в вечер пятницы❓
#algorithm_training
Стараюсь пройти тренировки по алгоритмам от Яндекса, так сказать, онлайн, делая все задания вовремя. Т.е. сдавать задачи до того, как появились новые, а не дожидаясь дедлайна. 🚀
Пока удается. 🤘
Из интересного - вчера узнал про устаревший класс StringTokenizer, который можно использовать как альтернативу для split().
Его единственный, но важный плюс - он работает быстрее, а это как раз то, что требовалось для задачи. ✅
Недавно закончилась лекция, которая лично для меня была самой интересной. Особенно часть про кучу.🔥
Самое сложное было слушать и одновременно отвечать на внезапно появившиеся у сына вопросы про CSS. Оказалось, не так то просто объяснять второкласснику на пальцах. Но, кажется, я справился с обеими задачами сразу😝
А вы чем занимаетесь в вечер пятницы❓
#algorithm_training
🔥3
Вчера ребенок закончил свой первый онлайн-курс:
Основы HTML и CSS.
Думаю, скоро доберемся до верстки первого сайтика.
Поэтому решил сделать подборку того, с чем стоит его на этом пути познакомить:
Базовый синтаксис EMMET
Несколько игрушек по CSS:
- Обед (CSS DINER)
- Лягуха (FLEXBOX FROGGY)
- Защита (FLEXBOX DEFENSE)
- Огород (GRID GARDEN)
Ну, и для себя еще добавлю пару шпаргалок по flexbox:
шпаргалка 1 и шпаргалка 2.
Основы HTML и CSS.
Думаю, скоро доберемся до верстки первого сайтика.
Поэтому решил сделать подборку того, с чем стоит его на этом пути познакомить:
Базовый синтаксис EMMET
Несколько игрушек по CSS:
- Обед (CSS DINER)
- Лягуха (FLEXBOX FROGGY)
- Защита (FLEXBOX DEFENSE)
- Огород (GRID GARDEN)
Ну, и для себя еще добавлю пару шпаргалок по flexbox:
шпаргалка 1 и шпаргалка 2.
🔥4
🎓 Развитие
Закончился мой яндекс-челендж
Все задачки решены. 🥇
Из-за сильной нехватки времени пришлось последние 10 задач делать, даже не посмотрев последние две лекции. 🤯
Пришлось понапрягаться, вспоминая dfs и bfs.
А последняя задача - вообще на вид как простыня сознания... 👻
👉 Для тех, кому интересно, сделал репозиторий, где можно посмотреть задания, и если кому будет интересно, мои решения.
Было, конечно, очень интересно, но...
НО!!!
НО-O-O-O!!!!!
БОЛЬШЕ НИКАКИХ ЧЕЛЕНДЖЕЙ!!! 🛑
По крайней мере в ближайшее время.
Надо хотя бы к осени завершить запланированное и добавить к нему задачки с предыдущих тренировок яндекса с просмотром лекций.
И сделать все по плану и без суеты.
А у вас всегда все идет по плану?
#algorithm_training
Закончился мой яндекс-челендж
Все задачки решены. 🥇
Из-за сильной нехватки времени пришлось последние 10 задач делать, даже не посмотрев последние две лекции. 🤯
Пришлось понапрягаться, вспоминая dfs и bfs.
А последняя задача - вообще на вид как простыня сознания... 👻
👉 Для тех, кому интересно, сделал репозиторий, где можно посмотреть задания, и если кому будет интересно, мои решения.
Было, конечно, очень интересно, но...
НО!!!
НО-O-O-O!!!!!
БОЛЬШЕ НИКАКИХ ЧЕЛЕНДЖЕЙ!!! 🛑
По крайней мере в ближайшее время.
Надо хотя бы к осени завершить запланированное и добавить к нему задачки с предыдущих тренировок яндекса с просмотром лекций.
И сделать все по плану и без суеты.
А у вас всегда все идет по плану?
#algorithm_training
🔥5❤3👍2👏2
⚒Трудовые будни
На работе происходит слияние. Некоторые структуры разделяются, некоторые объединяются.
GitLab и JIRA разработки переезжают. Короче, интересно наблюдать и слушать.
Что касается непосредственно меня:
1️⃣ Отдал свой сервис на тестирование.
Если все ок, то скоро будем выкатываться на прод.
2️⃣ Начался полномасштабный переезд всех сервисов на Yandex OS.
Одну задачу сделал - отдал в тестирование.
Если все ок, то буду делать следующие, если, конечно, их найду.
После переезда Jira не очень ко мне дружелюбна👹.
3️⃣ Архитектура замутила новую версию модульной библиотеки - особенность Spring Boot 3 и Java 17, соответственно.
Но это не самое интересное!
В новой модульной отказались от JPA в пользу JDBC.🤔
Пробую перевести свой сервис на нее. В некоторых местах приходится использовать JdbсTemplate. 😂
Для тех, кто тоже забыл - видосик от Алишева
Что-то мне подсказывает, что скоро все остальные сервисы мы тоже будем переводить на нее🥴.
На работе происходит слияние. Некоторые структуры разделяются, некоторые объединяются.
GitLab и JIRA разработки переезжают. Короче, интересно наблюдать и слушать.
Что касается непосредственно меня:
1️⃣ Отдал свой сервис на тестирование.
Если все ок, то скоро будем выкатываться на прод.
2️⃣ Начался полномасштабный переезд всех сервисов на Yandex OS.
Одну задачу сделал - отдал в тестирование.
Если все ок, то буду делать следующие, если, конечно, их найду.
После переезда Jira не очень ко мне дружелюбна👹.
3️⃣ Архитектура замутила новую версию модульной библиотеки - особенность Spring Boot 3 и Java 17, соответственно.
Но это не самое интересное!
В новой модульной отказались от JPA в пользу JDBC.🤔
Пробую перевести свой сервис на нее. В некоторых местах приходится использовать JdbсTemplate. 😂
Для тех, кто тоже забыл - видосик от Алишева
Что-то мне подсказывает, что скоро все остальные сервисы мы тоже будем переводить на нее🥴.
👍3
🎓 Развитие
🗒 Год новый - план старый
Итак, возвращаюсь к намеченному плану.
Сегодня наконец-то закончил курс по SQL 🥇 🥳
Конечно, сертификат я получать не пойду, но силы в себе чувствую!!! 🤘
Конечно же, сделал заметочки в книжечке. 📖 ✍️
Мне сегодня некоторые сказали, что SQL это вчерашний день - что думаете?
Какие есть альтернативы?
🗒 Год новый - план старый
Итак, возвращаюсь к намеченному плану.
Сегодня наконец-то закончил курс по SQL 🥇 🥳
Конечно, сертификат я получать не пойду, но силы в себе чувствую!!! 🤘
Конечно же, сделал заметочки в книжечке. 📖 ✍️
Мне сегодня некоторые сказали, что SQL это вчерашний день - что думаете?
Какие есть альтернативы?
👍6
⚒ Трудовые будни
У нас ввели дресс-код 🤘
а точнее - общие правила для написания кода 🔥
Внутренние и технические установки я опущу 🤫
🔸 Введен code style & code quality
Прям первой строчкой - основываясь на принципах чистого кода - и ссылочка
Подняли SonarQube (это я люблю)
В IDEA обязательно CheckStyle и SonarLint
🔸 Обязательное использование JavaDoc (и это люблю)
🔸 Так же рекомендовано покрытие тестами до 80%
(с этим пока туго)
🔸 Swagger UI делаем на SPRINGDOC
(с этим уже разобрался)
🔸 Формат записи SQL
Тут тоже прям как я люблю: ключевые UPPERCASE, имена snake_case.
Так что переучиваться не придется.
🔸Сообщение коммитов на русском
Пожалуй, единственное, что меня не порадовало.
А у вас на работе следят за чистотой кода? Если да, то как?
У нас ввели дресс-код 🤘
а точнее - общие правила для написания кода 🔥
Внутренние и технические установки я опущу 🤫
🔸 Введен code style & code quality
Прям первой строчкой - основываясь на принципах чистого кода - и ссылочка
Подняли SonarQube (это я люблю)
В IDEA обязательно CheckStyle и SonarLint
🔸 Обязательное использование JavaDoc (и это люблю)
🔸 Так же рекомендовано покрытие тестами до 80%
(с этим пока туго)
🔸 Swagger UI делаем на SPRINGDOC
(с этим уже разобрался)
🔸 Формат записи SQL
Тут тоже прям как я люблю: ключевые UPPERCASE, имена snake_case.
Так что переучиваться не придется.
🔸Сообщение коммитов на русском
Пожалуй, единственное, что меня не порадовало.
А у вас на работе следят за чистотой кода? Если да, то как?
👍4❤1
Обожаю Яндекс 🥳
Сегодня был день раздачи призов за Тренировки 🏆
Пришло письмо, открываю, а там поздравляют Маслова Михаила... 🤦🏻♂️
Расстроился, думаю накосячили и исправить не допросишься. Забил... 😢
Приходит второе письмо. :
В нем тоже сертификат... И тоже не мой!!! 🙈
Настроение поднялось 🎶
Но когда пришел третий, я был уже заинтригован.
Думаю сколько там Масловых может быть ⁉️ 🥴
С какого раза угадают? :🎰
На третьем сертификате мое имя, но мой ли это сертификат - вопрос остается открытым! 😜🤪
Т.к. я точно знаю, что в тренировках учавствовал мой тезка однофамилец. 🤝
Кстати думалось, что если решишь все задачи, то получишь сертификат с немного другой формулировкой. 💩
Короче, вилки нашлись, но осадочек остался. 😎
#algorithm_training
Сегодня был день раздачи призов за Тренировки 🏆
Пришло письмо, открываю, а там поздравляют Маслова Михаила... 🤦🏻♂️
Расстроился, думаю накосячили и исправить не допросишься. Забил... 😢
Приходит второе письмо. :
В нем тоже сертификат... И тоже не мой!!! 🙈
Настроение поднялось 🎶
Но когда пришел третий, я был уже заинтригован.
Думаю сколько там Масловых может быть ⁉️ 🥴
С какого раза угадают? :🎰
На третьем сертификате мое имя, но мой ли это сертификат - вопрос остается открытым! 😜🤪
Т.к. я точно знаю, что в тренировках учавствовал мой тезка однофамилец. 🤝
Кстати думалось, что если решишь все задачи, то получишь сертификат с немного другой формулировкой. 💩
Короче, вилки нашлись, но осадочек остался. 😎
#algorithm_training
😁4