headermask image



Easter Eggs в приложениях Linux

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

Пингвинье сердце

«Linux has no Easter Eggs. Linux and Unix applications generally do not have Easter Eggs. We know because we can review the source code» – именно так сказано на одном из тематических ресурсов. Большинство разработчиков (за редким исключением) на поддержку своего продукта тратят свое личное время, которого мало и потому жалко. Даже как-то грустно становится: неужели среди тысяч программистов не нашлось ни одного шутника и порадовать своих друзей необычной находкой пользователю Linux, увы, не суждено? Отнюдь!

Начнем, естественно, с самого сердца. Здесь комментарии разработчиков говорят сами за себя:

$ cd /usr/src/linux
$ egrep -ir "(fu?k)|(shit)|(stupid)" *
include/asm/xor.h: Clobber them just to be sure nobody does something stupid
include/linux/fb.h: #define STUPID_ACCELF_TEXT_SHIT
/* Locate record for stupid devices. */
/* I don't know the range. Put stupid things here */
/* Shit happens... */
lib/vsprintf.c: * Wirzenius wrote this portably, Torvalds f***ed it up :-)


Или вот такой запрос:

$ egrep -ir "(fire)$" *
/* Turn on transmit finished interrupt. Will fire immediately! */
drivers/usb/class/usblp.c:static char *usblp_messages[] = { "ok", "out of paper", "off-line", "on fire" };

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

$ less drivers/net/sunhme.c
MODULE_PARM_DESC(macaddr, "Happy Meal MAC address to set");
static struct happy_meal *root_happy_dev;

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

В заголовочных и конфигурационных файлах других приложений также есть интересные строки. Например, при компиляции оконного менеджера Enlightenment можно встретить вот такую информацию:

checking for mass_quantities_of_bass_ale in -lFridge… no
checking for mass_quantities_of_any_ale in -lFridge… no
Warning: No ales were found in your refrigerator.
We highly suggest that you rectify this situation immediately.

Не знаю, за что платит Марк Шаттлворт своим ребятам из Canonical Ltd, но они тоже любят тратить рабочее время на развлечения. Например, так выглядят названия релизов Ubuntu в заголовочных файлах:

$ zcat /usr/share/doc/linux-image-`uname -r`/changelog.Debian.gz | egrep -e “Release”
The “Ben got a PowerBook for Christmas” Release.
The “Quickest re-release ever” Release
The “Oh crap, what did I get myself into?” Release.
The “Atomic Artichoke” Release.
The “Crunchy Corn” Release.
The “Crispy Chicken” Release.
$ zgrep “The.*Release” /usr/share/doc/dpkg/changelog.Debian.gz
The “Good, clean fun” Release.
The “Bully’s Special Prize” Release.
The “On like Donkey Kong” Release.

Разработчики PHP тоже сумели отличиться. Добавь следующую строку к php-запросу «?=PHPE9568F36-D428-11d2-A769-00AA001ACF42» на любом из сайтов с установленными Apache и PHP. В результате получишь изображение симпатичной собачки, вид которой, как я понимаю, зависит от версии PHP. При запросе «?=PHPE9568F34-D428-11d2-A769-00AA001ACF42» будет выведен логотип проекта.

Для того чтобы отменить выполнение системного вызова reboot(), необходимо передать ему два параметра, первый из которых – 0xfee1dead, а второй – один из следующих:

