Портрет 4X_Pro
Был в Сети 22 окт. 2024 г., 00:32
Мультиблог
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
Последние два дня — это просто какие-то дни хаоса и дисгармонии. Во-первых, совершенно нездоровая активность в настолочном чате, причем все время на грани ругани между участниками. К трем постоянно спорящим между собой добавился еще один участник. Хоть я в это особо не вовлекаюсь, но все равно не очень приятно. Тем более сегодня был момент, когда один из постоянных участников в очередной раз назвал соционику бредом.
Во-вторых, вчера договорились встретиться с DarLik и П.Тк. (увы, у него нет Сетевого имени) где-то в районе 19—20 часов, но все пошло не так. Она написала и сказала, что сможет быть только в 21:30. Зато в чате Ал.С. написала про то, что они с Д.П. сидят в GoldFishе и предлагали всем приехать и поиграть. Я решил воспользоваться этим, и отправился туда. Поиграли и правда неплохо: сначала втроем в Каркассон (я, правда, проиграл, так как не учел то, как много очков могут давать клетки полей, если разыгрывать их правильно), потом Д.П. ушла, а мы с Ал.С. играли в Дудо, Карту Сокровищ и новую игру Quoridor.
DarLik, как всегда, переоценила свои силы, и с ней и П.Тк. мы встретились только в 22:30 и отправились в то самое заведение в Реутове, где сидели год назад на Хеллоуин и обсуждали знакомство с П.Тк. Там к нам присоединился еще один общий знакомый. Мы заказали две пиццы и еще немного еды, и посидели. Но пока добрались, было уже 23 часа, а заведение закрывалось в полночь. Поэтому даже съесть все не успели, пришлось забирать с собой.
Ночью я занялся тем, что прикрутил к CMS сверстанный шаблон, что откладывал уже давно. Правда, мелких доделок все равно остается еще много. Эх, все-таки осень, с ее спадом жизненных сил и мотивации, и freelance — плохо совместимые вещи. Из-за всего этого засиделся до 6 утра. Но каким-то чудом проснулся в 10:40 и потом остаток дня болтался в полусонном состоянии. Единственное что сделал — это вспомнил, что собирался описать свой алгоритм социального доверия, который считал ключевой идеей для децентрализованных социальных сетей. Начал описывать, но дело идет тяжело.
Узнал, что в очередной раз обновился ИКС. Но на этот раз малорезультативно: только +10 у сайта соционической сети, у остальных по нулям.
Еще в последние дни вдруг напомнила о себе соционика. Вернее, соционикИ. Сначала в группе поспорил с одним участником, забросившим копию своей статьи про квадральные ценности. Причем раньше я считал его вполне адекватным, но когда стал доказывать ему, что из готовности вербализировать аспект не следует наличие мотивации что-то по этому аспекту делать, которой и определяются истинные, а не соционические ценности. И при противоречивом сочетании соционического и ПЙ-типов вполне возможна ситуация «сапожника без сапог», когда человек знает как, но не имеет мотивации делать. На что этот участник стал поливать психософию грязью и двигать идею о том, что при хорошем знании соционики другие типологии просто не нужны. В общем, типичный «глобализатор соционики». Проблема была в том, что просто высказать друг другу свои точки зрения и мирно разойтись не получилось, он все время провоцирует на спор.
Дальше — хуже. На следующий день уже на моем форуме зарегистрировался крайне неприятный тип, который стал докапываться до всего. В итоге мы столкнулись с ним на вопросе, являются ли мерности функции «программным» или «аппаратным» ограничением. Причем занимает хитрую позицию: свою точку зрения аргументирует «фактами» и «наблюдениями» без какой-либо конкретики, поэтому сколь-нибудь внятно его опровергнуть не представляется возможным. Но по степени упорства в желании оставить за собой последнее слово он не уступает первому. Ненавижу людей, которые спорят ради спора! Это провоцирует недостойное желание воспользоваться административным ресурсом для затыкания рта… Пока успокаиваю себя только тем, что таких людей можно использовать для тренировки ЧИ и формулирования мыслей.

Сегодня выпал снег!

4X_Pro
Сегодня, проснувшись, увидел, что за окном на земле виднеется чуть-чуть снега. А через некоторое время снег пошел снова, и сейчас покрыл уже почти всю землю. Меня это очень обрадовало: теперь вечера будут казаться не столь темными и мрачными.

Поднимаю серотонин

