bash.im ithappens.me zadolba.li

Мысли о вечном

1238

Элиза по-русски

Случилось это в то время, когда я только-только научился писать более-менее компилящиеся программы. Начитавшись различных околокомпьютерных изданий довольно низкого качества и геймерских форумов, я твёрдо решил, что напишу свой искусственный интеллект, с которым можно будет... ну, по крайней мере общаться в чате (хотя воображение, разумеется, шло гораздо дальше). Никакой специализированной литературы под руку мне тогда не попало, да и некогда было её читать — руки страшно чесались, и мне очень хотелось почувствовать себя «большим программистом».

На глаза мне попалось описание «электронного поэта» Леонида Каганова, и в голове тотчас же родился алгоритм. Программа содержала базу слов, причём для каждого слова были заданы вероятности того, что оно начнёт или закончит фразу. Для каждой пары слов также присутствовало две числовых характеристики: вероятность того, что первое слово присутствует во фразе, отвечающей на содержащую второе слово, и вероятность того, что первое слово идёт в предложении после второго. В итоге ответ бота начинался с наиболее вероятного слова по сумме баллов «начало фразы» и «ответ на каждое из содержащихся в вопросе слов». Слова добавлялись в конец фразы до тех пор, пока вероятность конца фразы не превышала сумму баллов для следующего «хорошего» слова. О знаках препинания на этом этапе мечтать не приходилось.

Результаты были не слишком впечатляющими: загнав руками несколько десятков слов и неделю промучившись с коэффициентами в формулах, я смог добиться лишь адекватных ответов на фразы «привет» и «как дела». Поняв, что самому мне с этой задачей не совладать, я обратился к хорошему знакомому, который не брезговал отвечать на мои околопрограммистские вопросы. Знакомый заинтересовался моим проектом, в первую очередь из-за его простоты, и принялся за дело.

Отныне программа общалась с базой данных, содержавшей все необходимые таблицы. Поиск «наиболее вероятных» слов был переложен на движок базы; кроме того, в формулу добавилось слагаемое, экспоненциально уменьшающее вероятность появления нового слова с ростом длины фразы. Когда переписанная программа заработала на уже подобранных мною примерах, возник вопрос: чем заполнить базу? Очевидно, что лучшим кандидатом на базу для чат-бота является... правильно, база настоящего чата. У моего знакомого как раз оказался дамп одного такого ресурса, где сидели преимущественно старшеклассники. Отличительной особенностью этого чата, которой мы легкомысленно не придали должного значения, было полное отсутствие модерации. Мой знакомый занялся делом, и вот уже наскоро составленная «словокосилка» принялась переваривать дамп чата, нещадно запихивая новые данные в MySQL-таблицы.

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

> Привет

Новоявленный бот, задумавшись на пару секунд, выдал:

< пошел нах@й

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

А мораль истории проста: за вводимыми данными надо тщательно следить — тем более, если эти данные вводишь не ты.

1229

Айтишник — это судьба

Мне двадцать, в IT работаю более четырёх лет. Недавно я расстался с девушкой, с которой прожил вместе год. За пять недель «свободы» я починил гору компов симпатичным девушек, но и не думал, что всё так плохо... Вчера одна из них звонит мне:

— Можно я тебя познакомлю с моей сестрой? Она на неделю в нашем городе и хочет увидеть местные достопримечательности.
— В каком это смысле?
— Ну... Она никогда не видела настолько труёвых айтишников.

Сегодня ещё хуже. Цитирую диалог по телефону:

— У меня к тебе предложение. Давай сегодня встретим закат где-нибудь в романтичном месте?
— Странно слышать это от тебя, но я согласен.
— Совсем забыла — не мог бы ты починить мой ноутбук?

У меня почти истерика.

— Я так понимаю, что первое предложение опциональное, а второе обязательное?
— Ну, мне как-то неудобно было предлагать второе без первого...
— Забей, я зайду к тебе сегодня и починю ноут. Не нужно для этого со мной гулять.
— Правда?
— Правда.
— За@#$сь!

У меня сложилось впечатление, что IT — это моя половая ориентация. Видимо, такое впечатление не только у меня, но и у всех моих знакомых девушек. Как так можно жить? Я занимаюсь спортом, не ношу очки, причёсываю волосы и моюсь каждый день. Единственное, что может меня выдать — вечно красные глаза, чашка кофе, сигарета в зубах и тематические футболки...

1225

Кабель-спагетти

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

Итак, восьмиэтажное здание. На последнем этаже только-только доделали ремонт, вывели розетки, занесли компы и мебель. Надо подключить этаж к общей сети — раз плюнуть, казалось бы... В процессе обжимки торчащих из тщательно заштукатуренных стен обрезков витухи выяснилось, что сеть прокладывали строители-равшаны по только им понятному хитроумному плану, и никто толком не знает, как и куда всё это безобразие ведёт. Но на семи-то этажах сеть есть!

