Кратко о себе: Web-разработчик. Пишу на PHP, Python, JavaScript. Знаю Ruby и Go, со студенческих времён более-менее помню C и asm. Сейчас специализируюсь на ускорении загрузки сайтов и разработке ботов для Telegram. Linuxоид (использую Debian+LXDE). Сторонник IndieWeb.
Лог моей жизни, где я фиксирую наиболее эмоционально значимые для меня события и текущее настроение. Является продолжением блога, который я вел в ЖЖ с ноября 2004 по апрель 2018 года.
Четвертый день живу на даче в режиме slow life. Отложил все дела, занимаюсь только тем, что нужно прямо здесь и сейчас. Два предыдущих дня даже за ноутбук не садился! Уже забыл, каково это — жить без постоянных переживаний «опять не успеваю». Понемногу привыкаю к такой жизни заново. Приложение Welltory выдаёт просто отличные показатели. Но в голове полнейшая пустота! Только иногда мельком проскакивают мысли про переделку личного сайта или создание каталога личных страниц.
Сегодня впервые за это время выбрался на короткую велопрогулку вдоль Клязьмы. Прогулка получилась небольшой (6 км), но интересной. Удалось поймать тот недолгий момент, когда листва на берёзах только-только распускается, и издалека кажется, что они стоят в какой-то зелёной дымке.
#slowliving #slowlife #река #клязьма #весна2022 #весна #веснаидетвеснедорогу #жизньнадаче Смотреть все фото
Заехал на дачу. И, воспользовавшись тем, что перед отъездом растолкал всё дела, решил себе устроить период жизни вообще без каких-либо «надо», планов, целей и прочей работы по Будущему. Занимаюсь только тем, что нужно прямо здесь и сейчас, например, развести костер, чтобы поджарить на нем мясо. За компьютер сегодня не садился вообще, только три раза включал Интернет на мобильнике ненадолго. Обычно в таких ситуациях у меня начинается информационная разгрузка. Сначала идёт какой-то интенсивный мысленный процесс, потом наступает прояснение сознания. Но в этот раз такого нет. Скорее просто уход в себя и всё. И ещё чувство какой-то растерянности. Непонятно что делать в условиях этого отсутствия «надо». Но более всего непривычно отсутствие переживаний по поводу «опять опаздываю», «ничего не успеваю», потому что если делать ничего не надо, то и невозможно не успеть. Зато выросли показатели по Welltory: энергия днём была 78%, вечером — вообще 93%. Я такое прежде видел у себя только два раза, и то списывал на неточные измерения. А тут и с точностью всё в порядке. По стрессу тоже отличные показатели: 33%и 26% соответственно. И здоровье 100%. Единственное, что не радует — это холод. Мёрзну почти всё время, начал чихать, обогреватели помогают мало. Только в бане иногда топлю печку, чтобы хотя бы там погреться.
Завтра еду на дачу. Сегодня занимаюсь подготовкой. В процессе много размышлял о том, что с первым заездом в году у меня всегда было связано даже больше ожиданий, чем с Новым годом. Почти перед каждым годом я подбирал то или иное количество курсов, книг и прочих материалов, которые собирался изучить за время пребывания там. Что-то из этого удавалось, что-то — нет. Но всегда получается так, что на даче успеваю в плане саморазвития больше. А в Городе время уходит непонятно куда… То ли Интернет съедает, то ли ещё что-то, то ли просто кислорода в воздухе меньше, поэтому голова работает хуже. Но в этот раз особо запасаться не стал. Во-первых, книг и так закачано куда больше, чем реально прочитать, во-вторых, в этом году Интернет на даче впервые будет безлимитным. Для этого я уже заказал Мегафоновскую SIMку с соответствующим тарифом (хех, вспоминается, как в марте какие-то очередные горе-эксперты пугали, что проблем с поставкой оборудования для сотовой связи безлимиты поотменяют). В-третьих, много планов по созданию чего-то своего, а не потребления контента. В частности, хочу в этот мультиблог написать заметки о цене бытия собой, о вогнутых и выпуклых технологиях, переделать заметку о двух уровнях личной амбициозности для Pikabu, добавить очередное сообщение в dev-блог Intellect Board (про публичное и частное пространство и личные разделы как вариант его реализации в IntB) и заняться наконец-то переделкой старой версии сайта. Впрочем, на самом деле у в этой поездке есть куда более важная цель. Она заключается в том, чтобы найти баланс между спонтанностью, возможностью выбирать, чем же я хочу заняться здесь и сейчас без всяких «надо бы» и планов заранее, и осмысленностью жизни, которая получается из её результативности. Впрочем, над этим вопросом я бьюсь с 2007 года, если не раньше, только его формулировки незначительно меняются…
В конце прошлой недели я писал о том, что жизнь не просто налаживается, но и становится просто замечательной. Увы, с понедельника всё стало не так. Началось всё с зубов: в понедельник в очередной раз пошёл лечить один зуб. Но оказалось, что кариес там хоть и маленький, но очень глубокий, и нужно удалять нерв, как и в предыдущем зубе. Но с этим всё оказалось немного сложнее. Даже врач в конце концов сказал «Ну и же-есть!». Сложность была в том, что никак не получалось найти третий корень зуба. В итоге он вколол какого-то лекарства в найденные два корня и поставил временную плобму. Придётся ещё раз прийти через несколько недель, для чего вернуться с дачи. Во вторник решил было заняться синхронизацией данных с ноутбуков через свой новый VDS. Но большая часть дня прошла мимо, и получилось заняться только под вечер. Как это ни странно, заработало всё достаточно быстро. Но я был бы не я, если бы сделав что-то, не попытался это оптимизировать. В частности, решил rsync перевети в daemon mode в надежде, что так будет быстрее и меньше траффика. А вдобавок к этому ещё и запускать под обычным пользователем. Но вот тут и возник ряд сложностей с аутентификацией. В итоге потратил почти весь день, и от идеи запуска под простым пользователем вынужден был отказаться. Плюс ещё выявил ряд каталогов, которые нужно добавить в список исключений. Правда, параллельно всему этому сделал ещё первичное копирование данных на дачный ноутбук, так как через сервер в целях экономии места и траффика синхронизируются файлы, обновившиеся за последние 30 дней и размером не более 24 Мб. Но в итоге за весь день не занимался ничем другим. В общем, три дня из жизни выпали, и за это время начали опять копиться мелкие задолженности перед жизнью: и GoRo обещал разобраться с некоторыми багами в SuperMon_Bot, и ещё пара задач по freelance висела, и в dev-блог Intellect Board хотелось новую заметку написать. Но при этом всю неделю чувствую какую-то слабость и упадок сил. Да ещё недосыпы сказываются. В итоге в четверг ночью очень капитально психанул на тему «как всё достало». Потом успокоился, но вчерашний и сегодняшний день ушли на разгребание всего накопившегося, из-за чего опять чувствую неудовлетворённостью жизнью по поводу того, что занимаюсь какой-то ерундой, вместо того, чтобы двигаться в тех направлениях, в которых считаю важным (типа сообщества идеалистов или переделки старого личного сайта). И снова чувствую сильную усталость без видимых причин. Да и в Welltory показатели ощутимо ухудшились: впервые за последнее время дважды энергия падала ниже 40%. Не понимаю, что со мной…
Вышел на небольшую прогулку и смог в полной мере прочувствовать тишину и спокойствие вечернего Перово.
#вечер #перово #город #вечернийгород #фонари Смотреть все фото
Сегодня сделал ещё один шаг вперёд: настроил синхронизацию между своими ноутбуками через новый VDS-сервер. Теперь любой изменённый за последний месяц файл размером меньше 24 Мб в домашнем каталоге или в разделе-файлохранилище автоматически через rsync уйдёт на VDS, а оттуда — на второй ноутбук, когда тот будет онлайн. Это гораздо удобнее, чем использование Яндекс.Диска и тому подобного софта, так как не нужно думать или указывать в настройках, где лежат синхронизируемые файлы — синхронизируется всё. Даже сохранения от какого-нибудь Settlers. При этом одна операция синхронизации, если изменений нет генерирует суммарно полмегабайта траффика. Так что можно повесить синхронизацию на cron или запускать вручную перед отъездом с дачи/на дачу. Единственная проблема — это базы данных MySQL. С ними пока не знаю, что можно придумать… Ещё обновил систему на дачном ноутбуке до Ubuntu 20.04. Как всегда, смена релиза шла достаточно тяжело и мучительно: то сказалось, что /tmp монтируется с noexec, потом вылезло, что в самосборном ядре нет поддержки squashfs и initrd, потом какая-то непонятная проблема с phpunit, который я в итоге просто снёс. Но в итоге всё работает! Сейчас занимаюсь тем, что делаю первичную синхронизацию (то есть переношу с основного ноутбука на дачный всё без ограничений по времени изменения и размеру). В общем, ещё раз убеждаюсь: чем более нестандартная конфигурация, тем сложнее даются большие изменения. Ещё навёл порядок в разделе с книгами вручную синхронизировал его с флешкой в планшете. Эх, теперь бы придумать, как это автоматизировать…
Всегда нравилось созерцать текущую воду, и вот сегодня для этого получил #подарок от @natalia_tella — комнатный #фонтанчик. Что особенно порадовало, так это то, что он почти бесшумный. Смотреть все фото
Второй день испытываю какой-то эмоциональный подъём. То ли весна влияет, то ли так покупка нового сервера обрадовала (хех, главное, не стать серверным шопоголиком). Да и в Welltory показатели отличные — энергия до 75% выросла. Ещё хорошие новости с Intellect Board: постепенно растёт в Google, да и в Яндексе некоторые запросы стали появляться. Увы, в PixelTools лимиты кончились, теперь отслеживаю позиции в другом сервисе — AllPositions. Там дают 1000 проверок на старте, для моих целей этого пока что хватит. И ещё за последнее время два человека подписалось на сообщество ВК, куда идёт трансляция dev-блога IntB. Сегодня (вернее, уже вчера) выбрался на прогулку. Была мысль отправиться на самокате, но раздумал. Это позволяет добраться дальше, но лишает чувства включенности в мир. Вместо этого просто походил по соседним дворам. В воздухе просто разлито чувство весны, спокойствия и того, что всё идёт как надо. Давно такого ощущения у меня не было! А главное, снова хочется творить! Сделать новый личный сайт, причём наконец-то освоить для этого какой-нибудь статический генератор типа Hugo или Hexo. Переписать бота мониторинга (SiteKnockerBot) с использованием RabbitMQ и распараллелить проверку между несколькими процессами. Настроить синхронизацию файлов между ноутбуками через свой новый сервер, благо места там более чем достаточно. В общем, снова чувствую себя собой!
Отоспавшись, сходил на небольшую прогулку, потом вернулся к настройке сервера. Во-первых, решил явно выключить компрессию на 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, о чём впервые задумывался ещё с февраля. Арендовал его на 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. Вот он завёлся сразу! Правда, потратил кучу времени на то, чтобы собрать список хостов и привести к нужному формату. Почему никто не сообразил выложить их в таком виде, чтобы можно было бы просто скопировать в файл настроек?
Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме.
После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе.
Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю.
Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.