Хит-парад факапов: top-5 наших любимых багов в честь Дня тестировщика

    Иллюстрация В Интернете уже есть немало подборок очень интересных багов – самых забавных и тех, что принесли максимальный урон (например, здесь).

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

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

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

    Чтобы сохранять некоторую интригу, каждый случай будет состоять из двух частей – как это выглядело изначально, и что мы выяснили в итоге.
    Итак —


    5. Дежавю с непредсказуемым эффектом


    Как это выглядело:
    Однажды, в недобрый октябрьский день, случился локальный апокалипсис. Все клиенты, из разных стран, прямо с раннего утра начали жаловаться на систему, причем жалобы приходили самые разнообразные. Кто-то просто не мог зайти в программу. У кого-то запустилась, но показывала вчерашние данные. У кого-то безбожно тормозила. Кому-то выдавала рекомендации для тех рекламных кампаний, которые уже закончились.

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

    Что на самом деле:
    … пока, как обычно и бывает, мы не разобрались в логах. Поскольку приложение наше очень ресурсоемкое, то большинство расчетов осуществляется по ночам – с тем, чтобы к утру пользователи уже получили свежие рекомендации по улучшению сети. Плюс исходные данные за предыдущий день бывают готовы не раньше 1-2 часов ночи.

    И вот синхронизация и расчеты, как обычно, дождались часа Х, готовности данных, и запустились на обновление. А потом, ровно в 3 часа ночи, по всей Европе сервера переключились на час назад, на зимнее время.

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

    4. Здесь был Вася!


    Как это выглядело:
    Нам пишет один из операторов клиента: «О, круто, вы решили сами себя прорекламировать на наших сайтах по всему миру! Молодцы, классная программа, о вас должны знать. Только вот не пойму, зачем вы показываете рекламу всем подряд?»

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

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

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

    3. Верить в наше время нельзя никому. Мне — можно!


    Как это выглядело:
    У нас демо-показ для стратегического клиента. Стандартное демо ему не подходит, как обычно, продажники хотят продемонстрировать всё самое новое, то, что еще вчера существовало только в головах, а сегодня, еще неуверенно, в коде.

    Мы, в мыле и пене, устанавливаем версию. До показа полчаса. Приходит письмо от одного из наших продавцов: «Слушайте, я знаю, что наша система очень-очень интеллектуальная и анализирует все зависимости сети так, как человек никогда не сможет. И то, что она предсказывает точнее – я тоже понимаю. Но вот передо мной на экране список рекомендаций с прогнозом. И для всех рекомендаций прогноз отрицательный. Я, конечно, понимаю, что наша система что-то такое важное знает и поэтому предлагает их к применению. Но вы не могли бы и мне подсказать, что отвечать заказчику, если спросит?»

    Что на самом деле:
    Ну а что можно успеть за полчаса, если ты неожиданно понимаешь, что в систему прогноза вкрался баг, и теперь она выдает некорректные значения (читай – полную туфту). А ведь там не только значения, там ведь и графики прогноза рисуются. Баг непонятно где, за такой срок ничего не пофиксить. А увеличить шанс продажи продукта новому клиенту ой как хочется.

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

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

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

    2. Моя твоя не понимайт


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

    Что на самом деле:
    Если быть абсолютно честным, в данном случае это не баг, а факап планирования и коммуникации. Изначально система разрабатывалась из России, но на западный рынок. И все названия и сообщения так или иначе писались на «рунглише». Конечно, уровень грамотности был достаточным, но, наверное, не идеальным. Тем не менее, клиенты привыкли, не жаловались и нормально работали с системой уже несколько лет.

    А потом, в рамках улучшения продукта, мы наняли технического писателя в Нью-Йорке. И она с энтузиазмом взялась за дело. Но пока переводилась документация – все было неплохо. А потом кому-то из продавцов стала непонятна та или иная фраза из интерфейса, и пришло ЦУ – переделать все названия и пояснения так, чтобы было абсолютно корректно с точки зрения native-speaker'a.

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

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

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

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

    1. Как ёлочка чуть не испортила Рождество


    Как это выглядело:
    — Игорь, ты не поверишь, но наша ёлка порушила всю систему.
    — Не понял? Ты уверен, что это сообщение вообще для меня?
    — Напоминаю. Мы, в честь Рождества, решили клиентам сделать сюрприз. И поменяли иконку нашей программы на изображение ёлочки. Больше ничего в версии не менялось. Но теперь ни у одного из клиентов система не работает.
    — Как??? Как вообще такое возможно?

    Что на самом деле:
    Как оказалось, легко, если «правильно» спроектировать систему. У нас для вычисления есть как версия с визуализацией для пользователя, так и «невидимые» версии, предназначенные исключительно для обсчета в кластерном режиме – прогнозирование и генерация рекомендаций. т.е. служебный запуск, не требующий графического интерфейса.

    И вот, подменив плагин, мы его подложили ко всем версиям. В результате каждая версия инициируется в момент запуска и пытается отобразить ту самую елочку – ищет заголовок окна, title bar и прочее. А ОС и отвечает, извини, мол, не закреплено за тобой графического дисплея. И плагин выбрасывает необратимый exception, который мы не догадались перехватывать, – т.к. изначально подобной ситуации просто не предусматривалось.

    Выводы, опять же, достойны Капитана Очевидности – не надо ставить версию, не протестировав, насколько бы незначительны не казались изменения. Надо ловить исключения и обрабатывать их, как бы маловероятны они не были. Ну и, разумеется, не надо делать всё в последний момент.

    Я надеюсь, что все эти байки подняли вам настроение или дали пищу для размышлений. Если у вас есть любопытные или поучительные истории из собственного опыта – поделитесь, пожалуйста, в комментариях – интересно же.
    Maxifier Development
    0,00
    Компания
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 39

      +10
      Вот из-за возможных ситуаций 5ой байки мы всегда используем UTC время.
        +3
        >>И наша система снова по расписанию запустила вторую копию синхронизации и расчетов. А две параллельно работающие системы, одновременно обновляющие данные, являются неиссякаемым источником непредсказуемых ситуаций.

        Это ещё повезло, хоть можно понять что происходит… В обратном варианте, когда после 01:59 наступает сразу три ночи процессы просто не запустятся. Всё в порядке, в логах — красота и никаких ошибок, все готовы в 2:30 стартовать…
        Просто 2:30 не наступило в в этот день. ))
          +2
          И конечно lock-файл процесса тоже.
          или нет?
            0
            На прошлой работе на сервере было UTC без региональной привязки. На клиенте данные только адаптировались для отображения используя настройки клиентской ОС. А потому и lock-файлы серверов тоже шли с UTC.
            +1
            Подробностей не знаю, но мой коллега умудрился написать код, падающий при наступлении високосной секунды и кладущий весь веб-портал.
              +4
              не перевелись еще на Руси…
              +3
              Насчёт заблуждений о времени — хорошая статья
              habrahabr.ru/post/146109/
                0
                идемпотентсную синхронизацию лучше реализуйте)
                +8
                3. Верить в наше время нельзя никому. Мне — можно!
                Ой, да ладно, это ещё что… Вот помню у нас на общем съезде пользователей на одной из моих предыдущих работ пользователям показывали софтину, в которорй был реализован только интерфейс, да и то, по определённому пути: показывают — появляется окно с кучей переключателей и полей, значения которых заранее выписаны на бумажку докладчика — он вводит — потом жмёт на единственную реализованую кнопку — и вот оно очередное «захардкоженое» окно, ну и т.д… потом процесс рассчёта — какой-то прогресс бежит, который на самом деле нифига не делает, а просто создаёт видимость тяжёлых расчётов — и вот результат сами знаете какой… Всем очень понравилось :)
                  +1
                  Так это ж и есть — «представить прототип». Можно и не скрывать и не пытаться выдавать за нечто сверхъестественное обычно. Вполне разумная практика.
                    0
                    Народ, которому это впаривали был очень похож на на самого шефа, а значит не понимал такого слова, как «прототип»… К слову сказать эта софтина при мне так и не была доведена до релиза (я не был в той команде разработчиков, но новости оттуда приходили регулярно), хотя на фирме я проработал ещё года 3.
                    0
                    Ага. А подобное демо наших конкурентов теперь у меня сидит шилом в заднице. Одним из требований заказчика была отслежка изменений в конфигурации сети в режиме realtime. А realtime для сетей вовсе не означает сиюминутную реакцию (некоторые компании получают данные об изменении конфигурации сети дай бог раз в сутки и живут нормально). Наши конкуренты в своем демо естественно никаких изменений с сетью не производили, а тупо апдейтили базу данных. Поэтому изменения, яко бы отправленные в сеть, в демке появлялись фактически моментально. Проект выиграли мы, но теперь мой начальник требует с меня подобную скорость работы с уже реальной системой, мотивируя тем, что клиенту понравилось, и у них уже все договорено. Все мои аргументы, что требование realtime идет вразрез с остальными (консолидация и целостность данных, возможность ручного коммита изменений) тупо отметаются. Вот понравилось им как на демке!
                    +2
                    image
                    Поздравить пользователя с каким-нибудь событием — моё любимое занятие :) За которое я не раз по шапке получал :(. В последней раз в день рождения клиента, который запускал программу, вместо календаря отображался крокодил Гена. Не знаю, как мне с рук это сошло, но пользователи не жаловались :) Хотя функциональность программы ограничивалась только одним месяцем и одним днём в течении всего дня рождения.
                      0
                      Эх, а я за самостоятельность однажды по шапке получил. Драйвер для нашего оборудования серьезно переписал, и нужно было для его компиляции нормальной добавить всего один #define в .h файлы ядра. Без санкции начальства пошел к девушке, которая у нас сайтом занималась, и выложили вместе.

                      Потом получил нагоняй, а вся контора ржала над тем, что я дал ссылку, где можно скачать «исходники ядер линукса». Ну вот комично они воспринимали эти три слова.
                      +17
                      piccy.info/view3/5105958/b95d681046513665e09ea818b5dbe7ab/orig/
                      Час назад вот такое общение было у меня с ботов Приватбанка :)
                        0
                        smart-questions не читал, низачот.
                        +2
                        Всех с праздником, конечно, но я бы убил того, кто в российский ИТ-сленг ввёл слово «факап». Теперь его употребление кажется настолько модным, что пользоваться родными синонимами уже никто не хочет. А ведь русский язык богат словами, которые можно было бы с тем же успехом употребить в том же контексте: провал, облом, косяк, прокол…
                        Ей-богу, как будто любой англицизм делает фразу информативнее, доходчивее и остроумнее.
                          +3
                          То есть «баг» не беспокоит, а «факап» — нервирует? :-)

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

                          Это существительное — snafu — бардак, путаница, неразбериха, хаос. Можно также использовать как глагол. Возникло от аббревиатуры — Situation Normal — All Fucked Up. Мои английские коллеги очень радуются, когда его к месту используешь.
                            +3
                            «Баг» — уже исторически сложившийся термин, у нас для него никогда не было родного аналога, ибо русскоязычная культура программирования начала формироваться уже тогда, когда основные термины в индустрии были определены (неофит бы сказал "закойнены").
                            В то же время косячить на Руси умели всегда, и слов для обозначения разных проявлений бардака у нас отродясь было море. Заменять их на англицизм нет никакого смысла, разве что, как вы упомянули, на зарубежных коллег впечатление производить. Зачем при этом и общение на родном языке коверкать — остаётся для меня загадкой.
                              0
                              Русский язык — живой, течет и меняется все время. Сейчас у нас тараканами называют терракоины, да и зачем нам такой язык, что каждый раз, полезая в код, нужно было бы искать там что-то противное — фу. А мат — да, нервирует.
                                +1
                                Терминология штука сложная. С момента, как леди Лавлейс составила первую программу, до того, как нашли мотылька в реле, прошло почти сто лет. Т.е. сто лет программы были, ошибки в них тоже, а термина — не было.

                                Просто, честно говоря, для название это звучало красивее, чем что-либо типа «Невероятные фиаско!» или «Набор косяков и граблей»

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

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

                                  А вот насколько я знаю со слов сестры, ездившей по обмену в Штаты, обычные англоязычники — не молодёжь из чёрных районов, не бывшие и нынешние хиппи и не айтишники-матерюги — к словам с fuck относятся прямо-таки очень чутко. Описывала такой случай, что они в смешанной группе из наших и американских подростков играли в какую-то активную игру типа фрисби, и довелось сестре облажаться и громко так по привычке крикнуть «фаааак». Так америкосы на неё обернулись с настороженно-непонимающими лицами. Так что потом ей более опытные товарищи посоветовали материться по-русски =).

                                  И да, «невероятные фиаско» — это же феноменально круто звучит. Не хуже «былинных отказов» ни разу =).
                                +4
                                Нет, не поймите меня неправильно: я в целом нормально отношусь к заимствованиям в ИТ, это уже своеобразная профессиональная болезнь, вытекающая из постоянного чтения документации на английском и, как следствие, невозможности подобрать адекватный аналог увиденным словам.
                                Но есть же предел заимствованиям. Например, на одной из моих прошлых работ группа товарищей любила говорить «аппликация» вместо «приложение». И вот это совсем клинический случай.
                                  +6
                                  Вот за «аппликацию» просто убивать хочется. Мало того, что заимствование, так еще и не прямое, а исковерканное.
                                    +1
                                    А «приложение» чем лучше? Приложение обычно прикладывают, а не запускают или выполняют.
                                      0
                                      «Приложение» лучше тем, что в русском языке есть слово «прикладной», как в «прикладное программирование» или «прикладная математика».
                                        +1
                                        А так и склейки, и развертки есть в математике — что хочешь. Форма с прилеплеными на неё в гуях кнопками — отличная детсадовская аппликация:)
                                          0
                                          Приложение решает прикладную задачу. Какую задачу решает аппликация?
                                          И ведь речь идёт не о термине склейка/развёртка, речь идёт о термине «аппликация». Тут уже никакие аналогии не притянуть.
                                            0
                                            Аппликация решает прикладную задачу. Какую задачу решает приложение?
                                            И ведь речь идёт не о термине программирование/математика, речь идет о термине «приложение». Тут уже никакие аналогии не притянуть.
                                              0
                                              «Приложение» — «прикладной»
                                              «аппликация» -?
                                              К чему вы меня передразниваете?
                                                0
                                                Это не конкурс на выдумывание прилагательных. Смысл русского слова «приложение» очевиден и неуместен в контексте исполняемого двоичного файла. Это слово подошло бы лишь в том случае, когда вы покупаете айфон и к нему прилагается инструкция, несколько программ, зарядка, упаковка и ещё что-нибудь. Тогда всё это будет приложениями к айфону. Желая понятно выразиться, я бы не стал говорить, что на работе занимаюсь отладкой приложений или типа того. Т.е. это слово ничем не лучше аппликации. Разве не видно, что в слове «приложение» подходящего смысла ещё меньше чем в слове «аппликация»?
                                                А передразниваю для того, чтобы всем показать, что вы пытаетесь играть выражениями с целью манипуляций.
                                                  0
                                                  Это не конкурс на выдумывание прилагательных, вы правы. Это конкурс на осознавание смысловой связи между однокоренными словами.

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

                                                  Если вы как раз из тех людей, кто использует слово «аппликация», и я как-то задел ваше чувство прекрасного, то сожалею что доставил вам эмоциональный дискомфорт. Но, как вы могли заметить по наличию иных комментариев на сию тему и их оценке, в целом люди видят больше смысла в слове «приложение». А так как вопрос в конечном счёте субъективный, то единой правды тут, видимо, не найдётся.
                                                    0
                                                    Я не использую оба этих слова, потому что они неуместны, когда надо говорить слово «программа». Для меня не очевидно, что из-за того, что есть прикладная математика, надо использовать слово «приложение» для обозначения программ. Как будто тут раньше никого не тошнило от «приложения», как сейчас от «аппликации»…
                                                      0
                                                      Не любая программа — приложение, это уточняющий термин, означающий именно прикладной характер программы. Точно так же, как бинарник — не всегда исполняемый файл, а «исполняемый файл» — не замена слову «программа» и слову «приложение».

                                                      Как пример, приложение может комплектоваться несколькими исполняемыми файлами и библиотеками, и те и другие являются бинарниками (или не являются, если это — некомпилированные «скрипты»), а приложение выделяется как класс программ, наряду с плагинами, драйверами, демонами и ядром операционной системы.
                                                        0
                                                        Тоже самое могу написать и про аппликацию:) Смысл корня -лож- с приставкой при- не раскрыт. Слово «комплект» ближе по смыслу к тому, что вы описали, т.к. речь не идет о том, что набор программ (файлов) к чему-то приложили.

                                                        Терминалогия так быстро меняется, что через каких-то 5 лет теже самые люди начнут бить в морду за приложение и подбирать прилагательные к аппликации. Эта терминологическая избирательность — показушная.
                                              0
                                              По всей видимости аппликативную :-)

                                              Бороться за чистоту языка — неблагодарное занятие, поскольку за всю историю было столько заимствований, перезаимствований и искажений, что восстановление праязыка задача того же уровня, что и создание единой теории всего :)

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

                                              Или вот «информация», «технология» — «образование» и «искусствознание». Но скажи кому, что работаешь в области образовательных искусствознаний, — дашь много пищи для размышлений )
                                  +11
                                  Вспоминается чудесная история в одной отечественной игровой компании. Это к слову о повторном использовании кода.

                                  «ФАУ-2 — это такая немецкая мегапетарда. Германия ими под конец войны докучала Великобритании, но без особого успеха. Вундерваффе страдало от кучи детских болезней и хорошо если могло оторваться от земли. Зачастую взрывалась прямо на стартовом столе, а уж коли отрывалось да еще и летело в сторону Англии, то уж вообще успех. Горючее, между прочим, 3,5 тонны этилового спирта :)

                                  Ну, сделали и мы в Блицкриге эту самую ракету. Как и немцы, сделали ее уже ближе к концу проекта и соорудили на базе объекта „самолет“. Но программисты несколько схалтурили и не пооткручивали у бывшего самолета подозрительную для баллистической ракеты функциональность. Оказалость, что если во время полета к цели начинал идти дождь или снег, то во-первых ракета говорила человеческим голосом „Fliege zuruck“(нем. лечу назад), а во-вторых разворачивалась и летела обратно на базу. Фигли там, погода то нелетная.»
                                    +1
                                    Пока дочитал до конца уже забыл что речь об игре. Странная ситуация обрисовалась в голове.
                                    +1
                                    Хех. История из старого, но личного опыта. Про важность полной эмуляции окружения и релиз-нотов :)

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

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

                                    Но количество жалоб не уменьшилось, помалу начали подключаться другие торговые точки — и конфигурацию пришлось воспроизводить с точностью до железной. И вот тут-то и обнаружилось диво дивное. Оказывается, выстрелило сочетание двух факторов: определенных (хоть и довольно распространенных) матричных принтеров и… Internet Explorer 8. Из последнего, как выяснилось в ходе перелопачивания кучи техблогов (в релиз-нотах об этом, естественно, умолчали) убрали «печать с неквадратным DPI» — т.е. если 300dpi — это и по горизонтали, и по вертикали. А у этих матричных принтеров таких настроек DPI не было в принципе — было что-то в стиле 120х80, 200х120 и т.д., что и вызывало пресловутое «наползание» и «сжатие».

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое