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

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


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

t.me/4x_pro

Лог жизни

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


День настоящей slow life

4X_Pro
Вчера получился день самой настоящей slow life. Проснувшись, я вышел на участок и где-то почти час сидел и созерцал природу. Удалось почувствовать гармонию с миром и то самое ощущение, что всё идёт как надо, и некуда спешить! Потом сел за компьютер и занялся доделкой алгоритма для соревнования на CodinGame. После нескольких улучшений удалось подняться в серебряной лиге с 70—80-х мест до 30-х. Потом решил существенно переделать алгоритм выбора места для посадки новых деревьев (и тут пригодились алгоритмы поиска пути в графе, которые изучал в 2019 году), но он что-то не хотел работать. Решил прерваться и поесть, тем более по времени было уже около 18 часов, а я за день нормально не ел. Не знаю почему, но когда я на даче один, обеды/ужины растягиваются просто на какое-то нереально огромное время. То ли из-за того, что в процессе ухожу в созерцание и размышления, то ли ещё по каким-то причинам. Но есть я закончил в 19:40. В это время на улице выглянуло солнце, и я решил, что всё же отправлюсь на прогулку, на которую хотел выбраться ещё днём, но так и не собрался. Изначально хотел просто пройтись по посёлку, но потом подумал, что солнце уже заходит, и можно снять закат, чего я в этом году ещё не делал.
Когда я собрался и вышел из дома, меня ждал небольшой сюрприз. Несмотря на яркое солнце, на улице шёл легкий дождь! Из-за этого какое-то время я сидел на крыльце и созерцал его. И только когда дождь прекратился, отправился к водоёму. Закат в этот раз получился очень красочный! Снял несколько кадров над водоёмом, потом вышел к Клязьме. Хотел дойти до того места, где река делает поворот, и можно посидеть и посмотреть, как она течёт к нам издалёка, но увы: место было занято — там сидел какой-то рыбак.
Побродив ещё немного по берегу реки, вернулся к дому. Была мысль заснять на видео полёт майских жуков и выложить в Instagram, но увы, это оказалось сложной задачей: получается либо слишком мелко и их просто не видно, либо нужно сделать zoom на максимум и долго ждать, когда жук влетит именно на участок, куда направлена камера.
Потом вернулся к доработке программы для соревнования. На этот раз таки нашёл и исправил ошибку, а потом сделал ещё несколько мелких улучшений для учёта того, что почва в игровом лесу постепенно истощается, и за каждое следующее дерево дают меньше очков. И вот где-то около полуночи сделал очередной submit кода. С самого начала было ощущение, что вот теперь всё получится. И вот код отправлен! Когда расчёт результатов дошёл где-то до 75%, я обнаружил, что переместился в таблице выше бота-главаря серебряной лиги (чтобы пройти в следующую, нужно обойти именно его). Началось томительное ожидание: «неужели получится?». Но тут пошла серия поражений. Я вновь оказался ниже этого бота. Потом снова выше, и так происходило несколько раз. Когда расчёт дошёл до 92%, опять пошла серия поражений, и я был уже уверен, что всё, в этот раз не пройду. И придётся долго играться с настройками алгоритма, чтобы добрать несколько недостающих побед. Так длилось до 98%, я решил, что ждать больше нечего, и ушёл пить чай. А когда вернулся, услышал звук уведомления. Оказалось, что всё же на последних процентах было достаточно побед, чтобы оказаться выше бота и прорваться в золотую лигу! Так что главная задача этого конкурса — выполнена. И, увы, предел достигнут: больше я из этого алгоритма вряд ли выжму. Разве что была бы возможность поиграть в настольную игру Photosintezis, по мотивам которой этот конкурс и сделан, достаточное количество раз, чтобы почувствовать правильную стратегию, а не просто пытаться понять её умозрительно. Или же применять методы машинного обучения, как делают топовые игроки, но на это не хватает квалификации.
А ещё снова убедился, что для меня избыточный выбор — зло. Чем хороши конкурсы, так это тем, что они заставляют сфокусироваться на какой-то одной задаче. А вне конкурсов, видя несколько десятков задач, по которым можно соревноваться, я не могу определиться, за какую взяться, и в итоге не берусь ни за что. То же самое и в жизни за пределами CodinGame: когда одна из задач выделена, гораздо больше шансов, что я её сделаю, чем когда вижу много вариантов и весь день не могу определиться, за что взяться. А потом испытываю неудовлетворённость жизнью и тем, что ничего не сделал. Кстати, в тех же 2003—2004 годах, которые я считаю образцом производительности, как раз и было так, что у меня не было выбора: либо работа над форумом, либо несколько старых надоевших игр, и всё.
За остаток дня так больше ничего и не сделал, даже запись в блог об этом дне. Только около двух часов ночи вышел ненадолго посмотреть на звёзды. Но небо уже начинало бледнеть, поэтому их видно было плохо. Зато на фоне дома очень классно выглядели тени от деревьев: почти как какой-то народный узор!
А сегодня, как обычно после завершения чего-то важного, день потерянности. Не могу взять и быстро переключиться на то, чем занимался до конкурса: заметками для Дзен.Каналов, работой над IntB и так далее.

