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

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


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

t.me/4x_pro

Лог жизни

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


Внезапное изменение планов

4X_Pro
Внезапно изменились все планы. Вчера отправился на длинную велопрогулку. Побывал в ближнем сосновом бору, оттуда выехал на Великий луг и добрался до Нового Капрятника, возле которого стал бывать очень редко после строительства новой дороги — слишком уж неудобно добираться. Посидел на его берегу, сфотографировал ставший уже классическим вид, и ушёл глубоко-глубоко в себя, почувствовав гармонию с миром. После всего этого расхотелось уезжать! Тем более выяснилось, что скорее всего, быстро приехать снова не получится. В итоге решил остаться на даче до вторника, а не ехать сегодня.
Второе изменение планов произошло вечером. Изначально я планировал вернуться к работе над MLFW и сделать класс для flash-уведомлений (уведомления о последних действиях, которые либо всплывают, либо выводятся на следующей после редиректа странице, при этом нужно сделать их запоминание на сервере). Но не тут то было!
Началось всё с того, что я обнаружил у себя письмо от FirstByte, где когда-то держал VDS для socionics.me, а потом там же размещал и SiteKnockerBot. Потом я тот VDS удалил, но пустой аккаунт остался. И вот FirstByte написал об акции, где бывшим клиентам дарится промокод на два месяца бесплатного VDS. Упускать халяву — это не моё, поэтому я решил использовать эту возможность, чтобы всё-таки попытаться поставить и потестировать движок сообщества Forem. Но оказалось, что это не так просто! Сначала хотел было ставить полностью вручную, но почитав мануал, понял, что это плохая идея: слишком много всего ставить и настраивать. Решил пойти более простым путём — установить через docker-compose, как уже пытался когда-то на виртуальной машине. На этот раз установка прошла чуть дальше, но всё равно без проблем не обошлось. Сначала долго писалось, что нет возможности подключиться к какому-то узлу. И в процессе начального заполнения базы посыпались ошибки. Потом это решилось, но из-за того, что база не заполнена, попытка зайти на сайт стала приводить к ошибке 500.
С docker-compose я дела особо не имел, и поэтому как перевыполнить нужную задачу, не знаю. Стал было пытаться разобраться, но тут снова случилось непредвиденное: в полночь пришло уведомление, что новый сервер превратился в тыкву отключили за неуплату! Вот тебе и обещанные два месяца халявы! Скорее всего, дело в криво настроенном биллинге, куда, видимо, забыли заложить информацию об этой акции, либо же в том, что у меня старый аккаунт с ежесуточной оплатой, а там предполагалась ежемесячная. Конечно, можно было бы написать в техподдержку и решить этот вопрос. Но я решил истолковать это как сигнал от высших сил, что нужно не распыляться, а продолжать заниматься MLFW (первый раз они давали такую подсказку через Таро), и завтра вернусь к нему.
А ещё я хотел сегодня выбраться на вечернюю прогулку, но из-за проблем с Forem упустил момент. Пришлось ограничиться созерцанием последних моментов заката через окно.

Как уложить сайт на полдня

4X_Pro
Вчера заглянул в настройки VDS и обратил внимание, что в качестве имени хоста там прописан не 4xpro.ru, который на данный момент является главным сайтом из всех расположенных там, а typologies.ru. Решил поменять это, а потом сразу же ушёл спать, будучи уверенным, что на работу сайтов это никак не повлияет. Но не тут-то было. Оказывается, если имя хоста на сервере совпадает с именем хоста в запросе, то Apache использует конфигурацию по умолчанию вместо той, где это имя хоста прописано явно. А у меня конфигурация по умолчанию вела на мои сайты на TextCMS, так как их у меня много, и прописывать ServerAlias для всех было лень. В итоге вместо моего личного сайта стал выдаваться один из них.
Это отследил мой SiteKnockerBot и начал заваливать меня уведомлениями, что с сайта пропали ключевые слова. Но тогда я ушёл спать и отключил Интернет на мобильных устройствах, а днём хотел успеть на прогулку в солнечное время, поэтому в Интернет не выходил. В итоге то, что сайт не работает, обнаружил только вечером. И ещё пришлось повозиться с настройками Apache, чтобы решить эту проблему с сохранением имени хоста.
В общем, порой даже такие мелкие изменения могут иметь серьёзные последствия!