4X_Pro
Продолжаю «поднимать серотонин» по методикам того интенсива, о котором упоминал в предыдущих сообщениях. Вчера опять выбрался на краткую прогулку по району, воспользовавшись хорошей погодой. Не могу сказать, чтобы прогулка произвела впечатление, но настроение действительно слегка подняла.
Сегодня впервые этой осенью возобновил тренировки на беговой дорожке. Бегал чуть более 20 минут, а потом еще принял контрастный душ. И, надо сказать, это реально заставляет организм проснуться и дает чувство включенности в окружающий мир, которого мне так часто не хватает. Зато в Клавогонках после физических нагрузок результаты ощутимо ухудшаются. Движения становятся более резкими, дерганными, поэтому больше опечаток.
А в плане отношения к делам, увы, это мало что поменяло: день пролетел точно так же мимо, как и предыдущие. Где-то около 20 часов осознал, что уже столько времени, а я еще ничего не делал, ни по freelance, ни по своим собственным задачам. Более того, хотел написать в это сообщение еще некоторые свои размышления по интенсиву и вопросам отношения к животному началу в человеке, но тоже так и не собрался за весь остаток дня.

Пробую силы на фондовом рынке

4X_Pro
Где-то около месяца назад решил попробовать свои силы на фондовом рынке. И вчера получил первые дивиденды по акциям, правда, очень небольшие. А сегодня после четырех недель убытков вышел в плюс на 0.75% от стартового капитала. Впрочем, все это с учетом того, что в начале октября рынок ощутимо просел (эх, пришел бы я туда недели на две позже, можно было бы закупиться по низким ценам, но кто же знал), а потом я вляпался в акции Яндекса, НЛМК и Магнита, которые упали на 10% (впрочем, Яндекс сейчас вроде вылезает). Причем с Яндексом было так: за день до его резкого падения я ушел по его акциям в небольшой плюс, и даже хотел было их продать, но передумал, решив «пусть еще подрастет». А потом случилось то, что случилось.
Но вообще, по сравнению с Forex, на фондовом рынке в разы все проще из-за отсутствия торгового плеча. Даже если что-то падает, то это не вызывает паники, а просто воспринимается как неприятность, которую нужно переждать.

Доработки на ходу — путь к багам

4X_Pro
В очередной раз убедился, что доработки на ходу — путь к багам. В идеале код должен писаться раз и навсегда, и потом, после завершения начального тестирования и отладки, никогда не редактироваться, и только полностью переписываться лет через 10—15, когда окончательно устареет морально.
В частности, некоторое время назад в целях повышения защиты от CSRF-атак в IntB добавил проверку, что authkey обязательно должен быть в форме отправки сообщения. Но не учел, что при отправке через стандартные действия его генерация уже прописана, а вот для ситуаций, когда форма находится еще где-то, например, непосредственно в разделе микроблога или раздела «Анонимные вопросы» — нет. Но если с микроблогом я разобрался достаточно быстро (попытался добавить сообщение, словил ошибку, и сразу же поправил), то в раздел «Вопросы» заглядываю редко и уж тем более сам там темы не создаю. Поэтому прошло где-то два месяца, прежде чем я задумался над вопросом «а чего вдруг мне туда спам перестал приходить», и решил протестировать, нормально ли работает отправка. Оказалось, что нет. Потребовалась всего пара минут, чтобы ее исправить, но кто знает, сколько сообщений было упущено за это время…

Прогулка в Измайловский парк

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

Впечатления об интенсиве

4X_Pro
Вчера все же собрался и досмотрел интенсив по нейрософии. Процесс шел очень тяжело и медленно, так как скорость подачи информации очень уж низкая, а последние полчаса — это просто открытая реклама большого курса. Все то же самое можно было бы легко изложить за час, если не ориентироваться на совсем уж тупых. (Эх, умел бы я связно что-то рассказывать в монологовом режиме перед камерой, можно было бы совместить эту информацию с двумя уровням амбициозности и проверкой желаний на истинность и соответствие миссии, и сделать свой курс.)
Еще удивило то, что автор утверждает, что постоянно высокий дофамин — это безусловно круто, и совершенно не учитывает то, что на самом деле дофамин выделяется при преследовании цели, предвкушении результата, а при ее достижении на смену дофамину должны приходить серотонин, и, если результат дает признание, окситоцин. Более того, в Интернете мы живем в условиях, когда вот этого ощущения достижения, завершенности не приходит, потому что количество не сделанного, не прочитанного, не посмотренного всегда оказывается больше, чем сделанного. И из-за этого постоянно высокого уровня дофамина наступает снижение чувствительности дофаминовых рецепторов, что и приводит к падению мотивации (кому интересно, можно поискать материалы про «дофаминовый детокс»).
Тем не менее, кое-что полезное я для себя все же вынес. Во-первых, это идея разрывания «кортизоловых цепочек», правда, конкретных рекомендаций, как это делать, там явно маловато. Во-вторых, осознал, что у меня явно не хватает серотонина, и в целом даже понял, почему. В-третьих, то, что именно при низком уровне серотонина падает уровень самоконтроля и автоматические реакции берут верх (в частности, мое то самое неосознанное переключение на что-то другое в те моменты, когда я сталкиваюсь с ситуацией «не знаю, как подойти к решению этой задачи»). В общем, наверное, именно с повышения серотонина и нужно начинать преодоление «эффекта Матфея».
В-четвертых, узнал о такой структуре мозга, как ретикулярная формация. Именно в ней происходит то, что я когда-то назвал Фильтрацией в информионике, да и «настройки» социотипа тоже спрятаны, скорее всего, именно там.

