shikhalev.*

Рубрикатор

Последние записи

​Технологии​Программирование​Ruby

2026.10.25 • Иван Шихалев

Гемы is-module-reset и is-deep

Вообще-то я сначала собирался написать только про is-module-reset, но понял, что без упоминания ключевой зависимости — is-deep — а главное, ограничений, с нею связанных, обойтись никак нельзя.

И ключевое ограничение — это категорическая несовместимость с activesupport, поскольку is-deep monkey-патчит те же методы (с теми же целями но полностью другим способом)… Возможно, я когда-нибудь придумаю другие имена, но пока не знаю, чем корректно и идиоматично заменить deep_merge.

Начнем с того, что попроще.

is-module-reset

Собственно, задача, которая передо мной встала: это тестирование плагинов для Jekyll, в част­нос­ти — jekyll-is-hookdown, о ко­то­ром я писал ранее. Проблема возникает, в первую очередь, с тестированием хуков, поскольку Jekyll не предоставляет возможности их дерегистрации, и пересоздание объекта сайта тут не помогает, поскольку хуки хранятся в переменных модуля Jekyll.

Соответственно, новый гем тем и занимается, что сохраняет и восстанавливает внутреннее состояние модулей (и классов). Интерфейс простой:

dump(*mods)

Копирует данные модулей, возвращая Hash, который затем можно использовать для восстановления.

undump(hash)

Восстанавливает ранее сохраненные данные. Очевидным образом dump и undump используются в паре.

isolate(*mods) { ... }

Сохраняет данные указанных модулей, выполняет блок кода, восстанавливает сохраненные данные обратно.

Сохраняются только переменные объекта указанных классов и модулей и переменные класса, причем последние — только принадлежащие непосредственно указанному классу или модулю, а не унаследованные им. Что это такое и в чем разница, можно посмотреть в моей давней статье. Константы не сохраняются, чтобы не вызывать лишних предупреждений. Если у вас где-то меняется содержимое констант-контейнеров, это нужно учитывать и обрабатывать как-то иначе.

Тут я хочу подчеркнуть, что гем предназначен для использования только в тестах и не обеспечивает полноценной изоляции контекста. Это не средство для создания «песочницы» или чего-то подобного в рабочих задачах.

Данные копируются через deep_dup, со всеми его ограничениями. И тут самое время перейти к следующему гему…


Читать далее »

​Jekyll​is-deep​is-module-reset​тестирование

​Тексты​Стихи​Избранное​Suno

2026.10.16 • Иван Шихалев

Те, кто в лесу

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

Добру молодцу не найти путь до лаковых чёрных палат, Добру молодцу не пройти, где немёртвые слуги не спят. Где сидит эта тварь, вместо воздуха волглый дым, Вместо неба бетонный свод — там нет места живым.

Те, кто ходит в лесу, слышат ворона зов, Значит снова открылась тропа через старый ручей, Те, кто ходит в лесу, чуют чёрную кровь, По остывшему следу читают измененье порядка вещей.


Читать далее »

​О себе​Технологии​Web​Тексты​Suno

2026.10.13 • Иван Шихалев

Чо там у Suno?

Скриншот моей страницы на Suno

В продолжение наведения порядка со ссылками… Раз уж начал, зашел на, собственно, Suno, а там обновления и прочая веселуха. Причем я как раз успел застать состояние перед переходом на модель v6 и попробовать модели v4.5 (ее бесплатный вариант) и немного v5.5 (в про­мо-режиме).

Для более-менее основательных выводов я повозился с этими моделями недостаточно, могу лишь субъективно сказать, что v5.5 мне скорее понравилась, а бесплатная ветка v4.5 — не понравилась совсем. Про дей­с­т­ву­ю­щую v6 (в части бесплатной v6-mini) ниже скажу подробнее.

Ссылки

В апдейт к предыдущему посту: сейчас списки под текстами — в об­рат­ном хронологическом порядке вместо прямого, при этом сначала идут треки на русском, потом переводы. По клику на иконке наушников «🎧» можно перейти на страницу данного трека на Suno, а по клику на иконку листа бумаги «📄» (если она есть) — на страницу текста на этом сайте. Тексты переводов я пока на сайт не заносил…

Все тексты, к которым есть suno-озвучка можно найти через категорию Suno.


Читать далее »

​Suno​ИИ​музыка

​Жизнь​Природа​Web

2026.10.01 • Иван Шихалев

Tg: сентябрь 2026

Сбои и многочасовые задержки продолжаются. Но в целом каналы функционируют.

Биоразнообразие Свердловской области в TG

Обалденное макро в этом сентябре прилетело.


Читать далее »

​Telegram​iNaturalist​бабочки​животные​макро​медузы​насекомые​птицы​растения​стрекающие​цветы

​Жизнь​Дыбр​Web​О себе

2026.09.13 • Иван Шихалев

Полностью выложен мерч с зябликом

Фляжка из коллекции «Зяблик (Fringilla coelebs)»

