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

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


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

t.me/4x_pro

Лог жизни

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


Настройка нового VDS, день второй

4X_Pro
Отоспавшись, сходил на небольшую прогулку, потом вернулся к настройке сервера. Во-первых, решил явно выключить компрессию на VPN, так как видел упоминание, что она может серьёзно снижать производительность, и так и не понял, включена ли она по умолчанию. А данные всё равно и так обычно сжаты: либо gzip-сжатие в протоколе HTTP, либо изначально сжатые картинки.
Потом взялся за настройку i2pd. По предыдущему опыту знал, что с ним бывает много проблем, поэтому и откладывал его на самый последний момент. И без проблем не обошлось, но совершенно неожиданных. Началось всё с того, что сначала i2pd отказался запускаться из-за опции meshnets.yggdrasil = true. Стал выяснять, в чём-то дело. Оказалось, что эта опция появилась совсем недавно. Пришлось подключать сторонний PPA и ставить оттуда более новую версию i2pd. Поставил, вроде запустилось. Указал в настройках, что Web-консоль и proxy сервер должны ждать соединений не на 127.0.0.1, а на IP-адресе VPN-сервера. Попытался подключиться, но без толку! Делаю netstat — всё равно висят только на 127.0.0.1 и всё. Ломал голову очень долго… Пытался в какой-то момент даже указать 0.0.0.0 для консоли и достучаться снаружи без всяких VPN, но без толку! И только потом дошло, что опять забыл про uwf и не прописал там правила для соответствующих портов. Причём не разрешил нужные порты не только для i2pd, но и для yggdrassil тоже.
Исправил, запустил, всё вроде заработало! Но в Web-консоли i2pd почеуму-то показывался Firewalled mode. Долго читал и документацию, и разные сайты в попытках найти ответ, что же делаю не так. А он оказался простым: нужно ещё разрешить те же порты и по UDP. Только после консоль написала, что всё хорошо, и стали появляться транзитные соединения. Потом ещё долго думал, стоит ли разрешить максимальную пропускную способность для своего i2p-узла или же оставить лимит на уровне 2 Мбит/с. В итоге пока остановился на втором варианте — всё же боту и VPN траффик важнее. Главный плюс — в процессе всего этого узнал много нового. В частности, разобрался, как вообще сконнектить i2p и какие-либо свои ресурсы типа сайтов или IRC-серверов. Осталось только старый личный сайт (который на xxxxpro.ru находится) переделать в духе Web 1.0.

Настройка нового VDS, день первый

