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

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


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

t.me/4x_pro

Лог жизни

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


Осень и «старость года»

4X_Pro
Ну всё, началась «старость года» в её худших проявлениях. В этом году — позже обычного — не в октябре, а в ноябре. Отовсюду лезут мелкие проблемы, и кажется, что конца-края им не будет. Вчера (уже не в первый раз) MySQL (точнее, MariaDB) на сервере, где стоит этот сайт. Просто запросы, касающиеся одной таблицы наглухо «застревают», равно как и попытка корректного перезапуска сервера. Пришлось завершать аварийно по kill -9, и потерялось моё сообщение на этом форуме и один пользовательский профиль на socionics.me. А переписывать то сообщение заново сил нет. Причём не могу даже понять, это программный глюк MariaDB или же часть базы данных попала на глючный участок на диске на сервере.
Сегодня ещё того лучше: из-за какой-то масштабной аварии у хостера упал мой VDS, на котором крутится SiteKnockerBot (а также yggdrasil и i2p-версии моего второго сайта и он же используется для синхронизации данных между моими компьютерами). Причём, судя по всему, авария с потерями данных, так как пишут, что ни по срокам, ни по шансам восстановления данных ничего сказать определённого не могут. И предлагают развернуть новый VDS, чтобы восстановить резервные копии, если они имеются. Но если копия базы данных бота и его исходники у меня есть, то делать копию настроек остального софта как-то в голову не приходило (хотя на компьютере в Москве, вроде бы есть копия конфига yggdrasil или хотя бы его закрытого ключа)… И теперь непонятно, то ли ждать и надеяться, что починят, то ли соглашаться на новый VDS и настраивать всё с нуля.
Да и вообще, в последнее время ловлю себя на том, что хотя идей для статей и заметок достаточно, желание писать куда-то пропало. Всё равно сижу на задворках Интернета, куда добираются единицы…

Осенняя прогулка по Посаду

4X_Pro
Сегодня выбрался в центральную часть Павловского Посада. На короткое время встретился с сэром Миком у вокзала. Увиделись впервые чуть ли не с 2022 года! Но поговорить долго не удалось — он добрался до вокзала позже, чем рассчитывал изначально, и уже нужно было идти на электричку.
На обратном пути просто прогулялся по городу. Прошёл через городской парк, улицу Кирова, главную площадь и мост над Вохонкой, всего набегал более 8 тысяч шагов. Посад, как всегда, действует на меня очень умиротворяюще. И прекрасен даже в ноябре, когда в Москве вообще нос на улицу высовывать не хочется!

Нужны ли в наше время self-hosted решения?

4X_Pro
Разбираясь вчера с PWA, задумался, что надо бы сделать какое-нибудь достаточно простое приложение, на котором отработать подход locale first. Пришла в голову мысль сделать аналог Obsidian — приложение для заметок с древовидной структурой, поддержкой Markdown и хранением данных в обычных текстовых файлах. Причём делать с использованием Svelte Kit, чтобы лучше освоить его в процессе. Ну и конечно же, по итогу выложить код в свободный доступ.
Но потом в очередной раз вернулся к мысли, которая не даёт мне покоя уже много месяцев: нужны ли в наше время вообще self-hosted приложения кому-то, кроме узкой прослойки энтузиастов вроде меня самого и такой же прослойки privacy-озабоченных? Вот даже я сам, вместо того, чтобы поднять NextCloud, предпочитаю пользоваться Яндекс.Диском из соображения «так надёжнее: с данными на Диске ничего не случится, тогда как если я по каким-то причинам не проплачу свой сервер, они очень скоро исчезнут» (причём если раньше провайдер хранил данные месяц, то теперь ужесточили правила и удаляют уже через несколько дней). Да и впечатлить кого-то наличием своего аналога Диска в наше время тоже не получится (причём совершенно неважно, сделанным на готовом софте или написанным с нуля): технически не продвинутые просто не поймут, о чём я, люди со штампованным Хабр-мышлением (или обладатели ценностной ЧЛ, выражаясь языком соционики) скажут «очередной изобретатель велосипедов», а остальным просто будет пофиг…
И тут возникает очень неприятный вопрос: а для чего мне вообще тогда что-то делать? Если той прослойки людей, на которую я ориентируюсь, либо почти не осталось, либо они настолько разобщены, что просто не могут найти друг друга в среде Интернет-обывателей, которым ничего не надо… Конечно, можно было бы попытаться сделать массовый сервис для всех желающих. (Предположим даже, что он будет настолько хорош, что «взлетит» без рекламы.) Но тут всё упирается в вопрос масштабирования. Сколько пользователей выдержит приложение заметок на обычном дешёвом VDS ценой в 300 руб/мес? Максимум — несколько десятков тысяч в день. А дальше возникает неприятный выбор: нужно либо ограничивать регистрацию, либо арендовать более дорогой сервер (а потом и вовсе думать о горизонтальном масштабировании на несколько). Но если VDS за 300 руб/мес я могу себе как-то позволить, то dedicated server за 30000 руб/мес — уже нет (и даже за 10 тыс — тоже нет), плюс ещё нужно место под backupы. И тогда придётся становиться на скользкий путь коммерциализации (хотя бы вешать ту же рекламу). Но это уже на грани предательства своих идей о том, чтобы быть творцом во благо Сетевого сообщества. Я буду мало чем отличаться от всё тех же людей с Хабра…

