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

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


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

t.me/4x_pro

Лог жизни

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


О «хочу», «надо» и «страшно»

4X_Pro
В пятницу ночью нашёл на своем жестком диске книгу «Между надо и хочу» авторства Эль Луны. Эту книгу я скачал когда-то давно, но, как это часто бывает, когда скачиваю на компьютер, а не планшет, благополучно о ней забыл. Сейчас прочитал, но особо нового для себя ничего не вынес. По сути дела, там те же идеи, что я несу в мир с середины 2000-х: нужно следовать своей мечте и проверять желания на истинность. Только в художественном плане оформлено очень ярко и красочно.
Но эта книга заставила меня задуматься о другом. Я в своей жизни всякие «надо» свёл к минимуму, но тем не менее, все равно что-то мешает быть полностью счастливым. И тут я понял, в чем отличие: в отличие от ситуаций, описываемых в книге, я стою перед совсем другим выбором: между «хочу» и «страшно». Причем этих самых «страшно» существует огромное количество. Собственно, именно это «страшно» и было изначально причиной, почему я решил избавиться от «надо». Точнее даже, от той части «надо», которая заставляла делать то, что «страшно».
Поэтому, на мой взгляд, просто противопоставлять «хочу» и «надо» достаточно бесполезно. Лучше использовать треугольник «хочу, надо, страшно» аналогичный треугольнику Карпмана.

О налоговой декларации, неприятностях и белой интуиции

4X_Pro
Сегодня сдал налоговую декларацию УСН. Обычно я это делаю в январе. Но в прошлом году Эльба.Контур перешла на другую систему цифровых подписей, которая работает только из под Windows и Mac (эх, пора создавать лигу борьбу с дискриминацией пользователей Linux, а то уже какой раз сталкиваюсь, что что-то делают даже под Mac, но не под Linux!). А перезагружаться лишний раз не хотелось. Плюс бессознательное подсказывало, что будут какие-то проблемы, и из-за этого все тянул время и откладывал. Так и вышло! Когда все же перезагрузился и стал подписывать декларацию, система стала ругаться на отсутствие сертификата. Запустил программу для просмотра сертификатов, она стала показывать, что хранилище пустое. Попытался найти резервную копию сертификата, но безуспешно. Точнее нашел копию, как потом выяснилось, этого самого хранилища на внешнем жестком диске. Но не помогло. В итоге так и пришлось писать в техподдержку.
Ответили на удивление оперативно. Оказалось, что когда я в сентябре делал этот сертификат, не прошел последний этап — его скачивание и установку (т.к. думал, что это происходит автоматически, а там нужно было еще целых два раза код из SMS ввести). Хорошо, что сертификат был уже готов, и не требовалось использования старой подписи, которая к этому времени давным давно закончилась.
Но увы, и тут обнаружилась неприятность. Для доступа к хранилищу сертификатов требовался пароль, который я благополучно забыл. Уже совсем было приготовился писать в техподдержку еще раз, но потом вспомнил, где он может быть записан (поскольку я знаю, что пароли, которые используются раз-два в год, забываются очень легко, был уже такой опыт с сертификатами WebMoney). И таки пароль нашелся и подошел! Так что сейчас уже отчет ушел по назначению, и даже пришла SMS, что он сменил статус на «получен инспекцией».
В общем, как всегда, на простое действие в очередной раз ушло гораздо больше времени, чем планировалось. И, главное, уже в какой раз замечаю: если я без видимых причин тяну с началом какого-то дела, то, скорее всего, в этом деле вылезут неожиданные проблемы. Видимо, неосознанная четырехмерная БИ даёт о себе знать.

Продолжаю эксперименты с ActivityPub

4X_Pro
Продолжаю разбираться с протоколом ActivityPub. Перечитал пример в блоге Mastodon и наконец-то разобрался с тем, как сообщение-объект вкладывается в сообщение-действие. У меня-то REST API головного мозга, и я привык, что действие определяется либо HTTP-методом, либо URLом, а в ActivityPub это не так. В результате получается несколько многословно, но зато в стиле 1Л.
Начал писать простейший клиент на PHP для взаимодействия сервер-сервер, который с моего виртуального пользователя на этом сайте пытается отправить сообщение на мой настоящий аккаунт на lor.sh. Но увы, пока что-то делаю не так: получаю ошибку "Public key not found for key http://4xpro.ru/activity_pub/me#main-key", хотя по логам видно, что lor файл скачивает. Видимо, по каким-то причинам не может извлечь из него ключы. Главная сложность в том, что посмотреть, что происходит на сервере, я не могу, разве что поставлю на второй VDS свою копию mastodonа, но это решение на крайний случай.
Еще в процессе тестирования опять столкнулся с тем, что gmdate('r') возвращает дату почти в нужном формате, только часовой пояс выводит как +0000 вместо GMT, из-за чего на приемной стороне не могут ее нормально разобрать. Эх, ну почему нельзя было сделать именно для gmdate нормальную выдачу с GMT? Уже какой раз сталкиваюсь. Приходится идти кривым путем: заменять +0000 на GTM через str_replace, чтобы не возиться с форматом.

