Блог. Склад текстов. И прочее городу и миру...
Рубрикатор
Последние записи
Каталог «мерча»

Хотел начать этот пост со слов «не прошло и двух недель», ан нет, прошло… Как быстро время летит… На самом деле бо́льшую часть внемени заняло не написание кода, а заполнение данных. Надо бы это дело заскриптовать, но пока вручную.
Итак, каталог мерча доступен. Основное представление — рубрикатор по картинкам с фильтром по видам товаров, но можно переключиться на рубрикатор по видам товаров с фильтром по категориям картинок.
Пока далеко не все выложенное на принтшопах я залил на сайт. Это из-за медленного ручного копипаста и огромного количества получившихся вариантов (пока не начал их собирать в одно место, я не очень даже и представлял это количество). Тем не менее уже есть чего посмотреть, да и через какое-то время я нагоню к актуальному состоянию. Сейчас, эти 875 товаров — это всего лишь три фотографии и одна картинка про енота.
Понятно, что всё это очень черновой вариант, но переделывать буду, скорее всего, уже вместе с рефакторингом сайта, который давно назрел — например, добавить теги нормальным способом без переделки сайта не получится. Я не очень доволен текущим интерфейсом фильтров, но пока не придумал, как сделать идеально. В общем, работы непочатый край…
Думаю, в ближайшее время я буду примерно раз в неделю анонсировать свежевыложенное. А выкладывать буду блоками по фотографиям, возможно, блоками «фотография × принтшоп».
Сейчас, как можно видеть, выложены:
-
Сухое дерево — это из разряда того, что я называю квазипаттернами.
-
«Это енот…» — проходит по разряду приколов.
Возможно, я где-то накосячил в массиве данных. Если где-то не стыкуются картинка, ссылка и текст, напишите, пожалуйста, в комментариях — буду исправлять.
Tg: май 2026
В мае проблемы с автопостингом продолжились… Быстрое исправление не помогло, надо сидеть и разбираться. Тем не менее постов было много и дайджест имеет смысл.
Биоразнообразие Свердловской области в TG
Давайте для разнообразия начнем с пиявки.
Принтшопы, первые опыты
Шьём да порем — нитки портим…

Таки начали мои фоточки проходить модерацию уже и на ВсеМайки. Наверное, теперь можно и поподробнее о мерче написать.
Кроме самого факта публикации, это еще и дало возможность посмотреть витринные рендеры. Это, конечно, не то же самое, что вживую, но все-таки дает больше информации, чем то, что есть в конструкторе. Так что понимания, как что нужно делать, добавилось (см. эпиграф).
Тем не менее, всё, что написано ниже — это первые впечатления, а не итоги какого-то существенного опыта. И да, пока не могу что-то определенное сказать о финансовой стороне вопроса — была только одна продажа на PrintDirect, недостаточная для того, чтобы что-то вывести. И, насколько я понимаю, это нормально — такие вещи раскручиваются медленно, нужно большое количество «дизайнов» (и, в моем случае, нужно их дорабатывать: прохождение модерации — это минимальная планка, а не гарантия успеха).
Площадки и товары
Погуглив, почитав отзывы и так далее, разместился я на трех площадках: ВсеМайки, PrintDirect и FUN.ru. У них разный набор товаров, разные плюсы и минусы, так что ограничиваться чем-то одним я пока не собираюсь. Что касается международных площадок, то там нужна, как минимум, иностранная банковская карта, что, конечно, не то чтобы непреодолимое препятствие, но само по себе затратно и не факт, что окупится. Может быть, когда-нибудь в неопределенном будущем…
Выезд 18 мая

