image

Посреди долгой рутины веб-разработки мне иногда встречаются необычные ошибки. Вот, вроде, всё хорошо — и так работает, и сяк работает. А по-третьему — не работает, хотя на первый взгляд должно. Я просто обожаю процесс поиска причин таких ошибок и хотел бы поделиться некоторыми из таких историй. Ответы (что на самом деле было не так) опубликую через пару дней.

1. Загадочный слайдер


Есть два сайта на поддержке (разработаны не мной), интернет-магазины. Код полностью идентичен — как фронтенд, так и бэкенд (один скопирован с другого после завершения разработки). На главной у обоих сайтов, помимо прочего, обычный javascript'овый слайдер с товарами.

Однажды заказчик обратился и сообщил, что один из слайдеров «сломался». Перестал крутиться (автоматически и при нажатии на кнопки). Когда именно он сломался, сказать не может, но код явно не модифицировался уже давно. И, что главное — другой слайдер на другом сайте работает как часы.

Как я уже говорил, код сайтов идентичен, единственные различия — хостинг-провайдер, домен, название, и также — разный ассортимент товаров (пересекается только процентов на 20).

В чём может быть причина поломки?

Важная подсказка: оба сайта занимаются парфюмерией.

2. Загадочная корзина


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

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

В консоли ошибок JS нет, единственное — не может найти файл какой-то картинки-иконки из шаблона сайта:

GET http:// домен_cайта /img/1.gif 404 (Not Found)

Но ошибка возникает на обоих сайтах и домен везде указан верный (свой). Да и какое это может иметь отношение?

3. Загадочная гугло-карта


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

Вводим Лондон — получаем точку в Лондоне, вводим Париж — тоже на первый взгляд всё выглядит верно. Но ни один другой город не работает правильно — точки оказываются посреди совсем другой страны. США, РФ, Азиатские страны — всё не туда.

Сначала подумал, что возможно оно таки находит по указанным координатам мелкие города-тёзки, но нет, посмотрел по карте — и близко таких нет. А некоторые точки так и вообще указаны где-то в море.

Посмотрел код, исключил возможность хардкода координат городов. Сколько бы ни тестил, кажется, что ничего не работает, но Лондон-то находит стабильно!



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


Ответы:


Задача 1
Samouvazhektra
про слайдер с парфюмом, подозреваю что могло вызывать проблему какое-нибудь французское название с апострофом
andyudol
В котором вместо апострофа напечатана одиночная кавычка.


В точку!

Задача 2
Оказывается, ненайденная картинка таки может влиять. На одном из хостингов было настроено по умолчанию, чтобы выдавалась стандартная страница 404, на другом — развесистая, со счётчиками и картинками. К кнопке корзины обработчик подключался на document.ready, поэтому на одном из сайтов он не всегда успевал подключаться — ждал, пока полностью догрузится страница.
Решил просто добавлением прозрачной однопиксельной картинки с нужным именем.

Задача 3
andrew72ru
На карте перепутаны широта и долгота
BratSin
… Скорее, что-то с долготой.…


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

Комментарии (20)


  1. firuz1844
    14.12.2017 18:55
    +1

    Так, с ответами, «через пару дней», и публиковали бы статью! Или вы предлагаете читателям гаданием заняться? :))


    1. i86com Автор
      14.12.2017 19:51

      Видимо, непонятно написал, но да, именно это я и предлагаю.

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


  1. andrew72ru
    14.12.2017 19:08

    На карте перепутаны широта и долгота


    1. windgrace
      15.12.2017 12:54

      Тогда Лондон и Париж точно не подходят — у них долгота гораздо меньше широты


    1. BratSin
      15.12.2017 15:46

      Возможно. Но тогда не объясняет Лондона и Парижа. Скорее, что-то с долготой. Лондон в десятичных градусах: широта 51.5085300°, долгота -0.1257400°. Парижа в десятичных градусах: широта 48.8534100°, долгота 2.3488000°. Долгота у обоих около ноля. Например, если в реализации долгота берется по абсолютному значению, это бы объяснило проблемы с городами с США. Но не объясняет проблемы с городами в РФ, для них для всех долгота и широта положительные.


  1. webdevium
    14.12.2017 19:25

    Вангуют все!


  1. KYuri
    14.12.2017 19:25

    «Дорогие учёные. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит»


  1. Samouvazhektra
    14.12.2017 20:09
    +1

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


    1. andyudol
      15.12.2017 12:15

      В котором вместо апострофа напечатана одиночная кавычка.


  1. sbnur
    14.12.2017 20:27

    Загадывающему для разгадки
    В незапамятные времена MSDOS


    1. Мой молодой сотрудник задал вопрос — почему после записи в файл он (файл) оказался пустым?
    2. Другой молодой сотрудник задал другой вопрос — почему вчера программа нормально делала вывод на печать, а сегодня не выводит? (в программу изменений не вносилось)


    1. i86com Автор
      14.12.2017 20:41

      1. Readonly. Либо место закончилось.
      2. Бумага закончилась. Либо принтер сломался / отключился.


      1. TyVik
        14.12.2017 20:49

        1. А ещё могут inode закончится.
        2. Это вы про Open Office, который не печатает по вторникам?


      1. sbnur
        14.12.2017 21:37

        1. Нет — сообщений об ошибке не было
        2. Нет — сообщений об ошибке не было — а бумагу — точнее ее отсутствие было бы видно


        1. i86com Автор
          14.12.2017 22:07

          1. Может, не закрыл файл после записи или он был где-то ещё открыт. С MS-DOS не работал, тонкостей не знаю. Или предполагается, что в других условиях всё работало?

          2. А данные на вывод подавались те же самые? И другие программы с этим принтером работали? А то так-то и тонер мог закончится, в старых моделях этого могло не быть индикатора.


          1. sbnur
            15.12.2017 04:13

            1. Ответ верен — файл нвдо закрывать
            2. Данные былы те же самые — тонер так же не при чем — но приближение к причине было сделано


            1. i86com Автор
              15.12.2017 06:06

              Тогда предположу, что принтер был занят другой программой.


              1. sbnur
                15.12.2017 07:37

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


                1. i86com Автор
                  15.12.2017 16:43

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


                  1. sbnur
                    15.12.2017 16:48

                    Вам было сложнее — а тот молодой сотрудник знал про два — даже три принтера — но нужная мысль ему в голову не пришла


  1. TyVik
    14.12.2017 20:47