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

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


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

t.me/4x_pro

Лог жизни

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


Набег на Ростов, часть вторая

4X_Pro
До Ростова я добрался без каких-либо проблем. Но в пути не получилось ни уйти в трансово-медитационное состояние, как во время поездки в Переславль, ни позаниматься чем-либо полезным, типа почитать книжку или поразмышлять о жизни и записать эти размышления  в блог. Большую часть времени просто смотрел в окно. Виды там красивые! А еще увидел по дороге Троице-Сергиеву лавру, в которую собирались съездить в 2016 году, но так и не сложилось. Когда проезжали Александров, увидел также так называемое веерное паровозное депо (то есть расположенное полукругом с разворотным кругом в центре), но увы, сфотографировать не успел. Увы, не знаю, действует ли оно сейчас.
На вокзале меня встретил Мик, который приехал туда чуть раньше из Ярославля. Я озвучил ему мысль, пришедшую в голову вчера вечером: произвести реверс изначально задуманного маршрута. То есть сначала поехать к Спасо-Яковлевскому монастырю, а оттуда по улице Подозерка выйти к Ростовскому кремлю и далее выходить пешком к вокзалу. Основной причиной такого решения было то, что так меньше возвращаться до вокзала в условиях потенциальной нехватки времени. Мик одобрил. Читать далее…

Набег на Ростов

4X_Pro
Сегодня началась вторая часть совместного путешествия с сэром Миком: я еду в Ростов. На этот раз на поезде, что нравится мне гораздо больше. И самое главное, мне повезло: в купе я еду один! (По крайней мере до Александрова точно.)
Вагон, конечно, не такой красивый, как у Красной Стрелы, но вполне приемлемый. Да ещё за счёт того, что купе пустое, получилось, что я сэкономил: оплатил верхнюю полку, но сейчас еду на нижней. Так что впервые еду по Ярославскому направлению днём! Настроение хорошее, и даже чувствую себя относительно выспавшимся, несмотря на то, что проснулся, причем без будильника, в 9:15.

Непростое возвращение из Переславля

4X_Pro
Возвращаюсь из Переславля. Впечатлений масса, и до того момента, когда я попал на автовокзал, они были просто замечательными! Но их я опишу потом, дома, в спокойной обстановке. Увы, приехать в Переславль просто, а вот вернуться — не очень... Изначально я хотел ехать обратно на автобусе 19:13. Но увы, когда стали возвращаться от озера, оказалось, что придём где-то впритык. Несколько раз я пытался вызвать Яндекс.Такси, но всё время получал сообщение, что свободных машин нет. Впрочем, если бы были, то это помогло бы мало. Когда я пришёл на станцию, автобус ещё был на перроне, но все билеты на него разобрали. Более того, на следующий автобус, который должен быть через час, уже очередь. А мест мало, и точное количество будет известно только в момент его прибытия. Я увидел в расписании, что через 20 минут будет автобус на Сергиев Посад, и надеялся выехать на нём, но увы, на него тоже мест не было!
Мик с Hippo тоже не смогли уехать в Ярославль. Посмотрев ситуацию с первым автобусом туда, и узнав, что следующий будет в 22 часа, и неопределенность тут такая же,  решили, что пока ходят городские автобусы, надо ночевать в Переславле, и отправились на то место, где можно ставить палатку. Я остался один в совершенно чужом городе...
Прошёл час мучительного ожидания в неизвестности. И вот, наконец, с опозданием на две минуты автобус прибыл. Четыре места. Все кинулись к кассе, забив на предварительные договоренности, но увы, мне места не досталось.
Тут я обратил внимание на мужичка-пенсонера, который ходил по кассовому залу и предлагал отвезти в Москву. Распросил его об условиях. Оказалось, что едем до станции Бужаниново, где можно пересесть на железную дорогу. Цена — 400 руб. с человека, и нужно набрать четверых. Один парень нашелся сразу, а вот дальше начались сложности. Такое ощущение, что народ то ли смирился с возможной ночевкой, то ли просто ушёл в трасообразное состояние, и не понимает, что им предлагают. Потом нашлась еще девушка, которая была неуверенна, хочет или нет. В результате мужичок сказал «давайте по 500 и четвертого не ищем, иначе опоздаем на электричку». Мы согласились. И мы помчались по ночному шоссе. Всю дорогу я рассматривал карту в поисках этого Бужаниново, гадал, успеем или нет. Но всё обошлось: приехали за 10 минут до электрички. Станция, к моему удивлению, оказалась большой, но касса там не работала. Вместо этого был автомат, который по нажатию кнопки печатал «предварительный билет», который затем можно было у контролеров поменять на обычный, заплатив нужную сумму.
Пожалуй, никогда в жизни проявление электрички не вызвало у меня такой радости! Выбрался! Не остался ночевать на этой ужасной автостанции. Хотя, конечно, можно было добраться до Мика с Hippo,  и переночевать в палатке с ними, но мне нужно было вернуться домой до отца, а он хотел приехать с дачи завтра достаточно рано утром, что сильно усложняло задачу.
В общем, через час буду в Москве. Жалею только, что за окном темно, и толком не удается просмотреть это направление. Единственное что удалось увидеть — это Троице-Сергиеву лавру.

