Как я за две недели стал верстальщиком
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...
- Трудозатраты
Я не верстальщик. Мне тяжело оценивать трудозатраты, так как я не знаю с чем сравнивать. Но я сверстал три сайта на этой технологии, и могу сказать следующее: трудозатраты не велики, и сделанный сайт достаточно легко поддерживать (особенно, бесконечные требования клиента "сделать тут погуще, а там - потолще"), но есть пара замечаний:
- Местами пришлось поменять дизайн под требования верстки, особенно при столкновении с недобраузером;
- 90% времени, нервов и сил уходит на борьбу с недобраузером, и тут нужны не двухнедельное самообучение, а серьезный опыт. Так как его баги не описаны в стандарте и в доках микрософта о них тоже молчат. В числе багов, всплыла, скажем, невозможность отключения кеширования в браузере 6.0, что является серьезным ухудшением по сравнению с 4.0 :).
Подводя итог: я рад, что я не верстальщик, но проникся к этой профессии глубоким уважением, которого раньше не было. Это великие люди. Каждый день их работы я воспринимаю теперь как подвиг. Заниматься этим сложно, и очень тяжело морально. В то же время я рад, что в моем образовании в области веб-технологий больше нет белого пятна, и я не завишу ни от кого. Честно говоря, пара проектов была на грани провала из-за нежелания заниматься версткой.
Заключение
И вот, когда три сайта сверстаны, они не вызывают большой критики, а некоторым нравится и верстка и дизайн, приезжает Maverick. Он мое творение еще не видел. Но мы так подумали и решили: раз проблема закрыта, то переписывать прямо сейчас особого смысла нет: накопится опыт, накопятся новые требования, всплывут ошибки, появятся новые технологии ... вот тогда и переверстаем.
А напоследок, камень во всех тех, кто поддакивал и смеялся надо мной, когда я говорил что не хочу заниматься версткой: я МОГУ и еще как МОГУ. Но - не ХОЧУ. Хорошо запомнили? Идите в баню :).