Разбираюсь с PWA-приложениями

4X_Pro
Вернулся к изучению PWA-приложений. Разобрался с тем, как работать с кешем, делать синхронизацию и отправлять push-уведомления. Сложного там особо ничего нет, но приходится запоминать кучу объектов и методов с длиннющими названиями типа pushManager.getSubscriptions. Причём push-уведомления оказались устроены совсем иначе, чем я себе представлял, но в целом даже проще. Но вот на этапе перехода от теории к практике вчера застрял на весь день: почему-то после запроса подписки pushManager всё равно возвращал null. Потом скачал полностью готовый пример, тот как-то заработал, хотя тоже не сразу. Так что возможно, через какое-то время преобразую этот сайт в PWA — приделаю оффлайн-режим, в котором можно будет перечитывать уже посещённые темы, и push-уведомления.

День переезда и информационной разгрузки

4X_Pro
Сегодня (вернее, уже вчера) собирался снова ехать в Область. Но встал очень поздно (зато вперые с конца октября отоспался как следует, без дробного сна или самопроизвольных пробуждений), и от понимания, что не успею собраться и выхать засветло, возникло желание отложить поездку на завтра, а вместо этого остаться в Городе и поиграть либо в The Council, либо в Ведьмака, либо вообще в World of Tanks. Впрочем, у меня всегда так перед любым переездом: очень не хочется менять уже сложившееся... Плюс ещё мешала мысль о том,что вечером в электричках слишком много народа.
Но потом всё же себя пересилил, и теперь совершенно не жалею. Скорее, наоборот, недоумеваю, как можно было не хотеть, ведь тут на самом деле гораздо лучше. Тем более, поездка прошла на редкость благополучно: и на трамвай и автобус очень удачно попал, и электрички новые и более комфортные. Сначала, правда, реально народа было очень много, что даже ехать пришлось в тамбуре. Потом я вспомнил, что сразу вслед за электричкой, на которую я попал, идёт ещё одна, до Электрогорска. В итоге решил выйти на Никольском, прождал пять минут, и сел на следующую. В ней и правда оказалось куда свободнее (впрочем, для электрогорских это типично), и уже через пару остановок освободилось сидячее место.
Сама поездка вызвала иррациональное чувство выпадения из реальности. Во время поездки я обнаружил, что в приложении Huawei Health есть сведение данных о качестве сна, и часть пути занимался тем, что сопоставлял данные разных месяцев, пытаясь понять, влияет ли то, что летом засыпаю засветло, на показатели или нет. Из-за этого не следил, где мы едем, к тому же за окнами было совсем темно, а пересадка сбила возможность ориентироваться по времени в пути. В какой-то момент даже начал опасаться, что проеду Посад. Но нет, всё прошло нормально!
А приехав на новую квартиру, как-то внезапно решил устроить себе день информационной разгрузки. За компьютер не стал садиться вообще, даже для синхронизации. Да и это сообщение пишу с планшета. Зато наконец-то чувствую, как меня перестают разрывать на части противоречивые устремления типа «надо делать то»или «нет, вот то» или «ни то, ни другое, а вообще вот это». Вместо этого, наоборот, пришло ощущение будто я восстанавливаю целостность, буквально собираю себя по кускам на нематериальном плане Бытия. Потом ещё посидел в медитации, прошёл очередную тренировку на NeuroNation, и вообще пришло чувство удовлетворённости прожитым днём. Похоже, начинается третий этап параноидного цикла: отказ от попыток что-то сделать, а вместо этого --просто созерцательное отношение к жизни...
Вообще, всё больше и больше понимаю, что для выживания в условиях современного Интернета с его избытком возможностей и отвлекающих факторов умение отказываться от всего остального ради одной-двух целей (или направлений, так как я мыслю именно направлениями, а не целями) просто критически важно. Но увы, выражаясь языком соционики, это путь ЧС-ников, а не чёрных интуитов.

