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

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


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

t.me/4x_pro

Лог жизни

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


День полуоффлайна

4X_Pro
Вчерашний день оказался довольно эффективным: убрал ёлку (впервые без участия отца), побегал на дорожке, отправил декларацию по УСН. Наконец-то для её подписания не надо перезагружаться в Windows! Ещё прочитал кучу материалов на Дзене и неплохо поиграл в HearthStone. В общем, делал всё, кроме того, что нужно по плану: сайта для Л.Кст. и краткого введения в информионику. Только спать лёг снова поздно: никак не мог закончить всё, что собирался, в частности, очень долго мыл посуду.
А сегодня утром проснулся в состоянии какого-то ухода в себя, когда делать ничего не хотелось от слова вообще. Просто ушёл в себя и так и сидел несколько часов. Потом ненадолго вышел прогуляться по району, сфотографировал ели, красиво присыпанные снегом. Но вынужден был скоро вернуться обратно. Потом сидел в оффлайне, читал книжку, играл в Walk Master (и прошёл ещё две тропы), Heroine's Quest (тоже неплохо продвинулся). И только вечером вернулся в Сеть.

Децентрализованные соцсети и Wordpress

4X_Pro
Ситуация с идеям, о которой писал в прошлом сообщении, продолжается. Видимо, минимум по интеллектуальному биоритму наложился на максимум по интуитивному.
В частности, ночью пришла ещё идея: написать plugin для взаимодействия с Mastodon и прочими сетями на протоколе ActivityPub для Wordpress. Для начала хотя бы такой, который позволяет просто подписываться и транслировать записи блога в Mastodon.
Но получилось как всегда: сразу не приступил, а лёг спать дальше. Утром же, когда встал, идея казалась не столь привлекательной. Плюс куча всего отвлекала от основного замысла. В итоге только к вечеру поставил на поддомен WordPress и настроил https на хостинге, где стоят мои старые сайты. Причём провозился по очень глупой причине: настраивая поддомен, сразу включал в настройках https, а уже потом пытался получить сертификат от Let's encrypt.
Когда всё сделал, на всякий случай решил поискать, а нет ли готового plug-in. Как выяснилось, есть! Эх, и тут меня опередили!
Поставил. Вроде работает, но кнопки «Подписаться через Mastodon» или чего-то подобного не появилось. И тут я чуть не сломал мозг, как сделать это в самом Mastodon. Полез в раздел «Подписки и подписчики», но там были только действующие подписки, без кнопки «Добавить новую». Облазил весь интерфейс, долго ругался, и только после этого обратил внимание на подсказку в строке поиска, что туда можно вводить не только ключевые слова, но и URL. Ввёл адрес поддомена и всё получилось! Сейчас вижу в ленте сообщения из блога WordPress. Нужно ещё попробовать подписки на отдельные категории.
Ещё узнал, что для Wordpress есть plug-inы, добавляющие функциональность соцсетей. Если их доработать на поддержку получения данных из Mastodon, то получится примерно то, как я представляю себе децентрализованную сеть из личных сайтов! К тому же узнал, что в Wordpress с версии 3.x можно создавать свои типы сообщений, а не только обычные записи в блоге.
Всё это поставило меня перед непростым выбором. С одной стороны, я всегда хотел делать децентрализованную соцсеть на своём собственном движке. С другой — если взять Wordpress за базу, то это может значительно поспособствовать популяризации децентрализованных соцсетей среди блоггеров. А именно с их среды, на мой взгляд, и может начаться уход от традиционных соцсетей.

Очередной биоритмический минимум

4X_Pro
Опять биоритмический минимум. Причём довольно странный:новые идеи появляются, но вот реализовывать их не получается совершенно. Сегодня еле-еле написал заметку про этапы развития Интернет-площадок в раздел «О Сети и о жизни», а также придумал ещё одну тему для Дзен-канала.
Днём ещё хотел было сходить прогуляться, пользуясь тем, что после двух недель серости выдался солнечный день, но увы, реально выбрался только вынести мусор. Зато вечером удачно сыграл в HearthStone, одержав несколько побед подряд за Охотника.

Тягостные дни

4X_Pro
Последние два дня были какими-то очень тягостными. Всё из рук валилось, как в прямом, так и переносном смысле, особенно вчера (вернее, уже позавчера). Сегодня с утра вроде всё было нормально, но ближе к вечеру опять начала ерунда творится. В частности, сильно глючило SiteKnockerBot, не хотел обновляться Windows и ещё много чего шло не так. Да ещё был момент, когда голова не соображала, мир воспринимался как сквозь мутное стекло. И только где-то около 21 часа всё резко стало налаживаться. А с ботом оказалось, что я загрузил версию, которая делает проверку в 100 потоков одновременно. Когда вернул на обычные 30, да ещё сделал их запуск с небольшой задержкой, всё заработало нормально.
Интересно, в чём тут дело? Погода (сегодня начался сильный снегопад), магнитные бури, биоритмический спад?

