четверг, 6 марта 2014 г.

Строчка в день

Привет, фронтенд-разработчикам и не только!

Сегодня нашелся баг на одном старом проекте: при выборе одного из пунктов опросника на сайте, открытом в браузере Safari, данные не сохранялись по ajax сразу, а только после следующего клика.

Рывок первый. Ubuntu. Эта ОС стоит на моем рабочем компе. А Apple не удосужились разработать Safari под Linux, и тут у меня начались проблемы.

Рывок второй. Windows. Сначала я вспомнил о VirtualBox, на нем есть Windows, в которую можно впихнуть старую доморощенную версию Сафари (Эппл и под Винду не обновляет его уже). Пытаюсь запустить - а виртуалка ругается на неродное ядро. Пару месяцев назад я просто экспериментировал на 12.04 с ядром от 13.04, завелось хорошо, так и оставил. А нынче вышло родное обновление ядра, пришлось откатиться. При откате слетел Skype. Поставил заново. Кстати, Skype не рекомендую ставить с офсайта - недавно сотрудник по неосторожности при этом действии полностью убил всю систему. Майкрософт такой Майкрософт - первый продукт под Линукс, и такие последствия. В общем, заодно обновил и сам ВиртуалБокс, запустил Винду, поставил туда Сафари. А он даже Google Maps не поддерживает. Не просто на моем сайте ломается, а даже на сайте гугла карты не работают, ломается при первой JS ошибке и дальше не идет. Мучился-мучился, думал, есть переключатель какой-то, чтоб не останавливались сценарии, не нашел. Выпилил бы карты со страницы - без них работает, но исходная проблема тогда уже не так воспроизводится. Да еще пока разобрался, что кукисы надо включать. Нет, ну надо же догадаться: в браузере по умолчанию cookies отключенными сделать. Чем эппл думает? Для кого создавался этот браузер? Для людей без интернета?

Рывок третий. Mac OS. Пришлось, в общем, искать полноценную виртуалку Мака. Благо, на Рутрекере уже есть всё необходимое: подробная инструкция, крякнутый VMware, MacOS анлокер к нему, и сразу образ настроенной виртуалки самой системы. Были времена, когда приходилось всё делать самому. А сейчас - скачал 8 Гб с нужных ресурсов, запустил в нужной последовательности - и у тебя полноценный Мак в Линуксе.

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

Рывок пятый. Rollback. Да, закончилось всё командой "git checkout .", то есть отменил все изменения за день. После этого дописал одну новую строчку. Еще одна глобальная проверка, ничего ли не сломалось. Вуа-ля. Коммит, пуш, заказчик доволен, я свободен... После этого не забыть удалить взломанное ПО и можно быть свободным. Хотя, была бы возможность, давно бы купил Mac OS для виртуалки, но нет.

Подумать только: целый день для того, чтоб тот маленький процент посетителей, который использует сайт на Сафари в Макосе, мог выбрать нужный пункт из более двухсот и после этого спокойно покинуть страницу через Ctrl+F4, без дополнительного клика, данные будут сохранены вовремя.

Итого, скорость моей работы: 1 строчка кода в день. А в твиттере люди твитят, что фигачат по 1000 строк в день. Вопрос первый: каааак??? Вопрос второй: зачем? Потом же фиксить проблемно. Пиши код грамотно, экономь строчки, будь-то ты собираешься его распечатывать на струйном принтере и сдавать преподу, как я когда-то в универе.

Комментариев нет: