Трудновылавливаемая ошибка
28 декабря 2010
Вчера в одном из расширений Yii была найдена ошибка в документации, которая напомнила мне об одном из немногих собеседований, которые я проходил в последнее время.
Длилось собеседование несколько дней. В один из дней надо было показать умение писать код на месте, сидя в самом центре офиса компании.
Получив рабочее приложение и, немного попилив код на предмет красивости и оттестировав результат, уставший, но вполне довольный, я отправился на кухню пить кофе… а, придя обратно, обнаружил, что код уже рассмотрели и готовы задавать вопросы. После нескольких общих вопросов было предложено запустить приложение, что и было сделано.
Приложение совершенно внезапно не заработало, не отдавая никаких ошибок. Попытки посмотреть локальную историю IDE, провалившиеся, видно, из-за усталости, ничего, кроме вопроса «вы действительно думаете, что мы такие нехорошие и поменяли ваш код» не дали. На вопрос я, кстати, честно ответил «да».
После нескольких минут тестов было понятно, что не работает клиентская часть на JavaScript. После пяти минут беганья дебаггером я убедился, что код выглядит точно таким же, как я его оставил, уйдя пить кофе, но работает как-то не так: document.getElementById
не возвращал элемента, который явно был на месте. Спустя несколько минут я оценил коварство правки, которая была внесена в код. Одна из латинских «цэ» была заменена ну русскую «эс».
Комментарии RSS по email OK
У меня IDE по-разному отображает кириллицу и латиницу, благодаря чему, такие баги сразу бросаются в глаза.
да сочувствую
to Ti: А какая IDE?
Porcelanosa, скорее важно какой шрифт. Используется стандартный в unix "Monospace". Русские буквы в нем с засечками, чуть меньше по высоте и тоньше, а английские без засечек. И это не единственный шрифт с разным отображением латиницы и кириллицы ;)
А подскажите как вы выловили эту ошибку? (не, я понимаю что когда элемент есть, а id нету, то...)
@hexes Ошибка про которую говорит SamDark, если я правильно понимаю, была найдена мной в документации к расширению Yii ShoppingCart Найдена она была после 2х с лишним часов плясок с бубнами и, извиняюсь за выражение, матюгами. Чисто случайно - наитие, когда я уже совсем отчаялась запустить код - морально помогали товарищи с [email protected] , за что им отдельное большое человеческое спасибо ;-)
Ti У меня стоит Monospaced (по умолчанию в Нетбинсе) - _С _неотличимы. Кстати, copy-paste зло! :-(
Ничего себе... тут только блокировать машину остается)
Lint, lint, lint!
На мой взгляд очень странное собеседование. Да, я понимаю, про «умение соображать в трудных ситуациях» и пр. Но чисто из далека, напоминает сцены из американских молодёжных комедий про колледж, где для вступления в некий «элитный» клуб, новобрацев заставляют танцевать голыми на лужайках, выкрикивая латинский алфавит в обратном порядке :_(
В свое время, когда я увлекался парашютным спортом, мне при укладке купола вложили в него кучу грузов (мешочки с песком для придавливания уложенного) пока я ходил "перекурить".
Вывод какой? Сделал дело-гуляй смело, ну и, конечно, блокируйте экран, если уж совсем приспичило.
Ох, я бы, наверное, не догадался о таком. Но выловить можно было бы как-нибудь типа:
Porcelanosa, вот как это выглядит в том же gedit:
У нас в офисе тоже был прикол как-то. Окончил я очередной проект, начальство ждет что я залью его и сдадим проект. Залил я проект. А проект недоступен. Ну думаем доменое имя до 3-х суток регистрируется. Прошло 3 дня отклика никакого, заказчик уже дымом дышет. Что делать ? Звоним хостеру, а тот говорит, здрасьте, а ваш домен забанен, мол вы не прислали подтверждающие документы. А че ж вы нам не сказали ? Ну мы мол послали уведомление(странно как-то они посылали). А по поводу опечаток - раз 30, если не больше, сталкивался с подобной проблемой. Еще у некоторых прог(типа файрфокса) тормоза с переключением раскладки бывают. Так что от этого никто не застрахован.
Да уж... Такие ошибки как раз отнимают больше всего времени. Кстати собеседование более чем странное. )) А документацией давали пользоваться, или все на память??
Это был всего-лишь один из дней собеседования. Документацией пользоваться давали. Смысл, наверное, был проверить, что я могу успеть за день, если прижмёт.
Всего их было четыре: помимо дня написания кода было 1.5 традиционных дня с вопросами от простых до «дано вот такое приложение, как, имея три сервера наилучшим способом сбалансировать нагрузку» и пол дня я работы интерпретатором какого-то вымышленного языка, где надо было оценить сложность алгоритма, рассказать, что этот самый алгоритм делает, назвать и оптимизировать его.
Sam Что же это за работа то такая?
Должность называлась «Senior Java-PHP developer / Teamlead».
@Sam а что сравнение с локальной историей ИДЕ не показало это отличие в один символ?
Должно было показать, но, видимо, я его просмотрел.
Ммм.. интересно сколько з/п обещают? :)
Недостаточно.
Странное сочетание Java-PHP ... Ну в любом случае тимлид это серьезный уровень.
Ну почему странное? Если у компании есть и те и другие проекты, то ничего особо странного в этом нет.
Вспоминается старый-старый анекдот: ”Если бы водителей нанимали как программистов, то описание вакансии было бы примерно такое:
Вакансия: водитель.Требования: профессиональные навыки в управлении легковыми и грузовыми автомобилями, троллейбусами, трамваями, поездами метрополитена и фуникулёра, экскаваторами и бульдозерами, спецмашинами на гусеничном ходу, боевыми машинами пехоты и современными легкими/средними танками, находящимися на вооружении стран СНГ и НАТО. Навыки раллийного и экстремального вождения обязательны. Опыт управления болидами “Формулы 1″ – приветствуется. Знания и опыт ремонта поршневых и роторных двигателей, автоматических и ручных трансмиссий, систем зажигания, бортовых компьютеров, антиблокировочных систем, навигационных систем и автомобильных аудиосистем ведущих производителей. Опыт проведения кузовных и окрасочных работ – приветствуется. Претенденты должны иметь сертификаты Mercedes, BMW, General Motors, а также справки об участии в крупных международных соревнованиях не более, чем двухлетней давности.Зарплата: определяется по результатам собеседования.”
Все-таки довольно разный опыт.
хахах))) 100% =)
Прикол)) Сам однажды искал такую ошибку, потом открыл код в нормальном редакторе и сразу увидел. С тех пор я использую ide которая видит символы разных языков.
Жесть :) Я в принципе не люблю таких жёстких фильтров при приёме на работу - для этого есть испытательный срок. А просто так тратить более 3 часов что-бы доказать что я что-то умею.. ну не то что-бы неуважение.. а неадекватность. Хотя зависит конечно от зарплаты и количество претендентов. Хотя у нас всегда не хватает программистов.