4X_Pro
Вчера после долгих колебаний всё же решился взять второй VDS, о чём впервые задумывался ещё с февраля. Арендовал его на VDSCOM, так как это один из немногих хостеров, где есть дешёвые серверы с безлимитным каналом в 1 Гбит/с. На сервер я планировал перенести своих Telegram-ботов, поднять VPN, а также узлы i2p и yggdrasil. Собственно, такая высокая скорость канала мне ради SiteKnockerBot и требовалась.
И вот наконец-то сервер готов! Зашёл, осмотрелся, и обнаружил, что нет адресов IPv6, хотя я специально подключал IPv6-сеть как дополнительную опцию. И, главное, в панели управления про них тоже ни слова! Пришлось писать в техподдержку. Там сообщили мне эти адреса и дали ссылку, как прописать их в настройках. А потом решили прописать сами и перезагрузили сервер. Я очень удивлялся, когда он внезапно исчез со связи! А ещё у них бардак творится с размером подсети, которую мне дали: на сайте написано, что дают всего /125, в ответе техподдержки было написано /80, а в настройках прописали стандартные /64.
Дальше настроил VPN. Взять и воспользоваться готовым скриптом — это не есть путь Настоящего Компьютерщика, поэтому нашёл инструкцию и стал делать по ней вручную. Но просто взять и настроить — неинтересно, поэтому без приключений не обошлось. Сначала я хотел повесить VPN на tcp-порт 443, чтобы подключение на первый взгляд выглядело как обычный https-запрос. Поставил, протестировал. Вроде заработало, но тут обнаружилось, что хотя адреса IPv6 дали, но обратиться куда-либо вовне не получается: шлюз возвращает «no route to host». Видимо, админы хостинга забыли прописать разрешающее правило на самом шлюзе. Написал в техподдержку ещё раз, но, судя по всему, она отвечает только в рабочее время. (Хе-хе, это у меня вечер и ночь пятницы — пик активности). Так что решение вопроса с IPv6 отложилось до понедельника.
Решил поэкспериментировать, насколько различается VPN с TCP и UDP. Как выяснилось, разница очень существенная, почти в два раза. Решил, что пока всё-таки перейду на UDP. Но держать сервер на UDP-порту 443 как-то глупо, поэтому решил выбрать другой порт. Поменял порт, а также заодно ещё несколько настроек: жёстко задать алгоритмы шифрования и аутентификации, чтобы всё быстрее согласовывашлось на этапе подключения, и уменьшить размер MTU до 1400, чтобы не было фрагментации пакетов при подключении через мобильные сети. И вдруг подключение перестало работать! Стал поштучно отменять каждую из настроек, кроме порта (так как думал, что уж тут-то накосячить негде), но без толку. И только потом вспомнил, что на сервере включён ufw, и нужно прописать правило для подключения к новому порту!
Затем решил перенести ботов. Поскольку прежде делал это уже два раза, опыт был, и перенос удалось выполнить совершенно без проблем и с минимальным простоем: меньше 15 минут. Точнее, эти 15 минут исчезли из логов, но на старом сервере ещё работала мониторинговая часть, которая отправила бы уведомления, если бы возникла такая необходимость. Потом отключил в Яндекс.Облаке виртуальный сервер, где боты были раньше и подумал «ну всё, теперь можно удалить, наверное». Но не стал этого делать. Как оказалось, правильно! Буквально через 10 минут вспомнил, что забыл забрать один файл — настройки sysctl для SiteKnockerBot. Пришлось включать обратно… Причём в облаке при включении/выключении виртуальной машины IP-адрес меняется, но я этого не учёл, и долго пытался сконнектиться на старый по сохранившимся настройкам. И только скопировав тот файл, смог сказать «Прощай, Яндекс.Облако!» Кстати, впечатления от Яндекс.Облака остались противоречивые: с одной стороны, просто отличная скорость каналов (даже на новом VDS чуть ли не на порядок меньше), с другой — отсутствие внешних IPv6-адресов и совершенно грабительские цены — в месяц получалjсь около 800 рублей за сервер с 20% ядра, медленным HDD и 1 Гб оперативки, причём часть из них — за «белый IP» и совершенно ненужную мне услугу «Cloud DNS».
Разобравшись с этим, я решил было попробовать подключиться с Android. Залез в настройки, там множество опций, и совершенно непонятно, что выставлять для подключения именно к OpenVPN. После недолгого поиска выяснилось, что готовой поддержки для OpenVPN в Android нет, и всё-таки придётся ставить приложение. И тут я подумал, что раз приложение придётся ставить по-любому, то почему бы не попробовать WireGuard. (Изначально я от него отказался именно из-за необходимости ставить стороннее приложение.) Сказано — сделано. Но пришлось разбираться ещё и с его настройкой. И тут ждала первая неприятность. Под Linux он попытался собрать модуль ядра, но не смог — не хватило каких-то symbols. Ядро у меня старое и самосборное. Искать, что там нужно включить обратно, и пересобирать ядро не хотелось от слова совсем, ставить второе из дистрибутива и перезагружаться — тем более. Поэтому решил ограничиться тестом на Android. Поставил для него клиентское приложение, далеко не сразу разобрался с настройками, но в итоге запустил. Потестировав, выяснил, что WireGuard реально даёт неплохой выигрыш на WiFi. Скорость загрузки была порядка 50 Мбит/с против 35—40 у OpenVPN. Но когда переключился на 4G-соединение, результат был обратный — OpenVPN стал уверенно выигрывать. В итоге окончательно решил остаться на нём.
Остаток ночи провёл, экспериментируя с различными размерами MTU в попытках выжать из VPN больше скорости. Но особой разницы увидеть не удалось. Ещё попытался было включить TLS-аутентификацию, но безрезультатно. Уж не знаю, что делал не так, но она так и не заработала. Зато поставил yggdrasil. Вот он завёлся сразу! Правда, потратил кучу времени на то, чтобы собрать список хостов и привести к нужному формату. Почему никто не сообразил выложить их в таком виде, чтобы можно было бы просто скопировать в файл настроек?

