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

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


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

t.me/4x_pro

Лог жизни

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


Заметка в 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 уровнями ТУАИ сложно подобрать интересные истории по теме выступления и настроиться на конкретную аудиторию с её целями и интересами. Да и вообще речевая деятельность в оффлайне слишком много ресурсов мозга съедает. (Сейчас написал это и задумался, а не может ли одно быть связанным с другим.) Но, по крайней мере, узнал, как это работает у тех, у кого таких проблем нет.
А ещё важно то, что с этим курсом я как-то преодолел свою проблему с регулярностью. Это заставило меня задуматься, почему же в этот раз не получилось как всегда: начал что-то, потом снесло потоком жизни, а потом не смог вернуться. Дело в регулярных напоминаниях на планшете? Или в том, что в каждой неделе объём информации был не такой уж большой, поэтому казалось, что можно легко справиться и незачем откладывать? Или просто выдался период затишья, когда не было «уплотнений жизни» и достаточное количество времени сидел дома? Хотя вроде тоже не особо верно…
Но вообще, конечно, для того, чтобы чувствовать удовлетворение от жизни, нужно проходить не один курс в год, как сейчас, а хотя бы один в два месяца. Но без ответа на вопрос выше это вряд ли получится…

Наконец-то хорошие новости

4X_Pro
Никак не могу определиться, как быть с frameworkом для своих проектов. Вчера даже расклад на Таро сделал. Но постепенно склоняюсь к тому, чтобы всё-таки делать свой framework, возможно, с использованием готовых библиотек для некоторых типичных действий, например, migrations. Но пока до состояния «определиться, сесть и начать писать» не доходит. С другой стороны, вспоминаются слова Лугаира Громового Камня из игры Arcanum о том, что он проводил человеческие жизни в процессе выбора всего лишь узора для украшения стены. Вот это я понимаю, правильный подход, ориентированный на вечность, а не сиюминутное!
Но вообще, начался период хороших новостей. Во-первых, узнал, что снова доступен GeForce Now. И этой ночью после долгого перерыва поиграл в World of Tanks и Ведьмака. (И снова задался вопросом, нужно ли мне покупать мощный компьютер, если есть облачные игры, а для WoT и игр попроще достаточно б/у.) А вот в Path of Exile мой аккаунт, судя по всему, удалили за неактивность. По крайней мере, так и не смог ни войти, ни восстановить пароль от него.
Во-вторых, недавно удачно откупил акции банка СПб, которые продал летом в ожидании, что дивиденды отменят. Но их не отменили, так что даже после гэпа они стоили 92 рубля, тогда как продавал я по 90.1. И я уже думал, что всё, придётся смириться с тем, что я остался без этих акций. Но теперь удалось где-то по 75.8, что оказалось даже выгоднее дивидендов (они были 11,81 руб).
Ещё сегодня снова вышла на связь Melany Tale. С одной стороны — решила вопрос с оплатой подвисших freelance-задач. Но с другой — появились новые, так что опять может получиться как всегда: от своих проектов отвлекусь, а потом не вернусь или вернусь не скоро.

Решил вопрос с Web IDE

4X_Pro
Кажется, решил для себя вопрос с Web IDE на случай, если нахожусь за чужим компьютером. Во-первых, в GitHub есть встроенная IDE, её можно вызвать, нажав точку на клавиатуре в нужном своём репозитории. Но работает весьма медленно из-за того, что сервера GitHub находятся далеко, и нет возможности выполнять отладку.
Во-вторых, есть замечательный сервис GitPod, позволяющий открывать репозитории с GitHub и GitLab и заниматься разработкой полноценно, с возможностью запуска приложения в терминале и даже установкой MySQL. Правда, на месяц дают всего 50 часов. Но для ситуации, когда большая часть разработки делается со своего компьютера, а GitPod — это резервный вариант, этого вполне достаточно.
Теперь осталось самое главное — приучить себя пользоваться git в постоянном режиме, чтобы код всегда был на GitHub, а не только для выкладывания окончательных релизов.

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