Броузер Beaker и Старый Добрый Интернет

4X_Pro
Пару дней назад с подачи 10geekа узнал про броузер Beaker. Его главная особенность — поддержка P2P-протокола Dat, позволяющего децентрализовано хранить данные и хостить сайты. Идея меня заинтересовала. Возникла мысль, что именно в подобных сетях может сохраниться (или наоборот, возродиться) дух Старого Доброго Интернета, так как там выполняются два необходимых для этого условия: 1) требуется хоть какой-то уровень знаний и заинтересованности, чтобы воспользоваться, что отсекает совсем уж обывателей, 2) сведена к минимуму возможность коммерциализации, благодаря чему там не будет баблорубов. В итоге есть шанс, что там сформируется сообщество технически продвинутых идеалистов-бессребреников, как это и было в старом Интернете. Кроме того, протокол подразумевает децентрализованное хранение данных, благодаря чему можно не боятся исчезновения сайта из-за непроплаченности хостинга или домена.
Под впечатлением от этого сделал статическую версию своего сайта и разместил там. Но увы, оказалось, что там нет ни чего-либо вроде каталога сайтов, ни тем более поиска. И попасть на такой сайт можно только по точной ссылке. Поэтому такая система больше подходит в качестве средства быстрого расшаривания данных, чем как альтернатива привычному Интернету. Впрочем, есть ещё проект HashBase.io, куда можно выложить копию сайта на хранение, и где что-то вроде каталога есть. Но при попытке это сделать что-то пошло не так. То ли влияет то, что я за NATом сижу, то ли что-то не работает как надо в самом Beaker.

Опять переделываю SiteKnockerBot

4X_Pro
Несколько дней назад попытался переделать SiteKnockerBot для Telegram. Хотел сделать количество работающих goroutines управляемым, для чего запускать нужное их количество при старте бота, а затем передавать им данные о сайтах для проверки через канал. Но увы, такой вариант почему-то оказался даже хуже того, что есть сейчас. Во-первых, медленнее: 1600 сайтов проверяются почти 40 секунд, во-вторых, после пары проверок падает из-за нехватки оперативной памяти. Пришлось вернуть всё как было. Хорошо хоть не забыл сделать резервную копию исходника (к gitу себя приучить по-прежнему не могу).
Сегодня решил пойти другим путём: переписал простукивающую часть для Node.JS. Но увы, результат оказался ещё хуже. Во-первых, полная проверка всех сайтов в списке занимает куда больше времени, чем на Go. Во-вторых, потребляет чуть ли не всю доступную оперативную память.
Расстроившись по этому поводу, вернулся к версии на Go. Но решил ещё раз посмотреть исходный код версии с каналами и нашёл причину утечки памяти! У меня resp.Body.Close() вызывалось через defer. Но если в старой версии каждая goroutine заканчивала работу после проверки одного сайта, то в новой был бесконечный цикл с чтением данных из канала, поэтому resp.Body.Close() просто никогда не вызывалась. В итоге убрал defer и стал закрывать и занулять resp.Body сразу после преобразования в строку. И теперь бот заработал как надо! И вроде ушла ошибка с DNS, из-за которой и начались все эти переделки. Только пришлось количество потоков параллельных проверок сократить до 25, из-за чего количество проверяемых сайтов за цикл сократится всего до 20 тысяч.

Дзен-канал: рейтинг растёт

4X_Pro
В понедельник со страхом заходил на Дзен-канал, ожидая, что карму ещё понизят, так как на прошлой неделе была всего одна публикация. Каково же было моё удивление, когда обнаружилось, что она подросла. Почему-то Дзен поменял мнение об уникальности и качестве материлов: теперь оценивает их на 11 и 7 соответственно. И теперь канал занимает 2651 место среди 361958 новичков! То есть результат получается выше 99%!
Тогда же я начал писать ещё одну статью, и написал первый вариант в бумажном виде. Сегодня хотел набрать на компьютере, но по разным причинам не сложилось. Но, думаю, до конца недели всё же сделаю.

Первый день Нового года — 2021