Набег на Переславль

4X_Pro
Сегодня мы с Миком и Hippo едем в Переславль-Залесский. Они решили закончить посещение городов Золотого Кольца, которое начали в прошлом году: проехать три дня по маршруту Переславль-Ярославль-Ростов с ночёвками в палатках. У меня такой возможности нет, но они уговорили меня присоединиться к ним в режиме набега, то есть приехать, и в тот же день уехать домой.
Я долго боялся и соменвался, стоит ли ехать вообще, потом не хотел ехать в Переславль из-за того, что туда можно добраться только на автобусе, а собирался присоединиться к ним только в Ростове. Но потом вспомнил, как в детстве изучая карту окрестностей Москвы, видел на ней этот город, расположеный у огромного озера, и мечтал когда-нибудь посетить его. И сейчас я решил, что это хороший хорошая возможность исправить жизнь, исполнив давнюю мечту. К тому же оказалось, что на автобусе туда ехать всего два часа, а не три, как почему-то я считал изначально.
Да и вообще, тогда я много куда хотел поехать, но не было возможности. Это потом у меня появился компьютер, поменявший всю мою систему ценностей, когда день, прожитый без компьютерных игр, а потом — выхода в Интернет, воспринимается как потерянный.
К тому же тогда сами поездки воспринимались иначе: встал пораньше, собрался и поехал. Сейчас же сложности начинаются уже на первом пункте. А ещё сильно мешают сложные отношения со временем и страх не успеть.
Но вроде бы эта поездка начинается хорошо. Я смог заставить себя встать в 9:45, и на станции ВДНХ был почти вовремя. Мик и Hippo уже ждали меня там. Посадка в автобус прошла без особых проблем, если не считать того, что на станцию метро в это время приезжает столько народа, что выбираться на поверхность пришлось минут пять. Сам автобус тоже довольно комфортабельный, к тому же мне досталось место возле окна и без соседа слева. Так что сейчас еду, гляжу в окно и радуюсь жизни. Кстати, по Ярославскому направлению я еду впервые в жизни (как по шоссе, так и по ж/д никогда не выезжал по нему за пределы Москвы). Мешает только лёгкий недосып...

Возвращение

4X_Pro
Сегодня вернулся в Москву. Заезд получился коротким, но я вполне им доволен. В четверг прогулялся вечером, посмотрел на звезды, снова понаблюдал Марс, Юпитер и Сатурн. А в пятницу отправился на прогулку в лес. Наделяся, что удастся застать остатки малины, которую в этом году я почти упустил. Но на самом большом кусте все уже ободрали, зато в другом месте несколько ягод все же удалось найти. Так что можно считать, что съездил не зря. А сегодня думал, как лучше поступить: собраться быстро и поехать домой на дневном экспрессе или вернуться вечером. В итоге победил второй вариант. Но к этому времени погода довольно неожиданно поменялась: пошел дождь, который то прекращался, то усиливался до ливня. И так почти всю дорогу. Но если ехать в электричке под дождем отчасти даже приятно, то вот шагать под ним по полю — не очень.
Единственное что не радует — это ситуцаия с CodinGame: там дело как-то не идет, никак не могу даже в середину бронзовой лиги пробраться. И никак не могу понять, почему: то ли на начальном наборе карт неправильно играю, то ли потом. Впрочем, тут вообще дело в том, что в любые карточные игры я могу учиться только на опыте, то есть сыграв какое-то количество раз и поняв, какие карты в каких ситуациях эффективнее использовать. Добавлено позже: впрочем, как выяснилось, проблема была в другом: в алгоритме выбора была очень тупая ошибка, из-за которой всегда бралась нулевая карта.

