Портрет 4X_Pro
Был в Сети 25 апр. 2024 г., 00:57
Мультиблог
4X_Pro
Кратко о себе: Web-разработчик. Пишу на PHP, Python, JavaScript. Знаю Ruby и Go, со студенческих времён более-менее помню C и asm. Сейчас специализируюсь на ускорении загрузки сайтов и разработке ботов для Telegram. Linuxоид (использую Debian+LXDE). Сторонник IndieWeb.

Социальные сети


Новости сайта в Telegram

t.me/4x_pro

Лог жизни

Лог моей жизни, где я фиксирую наиболее эмоционально значимые для меня события и текущее настроение. Является продолжением блога, который я вел в ЖЖ с ноября 2004 по апрель 2018 года.


Снова тягостные дни

4X_Pro
Опять какие-то тягостные дни в последнее время, кроме разве что понедельника. Чем бы ни занимался, всё идёт очень тяжело и медленно. Любое действие занимает раза в два больше времени, чем ожидалось изначально. Хотя вроде биоритмического минимума нет, или же «молодость года» делает его менее заметным, чем осенью. Хочется послать всё подальше, отключить Интернет и сидеть и целыми днями играть в старые игры, читать книги и сайт TrueCrime.

Дни изучения людей с противоположным мировоззрением

4X_Pro
Вчера и сегодня у меня как-то сами собой случились дни изучения людей с противоположным мировоззрением. Вчера хотел часа в 3 выключить компьютер, но наткнулся на Дзене на блог некоего Офисного Крыса. Он — типичнейший «ускоритель жизни» с базовой ЧЛ, первой Волей и очень материалистическо-приземлённым мировоззрением. Но при этом он сидит на четвертом уровне по Подводному, и то ли четвертом, то ли пятом РСИ.Из-за этого не одержим идеей достигательства, как те, кто на третьем, а пишет весьма адекватные и толковые вещи по вопросам, связанным с работой и кадрами. В общем, с интересом читал почти до 6 утра. Только один момент вызвал бурное неприятие: где он советовал при ведении блога на Дзене изучить потребности целевой аудитории. На мой взгляд, писать нужно о том, о чём есть потребность высказаться, а не о том, на что спрос есть! Даже отметился там комментарием по этому поводу. Но всё же один вопрос не даёт мне покоя: неужели этим людям самим нравится быть такими приземлёнными материалистами, сосредоточенными на зарабатывании денег? Это же ужасно…
Днём просматривал рассылки ЖЖ и наткнулся на заметку про childfree. Долго читал комментарии, удивляясь, сколько же в Сети ненавистников childfree. Казалось бы, чем мы им мешаем? Некий aziopik даже дальше пошёл: написал, что вот если убрать систему пенсий и социальных пособий, то childfree сразу исчезнет как явление. На это я ему ответил, что совершенно нет, если грамотно инвестировать, то можно получить доход, который позволит прекрасно обходиться и без пенсии, и без детей. На что он выдал просто шедевральную фразу «С чего бы вдруг политики оставили этот источник в вашем распоряжении, а не забрали себе?». На это я просто не нашёлся что ответить. Сначала хотел было расписать возможные сценарии такого «забрали себе» с разбором, почему такой сценарий маловероятен, но потом задолбался формулировать и бросил.
Ещё попытался было закончить реализацию протокола Micropub. Но застрял на двух моментах. Во-первых, надо придумать, как выдавать статус 201 вместо 303, который делается при создании темы обычным образом, не слишком «костыльно». В какой-то момент хотел сделать выдачу 201 всегда, но оказалось, что при этом статусе редирект не делается. Во-вторых, выяснилось, что PHP по умолчанию не получает заголовок Authorization, который необходим для проверки OAuth-токена. И только совсем вечером нашёл решение, что с этим делать. Но больше сделать ничего не удалось, видимо, время ещё не пришло.

Два дисгармоничных дня

