shikhalev.*

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

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

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

Tg: февраль 2026

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

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

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


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

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

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

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

Что там в Tg?

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

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

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


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

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

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

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

Продолжая повышать энтропию интернетов...

В порядке продолжения повышения энтропии, а также эксперимента ради, я недавно завел еще три канала в те­ле­грам с на­блю­де­ни­я­ми из iNa­tu­ra­list:

Daily Flowers of the World

Наблюдения цветов — в запросе указаны term_id и term_value_id, чтобы в выборку попадали именно наблюдения с цве­та­ми, а не во­об­ще все наблюдения цветковых растений.

Daily Birds of the World

Наблюдения птиц. Тут ничего специфического, просто каждый день разные птицы.

Daily Butterflies of the World

Наблюдения бабочек — в запросе опять же указаны term_id и term_value_id, чтобы в выборку попадали только взрослые особи, т.е. собственно бабочки, а не гусеницы, куколки или яйца.


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

TelegramiNaturalistбабочкиптицыцветы

ТехнологииПрограммированиеWebО себе

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

Пара апдейтов

inat-channel v0.9.2

Что это такое — см. пре­ды­ду­щий пост.

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

При этом удаление устаревших наблюдений из пу­ла по преж­не­му контролируется по да­те загрузки наблюдения.

jekyll-is-announcer v0.8.3

Опять же, о нем я уже писал. Впрочем, детали и концепция, чую, будут еще меняться и меняться…

А сейчас поменял кнопку перехода в ка­нал на виджет от те­ле­гра­ма с ком­мен­та­ри­я­ми. Что характерно, когда я делал кнопку, я ведь спрашивал у двух нейросетей, существует ли такой виджет… Но, видимо, как-то неправильно сформулировал и заузил область поиска1. А потом почти случайно сам наткнулся.

Что-то широкий и разнородный плагин получается… Пока не могу сообразить, как его окончательно заархитектурить — кноп­ки-то мож­но бы делать к разным сервисам легко, а вот встраиваемые виджеты — уже сложнее. Буду думать дальше. Раскидывать же его на несколько плагинов по отдельным сервисам не хочется, чтобы не плодить массу отдельных вспомогательных JSON-файликов.

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

Jekyll ISTelegramiNaturalistinat-channeljekyll-is-announcerкомментарии

ТехнологииПрограммированиеRubyWebПриродаОбщество

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

iNaturalist + Telegram

Анонс

Написал скрипт для автопостинга выборок из iNaturalist в tg-каналы. Скрипт делает выборку по произвольно сконфигурированным параметрам (которые, разумеется, должны поддерживаться iNaturalist API), затем берет случайное наблюдение, постит его, а остальные складывает в пул, который будет задействован, если свежие кончатся. Это если коротко.

Более подробно, как это все работает, а главное — как настраивается, я описал в README проекта inat-get/inat-channel. В том числе и на русском. Здесь пара моментов:

  • Наблюдения не дублируются.

  • Можно включить режим, когда и таксоны не будут дублироваться, с ограниченным, правда, сроком. Но его можно выставить произвольно большим.

  • Форматирование делается ERB-шаблоном, т.е. максимально гибко.

  • Скрипт прекрасно работает на GitHub Actions, запускаясь по расписанию. Для контроля неповторямости необходимо настроить обратный пуш, чтобы данные, которые хранятся в JSON-файлах, сохранялись в репозитории между сеансами.

  • Используется iNaturalist API v2, которое находится в ранней бете и может поломаться. Однако, на первой версии пришлось бы вытягивать в десятки, если не в сотни раз бо́льшие объемы данных, что малоприемлемо.

Примеры

На реальных примерах работу скрипта можно посмотреть на двух моих каналах:

Подписывайтесь, ставьте лайки, комментируйте… Отелеграмливайте свои проекты. В общем, велкам.


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

TelegramiNaturalistinat-channelавтоматизация

ТехнологииПрограммированиеWebО себе

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

Анонсер — техническая сторона

В посте о подключении телеграм-канала я уже предполагал, что напишу подробнее о технической стороне этого подключения. Вообще-то, я планировал этим заняться попозже, а пока переключиться на «Прак­ти­чес­кое руководство по dark­table»… Но внезапно обнаружил, что толком переключиться не могу, пока не доведу эту задачу с анонсером до какой-то логической точки.

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

Задача

Собственно, основная задача стояла в следующем:

  • Отправлять анонсы (пока только в телеграм-канал) новых постов;

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

Уже по ходу дела решил добавить в Actions отправку уведомлений себе о выполненных операциях.


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

GitHubGitHub ActionsJekyllJekyll ISTelegramпланысайт

О себеТехнологииWebДыбр

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

Телеграм-канал сайта

Картинка для привлечения внимания

