Макросы SugarCube 2 Для Диалогов

В своей игре «Заповедник» — текстовых sci‑fi приключениях Маши Ежевикиной в духе Булычёва — я активно использую диалоги. Маша и Ромка постоянно болтают — по делу и просто так. Для книги правила оформления диалогов понятны: каждая реплика — с новой строки, с чёрточки. Я попробовал делать так же в игре — и это быстро превратилось в… книгу. А мне нужна игра! Эксперименты с диалогами Путём нескольких экспериментов я пришёл к такому варианту: диалоги выводятся блоками с небольшими иконками. Выглядит это вот так: ...

20 мая 2026 г.

Новый формат блога

Этому блогу уже почти 11 лет. Я начал его в 2015 году, чтобы ускорить карьеру. Получилось более или менее — не совсем так, как я рассчитывал, но всё же помогло: я упорядочил знания и успешно строю карьеру. Теперь же такой блог мне не нужен. Вот почему: Я выдохся писать про ИТ. Мне по‑прежнему нравится изучать новое и разбираться в технологиях. Но писать подробные статьи уже не хочется: это долго и нудно, а на Хабре всё равно сделают лучше. А короткие заметки казались мне недостойными блога — хотя я их всё равно иногда писал. У меня поменялись приоритеты. Работа, семья и хобби отнимают почти всё время. Писать для меня — хобби, но профессионально заниматься ИТ‑тематикой я не готов: как уже говорил, это слишком долго и утомительно. Рекрутёрам блог не нужен. Они на него не смотрят, и он не делает прохождение собеседования легче. От большинства статей польза только для меня: мысль выкристаллизовалась, знание закрепилось. Для этого достаточно короткой заметки, а не многостраничного разбора всех случаев — что, повторюсь, долго и нудно. Я долго думал (и советовался с ИИ… чаще, чем хотелось) и решил: с этого момента мой ИТ‑блог становится «Лабораторией». Здесь будут заметки о том, что меня волнует прямо сейчас. Не обещаю регулярности — буду писать, когда есть что сказать. Ещё я соберу здесь всё, что писал для других своих блогов (в основном о хобби). ...

12 мая 2026 г.

Вторичные индексы в YDB

Вторичные индексы в YDB живут в скрытых таблицах. Они так же чувствительны к возможности деления на партиции по ключам, как и обычные строковые таблицы. Способность делиться на партиции вторичные индесы наследуют от первичного ключа исходной таблицы. Согласно документации во вторичном индексе хранится: индексные колонки колонки первичного ключа таблицы копии дополнительных колонок для покрывающих индексов NB! первичный ключ таблицы вторичного ключа - это индексные колонки + колонки первичного ключа исходной таблицы. ...

23 марта 2026 г.

Обман на Собеседовании

На собеседовании хочется ответить на все вопросы, даже на те, на которые не знаешь ответа. Особенно если пришёл на собеседование в крутую компанию. Мотивация зашкаливает, и здесь можно допустить самую большую ошибку: попытаться схитрить и подсмотреть ответ. Во время онлайн‑интервью это ведь так просто сделать… Но есть более выгодная и безопасная стратегия: ответить «я не знаю» и записать вопрос для дальнейших поисков ответа. Есть три варианта действий при вопросе, ответа на который не знаешь. Вот они — в порядке пользы для кандидата: ...

19 июня 2025 г.

CLOG в базе знаний программиста

CLOG — удобный формат ведения лога проекта — для задачи, на которую требуется больше одного дня, — в базе знаний. Изначально идея предложена Бобом Дото для работы над статьями. С минимальными изменениями CLOG подходит для рабочих проектов программиста. Пока эта методика находится у меня на тестировании. Должно работать. Но может и взорваться… Суть CLOG (creative log) — создать запись в системе знаний, которая относится к конкретному проекту. В этой записи делается минимум два блока: ...

26 марта 2025 г.

За что платят программисту?

