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

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

Домашняя страница: https://toparvion.pro/
Download Telegram
После очередной рабочей встречи нужно было быстренько накидать календарный план работ по фронту и бэкенду к предстоящему демо фичи. По смыслу отлично подходит диаграмма Гантта. Но как бы её попроще нарисовать?.. 🤔

Раньше я их в чём только не делал: от примитивной раскраски ячеек в Excel до монструозного MS Visio. Но в последние годы нравится вести почти все рабочие заметки в Markdown, и на сей раз покидать уютный редактор Typora тоже не хотелось. К счастью, в нём нашлось подходящее решение 👇🏼

Typora поддерживает Mermaid — библиотечку на JS для рендеринга различных диаграмм по простому текстовому описанию (как PlantUML, но без сервера). Идея внедрения этой штуки в Markdown-документ сводится к тому, что вы добавляете блок кода с указанием языка mermaid, пишите в нём "код" диаграммы, а редактор сам на лету отрисовывает её сразу же под блоком кода. При этом в финальном документе кода видно не будет — он как бы спрятан за диаграммой. Выглядит код примерно так:
gantt
dateFormat YYYY-MM-DD
axisFormat %d.%m %a
excludes weekends
title Примерный календарный план работ до демо

section Бэкенд
П.13 :done, 2026-01-27, 1d
П.6 (лист) :active, list-back, 2026-01-28, 2d
П.9 (граф) : des3, after list-back, 2d
П.19 (мониторинг): des4, after des3, 3d
П.20 (управление): control, after des4, 2d


Именно диаграммы Гантта я рисовал с помощью Mermaid впервые.
Что понравилось (основное):
понятный синтаксис — можно разобраться, просто взглянув на готовый пример
гибкость задания сроков — можно произвольно связывать начала и концы этапов между собой, и при сдвиге одного остальные пересчитаются сами
учёт выходных — их можно автоматически разметить серым фоном и исключить из расчётов

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

Конечно, возможности Mermaid сильно не дотягивают до полноценных графических редакторов. Но всегда ли это нужно? Зачастую гораздо проще и быстрее накидать что-то несложное прямо в коде/документе, и вот здесь такие #инструменты, как Mermaid, подходят как нельзя кстати 👍🏼
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
This media is not supported in your browser
VIEW IN TELEGRAM
Dive — способ занырнуть внутрь Docker-образа 🤿

Мне не часто приходится создавать Docker-образы с нуля, но всякий раз после этого возникают одни и те же вопросы:
— А точно ли туда попало всё, что нужно?
— А не попало ли туда что-то лишнее?
— Как вообще выглядит структура папок и файлов внутри образа? 🤔

Особенно много таких вопросов возникает при использовании всяких "нетрадиционных" инструментов, которые обходятся без явного Dockerfile-а, например, Google Jib или Buildpack. Я рассказывал о них в докладе на конференции Joker в 2020 году: https://toparvion.pro/event/2020/joker/ 🍿

Обычно ответы на эти вопросы получают путём запуска контейнера из образа и входа в него с каким-нибудь bash-ем, чтобы походить по файловой системе и посмотреть, что там лежит. Но что если контейнер не запускается или его пока нельзя запускать? И как понять, откуда именно в контейнере взялась та или иная часть директорий или файлов? 🧐

Подобные задачи отлично решает консольная утилита Dive. Она умеет доставать образы из Docker-демона, анализировать их и показывать:
● из каких слоёв состоит образ (даже если он создан не по Dockerfile'у)
● сколько весит каждый слой
● какие файлы и директории создаёт/меняет/удаляет каждый слой на финальной файловой системе контейнера 🔬

Дополнительно Dive умеет подсчитывать условную "эффективность образа" — это доля размера образа, которая не была потрачена на дублирование или перемещение файлов между слоями. Ни разу не видел, чтобы эта цифра была сколь-нибудь значимой, но звучит прикольно🙂

Лично для меня отдельной большой ценностью утилиты стала возможность просмотра прав на чтение/запись/исполнение каждого файла в образе — это сильно помогает, когда пытаешься понять, из-за чего в контейнере что-то ломается с ошибкой "Permission Denied" 🔐

Если вы еще не пользовались этой штукой, ответственно рекомендую попробовать. К тому же сделать это предельно просто: Dive — это всего-навсего один исполняемый файл, который не требует инсталляции и в 95% случаев обходится без настроек. Вот бы все наши вспомогательные #инструменты были такими же, да?..🤩
👍104🔥2
Forwarded from SnowOne-канал
До конференции меньше месяца!

Всем привет! Меньше месяца осталось до SnowOne 2026. Программа практически готова, большая ее часть опубликована на сайте.

С момента последнего анонса у нас произошли обновления и усиления по самым разнообразным тематикам докладов:

1) Хардкор: Илья Гаврилин расскажет о том, как в прошлом пытались сделать специальный процессор для исполнения Java, и к чему это привело 🤯