Злоключения с флешкой или Мы не ищем лёгких путей

4X_Pro
Недавно пришло в голову сделать переносное рабочее место пентестера — флешку с соответствующим дистрибутивом Linux. Стереотипно считается, что пентестер должен пользоваться Kali, но я нашёл другой вариант — Parrot Linux, который хорош тем, что кроме «хакерских» программ содержит софт и для повседневных нужд Web-программиста: VSCodium, Libre Office, сервера MySQL и Postgres, Apache, nginx. Только вот Filezilla и Putty не хватает. Да и к «железу» он весьма нетребователен.
Казалось бы, что может пойти не так: нужно просто скачать ISO, записать на одну флешку, загрузиться с неё и провести полную установку на другую. Но я не был бы собой, если бы просто взял и сделал.
Начнём с того, что флешек у меня две. Одна, старая, но очень хорошая Transcend на 32 Гб, вторая — более новая на 16 Гб неизвестного производителя. Первая использовалась раньше для синхронизации данных с дачным компьютером, и на ней же стоял Ventoy и хранились образы нескольких OS. Сразу возник вопрос: а на какую устанавливать Parrot Linux, чтобы работало быстрее. Решил провести benchmarking. После беглого поиска, чем это можно сделать, решил поставить KDiskMark. Но в этот момент я уже сидел за старым ноутбуком (взял его, чтобы ставить Parrot, не перезагружая основной компьютер), и ставить KDiskMark решил на него.
Система там не обновлялась довольно давно, поэтому чтобы KDiskMark установился, нужно сделать apt update && apt upgrade. Запускаю, но тут вылезает та же проблема, о которой я уже писал: кривое обновление, которое сносит часть установленных программ, в том числе и Network Manager. После чего, конечно же, отваливается Интернет.
Проводная сетевая карта в том ноутбуке сгорела ещё в 2013 году. Поэтому пришлось вспоминать, как писать файл конфигурации для wpa_supplicant. Сначала пытался по мануалу, но не работало. Потом запросил пример у ChatGPT, тот написал, и оказалось, что одну строку (на которую и ругался wpa_supplicant) указывать и вовсе было не обязательно, а достаточно только SSID и пароль.
Подключился, переустановил Network Manager и plugins для него, поставил KDiskMark. Провёл измерения. Оказалось, что флешка на 16 Гб даёт чуть более высокую линейную скорость чтения, но проигрывает Transcendовской по всем остальным параметрам. Решил сделать так: вынести Ventoy и ISO образы на вторую флешку, а первую разбить на два раздела по 16 Гб. Один сформатировать в exfat (чтобы можно было писать файлы и под Windows), второй — в f2fs и установить туда систему. Перенёс ISO образы на вторую флешку (заодно навёл порядок: кое-что удалил, кое-что обновил), временно сохранил прочие данные на диск, и запустил установку. Вроде всё шло хорошо, пока не возникла ошибка «нет места на устройстве». Оказалось, что хотя ISO-образ занимает всего 5.3 Гб, данные в нём очень сильно сжаты, и на официальном сайте утверждается, что для нормальной установки нужно целых 40 Гб! То есть флешки просто не хватит.
В итоге решил сделать то, что называется persistent live, когда на флешку пишется ISO-образ, а в дополнительный раздел сохраняются изменения. Создал EFI-раздел, сделал grub-install, решил попробовать загрузиться с флешки. Но дальше всё пошло не так: при загрузке через EFI меня выбрасывало в grub rescue, а через BIOS — в командную строку обычного grub без меню и с непонятно откуда берущимся кривым префиксом пути.
Дальше три дня ушло на попытки разобраться, что не так. И только сегодня причина нашлась. Оказывается, важен порядок разделов! А у меня EFI-раздел шёл третьим, после раздела, куда я записал ISO. Загрузчик видел на ISO-разделе каталог EFI с урезанным grub и пытался загружаться с него! (Кстати, оказалось, что это легко чинится обычным fdiskом, где есть специальная команда fix в expert mode, т.е. последовательность команд такая: x f r w q). Потом я это выяснил, но к тому времени в ходе своих экспериментов создал другую проблему: удалил файл /EFI/BOOT/BOOTX64.EFI (так как думал, что туда что-то глючное пишется). И только когда сообразил его восстановить (привет ещё две перезагрузки), всё заработало. А загрузка BIOS искала GRUB вовсе не на том разделе, где он должен быть, так как BIOS-версия загрузчика оставалась вообще от Ventoy. Почему-то я не сообразил, что для того, чтобы его обновить, нужно сделать отдельный запуск grub-install с --target=i386-pc.
В общем, потерял кучу времени, зато куда более детально разобрался с устройством GRUB и UEFI. Вопрос только, пригодятся ли мне эти знания когда-нибудь ещё…
А ещё пришла в голову мысль сделать форум (или раздел на этом) специально для подобных историй, где каждый желающий мог бы с техническими подробностями рассказать, как он наглухо завалил прод делал глупые ошибки.