Программисту платят за код. Писать код — основной навык, который нужно показать в работе и на собеседовании. Знания технологий добавят очков, как и софт‑скилы. Но если программист не будет писать код, его уволят. Этот навык требует больше всего времени на освоение. Он же — лучший карьерный капитал программиста. Написание кода — сложный навык. Улучшить его — значит целенаправленно заниматься развитием этого навыка: писать много кода, который будет тестироваться, использоваться, модифицироваться. ...

10 марта 2025 г.

Посмотреть процессы прибитые OOM

PID убитого по out‑of‑memory‑процессу можно найти с помощью одной команды. Если есть логи с PID процесса, то найти пострадавшего можно, запустив ещё одну команду grep. OOM‑киллер безжалостен. Кажется, что он выбирает процесс случайным образом — тот, который нужно «пристрелить» на машине. На самом деле под капотом он работает совсем по‑другому, и случайности в его действиях нет. Взглянув на таблицу процессов и пару файлов, можно предсказать, какой процесс будет убит, если сейчас случится OOM. ...

8 сентября 2024 г.

Практический пример использования Protocol

Представьте себе ситуацию: у вас есть микросервисы, в каждом — своя конфигурация со своим набором параметров; есть библиотечный код, который получает и использует объекты конфигураций. Представили? А теперь в этот код надо завести подсказки типов. И тут представили? Давайте проведём мысленный эксперимент и попробуем это сделать. Вариантов в целом несколько. Варианты решения: Базовый класс конфигурации с ещё одним ветвлением:* затаскивать все возможные параметры; затаскивать только общие для микросервисов параметры. Использовать протоколы для нотации типов. Затаскивать все возможные варианты параметров в один базовый класс — гарантированный путь к «помойке». Затаскивать только общие параметры для микросервисов — получать кучу красного цвета от Pyright в общем коде. ...

26 февраля 2024 г.

У Kаждого Cвой SCRUM

У каждого свой Scrum. Он описан в книгах как стройный, понятный и простой процесс. Участники семинаров и тренингов утверждают, что применять его легко. Однако в реальной жизни Scrum каждого человека не похож ни на пример из книг или тренингов, ни на процессы коллег… за редкими исключениями. Почему? Не знаю. Куда интереснее выяснить, что с этим делать и нужно ли это. TL;DR Scrum эффективен, когда желания бизнеса и разработки совпадают и они готовы играть по этим правилам. Scrum определяет чёткие зоны ответственности и правила для скрам‑команды. Если попытаться изменить их, это может привести к проблемам. Если вы устанавливаете сроки для разработчиков, определяете исполнителей задач и не ведёте бэклог, то у вас нет Scrum, даже при наличии спринтов и ежедневных митингов. В вашей команде есть скрам‑мастер, даже если он не выделен формально. Один из членов команды выполняет эту функцию. Это занимает у него время и, возможно, вызывает лишний стресс. Наём скрам‑мастера показывает разработке, что компания готова играть по правилам и ожидает долгосрочного применения Scrum. При работе с большой командой следует разделить её на несколько подгрупп и использовать LeSS или «Scrum of Scrums». Я не знаю, какой Scrum можно считать идеальным. Я не являюсь сертифицированным скрам‑мастером. Я всего лишь разработчик. Эта статья — моя попытка понять, каким должен быть Scrum, зачем вам нужен скрам‑мастер и в каких случаях Scrum не работает. Повторяю: это мнение разработчика, участника скрам‑команды, а не консультанта. ...

28 ноября 2023 г.

Использование typing.Generic в Python

Я работаю над проектом с довольно большой кодовой базой. Проект с историей. Некоторые части наша команда написала задолго до аннотаций типов. Мы до сих пор добавляем их в наш легаси‑код и улучшаем существующие подсказки. Стоит ли эта игра свеч? Определённо — да. Наши пользователи — разработчики. Они открывают наш код в PyCharm ежедневно и надеются, что он поможет им решить их задачи максимально быстро и просто. Могу уверенно сказать, что существует корреляция между точностью автодополнения кода и тем, как быстро работают разработчики. Наша цель — не только добавить более точный статический анализ или автодополнение, но и не сломать их боевой код. ...

18 февраля 2022 г.