Публикации Я изобрел новый стиль программирования Зоопсихологи - матчасть учить надо

Как я за две недели стал верстальщиком

Андрей Орлов  2008-02-22 01:40

У всех бывают моменты, когда ради общего дела приходится заниматься не своей работой. Вот и у меня наступил такой момент, когда жизнь поставила выбор: сверстать три сайта или проект просто провалится в пропасть. Вообще-то, я не верстальщик, ни в какой степени. 15 лет назад был какой-то "опыт", но с тех пор шарахался как от огня. Но я довольно весело взялся за работу, не без основания надеясь, что технологии развились и жизнь стала проще. Однако первое знакомство с новой технологией повергло меня в шок (я тогда назвал верстальщиков "ассенизаторами лингвистических болот" и теперь преклоняюсь перед людьми этой профессии), но самые веселые приключения меня ждали впереди, когда я столкнулся с продуктами Одной Известной Компании...

Как я за две недели стал верстальщиком

Как я за две недели стал верстальщиком

Причина такой трансформации меня, который всегда и везде говорит "я не занимаюсь версткой и дизайном" столь же проста, как и то, почему я так говорю: жизнь заставила. В нашей группе добровольцев есть самый лучший верстальщик (мы его называем вебмастером, потому что верстка - не основная его работа), он занимается вебом много лет и может сверстать все. Зовут Maverick. Если будете нанимать - помните, он действительно может все. Но сейчас работает уже давно по другой специальности, и такая на него по основной работе навалилась лажа, что было ему конкретно не до нас. Отряд добровольцев тем и отличается, что приходится делать чужое, чтобы добровольно сделать свое: такая "прокрустика" (с) С.Лем.

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

И вот этот дизайн лежит уже месяц, добровольцы написали все продукты и смотрят на меня глазами ланей, типа: "где же сайт?" Тут я вспоминаю, что начинал карьеру с веб-верстки....

Немного истории

Да. Открою вам секрет. Я начал свою работу в веб с того, что занимался веб-версткой профессионально и за огромные деньги. В детстве (в 80ом), я хорошо рисовал, меня даже специально этому учили. А в 95ом году я пришел в какую-то компанию, одержимую идеей покорения мира, и сказал что знаю 10тегов и хочу много денег, чтобы мне хватило на еду во время следующего года учебы в МИФИ. Люди тогда были простые и меня взяли в должность "веб-дизайнера". Гы.

Моей работой все были довольны, но, к счастью, остатков того дизайна до наших дней не дожило. Я получил бабла, что бы есть целый год, и ушел учиться. А учились интересные вещи: стандарты и теория программирования пользовательских интерфейсов, и вот примерно тогда я понял, что с удовольствием занялся бы воплощением ЭТОЙ теории в жизнь, но веб-дизайн такого в принципе не позволяет, а толстые клиенты будут лет 20ть не в моде, а так как делать надо по науке или никак, то лучше с вебдизайном завязать.

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

Ситуация усугубляется тем, что я юниксоид, причем такой, ушибленный на всю голову - винда меня не любит и, при виде меня, обычно падает и ее приходится выносить. И конечно, от "настоящих" верстальщиков я долгое время слышал про то, что 99% пользуется осликом IE, что всем хороша тормозилла, но не поддерживает CSS2 и что то там еще такое - мне было все равно, чего не показывала тормозилла (я по таким сайтам не хожу), но в душу это запало.

История современная

Ситуация с браузерами менялась, наш Maverick с 2004го года начал поддерживать в своей верстке мозиллу и конкурер (это стало возможно, это облегчало жизнь мне и это было интересно ему). И вот, в 2007 году, я влипаю в проект, в котором в задании на разработку прямо прописана поддержка альтернативных браузеров. Местным специалист по верстке и веб-интерфейсам (очень хороший специалист) рассказал мне интересную историю: оказывается, "мой" подход к верстке, так называемая табличная верстка, давно и безнадежно устарел. И теперь в моде верстка "блочная". Вместо того, чтобы позиционировать элементы, разбив таблицами страницу на сетку, элементы пакуются в блоки div и span и позиционируются в рамках модели отображения CSS/CSS2. Это сложнее, но зато сбылась мечта идиота: разделение логической разбивки документа и его отображения. Типа логическую разбивку делаем тегами, которые образуют дерево, а потом настраиваем отображение разработкой стиля. И если будет другой дизайн - то логику (и все темплейты) менять не надо, а надо только подрихтовать стиль.

Я не помню, насколько этот подход удалось реализовать в том проекте, да и мне все равно было, но когда пришел момент достать с полки joe и пойти верстать страницу самому я точно знал: надо все учить заново.

Собственно эпопея

