Плюс викификация

Уже больше года пользуюсь своей личной вики. Очень удобно писать статьи, хранить всяческие сниппеты и заготовки, записывать мысли, и, самое главное, к ней есть доступ отовсюду, где есть интернет. Я знаю про существование Evernote и подобных сервисов, но вики для меня как-то удобнее.

mozzy's wiki
Дизайн скина — мой :)

На место моей личной вики претендовали три популярных вики-движка: MediaWiki, PmWiki и DokuWiki. Существует ещё «больше 9000» вики-движков, но все они по тем или иным причинам были отвергнуты. :)

Из вышеназванных MediaWiki — самый функциональный и навороченный, на нём работает Wikipedia, это уже о многом говорит. Но для моих целей он оказался слишком тяжёлым…

Оставалось два движка, примерно равных по функциональности: DokuWiki и PmWiki. Оба для хранения данных используют файлы, а не БД как MediaWiki, что немного быстрее.

Сначала пользовался DokuWiki, через некоторое время ради эксперимента перелез на PmWiki, а потом, сейчас уже не помню почему, вернулся опять на Доку и… Обратно уже не захотелось. :) Очень удобный синтаксис, качественный код движка — тему для него было делать одно удовольствие.

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

На данный момент в моей вики для всеобщего прочтения открыто две страницы: HTML Code Style и CSS Code Style (ссылки на них были/будут приведены в статьях).

4 февраля

Кофе с сахаром или обзор редактора Espresso

Когда вышел редактор Coda, я был поражён его интерфейсом и удобстовом. И всё меня в нём устраивало, но вот тут в одной из RSS-лент я увидел сообщение о выходе новой версии редактора Espresso 1.1…

Espresso

И вот уже два месяца я пользуюсь «Эспрессой» и не могу нарадоваться. Вот, решил поделиться радостями в небольшом, сравнительном с Coda, обзорчике.

Кстати, это продукт компании Macrabbit. Да-да, именно они выпустили удивительный CSSEdit, которым, правда, я так и не смог пользоваться из-за непобедимой привычки писать CSS ручками.

Основное окно Espresso
Основное окно Espresso
Что меня подкупило в Espresso:
  • Полная поддержка Zen Coding.
  • Наиудобнейшая публикация сайтов.
  • Очень удобный и минималистичный интерфейс.
  • Шустрый редактор с быстрыми подсказками и сворачиванием кода.
  • Навигатор.
  • Автопубликация.
  • Возможность опубликовать папку из контекстного меню (странно, но такой функции до сих пор нет в Coda, там можно выбрать несколько файлов для публикации, но папку — никак).
  • Удобная работа с проектами.
Недостатки по сравнению с Coda:
  • Меньшие возможности и производительность поиска по проекту.
  • Не очень удобные сниппеты. В Coda они появляются во всплывающем окошке, что очень удобно. В Espresso же они ограничены хоть и красивым, но уж слишком компактным жёлтым листочком в панельке Tools.
То, чего нет в Espresso и есть в Coda, но чем я не пользуюсь:
  • SVN-клиент. Пользуюсь клиентом Versions, который по идее заслуживает отедьной статьи. :)
  • Terminal. Системного Terminal вполне хватает.
  • Books — встроенный браузер по справочникам, успешно заменяется Safari с гуглом.

Как видно, положительных пунктов гораздо больше и не всегда «всё в одном» удобно, сторонние решения зачастую функциональнее и удобнее.

Ну и немного подробнее опишу фишки, которые мне очень понравились:
Описание функциональности Espresso →

31 января

CSS-хаки для Internet Explorer, Firefox и Opera

IE6. Как много в этой аббревиатуре для сердца верстальщика слилось… :lol: Ежеминутно со всех сторон света на всех языках мира доносятся тысячи проклятий в адрес разработчиков этого замечательного браузера. Но сегодня постараемся обойтись без этого. Хотя, иногда задумываешься, а ведь не было бы IE — как же было бы скучно, да и верстальщикам платили бы меньше. :-D

