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

Лог жизни

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


Тягостные дни

4X_Pro
Последние два дня были какими-то очень тягостными. Всё из рук валилось, как в прямом, так и переносном смысле, особенно вчера (вернее, уже позавчера). Сегодня с утра вроде всё было нормально, но ближе к вечеру опять начала ерунда творится. В частности, сильно глючило SiteKnockerBot, не хотел обновляться Windows и ещё много чего шло не так. Да ещё был момент, когда голова не соображала, мир воспринимался как сквозь мутное стекло. И только где-то около 21 часа всё резко стало налаживаться. А с ботом оказалось, что я загрузил версию, которая делает проверку в 100 потоков одновременно. Когда вернул на обычные 30, да ещё сделал их запуск с небольшой задержкой, всё заработало нормально.
Интересно, в чём тут дело? Погода (сегодня начался сильный снегопад), магнитные бури, биоритмический спад?

Броузер Beaker и Старый Добрый Интернет

4X_Pro
Пару дней назад с подачи 10geekа узнал про броузер Beaker. Его главная особенность — поддержка P2P-протокола Dat, позволяющего децентрализовано хранить данные и хостить сайты. Идея меня заинтересовала. Возникла мысль, что именно в подобных сетях может сохраниться (или наоборот, возродиться) дух Старого Доброго Интернета, так как там выполняются два необходимых для этого условия: 1) требуется хоть какой-то уровень знаний и заинтересованности, чтобы воспользоваться, что отсекает совсем уж обывателей, 2) сведена к минимуму возможность коммерциализации, благодаря чему там не будет баблорубов. В итоге есть шанс, что там сформируется сообщество технически продвинутых идеалистов-бессребреников, как это и было в старом Интернете. Кроме того, протокол подразумевает децентрализованное хранение данных, благодаря чему можно не боятся исчезновения сайта из-за непроплаченности хостинга или домена.
Под впечатлением от этого сделал статическую версию своего сайта и разместил там. Но увы, оказалось, что там нет ни чего-либо вроде каталога сайтов, ни тем более поиска. И попасть на такой сайт можно только по точной ссылке. Поэтому такая система больше подходит в качестве средства быстрого расшаривания данных, чем как альтернатива привычному Интернету. Впрочем, есть ещё проект HashBase.io, куда можно выложить копию сайта на хранение, и где что-то вроде каталога есть. Но при попытке это сделать что-то пошло не так. То ли влияет то, что я за NATом сижу, то ли что-то не работает как надо в самом Beaker.

Опять переделываю SiteKnockerBot

4X_Pro
Несколько дней назад попытался переделать SiteKnockerBot для Telegram. Хотел сделать количество работающих goroutines управляемым, для чего запускать нужное их количество при старте бота, а затем передавать им данные о сайтах для проверки через канал. Но увы, такой вариант почему-то оказался даже хуже того, что есть сейчас. Во-первых, медленнее: 1600 сайтов проверяются почти 40 секунд, во-вторых, после пары проверок падает из-за нехватки оперативной памяти. Пришлось вернуть всё как было. Хорошо хоть не забыл сделать резервную копию исходника (к gitу себя приучить по-прежнему не могу).
Сегодня решил пойти другим путём: переписал простукивающую часть для Node.JS. Но увы, результат оказался ещё хуже. Во-первых, полная проверка всех сайтов в списке занимает куда больше времени, чем на Go. Во-вторых, потребляет чуть ли не всю доступную оперативную память.
Расстроившись по этому поводу, вернулся к версии на Go. Но решил ещё раз посмотреть исходный код версии с каналами и нашёл причину утечки памяти! У меня resp.Body.Close() вызывалось через defer. Но если в старой версии каждая goroutine заканчивала работу после проверки одного сайта, то в новой был бесконечный цикл с чтением данных из канала, поэтому resp.Body.Close() просто никогда не вызывалась. В итоге убрал defer и стал закрывать и занулять resp.Body сразу после преобразования в строку. И теперь бот заработал как надо! И вроде ушла ошибка с DNS, из-за которой и начались все эти переделки. Только пришлось количество потоков параллельных проверок сократить до 25, из-за чего количество проверяемых сайтов за цикл сократится всего до 20 тысяч.

