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

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


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

t.me/4x_pro

Лог жизни

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


Дело двинулось

4X_Pro
И всё-таки это случилось! Кажется, сегодня дело с ремонтом новой квартиры двинулось с мёртвой точки. Правда, до октября вряд ли успеют доделать, и на какое-то время всё равно придётся ехать в Москву.

Поторопился с IntB

4X_Pro
Мда, про выход на финишную прямую с релизом IntB я несколько поторопился. Постоянно появляются разные мелкие доделки, которые иногда могут оказаться не такими уж мелкими. Да ещё и биоритмический максимум, похоже, остаётся позади, умственная активность снова идёт на спад, и успеваю меньше.
Например, вчера решил было разобраться, почему перестал работать вывод фотографий из Instagram на главной странице сайта. Сначала думал, проблема в блокировках. Но нет, обычный wget скачивал файлы без проблем по тем же самым URL. Потом несколько часов ломал мозг, пытаясь найти причину. Вроде всё нормально, файлы скачиваются, но на этапе уменьшения что-то идёт не так. Причём проблема есть только при выполнении из под cron, что очень усложняет отладку. Пришлось включать cron в ежеминутный режим, делать отладочный вывод с помощью обычного echo и смотреть, что приходит на почту.
Только так смог установить, что проблема не в путях, а в функции загрузки изображения. Долго не мог понять, что с ней не так. Потом полез в документацию, и там обнаружил, что с PHP 8.0 функции createimagefrom* возвращают не resource, как раньше, а класс GgImage. А у меня в библиотеке, которая отвечает за масштабирование изображения, есть проверка на is_resource, и если она не проходит, то функция возвращает не хеш с данными об изображении, а false. И именно в этом и была проблема (для cron я писал полный путь /usr/bin/php, по которому запускается PHP 8.2, а через сайт или если написать в ком. строке просто php — пока ещё 7.4, который лежит в /usr/local/bin). Причём исправить её получилось только со второго раза — сначала неправильно написал условие проверки. На этом тоже потерял минут десять.
Но всё равно рад, что ту ошибку нашёл, так как она потом бы всё равно вылезла в модуле фотогалереи. И вообще, убеждаюсь, что в том коде, который запускается не напрямую по запросу из броузера, а через всякие cron, асинхронные задачи и тому подобное, обработку ошибок нужно делать даже тщательнее. И писать все ошибки в логи, чтобы потом было проще разобраться, что не так.
Потом обнаружил проблему с откатом редактирования сообщения. И решил автоматизировать получение токена для взаимодействия с VK. А также дополнительно защитить от возможных DoS-атак генератор previews. В общем, похоже, выпуск даже RC отложится как минимум до выходных. Тем более, тут вроде двинулось дело с ремонтом, и я сейчас сижу на новой квартире.

IntB 3.05 — осталось немного

4X_Pro
Вот и всё: разработка IntB 3.05 выходит на финишную прямую. Осталось всего два пункта: доделать фотогалерею, добавить в инсталлятор поддержку PostgreSQL и SQLite и собрать дистрибутив. Причем, скорее всего, решив вопрос с галереей, я сначала соберу и выложу для тестирования Release Candidate с поддержкой только MySQL, выкачу его же на свои сайты, а уже потом займусь адаптацией под эти базы данных.

Халява пришла

4X_Pro
Вчера (вернее, уже позавчера) принял участие в электронном голосовании на выборах мэра. А сегодня пришла SMS, что выиграл 1000 призовых баллов, которые можно потратить на пополнение карты «Тройка». Так что халява от Города снова пришла!
Ещё узнал, что у меня чуть больше 800 так называемых «городских баллов», оставшихся со времён «Активного гражданина». Стал искать, на что их можно потратить. Обнаружил, что среди поощрений есть даже сеанс во флоат-камере (она же камера сенсорной депривации), правда, на него нужно целых 4600. В результате возникла совершенно дикая идея — попытаться сдать нормы ГТО, за которые дают 15000 баллов (думаю, на бронзовый значок я как-нибудь наберу). Но, скорее всего, всё же не решусь…

Постепенно продвигаюсь к цели