Сон и неожиданное осознание

4X_Pro
Сегодня приснился очень неприятный сон. Как будто мы с Tellой пошли в какой-то музей военной техники (не тот, что в Кубинке, а какой-то поменьше). Причём инициатива была её, а я как-то желания идти туда не испытывал (в реальности такое очень маловероятно: Tellе не интересны как музеи вообще, так и военная техника в частности).
Там стали ходить, смотреть экспозицию. Tella спросила меня что-то о тактике применения БТРов. В военном деле я, как известно, не разбираюсь от слова совсем, но что-то ей ответил из общих соображений. Потом ушёл смотреть какую-то другую часть музея, а когда вернулся, обнаружил, что она разговорилась с каким-то другим посетителем. Он был одет в гражданское, но по манере держаться и говорить было видно, что это опытный кадровый военный, судя по всему, с реальным боевым опытом.
Tella пересказывает ему то, что я ей рассказал (причём с точностью чуть ли не слово в слово, как она умеет). А тот спокойно и аргументированно громит все мои умопостроения и подробно рассказывает, что и как в реальных условиях. И в конце добавляет «ваш „друг“ показал себя человеком абсолютно некомпетентным, у нас с такими разговор короткий», и дальше в характерных для военных выражениях объясняет, что дали бы пару раз в рыло, чтобы не воображал о себе слишком много, потом держались бы подальше. И что вообще, из таких обычно получаются политработники, а из-за таких командиров множество людей гибнет напрасно.
После этого меня выкинуло из сна с чувством жуткого стыда, таким всепоглощающим, какого я, наверное, не испытывал с подросткового возраста.
Но немного успокоившись, я вдруг задался неожиданным вопросом: ведь если это мой сон, то все персонажи в нём — это порождения моей психики. А значит, где-то в её глубине есть часть, которая знает, как надо на самом деле (если не рассматривать вариант установления во сне канала с ЕИВП), и умеет излагать это убедительно, связно и аргументированно, как тот военный. Но почему-то в сознательном состоянии я доступа к её ресурсам не имею, а вынужден взаимодействовать с миром из роли некомпетентного пустобрёха. И этот сон отразил мой бессознательный страх, что как только сказанное мной попадётся на глаза компетентному специалисту, я буду разоблачен и осмеян. И именно этот страх сковывает меня и не даёт развиваться.

