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

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

Домашняя страница: https://toparvion.pro/
Download Telegram
#видеозаписи

Что делать, если напишут «тут на продакшне внезапная OutOfMemory, разберись по-быстрому», а вам неочевидно, на что смотреть?

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

YouTube | VK Видео

Скачать презентацию с сайта Joker
🔥7
В последнее время много читаю стихи Агнии Барто с младшим сынишкой. Её слог для меня — высший пилотаж. И хотя сам ничего сочинять не собирался, после вчерашней длительной лыжной тренировки какие-то фразы вдруг стали сами цепляться друг за друга в голове...

Потом был ужин со стеклянным взглядом в стену; потом плохо помню, как утром дошёл до офиса. Но запомнил то, что родилось в голове за это время. Делюсь и с вами:
1
Спортивно-любительская мудрость

Став спортсменом новеньким, с дивана,
Прыть свою не мог я обуздать:
Если уж собрался на пробежку,
Только на все деньги мог бежать.

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

Что-то про восстановление я слышал,
График тренировок раз читал.
Только был уверен: в том нет смысла,
Если я на тренировке не устал.

Я не знал, как люди-айронмены
Бегают часами напролёт.
Думал я, что тоже так сумею,
Если со здоровьем повезёт.

Но однажды встретился мне парень
Опытный бегун и триатлет.
Он поведал мысль мне простую,
До сих пор мудрей которой нет.

Вопреки моим крутым стремленьям
Каждый раз сильней и выше себя стать,
Он сказал мне с полным откровеньем:
"В нашем деле главно — не устать."

#спорт
🔥82👏2
Блин, откуда у них это фото со мной? Знал бы, так хоть накидку по-моднее выбрал🙃

#пятница #хиханьки
3🐳1
Непопулярные у пешеходов уголки сибирского леса глазами лыжника солнечным зимним утром ❄️☀️🎿

#спорт
👍4❤‍🔥2
Когда начинаешь принципиально новое дело, важно иметь поблизости схожих людей, чтобы не чувствовать себя на этом пути одним. Мне в этом смысле повезло — в самом начале работы над проектом в Новосибирском Академпарке (весной 2023) мне повстречался Артём @artipop Шабуров, с которым у нас сразу выяснилось много общего. Мы до сих пор стараемся друг другу помогать (в том числе такими постами) и часто обмениваемся релевантным опытом 🤝

Если вы когда-нибудь слышали про Backend-as-a-Service (BaaS, например Firebase), то наверняка знаете, что таких волшебных сервисов, позволяющих "сгенерировать" себе бэкенд для фронта или мобилки, не так уж много, а чисто российских — и подавно. Артём как раз разрабатывает и выводит на рынок подобный инструмент — Deffun. Попутно он участвует в создании измерителя эмоций общества, иногда рассказывает о своих наработках на местных Java event'ах, а ещё помогает начинающим IT-стартаперам делать первые шаги на бизнес-акселераторах Академпарка и НГУ 🚀
Об этих и других интересных активностях можно почитать в его канале deffun4ever🔌
👍4🔥3
Возникшая намедни задача фильтрации неких входящих событий по частоте (перед их помещением в память) поначалу показалась мне целым подпроектом — в голове начали мелькать всякие многопоточные страсти и построенные поверх них библиотеки типа Bucket4j и RequestRateLimiter из Spring Cloud Gateway 💂

Вероятно, стрельба из таких пушек вполне оправдана, если фильтруемые запросы нужно именно "придержать" (а не просто сбросить) или когда ограничение должно единообразно работать на кластер из нескольких JVM 🏘

Однако у меня оказался более простой случай: одна JVM и отсутствие необходимости задерживать события. Решение нашлось почти случайно — в библиотеке Guava оказался классик с неожиданным названием `RateLimiter` (о котором, кстати, нет ни слова в их Wiki на GitHub). Если верить javadoc, то его применение для моего случая выглядит буквально так:
    RateLimiter rateLimiter = RateLimiter.create(100);    // rps
if (!rateLimiter.tryAcquire())) {
// skip the event
return;
}
// TODO process the event

Класс поддерживает некоторые настройки, призванные приспособить его для более сложных случаев, но я их не проверял.
Да и этот вариант пока только-только написан. Проверка боем ему ещё предстоит. Интересно, таятся ли здесь сюрпризы? 🤔
👍1
Крайняя неделя года — не повод расслабляться, в том числе для программного комитета 😉
Forwarded from SnowOne-канал
Всем привет!

А мы с подарками: продолжаем публиковать спикеров SnowOne 2025 🎉

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

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

Следующую партию спикеров опубликуем уже после Нового Года, а пока напоминаем, что c января билеты чуть подорожают, так что самое время приобрести их сейчас.

Всех с наступающими праздниками! 🎄
🎄4
Вот уже восьмой год подряд под самый праздник я несколько дней подряд нарезаю не салатики, а... фотки и видео. Завёл традицию по вечерам 31 декабря виртуально собирать свою семью за голубыми экранами кристаллическими дисплеями и рассказывать о том, чем запомнился уходящий год. Семья у меня не большая, но весьма геораспредёленная: по широте от Краснодара до Владивостока и по долготе от Алматы до Магадана; две страны, под десяток часовых поясов 🌏