Я человек исследовательского склада характера, и если что-то у меня вызывает сомнения и предоставляется подходящий случай, я готов проверить все углубленным изучением или опытным путем. В тезис о том, что кто-то там разделил логическую разбивку документа и его отображения, я не верил вообще никогда: по-моему, это вещи неразделимые, но я напишу об этом как-нибудь в другой раз. Естественно, раз уж пришлось верстать, я решил проверить все сам и попробовать эту самую "Блочную верстку с CSS2".

Из всей моей истории очевидно, что у меня не было никаких сомнений в том, что если верстка заработает в отсталом подмножестве CSS2 PREFIX'а и keyword, то уж в продвинутом IE все будет тип-топ. Позднее выяснилось, что я был не совсем прав, а для начала я нашел в интернет пару учебников по верстке (я же совсем не верстальщик) и спецификацию CSS2 на английском языке. Первое ощущение было - что я столкнулся с чем-то убогим. Причем, не просто убогим, а каким-то даже ошибочным в корне. Такой кривой, как это названо в стандарте "модели отображения" я вообще никогда не ожидал увидеть.

Ну да, мои ощущения испорчены tcl-tk, причем безнадежно. Я не ожидаю от изготовления простенького интерфейса чего-то сверх сложного - уж больно просто это делается в tcl-tk. Взбесили в первую очередь следующие вещи:

  • Глобальность всех конструкций, как в анекдоте про партизана: нажал здесь, отвалилось там, причем экранировать это как-либо нельзя;
  • Белые пятна от "смещенных элементов" - ну почему передвинутый элемент нельзя нормально обтекать на новом месте?
  • Тенденцию элементов наползать друг на друга, т.е. размещение элементов по z-index по слоям это хорошо, но почему друг на друга наползают элементы в одном слое и, главное, по какому принципу?

Меня даже заинтересовал простой вопрос: если консорциум W3C, на деньги крупнейших производителей софта десять лет работал и произвел такое ГОВНО, то где деньги? За это время язык перл не только появился и завоевал мировое господство, но даже умер :). Не надо сразу спорить со мной - это были ощущения студента первого дня обучения, вполне простительные, сейчас мое мнение несколько иное :), читайте дальше.

Тем не менее, за день борьбы со стандартом удалось сверстать страничку, которая довольно неплохо выглядела, соответствовала блочному стилю верстки, корректно масштабировалась (т.н. "резиновый дизайн", как я прочел в каком-то спаме) и одинаково выглядела во всех юниксных браузерах. Кстати, этот одинаковый вид не доставил мне никаких хлопот: все юниксные браузеры полноценно и идентично поддерживают CSS2.

В страничке было несколько глюков, которые я решил "переспать": утром будет видно, что делать. И послал ссылку приятелю-верстальщику, чтобы он посмотрел ее под виндой. Присланный мне скриншот поверг меня в ужас: красиво расположенный набор меню превратился в что-то сильно напоминающее плохую поделку в стиле Пикассо: куча выпирающих граней непонятного цвета, свисающие ошметки текста и название полотна "ничего нельзя сделать", приписанное снизу другом-верстальщиком. Я в какой-то раз в жизни помянул высшие сущности и пошел спать.

Утром я решил увидеть это воочию и поехал в офис к своим друзьям, посмотреть сайтец наяву. Ну и надеясь что-то быстро исправить. Или вдруг это глюк конкретного браузера.... Нда.... Статичный скриншот был еще ничего. Когда я увидел это в движении... Просто прохождение пояса астероидов или нападение не гуманоидной цивилизации. Быстро исправить было нельзя, я поехал домой. Слил VMWARE, поставил винду, загрузил ослика IE 6.0. Должен бросить камень в VMWARE: пять лет назад я ее уже ставил, и тогда, помучившись месяц с этим глюкалом, подумал: "Они еще и денег за это хотят?" - и через месяц снес ее. Прошло пять лет, глюков стало меньше, но вопрос про деньги актуален до сих пор.

Начал "адаптировать" стиль под ослика. И вот, меняю тут, меняю там и постепенно понимаю, что ослик CSS2 не поддерживает. Открываю страничку со списком поддерживаемых разными браузерами фич. Хм. Поддерживает. 10% спецификации, и, как показало дальнейшее развитие событий, с ошибками - т.е. даже если ограничить стиль этими 10%, что само по себе непросто и основательно корежит дизайн, то нет гарантии, что оно заработает.

Дальнейшая работа с этим недобраузером была долгим путем проб и ошибок. Некоторые "Особенности" реализации CSS2 в ослике мне удалось осознать, другие - нет. Это было, как вы понимаете, неожиданно. Я был уверен что ослик - лучший браузер: вот они плоды вражеской пропаганды...