Опять выбросило из потока жизни

4X_Pro
Проблемы со сном наконец-то позади! Более того, в последние дни даже режим наладился, стал вставать по своим меркам очень рано. И сразу дни стали казаться гораздо длиннее! Но всё равно ничего не успеваю. И опять произошло то, что я теперь называю «выбросило из потока жизни». То есть пропал настрой на прежние задачи, в частности, изучение Svelte Kit. Сегодня попытался вернуться, но дело не идёт... Эх, научиться бы этими потоками управлять, запрыгивая в нужный, когда требуется, чтобы всё время несло в одном направлении.
А вчера весь день провёл в полузаболевшем состоянии. Сегодня, правда, чувствую себя вполне приемлемо. Но всё равно, отложил возвращение в квартиру в Области как минимум до вторника, а то и четверга.

Ещё шаг в самопознании и жуткий сон

4X_Pro
Вчера опять словил приступ бессонницы. Зато под влиянием очередного видео с канала О. Демчук про «идеальное я» сделал одно важное дело в плане самопознания: составил список того, где я чувствую себя в жизни уязвимым. Получилось пять пунктов, после чего в голове сложилась более-менее целостная картина, что не так с моей жизнью. Правда, выкладывать их на данный момент не готов.
А ещё повторно приснился совершенно жуткий сон про остров, жители которого (причём сильно напоминающие какую-то мафию как по внешнему виду, так и по взаимодействию между собой) хотели меня похитить просто за то, что я знал о существовании этого острова. Есть предположение, что этот сон как-то связан с теми самыми ночными осознаниями.

Не получается уместить в жизнь всё

4X_Pro
Вчера опять получилась бессонная ночь. В результате таки и не пошёл на настолки (в лучшем случае бы просто тупил, в худшем — выбесился бы на кого-то нибудь из-за проигрыша), зато выбрался на прогулку в Терлецкий парк в малореальное для меня время — 9 утра. И правильно сделал — поймал ещё один солнечный день! А вечером наконец-то вернулся на CodeBy. Взялся за один сложный квест, в котором сначала вроде бы неплохо двигался, но потом застрял.
Сегодня режим более-менее начал налаживаться. Постепенно прихожу в себя и занимаюсь тем, что называется «догоняю жизнь». И размышляю над тем, что уместить в один день даже половину того, что я хотел бы успеть, не получается, а всё, что я ни делаю, занимает в разы больше времени, чем ожидаю изначально. Даже просто медитация + простые упражнения + Клавогонки + тренировки на NeuroNation + замеры и внесение данных в файл для методики самовосстановления съедают очень много времени.
А ещё снова кручу в голове мысль о возвращении к написанию своего движка сообщества. Причём отказался от идеи, что информацию нужно структурировать только хеш-тегами, пришёл к выводу, что предусмотреть возможность деления её на каналы тоже нужно, более того, сделать набор каналов по умолчанию по типам контента: статьи, заметки (аналог gists), фото, ссылки, места (и, возможно, встречи с привязкой ко времени), проекты/портфолио, а также канал для вопросов/ответов (возможно, анонимных). Только вот не могу определиться, то ли Svelte Kit изучать дальше (попробовал пару дней назад, весьма понравилось, да и по ресурсам относительно приемлемо) или же возвращаться к MLFW, только переделать в нём систему шаблонизации (а то я прихожу к выводу, что всё же с ней перемудрил в 2022 году).

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

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