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

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


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

t.me/4x_pro

Лог жизни

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


Домены и экономия

4X_Pro
Так сложилось, что больше всего моих доменов заканчивается в ноябре. В основном, это домены соционических проектов, которые я регистрировал в далёком-далеком 2008 году. Тогда и денег было не жалко, и стоили они всего по 89 рублей. Потом наступил кризис 2014 года, и регистраторы стали считать партнёрские тарифы не по сумме всех совершённых платежей, а по обороту за последний год. Тогда я перенёс домены к Reg.Ru, чтобы в обороте учитывались платежи и за домены, и за хостинг. Какое-то время это было терпимо, но потом регистратор пошёл ещё дальше: стал считать партнёрский тариф не за год, а за полгода. А в первой половине года у меня доменов мало (по-моему, только 4xpro.ru, xxxxpro.ru, openproj.ru и socionics.me). И получается так: на вторую половину года устанавливается более дорогой тариф, и приходится продлевать домены по нему. А на первую — более дешёвый, но доменов слишком мало, чтобы этим воспользоваться.
В итоге задумался над вопросом, нельзя ли продлевать дешевле. Решил уйти в beget.com, там продление стоит всего 289 руб вместо 450 в Reg.Ru на моём тарифе. (UPD: как выяснилось, если доменов будет 11 и больше — то и ещё дешевле, так что сейчас нужно готовить вторую волну переноса.) Но оказалось, что перенос — платный и стоит 150 руб. В итоге экономия составит в этот год всего 11 рублей… Но тем не менее, перенос я всё же начал. Возни, правда, очень много: на Beget нет пакетной операции по приёму, для каждого домена приходится вводить Auth-код передачи, паспортные данные и подтверждать через Email.
Но в любом случае, вот в чём позитивная сторона кризиса: он заставляет искать варианты экономии там, где прежде было желание отмахнуться «ну и ладно, это несущественно».

Бессоница и возвращение к давнему проекту

4X_Pro
Опять приступ бессонницы по схеме «проспал один цикл около полуночи, потом не могу уснуть до утра». Но зато решил внезапно свалившуюся проблему. Обновился интерфейс ВК, и с новыми элементами (в частности, списком друзей) не работало моё расширение VKpph для выделения приватных профилей. Пришлось срочно исправлять. Сначала думал, нужно просто добавить одну строчку с нужным CSS-селектором, но оказалось, что не всё так просто: список друзей появляется с задержкой, из-за чего происходит несколько запросов подряд с превышением лимита обращений к API. Пришлось сделать небольшой «костыль» — задержку перед самым первым обращением, чтобы успели отрисоваться все элементы на странице. А «костыльность» заключается в том, что время задержки пришлось подбирать по ЧЛ-ному, без каких-либо обоснований, лишь бы работало.
Эх, как же плохо жить в постоянно меняющемся мире! Сидишь, и вдруг внезапно прилетает такая вот проблема, которую нужно срочно решать. В то время как интерес к этому проекту закончился ещё с публикацией какой-нибудь версии 1.0.4.

Русофобия в IT

4X_Pro
Позавчера наткнулся на CMS под названием Concrete5. CMS мне понравилась, поэтому закинул ссылку на неё в раздел «Интересные материалы», откуда она автоматически ушла на Lor.sh. Вчера захожу на Lor и вижу два негативных комментария к этой записи, в одном из которых утверждается, что в CMS есть закладки от ФСБ. Удивившись, прошу кинуть ссылку, откуда это стало известно. На что получаю просто эпичный ответ: «если у этого официальный сайт в зоне .ru, значит, это говно, с которым не стоит связываться». Сначала попытался ответить этому придурку на тему необоснованных обобщений, потом просто его забанил.
Но это — не единичный случай. На Хабре в комментариях от всяких privacy-озабоченных что-то подобное я видел не раз, и по отношению к доменам в зоне .ru, и по отношению к хостингу на территории России. Один тип вообще рассказывал о том, что ВЕСЬ траффик гоняет через свой VPN-сервер в Финляндии. Я даже хотел его потроллить на тему «и как играется с таким pingом в какой-нибудь CS, Quake или WoT». Эх, надеюсь, что подобные личности свалят сейчас за границу, а обратно если их и будут пускать, то только со штампом «Враг народа» в паспорт и отношением как к гражданину 6-ого сорта в последующем.

