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

Лог жизни

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


О сканерах, дайверах и вытеснении задач

4X_Pro
Продолжаю самопознание. Вчера, когда писал длинное размышление о ценностях, снова задумался над тем, действительно ли я являюсь сканером по Барбаре Шер. Стал искать дополнительную информацию, и нашел статью, которая мне многое прояснила. Все-таки я не сканер, а «несчастный дайвер» второго типа. Тот, про кого в статье сказано: «люди с блестящими способностями, которые не любят или боятся учиться […] такой тип личности формируется еще в школе, когда одаренный ребенок учится по слишком легкой для него программе». Но у меня чуть иначе. Пока я решаю учебные задачи, для которых вся необходимая информация дана сразу, все идет легко и хорошо. Но как только появляются реальные задачи с элементом неизвестности (не хватает знаний или, скажем, опыта, как лучше организовать код), тут же происходит вытеснение. Бессознательное снижает важность и интересность этой задачи до нуля, и тут же находит новое дело, которое начинает казаться крайне важным. Причем происходит все настолько быстро и незаметно, что я только вечером понимаю, что по тому, что задумывал утром, продвижения нет, и желания возвращаться к этому — тоже. Потом проходит какое-то время, и я либо случайно нахожу недостающую информацию в Сети, либо набираю больше опыта, либо просто новый материал укладывается в голове, и решение находится. И тогда, если я вспоминаю об этой задаче, я возвращаюсь к ней и доделываю (как, например, было с FUSE для WAD-файлов). Но за это время может пройти несколько месяцев, а то и лет.
В принципе, такой подход имеет свои плюсы: он позволяет получать неплохие результаты без приложения сознательных умственных усилий, отправляя обработку информации в фон, в бессознательное, что отлично согласуется с моей идеологией, что в жизни все должно даваться легко, а трудности — признак того, что что-то сделано не так. Но цена этого — полнейшая невозможность планировать что-либо во времени, и, как следствие, ощущение вечного опоздания и потери субъективного контроля над жизнью.

Размышления о целях и ценностях

4X_Pro
В последнее время снова задумываюсь о вопросах целей и ценностей, о вопросе «кем я себя вижу в этом мире». Еще немало этому поспособствовала заметка Фы об иньской и янской модальностях. Хотя там речь идет только про бизнес, но, в принципе, это можно расширить и для другой деятельности вообще.
Раньше ответ был простой и состоял из трех частей. Часть первая — это Настоящий Компьютерщик — этакий компьютерный Робин-Гуд, который тратит минимум времени на платную работу для обеспечения себе прожиточного минимума, а остальное — пишет бесплатный софт для бедных (или занимается какой-то еще полезной деятельностью типа написания статей в Wikipedia, описания объектов в Wikimapia), перемежая это с прогулками, чтением книг и компьютерными играми, и гордится тем, что живет бедно, но правильно. А что есть софт для бедных? Это такой, который сделан по принципу «голая функциональность и никаких излишеств» (ибо нет маркетинга и не нужно заботиться о продаваемости), что дает ему возможность потреблять минимум ресурсов и работать на самых старых и «слабых» компьютерах. При этом, поскольку софт бесплатный и пишется по своей инициативе, четких сроков нет, и это дает возможность уделить оптимизации в плане ресурсов и производительности столько времени, сколько почти никогда не уделяют в коммерческих программах. Вторую составляющую можно охарактеризовать так: «я человек, который учит жить по уму», то есть, в первую очередь, исключая из жизни лишние траты и ложные цели. И в качестве третьей части я рассматривал «создание сообществ единомышленников», когда занимался форумным движком.
Но в какой-то момент все поменялось. С одной стороны, выросла производительность компьютеров, и экономия сейчас не так критична (одно дело сэкономить 50 Мб во времена, когда без swapа в память не помещалась даже сама система, совсем другое — когда 80% памяти после загрузки остается пустой). Да и относительно приличный компьютер (уровня Core 2 Duo или хотя бы Pentium 4) даже самый бедный человек при должной степени упорства может раздобыть в «отдам даром» или на свалке бесплатно. И даже обладатели «слабых» компьютеров зачастую ведутся на украшательства и излишества просто потому что не понимают, что это расходует дополнительные ресурсы компьютера. А еще оказалось, что сейчас даже бесплатный софт нужно «продавать» в том смысле, что нужно донести информацию о его существовании и убедить пользоваться им, а не аналогами.
С другой — я познал психософию, и понял, что мое презрение к материальным благам есть не результат какой-то особой духовной продвинутости или правильного воспитания, как я считал раньше, когда моя система ценностей только формировалась, а того, что мне повезло с ПЙ-типом. И что есть люди, которым действительно по кайфу жить быстро и преодолевать препятствия, и переделать их не представляется возможным. А те, у кого тип похож на мой, и так живут сходным образом (если только не угораздило ввязаться в межполовые отношения с традиционной гендерной моделью, где жена или теща постоянно чего-то требуют, отвлекая от основных задач). Да и сами идеи медленной жизни тоже не новы, просто конкретно мне не повезло в том, что мировоззрение формировалось в такой исторический момент, когда они оказались задвинуты куда подальше. Поэтому более уместным было бы поставить вопрос так: как должен быть устроен мир так, чтобы «ускорители жизни» не заставляли жить быстрее тех, кому это некомфортно, и как перестроить систему общественных ценностей так, чтобы «жить в согласии с собой (и своими типологическими особенностями)» было высшей ценностью.
С третьей — Интернет стал более централизованным, потеряли актуальность бесплатные хостинги с возможностью устанавливать свои скрипты (типа того же Holm.Ru), на которые я во многом ориентировался. Теперь почти все делается либо на сайтах-конструкторах с предустановленным набором возможностей, либо и вовсе в социальных сетях. А те, кто делает форум или что-то подобное, предпочитают не связываться с разработкой, сделанной человеком-одиночкой. И вообще, чтобы создать сообщество сейчас, нужны не столько технические навыки, сколько коммуникативные и навыки по раскрутке.

