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

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


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

t.me/4x_pro

Лог жизни

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


Избавляюсь от неопределённостей

4X_Pro
Несколько дней после возвращения в город прожил в режиме полярной ночи, безвылазно сидя дома. Режим слетел так, что просыпаю почти весь световой день, и только когда темнеет, начинаю какую-то активную деятельность. Но несмотря на это, успевал достаточно много, правда, в основном, всяких второстепенных дел типа бытовых вопросов или мелких исправлений на своих сайтах.
Но зато стали уходить неопределённости, которых слишком уж много было в последнее время. Во-первых, окончательно решил делать сообщество идеалистов на Akkoma и, отчасти с подачи сэра Мика, понял, каким будет формат сообщества. Если совсем кратко, то буду писать туда более сжато, отчасти даже Twitter-подобно. Длинные статьи, которые уже есть (или будут) на этом сайте, дублировать не буду. Вместо этого буду выкладывать основные тезисы или ключевую идею + ссылку. Ещё продумал систему хештегов. Правда, выяснилось, что в Akkoma не предусмотрено возможности вывести список либо активных, либо избранных хеш-тегов. И ещё всё же решил создать отдельный аккаунт именно сообщества, в котором публиковать материалы, касающиеся самого сообщества и вопросов, кого можно называть идеалистами. Но до сих пор не могу решить, как лучше поступить — взять под сообщество отдельный VDS или поднять тариф на уже существующем. По деньгам это более-менее одинаково, но, как выяснилось, на том тарифе, который хочу взять, процессорное ядро дают всего одно, и не уверен, будет ли его хватать для всего. Сейчас иногда SiteKnockerBot выдаёт ошибки доступности, но вызваны они проблемами на основном VDS или тем, что не хватает ресурсов там, где стоит сам SiteKnockerBot из-за i2pd — не знаю.
Во-вторых, более-менее определился с мобильником. Как это ни странно, вернулся к выбору, сделанному ещё два года назад: Huawei P40. До недавнего времени мне казалось, что он уже устарел. Но поизучав ещё раз обзоры и характеристики, узнал, что там UFS 3.0 есть, и камера до сих пор обходит почти всё из того, что есть в приемлемом для меня ценовом диапазоне. Правда, аккумулятор не особо ёмкий. Но, как пишут в одном из обзоров, у Huawei очень хорошая оптимизация энергопотребления, за счёт чего это не такая уж проблема. Особенно с моей привычкой выключать передачу данных, когда в ней нет необходимости. Плюс отсутствие Google-сервисов, которые, как мне кажется, и являются одним из ключевых потребителей энергии в фоне. Но и тут тоже не могу определиться: то ли купить новый P40 на Ozonе (единственное место, где его ещё продают), то ли б/у P40 Pro через Авито. Второй вариант выглядит и дешевле (20-23 тыс. руб против почти 30), и привлекательней. Но покупать что-то с рук всё же страшно. Плюс ещё вопрос в том, насколько за прошедшее время успели деградировать аккумулятор и флеш-память.
Ещё вновь возвращаюсь к идее развернуть трансляцию своего блога: отправлять сообщения не с личного сайта в ЖЖ, а с ЖЖ на личный сайт. (Выражаясь в терминах IndieWeb, применять PESOS вместо POSSE.) По идее, это будет достаточно просто реализовать через IFTTT и протокол MicroPub аналогично тому, как сейчас сделано с Instagram. И в результате я получу возможность делать записи с телефона через ЖЖ-приложение, а также использовать ЖЖ-возможности типа репостов или ответов отдельным сообщением. Хоть я и негативно отношусь к идее писать длинные тексты с мобильника, но иногда это всё же бывает удобным.
В общем, определённостей прибавилось, но вот того ощущения, что «звёзды сложились» и пришло время действовать, всё ещё нет.

Запустил Akkoma

