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

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


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

t.me/4x_pro

Лог жизни

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


Сонные настолки

4X_Pro
Сегодня решил сходить на настольные игры. Точнее, изначально планировал еще в пятницу, но тогда все отменилось. Впрочем, оно и к лучшему: это дало возможность сходить на прогулку к Лебедянскому пруду. Но получилось как всегда: засиделся почти до 7 утра, отчасти из-за того, что хотел описать впечатления. И встал в совершенно «никаком» состоянии. В какой-то момент даже подумал о том, чтобы остаться дома. Но на следующей неделе я на игры вряд ли пойду, поэтому решил, что сегодня нужно все же выбраться. Принял меры по тому, чтобы настроиться: прошел несколько заездов в «Клавогонках», затем воспользовался ЭСП «Темная комната» и вроде бы пришел в себя.
Как это ни странно, игры прошли отлично. Сначала играл в «Колонизаторов», где весьма убедительно выиграл, уйдя в отрыв еще в самом начале. Правда, карта там была ужасная: все ресурсы одинакового типа сгруппированы в кучу, овцы и пшеница — на редких числах типа 2, 3, 4, 11. Зато у меня были глина и доски на 6 и 8 соответственно. Еще был момент, когда упустил то, что Э.Х. догнал меня за счет наличия бонуса за длинную дорогу (у нас тогда было по 7 очков). Но потом мне стало приходить много камней и глины, причем глину я мог менять через порт, в результате построил еще 2 города. А потом пришло 4 глины и 4 доски, я соединил свои два стартовых города весьма кривым путем, отобрал у Э.Х. бонус за длинную дорогу и закончил игру с 11 очками.
Потом пришли Ал.С. и К.Ш. (которая до этого на играх не появлялась уже давно), и стали играть в «Меч самурая» aka «японский бэнг». Отыграли три раза. Первый раз играли вшестером — небалансовый вариант, когда у самурая победные очки умножаются на два. Все были уверенны, что самураем является игрок справа от меня, команда ниндзя уверенно побеждает (впрочем, был момент, когда опасались что выиграет ронин, за которого принимали то Tellу, то К.Ш.). Но в конце игры ситуация повернулась неожиданным образом: самураем оказалась Ал.С., а тот игрок был ронином. И расклад изменился совершенно неожиданным образом: 12:12:0. Спасло от поражения нас только то, что К.Ш. приберегла карту даймё.
Во второй игре я был ронином. И игра началась очень неожиданным для меня образом: на старте было очень много карт стремительности, хладнокровия и доспехов, но только одно оружие и одна защита, поэтому я толком ничего не мог сделать. Примерно до середины игры я притворялся самураем, но потом стало ясно, что меня вычислили, и я начал играть против всех. В какой-то момент я собрал у себя 3 жетона чести, в то время как у двух игроков оставалось всего по одному. Тут я разыграл все карты, чтобы меня нельзя было атаковать. Колода заканчивалась, и я уже думал о том, что имею неплохие шансы на победу. Ал.С. даже была уверена, что команда самураев проигрывает. Но тут Tella (которая была сегуном и сидела сразу за мной) разыграла целых две чайных церемонии. У меня снова появились карты, причем не пришло ни одной защиты. В итоге она сумела отбить у меня жетон чести, а ход до меня уже больше не дошел. В итоге игра закончилась со счетом 4:4:3, как сказала Ал.С., победили все, кроме меня.
К этому моменту снова стал сказываться недосып, а также духота в игровом помещении, и я отправился домой. Потом узнал, что Ал.С., К.Ш. и еще двое засиделись в клубе аж до 0:45 и чуть было не опоздали на метро.
В общем, вполне доволен встречей, хоть и очень сильно устал. Видимо, сказалось еще и резкое изменение погоды: после трех весенних дней снова наступила зима, и сейчас за окном метет метель.

Большая закупка и весенняя прогулка

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

Прощай, МинБ!

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

Циклическая смена интересов продолжается

4X_Pro
Опять у меня циклическое переключение интересов. Всю эту неделю занимался ядром Linux: сначала оптимизировал свое самосборное (и вышел на время загрузки 1.5 секунд ядро, 3.2 секунды userspace без отключения MySQL, который добавляет секунду). Потом наткнулся на несколько интересных статей про драйвера Linux. Изучил и понял, что в общем-то, теперь в голове сложилась картина, как писать драйвер сложнее, чем printk("Hello world"). В частности, более-менее разобрался со стеком USB и обработчиками прерываний.
Но теперь меня с одной стороны сносит на возврат к работе над IntB (накопились мысли о том, что можно доделать), с другой — опять накатило небольшое уплотнение жизни.

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

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.

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

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