Портрет 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 года.


Сделал генератор RSS для MLFW

4X_Pro
Вчера (вернее, уже позавчера) доделал генератор RSS для своего фреймворка MLFW. Правда, пока в самом базовом варианте, только обязательные поля. Остальное буду добавлять потом, по мере необходимости. Как всегда, в процессе пришлось кое-что переделать и в других модулях. А ещё пришлось сделать его наследником класса HTML, а не Basic, как предполагалось изначально. И наконец-то протестировал идею «единый action для подготовки данных — несколько layoutов для разных типов вывода» именно в том виде, в котором задумывал изначально, на этапе проектирования MLFW. Идея себя оправдывает!
Но по-прежнему ужасаюсь объёму работы, который предстоит ещё проделать, чтобы довести до ума хотя бы гостевую книгу на MLFW.

Вышел из минуса

4X_Pro
Ещё одна хорошая новость: впервые закончил неделю с общим положительным результатом по инвестициям в целом, даже с учётом минусов по облигациям и ETF. Так что жизнь налаживается понемногу.

Заметка в Instagram от August 10, 2023 at 09:08PM

4X_Pro
Сегодня устроил день информационной разгрузки. Сначала пару часов делал на прежнем этаже, отключив все каналы связи, и просто перерабатывая накопившиеся за последнее время впечатления. Потом немного посидел в медитации.
Потом отправился на прогулку. Увы, начиналась она не очень хорошо: на пляжном полуострове возле самого большого водоёма расположились какие-то обыватели, включившие музыку в машине так, что её было слышно на некомфортном уровне более чем за километр (потом специально по Яндекс.Карте померил). Как у них от нахождения рядом с таким источником звука мозги через уши не вытекают — загадка. Видимо, нечему. Или просто связь с собой настолько нарушена...
Из-за этой звуковой атаки пришлось несколько скорректировать планы, и уйти дальше, чем собирался изначально. Только когда уровень громкости снился до приемлемого, я смог спуститься и посозерцать вечернюю реку.
#вечерняяпрогулка #вечер #вечерняярека #лето2023 #клязьма #закат

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

Жизнь налаживается

4X_Pro
Жизнь понемногу налаживается. В воскресенье выбрались с Tellой в Ногинск, в этот раз посмотрели городской парк. А ещё Tella подарила мне две компьютерных игры на Steam: Life and Suffering of sir Brante и Tale of Two Kingdoms. Изначально она планировала подарить только одну, но тут очень удачно случилась распродажа с падением цены более чем вдвое, поэтому на разницу удалось купить и вторую. Скачал сегодня обе игры, и даже немного поиграл в Tale of Two Kingdoms. Давно хотел это сделать, так как её делала та же фирма, что делала и Heroine's Quest. И в целом игра по духу и оформлению во многом похожа!
Также обновил сегодня Twig в Intellect Board. Теперь исчез этот глюк с пробелами. Да и под 8.2 всё работает более-менее нормально, только выдаёт много warnings про то, что динамические свойства класса теперь deprecated, и нужно от них избавляться. По-хорошему, надо бы собрать новый release, но это нужно доделать кураторов темы и создание баз под PostgreSQL и SQLite в инсталляторе, и фотогалерею. А работа над MLFW сейчас важнее.
К самому MLFW тоже удалось вернуться вчера. Всё-таки большие перерывы — это плохо. Где-то час ушёл просто на то, чтобы вспомнить, что к чему, на чём я остановился и т.п. По-хорошему, нужно заниматься каждый день (с редкими перерывами на один день типа настолок или поездок). Но для этого нужно сделать, чтобы ничего не происходило, чтобы не сносило потоком жизни. Но как это сделать — увы, непонятно. Эх, вечная моя мечта: возможность ставить Интернет на паузу. (Ну или более реалистичный вариант — уйти «с головой» в yggdrasil и i2p-сети, там как раз поток новой информации очень небольшой.)

Лето проходит…

