LE Blog

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

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 миллиона панорам. И будем это всё обрабатывать до весны. Результатами своей работы во всём этом я удовлетворён.

♯♯♯

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

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

♯♯♯

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

♯♯♯

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

07.11.2014 firtree_right За работу

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

Ещё больше инноваций добавилось, когда Артём поехал снимать КБЖД (Артём и установка на одной панораме). И после того, как вернулся, он сказал мне: «Я привык, что обычно у нас я отвечаю за то, чтобы ввязываться, когда всё сырое и неизвестное, а у тебя обычно за зиму добавляется одна кнопочка, но тут ты, похоже, меня переплюнул». Мне было очень приятно :) А Артём, похоже, воспринял это как вызов и ввязался во столько всего, что сезон у нас никак не заканчивается.

17.08.2014 firtree_right Жизнь в цифре

Форсквер окончательно разделился на два приложения, выкинув чекины в сворм. А так же отменил мои любимые бейджи. А ведь всё было ради них! Раньше мы в поездках им пользовались, потому что если нам нравится форсквер, то и места, которые нравятся его любителям, нам могут тоже понравиться. Так часто бывало. А теперь он будет подсказывать места, которые нравятся тем, кто пользуется свормом... Чувствую себя ужасным старпёром.

мои любимые бейджи

♯♯♯

Илья поделился совершенно прекрасной историей. Перескажу для обычных людей :) По ссылке — отчёт об ошибке. Чувак жалуется, что у него после обновлений не печатает принтер из ОпенОфиса. Другой подтверждает. Потом после другого обновления — печатает. Потом опять не печатает. Постит всякие логи, версии, короче, необходимые данные, чтобы те, кто разрабатывают ПО могли исправить. Никто не понимает, в чём дело, пока жена (!) этого чувака не жалуется ему на то, что принтер не печатает ПО ВТОРНИКАМ! Комментарий 28. И после этого он выясняет, что оказывается в середине процесса вывода на печать есть утилитка «file», которая определяет тип файла, и если она видит в определённом месте «Tue», то считает, что это программа на эрланге. Понимаете? Ни один программист не предположит, что проблема в дне недели! Услышав такое предположение — найти, подтвердить и исправить просто. Но вот предположить — только жена!