Несколько дней вне дома

4X_Pro
Опять слишком много времени провожу вне дома. В четверг встретился с DarLik. Встреча получилась довольно странной, но в целом позитивной.
В пятницу отправились на прогулку с Tellой в парк Горького. Но увы, прогулку мы спланировали еще почти неделю назад, и не учли, что пятница окажется одним из самых холодных дней. В результате я успел замерзнуть еще до того момента, как дошли до парка. Tella тоже мерзла, но ей это совершенно не мешало болтать всю дорогу. Как выяснилось, зимой в парке Горького делать особо нечего: из интересного там разве что большой каток (но ставить на коньки меня или Tellу — идея чуть более чем неудачная, поэтому оставалось только смотреть), в самой дальней части парка, — домик, где зимуют две пары лебедей: черные и белые. Потом мы решили отправиться к Фрунзенской. Пока поднимались на мост, я вспоминал о том, как прятался на этом мосту от внезапного снега весной 2017 года. И о том, как ездил делать с него фотографии для конкурса летом 2018. На той стороне моста оказались огромные ворота с солнечным символом. Когда-то давно я их видел, но уже благополучно забыл об их существовании, и теперь снова увидел. Потом мы наконец-то добрались до Фрунзенской, засели в пиццерии, и я стал согреваться.
В субботу не пошел на игры из-за того, что во-первых, с отцом собирались в воскресенье на лыжах (но так и не сложилось), во-вторых, в то же воскресенье планировался какой-то игровой фестиваль, поэтому я ожидал, что народу в субботу будет мало.
А в понедельник, проснувшись, я увидел за окном очень яркий солнечный день и сразу же решил отправиться на прогулку в Терлецкий парк. Сначала, когда вышел, ощущения были такие, как будто уже весна! Добрался до первого Терлецкого пруда, сделал вокруг него полный круг, немного пофотографировал. Потом отправился домой, пройдя мимо Декоративного (на современных картах Утиного) пруда. По дороге вспоминал весну 2009 года, когда Мик искусственно отправил меня в состояние Я+Ты+. Думал о том, насколько все же тогда лучше я чувствовал включенность в жизнь. Сейчас же мне снова не хватает этого, возможно, из-за слишком смещенного режима сна.
А вечером наконец-то прошел игру Sentence, и получил то же чувство завершености и того, что все стало в поярдке, как было когда-то после прохождения Quest for Glory. Хорошо, что там нет привязки к реальному времени, так как прохождение растянулось более чем на месяц, хотя по сюжету проходит максимум две недели.

Снова о децентрализованной соцсети

4X_Pro
Сегодня неожиданно для себя вернулся к размышлениям о децентрализованной социальной сети, о чем немало писал в августе-сентябре. И теперь вроде сложилась в голове картина, как все должно быть устроено. Все же то, что я называю инфохабом, должно быть отдельно, идея насильственно интегировать его с Intellect Board — не очень хорошая. А в IntB нужно просто предусмотреть возможность указать в контактах свою страницу, поддерживающую ActivityPub, и, если она указана, выводить кнопки для подписок на тему/раздел/форум, где каждая тема будет выступать в роли виртуального пользователя, а точнее, в терминах ActivityPub, агента. Ну и возможность отправки уведомлений об активности типа «Создал новую тему на форуме» (для этого, возможно, создать отдельный канал). А дальше — все как я и задумывал раньше: блочный вывод на главной странице инфохаба с возможностью подписаться на каждый из каналов в отдельности или на весь поток событий в целом. И в качестве отдельных независимых сервисов реализовать шлюзы с ВК, Facebook и т.п. (Кстати, для Twitter и Instagram они уже есть.)
С другой стороны, проблема заключается в том, что некоторые типы каналов будут дублироваться и в IntB, и в инфохабе. Например, раздел со списком задач, раздел анонимных вопросов и т.п. И тогда имеет смысл подумать об еще одном варианте — двух разных сборках на основе общего кода, различие которых будет, в основном, в инсталляторе и начальных настройках. В общем, опять не могу определиться…
Впрочем, кое-что все-таки ясно: сервисы-шлюзы можно делать уже сейчас. Равно как и поддержку подписки в IntB. А еще можно сверстать статическую страницу для того, чтобы понять, как все должно выглядеть…

