bash.im ithappens.me zadolba.li
9091

Ж-ж-ж неспроста

30 апреля 2012, 10:00

Изучали в универе скрипты на Pascal и Visual Basic, лабораторные набирали в Word.

Схема состояла из двух программ. Первая на Pascal генерировала звук через спикер, что-то вроде шелеста кулера или треска ламп дневного света. Для комнаты, набитой аппаратурой, звук был довольно обычным, и его появление не сразу замечали. Тон выбирался случайным образом. Другая программа была скриптом на Visual Basic, которая запускалась вместе с Word и через пять-десять минут запускала программу на Pascal.

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

Схема прожила сильно дольше, чем я надеялся.

9090

Если б либы были пчёлами

30 апреля 2012, 08:00

Ставлю перловые модули для работы с DB2 на африканский клон линухов. В процессе просят указать путь к либам и перезапустить ldconfig. Выдало:

/sbin/ldconfig.real: /opt/ibm/db2/V9.7/lib32/libdb2qgwcf.so не является ELF-файлом — у него в начале неправильные волшебные байты.

Дословный перевод такой дословный!

9089

Задница как универсальный интерфейс

30 апреля 2012, 08:00

Как известно, задница есть универсальный интерфейс, поскольку через задницу можно сделать абсолютно всё. Читаю комментарии в коде:

// Сделать нормально нельзя, поэтому делаем через задницу.

И двумя десятками строк ниже:

// Увы, возможности задницы ограничены.

Так пошатнулась моя вера во всемогущество оного органа.

9088

И не такое ломали

29 апреля 2012, 10:00

Невозможно навернуть OS X? Блин, только не нашим %censored% админам домена.

Задумали они как-то провести глобальные работы. Естественно, всех предупредили под лозунгом: «Мы все проверили на мышах, все будет замечательно, пользователи филиалов ничего не почувствуют».

На наших компьютерах для программирования и настройки *nix-систем стоит OS X, на ней — виртуальная машина с WinXP, введенная в домен, так как политика компании других осей не признает в принципе.

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

В это время контроллер домена начинает опрос всех имеющихся в сети компьютеров и встречается с яблочной операционкой № 2, качающей обновление с офсайта. Поискав антивирь на рабочей станции, домен пытается применить к Маку GPO и отправляется по следующему в списке сетевому адресу, где его радостно встречает такая же операционка с надкусанным яблоком. Так как на ней поднят недонастроенный серверный компонент, домен немного смущается, когда ему сообщают, что он здесь никто. Завязывает долгое выяснение отношений на все выходные.

Итог противостояния: домен пошел лесом дальше по списку, две виртуальные машины остались без сети, а Мак с серверным компонентом недообновился и повис, обеспечив хозяевам трехдневные пляски с бубном.

9087

Полярные проблемы

29 апреля 2012, 08:00

Работаю в большой организации в IT-отделе. Время от времени настраиваю домашние машины сотрудников на работе — и время терять не надо с выходом на дом, и все необходимое (софт и запчасти) под рукой.

Приходит очередная машинка со сгоревшим БП. Договорились, что новый блок я покупаю сам — бюджет достаточный. Сказано — сделано. Беру хороший БП на 400 Вт, подключаю только проводами, не прикручивая, проверяю — все отлично, только вылетает сообщение о нераспознанном процессоре. Материнка MSI. Вспоминаю, что у самого когда-то на такой же почти матери были те же проблемы, решаемые путем обновления прошивки BIOS. Скачиваю прошивку, заливаю на загрузочную дискету — загрузки нету, полудохлый флоповод. Подкидываю наш, сбрасываю настройки BIOS путем извлечения батарейки, которая вставляется в вертикальный отсек, а не плашмя, как обычно на материнках. С одной стороны, меньше площади на матери занимает, с другой - не очень удобно извлекать батарейку из держателя.