4X_Pro
Вчерашний день начался просто замечательно. Я собрался и быстро сделал то, о чём писал недавно — возможность авторизации в IndieAuth по URL подразделов для пользователя-владельца. Затем решил вопрос с OwnYourGram: установил его на хостинг, где стоят мои старые сайты. Там можно выбирать любую версию Процесс шёл тяжело и мучительно. Оказалось, что хотя на хостинге пишется, что у меня 5 сайтов из 7, реально можно создать только пять, как раньше. То есть хостер обновил тариф, но у старых пользователей автоматически ничего не поменялось. Написал в техподдержку, они ответили, что нужно сменить тариф в панели управления на такой же. После этого заработало, но на ожидание ответа потерялся почти час.
Я уже предвкушал, как объявлю о том, что сделал траснляцию из Instagram в личный блог. Но тут неприятности посыпались дальше. Началось всё с того, что OwnYourGram не находил ссылку на мой сайт для трансляции. Стал разбираться, в чём дело, и обнаружил, что от Instagram вообще ничего не приходит. После недолгой отладки выяснил, что OwnYourGram использует сервис XRay берёт данные напрямую со страницы Instagram, а не через API. Но публичную копию XRay Instagram давно заблокировал, поэтому ничего не работало. Попытался было запустить копию у себя. Но то же самое: ошибка 429 — превышено количество запросов. Хотя на ноутбуке XRay отрабатывает нормально и данные возвращает.
В общем, провозился с этим всю вторую половину дня. И под вечер ощутимо стал нервничать на тему «опять ничего не успеваю», так как над душой висит ещё пара задач по freelance, делать которые категорически не хочется, да ещё в последние дни в мессенджерах стали писать больше, прямо хоть снова закрывай всё.
Поздним вечером хотел было сделать то, что обещал corsico, и даже начал, но скоро понял, что в таком состоянии ничего хорошего не выйдет. Плюс получилось как всегда: небольшое изменение на давно не обновлявшейся системе (всего-то php-curl поставить надо) тянет за собой необходимость кучи обновлений (в частности, система хочет обновить php до 7.3), которые создают риск, что всё поломается, поскольку скрипты тоже довольно старые… В итоге часа полтора провозились, но ничего вообще не сделали, кроме того, что я послал corsico ссылку, как делать HTTP POST без curl. И отложили всё на сегодня, но сегодня я тоже в не особо работоспособном состоянии, и по-хорошему, нужно всё на четверг-пятницу сдвинуть.
Ночью спал плохо. Несколько раз просыпался без видимых причин. И в итоге встал с существенным недосыпом и весь день подтормаживаю. Попытался было играть в WoT, но это был один из самых ужасных игровых дней за последнее время, вплоть до того, что плохо соображал, куда вообще еду. Потом устроил себе отдых в тёмной комнате, немного пришёл в себя, но за остаток дня ничего толком не сделал.
Есть мысль переделать OwnYourGram так, чтобы он делал вызовы через новую API вместо парсинга страниц, и вроде как это даже не так уж сложно (благо весь код взаимодействия собран в одном месте), но что-то в голове пока не складывается.

Хаотичная активность и большая прогулка

