Портрет 4X_Pro
Был в Сети 21 дек. 2024 г., 14:10
Мультиблог
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
Уже несколько недель собирался написать очередное сообщение о личностном кризисе, о том, что я не понимаю, каким нужно быть в тех условиях, в которых я оказался сейчас, к чему стремиться, что нести и транслировать в мир. Причём как на глобальном уровне, в масштабе цели всей жизни и путей её реализации, так и на локальных, например, каким должен быть мой сайт в плане структуры, формата сообщений дизайна.
И тут вдруг высшие силы дали мне подсказку. За последние дни несколько раз подряд выступил в роли примирителя, о которой писал весной. В этой роли я беру некую конфликтную ситуацию, и как бы глядя на неё с немного другого уровня сознания, понимаю, что конфликт тут не такой уж непримиримый, и расписываю, как он выглядит глазами обеих сторон, и что на самом деле разногласия следуют из-за того, что у обеих сторон есть какие-то различия в целях или приоритетах.
И ночью возникла даже мысль сделать канал на эту тему. Даже встал и набросал контент-план из 8 пунктов, о чём можно было бы рассказать. Правда, не очень понятно, где и в каком виде его делать…
А ещё осознал, почему засиживаюсь так допоздна. Ночью отключается тот самый «внутренний критик», и идеи легче возникают и кажутся более привлекательными. Тогда как днём мотивация действовать куда-то исчезает.

Куда теперь идти одиночке-любителю в Интернете?

4X_Pro
Ещё сегодня на YouTube попалось видео про бизнес: https://www.youtube.com/watch?v=AKyhZKqgV6U. Не знаю, зачем я стал его смотреть (видимо повёлся на кликбейтный заголовок). Но когда посмотрел, очень удивила первая часть про маркетплейсы. Я-то думал, что в скором времени они полностью вытеснят обычные Интернет-магазины, потому что искать удобнее, но, получается, не всё так однозначно…
Но вообще, это видео навело меня на более широкое осмысление. О том, что сейчас в Интернете остаётся все меньше и меньше возможностей для любителей-одиночек. Как было раньше: хочешь писать — делай личный сайт или иди на какую-нибудь proza.ru, хочешь собирать людей — поставь форум или сделай группу в соцсети, хочешь снимать — снимай и клади YouTube или RuTube тот же, хочешь торговать — поставь какой-нибудь OpenCart и торгуй (ну, правда, нужно было ещё подключить эквайринг). А сейчас сайт или группу без вложения в раскрутку (или поддержки со стороны кого-то уже раскрученного) просто не заметят, про YouTube тоже видел мнение, что сейчас без хорошей камеры и профессионального монтажа даже пытаться нет смысла. Про все необходимые подключения для бизнеса (та же онлайн касса и затраты на подключения к маркетплейсам + SEO + реклама) и говорить не хочется. В общем, куда деваться тем, кто хочет что-то делать, но не может вкладываться деньгами?

Push-уведомлениям в IntB — быть

4X_Pro
В послeдние дни живу в каком-то странном состоянии. Вроде всё перестало казаться таким плохим, как во время предыдущей записи. Настроение, что необычно для осени, стабильно ровное и даже слегка позитивное. Только соображаю как-то медленно. И ещё дни кажутся просто пустыми. Встал, прожил день, и толком не помнишь, на что его потратил… Точнее, отчасти понятно: стал много времени тратить на переписки и комменты на YouTube. Плюс из-за сбитого режима живу почти в режиме полярной ночи: светлую часть суток застаю на пару часов всего, что тоже работоспобность не повышает.
Вчера ещё раз падал сервер с SiteKnockerBot. На этот раз без потерь данных, но опять с downtime почти в сутки. Сначала я не сразу отреагировал на письмо с уведомлением (там надо было заявку на перенос сделать), потом сам перенос занял ещё полдня. И только сегодня утром всё более-менее заработало.
А сегодня вернулся к PWA. Наконец-то разобрался с pushами. Разобрал всё в консоли броузера по шагам, и обнаружил, что почему-то после вызова pushManager.subscribe возвращаемый им Promise очень долго остаётся в pending state. Повесил на него catch, и обнаружилось, что где-то через минуту возвращается ошибка. В общем, оказалось, что проблема была именно в броузере Iron: то ли из него pushи криво вырезали, то ли просто нельзя до сервера его разработчиков с российского IP достучаться. Попробовал в Firefox и Яндекс.Бразуере — всё отработало нормально. Так что рано или поздно push-уведомлениям и оффлайн-режиму в IntB быть! Правда, осталось определиться, как ими управлять — на уровне отдельных тем, разделов или форума в целом, особенно для гостей.