Готовлюсь к великому обновлению VDS

4X_Pro
Собирался устроить великое обновление своего основного VDSа. Всё-таки Ubuntu 16.04, которая там стоит, уже устарела. Кроме того, с появлением TLS 1.3, где соединение происходит за меньшее число обменов данными, я всё же решил сделать у себя поддержку https. Увы, но отсутствие https сильно влияет на SEO, и не в лучшую сторону. Но решил оставить возможность заходить и по http, поэтому принудительный редирект делать не буду.
Сначала хотел вообще арендовать новый, поставить там систему с нуля (причём даже рассматривал вариант ухода на Debian в целях унификации с домашними компьютерами), а потом перенести сайты. Но всё пошло не так, как ожидалось. Во-первых, сработало автопродление старого сервера, и с карты списалась сумма ещё на год. Во-вторых, оказалось, что сейчас самый дешёвый облачный VDS стоит 380 руб/мес (у меня сейчас с учётом годичной скидки — всего 245 руб/мес). А ещё на Reg.Ru DNS-записи почему-то привязываются не к аккаунту, а к конкретной услуге (что, на мой взгляд, очень неудобно), так что мне пришлось бы их все переносить.
Поэтому я решил пойти другим путём — буду делать обновление системы через dist-upgrade, а потом поставлю certbot. Ещё была мысль поставить nginx в качестве reverse proxy, но от неё, похоже, откажусь: и в настройках слишком много менять, и памяти может не хватить. Подключил временно платное резервное копирование, и хотел было приступить сегодня, но из-за слишком глючного дня решил отложить.

Очень глючные дни

4X_Pro
Вечер вчерашнего (вернее, позавчерашнего) дня и весь сегодняшний получились какими-то очень глючными. Навалилась жуткая раздражительность, не было ресурса на самые простые бытовые действия, а сегодня ещё и поспать получилось часа полтора, пришлось досыпать днём. И ещё понял, что жить на даче больше трёх недель всё же слишком много. Копится усталость и злость на всё вокруг от того, что из-за особенностей дома здесь повседневные рутинные действия типа мытья посуды или просто подготовки ко сну занимают вдвое больше времени, чем в городе. Из-за этого всё больше и больше съезжает режим. Но если в городе мне без разницы, во сколько встать, то тут день часто начинается с раздражения, что лучшая часть дня упущена, на прогулку ехать не смысла, и тому подобное. А мысли о том, что нужно ещё как-то доделывать то, что обещал GoRo и Л.Р. и вовсе угнетают. А тут ещё Melany Tale новую задачу хочет подкинуть.
Причём желание вернуться в Город я испытывал ещё в прошлые выходные. Но не понимал, чем оно вызвано, и очень ему удивлялся: вроде июнь — лучшая часть лета — только начинается. И только вчера пришло осознание, с чем это связано. Более того, то же самое наблюдалось и в предыдущие годы, начиная с 2019 (до этого я на даче редко жил так долго безвылазно).
Эх, решатся вопросы с обустройством новой квартиры, буду жить в таком режиме: на дачу ездить на короткое время без ноутбука только ради отдыха и информационной разгрузки дня на три-четыре максимум. Но пока до этого ещё далеко…
Впрочем, кое-что всё же успел. Вчера прошёл модуль Hellgate в Arcanum, причём технологом (хотя этот модуль больше для магов подходит). А сегодня подключил для MLFW статический анализатор (и обнаружил с помощью него пару мелких ошибок) и создал на GitHub project board со списком задач.

Насыщенный день

