Портрет 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
Первые невозвратные потери на рынке: сегодня продал остатки акций «Детского мира». В октябре его ликвидируют, и неизвестно, какими будут ликвидационные выплаты, поэтому всё же решил сбросить акции сейчас, пользуясь тем, что они хоть немного отрасли. Хотя в относительных величинах убыток невелик — чуть меньше 1.5% от всего капитала (или около 2%, если считать только акции), но сам факт, что пришлось его фиксировать, очень и очень неприятен… С другой — хотя бы высвободил деньги, которые переложил в другие акции в момент просадки рынка, и есть шанс, что со временем они отрастут там.

Замечательный день

4X_Pro
Вчера получился замечательный день! Успел съездить в лес за деревней Грибанино. Побывал у одного из озёр, к которым впервые выбирался в 2019 году. Потом зашёл в березняк неподалёку. Ничего особо интересного не нашёл, не считая пары сыроежек и небольшого количества брусники. Но даже просто спокойно побродить по осеннему лесу — это тоже удовольствие. Особенно в солнечный день по березняку, где земля покрыта только-только начинающей опадать золотой листвой. Остаётся впечатление света и простора.
Вечером наконец-то двинулось дело и с CodeBy: прошёл ещё два задания. Одно — новое, которое только недавно появилось (и было очень лёгким для тех, кто хорошо владеет SQL), второе — одно из тех, на которых я наглухо застрял в предыдущие дни. Оказалось, что его нужно было решать совсем иначе, чем я предполагал сначала, и только случайно заметив комментарий в исходном коде одной из страниц (а точнее, то, как он меняется), я понял, в каком направлении нужно двигаться. Заодно и освоил методику SSTI для Python. Так что теперь я уже на 1594 месте!
В игре Two Kingdoms тоже есть продвижение. Кстати, в квестах иногда помогает начать проходить их с нуля: можно обратить внимание на что-то, что при первом прохождении не заметил или не сообразил. (Хотя в моём случае перепрохождение было вынужденным: почему-то не работает синхронизация сохранений между компьютерами).
А ещё восстановились показатели в Welltory. Интересно, что со мной было в августе? Реально бессимптомно болел коронавирусом или же просто какой-то спад.

Дни slow life и уединения

4X_Pro
В последние дни предаюсь slow life и наслаждаюсь одиночеством. Играю в компьютерные игры, читаю книжку, тренируюсь в NeuroNation, пытаюсь решить ещё несколько заданий на CodeBy, но безрезультатно. Зато изучил ещё пару хакерских трюков и приёмов, а также несколько утилит. И это навело меня на мысль о том, что надо написать статью про соотношение фундаментального знания (понимание «как это вообще работает», как пишут в англоязычных источниках, under hood) и инструментального (знание тех же утилит, библиотек и т.п.), и способов их получения. Правда, кроме самого поднятия этого вопроса в целом, в голове пока нет никакой конкретики, что именно писать, кроме разве что переживаний, что слишком многие ценят только инструментальное знание, а ценность фундаментального становится понятной только тогда, когда что-то начинает работать не так. И ещё написать размышление о том, что с ростом популярности любого самодельного сервиса начинает не хватать ресурсов для его работы. И его владелец оказывается перед непростым выбором: либо ограничить рост (например, закрыть регистрацию новых пользователей), либо до какой-то степени коммерциализировать, чтобы иметь возможность купить/арендовать более мощный сервер. И вопрос в том, какой путь является более этичным… Но про это, наверное, напишу на сайт идеалистов. Тем более, там с появлением нового пользователя zvezdochetia некоторое оживление наметилось.
Но несмотря на то, что жизнь почти соответствует моему идеалу, всё равно испытываю внутреннюю напряжённость и недовольство от того, что всё равно не успеваю всё, что хотел бы уместить в каждый свой день. И в игры играю меньше, чем хотелось бы, и тренировки и медитации не получаются ежедневными, и вообще по полдня теряется то ли на быт, то ли просто непонятно куда. В частности, не хватает времени писать в блог (правда, и потребности особой не было — просто не о чём).
А ещё во всю чувствуется осень! Несмотря на то, что дни тёплые и солнечные, как летом, по ночам стало ощутимо холодать. Да и просто световой день сократился, в 20 часов за окном тьма-тьмущая… И близость к природе тут работает в обратную сторону: сокращение светового дня воспринимается тяжелее, чем в городе.

Первое сентября

