Возвращаюсь вечером с работы, никого не трогаю. Из-за угла вылезает типичный гопник и обращается ко мне с серией вопросов:
— Эй, чувак, есть мелочь? Ты чё такой волосатый? Ты чё, ботан?
Гляжу — придурок полез в карман. Скорее всего, у него там выкидной нож, а у меня в руках только пакет со справочником сисадмина по Windows Server 2003. Правда, том увесистый — весом в два кило и толщиной в полторы тысячи страниц.
Не желая дожидаться демонстрации колюще-режущих предметов, я размахиваюсь пакетом, намереваясь съездить гаду по шее. Пакет не выдерживает, и два килограмма информации улетают в направлении головы гопника.
Неприятель странно каркнул и осел в весеннюю грязь. Подняв том, я направился в ближайший ларёк за пивом, чтобы успокоить нервы и повеселить желудок.
Да, гопник остался жив, а книжка отделалась легким испугом — после протирки спиртовой салфеткой была как новая!
Однажды мне было необходимо срочно проложить четыре десятка проводов витой пары на расстояние в сто метров. Большая часть дистанции проходила над навесным потолком на трёхметровой высоте. Поняв, что для моих единственных в конторе админских плеч решение задачи в приемлемые сроки является непосильным, я принялся терзать шефа на предмет привлечения сторонних монтажников, и тот, скрепя сердце, согласился. Я разработал техзадание, разослал по разным конторам и стал ждать.
Одно из предложений сильно выделялось из общей массы. Ребята утверждали, что работу они выполнят всего за один день, причём втрое дешевле, чем любой из конкурентов! На всякий случай перезвонил и уточнил, правильно ли они поняли задание. Ответили, что поняли прекрасно, а скорость и дешевизна объясняется тем, что в работе используется кабелеукладчик. Я был заинтригован — с кабелеукладчиками имел дело в армии и решительно не представлял, каким образом данный девайс можно приспособить к прокладке витой пары под фальшпотолком.
В назначенный день прибыли всего два монтажника со стремянками и инструментами. Наблюдая за процессом разгрузки, я с нетерпением ждал чудо-агрегата, способного автоматизировать процесс. Агрегата так не дождался, зато последней из микроавтобуса была выгружена некрупная такса. Не успел я удивиться по поводу появления животного, как мне объяснили, что это и есть таинственный кабелеукладчик.
В комплекте к таксе шел специальный костюмчик с ручкой вдоль спины для переноски, сбруя на голову со светодиодным фонариком и шлейка. Прокладка кабеля осуществлялась путём прикрепления его к шлейке и запуска таксы в труднодоступное место. Надрессированное животное шустро мчалось на звук голоса или свет фонаря, волоча за собой провод. Потолок собаку выдерживал, мощности же хватало метров на пятьдесят.
Скорость прокладки в длинных и труднодоступных участках была просто фантастической. Такса резво носилась в одну сторону по верху, а обратно — по коридору, пугая женскую часть персонала. Даже ЧП в виде выпавшей панельки потолка не повлияло на её настроение: протягиваемый провод сыграл роль страховочного троса, и собачка плавно опустилась на пол. Ребята сказали, что к таким ситуациям кабелеукладчик приучен.
Смех смехом, но такса на полном серьёзе стояла у ребят на балансе фирмы — мне были продемонстрированы документы. Работу дружный коллектив действительно выполнил менее, чем за день, причем без предварительного разматывания кабеля и, соответственно, без обрезков. Правда, работа нашей конторы полностью встала — всё население сбежалось посмотреть за работой кабелеукладчика.
Собирался послать нашему Configuration Manager письмо о том, что ClearCase жалуется на невидимые файлы, которые не участвуют в слиянии. Ввёл заголовок и... случайно отослал письмо, ничего не написав.
Получаю ответ:
Бл$, это концептуальный мейл. Я минут 5 втыкал в пустой лист с названием «Невидимые файлы».
На днях ко мне подошёл менеджер по рекламе и поинтересовался, есть ли у меня дисковод, застенчиво вынимая дискетку. Я, конечно, был удивлен архаичному способу переноса информации, но вида не подал. Взял дискету, засунул в флоповод, переписал файлик... и пару минут безуспешно искал в трее значок «Безопасное извлечение».
Случилось это в то время, когда я только-только научился писать более-менее компилящиеся программы. Начитавшись различных околокомпьютерных изданий довольно низкого качества и геймерских форумов, я твёрдо решил, что напишу свой искусственный интеллект, с которым можно будет... ну, по крайней мере общаться в чате (хотя воображение, разумеется, шло гораздо дальше). Никакой специализированной литературы под руку мне тогда не попало, да и некогда было её читать — руки страшно чесались, и мне очень хотелось почувствовать себя «большим программистом».
На глаза мне попалось описание «электронного поэта» Леонида Каганова, и в голове тотчас же родился алгоритм. Программа содержала базу слов, причём для каждого слова были заданы вероятности того, что оно начнёт или закончит фразу. Для каждой пары слов также присутствовало две числовых характеристики: вероятность того, что первое слово присутствует во фразе, отвечающей на содержащую второе слово, и вероятность того, что первое слово идёт в предложении после второго. В итоге ответ бота начинался с наиболее вероятного слова по сумме баллов «начало фразы» и «ответ на каждое из содержащихся в вопросе слов». Слова добавлялись в конец фразы до тех пор, пока вероятность конца фразы не превышала сумму баллов для следующего «хорошего» слова. О знаках препинания на этом этапе мечтать не приходилось.
Результаты были не слишком впечатляющими: загнав руками несколько десятков слов и неделю промучившись с коэффициентами в формулах, я смог добиться лишь адекватных ответов на фразы «привет» и «как дела». Поняв, что самому мне с этой задачей не совладать, я обратился к хорошему знакомому, который не брезговал отвечать на мои околопрограммистские вопросы. Знакомый заинтересовался моим проектом, в первую очередь из-за его простоты, и принялся за дело.
Отныне программа общалась с базой данных, содержавшей все необходимые таблицы. Поиск «наиболее вероятных» слов был переложен на движок базы; кроме того, в формулу добавилось слагаемое, экспоненциально уменьшающее вероятность появления нового слова с ростом длины фразы. Когда переписанная программа заработала на уже подобранных мною примерах, возник вопрос: чем заполнить базу? Очевидно, что лучшим кандидатом на базу для чат-бота является... правильно, база настоящего чата. У моего знакомого как раз оказался дамп одного такого ресурса, где сидели преимущественно старшеклассники. Отличительной особенностью этого чата, которой мы легкомысленно не придали должного значения, было полное отсутствие модерации. Мой знакомый занялся делом, и вот уже наскоро составленная «словокосилка» принялась переваривать дамп чата, нещадно запихивая новые данные в MySQL-таблицы.
Настал момент истины. Отяжелевшая база медленно ворочала файлами, а мигающий курсор так и подмывал задать первый вопрос новорождённому разуму. Начать разговор мой друг решил обычным образом:
> Привет
Новоявленный бот, задумавшись на пару секунд, выдал:
< пошел нах@й
Отсмеявшись, на следующий день скрипту мы скормили базу более «взрослого» чата, после чего от дурного воспитания бота не осталось и следа. Некоторое время мы продолжали совершенствовать бота, а затем, разумеется, забросили — как обычно и случается с подобными программами.
А мораль истории проста: за вводимыми данными надо тщательно следить — тем более, если эти данные вводишь не ты.
В конце 11 класса мы с двумя друзьями из класса сдавали ЕГЭ по информатике. Один из них испытывал трудности в подготовке к экзамену и обратился ко мне за помощью. Дело происходило в июне, в школу мы уже не ходили, поэтому алгоритмы решения задач я объяснял ему по аське. Это было крайне неудобно: задачи были нетривиальными, поэтому печатать приходилось очень много.
Мы решили организовать видеоконференцию. То ли я нажал не туда, то ли мой друг воткнул микрофон не в ту дырку, но я не получал ни изображения, ни звука, а друг меня только слышал. Работали мы по такой схеме: он в письменном виде присылает мне задачу, а я устно объясняю решение.
Представьте: сижу я и вдумчиво излагаю, как определить, сколько чисел в двумерном массиве после выполнения алгоритма на Паскале примет отрицательные значения. Входит мать и видит картину: её сын сидит, смотрит на пустой рабочий стол (все окна я свернул для концентрации внимания) и о чём-то разговаривает со своим компом. Крику было!.. С трудом отговорил маму вызывать психиатра, объяснив, что я ещё не успел сойти с ума от многочасовых бдений за клавиатурой.
Знакомый админ в девяностых подрабатывал, открыв свой отдел по продаже железа. Так случилось, что юного сына было не с кем оставить дома, и он взял его в магазин. Посадил отпрыска за компьютер, загрузил Paint, в котором сын, по его выражению, «рисует каляки–маляки» и ушёл к покупателям. Через некоторое время ребёнок спрашивает:
— А как сохранить?
У папы сразу включается админский инстинкт:
— Нажимаешь в меню на «Файл» и выбираешь «Сохранить как».
Обычный ларёк с сигаретами, пивом и прохладительными напитками. Жарко, у окошка образовалась небольшая толпа, потенциальные покупатели слегка нервничают и тихонечко матерят продавца за скорость обслуживания. Наступает очередь молодого человека, несколько погруженного внутрь себя. Продавец возвращает юношу в суровую реальность:
— Молодой человек, заказывайте скорее! — (слегка отрешённо) Vista!
Знакомый с ассортиментом ларька продавец округляет глаза. Юноша более уверенно заявляет: «Windows!» Работник торговли в полном недоумении. Наконец парень окончательно возвращается с цифровых небес на землю:
— Тьфу ты! Пачку Winston!
Очередь дружно хохочет — вот уже и не так жарко, и очередь, кажется, двигается побыстрее...
Поехал в отпуск к родственникам в деревню. В один прекрасный вечер я, досмотрев очередную серию про небритого мужика с тростью, собрался ложиться спать. Выключил ноут и свет, лёг и перед сном решил почитать обновления с цитатника. Врубил свой коммуникатор, читаю в темноте — и вдруг, нарушая ночную тишину, раздается громкий, короткий, до боли знакомый звук работы головки HDD. Пару секунд не реагирую, но потом осознаю, что бук выключен, а телефон такого звука издавать явно не может. Списываю на «показалось», читаю дальше. Проходит минут пятнадцать — звук повторяется. У меня тихая паника.
Находясь под впечатлением от просмотренного, заявляю сам себе: «Дифференциальный диагноз на имитацию звука работы HDD!» Не найдя ничего, что могло бы подойти, начинаю перечислять всё, что вообще может издавать звуки. Выяснил, что из включенных электроприборов в наличии только настольная лампа, часы-будильник, фонарь на улице, включающийся изнутри, и холодильник на кухне за закрытой дверью. Звук повторяется снова.
Наконец догадавшись посмотреть наверх, я заметил еще один девайс — счётчик электроэнергии. Оказалось, что именно счётчик постоянно издавал характерный звук, а заметно громче он становился при включении холодильника, ведь сила тока в сети резко возрастала.