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

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


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

t.me/4x_pro

Лог жизни

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


Первый шаг сделан

4X_Pro
Хоть и с некоторым опозданием, но сделал первый шаг по созданию своего frameworkа. Сделал его основной «скелет», позволивший запустить простейший Hello world. Правда, пока без каких-либо проверок корректности, обработок ошибок и т.п. Немного необычно реализовал идею environments — для каждой — свой каталог www-что-нибудь для точки входа, типа www-dev, www-prod, и в тамошнем index.php загружается нужный конфиг. Это сразу же и мультисайтовость
Решил не писать свой autoloader, а использовать готовый из composer в соответствии с PSR-4. И тут столкнулся с первой неприятностью: ему нужно, чтобы регистр букв namespace совпадал с регистром букв каталогов с файлами. Но namespaces принято писать с заглавной буквы, а каталоги — полностью строчными. И теперь опять оказался перед мучительным выбором: либо писать namespces со строчной типа \MLFW\routers\Default, то ли каталоги переименовывать, чтобы назывались с заглавной буквы. И то, и другое мне кажется неэстетичным. Можно, конечно, отказаться от PSR-4 вообще и сделать свой autoloader или прописать пути для всех namespaces второго уровня вручную, но это тоже какие-то кривые решения.
Узнал, что для типовых задач frameworkа — кеширования, логгирования, обрабтки событий и т.п. существуют стандартные интерфейсы, описанные в разных PSR. Хорошо, что это произошло сейчас, а не после того, как уже сделал бы свои.
Пока не могу определиться с названием проекта (каталога сайтов). По-русски я решил назвать его «Народный обозреватель каталог», но вот с названием репозитория и доменом под него всё сложно. Сначала рассматривал вариант narcat, но очень уж неблагозвучно. Пока остановился его pcatalog (от people's catalog).
Ещё была мысль создать ВК группу, в которой вести dev-блог, где описывать то, что делаю.

День определённостей

4X_Pro
Сегодня на связь вышла Kitsune. Её появление помогло мне определиться с некоторыми вопросами, которые не дают мне покоя в последнее время. Во-первых, с тем, на какой Linux переходить: Arch, Manjaro или Debian testing. Kitsune спросила, есть среди них тот, который мне бы просто нравился, без всяких соображений по поводу совместимости софта, идеологии НК и т.п. Ответ был простой: Manjaro. На что она мне ответила «ну вот его и ставь!». Потом зашла речь о покупке компьютера. Она удивилась, как я могу столько времени планировать и не покупать. Хотя ответ очень прост: покупка б/у для меня — действие новое, а поэтому страшное, из-за чего всё время откладывается.
Потом посоветовала проверить, не появилось ли на Авито что-нибудь новое. Я сначала думал, что за неделю ничего стоящего не появится. Но оказался неправ: нашёл интересный вариант с процессором 10-ого поколения (правда, i3) и вполне приемлемой матплатой на H-чипсете и даже с NVMe-разъёмом (но пустым, диски — только обычные SATA). Только вот цена такая, что опасаюсь, нет ли там подвоха. И ещё блок питания сильно не нравится. Но тем не менее, этот вариант кажется более перспективным, чем тот, который я рассмаривал ранее с процессором 4-ого поколения.
А ещё сегодня совсем было собрался сесть за написание своего frameworkа и скрипта для каталога. Но с подачи Evgа решил было посмотреть один готовый вариант под названием OsClass. Сначала он было мне понравился. Я насоздавал категории, вместо формата попытался было использовать свойство «местоположение». Но когда начал создавать сами сайты, оказалось, что делать это ну очень неудобно. Так что завтра всё же сажусь за свой framework.

Размышления о свободе

4X_Pro
Вчера долго спорили с Tellой по идейным вопросам. В итоге выяснилось, что большая часть наших разногласий сводится к следующему. Я изначально занимаю жёсткую позицию Я+Вы- относительно способности большинства окружающих делать разумный и адекватный выбор, «жить по уму». (Хороший пример этого — существование всякого «инфоцыганства».) Поэтому считаю, что изначально свободы у каждого должен быть миниумум, но должен быть способ её заслужить через прохождение каких-то испытаний. Соответственно, в конечном итоге должно получиться иерархическое общество с несколькими уровнями гражданской свободы/ответственности. Tella же придерживается позиции, что от нарушения равенства и ограничения свободы вреда больше, чем от злоупотребления ею. А если кто-то употребляет данную свободу себе во вред (именно себе, а не окружающим), то это его проблемы.
А сегодня возникла мысль, что такие позиции — это прямое следствие дихотомии «аскет/жизнелюб». Для меня как аскета неприемлем напрасный расход ресурса (пусть даже и чужого), а для неё это не столь важно.

Неожиданность от Тинькофф

4X_Pro
Сегодня случайно обнаружил, что у меня каким-то образом 6 октября подключился «Тинькофф Pro». Непонятно, то ли сам я не туда нажал по невнимательности и включил, то ли это самодеятельность банка. Первые два месяцам там бесплатные, так что решил пока подержать и отключить только первого декабря, поскольку это даёт удвоенный процент на остаток по карте. Теперь, главное, об этом не забыть. Даже поставил себе напоминание в мобильнике на всякий случай (тот редкий случай, когда я вспоминаю об этой функции).

Непростой выбор дистрибутива

4X_Pro
Сегодня большую часть дня занимался тем, что гонял разные benchmarks под Manjaro, Arch, загружаемыми с флешки и установленным на диске Mint. Всё началось с того, что однажды на YouTube попалось видео, где утверждается, что дистрибутивы на основе Ubuntu, сильно проигрывают Arch-подобным по пропускной способности кеша. Проверил это у себя с помощью pts/cachebench, но нет — разница составила чуть меньше 1%, но таки Arch и Manjaro быстрее (между собой у них расхождение на 0.1% где-то).
Потом решил потестировать пропускную способность памяти в целом. И вот тут разница куда серьёзнее: до 33%. Интересно, с чем это связано? То ли просто под Mint ядро старое (4.04) и хуже оптимизированное, то ли я начудил при его компиляции. На всякий случай даже дважды померил, но результат тот же самый. По-хорошему, нужно бы поставить стоковое из дистрибутива и перетестировать на нём, но как-то мотивация на все эти измерения уже заканчивается.
Также попытался искать чужие сравнения производительности Manjaro и Arch, но ясности это не добавило. В большинстве случаев разница в пределах погрешности. Но нашёл видео, где Manjaro устойчиво проигрывает (хоть и немного) чистому Arch и endeavourOS.
И теперь никак не могу определиться: что для меня важнее. Либо поставить дистрибутив, который условно будет считаться более быстрым, а также лучше соответствующим идеологии Настоящего Компьютерщика. Либо поставить систему, которой можно пользоваться из коробки и сэкономить кучу времени на настройке и подборе софта, но потерять какую-то долю производительности (и, самое главное, убеждение, что я выжал из своего «железа» всё, что можно).

Заметка в Instagram от October 16, 2022 at 08:41PM

4X_Pro
Ловлю последние дни золотой осени. На этот раз ненадолго выбрался в Терлецкий парк. Из-за выходного дня было многолюдно, но тем не менее, прогулка получилась весьма приятной. Вернулся домой с каким-то чувством внутренней наполненности и внутренней гармонии.
#золотаяосень #осень #листьяжелтые #листья #деревья #терлецкийпарк

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

День вторых мест

4X_Pro
Вчера с подачи Ал.С. решил было снова выбраться на настолки — снова сыграть в «Остров кошек». Но сегодня всё пошло наперекосяк. Проснулся очень поздно и полузаболевший. В какой-то момент хотел даже написать, что не приду, но всё же не стал. Да и поездка до места (а это снова был ЗИЛ) тоже прошла не очень хорошо. Казалось, что мир изо всех сил сопротивляется тому, чтобы я на эти игры попал. Я уже стал ожидать, что на играх случится что-то совсем плохое. Но на удивление обошлось, если не считать того, что было совсем шумно, и нам пришлось перебраться на четвёртый этаж вместо того места, где сидим обычно.
Сначала быстро сыграли в «Каркассон» на пятерых. Я занял второе место, а Ал.С. вырвалась вперёд почти на 50 очков, удачно разыграв поля и присоседившись к одному моему городу. А в «Кошек» я на этот раз занял второе место с отрывом от победительницы в 11 очков. В этот раз вроде удалось найти баланс между накоплением и тратой ресурсов, за исключением второго раунда, где взял на одну кошку меньше, чем мог бы — набрал слишком мало временных корзин. Когда это осознал, попытался было разыграть карту, позволяющую получить две дополнительные, но без толку: пришло совсем не то. Зато на последнем раунде разыграл весьма сложную и неожиданную для всех комбинацию. Но в итоге у победительницы — М.Сб. обошла меня по трём параметрам: у меня было четыре разных семейства по 3-4 кошки, у неё — одно огромное, она не заполнила только одну каюту, а я — две (плюс ещё -5 очков за крыс). При этом я планировал вырваться вперёд по картам заданий, но и по ним она проявила себя неплохо. Остальные участницы отстали очень сильно (49 и 47 очков соответственно).
В общем, домой возвращался вполне довольный тем, что выбрался. Даже несмотря на то, что по сути, из-за игр весь день прошёл мимо, и больше я ничего не успел. Хотя нет: ещё успел запустить процедуру переноса доменов на Beget.

Непредсказуемы пути Сетевые

4X_Pro
Удивительно, насколько может быть непредсказуемым Сетевой путь, и как далеко может завести!
Сегодня залез на один клиентский сайт, где нужно было разобраться, почему часть категорий выводится в боковом списке, но не выводится в основном на главной. С установленной там CMS я дела имел мало, модулей в ней много, поэтому быстро стало ясно, что искать код, отвечающий за вывод списков, методом тыка — совершенно неэффективно. Захотел прибегнуть к испытанному средству — зайти по SSH и сделать рекурсивный grep по известному куску HTML-кода. Но пароль от сайта я, естественно, не помню, искать его лень. Жалею о том, что в Filezilla не сделали встроенный терминальный клиент, чтобы можно было сразу подключиться по SSH с теми же логином/паролем/ключом.
Потом вспоминаю, что уже давно собирался поискать альтернативу Filezilla, которая бы использовала GTK вместо Qt, и решаю, что это время пришло. Начинаю поиски. С удивлением обнаруживаю, что SFTP-клиентов под Linux на удивление мало. Наконец, на глаза попадается некий Muon, бывший Snowflake. Оказывается, что он написан на Java. Это плохо, но не смертельно. Качаю deb-пакет, ставлю, запускаю. Подключаюсь к личному серверу, вроде всё хорошо, но что-то не так. Через некоторое время понимаю, что именно: панель с файлами на сервере — слева, а не справа, как у всех нормальных FTP-клиентов. (Интересно, автор — левша или просто человек с альтернативным мышлением?) Лезу в настройки и пытаюсь найти, как поменять. Через какое-то время получается на правой панели открыть удалённые файлы, но вот локальные на левой — так и не получилось. Вдвойне обидно, так как в остальном приложение меня вполне устраивает (кроме мелких глюков в юзабилити): есть и терминал, и встроенный редактор, который позволяет редактировать файлы без подтверждения «загрузить изменённый файл» после каждого сохранения, что очень надоедает в Filezilla.
Решил глянуть исходный код на случай, можно ли это как-то быстро исправить. Тут должна быть история про то, как плохо зная Java, я решил найти по ней курсы, чтобы выучить нормально. Нормальных бесплатных не нашлось, поэтому решил сделать свои, и т.д. и т.п. Но нет, до этого всё же не дошло! Потратив где-то час, в итоге нашёл в коде нужное место! А заодно и там же увидел возможность исправить мелкий баг — на панели с локальными файлами открывается всегда домашний каталог, даже если в настройках соединения задан другой.
Потом выяснилось, что для пересборки нужен maven (это аналог composerа в PHP или cargo в Rust). У меня он, конечно же, не был установлен, пришлось ставить (попутно сожалея о том, что опять захламляю систему). Поставил, запустил компиляцию (а в Java это процесс не быстрый) — ошибка. Оказывается, поменяв местами правую и левую панели, я забыл исправить типы создаваемых классов. Компилирую ещё раз, запускаю, подключаюсь к серверу, и о чудо: панели располагаются как надо!
Но тут обнаруживается другое: с GitHub я скачал более новую версию, в которой отключили встроенный редактор и добавили тот самый запрос на перезапись файла, который так бесил меня в Filezilla. Ещё добавили постоянный запрос пароля от ssh-ключа, что очень раздражает. В общем, развитие программы пошло куда-то не туда. Прямо хоть fork делай… (Но для этого опять пришлось бы отложить мои основные задачи — каталог сайтов и сообщество идеалистов).
А вообще, вся эта ситуация — отличный пример, почему я никогда ничего не успеваю…

Решил проблему с внешним монитором

4X_Pro
Сегодня сделал большой шаг вперёд — сделал обходное решение для проблемы с внешним монитором при загрузке Linux (ноутбук в этом случае отправлял внутреннюю панель в какой-то кривой режим энергосбережения, из-за которого Linux не мог определить корректно её разрешение). Теперь смогу наконец-то начать пользоваться более новыми ядрами, а не сидеть на 4.4, которое могло хоть как-то грузиться в такой ситуации. Вообще, к этому решению я подходил ещё в августе, но тогда шёл обратным путём: пытался выключать внутреннюю панель ноутбука через systemd при наличии внешнего монитора. В этот раз сделал наоборот: внутреннюю панель сначала выключаю через параметр командной строки (video=eDP-1:d), чтобы не мешала грузиться, а потом включаю обратно уже через скрипт, запускаемый в systemd. Теперь ноутбук загружается нормально и с подключенным внешним монитором, и без него. Только вот без «костылей» не обошлось — в скрипте в systemd unit пришлось ставить sleep 1, иначе скрипт запускается до момента, когда в /sys/class/drm появятся нужные файлы. Так что теперь осталось определиться, на что обновляться/переходить.

+1 курс на Coursera!

4X_Pro
Закончил прохождение курса «Повествование и влияние: Эффектная коммуникация» на Coursera. Курс весьма понравился, узнал много интересного! Правда, с практической точки зрения вряд ли пригодится. С моими заваленными 5 и 8 уровнями ТУАИ сложно подобрать интересные истории по теме выступления и настроиться на конкретную аудиторию с её целями и интересами. Да и вообще речевая деятельность в оффлайне слишком много ресурсов мозга съедает. (Сейчас написал это и задумался, а не может ли одно быть связанным с другим.) Но, по крайней мере, узнал, как это работает у тех, у кого таких проблем нет.
А ещё важно то, что с этим курсом я как-то преодолел свою проблему с регулярностью. Это заставило меня задуматься, почему же в этот раз не получилось как всегда: начал что-то, потом снесло потоком жизни, а потом не смог вернуться. Дело в регулярных напоминаниях на планшете? Или в том, что в каждой неделе объём информации был не такой уж большой, поэтому казалось, что можно легко справиться и незачем откладывать? Или просто выдался период затишья, когда не было «уплотнений жизни» и достаточное количество времени сидел дома? Хотя вроде тоже не особо верно…
Но вообще, конечно, для того, чтобы чувствовать удовлетворение от жизни, нужно проходить не один курс в год, как сейчас, а хотя бы один в два месяца. Но без ответа на вопрос выше это вряд ли получится…

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

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