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

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


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

t.me/4x_pro

Лог жизни

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


Заметка в Instagram от September 27, 2023 at 10:57PM

4X_Pro
Последние солнечные дни. Но деревья как-то резко уже пожелтели и листья начали опадать. В прежние годы в это время я уже возвращался в город, но сейчас остаюсь на даче. На дальние прогулки нет возможности, поэтому обхожу уже много раз виденные места.
Во время прогулок размышляю о биоритмах. В частности, задаюсь вопросом, есть ли реальные циклические механизмы у того, что я считаю спадами, или же это просто накопление усталости, нехватки сна и недостатка радости жизни? И наоборот, являются ли максимумы чем-то объективным, или же они возникают вследствие того, что в какой-то момент я снижаю требования к себе, отказываюсь от желания всё успеть, больше высыпаюсь и отдыхаю? И тогда просто у организма на какой-то момент появляется избыток ресурсов, который вызывает подъём и возникновение новых идей. Потом на попытку их реализации снова уходит слишком много сил, и снова всё повторяется...

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

Нижняя точка биоритма

4X_Pro
Опять день начался с телефонного звонка. И хотя потом смог заснуть ещё раз, всё равно весь день всё валилось из рук и шло не так. Плюс, похоже, я где-то близко к самой низкой точке биоритмического спада. Мозги не работают от слова совсем. Большую часть дня занимался бытом, потом посидел в медитации, продлил домен textcms.ru, дважды сыграл в шахматы (причём первый раз проиграл разгромно, а второй даже выиграл — противник сдался, потеряв фигуру), поиграл в Rockman 4 (и именно это и помогло восстановить внутреннее равновесие) и только под вечер сел за IntB. Но крошечный шаг вперёд сделать удалось: подгрузку комментариев в блоге и галерее через AJAX. А ещё придумал решение для EXIF: сохранять эти данные в базу в момент начальной загрузки фото, до его уменьшения. Но для этого придётся сделать в таблице ещё один столбец. Ещё есть мысль переделать кнопки действий: сделать их более соответствующим стилю material design, а второстепенные (типа подписаться/отписаться, добавить/убрать из закладок) — и вовсе значками. Будет смотреться не так громоздко. Но ужасаюсь тому, что время идёт, а динамика отрицательная: количество остающихся доделок чуть ли не растёт вместо того, чтобы убывать.

Равноденствие позади

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

Сносит потоком жизни

4X_Pro
В среду опять всё пошло не так. Опять день начался с телефонного звонка, причём от спаммеров из какой-то клиники. Эх, надо было дослушать название, и написать негативные отзывы на Яндекс.Картах и Google Maps. А ещё через форму обратной связи отправить что-нибудь вроде «увольте нахрен вашего маркетолога, он вам репутацию портит». Уснуть снова я не смог. Равно как и заниматься чем-либо полезным. Только пришла в голову идея переделать в галерее форму создания темы, чтобы сосредоточить внимание именно на фотографиях. А также добавить возможность делать описание для каждой фотографии и выбирать обложку. Но идея пришла, а реализовать не получилось — был совершенно в нересурсном состоянии и злился на всё вокруг. Попытался было пойти на прогулку, но не сложилось. Единственный плюс — лёг спать по своим меркам очень рано: около 1:40.
На следующий день случилось маленькое чудо: проснулся рано и бодрый! Но увы, день всё равно прошёл мимо. Пришла SMS, что два заказа, необходимых для ремонта, готовы к выдаче. Но был ещё один, который тоже был нужен срочно, и без которого ехать особо не было смысла. В результате несколько часов не мог определиться, ехать или не ехать. Но потом привезли и третий заказ. Потом отправился в Ногинск.
Без приключений не обошлось! Забирать заказы нужно было с двух разных мест. До одного легко можно добраться от автобуса, а на второй ехать с пересадкой. Но маршрутки туда ходят раз в час, и пересесть я не успел. Пришлось на ходу изучать Яндекс.Карту на предмет того, какими другими способами можно добраться. И таки решение нашлось, но пришлось идти пешком около километра. Когда добрался, выяснилось, что на пункте выдачи мой заказ положили в постамат. Но вот кода от него мне не пришло! Пришлось обращаться в центр поддержки клиентов или как он там называется. К счастью, вопрос решили достаточно быстро, но переживаний было много!
На втором пункте выдачи всё прошло легко и хорошо, если не считать того, что я нашёл его не сразу, так как на вывеске было написано Ozon, а по факту, там три в одном: Ozon, Boxberry и PDP. Но сам заказ был объёмным (строительный тазик на 65 литров и полотенцесушитель), поэтому я сдался и решил ехать не на автобусе, а на такси. Увы, к этому времени уже наступил вечер и время повышенного спроса. Так что такси обошлось дорого, и если просчитать все расходы, то окажется, что по сравнению с тремя доставками я сэкономил максимум рублей 300. Но тут вопрос чисто психологии: платить за доставку больше, чем за сам товар (а с тазиком было именно так) я морально не готов в принципе.
Приехав домой, собирался наконец-то заняться форумным движком дальше. Хотя бы сделать возможность задавать размер фото в галерее отдельно от размера previews в обычных разделах. Но всё опять пошло не так. Сначала очень интересно пообщался с одним человеком на тему Intellect Board, IndieWeb и вообще того, почему Интернет не стал тем, чем должен был стать. Потом решил исправить недавно выявленный баг на socionics.me с редактированием профилей. Но потом выявилось ещё несколько помельче. Плюс обнаружилась странная особенность: если включит отладочный режим, InstantCMS работает, если выключить, то падает с ошибкой 500. Причём нигде в логах не удаётся найти, что именно эту ошибку вызывает.
Провозившись с этим пару часов, уже собрался было спать и отправил компьютер в режим ожидания. Но через десять минут вспомнил, что хотел было проверить, работают ли в блогах и фотогалерее IntB теги. Включил обратно и обнаружил пропущенный звонок в TG от DarLik и сообщение, где говорилось, что у неё что-то срочное. Спросил, что случилось. Оказалось, довольно серьёзные неприятности. Потом ещё пару часов её успокаивал, уговаривал не паниковать и не творить всяких бессмысленных действий, которые кроме расходов, ничего не дадут.
И спать лёг в 6 утра с лишним. Теперь снова не выспался и торможу весь день. Никак не могу определиться, стоит ли воспользоваться хорошей погодой и пойти на прогулку, или же ограничиться тем, что пожарить шашлык у дома и пожечь мусор в бочке, а потом засесть снова за форумный движок.

