Верхняя полка📝
362 subscribers
284 photos
11 videos
3 files
145 links
Путевые заметки программного инженера и легкоатлета-любителя.

Автор: Владимир @Toparvion Плизга

Домашняя страница: https://toparvion.pro/
Download Telegram
Нынче я тружусь над бэкендом российской интеграционной платформы AggreGate, которая используется, в том числе, как BMS — система управления зданиями 🏰

Наверняка вы замечали, как много в современных административных (да и жилых) зданиях всякого рода устройств: от приборов освещения и вентиляции до систем пожаротушения и управления доступом. И ведь всем этим нужно как-то управлять 🛞

Недавно прошёл открытый вебинар о внедрении платформы AggreGate в Лахта-Центре — комплексе зданий, включающем самый высокий небоскрёб в России и Европе (462 м, 87 этажей). На встрече один из моих коллег, а также представитель компании-интегратора рассказали о самом проекте внедрения, его основных технических решениях и особенностях 📺

Мне как разработчику, непосредственно причастному к развитию этой платформы, очень страшно приятно узнавать о таких внедрениях и поражаться их масштабности. Одно дело, когда ты запускаешь это всё на своём ноутбуке и играешься с виртуальными девайсами, но совсем другое, когда оно управляет сложнейшими системами огромного здания с сотнями людей внутри... 👷‍♂️

Пожалуй, всё-таки надо будет наведаться в Лахта-Центр на экскурсию при следующем визите в Петербург 🎯
🔥12👍6
А пока в Петербурге проходит #Java конференция Joker, в Новосибирске уже официально стартует подготовка к конференции SnowOne. Буду рад видеть вас в числе зрителей, а самых бесстрашных — в числе докладчиков (ссылка на CFP в сообщении ниже) 👇
👍2
Forwarded from SnowOne-канал
Всем привет!

А мы с хорошими новостями о SnowOne ❄️

– Следующий SnowOne состоится и пройдет 27 - 28 февраля 2026 года (опять попадаем в настоящие последние дни зимы!). Место проведения: Новосибирский Академпарк;
– В программе: студенческий и основной дни, как было в последние годы, идем по классике;
– В студенческий день будет 4 доклада, в основной – 15 (на 3-ех треках);

– В этом году очень хотим привлечь больше городских посетителей, поэтому постараемся организовать удобный трансфер;
– Продолжаем жить на новом сайте: https://snowone.ru (на нем, например, появился архив, как вы и просили);



Очень скоро мы начнем анонсировать первых спикеров и откроем продажу blind bird билетов, но уже сейчас можно сделать следующее:

1) Подать заявку на доклад через нашу форму cfp;
2) Подписать на нашу рассылку на сайте (внизу главной страницы), чтобы ничего не пропустить.



С нетерпением ждем февраля и уже напряженно работаем над программой! У нас очень много классных идей, уверены, что удивим вас в хорошем смысле)

Искренне ваши,
Команда SnowOne ⛄️
👍5
А тем временем, оказывается, вышел JUnit 6.0 — базовый фреймворк для тестирования всего, что плохо лежит или медленно движется написано на #Java 🎉

Обычно инкремент мажорной версии фреймворка подразумевает обратную несовместимость или вообще полный разлом всего и вся. JUnit переживал такой эпизод в своей жизни, когда 8 лет назад, будучи уже де-факто стандартом, анонсировал свою 5-ю версию. Несмотря на всякие migration guides и отдельный движок для запуска старых тестов (Vintage), во многих проектах так и осталось огромное наследие некогда написанных на JUnit 4 тестов, которые до сих пор некогда/неохота переписывать 🏚

В проекте AggreGate я всё же затеялся и мигрировал несколько тысяч модульных тестов с JUnit 4 (и даже 3!) на JUnit 5, поскольку это было нужно для автоматизации и унификации построения отчётов о тестах. Понятно, что вручную заниматься таким — самоубийство, поэтому я воспользовался OpenRewrite — движком автоматического рефакторинга; благо, в нём оказался целый раздел рецептов для миграции на JUnit 5 🪄

Если верить страничке Upgrading to JUnit 6.0, в этот раз таких подвигов не потребуется:
Migrating from JUnit 5.x.y to 6.0.0 should be much easier than migrating from 4.x to 5.x.