4X_Pro
Впервые после возвращения из Ярославля выбрался на длинную (10 тысяч шагов) прогулку в Измайловский парк к Лебедянскому пруду. Как всегда, прособирался слишком долго, из-за этого упустил самую солнечную часть дня. До пруда дошёл уже когда солнце стало клониться к закату. И всё же удалось увидеть красоту золотой осени!
А ещё такая прогулка очень способствует размышлениям. Впервые задался вопросом, почему в любом оценочном споре в Интернете я принимаю систему оценивания противника «что есть хорошо, а что — плохо» как более весомую, чем моя собственная. Естественно, это даёт противнику существенное преимущество. Причём это остаётся верным, даже когда я сам не участвую в споре, а только наблюдаю со стороны, если позиция одной из сторон близка к моей позиции, а вторая, наоборот, противоположна. Но вот ответа, увы, пока не нашлось.
Зато прогулка прибавила бодрости и какой-то собранности!
#измайловскийпарк #лебедянскийпруд #золотаяосень #осенняяпрогулка #размышления

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

Домены и экономия

4X_Pro
Так сложилось, что больше всего моих доменов заканчивается в ноябре. В основном, это домены соционических проектов, которые я регистрировал в далёком-далеком 2008 году. Тогда и денег было не жалко, и стоили они всего по 89 рублей. Потом наступил кризис 2014 года, и регистраторы стали считать партнёрские тарифы не по сумме всех совершённых платежей, а по обороту за последний год. Тогда я перенёс домены к Reg.Ru, чтобы в обороте учитывались платежи и за домены, и за хостинг. Какое-то время это было терпимо, но потом регистратор пошёл ещё дальше: стал считать партнёрский тариф не за год, а за полгода. А в первой половине года у меня доменов мало (по-моему, только 4xpro.ru, xxxxpro.ru, openproj.ru и socionics.me). И получается так: на вторую половину года устанавливается более дорогой тариф, и приходится продлевать домены по нему. А на первую — более дешёвый, но доменов слишком мало, чтобы этим воспользоваться.
В итоге задумался над вопросом, нельзя ли продлевать дешевле. Решил уйти в beget.com, там продление стоит всего 289 руб вместо 450 в Reg.Ru на моём тарифе. (UPD: как выяснилось, если доменов будет 11 и больше — то и ещё дешевле, так что сейчас нужно готовить вторую волну переноса.) Но оказалось, что перенос — платный и стоит 150 руб. В итоге экономия составит в этот год всего 11 рублей… Но тем не менее, перенос я всё же начал. Возни, правда, очень много: на Beget нет пакетной операции по приёму, для каждого домена приходится вводить Auth-код передачи, паспортные данные и подтверждать через Email.
Но в любом случае, вот в чём позитивная сторона кризиса: он заставляет искать варианты экономии там, где прежде было желание отмахнуться «ну и ладно, это несущественно».

Бессоница и возвращение к давнему проекту

4X_Pro
Опять приступ бессонницы по схеме «проспал один цикл около полуночи, потом не могу уснуть до утра». Но зато решил внезапно свалившуюся проблему. Обновился интерфейс ВК, и с новыми элементами (в частности, списком друзей) не работало моё расширение VKpph для выделения приватных профилей. Пришлось срочно исправлять. Сначала думал, нужно просто добавить одну строчку с нужным CSS-селектором, но оказалось, что не всё так просто: список друзей появляется с задержкой, из-за чего происходит несколько запросов подряд с превышением лимита обращений к API. Пришлось сделать небольшой «костыль» — задержку перед самым первым обращением, чтобы успели отрисоваться все элементы на странице. А «костыльность» заключается в том, что время задержки пришлось подбирать по ЧЛ-ному, без каких-либо обоснований, лишь бы работало.
Эх, как же плохо жить в постоянно меняющемся мире! Сидишь, и вдруг внезапно прилетает такая вот проблема, которую нужно срочно решать. В то время как интерес к этому проекту закончился ещё с публикацией какой-нибудь версии 1.0.4.

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

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