<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог Михаила Озорнина: заметки с тегом рабочее</title>
<link>https://mikeozornin.ru/blog/tags/rabochee/</link>
<description>Главная · Блог · Работы ·</description>
<author>Михаил Озорнин</author>
<language>ru</language>
<generator>E2 (v3798; Aegea)</generator>

<itunes:owner>
<itunes:name>Михаил Озорнин</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Главная · Блог · Работы ·</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Сайд-бай-сайб 0.2.0</title>
<guid isPermaLink="false">208</guid>
<link>https://mikeozornin.ru/blog/all/side-by-side-0-2-0/</link>
<pubDate>Sun, 30 Nov 2025 19:50:02 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/side-by-side-0-2-0/</comments>
<description>
&lt;p&gt;В &lt;a href="https://mikeozornin.ru/blog/all/hello-side-by-side/"&gt;сайд-бай-сайде&lt;/a&gt; вышла следующая версия&lt;/p&gt;
&lt;p&gt;Изменения:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Человекочитаемые URL для голосований&lt;br /&gt;
Было: /v/06b95c10-7688-4106-8e75-762035290c67/&lt;br /&gt;
Стало: /v/HairyParrotsPursueRudely/&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Улучшение интеграции с Mattermost:&lt;br /&gt;
Сайд-бай-сайд сгенерирует превьюшки к уведомлениям в чате.&lt;br /&gt;
По окончании голосованию в чате будет итог голосования.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Было:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-0.2.0-1@2x.png" width="390" height="112" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-0.2.0-2@2x.png" width="688" height="472" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Мелочи:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Кликабельные ссылки в описаниях. Ссылки в комментарии станут кликабельными.&lt;/li&gt;
&lt;li&gt;На странице голосования теперь тоже показывается количество проголосовавших.&lt;/li&gt;
&lt;li&gt;На странице голосований можно прокручивать картинки перетаскиванием мыши&lt;/li&gt;
&lt;li&gt;Белый список доменов эл. почты. Можно указать домены, вход с которых будет разрешен.&lt;/li&gt;
&lt;li&gt;Драг-н-дропать файлы можно на всю страницу, даже на главную.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="loud"&gt;&lt;a href="https://github.com/mikeozornin/side-by-side"&gt;https://github.com/mikeozornin/side-by-side&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Анонс: Сайд-бай-сайд</title>
<guid isPermaLink="false">204</guid>
<link>https://mikeozornin.ru/blog/all/hello-side-by-side/</link>
<pubDate>Wed, 10 Sep 2025 22:06:37 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/hello-side-by-side/</comments>
<description>
&lt;p class="lead"&gt;Анонс еще одного продукта, на этот раз для работы&lt;/p&gt;
&lt;p&gt;Это приложение для голосовалок по картинкам (или видосам). Бывает, что нужно показать несколько вариантов и провести, так сказать, юикс ресерч. Знаю, как это решаю сам: почта, телеграм, эмодзи под сообщениями в чате. Собирать гуглдок не будешь, а без него агрегировать результаты — пытка. Я сделал сервис.&lt;/p&gt;
&lt;p&gt;Что можно:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Закинуть несколько картинок или видео в голосовалку.&lt;/li&gt;
&lt;li&gt;Дать людям проголосовать и через некоторое время посмотреть результаты.&lt;/li&gt;
&lt;li&gt;Есть &lt;a href="https://www.figma.com/community/plugin/1545946464465075859/side-by-side-voting"&gt;плагин для фигмы&lt;/a&gt;, чтобы загружать картинки прямиком из фигмы.&lt;/li&gt;
&lt;li&gt;Если хотите, можно не публиковать голосовалку ленту, доступ будет только по прямой ссылке.&lt;/li&gt;
&lt;li&gt;Можно включить уведомления в чат (пока поддерживается только маттермост, может сделаю телеграм) или пуши в браузере.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Как выглядит:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-1@2x.png" width="1310" height="1007" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Главная&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-2@2x.png" width="1310" height="1007" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Голосовалка&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-4@2x.png" width="1310" height="1007" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Создание&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-5@2x.png" width="1357" height="1111" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Результаты&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-6@2x.png" width="1310" height="1007" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Профиль и подключение плагина&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/side-by-side-7@2x.png" width="1113" height="695" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Плагин для Фигмы&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;В плане входа есть два варианта:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Все пользователи — с анонимным доступом, защиты голосовалки почти никакой нет и можно её просто инкогнито-режимом. Удалить голосование тоже не получится, сервис не знает, кто вы.&lt;/li&gt;
&lt;li&gt;Есть вариант с логином по магической ссылке, тогда для голосования тоже нужно будет войти. Вмест с ним появится удаление, досрочное завершение и даже браузерные пуши.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Понятно, что есть дарк-мод, автоматическое определение ретиновости картинок, вставка в область прямо из буфера и какая-никакая работа на телефоне.&lt;/p&gt;
&lt;p&gt;Я рассчитываю, что вы поднимите сервис где-то у себя. Во-первых, многие не будут готовы своим НДА-макеты куда-то выложить. Во-вторых, я не хочу разбираться с недопустимыми картинками у себя в хостинге. Поэтому опенсорс, там в целом не очень сложно, написали конфиг и запустили ансибл.&lt;/p&gt;
&lt;p class="loud"&gt;&lt;a href="https://github.com/mikeozornin/side-by-side"&gt;github.com/mikeozornin/side-by-side&lt;/a&gt;&lt;/p&gt;
&lt;p class="loud"&gt;&lt;a href="https://www.figma.com/community/plugin/1545946464465075859/side-by-side-voting"&gt;figma.com/community/plugin/1545946464465075859/side-by-side-voting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Будут мысли, пишите: &lt;a href="mailto:mike.ozornin@gmail.com"&gt;mike.ozornin@gmail.com&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Как писать багрепорты</title>
<guid isPermaLink="false">166</guid>
<link>https://mikeozornin.ru/blog/all/good-bug-report/</link>
<pubDate>Wed, 25 Aug 2021 00:15:36 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/good-bug-report/</comments>
<description>
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;Взгляд с другой стороны: &lt;a href="http://mikeozornin.ru/blog/all/not-reproducing"&gt;У меня не воспроизводится&lt;/a&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p class="lead"&gt;Я работаю в разработке ПО и с болью смотрю, как люди обычно сообщают о проблемах с сервисами и программами. Бывает «Я нажал на кнопку и там черный экран», а бывает даже — «Ваша программа не работает». Гайд о том, как нужно сообщать о проблемах.&lt;/p&gt;
&lt;p&gt;Посмотрите на эту картинку, представьте себя на месте синего.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/good-bug-report@2x.png" width="600" height="315" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Закипели немного, да?&lt;/p&gt;
&lt;h2&gt;Почему этим вообще стоит заниматься&lt;/h2&gt;
&lt;p&gt;Есть же простой вариант: написать как смогу, а если что-то будет непонятно, то пусть уточнят, — отвечу на все вопросы. Зачем вообще заморчиваться?&lt;/p&gt;
&lt;p&gt;Если картинка выше не сделала ответ понятней, попробую накинуть еще аргументов.&lt;/p&gt;
&lt;p&gt;Ну, уточнять — это лишний хоп взаимодействия. Не знаю как вас, а меня раздражает уточнять какие-то очевидные подробности, даже если речь идет про мой продукт. Уточнять у человека «Ваша программа не работает, все сломалось, ничего не помогает» я не захочу и попытаюсь слить проблему кому-нибудь.&lt;/p&gt;
&lt;p&gt;Ещё бывает так, что разбирать багрепорт начали через неделю после репорта (кто-то был в отпуске или просто высокая загрузка). Начали у меня уточнять, а я сам не могу разобраться, что же я имел ввиду. Им воспроизвести не удается, а я не могу понять своё же описание. ¯\_(ツ)_/¯  В эти моменты очень стыдно.&lt;/p&gt;
&lt;p&gt;Ну и немаловажная деталь — нормально, внимательно сформулированный багрепорт показывает ваше уважение к получателю — вы сделали домашку, отнеслись ответственно. Заниматься именно вашей проблемой приятнее. Плюсик в карму.&lt;/p&gt;
&lt;h2&gt;Хороший багрепорт&lt;/h2&gt;
&lt;p&gt;Хороший с моей точки зрения багрепорт состоит из следующих блоков.&lt;/p&gt;
&lt;h3&gt;1. Понятное краткое описание проблемы&lt;/h3&gt;
&lt;p&gt;Описание проблемы нужно, чтобы баг потом можно было найти. В идеале из заголовка должен быть понятен домен (часть программы, экран), область ошибки и важность. Писать все подробности в заголовок лучше не стоит, все равно не влезет.&lt;/p&gt;
&lt;p&gt;Хорошие примеры:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ошибка 404 при переходе на английскую версию статьи&lt;/li&gt;
&lt;li&gt;Неправильный отступ в кнопке с иконкой button primary transparent&lt;/li&gt;
&lt;li&gt;Приложение крешится при попытке отправить прогрессивный jpeg&lt;/li&gt;
&lt;li&gt;Невозможно задать себе имя «Ян», т. к. оно слишком короткое&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Плохие примеры (мало подробностей):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ошибка 404&lt;/li&gt;
&lt;li&gt;Неправильный отступ в кнопке&lt;/li&gt;
&lt;li&gt;Приложение крешится&lt;/li&gt;
&lt;li&gt;Не получается изменить имя&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Плохие примеры (слишком много подробностей для заголовка):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Неправильный отступ в кнопке с иконкой button primary transparent. В жизни 6 пк 12пк 6 пк 8 пк, а надо 6 пк 8пк 6пк 6пк&lt;/li&gt;
&lt;li&gt;Приложение под macOS версии 10.5.5 build 56718 крешится при попытке отправить прогрессивный jpeg в общий чат. При отправке пнг такого нет&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. Как воспроизвести&lt;/h3&gt;
&lt;p&gt;Самый важный блок. Я стараюсь его писать именно в виде шагов, чтобы не комкать описание и ничего не пропустить. Пишу по шаблону: шаги — ожидаемый результат — полученный результат&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Шаги&lt;/b&gt;&lt;br /&gt;
Конкретные шаги, которые нужно повторить для воспроизведения бага. Прямо как есть: зайти на страницу, нажать на кнопку, заполнить поле.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1) Открыть страницу профиля&lt;br /&gt;
2) Нажать на кнопку «Редактировать профиль»&lt;br /&gt;
3) Вписать в поле «Имя» значение «Ян»&lt;br /&gt;
4) Нажать на кнопку «Сохранить»&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;Ожидаемый результат&lt;/b&gt;&lt;br /&gt;
После шагов пишу ожидаемый результат, что я жду, после выполнения этих действий.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ожидается: профиль сохранится&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;Полученный результат&lt;/b&gt;&lt;br /&gt;
А здесь описываю результат, который получил на самом деле.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Полученный результат: профиль не сохранился, около поля «Имя» текст ошибки «Имя должно быть не менее 3 символов».&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;3. Скриншоты или скринкасты&lt;/h3&gt;
&lt;p&gt;Шаги воспроизведения и полученный результат лучше снадбить скриншотами, а если ошибку сложно заскриншотить, то записать скринкаст. При записи скринкаста делайте заметные паузы (пару секунд) перед переходом между шагами и после результата, — так смотрящему будет проще скринкаст посмотреть.&lt;/p&gt;
&lt;h3&gt;4. Окружение&lt;/h3&gt;
&lt;p&gt;В окружении описываю релевантные версии программ, браузеров, пакетов, операционной системы. Иногда пишу разрешение экрана и версию ноутбука.&lt;/p&gt;
&lt;h2&gt;Как внедрить&lt;/h2&gt;
&lt;p&gt;Первое время может быть непросто. Хочется срезать углы и описать покороче, ведь «и так понятно».&lt;/p&gt;
&lt;p&gt;Могу рассказать, что заметил у себя. Когда срезаю углы, потом обычно жалею: потом все равно приходится подробно описывать. И до сих пор бывают случаи, когда сам не могу разобраться, что же такое понаписал.&lt;/p&gt;
&lt;p&gt;Мне помогает иметь шаблон багрепорта в заметках и трекерах. Скопировал, заполнил, молодец.&lt;/p&gt;
&lt;div class="post-summary"&gt;&lt;div class="post-summary__header"&gt;&lt;p&gt;Шаблон багрепорта&lt;/p&gt;
&lt;/div&gt;&lt;div class="post-summary__text"&gt;&lt;ol start="1"&gt;
&lt;li&gt;Краткое описание проблемы&lt;/li&gt;
&lt;li&gt;Пошаговое (важно!) воспроизведение проблемы&lt;/li&gt;
&lt;li&gt;Ожидаемый после этих шагов результат&lt;/li&gt;
&lt;li&gt;Полученный после этих шагов результат&lt;/li&gt;
&lt;li&gt;Скриншоты, скринкасты, версия браузера&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Сделайте удобно читателю&lt;/h2&gt;
&lt;p&gt;Вообще этот прием — один из примеров более общего приёма «сделайте удобно читателю».&lt;/p&gt;
</description>
</item>


</channel>
</rss>