В этом году технологический стек мероприятия сильно изменился и получился таким:
• каталогизация фото и видео (распознавание лиц, мест, объектов, дат) — LibrePhotos;
• трансляция и живое общение — VK Звонки
• статичные слайды — Google Slides
• интерактивные слайды (викторина) — AhaSlides
• шаринг изображения и звука — Google Chrome

При этом от давно полюбившейся мне OBS Studio пришлось отказаться в последний день, потому что мне так и не удалось заставить корректно работать виртуальный аудио кабель на звуковом сервере PipeWire (Ubuntu 24.04) 🤷🏻‍♂️

Из-за обилия таких изменений начало встречи выдалось скомканным, долго собирались и настраивались. Но потом вроде дело пошло. Впечатление сгладила впервые добавленная викторина — помимо пассивного созерцания слайдов родственники периодически брали в руки телефоны и через AhaSlides делали небольшие задания, например, сопоставляли имена детей с их первыми словами или фото мужчин с их малоизвестными занятиями по молодости. А в конце все вместе подбирали эпитеты к уходящему году и в реальном времени наблюдали за построением облака слов из них ☁️

В целом, считаю эксперимент позитивным; намерен совершенствовать его дальше. Если интересно, могу рассказать о применяемых инструментах отдельно 💁🏼‍♂️

С наступившим 2025 годом! 🎄
7🎉1
Что там по спорту?

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

Вот как это выражается в цифрах (в скобках — данные за 2023 год):
• Время в движении, часов: 228 (203)
• Общее расстояние, километров: 1567 (1602)
• Соревнований, штук: 13 (8)

Тут может возникнуть резонный вопрос: заниматься стал больше, а расстояние преодолел меньше, как так? 🧐

Можно подумать, что замедлился, но нет — просто сместил приоритет с бега на плавание. А оно, конечно, медленнее. Вообще, складывать беговые километры с плавательными это как сравнивать тёплое с мягким, но такая метрика пришла из триатлона и пока остаётся в отчётах с пометкой "исторически сложилось" 🗿

Истинный расклад сил виден на диаграмме. Судя по ней, в этом году я вообще не бегун, а, в основном, пловец и немножко лыжник. Последний статус, кстати, оформился буквально в ноябре, когда я вновь поступил в лыжную школу 🎿

На год грядущий ничего обещать не буду, однако уже купил несколько слотов, которые и станут спортивными целями:
лыжный марафон в Томске в марте;
🏃 беговой полумарафон в Новосибирске в апреле;
🏊🏃 триатлонная эстафета в Белово (Кузбасс) в июне;
🏊 плавательный марафон на Тургояке (Миасс) в июле.

Зачем это всё? — быть может, спросите вы. Отвечу так: занятия позволяют выплёскивать энергию негативную и напитываться позитивной; это стремление обрести тот зыбкий баланс, что даёт продуктивно трудиться, приемлемо справляться со стрессом, не удаляться надолго от собственной "кукушки" и смотреть на вещи позитивно даже там, где объективных оснований для этого нет 🙂

Физического вам здоровья!🍀
#спорт #итоги
🔥7👍1
Итак, салаты доедены, Кока-Кола допита, фильмы досмотрены, можно возвращаться к разработке 👨‍💻

Хотя кого я обманываю — в этот раз она для меня не прерывалась ни на день. Сразу после окончания работы над семейными итогами года (которые тоже не обошлись без программистики), между поеданием вкусностей, катанием на лыжах/плюшках и прочими новогодними непотребствами, я начал одну экспериментальную разработку, о которой пока рассказать нечего кроме того, что изначально планировал закончить её MVP за каникулы и примерно сегодня показать вам, однако по факту успел сделать только 2/3 от первых 90%. Никогда такого не было, и вот опять🤪

В рамках этой активности продолжил прощупывать бесплатных #ИИ ассистентов разработчика, встраиваемых в #IDEA. На сей раз перешёл с Codeium на Tabnine. В целом, впечатления стали сильно позитивнее.
Из плюсов:
• гораздо меньше багов и нелепостей в реализации плагина к IDE (например, почти нет конфликтов со стандартными хоткеями);
• работает без VPN (по крайней мере, на модели Claude 3.5 Sonnet);
• гораздо лучше учитывает контекст проекта и почти все советы даёт в привязке к твоему коду, а не в вакууме;
• относительно хорошо справляется с генерацией кусочков кода по комментарию (именно так, не наоборот);
• при объяснениях может тыкнуть тебя носом в конкретное место в коде, на основе которого делает вывод.