Бесолезный, но интересный опыт с Linux

4X_Pro
«Уплотнение жизни» закончилось, и в последние дни опять занимался тем, что получал бесполезный, но интересный опыт. (Впрочем, если рассматривать его с позиции «доказать, что можно жить под Linux и за счет этого реже обновлять железо», то не такой уж бесполезный.) Сначала попытался установить Windows 95/98 в DosBox. И даже отчасти получилось, о чем писал на форуме, но в итоге результат оказался совсем не тот, на который я рассчитывал. Потом тестировал работу старых игр под пятой версией wine. Вот там результаты порадовали: заработало почти все, кроме Majento PositionMeter. Впрочем, нашел ему альтернативу под Linux — RankTracker. Правда, приложение жутко громоздкое — 200 Мб (для сравнения, PositionMeter всего 7 Mb). И самое главное, не позволяет сохранять историю позиций, то есть придется их руками в Excel перебивать.
А еще не выдержал и поставил LXDE вместо Mate, и тему Lubuntu для неё. Уж очень меня достало неудобное меню в Mate, и то, что для Win+D и Win+L (сворачивание окон и блокировка) нужно переключать раскладку, тогда как LXDE воспринимает эти комбинации хоть на русской, хоть на английской. Так что теперь собрал плюсы и дистрибутива Mint (корректная работа с принтером и подключаемыми наушниками) и LXDE (легкий и привычный интерфейс).
Сегодня занялся дооптимизацией ядра. Вынес почти все возможное в основную часть, кроме модулей WiFi, nouveau и zram, вынос которых из модулей приводит к глюкам, избавился от initramfs. В результате время загрузки теперь снова составляет всего 5.1 секунды!
Пытался еще экспериментировать с выигрышем в плане скорости работы Интернета за счет смены протокола congestion control, но безрезультатно. До сервера провайдера скорость почти не меняется. А если выбрать в качестве цели что-нибудь дальнее (я выбрал сервер в Сиэтле, так как там же находится сервер CodinGame), то разбросы в скоростях получаются такие, что непонятно, что тут больше влияет: мои настройки или текущая загруженность канала.
Еще окончательно достала нехватка места, поэтому поступил радикально: снёс recovery-раздел, который производитель почему-то разместил на SSD, а не втором диске. В результате Linux-раздел стал почти вдвое больше: 25 Гб вместо 13. И теперь могу поставить Postgres, MongoDB и NodeJS, а так же тот же wine.
Утром также была мысль попробовать поставить фильтрующий proxy под названием privoxy (точнее, сначала вообще хотел написать сам что-то такое на go), чтобы резать рекламу, счетчики, виджеты, автоматическое видео и всякие надоедливые штуки типа Chatra/Jivosite. Но пока так и не решил, будет ли это лучше, чем использование встроенных средств Opera + JavaScript по белому списку с помощью расширения ScriptSafe.

Инфоголизм и циклическое сканнерство

