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

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


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

t.me/4x_pro

Лог жизни

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


Минус баг в IntB

4X_Pro

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

Выложил IntB 3.05 и обновил сайты

4X_Pro

День сегодня получился какой-то бестолковый. Но тем не менее, главную задачу выполнил: обновил движок форума здесь и на официальном сайте IntB, а также создал тему о начале тестирования RC1. Не обошлось без last-minute-bug: в какой-то момент перестала работать короткая ссылка на Центр Администрирования. Часа два возился, наверное, вроде стало работать нормально, но что было не так — так и осталось загадкой. Возможно, дело в приоритетах правил или же просто что-то закешировалось.
Теперь можно устроить себе пару дней передышки (если, конечно, не посыпятся массово баги), сходить на прогулку или поиграть в старые игры, а то чувствую, что внутренний ресурс закончился. А потом — вернуться к прохождению курса по «белому хакерству», который я начал летом. И затем уже возвращаться к сборке окончательного релиза. Хотя уже пошли мысли, что ещё можно доделать…

Поторопился с 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, выкачу его же на свои сайты, а уже потом займусь адаптацией под эти базы данных.

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 для такого не предназначен, слишком многое придётся перделывать.

Сделал dev-блог про IntB

4X_Pro

Вчера переделал на сайте IntB раздел новостей в полноценный dev-блог, настроил автоматическую трансляцию в группу ВКонтакте, и написал первые две заметки. И в целом очень рад, что эта идея пришла мне в голову. Мало того, что это полезно с точки зрения SEO, это ещё и форма самомотивации: доделать что-то, чтобы рассказать об этом в блоге. Или рассказать об IntB то, что не вписывается в рамки офицальной документации, например, то, с какими проблемами пришлось столкнуться и как было найдено какое-то решение. Правда, есть опасение, что тут может получиться как всегда — начну с сильного «хочу», которое затем превратится в «надо», или же опять снесёт потоком жизни…

Начал работу над фотогалереей для IntB

4X_Pro

Никак не могу определиться, как же быть с OwnYourGram: то ли переделывать его так, чтобы были вызовы через API вместо парсинга, то ли просто сделать свой аналогичный сервис, никак с OYG не связанный, то ли искать способы сделать так, чтобы Instagram парсинг не блокировал. Поэтому в воскресенье решил взяться за другое — за модуль фотогалереи для сайта, сделать который хотел очень-очень давно, но всё откладывал. Там тоже всё идёт очень медленно и тяжело, как говорится, со скрипом. Хотя по серверной части уже почти всё готово, осталась, в основном, вёрстка и действие по выводу всех фотографий на одной странице.

Почти реализовал OAuth в IntB

4X_Pro

Постепенно возвращаюсь к работе по добавлению поддержки протоколов IndieWeb в Intellect Board. В частности, вчера разобрался с WebPub aka PuSH, но теперь не знаю, стоит ли делать собственный hub в самом IntB или же ограничиться возможностью указывать в настройках раздела (или даже форума целиком) сторонний. Также нашёл мелкий, но неприятный баг в генераторе RSS: по умолчанию выдавались сообщения только за последние сутки. До сих пор не понимаю, что было у меня в голове, когда такое написал.
И вчера почти доделал выдачу токенов OAuth, что необходимо для поддержки MicroPub. Не знаю почему, но протокол OAuth даётся мне очень тяжело: всё время путаюсь, куда какие данные идут, какие поля обязательно должны быть в запросе и т.п. Но в итоге всё же почти доделал.

Новая жизнь старых ссылок

4X_Pro

Вчера пришло письмо, что у моего старого сайта изменился ИКС. Как выяснилось, занулился совсем (до недавнего времени держался на 10). Но зайдя в Webmaster, я обнаружил, что ещё живы ссылки с Рубоарда на раздел с Intellect Board, которые когда-то оставил там пользователь AlexCh. Только вот после всех переносов и переделок сайтов они вели они на 404 страницу. Решил воспользоваться этим и сделать 301-ый редирект. Может, хоть немного веса сайту IntB добавится.

IntB и децентрализованные соцсети: картина сложилась

4X_Pro

Как это ни странно, с подачи forumovodа — того самого человека, про которого я писал в предыдущем сообщении про Intellect Board, решился вопрос, который не давал мне покоя уже год. А именно, в голове наконец-то сложилась картина, как быть с моими идеями децентрализованной соцсети: пытаться делать для неё отдельный движок или реализовывать на основе IntB. И вот сейчас пришло окончательное понимание, как быть со вторым вариантом. Ключевой момент, которого мне не хватало — это сделать уведомления двух типов: внутренние (о событиях на самом форуме) и внешние — о событиях, пришедших извне, с других форумов. Ну и как сделать отправку уведомлений в соответствии с требованиями протокола ActivityPub. Так что бросать IntB не буду!
Единственное, что пугает — это объём работы, который нужно ещё проделать: дописать несколько типов разделов, сделать возможность создавать личные разделы, переделать загрузку файлов и много чего ещё. Вернее даже, дело не в самом объёме работы, а в том, насколько это растянется, так как заниматься IntB я нормально могу только тогда, когда в жизни есть затишье хотя бы на несколько дней, иначе просто не успеваю настроиться.
Ещё forumovod предложил для решения проблемы дизайна взять за основу тему какого-нибудь другого open-source форума и адаптировать её для моего движка. Идея, в общем-то неплохая (кстати, с этим моим сайтом так и было: здесь используется тема для Hexo), но как-то бросать всё и заниматься именно ей желания не вызывает.


Страницы:
  • 1
  • 2
Задать вопрос

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