Момент истины или снова дома

4X_Pro
Сегодня закончилось Отселение 3.1, и я вернулся домой! Наконец-то смогу нормально выспаться!
А ещё наступает момент истины: пришло время принимать решения по ряду вопросов. Во-первых, как быть с покупкой компьютера — покупать новый, покупать б/у или вообще убедить себя, что ещё год-два обойдусь без обновлений. Во-вторых, по операционной системе — переходить на Manjaro или Arch или нет. Ещё допускаю вариант перехода на Debian testing, где всё почти как в Ubuntu, но софт достаточно новый. Но с другой стороны, без rolling release это будет временное решение, и через несколько лет снова начнутся проблемы с устареванием. В-третьих, если переходить, то какую файловую систему использовать — остаться на ext4 или перейти на NILFS (которая мне субъективно кажется существенно более быстрой, хотя, возможно, это верно только для флешек) или вовсе на brtfs. Кстати, про последнюю попалась статья, что в Linux 6.1 она даёт очень ощутимый прирост производительности.
Ещё кручу в голове идею поднять где-нибудь какую-нибудь Web IDE, чтобы иметь возможность работать над своими проектами с любого компьютера, даже чужого. А также поднять файловое облако на NextCloud для хранения файлов вместо синхронизации скриптом через rsync, как сейчас. Но тут всё упирается в то, можно ли поставить лимит на размер синхронизируемых файлов.

Эксперименты с frameworks

4X_Pro
Вот и я попался в ловушку убеждения, что если проект долго не обновляется, то с ним лучше не связываться. Попалась недавно на глаза информация о CodeIgniter 3 — очень лёгком frameworkе, который по затратам для страницы Hello World вполне сопоставим с моей TextCMS: что-то около 600 Кб памяти при первом запуске и 450 Кб при последующих. Причём код организован во многом так же, как я хотел сделать у себя. Как я говорю в таких случаях, «framework совместим с моим мышлением». Только нет встроенных обработчиков событий.
В какой-то момент я задумался, а не воспользоваться ли им для создания каталога сайтов. Но потом узнал, что уже давно вышла 4-ая версия, которая куда более тяжёлая прожорливая (тот же Hello World занимает 1.8/1.7 Мб). В итоге я в какой-то момент решил, что с третьей связываться смысла нет, и стал экспериментировать с другими frameworkами. Наткнулся на Fuel. Он тоже произвёл положительное впечатление, но на сайте с 2019 года никакой активности. Затем был Slim. Вроде и нормальный, но не нравится, как сделана работа с объектами Request и Response. Потом попробовал Lumen, Nette, CakePHP, но они все слишком прожорливые — даже банальный Hello World уходит за 1 Мб памяти, что для меня не вариант. (Хотя Nette — весьма симпатичный вариант для проектов, где нужен шаблонизатор.)
Ещё противоречивые впечатления остались от Yii. Он потребляет больше CodeIgniter (890 Кб), зато есть авторизация «из коробки», и хуже совместим с моим мышлением (кроме работы с формами — в Yii она лучше соответствует моим представлениям). Но там ситуация аналогичная: я тестировал первую, и узнал, что уже появилась вторая версия, которая требует ни много ни мало PHP 8.0.
И вот теперь оказался перед сложным выбором. То ли вернуться к идее писать свой framework на основе кода для MLCE, как и собирался изначально (плюс в процессе возник ряд новых идей, как сделать конфигурацию более гибкой), то ли сделать каталог сайтов на CodeIgniter 3 для экономии времени. Тем более, как выяснилось, иногда обновления к версии 3 ещё выпускаются.