Дзен-канал: рейтинг растёт

4X_Pro
В понедельник со страхом заходил на Дзен-канал, ожидая, что карму ещё понизят, так как на прошлой неделе была всего одна публикация. Каково же было моё удивление, когда обнаружилось, что она подросла. Почему-то Дзен поменял мнение об уникальности и качестве материлов: теперь оценивает их на 11 и 7 соответственно. И теперь канал занимает 2651 место среди 361958 новичков! То есть результат получается выше 99%!
Тогда же я начал писать ещё одну статью, и написал первый вариант в бумажном виде. Сегодня хотел набрать на компьютере, но по разным причинам не сложилось. Но, думаю, до конца недели всё же сделаю.

Первый день Нового года — 2021

4X_Pro
Впервые за последние лет десять сумел проснуться первого января раньше полудня, если конкретно, в 11:30. Причём проснулся на удивление бодрым! Хотел было воспользоваться этим и отправиться на прогулку, как в далеком то ли 1989, то ли 1990 году, когда прогулка запомнилась и принесла кучу позитивных эмоций. Но выйдя на улицу, обнаружил, что там всё серо и мрачно, и даже в середине дня кажется, будто сейчас вечер. А ещё ночью прошёл ледяной дождь и улицы превратились в самый настоящий каток. Ходить приходится примерно в такой позе, в которой герой Quest for Glory ходит в режиме stealth. Поэтому вместо прогулки ограничился выносом мусора на ближайшую помойку.
Потом вернулся домой, посидел какое-то время, занимаясь мелкими доделками IntB. Затем стал смотреть розыгрыш «Русского лото», билеты которого получил от отца в качестве новогоднего подарка. Увы, это оказалось не самой удачной идеей. Обычно розыгрыш длится где-то минут тридцать, а в этот раз растянули на полтора часа, да ещё с кучей рекламы. Знал бы, что так будет, просто посмотрел бы результат в Интернете вечером, да и всё. Где-то к началу третьего тура обратил внимание, что во всех трёх билетах есть числа 52, 72 и 87, и в голове проскочила мысль, что либо 52, либо 72 точно не выпадет. Так и вышло: невыпавшим оказалось число 72.
Остаток дня всё равно прошёл мимо. Во-первых, снова навалилась усталость и ни на чём не мог сосредоточиться. Затем пришёл отец, помог убрать стол и забрал часть лишней еды, оставшейся от НГ. Потом в какой-то момент я просто заснул. Потом сыграл в HearthStone и сел писать это сообщение. Так и прошёл этот первый день года…

Новый год в Сети, часть четвертая — прогулка

4X_Pro
И вот наступил Новый Год. Наступил он как-то криво: такое ощущение, что с обращением президента промахнулись по времени на полминуты. Когда он говорил последние слова, на часах уже было 0:00. Сначала я думал, что это на планшете криво выставлено время, но всё же решил отправить сообщение «С новым годом всех, кто сейчас в Сети» на стену ВК и на этот сайт, и на серверах и там и там время отправки тоже оказалось 0:00. А бой курантов раздался чуть ли не в 0:01.
В этом году я решил дней оффлайна не устраивать. Как-то не чувствую в них больше необходимости. Да и годы с ними оказались весьма и весьма неудачными. Правда, поздравлять всех подряд из списка друзей, кто оказался сейчас в онлайне, как делал это раньше, тоже не стал.
Как обычно, первый час года пролетел очень быстро и незаметно. Всё, что запомнилось — это ощущение облегчения по поводу того, что такой тяжёлый год остался позади! Потом я всё же отправился на прогулку. Прогулка получилась очень короткой, дошёл только до Зелёного проспекта, посмотрел на фейерверки. Но даже несмотря на её краткость, был момент, когда всё же удалось почувствовать всеобщее новогоднее настроение и подзарядиться им!
Когда вернулся домой, почувствовал себя уставшим и переевшим. И раздражался на отца, что он опять столько наготовил, и теперь нужно как-то распихивать это по холодильнику. Причем мясо поставил готовить за 30 минут до НГ, когда уже стало ясно, что и так все переели. Ну почему нельзя встречать НГ по-европейски, чтобы на столе было немного закусок, бокал вина или шампанского (или даже чего-то безалкогольного, так как после COVID алкоголь переносится ощутимо хуже) и свеча?
Ну а сейчас сижу один в комнате, слушаю, как за окном постепенно затихает «пальба» и наконец-то осознаю, что всё, старость года позади! И реально начался новый год, а с ним — новые надежды и удлинение светового дня! И пожалуй, сейчас пойду спать, чтобы свести к минимуму нарушение режима дня.

