<rmcreative>

RSS

Трудновылавливаемая ошибка

28 декабря 2010

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

Длилось собеседование несколько дней. В один из дней надо было показать умение писать код на месте, сидя в самом центре офиса компании.

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

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

После нескольких минут тестов было понятно, что не работает клиентская часть на JavaScript. После пяти минут беганья дебаггером я убедился, что код выглядит точно таким же, как я его оставил, уйдя пить кофе, но работает как-то не так: document.getElementById не возвращал элемента, который явно был на месте. Спустя несколько минут я оценил коварство правки, которая была внесена в код. Одна из латинских «цэ» была заменена ну русскую «эс».

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

  1. №3625
    Ti
    Ti 28 дек. 2010 г., 6:28:34

    У меня IDE по-разному отображает кириллицу и латиницу, благодаря чему, такие баги сразу бросаются в глаза.

  2. №3626
    Porcelanosa
    Porcelanosa 28 дек. 2010 г., 6:42:54

    да сочувствую

    to Ti: А какая IDE?

  3. №3627
    Ti
    Ti 28 дек. 2010 г., 6:52:55

    Porcelanosa, скорее важно какой шрифт. Используется стандартный в unix "Monospace". Русские буквы в нем с засечками, чуть меньше по высоте и тоньше, а английские без засечек. И это не единственный шрифт с разным отображением латиницы и кириллицы ;)

  4. №3628
    hexes
    hexes 28 дек. 2010 г., 8:10:15

    А подскажите как вы выловили эту ошибку? (не, я понимаю что когда элемент есть, а id нету, то...)

  5. №3629
    Porcelanosa
    Porcelanosa 28 дек. 2010 г., 8:30:00

    @hexes Ошибка про которую говорит SamDark, если я правильно понимаю, была найдена мной в документации к расширению Yii ShoppingCart Найдена она была после 2х с лишним часов плясок с бубнами и, извиняюсь за выражение, матюгами. Чисто случайно - наитие, когда я уже совсем отчаялась запустить код - морально помогали товарищи с yii@conference.jabber.ru , за что им отдельное большое человеческое спасибо ;-)

  6. №3630
    Porcelanosa
    Porcelanosa 28 дек. 2010 г., 8:35:20

    Ti У меня стоит Monospaced (по умолчанию в Нетбинсе) - _С _неотличимы. Кстати, copy-paste зло! :-(

  7. №3631
    Mark
    Mark 28 дек. 2010 г., 10:23:01

    Ничего себе... тут только блокировать машину остается)

  8. №3632
    Vii
    Vii 28 дек. 2010 г., 10:24:22

    Lint, lint, lint!

    На мой взгляд очень странное собеседование. Да, я понимаю, про «умение соображать в трудных ситуациях» и пр. Но чисто из далека, напоминает сцены из американских молодёжных комедий про колледж, где для вступления в некий «элитный» клуб, новобрацев заставляют танцевать голыми на лужайках, выкрикивая латинский алфавит в обратном порядке :_(

  9. №3633
    mihdan
    mihdan 28 дек. 2010 г., 11:16:51

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

    Вывод какой? Сделал дело-гуляй смело, ну и, конечно, блокируйте экран, если уж совсем приспичило.

  10. №3634
    Rulexec
    Rulexec 28 дек. 2010 г., 11:18:56

    Ох, я бы, наверное, не догадался о таком. Но выловить можно было бы как-нибудь типа:

    >>> text = 'many-many english wоrds with one russian letter'
    >>> words = text.split(' ')
    >>> for word in words:
    ...     for letter in word:
    ...             if ord(letter) >= 160 and ord(letter) <= 239:
    ...                     print 'in word "%(word)s" russian letter\n' % {'word': word}
    ...
    in word "wоrds" russian letter
  11. №3635
    Ti
    Ti 28 дек. 2010 г., 11:29:26

    Porcelanosa, вот как это выглядит в том же gedit: font.gif

  12. №3636
    Ekstazi
    Ekstazi 28 дек. 2010 г., 12:59:37

    У нас в офисе тоже был прикол как-то. Окончил я очередной проект, начальство ждет что я залью его и сдадим проект. Залил я проект. А проект недоступен. Ну думаем доменое имя до 3-х суток регистрируется. Прошло 3 дня отклика никакого, заказчик уже дымом дышет. Что делать ? Звоним хостеру, а тот говорит, здрасьте, а ваш домен забанен, мол вы не прислали подтверждающие документы. А че ж вы нам не сказали ? Ну мы мол послали уведомление(странно как-то они посылали). А по поводу опечаток - раз 30, если не больше, сталкивался с подобной проблемой. Еще у некоторых прог(типа файрфокса) тормоза с переключением раскладки бывают. Так что от этого никто не застрахован.

  13. №3637
    Андрей
    Андрей 28 дек. 2010 г., 15:32:48

    Да уж... Такие ошибки как раз отнимают больше всего времени. Кстати собеседование более чем странное. )) А документацией давали пользоваться, или все на память??

  14. №3638
    Sam
    Sam 28 дек. 2010 г., 17:30:21

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

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

  15. №3639
    Porcelanosa
    Porcelanosa 28 дек. 2010 г., 22:19:31

    Sam Что же это за работа то такая?

  16. №3640
    Sam
    Sam 28 дек. 2010 г., 22:28:46

    Должность называлась «Senior Java-PHP developer / Teamlead».

  17. №3641
    Tokolist
    Tokolist 28 дек. 2010 г., 23:20:35

    @Sam а что сравнение с локальной историей ИДЕ не показало это отличие в один символ?

  18. №3642
    Sam
    Sam 28 дек. 2010 г., 23:35:07

    Должно было показать, но, видимо, я его просмотрел.

  19. №3643
    Миша
    Миша 29 дек. 2010 г., 2:47:18

    Ммм.. интересно сколько з/п обещают? :)

  20. №3644
    Sam
    Sam 29 дек. 2010 г., 3:22:08

    Недостаточно.

  21. №3645
    Porcelanosa
    Porcelanosa 29 дек. 2010 г., 3:42:25

    Странное сочетание Java-PHP ... Ну в любом случае тимлид это серьезный уровень.

  22. №3646
    Sam
    Sam 29 дек. 2010 г., 4:22:41

    Ну почему странное? Если у компании есть и те и другие проекты, то ничего особо странного в этом нет.

  23. №3647
    Porcelanosa
    Porcelanosa 29 дек. 2010 г., 5:57:45

    Вспоминается старый-старый анекдот: ”Если бы водителей нанимали как программистов, то описание вакансии было бы примерно такое:

    Вакансия: водитель.Требования: профессиональные навыки в управлении легковыми и грузовыми автомобилями, троллейбусами, трамваями, поездами метрополитена и фуникулёра, экскаваторами и бульдозерами, спецмашинами на гусеничном ходу, боевыми машинами пехоты и современными легкими/средними танками, находящимися на вооружении стран СНГ и НАТО. Навыки раллийного и экстремального вождения обязательны. Опыт управления болидами “Формулы 1″ – приветствуется. Знания и опыт ремонта поршневых и роторных двигателей, автоматических и ручных трансмиссий, систем зажигания, бортовых компьютеров, антиблокировочных систем, навигационных систем и автомобильных аудиосистем ведущих производителей. Опыт проведения кузовных и окрасочных работ – приветствуется. Претенденты должны иметь сертификаты Mercedes, BMW, General Motors, а также справки об участии в крупных международных соревнованиях не более, чем двухлетней давности.Зарплата: определяется по результатам собеседования.”

    Все-таки довольно разный опыт.

  24. №3648
    Миша
    Миша 29 дек. 2010 г., 13:02:58

    хахах))) 100% =)

  25. №3663
    Александр
    Александр 03 янв. 2011 г., 8:30:44

    Прикол)) Сам однажды искал такую ошибку, потом открыл код в нормальном редакторе и сразу увидел. С тех пор я использую ide которая видит символы разных языков.

  26. №3680
    Артём Курапов
    Артём Курапов 09 янв. 2011 г., 0:23:27

    Жесть :) Я в принципе не люблю таких жёстких фильтров при приёме на работу - для этого есть испытательный срок. А просто так тратить более 3 часов что-бы доказать что я что-то умею.. ну не то что-бы неуважение.. а неадекватность. Хотя зависит конечно от зарплаты и количество претендентов. Хотя у нас всегда не хватает программистов.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.