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

Теперь смогу работать стоя.

Покупал тут.
Еще есть код на скидку 10%. Пишите, если будет нужно.

Столешницу заказывал отдельно. Размер - 1400х800.

Минимальная высота стола - 640, максимальная - 1290.
На максимальной высоте не шатается.

Сейчас осталось решить несколько проблем:
1. Прикрепить системник к столешнице снизу.
Имеющиеся решения у эргостола мне не понравились каждое по своему.
2. Найти место принтеру.
Он стоял на полке над старым столом. Полку пришлось снять, чтобы освободить место для подъема.
3. Найти место сканеру.
Он стоял на системнике, который, в свою очередь, стоял справа от стола на полу.

Доволен покупкой как слон!!! 🤪

PS: Провода спрячу в органайзер - смонтирую после крепежа системника.
🔥6
Сейчас позвонили из СДЕКа и сказали, что в течение часа привезут посылку. 😲
Очень приятно, конечно, но я ничего не ждал... 🤭

Приехал курьер, отдал коробочку 🚚
С огромным интересом решил сразу открыть... ✂️

Судя по получателю и письму — явно не ошибка 😂
А внутри — бук
Magic book
Honor MagicBook X15 💻

И кто же этот загадочный благотворитель? Думаю, что ответ в конверте...
Вчера был первый рабочий день на новом месте
Газпромбанк Инвестиции, точнее Ньютон Инвестиции (в середине августа они переименовались) 🔥

Первые впечатления очень хорошие. 🤘
Все общаются на "ты". Поражает, что чего не коснись - все описано. 📚
Я первый раз за время работы программистом получил должностную инструкцию. 🔖
Есть схема компании, где четко написано, кто где работает и кому подчиняется. 👨‍⚕️👩‍⚕️👨‍🏭👩‍🏭

Есть специальный человек отвечающий за онбординг. 👧

Очень непривычно, что все, включая начальника департамента, сказали: "Если что — сразу пиши мне". 🤝

Используемые инструменты:
Slack, Confluence, Jira, Jitsi, и сервисы Яндекса ⚙️

Прямо в джире можно посмотреть блок-схему бизнес-процессов. 😜
Даже есть схема жизненного цикла задачи!!! 💫

Пока жду доступы, руководитель дал задание изучать структуру баз данных - и это опять же отдельные документы. 🥳

И вишенка на торте - с подписанными доками не надо бежать на почту!!!
Курьер из СДЕК пришел за доками прямо ко мне домой 🚚
3🔥2
Сегодня устанавливал телевизор младшему ребёнку в комнату. 📺

Пробросил электричество, антену и ЛВС. 🔌
Самым сложным оказалось не проложить под ламинатом кабель-канал, в который легло все это коммуникационное хозяйство, а поставить розетку и обжать кабель UTP. 🛠
Инструментом лет 10 не пользовался, а последовательность обжима вообще в инете искать пришлось... 😜

Старею и теряю былую лёгкость? 🤣
👍2😁1
Сегодня на дейли сказали, что 26го переезжаем со Slack на Rocket.Chat 🤭

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

Если кто пользовался Rocket.Chat — скажите, как вам?

Кстати, пока сижу и ничего не делаю - жду доступы 🌴🌴🌴
👍1
Первая рабочая неделя
Подходит к концу первая рабочая неделя.

В понедельник дали все доступы.

Во вторник - новую задачу:
Отправить уведомления в операционный саппорт, если клиент закрывает последний счет.
В целом ничего сложного, просто пришлось разбираться с конфигурационным сервисом, который раздает проперти всем остальным сервисам.

В среду "ковырялся" - разбирался, как работают сервисы нотификации и отправки email'a. Все оказалось, прям, как я люблю - через билдеры.

В четверг в обед сдал код, через пару часов получил код-ревью. В целом ошибки были связанны с невнимательностью: косяк в паттерне форматера, потерянный перенос в темплейте письма.
Остальное про конфигурирование и логирование по-уму )))

В пятницу доделывал исправления и конфигурации.
Сейчас все залил, жду, когда покажут, как передать в тестирование, но кажется, это будет на след неделе.

Из нового и интересного:
🔸Паттерн сага и про то, как просто объяснить, что такое хореография и оркестрация.
🔸Бутовая аннотация @ConfigurationProperties
👍2👏2
Ручное тестирование API

Недавно получил новую задачу на создание сервиса. О задаче отдельным постом позже.

Сегодня возникла необходимость ручного тестирования сервиса.

Я работаю на корпоративном ноуте. Хром в последнее время ведет себя не очень, поэтому решил поискать альтернативу расширению.

Посоветовали insomnia.
Нашел вокршоп на тему.
Из него узнал, что в insomnia можно использовать переменные окружения и плагины. Это очень облегчает тестирование.

Самое, пожалуй, интересное - использование результатов запросов в других запросах. Это прям круто!💥💥

Давно я не мог сказать хоть про что-то - рекомендую!!!⚡️
Уведомления в телеграмм с сайта

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

Поменял почту на яндекс — и все забегало...

За одно сделал так, чтобы инфа с форм приходила ей в телеграмм.
Оказалось все ну-у-у очень не сложно 😜

1️⃣ Создаем нового бота: t.me/botFather/start/newbot и в итоге получаем TOKEN

2️⃣ Узнаем ID своего аккаунта у t.me/userinfobot

3️⃣ Сcылка на API: https://api.telegram.org/bot[TOKEN]/sendMessage?chat_id=[ID]&text=[TEXT], получаем URL

4️⃣ И отправляем
<?php
file_get_contents(URL)

Дольше всего провозился с "украшением текста" - не мог понять, почему не срабатывает в тексте разметка HTML.
Оказалось просто: надо к запросу добавить &parse_mode=HTML или Markdown, но это кому как нравится.