Новый Год в Сети, часть третья — последний час

4X_Pro
Пошёл последний час 2020 года. Настроение какое-то странное: особой радости нет, скорее удивление «как, это наконец-то закончилось?» И ещё сонливость. Смотрю в окно на соседние дома. На удивление много тёмных окон! Но зато и гирлянд много, что радует!
Задумался над вопросом, а что же загадать в качестве желания… Сначала в голове была пустота: всё, что приходило в голову, казалось недостаточно важным. Но поразмышляв 15 минут, всё же смог сформулировать три главных желания года на следующий год.
Вообще, в этом и есть одно из ключевых предназначений Нового года: подвести итог и задуматься о главном. Иными словами, заглянуть в Вечность, которой в наше время слишком мало внимания уделяется… Слишком люди на сиюминутном сосредоточены.
Еще понял, что в этом году забыл о своей традиционной предновогодней прогулке. Обычно числа 29—30 отправляюсь на длинную прогулку в парк, где вспоминаю об уходящем годе. Но в этом году как-то не сложилось… Ещё хотел перечитать записи с прошлого НГ, но увы, пока писал это сообщение, прошло полчаса, и теперь уже просто не успеваю.
Ну что же, это, наверное, моя последняя запись в этом году. Следующую напишу уже непосредственно после НГ!

Новый Год в Сети, часть вторая — немного статистики

4X_Pro
Посмотрел свои статистику по итогам года ВКонтакте. Оказывается, за этот год я не заходил туда всего 21 день (345 дней онлайн из 366), просмотрел 1114 метров ленты. (Интересно, как они в метрах мерили пиксели? DPI что ли  отслеживали? Или просто поделили на стандартные 96 dpi, а потом пересчитали в метры.) Сделал всего 14 записей, зато 319 лайков и 95 комментариев. Но что реально впечатлило, так это просто огромное количество сообщений: 31722! Если предположить, что каждое сообщение я писал всего 10 секунд (хотя зачастую бывает и больше), то получится 88 часов, то есть больше половины недели!
А через мой личный сайт за год прошло ни много ни мало 40 790 человек! Это сравнимо с населением небольшого городка типа Переславля! И ещё 5 тысяч — через личный блог в ЖЖ. Кстати, в него, как выяснилось, я написал 165 записей и 338 комментариев или лайков.

Новый Год в Сети, часть первая

4X_Pro
Вот и всё, до Нового года осталось меньше 6 часов. Ещё немного и все неприятности года с симметричным номером уйдут в историю! Пришёл отец, накрыли стол (как обычно, он уделяет ему больше внимания, чем требуется). Елку я включил в этот раз ещё в полдень. Присутствует ощущение гармонии и спокойствия, но как-то не верится, что всё, дожили до конца года! Но и ощущения «НГ подкрался незаметно» тоже нет. Просто всё идёт так, как должно идти.

Официальные итоги 2020 года