В какой-то момент знакомые прислали мне ссылку на скрипт, который якобы включает поддержку CSS2 в недобраузере. Скрипт назывался IE7 NOW, что само по себе подозрительно: IE7 по списку реализации CSS2 далеко от IE6 не ушел. И в самом деле, в принципе скрипт бесполезен: да, страница автоматически покажется в таком виде, как ее можно отобразить, выразив те конструкции CSS2, которые недобраузер не понимает, через понятные. После этого дизайн становится прямым, но другим. Заменить конструкции можно и самому - правда это дольше - зато можно сделать более похоже на оригинальный замысел. Конечно, IE7 NOW - это подвиг подвижника, вызывающий восхищение, но все-таки проблему он не решает.

Разобравшись (первый из трех раз!) с недобраузером, пошли дальше: дизайн другого (достаточно сходного) сайта по тому же темплейту. Помнити "переписать только стиль и изменить весь дизайн"? Ну, это провалилось :), переписать стиль и изменить дизайн, не затронув "логическую" разметку документа нельзя: позиционирование в модели отображения зависит от отношений родитель-потомок, которые являются частью логической разметки. К счастью, сервер приложений Zope3 не считает html-отображение "логикой", если потребуется, я прям завтра начну отдавать все страницы хоть в PDF, хоть MS WORD, поэтому отметив про себя, что серебряной пули не вышло, я пополз верстать дальше.

Выводы

Сразу скажу - это мои личные выводы на моем личном опыте, основанном на моей долгой истории и вполне возможно к вам все это не применимо. Если это так - извиняйте, не вышло. Спорить со мной не надо, я не верстальщик, спорьте с верстальщиками. А если вы сами верстальщик - ну тем более, чего вам со мной спорить? Я вообще не знаю зачем вы это читали :) Я сам жду-не дождусь возвращения Maverick'а, что бы он стер то, что я наверстал и сделал нормально :).

Блочная верстка и CSS2
Хотя разделить сайт на "логическую" и "отобразительную" часть нельзя, технология заслуживает внимания. До тех пор, пока смена дизайна не сильно затрагивает логику документа, все делается легко и просто: особенно стили для альтернативных устройств (принтер, и, в меньшей степени, наладонники и телефоны) Стоит взять это на вооружение. А вот для промо-сайтов придется оставить таблички: все-таки даже в моих простеньких сайтах не обошлось дело без хаков в духе 96го года, с распорками, подвязками и грабельками (поверьте, я старался обойтись). Делать их, благодаря слоям и прочим вкусностям, стало проще, и они стали другим, но возможностей меньше, чем в случае с таблицами - хотя, затенить границу колонки соседним блоком, что бы не доходила до конца - это модерн.
Совместимость
Все современные браузеры, firefox, safari, opera, konqueror, нормально поддерживают блочную верстку и CSS2, при этом даже у ресурса типа "мой город" для домохозяек и членов городской администрации в одном уездном центре их доля составляет не менее 40%. Статистики по стране и миру у меня нет, но то, что я назвал - традиционная вотчина Одной Крупной Компании.
Микрософт
Микрософт-Недобраузер CSS2 не поддерживает и если вы верстаете сайт в расчете на него - используйте таблицы. Сбережете много времени. И, я так думаю, поддержки CSS2 в них и не планируется. А на пороге уже CSS3...
Трудозатраты

Я не верстальщик. Мне тяжело оценивать трудозатраты, так как я не знаю с чем сравнивать. Но я сверстал три сайта на этой технологии, и могу сказать следующее: трудозатраты не велики, и сделанный сайт достаточно легко поддерживать (особенно, бесконечные требования клиента "сделать тут погуще, а там - потолще"), но есть пара замечаний:

  1. Местами пришлось поменять дизайн под требования верстки, особенно при столкновении с недобраузером;
  2. 90% времени, нервов и сил уходит на борьбу с недобраузером, и тут нужны не двухнедельное самообучение, а серьезный опыт. Так как его баги не описаны в стандарте и в доках микрософта о них тоже молчат. В числе багов, всплыла, скажем, невозможность отключения кеширования в браузере 6.0, что является серьезным ухудшением по сравнению с 4.0 :).

Подводя итог: я рад, что я не верстальщик, но проникся к этой профессии глубоким уважением, которого раньше не было. Это великие люди. Каждый день их работы я воспринимаю теперь как подвиг. Заниматься этим сложно, и очень тяжело морально. В то же время я рад, что в моем образовании в области веб-технологий больше нет белого пятна, и я не завишу ни от кого. Честно говоря, пара проектов была на грани провала из-за нежелания заниматься версткой.

Заключение

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

А напоследок, камень во всех тех, кто поддакивал и смеялся надо мной, когда я говорил что не хочу заниматься версткой: я МОГУ и еще как МОГУ. Но - не ХОЧУ. Хорошо запомнили? Идите в баню :).

Ссылки на эту статью:

История CMS "DreamBot"
DreamBot Zope3 Учат тут Нейросети Репозиторий Слив! Статистика Редакторам Мобильный блог
Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site nooxml Сайт посуточной аренды квартир в москве