shikhalev.*

Рубрикатор

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

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

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

Каталог «мерча»

Скриншот нового раздела

Хотел начать этот пост со слов «не прошло и двух недель», ан нет, прошло… Как быстро время летит… На самом деле бо́льшую часть внемени заняло не написание кода, а заполнение данных. Надо бы это дело заскриптовать, но пока вручную.

Итак, каталог мерча доступен. Основное представление — рубрикатор по картинкам с фильтром по видам товаров, но можно переключиться на рубрикатор по видам товаров с фильтром по категориям картинок.

Пока далеко не все выложенное на принтшопах я залил на сайт. Это из-за медленного ручного копипаста и огромного количества получившихся вариантов (пока не начал их собирать в одно место, я не очень даже и представлял это количество). Тем не менее уже есть чего посмотреть, да и через какое-то время я нагоню к актуальному состоянию. Сейчас, эти 875 товаров — это всего лишь три фотографии и одна картинка про енота.

Понятно, что всё это очень черновой вариант, но переделывать буду, скорее всего, уже вместе с рефакторингом сайта, который давно назрел — например, добавить теги нормальным способом без переделки сайта не получится. Я не очень доволен текущим интерфейсом фильтров, но пока не придумал, как сделать идеально. В общем, работы непочатый край…


Думаю, в ближайшее время я буду примерно раз в неделю анонсировать свежевыложенное. А выкладывать буду блоками по фотографиям, возможно, блоками «фотография × принтшоп».

Сейчас, как можно видеть, выложены:


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

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

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

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

Tg: май 2026

В мае проблемы с ав­то­пос­тин­гом продолжились… Быстрое исправление не по­мог­ло, надо сидеть и разбираться. Тем не менее постов было много и дайджест имеет смысл.

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

Давайте для разнообразия начнем с пиявки.


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

TelegramiNaturalistбабочкиживотныезмеинасекомыепиявкиптицырастенияцветы

ЖизньДыбрФото

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

Принтшопы, первые опыты

Шьём да порем — нитки портим…


Скриншот со VseMayki.ru: Платье-футболка 3D

Таки начали мои фо­точ­ки проходить модерацию уже и на Все­Май­ки. Наверное, теперь можно и поподробнее о мер­че написать.

Кроме самого факта публикации, это еще и дало возможность посмотреть витринные рендеры. Это, конечно, не то же самое, что вживую, но все-таки дает больше информации, чем то, что есть в конструкторе. Так что понимания, как что нужно делать, добавилось (см. эпиграф).

Тем не менее, всё, что написано ниже — это первые впечатления, а не итоги какого-то существенного опыта. И да, пока не мо­гу что-то определенное сказать о финансовой стороне вопроса — была только одна продажа на Print­Di­rect, недостаточная для то­го, чтобы что-то вывести. И, насколько я понимаю, это нор­маль­но — такие вещи раскручиваются медленно, нужно большое количество «дизайнов» (и, в мо­ем случае, нужно их дорабатывать: прохождение мо­де­ра­ции — это минимальная планка, а не гарантия успеха).

Площадки и товары

Погуглив, почитав отзывы и так далее, разместился я на трех площадках: Все­Май­ки, Print­Di­rect и FUN.ru. У них разный набор товаров, разные плюсы и минусы, так что ограничиваться чем-то одним я пока не собираюсь. Что касается международных площадок, то там нужна, как минимум, иностранная банковская карта, что, конечно, не то чтобы непреодолимое препятствие, но само по себе затратно и не факт, что окупится. Может быть, когда-нибудь в неопределенном будущем…


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

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

ЖизньДыбрПриродаФотоБёрдвотчинг

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

Выезд 18 мая

Верхнебардымский пруд

Впервые1 отправился фотографировать всякое живое не на своих двоих, а на машине. Первый выезд получился несколько комом, хоть и не ужас-ужас…

В целом все мои косяки можно списать на то, что слишком много внимания уходило на ма­ши­ну — как проехать, где запарковать, и так да­лее — вместо собственно съемки. Частично это должно полечиться просто с опы­том, час­тич­но — требует заведения новых привычек. Я еще по­ре­ф­лек­си­рую на эту тему ниже…

А начну все же с локаций.

Куда ездил?

Собственно локаций было две: Верхнебардымский пруд и Дру­жи­но-бардымский пруд (или, если ориентироваться на под­пи­си на картах, безымянные пруды рядом с на­се­лен­ны­ми пунктами Верхний Бардым и Дружино-Бардым). В пла­нах был еще Нижнебардымский пруд, но там были какие-то работы на его плотине, через которую я предполагал проезжать, ну и я решил, что обойдусь. Вообще, люди и создаваемый ими шум — не лучшее сопровождение для на­блю­де­ний природы.

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

  1. Как я уже вскользь упоминал, сдал на во­ди­тель­с­кие права я только прошедшей осенью, раньше как-то руки не доходили. 


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

iNaturalistживотныелесмерчнаблюдениянатурадыбрпрогулкиптицы

