рейтинг блогов

Почему каждый должен уметь писать скрипты

топ 100 блогов olegmakarenko.ru29.09.2019 Почему каждый должен уметь писать скрипты

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

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

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

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

https://tjournal.ru/flood/56765-automate-everything

У нас тут билд-инженера сманили. Мужчина принципиально жил только в консоли и vim, диаграммы рисовал скриптами в DOT, документацию писал маркдауном в Wiki, а если что-либо требовало более полутора минут, писал скрипт. Сидим, разбираем его наследие.

Из прекрасного:

1. smack-my-bitch-up.sh — шлет, видимо, его жене сообщение "Задержался на работе" и генерит отмазки из списка. Поставлено в планировщик, запускается после 9 вечера, если на рабочей станции висят интерактивные сессии по ssh с его логином.

2. kumar-mudak.sh — ищет в почте письма от Кумара (заграничный администратор баз данных с говорящей фамилией) с ключевыми словами (sorry, help и т.д.), откатывает упомянутую базу стейджинга на последнюю резервную копию и отписывается типа «не вопрос, будь аккуратнее в следующий раз». Зело заколебал его Кумар, вестимо.

3. badun.sh — поставлен в планировщик на определенные даты, шлет письма "плохо себя чувствую, поработаю из дома". Опять же, если к 8:45 утра не обнаружилось интерактивных сессий на рабочей станции.

4. И, наконец, первый приз: coffe-blyat.sh — ждет 17 секунд (!), логинится по ssh в кофе-машину (мы и понятия не имели, что она в сетке, да и ещё, что на ней sshd поднят) и засылает туда какую-то абракадабру. Экспериментальным путем выяснили что код запускает процесс варения half-caf chai latte среднего размера, которое начинает выливаться в чашку как раз к тому моменту, когда неторопливо идущий человек добирается от его офиса до автомата.


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

Когда история разошлась по англоязычным интернетам, в которых искусство автоматизации находится, увы, на куда как более высоком уровне, чем в России, любопытные объединили усилия на «Гитхабе» и воссоздали все четыре скрипта по описанию.

Вот, например, скрипт, который шлёт отмазки жене. 32 строки простого кода с комментариями, всего лишь одна страничка:

https://github.com/NARKOZ/hacker-scripts/blob/master/smack-my-bitch-up.sh

Не особо сложнее и скрипты по восстановлению базы и по выдаче команды кофе-машине (лежат там же). Это как раз тот случай из анекдота, когда хорошо знающему паровые машины человеку достаточно один раз ударить кувалдой в нужное место.

Как и любой нормальный человек, я очень долго ленился учиться: то ли из-за школ, которые привили мне отвращение к учёбе, то ли из-за естественной склонности гомо сапиенс беречь мозги от излишних нагрузок. Если я мог сделать что-то автоматически за одну минуту или вручную за 10 минут, я обычно выбирал «вручную», оправдывая себя тем, что так я имею полный контроль над ситуацией, в то время как скрипт может породить какой-нибудь сбой.

Кофе-машина из истории, например, может теоретически сломаться, если получит команду инженера в тот момент, когда будет готовить кофе для другого сотрудника. Отправляющие сообщения скрипты могут не сработать или, наоборот, сработать по ошибке тысячу раз вместо одного раза. Автоматическое восстановление базы данных может пойти не так огромным количеством способов.

Позже, повзрослев, я осознал, что это просто предлоги, которыми я прикрывал своё нежелание учиться. Сейчас я, наконец-то, освоил основные скриптовые языки (что заняло совсем немного времени) и последовательно автоматизирую все свои рутинные задачи.

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

Если где-то на планете и существует умный производитель магнитол, мне об этом ничего неизвестно, так что мой «Пионер» тоже работает через задницу — он поддерживает разноцветную иллюминацию и соединение с айфонами, но не может при этом понимать файлы формата «флак».

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

Сомневаюсь, что я что-то выиграл во времени, пока создавал скрипт. Позже мне подсказали, что для конвертации флаков есть другая бесплатная программа, «FlacSquisher», и если бы я продолжил поиски, я бы на неё наверняка наткнулся. Кроме того, я мог конвертировать 33 песни из двух сборников просто поштучно, одну за другой. Это также заняло бы немного времени.

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

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

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