👎 Из минусов:
• мутноватая схема обновления: может и сам, и через IDEA, и не всегда понятно, что происходит;
• довольно болтлив в suggest'ах — при длительной работе устаёшь читать его порой нелепые предложения;
• плоховато шарит в современной Java, например, предлагает работать с файлами через старый класс java.io.File вместо более гибкого java.nio.file.Path, а делать HTTP-запросы советует через java.net.HttpURLConnection вместо куда более удобного java.net.http.HttpClient. Впрочем, скорее всего, это дань реальности — большинство советов в интернете, на которых училась модель, написаны с этими классами, вот она им и следует.

🤭 Из забавного:
• Если после написанного комментария Tabnine не знает, какой код предложить, то вместо кода он генерит другой комментарий примерно такого вида:
// TODO implement what described in the comment above

• На странице своего аккаунта на сайте Tabnine есть раздел "🪄 Magic Moments", где собраны скриншоты предложенных им и не отклоненных тобой кусков кода (см. пример на картинке).

Пока намерен продолжить работать с Tabnine. Надо ещё попробовать, как минимум, генерацию тестов. Дальше будет видно 👁
2👍2
Forwarded from SnowOne-канал
Начинаем публиковать тезисы наших докладов, а заодно показывать вам новых спикеров в программе!

Сегодня говорим о хардкорных докладах SnowOne. Их у нас целых пять и каких!

1) Константин Владимиров из Syntacore на студенческом дне будет рассуждать о разнице между статическими и динамическими компиляторами, подробно остановившись на особенностях работы статических и обсудив их странные ограничения;

2) Александр Ланцов из Мир.Plarform обсудит эволюцию моделей памяти, как в Java, так и в других языках, покажет, какие в них есть проблемы, чем это все может быть чревато и как с этим всем жить;

3) Илья Гаврилин из Syntacore расскажет, как особенности устройства и микроархитектура процессора могут влиять на производительность JVM;

4) Роман Артемьев из Syntacore покажет, какие GC есть на Андроиде, чем они отличаются от GC в Hotspot и объяснит, как полностью concurrent GC может не слишком сильно просаживать производительность;

5) Петр Портнов из Ozon проанализирует историю switch в Java: покажет, что они унаследовали из Ceylon, как под капотом устроены нетривиальные случаи, и чего еще не хватает для красоты мира.



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

Хорошей всем недели!
1
Меж тем программа апрельской конференции JPoint (в Москве) уже начала публиковаться на сайте: https://jpoint.ru/talks/
Докладчиков пока совсем немного, но даже среди них вы уже можете встретить знакомые лица 😉
🔥71
Продолжаем подкидывать полешки в костёр интереса к предстоящей конференции SnowOne 2025 😉🔥
2
Forwarded from SnowOne-канал
Опубликованы спикеры студенческого дня!

Напоминаем, что на SnowOne есть специальный студенческий день 28 февраля, куда можно попасть бесплатно, если: а) вы студент (в таком случае при регистрации выбирайте билет Academic), б) вы посетитель основного дня и у вас есть билет.

Что же на нем будет происходить в этом году?

1) Константин Владимиров, про которого мы уже рассказывали в анонсе хардкорных спикеров, будет рассказывать про особенности статических компиляторов (доклад особенно подойдет студентам, кому интересно системное программирование);

2) Екатерина Шевчук поможет разобраться, что такое CI/CD, и как это поможет в вашей будущей карьере разработчика;

3) Алексей Овсянников покажет самые популярные Java и Kotlin библиотеки для написания Telegram Bots;

4) Роман Елизаров объяснит, зачем было создавать язык Kotlin: это рассказ из первых уст одного из главных дизайнеров и разработчиков Kotlin и автора механизма корутин в языке.

Получается такой супер-сплав практической пользы и уникальных знаний, не пропустите!

Больше деталей про доклады студенческого дня можно посмотреть вот здесь, а зарегистрироваться/приобрести билеты все еще можно вот здесь.
🥰2
Forwarded from SnowOne-канал
Мы продолжаем публиковать описания докладов и даже чуть ускоряемся! Сегодня очередь самого практического контента: доклады из категории Enterprise (все доклады будут в основной день, 1 марта).

1) Павел Кислов раскроет тему Spring Security и его работы с OAuth2, OIDC, SAML, SSO и Spring Authorization Server;

2) Михаил Поливаха прочитает основательный доклад про ORM-системы, рассмотрит примеры, ключевые дизайн-принципы и вытекающие из этого ограничения и use-кейсы;

3) Артём Бояршинов расскажет о том, как правильно проектировать Fluent API на Java, обратившись к примерам популярных библиотек: Spring Security, AssertJ, Awaitility и других;

4) Илья и Фёдор Сазоновы объяснят, что за настройка OSIV в Spring, чем она вредит и почему ее нужно отключать. Обсудят, что можно сделать, если пожар, вызванный этой настройкой, надо тушить прямо сейчас и времени на рефакторинг системы нет;

5) Сергей Петрелевич выступит с докладом "Что такое и для чего нужно backpressure?", где полностью раскроет тему и в том числе покажет, как backpressure уже реализовано в WebFlux.

Больше деталей о каждом из докладов можно прочитать здесь, а у нас впереди анонс еще одного блока интереснейших докладов, не переключайтесь!
🔥1