ЖизньДыбрПриродаФотоБёрдвотчинг

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

Прогулка 11 мая

Лосиха с лосёнком

Что мы знаем о лосе? Ничего, и то не все.

Открыл тут на днях свой наблюдательский сезон, более-менее полноценно прогулявшись по лесу. Более-менее — потому что нагулял всего лишь километров семь, вместо десяти-пятнадцати. Да и снял не так уж много, на самом деле лес еще не слишком-то и проснулся.

Звери

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

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


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

ChirpityiNaturalistживотныезверизвуклеслосьмерчнаблюдениянатурадыбрнейросетипрогулкиптицы

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

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

Tg: апрель 2026

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

Не знаю, заметил ли кто-то, кроме меня, но с апреля начались некоторые сбои в постинге. После очередного обновления iNaturalist стали возникать ошибки доступа к фотографиям. Я пока не разобрался, из-за чего это происходит, руки не дошли…

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

Для начала пусть будет свежая екатеринбургская гадюка.


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

TelegramiNaturalistбабочкигрибыживотныезмеинасекомыептицырастенияцветы

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

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

Tg: март 2026

Что ж, пришло время для очередной подборки. См. также посты за январь и за февраль.

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

Очень хотелось выбрать наблюдение одновременно свежее и весеннее, но увы. Пусть символизирует уходящую зиму…


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

TelegramiNaturalistбабочкиживотныемлекопитающиенасекомыептицырастенияцветы

ТехнологииПрограммированиеRubyПриродаБёрдвотчинг

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

iNatGet v0.9.2 и его практическое применение

Версия 0.9.0.18

Итак, финальные отчеты по сво­им районным проектам на iNa­tu­ra­list я сфор­ми­ро­вал, пользуясь уже новой версией inat-get. Сразу выяснилось, что вер­сия 0.9.01, несмотря на то, что я старался для ба­зо­вых вещей писать тесты, никуда не го­дит­ся. Впрочем, это нормально на дан­ном этапе (ранней беты). В ре­зуль­та­те, отлаживая на ре­аль­ных данных, я дошел до вер­сии 0.9.0.18 — уже вполне рабочей.

Полученными отчетами я вполне доволен. Примеры:

В подвале скриптов можно разглядеть мелким шрифтом, что сгенерированы они версией 0.9.0.15, а не .18. Это потому, что самые последние исправления в вет­ке 0.9.0 касались исключительно оптимизаций, и на результат не влияли.

Средств для удоб­но­го формирования отчетов все еще нет, пишу текстом в фай­лы, так что скрипты отчетов получились довольно развесистые. Я их поместил в от­дель­ный репозиторий ing-sv-districts — можно полюбоваться, хотя стру­к­ту­ра там сильно так себе…

Версия 0.9.2

А здесь добавлена довольно мелкая фи­ча — поддержка ERB, как в ка­чес­т­ве шаблонов, вызываемых из поль­зо­ва­тель­с­ких скриптов, так и в ка­чес­т­ве пользовательских скриптов как таковых. Не то, чтобы это было существенное улучшение, но может, кому и пригодится.

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

Промежуточные итоги

В общем и целом, текущая архитектура вполне годная, от глав­ных тормозов вер­сии 0.8.x удалось избавиться, основной упор по вре­ме­ни идет в ско­рость интернета, причем обновления, как и задумано, берутся ин­к­ре­мен­т­но — через параметр updated_since, что резко ускоряет повторные запросы.

Но работа с ло­каль­ной БД оставляет желать лучшего, груп­пи­ро­воч­ные запросы промахиваются мимо индексов, причем даже группировки по поль­зо­ва­те­лям, которые самые простые по сво­е­му внутреннему устройству… Что ж, значит следующая ите­ра­ция — 0.9.4, запланированная для ре­ше­ния именно этих про­б­лем — запланирована не зря. Заметные тормоза, впрочем, видны только на ге­не­ра­ции итоговой сводки — она сейчас занимает у ме­ня пару часов, что печально, конечно, но по срав­не­нию с 0.8.x — просто прекрасный результат.

Что по­ра­до­ва­ло — уже отлаженный на SQLite вариант на Post­greSQL заработал сра­зу — спасибо Sequel. Скорость работы на раз­ных СУБД практически не от­ли­ча­ет­ся. Нужны, конечно, аккуратные замеры, но в це­лом разницу можно игнорировать.

Что дальше?

Общий роадмап имеется на ви­ки проекта — Roadmap. Кстати, я тут «на­вайб­ко­дил» генератор ро­ад­ма­пов из Is­su­es и Mi­le­sto­nes — action-is-roadmap — довольно прикольно получилось, люблю наглядность. Даты майл­сто­у­нов проставлены от фо­на­ря — чисто для упо­ря­до­че­ния, как обещания их воспринимать точно не стоит.