Ровне через два месяца после первой части выкладываю, что там на Всех­Майках. Во­об­ще-то, модерацию «Зяблик» прошел еще в первых числах сентября, но тут уже у меня руки не доходили…

Напомню, что эта се­рия — стилизация под старинный спра­воч­ник-оп­ре­де­ли­тель с ба­зо­вой информацией о виде. Приведенные сведения и рисунки в целом соответствуют действительности, но могут быть какие-то неточности и ошиб­ки — все-таки я не про­фес­си­о­наль­ный орнитолог, да и задача стояла скорее декоративная.

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


Читать далее »

​Fringilla coelebs​PrintDirect​«определитель»​ВсеМайки​животные​мерч​принтшопы​птицы

​Жизнь​Природа​Web

2026.09.04 • Иван Шихалев

Tg: август 2026

В этом августе начались пропуски всего подряд, а еще GitHib Actions то вообще сбоят, то запускают задачи с мно­го­ча­со­вы­ми опозданиями…

Биоразнообразие Свердловской области в TG

По Свердловской области прям сложно выбрать — сразу несколько наблюдений красивых и/или редких… Остановился на птен­це коростеля.


Читать далее »

​Telegram​iNaturalist​бабочки​животные​насекомые​птицы​растения​цветы

​Жизнь​Дыбр​Web​О себе

2026.08.30 • Иван Шихалев

Мерч: гриб, жук и цветок

Добавил на сайт еще три коллекции:


Читать далее »

​PrintDirect​ВсеМайки​мерч​принтшопы

​Тексты​Стихи​Избранное​Suno

2026.08.26 • Иван Шихалев

Там, когда...

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

Не выбирай тропы́, жди, пусть она сама Бросит тебе под ноги край распрямлённой пружины. Не перешагивай камни — это ступени на Старом пути под гору через ветра́ вершины.

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

Не покидай тропы, долго на месте не стой, Выйти в подлунный мир нужно успеть до ночи. В сумерках пробираясь, ты не заметишь то, Что видеть тебе не положено, рано, да и не хочешь.

Там где луна освещает, нехотя, неровную дорогу домой, Когда придорожный куст выглядит тенью семи животных, Выдохни и расслабься — теперь ты снова такой, Каким был всегда. И будешь… до поворота.

​Технологии​Программирование​Ruby​Web

2026.08.22 • Иван Шихалев

Плагины jekyll‑is‑hookdown и jekyll‑is‑images v0.8.2

jekyll-is-images

Сначала коротко про jekyll-is-images. По срав­не­нию с со­сто­я­ни­ем на прош­лый пост в ос­нов­ном произошло много мелких правок мелких багов, из от­но­си­тель­но су­щес­т­вен­но­го — довел до ума работу галерей в ре­жи­ме слайд-шоу (впрочем, и там есть куда расти). А третью цифру я поднял при сме­не зависимости с is-kramdown-hooked на jekyll-is-hookdown, о ко­то­ром и поговорим далее. Это повлияло на то, что следует указывать в _config.yml — вместо input: ISKram в под­раз­де­ле kramdown следует указывать markdown: Hookdown в кор­не конфига. А под­раз­дел kramdown остается полностью рабочим, и там можно указывать любой input, на­при­мер — GFM1 (что я и собираюсь сделать на сай­те в бли­жай­шее время).

jekyll-is-hookdown

Сгенерированная картинка чисто для красоты

Итак, что же это такое? Это специальный гем, который «хакает» процесс обработки markdown в Je­kyll, добавляя хук на тот момент, когда страница уже распарсена во внут­рен­нее AST-представление и еще не пре­об­ра­зо­ва­на во что-то другое. Зачем это надо? Чтобы не де­лать лишней работы по пар­син­гу исходного markdown или фи­наль­но­го HTML.

  1. GitHub Flavored Markdown. Конкретно мне это нужно для того, чтобы использовать ``` (тройной бэктик) для блоков кода вместо окружения {% highlight %}. ↩


Читать далее »

​CSS​HTML​Jekyll

​Жизнь​Дыбр​Web​О себе

2026.08.15 • Иван Шихалев

Мерч: Большой крохаль

Фото самца большого крохаля (Mergus merganser). 18 мая 2026 года, Дружино-Бардымский пруд.
Фото самца большого крохаля (Mergus merganser). 18 мая 2026 года, Дружино-Бардымский пруд.

​PrintDirect​ВсеМайки​мерч​принтшопы

​Жизнь​Дыбр​Web​О себе

2026.08.09 • Иван Шихалев

Мерч: Паук и еще один пейзаж

​FUN​PrintDirect​ВсеМайки​мерч​принтшопы

​О себе​Технологии​Web​Тексты​Suno

2026.08.07 • Иван Шихалев

Ссылки на Suno

Фрагмент скриншота моей страницы на Suno

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

Пока можно посмотреть список омузыкаленных текстов по тегу «suno».1

Пока просто списки в хронологическом порядке, без отделения того, что мне самому понравилось от особо упоротых экспериментов…

  1. См. изменения в последующем посте. ↩

​Suno​ИИ​музыка