4X_Pro
Впервые за последние лет десять сумел проснуться первого января раньше полудня, если конкретно, в 11:30. Причём проснулся на удивление бодрым! Хотел было воспользоваться этим и отправиться на прогулку, как в далеком то ли 1989, то ли 1990 году, когда прогулка запомнилась и принесла кучу позитивных эмоций. Но выйдя на улицу, обнаружил, что там всё серо и мрачно, и даже в середине дня кажется, будто сейчас вечер. А ещё ночью прошёл ледяной дождь и улицы превратились в самый настоящий каток. Ходить приходится примерно в такой позе, в которой герой Quest for Glory ходит в режиме stealth. Поэтому вместо прогулки ограничился выносом мусора на ближайшую помойку.
Потом вернулся домой, посидел какое-то время, занимаясь мелкими доделками IntB. Затем стал смотреть розыгрыш «Русского лото», билеты которого получил от отца в качестве новогоднего подарка. Увы, это оказалось не самой удачной идеей. Обычно розыгрыш длится где-то минут тридцать, а в этот раз растянули на полтора часа, да ещё с кучей рекламы. Знал бы, что так будет, просто посмотрел бы результат в Интернете вечером, да и всё. Где-то к началу третьего тура обратил внимание, что во всех трёх билетах есть числа 52, 72 и 87, и в голове проскочила мысль, что либо 52, либо 72 точно не выпадет. Так и вышло: невыпавшим оказалось число 72.
Остаток дня всё равно прошёл мимо. Во-первых, снова навалилась усталость и ни на чём не мог сосредоточиться. Затем пришёл отец, помог убрать стол и забрал часть лишней еды, оставшейся от НГ. Потом в какой-то момент я просто заснул. Потом сыграл в HearthStone и сел писать это сообщение. Так и прошёл этот первый день года…

Новый год в Сети, часть четвертая — прогулка

4X_Pro
И вот наступил Новый Год. Наступил он как-то криво: такое ощущение, что с обращением президента промахнулись по времени на полминуты. Когда он говорил последние слова, на часах уже было 0:00. Сначала я думал, что это на планшете криво выставлено время, но всё же решил отправить сообщение «С новым годом всех, кто сейчас в Сети» на стену ВК и на этот сайт, и на серверах и там и там время отправки тоже оказалось 0:00. А бой курантов раздался чуть ли не в 0:01.
В этом году я решил дней оффлайна не устраивать. Как-то не чувствую в них больше необходимости. Да и годы с ними оказались весьма и весьма неудачными. Правда, поздравлять всех подряд из списка друзей, кто оказался сейчас в онлайне, как делал это раньше, тоже не стал.
Как обычно, первый час года пролетел очень быстро и незаметно. Всё, что запомнилось — это ощущение облегчения по поводу того, что такой тяжёлый год остался позади! Потом я всё же отправился на прогулку. Прогулка получилась очень короткой, дошёл только до Зелёного проспекта, посмотрел на фейерверки. Но даже несмотря на её краткость, был момент, когда всё же удалось почувствовать всеобщее новогоднее настроение и подзарядиться им!
Когда вернулся домой, почувствовал себя уставшим и переевшим. И раздражался на отца, что он опять столько наготовил, и теперь нужно как-то распихивать это по холодильнику. Причем мясо поставил готовить за 30 минут до НГ, когда уже стало ясно, что и так все переели. Ну почему нельзя встречать НГ по-европейски, чтобы на столе было немного закусок, бокал вина или шампанского (или даже чего-то безалкогольного, так как после COVID алкоголь переносится ощутимо хуже) и свеча?
Ну а сейчас сижу один в комнате, слушаю, как за окном постепенно затихает «пальба» и наконец-то осознаю, что всё, старость года позади! И реально начался новый год, а с ним — новые надежды и удлинение светового дня! И пожалуй, сейчас пойду спать, чтобы свести к минимуму нарушение режима дня.

Новый Год в Сети, часть третья — последний час

4X_Pro
Пошёл последний час 2020 года. Настроение какое-то странное: особой радости нет, скорее удивление «как, это наконец-то закончилось?» И ещё сонливость. Смотрю в окно на соседние дома. На удивление много тёмных окон! Но зато и гирлянд много, что радует!
Задумался над вопросом, а что же загадать в качестве желания… Сначала в голове была пустота: всё, что приходило в голову, казалось недостаточно важным. Но поразмышляв 15 минут, всё же смог сформулировать три главных желания года на следующий год.
Вообще, в этом и есть одно из ключевых предназначений Нового года: подвести итог и задуматься о главном. Иными словами, заглянуть в Вечность, которой в наше время слишком мало внимания уделяется… Слишком люди на сиюминутном сосредоточены.
Еще понял, что в этом году забыл о своей традиционной предновогодней прогулке. Обычно числа 29—30 отправляюсь на длинную прогулку в парк, где вспоминаю об уходящем годе. Но в этом году как-то не сложилось… Ещё хотел перечитать записи с прошлого НГ, но увы, пока писал это сообщение, прошло полчаса, и теперь уже просто не успеваю.
Ну что же, это, наверное, моя последняя запись в этом году. Следующую напишу уже непосредственно после НГ!

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

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