$ grep LINUX_REBOOT_MAGIC include/linux/*.h
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC1 0xfee1dead
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2 672274793
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2A 85072278
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2B 369367448
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2C 537993216

Посмотрим, что означают эти непонятные числа:

$ printf "%x\n" 672274793
28121969

Именно в этот день (28 декабря 1969 года) в городе Хельсинки родился отец операционной системы Linux Линус Бенедикт Торвальдс, а уж кому, как не ему, командовать процессами в ядре. Остальные цифры, я думаю, ты пробьешь уже сам.

Консольные утилиты

Наиболее известное пасхальное яйцо высиживают утилиты apt и aptitude, с помощью которых устанавливаются приложения в Debian, хотя в вариантах Ubuntu, ALTLinux и Knoppix приведенное ниже тоже работает на ура:

$apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
...."Have you mooed today?"...

moo1.jpg

Вот такая симпатичная коровка нас только что обмычала. А вот aptitude (оболочка к apt) никогда не признается в наличии пасхальных яиц (ну, только если хорошо попросить):

$ aptitude moo
There are no Easter Eggs in this program.

Как видишь, тебе честно ответили, что в aptitude нет пасхального яйца. Ты поверил? Я нет. При добавлении к запросу от двух до шести букв «v» («aptitude -vvvvvv moo»), получим слона, проглоченного змеей:
moo2.jpg

Кстати, emerge из Gentoo тоже мычит, попробуй «emerge moo», убедись сам. А вот slapt-get из Slaskware – нет. Его, очевидно, создают действительно серьезные ребята, которым не до шуток.

Команда whois, оказывается, не только может выдать информацию, взятую из базы данных Network Information Center, но и отлично ориентируется в более широком спектре жизненных вопросов. Попробуй набрать в Ark Linux «whois the devil» или «whois the antichrist».

Кроме root, в некоторых дистрибутивах Linux есть еще один привилегированный пользователь. Не веришь? Создай пользователя tyler с любым паролем. А теперь попробуй ввести команду halt или reboot. Перед остановкой системы будет выведено такое сообщение: «Oh hello, Mr. Tyler, – going DOWN?»

Под любым другим пользователем такого точно не увидишь. Очевидно, кому-то из разработчиков нравится клип рок-группы Aerosmith «Love in an Elevator», в котором эти слова произносит симпатичная девушка из лифта.

Однажды мне захотелось узнать, какие строки содержит команда sudo:

$ strings /usr/bin/sudo
I feel much better now.
Where did you learn to type?
I've seen penguins that can type better than that.
Are you on drugs?

Есть и просто программы-шутки, например, с помощью команды ddate можно получать информацию об интересующих числах календаря:

$ ddate

Today is Pungenday, the 38th day of Chaos in the YOLD 3173

$ ddate 01 04 2007

Sweetmorn, Discord 18, 3173 YOLD

$ ddate 01 01 2000

Sweetmorn, Chaos 1, 3166 YOLD

Чтобы увидеть фразу из первой части знаменитой трилогии «Путешествие автостопом по Галактике» Дугласа Адамса, открываем редактор vi и набираем «:help 42»

А вот ребята из Gentoo манией величия не страдают, почти. Чтобы проверить это, достаточно в Gentoo 2005.1 в терминале набрать:

# modules-update you
Error: I don't understand you

Типа моя твоя не понимай. Теперь спросим: «Кто тут самый главный?»:

# who is god
root pts/0 Dec 19 15:35 (:0.0)

Разработчики Knoppix тоже решили нас немного порадовать. Открываем консоль, набираем «bb», и шоу точно обеспечено. Да, и обязательно включи колонки, чтобы не пропустить все интересное. Такой вот портфолио ASCII-арта.

Шутки в дистрибутивах

Самыми большими любителями поразвлекаться в рабочее время оказались ребята из SUSE – в старых версиях этого дистрибутива спрятано порядочное количество яиц. Так, при установке SuSE 7.2 Professional, как только будет скопировано ядро и начнется копирование остальных файлов, во второй консоли, куда следует перейти по , будет выведено прощальное сообщение из «Путешествия автостопом по Галактике». Выпуск версии SuSE 8.1 как раз совпал с десятилетием компании, которое разработчики пропустить никак не могли. Попробуй во время установки дистрибутива остановить отсчет времени, нажав на одну из клавиш со стрелками и . На экране появится праздничный торт с фирменным логотипом хамелеона, а из динамиков будет раздаваться «Happy birthday to you». В версии SuSE 8.2 они, очевидно, уже просто не смогли остановиться – чтобы увидеть здоровающегося хамелеона, достаточно при установке нажать .

В дистрибутиве RedHat имеется файл /usr/libexec/redhat-credits, выводящий имена разработчиков. Его можно запустить как вручную, так и нажав и трижды щелкнув мышкой по фоновому изображению рабочего стола.

Яйца в ящерице

Судя по всему, разработчики веб-браузера Mozilla не очень утруждают себя работой, и, если хорошо поискать, в любом из браузеров, использующих движок gecko (Mozilla, Firefox, Galeon), можно найти много интересного. «И наконец зверь пал, и обрадовались неверующие…» The Book of Mozilla, 7:15 – просмотреть эту главу можно, набрав «about:mozilla» в адресной строке любого из этих браузеров. В свое время разработчики IE в версии 4.0 пошутили о том, что Mozilla будет крушить компьютеры. Команда Mozilla ответила шутникам – для этого так же необходимо было набрать в адресной строке IE «about:mozilla». Причем текст в старых версиях отличался, там говорилось о том, что «шум миллиона клавиатур, подобно большому шторму, должен покрыть Землю». Ну что ж, это пророчество уже сбылось.

Не обошлось без скрытой саморекламы. Например, чтобы узнать имена разработчиков, принимавших участие в создании этого браузера, не надо ходить на сайт, достаточно ввести «about:credits» – и будет выведен длинный список. А вот если по ошибке набрать, вместо www.google.com, просто www.goog, можно посмотреть интересный флеш-мультик на сайте одного из разработчиков по адресу elephanteggs.com/Goog.htm. Аналогичная ситуация произойдет, если в этих браузерах потянуть за любой значок в панели закладок и бросить его в рабочем пространстве. Есть и просто развлечения: установив расширение addons.mozilla.org/firefox/742 и набрав «about:kitchensink», можно долго наблюдать, как из крана течет вода.

Графические приложения

В консольных утилитах нашлось приличное количество пасхальных яиц, но и в графических не обошлось без сюрпризов. Так, mIRC был в свое время убран из Debian именно по причине наличия пасхального яйца, причем разработчик этого IRC-клиента постоянно менял секреты, что вызывало искреннюю радость у нашедших их пользователей. Например, если щелкнуть правой кнопкой мыши по логотипу в окне About, можно было увидеть прыгающий мяч, а если кликнуть по значку, он изменялся. В некоторых версиях для этого нужно было набрать «arnie», а в более старых версиях – «[Tye TROUT reply]: WHOP! THWHACK! SLAP!». В версии 5.5 и выше необходимо еще в течение 5 секунд подержать , а затем .

Перейдем к более тяжелым приложениям. Работая в GNOME, выбираем пункт меню Run program (, «Выполнить программу»), вводим «free the fish», затем нажимаем «Run». Теперь по экрану время от времени будет плавать маленькая рыбка Wanda, прихлопнуть ее можно только вместе с панелью. Не бойся, панель восстановится. Если щелкнуть по рыбке, она уплывет, но через некоторое время обязательно вернется. Есть и другой способ вызвать Wand’у: кликаем правой кнопкой мыши по панели, выбираем Panel info и 3 раза жмем . Убивать так же (если не жалко). Но это еще не все. Повторно вызываем Run program и набираем «gegls from outer space» – теперь вместе с Wand’oй мы будем отражать нападение космических захватчиков. Хотя в новых SUSE, вместо космических кораблей, возможна атака Genetically Engineered Goat Large (GEGL).

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

Разработчики GNU Gimp тоже время зря не теряли. Чтобы увидеть альтернативный логотип проекта, жмем и переходим в «Help -> About». Кстати, старые пасхальные яйца Gimp уже перекочевали в разряд фильтров. Это GEE Slime и GEE Zoom.

Хочешь увидеть пасхальное яйцо в IDE Anjuta? Создай новый generic/terminal-проект с названием Animation и именем автора Horse. В окне описания введи «ShOw Me ThE AnImATiON now». После компиляции по экрану будет бегать лошадь.

Настала очередь офисных пакетов – StarOffice (от 6.0) и OpenOffice (от 1.0.1). Думаешь, что разработчики трудятся, не покладая рук? Зря. Открываем текстовый редактор Writer, набираем «StarWriterTeam», нажимаем на и перед нами команда разработчиков. А разработчики табличного редактора Calc пошли еще дальше. Запиши в любую ячейку «=Game(“StarWars”)», нажми ввод и можешь наслаждаться игрой, спасая планету от нашествия инопланетян. Правда, в некоторых версиях, вместо этого, сообщат: «Oh no, not again».

Но и этого им оказалось мало – они встроили в Calc крестики-нолики. Чтобы поиграть, достаточно в любой из ячеек внутри диапазона A1:C3 ввести «=Game(A1:C3;”TicTacToe”)». Компьютер автоматически сделает следующий ход. И так далее до победного конца.

В музыкальном редакторе Audacity тоже не обошлось без сюрпризов. Выбираем «Help -> About Audacity» и, держа нажатыми клавиши , щелкаем средней кнопкой мышки по логотипу программы. В результате увидим версию wxWidgets и дату сборки.

А вот если в список воспроизведения музыкального проигрывателя Amarok добавить альбом Amarok Майка Олдфильда (кстати, он 13-ый по счету), то в процессе прослушивания шестидесятиминутной смеси электронной музыки можно лицезреть список разработчиков, участвовавших в создании проигрывателя.

Вот такой вот небольшой набор. Вероятно, интересные свойства есть и у других программ. Найти их не так-то просто, но главное, что они есть. Здесь, как говорится, Гугл в помощь.

Автор : Сергей «grinder» Яремчук
Опубликовано в апрельском номере журнала Хакер

Комментарии

Your email is never published nor shared. Required fields are marked *

*
*