4X_Pro
Уже почти треть августа позади! А казалось, что он только-только начался… В природе пока что не чувствуется каких-либо отличий от июля, кроме разве что того, что темнеет раньше, и на берёзах кое-где появились отдельные жёлтые листочки. Но изменилось главное — появилось ощущение того, что скоро всё это закончится…
В этом году это вдвойне неприятно, потому что так и висит нерешённым вопрос переезда в Область. И успею ли я решить его до октября — неизвестно. А оставаться на зимовку в Москве — как-то очень печально…
Одно только радует: ночное небо стало темнее, и теперь гораздо лучше видны звёзды! Созерцаю их по вечерам, это успокаивает и возвращает внутреннюю гармонию.

Неудачный день

4X_Pro
Опять день начался с телефонного звонка в непотребное время (10 утра). В итоге не смог уснуть, и день прошёл почти мимо. Весь день был очень усталый и злой, ругался со всеми. Поставил последнюю точку в переносе сайтов (удалил старый сервер и ключи доступа от него), ответил на пару Emailов и прошёл ещё одну карту в Starcraftе (и то сделал это очень криво и с огромными потерями).

Солнечная вспышка

4X_Pro
Уфф, наконец-то в очередное «уплотнение жизни» заканчивается и намечается период затишья. Закончил с переносом сайтов и более-менее исправил появившиеся из-за этого проблемы (кроме той, которая связана с Twigом), растолкал freelance-задачи, наконец-то ответил Stargrave. Но потом началось что-то странное: вечером сходил на мини-прогулку, посмотрел закат. Пришёл домой и буквально сразу вырубился на час, а когда проснулся, болела голова и всё злило. И только около двух часов ночи узнал причину, посмотрев приложение Space Weather. Оказывается, на Солнце была вспышка класса X1.6, что очень и очень много!

Заметка в Instagram от August 05, 2023 at 12:18AM

4X_Pro
Сегодня (вернее, теперь уже это вчера) какой-то глючный день. Не выспался и всё валилось из рук. Сел было за компьютер, но ничего сделать не смог — на ровном месте возникли проблемы с входом на сервер. Через какое-то время решил всё отложить и поехать на велопрогулку в лес.
Но и во время прогулки сначала переживал, что в этом году упустил ягодное время: и землянику, и малину. Землянику — потому что в это время был в Москве, а малину — из-за проблем с переселением. Впрочем, одну ягоду каким-то чудом всё же удалось найти и сфотографировать!
Но потом, посидев немного в том самом сосновом бору, успокоился и вернулся домой довольный. Всё же нужно хотя бы раз в десять дней выбираться на длинную прогулку на природе в одиночестве.
Но когда вернулся домой, всё снова стало по-прежнему. Помогли только старые компьютерные игры, а еесли конкретно, Rockman IV на эмуляторе Dendy. Только поиграв в него, успокоился и смог всё доделать, что собирался.
#малина #лето2023

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

Очень нервный день

