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

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


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

t.me/4x_pro

Лог жизни

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


Минимум позади и возвращение к идее каталога бесплатностей

4X_Pro

Кажется, выбрался из биоритмического минимума. Вчера вернулся к работе над фреймворком и достаточно неплохо продвинулся: переделал систему работы с событиями на совместимую с PSR-14, предусмотрел возможность навесить обработчики событий на типичные exceptions, и ещё несколько мелочей доработал. А сегодня опять хватаюсь то за одно, то за другое. С подачи 10geek стал проходить на Stepik курс по «белому хакерству».Наткнулся там на массу полезных материалов, один из которых привёл меня на проект Start.Me — редактируемую онлайн-стартовую страницу, во многом перекликающуюся с моей давней идеей инфохаба.
Но оказалось, что стартовых страниц там можно создавать не одну, а целых три, с разными правами доступа, вплоть до полностью публичных и открытых для индексации. Пришла в голову мысль воспользоваться этим и разместить там временную версию своего каталога бесплатностей Интернета. Конечно, по сравнению с тем, каким я задумывал собственный скрипт, получится очень урезанно, но зато это будет хоть что-то работающее уже сейчас, а не через несколько лет. Так что завтра займусь переносом ссылок из локального файла. Заодно и структуру лучше продумаю в процессе.

Экспериментирую с OpenLLM

4X_Pro

Сегодня наткнулся на проект OpenLLM, который создаёт единый API для работы с разными языковыми моделями и решил с ним поэкспериментировать. В целом впечатления не очень: при использовании русского языка в ответе получается сплошная шизофазия. На английском более-менее приемлемые результаты дают модели opt и dolly-v2 (но последняя работает ужасно долго). Но места на диске и оперативки всё это потребляет просто огромное количество! Впервые после покупки нового компьютера столкнулся с угрозой зависания из-за её нехватки (правда, параллельно висел в памяти броузер с десятком вкладок, VS Code, и World of Tanks).
В общем, на хостинг такое не повесишь, да и держать постоянно на своём компьютере (скажем, для каких-нибудь скриптов) тоже как-то слишком затратно. Так что это разве что поставить поиграться, и не более того.
Но вообще, нужно будет как-нибудь вернуться к идее автоматизации соционического типирования по текстам, но теперь уже с помощью таких вот языковых моделей, а не того подхода, который я использовал в 2016 году.

Первый знак Мастер в World of Tanks!

4X_Pro

Сегодня в World of Tanks день начинался ну очень неудачно: проигрыш за проигрышем. Порой складывается впечатление, что стоит активировать «личные резервы» (бонусы к опыту по итогам боя), как ВБР начинает играть против меня. Или тут дело в том, что в Трансёрфинге называют избыточном потенциалом важности — растут ожидания от боя, поэтому итог оказывается обратный. Когда срок действия резерва истёк, ситуация несколько наладилась: результаты остались так себе, но я хотя бы выполнил три основных дневных задачи. Осталась бонусная — нанести урон 25 единицам техники противника. На обычных танках я бы за такое не взялся, но на арте — это вполне реальная задача. Начал выполнять. И в последнем бою показал какой-то просто запредельный результат: знак «Мастер», 8 единиц повреждённой техники (и, как следствие, медаль «Поддержка»), с отличием выполнена последняя задача кампании «Долгожданное подкрепление» (которую я не мог пройти уже не помню сколько) и эта самая бонусная задача. Ещё использовался бонус «опыт x5», в реультате чего я получил более 4000 опыта.

Заметка в Instagram от June 24, 2023 at 11:40PM

4X_Pro

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

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

День падающих ботов

4X_Pro

