Привет любители производительности!
Как подружить Gatling и JUnit 5
Вызов Java-метода
import io.gatling.app.Gatling
Думаю что вы уже знаете, как вызвать Gatling программно
но вот незадача — там в конце main-вызова есть
и этот код завершит текущий процесс, включая и Junit 5 процесс — все просто схлопнется, но нагрузка выполнится до конца, а вот сделать какой-то assert или обработку в Junit уже не получится
Вызов Scala-метода
import io.gatling.app.`Gatling$`
Можно запустить Scala-класс явно, без Java-обертки которая вызывает exit в конце
Тут все получится и тест не завершится. Но он не упадет если внутри Gatling сработали ассерты.
Добавить проверку статуса
import io.gatling.app.`Gatling$` + код возврата
Чтобы внутренние ассерты сработали надо еще добавить проверку кода:
Проверка на Kotlin может выглядеть вот так
Как подружить Gatling и JUnit 5
Вызов Java-метода
import io.gatling.app.Gatling
Думаю что вы уже знаете, как вызвать Gatling программно
Gatling.main(gatlingArgs);
но вот незадача — там в конце main-вызова есть
.MODULE$.exit(this.fromArgs(args));
и этот код завершит текущий процесс, включая и Junit 5 процесс — все просто схлопнется, но нагрузка выполнится до конца, а вот сделать какой-то assert или обработку в Junit уже не получится
Вызов Scala-метода
import io.gatling.app.`Gatling$`
Можно запустить Scala-класс явно, без Java-обертки которая вызывает exit в конце
`Gatling$`.`MODULE$`.fromArgs(gatlingArgs)
Тут все получится и тест не завершится. Но он не упадет если внутри Gatling сработали ассерты.
Добавить проверку статуса
import io.gatling.app.`Gatling$` + код возврата
Чтобы внутренние ассерты сработали надо еще добавить проверку кода:
┌─────────────────────────────┬───────────┬──────────────────────┐
│ Scala case object │ Exit code │ Значение │
├─────────────────────────────┼───────────┼──────────────────────┤
│ StatusCode.Success │ 0 │ Всё ок │
├─────────────────────────────┼───────────┼──────────────────────┤
│ StatusCode.InvalidArguments │ 1 │ Ошибка аргументов │
├─────────────────────────────┼───────────┼──────────────────────┤
│ StatusCode.AssertionsFailed │ 2 │ Assertions провалены │
└─────────────────────────────┴───────────┴──────────────────────┘
Проверка на Kotlin может выглядеть вот так
val exitCode = `Gatling$`.`MODULE$`.fromArgs(gatlingArgs)
if (exitCode != 0) {
throw AssertionError(
"Gatling simulation ${simulationClass.simpleName} failed with exit code $exitCode" +
if (exitCode == 2) " (assertion failures — check Gatling report for details)" else ""
)
}
🔥3
Привет любители производительности!
У меня уходило ~ $10 в день на токены для AI агентов при кодинге. А вчера я запустил тесты агентом, где агент анализировал результаты. Ушло $137, на примерно 11 запусков коротких тестов для разных версий, анализ логов и результатов и сравнительный анализ
Что-то дорого, в разы дороже. Все потому что логи анализировались и было ожидание завершения тестов
Сегодня переделал подход, где вместо чтения и анализа логов просто assert
🤩 один раз сгенерировал код, который делает тесты на логи и метрики по результатам запуска, это стоило $2-3
🤩 теперь JUnit сам дожидается и проверяет все что нужно
🤩 запустил все в CI для разных версий, а потом посмотрел на результаты (да вручную, но было недолго)
Теперь буду для исследовательских задач писать детерминированный код, функциональный тест. Код писать недорого, а вот на инструкциях естественным языком и использовании моделей внутри процесса можно сильно потратиться к
У меня уходило ~ $10 в день на токены для AI агентов при кодинге. А вчера я запустил тесты агентом, где агент анализировал результаты. Ушло $137, на примерно 11 запусков коротких тестов для разных версий, анализ логов и результатов и сравнительный анализ
Что-то дорого, в разы дороже. Все потому что логи анализировались и было ожидание завершения тестов
Сегодня переделал подход, где вместо чтения и анализа логов просто assert
Теперь буду для исследовательских задач писать детерминированный код, функциональный тест. Код писать недорого, а вот на инструкциях естественным языком и использовании моделей внутри процесса можно сильно потратиться к
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Привет любители производительности!
Было ли такое что у вас есть какой-то важный лог в котором явно есть структура и поля в тексте сообщения. Но в Grafana вы можете показать лишь все сообщение целиком
🤩 Выделить только часть
🤩 Сгруппировать по подстроке
🤩 Сделать возможность клика и фильтрации по подстроке
... не получается
В Grafana теперь есть Extract Fields трансформация с поддержкой регулярных выражений
как для однострочных сообщений
Так и для многострочных сообщений (заканчивается на /s)
Теперь можно выделять и допаршивать тексты сообщений в браузере и делать невероятно крутые доски по алертам, по специальным классам исключений
Было ли такое что у вас есть какой-то важный лог в котором явно есть структура и поля в тексте сообщения. Но в Grafana вы можете показать лишь все сообщение целиком
... не получается
В Grafana теперь есть Extract Fields трансформация с поддержкой регулярных выражений
как для однострочных сообщений
/Failed to perform (?<Action>[^ ]+) with unexpected Exception\: Connect timeout has expired \[url=(?<url>[^,]*),/Так и для многострочных сообщений (заканчивается на /s)
/Failed to perform (?<Action>[^:]+): Status: (?<Status>[0-9]+). Message: Exception during request to (?<url>[^ ]*) with code (?<Code>[0-9]+)\: (?<Message>.*)\nGRAZIE traceID: (?<traceID>[0-9,a-f]+)\n(?<StackTrace>.*)/sТеперь можно выделять и допаршивать тексты сообщений в браузере и делать невероятно крутые доски по алертам, по специальным классам исключений
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Привет любители производительности!
Собрал промежуточные результаты наших опросов https://xn--r1a.website/qa_load/170588. Картина получается интересная: местами предсказуемая, а местами заставляющая задуматься, куда мы идем. 🤩
1️⃣ Кто мы и где находимся
Большая часть нашего сообщества (более 85%) это специалисты из РФ и РБ. Рынок повзрослел: сеньоров и лидов у нас почти столько же, сколько мидлов, а вот джунов совсем мало, меньше 5%. Это подтверждает мысль: простые задачи уходят в AI, и порог входа становится выше
2️⃣ Про деньги и полярность
Медиана нашего рынка — $2 000-$3 500. Но разброс колоссальный:
👑 Верхушка айсберга: Всего 3 человека (около 1.5%) пробили планку в $15 000-$22 000+. Это почти 100% корреляция с рынком США и позициями Staff-уровня.
🦾 Эффект Overemployment: 19 человек работают на 2+ проектах одновременно. Скорее всего, это они сидят в вилке $7 500-$12 000, превращаясь в индивидуальное Performance-агентство за счет AI, экономящего им 40% времени.
📉 Зона турбулентности: 33 человека получают меньше $2 000. При этом работу ищут 27 человек. Рынок насыщен специалистами с опытом 2–3 года, которые конкурируют за все чеки и за низкие чеки тоже
#статистика_нт #карьера_2026
Собрал промежуточные результаты наших опросов https://xn--r1a.website/qa_load/170588. Картина получается интересная: местами предсказуемая, а местами заставляющая задуматься, куда мы идем. 🤩
1️⃣ Кто мы и где находимся
Большая часть нашего сообщества (более 85%) это специалисты из РФ и РБ. Рынок повзрослел: сеньоров и лидов у нас почти столько же, сколько мидлов, а вот джунов совсем мало, меньше 5%. Это подтверждает мысль: простые задачи уходят в AI, и порог входа становится выше
2️⃣ Про деньги и полярность
Медиана нашего рынка — $2 000-$3 500. Но разброс колоссальный:
👑 Верхушка айсберга: Всего 3 человека (около 1.5%) пробили планку в $15 000-$22 000+. Это почти 100% корреляция с рынком США и позициями Staff-уровня.
🦾 Эффект Overemployment: 19 человек работают на 2+ проектах одновременно. Скорее всего, это они сидят в вилке $7 500-$12 000, превращаясь в индивидуальное Performance-агентство за счет AI, экономящего им 40% времени.
📉 Зона турбулентности: 33 человека получают меньше $2 000. При этом работу ищут 27 человек. Рынок насыщен специалистами с опытом 2–3 года, которые конкурируют за все чеки и за низкие чеки тоже
#статистика_нт #карьера_2026
❤1👍1🔥1
Media is too big
VIEW IN TELEGRAM
Сегодня хорошая погода. И выходной день. Речка в такой день один из лучших способов отдохнуть, чтобы завтра продолжить тесты писать
❤6
Media is too big
VIEW IN TELEGRAM
Привет performance lovers! Сегодня снова выходной, снова принес вам водицы. Это уже озеро в горах, холодное, чистое, красивое — чтобы вы отдохнули, подумали свои мысли и были готовы к любым алертам завтра, встречая их с улыбкой 🤗
Из нового — готовили с Мишей Жилиным доклад на Heisenbug и узнал из него как использовать git bisect с тестами производительности. Шел 40-й год жизни, я узнал про эту команду, которая была в git чуть ли не с начала времен🤦♂️
В рассказе Миши столько прикольных нагрузочный историй! Если вы будете на конференции завтра, то зайдите к нему, привет передайте
Из нового — готовили с Мишей Жилиным доклад на Heisenbug и узнал из него как использовать git bisect с тестами производительности. Шел 40-й год жизни, я узнал про эту команду, которая была в git чуть ли не с начала времен
# Вместо good/bad задаём свои слова: fast и slow
# Для поиска регрессий производительности
git bisect start --term-old fast --term-new slow
git bisect fast v5.17 # эта версия быстрая
git bisect slow v5.18 # эта — медленная
git bisect run ./bench.sh # exit 0 = fast, exit 1 = slow
# → 56a4d67c264e — коммит, замедливший систему
В рассказе Миши столько прикольных нагрузочный историй! Если вы будете на конференции завтра, то зайдите к нему, привет передайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
https://performance.shopify.com/pages/services
Интересная бизнес модель у отличной платформы создания интернет магазинов shopify — можно нанять их команду производительности или команду партнеров 💡
Обычно же это просто поддержка, люди пишут задачу, задача доходит до тебя и разбираешься в ней. А тут целый найм
Как они добились и как обосновывают?
https://www.shopify.com/enterprise/blog/store-speed-conversion
Посчитали, что 100 ms задержки к LCP снижают конверсию (вероятность покупки) на 3.5%
А 32 ms к INP также снижают эту вероятность на 1.5%
И чтобы это посчитать они сделали сервис аналитики производительности (встроенный в систему)
https://help.shopify.com/en/manual/online-store/web-performance/web-performance-reports
Отчёт небольшой, использует хранилище Google и просто показывает метрики из него, эти метрики Google и так собирает со всех Google-устройств и Chrome-ов
💰 Их фишка, что они смогли собрать ключевую метрику Conversion rate по сайтам клиентов и соотнести ее с performance метриками
Для этого им скорее всего пришлось постараться и сделать непростой механизм сбора бизнес метрик. Сохранить и обогатить CrUX метрики. Выстроить сеть партнеров с perf-компетенциями. И запустить все
Крутой проект, сколько рабочих мест создано! И как же это красиво подано 🔥
Интересная бизнес модель у отличной платформы создания интернет магазинов shopify — можно нанять их команду производительности или команду партнеров 💡
Обычно же это просто поддержка, люди пишут задачу, задача доходит до тебя и разбираешься в ней. А тут целый найм
Как они добились и как обосновывают?
https://www.shopify.com/enterprise/blog/store-speed-conversion
The trend is clear: for every 100 milliseconds slower a store loads, conversion tends to be about 3.5% lower.
Посчитали, что 100 ms задержки к LCP снижают конверсию (вероятность покупки) на 3.5%
For every 32 milliseconds slower a store responds to interactions, conversion tends to drop by about 1.5%.
А 32 ms к INP также снижают эту вероятность на 1.5%
И чтобы это посчитать они сделали сервис аналитики производительности (встроенный в систему)
https://help.shopify.com/en/manual/online-store/web-performance/web-performance-reports
Отчёт небольшой, использует хранилище Google и просто показывает метрики из него, эти метрики Google и так собирает со всех Google-устройств и Chrome-ов
💰 Их фишка, что они смогли собрать ключевую метрику Conversion rate по сайтам клиентов и соотнести ее с performance метриками
Для этого им скорее всего пришлось постараться и сделать непростой механизм сбора бизнес метрик. Сохранить и обогатить CrUX метрики. Выстроить сеть партнеров с perf-компетенциями. И запустить все
Крутой проект, сколько рабочих мест создано! И как же это красиво подано 🔥
🔥8
Привет performance lovers! Я начал забывать
Двадцать лет назад я зачитывался историями про ученых Греции, про физиков и математиков. Поражала их память и объёмы информации в их голове
Тогда я делал одно упражнение по вечерам — возвращаясь домой вспоминал весь свой день в деталях. Только один день, но очень детально
И это помогало быстро вспоминать что было вчера и неделю назад и месяц
Были и специальные заучивания. В университете у меня была специальная книжка куда я выписывал номера телефонов всех своих знакомых. Я фанат блокнотов и ручек и записей. А выписывание помогало запоминать их
Как-то работая в НПО я заучил и запомнил всех коллег по фото и имени. Не помню сколько человек это было, думаю пару недель учил просматривая карточки в SharePoint снова и снова. Там можно было делать что-то типа SQL запросов к данным и создавать отчёты — только с фото, только с именем, и с фото и с именем
А сегодня мне друг напомнил про поход к водопаду рядом с Иджеваном, а я не помню где это, где Иджеван? Какой из походов это был?
Буду снова ходить домой пешком и по пути вспоминать весь свой день в деталях. И записки надо будет вести активнее, рисунки и схемы рисовать, не полагаться на Google, который найдет.
Надеюсь, когда мы встретимся с вами и возникнет вопрос — а помнишь … — буду помнить
Двадцать лет назад я зачитывался историями про ученых Греции, про физиков и математиков. Поражала их память и объёмы информации в их голове
Тогда я делал одно упражнение по вечерам — возвращаясь домой вспоминал весь свой день в деталях. Только один день, но очень детально
И это помогало быстро вспоминать что было вчера и неделю назад и месяц
Были и специальные заучивания. В университете у меня была специальная книжка куда я выписывал номера телефонов всех своих знакомых. Я фанат блокнотов и ручек и записей. А выписывание помогало запоминать их
Как-то работая в НПО я заучил и запомнил всех коллег по фото и имени. Не помню сколько человек это было, думаю пару недель учил просматривая карточки в SharePoint снова и снова. Там можно было делать что-то типа SQL запросов к данным и создавать отчёты — только с фото, только с именем, и с фото и с именем
А сегодня мне друг напомнил про поход к водопаду рядом с Иджеваном, а я не помню где это, где Иджеван? Какой из походов это был?
Буду снова ходить домой пешком и по пути вспоминать весь свой день в деталях. И записки надо будет вести активнее, рисунки и схемы рисовать, не полагаться на Google, который найдет.
Надеюсь, когда мы встретимся с вами и возникнет вопрос — а помнишь … — буду помнить
❤7
Привет любители производительности! Участвую во взаимном продвижении IT-чатов и каналов — "IT в деле" В сборке есть разные тематики
Что внутри:
🧑💻 Каналы о программировании и разработке: Python, CSS, HTML, Java и Swift
👨💻 GameDev и каналы о QA тестироварии, создание игр и тестирование (мы туть)
🤖 Авторские каналы и вайбкодинг: IT & AI, простые заметки с проектов, работа с нейросетями
🤩 Информационная безопасность: многое узнаете о работе хакеров
Много интересного! Выберите интересные вам каналы или подпишитесь на всю сборку
Что внутри:
🧑💻 Каналы о программировании и разработке: Python, CSS, HTML, Java и Swift
Много интересного! Выберите интересные вам каналы или подпишитесь на всю сборку
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
IT в деле
You’ve been invited to add the folder “IT в деле”, which includes 42 chats.
🔥7
Привет performance lovers!
Все мы знаем, что профилирование это небесплатная операция, она имеет свою performance цену. Давайте посмотрим, как это может выглядеть на примере профайлера с самыми агрессивными настройками профилирования (включить все)
🔴 Видно что все потоки красные и заблокированы
🟡 Но на Flame Graphs и в стрек-трейсах ничего нет — как будто базовый метод-обертка взял и затормозил
Как такое возможно?
А возможно — профайлер не показывает в данных профилирования сам себя и накладные расходы на профилирование
Я включил все probes и загрузка всех probes замедлила все потоки — без дополнительных инструментов такое не увидеть, но можно было предположить, что так будет
Удачного профилирования!
Все мы знаем, что профилирование это небесплатная операция, она имеет свою performance цену. Давайте посмотрим, как это может выглядеть на примере профайлера с самыми агрессивными настройками профилирования (включить все)
🔴 Видно что все потоки красные и заблокированы
🟡 Но на Flame Graphs и в стрек-трейсах ничего нет — как будто базовый метод-обертка взял и затормозил
Как такое возможно?
А возможно — профайлер не показывает в данных профилирования сам себя и накладные расходы на профилирование
Я включил все probes и загрузка всех probes замедлила все потоки — без дополнительных инструментов такое не увидеть, но можно было предположить, что так будет
Удачного профилирования!
👍6❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Привет performance lovers!
Снова выходной, снова принёс вам водицы. Это река Изар, слышно как шумят пороги на ней. Неделя была интересной, теперь здорово и отдохнуть
Несколько уроков этой недели
Порядок инструкции в NGinx конфиге важен, каждая следующая дополняет или переопределяет предыдущие. И например нельзя задать размер map-ов уже после определения любой map-ы
Правила NGinx location с регулярными выражениями имеют более высокий приоритет, чем правила location с точным совпадением. Это не было очевидно. В результате, все location правила переписал на регулярки
Если размер JVM MetaSpace недостаточно большой, то при выполнении GC для MetaSpace, эта область памяти очищается, и JVM начинает по новой компилировать код (это пока не 100% истина, но основная рабочая гипотеза отладки одного случая с очень активной компиляцией кода)
Отличных вам выходных! 🤗
Снова выходной, снова принёс вам водицы. Это река Изар, слышно как шумят пороги на ней. Неделя была интересной, теперь здорово и отдохнуть
Несколько уроков этой недели
Порядок инструкции в NGinx конфиге важен, каждая следующая дополняет или переопределяет предыдущие. И например нельзя задать размер map-ов уже после определения любой map-ы
Правила NGinx location с регулярными выражениями имеют более высокий приоритет, чем правила location с точным совпадением. Это не было очевидно. В результате, все location правила переписал на регулярки
Если размер JVM MetaSpace недостаточно большой, то при выполнении GC для MetaSpace, эта область памяти очищается, и JVM начинает по новой компилировать код (это пока не 100% истина, но основная рабочая гипотеза отладки одного случая с очень активной компиляцией кода)
Отличных вам выходных! 🤗
👍4🔥1
Привет performance lovers!
Представьте, что вы применили оптимизацию, но через минуту стало только хуже, и через пять минут — тоже, и через десять...
🫣 Что это, почему так?
🤓 Все хорошо. Это кеши, и первое время они прогреваются и наполняются. Вот видно, что через 17-20 минут они заработали
☺️ Но первые 10 минут я хотел их выключить. Решил, что уже вечер и надо перекусить перед таким откатом, и пошёл за чаем. А когда вернулся — всё уже работало как надо
🤗 Пейте чай!
Представьте, что вы применили оптимизацию, но через минуту стало только хуже, и через пять минут — тоже, и через десять...
🫣 Что это, почему так?
🤓 Все хорошо. Это кеши, и первое время они прогреваются и наполняются. Вот видно, что через 17-20 минут они заработали
☺️ Но первые 10 минут я хотел их выключить. Решил, что уже вечер и надо перекусить перед таким откатом, и пошёл за чаем. А когда вернулся — всё уже работало как надо
🤗 Пейте чай!
😁6🔥1
Привет, performance lovers!
Новая загадка с перцентилями
Было применено кеширование, в этом случае кеширование ответов на входящие HTTP запросы, и часть ответов теперь будут кешироваться в браузере, даже не на сервере. И после применения — числа на графиках с перцентилями серверных ответов пошли вверх
Это хорошо. Так и должно быть
Как вы думаете почему это на графике времени отклика есть такой эффект? И какой еще график стоит посмотреть для получения полной картины?
Новая загадка с перцентилями
Было применено кеширование, в этом случае кеширование ответов на входящие HTTP запросы, и часть ответов теперь будут кешироваться в браузере, даже не на сервере. И после применения — числа на графиках с перцентилями серверных ответов пошли вверх
Это хорошо. Так и должно быть
Как вы думаете почему это на графике времени отклика есть такой эффект? И какой еще график стоит посмотреть для получения полной картины?
🔥1
Привет performance lovers!
Это моя мастерская по настройке переключателей скоростей. Состоит из стульев и метелки🤦♂️
Начинал настройку я на балконе, но там холодно🥶 и света нет. Поэтому постепенно мастерская переехала в комнату
Переключатели настраиваются так, что сначала задний, а потом передний. Но чтобы настроить задний, передний тоже нужен — на среднюю звезду надо как-то поставить все. Разных зависимостей масса
При настройке переднего есть гайды👨💻 с 10-ю шагами, но без описания того а какое состояние вообще исходное — когда все работает, но что-то не так или оно какое-то конкретное — в таких гайдах не хватает еще шагов 0, 1.5, 2.5, ... и их должно быть 21 а не 10
А к чему это я тут ворчу?
В сообществе бывают задают вопросы не про настройку такой "простой" ерунды как переключатель скоростей. А про настройку параметров сложной системы где десятки зависимых элементов, или про инструмент где тоже десятки параметров. В вопросах почти никогда нет всего контекста и текущего состояния. Или исходного состояния. И на такие вопросы как-то отвечают, и ответы даже годные и даже помогают
Я теперь просто не представляю, как людям удается давать годные ответы только по неполному текстовому описанию? И мои ожидания от детальности гайдов по настройке чего-то теперь поднялись на новый уровень. Надо будет сделать что-то по нагрузке
А как я настроил эти перeключатели?
1️⃣ Посмотрел несколько видео, раз 10 посмотрел (часы)
2️⃣ Покрутил, собрал, разобрал, собрал, разобрал (десятки раз)
3️⃣ Снова посмотрел руководства
4️⃣ Вот начало что-то получаться, но все равно не уверен, что правильно
5️⃣ Надо будет поездить и потом перенастроить
Это моя мастерская по настройке переключателей скоростей. Состоит из стульев и метелки
Начинал настройку я на балконе, но там холодно
Переключатели настраиваются так, что сначала задний, а потом передний. Но чтобы настроить задний, передний тоже нужен — на среднюю звезду надо как-то поставить все. Разных зависимостей масса
При настройке переднего есть гайды
А к чему это я тут ворчу?
В сообществе бывают задают вопросы не про настройку такой "простой" ерунды как переключатель скоростей. А про настройку параметров сложной системы где десятки зависимых элементов, или про инструмент где тоже десятки параметров. В вопросах почти никогда нет всего контекста и текущего состояния. Или исходного состояния. И на такие вопросы как-то отвечают, и ответы даже годные и даже помогают
Я теперь просто не представляю, как людям удается давать годные ответы только по неполному текстовому описанию? И мои ожидания от детальности гайдов по настройке чего-то теперь поднялись на новый уровень. Надо будет сделать что-то по нагрузке
А как я настроил эти перeключатели?
1️⃣ Посмотрел несколько видео, раз 10 посмотрел (часы)
2️⃣ Покрутил, собрал, разобрал, собрал, разобрал (десятки раз)
3️⃣ Снова посмотрел руководства
4️⃣ Вот начало что-то получаться, но все равно не уверен, что правильно
5️⃣ Надо будет поездить и потом перенастроить
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤1
Привет performance lovers!
Сегодня погода хорошая, но дома сижу. Решил проверить пределы LinkedIn и отправил приглашений коллегам, получилось 442. Мне понравилось тем, что все ждал как меня забанят в📱 , а оно не случилось
Возможно, при работе с мобильным приложением штрафы не так сильно начисляются, как при работе из браузера
Возможно, дело в том, что меня уже банили раза три, а я потом возвращался или подтверждал, что я живой человек
Возможно, дело в том, что приглашения коллегам, а не совсем случайным людям, и я их знаю, или хотя бы видел, в чате, где-то
Еще поменял описание на
🔮 Most performance issues are predictable
давно уже поменял, но в поиске все еще пишется
💻 Performance engineer at JetBrains
а иногда
💻 Performance engineer at YouTrack
это использовал после JetBrains
Кеши в LinkedIn на столько суровы, что пока не прогрелись. И видимо, для комментариев, реакций и профиля разные кеши — по разному отображается потому что
💡 Возможно, и нам стоит быть смелее в кешировании
И раз уж мы про линк, то добавляйтесь, всем добра!
📱 https://www.linkedin.com/in/v8v
Чтобы это было вам полезно — напишите о себе в комментариях и оставьте ссылку на linkedin для взаимоконнектов
Сегодня погода хорошая, но дома сижу. Решил проверить пределы LinkedIn и отправил приглашений коллегам, получилось 442. Мне понравилось тем, что все ждал как меня забанят в
Возможно, при работе с мобильным приложением штрафы не так сильно начисляются, как при работе из браузера
Возможно, дело в том, что меня уже банили раза три, а я потом возвращался или подтверждал, что я живой человек
Возможно, дело в том, что приглашения коллегам, а не совсем случайным людям, и я их знаю, или хотя бы видел, в чате, где-то
Еще поменял описание на
🔮 Most performance issues are predictable
давно уже поменял, но в поиске все еще пишется
а иногда
это использовал после JetBrains
Кеши в LinkedIn на столько суровы, что пока не прогрелись. И видимо, для комментариев, реакций и профиля разные кеши — по разному отображается потому что
💡 Возможно, и нам стоит быть смелее в кешировании
И раз уж мы про линк, то добавляйтесь, всем добра!
Чтобы это было вам полезно — напишите о себе в комментариях и оставьте ссылку на linkedin для взаимоконнектов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Привет performance lovers! Перефразируя классику:
(ближе к зиме), но так далеко
И, часто, только на Performance Review мы получим объективную обратную связь о себе. Это как запускать тесты раз в год или пару раз
❓ Как бы получить обратную связь побыстрее, подумал я
✅ И применил вот эти руководства 📱 https://github.com/DenisSergeevitch/agents-best-practices от 📱 @denissexy для создания агентов, которые будут делать критическое ревью моих performance issues (пока только этого)
Получилось очень хорошо. Я прямо очень доволен. На вход агенту подал описание грейдов и мои текущие цели, о которых есть явная договоренность с менеджером. И теперь мои дела оцениваются агентом на соответствие этим целям
Агент принимает на вход как я описал проблему производительности, и я получаю оценку — достойная ли это проблема, хорошо ли описана
Я заметил, что появились коллеги, которые читают дефекты и ставят лайки. Лайки от коллег это отлично 🤗, а теперь будет и критика от Junie, описание задачи передаю просто ссылкой на задачу, а агент через MCP к💻 YouTrack получает детали
Рекомендую эти скилы
📱 https://github.com/DenisSergeevitch/agents-best-practices
для создания агентов
Просто по инструкции сделал. Получилось хорошо. А потом повторно написал — а теперь обнови агента и критически оцени его — и получилось еще лучше
Performance review близко
(ближе к зиме), но так далеко
И, часто, только на Performance Review мы получим объективную обратную связь о себе. Это как запускать тесты раз в год или пару раз
Получилось очень хорошо. Я прямо очень доволен. На вход агенту подал описание грейдов и мои текущие цели, о которых есть явная договоренность с менеджером. И теперь мои дела оцениваются агентом на соответствие этим целям
Агент принимает на вход как я описал проблему производительности, и я получаю оценку — достойная ли это проблема, хорошо ли описана
Я заметил, что появились коллеги, которые читают дефекты и ставят лайки. Лайки от коллег это отлично 🤗, а теперь будет и критика от Junie, описание задачи передаю просто ссылкой на задачу, а агент через MCP к
Рекомендую эти скилы
для создания агентов
Просто по инструкции сделал. Получилось хорошо. А потом повторно написал — а теперь обнови агента и критически оцени его — и получилось еще лучше
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - DenisSergeevitch/agents-best-practices: Provider-neutral Agent Skill for Codex, Claude Code, and agentic harness design.
Provider-neutral Agent Skill for Codex, Claude Code, and agentic harness design. - DenisSergeevitch/agents-best-practices
❤2👍1🔥1
Media is too big
VIEW IN TELEGRAM
Привет performance lovers!
Сегодня снова выходной, а значит можно перезагрузиться. Если у вас хорошая погода — это может быть вода, река, бассейн. А может быть и вкусный чай. Видео выше не передает ароматы, желаю вам найти такое же ароматное место рядом с домом☕️
Я продолжаю упрощать свою работу до нажатия кнопки или строчки кода/промта. Почти всю неделю занимался инструкциями и пайплайнами. Еще посмотрел про ИИ в разработке aidevconf.org — понравилось, люди делают сложное простым с помощью новых технологий
💡Интересные мысли умных людей
Простая мысль была в рассказе от Андрея Бреслава (автор Kotlin, …, CodeSpeak) про то, что, когда инженерия программного обеспечения станет обычной вещью, то и зарплаты в разработке станут, как у многих других инженеров — это время близится. И за простую программу-таймер для iPhone он уже не готов платить, он ее сгенерирует
А другая простая мысль была в YouTube в рассказе дедушки с жемчужной сережкой (канал такой), что телефон — это современный социальный лифт, делаешь с помощью мозгов что-то хорошо, и получаешь рост, это может быть хорошее приложение
Если сложить эти две мысли, то получится, что разработка — это социальный лифт, но простые приложения уже не так ценятся, как раньше
В этом что-то есть, звучит, как план
Сегодня снова выходной, а значит можно перезагрузиться. Если у вас хорошая погода — это может быть вода, река, бассейн. А может быть и вкусный чай. Видео выше не передает ароматы, желаю вам найти такое же ароматное место рядом с домом
Я продолжаю упрощать свою работу до нажатия кнопки или строчки кода/промта. Почти всю неделю занимался инструкциями и пайплайнами. Еще посмотрел про ИИ в разработке aidevconf.org — понравилось, люди делают сложное простым с помощью новых технологий
💡Интересные мысли умных людей
Простая мысль была в рассказе от Андрея Бреслава (автор Kotlin, …, CodeSpeak) про то, что, когда инженерия программного обеспечения станет обычной вещью, то и зарплаты в разработке станут, как у многих других инженеров — это время близится. И за простую программу-таймер для iPhone он уже не готов платить, он ее сгенерирует
А другая простая мысль была в YouTube в рассказе дедушки с жемчужной сережкой (канал такой), что телефон — это современный социальный лифт, делаешь с помощью мозгов что-то хорошо, и получаешь рост, это может быть хорошее приложение
Если сложить эти две мысли, то получится, что разработка — это социальный лифт, но простые приложения уже не так ценятся, как раньше
В этом что-то есть, звучит, как план
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6😭1
Привет performance lovers!
Как-то начал давать короткие советы-истории-опросы в общем чате @qa_load и один из таких был про проведение регулярных демо. В пятницу делал демо, надо было рассказать коротко, поэтому выбрал тему которая рассказывается за 50-60 секунд
Показал, что добавил архив с профилированием и вкладку в TeamCity для быстрого доступа к отчету
За две недели много чего интересного было, но на демо интересно смотреть что-то простое и применимое всей командой. Поэтому выбрал на то, что показать легко и быстро
Рассказ на 50-60 секунд был такой:
• Hook
• Action
• Result
• Next / Question
по всем правилам презентаций
Говорил примерно так:
Вступление
использую. Мне нравится. Команде тоже
Как-то начал давать короткие советы-истории-опросы в общем чате @qa_load и один из таких был про проведение регулярных демо. В пятницу делал демо, надо было рассказать коротко, поэтому выбрал тему которая рассказывается за 50-60 секунд
Показал, что добавил архив с профилированием и вкладку в TeamCity для быстрого доступа к отчету
За две недели много чего интересного было, но на демо интересно смотреть что-то простое и применимое всей командой. Поэтому выбрал на то, что показать легко и быстро
Рассказ на 50-60 секунд был такой:
• Hook
• Action
• Result
• Next / Question
по всем правилам презентаций
Говорил примерно так:
Hello performance lovers! Analyzing YouTrack performance tests in TeamCity was quite difficult. We didn't have a fast way to see profiling and test results.
I added new profiling formats for better analysis of different performance cases. I also created a separate, convenient archive for all YourKit snapshots. Finally, I implemented a dedicated report tab in TeamCity that shows all test results in one place.
As a result, troubleshooting performance regressions is now much faster. It takes only one click to find a YourKit snapshot instead of several minutes of searching. This saves our team an hour every week.
I want to add new tabs with flame graphs and log based reports. Do you have any suggestions for the new report tab? Fell free to ping me
Вступление
Hello performance lovers!
использую. Мне нравится. Команде тоже
❤6
Привет performance lovers!
На прошлой неделе коллега из другой команды пришел с вопросом про автоматизацию тестирования в нашей команде. Я ему рассказал разное, и в том числе что поменялся подход к оформлению дефектов
Ранее, в 2025-м году:
🤩 дефект должен был быть кратким, содержать только суть и чек боксы, коллегам было неудобно читать про узкие места в дефекте, информация про дату, связанные метрики, версии, … была лишней — они просили суть и ссылку на профилирование
Сейчас в 2026-м году:
💰 дефект должен быть детальным, структурированным, содержать профилирование в текстовом формате (collapsed-формат), содержать стек-трейсы и весь нужный контекст — дефект пишется для агентов коллег, и агентам нужна вся эта структура и история, предыстория, … в машиночитаемом формате, где каждая строка выверена
😂 Если в 2025-м, я получал обратную связь — пиши сокращай, то сейчас получаю обратную связь — Круто, а как это оформляется? Покажи свои скиллы!
Уже успел и сжать контекст и разжать его назад. Но готовых скилов и сабагентов для разного типа задач у меня не было. Вот теперь описал, как оформлять дефект, и как его другой агент будет читать
Оказалось непросто, хотя казалось бы, ерунда и что-то очевидное, как дышать. А вот нет. Как отлажу их, то поделюсь
Покажи свои скиллы
На прошлой неделе коллега из другой команды пришел с вопросом про автоматизацию тестирования в нашей команде. Я ему рассказал разное, и в том числе что поменялся подход к оформлению дефектов
Ранее, в 2025-м году:
Сейчас в 2026-м году:
Уже успел и сжать контекст и разжать его назад. Но готовых скилов и сабагентов для разного типа задач у меня не было. Вот теперь описал, как оформлять дефект, и как его другой агент будет читать
Оказалось непросто, хотя казалось бы, ерунда и что-то очевидное, как дышать. А вот нет. Как отлажу их, то поделюсь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥1
Привет performance lovers!
Я испытываю стресс во время планирования
История такая, что сплю нерегулярно, и стал измерять свой сон часами (устройством). Чтобы улучшить сон. Замеры показывают, что сон короткий, но отличный🤩 . Продолжаю мониторинг.
Но устройство также замеряет стресс. И вот он у меня не отличный. Особенно в начале дня. И это интересно
День у меня обычно такой, что я еду на велосипеде в офис, и там записываю на стикер 2-3 задачи на день. А потом делаю их. За день еще случится разное, но вот их надо сделать
🟠 А если одна из задач сложная, то начинаю ее планировать. И судя по метрикам, это самая стрессовая часть дня
🔵 Для сравнения. С 11 до 12 встреча/звонок. Где я что-то говорю и слушаю. Уровень стресса ниже 25. А я думал что тут будет высокий стресс, встреча на английском. Кажется мне легко на встречах на другом языке, а я думал, что наоборот
🟠 В 12, на обеде, коллеги обсуждали важные новости. Я там почти ничего не говорю, просто ем. Видимо, внимательно слушал, в шумном зале, и это некоторое напряжение
🟠 А потом я продолжил планирование. Это задача по разделению и сжатию трафика, ее надо спланировать хорошо заранее. И это снова было непросто — почти как утром
🔵 Где-то с 16:00 до 21:00 чинил и разбирал инциденты на проде, довольно такие сложные. Про вложения, workflow, новый проект, с обращениями пользователей. И я предполагал, что это стрессово для меня. А оказывается, это очень даже спокойная работа. Но с редкими всплесками, там надо было описать пользователю статус и обсудить с разработчиком
💡 Примерно такой же паттерн наблюдается по другим дням в том числе. Чтобы как-то понять что могу сделать с этими графиками стал пробовать разное.
🟠 Например, попробовал планировать на балконе/терассе. В офисе есть балкон и там есть хорошие Wi-Fi и уличный стол — метрики пошли вверх, стресс стал выше. Может потому что там непривычно или холоднее или ветер или солнце
🔵 Попробовал парное программирование. У меня есть интерн. И мы просто сели рядом. Я делал что делаю, но рассказывал при этом, метрики получились более синими, с всплесками
Продолжаю мониторинг. Пока выводы делать рано. Но, кажется, что профилирование, разбор инцидентов и общение с людьми могут продлить жизнь
Я испытываю стресс во время планирования
История такая, что сплю нерегулярно, и стал измерять свой сон часами (устройством). Чтобы улучшить сон. Замеры показывают, что сон короткий, но отличный
Но устройство также замеряет стресс. И вот он у меня не отличный. Особенно в начале дня. И это интересно
День у меня обычно такой, что я еду на велосипеде в офис, и там записываю на стикер 2-3 задачи на день. А потом делаю их. За день еще случится разное, но вот их надо сделать
🟠 А если одна из задач сложная, то начинаю ее планировать. И судя по метрикам, это самая стрессовая часть дня
🔵 Для сравнения. С 11 до 12 встреча/звонок. Где я что-то говорю и слушаю. Уровень стресса ниже 25. А я думал что тут будет высокий стресс, встреча на английском. Кажется мне легко на встречах на другом языке, а я думал, что наоборот
🟠 В 12, на обеде, коллеги обсуждали важные новости. Я там почти ничего не говорю, просто ем. Видимо, внимательно слушал, в шумном зале, и это некоторое напряжение
🟠 А потом я продолжил планирование. Это задача по разделению и сжатию трафика, ее надо спланировать хорошо заранее. И это снова было непросто — почти как утром
🔵 Где-то с 16:00 до 21:00 чинил и разбирал инциденты на проде, довольно такие сложные. Про вложения, workflow, новый проект, с обращениями пользователей. И я предполагал, что это стрессово для меня. А оказывается, это очень даже спокойная работа. Но с редкими всплесками, там надо было описать пользователю статус и обсудить с разработчиком
🟠 Например, попробовал планировать на балконе/терассе. В офисе есть балкон и там есть хорошие Wi-Fi и уличный стол — метрики пошли вверх, стресс стал выше. Может потому что там непривычно или холоднее или ветер или солнце
🔵 Попробовал парное программирование. У меня есть интерн. И мы просто сели рядом. Я делал что делаю, но рассказывал при этом, метрики получились более синими, с всплесками
Продолжаю мониторинг. Пока выводы делать рано. Но, кажется, что профилирование, разбор инцидентов и общение с людьми могут продлить жизнь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Привет performance lovers!
Любите ли вы GDPR, "Data Protection Impact Assessment" (DPIA) и согласования с командой безопасности?
Середина года, время проходить и сдавать тесты по безопасности. И вот, в который раз, начал проходить и сдавать. Но только изучил вопрос чуть глубже, чем требовалось для прохождения теста. А все потому, что я подготовил CSV-файл с именами и фамилиями тестовых пользователей для целей тестирования производительности
Сначала я думал использовать Gatling Pikantiny / Faker — но там очень мало данных, а мне надо 10 000 пользователей
Потом думал взять Users.xml из дампа StackOverflow, но там такая лицензия, что мне надо будет опубликовать производный продукт (CSV-файл) и указать его лицензию
Потом думал взять "Liste de prénoms et patronymes" (INSEE, France), доступный через data.europa.eu под лицензией Etalab Open Licence 2.0, это разрешительная лицензия
А потом я прошел обучение и прочитал внутренние документы хорошо.
🌸 Даже если я возьму данные, которые доступны, но буду их хранить где-то в закрытом хранилище компании, и есть шанс что какая-то комбинация этих данных может совпадать с данными реального человека, то надо будет предпринять все действия по защите этих данных, и так далее — GDPR, "Data Protection Impact Assessment" (DPIA)
✅ Согласно курсам — надо прочитать документы и все отправить на согласование коллегам
❓ А что можно сделать заранее
1️⃣ Выбрать небольшой набор данных — 10 000 считается небольшим набором по меркам общего положения по хранению данных (это не 1 миллион), но это может быть большим списком по меркам компании. А какой у нас в компании лимит можно узнать у коллег
2️⃣ Можно и нужно применить Data Minimization practices — выбрать мало данных, извлечь только необходимые для работы данные (только Имя а Фамилию), перемешать данные (отдельно взять имена, отдельно фамилии и смешать их случайно)
3️⃣ Применить к данным мутации:
— пропустить некоторые гласные буквы
— продублировать некоторые согласные буквы
— добавить опечатки
— применить статистические замены
4️⃣ Ограничить доступ (только для использования скриптами тестов) и не хранить файл вечно (удалить после использования), но можно оставить код генерации для более долгого хранения и инструкции к нему
Интересная часть тут третья про мутации
1️⃣ Во первых можно взять изначально более синтические данные через библиотеку
https://github.com/joke2k/faker
2️⃣ Во вторых применить разные варианты опечаток, пропусков символов и обрезок:
https://github.com/makcedward/nlpaug/blob/master/example/textual_augmenter.ipynb
И когда все это применяется, то уже нет большого риска, что когда-то человек по имени Vaskramd (вместо Viacheslav) Dmitnob (вместо Smirnov) что-то как-то себя обнаружит в тестовых данных на тестовом стенде или кто-то его обнаружит и расстроится по этому поводу
Проходите тесты по безопасности, это интересно
Любите ли вы GDPR, "Data Protection Impact Assessment" (DPIA) и согласования с командой безопасности?
Середина года, время проходить и сдавать тесты по безопасности. И вот, в который раз, начал проходить и сдавать. Но только изучил вопрос чуть глубже, чем требовалось для прохождения теста. А все потому, что я подготовил CSV-файл с именами и фамилиями тестовых пользователей для целей тестирования производительности
Сначала я думал использовать Gatling Pikantiny / Faker — но там очень мало данных, а мне надо 10 000 пользователей
Потом думал взять Users.xml из дампа StackOverflow, но там такая лицензия, что мне надо будет опубликовать производный продукт (CSV-файл) и указать его лицензию
Потом думал взять "Liste de prénoms et patronymes" (INSEE, France), доступный через data.europa.eu под лицензией Etalab Open Licence 2.0, это разрешительная лицензия
А потом я прошел обучение и прочитал внутренние документы хорошо.
1️⃣ Выбрать небольшой набор данных — 10 000 считается небольшим набором по меркам общего положения по хранению данных (это не 1 миллион), но это может быть большим списком по меркам компании. А какой у нас в компании лимит можно узнать у коллег
2️⃣ Можно и нужно применить Data Minimization practices — выбрать мало данных, извлечь только необходимые для работы данные (только Имя а Фамилию), перемешать данные (отдельно взять имена, отдельно фамилии и смешать их случайно)
— пропустить некоторые гласные буквы
— продублировать некоторые согласные буквы
— добавить опечатки
— применить статистические замены
4️⃣ Ограничить доступ (только для использования скриптами тестов) и не хранить файл вечно (удалить после использования), но можно оставить код генерации для более долгого хранения и инструкции к нему
Интересная часть тут третья про мутации
https://github.com/joke2k/faker
https://github.com/makcedward/nlpaug/blob/master/example/textual_augmenter.ipynb
И когда все это применяется, то уже нет большого риска, что когда-то человек по имени Vaskramd (вместо Viacheslav) Dmitnob (вместо Smirnov) что-то как-то себя обнаружит в тестовых данных на тестовом стенде или кто-то его обнаружит и расстроится по этому поводу
Проходите тесты по безопасности, это интересно
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3