Пятый заезд на дачу

4X_Pro
Сегодня снова заехал на дачу. Зставил себя встать в 9:15 и поехал на электричке 11:06. Решил устроить своего рода тренировку перед поездкой с Миком и Hippo в Переславль и Ростов — проверить, реально ли мне встать и собраться в такое время, и при этом быть в более-менее адекватном состоянии. Для этого вчера хотел лечь в час ночи, но получилось «как всегда» — в это время только-только встал из-за компьютера. А пока поужинал и собрался спать, было уже 2:15, плюс еще заснул не сразу. Поэтому вставать было тяжело, а сейчас болтаюсь в неприятном состоянии «и уснуть не могу, и толком что-то делать — тоже». (Эх, вот оно, чувство вечно опаздывающего, о котором скоро отдельное сообщение напишу.)
Сама поездка тоже оказалась не самой удачной. Во-первых, несмотря на такое время, электричка очень даже ощутимо заполнена. Во-вторых, очень большие потери на стыковке с автобусом: электричка приходит в 12:02, а автобусы — в 12:20 и 12:33. Причем 12:20 — это большой автобус до Ногинска, а 12:33 — маршрутка, заходящая в дальнюю часть деревни. Я не стал дожидаться маршрутку, решив, что лучше 10 минут пройти пешком, чем 13 — простоять на остановке, но не учел, что автобус едет существенно медленнее. В результате маршрутка меня обогнала минуты за три до того, как я дошел до ее конечной. В общем, и по времени проиграл, и пешком лишний километр с небольшим прошагал.
Повезло только на последнем участке пути: примерно за километр до СНТ меня подвез мотоциклист. До этого я на мотоцикле никогда не ездил, и было весьма страшно, особенно на повороте, но с другой стороны, по ощущениям это ни с велосипедом, ни с машиной не сравнится. Но даже несмотря на это, общее время в пути составило 2:40 (еще 10 минут я потерял на ожидание электрички в Новогиреево, так как приехал с запасом из-за того, что электричка была последняя перед перерывом, и последствия опоздания были бы очень серьезные).

Слишком быстрая жизнь или События последних дней