Есть ли в IT gatekeepers или Очередная битва БЛ против ЧЛ

4X_Pro
Сегодня заглянул на Хабр. Среди прочего попалась такая статья:
Ты — ненастоящий айтишник / Дедовщина в ITТы — ненастоящий айтишник / Дедовщина в ITIT — пилюля от бедности. Нет другой сферы, где без связей, выдающихся способностей или нарушения закона можно так быстро начать получать комфортный доход. Область растет, прибывают новые люди и вроде...habr.com
Там автор утверждал, что IT-области есть некие "gatekeepers", занимающиеся дедовщиной по отношению к новичкам. Причём «дедовщина» эта заключается в требовании фундаментальных знаний и трансляции идей о том, что в IT нужно идти только с определённым складом характера и мотивироваться не деньгами, а интересом к технологиям. Я прямо себя узнал!
В целом, статья вызвала очень противоречивую реакцию. С одной стороны, с некоторыми утверждениями я согласен. В частности, вот с этим:
Появились приемы увеличения дохода: тактика зарплатных переговоров, нетворкинг и рефералки, прокачка личного бренда, повышение зарплаты через смену работы (job-hopping). А гейткиперы этого не умеют. Они скучают по временам, когда всем платили одинаково и можно было кодить, не отвлекаясь на корпоративные игры. Когда на собеседовании два инженера, обменявшихся парой слов, признавали профессионализм друг друга и жали руки.

Да, люто, бешено плюсую! Я ещё с подросткового возраста мечтал о мире, где нельзя подменять реальные знания вот такими вот «навыками», где связи и умение болтать языком ни на что не влияют. И в те времена, о которых говорит автор, IT-сфера именно таковой и была!
А вот это вот вызвало просто лютую ненависть, равно как и расхожая фраза про умного и бедного:
Совет “усердно вкалывай, а награда тебя найдет” живет до первой невыплаты премии, обязательных переработок на выходных или сокращения. Осознанный человек задастся вопросом: “Зачем надеяться на деньги когда-то потом, если можно получать их сейчас?”. С кого потом будешь требовать компенсации за бессонные ночи?

Дуализм “работа за идею” и “работа за деньги” — вымышлен, такого противостояния нет. Наоборот, человеку, искренне любящему свой труд, будет психологически легче стать экспертом и получить за работу достойную оплату.


Тем не менее, увидев в конце статьи заявление автора, что он реально хочет понять, почему gatekeeperы занимают такую позицию, я решил зайти на канал и отписаться на тему, что раньше IT-сфера была «тихой гаванью» для тех, у кого плохо с коммуникативными навыками и маленькие материальные потребности, а потом (где-то в начале 2010-х) из-за роста зарплат туда понабежало баблорубов, и она таковой быть перестала.
Эффект был немного предсказуем: нашлись те, кто стал обвинять меня в перекладывании ответственности. Когда я спросил «а какая может быть ответственность, если эти изменения произошли в результате действий других людей, я вообще на это никак повлиять не мог», заявили «ты виноват именно в бездействии». Впрочем, справедливости ради, следует отметить, что были и те, кто адекватно, без «ускорительских» идей пытался объяснить важность этих самых коммуникативных навыков. Самое адекватное предложение, которое я увидел — это просто сменить стек и уйти из того же Webа, где больше всего code monkey. Но в целом было ясно, что прийти к какому-то взаимопониманию тут малореально…
Немного остыв от пыла спора и попытавшись взглянуть на проблему немного «сверху», в соответствии с идеей об отказе от слов вражды и роли примирителя, подумал, что на самом деле тут истинная причина разногласий в другом. В моей системе убеждений личные качества являются некоей точкой отсчёта, чем-то неизменным. А большинство комментаторов там, скорее всего, сторонники «ускорительских» идей в духе «любой может стать любым, если приложит достаточно стараний» (а если не стал, старался недостаточно). Но на самом деле такая разница может объясняться чисто типологически, через темпористику. Как известно, в ней за образ своего Я и представления о себе отвечает Прошлое, а все функции делятся на открытые (допускающие множество вариантов и эксперименты) и закрытые (те, которые склонны к набору каких-то фиксированных представлений, не допускающих вариабельности). Так вот, моя позиция будет ближе тем, у кого Прошлое закрыто (первое или четвёртое), а позиция «ускорителей жизни» — тем, у кого оно открытое (второе или третье).

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

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. Вопрос только, пригодятся ли мне эти знания когда-нибудь ещё…
А ещё пришла в голову мысль сделать форум (или раздел на этом) специально для подобных историй, где каждый желающий мог бы с техническими подробностями рассказать, как он наглухо завалил прод делал глупые ошибки.

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

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