https://www.youtube.com/watch?v=fQGbXmkSArs

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

Куда как практичнее разбивать большие цели на маленькие, достижимые. Плотно пообедать. Лечь спать в полночь (а не как обычно). Пришить оторвавшуюся пуговицу к карману пальто. Написать одну-единственную страницу диссертации. Эта маленькая хитрость, — ставить короткие, легко достижимые цели, — не только укрепляет силу воли, позволяя работать больше и эффективнее, но и позволяет вам несколько раз на дню чувствовать себя победителем.

Вторым «бытовым» скриптом, которым я занимался в последние дни, был экселевский макрос для подсчёта расхода электричества. Казалось бы, очень простая штука — вот табличка с показаниями счётчика, вот табличка с тарифами, бери да пиши формулу на встроенном лиспоподобном языке.

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

Существует конспирологическая теория, согласно которой компьютерные технологии развивались столь быстро только потому, что инопланетяне делились ими с американцами. Если эта теория верна, то я могу уверенно указать на «вижуал бейсик» как на пример инопланетной технологии: извращённая логика, которая лежит в основе этого языка, глубоко чужда и противна любому мыслящему человеку.

К сожалению, обойтись без «вижуал бейсика» нельзя, и я настоятельно рекомендую его выучить каждому, кто работает с документами: несколько часов, потраченные на изучение тайн «Офиса», окупаются обычно быстро и щедро. Я знаю случаи, когда макросы для «Экселя» или «Ворда» позволяли одному способному к обучению сотруднику взять на себя работу целого отдела менеджеров или юристов.

Лично я в обозримом будущем собираюсь напитонить скрипт для модерации блога — чтобы он автоматически скрывал, например, ругань в адрес нашего великого президента. Есть у меня и другие рутинные дела, прямо-таки напрашивающиеся на автоматизацию.

Подведу итог

Изучать искусство создания скриптов бывает непросто: прежде всего, с психологической точки зрения. Первые 50-100 раз довольно сильно искушение забросить попытки освоить новый язык и сделать всё механически, вручную. Тем не менее личная автоматизация окупается почти всегда. Вы можете назвать меня сейчас слишком категоричным, но я полагаю, что научиться писать скрипты стоит каждому, кто думает хотя бы на год вперёд — даже тем, кто никогда раньше не имел дела с программированием.

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

PPS. Раз уж зашла речь про Джонни Кэша, возможно вы сможете ответить на вопрос, который задал мне много лет назад один протестант из Канады. Как полагаете, коллеги, кого из наших исполнителей можно было бы назвать «русским Бобом Диланом»?

Оставить комментарий

Архив записей в блогах:
Сливаюсь я такой на карлуше, слился раз, слился джва, захожу сливаться опять, благо скоро будет лвлап, и тут ВНЕЗАПНЕ я не на карлуше а на мамкинхеде. Корабль ожидаемо говно, но такой подлый способ усадить игорька на говно я вижу впервые. В бой заходил не приходя в ангар, из послеболевой ...
Однажды у меня появилось устойчивое убеждение, что жениться нужно только на девственнице. И не только жениться, даже просто иметь длительные отношения с девушкой, у которой до тебя никого не было. И я начал искать их в интернете… Прежде всего, а как сообщить барышне, что у тебя такие п ...
Продолжаем вспоминать августовское возвращение на машине из Аликанте в Трондхайм. В этот день часов до четырех бродил я по Freiburg. Это очень приятный город, где много сохранилось довоенной застройки. На верхнем снимке - площадь перед надворотной башней Мартина, самой древней в городе, ...
...
Давно уже на Фликре не находилось ничего интересного, и вот некий Joyce Pinsker поделился замечательными яркими слайдами путешествия по СССР 1979 года. Маршрут был довольно насыщенный: Одесса, Киев, Москва, Ленинград, Новгород, Суздаль, Владимир, Ясная Поляна. Пляж в Одессе, 1979 год: ...