LE Blog

Инженер с поэтической душой

10.03.2016 firtree_right Эзотерический джаваскрипт

Конечно, это уже не новая история, но меня настолько впечатлило, что я решил написать внеочередную статью. Тем более, что и ребята из ибэя тоже пропустили известие о том, что можно писать валидный джаваскрипт, не используя букв и цифр. Поскольку статья внеурочная, то и иллюстрации сегодня не будет. К тому же фиг проиллюстрируешь эти эзотерические языки программирования.

Что случилось?

Началось всё, я так понимаю, ещё в 2009 году с обсуждений на форумах sla.ckers.org потенциальных возможностей межсайтового скриптинга. Но там ещё был другой синтаксис. Впечатливший же меня пример написания джаваскрипта обнаруживается только в 2012 году. Были и раньше другие заходы. Например, джаваскрипт из японских смайликов. Я же узнал об этом от товарища, который прислал мне ссылку на the daily wtf.

Позволю себе немного пересказать, а дорогому читателю предлагаю прямо открыть консоль и попробовать. Вся эта штука основана на конвертации типов в джаваскрипте при сложении или приведении к булевым значениям. Программировать на джаваскрипте можно всего лишь с помощью восьми символов: [, ], (, ), {, }, ! и +. Вот, что выдаёт мне консоль в ответ на ввод:

> +[]
0
> !+[]
true
> !!+[]
false
> +![]
0
> +!![]
1
> +!![]+!![]
2
> +!![]+!![]+!![]
3

И вот у нас уже есть числа и булевы константы. Теперь нам нужны буквы:

> !![]
true
> !![]+[]
"true"
> ![]
false
> ![]+[]
"false"
> +!![]+!![]
2
> +!![]+!![]+[]
"2"
> ({})
Object {}
> []+{}
"[object Object]"
> ({}[+[]])
undefined
> ({}[+[]])+[]
"undefined"
> +{}
NaN
> +{}+[]
"NaN"

Далее все строковые значения можно получить, комбинируя вышеизложенное, но я буду писать строки в виде строк, чтобы облегчить (сделать возможным) прочтение кода. Используя уже имеющиеся буквы и цифры, можно ещё получить:

> +"1e1000"
Infinity
> +"1e1000"+[]
"Infinity"
> +"1e100"
1e+100
> +"1e100"+[]
"1e+100"

Все буквы (a, b, c, d, e, f, i, j, l, n, o, r, s, t, u, I, O, [, ], <пробел>, +) можно доставать из строк, с помощью квадратных скобок и чисел. Но мы уже давно можем сделать eval — исполнить произвольный код из строки:

> (![]+[])[3]
"s"
> (![]+[])[3]+([]+{})[1]
"so"
...
> []['sort']['constructor']
function Function() { [native code] }
> []['sort']['constructor']('return alert')()
function alert() { [native code] }
> []['sort']['constructor']('return alert')()(1)
/* должен выскочить алерт */

Дело остаётся за малым — получить все остальные символы, с помощью которых можно написать программу. Чтобы уже совсем не чувствовать стеснения. И тут нам на помощь должна прийти функция unescape, которая из знака «%» и аски-кода делает символ. Но у нас пока нет для этого символов «%» и «p». Где же их взять?

> []['sort']['constructor']('return location')()
Location {hash: "", search: "", pathname: "/blog/posts/48", port: "", hostname: "lonelyelk.ru"…}
> []['sort']['constructor']('return location')()+[]
"http://lonelyelk.ru/blog/posts/48"
> ([]['sort']['constructor']('return location')()+[])[3]
"p"
> ({}+[])[0]
"["
> []['sort']['constructor']('return escape')()('[')
"%5D"
> []['sort']['constructor']('return escape')()('[')[0]
"%"
> []['sort']['constructor']('return unescape')()('%'+'7a')
"z"

Не знаю, как ты, дорогой читатель, а я нахожу такое использование джаваскрипта совершенно волшебным. Настолько волшебным, что даже несмотря на уже не первую свежесть темы, мне очень захотелось об этом написать, да ещё и в неурочное время. Все материалы для самостоятельного изучения доступны по ссылкам выше.

02.03.2016 firtree_right Лось

