COFFE-HOWTO и тяжелая женская доля.
Как известно, нелегкая это работа – из болота тащить
бегемота. А знаете, что еще труднее? Жить с программистом. Или с сисадмином-линуксоидом,
разница с точки зрения рядовой, обычной жены, невелика. О тяжкой жизни программерских
жен слагают стихи, поют песни и пишут книги. Одна из самых нашумевших –
«Записки жены программиста» Алекса Экслера (их можно прочитать на www.exler.ru). «Спасибо за понимание, Алекс!» – мысленно
благодарим мы, программерские жены, неся нелегкую ношу своей женской судьбы.
Мы, нуждающиеся во внимании и понимании, мы, заслуживающие прижизненных
памятников и медалей ветеранов сражений семейной жизни. Впрочем, некоторые из
нас были предупреждены до замужества о том, каково быть женой программиста. И
все же эти героические женщины дали согласие на предложение руки и сердца…
мышки и коврика… монитора и клавиатуры даже иногда. Понять их трудно, впрочем,
бытует мнение, что женщину почти всегда трудно понять, но те, кто заранее
знал, во что выльется их невинное «да» - эти женщины загадочны особенно. С
другой стороны, чего не сделаешь ради любви? Да, к тому же, любовь еще и зла,
как известно.
Вскоре после свадьбы молодая жена обнаруживает, что ей
достается куда меньше внимания, чем она того заслуживает. Если в период
ухаживания программист еще способен позаботиться о любимой женщине, сводить ее
в какое-нибудь злачное место развеяться или хотя бы погулять с ней в парке, то
после свадьбы у него решительно не хватает времени на телодвижения и мысли,
связанные с желаниями его дражайшей половинки.
Со словами: «Думай, Сеня, думай», – уговаривает Алиса
крокодила в фильме «Гостья из будущего». А, когда становится ясно, что крокодил
ленится, Алиса грозно добавляет: «Накажу. Прогулки лишу». С мужем-программистом
так не выйдет. Во-первых, думать он способен лишь над стоящей в данный момент
задачей. Раз задача образования семьи уже решена, мысли обо всех вещах,
связанных с семейной жизнью, уходят в прошлое, и на их место заступают мысли об
актуальных программах. Программист может отвлечься от собственного творчества
ненадолго и подумать о чужих программах, о краках, о лицензионном ПО, об
освоении новых операционных систем, как об освоении космоса. Но подумать о
желаниях жены? О том, чего хочется этому милому существу, живущему в одном с
ним пространстве? Увольте! Ненужные затраты времени! А угроза лишить прогулки мужа-программера
встретит только удивление: «Да мы же никуда не ходим и не собираемся идти!» Тут
жена может назидательно поднять палец и сказать: «Вот об этом-то я тебе и
толкую!»
Следующий этап супружеского воспитания, который может
наступить, если молодая жена все же не сможет втолковать мужу-программеру, что
ее желания и маленькие женские прихоти обязательно должны учитываться и исполняться
– угроза отлучения от постели. С обычным мужчиной эта жестокая мера дает
результаты буквально через несколько дней. С программистами применять ее не
советую: пройдет вхолостую. Во-первых, у них останутся порнографические моря в
океанах интернета, готовые распахнуть свои гостеприимные фотогалереи и
бесстыдно раздвинуть виртуальные полки с видеоклипами для любого, кто может
взломать код чужой кредитки и расплатиться за посещение элитных порносайтов.
Во-вторых, на их долю в любом случае останется виртуальный секс. Виртуальная
измена, это, конечно, не так неприятно, как всамделешняя, да и вирусы на ней
можно схлопотать тоже исключительно виртуальные, женскому здоровью не
угрожающие, однако от первой до второй рукой подать, да и воспитательное
воздействие внутрисемейного воздержания будет сильно ослаблено. И потом, вы
знаете, откуда появляются баги? Да не просто появляются, а размножаются со
страшной скоростью? А это с ними по ночам программисты трахаются. Да-да, с
ними, а не с нами.
А спать они (программисты, а не баги) могут и на мышином
коврике. Если голова поместится. Особо нетребовательные засыпают лицом на
клавиатуре, и тогда наутро можно четко понять, какие группы клавиш были
облюбованы незадачливым соней.
Что им помогает в их многосуточной вахте? Что позволяет
просиживать рабочий день, а потом бессонную ночь перед любимым «плоскарем» SONY, выстукивая пальцами чечетку по заслуженной QWERTY?
Ответ прост, други мои. Кофе! Отними у программера кофе, он и дня не протянет.
Можем ли мы саботировать доставку кофе к месту постоянного проживания мужа в
квартире – компьютерному столу? До недавнего времени могли. Теперь – увы и ах
тем из нас, кому не повезло быть замужем за линуксоидом. Жены энтишников и икспшников,
а также все остальные жены могут быть временно спокойны. А вот что касается Линукса,
теперь эта операционная система вполне может заменить жену и варить
программисту кофе, повинуясь почти незаметным нажатиям нескольких клавиш.
Безотказно, бесперебойно, не мучая программиста упреками и не требуя ласки и
признания взамен. Линукс, девочки мои, составил нам серьезную конкуренцию в
жизнеобеспечении мужа-программиста самой важной (не считая пива) жидкостью,
топливом для мозгов.
Сейчас я расскажу вам, как Линукс это делает: ведь кто
предупрежден – тот вооружен. Итак, чтобы Линукс заменил вас на посту у
кофеварки, программисту нужно написать программу, которая будет контролировать
блок питания кофеварки и в нужное время подавать напряжение прямо с его горячо
любимого компьютера.
Между компьютером и кофеваркой будет посредничать
электронная схема, которую придется спаять тому, кто желает готовить кофе с
клавиатуры. Схема будет преобразовывать напряжение 5 V в 220 V, необходимые для питания
кофеварки.
ПК = > Схема = > Кофеварка
0-5 V
~220 V
Первое, что придется сделать нашему молодцу – разжиться
готовым штекером DB-25, или, если ему захочется
потренировать свои золотые ручки, распаять самому в соответствии со схемой
подключения:
Контакт 1: Задний фронт (он же строб инвертированный).
Контакты 2-9: Шина данных.
Контакты 10: Сигнал подтверждения, появление которого
вызывает необходимое прерывание.
Контакты 18-25: Земля.
Простой способ получения
напряжения 0-5В с параллельного порта компьютера:
Разъем Вывод 10 - ACK вид сзади Вывод 9 - D7 Папа DB-25 Вывод 2 – D0 Вывод 1 - Строб