4X_Pro
Несколько дней назад пришло совершенно неожиданное осознание, почему я все время переключаюсь с одних жизненных задач на другие и не могу заниматься чем-либо более трех дней подряд, за исключением разве что отключения Интернета, и возвращаюсь к исходной задаче только спустя несколько месяцев, а то и лет. (В терминологии Барбары Шер это называется циклическим сканнерством.) Причем возвращение происходит обычно тогда, когда мне снова попадется какая-то информация по этой теме.
Все оказалось достаточно просто. Это не столько результат проблем с самодисциплиной, как я думал раньше, сколько избегание попаданий в зоны неуверенности. Таких зон у меня несколько. Первая — необходимость делать что-то в условиях отсутствия твердого понимания, как нужно действовать, необходимости экспериментировать, импровизировать, действовать вслепую. Например, писать что-то сложнее программ школьного уровня на языке программирования, в котором пока еще толком не знаешь возможностей стандартных библиотек. Вторая — искать какую-то неконкретную информацию с высоким риском наткнуться на ненадежный источник. И третья — взаимодействовать с людьми за пределами каких-то стандартных (либо для меня, либо для них) сценариев взаимодействия. Кстати, сейчас, расписав все это, понял, что во всех этих случаях так или иначе задействуется пятый уровень ТУАИ.
Работает это крайне просто: каждый раз, когда предстоит что-то подобное, бессознательное резко снижает интерес к этой задаче и резко повышает — к любой другой информации. Начинается тот самый «информационный запой» или «инфоголизм», когда поглощаю кучу бесполезного контента, понимаю это, но не могу оторваться. Иногда бывает другой вариант — бессознательное просто вытесняет то или иное намерение так, что потом я о нем вспоминаю только если увижу запись в блоге или списке «замыслы и планы». Развиваться эта стратегия стала где-то в 2003—2004 годах, когда я стал выходить в Интернет через GPRS, а не модем, и время пребывания в Сети перестало быть ограниченным, а в серьезную проблему переросла после Второго Подключения.
Таким образом, получается, что проблема не в избытке информации в современном мире, как я думал раньше, а именно в этой деструктивной стратегии убегания. Просто в условиях, когда переключаться не на что, эта стратегия не срабатывает, поэтому и кажется, что отключение Интернета помогает. Впрочем, не всегда, так, например, в период ухода в оффлайн в прошлом году я целыми днями играл в Arcanum и не мог оторваться.
И теперь понятно, как происходит возвращение: повторный интерес к теме возникает не просто тогда, когда попадается новая информация, а когда приходит та информация, которая дает ответы на те вопросы, из-за неуверенности в которых произошло переключение. Ну или решение найдется само, после того, как я покручу задачу в голове достаточно времени.
Реально же решить проблему, по идее, должно выделение специального времени на обдумывание, в течение которого я прокрутил бы задачу в голове и нашел бы решение, которое перевело бы ее в зону уверенности — то самое состояние целостного видения, которое я описывал где-то в конце прошлого лета. И, в общем-то, решение я тоже тогда нашел: выделять вечером часа полтора-два просто на обдумывание имеющихся проблем и задач. Впрочем, против неуверенности, связанной со взаимодействием с людьми, это не поможет. А вот против остальных — вполне.

Возвращение на игры

4X_Pro
После долгого перерыва выбрался на настольные игры. Встреча получилась какой-то странноватой, но в целом не могу сказать, что прямо уж совсем плохой. Сначала играли в «японский бенг» на четверых, и там я дважды выиграл — один раз за ниндзя, второй раз — за самураев. Потом пришло еще несколько человек, стали играть всемером. Тут дело пошло несколько хуже: один раз играл за ронина, но особо ничем не отличился, потом за сегуна, но игра с самого пошла криво: никто не понимал, кто за кого. В итоге выиграл ронин (за которого играл Dexter) с перевесом в одно очко.
Потом пришли еще люди, начали уговаривать на CodeNames. Я в качестве альтернативы предложил «Каркассон», на что согласились Dexter и Э.Х. Сыграли две партии, но увы, то ли я не умею в «Каркассон» нормально (хотя не помню особых промахов), то ли они играют лучше меня, но в итоге я в первой игре был на втором месте, во второй — на последнем с большим отрывом. Потом Э.Х. ушел, а на его место сел Ар.В. И я снова оказался на третьем месте с еще большим отрывом.
Причем и во второй, и в третьей игре Dexter дважды соединял свои поля так, так, что у него на поле оказывались две фишки, у меня — одна, и я лишался очков, которые мог бы за это получить. Затем в конце сложилась интересная ситуация: я не мог победить сам, но мог определить, кому достанется победа. Тогда мне пришел очень редкий квадрат, с помощью которого можно было завершить город и соединить дорогу так, что я в результате получал 8 или 9 очков, а Ар.В. — целых 18. Или же можно было поставить этот квадрат в другое место и получить 1—2 очка. Я долго колебался, но потом все же решил подыграть Ар.В., во многом из-за того, что Dexter дважды «сгонял» меня с полей, да и во время игры в «бэнг» был один неприятный момент. В итоге, когда игра закончилась, оказалось, что Ар.В. обошел Dexterа всего на одно очко. Тот сильно возмущался, долго и нудно разъяснял мне, что нужно играть на разницу, и мой ход в помощь Ар.В. был неправильным, хоть и давал мне максимально возможное количество очков. Причем ситуацию осложняло то, что тот ход, который объединил поля Dexterа, формально сделал сам Ар.В., но там была такая ситуация, что любой другой ход был бы для него гораздо менее выгоден, а Dexter, наоборот, предпоследним ходом помог мне закрыть один город, хотя это уже ничего не решало.
В общем, домой я отправился с каким-то очень противоречивым впечатлением от всего этого. Надеюсь, Dexter не слишком обиделся. А еще по дороге обратно обнаружил, что метро подорожало, причем на целых 2 рубля сразу! Плюс еще домой добирался криво: решил ехать через Площадь Ильича, а не Марксистскую, а там закрыли вход на ремонт, пришлось спускаться через Римскую, и поезд уехал за 20 секунд до того, как я оказался на станции. Пришлось ждать еще целых 5 минут.