4X_Pro
В последние дни какая-то хаотичная активность. Хотя вроде нашёл решения проблем с IndieWeb, как-то нет внутреннего ресурса начать их реализовывать. Вместо этого берусь за какие-то совершенно сторонние дела: то парсер для выдачи Яндекса начал писать, то решил попробовать сделать биграммный анализатор для соционического типирования, то начал писать заметку о выживании в Интернете для своего первого Дзен канала. Причём в каждом из этих направлений делаю шаг, упираюсь в какую-то проблему и бросаю.
Например, парсер для Яндекса с первого же запроса получает CAPTCHA. Видимо, нужно сначала сделать запрос главной страницы, получить скрытые поля формы, а потом уже обращаться к серверу.
Биграммный анализатор я сделал (использовав для этого NLTK), но, наученный прежними экспериментами, сначала решил проверить на устойчивость результатов на разных текстах одного автора. На своих результаты оказались довольно стабильны, а вот когда взял стихи Tellы и сравнил с её же сообщениями ВК, разброс оказался огромный. И теперь не уверен, стоит ли продолжать эксперименты. К тому же, наверное, нужно не «в лоб» сопоставлять результаты, а считать сначала разницу со среднестатистическим распределением биграмм в русском языке. Но вот где их взять?
В написании заметки сформулировал пять главных принципов, и продумал, как их раскрыть, но увяз на вводной части.
Ещё попытался было поднять собственную копию OwnYourGram на VDS, где стоит socionics.me, но и тут ждала неудача. Когда стал подтягивать зависимости через composer, тот ругнулся, что им требуется PHP 7.1. А чтобы поставить 7.1, нужно либо всю систему обновлять, либо ставить PHP из стороннего репозитория (что мне ну очень не нравится).
Пожалуй, единственное, что довёл до конца за эти три дня — это добавил в SiteKnockerBot удаление из списка мониторинга сайтов, если пользователь заблокировал бота. Хотел написать об этом заметку в компьютерный блог, но так и не собрался…
Зато сегодня выбрался на прогулку к Первому Декоративному (aka Собачьему) и Ольнянному прудам. Изначально думал, что она займёт не так уж много времени, но в итоге прогулял два часа. Понял, что Первый Декоративный пруд недооценивал: считал его неинтересным, но там достаточно классно. И это, наверное, самый безлюдный пруд в парке. Посидел там некоторое время на скамейке, понаблюдал за чайками, которые его облюбовали, и парой уток.

IndieWeb — решения найдены!

4X_Pro
Вчера нашёл решение тех проблем с IndieWeb, о которых писал в прежних сообщениях.
Во-первых, решил вопрос, что делать с endpoints в подразделах, которые не видны на главной. Решение оказалось очень простым: добавить поддержку авторизации не только с адресом главной страницы, но и с адресом подраздела, если авторизуемый пользователь прописан как его владелец. То есть я смогу заходить, используя не только адрес 4xpro.ru, как сейчас, но и 4xpro.ru/lytdybr/, 4xpro.ru/news/ и тому подобное. Правда, в этом случае для каждого раздела на сторонних сервисах придётся делать настройки отдельно, но на то это и мультиблог с независимыми разделами. Ну и придётся переделывать уже сделанный код авторизации, что тоже не особо радует.
Во-вторых, понял, как всё же решить вопрос с репостингом в социальные сети. Всё же не встраивать его в IntB, а сделать на поддомене аналог Bridgy, но с поддержкой ЖЖ и ВКонтакте, который будет выполнять репост в каждый из сервисов по приходу Webmention. А дальше для каждого раздела сделать возможность в настройках задавать список предлагаемых Webmentions, для которых будут выводиться галочки при отправке сообщения. Таким образом, репостинг будет полностью управляемым (что для меня важно), и общее решение полностью соответствует духу IndieWeb.
И даже с Facebook придумал решение, правда, довольно кривое. В Facebook можно отправлять соообщения через RSS с помощью dlvr.it. И тогда получается такая схема: я делаю Webmention с сайта на сервис, тот сохраняет его в RSS, и скармливает его dlvr.it, который репостит на Facebook.
Кстати, попробовал было найти какой-нибудь бесплатный сервис, аналогичный dlvr.it, но ориентированный на Рунет, но так и не нашёл. Уже не первый раз с удивлением обнаруживаю, что сейчас найти что-то бесплатное (пусть и с существенными ограничениями, но для частного некоммерческого проекта их обычно достаточно) в англоязычном Интернете проще! Кроме уже упоминавшегося dlvr.it, в своё время так находил как минимум бесплатную базу PostgreSQL. Воистину, мы оказались в мире наизнанку!

Две прогулки в Кусково