4X_Pro
Закончил настройку Akkoma на виртуальной машине. Как оказалось, пароль, который был нужен для Postgres, был прописан в файле docker-compose.yml. Дальше оставалось только решить проблему с получением https-сертификата. Сначала хотел идти традиционным путём: создать поддомен на VDSе, получить сертификат туда, потом скопировать его в виртуальную машину и прописать её адрес в файл /etc/hosts для соответствующего доменного имени. Но потом пришла в голову другая идея — пробросить порты 80 и 443 на VDS с ботами через SSH (сайтов на нём нет, поэтому эти порты свободны). Причём сделал это особо извратским образом: ssh запускал не внутри виртуальной машины, а на основной (чтобы не возиться копированием ключей от VDS в виртуальную), но с указанием адреса виртуальной в опции -R.
Но, как всегда, всё оказалось непросто. Почему-то ssh-сервер слушал порты только на 127.0.0.1, и никак не хотел открывать их на внешнем интерфейсе. Сначала я думал, что мешает Apache или firewall. Но дело оказалось не в этом. Оказывается, по умолчанию разрешено пробрасывать порты только на loopback-интерфейс, а чтобы пробросить на другие, нужно прописать в GatewayPorts clientspecified в файле /etc/ssh/sshd_config. После того, как это сделал, всё заработало, и я наконец-то увидел главную страницу Akkoma!
В целом впечатления остались очень даже положительные! Нет главного недостатка Mastodon: контринтуитивной кнопки ответа, которая не показывает форму, куда этот ответ писать, а перекидывает курсор в поле для нового сообщения в левом столбце. И размер сообщения легко выставляется в настройках. А интерфейс создаёт впечатление лёгкого и быстрого.
Поизучав статистику, обнаружил, что в Docker контейнеры с Akkoma (без учёта сервера Caddy) занимают около 400 Мб памяти. В общем-то не так уж и много. В этом случае можно даже не отдельный VDS брать, а поднять тариф на основном до 2 Гб оперативной памяти, и этого должно хватить! Более того, так ресурсы будут использоваться более рационально.
Единственное, что на данный момент не нравится — это невозможность увеличить форму ввода сообщения. И просто интерфейс довольно непривычный. Почему-то светлые темы смотрятся не очень, а вот тёмные — весьма хороши. Также перевод на русский неполный, но это, думаю, поправимо.
В общем, склоняюсь к тому, чтобы реально поднимать сообщество идеалистов на Akkoma. Но сначала поэкспериментирую на виртуальной машине, а то сейчас чувствую просто растерянность какую-то. Вроде площадка есть, но как начать заполнять контентом, что писать — непонятно, даже несмотря на то, что в своё время составлял масштабный контент-план.

Минус баг в IntB