4X_Pro
Вот и всё, лето прошло. Наступило первое сентября. Эх, какое счастье, что теперь для меня это самый обычный день в году, который можно провести в режиме slow life и созерцании Внутреннего Безмолвия, что я и сделал сегодня. А вот в школьные времена мысль о его приближении отравляла все последние дни августа. В студенческие было двоякое отношение: с одной стороны, новый курс, новые интересные знания, с другой — на год ближе к окончанию института, что меня не радовало. К тому же первые две-три недели студенческой жизни были самыми лёгкими: минимум нагрузки дома, так как нет курсовых, да и первые лабы обычно не требовали серьёзной подготовки.
А ещё, вспоминая дачные сезоны последних лет, я обратил внимание на то, что обычно хорошо запоминается только его начало (период с мая где-то до 12 июня) и конец — август (и сентябрь), когда уже никуда не деться от ощущения наступающей осени, даже если погода по-летнему жаркая, как сегодня или в сентябре прошлого года. А июнь и июль как-то выпадают из памяти, сохраняются разве что какие-то отдельные моменты, наиболее яркие прогулки.

Ночная фотопрогулка

4X_Pro
В среду, возвращаясь с новой квартиры на дачу, обратил внимание на то, как красиво ночью огни фонарей на недавно построеннной дороге отражаются в затопленном бывшем песчаном карьере. Решил, что надо будет приехать туда поздно вечером на велосипеде и заснять это. И вчера таки выбрался! Надо сказать, что несмотря на все неудобства ночной поездки на велике (например, приходится всё время держать мобильник в руке, чтобы светить им перед собой, как фарой), это классно! На открытом пространстве небо над головой кажется просто бескрайним, и возникает какое-то ощущение полёта и единства со всем миром. В общем, очень доволен. Жалею только, что в этот заезд не взял нормальный фотоаппарат. Он с ночной съёмкой справляется всё же куда лучше мобильника.

Куда жить дальше?

4X_Pro
Вчера отправился на длительную прогулку вдоль Клязьмы, во время которого вновь стал задаваться вопросом, куда двигаться по жизни дальше. Сейчас вижу четыре основных направления:
1. Сосредоточиться на написании статей (но почему-то дело идёт не просто плохо, а очень плохо, даже инвентаризацию уже написанного для PDF-сборника до сих пор не сделал).
2. Вернуться к разработке Симурга.
3. Вернуться к ботоводству для TG, в частности, сделать бот для мониторинга Яндекс.Метрики, который будет сообщать об резких изменениях траффика или количества достижений цели, а также довести до ума SiteKnockerBot — избавиться от ложных срабатываний, которых, как выяснилось, у недавно добавленных сайтов очень и очень много.
4. Заняться всерьёз bug hintingом. Собственно, о последнем варианте я больше всего и размышлял. С одной стороны, почти везде одни плюсы, главный из которых — возможность жить в режиме «свободного охотника», прямо как в компьютерных играх: захотел — пошёл охотиться на монстров баги, не захотел — не переживаешь, что время идёт, а дело — стоит. Второй — это то, что большую часть работы — продумывание, где и что проверять, — можно делать в голове, например, во время прогулок или поездок, в отличие от Web-программирования, где вёрсткой HTML или отладкой без компьютера не позанимаешься… А ещё — минимум общения с людьми (по сути, только написание reports), и хорошо согласуется с образом жизни Искателя Халявы. А в качестве общественно-полезного результата можно вести блог с описанием каких-нибудь методик (и дублировать отдельные материалы на сайт того же CodeBy, там есть возможность публикации от пользователей). Да и предательством себя или своей мечты это не будет, скорее наоборот, возвращением к ней. Ведь изначально я и представлял себя крутым хакером, который может силой своего знания сам наказать всех тех, кого он считает неправильными. Это потом решил вместо разрушения переключиться на созидание сообществ правильных людей.
Проблема только в одном: в моём заваленном 5 уровне ТУАИ, который отвечает за нешаблонные действия, импровизацию, готовность действовать вслепую. Ну и ещё недостатке знаний, возможно (хотя за эту неделю перелопатил немало информации). Сейчас вот упёрся в несколько задач на CodeBy, которые считаются простыми, и просто не знаю, что с ними делать.
UPD: пока писал, всё же нашёл решение двух задач. Правда, одна из них была не из тех, на которых застрял изначально.

Уехал из города предаваться slow life