4X_Pro
Вчера выбрались с Tellой в Кусково. Я очень хотел поймать момент, когда активно тает снег, и все ручьи и канавы заполнены водой. И, надо сказать, это удалось. Увы, не учёл только одного: в парке, особенно у пруда, значительно холоднее, чем в городе, поэтому быстро замёрз. А Tella устала, поэтому прогулка получилась достаточно короткой: мы прошли вдоль пруда, потом по аллее вдоль канала. На какой-то момент хотели выйти к Сухому пруду, но передумали и ненадолго углубились в лес. Немного посидели на скамейке (и я вспомнил, как в 2007—2008 годах сидели там с Миком и строили огромные планы по работе с бессознательным) и ушли на берёзовую аллею, начинающуюся недалеко от самого дальнего залива, хотели дойти до дубов. Но увы, там было слишком грязно, и поэтому повернули назад. Прошли по дальнему берегу пруда и решили возвращаться. В целом впечатления от прогулки остались весьма позитивными, а вот фото я почти не делал: небо было всё же мрачноватое. Вместо этого снял несколько видео ручьёв и выложил в Instagram, и пару раз сфотографировал Tellу, причём из одной из фотографий она сделала себе новый аватар.
За остаток дня толком ничего не сделал, кроме мелкой доделки SiteKnockerBot для одного из давних пользователей. А ночью впервые за последнее время случился приступ бессонницы. Не мог уснуть до 6 утра примерно. Утром проснулся, и в голове сложилась картина, что же делать с теми проблемами IndieWeb, в которых писал в предыдущих сообщениях. А потом, выглянув на улицу, я принял совершенно неожиданное для себя решение: отправиться в Кусково второй день подряд! Только вот собирался долго, из дома вышел только около 16 часов. И на этот раз отправился в Кусково пешком. Но позже выяснилось, что это и к лучшему.
Увы, вынословость у меня стала хуже, и когда дошёл до Дворцового пруда, уже ощутимо устал. Стал было искать скамейку, чтобы сесть и отдохнуть, но это оказалось не так-то просто: сегодня в Кусково было гораздо многолюднее. Пришлось обойти полпруда, прежде чем скамейка нашлась. Пока сидел и отдыхал, вспомнил одну свою старую идею — жизнь в режиме свободного скитания по городу, так, чтобы домой приходить только поспать. Возникла эта идея в 2012 году, когда у меня появился смартфон, и я ушёл с работы. И понял, насколько я переоцнивал свои силы тогда: всё-таки делиться впечатлениями на ходу с телефона — это совершенно не моё. Чтобы написать хоть сколько-то развёрнутую заметку, мне нужен компьютер, покой и замкнутое пространство. Кстати, думаю, ещё бы и просто весь день находиться в людных местах мне было бы тяжело.
Отдохнув, я снова вышел к тому месту, где перед впадением в пруд сливается несколько ручьёв. Правильно я сделал, что выбрался вчера: сегодня воды в них было уже ощутимо меньше. Зато на ручье кто-то установил игрушечное водяное колесо, которое даже вращалось! Потом снова отправился на ту аллею, о которой уже упоминал. На этот раз всё же дошёл до поляны со старыми дубами и сделал несколько фотографий. Но дальше идти не решился, вернулся немного назад и свернул на более-менее сухую тропинку, по которой вышел на дорогу, которая пересекает Собчачий ручей. Осмотрел его, сделал несколько фотографий лесных луж, которые там просто огромны. И понял, что правильно сделал, что вышел так поздно: когда солнце клонится к закату, можно сделать куда более интересные фотографии отражений, чем просто в дневное время. Перед уходом решил всё же дойти до Сухого пруда. Оказалось, что весной он не такой уж и сухой — на дне скапливается вода, затапливает выросшие там деревья и кусты, среди которых прячется множество уток. А ещё осмотрел ещё один ручей.
В общем, очень доволен и той, и другой прогулками! Правда, во второй по-настоящему интересной была только вторая часть (ручьи, аллея и далее). А ещё и там, и там было то, чего мне часто не хватает: ощущение того, что спешить некуда и незачем, всё идёт как надо, включенность в здесь и сейчас.
Ещё во время второй прогулки устроил проверку приложения-шагомера. Писал маршрут Геотрекером, и потом сравнил показания. Расходились они существенно: по Геотрекеру получилось почти 8 км, а приложение-шагомер насчитало чуть меньше 7 км. Только вот непонятно, в чём ошибка: в размере шага или в подсчёте их количества. Приложение считает, что при моих параметрах шаг должен составлять 74 см. Но если взять, и поделить правильное расстояние на число шагов, которое приложение насчитало, то получается, что шаг составляет 87 см.