4X_Pro
Мда, только что в IntB исправил очень нетривиальный баг: если у пользователя был одновременно статус и модератора, и эксперта раздела, то модераторские права в некоторых случаях просто не работали. Оказалось, что всё дело было в том, что при запросе, который загружал из базы данных информацию о правах доступа, я просто не прописал условие, что нужно грузить информацию только о статусе модератора, а не эксперта (проверку AND role=\'moderator\' в WHERE-части). Возможно, потому, что статус эксперта придумал чуть позже, уже после того, как написал ту часть кода.
Хорошо, что Keynol нашёл это на socionics.me и сообщил! А то так бы и ушло в версию 3.05.

Выпал из жизни на три дня

4X_Pro
Уехал на новую квартиру и на два с половиной дня выпал из жизни. Изначально думал, что вернусь в понедельник, после того, как доставят холодильник. Но проснувшись в тот день, зашёл на сайт и обнаружил, что доставку перенесли на вторник (и даже не удосужились прислать SMS с уведомлением, если бы не сообразил проверить сам, так и просидел бы весь день в ожидании). Пришлось оставаться ещё на день. Хорошо, что сейчас живу в режиме «до пятницы я совершенно свободен», и сделать это достаточно легко. За эти дни хотел было привести в порядок всё, кроме кабинета, из которого нужно как-то вывезти остатки стройматериалов. Двигалось дело очень медленно, успел гораздо меньше, чем рассчитывал, но тем не менее, пыль постепенно отступает.
Сегодня холодильник привезли, причём, по моим меркам достаточно рано. Но всё равно, пока распаковал его и протестировал, пока доделал всё остальное, домой поехал только в 17:40, когда было уже темно. И день, можно считать, прошёл мимо. А ночь просидел за компьютером — занимался тем, что я называю «догонять жизнь» после того, как по каким-то причинам долгое время не было возможности нормально посидеть в Интернете. Но в любом случае, теперь можно считать, что квартира готова к переселению.

Заметка в Instagram от October 31, 2023 at 07:04PM

4X_Pro
Всю вторую половину дня над Павловским Посадом — такой густой туман! Но сфотографировать его я сообразил только уже на станции перед отъездом.
#павловскийпосад #туман #поезд #железнаядорога #станция #ожиданиепоезда

Смотреть все фото

Про SMath и немного про мобильники

4X_Pro
Сегодня ходил к отцу на Пустую квартиру. Нужно было помочь ему с программой SMath. Это очень сильно упрощённый, но зато бесплатный российский аналог MathCadа. Когда шёл туда, думал, что это займёт минут 10-15: нужно было решить систему уравнений и построить график. Сначала всё казалось просто: задал две формулы, задал переменные с известными значениями, и вызвал функцию roots, которой передал матрицу, где приравнял одно к другому. Но почему-то эта функция выдала деление на ноль. Сначала думал, что ошибка где-то в формулах. Кучу времени потратил на перепроверку, использовал несколько разных вариантов, но без толку: ошибка никуда не уходила.
В какой-то момент стал уже верить, что решения не существует в принципе. Хотел было прорешать эту систему уравнений вручную, но потом бросил эту затею. Зато вспомнил про систему Wolfram Online. Возникла мысль попробовать решить в ней. Правда, давно ей не пользовался и уже забыл, как там и что, но благодаря подсказкам сообразил очень быстро. Скопировал уравнения из SMath (кстати, вставились на удивление правильно, только = нужно было на == заменить), запустил, и оказалось, что решение таки существует. Посмотрев, чему оно равно, задал в SMath начальное приближение, примерно равное значениям из Wolfram. И, о чудо, всё посчиталось! Дальше оставалось только построить график, но это заняло всего пару минут.
Видимо, дело было в нехватке точности для чисел с плавающей запятой: вместо при написании SMath где-нибудь использовали обычный float вместо double. Или просто криво реализовали численные методы.
В общем, получилось как всегда: провозился почти два часа и за остаток дня почти ничего не успел. Единственное, что сделал — это перепрошил мобильник (уже месяц как висела эта задача), после чего стал корректно работать WiFi. А вот датчик отпечатков пальца, похоже, умер окончательно и бесповоротно. Видимо, нужно всё-таки покупать новый телефон. Уже начал присматриваться, но никак не могу найти ничего похожего в приемлемом ценовом диапазоне. Либо камера хорошая, но медленный flash-накопитель, либо наоборот. Либо нужно всё же залезть немного в не свой ценовой диапазон, причём единственный подходящий телефон оттуда имеет очень плохой моно-динамик и не имеет 3.5 мм разъёма. Конечно, есть извращённое решение в виде переходника OTG=>minijack, но хотелось бы обойтись без подобного… В какой-то момент даже стал думать, не купить ли Asus Zen 8, бывший флагманом в 2021 году. Но и тут не без проблем: судя по отзывам, сильно греется (традиционная проблема ASUS), да и камера не очень.
И ещё вечером успел немного поэкспериментировать с установкой Akkoma. Вроде всё шло хорошо, но потом возникла сложность с тем, что автоматически то ли не создаётся пользователь для Postgres, то ли ему не выставляется пароль. На этом пока и застрял, будет время — вернусь и продолжу.

Первый снег

4X_Pro
Уже больше половины суток за окном идёт снег. Уже вся земля стала белой! В этом году он выпал на удивление рано, на деревьях даже ещё не все листья облетели. Редкое зрелище: ещё жёлтые листья на фоне белого снега! А ещё теперь легче будет переносить недостаток солнечного света и доживать до Нового Года.
Но и обратная сторона у снегопада тоже есть. Голова соображает хуже, спать хочется. Впрочем, последнее может быть от недосыпа в предыдущие два дня… Хочется уйти в себя, предаваться slow life и созерцать Внутреннее Безмолвие

Ремонт окончен

4X_Pro
Свершилось! Вчера в кухне выполнили последние работы, и я подписал акт приёмки. Так что кошмар под названием ремонт, можно официально считать оконченным! Впрочем, справедливости ради, замечу что кошмаром реально был только начальный этап — запуск и начальная закупка. Дальше всё шло вполне хорошо, и итогом я весьма доволен. Впрочем, неудивительно: мне повезло, что ремонт делали неравнодушные люди, которые искренне хотели сделать качественно. Приятно такое видеть! В наше время победившего баблорубства это встречается редко… Ради этого можно даже смириться с огромными тратами на доставки (наверное, 4—5% от стоимости всего ремонта ушло именно на них, позже посчитаю точнее).
Ещё теперь в квартире буквально всё покрыто строительной пылью, видимо, оставшейся от резки плитки. Теперь предстоит долго и нудно всё это протирать и убирать. А мой кабинет вообще превратился в какой-то строительный склад: от ремонта осталось 7 мешков неиспользованных материалов, с которыми непонятно что делать, а также полотенцесушитель (его так и не стали менять) и ещё некоторые мелочи. Теоретически их можно сдать обратно в магазин. Но до магазина их нужно как-то доставить. Но каждый мешок весит по 30 кг, поэтому даже на такси отвезти — проблема (их нужно как-то спустить из квартиры и погрузить в такси, а потом ещё и выгрузить у магазина). Ещё вариант — попытаться продать на Авито самовывозом за две трети цены, но слишком непредсказуемо, купят ли и когда именно.
Так что переезд из далёкой абстракции, в которую он превратился в июне, когда стало ясно, что с ремонтом всё затягивается, снова становится реальностью ближайшего времени и вызывает противоречивые чувства. С одной стороны, там гораздо лучше по почти всем параметрам. Но с другой у меня, как у человека, всю жизнь прожившего на одном месте, просто не укладывается в голове, как можно взять и уехать навсегда в совершенно другое место, где я вообще никого не знаю, пусть и с возможностью изредка возвращаться… С третьей — ведь это же возможность начать жизнь почти с нуля, этакий оффлайновый Рестарт (ещё бы и оффлайновое имя сменить, но слишком уж сложная это процедура).

Движок DIscourse и непростой выбор

4X_Pro
Несколько дней назад наткнулся на движок под названием Discourse. В первый момент он произвёл очень положительное впечатление тем, как сделан интерфейс. Возникла мысль сделать сообщество идеалистов на нём, поставившая меня перед сложным выбором.
С одной стороны, выбрав Discourse, я бы смог запустить сообщество в самое ближайшее время, причём с хорошим мобильным интерфейсом (то, что всегда будет «хромать» в моих собственных проектах), push-уведомлениями об ответах и удобной загрузкой файлов. И сделав, почувствовал бы себя свободным человеком, над которым не висит долгосрочное «надо», а который может заниматься своими проектами по настроению: есть желание что-то написать — делаю, нет — переключаюсь на что-то ещё без всяких угрызений совести и третьего Будущего. Примерно так же, как сейчас занимаюсь сайтами 4xpro.ru и socionics.me.
С другой — Discourse изначально позиционировался как форумный движок. Более того, некоторые люди (в частности, Yuri) считали его конкурентом IntB. Поэтому такой выбор в качестве движка для сообщества, фактически, означал бы капитуляцию, признание «я не справился сам, раз пользуюсь продуктами-конкурентами». А ещё он написан на весьма прожорливом Ruby, для которого пришлось бы либо арендовать отдельный VDS, либо существенно повышать тариф на уже существующем.
В общем, выбор был между «поражение, свобода и быстрый результат» и «достойный путь, гордость собой, долгий и нудный труд, и результат неведомо когда». Размышляя над этим выбором, не мог позавчера уснуть до 8 утра. А на следующий день (вчера) создал тестовый аккаунт на discourse.group и несколько разочаровался. Как выяснилось, Discourse (по крайней мере, коробочная версия) всё же не умеет работать в режиме именно сообщества (в духе Pikabu или какого-нибудь VC или DTF), когда текст каждого первого сообщения темы выводится в категории, работающей в режиме ленты. И мне не нравится ни один из режимов показа главной страницы. Да ещё открыл статическую страницу, свёрстанную ещё летом 2021 года, когда я начинал делать MLCE, и понял, что то, что я сделал тогда, мне нравится больше (если немного доработать), чем то, как выглядят темы в Discourse.
В общем, от идеи использовать Discourse всё же откажусь, скорее всего. Хотя есть мысль поступить неожиданно: взять и сделать fork Discourse, который будет ориентирован именно на создание сообществ, а не форумов.

Осень в её худших проявлениях

4X_Pro
Вот и началась осень в её худших проявлениях. На улице серо и мрачно, выходить не хочется от слова совсем. Из-за всего этого, видимо, упало давление, и весь день еле ползаю, всё из рук валится. Более-менее проснуться помог только горячий душ. Да ещё ночью долго не мог уснуть — не давал покоя вопрос, как быть с сообществом идеалистов. Но об этом напишу в отдельном сообщении, когда приду в более адекватное состояние.

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

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