2) Котлин: Александр Соколинский и Эмиль Газизов докопаются до самых тонких деталей реализации корутин (coroutineContext, ContinuationInterceptor, Cancellation и другие) 👩‍💻

3) Хардкор/тестирование: Даниил Степанов покажет, как автоматически генерировать тесты через JDI и при чем тут LLM 🐞

4) AI: тут у нас целый трек докладов, про них отдельно расскажем чуть позже. Пока скажем, что Егор Ершов объяснит, как же именно устроены внутри генеративные LLM, а Линар Абзалтдинов представит доклад о Spring AI 🤖



Очень скоро программа окончательно финализируется и появится на сайте в виде расписания. А пока напомним, что билеты все еще в продаже!

Увидимся меньше чем через месяц на SnowOne ❄️
Please open Telegram to view this post
VIEW IN TELEGRAM
1
За текущим временным затишьем в канале стоит большой фронт работ по разным направлениям. Со временем, надеюсь, смогу о них рассказать. А пока делюсь лишь первым из результатов 👇🏼
Для тех, кто давно интересовался, будут ли у меня проводиться #тренинги онлайн, и можно ли будет участвовать в них не от компании (лично), есть хорошая новость — скоро всё это будет

И ещё одна новость: поскольку подготовка таких занятий требует довольно больших временных и ресурсных затрат, я решил объединить усилия с другим, ещё более опытным экспертом по производительности JVM — Алексеем Рагозиным, о котором упоминал в прошлых постах. Мы будем проводить тренинги в паре, но в разных ролях: ведущий и соведущий, т.е. один основной, второй на подхвате. Распределение будет меняться от занятия к занятию ⚖️

Посмотреть, какие есть тренинги, их даты, описания и ведущих можно на сделанной нами странице:
https://java-perf-training.github.io/
(если что, фронтенд — не наша сила, сорян)
Регистрация и предварительная запись ведутся через сервис Timepad, где организатором числится Алексей, но я там тоже упоминаюсь 🫡

На сегодня 4 учебных модуля (от одного до трёх занятий в каждом) уже имеют назначенные даты, и на них можно бронировать места. Ещё два пока не имеют дат, но можно записаться в лист ожидания 📋

И последнее: в благодарность за ваш интерес и терпение делюсь с вами промокодом POLKA77, дающим скидку 25% на все занятия при регистрации до 22 февраля включительно 🎁

Надеюсь увидеться со многими из вас на наших тренингах. Буду рад ответить на вопросы и замечания, чтобы помочь решиться 👐
🔥3😁1
Не будь я в программном комитете, я бы вряд ли отгадал, кто из этих спикеров студент - настолько некоторые ребята круты уже в универе. А ведь их карьера только начинается😎
💯2
Forwarded from SnowOne-канал
Уже традиционно SnowOne начинается со студенческого дня, в котором мы собираем несколько докладов (далеко не только про Java!), интересных именно студентам. При этом билеты абсолютно бесплатны для студентов (и тех, кто уже купил билет на основной день).

Этот год не станет исключением, 27-ого февраля будет студенческий день! Начало в 16-00.

В этот раз мы решили провести эксперимент и сделать студенческий день еще чуть более студенческим. Половина докладов в этот раз будет от опытных инженеров из индустрии, а половина - от самих студентов (правда особенных: очень прошаренных, работающих и разбирающихся в своей теме). Уверены, что качество мероприятия от этого только улучшится ✍️



На студенческом дне вас ждут доклады:

1) Ильи Гаврилина из Синтакора об исторических попытках сделать специальные процессоры для Java,
2) Егора Ершова из Яндекса о том, как внутри устроены такие LLM, как ChatGPT и DeepSeek,
3) Ивана Тимофеева из Т-Банка об опыте выбора и тюнинга Java GC в проде (и про то, почему ZGC классный),
4) Владислава Ахмедова из Postgres Pro про кэширование данных в СУБД на примере KVIK в PostgresPro.



Чтобы зарегистрироваться на студенческий день нужно выбрать вот здесь вариант билета ACADEMIC, который ничего не будет вам стоить, если вы студент)

Если же вы не студент и у вас есть билет на основной день, то вы, конечно, тоже можете прийти послушать доклады на студень.

Увидимся на студне! 👨‍🎓
2
Середина февраля традиционно считается (среди меня) началом бархатного сезона в лыжах — снега ещё много и он плотный; мороз ещё есть, но уже не сильный; световой день заметно дольше ☀️

С этих чисел, как правило, начинаются длинные лыжные пробежки и прогулки, и минувшее воскресенье, к счастью, не стало для меня исключением — в качестве объемной тренировки неспешно проехал один полный круг 35 км по лесам и полям за Новосибирским Академгородком 🏡