Впервые1 отправился фотографировать всякое живое не на своих двоих, а на машине. Первый выезд получился несколько комом, хоть и не ужас-ужас…
В целом все мои косяки можно списать на то, что слишком много внимания уходило на машину — как проехать, где запарковать, и так далее — вместо собственно съемки. Частично это должно полечиться просто с опытом, частично — требует заведения новых привычек. Я еще порефлексирую на эту тему ниже…
А начну все же с локаций.
Куда ездил?
Собственно локаций было две: Верхнебардымский пруд и Дружино-бардымский пруд (или, если ориентироваться на подписи на картах, безымянные пруды рядом с населенными пунктами Верхний Бардым и Дружино-Бардым). В планах был еще Нижнебардымский пруд, но там были какие-то работы на его плотине, через которую я предполагал проезжать, ну и я решил, что обойдусь. Вообще, люди и создаваемый ими шум — не лучшее сопровождение для наблюдений природы.
Все эти места я до сего момента видел только на карте. Про Дружино-бардымский еще знал, что это популярное место у заезжих бердвотчеров.
-
Как я уже вскользь упоминал, сдал на водительские права я только прошедшей осенью, раньше как-то руки не доходили. ↩
Прогулка 11 мая

Что мы знаем о лосе? Ничего, и то не все.
Открыл тут на днях свой наблюдательский сезон, более-менее полноценно прогулявшись по лесу. Более-менее — потому что нагулял всего лишь километров семь, вместо десяти-пятнадцати. Да и снял не так уж много, на самом деле лес еще не слишком-то и проснулся.
Звери
Самое примечательное наблюдение, конечно, то, которое я вынес на заглавную картинку. Появление этого семейства метрах в сорока от меня было довольно-таки неожиданным… Вообще, я в этот момент стоял и размышлял, что как-то скучно гуляю — цвести почти ничего не начало, птицы всё знакомые попадаются, насекомые сидят по норам, поскольку ночью был минус, и еще толком не потеплело… Полагаю, что так близко они подошли как раз потому, что я стоял и размышлял, а не шел, хрустя листьями и хворостом под ногами, плюс, видимо, с направлением ветра повезло.
В общем, гештальт можно считать закрытым — раньше мне не удавалось снять в лесу лосей, только следы их жизнедеятельности. Конечно, фоточка так себе из-за размытой веточки на переднем плане, да и вообще хотелось бы снять самца в период полной рогатости… А еще я дичайше завалил все горизонты, что легко правится, но портит детализацию… Но это уже не так зудит. Все-таки именно фотонаблюдение получилось вполне полноценное.
Tg: апрель 2026
Затянул я немного, но таки выкладываю очередную подборку. См. также посты за январь, за февраль и за март.
Не знаю, заметил ли кто-то, кроме меня, но с апреля начались некоторые сбои в постинге. После очередного обновления iNaturalist стали возникать ошибки доступа к фотографиям. Я пока не разобрался, из-за чего это происходит, руки не дошли…
Биоразнообразие Свердловской области в TG
Для начала пусть будет свежая екатеринбургская гадюка.
Tg: март 2026
Что ж, пришло время для очередной подборки. См. также посты за январь и за февраль.
Биоразнообразие Свердловской области в TG
Очень хотелось выбрать наблюдение одновременно свежее и весеннее, но увы. Пусть символизирует уходящую зиму…
iNatGet v0.9.2 и его практическое применение

Версия 0.9.0.18
Итак, финальные отчеты по своим районным проектам на iNaturalist я сформировал, пользуясь уже новой версией 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 вариант на PostgreSQL заработал сразу — спасибо Sequel. Скорость работы на разных СУБД практически не отличается. Нужны, конечно, аккуратные замеры, но в целом разницу можно игнорировать.
Что дальше?
Общий роадмап имеется на вики проекта — Roadmap. Кстати, я тут «навайбкодил» генератор роадмапов из Issues и Milestones — action-is-roadmap — довольно прикольно получилось, люблю наглядность. Даты майлстоунов проставлены от фонаря — чисто для упорядочения, как обещания их воспринимать точно не стоит.
А если не вдаваться в детали, то ключевые задачи такие:
-
Оптимизация запросов.
Не знаю, насколько удастся их ускорить, но желательно выжать все возможное.
-
Доделать кэширование.
-
Удобный конструктор отчетов.
Чтобы не нужно было заморачиваться на оформление в пользовательских скриптах. Писать их, думая только о логике, причем в терминах множеств и выборок.
-
Доделать работу с прочими данными.
Пока реализованы далеко не все возможные запросы и фильтры, есть куда развиваться. И здесь нужно будет не забывать об оптимальности запросов.
Наверное, по ходу дела будут появляться новые задачи, и уж точно — находиться новые баги…
iNatGet v0.9.0