4X_Pro
С IntB дело медленно, но верно движется. В списке из 11 пунктов невыполненными остались только четыре. Вчера доделал одну из самых сложных задач — блочные ссылки (правда, на сайты пока не выкладывал) с поддержкой OpenGraph и асинхронной подгрузкой данных.
Но сегодня ресурс закончился. Встал очень поздно с мыслью, что совершенно не хочется делать что-то дальше. Посидел немного в медитации, стало легче. Но потом поехал на новую квартиру (планово), на это ушло много времени, так как из соображений экономии возвращался через Буньково, чтобы не тратиться на такси. К тому же на обратном пути ещё устроил себе мини-прогулку: спустился к водоёму и какое-то время созерцал его и звёзды над ним. Но увы, в полной мере достичь того состояния Внутреннего Безмолвия не получилось.
А сейчас никак не могу определиться: что лучше — устроить себе полный день отдыха, а завтра взяться с новыми силами, или всё же попытаться сделать хоть что-то, чтобы было чувство «день прожит не зря, сделан шаг вперёд». Впрочем, пока писал это, нашёл мелкие недоработки с блочными ссылками и занялся их исправлениями.
Ещё обнаружил, что после обновления шаблонизатор Twig стал потреблять гораздо меньше памяти и работать быстрее. Сейчас каждый скрипт IntB с ним занимает чуть меньше 1 Мб памяти, тогда как раньше — полтора. Непонятно, то ли тут дело в PSR-4 совместимом загрузчике, который теперь грузит только нужные для данного шаблона классы, тогда как старый грузил всё, то ли сам Twig так хорошо оптимизировали, то ли это заслуга PHP 8.2. Но в любом случае, я задумался над тем, а не зря ли я отказался от шаблонизации в MLFW…

Intellect Board 3.05 — быть

4X_Pro
В понедельник принял важное решение: всё же выпустить версию Intellect Board 3.05. Всё-таки с 2019 года (когда вышла предыдущая версия) сделано было немало, и как-то неправильно, что это так и остаётся неопубликованным. Да и когда попытался запустить его на PHP 8.2, обнаружил огромное количество предупреждений.
Но из серьёзных доделок сначала собирался закончить только кураторов темы и фотогалерею. Но потом как-то набралось ещё несколько доработок помельче: интеграция с Telegram (для отправки уведомлений о новых темах и записях в блог), блочные ссылки и, возможно, переделка CAPTCHA. В итоге окончательный список составил целых 11 пунктов (правда, четыре я за сегодня уже сделал, в том числе и адаптацию к PHP 8.2).
В какой-то момент даже начал думать о том, а не реализовать ли на базе IntB движок мобильно-ориентированного сообщества, идея которого приходила мне прошлым летом. По сути, для этого всё есть, нужно только блоговый раздел немного переделать + предусмотреть двухуровневые комментарии.
Но одной из ключевых идей такого сообщества была минималистичная регистрация. То есть от пользователя просят только имя при отправке первого сообщения (даже без пароля и Emailа), а дальше движок генерирует токен OAuth, который хранится на устройстве в cookies, и опознаёт пользователя по нему. И только по желанию пользователь может либо сгенерировать ссылку для входа с другого устройства, либо привязать профили соцсетей. Но увы, IntB для такого не предназначен, слишком многое придётся перделывать.

Заметка в Instagram от September 03, 2023 at 06:26PM

4X_Pro
Сегодня сам собой получился день информационной разгрузки. Сначала сидел дома и погружался в то самое состояние Внутреннего Безмолвия,о котором неловко писал в основном блоге. Потом решил выбраться на прогулку по окрестностям, сходил к Клязьме. И, надо сказать, не зря. Давно не было такого состояния кристальной чистоты сознания, как сегодня!
Но увы, полного умиротворения достичь не получается. Слишком много неопределённостей в будущем, вопросов без ответа. И, главное, нет возможности отложить решение на потом, дождаться момента когда «сойдутся звёзды», и я увижу, что вот это решение — единственно верное...
#прогулка #отдых #клязьма #спокойствие #размышления #осень2023

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

Небольшие доделки IntB

