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

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


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

t.me/4x_pro

Лог жизни

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


Возвращаюсь к децентрализованным сетям

4X_Pro

Опять получается «как всегда»: стоило допустить в жизни два вычеркнутых дня (среду и четверг, когда я большую часть дня провел вне дома), и теперь снова сложно настроиться на основную задачу — децентрализованные соцсети. Впрочем, по-прежнему не могу определиться, куда двигаться. С подачи одного анонима из комментариев поставил было Hubzilla на локаль, но впечатления остались прежними. Вроде возможностей много, но по кривизне интерфейса не намного лучше friendica, только цветовая гамма другая и значки/кнопки поаккуратнее выглядят. Но с другой стороны, можно попробовать полностью заменить интерфейс на нормальный.
С другой стороны, решимости на fork Mastodon пока тоже не хватает по причинам, которые уже описывал. А также возникли мысли, что разбиение инфопотока outbox на несколько блоков приведет к необходимости делать кучу AJAX-запросов, что явно не будет способствовать скорости работы.
Еще есть мысль вообще взять и встроить поддержку ActivityPub прямо в IntB, сделав каждую тему или раздел actorом, чтобы можно было экспортировать темы в децентрализованные сети, да и все. А уже потом развивать его до полноценной социальной сети. Сейчас основное, чего там не хватает — это ленты (feeds), уведомления и возможности выполнять асинхронные задачи. Но с другой стороны, тогда не будет возможности использовать существующие мобильные клиенты.
Впрочем, постепенно ищу вспомогательную информацию, которая может оказаться полезной. В частности, вчера нашел и в общих чертах разобрался в трех microframeworks: Slim (а началось все с того, что заинтересовался одноименным шаблонизатором для Ruby), Fat-free и Silex. По benchmarkам уверенно лидирует первый, но с другой стороны, у него возможности минимальные: роутинг запросов и вставка middleware, и все. В IntB и то больше есть…
А сегодня разобрался наконец-то с работой протокола OAuth. Правда, одного не понял: зачем нужен лишний шаг с обменом access code на access token? Почему бы сразу его не давать в URL. Еще искал готовые решения для авторизации (все же от uLogin, да и вообще от любых сторонних сервисов надо уходить) и нашел сайт с забавным названием The League of Extraordinary Packages, где есть подходящее решение.

Размышления о Mastodon

4X_Pro

Продолжаю изучать децентрализованные соцсети. Попробовал было еще раз Friendica (впервые сталкивался с ней в 2017 году, когда искал движок для соционической сети). Ставил и локально, и смотрел на одном из общедоступных серверов. Привлекло, в основном, то, что она умеет взаимодействовать с сайтами на ActivePub (fediverse), так и с Disapora и сайтами на OStatus (так называемой the federation). И даже для gate в Facebook нашлось дополнение. Но увы, результат тот же самый: не нравится категорически интерфейс, просто какой-то дискомфорт от нахождения на сайте с ней чувствую. Да и в плане оптимизации времени загрузки все просто ужасно. А вот Mastodon вызывает противоположное чувство: как же классно сделано! Хотя на самом деле потом мелкие недоработки (или просто неудачные решения) в интерфейсе нашлись.
В общем, сейчас размышляю, то ли делать fork Mastodon и добавлять в него возможности, необходимые для мультиблога примерно такого же формата, как этот мой сайт + профилей контактов, то ли взять от Mastodon только frontend, а backend написать на PHP. С forkом смущает то, что Mastodon работает на связке RoR + Postgres + Redis, что, фактически, означает, что без VDS не обойдешься. А это уже не каждому по силам и плохо стыкуется с моей концепцией «каждый участник сети — полный хозяин своего сайта» (а не «один сервер для целого сообщества», из которой исходил автор Mastodon), так как для этого желательно, чтобы такой сайт можно было без особых усилий поставить на любой бомжехостинг.
С другой стороны, возникает проблема масштабируемости. ActivityPub работает по принципу push, то есть сайт автора комментария сам рассылает уведомления подписчикам (да еще стандарт требует отслеживания ошибок и попыток повтора отправки, если сервер получателя упал). И если их будет 400—500 (в том же ВК легко находятся люди с таким количеством друзей/подписчиков), то выполнить все push из обработчика POST-запроса нереально. В Mastodon это решается через то, что в RoR есть Active Jobs, а в PHP готового решения, которое было бы на любом хостинге, вроде нет, поэтому придется извращаться либо через cron, либо через AJAX-запросы, либо использовать промежуточные сервера (и сразу же возникают вопросы безопасности).
В общем, пока еще очень и очень многое непонятно. Впрочем, пока займусь тем, что поставлю свою копию Mastodon на VDS с соцсетью: все равно там сейчас нагрузка никакая, а оперативной памяти относительно много.


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

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