Чуть позже отец разобрал сидюк и протер линзу одеколоном — помогло, но ненадолго. В итоге процедуру вскрытия пришлось повторять каждые три месяца, от чего сидюк спился и скоропостижно умер.
#1363: Подождите, я записываю
13:00 22.10.2009, IT happens
Программил я несколько лет назад в фирме, занимавшейся выпуском приборов с хитрыми датчиками. В одно прекрасное утро главный инженер поставил задачу реализовать в ПО поддержку нескольких датчиков на одном COM-порту. На первый взгляд всё было просто:
1) устанавливаем бит чётности в настройках порта в 1;
2) пишем в порт адрес нужного датчика;
3) устанавливаем бит чётности в настройках порта в 0;
4) пишем в порт команду;
5) читаем ответ.
Пишу (очистки буферов и очереди после операции записи в порт, все как положено), компилирую, несу в соседнее здание на флешке инженеру, запускаю на его древнем ноуте с COM-портом — всё работает! Несу датчик к себе, запускаю на своей мощной машине — облом!
Вставляю в код проверки результата каждой функции, запускаю, все функции отрабатывают правильно, но датчик молчит. Меняю порты, датчики, провода, машины — везде облом, кроме одного убитого ноутбука.
Иду к инженеру в соседнее здание, прошу осциллограф. Получаю отказ: «Это единственный осциллограф с памятью, он мне тут нужен». Не беда! Приношу версию программы с максимально подробным ведением логов, цепляюсь осциллографом на вход микрухи датчика, запускаю, медитирую... Порт открывается, бит чётности становится в 1, идёт адрес, идёт команда, порт закрывается. В логах все солнечно: судя по ним, бит чётности перед отправкой команды таки 0, а вот судя по осциллографу — 1. Естественно, датчик команду не воспринимает. Я больше верю осциллографу. Спрашиваю у гугла, форумов и знакомых спецов — ответа нет.
Нервы, психологическое давление со стороны инженера, ожидание Нового года на работе... На третий воскуривания даташита Super-IO-чипа, установленного на «волшебном» ноутбуке, всё становится ясно. Микруха на моей и других новых мамках по каким-то причинам не успевает переключить чётность, а на древнем ноуте успевает благодаря врожденной тормознутости последнего. Загадочным образом при этом API на обеих машинах сообщает, что все переключилось. Вставляю в код задержку в 1 мс — датчик радостно мигает индикаторами на любых компах!
Читайте мануалы. В них сила.
#1364: Пингвин против пингвина
15:00 22.10.2009, IT happens
Два раза с большим перерывом и в разных группах я наблюдал «линуксовые войны».
Война первая состоялось, когда я еще был несмышлёным школием. На информатике нас припахали ставить линукс на все машины в классе — про Ghost и прочий мирроринг учитель слыхом не слыхивал. Рутовый пароль был везде одинаков. Суть игры была простой: выключи машину противника раньше, чем он выключит твою. Атаковали, зайдя по SSH на чужую машину и сказав системе shutdown -h now. Блицкриг-вариант (halt) мы выучили позже. Была и возможность уйти в глухую оборону: init 1 с отключением сети.
Вторая игра проходила заметно позже, в универе, и была похожа на забавы наших виндоус-коллег (История #862[4]). Два игрока сидели на одной и той же машине, локально или по SSH. Один запускал форк-бомбу вида:
#!/bin/sh
$0 &
$0 &
Другой с ней боролся: killall sh. Дело усугублялось отсутствием рута у обоих и грамотно выставленными лимитами. На уровне Nightmare можно одновременно пытаться залогиниться в KDE.
12:00 23.10.2009, IT happens
Вспомнил сон, который мне приснился около года назад.
Сижу на работе, беру в руки витую пару (обычно я всегда работаю через wi-fi), чтобы воткнуть ее в свой ноут, касаюсь контактов и чувствую сильный удар током. Через секунду я понимаю, что чувствую каждый бит, проходящий по витой паре, и обрабатываю пакеты на физическом уровне. Ещё через секунду я начинаю сам формировать и отправлять пакеты. Не в силах выпустить кабель из рук, чувствую полное блаженство.
Через некоторое время начинаю ловить волны wi-fi, а еще через несколько секунд ломаю силой мысли все доступные мне точки доступа. Бросаю кабель и отправляюсь гулять по городу (почему-то по Москве, хотя живу я в Калининграде).
Дошёл до кафе, заказал пива, сижу довольный. Подключился к своим серверам, проверил их состояние, разгрёб почту. Полез на Википедию, за полчаса прочитал всю, но мне было мало. За пятнадцать минут я выучил инглиш и за час перерыл всю Википедию (на этот раз на английском), а потом отправился в гугл пополнять багаж IT-знаний.
Через пару-тройку часов я уже чувствовал себя всемогущим гуру, и мне захотелось приключений. Я полез на правительственные и военные ресурсы, нашёл более девяти тысяч критических уязвимостей, но не стал ничего ломать, а разослал уведомления админам.
Зазвенел будильник. Я открыл глаза, пару часов лежал в кровати и матерился. Так жалко было терять настоящее админское блаженство...
#1366: Бесперебойная связь
14:00 23.10.2009, IT happens
Сидел я как-то в пятницу на работе. Делать было нечего, а пытливый ум хотел что-нибудь натворить. Окинув взглядом офис, я начал думать, что бы мне оптимизировать. Через всю комнату к столу начальника тянулся телефонный провод, и, проезжая по нему на кресле с колёсиками, можно было без труда навернуть аппарат.
Провод был слишком коротким, чтобы проложить его вдоль стены. Сисадмина с обжимкой у нас не было, а в соседних компьютерных лавках телефонного провода длиннее пяти метров не продавали.
Скручивать провода — не наш метод! Я стал думать, как бы нарастить провод с минимальными потерями. На бесперебойнике я обнаружил розетку под RJ-45, но что-то мне подсказывало, что туда залезет и телефонный штекер. Влез. Проверил — сигнал нормальный, все отлично.
Теперь, когда начальник болтает по телефону, он знает, что его подслушивают два старых UPS, а я могу от своего рабочего места беспрепятственно доезжать до его стола.
#1367: Суровая виртуальная реальность
19:45 23.10.2009, IT happens
В нашей компании для разных нужд применяются виртуальные машины. Коллега создал набор программ, облегчающих работу с этими машинами. Была устроена презентация новшества для руководства и заинтересованных лиц.
Представьте: пафосный конференц-зал, большой экран, в первом ряду высокое руководство, партнёры, гости; сзади толпа сотрудников. Коллега говорит вступительные слова, открывает во весь экран виртуальную машину и запускает под ней что-то из своих разработок.
Пауза. Запущенная программа выдаёт сообщение об ошибке и захлопывается. Через несколько секунд виртуальная машина подвисает и тоже закрывается. Ещё несколько секунд консоль управления этими машинами застревает намертво. Бедный сотрудник пытается реанимировать консоль, но на экран массово выпадают уведомления об ошибках разного калибра. В конце концов основная ОС перестаёт отвечать на устройства ввода, жужжит диском и вываливается в синий экран.
В конференц-зале — продолжительная немая сцена. Наконец виновник торжества с энтузиазмом произносит:
— Ну, отрицательный результат — тоже результат!
12:00 24.10.2009, IT happens
Жена смотрела фильм про учёных в снегах на Южном полюсе и в какой-то момент начала критиковать фильм за неадекватность: снега, дескать, на Северном, а на Южном тепло! Мой ржач, логичные доводы и слабое сопротивление с её стороны помогли в сжатые сроки заполнить пробел в школьных знаниях.
Через час оказываюсь за компом; на глаза попадается ярлык Google Earth. С довольной ухмылкой восклицаю: «Иди сюда, женщина, я покажу тебе, какой он — настоящий Южный полюс!» Запускаю шарик, проворачиваю, зумлю (жена уже за спиной) и щёлкаю на первую попавшуюся фотку.
Открывается «типичный» для Антарктиды пейзаж: лазурный берег, лагуна, пальмы и бунгало. Надо же было попасть на фотку, подгруженную каким-то шутником! Я в ступоре, жена в восторге: «А-а-а! Я же говорила, а ты!..» Разобрались потом, конечно, но момент был яркий.
Модераторы! Будьте бдительны!
#1369: Гармонический ряд грызунов
12:00 24.10.2009, IT happens
Проводил я инвентаризацию ИТ-хозяйства в конторе. Для учёта составил экселевскую табличку, в которую вбивал наименования всех матценностей вместе с их инвентарными номерами. Процесс трудоёмкий — очередь запаса мышек подошла только ближе к ночи. Закончились разнообразные модели Logitech, и я добрался до Genius. Их у нас была только одна разновидность, так что я один раз вбил название NetScroll PS/2 и, растянув на нужное количество полей, отправился спать домой.