4X_Pro
Кажется, у меня биоритмический максимум. За вчерашний день успел очень много всего.
А под вечер внезапно решил заняться IntB. Начал с малой задачи — скрыть кнопку «Развернуть», если в ней нет необходимости. Потом стал наводить порядок в комментариях, заодно нашёл пару багов с модерацией. И в конце концов решил сделать цитирование через всплывающее меню, как недавно предложил Aksion. Но получилось как всегда: базовый работоспособный вариант сделал быстро, но сегодня полдня возился с разными мелкими доделками. В частности, нужно было сделать так, чтобы меню не вылезало, когда выбранный текст не в сообщении, а где-то ещё. Плюс ещё решил добавить возможность копирования в буфер обмена и отправки ВК. Плюс ещё почему-то много проблем возникло при выгрузке изменений на сайты. Но в итоге работает! Кстати, в процессе написания немало помог ChatGPT, сэкономив массу времени на поиск нужных свойств для DOM-элементов.
С одной стороны, очень доволен сделанным, плюс приобрёл новый опыт. С другой — немного переживаю, что неизвестно, соберу ли когда-нибудь новый дистрибутив IntB, куда всё это войдёт, или это так и останется только на моих сайтах. Ещё нужно бы в блог написать заметку о том, как делать такое меню, но что-то ресурса на это нет.

Последний день тяжёлого лета

4X_Pro
Вот и всё, лето прошло. Впечатления остались очень противоречивые. Насколько прекрасной в этом году была весна, настолько тяжёлым получилось лето, причём без явных на то причин. То ли непонятная ситуация с ремонтом, которому изо всех сил противятся высшие силы, влияла, то ли просто время такое, то ли природа мстит за надругательство над ней. Впрочем, и хорошего тоже хватало: поездки в Ногинск, прогулки в Зарядье и Кузьминки в Москве, несколько обычных и велопрогулок тут. Жаль только, что ягоды упустил, да и за грибами пока ни разу не выбрался.
В последний день лето решило порадовать просто идеальной погодой: очень приятная температура (около 20 °C), полностью чистое небо и ощущение полного спокойствия в природе. Выбрался на прогулку, сделал круг по посёлку, который уже опустел. Только в небольшой части домов люди готовятся к завершению дачного сезона. Почувствовал то самое Внутреннее Безмолвие, о котором писал в предыдущем сообщении. Эх, хорошо!

Внутреннее безмолвие

4X_Pro
Более-менее выздоровел. Сегодня посмотрел видео «10 признаков что ты живешь не свою жизнь», которое прислала DarLik, а потом даже выбрался на велопрогулку к Клязьме и в сосновый бор за соседним СНТ. У Клязьмы посидел на берегу реки, уйдя в себя и размышляя.
Вспоминал это видео, думал о том, к чему стремлюсь я, и вдруг осознал: именно к тому самому состоянию спокойной сосредоточенности на чём-то, в котором я тогда сидел на берегу реки. И даже придумалось название этому состоянию: Внутреннее Безмолвие.
Стал крутить в голове, когда я его испытываю. Оказалось, что либо во время таких вот медитативных прогулок (причём даже не во время движения, а когда останавливаюсь и сижу на одном месте), либо когда играю в некоторые компьютерные игры, либо когда продумываю реализацию какой-либо идеи, представляю себе будущий проект, его архитектуру или какие-то отдельные компоненты.
Но вот когда начинаю писать код или, тем более, его отлаживать, состояние Внутреннего Безмолвия сменяется состоянием «внутреннего мата» — эмоциональной реакции раздражения то на опечатки (со слепой печатью при программировании, где активно используются спецсимволы, у меня плоховато), то на ошибки, то просто на необходимость постоянно обновлять страницу и переключаться между окнами.
Так что придумывать что-то мне нравится, а заниматься реализацией — не очень. Правда, возникает вопрос: что с этим делать…
А ещё то видео помогло мне осознать, что мой заваленный 5 уровень ТУАИ — гораздо бо́льшая проблема, чем я считал ранее. Именно он отвечает за страх рисковать, умение импровизировать и делать выбор в условиях неопределённости, что сильно блокирует творческие способности и растягивает время принятия решения в разы, когда я работаю над своими проектами. По сути, сейчас получается так: делаю несколько шагов, натыкаюсь на проблему, для которой сложившегося представления, что делать, у меня нет, и останавливаюсь до тех пор, пока оно не найдётся. Именно так сейчас с MLFW дело обстоит: постоянно откладываю, не зная, как быть: делать рефакторинг класса Template, чтобы полностью вынести шаблон в отдельный файл, или нет.

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

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