Очередные настолки и день спада

4X_Pro
Вчера был дурацкий день. Начался он с телефонного звонка, который поднял меня на какой-то очень сильно неподходящей фазе сна. И весь остаток дня я был в каком-то непонятном состоянии: вроде и всё хорошо, но внутри крутится какая-то совершенно непонятная раздражительность. Из-за этого даже сомневался, идти ли на настолки. Tella отговаривала, но с другой стороны, в субботу я тоже собирался пропустить, и, получалось, до дачи оставалась всего одна возможность — в следующую среду. В итоге сделал даже расклад на Таро. На вариант «ехать» выпала перевернутая тройка пентаклей, что тоже счёл не очень хорошим знаком. Но всё же поехал.
Изначально хотел было приехать к 19:00, но, как всегда, прособирался и добрался только в 19:45. К этому времени уже собралась компания игроков в «Меч самурая» aka «японский бэнг», и присоединиться к ним не было возможности. Из-за этого стали играть в «Project L», в просторечии именуемый «тетрисом». Когда-то я один раз смог сыграть в него прошлой зимой, и с тех пор так и не складывалось. И вот, наконец, смог сыграть снова! Но в «Project L» и «Роскоши» у меня всегда есть проблема в том, чтобы определить момент, когда нужно переходить от накопления ресурсов к активному набору очков, поэтому закончил в итоге третьим из четверых.
Потом пришла К.Ш. и мы сели играть в «японский бэнг». Сначала игра шла просто отлично: Ал.С. спалила всем, что она играет за самурая, а К.Ш. — за ниндзю. Потом я применил «боевой клич» и «дзю-дзюцу» и за один ход отобрал целых 3 жетона чести. Но вот дальше как-то дело заглохло: никак не могли определить, кто ронин. Я на начальном этапе выдвигал версию, что это Tella, потом подозрение пало на другого игрока, который ходил последним. Потом начали подозревать меня, а потом соседний со мной игрок вдруг решил, что ронин — это К.Ш. Я же подозревал, что ронин как раз он, и тогда получалось, что он выигрывает, так как у него было 4 жетона чести, которые у ронина умножаются на три. В общем, началось то, что я называю «слишком мало ходов, слишком много разговоров». От этого, а ещё и от недостатка кислорода начала болеть голова, и всё раздражать, особенно громкие звуки. Но в итоге мы всё же победили с разгромным счётом. Ронином и правда оказалась Tella, а К.Ш. в конце выложила три карты «даймё». Да и я большую часть добытых жетонов сохранил, только одного лишился и один сознательно отдал К.Ш. В общем, в итоге у нас было то ли 10, то ли 11 очков. Кое-как доиграв, срочно отправился домой. Возвращение было ужасным, было какое-то ощущение загаженности организма.
Сегодня отоспался, пришёл в норму, но весь день была какая-то вялость. Делать ничего не хотелось от слова совсем. Даже второй VDS-сервер так и не купил, хотя собирался. Только написал ещё одну заметку в блог IntB. Под вечер поспал немного, и теперь активность повышенная. А ещё нашёл возможность потренироваться в «Роскошь» онлайн — на сайте BoardGameArena.com. Я на нём регистрировался ещё в 2019 году, но забросил, так как подумал, что бесплатно поиграть не получится. Но оказалось, что на бесплатном тарифе можно присоединяться к чужим играм, а по ночам играет довольно много платных пользователей из Америки, и можно присоединяться к ним. В общем, буду знать о такой возможности!

Сделал dev-блог про IntB