Очередные субботние игры

4X_Pro
В субботу в очередной раз выбрался на настольные игры в Goldfish. Но встреча чуть было не отменилась: в чате была какая-то просто подозрительно низкая активность, тех, кто указал, что обязательно придет, оказалось всего четыре человека. А когда я спросил, кто во сколько будет в GF, сначала никто не отозвался, и я уже подумал, что никто и не поедет. И даже сам решил остаться дома. Но через некоторое время на связь вышла Д.П. (увы, Сетевого имени у нее нет), которая тоже опасалась, что никого не будет, и придется сидеть одной. Мы договорились встретиться в метро в 19 часов. Узнав об этом, к нам решила присоединиться Liu Art, а потом внезапно решила приехать Tella.
Но увы, Д.П. опоздала на 15 минут, Liu Art об этом не предупредила, а та пришла в заведение, где тоже никого не было, и администраторша уже собиралась было идти домой, заявив Liu, что заведение сегодня не работает, но как раз к этому моменту пришли мы, а минут через пять подъехала Tella.
Стали определяться, во что играть, но процесс шел долго и тяжело. Хотели в Каркассон, но найти классическую версию без дополнений не удалось. Д.П. оказалась любительницей объяснялок, прозвучало даже страшное для меня слово Имаджинариум, но, к счастью, Д.П. и Lui Art — 2В по психософии, и увидев мою реакцию, они от этой идеи отказались. В итоге удалось уговорить всех на «Шакала». Увы, не учел я того, что никто, кроме меня в него не играл прежде, и пришлось рассказывать правила. Задача эта для меня, как всегда, оказалась непростой, но в целом вроде все всё поняли.
В начале игры в лидеры вырвалась Tella, у которой прямо рядом со стартом оказалось несколько сундуков, а следом за ней шла Д.П. Liu Art отправилась в центр карты, а я бродил вдоль своего берега, где только к середине игры смог найти пару сундуков. Потом Д.П. стащила несколько монет из сундука, найденного Liu в центре карты, а я — одну монету у Tellы. Сначала игра шла очень медленно, все то и дело отвлекались на разговоры, но потом пришлось ускоряться, чтобы успеть доиграть до закрытия. И последние ходы мы делали почти как шахматисты, играющие блиц.
В конце концов осталось только несколько неисследованных клеток возле Д.П., и мы все ринулись туда, кроме Tellы, у которой два пирата погибли, а третий застрял в яме. Там обнаружился один сундук с двумя монетами, но помешать Д.П. завладеть ими у нас так и не удалось, т.к. у нее рядом были все три пирата, а у нас — всего по одному. В итоге Д.П. и Tella собрали по 10 монет, Liu Art — 9, а я — всего 8. Liu, увидев то, что я из-за этого несколько расстроился, отдала мне одну свою, чем вызвала немалое восхищение.
Потом решили не расходиться сразу, а еще немного посидели в BurgerKing близ Марксистской. Но эти посиделки особо ничем не запомнились.
Но в любом случае, я очень рад, что выбрался! Это, наверное, была одна из самых позитивных встреч за последнее время!

Очередной конкурс от Яндекса