Самым главным изменением видится выбор Java 17 в качестве базовой версии JDK. В целом, это вполне ожидаемо, а то сколько ж можно сидеть на восьмёрке?! 🤪

Скромный список основных изменений можно посмотреть в официальных Release Notes. Чуть более разжёванное описание всех фич — вот в этой статье моего тёзки на Medium. А любителям кушать под бубнёж умных мужиков с Ютуба советую часовое интервью Марка Филиппа (главного контрибьютора JUnit) Андрею Беляеву, который, кстати, выступал у нас на конференции SnowOne (да ещё в офлайн!)
Приятного просмотра! 🍿
👍9🔥2
Давненько не было новостей про #спорт , а ведь есть что рассказать 👇

В минувшее воскресенье состоялся мой заключительный старт летнего бегового сезона 2025 — Юрманка трейл. Это забег на 35 (по факту 37) километров с набором высота около 1100 м (примерно 380 этажей) по окрестностям реки Бердь и посёлка Маслянино в Новосибирской области. И без того едва заметные тропинки этой трассы во многих местах совсем исчезли под слоем недавно выпавшего снега, поэтому организаторам пришлось размечать трассу "по-дикому": сквозь заросли, косогоры и лес. Вместе с переходящим в грязь снегом это добавило гонке ещё несколько "изюминок" 🚧

Относительно хорошие результаты на минувших в сентябре полумарафоне Раевича (21,1 км) и Альбатрос-трейле (18 км) вселили в меня надежду на то, что в Юрманке я тоже смогу пробежать хорошо, хоть это и пока рекордно большая для меня дистанция в трейлах. Поэтому весь прошлый месяц я целенаправленно готовился:
— выбирал, заказывал и тестировал экипировку (без неё к таким стартам не допускают);
— проверял разные варианты одежды, чтобы при 0 градусов было комфортно бежать 3-4-5 часов;
— и, конечно, тренировался на пересечёнке: по вечерам с фонариком бегал на лыжных имитационных кругах, по утрам в выходные чавкал в ручьях вокруг Академгородка, а как-то раз изрядно помесил свежезаснеженные подъёмы горно-лыжного комплекса

В объективных цифрах это дало, в целом, неплохой результат: я финишировал за 4 часа 18 минут, став 14-ым из 98 бежавших эту дистанцию мужчин и 7-ым из 32 в категории М30-39 🏆

Однако с точки зрения раскладки сил и, как следствие, полученных впечатлений на финише, этот старт, увы, обернулся для меня фиаско — после 28-го километра, когда закончилась серия крутых подъёмов, я с неприятным удивлением осознал, что ноги тоже "кончились" (мышцы забились). На тот момент я замыкал группу бодрых бегунов, при должной борьбе в которой я мог бы попасть в призы в своей возрастной категории. Мой расчёт был на то, что дальше, когда трасса будет уже более пологой, я смогу этим заняться. Но увы, вместо этого я стал от них отставать, а вскоре и вовсе начал переходить на шаг при малейших подъёмах, постепенно уступив ещё несколько позиций догнавшим меня участникам. В таком полупешем режиме я и дотошнил оставшиеся 8 км до финиша 🏁

Будь я профессиональным спортсменом или помешанным на результатах, я бы всё равно посчитал такой исход успешным, ведь трудность и усталость в таком случае — необходимое зло, которым можно пренебречь. Но поскольку я — любитель (от слова "любить", на минуточку), для меня принципиально важно испытывать позитив, в том числе во время гонок и на их финише. Однако едва ли можно любить находиться в таком состоянии, в каком я был после финиша этой гонки. Уж лучше оказаться далёким от лидеров, но сохранить способность радоваться происходящему, а не сидеть потом полчаса под деревом с языком на плече 😛

Как бы там ни было, опыт получен, работа над ошибками проведена, выводы сделаны. Тем интереснее будет сравнивать результаты в следующий раз 😉

P.S. Часть фото авторские, часть из Telegram-чата гонки, часть от фотографов.
🏆12🔥5
В начале октября я провёл новую серию тренингов по анализу производительности приложений на #JVM. Обратная связь собрана и обработана; можно повникать в результаты 🔎