Дальнейшие размышления о моём пути в IndieWeb

4X_Pro
В конце прошлой недели испытал ещё одно небольшое разочарование в IndieWeb: сервис OwnYourGram пишет, что Instagram блокирует обращения с него, поэтому добавление новых пользователей прекращено. Впрочем, его исходный код есть в свободном доступе, и можно будет поднять собственный экземпляр. Но опять могут быть сложности с тем, что у меня Micropub endpoint будет видна только в подразделе «Лог жизни», куда и нужно транслировать записи из Instagram.
Но, поразмыслив в пятницу и субботу, пришёл к выводу, что на самом деле не всё так плохо. В общем-то, изначально планы у меня были не такие уж большие: делать репосты новостей в Twitter, статей из блога — в VK и Facebook (и, выборочно, тоже можно в Twitter), импорт сообщений из Instagram в раздел «Лог жизни» и экспорт этого же раздела в ЖЖ (и, возможно, в другие блоги типа Privet.Ru). Но всё, кроме Facebookа, можно сделать своими силами: для работы с Instagram API модуль у меня уже есть, с VK API тоже знаком, в Twitter, хоть там и сложно получить аккаунт разработчика, можно всё же слать через Bridgy. Правда, с Twitterом что-то непонятное: почему-то и через Bridgy, и через Dlvr.It режутся внешние ссылки. С ЖЖ тоже вопрос решён, только довольно криво. Ну а на Facebook — попробовать использовать всё тот же dlvr.it.
Вопрос только в том, как лучше сделать — встраивать всё это в IntB или вынести в отдельный сервис, аналогичный Brid.Gy, но с поправкой на особенности IntB, в частности, расположение endpoints в подразделах…

Прошёл Heroine's Quest

4X_Pro
Сегодня прошёл игру Heroine's Quest за rogue (воровку/барда). Чувствую с одной стороны, мощный эмоциональный подъём, с другой — небольшую грусть по поводу того, что игра закончена. Эх, такая красивая история и такой замечательный игровой мир, выдержанный в лучших традициях Quest for Glory — одной из самых значимых для меня игр. Впрочем, потом ещё пройду за воительницу и волшебницу, там немало отличий, да и дополнительные квесты разгадал далеко не все. Так что буду возвращаться ещё не раз, но первое прохождение — это первое прохождение!

Кошмары исчезающего времени продолжаются