Через полчаса блужданий по зданию у нас начались нервные смешки. Никто не знает, что такое серверная, а «единственный подкованный во этих ваших технических штучках» сотрудник со всем начальством срочно уехал в банк и недоступен. Наконец, на третьем этаже замечаем блеск понимания в глазах девочки-блондинки: «Я знаю! Это в конце коридора, мы туда курить бегаем».

Идём за белокурой сотрудницей и попадаем из гламурного холла в белую оштукатуренную комнатку 3 на 5 с маленьким окошком, пепельницей и большим железным щитком у одной стены. «Вот», — тычет милое создание на щиток, и с заговорщической ноткой добавляет: «Серверная».

Женя открывает шкаф; в лучших традициях фильмов ужасов на него выпадает клубок. Вот только не змей — на коллегу обрушилось около восьми 24-портовых мигающих хаба, намертво обмотанных, наверно, километром витухи, уходящей стройными рядами вверх и вниз в стены. Венцом всего оказались два четырёхпортовых хаба, гордо стоящих почти под потолком на полочке. Вторые и четвёртые гнёзда у них были соединены между собой, образуя своеобразное кольцо; остальные же провода безвозвратно уходили в общий клубок. Все хабы радостно подмигивали нам мегабайтами передаваемой информации.

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

— Женя, а как это вообще, эмм, работает? Это возможно?

Прикуривая первую за долгое время сигарету, Женя отрешённо произнес:

— В жизни нет ничего невозможного.

Объект решили не брать.

1221

Игры разума

Работаю я админом в небольшой конторе. Как водится, смешных, комичных и идиотских случаев бывает много, но достойных публикации до этого момента не было.

Заходит как-то ко мне в серверную товарищ, известный на всю фирму любитель поразгадывать кроссворды. Тут, дескать, всё по твоей части — блесни-ка знаниями предмета! Отчего ж, думаю, не блеснуть-то? Беру вырезку из газеты и плотно зависаю; через некоторое время зависают все друзья и знакомые, хоть как-то связанные с IT. Всю неделю присылались предположительные ответы. Мозги кипят; все программисты, железячники и прочие труженики компьютерного фронта поставили на себе крест как на специалистах и принялись ждать пятницы, когда, наконец, выйдет следующий номер с ответами.

Итак, великолепная восьмёрка вопросов и ответов, отсортированная по возрастанию идиотизма:

8. Электрическая плата, вмонтированная в компьютер и увеличивающая его возможности, 7 букв.

Ну что тут скажешь — вариантов немного, но ничего не подошло. Как оказалось, «адаптер». Запутанно, конечно, но всё же по существу. Дальше — больше!

7. Временный перерыв в работе программы или устройства, 8 букв.

Не поверите — «заедание»! Кто и кого пожирает, непонятно. Верно, это связано с перерывом на обед.

6. Сервисная программа, облегчающая пользование другими программами, работу с компьютером, 7 букв.

Тут было много ответов. И «система», и «виндоуз», и даже «враппер». Кто-то даже решил думать, как составитель кроссворда, и предположил, что это «менюшка». Оказалось, что ответ — «утилита»! Что же ещё прогам, компу, нам и всей обозримой вселенной настолько облегчает существование?

5. Специальное устройство, являющееся местом постоянного хранения информации во внешней памяти ЭВМ, 4 буквы.

Опять закипели мозги и зашевелились извилины. Чего только не предполагали: «флеш», «НЖМД», «НФТС», «хард», «сеть», «байт», кто-то даже предложил ответ «мозг» — ага, у составителя он точно больной. Оказалось, «файл».

4. Графическое изображение события, сделанное с помощью компьютера, 4 буквы.

Ступор. Мольбы компьютерным богам. Безуспешные попытки понять логику составителя. В голове крутится «флеш» и почему-то «окно». Фигушки — «плот»! Видать, вспомнило чудо кроссвордическое школьные уроки бейсика и блеснуло познаниями.

3. Отмена команды компьютеру, 6 букв.

«Кансел»? Не-а. «Отмена»? Чёрта с два! Это «снятие». Выяснять, кто, с кого и что снимал, мы не стали, опасаясь за нарушении хрупкой внутренней гармонии и чувства прекрасного.

2. Часть компьютерной системы, выполняющая определенный набор операций, 4 буквы.

Ну это должно быть очень просто. «Биос»? Не подходит. «Ворд» (почему бы и нет?) — не он. Возможно это, «мышь»? Часть? Часть. Выполняет? Ещё как выполняет. Даже не «проц» — составитель имел в виду «блок»! Спасибо тебе, открыл глаза на правду. Запомнили. Записали.

Итак, первое место нашего хит-парада. Держитесь.

1. Клавиатура компьютера, 6 букв.

Тут мы все зависли… нет, правильно же говорить, заели. Даже предположений не было. «Киборд»! Именно так.

С чувством выполненного долга я вырезал ответы, приклеил к листу с самим кроссвордом и положил в ящик. Может, заламинировать и в рамочку? Сохранить, так сказать, для потомства...

