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