Эта серия состояла из 5 занятий для двух групп, в которых суммарно было 17 участников. Первые три занятия были по тем же темам, что и раньше: работа с дампами потоков, с дампами памяти и с JFR, а последние два — по новой теме про профилирование, навеянной сделанным недавно докладом 🗣

И хотя общая средняя оценка по заполненным анкетам (8 из 17) получилась весьма неплохой — 9,8 из 10, проблемы и недоработки остаются налицо. В частности, немало затыков случилось "благодаря" корпоративной безопасности, причем даже там, где у прошлых групп в этой же компании всё было хорошо. Но и по моей части есть над чем поработать, особенно в новом тренинге по производительности, например, добавить пункт про установку JDK внутрь WSL для тех, кто хочет пощупать async-profiler на Windows, но не имеет IDEA Ultimate. Да и вообще выбор профайлера для практической части тренинга остаётся непростым открытым вопросом 🤔

Есть, конечно, и объективно приятные наблюдения, причём в каждой группе они свои. В первой группе меня очень порадовало то, что многие участники не поленились приехать из других городов (и даже соседней страны). А во второй — то, что она целиком состояла из тех, кто уже участвовал в моих тренингах в прошлом году и теперь пришёл снова, ведомый исключительно собственным опытом. Про себя я ласково называл их "мои рецидивисты" 🤪

В этот раз подготовка к этому интенсиву далась мне отнюдь нелегко; было много других важных активностей, конкурировавших за мои время и энергию. Но, судя по всему, на качестве материалов и их подаче это особо не сказалось. К тому же каждый новый заход позволяет чуть точнее спланировать тайминг, ещё раз вычитать слайды, подтюнить лабораторное приложение — словом, подшлифовать #тренинги и сделать их лучше 📈

Спасибо тем из вас, кто уже поучаствовал; ваши комментарии к этому посту будут очень ценными для меня и остальных! 🙏🏼

А тем, кто ещё только подумывает об участии, можно почитать описание тренингов (пока только 3 и 4) и задать уточняющие вопросы либо здесь, либо мне лично. Отличного вам дня! 🎈
🔥8🤝51
На днях прочёл студентам "Системного программирования" на МехМате НГУ третью лекцию по компьютерным сетям в рамках их спец.курса 🧑‍🎓

Лекция была посвящена безопасности сетей, поэтому в её начале я решил сделать обстоятельный обзор теоретических основ прикладной #криптографии. Однако это оказалось промашкой — уже на самой лекции выяснилось, что недавно у ребят прошёл целый курс криптографии, поэтому в этой теме они шарят не хуже, а возможно, и лучше меня. Но, по крайней мере, вторая часть лекции, где речь пошла уже о прикладных аспектах — инфраструктуре PKI, сертификатах X.509 и протоколе TLS — была для них в новинку и потому, надеюсь, полезной 🙏🏼

Зато, пока я готовился к первой части, нашёл статью в блоге CloudFront, где приведено самое человечное из когда-либо встречавшихся мне объяснений основ асимметричных схем RSA и EC (напомню/сообщу, что RSA держится на сложности факторизации больших чисел, а EC — на сложности дискретного логарифмирования). Конечно, большинство сугубо математических "интрижек" в статье всё же опущено, но вместо них приведены вполне понятные метафоры или пояснения. В общем, ответственно рекомендую к прочтению — приключение на 15-20 минут 📚😉
👍73
В сегодняшнем выпуске дайжджеста Java Annotated Monthly (от JetBrains), помимо новости о выходе Spring Boot 4 и Spring Framework 7, содержалась заметка о запуске Developer Productivity AI (DPAI) Arena — открытой площадки для измерения показателей и сравнения эффективности ИИ-агентов для разработки ПО 👨‍💻

По сути, это публичная арена для сопоставления возможностей инструментов ИИ-кодинга. На ней собраны 15 форков от известных opensource-проектов, представляющих примеры различных архитектур enterprise-приложений, и для каждого проекта подобран набор задач с четко описанным требуемым результатом, по которому выводится балл за решение (от 0 до 100) ⚖️

Примечательно, что в эти 15 проектов попал и Spring PetClinic REST — та самая модификация известного демо-приложения Spring PetClinic, которую я использую в своих тренингах. На скриншоте приведена задача по добавлению в неё кэширования наиболее частых запросов, с которой относительно (не)успешно справился агент Codex от OpenAI 🧠