И в связи с этим стал вопрос: что же мне делать в таких условиях, да еще с учетом моих личностных ограничений? Вариантов я вижу три:
1. Продолжать заниматься Web-программированием (в частности, развивать IntB до движка децентрализованной социальной сети с интеграцией с существующими большими через их API + того, что я когда-то назвал инфохабом) в надежде, что рано или поздно маятник истории качнется в обратную сторону и люди поймут, что свои данные нужно держать на своих серверах и контролировать самому, а не непойми где. В принципе, некоторые тенденции в этом направлении уже есть, но вопрос в том, когда это случится и насколько массовым будет это осознание. Кроме того, это работа по темпористическому Будущему, которое у меня слабое и немотивированное.
2. Решить «ну и ладно, в принципе, в мире сейчас и так все неплохо», и жить своей жизнью, создавая что-то небольшое по настроению, как это было с CondiLoader или ботами для Telegram. Главный плюс — не нужно работать темпористическому Будущему, все делается в Настоящем. Главный минус — это отсутствие идентичности, внятного ответа на вопрос «кто я».
3. Искать себе новое дело в принципе. Но недавно я осознал, что для того, чтобы я мог заниматься чем-то регулярно, чтобы «хочу» не переходило в «надо», оно должно сочетать в себе следующее (собственно, с этого осознания и возникла идея написать это сообщение). Во-первых, — мои собственные интересы и соответствующие уровни ТУАИ (активнее всего задействованы 3 и 7: либо оптимизация каких-то показателей, либо желание изменить мир определенным образом). Второй — это возможность сделать что-то, что произведет впечатление на окружающих (например, написать программу для распознавания жестов «камень, ножницы, бумага» через Web-камеру). Третий — объективная полезность для широкого круга людей (тот же форумный движок или Интернет-магазин). Только вот все, за что я пытался браться раньше, сочетало в себе максимум два пункта из этих трех. И самое главное, с темпористической точки зрения это должна быть работа либо по Прошлому, либо хотя бы по Настоящему, но никак не по Будущему, и при этом, желательно, обладать и некоторой ценностью по Вечности. А кроме того, есть и еще ряд ограничений: дело не должно требовать контактов с людьми по моей инициативе, и не должно создавать необходимости жесткого планирования времени.
Впрочем, есть и еще один парадокс: хоть я и неоднократно заявлял о том, что важной ценностью является возможность жить спонтанно в духе «проснулся, увидел за окном отличную погоду, отложил все дела, вышел из дома, сел в трамвай и поехал куда захотелось», но на практике использую ее крайне редко, и даже прогулки обычно планирую заранее.

