bash.im ithappens.me zadolba.li

Факапы

7377

Я не рекламщик, я партнёр!

28 сентября 2011, 11:45

Я не люблю рекламу. Я вполне осознаю, что в некоторых случаях меня она кормит, но не люблю. Навязчивая она, а местами её слишком много. В метро я её, родимую, разглядываю недолго, телевизор практически не включаю, радио слушаю такое, где рекламы поменьше. В интернете бороться с рекламой мне помогает расширение AdBlock Plus.

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

Ломаю голову. Какие различия в серверах? В конфигурации? В чём-то ещё? Проверяю функциональность сходного процесса, но для другой категории пользователей — там всё работает. Разбираю код. Редактирую по живому, прямо на сервере, который в интернете крутится (благо рядовые пользователи этого никак не увидят) — тщетно. Ломаю дизайн — ломается. Оказывается, исполнение метода (отсылка данных формы) вообще не происходит!

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

Продолжаю ломать голову. Это что ж получается, даже не хочет исполняться вполне обязательный код? Услужливо найденная Гуглом информация на заданную тему сообщает, что всё я пишу, как надо, и всё должно работать. Уже хочется протяжно петь: «Why?!», словно траурный хор в песне Бреговича — Игги Попа «In The Deathcar». На часах уже больше десяти вечера, прямой эфир матча «Металлист — Галатасарай» безнадёжно пропущен, и тут меня осеняет: может, это расширения Мозиллы?

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

7368

IL happens

27 сентября 2011, 11:45

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

На одном из репортов софтина вдруг начала умирать, выжирая всю память. Тестеры три дня искали и обнаружили, что в одном из полей одной из таблиц есть значение «Wheelchair user», и если его поменять на «abc», то всё работает. Кто, блин, запрограммировал ненависть к людям с ограниченными возможностями? Стали пробовать разные варианты. Выяснилось, что «Wheelchair u» всё ещё падает, а вот «Wheelchai u» уже работает. Пошёл запускать локально — out of memory error. Нашёл метод. А там перед циклом, в котором и происходит переполнение, стоит коммент:

// FIXME: Infinite looping happens

7346

Метод прерванного транзакционного акта

25 сентября 2011, 08:00

Торговая сеть, принимая кредитки через Сбербанк, решила принимать ещё и локальные карты банка «X». Конфигурация: кассовое ПО — DOS; ПО Сбера и банка «X» — DOS-модуль на кассе и Windows-сервер в ЛВС.

Для исключения случайностей были устроены тесты. Диалог кассового ПО с программным комплексом банка «X» во время крэш-теста изрядно повеселил. Восстановлено по логам ККМ и процессинга.

Кассовое ПО — DOS-модулю: «Провести покупку на сумму 50000 руб. по карте N!»

DOS-модуль — Windows-серверу: «Провести покупку на сумму 50000 руб. по карте N!»

Windows-сервер — процессингу: «Провести покупку на сумму 50000 руб. по карте N!»

Транзакция идёт около трёх секунд, и у нас есть время вытащить RJ-45 из кассы.

Процессинг — Windows-серверу: «ОК!»

Windows-сервер, поместив в свой буфер «ОК», DOS-модулю: «ОК!.. Эй, кассовый модуль! ОК, я тебе говорю!»

Касса молчит.

Windows-сервер — процессингу: «Отменить покупку на сумму 50000 руб по карте N!»

Процессинг — Windows-серверу: «ОК!»

И тут мы втыкаем RJ-45 обратно в кассу.

DOS-модуль (читает из буфера Windows-сервера): «Оплата — ОК!»

DOS-модуль — кассовой программе: «Оплата — ОК!»

Кассовая программа печатает чеки и слипы. Покупательница уходит с товаром и при своих деньгах.

DOS-модуль (читает из буфера Windows-сервера): «Отмена предыдущей операции — ОК!»

DOS-модуль — Windows-серверу: «Какая ещё операция? Что-то с буфером у тебя не то. Очистить буфер!»

Три раза проверили (главное в результате — воспроизводимость). Хорошо, что сервисы, висящие на тестовых портах, снимают с карты лишь тестовые рублики…

7311

Плохо ловится рыбка-бананка

21 сентября 2011, 08:00

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