Сегодня был день падающих ботов. Проснувшись, обнаружил от GoRo сообщение, что SuperMon_Bot после вчерашнего обновления не работает. Пришлось бросить всё и лезть на сервер выяснять, в чём дело. Оказалось, кончилось место на диске из-за того, что слишком раздулись логи, и некуда было сохранять файл с id последнего запроса. Потом выяснилось, что бота то и дело перезапускает проверяющий скрипт, написанный самим GoRo, который считает насколько активно появляются новые строки в логе. Причём скрипт написан неэффективно и сжирает память и процессор гигабайтами. А после рестарта бот делал запись в логе об успешном старте, и лог рос ещё больше.
С этим быстро разобрались. Я немного доработал бота: во-первых, сделал обработку ситуации, когда в id последнего запроса пустая строка (раньше это вызывало цикл exceptionов, что опять же вело к переполнению лога), во-вторых, сделал счётчик, который увеличивается при ошибках и уменьшается при нормальной работе. И при превышении определённого значения процесс бота завершается с ненулевым кодом ошибки, чтобы его перезапустил systemd, чтобы избавиться от необходимости контролирующего скрипта.
Параллельно с этим выяснилось, что упал и мой VDS, на котором работает SiteKnockerBot. Но тут обошлось без ошибок с моей стороны, были проблемы с физическим сервером у хостера. Через пару часов всё заработало. Кстати, SuperMon_bot, после того, как его починили, даже отследил это и прислал уведомления (в нём есть и функция мониторинга других ботов).
Но к вечеру выяснилось, что хотя бот вроде работает, но лог продолжает расти. Посмотрев, что туда пишется, я увидел первопричину всех происшествий вообще. Оказывается, я обновления загрузил, а модуль dnstwist, нужный для их работы, установить забыл (хотя когда выгружал, крутил в голове «надо сделать вот это»). В результате GoRo добавил соответствующую проверку для тестирования, бот стал сыпать в лог сообщениями о том, что нет нужного модуля. И именно с этого всё и началось.

День YouTube и важное осознание

4X_Pro