А если не вдаваться в детали, то ключевые задачи такие:

  • Оптимизация запросов.

    Не знаю, насколько удастся их ускорить, но желательно выжать все возможное.

  • Доделать кэширование.

  • Удобный конструктор отчетов.

    Чтобы не нужно было заморачиваться на оформление в пользовательских скриптах. Писать их, думая только о ло­ги­ке, причем в тер­ми­нах множеств и выборок.

  • Доделать работу с про­чи­ми данными.

    Пока реализованы далеко не все возможные запросы и фильтры, есть куда развиваться. И здесь нужно будет не за­бы­вать об оп­ти­маль­нос­ти запросов.

Наверное, по ходу дела будут появляться новые задачи, и уж точ­но — находиться новые баги…

ERBPostgreSQLSQLiteSequeliNatGetiNaturalistinat-get

ТехнологииПрограммированиеRubyПриродаБёрдвотчинг

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

iNatGet v0.9.0

Что ж… Вот я и за­ре­ли­зил 🌿 iNatGet v0.9. Через два с небольшим года после v0.8, и через примерно год после последней вер­сии — v0.8.0.16. Обо всех этих минорных корректирующих версиях я ничего не писал, главным образом потому, что там мучительно правились мелкие баги, а нормальная работа требовала глобального рефакторинга (т.е. переписать заново с нуля), на который никак не находилось времени.

Однако все это время я не прекращал пользоваться своей программой, регулярно формируя отчеты для своих проектов1 на iNa­tu­ra­list. Таким образом я постепенно уточнял свое понимание того, как это в принципе должно работать и где у меня провалы в архитектуре. Плюс развитие ней­ро­се­тей… В проекте ни строчки сгенерированного кода, но для консультаций и ревью я пользовался различными LLM очень активно2, что и позволило сравнительно быстро написать новую, полностью переделанную, версию.

Если версии v0.8.x я характеризовал как альфа-версии, то ветка v0.9.x пусть будет бетой, но пока — очень ранней бетой

Коротко о том, что это за проект вообще, можно прочитать в README-ru.md в репозитории.

  1. См. журналы проекта «Биоразнообразие районов Свердловской области» и его дочерних. 

  2. О своем отношении и подходе к использованию нейросетей я подробно писал в посте: «Заметки об LLM и нейросетях вообще»


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

iNatGetiNaturalistinat-get

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

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

Tg: февраль 2026

Что ж, продолжу делать месячный дайджест того, что принесли мои tg-каналы с популярными наблюдениями. Здесь — све­же­про­шед­ший февраль. См. так­же пост за январь.

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

Долго думал, в итоге решил взять вот такого каменского февральского орлана-белохвоста. Солидная птица. И не так уж часто его наблюдают в принципе, особенно у нас в области.


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

TelegramiNaturalistбабочкиживотныемлекопитающиенасекомыептицырастенияцветы

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

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

Автодокументирование моделей Sequel

КДПВ сгенерирована по запросу «(yard) is (sequel) in winter fantasy style, detailed eyes»

Набросал предварительную версию YARD-плагина для автодокументирования Sequel-моделей — yard-is-sequel. Су­щес­т­ву­ю­щий yard-sequel с современными версиями YARD/Ruby/Sequel не работает.

Мой вариант, конечно, не может пока похвастаться полнофункциональностью (версия 0.8.0 — это ранняя альфа), но кое-что самое важное умеет:

  • Генерирует список ассоциаций: many_to_many, many_to_one и one_to_many с корректными ссылками на типы.

  • Генерирует список полей. Также с типами, но тут есть нюансы…

    1. Маппинг типов полей требует доработки. Кроме того, ти­пы, не поддерживаемые SQLite, скорее всего, не будут нормально обрабатываться в принципе.

      Поля берутся из Database#schema на созданной in-memory SQLite базе данных. Было бы хорошо, безусловно, брать их непосредственно из миграций, но пока непонятно, как это сделать.

    2. Путь к миграциям следует указать через переменную окружения.

Чего нужно доделать?

  • Отрефакторить и упростить обработку ассоциаций.

  • Расширить обработку типов в полях и сделать ее менее хрупкой. Сейчас есть подозрение, что минорная смена версии Sequel может всё поломать…

  • Добавить возможность брать схему из отдельно сохраненного файла (в формате JSON, скорее всего).


Но надо понимать, что я буду что-то править и дорабатывать только постольку, поскольку мне это самому нужно… Однако, если кто-то предложит свои пулл-реквесты, или хотя бы подробные баг-репорты, отнесусь со вниманием.

SequelYARDyardocдокументирование

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

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

Что там в Tg?

Решил написать, чего интересного (с моей точки зрения) принесли скрипты постинга популярных наблюдений в телеграм за минувший январь.

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

Залетный чернозобый дрозд в Екатеринбурге. Я бы не стал исключать, что со временем их станет больше — все как-то стали забывать, но вообще-то привычных дроздов-рябинников на Среднем Урале еще двадцать лет назад не было…


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

TelegramiNaturalistбабочкиживотныемлекопитающиенасекомыептицырастенияцветы