Смешная ошибка

4X_Pro
Продолжаю участвовать в конкурсе на CodinGame. Вчера открылась серебряная лига, куда я сразу же прошёл. А вот дальше откатился на 1200-1300 места и ничего не мог с этим поделать. Два дня ломал голову, что же улучшить в алгоритме, почему такие плохие результаты. Потом стал сравнивать свои действия и действия противника на первых ходах (у меня до 6-ого хода последовательность действий закодирована жёстко) и обнаружил, что даже когда я пытаюсь дублировать действия противника один в один, это не получается. Стал разбираться и обнаружил глупейшую ошибку. У меня проверка возможности совершить то или иное действие была сделана криво: количество sun points (очков действий) проверялось на строго больше, а не больше или равно. Как только это исправил, сразу же подпрыгнул до 860 места.
А вообще, недавно подумалось, что CodinGame — это один из немногих сохранившихся кусочков старого Интернета. Во-первых, все общаются под Сетевыми именами. А у многих ещё на автарах персонажи старых компьютерных игр (видел даже Rockmanа у кого-то). Во-вторых, техноэлитизм: положение в иерархии на сайте определяется через интеллектуальные показатели: знание алгоритмов, умение писать код и находить решение, а технически безграмотным там делать нечего. Ну и в-третьих, практически сведена к минимуму коммерческая составляющая, что спасает сообщество от деградации.

Прогулка к устью Плотни

4X_Pro
Наконец-то холода закончились, и появилась возможность выбраться на прогулку. На этот раз я решил отправиться к водоёму к югу от Буньково, а затем — к устью реки Плотня. Настроение было просто отличное: солнечный весенний день, совсем недавно появившиеся светло-зелёные листья на деревьях, и ощущение легкости и беззаботности. Ещё когда только подходил к реке, удивился, как много солнечных бликов видно сквозь деревья. Оказалось, что и Клязьма, и Плотня очень разлились из-за последних дождей, и значительная часть луга возле устья Плотни затоплена водой. А ещё там образовался небольшой островок, и кто-то положил доску, чтобы на него можно было перебраться. Я хотел было забраться туда, но доска оказалась слишком ненадёжной, и от этой идеи пришлось отказаться.

Новый конкурс на CodinGame