По ходу дела снимаю мертвый БП, прикручиваю новый, ставлю батарейку, загружаюсь, перешиваю BIOS, выставляю настройки, загружаю Винду, проверяю на вирусы. Выключаю машину, собираю корпус, загружаюсь — опа, настройки BIOS не сохранились! Грешу на дохлую батарейку, проверяю тестером — вполне годная, но на всякий случай достаю новую из шкафа. Результат тот же: настройки BIOS не сохраняются. Вынимаю, проверяю на другой машине — все отлично, даже старая батарейка хорошая. Вставляю в MSI - не пашет. Начинаю тихо злиться. После получасовых плясок вокруг системника и детального осмотра матери натыкаюсь на мелкую маркировку полюсов этого самого вертикального держателя батарейки. Оказалось, что батарейку я вставлял противоположными полюсами, в результате чего при отключении питания все настройки CMOS-чипа обнулялись, не поддержанные автономным питанием.

9086

Прости нас, Юра!

29 апреля 2012, 08:00

Несколько комментариев из кода:

{ оставим это до лучших времен… }

// Юра, извини

// … вот это нигде не используется, но на всякий случай… ^_^

#region ХХХ — пока неясно, где это юзается — уже ясно

// ХХХ: изменения в данном запросе, помеченные как -=#death#=-, исправляют ошибку, которая не совсем есть, работают неизвестно как и приводят неизвестно к чему. Теоретически всё абсолютно корректно, но на практике это нашими учёными богословами ещё не доказано.

// ну и изврат…

// предотвращая возможные вопросы: делаю поддержку XXX на уровне YYY, а не на уровне ZZZ из-за лени

9085

Я кулхацкер или где?

29 апреля 2012, 08:00

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

Попытался в программе оприходовать бланки с серией в три символа — нельзя, поле ввода серии рассчитано на два. Я кулхацкер или где? Оприходовал бланк с серией «ЫЫ», после чего руками в базе данных поменял значение на «ЫЫЫ».

Попытался в программе реализовать данный бланк — нельзя, бланки с ошибочной серией даже не отображаются в списках выбора. Я кулхацкер или где? Поменял серию бланка назад на «ЫЫ», реализовал, после чего снова руками в базе данных поменял серию на «ЫЫЫ».

Попытался в программе зарегистрировать заявление о возврате — нельзя, бланк опять не отображается из-за неверной серии.

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

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

9084

Три морали

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

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

съели мыши и крысы
залили чернилами и хлоркой
проверка!
причина неизвестна (а я все знаю!) неправда
достали очень-очень
потешились и хватит
продали налево
куда-то делись

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

* * *

Писали как-то раз с коллегами план работ на месяц (шеф болеет гриппом, его нет). Одним словом, «Запорожские казаки пишут письмо турецкому султану». Взяли написанный шефом план на прошлый месяц и стали его переделывать. Под возгласы типа «Фигасе! А это тут ещё откуда?», «А что означает эта хрень?» и «Вау, да мы уже на месяц со сроками опоздали…» и дружный ржач всей команды рождался официальный документ, который определял нашу (и не только) зарплату на ближайшие два месяца. Мораль: программисты должны только кодить.

* * *

Пришло описание проблемы: медленно строятся отчёты. Формирование отчёта идёт в два этапа: построение отчёта в программе и рендеринг в Crystal Reports (длится в шесть раз дольше построения — специально замерял). Постановка задачи: «Отчёт по акцизным маркам по ХХХ области за год должен выводиться в течение не более 15 минут!» Объём файла отчёта — около 12 МБ. Тестируем похожий отчёт (81 МБ) на P4-3000, 1 ГБ DDR, результат — за 15 минут построилось (ещё только построилось — не рендерилось!) чуть больше 10% отчёта. Я в шоке. Спрашиваю: а что у них за суперкомпьютеры, если они хотят вывести отчёт за 15 минут? Шеф в ответ протягивает бумажку, на которой ровным почерком выведено: «Сeleron-600 / 128MB PC100 / …» Мне просто интересно, как у них ещё WinXP SP2 работает на таких машинах. По мне, уместнее было бы ставить задачу вывода отчёта хотя бы за две недели, но никак не за 15 минут. Мораль: своевременный апгрейд — залог спокойного сна программиста.

9083

Пушистая мягкая мелочь

28 апреля 2012, 10:00

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

Грызун благополучно жил в офисе месяца четыре. А потом админ решил на нем краской написать «любимое» слово — Microsoft. Уже и трафарет приготовил. И вот, когда он вышел на дежурство с этим трафаретом, мышонок не пришел. Больше его не видели.