4X_Pro
Опять жизнь несется слишком быстро. Точнее, слишком много идей, но слишком мало реализации. Видимо, лунное затмение или просто полнолуние влияет. Кстати, затмения я так и не увидел: слишком густая облачность… Эх, была бы тогда такая погода как сегодня!
Зато вечером пятницы пришла в голову мысль сделать группу с информацией по IT-конкурсам. И не стал, как обычно, идею откладывать, а приступил к реализации, засидевшись при этом до почти 7 утра. Но зато почти закончил оформление группы и нашел информацию о трех конкурсах, а также создал несколько тем для обсуждения. И правильно сделал, что занялся этим сразу, так как на следующий день мотивация уже пропала, и до сих пор не могу к группе вернуться. В субботу с подачи одного анонима на Ask написал в свой блог заметку о том, как проверять желания на истинные.
Еще пришла в голову идея своего собственного языка программирования, где фокус был бы на быстрой и компактной в плане записи обработке данных, хранимых в хешах и массивах, то есть таких операциях, как фильтрация, выборке подмножества ключей, сортировки по ключу и т.п. Впрочем, на самом деле писать совсем свой язык смысла нет, нужно только добавить некоторые вещи в Python или JavaScript на уровне синтаксиса. Например, неявные нумерованные параметры у стрелочных функций (типа $1, $2), чтобы не писать их имена явно, перегрузить ряд операторов для массивов и хешей, а также сделать сокращенную запись для взятия нескольких ключей хеша одним действием или взятия ключа у первого параметра функции. Ну и еще перегрузить операторы << и >> для преобразования хешей-строки в JSON и обратно (аналогично тому, как это сделано для ввода/вывода в C++). Полноценный интерпретатор, я, конечно, не сделаю, а вот траспиляцию — в принципе мог бы…
А сегодня DarLik вытащила меня в Братеевский парк, который открыли совсем недавно. Настолько недавно, что получилось смешно: когда я рассматривал Яндекс.Карту с выключенным Интернетом (у меня загружена оффлайн-версия карт), там рисовалось нечто непонятное, с отдельными зеленым островками. Но стоило подключить Интернет, как тут же карта перерисовалась и получился парк.
Сам парк произвел вполне благоприятное впечатление. Во многом напоминает Коломенское, но без такого перепада высот, как там. Я несколько переживал, что добрались мы туда слишком поздно, уже когда начало заходить солнце (DarLik — это единственный человек, кто умеет собираться еще дольше и медленее, чем я). А пока бродили по парку, стемнело совсем. Но в целом это оказалось даже к лучшему: самые лучшие кадры получились именно когда стемнело, в свете фонарей. Весь парк обойти не получилось (DarLik и длинные пешие прогулки — понятия плохо совместимые), мы толком посмотрели его среднюю часть. В парке много деревянных конструкций, сделанных чисто в декоративных целях. Когда я это увидел (еще на фотографиях, не вживую), сказал «отличный способ потратить много-много досок без какой-либо пользы». Впрочем, в Терлецком тоже подобное есть, просто не в таких количествах, и не так в глаза бросается. В общем, парк произвел хорошее впечатление, но слишком уж он от меня далеко, чтобы бывать там регулярно.
Еще внезапно произошел всплеск типологической активности. Во-первых, в одной из групп ответили на мое старое-старое сообщение об эннеаграмме. И даже сумели частично убедить, что зря я эту типологию считал недопсихософией, реально она куда ближе к КЛ. А во-вторых, Tau Svetvechnogo и SaintSeaDog слепили свою собственную типологию, похожую на соционику, но с более свободной расстановкой аспектов, и я пытался разобратся с тем, есть ли от нее какая-то польза. В процессе все больше и больше убедился, что нужно переходить к количественной соционике, но все никак не соберусь написать статью об этом.

Мини-конкурс на CodinGame

4X_Pro
Сегодня принял участие в очередном конкурсе от CodinGame. На этот раз нужно было спрограммировать бота для карточной игры по мотивам Warcraft. Уже за одно это разработчикам огромнейший респект — порадовали! Но, в отличие от предыдущих конкурсов, поменялся формат. Теперь конкурс проводится не за десять дней, как раньше состоит из двух частей, считаемых независимыми конкурсами. Первая — спринт: нужно представить решение задачи всего за 4 часа. Вторая — марафон — на ту же самую задачу (но с открытием лиг выше бронзовой) отводится 4 недели.
Сегодня был спринт. Началось все достаточно хорошо: я за час с небольшим разобрался в условиях и написал код, позволивший мне влегкую проскочить третью дубовую лигу. Причем еще решил писать на PHP, а не на Python, в расчете на то, что на этом языке никто другой писать не будет, и у меня будут шансы получить бонус за финиш первым по языку.
Но на второй правила игры немного поменялись, и бот стал играть неэффективно. Я стал обрабатывать эту ситуацию, усложнил код и в процессе переделки, как водится, насажал в нем ошибок. Поэтому следующие часа два ушли на отладку. Но даже когда удалось все отладить, оказалось, что бот все равно не может выйти в первую дубовую лигу. К тому же еще проблема была в том, что организаторы конкурса не учли, что из-за новых правил все ломанутся играть в первые четыре часа, и серверных мощностей будет просто не хватать. Расчеты боев велись с просто огромной задержкой, которая не давала толком ничего отлаживать…
Я попытался было изменить обработку одного из игровых моментов (выкладывание карт в начале игры: в первом варианте клалась первая доступна по мане карта, во втором стал искать оптимальный вариант по другим признакам и копить ману для него). Но в итоге стало еще хуже. Зато в процессе обнаружил, что бывают карты с нулевыми затратами маны, и их желательно играть сразу же. В результате откатил бота до прежней версии, добавил в него обработчик нулевых карт и отправил код за две минуты до окончания конкурса. Вскоре после этого посчитались первые результаты. Я увидел себя на 485 месте из 743, решил, что выступил ужасно, расстроился и переключился на другие дела.
Но каково же было мое удивление, когда сейчас, снова заглянув в CodinGame, обнаружил сначала сообщение о проходе в первую дубовую лигу, а потом и в бронзовую. И сейчас мой результат показывается то как 348, то как 374. Судя по всему, для кода, отправленного в самом конце соревнования, пересчеты идут до сих пор.
А мой расчет на PHP не оправдался: нашлось немало желающих писать на нем. Уж лучше бы Perl использовал: на нем всего 2 человека писало из всех семи сотен, а по трудоемкости примерно одинаково.