Сегодня, отчасти с подачи DarLik, у меня получится день, точнее, вечер YouTube. Посмотрел довольно много разных материалов. В том числе наткнулся на видео про конкуренцию на канале Ольги Демчук. Посмотрел видео, стал читать комментарии к нему, и там попался один очень важный комментарий, который на многое открыл мне глаза:
RinataGrin написал(а): […]А по поводу самого Зверя. Мне кажется, что сам Зверь - это такая программка в психике, которая возникла, когда достаточно одаренный, крепкий, сообразительный ребенок попал под давление авторитарного тирана значимого взрослого, боялся его, согласился жить по его правилам, а главное - взрослый пугал и принуждал ребенка соответствовать его ТРЕБОВАНИЯМ и ОЖИДАНИЯМ, и ребенок ИСПУГАЛСЯ, он хотел выжить, и он принял на веру, что тот ОБРАЗ, который транслировал ему этот взрослый, действительно хороший, правильный, потому что будучи ТАКИМ он выживет! Вот и всё. Самое главное здесь - каким бы крутым ни стал этот ребенок, следуя требованиям взрослого, ВНУТРИ СЕБЯ ОН БУДЕТ ЗНАТЬ, ЧТО ОН ТРУС, ОН УЖЕ ПРОГИРАВШИЙ!!! И теперь, всю свою жизнь он будет стремиться получить РЕВАНШ. Сначала он будет следовать требованиям и ожиданиям своего тирана - он даже станет этаким суперменом - и здесь он хорош, и здесь он умен, и здесь он крут и т.п.! И тиран доволен им. И вся его жизнь - это взять реванш, доказать другим, что он не трус, не проигравший, что он крутой! Он достигает в жизни высоких положений. Но люди таких людей не любят. Они чувствуют, что он - не настоящий. А в чем его ненастоящесть? В том, что он показывает одно - какой он умный, крутой, добрый и т.п., а в душе он при этом ЗНАЕТ И ТРАНСЛИРУЕТ окружающим, что он - трус, слабак, не тот, за кого себя выдаёт. И ему все время надо доказывать, что он крутой. Он тратит на это силы, время, он учится, тренируется, соревнуется и доказывает себе через других, что он крут! Отсюда его злость, когда что-то идет не по его, отсюда у него чувство несправедливости, когда кому-то, а не ему выдали премию: "Я столько усилий сделал, столького достиг, я такой умный, а меня не оценили, а оценили этого бездаря!" и т.п. Есть второй тип людей, который тоже проиграли в самом начале. Этим еще хуже. Они тоже оказались под воздействием тирана и признали своё поражение перед ним в самом начале жизни, тоже хотели соответствовать образу, который требовал от них значимый тиран-взрослый, но не смогли - в силу слабого тела, отсутствия каких-то качеств. И эти люди считают себя дном. Первые - считают себя супер-менами, крутыми, вторые - считают себя слабаками, неудачниками, дном. Но оба эти типа глубоко внутри себя понимают, что ОНИ УЖЕ ПРОИГРАЛИ. И супер-мены проиграли, и слабаки проиграли. Отличие первых от вторых в том, что первые занимаются компенсацией, чтобы выиграть-таки, они жаждут реванша! Но реванш так и наступает. Отсюда получается, что здоровый человек - это тот, кто мог противостоять тирану и не согласиться с его требованиями, отстаивать свою позицию до конца.
Ведь это же верно как про меня (для меня таким невыносимым требованием было соответствие мужской гендерной роли, о чём писал недавно, и вообще меня всегда пытались заставить быть взрослее, чем я был на самом деле), так и про моих противников — «ускорителей жизни». Кстати, вот ответ, почему они со своими целями и достигательством всегда мне казались такими фальшивыми. А в моём случае существует запрос на другое: чтобы некая значимая фигура дала мне внутреннее разрешение на то, что я имею право этим требованиям не соответствовать. И, желательно, чтобы мнение этой фигуры было значимо не только для меня, но и для всех окружающих, включая тех самых ускорителей, чтобы они не могли втягивать меня в берновскую игру «я вот чего достиг, а ты — неудачник».
Там дальше есть продолжение с рецептом, который, в теории может помочь, но по-моему, просто сказать себе подобное недостаточно:
RinataGrin написал(а): Но сделать это маленькому ребенку трудно, даже невозможно. Что же им делать? Найти этого взрослого и дать ему люлей! Шучу. Надо найти способ как-то объяснить собственному подсознанию: "Я был очень очень мал, глуп и слаб! Взрослый тиран - был силен, страшен и угрожал моей и не только моей жизни! Я признаЮ, что я СОГЛАСИЛСЯ с тем, что я - глуп и слаб! Я всем своим телом и поведением демонстрировал ПОКОРНОСТЬ. И моё подсознание УВЕРОВАЛО в это! Этот взрослый меня заколдовал, сформировал во мне рефлекс страха и ощущения неполноценности рядом с сильными значимыми взрослыми людьми. И мне нужно расколдоваться, разобусловить этот рефлекс. Какими способами? Ну, во-первых, поняв это. Второе, можно произвести в уме магическое действие - рассмотреть образ, который на меня налеплял тиран-взрослый, разбить его, запаковать части и вернуть его этому тирану-взрослому. Третье, можно осознать свои реальные качества и сильные стороны, и слабые и принять их. Четвертое, заявить себе о том, что я ни в чем не виноват, я не предавал себя, я был просто слишком мал, чтобы что-то понимать и думать - не чем было это делать, мозгов по возрасту не хватало! А это вина самого тирана! И сказать себе: я отказываюсь от каких-либо мыслей о собственном превосходстве и от соревнований (или от мыслей о своей ничтожности). Потому что ЭТО ВЗГЛЯД ТИРАНА НА МЕНЯ! А я забираю себе, возвращаю себе свой взгляд на себя! И внутри меня я сильный, достойный, добрый, умный и душевный человек! Пятое, отслеживать свое положение тела и не принимать позы покорности, а принимать позы, осанку счастливого человека и расслабленного. - Сформировать таким образом свой новый СОБСТВЕННЫЙ ОБРАЗ! И вести себя соответственно своему образу. (Когда человек соревнуется и доказывает превосходство - он - по обратной связи - себе же доказывает, себя же убеждает в том, что он не хорош: "Раз я доказываю, значит сам не верю в это!"). Как-то так.;

Самый длинный день в году и информационная разгрузка

4X_Pro

Сегодня был день солнцестояния — самый длинный день в году. Обычно я проводил его на даче, с прогулкой к реке и жарке шашлыка. Но в этом году году такой возможности не было. Даже не получилось выбраться к реке, хотя была такая мысль. Зато получился день информационной разгрузки: в Интернет только несколько раз за день выскакивал ненадолго. Только совсем уже вечером вышел нормально и почти доделал то, что обещал GoRo по SuperMon_Bot. И настроился было лечь спать пораньше, но в итоге получилось как всегда: только сейчас собираюсь выключить компьютер.