Задействовал давно пылившуюся в слоте сетевуху. Сетевуха чихает, кашляет и время от времени флудит по UDP на рандомный адрес рандомною фигнёй в огромном количестве, DoS’я саму себя и окружающих, а если рандомный адрес оказался внешним, то ещё и файрвол. По сети сервер доступен урывками; команды пишу в аське и быстро копипащу, когда SSH удаётся ненадолго пробиться. Еле вырубил. Как такое вообще может быть — полнейшее ХЗ.

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

7300

С юзерским рылом в калашный ряд

19 сентября 2011, 15:45

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

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

Созвонились. Говорим на английском. Даже понимаем друг друга, несмотря на ужасные акценты. Дайте, говорит, мне удалённый доступ, я всё сделаю. Предоставляю доступ и наблюдаю, тихо посмеиваясь.

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

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

Думаете, всё? Нет, идиотская программулина регулярно пытается обновиться, скачивая и запуская исполняемый модуль. Приходится два раза в неделю подбегать и запускать её с правами админа.

* * *

Разрабатываете софт? Недостаточно отловить все баги и ошибки. Включайте мозг, реализуя «второстепенные функции» установки и обновления.

7258

Семнадцать факапов весны

14 сентября 2011, 11:45

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

Дальше — больше. Некоего Альберта Шпеера отстранили от работы в ночную смену, указав в комментарии: «Подозревается в связях с Гитлером». Работа спорилась, геноцид шёл. Целый отдел был уволен с пометкой на немецком языке: «В газенваген».

Апогеем стало разжалование директора в завхозы, введение должности «Оберштурмбанфюрер» и принятие на неё (как вы уже наверняка догадались) Макса фон Штирлица.

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

7226

Билайн в трауре

11 сентября 2011, 08:00

Из письма в службу технической поддержки крупной компании:

Прошу произвести замену картриджей в соответствии с запросом. В принтере заменили не только чёрный, но и жёлтый картридж. Причём тоже на чёрный!

7195

Харды в мешочек

7 сентября 2011, 10:00

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

Через некоторое время звонят мне с ресепшна и просят подойти забрать посылку. Клиенты иногда нам присылают дискетки и сидюки с разнообразным вирьём, так что вызов меня не удивил. Ничего не подозревая, иду вниз и получаю пакет DHL. Да, именно пакет. Автоматически расписываюсь и иду наверх в лабу. По пути в пакете что-то подозрительно позвякивает. Мои смутные подозрения подтвердились, когда я с предосторожностями вскрыл пакет. В нём, как орехи в мешочке, кувыркались три харда.

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

7179

Сколько веревочке ни виться…

5 сентября 2011, 11:45

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

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

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

Через несколько лет эксплуатации случайно выяснился замечательный факт: при подключении в сеть через свитчи вполне определённой марки связи с приборами нет. Со всеми! Ставим другие имеющиеся свитчи — всё без сучка и задоринки. Сами коммутаторы, понятное дело, проверены во всех возможных ситуациях заранее и линк держат аж до 130-метровых дистанций.

Мистика? Отнюдь нет. После недели курения мануалов по микросхемам, попыток снять low-level-логи со свитчей и прочих танцев с бубном главный разработчик в ходе перепроверок конструкторской документации обнаружил нестандартный порядок обжима тех самых кабелей, которые подключаются к Ethernet-портам приборов. Надо заметить, что разъёмы используются специализированные, поэтому кабели на основе витой пары делаются на производстве самостоятельно. На приборной стороне используется одна четвёрка кабелей (например, синяя пара — Rx, зелёная — Tx), а на противоположной сетевой — другая (соответственно, оранжевая и коричневая).

Как это работало на протяжении трёх лет, спросите? А вот так! На чистых наводках обеспечивались полные 100 Мбит/с. Прибор честно отрабатывал все задания во всевозможных жёстких условиях эксплуатации, так ни разу и не отказавшись передавать свои кровные данные по назначению.

Поучаствовав в прилюдной экзекуции конструктора, который и нарисовал схему разводки жил, я уяснил для себя два важных момента:

1) Обязательно проверяй работу не только за собой, но и за другими.
2) Сколь бы хорошо ни вилась витая пара, дополнительная экранировка лишней не будет.