Много снега, много солнца, лихие спуски по широкой гладкой трассе к замерзшим ручьям, а потом сложные подъёмы от них на холмы с красивыми видами; следы зайцев и лис; теплый чай с печенюшками прямо на снегу — эта прогулка принесла много ярких эмоций, за которые стоит любить настоящую сибирскую зиму ❄️
🔥15👍3💘2
А ведь ещё буквально в сентябре это объявление казалось бесконечно далёким 🙄
Forwarded from SnowOne-канал
Неделя до SnowOne!

Уже в следующую пятницу собираемся в Технопарке на студенческий день, а в субботу - на основной 🎉

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

Напоминание: вы все еще можете купить билеты или зарегистрироваться на бесплатный студень, если вы студент.

Увидимся совсем скоро на SnowOne! ❄️
4
Таки ужал доклад до 56 минут и готов его рассказать в субботу на SnowOne. Мне кажется, получилось довольно бодро и жизнеутверждающе, ревьюерам тоже понравилось) Приходите послушать!



Давайте заодно по традиции скажу свои личные рекомендации на этот SnowOne. Традиционный дисклеймер: все доклады прекрасные, но часть из них особенно близка именно моему сердцу, вот их здесь упоминаю:

1. Илья Гаврилин: "Трудно быть процессором: аппаратная реализация Java и история picoJava-II". Доклад на студенческий день, где Илья расскажет о том, как пытались сделать специальный проц для исполнения JVM байткода на железе (и что из этого вышло);

2. Егор Ершов: "Генеративные LLM. Как технически реализованы ChatGPT/DeepSeek и прочие языковые модели". Отличный доклад на студенческий день от второкурсника СисПро (который при этом вовсю работает в Яндексе!) с действительно интересным техническим контентом про устройство и оптимизации LLM.

3. Александр Ланцов: "Сборка мусора в Java и Go". Качественное сравнение очень разных по принятым дизайнерским решениям (семейств) сборщиков мусора в рантаймах разных языков. Тут и хардкор и философия о трейдофах в дизайне GC, оч хорошо.

4. Линар Абзалтдинов: "ИИ-агенты на Java: возможности и границы Spring AI". Мне очень интересно, куда заведет нас история с ИИ-агентами, как это повлияет на всю технологию и индустрию, так что доклад безумно актуален (а еще очень круто выполнен)

5. Дмитрий Фролов: "Git: любить нельзя заменить (+ Puzzlers)". Доклад про альтернативы Git-у (всякие Jujutsu, Sapling и т.д.). Мне очень интересно посмотреть на альтернативы гиту (который я очень люблю), обязательно бы сходил, если бы у самого в этот момент не было доклада)

Это только 5 (ну, ладно, 6) из 19 докладов, остальные можно посмотреть и выбрать под себя вот здесь.



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

До встречи на SnowOne в пятницу и субботу! ❄️
4
Минувшие с пятницы дни были почти целиком посвящены #Java-конференции SnowOne, о которой я частенько упоминаю здесь, на Полке. Начатая ещё в сентябре подготовка, наконец, привела к ожидаемому результату: два дня докладов на любой вкус и уровень, общения на все околопрофессиональные темы, встреч со старыми и новыми знакомыми и, конечно, заметок о том, что хочется покопать/узнать/попробовать, начиная уже в понедельник, т.е. сегодня. Несмотря на членство в ПК, я заранее видел далеко не все доклады, поэтому с удовольствием смотрел и слушал их на самой конференции, правда, только в главном зале, к которому был приставлен в качестве ведущего 🎤

Профессиональные фото, как и записи докладов, будут позже, придётся подождать. А вот что можно сделать уже сегодня, так это дать обратную связь — если вы были на конференции или смотрели трансляцию, пожалуйста, посвятите несколько минут заполнению этой формочки; так вы здорово поможете дальнейшему развитию не только конференции SnowOne, но и всего сообщества JUGNsk в целом 🙏🏻

Презентации многих докладов уже доступны на сайте конференции — их можно найти на страницах самих докладов: https://snowone.ru/schedule/days/#day-2 👀

Все эти дни температура в Новосибирске не поднималась выше -20, а обилие снега и льда хорошо подчёркивало правильность выбора названия конференции. На этой волне я отдельно благодарю спикеров, большинство из которых приехали в наш Сибирский городок из куда более теплых и менее снежных мест — спасибо вам за морозоустойчивость! 🤝❄️

Несмотря на то, что это была уже 7-я подряд конференция, в ней нет почти ничего, что шло бы "само, по накатанной". С одной стороны, это усложняет её подготовку, не даёт снижаться рискам. С другой — благодаря этому, мы продолжаем быть "на волне", учитывать тренды, слушать интересы аудитории и отвечать на вызовы происходящего вокруг. Этим и будем заниматься в ближайшее время, чтобы следующая конференция получилась, как минимум, не хуже, а лучше — лучше 🤓
🔥15👍4