Но, в любом случае, после всех этих размышлений у меня есть возможность оценивать любое дело или задачу, за которые я хочу взяться, по пятифакторной модели: собственный интерес, возможность произвести впечатление, полезность в глобальном масштабе, возможность оставить след в Вечности, необходимость работать по Будущему (фактор с отрицательным знаком).
А еще решил пройти вторую часть курса «Поиск дела жизни» на Coursera. Возможно, он тоже поможет как-то прояснить ситуацию.

Вторник, ПВ, настолки

4X_Pro
Сегодня сходил на настолки. Народу было просто на удивление много, причем человек пять — новые люди, которые на встречах первый или второй раз. Но в целом впечатление от большинства оказалось положительным. Играли в «Шакала» — игру, которую я видел несколько месяцев назад, но все никак не складывалось попробовать. Потом — в «Колонизацию» (причем, как и в прошлый раз, долго не могли договориться, во что будем). В целом впечатления от встречи остались положительные, но немного жалею, что не получилось сыграть в «Каркассон».

Познание силы frameworkов и шпаргалок

4X_Pro
Впечатлившись тем, насколько Ruby on Rails позволят ускорить работу над серверной частью сайта, решил было попробовать еще раз освоить PHP-framework. На этот раз выбрал Phalcon (как один из самых быстрых за счет реализации в виде PHP extension), начал смотреть документацию, но увы, PHP-frameworkи — это точно не мое.
Зато задумался: раз я так терпеть не могу заниматься версткой, то что если поискать framework для client-side, чтобы ускорить ее? И приступил к поиску. Увы, для обычных сайтов не нашел чего-либо, что захотело бы использовать. Зато наткнулся на NativeScript, который может в разы упростить разработку под Android, и делать это не на Java, а на JavaScript (правда, не знаю, как это будет с точки зрения потребления памяти и производительности)! И вот он вроде бы мне понравился! Кроме того, он использует Vue, с которым я знаком на базовом уровне, но не имел возможности нормально попрактиковаться.
А еще куча готовых мини-приложений на NativeScript Playground навела меня на мысль: а ведь можно же и для верстки под обычный Web в некоторых случаях брать за основу что-то готовое, например, с того же CodePen.io, раз уж так мне версткой заниматься не нравится.
Еще одним открытием последних дней были шпаргалки. Началось все с того, что я наткнулся на сайт, где были собраны шпаргалки по языкам программирования. Посмотрел, и понял, что они прекрасно решают проблему запоминания названий стандартных функций в разных языка (например, в Python перевод строки в верхний регистр делается методом upper, в Ruby — upcase, а в JavaScript — toUpperCase, и я постоянно забываю и путаюсь, где что и приходится лезть в документацию, на что тратится куча времени).
Потом решил поискать шпаргалки для frameworkов, связанных с анализом данных (Pandas, Keras, SkLearn), где тоже никак не мог запомнить, как пишутся всякие классификаторы, регрессоры и тому подобное. И, как это ни странно, нашел! Так что когда надумаю вернуться к этой теме, все будет намного проще!

Ночное осознание или Слово о моей закрытости