4X_Pro
Соревнование на CodinGame закончилось. Я так и остался в серебряной лиге, но это даже к лучшему. Там какая-то странная система подсчёта очков: результат зависит только от места в своей лиге, а не от результата в общем зачёте. И, например, за последние места в золотой лиге начислили меньше десяти очков, тогда как даже за моё 231-ое в серебряной дали целых 23.02. Что сразу же основательно повысило мои позиции в глобальном рейтинге: с примерно 5200 до 4414. (Хотя в лучше времена я вообще в TOP-2000 входил, когда активно участвовал в Clash of Code, но постоянно удерживать высокие места — это слишком большие психологические затраты и источник стресса.)
Как всегда, после того, как заканчивается период жизни, где требуется сконцентрировать на чём-то свои силы, испытываю растерянность. Вроде надо идти дальше, возвращаться к другим делам, но на это нет ресурса. Впрочем, несколько месяцев я случайно обнаружил, что самый эффективный способ справиться с этим — устроить себе пару дней разгрузки. Так вчера и сделал!
В итоге получился очень насыщенный день. Сначала сходил на прогулку к одному из местных водоёмов. Забрался в самые глухие места, где бывают только рыбаки. Нашёл место, где очень много цветов земляники. А ещё спугнул утку с большим выводком утят (кажется, штук восемь)! Утята резво понеслись на центр водоёма, тогда как утка стала летать вдоль берега, громко и противно крякая. А ночью ждало ещё одно приключение: Tella вытащила меня в поездку в заведение под названием «Чудо-печка» в Буньково. Оно расположено в той части Буньково, которая именуется Новостройкой и оставляет далеко не самое приятное впечатление. (Сначала хотели в такое же заведение в Ногинске ехать, но решили, что слишком уж далеко.) Но всё закончилось хорошо!
Ночью ещё поиграл в Arcanum. Точнее, в один из фанатских модулей, найденных мной в прошлом году в Сети, под названием Hellgate. По стилю игры он сильно напоминает Diablo: блуждание по подземельям без сторонних квестов и собирание различных артефактов.
А сегодня день просто прошёл куда-то мимо. Уже почти 19 часов, а я вообще не могу вспомнить, что сделал за день, кроме того, что написал это сообщение и решил один мелкий вопрос с SiteKnockerBot.

Закончил с CodinGame

4X_Pro
Видимо, пришла пора признать, что на CodinGame я сделал всё, что мог, и пора возвращаться к работе над MLFW. Тем более, что сегодня познакомился с человеком, который заинтересовался моей идеей делать движок сообщества.
По соревнованию задача-минимум выполнена: в серебряную лигу я прошёл совершенно без проблем. До "золота", видимо, уже не дойду: сейчас болтаюсь в районе 130 места в серебряной лиге (и где-то 430 в общем зачёте), и нет никаких новых идей в плане улучшения уже имеющегося алгоритма или новых стратегий. Правда, там как-то странно работает подсчёт: если долго не отправлять новые версии алгоритма, то позиция постепенно может немного вырасти. Но вряд ли этого хватит для прохождения в «золото».
Так что по сути, самое главное качественное улучшение — это я стал писать код для игр быстрее. Тот алгоритм, который дал мне этот результат, сделал за три дня, а не сидел все десять, как раньше. Потом только экспериментировал с другими стратегиями, оказавшимися менее удачными, и незначительно доработал его вчера, улучшив игру с несколькими базами.
Но в любом случае, самое главное я получил: удовольствие от решения интересной задачи!

Проблемы на CodinGame