4X_Pro
Вчера снова уехал на дачу. Буду предаваться slow life. В частности, сегодня сам собой получился день информационной разгрузки: уже 17 часов дня, а я до сих пор не выходил в Интернет (если не считать отправки результатов замера в Welltory на старом мобильнике). Как всегда в таких случаях, сначала мысли неслись в голове просто бешеным потоком, а потом вдруг пришла такая ясность создания, сфокусированность и ощущение внутренней целостности, какого не было уже очень давно.
Но в то же время понимаю, что это — до поры до времени. Как только снова включу Интернет, множество потоков информации снова начнёт разрывать мою психику на куски. (Это сообщение я пишу в виде оффлайновой заметки.) Может, когда-нибудь человечество напишет ИИ, который будет стражем границы между психикой отдельного человека и бурлящим хаосом Интернета, и будет приоретизировать всю входящую информацию и впускать её строго дозировано с учётом состояния получателя так, чтобы она не вызывала расфокусировки и растерянности. Но сейчас об этом можно только мечтать...
А пока что созерцаю природу. Несмотря на то, что на улице почти +30 градусов, и солнце очень жгучее, приближение осени уже чувствуется. И в общем настроении — чувстве чего-то невозвратно уходящего, и в деталях вроде пожелтевших листьев, огромных ягод черноплодки или удлиннившейся тени от дома даже в середине дня.
А ещё сейчас просто идеальное время, чтобы смотреть на звёзды: ночи ещё тёплые, но уже достаточно тёмные. И звёзды кажутся очень и очень яркими!

Очень тяжёлая доработка бота

4X_Pro
Вчера немного доработал SiteKnockerBot. Сделал выгрузку лога в CSV (заодно и разобрался, как в TG отправлять файлы с помощью php curl) вместо обычных сообщений, а также предусмотрел возможность логгирования запросов и ответов в случае необходимости. И ещё немного поменял настройки бота, чтобы уменьшить число ложных собрани срабатываний (но толком не помогло: сегодня утром опять случилось). Хотя на первый взгляд, доработки казались очень простыми: выяснить, как в Go получить полный текст HTTP-запроса и ответа, создать несколько полей в таблицах и обеспечить запись туда, проблемы сыпались одна за другой. Постоянно были какие-то проблемы с сохранением запросов в таблицу. В Go строке нельзя взять и присвоить nil, и я долго не мог понять, как сохранить в базу null. Пытался применить NullString, но не работало. Так и сдался, применил костыль с двумя вариантами sql-запроса.
После этого дописал генерацию CSV-файла уже на PHP (на нём написана интерфейсная часть бота, которая отвечает на запросы пользователя), но и тут посыпались проблемы, и весьма серьёзные: начал падать сам PHP с segmentation fault. Долго не мог понять, почему. Попробовал скопировать тот код, который мне сгенерировал ChatGPT при ответе на вопрос, как отправить файл в Telegram — всё работает. Добавляю с минимальными изменениями в бот — нет. Ошибка оказалась предельно дурацкой: я передавал класс CurlFile в curl_setopt не как элемент хеш массива с параметрами, а вместо него. Но на то, чтобы это найти, ушло часа полтора.
Кстати, тут надо бы изучить получше, что именно приводит к segmentation fault: сама передача этого класса в качестве параметра или ошибочное добавление к нему лишних полей, а также выяснить, осталось ли это в последних версиях, и сделать bug report разработчкам самого PHP.
Потом опять начались проблемы с сохранением в базу данных, но уже не на локали, а на сервере. Опять долго не мог понять, почему, думал, дело в боте. Оказалось, что нет, в кодировке таблицы в MySQL: нужно было поменять её с utf8 на utf8mb4. И только после этого всё почти заработало. Но вылез last minute bug: я решил вынести количество запрашиваемых с сервера байтов из hard-coded в заголовке Range в константу. И тут внезапно полезли проблемы на ровном месте. Как известно, Go — строго типизированный язык, и там присоединить число к строке, написав что-то вроде "Range: 0-"+MAX_LEN нельзя. (Это вам не JavaScript). Я по привычке из Python или PHP написал string(MAX_LEN) и думал, что всё в порядке. Но потом с удивлением обнаружил то, что резко выросло число ошибок со статусом 416, которые я не видел прежде. В том числе и а на моих собственных сайтах, для которых я включил сохранение отладочной информации. И там я увидел, что в заголовке Range вместо 128000 стоит непонятный Unicode-символ. Оказывается, в отличие от скриптовых языков, Go преобразует число в Unicode-символ, а не строковое представление. Стал это исправлять, но было уже 5 часов, голова соображала плохо, и ещё несколько раз допускал глупые ошибки, прежде чем сделал всё как надо.
В общем, день закончился с очень противоречивыми впечатлениями: с одной стороны, доволен, что всё же сделал задуманное. С другой — злостью на себя, что провозился так долго и не поиграл в The Council, и вообще лёг спать слишком поздно, тогда как завтра надо было рано вставать. С третьей — понимаю, что дело просто в недостатке опыта, так как на Go я пишу редко и мало (по сути, только этот бот и пара задач на CodinGame).