4X_Pro
Вчера переделал на сайте IntB раздел новостей в полноценный dev-блог, настроил автоматическую трансляцию в группу ВКонтакте, и написал первые две заметки. И в целом очень рад, что эта идея пришла мне в голову. Мало того, что это полезно с точки зрения SEO, это ещё и форма самомотивации: доделать что-то, чтобы рассказать об этом в блоге. Или рассказать об IntB то, что не вписывается в рамки офицальной документации, например, то, с какими проблемами пришлось столкнуться и как было найдено какое-то решение. Правда, есть опасение, что тут может получиться как всегда — начну с сильного «хочу», которое затем превратится в «надо», или же опять снесёт потоком жизни…

Неудачный день

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

Заметка в Instagram от April 14, 2022 at 09:46PM

4X_Pro
Сегодня очень неожиданно выбрался на прогулку. Дело было так: сначала пошел лечить зубы, а уже после, выйдя из клиники, решил, что всё равно быстро перенастроиться на дела не получится, а от интенсивного движения анастезия пройдёт быстрее.
И, как всегда, убедился, что внеплановые прогулки приносят куда больше удовольствия! Отправился к Серебрянке, а от неё — к Декоративному и Красному пруду. Снег уже большей частью сошёл, но ручьёв в лесу ещё очень и очень много! Все канавы водой заполнены. И самое главное, ощущение настоящей весны и полноты Бытия во всём: и в шуме ручьев, и в глубокой синеве неба, и в птичьем пении!
В итоге прогулка получилась достаточно долгой, а за день я прошёл более 10 тысяч шагов.
#измайловскийпарк #прогулка #весна2022 #серебрянка #рекасеребрянка #весенниеводы

Смотреть все фото

Странное лечение зубов

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

О VDS и личном сайте

4X_Pro
Вчера решил было сосредоточиться на двух направлениях в жизни, а ещё выключать на компьютере Интернет где-то в районе 21—22 часов. В результате утром проснулся с идеей переделать свой старый личный сайт (который XXXXPro.Ru). Во-первых, добавить туда материал про идеалистов, во-вторых, вынести на главную основные проекты, а по ссылке «Далее» — и остальные. А в-третьих, сделать «восьмибитный» дизайн и вёрстку времён Web 1.0 без колонок с верхним меню, с вёрсткой таблицами (хотя адаптивность с с помощью свойства display всё же сделаю), чтобы всё отображалось корректно даже в dillo, links и IE5. И самое главное, хочу, чтобы сайт был не современно-безликим, как этот, а выражением моей личности. Как вариант, чтобы его дизайн делал отсылку к какой-либо из важных для меня игр той эпохи: либо Rockmanу, либо Quest for Glory. Пытался найти подходящий фон, но нашёл только один — с MegaManX, что всё-таки немного не то.
Но несмотря на примитивнейшую вёрстку и почти готовые тексты, дело шло на удивление тяжело и медленно. Да и вообще весь день голова плохо соображает.
Ещё с подачи Kitsune вернулся к идее VDS, на котором будет сервер i2p, yggdrasil и мои боты для Telegram. Нашёл даже подходящее решение с 2 Гб оперативки и каналом в 1000 Мбит/с всего за $6/месяц. Плюс ещё скидка 50% за первый оплаченный период. Это получается ощутимо дешевле Яндекса, где за месяц набегает более 700 рублей теперь. Основная проблема в том, чтобы провести оплату без карты. WebMoney на том хостинге не берут, только PayPal (что тоже не вариант) и AliPay, с которым я никогда прежде не имел дела. На vc.ru пишут, что в марте можно было сделать банковский перевод по реквизитам, и проходило. Но не знаю, как обстоит дело с этим сейчас. Плюс может быть большая минимальная комиссия в банке.

Инвентаризация жизни

4X_Pro
Вчера DarLik прислала материал в Instagram под громким названием «7 законов вселенной». Первые два из них — «закон пустоты» и «закон циркуляции» заставили вновь задуматься над вопросом, чем же большей частью занят мой день и что нужно убрать из жизни, чтобы освободить место для того, чего я хочу, и что я убирать не готов. Решил провести некоторую инвентаризацию жизни.
Что я точно хочу оставить:
  • прогулки, как по городу, так и на даче
  • компьютерные игры
  • настолки (но готов сократить до одного раза в две недели)
