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

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


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

t.me/4x_pro

Лог жизни

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


Закончил с 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 годах.
Но вчера день оказался какой-то неэффективный: кое-как вник в условия конкурса, но не написал ни одной строчки кода. Занялся этим только сегодня, и то как-то весьма неспешно. Но зато понял, что изучение алгоритмов зря не прошло: сам подход существенно поменялся. Хотя и сама конкурсная задача тоже стала сложнее. Раньше я в бронзовую лигу выходил легко (однажды даже написал код, который сразу проскочил и первый, и второй дивизион дубовой). А сегодня писал и отлаживал код весь день. Из второй дубовой вышел после первой же отправки, а вот в первой с тем же кодом даже до середины не поднялся. Правда, там и существенные изменения в условиях игры происходят: появляются новые правила и более жёсткие ограничения. В общем, судя по всему, завтра придётся код основательно переписывать. Заодно и в плане оформления улучшу… Правда, не знаю, хватит ли времени: кроме этого, собирались с отцом съездить на новую квартиру.

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

4X_Pro
Вчера снова побывали с @natalia_tella в Ногинске. Сначала пошли на главную городскую площадь (увы, так её и не сфотографировал), потом — спустились к реке, на то же самое место, где были в самый первый приезд. Площадь очень понравилась! И вообще, по общему впечатлению, Ногинск мне чем-то напомнил сильно уменьшенный Ярославль. Во-первых, вкусной едой, во-вторых, тем, что площадь вызвала то же ощущение полноты жизни, какое было в Ярославле в последний день. Ещё Ногинск —это город фонтанов: они есть и на главной площади, и на привокзальной, и даже в реке (см. второе фото). А последний фонтан расположен на другом берегу, где находится современная часть города.
#ногинск #мост #фонтан

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

На нас напали!

4X_Pro
Недавний скан сайта не прошёл бесследно. Сегодня зашёл в Метрику и обнаружил, что просел траффик, а 19-ого числа было 20 тысяч заходов! И все — боты из Эстонии, проведшие на сайте по 5 секунд. Пришлось срочно добавить тег rel=canonical на сайт, и теперь ещё несколько дней займёт переиндексация. А сегодня утром прилетело уведомление от ВК о том, что кто-то попытался зайти в мой аккаунт с iPhone. Проверка последних сессий показала, что безрезультатно.
В общем, кто-то решил в Сети со мной повоевать. Судя по данным Метрики, это лицо в возрасте 24-35 лет мужского пола и явный эпплузер (заходы с компа тоже с Apple-техники, если только у него не хватило мозгов подделать User-Agent). Остаётся только вопрос, кто это и что ему вообще нужно. Пока рабочая версия — та же команда, что докопалась до abrbusа.
А пока предупреждаю всех: если вдруг получите сообщение от моего имени и оно покажется вам каким-то странным (например, просьба денег в долг) — задавайте контрольный вопрос, чтобы удостовериться, что это действительно я. Так победим.

Об MLFW и slow life

4X_Pro
В конце прошлой недели вернулся к работе над MLFW (MindLife framework) и достаточно неплохо продвинулся. Сделал авторизацию по фиксированному списку пользователей (когда список хранится не в базе, а задаётся непосредственно в настройках приложения) и подключение логгеров по стандарту PSR-3. Причём когда делал авторизацию, пришлось принять тяжелое решение — увеличить минимально требуемую версию PHP с 7.0 до 7.1, чтобы можно было делать type hinting для нескольких типов сразу.
Когда решал этот вопрос, заглянул на официальный сайт PHP и с удивлением обнаружил, что там последняя официально поддерживамая версия уже давно вообще 7.4. Какой кошмар! Куда все так торопятся? В том же Ubuntu 18.04, срок жизни которого ещё не закончился, официальная версия — 7.2 (и без костылей типа PPA её не обновить), у какого-нибудь CentOSа, наверное, ещё более старая. Мир стал слишком быстро меняться, и непонятно, как его притормозить!
Ещё понял, что моя работа над MLFW — это как раз то самое творение в режиме slow life, каковым оно и должно быть: с долгим размышлением над тем, какое решение будет максимально правильным, с изучением стандартов и мнений, как делать лучше. А ещё возврат и переделка неудачных решений.
В частности, вчера половину вечера потратил на то, чтобы определиться, в каком формате нужно писать лог. В итоге пришёл к выводу, что лучше использовать tsv вместо csv, предусмотрел возможность указывать не просто имя файла, а с возможностью подстановки даты, хоста и серьёзности лога. А также выбрал формат даты, который автоматически распознаётся LibreOffice Calc при импорте tsv.
В общем, из серьёзных доделок, по сути, остаётся только работа с формами, планировщик с поддержкой надёжных задач и кеширование. Из более мелких — лента RSS, всякие минификаторы CSS (и склейка в один файл) и HTML, но это можно позаимствовать из разработок 10geekа или моего проекта 2seconds (нужно будет ещё сравнить, чей вариант эффективнее). Начинаю верить, что когда-то я всё это всё же доделаю! Вообще, написание этого frameworkа подобно строительству средневекового собора: результат будет виден очень нескоро, но само занятие этим даёт чувство наполненности жизни смыслом.

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

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