Сеятель РДВ

Всегда у меня так — очень хочется взять все готовое, взболтать не смешивая и продать клиенту «за дорого». Чтобы как у всех и без проблем. Но подводит, судя по всему, генетический перфекционизм — обязательно стоит сделать шаг в сторону от очередного «Best practice guide», как натыкаюсь на какие-нибудь очередные грабли, с которыми мужественно начинаю бороться… В последнее время такими граблями становится Drupal и все что с ним связано. С одной стороны — супер-расширяемая (за счет чего — тяжеловесная) и гибкая система, которая должна обеспечивать спасение котят целыми прайдами.

С другой — вся эта гибкость обеспечивается как раз только в ядре, над каждым элементом которого думают месяцами и годами, а в модулях — в которых и состоит вся сила Друпала — предполагается зачастую один единственный сценарий работы, а чуть стоит от него отойти хотя бы на шаг (даже на полшага), то оказывается что либо это совсем невозможно, либо глючит все не по-детски. Причем это касается не только мелких и «самопальных», но и таких «столпов» друпаловского сайтостроительства, как приснопамятный Views. Кто хакал Views, тот меня поймет… По написанию для него хендлеров и т.п. и то толковой документации за столько лет не родили… А потом еще, значится, кто-то рассказывает, как сильно ООП упрощает жизнь… Тьфу.

В общем, у меня почти каждая серьезная работа с Друпалом выливается в суровое ковыряние внутренностей то Views, то вот теперь Feeds, то каких-нибудь субмодулей CCK с целью исправления багов и обеспечения их нормальной работы c последующим отправлением закрывающих эти баги патчей. За предыдущие сутки — штук пять чужих багов закрыл. Больше всего мозг взорвали, конечно же, те же Views — не зря же про них вспомнил… Но была и адаптация одного JavaScript’а под Оперу, и верстки одного упрямого разработчика («Я не буду поддерживать браузер 10-летней давности!») под IE6.

Но самое главное, что я не понимаю логики тех, кто отписывается о багах, но не выкладывает патчи. Человек что, сдает заказчику работу с косяками? Или тупо забивает и не делает этот функционал? Это как вообще? Вот я представляю — звоню я завтра своему заказчику и объясняю, что вот такой-то блок новостей по федеральным округам мы выводим не сможем, потому что соответствующий субмодуль Views глючит и выкидывает ошибки SQL, я оставил репорт с багтрекере, но когда разработчик среагирует — неизвестно… Заказчик после этого пошлет меня на хер и будет совершенно прав — свои деньги он платит за результат, а не за то, чтобы я в багтрекер чей-то писал. А народ именно так и делает, а потом еще через полгода спрашивает — ну как, мол, ситуация там — исправили ошибку или нет? Что они эти полгода делали? И неужели им эта проблема еще актуальна? И вот я выкладываю патч для исправления косяка, который тянется с 2009 года (!!!), они его применяют и что говорят заказчику? «Наконец выложили патч по багрепорту, который я оставлял 2 года назад!» Бррр… Наверное, еще и деньги за свою работу просят.

Короче, в шоке я от основной массы девелоперов. Или я уже слишком стар, а они не девелоперы, а просто эникейщики, которые вышли на новый уровень? Раньше эникейщик устанавливал софт через виндовый Wizard и был крут по сравнению с пользователем. А теперь эникейщик делает сайты и тоже крут.

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

Internet Explorer убивает

В буквальном смысле — тем что тратит время жизни тем, что вынуждает бороться с его багами.

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

.ui-tabs-hide {
left:-15000px;
position:absolute;
top:-15000px;
visibility:hidden;
}

Потом посредством JavaScript этот класс с блока убирается, но содержащиеся внутри div’а таблицы остаются невидимыми (иногда частично — границы есть, а содержимого — нет, что уж совсем футуристично).

Описание проблемы с примерами дается тут — http://wiki.orbeon.com/forms/doc/contributor-guide/ie-bugs (пункты 2.1.4, 2.1.5). Сам столкнулся с этим багом при работе с модулем Tabs для Drupal, в котором все реализовано посредством JQuery UI Tabs. По приведенной ссылке предлагается вносить изменения в код JavaScript, но мне лезть во внутренности JQuery не хотелось (возможно, проблема решения в новых версиях JQuery UI Tabs, т.к. в комплекте модуля идет 1.6, но обновляться не хотелось, так как могли вылезти какие-нибудь новые грабли, связанные с несовместимостями самого Drupal’а, а мне срочно надо было решить вопрос), поэтому подумал и добавил в вышеприведенный класс для скрывания блока строчку «display: none;«, что полностью решило проблему и IE6/7 стали нормально отображать таблицу внутри div’а.