4X_Pro
В среду и первую половину четверга чувствовал себя отвратительно, и сил и желания ни на что не было. В какой-то момент даже боялся, что снова заболел COVIDом. Из-за этого до сегодняшнего дня безвылазно сидел дома и отменил уже было намеченную встречу с Tellой. Плюс ещё усилился кошмар выпадающего времени и, как следствие, компульсии. (Или наоборот, компульсии создают ощущение выпадающего времени?)  И ещё ощущение, что за последний месяц нет никакого движения в жизни, а какое-то вязкое болото (привет, третье Будущее по темпористике).
В четверг сделал сделал то, что называю «лёг на дно реки жизни» — ушёл в полуоффлайн и почти всё время либо играл в Heroes II и Heroine's Quest, либо читал книжки. И как только это сделал, забив на всякие «надо», сразу такое ощущение облегчения наступило! А в пятницу и самочувствие улучшилось. Плюс ещё повезло, что сейчас затишье с freelance-деятельностью (то, что висело надо мной до этого, всё же доделал утром четверга).
Ещё как-то странно реагирую на постоянные щелчки мессенджеров, звуки звонков и SMSок: очень раздражают. А тут ещё и мошенники точно взбесились: за пятницу целых 12 звонков. Причём только сброшу один, тут же идёт новый, с совершенно другого номера. Приходится отправлять телефон в полётный режим, чтобы переждать, но потом сыплются SMS «вам звонили» от провайдера. Эх, надо бы найти какое-то приложение-автоответчик, которое говорило бы что-то вроде «если вы надеетесь получить с меня денег мошенническим путём — пойдите и сдайтесь в правоохранительные органы, если хотите предложить мне приобрести товар или услугу — нажмите кнопку „положить трубку”, если реально хотите со мной связаться — напишите сначала SMS, зачем именно».
Сегодня, увидев, какая за окном погода, всё же решил выбраться на прогулку. И, надо сказать, не зря. Отправился к Большому Перовскому пруду, возле которого бываю не так уж часто. По дороге ещё нашёл очень тихий дворик, зайдя в который, испытал ощущение, будто нахожусь не в Москве, а где-то далеко от неё и в каких-нибудь 1980-х годах, так там было спокойно и неспешно.
На пруду тоже неплохо: ощущение солнца, простора и какой-то лёгкости и радости жизни. Уток на пруду почти нет, зато много чаек. Как это ни странно, пруд всё ещё покрыт льдом, только у самых берегов чуть-чуть протаял, а лёд из-за неба тоже кажется синеватым. И просто огромное количество шашлычников на берегах пруда!
Прогулка оставила двоякое впечатление. С одной стороны, очень доволен, что выбрался, получил массу позитивных эмоций. С другой — вернулся домой только в 18 часов, и получается, что опять весь день пролетел куда-то мимо. Но всё же кое-что сделал — выложил в Indieweb Wiki заметку о себе и в примеры на странице про протокол IndieAuth добавил информацию о том, что тоже реализовал его у себя.

Некоторое разочарование в IndieWeb

4X_Pro
В последние дни начались какие-то разочарования, связанные с IndieWeb. Сначала перепутал MicroSub с WebSub. Хотел было сделать возможность читать уведомления в мобильном приложении Indigenos. Прочитал описание WebSub, подумал «надо же, как легко реализовать», а потом оказалось, что для Indigenos нужен MicroSub, который значительно сложнее.
Сегодня решил наладить ретрансляцию сообщений через сервис Bridgy.io Но оказалось, что там далеко не всё так хорошо. Для тех же Instagram и Facebook нужно ставить «костыль» в виде web-расширения для броузера. VK он не поддерживает в принципе. По сути, из того, что мне нужно, там нормально работает только взаимодействие с Twitterом. Но и тут возникли сложности: там нельзя явно указать адрес сайта, а Bridgy берёт его из аккаунта в Twitter. И в результате начинаются сложности из-за того, что у меня мультиблог: endpointы для WebMention находятся в подразделах, а не на главной, и Bridgy их просто не видит (хотя отчасти это можно обойти через явную отправку WebMention-запроса к Bridgy).
В общем, возвращаюсь примерно к тому, с чего когда-то начинал: нужно делать ретрансляцию сообщений в соцсети (POSSE в терминах IndieWeb) своими силами. Только вот для Facebook, насколько я понимаю, получить такие права на приложение можно только после прохождения идентификации, что для меня не вариант. В Twitter нужно писать запрос в свободной форме, но неизвестно, дадут права или нет…
А самое главное, видна тенденция на то, что доступ к API у крупных площадок всё более и более ограничивается. И не окажется ли так, что со временем его закроют вообще, и все мои усилия пропадут напрасно.

Задать вопрос

Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.