Жена счастлива, а когда жена счастлива... Ну вы сами понимаете
👍4🔥2
Сообщение из Exel в Телеграмм.

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

Требовалось из экселя по нажатию кнопки отправить уведомление.

Создание бота и кода на VBA трудов не составило, однако не заработало...

В воскресенье удалось посидеть над задачей. Заставить работать MSXML2.XMLHTTP и еще пару каких-то вариантов не удалось.
В итоге написал bat-ник с параметрами, а в нем curl'ы. Честно говоря, первый раз за все время мне пригодились знания о curl.

Отдельная печаль была с энкодингом строки, т.к. в VBA встроенной функции нет.
Сначала хотел написать сам🤔, но потом быстро нашел место, где списать...

Сейчас все работает. С сегодняшнего дня начали пользоваться.
👍2🔥2
Эмодзи в сообщение телеграмм-бота

После вчерашней победы захотелось добавить красоты в сообщения телеграмм-бота 🌸

Из стандартного работает:
*жирное*
_подчеркивание_
~зачеркивание~
[текст_ссылки](ссылка)

Захотелось еще и смайликов повставлять.
Нашел замечательную табличку Emoji Unicode Tables, взял из нее код UTF-8 (только через %, а не \x) — и вот она красота!!!
🖥 Трудовые будни

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

Что было понято после первых двух раз из прочитанного ТЗ:
1️⃣Надо получить данные, сложить их в свою базу.
2️⃣Сделать кое-какую агрегацию по этим данным и сохранить.
3️⃣Создать из заполненных таблиц csv файлы.
4️⃣Сохранить их в облако.
5️⃣Получить файл-сценарий, распарсить и сохранить в базу.
6️⃣Согласно сценарию сделать расчет.

Пока всё ещё сижу на первом пункте. 🫣
Структура работы с базой сервиса готова. Но вот получение — это просто ужас какой-то!

На данный момент нужны данные где-то из 20 таблиц с нетривиальными взаимосвязями. Причём просто взять и вытащить всё данные к себе не вариант. Данных ооочень много, количество столбцов в таблицах — около ста и выше, в некоторых более 150 миллионов записей.

Несмотря на ужас происходящего 🤣, до конца недели все-таки рассчитываю получить рабочий вариант п.1
🎓 Развитие

До НГ (2023) планирую:
🔹 доделать оглавление в заметках для собесов;
🔹 доделать поиск по оглавлению;
🔹 добавить в заметки вопросы по хиберу, jpa, и sql;
🔹 закончить курс по Oracle SQL;
🔹 пройти курс по SPRING от DMDew;
🔹 просмотреть курс(интенсив) по KAFKA от Spurs;
🔹 нарешать до 300 задач на leetcode, сейчас 173.

Мне кажется, что запланировано не так много и есть реальный шанс это всё сделать.

#plans
🔥5👍3
🖥 Трудовые будни

Продолжаю пилить сервис.

Для работы с BigDecimal сказали использовать библиотеку big-math.

Возникла необходимость запилить SQL (для MS) запрос данных со сроком давности, т.е., например, за последние 3 месяца.
Самым эффективным оказалось использовать функцию вычисления разницы дат
DATEDIFF (в_чем_мерить, дата, дата)

Чтобы не забыть, текущая дата - GETDATE()

Самое веселое — это приведение строки к дате, т.к. в базе дата хранится как строка yyyyMMdd
CONVERT(DATE, VARCHAR)

Кстати, у последней множество стилей, которые надо указывать кодом, а не паттерном.

В обозримом будущем вижу несколько проблем:
- настройка доступа к нескольким БД,
- получение данных из стороннего сервиса, т.к. в нем, как я понял, нет пакетной обработки.

Неделя только началась, а голова уже кругом. 🤯
А как началась ваша неделя?
👍4
🖥 Трудовые будни

Как и предположил ранее - возникли проблемы 😜

Первая - доступ к нескольким БД. Шеф ее решил за час, просто создав апи 🤘

Вторая - получение данных из RuData. Тоже начала, вроде, решаться довольно бодро ✈️
Оказывается, у нас есть сервис-адаптер, который ходит, куда надо.
В него только следует подкинуть запрос - и все. Но когда подключил, все стало ломаться... 🤬🤯

Оказывается, данные, которые посылаю, вызывают в недрах стороннего сервиса 500-ю 🧨🧨🧨

Конечно, было бы приятнее увидеть что-то вроде 400 Bad Request, ну, да бог им судья 💩⚖️🎂

Буду завтра с утра мучить аналитика... 🎷🎻🎺

А пока пойду и выпью рюмку чаю что ли😜
👍2
🖥 Трудовые будни. Любовь дня - mapstruct.

Как говорил раньше, в моей текущей задаче достаточно толстые сущности. И основная печаль - большие конструкции по их созданию и апдейту. 🤧
Плюс, еще надо плодить сущности из имеющихся, но с небольшим уменьшением полей, а потом и их апдейтить. 🤮

Короче, этот бойлерплейт стал резать глаза. 📛 И тут я вспомнил про mapstruct. 💡

В разных источниках всегда звучало, что его используют для создания DTO из сущности, а мне надо сущность из сущности. 🤔
Вот я и решил, что если не получится, буду хоть дтохи клепать. 🙏🏻

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

Я получил, что хотел, но потом наткнулся на информацию, что можно еще делать и апдейтеры. Интересненько! 🧐

📅 Итог - буду переделывать все на маперы, и если получится, сделаю апдейты.

Кстати, если не надо мапить какое-то поле, то его можно заигнорить.

А вы как мапите и апдейтите толстые сущности?
Может есть что-то еще интересное?
👍6