Что ж… Вот я и зарелизил 🌿 iNatGet v0.9. Через два с небольшим года после v0.8, и через примерно год после последней версии — v0.8.0.16. Обо всех этих минорных корректирующих версиях я ничего не писал, главным образом потому, что там мучительно правились мелкие баги, а нормальная работа требовала глобального рефакторинга (т.е. переписать заново с нуля), на который никак не находилось времени.
Однако все это время я не прекращал пользоваться своей программой, регулярно формируя отчеты для своих проектов1 на iNaturalist. Таким образом я постепенно уточнял свое понимание того, как это в принципе должно работать и где у меня провалы в архитектуре. Плюс развитие нейросетей… В проекте ни строчки сгенерированного кода, но для консультаций и ревью я пользовался различными LLM очень активно2, что и позволило сравнительно быстро написать новую, полностью переделанную, версию.
Если версии v0.8.x я характеризовал как альфа-версии, то ветка v0.9.x пусть будет бетой, но пока — очень ранней бетой…
Коротко о том, что это за проект вообще, можно прочитать в README-ru.md в репозитории.
-
См. журналы проекта «Биоразнообразие районов Свердловской области» и его дочерних. ↩
-
О своем отношении и подходе к использованию нейросетей я подробно писал в посте: «Заметки об LLM и нейросетях вообще». ↩
Tg: февраль 2026
Что ж, продолжу делать месячный дайджест того, что принесли мои tg-каналы с популярными наблюдениями. Здесь — свежепрошедший февраль. См. также пост за январь.
Биоразнообразие Свердловской области в TG
Долго думал, в итоге решил взять вот такого каменского февральского орлана-белохвоста. Солидная птица. И не так уж часто его наблюдают в принципе, особенно у нас в области.
Автодокументирование моделей Sequel

Набросал предварительную версию YARD-плагина для автодокументирования Sequel-моделей — yard-is-sequel.
Существующий yard-sequel с современными версиями YARD/Ruby/Sequel не работает.
Мой вариант, конечно, не может пока похвастаться полнофункциональностью (версия 0.8.0 — это ранняя альфа), но кое-что самое важное умеет:
-
Генерирует список ассоциаций:
many_to_many,many_to_oneиone_to_manyс корректными ссылками на типы. -
Генерирует список полей. Также с типами, но тут есть нюансы…
-
Маппинг типов полей требует доработки. Кроме того, типы, не поддерживаемые SQLite, скорее всего, не будут нормально обрабатываться в принципе.
Поля берутся из
Database#schemaна созданной in-memory SQLite базе данных. Было бы хорошо, безусловно, брать их непосредственно из миграций, но пока непонятно, как это сделать. -
Путь к миграциям следует указать через переменную окружения.
-
Чего нужно доделать?
-
Отрефакторить и упростить обработку ассоциаций.
-
Расширить обработку типов в полях и сделать ее менее хрупкой. Сейчас есть подозрение, что минорная смена версии Sequel может всё поломать…
-
Добавить возможность брать схему из отдельно сохраненного файла (в формате JSON, скорее всего).
Но надо понимать, что я буду что-то править и дорабатывать только постольку, поскольку мне это самому нужно… Однако, если кто-то предложит свои пулл-реквесты, или хотя бы подробные баг-репорты, отнесусь со вниманием.
Что там в Tg?
Решил написать, чего интересного (с моей точки зрения) принесли скрипты постинга популярных наблюдений в телеграм за минувший январь.
Биоразнообразие Свердловской области в TG
Залетный чернозобый дрозд в Екатеринбурге. Я бы не стал исключать, что со временем их станет больше — все как-то стали забывать, но вообще-то привычных дроздов-рябинников на Среднем Урале еще двадцать лет назад не было…
Показаны 12 записей из 335