4X_Pro
Еще месяц назад узнал об очередных соревнованиях от Яндекса, и долгое время не мог определиться, участвовать или нет. У меня эти соревнования связаны со стрессом из-за очень жесткого ограничения по времени и того, что очень мало тестов, из-за чего сложно понять, что же я сделал не так. К тому же эта неделя получилась какой-то непонятной: вроде и дел особо важных не было, но время улетало неизвестно куда. И только сегодня, в последний день, все же выделил 4 часа на то, чтобы принять участие. И на этот решил, что нужно пытаться полностью дожать «одну» задачу, а не пытаться написать код для всех, а потом на всех же застрять на дальних тестах.
С самого начала все пошло не так. Во-первых, я перепутал и вместо участие в backend-конкурсе указал frontend. Впрочем, как выяснилось, задачи там все равно алгоритмические, с frontendом связанные скорее способом оформления результатов и тем, что пишутся на JavaScript. Взялся за решение самой первой задачи. Там сразу же давался готовый код, но утверждалось, что он не работает на больших объемах данных. Я стал думать, как его оптимизировать. В процессе узнал про TypedArrays, и решил применить Uint32Array. Но увы, не знаю, было ли это решение правильным. Оказалось, что Uint32Array не поддерживает операцию push, поэтому пришлось идти кривым путем — создавать второй массив, куда добавлялись элементы, порождаемые в процессе решения задачи, и в конце итерации склеивать из двух массивов один, а потом сортировать его. Это ощутимо усложнило алгоритм, и пришлось дольше возиться с отладкой. Но самое обидное — так и не помогло: пять последних тестов уходили за таймаут. А еще несколько — заканчивались wrong answer. И в итоге за эту задачу я получил всего три балла из 15 возможных.
Не будь таких жестких ограничений по времени, я пошел бы другим путем: оставил бы массив обычным, отсортировал бы его один раз, а дальше просто вставлял бы новые элементы в нужные позиции, находя их бинарным поиском. Если будет возможность потом порешать задачи в тестовом режиме, то все же попробую это сделать.
После этого я переключился на другую задачу. Там все было проще: нужно было сформировать barcode по определенным правилам и вывести его в броузер. Ошибиться там было просто негде, поэтому с первой же отправки кода я получил за нее 40 баллов.
Прочитав остальные задачи, я решил взяться за самую последнюю. Там нужно было разобраться с куском кода, который отрисовывал аналоговые часы с кнопкой сброса, и доделать его. В целом это получилось довольно быстро, но в коде было ограничение: стрелки часов при сбросе должны повернуться к нулю, двигаясь не быстрее определенной скорости. И вот тут я запутался с единицами измерения. На то, чтобы разобраться, ушло много времени, но где-то за 10 минут до окончания все же при выполнении в броузере код работал как надо. Но когда я отправил его на тестирование, тесты он не прошел. А самое главное, я вообще в упор не понимал, как они устроены (оказывается, там были положения стрелок на часах в градусах). И только через пару минут после того, как время вышло, наконец-то до меня это дошло. И только сейчас, когда писал это сообщение, понял, как вообще надо было тестировать эту задачу. В общем, получилось, что застрял всего в одном шаге от окончательного решения, и вместо 113 баллов получил всего 43. Впрочем, даже этого хватило, чтобы подняться до 65 места из 310.
Весь остаток дня пытался прийти в себя и злился на то, что так получилось. До сих пор слегка болит голова… А самое обидное то, что из-за «таймерного стресса» возникает положительная обратная связь: из-за него я задание понимаю со второго-третьего раза в лучшем случае, упускаю иногда важные детали, из-за чего напрасно тратится еще больше времени.

Оказывается, верстка может приносить удовльствие

4X_Pro
Вчера задумал написать статью о юзабилити шапки для Интернет-магазинов, в частности, о том, как должна быть устроена мобильная версия. И решил сверстать пример. А в процессе наконец-то разобрался, как сделать live preview в Visual Studio Code так, чтобы не надо было каждый раз переключаться в броузер и обновлять страницу. Для этого нужно было поставить одно из двух соответствующих дополнений (вот она, обратная сторона plugin-подхода: есть несколько версий для одного и того же, и нужно все время выбирать).
Причем если менять ширину окна, то можно предпросматривать сайт и в обычном, и в мобильном вариантах. А еще я наконец-то приучил себя использовать emmet. Так что теперь верстка сайта из процесса, который меня всегда раздражал, превратилась в процесс, который до некоторой степени приносит удовольствие. Правда, времени все равно занимает много из-за слишком большого количества мелочей, которым нужно уделять внимание.
А еще впервые сверстал сайт полностью через flexы. До этого пользовался ими только на уровне «костылей» в отдельных местах. И тоже очень понравилось: многое можно сделать всего парой свойств CSS, тогда как раньше приходилось всячески изворачиваться.

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

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