4X_Pro
В четверг днём успел сделать ещё один небольшой шаг в плане поддержки IndieWeb — написал код для endpoint discovery.
А потом начался конкурс на CodinGame! Задача про засев леса меня очень порадовала! Как и ожидалось, в бронзовую лигу я поднялся в тот же вечер, буквально с двух commitов (точнее, на CodinGame правильнее называть их submitами), написав совершенно простенький алгоритм. А вот дальше немного замедлился. Попытался было написать алгоритм, играющий перебором, но при большой глубине поиска нарывался на таймаут, а при маленькой — оказался на 1700-ых местах из 4000.
Сегодня решил попробовать другой подход. Написал код с набором стратегий, где выбор между ними осуществляется по набору фиксированных правил. Сразу результат улучшился: сначала 1200-ое место, потом, после пары мелких правок, поднялся до 1000 позиции. Но всё равно код не самым оптимальным образом играет в самом начале, и продолжаю думать, что с этим делать. Но бота бронзовой лиги вроде обыгрывает без проблем, так что, скорее всего, в серебряную лигу тоже без проблем поднимусь.

Поездка к Карпятнику

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

Не совсем slow life

4X_Pro
В последние дни вдруг стало хватать 7.5 часов сна. Не знаю, с чем это связано: то ли стал ложиться раньше, то ли уменьшил информационный поток, и поэтому меньше времени требуется на разгрузку мозга. Но даже несмотря на это, время всё равно девается непонятно куда. Вот, например, позавчера выключил компьютер в 23:40, но спать всё равно лёг только чуть раньше трёх часов. А за это время успел только поесть и собрать вещи для поездки на дачу. На следующий день встал в 10:40, а такси для поездки мы с отцом заказали в 13 ровно. А за эти два с небольшим часа успел только поесть, полить цветы и выбросить мусор. Не успел даже посидеть в медитации, как собирался изначально, для успокоения перед поездкой. Куда делось остальное время — загадка… Да и сегодня проснулся в 11:04, и всё, что сделал до 12 часов — это выпил чаю и посозерцал вид из окна.
Всё-таки slow life хороша тогда, когда каждый момент максимально осознан и прочувствован. Например, с некоторыми оговорками туда можно отнести сегодняшнее утреннее созерацание за чашкой чая. А когда время уходит непонятно куда, а сделано мало — это не столько slow life, сколько просто ерунда какая-то. Вопрос только в том, как понять, чем такие огромные потери времени вызваны.

Первый заезд на дачу в этом году

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

Весенние ручьи и долгая прогулка к Лебедянскому пруду

4X_Pro
Давно собирался выбраться к Лебедянскому пруду, но всё откладывал. А сегодня была последняя возможность перед отъездом на дачу. Сначала думал, что из-за дождя не получится. Но во второй половине дня тучи разошлись, засветило солнце, и я всё же отправился в парк. И, надо сказать, не зря!
После дождя воздух был очень чистым и свежим, а все лесные ручьи, болота и канавы заполнены водой! Причём в отличие от ранней весны, когда лес ещё голый и почти одноцветный, сейчас эта вода очень красиво и гармонично сочетается с зеленью. Из-за этого вместо того, чтобы пойти напрямую к пруду, обошёл и сфотографировал несколько ручьев: Совиный, безымянный ручей, вытекающий из болота к юго-западу от Лебедянского пруда, и ещё два безымянных ручья недалеко от выхода в Южное Измайлово.
Оттуда поехал в Терлецкий парк. Там тоже сегодня много воды, а на одном из ручьёв кто-то попытался построить плотины (на последнем фото).
В общем, это одна из самых лучших прогулок за эту весну! К тому же ещё прошагал целых 10 тысяч шагов. Да и вообще, очень доволен, что этой весной обошёл почти все близкие от дома парки и водоемы.
А ещё эта запись станет первой попыткой писать сообщения в едином формате для личного блога и Instagram (пока что с ручным копированием, потом автоматизирую).

Сносит потоком жизни в сторону