4X_Pro
Несколько месяцев назад Tellа в одном из разговоров сказала, что если сравнивать с тем, что было на моем старом форуме (имеется в виду Socioclub.Org), я стал гораздо более закрытым и менее эмоциональным. Я сказал, что да, и сам это замечал. Где-то между 2007 и 2009 годами случилось «выгорание», после которого я сильно изменился. И задумался над тем, а что именно было этим поворотным моментом.
Долгое время я считал, что «выгорание» было вызвано перегрузками 2008 года — последнего года аспирантуры, а также тем, что не было возможности нормально прийти в себя после ее окончания.
Недавно мы вернулись к этой теме, и возникло предположение, что это была реакция на мятеж Spyke, а точнее даже тот факт, что его поддержало столь большое количество участников моего форума. Но вчера вечером вдруг пришло осознание, что это не так. Мятеж Spyke скорее поставил вопрос так: «на что теперь в жизни можно опереться, если даже форум не является такой надежной опорой» (и это тогда я еще и представить себе не мог, что пройдет несколько лет, и социальные сети  и привел к мысли, что нужно делать сайт, привязанный к моей личности (что в полной мере было реализовано только 11 лет спустя созданием этого сайта).
А сегодня ночью пришло осознание, что переключение в параноидный режим «кругом враги» произошло чуть позже. Первый шаг к этому был сделан 7 декабря 2007 года, во время ситуации с доменом socionics.su. Напомню, что в тот день произошло снижение цены на регистрацию в доменной зоне .su, и я планировал взять этот домен. Но регистратор R01.Ru в тот момент, когда должна была начаться регистрация по новой цене, вдруг взял и устроил технические работы почти на сутки! И за это время домен благополучно присвоил себе Oleg, зарегистрировав его через РуЦентр, и стал из-за этого моим врагом. (Много позже я узнал, что был монопольный сговор: РуЦентр проплатил другим регистраторам, чтобы они в тот день не работали.) Вторым шагом было то, что я узнал, что Хрулев позаимствовал у меня идею создать сайт на отдельном домене по признакам Рейнина. Но поскольку он был более известным и имел больше возможностей по раскрутке, то многие считали, что это была его собственная идея.
Третий случился то ли в 2008, то ли в 2009 году, когда от того же Olegа пришло спамное приглашение в его соционическую группу, где было 42 тысячи человек, и было понятно, что это результат накрутки и спама (в 2013 году это подтвердилось — чуть ли не половина из них оказалась ботами, и когда их перебанили, группа просела до где-то 24 тысяч). И стало ясно, что победить его честным образом не представляется возможным (примерно так же как нельзя обыграть шулера в карты, даже будучи самым лучшим игроком). Тогда-то и включился параноидный режим: появилась злость на всех вокруг, что не помогают мне бороться с этим нехорошим человеком (а то и вовсе поддерживают его, состоя в этой самой накрученной группе), и, как следствие, закрытость в плане типологического сотрудничества.
Не очень, правда, понятно, что с этим делать, как снова вернуться к себе-прежнему в полной мере…

ИКС дали!

4X_Pro
Жизнь в полуоффлайне на даче привела к тому, что я только вчера узнал, что в конце июля на Яндексе пересчитали формулу для ИКС. И у большинства моих сайтов очень неплохо повысились показатели: у 4xpro.ru вместо 130 стало 220, у socionics.me и sociomodel.ru показатель вернулся к 60, и даже у TypTest подрос до 140! Правда, как выяснилось, во многом это результат смены методики расчета самого ИКС. Но все равно приятно: есть прогресс!

Пятый заезд: итоги

4X_Pro
Вот и все: пятый заезд подошел к концу. Менее чем через полчаса уже отправляюсь обратно в Город. Настало время подвести итоги. Успел я довольно многое:
  1. Собрал ядро Linux и впервые получил время загрузки лучше, чем во времена MS-DOS, а также узнал немало новой информации о его настройках.
  2. Попрактиковался в Ruby on Rails и в целом остался доволен возможностями этого framework.
  3. 3. Пять раз сходил на прогулки и снял немало интересных кадров.
  4. 4. Прошел еще одну кампанию в Battle for Wesnoth: Under burning sun.
  5. 5. Осознал, что для того, чтобы наладить режим дня, нужно устроить себе день с ограниченным Интернетом (или отключить связь вечером).
Но кое-что так и осталось не сделанным:
  1. 1. Не съездил в дальний лес и не обследовал местность вдоль дороги на Васютино (впрочем, не было цели сделать это конкретно в этот заезд)
  2. 2. Не смог полностью наладить режим дня, только в последние два дня смог ложиться около трех часов, а не пяти, как все остальное время.
  3. 3. Так и не дочитал книгу по алгоритмам, хотя собирался.
  4. 4. Не смог ограничить себе Интернет, чтобы входить в то состояние озарения (ЭСП №2), о котором писал перед заездом.
Общее впечатление осталось противоречивым: вроде и съездил не зря, но и такое ощущение, что что-то важное упустил.

RoR и размышления о собственном frameworkе

4X_Pro
После того, как закончил со сборкой ядра, вернулся к изучению Ruby on Rails. Наконец-то перешел от теории к практике — стал писать Интернет-магазин. Впечатления довольно противоречивые: с одной стороны, за несколько дней весьма ленивого программирования получил почти работающий прототип (осталось только оформление заказов доделать), причем с правильной структурой URL.
С другой — серверная часть разрабатывается быстро, а вот в плане верстки плюсов практически никаких. Даже то, что генерируется автоматически, выглядит так ужасно, что если делать серьезный проект, то пришлось бы переверстывать.
Еще двоякое впечатление вызвала такая штука как migrations. С одной стороны, они решают проблему обновления структуры БД, с которой я сталкивался при разработке IntB, с другой — делают это совершенно иначе, чем у меня. Я-то исходил из того, что есть структура база такая, какая должна быть, и есть текущая, и нужно увидеть разницу и добавить/убрать недостающие столбцы через какой-нибудь sqlt_diff или mysql_diff, при этом база может редактироваться через сторонний визуальный редактор, и это делается часто. И еще удивлялся, почему так мало подходящих для этой цели инструментов, хотя с проблемой сталкиваются почти все разработчики. А в Ruby on Rails нужно документировать каждое изменение БД в виде отдельной migration, и задавать изменения либо в командной строке, либо в коде файла migration. С одной стороны, много лишних трудозатрат, с другой — они гарантировано фиксируются.
А вообще, все описанное выше заставило меня вспомнить о моих давних идеях data driven framework, где разработка приложения начинается именно с того, что в визуальном редакторе описываются данные. Причем делается это не как сейчас в RoR, где в командной строке указываются только типы данных, а задается то, может ли это поле вводиться через форму, сохраняться в базу или являться вычислимым, а также нужны ли пре- и пост- обработчики поля при сохранении/загрузке. Если оно отображается в форме, то указывается способ отображения (input, radio, checkbox или вообще целый компонент) для редактирования и просмотра, краткое описание, длинное описание и справка. Потом с учетом всего этого генерируется файл и два класса модели: абстрактный, который только сохраняет и фильтрует поля и может многократно перегенерироваться, и его наследник, где реализуются всякие функции расчета и валидации. В общем, вместо того, чтобы максимально разделять frontend и backend, как сейчас делает большинство frameworkов, наоборот, максимально управлять и тем, и другим через единый интерфейс, и делать упор на минимизацию верстки, которую я терпеть не могу, ибо это трата ресурсов на то, что в моем представлении является второстепенным — интерфейсы и внешний вид.

В поисках болотных озер

4X_Pro
Недавно, рассматривая карту окрестностей, обнаружил, что среди болотистой местности неподалеку от соседней деревни есть несколько озёр, и решил до них добраться. И вот сегодня, надев резиновые сапоги, отправился в путь. Доехал на велосипеде до места, где начинается болото, спрятал его в кусты, и отправился дальше пешком.
На болоте в больших количествах обнаружил какие-то неизвестные ягоды. (Потом, уже дома, предположил, что это брусника, так как в Wikimapia написано, что там ее много, и по фото вроде похожа). Прошагав полкилометра, подрался сквозь заросли травы на берегу, и вот наконец-то передо мной открылось первое из озёр. Вода в нем тёмная, само озеро спокойное, но какое-то мрачное и неприветливое. Посмотрел на него, сделал несколько фото и отправился дальше, ко второму озеру. К моему удивлению, несмотря на то, что места вроде бы довольно глухие, кое-где были протоптаны тропинки, правда, еле заметные.
Пока шел, увидел несколько грибов. В основном, сыроежки, валуи и подберезовик. Добрался до второго озера. Оно оказалось не таким глубоким, как первое, и с гораздо большим количеством водной растительности. Дальше возник вопрос: идти или не идти к третьему озеру. Оно было расположено так, что второе отделяло меня от него, и его нужно было обходить либо с северной стороны, либо с южной. Решил с южной, так как там была более-менее проходимая тропинка, но, как выяснилось, зря: когда попытался подойти к третьему озеру, наткнулся на густые поросли молодых берез и ольхи, продираться сквозь которые решимости не хватило.
Так и отправился обратно, тем более, что протоптанные дорожки наводили на мысль, что люди тут ходят не так уж редко, а это заставляло волноваться за велосипед. Но все обошлось, велосипед был на месте.
А вечером обнаружил, что для этих озер в Wikimapia нет фото, и загрузил туда свои, сделанные мобильником во время прогулки. Так что получился небольшой вклад в общее дело.

В лес за малиной

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

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

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