Почти доделал галерею

4X_Pro
Сегодня опять день начался с телефонного звонка и получился бестолковым. Разбудили меня около 11 часов, но потом ещё очень долго лежал в непонятном состоянии: то ли сплю, то ли нет. Вылезать на холод не хотелось, но хотелось пить, что у меня всегда способствует раздражительности. В итоге встал очень злой и недовольный.
Большую часть дня не мог ни на чём сосредоточиться. Немного позанимался фотогалереей для IntB, но дело шло плохо. По сути, только чуть доработал внешний вид. От этого стал злиться и раздражаться. Посидел было в медитации, но помогло не очень.
И только совсем вечером получилось как всегда: уснул на пару часов в эффективное время (с 22 до полуночи), а теперь за три часа успел сделать очень много! Галерея почти работает, осталось только сделать догрузку фото (и проверку того, что они умещаются в лимит по file_upload_size), вывод количества фото в теме и возможность создавать фотосеты без названия и описания. Ещё обнаружил, что в блоге и галерее не было предусмотрено вывода локальных правил форума. В общем, всё-таки дело движется к релизу, хоть и очень медленно.

Груз получен — со второго раза

4X_Pro
Как всегда, у меня всё в жизни получается со второго раза. Так было и сегодня с доставкой: на этот раз всё привезли как надо. Только днём был момент, когда увидел, что заказ показывается со статусом «Отменён» и написал в техподдержку с вопросом, почему так. Вскоре после этого пришла SMS с сообщением, что доставка будет с 14 до 23 часов и ссылка на карту. По карте я отследил, когда нужно выезжать, и поехал на квартиру.
Груза было много, поэтому только затаскивание его в квартиру заняло около часа, потом ещё пересчитывали и проверяли, всё ли в наличии. В итоге вроде бы всё сошлось, и я поехал домой. На обратном пути застрял просто потрясающий закат! Жаль, фотоаппарата с собой не было, пришлось снимать мобильником:

В общем, вопрос решился! Правда, потом ещё предстоит съездить в Ногинск и забрать кое-что с пункта выдачи, что не удалось заказать доставкой. Но это, видимо, в четверг или пятницу, а сейчас наконец-то будет несколько спокойных дней. А то уже переживаю, что из-за всего этого «съезжает» главная задача — выпуск IntB 3.05, а также freelance-задачи. Сегодня попытался доделать фотогалерею, но почему-то фото до сих пор не грузятся, даже несмотря на исправление той ошибки, про которую я писал недавно.

День, полный приключений