4X_Pro
Сегодня на CodinGame придумал и реализовал уже пятую по счёту стратегию игры. Она получилась эффективнее, чем две предыдущих, (и при этом сам алгоритм очень прост и красив). Но когда я провёл испытания в противостоянии с боссом серебряной лиги, оказалось, что она проигрывает ему гораздо чаще, чем вторая: 3:9 против 6:6. Но если сыграть против своего же кода разными стратегиями, то, наоборот, пятая чаще выигрывает с минимальным перевесом.
Конечно, главным показателем должна стать эффективность против всех игроков вообще. Но проблема в том, что её сложно померить: разбросы огромные. Вчера, например, днём поднялся до примерно 360 места, а вечером тот же код оставался на 700—800 позициях. Я тогда решил, что откатился из-за того, что за день другие игроки так сильно улучшили код. Но утром следующего дня тот же самый алгоритм оказался на 296 месте! Как говорится, и как тут оценить эффективность… Ещё есть подозрение, что иногда глючит сам CodinGame, так как периодически начинает выдавать сообщение, что моя программа не дала результат за отведённое время. Хотя если страницу обновить и перезапустить игру в том же режиме, всё срабатывает как надо. Возможно, просто не хватает памяти для запуска интерпретатора Python. Эх, сесть что ли и переписать самую удачную стратегию на PHP? Заодно и результат в пределах конкретного языка улучшу (на PHP выше меня в рейтинге около десятка человек), это тоже влияет на итоговые очки.
Ещё есть мысль сделать гибридный алгоритм. Я заметил, что пятая стратегия хорошо играет на очень маленьких картах. Соответственно на них использовать её, на более больших — модифицированный вариант второго. Но всё опять упирается в проверку эффективности…

Перепрошёл Heroine's Quest

4X_Pro
Снова прошёл сегодня Heroine's Quest за Воительницу. На этот раз без обманных путей, как в первом прохождении за Воровку, и на максимальной сложности (что в Steam отметили отдельным достижением). И в Пещере Костей получил золотую медаль, хотя раньше думал, что это слишком сложно. Но хорошо прокачанная Воительница со всеми особыми ударами — это сила! Хотя с Ферниром и Эгтером в конце пришлось повозиться.
Ещё узнал, как добраться до Локи. Правда, есть ли от этого какая польза Воительнице — не знаю, а вот за Волшебницу это позволило закончить квест с загадками. Завтра, наверное, перепройду игру и за неё. Но один из квестов для меня так и остаётся нерешаемым — тот, который связан с Хельги.

Неумолимый ход времени

4X_Pro
После нескольких дней соревнований на CodinGame устроил себе день отдыха. Сижу на участке и созерцаю природу. Цветы с яблонь уже полностью облетели, сирень тоже уже отцветает. И даже медуница — растение, которое с детства ассоциируется у меня с началом лета и каникул, — тоже скоро закончит цвести. А листья у берёз давно уже приняли совершенно летний цвет — тёмно-зелёный вместо того яркого, какими они бывают в начале мая.
В такие моменты у меня возникает двоякое чувство. С одной стороны, красота природы радует и наполняет счастьем. С другой — переживаю от того, что нельзя остановить время, что ход естественных природных циклов неумолим, и нельзя вечно жить в мае-июне, что когда-нибудь скоро придут серые ноябрь и декабрь.

Hashcode — всё опять придумано до нас

4X_Pro
Сегодня в Telegram-канале IndieWeb узнал, что существует проект под названием Hashnode, в котором уже реализованы мои идеи о сообществе, управляемом тегами. Более того, там пошли дальше: дали возможность каждому участнику подключать собственный домен, чтобы вести блог на нём. При этом основной сайт проекта выступает в роли инфохаба, где есть лента с рекомендациями, список активных хеш-тегов, рейтинг блогов и т.п. И даже есть должность тег-модераторов! В общем, всё почти так, как я себе и представлял, кроме разве что рейтинговых голосований — вместо них обычные лайки.
В результате задумался, а не сделать ли сообщество идеалистов Интернета в виде коллективного блога там. Правда, будет та же проблема, что и на Pikabu: сообщество внутри сообщества несколько ограничивает возможности и не оставляет места для чего-то более личного (типа фотографий котиков, видов с прогулки или просто дневника участника без трансляции в основную ленту).
Сообщество полностью англоязычное и ориентировано на tech writing. Хотя иногда попадаются блоги на китайском и ещё каком-то азиатском языке.
Жаль, что сам движок там вроде бы закрытый. Будь он open source, я бы просто взял отдельный VDS, поднял бы на нём свою копию, и получилось бы именно то, что нужно. А пока, видимо, просто придётся использовать его как образец для вдохновения в плане frontend-части. Ну или если вдруг уйду на Рестарт, то под новым я сайт-блог сделаю именно там.

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

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