4X_Pro
Подходит к концу очень необычный и непростой 2020 год. Как сказала про него goblincat, это год, который никого не оставит прежним. Увы, это верно и про меня. Поэтому я несколько поменял формат итогов, и вместо таблицы из 10 хороших и плохих фактов напишу просто о том, что в этом году было для меня значимым.
Для начала общее впечатление о годе. Где-то до 9 марта он воспринимался как в целом достаточно обыкновенный. Когда началось падение рынка, первая волна эпидемии и самоизоляция, впечатление было двояким. С одной стороны — страх «ой, что же будет» (а предрекали многое, вплоть до повторения кошмара 90-х), с другой — происходящее казалось каким-то приключением, квестом «выжить месяц не выходя из дома, а потом сбежать на дачу». Потом был очень дождливый май на даче, когда казалось, что в природе что-то поломалось и теперь осень будет длиться вечно, и только изредка на неделю сменяться каким-то другим сезоном. Но вот наконец дожди закончились, страх перед заражением тоже ослабел, и началось возвращение к нормальной жизни с прогулками на природе. И тут новый неожиданный поворот — друзья вступили в контакт с отцом и начали приезжать на дачу. Затем — испытания конца августа, эйфория, когда всё осталось позади, возвращение в город с большими надеждами на новую жизнь. Увы, очень скоро надежды потускнели и посыпалась масса новых проблем. И период с октября по декабрь войдёт в мою жизнь как один из самых тяжёлых. И только в середине декабря жизнь стала понемногу гармонизироваться. И даже «старость года» и зимнее солнцестояние прошли не так тяжело, как обычно. А ещё в последний день года выяснилось, что несмотря на все меры безопасности, я всё же переболел COVID-19, но в лёгкой форме.
Теперь о главном — о самореализации и пусках. Полноценных новых сайтов я в этом году не запускал. Но зато создал собственный канал на Дзен в надежде на то, что это позволит нести свои идеи в массы более эффективно. Кроме того, с подачи Tellы материалы там стали более практически ориентированными и конкретными, а не просто проповедями в духе «ограничьте материальные желания, откажитесь от амбиций, умейте довольствоваться малым и будет вам счастье», как это было раньше. Кроме того, я создал небольшой, но как оказалось, весьма востребованный проект VKPPh — броузерное расширение для выделения приватных профилей ВКонтакте. На данный момент 1410 загрузок, причём это только из Opera Addons — далеко не самого популярного броузера. К сожалению, добавить его в Chrome Store не представляется возможным ввиду того, что регистрация там платная. Вторым крупным проектом стала новая версия SiteKnockerBot, для которого я с нуля переписал «простукивающую» сайты часть на языке Go с активным использованием параллелизма, что дало возможность увеличить общее количество проверяемых сайтов до 100 тысяч за цикл. И, наконец, ещё одна набольшая поделка — это транслитератор для URL, который я сделал, в основном, для того, чтобы попробовать создание бессерверных сервисов на базе облачной инфраструктуры Amazon.
Также сделано немало шагов по другому направлению самореализации — ускорению загрузки сайтов. За этот год я сделал три проекта, связанных с ускорением сторонних сайтов, причём один из них, весьма нагруженный, верстал с нуля, не используя готовый шаблон CMS. И в процессе не только научился новым трюкам, которые заодно и в блоге описал, но и добился высоких показателей в Google Page Speed для весьма плотно наполненного сайта. И теперь могу это использовать как аргумент против тех, кто вещает на тему того, что заниматься этими показателями бесполезно, всё равно у сколь-нибудь навороченных сайтов они будут низкими.
В третьем направлении — децентрализованных социальных сетях, увы, прогресса в виде написанного кода нет. Единственный плюс — это наконец-то сложилось целостное видение, что я хочу получить в итоге. А также понимание, что я вполне могу реализовать это на Intellect Board, а не писать новый движок с нуля для этих целей. И самое главное, понимание, как это сделать, возникшее с подачи Xialtal и Yuri.
Ещё в этом году было много необычного опыта. Сначала — самоизоляция, когда я просидел дома 47 дней. Впрочем, конкретно мою жизнь она изменила не сильно. По сути, единственное, что изменилось — не было возможности сходить погулять. Зато была возможность порадоваться тому, что всех заставили жить так, как я мечтал в 2000-х годах. Потом — целое лето на даче безвылазно, ставшее самым долгим периодом вне дома — 112 дней. И, наконец, возможность пожить одному в конце года.
В этом году я также сделал небольшой апгрейд ноутбука. Нарастил оперативную память до 12 Гб и поставил в него второй SSD-диск. Теперь могу не экономить так строго место при установке программ для Linux. И вообще, не торопиться с покупкой нового компьютера (хотя видеокарты несколько не хватает для игр).
С точки зрения саморазвития самым большим шагом вперёд было прохождение курса по теории игр на Coursera. Я задумал это ещё два года назад, но всё откладывал и откладывал. Кроме этого, прошёл ещё пару курсов от Hexlet по Git и Node.Js, но там давались только самые основы, я ожидал большего. Также большое влияние на меня оказал просмотр ретрита о любящей доброте. Под его влиянием я снова вернулся к регулярным медитациям.
А вот новые места в этом году посмотреть почти не удалось. Исключением были только поездка в ту часть Павловского Посада, которую я не видел прежде, и поездка к озеру Светлое. Зато город стал для меня более связным из-за того, что я поездил по нему на электросамокате.
Зато ощутимо поменялся образ жизни. В самом начале года я повторил свой опыт с отключением Интернета, но на этот раз не на десять дней, а всего на пять. И тоже оказался очень доволен результатом: это даёт отличную разгрузку сознания и чувство сосредоточенности здесь и сейчас. Ещё было много нового опыта: во-первых, опыт безвылазного сидения дома в течение 47 дней. Оказалось, что даже для меня, человека домашнего, это не такое уж и простое испытание даже с Интернетом. И вообще, после трёх дней сидения дома работоспособность начинает падать, нужно всё же выбираться на прогулку на природу. Затем впервые прожил на даче практически всё лето: 112 дней. Но увы, такого скачка личной эффективности, как я ожидал, это не дало. Возможно, из-за того, что не было возможности уйти в оффлайн надолго или из-за постоянного присутствия отца. И, наконец, ещё одним необычным опытом стало то, что с ноября я живу один. А ещё случилось маленькое чудо: мне удалось наладить режим дня, теперь снова могу видеть утро!
В плане искательства халявы год был удачен тем, что выиграл 4000 бонусных баллов в «Активном гражданине», а также нашёл 2000 руб просто на улице.
А вот книг я в этом году прочёл гораздо меньше, чем хотел бы, всего около десятка. Самыми запоминающимися стали «7 навыков эффективных людей» Стивена Кови (я бы даже назвал её книгой года), «Диктатор» Снегова и «Страна утраченной эмпатии» Рощина.
В финансовом плане этот год можно назвать годом упущенных возможностей. Во-первых, крайне неудачная дата закупки акций — 21 февраля, за день до начала обвала рынка. Во-вторых, то, что я поторопился с продажей евро, и, отчасти, серебра. В третьих, что не решился сорвать долларовый вклад и вложить его в FXIT и SBSP. В-четвертых, что не решился сорвать ещё один рублёвый вклад и конвертировать его в облигации. В шестых, упустил возможность закупить серебро на Forex по цене $12 за унцию, которое потом, всего за четыре месяца, выросло до $27. И вообще, зря я поверил экспертам, которые с апреля до конца лета предреакли, что V-образного восстановления не будет, а придёт вторая волна кризиса, и не стал закупаться акциями даже на ту сумму, которая была в тот момент свободна. Но тем не менее, были и позитивные решения. Хоть я и поторопился с продажей серебра, прибыль от этого всё равно оказалась выше, чем у банковских вкладов. В марте я удачно сконвертировал два вклада в облигации в момент их подешевения и получил доходность около 7%. А суммарный прирост активов в цене оказался таким, что смог бы обеспечить мне прожиточный минимум на весь год. По акциям дивиденды составили 5.565%, но большей их частью я владею не полный год, а с февраля.
И по-прежнему мне не дают покоя два вопроса. Первый — это как быть талантливым одиночкой в современном Интернете, где отсутствие раскрутки — это риск остаться просто незамеченным, а её наличие — путь к коммерциализации (и последующей деградации из-за ориентации на требования рынка, а не внутренние критерии качества). Второй — это как воссоздать дух и стиль общения Старого Доброго Интернета на отдельно взятом домене второго уровня.
В общем, провожать этот год с проклятиями, как 2001 или 2013, я не буду, но и повторять бы не хотел.

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

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