Несколько последних дней и неприятности по freelance

4X_Pro
В воскресенье засиделся до утра. Сначала пересобирал ядро, потом обнаружил, что в результате пересборки получился мощный скачок производительности у Intelовской видеокарты: в BMark показатели выросли до 2300 (в то время как на ядре 5.x было всего 1500—1800 в зависимости от настроек), в GLmark — до 890 вместо 510. Интересно, чем это вызвано? Тем, что в старом ядре нет защит от всяких Spectre и Meltdown, или же реально в более новых версиях пошли какие-то серьезные ухудшения в архитектуре? Помимо всего прочего, еще и температура процессора снизилась: при полном простое падает ниже 50 °C, а сейчас, когда открыт броузер, в котором я пишу текст, колеблется в диапазоне 50—52 °C. В общем, не зря я ядро менял!
В понедельник днем отправился на прогулку, о чем писал в предыдущем сообщении. Еще по дороге думал о том, что вот ведь странно: в детстве первая половина дня не принадлежала мне из-за школы, а теперь, хоть многое в жизни изменилось с тех пор, всё равно не принадлежит по-прежнему, но теперь уже из-за сбитого режима дня…
Вечером встретился с DarLik. Сначала посидели в «Граблях» на Пушкинской. Она уговорила меня выпить два глинтвейна зачем-то (хотя во втором не было никакой необходимости). Потом поехали к ее бывшей соседке О.Г., посидели у неё какое-то время. В общем, встреча получилась какая-то странная.
Вчера просидел весь день дома. Нашел очень годный сайт для отслеживания ситуации по акциям: можно собрать виртуальный портфель, видеть его статистику и смотреть нормальные свечные графики и показатели типа всяких P/E, P/BV и тому подобных.
А сегодня снова вышел на небольшую прогулку сразу после подъема. Все же это реально помогает выйти из режима «полярной ночи» и иначе взглянуть на мир. Даже несмотря на то, что я ни с кем не взаимодействую, дневной ритм города как-то вовлекает в себя и дает возможность настроиться на то, чтобы не тратить время непонятно куда.
И в целом вроде бы уплотнение жизни заканчивается. Но повисла неприятная ситуация: на сайте, SEO которого я недавно занялся, нужно заменить слишком «тяжелые» картинки на оптимизированные версии, но сделать это сам с тем доступом, что сейчас есть, я не могу. Нужно либо включить так называемый «расширенный режим», но у него есть проблема: он неотключаемый, и при его включении техподдержка хостинга перестает заниматься поддержкой верстки сайта, поэтому если я его включу втихую, это потом может стать очень неприятным сюрпризом для клиента. Сам клиент, кстати, когда я ему написал про то, что надо бы этот режим включить, вообще, похоже, не понял, о чем речь идет. А техподдержка не понимает, что я не хочу его включать и шлет отписки (да еще, наверное, считает меня тупым втихую). Как же я ненавижу ситуации, когда не получается что-то сделать не из-за того, что это сложно/лень/не знаю как, а из-за проблем с коммуникацией, с тем, что кто-то просто чего-то недопонимает! И самое главное, непонятно, как из этой ситуации выбраться…

Внезапная прогулка

4X_Pro
Вчера, проснувшись, увидел, что за окном впервые за не помню сколько уже дней солнечно. И решил, что это нельзя упускать! Отложил все, и отправился на прогулку. (Вот они, плюсы жизни в иньской модальности — по настроению, без планов и расписаний.) Сначала хотел было пойти в Терлецкий парк, но передумал, и отправился в Измайловский, но вошел в него возле Новогиреевской улицы, а оттуда пошел к Красному пруду по диагональной дороге. Шел и вспоминал игру Quest for Glory, потому что лес почти без снега во многом напоминал первую часть игры, где действие происходит ранней весной. У пруда какое-то время постоял, уйдя в себя, стараясь по-максимуму почувствовать гармонию с природой и полноту радости этого дня и внезапной прогулки. Хотел еще сделать несколько фотографий, но так и не стал. Потом отправился домой, причем не напрямую, а отправившись сначала в лес вдоль Красного ручья. К моему удивлению, когда вернулся домой, оказалось, что прошло даже чуть больше часа, хотя изначально я собирался уйти минут на 30—40.

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

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