1219

Ньютоновский подход к траблшутингу

Досталась нам на обслуживание одна госконтора с весьма, скажем так, неухоженной IT-структурой. Забавностей и несуразностей в этой связи возникает великое количество, вот одна из них.

Сидим с напарником, потихонечку выполняем заявки, и вдруг пропадает интернет. Сначала списали на очередные проблемы у провайдера, тем более что накануне таковые имелись, однако провайдер от обвинений успешно отбился. Лезем на «Ису», смотрим — ага, «сетевой кабель не подключен». Идем в серверную смотреть, в чём дело. Стоит сказать, что местное царство кулеров, витой пары и светодиодов являет собой концентрированное собрание решительно всех советов о том, как не надо делать серверные. В частности, понятие «cable management» у создававших это чудо инженерного искусства явно находится в лингвистическом блэклисте. Кабель действительно обнаруживаем отключенным — чуть позже выяснилось, что вынул его с непонятной целью некий инженер, приезжавший проводить профилактические работы.

Напарник втыкает джек обратно — безрезультатно. Ребут — ноль эмоций. Лезу за стойку, чтобы проверить самолично. По пути задеваю ногой какой-то шнур и незамедлительно получаю по голове свитчом и провайдерским модемом, сорвавшимися с полки. Матерюсь, подключаю обратно вылетевший из модема «питальник», и — о чудо! — инет благополучно поднимается.

Я это всё к чему: господа админы, если вам вдруг стало лень делать хорошо — хоть травмоопасно не делайте! Или вешайте при входе каску, а?

1208

В очередь, цисковы дети, в очередь!

Сидел сегодня, ковырял по удалёнке свой скрипт-файрвол. Задача — аккуратно завернуть трафик на биллинг. Для достижения цели в скрипте была предусмотрена строка примерно такого содержания:

iptables -A input -j queue

Поправив скриптик, я решил пощёлкать по ссылкам и случайно попал на страничку «Викисловаря», посвящённую непечатному русскому слову из трёх букв. Заинтересовавшись, начинаю изучать статью. В разделе «Перевод» вижу:

Французский (fr): bite, queue

Крепко задумался: куда же я, выходит, отправляю весь трафик?

1207

Плакали, кололись, но продолжали жрать шоколад

Пригласила меня девушка-соседка посмотреть, почему у неё не работает беспроводная мышь. Говорит, когда подносишь грызуна к блютуз-приемнику, всё работает, а если отодвинуть сантиметров на двадцать — сигнал пропадает.

Первым делом я посоветовал сменить батарейку, но девушка заявила, что батарейка новая, только что из пачки. В чём же проблема? Сигнал ничего не должно мешать, да и раньше мышка не барахлила. Я уже собрался признаться в своем бессилии, но соседка «за беспокойство» решила угостить меня шоколадкой, лежащей на полочке с дисками. Удивительно, но после этого мышь заработала! Хоть плитка шоколада и не преграждала путь, но её фольга, по-видимому, отражала сигнал в непонятном направлении, создавая помехи.

Юзер, помни: поощрение за работу значительно ускоряет решение околокомпьютерных проблем!

1206

Секс-менеджмент

SexPosition, говорите? Мне как-то довелось заниматься рефакторингом модуля, работавшего с системными таблицами нашего приложения, среди которых была и пресловутая «Sex».

То, что, разбираясь с этим делом, я осуществлял в проекте поиск по известному ключевому слову и чувствовал себя злобным, начинающим и неопытным др^H^H искателем порнухи — это полбеды. Гораздо интереснее было обнаружить сопутствующий класс SexManager — видимо, что-то вроде офис-менеджера по особым вопросам.

Cреди находок были переменные и функции animalSex, SexPanel и sexModel.getSex(). А что вы хотите — система медицинская, тут понятие пола порой к одному биту не свести. Вот и приходится работать... секс-менеджером.

1204

Умерьте пыл

Я живу в Хабаровске — это относительно «глухая деревня» на Дальнем Востоке. Самый дешевый проводной безлимит — 128 kbps за 600 рублей в месяц, а в городских кафе стали только-только стали появляться платные точки доступа. Сети 3G пока существуют только на бумаге, EDGE рулит только в центре, а на окраинах вполсилы работает старый добрый GPRS по 7–8 рублей за метр.

Захожу на днях в магазин по продаже средств связи и подхожу к стеллажу с коммуникаторами. Мой взгляд падает на новенький HTC MAX 4G. Подзываю продавца-консультанта и начинаю рассспрашивать. Рассказы про большой экран формата 16:9, онлайн-ТВ, кучу встроенных функций и поддержку 3G и WiMAX консультант мечтательно завершил такой фразой:

— Когда вернетесь, расскажете, как там погодка в Европе?
— Знаете, я в ближайшее время никуда не собираюсь.
(удивлённо, возмущённо) Тогда зачем вам здесь нужен этот коммуникатор?