4X_Pro
Ну и денёк сегодня! Началось всё с того, что проснувшись, я обнаружил несколько уведомлений от SiteKnockerBot, что перенесённые вчера сайты либо работают медленно, либо есть разовые перебои с доступностью. Решил, что проблема в каналах у хостера и начал было жалеть о том, что переехал к нему. Но на всякий случай решил зайти на сервер и глянуть, всё ли в порядке. Оказалось, что нет! Загрузка процессора была на уровне 90-96%.
Стал разбираться, и выяснилось, что когда техподдержка хостинга разблокировала сегодня утром SMTP-порт (он разблокируется только по заявке), начал работу антивирус clamav, который я поставил вместе с Hestia просто так, на всякий случай. Именно он и загрузил процессор так сильно.  Я попытался остановить его через панель, потом — через systemctl, но безрезультано. В итоге разозлился и пошёл на крайние меры — apt purge. После этого и бот перестал сообщать о проблемах, и сайты визуально заработали быстрее.
Днём занимался настройкой почты. Теперь у меня всё по уму: почта с DKIM, DMARK и нормальным SSL-сертификатом от Let's Encrypt. Ещё обнаружил, что переход на новую версию PHP вызвал очень странный глюк Twig: он стал в каких-то случаях «съедать» пробелы возле конструкций {{ выражение }}. В частности, так случилось с формой ввода комментариев, из-за чего она стала отображаться некорректно: склеились два имени CSS-классов. Пришлось сделать жуткий костыль вида {{ ' ' }}, до которого додумался не сразу.
Вечером на связь вышел Corsico и сказал, что его сервер стал тормозить. По описанию было похоже на перегруз канала. Захожу на сервер, запускаю nload, и оказывается, что так и есть: исходящий траффик — 130 Мбит/с. Запускаю netstat и вижу большое количество соединений, большинство из которых нулевые (локальное обращение от nginx к Apache), но есть и к каким-то внешним адресам с просто огромным количеством переданных данных. Смотрю адреса через WhoIs, они разбросаны по всему миру: Бельгия, Канада, Вьетнам, Корея, Китай и ещё какие-то страны. Посовещавшись с Corsico, решили как всё подозрительное перебанить.
Я написал однострочник, который выводил наиболее активные соединения, и начал прописывать правила в iptables. Писать какие-либо скрипты в такой горячке не было возможности, поэтому просто перебанили ботов руками, благо их оказалось всего около трёх десятков (точнее, в двух случаях я забанил целые подсети). После этого загрузка канала снизилась до 10-20 Мбит/с, что вполне обычно для этого сервера.
Пока этим занимались, случилась ещё одна неприятность. Для ускорения процесса я переключился с роутера, где Интернет безлимитный, но медленный, на мобильник в режиме точки доступа. Но через какое-то время телефон просто вырубился. Я сначала подумал, что он разрядился, поставил на зарядку. Но даже через полчаса обнаружил, что не могу его включить. И уже был решил, что телефон помер, не дожив несколько месяцев до плановой замены (она намечена на конец октября или ноябрь). И только сейчас, спустя несколько часов, мне удалось заставить его зайти сначала в recovery-режим, а потом и загрузиться нормально.

Великое обновление состоялось!

4X_Pro
Великое обновление состоялось! Сегодня создал новый сервер на TimeWeb.cloud, поставил туда Hestia в качестве панели управления и весь остаток дня переносил свои сайты. Только сейчас закончил (и то ещё не протестировал socionics.me — обновляется DNS). В целом переезд прошёл хорошо, но всё равно под вечер устал так, что болела спина. Зато как следует на новом сервере теперь порядок! Всё аккуратно разложено по каталогам, соответствующим названиям доменов. И вообще, пересмотрел свои владения, проверив те проекты, на которые давно не заглядывал, типа tabshulte.4xpro.ru или 2seconds.4xpro.ru. Хотя мелкие глюки кое-где вылезают ещё, в частности, на этом сайте какие-то проблемы с формой комментариев. Ещё ошибся при переносе sociomodel.ru — забыл прописать его в список доменов, поэтому открывалась страница-заглушка, но это своевременно отследил SiteKnockerBot.
С https решил следующее: хоть я и считаю идею бездумного шифрования всего и вся неоправданной, всё же поддержку https у себя сделаю, но без принудительного редиректа. Пусть каждый сам решает, нужно оно ему или нет. Плюс так сайты останутся доступными для тех же downgraderов или в случае каких-то глобальных проблем с сертификатами. Кстати, к моему удивлению оказалось, что плюсы HTTP/2 в итоге часто перекрывают дополнительные затраты на установку TLS-соединения. Впрочем, возможно, это верно только для TLS 1.3 (который софт, установленный Hestia, поддерживает из коробки).
Также думал перевести TextCMS на PHP 8 и заявить, что хорошо написанный софт может пережить 3 major updates без необходимости в обновлении. Но увы, оказался неправ. Оказалось, что в самом начале TextCMS стоит вызов древней функции get_magic_quotes_gpc, которую удалили в PHP 7.4, и делается он без проверки версии. Поэтому сразу же возникает ошибка 500 (кстати, чем порадовала Hestia, так это возможностью смотреть логи через Web-интерфейс). Плюс ещё оказалось, что в модуле фотогалереи используется create_function — ещё одна устаревшая функция. В общем, по-хорошему, нужно бы собрать новый релиз TextCMS (а заодно и обновить wyswyg-редакторы в его составе), но вот где взять на это время? И будет ли это кому-нибудь нужно?

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

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