Завел себе (точнее, этому сайту) канал в те­ле­ге — https://t.me/shikhalev_blog.

  • Во-пер­вых, для анонсов новых постов (даже заморочился и автоматизировал анонсирование на GitHub Actions).

  • Во-вторых, для комментариев, а то, похоже, аккаунт на GitHub мало у ко­го есть… Хотя, может, просто обсуждать нечего.

  • Ну, и в-третьих, там можно донатить «звездами». Впрочем, тут я иллюзий не питаю.

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

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

Что касается технической стороны вопроса: плагин для Jekyll можно посмотреть на GitHub — jekyll-is/jekyll-is-announcer, а его использование — в каталоге .github/workflows репозитория сайта. Думаю, еще написать об этом подробнее, но перед этим выделить основные действия из workflow в отдельные ac­ti­on-ре­по­зи­то­рии — тогда можно будет поговорить на этом примере и об устройстве GitHub Actions в целом.

GitHubGitHub ActionsJekyllJekyll ISTelegramпланысайт

О себеТехнологииWebПриродаБёрдвотчинг

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

Кстати, о птичках

Скриншот из Я.Вебмастер

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

Но не­дав­но я обнаружил еще более странный момент, заглянув в Я.Веб­мас­тер — см. соб­с­т­вен­но скриншот. Т.е. лю­ди ищут уже не прос­то поведение птиц на кор­муш­ке, а конкретный текст конкретного автора. Такое ощущение, что попал в ка­кую-то учебную программу в ка­чес­т­ве рекомендованного материала. Или что это вообще?

shikhalev.orgпоискптицысайты

ТехнологииWebДыбрО себе

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

Дыбр сайтостроительный

Оптимизация страниц

В про­цес­се работы с hugin.shikhalev.org обнаружилась интересная особенность Jekyll, о ко­то­рой желательно знать, чтобы не бы­ло мучительно больно…

«Страницы», то есть «pages», не яв­ля­ю­щи­е­ся постами (и не вхо­дя­щие в ни­ка­кие другие коллекции) обрабатываются крайне медленно. Переделка страниц в кол­лек­ции ускорила сборку сайта (локально) примерно в 10 раз — с око­ло двухсот се­кунд до ме­нее двадцати. Сначала я даже попытался переделать их в пос­ты, но пост должен содержать дату в име­ни, и нет никакой возможности задать ему URL, соответствующий просто структуре каталогов, без да­ты в ка­ком-ли­бо виде. Точнее, каждому посту в от­дель­нос­ти-то можно, вручную во front matter, но это уже издевательство над са­мим собой и полный трэш в слу­чае каких-то переделок и рефакторинга. Со­з­да­ние же отдельных коллекций такой проблемы не не­сет, единственное, что понадобилось прописать ручные адреса для фай­лов index.md, чтобы ссылки на них шли как ссылки на ка­та­ло­ги, а не на in­dex.html

Что делать с комментариями?

Точнее, без оных… Heroku больше не да­ет бесплатно крутить Staticman, так что комментарии здесь уже не ра­бо­та­ют. Ранее созданные, конечно, никуда не де­лись — за то и был выбран Sta­tic­man, что они хранятся внутри репозитория…

Думаю в ближайшее время подключить giscus, каковой уже испытан на hugin.shikhalev.org, а затем как-то решить вопрос с ав­то­ма­ти­чес­ким сохранением комментариев внутрь репозитория. Впрочем, буду рассматривать и другие варианты, может быть, за по­с­лед­нее время появилось что-то более интересное и подходящее.

upd: Прикрутил giscus, но вопрос закрытым не счи­таю.

Jekyllshikhalev.orgкомментарииоптимизациясайты

ТехнологииСофтWeb

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

Conky и OpenWeather

Погода в Conky

Подключил прогноз погоды от OpenWeather к Conky. Пока оно сыровато, надо продумать получше архитектуру, чтобы было удобно пользоваться. Поэтому я не стал пока документировать этот модуль в README репозитория, ну а в блоге можно и о том, что в процессе, написать.

У меня почему-то не получилось получить данные текущей погоды с OpenWeatherMap.org, только прогноз на пять дней с интервалом 3 часа. Надо, конечно, поразбираться с их API получше — еще один повод не считать работу законченной…

Как бы то ни было, пятидневный прогноз вполне себе отображается. Как его использовать:

  1. Мне потребовалось доустановить некоторые пакеты для Lua:

    • lua-cjson для парсинга ответа от сервера.
    • luaposix для всякой вспомогательной работы с файлами и каталогами.
    • luasocket для собственно загрузки по HTTP.

    В вашей системе это все может быть уже установлено, а может и не быть, нужно проверить и доустановить.


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

ConkyLuaOpenWeatherмониторингпогода