Дно реки жизни и «дребезг»

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

Отселение 3.1

4X_Pro
Снова уехал в Отселение, в то же самое место и по тем же самым причинам, что и в августе. Поэтому решил назвать его не четвертым Отселением, а Отселением 3.1. Причём уехал на день раньше, чем собирался изначально, и собирался в сильной спешке. Но вроде ничего важного не забыл. Только внешний монитор решил в этот раз не брать — уехал всего на неделю.
Ещё есть мысль воспользоваться тем, что в жизни затишье, и устроить себе период полуоффлайна (тем более, тут сейчас проблемы с Интернетом и приходится подключаться через мобильник) и медленной жизни, как в мае: читать книги, размышлять и медитировать, и радоваться, что не нужно заставлять себя успевать к определённому сроку. Но с другой стороны, продолжают крутиться мысли о том, чтобы начать делать свой framework и скрипт каталога сайтов на нём.

Ещё один парадокс

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

Третья неудачная попытка купить компьютер

4X_Pro
Хе-хе, уже третий раз сталкиваюсь с тем, что стоит задуматься о покупке компьютера, как начинает происходить что-то из ряда вон выходящее. (Первые два были в феврале 2020 и феврале 2022.) Вот и сейчас уже почти принял решение купить всё-таки новый компьютер, а не б/у, как хотел раньше. Даже собрал конфигурацию компьютера-мечты в корзине Яндекс.Маркета и обнаружил, что вылез за верхнюю границу изначального бюджета всего на 12 тысяч (и это с учётом покупки видеокарты RTX 3060, правда, вместо полносьтью пассивного блока питания Seasonic решил взять полупассивный от Corsair, но помощнее). Хотя ещё рассматривал вариант отказаться от возможности апгрейда в будущем и взять матплату и блок питания попроще, чтобы уложиться в изначальную психологически более комфортную сумму, но потом решил что нет, не стоит на этом экономить.
А сегодня и цены вверх прыгнули, и упал рынок акций. Так что видимо, всё же придётся покупать не компьютер, а акции.

О скрипте каталога и фреймворке для него

4X_Pro
Во время последнего заезда на дачу обдумывал, как сделать свой скрипт каталога сайтов. Вернулся к тому, о чём думал во времена начала работы над IntB 3.x в 2007 году — хранить все сущности, которые могут быть выведены в виде Web-страниц, в одной таблице: сами сайты, категории, подборки по формату сайтов, пользовательские подборки, вспомогательные фильтры, теги и т.п. По сути, у всего этого атрибуты одинаковые: название, описание, HURL, владелец, основной текст, дата создания и последней модификации, а также поле для сериализованных специфических атрибутов. Но в отличие от IntB, где предполагалась чисто иерархическая структура, предусмотреть таблицу для возможности связывать сущности произвольно. К тому же, как выяснилось, современные версии MySQL и Postgres позволяют хранить такие атрибуты в виде JSON с возможностью выборки по атрибутам внутри JSON и даже создавать по этим атрибутам индексы!
Потом мысль пошла дальше — решил сделать собственный микрофреймворк, взяв за основу тот код, который я писал для движка MLCE в прошлом году. И потом на нём реализовать и каталог сайтов, и мобильное сообщество, и, возможно, в дальнейшем вернуться движку для сообщества идеалистов, только переделать его на SQL вместо MongoDB. Но потом застрял на вопросе, использовать ли namespaces и загромождать код противоестественными конструкциями вида \MLFW\App\Router или \MLFW\Models\Entity или писать в духе CMS двухтысячных, используя namespaces только для указания путей, где искать необходимые классы (то есть Models\Entity или Templates\MainPage).

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

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