4X_Pro
Ну и денёк получился вчера! Должны были привезти стройматериалы для квартиры. Но кое-что заказать через тот магазин не удалось, решил закупать через местный. Там была всякая мелочёвка, но поизучав условия доставки на сайте, обнаружил, что стоить эта доставка будет существенно больше, чем я ожидал. Возникла мысль заказать всё самовывозом, приехать в магазин на велосипеде и отвезти самому. Причём стало ясно, что основной заказ доставят сильно вечером, поэтому возникла мысль не тратить время зря, а съездить в тот же день.
Но увы, пока я решал, ехать или не ехать, пока сделал заказ, пока его подтвердили, пока собрался и выехал, было уже 18 часов. Пока доехал до магазина, солнце уже почти зашло. На пункте выдачи оказалось, что заказ ещё только передали в сборку, и меня отправили в магазин найти какого-нибудь продавца и спросить его, как там со сборкой. Задача «спросить» для меня достаточно сложная, и дико переживая, я поплёлся в магазин. К моему огромному удивлению, я с первого раза обратился именно к тому продавцу, который только что закончил сборку моего заказа. Правда, за сантехническими принадлежностями потом пришлось сходить на второй этаж.
И вот, довольный, что съездил не зря, я отправился на квартиру. Правда, не учёл одного: что в состав заказа входило прави́ло — это такая большая металлическая линейка без делений длиной полтора метра (и повезло ещё, что не 2.5, а то бывают и такие). Попытался закрепить её на багажнике, но она скользила. В результате пришлось применить инженерное мышление: засунуть между скобой багажника и этим прави́лом несколько х/б перчаток, после чего оно стало держаться лучше. Ещё я в спешке забыл пакет, чтобы сложить всё остальное. Но тут мне повезло: в состав заказа входило ведёрко, которое идеально вошло в корзину на велике, и все остальные покупки я сложил в него.
Всю дорогу всё стучало и бренчало (тротуары в Посаде находятся в весьма неидеальном состоянии). А ещё периодически слезал с велика и поправлял это самое прави́ло, чтобы не выпало. Но в итоге доехал до квартиры благополучно и ничего не потерял.
На квартире посмотрел, что с основным заказом. Там прямо ссылку на карту присылают, где можно положение машины отследить. Было видно, что привезут его не скоро, и отправился на небольшую прогулку по окрестностям. В частности, побывал на ближайшем озере, посмотрел на звёзды над водой. Потом вернулся на квартиру, стал ждать, когда, наконец, заказ привезут.
Но время шло, а машина перемещалась как-то очень медленно. Только к 22 часам она доехала до Электростали, где были 9 и 10 точки пути (моя была 11-ой). Там ещё час ушёл на разгрузку. И только в 23:08 я увидел, что 10 точка пройдена, обрадовался, что сейчас поедут к нам, как вдруг случилось неожиданное. Машина свернула в сторону Москвы и поехала туда. Ещё какое-то время я сидел в надежде, что это либо какой-то глюк, либо они поехали на склад в Ногинске для дозагрузки, но нет. Впрочем, это вызвало у меня двоякое чувство: с одной стороны, было обидно, что полдня потратил зря, с другой — заказ был большой, разгружать его было долго, и закончили бы где-то к часу ночи. И домой (в смысле, на дачу) я бы вернулся уже глубокой ночью. Плюс неизвестно, как бы среагировали жильцы дома на ночную разгрузку. Поэтому отчасти я даже испытал облегчение. А с третьей — когда я указывал дату доставки, почему-то можно было выбрать только выходные дни. И я боялся, что ещё неделя уйдёт напрасно.
Но главное приключение было ещё впереди. По дороге домой у велосипеда отвалилась педаль. Отец предупреждал, что такое иногда бывает (я в этот раз взял его велосипед, считая, что он в более хорошем состоянии), но я надеялся, что обойдётся. В итоге сначала несколько раз попытался её прикрутить, но через сотню-другую метров она отваливалась снова. Потом — ехать как на самокате, отталкиваясь ногой, но быстро устал и сбил ногу о вторую педаль. В итоге пришлось четыре километра велосипед вести, и только в двух местах удалось немного проехать под гору. Для полного счастья за северной оконечностью Больших Дворов возле склада меня встретила стая собак штук этак на 7-8. Настроены они были дружелюбно, но на всякий случай облаяли.
В общем, домой я добрался где-то в 0:40. Как это ни странно, когда подходил к даче, чувствовал себя вполне бодрым. Но когда оказался дома, как-то резко накатила усталость, еле хватило сил просто поесть и лечь спать. Но даже несмотря на всё это, уснул далеко не сразу — видимо, мозгу было нужно переработать впечатления (то же самое у меня бывает во время поездок).

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

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

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

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