К новостям спорта. Несмотря на плотную загрузку по рабочим проектам, неделя ознаменовалась двумя значимыми вехами в физкультуре📺
1. В среду на контрольном заплыве на 1 км внезапно для себя (реально не ожидал) шлифанул собственный личный рекорд на 18 секунд - стало 17:05. Чтобы вы понимали масштаб этой мелочи для меня, вот статистика предыдущих заплывов этой же серии:
Правда, треть дистанции плыл плотно вслед за другим пловцом, что заставило снова задуматься о роли драфтинга в плавании, но кого это волнует🤓
2. Сегодня принял участие в местном лыжном старте коньком на 30 км. Бежал в формате длительной тренировки, не на скорость. Старт и так не обещал быть лёгким (набор высоты 600 м), а тут ещё полночи и всё утро валил снег, и трассу немножечко(ваще капец по уши) занесло, и скольжение оказалось, мягко говоря, не очень. И если обычно на больших спусках я смотрю только в лыжню, чтобы не вылететь из неё на скорости, то сегодня вполне успевал любоваться красотами заснеженного леса. Основная цель - не помереть там - выполнена, и вполне уверенно; боялся, что будет хуже. Опять же для понимания: из 111 заявившихся лыжников до финиша добрались только 93: кто-то сошёл, а кто-то, возможно, не стартовал вовсе (и правильно сделал🤪)
А вечером после гонки вновь ощутил, как это здорово - растечься в офисном кресле и тихонько постукивать пальцами по клавишам, не махая руками и не толкаясь ногами по пухлому снегу на морозе. Всё познаётся в сравнении 🙃
#спорт
1. В среду на контрольном заплыве на 1 км внезапно для себя (реально не ожидал) шлифанул собственный личный рекорд на 18 секунд - стало 17:05. Чтобы вы понимали масштаб этой мелочи для меня, вот статистика предыдущих заплывов этой же серии:
2018 (декабрь) – 19:23
2019 (декабрь) – 19:39
2020 (декабрь) – 19:13
2021 (декабрь) – 19:42
2022 (декабрь) – 20:13
2023 (декабрь) – 18:53
2024 (июнь) – 17:28
2025 (февраль) – 17:05
Правда, треть дистанции плыл плотно вслед за другим пловцом, что заставило снова задуматься о роли драфтинга в плавании, но кого это волнует🤓
2. Сегодня принял участие в местном лыжном старте коньком на 30 км. Бежал в формате длительной тренировки, не на скорость. Старт и так не обещал быть лёгким (набор высоты 600 м), а тут ещё полночи и всё утро валил снег, и трассу немножечко
А вечером после гонки вновь ощутил, как это здорово - растечься в офисном кресле и тихонько постукивать пальцами по клавишам, не махая руками и не толкаясь ногами по пухлому снегу на морозе. Всё познаётся в сравнении 🙃
#спорт
🔥7
Я долгое время думал, что PlantUML нужен только для рисования диаграмм последовательности (их ещё называются сиквенсами).
Но несколько лет назад при работе над Интернет-банком столкнулся с хитрым багом в интеграции с банковской системой через БД — там для выявления причины нужно было как-то визуализировать хитросплетение состояний потоков в терминах выполняемых ими бизнес-действий 🧶
Уже не помню как, но я вышел на тот же PlantUML, только со стороны диаграмм тайминга — это такие картинки, где над осью времени располагаются несколько полосок, описывающих изменения состояний элементов системы (или участников процесса) друг относительно друга во времени (см. примеры). Они чем-то похожи на визуализацию потоков в VisualVM и на диаграммы Гантта. Как и сиквенсы, они генерируются на основе специальной нотации, синтаксис которой оказался достаточно прост, чтобы генерировать её прямо из кода обычным `StringBuilder`ом, примерно так:
Тогда набор сгенерённых таким образом картинок действительно помог найти причину и устранить докучавший всем баг. А намедни этот же инструмент пригодился снова — с его помощью удалось визуализировать состав, порядок и времена взаимодействий между компонентами модели данных low-code платформы (вторая картинка). В светлом будущем эти данные будут отображаться на фронте крутым графом с блекджеком и шлюзами, но, пока идут сугубо фундаментные работы, смотреть на формируемый результат уже как-то надо 👁
В общем, советую взять этот инструмент на заметку. Кстати, у PlantUML есть не только удобный плагин для IDEA, но и собственный онлайн-редактор, так что первое знакомство можно осуществить весьма быстро и просто 🪆
Но несколько лет назад при работе над Интернет-банком столкнулся с хитрым багом в интеграции с банковской системой через БД — там для выявления причины нужно было как-то визуализировать хитросплетение состояний потоков в терминах выполняемых ими бизнес-действий 🧶
Уже не помню как, но я вышел на тот же PlantUML, только со стороны диаграмм тайминга — это такие картинки, где над осью времени располагаются несколько полосок, описывающих изменения состояний элементов системы (или участников процесса) друг относительно друга во времени (см. примеры). Они чем-то похожи на визуализацию потоков в VisualVM и на диаграммы Гантта. Как и сиквенсы, они генерируются на основе специальной нотации, синтаксис которой оказался достаточно прост, чтобы генерировать её прямо из кода обычным `StringBuilder`ом, примерно так:
@startuml
concise "CDAS_FETCH_EVENT" as CDAS_FETCH_EVENT
scale 30 as 100 pixels
title connector.log
0 is {hidden}
@CDAS_FETCH_EVENT
0 is 80 : db
+80 is {-}
@enduml
Тогда набор сгенерённых таким образом картинок действительно помог найти причину и устранить докучавший всем баг. А намедни этот же инструмент пригодился снова — с его помощью удалось визуализировать состав, порядок и времена взаимодействий между компонентами модели данных low-code платформы (вторая картинка). В светлом будущем эти данные будут отображаться на фронте крутым графом с блекджеком и шлюзами, но, пока идут сугубо фундаментные работы, смотреть на формируемый результат уже как-то надо 👁
В общем, советую взять этот инструмент на заметку. Кстати, у PlantUML есть не только удобный плагин для IDEA, но и собственный онлайн-редактор, так что первое знакомство можно осуществить весьма быстро и просто 🪆
🔥5
В эти самые дни в стенах АкадемПарка проходит долгожданная конференция SnowOne, к которой мы начали готовиться ещё в августе прошлого года👣
Первый (студенческий) день выдался богатым на крутые доклады. Например, на этом фото выступает сам Роман Елизаров (экс.лид языка Котлин) с увлекательным и нереально широким по охвату докладом про дизайн языков программирования. Как будет запись, посмотрите хотя бы просто для расширения кругозора 🌏
Завтрашний (основной) день обещает быть ещё более насыщенным и интенсивным. Нам как программному комитету остаётся лишь пожелать спикерам удачи и, затаив дыхание, наблюдать за их выступлениями и первой реакцией аудитории. Пусть всё будет отлично🙏🏼
Первый (студенческий) день выдался богатым на крутые доклады. Например, на этом фото выступает сам Роман Елизаров (экс.лид языка Котлин) с увлекательным и нереально широким по охвату докладом про дизайн языков программирования. Как будет запись, посмотрите хотя бы просто для расширения кругозора 🌏
Завтрашний (основной) день обещает быть ещё более насыщенным и интенсивным. Нам как программному комитету остаётся лишь пожелать спикерам удачи и, затаив дыхание, наблюдать за их выступлениями и первой реакцией аудитории. Пусть всё будет отлично🙏🏼
🔥10❤3
Помимо роли ведущего на первом потоке конференции SnowOne, сегодня мне довелось ненадолго очутиться в роли стартапера и открыть своим выступлением так называемый EasyPitch — сессию коротких презентаций проектов на (пре)акселераторе А:Старт всё в том же АкадемПарке 💚
Множество прогонов моего питч-дека в одиночку сегодня утром никак не давали уложиться в положенные 3 минуты, а под давлением глаз слушателей и собственным волнением на сцене вдруг получилось успеть за 2:39. Несмотря на эту спешку и крайне низкую читаемость слайдов, эксперты всё же включили мой проект в число победителей и вручили приглашение на акселератор А:Старт 🕺
Объектом презентации стала та самая "мимолётная" разработка, о которой я заикался здесь еще в январе. Подробнее расскажу о ней отдельно, равно как и об основной части SnowOne; не переключайтесь 📻
Множество прогонов моего питч-дека в одиночку сегодня утром никак не давали уложиться в положенные 3 минуты, а под давлением глаз слушателей и собственным волнением на сцене вдруг получилось успеть за 2:39. Несмотря на эту спешку и крайне низкую читаемость слайдов, эксперты всё же включили мой проект в число победителей и вручили приглашение на акселератор А:Старт 🕺
Объектом презентации стала та самая "мимолётная" разработка, о которой я заикался здесь еще в январе. Подробнее расскажу о ней отдельно, равно как и об основной части SnowOne; не переключайтесь 📻
🔥8❤🔥3
Первые годы жизни сибирской Java-конференции SnowOne (в ПК которой я состою) выдались не простыми – каждый раз наступал момент (а то и несколько), когда приходилось взвешивать решение об отмене: то ковид, то война, то мобилизация, то внутренние неурядицы… 🥴
Завершившийся вчера 6-ой “выпуск” конференции с самого начала был одним из самых экспериментальных по организации и этим вообще не обещал быть гладким. Но вопреки опасениям таковым оказался. Нам не пришлось переносить даты, у нас не отвалился ни один спикер, слушателей было достаточно, партнёров и стендов – тем более. Даже как будто бы скучно, на первый взгляд. Но знаете, что я об этом думаю? Да НАКОНЕЦ-ТО, блин! 🥞
Как приятно было видеть множество увлечённых лиц участников, впитывающих речь спикеров, жарко спорящих с коллегами в коридорах или самозабвенно отвоёвывающих мерч на стендах партнёров! А ещё меня поразили разносторонние способности нынешних спикеров – мало того, что они реально шарят в сложнейших областях разработки и умеют об этом рассказывать, так они ещё и в “гражданской” жизни звездят: один играет на 8 музыкальных инструментах, второй собирает мебель как автомат, третий преуспевает в гиревом спорте… 🏋️
Похоже, нам удалась действительно ламповая конференция. С нетерпением ждём обратной связи участников и начинаем предвкушать подготовку к следующему разу 😋
Завершившийся вчера 6-ой “выпуск” конференции с самого начала был одним из самых экспериментальных по организации и этим вообще не обещал быть гладким. Но вопреки опасениям таковым оказался. Нам не пришлось переносить даты, у нас не отвалился ни один спикер, слушателей было достаточно, партнёров и стендов – тем более. Даже как будто бы скучно, на первый взгляд. Но знаете, что я об этом думаю? Да НАКОНЕЦ-ТО, блин! 🥞
Как приятно было видеть множество увлечённых лиц участников, впитывающих речь спикеров, жарко спорящих с коллегами в коридорах или самозабвенно отвоёвывающих мерч на стендах партнёров! А ещё меня поразили разносторонние способности нынешних спикеров – мало того, что они реально шарят в сложнейших областях разработки и умеют об этом рассказывать, так они ещё и в “гражданской” жизни звездят: один играет на 8 музыкальных инструментах, второй собирает мебель как автомат, третий преуспевает в гиревом спорте… 🏋️
Похоже, нам удалась действительно ламповая конференция. С нетерпением ждём обратной связи участников и начинаем предвкушать подготовку к следующему разу 😋
🔥7
Все эти (не)путёвые заметки с тегом #спорт, которыми я зашумлял здесь эфир с ноября прошлого года имели своей целью не только повыпендриваться (это самой собой), но и подвести повествование к этому дню — сегодня я пробежал свой первый лыжный марафон 50 км коньковым ходом. Это было в Томске, на 25-километровой лыжной трассе, которая проходит преимущественно по дорожкам Лагерного сада — большого городского парка на множестве уровней высокого берега реки Томь 🏞
С условиями гонки очень повезло: яркое зимнее солнышко, комфортный воздух, захватывающие виды на реку, широченная подготовленная трасса и, конечно, белоснежный катучий снег сделали старт приятным на всём протяжении (хотя под конец я сильно устал, и уже с трудом мог чему-либо радоваться). По организации тоже нареканий не было: старт проводится всего в 4-ый раз, но у команды много опыта проведения соревнований в других видах спорта, и это чувствуется, они молодцы 👏🏼
Финишировал за 2:55:56, став 149-ым из 213 лыжников в абсолюте и 22-ым из 31 в возрастной группе М35-39. Думаю, для первого раза пойдёт, ибо главной целью было вообще добежать, ведь раньше столько пробегать за один раз не доводилось. И приятно добавить в копилку новый вид марафона: на ряду с беговым в 2018-ом году в Москве и плавательным в 2021-м в Белово 🗳
На этом сезон отнюдь не окончен; март обычно максимально комфортен для гонок и длительных тренировок; надо восстановиться после этого старта и успеть пробежать что-нибудь ещё. Но главный старт сезона позади, и это жирная "✅"
P.S. Докину фоток после их публикации от фотографов.
С условиями гонки очень повезло: яркое зимнее солнышко, комфортный воздух, захватывающие виды на реку, широченная подготовленная трасса и, конечно, белоснежный катучий снег сделали старт приятным на всём протяжении (хотя под конец я сильно устал, и уже с трудом мог чему-либо радоваться). По организации тоже нареканий не было: старт проводится всего в 4-ый раз, но у команды много опыта проведения соревнований в других видах спорта, и это чувствуется, они молодцы 👏🏼
Финишировал за 2:55:56, став 149-ым из 213 лыжников в абсолюте и 22-ым из 31 в возрастной группе М35-39. Думаю, для первого раза пойдёт, ибо главной целью было вообще добежать, ведь раньше столько пробегать за один раз не доводилось. И приятно добавить в копилку новый вид марафона: на ряду с беговым в 2018-ом году в Москве и плавательным в 2021-м в Белово 🗳
На этом сезон отнюдь не окончен; март обычно максимально комфортен для гонок и длительных тренировок; надо восстановиться после этого старта и успеть пробежать что-нибудь ещё. Но главный старт сезона позади, и это жирная "✅"
P.S. Докину фоток после их публикации от фотографов.
🔥7❤2
Давайте поможем ребятам из JugRu в хорошем деле. Опрос большой, но проходится на одном дыхании, печатать практически не нужно, только ставить галочки.
🔥2
Forwarded from Кулешов разгоняет IT | AI
Друзья джависты и сочувствующие, очень нужна ваша помощь!
Мы тут в JUG хотим сделать доклад про тренды Java-мира в РФ. Это будет просто дичайший результат, если мы коллективными коммьюнити усилиями соберем хорошее количество ответов для нашего техрадара. И мне очень нужна ваша помощь: пожалуйста, пройдите опрос, чтобы мы могли сделать из этого уникальный, прикольный и клевый доклад.
И большая просьба, если у вас есть свой канал, помогите сообществу и сделайте репост, это правда важно нам для того, чтобы не тухнуть ♥️🙏
Мы тут в JUG хотим сделать доклад про тренды Java-мира в РФ. Это будет просто дичайший результат, если мы коллективными коммьюнити усилиями соберем хорошее количество ответов для нашего техрадара. И мне очень нужна ваша помощь: пожалуйста, пройдите опрос, чтобы мы могли сделать из этого уникальный, прикольный и клевый доклад.
И большая просьба, если у вас есть свой канал, помогите сообществу и сделайте репост, это правда важно нам для того, чтобы не тухнуть ♥️🙏
👍2🫡1
На недавнем митинге с командой, где большинство ребят заметно моложе меня, мы обсуждали реализацию drag-and-drop функционала в веб-интерфейсе нашей low-code платформы, и кто-то спросил: "Да кому вообще нужен этот DnD, если всё то же самое можно быстро и чётко сделать хоткеями?"
В ответ на это я попытался сострить и сказал, что в основном персонал заказчика этой фичи — далёкие от ИТ люди, которым гораздо проще освоить интерфейс, основанный на той же механике, что и раскладывание Косынки...
По возникшей немой паузе и последовавшим натянутым улыбкам коллег я понял, что снова нечаянно сверкнул невидимым нагрудным орденом "Старпёр".
А вы бы поняли, о чём речь?
На случай, если нет:ru.wikipedia.org/wiki/Microsoft_Solitaire
В ответ на это я попытался сострить и сказал, что в основном персонал заказчика этой фичи — далёкие от ИТ люди, которым гораздо проще освоить интерфейс, основанный на той же механике, что и раскладывание Косынки...
По возникшей немой паузе и последовавшим натянутым улыбкам коллег я понял, что снова нечаянно сверкнул невидимым нагрудным орденом "Старпёр".
А вы бы поняли, о чём речь?
На случай, если нет:
🤣12👍4
Любопытный кейс по производительности возник на прошлой неделе в одной из рабочих задач 🏭
Импорт смачного 27МБ-вого файла через браузер на сервер нашего приложения по веб-сокету занимал около 3,5 минут даже на локальной машине. Понятно, что протолкнуть такого жердяя по веб-сокету — это не мгновенье, но не сотни же секунд! 😨
Стал профилировать процесс импорта, чтобы понять, на что тратится время. Оказалось, что любопытнее смотреть не на время процессора, а на аллокации памяти — их в одном месте оказался просто неприличный объём (см. скриншот) 🧐
Дальше не составило труда понять, что автор этого кода (не я, честно) неудачно выбрал
Кстати, если хотите побольше узнать о том, как быстро решать такие проблемы, приходите на мой доклад "Путеводитель по профилированию приложений на JVM", который будет на конференции JPoint в Москве 4 апреля, а потом (в чуть иной версии) — на конференции Стачка в Ульяновске 19 апреля. Записи будут, но попозже; я сообщу 📌
Буду рад встрече! 🤗
Импорт смачного 27МБ-вого файла через браузер на сервер нашего приложения по веб-сокету занимал около 3,5 минут даже на локальной машине. Понятно, что протолкнуть такого жердяя по веб-сокету — это не мгновенье, но не сотни же секунд! 😨
Стал профилировать процесс импорта, чтобы понять, на что тратится время. Оказалось, что любопытнее смотреть не на время процессора, а на аллокации памяти — их в одном месте оказался просто неприличный объём (см. скриншот) 🧐
Дальше не составило труда понять, что автор этого кода (не я, честно) неудачно выбрал
ByteArrayOutputStream в качестве промежуточного буфера, а затем переписать эту логику на ByteBuffer. Импорт сократился до 5 секунд ⏱️Кстати, если хотите побольше узнать о том, как быстро решать такие проблемы, приходите на мой доклад "Путеводитель по профилированию приложений на JVM", который будет на конференции JPoint в Москве 4 апреля, а потом (в чуть иной версии) — на конференции Стачка в Ульяновске 19 апреля. Записи будут, но попозже; я сообщу 📌
Буду рад встрече! 🤗
👍5
У не погружённых в зимний #спорт людей идея катания на лыжах по замёрзшему водоему нередко вызывает отторжение: это опасно (там же лёд!) и это абсурдно — какие лыжи? Там же лёд! 🧊
Признаться, я и сам раньше так думал. Но пожив несколько лет в Новосибирском Академгородке в 10 минутах езды от Обского водохранилища (для краткости и важности мы зовём его морем), узнал, что всё не так однозначно ⚖️
Во-первых, выпадающий за зиму снег скапливается на твёрдом льду, как на поле. И хотя почти всю зиму он остаётся не пригоден для комфортного катания, ближе к концу зимы (у нас это конец марта/начало апреля) череда весенних оттепелей и заморозков превращает его в наст — твёрдое, плотное снежное покрытие, по которому можно быстро и приятно катить на лыжах ⛷
Во-вторых, к тому же времени средняя толщина льда в основной части моря составляет 1,5-2м. Этого достаточно, чтобы выдерживать не только легкоатлетов-лыжников, но и увесистых рыбаков, которые приезжают на рыбалку на мотособаках, снегоходах, а некоторые даже на джипах и микроавтобусах 🎣
Таким образом, конец марта и начало апреля, как правило, становятся вторым бархатным сезоном для лыжников. Когда на лыжной базе уже проталины шириной с трассу, на море ещё красота: относительно ровный катучий снег, хорошее сцепление, а главное — бескрайняя снежно-ледяная гладь и приветливое весеннее солнышко. Разумеется, так везёт далеко не всегда, но всё же бывает, и не редко ☀️
Познав эту прелесть однажды, я собрал группу единолыжников, и вот уже шестой год подряд мы ловим эти редкие денёчки и ранним воскресным утром отправляемся бороздить белоснежные просторы Обского моря. Маршрут всегда один и тот же — куда глаза глядят — поэтому он никогда не повторяется 🗺
В этом году строптивая зима и скоропостижная весна создали далёкие от идеальных условия катания, но их всё же хватило нам, чтобы с удовольствием прокатить 40 км (а кто-то и больше), напитаться ярким солнцем и свежим воздухом и с уверенностью заключить: даже если это была последняя тренировка в сезоне, она стала достойным его закрытием ✅
Признаться, я и сам раньше так думал. Но пожив несколько лет в Новосибирском Академгородке в 10 минутах езды от Обского водохранилища (для краткости и важности мы зовём его морем), узнал, что всё не так однозначно ⚖️
Во-первых, выпадающий за зиму снег скапливается на твёрдом льду, как на поле. И хотя почти всю зиму он остаётся не пригоден для комфортного катания, ближе к концу зимы (у нас это конец марта/начало апреля) череда весенних оттепелей и заморозков превращает его в наст — твёрдое, плотное снежное покрытие, по которому можно быстро и приятно катить на лыжах ⛷
Во-вторых, к тому же времени средняя толщина льда в основной части моря составляет 1,5-2м. Этого достаточно, чтобы выдерживать не только легкоатлетов-лыжников, но и увесистых рыбаков, которые приезжают на рыбалку на мотособаках, снегоходах, а некоторые даже на джипах и микроавтобусах 🎣
Таким образом, конец марта и начало апреля, как правило, становятся вторым бархатным сезоном для лыжников. Когда на лыжной базе уже проталины шириной с трассу, на море ещё красота: относительно ровный катучий снег, хорошее сцепление, а главное — бескрайняя снежно-ледяная гладь и приветливое весеннее солнышко. Разумеется, так везёт далеко не всегда, но всё же бывает, и не редко ☀️
Познав эту прелесть однажды, я собрал группу единолыжников, и вот уже шестой год подряд мы ловим эти редкие денёчки и ранним воскресным утром отправляемся бороздить белоснежные просторы Обского моря. Маршрут всегда один и тот же — куда глаза глядят — поэтому он никогда не повторяется 🗺
В этом году строптивая зима и скоропостижная весна создали далёкие от идеальных условия катания, но их всё же хватило нам, чтобы с удовольствием прокатить 40 км (а кто-то и больше), напитаться ярким солнцем и свежим воздухом и с уверенностью заключить: даже если это была последняя тренировка в сезоне, она стала достойным его закрытием ✅
🔥4🙊2