Новое испытание или лабиринт страха

4X_Pro
Сегодня DarLik реализовала свое давнее намерение: вытащила меня в «лабиринт страха», чтобы вызывать смещение «точки сборки» (впрочем, сама она не знает этого термина) и растормошить эмоционально. Мы договорились встретиться в метро на Чкаловской и поехать туда. Но почти в последний момент DarLik передумала, и решила ехать на такси. Зачем — не знаю, но убедить ее в том, что в период с 17:30 до 20 часов в центре Москвы о существовании такого средства передвижения как автомобиль, лучше не думать, не получилось. В результате тащились почти 50 минут, собрали все пробки, и задолбался даже водитель. А к тому времени, когда доехали, я пребывал уже в состоянии глубокого пофигизма ко всему.
И все же, когда только зашли в этот лабиринт, я реально испугался. Отчасти даже не из-за происходящего, а из-за того, что темно, шумно, и непонятно, куда двигаться. Но потом глаза привыкли, я научился ориентироваться, и мы пошли. Довольно быстро я сообразил, что нужно держаться подальше от стен (так как из них чаще всего выскакивала какая-нибудь пакость), и быть готовым к «атакам» сверху, то можно идти без особых проблем. И прошел бы этот лабиринт очень быстро, если бы не DarLik, которая начала тормозить и цепляться за меня.
Но вот когда выбрались, у меня начался, что называется, отходняк. Где-то часа полтора потом соображал с трудом, и только потом начал приходить в норму.

День почти без Интернета

4X_Pro
Вчера вдруг перестал работать проводной Интернет. Причем совершенно неожиданно: в какой-то момент вместо сайтов роутер стал выдавать свою страницу с сообщением о том, что кабель отключен, и все. Попытался было подключить кабель напрямую — никаких результатов. Написал на EMail, указанный на сайте провайдера — никакого ответа. Весь вечер в итоге просидел в оффлайне, лишь изредка выходя в Сеть с мобильной связи. Хотел воспользоваться этим происшествием для того, чтобы начать налаживать режим дня. Но получилось как всегда: решил доделать вывод последних фотографий из Instagram на главную страницу моего личного сайта. Причем взялся за это еще вечером, но никак не мог сосредоточиться, и только в 2:30 занялся всерьез. И сделал довольно быстро почти все, кроме одного: запускаемой по cron процедуры скачивания и сохранения в кеш файла с данными из Instagram. Причем вроде бы все работало, но файл в нужном месте не появлялся, и все! И только почти через час я случайно понял, почему: из-за symlinks, которые с локальной копии моего личного сайта вели на основной дистрибутив IntB. И файл создавался именно в каталоге основного дистрибутива. Но к этому времени уже было около 4 часов ночи.
А сегодня наконец-то достучался до техподдержки провайдера. Как выяснилось, надо было писать через форму в личном кабинете, только вот эта форма размещена так, что не сразу и найдешь. Отреагировали на удивление быстро — прислали мастера через час с небольшим. Он проверил кабель тестером и сказал, что проблема в том, что он поврежден. Стали искать, где именно может быть повреждение (а этот кабель у меня после последнего ремонта проложен очень хитро). Открутили порог в большой комнате, достали из под него кабель, и обнаружилось, что он в двух местах был задет саморезами. Причем вот что странно: когда их убрали, Интернет заработал. Так что теперь я снова на проводном Интернете.

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

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