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

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


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

t.me/4x_pro

Лог жизни

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


Готовлюсь к великому обновлению 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-части. Ну или если вдруг уйду на Рестарт, то под новым я сайт-блог сделаю именно там.

Бронзовая лига взята

4X_Pro
Что ж, после ещё одного вечера программирования я вышел на CodinGame в бронзовую лигу (на данный момент это высшая, серебряная откроется только 30 мая). Причём из «дубовой» лиги выходил очень тяжело, никак не мог понять, в чём дело. Один раз почти получилось, но потом посыпалась череда поражений, и в итоге застрял на 13 месте. А потом выяснилось, что в программе была ошибка: я не реализовал сохранение уже построенных маршрутов в свойствах игрока. Из-за этого новые маршруты добавлялись далеко не всегда оптимальным образом. Как только с этим разобрался, сразу же прорвался в бронзовую лигу (на данный момент более высокие ещё не открыты) и поднялся там до 431 места. Завтра буду пробовать дальше: уже есть мысли, что ещё можно сделать…

CodinGame: новое соревнование

4X_Pro
Вчера зарегистрировался на новом конкурсе CodinGame. Долго не мог определиться, стоит ли ради него отвлекаться от разработки MLFW. С одной стороны, раз отвлёкшись, сложно вернуться. С другой — сейчас всё равно период, когда плохо представляю, что именно делать дальше. В итоге решил сделать то же, что и в 2021 году: выйти хотя бы в серебряную лигу, а дальше — как пойдёт, но не устраивать себе бессонных ночей с одержимостью, как это было в 2018—2019 годах.
Но вчера день оказался какой-то неэффективный: кое-как вник в условия конкурса, но не написал ни одной строчки кода. Занялся этим только сегодня, и то как-то весьма неспешно. Но зато понял, что изучение алгоритмов зря не прошло: сам подход существенно поменялся. Хотя и сама конкурсная задача тоже стала сложнее. Раньше я в бронзовую лигу выходил легко (однажды даже написал код, который сразу проскочил и первый, и второй дивизион дубовой). А сегодня писал и отлаживал код весь день. Из второй дубовой вышел после первой же отправки, а вот в первой с тем же кодом даже до середины не поднялся. Правда, там и существенные изменения в условиях игры происходят: появляются новые правила и более жёсткие ограничения. В общем, судя по всему, завтра придётся код основательно переписывать. Заодно и в плане оформления улучшу… Правда, не знаю, хватит ли времени: кроме этого, собирались с отцом съездить на новую квартиру.

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

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