Сейчас меня уже почти не спрашивают: «Почему лось?» Отчасти потому, что я не очень продвигаю этого персонажа, а отчасти потому, что люди думают, что мне просто нравятся лоси, или я их коллекционирую. Второе приводит, например, к тому, что мне дарят разных игрушечных лосей. Это забавный результат, поэтому я считаю, что репутацию местного сумасшедшего нужно поддерживать. Как следствие я начал использовать лосей в повседневной работе.

Терминал

Первым делом нужно, чтобы лось приветствовал меня при каждом открытии терминала или новой его вкладки. Примерно так:

лось в терминале

При этом хотелось бы, чтобы у него было разное случайное выражение лица. Для этого нужно в ~/.bash_profile (или какой у вас файл для создания окружения) написать следующее:

eye=(o O @ . - \* \~ °)
let left=${RANDOM}%${#eye[*]}
let right=${RANDOM}%${#eye[*]}

cat << EOF

 _  _        _  _  _
| || | ____ | || || |
\    |/    \|      /
 \____ ${eye[$left]}  ${eye[$right]} ______/
      |    |________
      |             }=
      | __  ____  _ |
      ||  ||    || ||
      ||  ||    || ||
      ""  ""    "" ""

EOF

Базовая работа с массивами. Встроенная в баш функция случайного числа. Обязательно предварять косой чертой «*» и «~», чтобы они не стали списком файлов и домашней директорией. По-моему — красота!

Spec runner

И, конечно же, для любителей разработки через тестирование нужен правильный репортер:

elk-spec

Здесь нужно пользоваться эскейп кодами для управления положением каретки, то есть курсора. Мало кто помнит, но курсор можно двигать во все стороны на любое количество позиций. Данный пример я собрал для раннера тестов на жасмине. Да, да, я разрабатываю в том числе на node.js и тестирую с помощью jasmine. Ключевая функция для рисования лося вот:

function printElk() {
  if (specCount > 1) {
    print('\x1b[5A');
  }
  if (specCount % 2 === 0) {
    print(Array(specCount + 1).join(' ') + '     ^^' + eyes() + '^^\n');
    print(Array(specCount + 1).join(' ') + '  _____ U\n');
    print(specTrail + '~(  _  /\n');
    print(Array(specCount + 1).join(' ') + '  || ||\n');
    print(Array(specCount + 1).join(' ') + '  ^^ ^^\n');
  } else {
    print(Array(specCount + 1).join(' ') + '      ^^' + eyes() + '^^\n');
    print(Array(specCount + 1).join(' ') + '  _____ U\n');
    print(specTrail + '`(  _  /\n');
    print(Array(specCount + 1).join(' ') + '  // \\\\\n');
    print(Array(specCount + 1).join(' ') + ' ^^   ^^\n');
  }
}

Здесь specTrail и eyes следят за историей вопроса, а вся функция вместо того, чтобы как раньше, ставить точку или F, поднимается на пять строчек вверх и переписывает их полностью.

Бонус

Это не про лося, но тем не менее. Вообще, я считаю, что всегда лучше потратить немного времени, чтобы сделать всё удобно и интересно. Мелочи решают!

Эту вещь придумал не я. Скорее всего, до меня её придумали неоднократно, и я не могу найти первоисточник. Тем не менее, считаю, что это очень полезная вещь, и нужно ей поделиться. Речь идёт о том, чтобы показывать статус завершения предыдущей команды в строке запроса баша.

export PS1="\[\e]0;\u@\h: \W\a\`if [ \$? = 0 ];then echo \[\e[32m\]^_^\[\e[0m\];else echo \[\e[31m\]o_O\[\e[0m\];fi\`[\u@\h: \w][\$(rvm-prompt v)][\$(nvm_version)]\$(parse_git_branch)\$ "

Это моя строка запроса. В её начале мы видим или зелёный довольный смайлик, или красный удивлённый. Благодаря вот этой части:

\`if [ \$? = 0 ];then echo \[\e[32m\]^_^\[\e[0m\];else echo \[\e[31m\]o_O\[\e[0m\];fi\`

Когда сделал себе и привык, то теперь просто не понимаю, как другие без этого обходятся.

Материалы для самостоятельного изучения

  1. $RANDOM.
  2. elk_reporter.js.
  3. Управление курсором в баше.

01.03.2016 firtree_right Февраль

Когда я ещё планировал писать итоги года 2015, хотел написать, что впервые в жизни смог контролировать свой вес. Всю жизнь я думал, что в моём случае конституция просто не позволяет ничего сделать. Однако только с помощью изменений в питании мне удалось набрать за год более 15 килограмм. При этом во время перерывов на хирургию, а следовательно без нагрузок, вес можно было держать стабильным. Всё решается просто питанием. При этом, конечно, к тридцати пяти годам понятно, что какие бы в интернете ни писали истории про сумасшедших старичков в коротких спортивных красных шортах, у каждого тела есть свои пределы в силе, скорости и выносливости.

♯♯♯

Открыл для себя уже не новую игру про дополненную реальность — «Ингресс». Игра заключается в том, чтобы мотаться по городу и не только по городу, но и куда подальше, захватывать порталы и сообща создавать поля. Две фракции, которые отличаются только легендой и цветом, но с точки зрения игровой механики делают одно и то же. Если хотите, могу прислать вам инвайт — мне за это беджик дадут, если вы дорастёте до второго-третьего уровня :) Только чур за зелёных играть! Для меня это примечательно по двум причинам. Во-первых, я никогда не любил такие игры, где нельзя всё сделать идеально и навсегда. Всё, что я делаю в этой игре, могут поломать, испортить и всему помешать. Это совершенно невыносимо, но и притягательно оказалось. Во-вторых, возможности игры в одиночку достаточно ограничены. Для всего интересного нужна команда. Например, чтобы натянуть такое вот поле в 29 слоёв, хоть и всего на несколько часов (об этом мне только мечтать и мечтать ещё):

Но вообще, лучше как минимум втроём, а лучше ввосьмером что-то делать. И поскольку игре уже более трёх лет, то возникает такой эффект, как у Кортасара в «Модели для сборки», что люди живут в городе, в который мне постороннему нет входа. В общем два таких эмоциональных барьера оказались преодолены. Ура!

♯♯♯

В феврале возобновил ведение своего программерского бложека. Постараюсь выдерживать ритм по одной статье в две недели. В статьях всегда обращаюсь к читателю на ты, представляя, что меня читает один человек. И тут в районном чатике по «Ингрессу» этот самый читатель обнаружился. Он узнал меня по нику и рассказал, что упарывался по моим статьям пять и более лет назад (когда я их писал). Я был, конечно, очень радостный от такого поворота событий!

♯♯♯

Получил, наконец-то, нормальную вводную в «Дизайн человека» (Human Design). Мне раньше система казалась чрезмерно навороченной. Но сейчас всё так совпало, что стало прикольно. Вообще, я открыт к любым наукам и моделям о человеке. Есть множество систем разного качества, возраста и объёма подкрепляющих эмпирических наблюдений. Мне было бы вполне нормально думать про, например, свою крапивницу-аллергию, как про «нестабильный ветер», если бы при условии, что когда я делаю упражнения и ем еду, которые стабилизируют «ветер», мои симптомы успокаиваются или проходят совсем. Или список болезней и вызывающих их «грехов» был бы тоже прикольным, если бы работала обратная связь хотя бы в каком-то объёме. С интересом всё пробую на себе. Пока, например, в медицинском отношении на первом месте, конечно, хирургия, на втором — таблетки, а на третьем — питание. А в «Дизайне человека» на текущий момент зацепила именно позиция про приятие и изучение себя, какой есть. Это может быть система описания человека, которая опережает своё время, как периодическая система Менделеева, а может оказаться полной туфтой, вызванной естественным желанием восприятия увязывать в причины и следствия и связывать между собой всё, что попало. А считаю я так, возможно, потому что я по профилю 5/1 :)

17.02.2016 firtree_right Смена настроек /etc/hosts в одно касание

Зачем?

В какой-то момент я стал носить на работу ноутбук и отказался от двух компьютеров: домашнего и рабочего. В редких случаях приходится делать небольшие действия по работе, находясь дома. Для того, чтобы добраться до нужных машин внутри рабочей сети, я использую ssh-тоннель с пробрасыванием портов. Например, есть два сервиса: server1:8080 и server2:5000. Когда было два компьютера, то было всё просто. Рабочий компьютер находился внутри сети и видел оба сервера с их сервисами по правильным адресам, а домашний адресовал оба имени серверов на localhost, где сервисы оказывались на тех же портах после поднятия тоннеля. Но с ноутбуком нужно было как-то переключаться.

Для смены настроек я использовал самый простой, как мне кажется, способ: редактировал файл /etc/hosts. У меня было два набора строчек: для дома и для офиса. Один всегда закомментирован. Файл открывался с помощью sudo vi, и внутри можно использовать замену, используя номера строк, которые видны:

:2,7s/^#/
:9,13s/^/#/

Первая команда означает «со второй по седьмую строчку удалить „#“ в начале строки», а вторая — «с девятой по тринадцатую строчку поставить „#“ в начале строчки». Но когда делаешь одно и то же много раз, всегда хочется это автоматизировать.

Changesettings

Как?

Для начала мне хотелось избавиться от номеров строк (мало ли, какие добавятся или исчезнут строки). Поэтому я решил выделять зоны файла для офиса и дома комментариями «#officestart», «#officeend» и, соответственно, «#homestart» и «#homeend». Теперь интервал для замены можно было выделять через них:

:%s/#officestart\zs\_.\+\ze#officeend/smth_smth_smth/g
:%s/#homestart\zs\_.\+\ze#homeend/smth_smth_smth/g

В данных командах \zs и \ze означают начало и конец паттерна, который мы хотим заменить командой s в интервале %, то есть во всём файле. То есть мы меняем не всё, что нашли, а только часть. А сам паттерн — это _.+, что означает «один или более любых символов, включая конец строки». Буква g в конце означает, что может быть несколько таких блоков, что необязательно.

На что же мы будем заменять найденный паттерн между комментариями? Во-первых, нам совершенно точно понадобится замена внутри замены. А во-вторых, нам не поможет символ ^ для обозначения начала строчек, т.к. у найденного паттерна всего одно начало перед всеми строчками. Поэтому мы будем использовать знание структуры файла /etc/hosts: в случае IPv4 каждая незакомментированная рабочая строчка начинается с цифры, а закомментированная, как и положено, с «#». Для дома получаем команды:

:%s/#officestart\zs\_.\+\ze#officeend/\=substitute(submatch(0), '\n\(\d\)', '\n#\1', 'g')/g
:%s/#homestart\zs\_.\+\ze#homeend/\=substitute(submatch(0), '\n#\(\d\)', '\n\1', 'g')/g

Использование \= заставляет редактор выполнить выражение, то есть вызвать функцию substitute в таком виде. Тут, вроде бы, должно быть понятно, что мы передаём в функцию найденный паттерн, регулярное выражение с одной группой и на что его поменять в том паттерне.

От команд к скрипту

Осталось сделать из этого удобную штучку. Лично я оформил это следующим образом. В файле ~/.bash_profile:

alias imhome="sudo vim -u NONE -f -s $HOME/.vim/homehosts /etc/hosts"
alias imwork="sudo vim -u NONE -f -s $HOME/.vim/officehosts /etc/hosts"

Соответственно, файлы ~/.vim/homehosts:

:%s/#officestart\zs\_.\+\ze#officeend/\=substitute(submatch(0), '\n\(\d\)', '\n#\1', 'g')/g
:%s/#homestart\zs\_.\+\ze#homeend/\=substitute(submatch(0), '\n#\(\d\)', '\n\1', 'g')/g
:wq

~/.vim/officehosts

:%s/#officestart\zs\_.\+\ze#officeend/\=substitute(submatch(0), '\n#\(\d\)', '\n\1', 'g')/g
:%s/#homestart\zs\_.\+\ze#homeend/\=substitute(submatch(0), '\n\(\d\)', '\n#\1', 'g')/g
:wq

Таким образом, команды imhome и imwork спрашивают пароль и меняют настройки. Это иллюстрирует, почему был выбран редактор vim в качестве инструмента. Любые sed и awk будут потом требовать sudo tee для того, чтобы записать файл с нужными правами. А здесь мы запускаем всего одну команду.

Материалы для самостоятельного изучения

  1. Поиск и замена в vim.
  2. Использование выражений при поиске и замене в vim.

03.02.2016 firtree_right Вот это я называю «перерыв»!

Что было

Приветствую тебя, дорогой читатель! Каким-то образом ты остался подписан на этот блог или зашёл на него по неясной причине — это хорошо! В этом году я решил возобновить ведение этого самого блога. Посмотрим, что из этого выйдет.

Было странно копаться во внутренностях этого сайта снова. Все технологии устарели, версии не поддерживаются и тому подобное. Последний комментарий оставил мне читатель в 2014 году на статью 2009 года про тестирование оупенайди, авторизовавшись с помощью оупенайди, о том, что технология оупенайди мертва. Пришлось прикрутить на её место новую рекапчу от Гугла. Напишу как-нибудь об этом. Почувствовал себя, конечно, археологом.

Время, когда я начал вести этот блог, было временем увлечения руби он рэйлз. Было сделано много проектов. Потом влюблённость прошла, а с ней прошло о большое количество нового и интересного, о чём бы я мог здесь писать. Я стал немного залезать в другие области, но общей концепции так и не находилось. Даже прекрасные иллюстрации не спасли от наступившего затишья.

Wakeup

Что будет

Сейчас я не могу сказать, что являюсь увлечённым фанатом какого-либо языка, фреймворка или технологии, как не могу сказать, что являюсь профессионалом в оных. Что мне нравится делать — это изучать новые вещи и делать из них прикладные продукты. Прикладные они, конечно, не для всех, а в основном по линии моей работы. Но именно о простых, прикладных и — самое главное — интересных мне вещах из совершенно разных областей программирования я и буду писать. Думаю, получится делать по одной небольшой статье раз в две недели.

01.02.2016 firtree_right Январь 2016

Итоги года я пропустил, потому что в аккурат под Новый год слёг с вирусом, температурой, ватной головой и невозможностью не только писать и читать что-либо, но даже смотреть сериалы. Организм управился за 5 дней. Итоги года, однако, подводить оказалось сложно. Потому что не смотря на наполненный событиями год, за январь сформировалось ощущение, что весь предыдущий год был как бы в анабиозе. Я занялся файтом и просто спортом. А также начал лечить застарелые проблемы со здоровьем: сожрал неимоверное количество всякого рода таблеток, сдал неимоверное количество анализов, посетил три НИИ с медицинскими специальностями в названии и два раза лежал на операционном столе. Окончательно растерял почти все социальные связи и собеседников для умного разговора. Окончательно отказался от алкоголя. Но в целом год был про жизнь тела, а голова моя как будто спала.

♯♯♯

Чтобы как-то вернуть нормальные функции головы, я решил затеять графоманский проект и подводить итоги каждого месяца (или просто писать, что было интересного). Год обещает быть богатым на события и изменения. Надеюсь, не обманет. Хотя и ссу, конечно, тоже. В связи с чем возобновил ещё и рукописный дневник и подумываю возобновить программерский бложек. Удачи мне!

♯♯♯

Безусловное приобретение месяца — совершенно волшебный инстаграм актрисы мастерской Петра Фоменко Ирины Горбачёвой. Не могу оторваться. Придётся идти в театр теперь.

♯♯♯

Думаю теперь, стоит ли восстанавливать старые контакты, или лучше новые заводить? Заметил, что понятия о добре, зле, правде и нравственности у всех людей со временем не только размываются, но и немного дрейфуют в стороны. Прямо заметно, как иногда наступает рассинхрон с человеком, про которого думал, что мы на одной волне.

♯♯♯

Сделал коуб (Простите за повтор, что видел). Прикольно, что раньше для меня эта песня была про прорыв. Важно только что на той стороне. А тут в ленте в фсбуке запостили эту гифку, а в комментариях эту песню (это не я додумался их совместить), и стало понятно, что переход — это тоже суперважный процесс. И в песне только про начало перехода. А на ту сторону ещё нужно дойти. Если.

♯♯♯

Вроде всё. Такие дела.

26.09.2015 firtree_right Люби себя, сука!

Восьмой месяц занимаюсь в клубе «Другой бой». То, что мне обещали ребята, что меняется тело — полностью верно. Совершенно по-другому себя чувствую. Кроме того, для личных спортивных целей мне впервые удалось осознанно набрать массу, чего не получалось у меня никогда за мои 35 лет. Наел, конечно, в добавок себе бока. Мне кажется, никто в мире не строг так со мной и не презирает меня за малейшее несовершенство, как я сам. Самое главное пока испытание я прошёл: купил себе рашгард и не прекратил тренировку. У нас статистика такая, что 50% перестают ходить сразу после покупки рашгарда.

♯♯♯

В обществе незнакомых людей, особенно если это прекрасные девушки, чувствую себя как железный дровосек. Раньше для подвижности суставов дровосека я использовал алкоголь. Но потом попадал в совершенно ядовитый стыд, даже если ничего ТАКОГО не делал. Потому что никто в мире не строг так со мной и не презирает меня за малейшее несовершенство, как я сам. Но алкоголь сошёл на нет по ряду причин за последние два года. Потому дровосек пребывал в некотором оцепенении. Надеюсь, что это могло прокатить за некоторую загадочность. Я, конечно, могу рассказать девушке, как именно она умрёт, если в комнате появится чёрная дыра размером с монету (или массой с монету — совсем другое дело). Или я даже знаю несколько фраз для подката на английском типа такого: Hey, girl! Are you my appendix? Because I don't understand what you do, but I have this weird feeling in my stomach that makes me want to take you out. Но поскольку никто в мире не строг так со мной и не презирает меня за малейшее несовершенство, как я сам, всё это отметено как несоответствующее ситуации и слишком задротское. Стоял молчаливый и таинственный.

♯♯♯

Сегодня после функциональной тренировки на почве бокса в парилке разговорился с мужчиной. Он занимался боксом 3 года и профессионально музыкой. Потом сломал руку, бокс бросил, а музыку — нет. Красной линией через весь разговор проходило то, что жёны и девушки заставляют мужчин лезть из кожи вон в спорте (но не его). Что Спиваков (кстати, второразрядник по боксу) ходит в качалочку в 70 лет, потому что из него жена верёвки вьёт (но у собеседника не такая). Что марафон и Айрон мэн парни бегают, потому что в кругу их девушек некруто, если у тебя парень не бежал Айрон мэн (но не у его девушки). А сам он к тому моменту провёл в зале уже 3 часа (час бассейн, час бег, час качалочка). ТРИ, Карл! А я всё это слушал и думал, что даже если ты и проецируешь это на близких (приписываешь им это), то всё равно не самом деле никто в мире не строг так с тобой и не презирает тебя за малейшее несовершенство, как ты сам.

18.03.2015 firtree_right Тело

В школе для меня физкультура была постоянным источником стыда и унижения. Короткие дистанции я бегал медленнее всех, подтягиваться и отжиматься на брусьях никогда не умел ни разу. Поскольку я много болел, то у меня появилась справка, которая позволяла мне тусить на физкультуре, но отказываться от того, что мне казалось чрезмерно сложным. Называется «подготовительная группа». Кроссы я бегал, в футбол играл, а от унижения быть худшим отказывался. Хотя по телосложению всё понятно. У меня даже выработалась привычка оправдываться за свою худобу. Которая до сих пор включается иногда так, что я не успеваю соскочить.

Я ни разу не видел человека, который бы «до» выглядел как я, а «после» на него было бы приятно смотреть и не передёргивало, как когда видишь силиконовые губы или опухоль на лице. Однако над собой я провёл ряд экспериментов со спортом и питанием. Каждый раз моё тело воспринимало это как насилие и как-нибудь серьёзно взбрыкивало, чтобы я был вынужден прекратить. Услышал множество историй о том, как просто набрать массу от людей, которые уже в утробе матери занимались атлетикой (я так же могу рассказать, как легко выучить два иностранных языка или бросить любую привычку не напрягая волю чрезмерно). Каждому своё — постоянно бубню я себе.

Начать налаживать контакт с телом мне очень помог пилатес. Два года я учился неспешно без насилия заниматься спортом. И со временем мне захотелось исследовать более подвижные и динамические нагрузки, определить свои реальные границы и поиграться с ними. Добавить больше потока. И более мужского спорта, конечно, захотелось. Многие из знакомых мне мужчин с тонкой душевной организацией (not gay!), но не таким хрупким телосложением, отзывались уважительно о клубе «Другой бой». В этом году дозрел и я. В отличие от того опыта единоборств, что я имел сам и видел, когда исследовал тему, в этом клубе всё просто отлично с состоянием ума во время тренировки. Это важно!

Очень много времени я провёл за исследованием своей психики. И сейчас в плане личного развития, мне кажется, что наступил некоторый предел того, что для меня можно решить размышлениями и разговорами. Овладение своим телом и исследование собственных границ — такая моя терапия в ближайшее время. И всего того, что сейчас хочется: мужественности, динамики, потоковости, скорости, силы, игры — на занятиях прямо в достатке! И хоть я тут обратно самый хиленький, но уже без справки, мне — очень нравится!

Это я всё к тому, что сегодня, в среду вечером в центре Москвы пройдёт открытый урок. Милости прошу, кому интересно. Форма для записи справа.

23.01.2015 firtree_right Гадание на встречных

Раньше я любил задавшись сложным вопросом открыть книгу на случайной странице и читать ответ. Но всё это меркнет по сравнению с гаданием на встречных. Вопроса в этом случае даже не нужно. Обычно это случается в метро. Попрошайки не подходят на роль таких встречных, потому что искусство историй, почему нужны деньги, в Москве довольно сильно развито. Из него исчезла наивность и непосредственность. Можно услышать всё, начиная от билетов на поезд и заканчивая деньгами на презерватив. Интерес тут, скорее, фольклорный. Гораздо интереснее материально незаинтересованные носители ворот в иные миры. Как правило, это люди подвыпившие, — такова специфика местности. Я узнаю их по желанию — моему и всех окружающих — от них отмахнуться, потому что они пристали со своей какой-то ерундой. Тут нужно сделать следующее: внимательно на человека посмотреть и услышать, что он говорит. Услышав, ответить коротко и по делу, не вовлекаясь в спор, но и не отмахиваясь. Если он продолжает говорить, повторить вышеописанное несколько раз: выслушав внимательно, ответить коротко и по делу. Обычно после третьего раза следует такая значительная пауза: то, что он хотел сказать, чего казалось много, пока от него отмахивались, кончилось. Вот тут-то, дорогой читатель, не зевай: сейчас будет удар мудрости, знак, разгадка. Один молодой человек, расспросив меня про велосипед, когда кончились вопросы, вдруг попросил у меня номер телефона, чтобы вместе кататься потом. Второй уже менее молодой человек сказал: «Люди должны жить 40-45 лет, больше не нужно». А афганец на алюминиевой ноге сообщил: «Знаешь, каким проклятьем наградил меня Бог? Не иметь права на ошибку! Ух, я ему уебану!» — и погрозил кулаком в небо.

28.12.2014 firtree_right 2014

Довольно заметную роль в году сыграл совершенно бешеный съёмочный сезон. Съёмки начались 22 мая, а закончились аж 19 декабря. Мы обновили наше оборудование и ПО. Сняли 1,2 миллиона панорам. И будем это всё обрабатывать до весны. Результатами своей работы во всём этом я удовлетворён.

♯♯♯

Основной темой года было выражение: «Выше задницы не прыгнешь». Во всём, чем я занимался в этом году и с чем соприкасался, во всех областях — я сталкивался с ограничениями, которые невозможно преодолеть. В работе, личных планах, здоровье, отношениях с близкими и далёкими всегда находился такой момент, когда приложение усилий ничего не давало. Что-то никогда нельзя изменить. Чего-то никогда нельзя избежать. Можно бесконечно прилагать усилия, а результата не будет.

Это интересный опыт. Умение обходиться с такими вещами существенно добавляет мудрости и зрелости. По крайней мере я себя стал ощущать более зрелым. Хотя и не могу сказать, что я легко умею с таким теперь обходиться.

♯♯♯

Жену отправил к тёще и планирую встречать Новый год за работой.

♯♯♯

Разгрёб большое количество старых висяков, и теперь у меня в почте пустая папка «входящие». Впервые за несколько лет. Так что, если вдруг я вам что-то должен или обещал, то сейчас самое время напомнить мне об этом.