Спад продолжается

4X_Pro

После слишком активной недели, когда безвылазно дома я провёл всего два дня: пятницу и воскресенье, наконец-то возникла возможность замедлить жизнь и отсидеться дома. Ничем полезным, правда, заниматься не получается, все ресурсы уходят просто на то, чтобы прийти в себя. Да и биоритмический спад продолжается.
Только вчера с 10geekом обсудили его CSS framework. Получилась очень годная стилизация форм, и теперь я планирую начать его использовать при разработке своих проектов на базе MLFW. Только вот гостевую опять переделывать придётся, хоть и не слишком много.
Ещё возникла мысль перевести/дописать несколько своих статей об оптимизации времени загрузки сайта из профблога и опубликовать их на Hashnode. В частности, по тому, как улучшить показатель CLS (content layout shift). Они по формату и тематике вполне там будут уместны! И шансы быть замеченным там достаточно существенны.

Перепрошёл Starcraft

4X_Pro

Сегодня закончил перепроходить Starcraft. В отличие от первого прохождения (которое было, кажется, в 2000 или 2001 году), эмоций было гораздо меньше. Даже от эпической последней битвы протоссов и землян против зергов и героического самопожертвования Тассадара, которая так впечатлила меня прошлый раз. То ли потому что уже знал основные сюжетные повороты (хотя множество второстепенных деталей уже забыл), то ли потому, что в этот раз играл на английском, то ли по каким-то ещё причинам.
Последнюю карту сначала пытался пройти полностью землянами, а протоссов использовал только для обороны и добычи ресурсов. Но не тут-то было. Несколько волн атак захлёбывались: не успеваю координировать действия всех отрядов. И тогда построил протоссами 6 carrierов, провёл их по краю карты к силам землян (3 боевых крейсера и два отряда морпехов), и этих сил хватило прорвать оборону противника. А чтобы поставить красивую точку, последний удар по зерговскому Overmindу нанёс ядерной бомбой.
Ещё обратил внимание на то, что в игре появился такой показатель как APM — количество действий в минуту. У меня этот показатель лежит в диапазоне 25-30, но каково же было моё удивление, когда узнал, что у игроков мирового уровня он достигает значений порядка 200. Как они успевают так быстро мышкой шевелить? (Пусть даже делая часть действий с клавиатуры.)

Возвращение домой и решение вопроса с пылесосом

4X_Pro

Сегодня наконец-то вернулся в Москву. Хотел было выехать часов в 14, но опять получилось так, что день шёл мимо. Опять это отвратительное чувство беспомощности перед утекающим непонятно куда временем, почти как в моих ночных кошмарах! Только в 15:30 сел на электричку, и то пришлось ехать без обеда (так как запаниковал, что ничего не успеваю) и обедать во «Вкусно и Точка» в Новогиреево, куда добрался почти в еле живом состоянии. В общем, повторяется 2019 год, который я тогда обозвал «годом тяжёлой дороги».
Добравшись до дома и немного отлежавшись после поездки, отправился на почту — забирать посылку с аккумулятором для пылесоса, который ещё в апреле заказал на AliExpress. Хотелось проверить, получится ли пылесос оживить. Вернувшись домой, вскрыл коробку, померил напряжение на аккумуляторе. Вроде всё хорошо: 15 Вольт, как полагается. Но я был бы не собой, если бы просто сделал что-то с первого раза!
Дальше всё происходило так: установил установил аккумулятор в пылесос, попытался сразу запустить — никакой реакции. Решил, что аккумулятор недостаточно заряжен, поставил на зарядку — вроде всё хорошо, процесс пошёл. Где-то через час зарядка закончилась. Я попытался включить пылесос снова, но безрезультатно. Решил, что дело не в аккумуляторе, и пошёл мыться. И только уже когда сидел в ванной, пришло озарение, что я делаю не так! (Почти как у Архимеда, хех.) Дело в том, что у этого пылесоса сбоку есть аппаратный выключатель, про который я благополучно забыл, так как давно им не пользовался. И конечно же, он был выключен! После включения всё заработало. Так что робот-пылесос снова на боевом дежурстве! А общий итог этой истории — -1200 к золоту деньгам, но +1 к боевому духу и +1% к навыку ремонта.


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

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