4X_Pro
Опять поток жизни сносит меня в сторону от IndieWeb. В четверг пришло письмо с CodinGame про очередной конкурс. Вернулся на сайт, зарегистрировался на конкурс, а заодно прошёл задачу недели. Увидел, что хотя откатился куда-то в район 2800-ого места в общем рейтинге из-за того, что давно не участвовал в Clash of Code, всё равно вхожу в ТОП 0.8%. Теперь испытываю двоякое чувство. С одной стороны, предвкушаю конкурс и хочу попробовать использовать те знания, которые приобрёл летом 2019 года. С другой — переживаю, что с 6 мая опять почти на десять дней выпаду из нормальной жизни. Впрочем, можно сделать иначе: выйти в серебряную лигу (обычно на это хватает двух дней), а дальше — забить.
В тот же четверг Tella внезапно вспомнила о нашем канале на Дзен и буквально за час набросала новую статью. Эх, удивляюсь, как люди умеют так быстро писать. У меня потом на редактирование и то времени ушло больше! Впрочем, большая его часть — на дополнение конкретикой. И в пятницу 12-ая статья была опубликована! И у нас появился 23-ий подписчик. Правда, мы всё дальше и дальше отступаем от изначально задуманного формата: рассказать какую-то историю, а потом уже дать объяснение, что там просиходит с точки зрения психологической составляющей.
Вчера всё же хотел вернуться к IndieWeb и написать код для endpoint discovery, чтобы потом реализовать клиентскую часть протокола WebMention, но так и не собрался. И вообще, весь день подтормаживал из-за того, что заставил себя встать раньше. Но зато исчезло ощущение слишком короткого дня. А сейчас собираюсь снова идти на настолки.

Чего мне в жизни не хватает

4X_Pro
Сегодня выбрался на небольшую прогулку по району, во время которой пришло два важных осознания. Первое — работоспособность снизилась из-за того, что «уехал» режим, и опять встаю слишком поздно. Нужно хотя бы в 11 вставать, а лучше в 10. Да, в этом случае утренние часы пролетают мимо в том плане, что не делаю ничего из того, что считаю важным. Но зато к 13 часам я уже заканчиваю с проверкой обстановке на сайтах, рынке и тому подобным. А сейчас я в это время только-только встаю. Да и качество сна всё же выше. Хотя ещё можно попробовать перейти на двухфазный сон: 3 часа сна вечером (скажем, с 21 до полуночи), потом ночь активной работы, так как после вечернего сна идёт мощный приступ бодрости, потом снова сон с 5 до 11 примерно. Но и в том, и в другом случае главная сложность — это своервеменно сказать себе «пора выключать компьютер и идти спать». Не знаю почему, но всё время не хочется отпускать прошедший день.
Второе — это то, что мне в жизни по-прежнему не хватает ответа на вопрос «Кто я», причём такого, который давал бы мне чувство собственной обоснованной значимости. Причём такого, в который с одной стороны, можно было бы вместить почти все основные направления моей деятельности, с другой — в который вписывались бы мои личностные ограничения.
Где-то до 2013 года у меня такой ответ был. Сначала, в школьно-студенческие годы — «талантливый мальчик, которому не повезло жить в эпоху перемен, где всё решают аспекты ЧС и БЭ, но который при этом остаётся собой и не предаёт свои идеалы». Потом, с 2004 года — «Web-разработчик, создатель форумного движка, который работает за идею и за то, чтобы сделать Интернет более комфортным для бедных (тех, у кого слабые компьютеры и медленный Интернет)». Потом — «владелец собственного соционического форума, который помогает людям понимать себя» (это уже 2006 год, эпоха Социоклуба). Затем — «автор пирамиды типологий, системы, с помощью которой можно навести в них порядок и разобраться, что к чему относится» (2008—2013 годы). А вот дальше начался период, где чёткого ответа не было. Хотя с тех пор перепробовал много разных видов деятельности, и в 2019 году даже был момент, когда казалось, что нашёл три подходящих пути, но почему-то сейчас опять возникло чувство, что ни один из них не даёт этого ощущения.

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

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