Также хотелось бы привнести в жизнь больше познания, как в виде книг, так и всяких курсов или даже полезных видео на YouTube, хотя в общем случае видео для меня формат неудобный.
От чего реально хотел бы избавиться, так это от навязчивого «залипания» в Интернете по вечерам, когда в лучшем случае читаю кучу бесполезной информации (особенно комментариев), в худшем — просто циклюсь на компульсивных действиях типа по несколько раз проверить обстановку на разных сайтах. По идее, нужно вернуться к тому, чтобы в 22 часа выключать компьютер (или хотя бы Интернет на нём), если нет ничего срочного, и остаток дня тратить только на ужин, книги и размышления.
И ещё хотелось бы избавиться от метаний между тем, что делать в плане своих проектов и состояния расконцентрированности, сосредоточить ресурсы на одном или двух направлениях. Одно из них понятно: это сообщество «Идеалисты Интернета» на Pikabu, хотя формат «сообщества в сообществе» сильно ограничивает. Вторым, по идее, должна быть доделка IntB до версии 3.10. Но то и дело возникает вопрос, а нужен ли сейчас такой формат (форум + личные разделы разных типов), или же всё-таки вернуться к работе над новым движком сообщества, который в блоге упоминался под названием MLCE.
Но в любом случае, ясно, что идею личного архива и каталога личных страниц надо бы пока отложить, пока не закончу всё по тем двум направлениям. Равно как и мысли об оживлении соционических проектов.
Хотя иногда снова лезут в голову мысли о том, чтобы бросить всё и решить вопрос глобально — уйти на Рестарт под новым Сетевым именем, и под ним вести только небольшой обзорный блог где-нибудь в fediverse + сделать простой статический личный сайт в стиле Web 1.0. И тем самым я по-максимуму освобожу место в своей жизни, а там видно будет, что делать дальше…

Об избавлении от конкуретно-эволюционистского мышления

4X_Pro
Просматривая ленту в Instagram, наткнулся на сообщение Озорного Боба, который писал о том, что некоторые люди не хотят меняться и поэтому им  суждено проиграть в эволюционной гонке. Мимо подобного я пройти равнодушно не могу, поэтому тут же начал писать комментарий про навязывание ложной дихотомии «либо ты развиваешься, либо деградируешь». И что на самом деле можно найти в жизни баланс, когда движение к цели есть, но оно не превращается в спортивный забег, а остаётся лёгкой и приятной прогулкой. Но для этого нужно избавиться от конкурентно-эволюционистского мышления, то есть перестать смотреть, с какой скоростью кто «бежит», а сосредоточиться на своём деле и на том, чтобы дойти в нём до финиша, а не обогнать кого-либо.
И тут я поймал себя на том, что хотя призываю к этому где-то с 2007 года, до конца не могу победить пережитки конкурентного мышления даже в самом себе. Вернее так: я избавился от конкурентного мышления в плане материальных благ, сумев поставить себе границы в плане «вот мои потребности и мне больше не надо», но не сумел сделать себе того же в плане признания: постоянно смотрю на количество лайков, комментариев, подписчиков у других. И самое главное, это мне только вредит, заставляя тратить жизненный ресурс на негативные переживания, но не давая ничего конструктивного. Но как избавиться — понятия не имею.
Сразу возникла мысль о том, что и тут можно было бы определить границы своих потребностей. Но потом вспомнил, что в общем-то, такие границы тоже давно определил. По сути, мне нужна посещаемость порядка 1000—2500 посетителей/подписчиков и 50—100 активистов, которые писали бы каждый день. Больше особо и не зачем. Только вот за все эти годы я подходил к желаемым результатам разве что на 10—15%, что порождает постоянную неудовлетворённость, которая и запускает поиск виноватых и конкурентное мышление.

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

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