Верхняя полка📝
Расскажу о нём отдельно в другой раз
Вероятно, картина покажется вам знакомой, если я скажу, что мой семейный фотоархив представляет собой хаотичное месиво фоток и видео, разбросанных по телефону, облаку (куда они льются сами) и домашним дискам/флешкам. И вряд ли стоит пояснять, что в таком виде эти (в общем-то весьма дорогие мне) воспоминания легко потерять, неудобно пересматривать и весьма трудоёмко искать 🙁
Конечно, я давно осознавал, что надо навести здесь порядок. И ещё долго бы продолжал просто осознавать, если бы накануне Нового Года случайное невысокое падение внешнего HDD с огромной кучей фоток не превратило его в тыкву и не обошлось в несколько десятков килорублей на восстановление. И вот тогда "надо" внезапно превратилось в "пора"... ⏰
Под "навести порядок" я принял для себя следующее:
1. Организовать надёжное хранение в едином месте, но с резервированием локально и в облаке
2. Обеспечить автоматическое добавление снимков и видео с телефонов с попутной фильтрацией дубликатов и каталогизацией
3. Предоставить быстрый поиск по людям, датам, местам и объектам с любого авторизованного устройства (для родственников) 🎯
Раньше почти все эти цели достигались использованием Google Photos, но в новых реалиях от него пришлось отказаться, а достойных альтернатив на российском рынке я не нашёл (хотя и попробовал платный Яндекс.Диск). К тому же захотелось получить больше контроля и возможностей, поэтому я решил попробовать self-hosted решение и выбрал Immich — opensource'ный аналог Google Photos, который мне когда-то порекомендовал Артём @artipop Шабуров. Этот сервис превосходит конкурентов не только по числу звёзд на GitHub, но и по зрелости фич, а это для меня очень важно 🔝
Я развернул его c помощью Docker Compose на российском VPS с 2 ядрами CPU, 4 ГБ памяти и 1,5 ТБ места на HDD. Такой сервер обошёлся в 1400 руб/мес на первые три месяца (новогодняя акция), потом будет порядка 1900 руб/мес (хостинг FirstVDS). В целом, основное взаимодействие с сервисом при такой его скромной мощи пока что полностью устраивает: лента скроллится, видосики грузятся, поиск ищёт и находит. Основной дискомфорт вызывает только извлечение метаданных из загружаемых медиа файлов — для мощного поиска под капотом у Immich работает целая банда моделей машинного обучения, а оно на голом CPU работает, мягко говоря, не быстро — чуть ли не бОльшую часть каникул VPS лопатил круглые сутки на полную мощность, чтобы отсмотреть все мои фото/видео и правильно их проиндексировать (векторизовать картинки, извлечь тексты, распознать людей и т.д.) Мне даже пришлось увеличить ему размер SWAP-файла, чтобы во время распознавания Python-процесс не прибивался OOM Killer'ом. Впрочем, такой объём данных требуется обработать лишь раз; дальше медиа файлы будут добавляться поштучно, и минутная задержка на их индексацию кажется вполне приемлемой 👌
Зато теперь у меня наконец-то появилось более-менее целостное, управляемое и удобное хранилище, в котором на сегодня:
• 42К фотографий (уже без дубликатов и почти без "мусора")
• 3,5К видеозаписей
• 20 лет воспоминаний (плюс несколько сотен оцифрованных бумажных снимков более старшего возраста) 📷
Следующими шагами будет настройка резервирования на домашнее сетевое хранилище (заказано, едет) и постепенное наведение смыслового порядка: разметка людей (имена, даты рождения), уточнение дат съёмки, удаление лишних снимков и т.п. Наверняка на этом пути ещё выяснятся какие-нибудь неприятные моменты, но пока впечатление об Immich как сервисе очень даже позитивное. Особо порадовали:
• удобное мобильное приложение (наряду с сайтом)
• мощное распознавание людей (в том числе в полоборота, в том числе детей, в том числе в очках/масках и в воде)
• клёвый контекстный поиск (запросы типа "закат на пляже", "пятнистый кот на руках у мальчика", "девушка на мотоцикле" исполняются на ура) 🪄
Намерен продолжать осваивать и рассказывать вам по мере появления новых любопытных наблюдений. А если у вас уже есть свой опыт в решении подобных задач, поделитесь — нам наверняка есть, чему поучиться друг у друга 🙂
Конечно, я давно осознавал, что надо навести здесь порядок. И ещё долго бы продолжал просто осознавать, если бы накануне Нового Года случайное невысокое падение внешнего HDD с огромной кучей фоток не превратило его в тыкву и не обошлось в несколько десятков килорублей на восстановление. И вот тогда "надо" внезапно превратилось в "пора"... ⏰
Под "навести порядок" я принял для себя следующее:
1. Организовать надёжное хранение в едином месте, но с резервированием локально и в облаке
2. Обеспечить автоматическое добавление снимков и видео с телефонов с попутной фильтрацией дубликатов и каталогизацией
3. Предоставить быстрый поиск по людям, датам, местам и объектам с любого авторизованного устройства (для родственников) 🎯
Раньше почти все эти цели достигались использованием Google Photos, но в новых реалиях от него пришлось отказаться, а достойных альтернатив на российском рынке я не нашёл (хотя и попробовал платный Яндекс.Диск). К тому же захотелось получить больше контроля и возможностей, поэтому я решил попробовать self-hosted решение и выбрал Immich — opensource'ный аналог Google Photos, который мне когда-то порекомендовал Артём @artipop Шабуров. Этот сервис превосходит конкурентов не только по числу звёзд на GitHub, но и по зрелости фич, а это для меня очень важно 🔝
Я развернул его c помощью Docker Compose на российском VPS с 2 ядрами CPU, 4 ГБ памяти и 1,5 ТБ места на HDD. Такой сервер обошёлся в 1400 руб/мес на первые три месяца (новогодняя акция), потом будет порядка 1900 руб/мес (хостинг FirstVDS). В целом, основное взаимодействие с сервисом при такой его скромной мощи пока что полностью устраивает: лента скроллится, видосики грузятся, поиск ищёт и находит. Основной дискомфорт вызывает только извлечение метаданных из загружаемых медиа файлов — для мощного поиска под капотом у Immich работает целая банда моделей машинного обучения, а оно на голом CPU работает, мягко говоря, не быстро — чуть ли не бОльшую часть каникул VPS лопатил круглые сутки на полную мощность, чтобы отсмотреть все мои фото/видео и правильно их проиндексировать (векторизовать картинки, извлечь тексты, распознать людей и т.д.) Мне даже пришлось увеличить ему размер SWAP-файла, чтобы во время распознавания Python-процесс не прибивался OOM Killer'ом. Впрочем, такой объём данных требуется обработать лишь раз; дальше медиа файлы будут добавляться поштучно, и минутная задержка на их индексацию кажется вполне приемлемой 👌
Зато теперь у меня наконец-то появилось более-менее целостное, управляемое и удобное хранилище, в котором на сегодня:
• 42К фотографий (уже без дубликатов и почти без "мусора")
• 3,5К видеозаписей
• 20 лет воспоминаний (плюс несколько сотен оцифрованных бумажных снимков более старшего возраста) 📷
Следующими шагами будет настройка резервирования на домашнее сетевое хранилище (заказано, едет) и постепенное наведение смыслового порядка: разметка людей (имена, даты рождения), уточнение дат съёмки, удаление лишних снимков и т.п. Наверняка на этом пути ещё выяснятся какие-нибудь неприятные моменты, но пока впечатление об Immich как сервисе очень даже позитивное. Особо порадовали:
• удобное мобильное приложение (наряду с сайтом)
• мощное распознавание людей (в том числе в полоборота, в том числе детей, в том числе в очках/масках и в воде)
• клёвый контекстный поиск (запросы типа "закат на пляже", "пятнистый кот на руках у мальчика", "девушка на мотоцикле" исполняются на ура) 🪄
Намерен продолжать осваивать и рассказывать вам по мере появления новых любопытных наблюдений. А если у вас уже есть свой опыт в решении подобных задач, поделитесь — нам наверняка есть, чему поучиться друг у друга 🙂
Immich
Self-hosted photo and video management solution. Easily back up, organize, and manage your photos on your own server. Immich helps you browse, search and organize your photos and videos with ease, without sacrificing your privacy.
👍13🔥3🤔1
Guice — dependency injection для искушенных 💉
В нынешней enterprise-разработке, где слово "Java" стало чуть ли не синонимом слову "Spring", многие даже не задумываются, что волшебная аннотация
В одной из недавних задач мне нужно было выделить из нашей платформы специфичный для одного заказчика функционал в отдельный плагин. Но если с выбором фреймворка для самого плагина всё было понятно (у нас используется PF4J и вполне устраивает), то для управления зависимостями внутри плагина нужно было что-то подыскать, так как решение из платформы в плагине работало плохо 👎
Конечно, можно было взять модуль
Кроме того, поскольку плагин будет поддерживаться партнёром, для которого Java — отнюдь не основной стек, очень желательно, чтобы в решении было как можно меньше "магии", а если что-то пойдёт не так, то ошибки были максимально понятными 💎
Вот поэтому я вспомнил про Guice — фреймворк внедрения зависимостей, разработанный в Google почти одновременно со Spring (в 2006) и до сих пор используемый у них в production. В отличие от всемогущего Spring'а, целеустремлённый Guice решает только одну задачу, но делает это с очень сильным акцентом на ясность и предсказуемость 🎯
Это проявляется, в основном, в том, что в Guice нет никакого classpath scanning, т.е. конфигурации зависимостей должны быть прописаны явно. Для удобства предусмотрено исключение в виде т.н. Just-In-Time Bindings (привязок, создаваемых на лету), но их логика максимально проста, а для особо строгих случаев их можно вообще отключить. В остальном фреймворк, по сути, просто заставляет разработчика отделятьмух от котлет конфигурацию зависимостей от их применения 🪚
Еще из интересных отличий Guice от Spring:
— объекты по умолчанию в IoC контейнере не создаются синглтонами, а инстанциируются на каждое обращение;
— описывать конфигурацию зависимостей можно не только аннотациями, но и на специальном DSL;
— ошибки разрешения зависимостей представляют из себя целые отчёты, зачастую с советами по исправлению 🔖
Отдельными плюсами для меня стали простая возможность внедрять зависимости в уже существующие объекты (создаваемые PF4J), а также возможность заинжектить инжектор (🤪) — это позволяет в особо упоротых местах перейти от dependency injection к service locator. Такое можно вытворять и в Spring, но по-хорошему лучше избегать с любым фреймворком 🫠
Мой прошлый опыт работы с Guice, где его внедрили до меня, трудно считать на 100% успешным, но ещё тогда мне показалось, что если этот фреймворк применять как задумано его создателями и в более полном объёме, то он может раскрыться во всей красе и позволить работать с ним "благодаря", а не "вопреки". Кажется, моя недавняя задача подтвердила эту гипотезу ✅
К слову, у Google есть и другой DI-фреймворк — Dagger, обретший популярность в Android разработке. Его основная фишка в том, что он работает в compile-time. Такой подход открывает массу полезных возможностей и ограничений, но это уже совсем другая история... 📖
В нынешней enterprise-разработке, где слово "Java" стало чуть ли не синонимом слову "Spring", многие даже не задумываются, что волшебная аннотация
@Autowired в Spring'е, которая обеспечивает автомагическое появление одних бинов в других, — это лишь одна из имплементаций паттерна Dependency Injection (внедрение зависимостей), и уж тем более не допускают мысли, что есть и другие имплементации. Ибо зачем?.. 🤔В одной из недавних задач мне нужно было выделить из нашей платформы специфичный для одного заказчика функционал в отдельный плагин. Но если с выбором фреймворка для самого плагина всё было понятно (у нас используется PF4J и вполне устраивает), то для управления зависимостями внутри плагина нужно было что-то подыскать, так как решение из платформы в плагине работало плохо 👎
Конечно, можно было взять модуль
spring-core, ведь в него входит Spring IoC Container, который как раз этим всем и занимается. Но это показалось мне избыточным, так как кроме DI туда входит и немало других, совершенно не нужных мне фич:It adds:
• Easier integration with Spring’s AOP features
• Message resource handling (for use in internationalization)
• Event publication
• Application-layer specific contexts such as the WebApplicationContext for use in web applications.
Кроме того, поскольку плагин будет поддерживаться партнёром, для которого Java — отнюдь не основной стек, очень желательно, чтобы в решении было как можно меньше "магии", а если что-то пойдёт не так, то ошибки были максимально понятными 💎
Вот поэтому я вспомнил про Guice — фреймворк внедрения зависимостей, разработанный в Google почти одновременно со Spring (в 2006) и до сих пор используемый у них в production. В отличие от всемогущего Spring'а, целеустремлённый Guice решает только одну задачу, но делает это с очень сильным акцентом на ясность и предсказуемость 🎯
Это проявляется, в основном, в том, что в Guice нет никакого classpath scanning, т.е. конфигурации зависимостей должны быть прописаны явно. Для удобства предусмотрено исключение в виде т.н. Just-In-Time Bindings (привязок, создаваемых на лету), но их логика максимально проста, а для особо строгих случаев их можно вообще отключить. В остальном фреймворк, по сути, просто заставляет разработчика отделять
Еще из интересных отличий Guice от Spring:
— объекты по умолчанию в IoC контейнере не создаются синглтонами, а инстанциируются на каждое обращение;
— описывать конфигурацию зависимостей можно не только аннотациями, но и на специальном DSL;
— ошибки разрешения зависимостей представляют из себя целые отчёты, зачастую с советами по исправлению 🔖
Отдельными плюсами для меня стали простая возможность внедрять зависимости в уже существующие объекты (создаваемые PF4J), а также возможность заинжектить инжектор (🤪) — это позволяет в особо упоротых местах перейти от dependency injection к service locator. Такое можно вытворять и в Spring, но по-хорошему лучше избегать с любым фреймворком 🫠
Мой прошлый опыт работы с Guice, где его внедрили до меня, трудно считать на 100% успешным, но ещё тогда мне показалось, что если этот фреймворк применять как задумано его создателями и в более полном объёме, то он может раскрыться во всей красе и позволить работать с ним "благодаря", а не "вопреки". Кажется, моя недавняя задача подтвердила эту гипотезу ✅
К слову, у Google есть и другой DI-фреймворк — Dagger, обретший популярность в Android разработке. Его основная фишка в том, что он работает в compile-time. Такой подход открывает массу полезных возможностей и ограничений, но это уже совсем другая история... 📖
GitHub
GitHub - google/guice: Guice (pronounced 'juice') is a lightweight dependency injection framework for Java 11 and above, brought…
Guice (pronounced 'juice') is a lightweight dependency injection framework for Java 11 and above, brought to you by Google. - google/guice
👍9🔥5👨💻3❤2🤔1
После очередной рабочей встречи нужно было быстренько накидать календарный план работ по фронту и бэкенду к предстоящему демо фичи. По смыслу отлично подходит диаграмма Гантта. Но как бы её попроще нарисовать?.. 🤔
Раньше я их в чём только не делал: от примитивной раскраски ячеек в Excel до монструозного MS Visio. Но в последние годы нравится вести почти все рабочие заметки в Markdown, и на сей раз покидать уютный редактор Typora тоже не хотелось. К счастью, в нём нашлось подходящее решение 👇🏼
Typora поддерживает Mermaid — библиотечку на JS для рендеринга различных диаграмм по простому текстовому описанию (как PlantUML, но без сервера). Идея внедрения этой штуки в Markdown-документ сводится к тому, что вы добавляете блок кода с указанием языка
Именно диаграммы Гантта я рисовал с помощью Mermaid впервые.
Что понравилось (основное):
✅ понятный синтаксис — можно разобраться, просто взглянув на готовый пример
✅ гибкость задания сроков — можно произвольно связывать начала и концы этапов между собой, и при сдвиге одного остальные пересчитаются сами
✅ учёт выходных — их можно автоматически разметить серым фоном и исключить из расчётов
Чего не хватило (основное):
❌ управления масштабом — при авторасчёте он нередко "схлопывает" границы дней, делая диаграмму менее наглядной
❌ гибкости описания секций — чтобы можно было написать секцию и исполнителя разными стилями для читабельности
❌ простановки отдельных дат — в документации для этого описан тег
Конечно, возможности Mermaid сильно не дотягивают до полноценных графических редакторов. Но всегда ли это нужно? Зачастую гораздо проще и быстрее накидать что-то несложное прямо в коде/документе, и вот здесь такие #инструменты, как Mermaid, подходят как нельзя кстати 👍🏼
Раньше я их в чём только не делал: от примитивной раскраски ячеек в 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-образы с нуля, но всякий раз после этого возникают одни и те же вопросы:
— А точно ли туда попало всё, что нужно?
— А не попало ли туда что-то лишнее?
— Как вообще выглядит структура папок и файлов внутри образа? 🤔
Особенно много таких вопросов возникает при использовании всяких "нетрадиционных" инструментов, которые обходятся без явного
Обычно ответы на эти вопросы получают путём запуска контейнера из образа и входа в него с каким-нибудь
Подобные задачи отлично решает консольная утилита Dive. Она умеет доставать образы из Docker-демона, анализировать их и показывать:
● из каких слоёв состоит образ (даже если он создан не по Dockerfile'у)
● сколько весит каждый слой
● какие файлы и директории создаёт/меняет/удаляет каждый слой на финальной файловой системе контейнера 🔬
Дополнительно Dive умеет подсчитывать условную "эффективность образа" — это доля размера образа, которая не была потрачена на дублирование или перемещение файлов между слоями. Ни разу не видел, чтобы эта цифра была сколь-нибудь значимой, но звучит прикольно🙂
Лично для меня отдельной большой ценностью утилиты стала возможность просмотра прав на чтение/запись/исполнение каждого файла в образе — это сильно помогает, когда пытаешься понять, из-за чего в контейнере что-то ломается с ошибкой "Permission Denied" 🔐
Если вы еще не пользовались этой штукой, ответственно рекомендую попробовать. К тому же сделать это предельно просто: Dive — это всего-навсего один исполняемый файл, который не требует инсталляции и в 95% случаев обходится без настроек. Вот бы все наши вспомогательные #инструменты были такими же, да?..🤩
Мне не часто приходится создавать Docker-образы с нуля, но всякий раз после этого возникают одни и те же вопросы:
— А точно ли туда попало всё, что нужно?
— А не попало ли туда что-то лишнее?
— Как вообще выглядит структура папок и файлов внутри образа? 🤔
Особенно много таких вопросов возникает при использовании всяких "нетрадиционных" инструментов, которые обходятся без явного
Dockerfile-а, например, Google Jib или Buildpack. Я рассказывал о них в докладе на конференции Joker в 2020 году: https://toparvion.pro/event/2020/joker/ 🍿Обычно ответы на эти вопросы получают путём запуска контейнера из образа и входа в него с каким-нибудь
bash-ем, чтобы походить по файловой системе и посмотреть, что там лежит. Но что если контейнер не запускается или его пока нельзя запускать? И как понять, откуда именно в контейнере взялась та или иная часть директорий или файлов? 🧐Подобные задачи отлично решает консольная утилита Dive. Она умеет доставать образы из Docker-демона, анализировать их и показывать:
● из каких слоёв состоит образ (даже если он создан не по Dockerfile'у)
● сколько весит каждый слой
● какие файлы и директории создаёт/меняет/удаляет каждый слой на финальной файловой системе контейнера 🔬
Дополнительно Dive умеет подсчитывать условную "эффективность образа" — это доля размера образа, которая не была потрачена на дублирование или перемещение файлов между слоями. Ни разу не видел, чтобы эта цифра была сколь-нибудь значимой, но звучит прикольно🙂
Лично для меня отдельной большой ценностью утилиты стала возможность просмотра прав на чтение/запись/исполнение каждого файла в образе — это сильно помогает, когда пытаешься понять, из-за чего в контейнере что-то ломается с ошибкой "Permission Denied" 🔐
Если вы еще не пользовались этой штукой, ответственно рекомендую попробовать. К тому же сделать это предельно просто: Dive — это всего-навсего один исполняемый файл, который не требует инсталляции и в 95% случаев обходится без настроек. Вот бы все наши вспомогательные #инструменты были такими же, да?..🤩
👍10❤4🔥2
Forwarded from SnowOne-канал
До конференции меньше месяца!
Всем привет! Меньше месяца осталось до SnowOne 2026. Программа практически готова, большая ее часть опубликована на сайте.
С момента последнего анонса у нас произошли обновления и усиления по самым разнообразным тематикам докладов:
1) Хардкор: Илья Гаврилин расскажет о том, как в прошлом пытались сделать специальный процессор для исполнения Java, и к чему это привело 🤯
2) Котлин: Александр Соколинский и Эмиль Газизов докопаются до самых тонких деталей реализации корутин (coroutineContext, ContinuationInterceptor, Cancellation и другие)👩💻
3) Хардкор/тестирование: Даниил Степанов покажет, как автоматически генерировать тесты через JDI и при чем тут LLM🐞
4) AI: тут у нас целый трек докладов, про них отдельно расскажем чуть позже. Пока скажем, что Егор Ершов объяснит, как же именно устроены внутри генеративные LLM, а Линар Абзалтдинов представит доклад о Spring AI 🤖
—
Очень скоро программа окончательно финализируется и появится на сайте в виде расписания. А пока напомним, что билеты все еще в продаже!
Увидимся меньше чем через месяц на 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 учебных модуля (от одного до трёх занятий в каждом) уже имеют назначенные даты, и на них можно бронировать места. Ещё два пока не имеют дат, но можно записаться в лист ожидания 📋
И последнее: в благодарность за ваш интерес и терпение делюсь с вами промокодом
Надеюсь увидеться со многими из вас на наших тренингах. Буду рад ответить на вопросы и замечания, чтобы помочь решиться 👐
И ещё одна новость: поскольку подготовка таких занятий требует довольно больших временных и ресурсных затрат, я решил объединить усилия с другим, ещё более опытным экспертом по производительности JVM — Алексеем Рагозиным, о котором упоминал в прошлых постах. Мы будем проводить тренинги в паре, но в разных ролях: ведущий и соведущий, т.е. один основной, второй на подхвате. Распределение будет меняться от занятия к занятию ⚖️
Посмотреть, какие есть тренинги, их даты, описания и ведущих можно на сделанной нами странице:
https://java-perf-training.github.io/
(если что, фронтенд — не наша сила, сорян)
Регистрация и предварительная запись ведутся через сервис Timepad, где организатором числится Алексей, но я там тоже упоминаюсь 🫡
На сегодня 4 учебных модуля (от одного до трёх занятий в каждом) уже имеют назначенные даты, и на них можно бронировать места. Ещё два пока не имеют дат, но можно записаться в лист ожидания 📋
И последнее: в благодарность за ваш интерес и терпение делюсь с вами промокодом
POLKA77, дающим скидку 25% на все занятия при регистрации до 22 февраля включительно 🎁Надеюсь увидеться со многими из вас на наших тренингах. Буду рад ответить на вопросы и замечания, чтобы помочь решиться 👐
Тренинги по производительности JVM
Теория и практика от экспертов с многолетним опытом
🔥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, который ничего не будет вам стоить, если вы студент)
Если же вы не студент и у вас есть билет на основной день, то вы, конечно, тоже можете прийти послушать доклады на студень.
Увидимся на студне! 👨🎓
Этот год не станет исключением, 27-ого февраля будет студенческий день! Начало в 16-00.
В этот раз мы решили провести эксперимент и сделать студенческий день еще чуть более студенческим. Половина докладов в этот раз будет от опытных инженеров из индустрии, а половина - от самих студентов (правда особенных: очень прошаренных, работающих и разбирающихся в своей теме). Уверены, что качество мероприятия от этого только улучшится ✍️
—
На студенческом дне вас ждут доклады:
1) Ильи Гаврилина из Синтакора об исторических попытках сделать специальные процессоры для Java,
2) Егора Ершова из Яндекса о том, как внутри устроены такие LLM, как ChatGPT и DeepSeek,
3) Ивана Тимофеева из Т-Банка об опыте выбора и тюнинга Java GC в проде (и про то, почему ZGC классный),
4) Владислава Ахмедова из Postgres Pro про кэширование данных в СУБД на примере KVIK в PostgresPro.
—
Чтобы зарегистрироваться на студенческий день нужно выбрать вот здесь вариант билета ACADEMIC, который ничего не будет вам стоить, если вы студент)
Если же вы не студент и у вас есть билет на основной день, то вы, конечно, тоже можете прийти послушать доклады на студень.
Увидимся на студне! 👨🎓
❤2
Середина февраля традиционно считается (среди меня) началом бархатного сезона в лыжах — снега ещё много и он плотный; мороз ещё есть, но уже не сильный; световой день заметно дольше ☀️
С этих чисел, как правило, начинаются длинные лыжные пробежки и прогулки, и минувшее воскресенье, к счастью, не стало для меня исключением — в качестве объемной тренировки неспешно проехал один полный круг 35 км по лесам и полям за Новосибирским Академгородком 🏡
Много снега, много солнца, лихие спуски по широкой гладкой трассе к замерзшим ручьям, а потом сложные подъёмы от них на холмы с красивыми видами; следы зайцев и лис; теплый чай с печенюшками прямо на снегу — эта прогулка принесла много ярких эмоций, за которые стоит любить настоящую сибирскую зиму ❄️
С этих чисел, как правило, начинаются длинные лыжные пробежки и прогулки, и минувшее воскресенье, к счастью, не стало для меня исключением — в качестве объемной тренировки неспешно проехал один полный круг 35 км по лесам и полям за Новосибирским Академгородком 🏡
Много снега, много солнца, лихие спуски по широкой гладкой трассе к замерзшим ручьям, а потом сложные подъёмы от них на холмы с красивыми видами; следы зайцев и лис; теплый чай с печенюшками прямо на снегу — эта прогулка принесла много ярких эмоций, за которые стоит любить настоящую сибирскую зиму ❄️
🔥15👍3💘2
А ведь ещё буквально в сентябре это объявление казалось бесконечно далёким 🙄
Forwarded from SnowOne-канал
Неделя до SnowOne!
Уже в следующую пятницу собираемся в Технопарке на студенческий день, а в субботу - на основной 🎉
Мы заканчиваем подготовку: во всю идут последние репетиции докладов, спикеры доделывают слайды, партнеры готовят стенды и призы, а организаторы пакуют раздатку для участников. В общем, мы на финишной прямой!
Напоминание: вы все еще можете купить билеты или зарегистрироваться на бесплатный студень, если вы студент.
Увидимся совсем скоро на SnowOne! ❄️
Уже в следующую пятницу собираемся в Технопарке на студенческий день, а в субботу - на основной 🎉
Мы заканчиваем подготовку: во всю идут последние репетиции докладов, спикеры доделывают слайды, партнеры готовят стенды и призы, а организаторы пакуют раздатку для участников. В общем, мы на финишной прямой!
Напоминание: вы все еще можете купить билеты или зарегистрироваться на бесплатный студень, если вы студент.
Увидимся совсем скоро на SnowOne! ❄️
❤4
Forwarded from Алло, это отладочная?
Таки ужал доклад до 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 в пятницу и субботу! ❄️
—
Давайте заодно по традиции скажу свои личные рекомендации на этот 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 в пятницу и субботу! ❄️
SnowOne 2026. Content-First Java‑конференция из Сибири
Проект Valhalla, или Как добавить value-типы в Java, не превращая ее в C++ | Доклад на SnowOne 2026
Поговорим о том, как изменить язык Java и ее реализацию, чтобы открыть путь для эффективной скаляризации и инлайна объектов в другие объекты, но при этом не превратить Java в C++.
Обсудим, почему может быть важнее вкладываться в разностороннее развитие самого…
Обсудим, почему может быть важнее вкладываться в разностороннее развитие самого…
❤4
Минувшие с пятницы дни были почти целиком посвящены #Java-конференции SnowOne, о которой я частенько упоминаю здесь, на Полке. Начатая ещё в сентябре подготовка, наконец, привела к ожидаемому результату: два дня докладов на любой вкус и уровень, общения на все околопрофессиональные темы, встреч со старыми и новыми знакомыми и, конечно, заметок о том, что хочется покопать/узнать/попробовать, начиная уже в понедельник, т.е. сегодня. Несмотря на членство в ПК, я заранее видел далеко не все доклады, поэтому с удовольствием смотрел и слушал их на самой конференции, правда, только в главном зале, к которому был приставлен в качестве ведущего 🎤
Профессиональные фото, как и записи докладов, будут позже, придётся подождать. А вот что можно сделать уже сегодня, так это дать обратную связь — если вы были на конференции или смотрели трансляцию, пожалуйста, посвятите несколько минут заполнению этой формочки; так вы здорово поможете дальнейшему развитию не только конференции SnowOne, но и всего сообщества JUGNsk в целом 🙏🏻
Презентации многих докладов уже доступны на сайте конференции — их можно найти на страницах самих докладов: https://snowone.ru/schedule/days/#day-2 👀
Все эти дни температура в Новосибирске не поднималась выше -20, а обилие снега и льда хорошо подчёркивало правильность выбора названия конференции. На этой волне я отдельно благодарю спикеров, большинство из которых приехали в наш Сибирский городок из куда более теплых и менее снежных мест — спасибо вам за морозоустойчивость! 🤝❄️
Несмотря на то, что это была уже 7-я подряд конференция, в ней нет почти ничего, что шло бы "само, по накатанной". С одной стороны, это усложняет её подготовку, не даёт снижаться рискам. С другой — благодаря этому, мы продолжаем быть "на волне", учитывать тренды, слушать интересы аудитории и отвечать на вызовы происходящего вокруг. Этим и будем заниматься в ближайшее время, чтобы следующая конференция получилась, как минимум, не хуже, а лучше — лучше 🤓
Профессиональные фото, как и записи докладов, будут позже, придётся подождать. А вот что можно сделать уже сегодня, так это дать обратную связь — если вы были на конференции или смотрели трансляцию, пожалуйста, посвятите несколько минут заполнению этой формочки; так вы здорово поможете дальнейшему развитию не только конференции SnowOne, но и всего сообщества JUGNsk в целом 🙏🏻
Презентации многих докладов уже доступны на сайте конференции — их можно найти на страницах самих докладов: https://snowone.ru/schedule/days/#day-2 👀
Все эти дни температура в Новосибирске не поднималась выше -20, а обилие снега и льда хорошо подчёркивало правильность выбора названия конференции. На этой волне я отдельно благодарю спикеров, большинство из которых приехали в наш Сибирский городок из куда более теплых и менее снежных мест — спасибо вам за морозоустойчивость! 🤝❄️
Несмотря на то, что это была уже 7-я подряд конференция, в ней нет почти ничего, что шло бы "само, по накатанной". С одной стороны, это усложняет её подготовку, не даёт снижаться рискам. С другой — благодаря этому, мы продолжаем быть "на волне", учитывать тренды, слушать интересы аудитории и отвечать на вызовы происходящего вокруг. Этим и будем заниматься в ближайшее время, чтобы следующая конференция получилась, как минимум, не хуже, а лучше — лучше 🤓
🔥15👍4