85

Горе от ума

К нам принесли компьютер.

Женщина лет сорока жаловалась, что у нее "Виндоас" не грузится.

Включаю.

Безо всяких лишних вопросов грузится Ubuntu. Спрашиваю, сама ли поставили.

Та, с гордым видом: "Нет, у меня сынок девяти лет, такой умный, правда вот наковырял чего-то".

Смотрю. Диск 200 gb полностью отформатирован, раздела с Windows как не бывало. Сообщаю, что информацию уже не восстановить.

Та, удивленно и раздраженно: "Но мне сын сказал, что вы это сделаете! Так делайте!"

Умные сыны у нас. Слишком умные.

84

Восстание машин-2

Вчера ночью обнаружил на телефоне баланс -543р. Помня, что у меня было на счету около 200р., я забеспокоился, но не слишком, потому как был не совсем трезв и, возможно, мог звонить в другой город к так и не понаехавшим родственникам.

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

А вчера я как раз обновлял софт на КПК и оставил случайно шаренный интернет с блютусом. Его-то и обнаружил изголодавшийся ноут. Они быстро снюхались, (благо пароль я храню на ноутбуке, потому что никому его не даю) и недолго думая, начали транжирить хозяйский интернет направо и налево.

И все бы ничего, но у меня был запущен uTorrent с недокаченным фильмом. В общем, повеселились они на 743р. Вечеринка была в разгаре всю ночь и закончилась только под утро, когда у Touch сел аккумулятор.

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

Роботы кругом. Когда-нибудь они нас победят.

83

...И полчаса разговаривала с модемом.

Работал я как-то в местном провайдере.

Бригадиром монтажников там был очень уж общительный товарищ. Звали его, предположим, Вася. Очень многое об этом великом человеке говорит подслушанный как-то мной его монолог по телефону (собеседника я, само собой, не слышал):

- Алло!

- Да!

- Обязательно!

- Конечно!

- Да!

- Угу..

- Разберёмся..

- Да...

Так прошло от пяти до семи минут...

- Да.

- Угу..

- Сергея Петровича?

- Вы ошиблись номером!

82

Зачистка прошла успешно

Давно это было.

Устроились мы с одним моим хорошим приятелем подработать - проложить и настроить сеть в офисе небольшой конторы. А надо сказать, что витая пара тогда еще только входила в моду и вот как раз по части самой физической протяжки кабеля и укладки его в короб (отмерить, отрезать нужную длину, без розеток) у нас там образовался помощник - местный электрик. Кроме того, его задача состояла в покупке самого кабеля.

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

И показывает на короб.

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

81

Сисадмин, помни!

Как вы наверняка знаете, есть в природе такая вещь, как банкомат. Для того, чтобы банкомат работал нормально, в него, как ни странно, надо забить конфигурационные данные. Банкоматы у нас работают по протоколу х.25.

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

Не выходит.

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

- У вас банкомат номер хххх?

- Нет! У меня банкомат номер уууу!

- Странно, пакеты посылаем на хххх, а ответ приходит от уууу...

Ну что, когда я менял настройки - я забыл сменить сетевой адрес и номер банкомата, из-за чего система принимала его за какой-то другой.

Мораль тут какая?

Когда накатываете эталонные настройки, не забудьте поменять и проверить всё.

80

Цена бесплатного сыра

Известная компания "%companyname%". Подключаем интернет. Одного-единственного клиента.

Для этого едем на другой конец города, монтируем большой стальной ящик на площадке на высоте примерно 2,5 м (шоб не лазили). Внутри ящика находятся :

1) Маршрутизатор CISCO (примерно 40 тыс. руб.), который ещё и настраивается админом.

2) Оптический модем (тоже примерно 40 тыс. руб.).

3) UPS, достаточно приличный

в квартиру идёт уже обычный ethernet кабель.

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

Ах да! Самое главное. Клиент платит не более двух тысяч рублей в месяц. Т.е. лет через пять только окупится оборудование. Хотя ясно же, что через год-два появятся другие, более выгодные тарифы, и клиент просто откажется. И ящик с устаревшим хламом придётся снимать.

Кроме того наша компания подключает и ADSL, но для этого, правда, должен быть телефонный кабель.

Внимание, вопрос... Зачем нам это все надо?

79

Изобретатель велосипедов

Позвал меня молодой товарищ - не компилится в Borlanc C++ Builder новый проект со старыми файлами. Модули исправные - только что сам компилировал.

При попытки компиляции в новом проекте даёт ошибку в глубинах wtypes.h, на строку LONGLONG int64;

Долгая медитация вывела на потрясающей по своей глубине строчку, гласящую #define __int64 int64. LONGLONG, понятное дело, где-то в wtypes определён. А wtypes совсем не в курсе, что есть на свете извращенцы, которые переопределяют int64, да ещё и таким суровым образом.

В результате сейчас юный гений сидит и мрачно делает автозамену строк вида "([\(\s])(u)?int(\d{1,2}) " -> "$1(unsigned) __int$3 ", так как в его творениях мы нашли и int8, и int16, переопределенные таким образом.

А виновник торжества сидит и с наивным видом оправдывается - "ну я ж не знал", "ну это ж было для другого писано", "и ваще, чо вы от меня хотите", "я не знал, что __intXX - стандартная конструкция" и так далее. Так что я совсем не удивлюсь, если мы реально обнаружим #define TRUE FALSE где-нибудь в глубинах его кода.

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

78

И незамедлительно отменить

Ловит меня в коридоре женщина и рассказывает, что у нее наша программа работать не хочет. Список не дает выбрать - сразу закрывается.

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

Я окидываю взглядом рабочее место и обнаруживаю то, что ожидал увидеть - стопку бумаги на клавиатуре, точнехонько на клавише Escape.

77

Это было бы слишком просто

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

Я: Ты забыл $num передать.

Товарищ: Может мне через fopen все сделать?

Я: Можно, конечно. Но лучше все-таки $num передать.

Товарищ: Ну, можно и так, да...

76

Программа, не забудь! - 2

...После чего долго медитирую на фрагмент:

...

a=a;

b=b;

...

Видимо это было напоминание программе, чтобы точно не забыла...

Шутки шутками, а в SharePoint некоторым контролам действительно нужно напоминать их значения, иначе они обнуляются. В результате появляются подобные строчки:

dtc1.SelectedDate = dtc1.SelectedDate; // так надо :(

dtc2.SelectedDate = dtc2.SelectedDate; // не трогать, сломаю руку

dtc3.SelectedDate = dtc3.SelectedDate; // по другому работает некорректно

dtc4.SelectedDate = dtc4.SelectedDate; // обожаю SharePoint