Неделя «болота жизни» позади

4X_Pro
Прошлая неделя была какой-то неудачной. Опять возникло ощущение, что буксую в «болоте жизни»: вроде дни (кроме понедельника, там особый случай) были чем-то заняты, а по итогу — непонятно, куда время делось. Вроде и не сделал ничего стоящего, и удовольствия особо не получил (за исключением разве что перепрохождения The Council и решения пары заданий на CodeBy). Да ещё с показателями в Welltory что-то непонятное творится: после пробуждения вроде хорошие, но уже через пару часов падают, и такими остаются до конца дня. Да и реально усталость непонятная присутствует. А от прогулок усталость стала появляться уже после 3000 шагов. Думал, что дело в сбитом режиме дня, но когда удалось его относительно наладить, лучше не стало. В общем, то ли какой-то биоритмический спад по всем показателям, то ли бессимптомно болею коронавирусом в третий раз. Да ещё и на переписку уходить стало слишком много времени, мысли форумулирую медленнее, да и печатать стал «грязнее». Видимо, потому что давно на Клавогонках не тренировался.
А ещё для полного счастья стал глючить игровой NVME-диск. То ли перегревается (он прямо под видеокартой расположен), то ли сам по себе плохой. Эх, нужно было в качестве второго диска брать всё же SATA, как планировал изначально. Для игр разница несущественна, а так за те же деньги мог бы взять 1.5 Гб вместо 1, и расположен бы он был в самой нижней части системного блока.
Только позавчера ближе к вечеру жизнь стала налаживаться. Прошёл очередное тестирование в NeuroNation (кстати, тренироваться тоже стал реже — просто времени не остаётся), показатели подросли! А вчера как следует отоспался (83 балла сна), а потом получился день отдыха и информационной разгрузки, большую часть провёл вообще не за компьютером.

Посмотрел вебинар по группам ВК

4X_Pro
Вчера и сегодня посмотрел первые два дня вебинара по группам ВКонтакте. Редкий случай, когда от вебинара осталось очень даже положительное впечатление. Даже реклама платного курса была встроена так, что не раздражала.
Но в целом полезных знаний вынес не сказать, чтобы много. Всю реально полезную информацию идёт было бы, наверное, уложить минут в 20. Самым важным был список типичных ошибок, которые мешают попасть в ленту рекомендаций, и то, что для соцсетей сейчас главным критерием качества являются прежде всего комментарии и, отчасти, репосты. Ну и то, что при слишком большом количестве сообщений в день группа начинает оцениваться как назойливая, и меньше показываться в ленте. А вот о самом главном — как писать цепляющие посты, не скатываясь в кликбейт, — толком не рассказали. Только несколько общих приёмов, которые могли бы пригодиться для коммерческих групп, типа «статья должна предлагать решение какой-то проблему клиента» или хорошо заходят списки вида «N способов сделать НЁХ в домашних условиях». Только вот как это к slow life применить – ума не приложу.
Хотел было поискать информацию в других источниках, но тоже не особо результативно. Ещё возникла мысль применить НЛП-моделирование, и попытаться с его помощью представить мышление человека, который легко и свободно пишет такие статьи. Но не очень получается... Точнее, самоощущение такого человека слишком уж отличается от моего, чтобы сколь-нибудь долго быть в этой роли. Он какой-то гораздо более внутренне подвижный, лёгкий на подъём, оптимистичный. В нём нет моей вязкости.
Ещё попытался поднабросить в чате, когда ведущий начал двигать идею о том, что чтобы продавать что-то, нужно не вещать в группе что-то вроде «налетай, торопись, покупай живопись», а выступать в роли эксперта, и тогда люди сами захотят купить. Я написал, что для того, чтобы выступать в роли эксперта, нужно внутренне чувствовать себя экспертом, иначе будет неубедительно. Но увы, мой комментарий остался без внимания. Может, потому, что надо было явно добавить, что «а этому мешает синдром самозванца».
Но вообще, вебинар неплохо так мотивирует. После его окончания даже была мысль попробовать свои силы в создании какой-нибудь чисто коммерческой группы, например, сделать Tellе группу «Стихи и песни на заказ» (она иногда этим подрабатывает). И только когда посидел в медитации и вернулся в своё обычное состояние, это желание как-то потускнело. Вот, кстати, моя вечная проблема: как научиться консервировать мотивацию, сохранять такое собранное состояние.

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

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