IE7 тоже тот ещё продукт, но хоть PNG с прозрачностью отображает нормально. А вот IE8 уже гораздо больше любит стандарты, но всё равно жуткий тормоз… Ну вот и как после этого хорошо относиться к продуктам Microsoft? Так, я же не хотел! :!:

В этом посте я собрал все CSS-хаки, что смог найти в сети. Сам стараюсь их не использовать, за исключением редких случаев. Один случай как раз был недавно — замечательная Noname CMS заказчика автоматом вырезала все комментарии из HTML-шаблонов (в том числе и условные, в которых были стили для IE6). Ну чтож, пришлось переделать на хаки…

Начнём с нашего «любимого» браузера:

Internet Explorer 6

  1. .class { _color: #666; }

Internet Explorer 6 и 7

  1. * html .class { color: #666; }
  1. .class { *color: #666; }

Internet Explorer 7

  1. *:first-child+html .class { color: #666; }
  1. *+html .class { color: #666; }
  1. html>body .class { *color: #666; }

Internet Explorer 8

  1. .class { color /*\**/: #666\9; }

Существуют хаки и для нормальных браузеров, мне ни разу не приходилось ими пользоваться, но их тоже полезно знать:

Firefox

  1. @-moz-document url-prefix() {
  2. .class { color: #666; }
  3. }

Opera

  1. @media all and (min-width: 0) {
  2. .class { color: #666; }
  3. }
  1. .class, x:-moz-any-link { color: #666; }
  1. *|html[xmlns*=""] .class { color: #666; }
  1. html:first-child .class { color: #666; }

.class можно заменить вашим названием или вообще любым элементом, соответственно вместо color: #666 может быть любое свойство.

Внимание! Использование большинства из этих хаков приведёт к ошибке валидации CSS-документа, что не очень страшно, но всё равно настоятельно рекомендую использовать вместо хаков условные комментарии и отдельные CSS-файлы для разных браузеров:

Условные комментарии (Conditional Comments)

  1. <link rel="stylesheet" href="style.css" />
  2. <!--[if lte IE 7]><link rel="stylesheet" href="lteie7.css" /><![endif]-->
  3. <!--[if IE 8]><link rel="stylesheet" href="ie8.css" /><![endif]-->

01 подключится во всех браузерах.
02 подключится в Internet Explorer, версия которого меньше или равна 7.
03 подключится только в Internet Explorer 8.

18 января

Семантическая разметка в HTML

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

Википедия даёт следующее определение: «Семантика — система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений алгоритмического языка.» Это применительно к языку.

Ну а применительно к HTML, простыми словами — теги, названия ID и классов элементов должны соответствовать их содержимому по смыслу.

Приведу простейший пример — у нас есть следующее определение:

Капитан Очевидность (англ. Captain Obvious)
— уникальный супергерой, который всегда готов прийти на помощь Анонимусу, чтобы высказать прописную истину.

Как напишет код верстальщик не знакомый с понятием «семантика»:

  1. <p><strong>Капитан Очевидность (англ. Captain Obvious)</strong><br /> — уникальный супергерой, который всегда готов прийти на помощь Анонимусу, чтобы высказать прописную истину.</p>

А вот как напишет этот код верстальщик, с ним знакомый:

  1. <dl><dt>Капитан Очевидность (англ. Captain Obvious)</dt><dd> — уникальный супергерой, который всегда готов прийти на помощь Анонимусу, чтобы высказать прописную истину.</dd></dl>

Здесь использованы подходящие по смыслу элементы HTML: <dl> — это Definition List (список определений), <dt> — Definition Term (имя определяемого термина), <dd> — Definition Description (определение термина). А выделение жирным имени термина задано с помощью CSS.

Ну и ещё как пример — классическое меню, сделанное с помощью неупорядоченного списка:

  1. <ul id="nav">
  2. <li><a href="/about/" title="О компании">О компании</a></li>
  3. <li><a href="/services/" title="Услуги">Услуги</a></li>
  4. <li><a href="/contacts/" title="Контактная информация">Контактная информация</a></li>
  5. </ul>

Такую разметку будет потом очень просто оформить с помощью CSS.

В процессе написания семантического кода приходится думать над названиями, порядком элементов, над тем какой тег использовать, что выбрать, таблицу, маркированный список или список определений, использовать class или ID, и т.п.

Что использовать, ID или class?

В интернетах с завидной регулярностью задают этот вопрос, постараюсь ответить.

ID — это имя уникального элемента на странице, я использую его для структурной разметки (#header, #content, #aside, #footer), для элементов формы и для элементов, к которым в дальнейшем планирую обращаться через jQuery. В последнем случае, конечно, можно использовать и классы… Но грамотней использовать ID, так как селектор $("#id") работает гораздо быстрее, чем $(".class"), по причине того, что используется DOM-функция getElementById(). А если элемент не уникален на странице (их несколько), то желательно положить его в блок с ID и обращаться к нему так: $("#id .class"). Такой селектор будет работать быстрее чем $(".class"), так как поиск элемента будет производиться только в блоке #id, а не во всём документе. Отвлёкся немного в сторону jQuery, но это тоже полезно знать. :!:

Регулярно в чужом коде встречаю названия классов привязанные к отображению, например: class="column-red-150-border-black". Это семантически некорректно, и в таком коде разбираться гораздо тяжелее. Не рекомендую такой код. :)

Ещё пример — в моём блоге, в разделе Эбаут используется микроформат hCard (микроформаты вообще интересная штука):

  1. <div class="vcard">
  2. <span class="n"><span class="fn"><span class="family-name">Коромыслов</span> <span class="given-name">Алексей</span></span> <span class="additional-name">Георгиевич</span></span>
  3. <p>Родился <abbr class="bday" title="1987-04-14">14 апреля 1987 года</abbr>. Работаю <abbr title="разработчик ПО" class="role">разработчиком ПО</abbr> в компании «<a href="http://profit-labs.ru/" class="org">ProfIT Labs Ltd</a>».</p>
  4. <p>В сети «известен» под ником «<span class="nickname">lazymozzy</span>».</p>
  5. <h3>Контактные данные</h3>
  6. E-mail: <a class="email" href="mailto:alexey@koromyslov.ru">alexey@koromyslov.ru</a>
  7. Skype: <a class="skype" href="skype:lazymozzy">lazymozzy</a>
    </div>

Используемые здесь полное имя (fn), организация (org), адрес электронной почты (email) и пр. определены с использованием определённых имён классов, а для всего блока задан class="vcard", который показывает, что вложенные классы принадлежат hCard. Например Яндекс уже начал поддерживать микроформаты.

Стоит знать, что валидный код и семантика не помогут побороть баги IE. Прежде всего стандарты и семантика способствуют меньшему количеству ошибок и лучшей читаемости кода — в итоге меньше времени будет затрачиваться на поиск элементов и исправление ошибок. Также семантически структурированную разметку любят поисковики, что в свою очередь ведёт к более высоким строчкам в поисковой выдаче.

15 января

Vibrant Ink theme for Coda

Знаменитая тема Vibrant Ink for TextMate была портирована для кучи редакторов, среди которых Espresso, Eclipse, Aptana, Notepad++ и прочие. Но почему-то в этом списке до сих пор не было замечательного маковского редактора Coda, которым я с удовольствием пользуюсь уже около года.

Решил это исправить и сделал цветовую схему для HTML, PHP+HTML, CSS и JavaScript.

Подсветка PHP и HTML
Подсветка PHP и HTML
Подсветка CSS
Подсветка CSS
Подсветка JavaScript
Подсветка JavaScript

Скачать Vibrant Ink theme for Coda (10 KB).

11 января

Twitter

Категории
Где меня можно найти
Фотоблог
Twitter
Flickr
Last.fm
Livejournal
Мои проекты
Miranda Me
Подписаться
Лента RSS