К слову, этот же агент сейчас числится лидером в "турнирной таблице" DPAI Arena, но надо понимать, что площадка ещё только запускается, поэтому некоторых сильных участников на ней ещё попросту нет. Да и сами лабораторные проекты сейчас на 90% подобраны из мира JVM, поэтому слово "multi-language" в описании проекта надо воспринимать с поправкой на новизну 🚼

Инициатором, автором и пока что единственным разработчиком DPAI Arena является компания JetBrains, однако с самого начала она заявляет намерение передать этот проект в Linux Foundation, чтобы он остался открытым, вендор-нейтральным и полностью прозрачным. При этом присоединиться к проекту уже сейчас могут не только технологические вендоры и создатели кодинг-агентов, но и конечные пользователи — разработчики ПО — за счёт предоставления чужих или своих бенчмарков и датасетов 🧪

Возможно, именно эта площадка уже скоро станет дефолтным "справочником" при принятии решений о выборе инструментов разработки. Похоже, что шансы есть. Поживем-увидим 👀

https://dpaia.dev/
Когда я ещё студентом пришёл в работать в маленькую фирму по модернизации больших металлообрабатывающих станков, мне повезло работать под руководством опытного советского инженера-станкостроителя Бориса Леонидовича Хоменко. А он, в свою очередь, в силу возраста успел поработать с людьми закалки конца 40-ых, 50-ых и начала 60-ых годов 🕰

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

Стоит ли говорить, что они работали под огромным давлением со всех сторон? Нынешние дедлайны по спринтам и релизам кажутся детскими шалостями по сравнению с той нагрузкой и ответственностью, которую несли тогда они 🗿

Так вот Борис Леонидович получил от них и передал мне простую, но мудрую мысль, которая, как мне кажется, формирует правильное отношение к длительной работе под большой нагрузкой. Звучит она так:

Что такое "делать быстро"?
Это значит делать не торопясь, но без остановок.


А ведь и правда: зачастую слова "делай быстро" заставляют нас спешить. На первых порах это бывает оправданно, но уже скоро выясняется, что на длинной дистанции такой темп нам не по силам; что спешка порождает много ошибок; что сама работа уже, как минимум, не в радость, а то и вовсе уже противна. Всё это приводит к постепенному затуханию (выгоранию) и вынужденной остановке, часто на непредсказуемый срок 🕳

Слова "без остановок" не значат, что отдых вреден, разумеется. Они значат, что на больших объёмах работ беспорядочные перерывы зачастую вредят больше, чем не очень высокий темп выполнения. Подобно этому равномерно и неспешно бегущий марафонец достигает финиша раньше, чем равный ему по силам товарищ, рванувший со старта, но вынужденный много раз переходить на шаг, чтобы перевести дух 🏃‍♂️

Вероятно, за этими простыми словами стоит немало серьёзных историй тех суровых времён 🤔

Если вам тоже доводилось слышать от своих наставников/руководителей мудрые мысли, надолго запавшие в память, поделитесь, пожалуйста, в комментариях — пусть о них узнает больше людей 📢
🔥10👏84
В блоге компании AxiomJDK на Хабре позавчера вышла статья Алексея Рагозина о работе с JDK Flight Recorder'ом из командной строки. Фишка статьи в том, что она не только рассказывает, как запускать/мониторить/останавливать записи JFR, но и как смотреть их результаты прямо на лету, т.е. без дампа в файлы с последующим открытием. Мне довелось немного поучаствовать в подготовке этой статьи; в основном, как рецензенту 🤓

Если кто не знает, Алексей — один из топовых российских экспертов по производительности JVM. Он пишет глубокие технические статьи, выступает с докладами, ведёт тренинги и сам разрабатывает инструменты для диагностики JVM. Кстати, его проект SJK (Swiss Java Knife) используется, например, в Apache Cassandra 💪🏼

Послезавтра, 13 ноября в 19:00 МСК Алексей проведёт открытый вебинар по работе с JFR из командной строки, но в отличие от статьи, там будет возможность в живую увидеть пример применения JFR к приложению на #Java 25, включая совсем свежие улучшения, вышедшие в этой версии в сентябре. Кто хочет быть на гребне прогресса, подключайтесь 📺
🔥9