Спецификация DB-25
<=вход DB25 Название =>выход Сигнала Bit Описание ------ ---- ---- -------- --- ----------------------------- => 1 -Строб C0- Устанавливает низкий уровень при посылке на <0.5 нс => 2 Data 0 D0 Младший бит данных => 3 Data 1 D1 Младший бит данных => 4 Data 2 D2 Младший бит данных => 5 Data 3 D3 Младший бит данных => 6 Data 4 D4 Младший бит данных => 7 Data 5 D5 Младший бит данных => 8 Data 6 D6 Младший бит данных => 9 Data 7 D7 Старший бит данных <= 10 -Ack S6+ Импульс подтверждения ~ 5 нс <= 11 +Busy S7- Занят <= 12 +PaperEnd S5+ Нет бумаги <= 13 +SelectIn S4+ Принтер выбран => 14 -AutoFd C1- Автоперевод строки <= 15 -Error S3+ Ошибка => 16 -Init C2+ Инициализация (импульс < 50нс) => 17 -Select C3- Выбор принтера == 18-25 Ground Следующие 20-30 минут уйдут на поиски нужных деталей и сборку нижеприведенной схемы. 
Ну вот, готово, схема собрана, и
между компьютером и кофеваркой образовалось новое устройство-посредник. Что
нужно сделать, чтобы оно заработало? Написать программу, заставляющую его
выполнять необходимые операции, и скрипт, объясняющий новому устройству, что от
него требуется. Итак, сперва программа, и программа эта должна будет:
·
Получить
разрешение на использование адресного пространства Ввода/Вывода, обратившись к
ядру командой ioperm, например, ioperm (BASE, range, 1);
·
Выполнить
команду out для установки напряжения 0-5В на параллельном порту: например outb
(1, BASE);
·
Подождать,
пока приготовится кофе. Было бы неплохо, если бы это время вводилось в
командной строке.
·
Выключить
кофеварку: outb (0, BASE);
·
По
окончании работы на параллельный порт должна быть подана команда: ioperm
(BASE, range, 0);
·
Замените
BASE = 0x3bc для /dev/lp0, 0x378 для /dev/lp1, и 0x278 для /dev/lp2,
range=8.
Конечно,
одну и ту же вещь можно делать многими разными способами. Каждый программист –
творец. Он сам знает, что и как ему писать, и чужих идей ему не надо. Но для
примера здесь можно показать, как это сделал некий Тимофей Слепцов, когда ему
приспичило доказать своей подруге, что он способен самостоятельно сварить кофе
в самые сладкие минуты ее утреннего сна:
#include #include #include #include #include #define BASE 0x378 int range; main(int argc, char* argv[]) { int ch; range=8; while ( (ch=getopt(argc,argv,"be")) != EOF) switch(ch) { case 'b': { ioperm(BASE,range ,1); outb(1,BASE); } break; case 'e': { ioperm(BASE,range ,1); outb(0,BASE); } break; default: { printf("Parport switcher. Moscow 2000y.\n"); printf("Usage: parport OPTION\n"); printf("Option: -b turn on device\n"); printf(" -e turn off device\n"); } break; } return(0); }
Когда
программа написана, следует озаботиться созданием скрипта к новому устройству.
Тот же Слепцов вполне доволен написанным им на Shell’e скриптом
«coffee.sh»:
#!/bin/sh # Скрипт берет в качестве параметров кол-во чашек кофе, которое надо # приготовить. Параметры для кофеварки Philips Comfort Plus. ppswitch -b case $1 in 2) sleep 4m 20s ;; 4) sleep 8m 20s ;; esac ppswitch -e
Если этой программе установить setuid,
может быть, удастся привить жене вкус: зная, что ей тоже разрешен доступ, она,
возможно, полюбит новый способ приготовления кофе, потом полюбит Linux, потом …
нет, не надо, наверное, ведь женщина-программист и так некоторым напоминает
морскую свинку. Значит, решено: включаем кофеварку по crontab'у. Для
особо настырных привожу тут часть crontab'а:
30 04 * * * root /usr/local/bin/coffee.sh 4
После всех этих манипуляций программисту достаточно будет
набрать два-три десятка символов на клавиатуре, и через несколько минут он
сможет наслаждаться чашкой ароматного кофе. Особый смак этому кофе будет придавать
сознание своей победы: этим божественным напитком он, мужчина, обязан не кормящей-поящей
его женщине, а лишь своим рукам, мозгам и COFFE-HOWTO.
И, если, черт побери, муж проявил такие высокие технические
способности и такое фантастическое трудолюбие, он вызывает восхищение и подает
надежды на скорейшее просветление будущего: может, коль скоро он научился
варить себе кофе, теперь он еще научится мыть за собой чашки?
Кстати, во всем плохом (в данном случае, в кофейной
эмансипации мужей от нас) можно найти капельку хорошего. Теперь, когда мы точно
знаем, что муж без нас не пропадет, кофе у него будет до тех пор, пока
электричество в розетке не кончилось, мы полностью, совершенно и абсолютно
свободны от своих мужей. И это время можно провести с пользой. Разнообразной -
в зависимости от изобретательности и фантазии.
© Ева Морозовская
|