Для написания статей на этом блоге я пользуюсь синтаксисом Markdown. Это один из альтернативных синтаксисов оформления текстов без использования HTML-тегов. И хотя я всегда считал, что придумывание новых еще более упрощенных синтаксисов для и так несложного HTML'а — это зло, Markdown мне понравился. Он, пожалуй, самый продуманный из тех, что я видел, и самый ненавязчивый.

Вот вещи, которые мне особенно нравятся:

Вставка кода — это, пожалуй, самое главное для меня на блоге, который впрямую посвящен примерам HTML-кода :-). И именно поэтому я тут же отказался от WYSIWYG-редактора Wordpress 2.0: в нем для вставки HTML предлагается заменять все угловые скобки на &lt; и &gt;. И хотя сам процесс замены можно автоматизировать, читать это потом и редактировать все равно ужасно муторно. В Markdown же код можно вставлять и редактировать в его первоначальном виде. Он автоматически escape'ится и форматируется в <pre>.

Однако, у Markdown есть и свои недостатки. Особенно мне не нравились такие:

Но оказывается, есть штука, которая решает по крайней мере часть этих проблем — Markdown Extra. В частности, она позволяет задавать id заголовкам, специально разрешать markdown-синтаксис внутри HTML'а и умеет кодировать <dl>.

Вчера поставил ее и переформатировал свой новогодний пост:

Веб-разработчикам
: Чтобы [IE7][] понимал CSS как остальные браузеры.

Программистам
: Чтобы ваш босс узнал про [agile-методы][] и перестал повторять, 
  что вы "вечно все не успеваете".

Проектировщикам
: Чтобы ваша система на [Rails][] или [Django][] масштабировалась 
  так же хорошо, как прототипируется.

Блогерам
: [<img class="right" src="/media/blog/too-much-spam.png" 
  alt="81% всех комментариев - спам.">][spam] Чтобы вы забыли про 
  спам в комментариях.

Фрилансерам
: Чтобы клиенты косяками несли деньги, услышав от вас "Web 2.0"

И всем-всем-всем -- хорошего нового года!

[IE7]: http://blogs.msdn.com/ie/
[agile-методы]: http://martinfowler.com/articles/newMethodology.html
[Rails]: http://www.rubyonrails.org/
[Django]: http://www.djangoproject.com/
[spam]: http://akismet.com/

Так что всем, у кого технарные блоги — оченно рекомендую.

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

  1. vilky

    Так это просто диалект вики-разметки.

    Отсутствие id'ов и class'ов в ней - это фича.

  2. Иван Сагалаев

    Какой именно вики-разметки? :-)

    Все эти синтаксисы, конечно, чем-то похожи. Но почему отсутствие id и class'ов — фича?

  3. vilky

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

    То есть,

    ===Заголовок=== есть

    Заголовок

    [[Текст ссылки]] (в простейшем случае) есть Текст ссылки

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

    Разумеется, вики-разметка бывает разная, но у большинства правил общая база. В самом общем случае, вики-разметка - это расширение набора знаков препинания, причём некоторые из вики-пунктограмм с той же семантикой использовались до появления компьютеров (астериксы для выделения полужирным, подчёркивания для италика, тире для списков и таблиц и т.д.)

  4. Иван Сагалаев

    Вот... А я все пытался это в своем комментарии сформулировать... Дело в том, что markdown — не язык публикации внутри замкнутой системы документов. Он служит для описания HTML-документов "вообще". Поэтому он не такой агрессивный, как любая wiki-разметка, где генерятся idшки заголовкам и ссылки из CamelCase-слов. То есть, он менее специальный. От того и проще.

  5. memyself

    Увы... Квадратную скобку неудобно при кириллической раскладке набирать. В этом смысле близок к идеалу ваккоформаттер, но и в нём цитирование реализовывается через <[...]>.

  6. dp_wiz

    Вот ещё вакоформатер кто-нибудь на питоне переписал чтобы его можно было в django использовать, я подумал бы что в раю.

  7. TeXHaPb

    А как быть с объединением ячеек в таблицах MarkDown? Я так понял, это невозможно...

  8. Иван Сагалаев

    В исходном Markdown таблиц нет вообще. В Markdown Extra есть, но да, там объединять ячейки нельзя. HTML is your friend :-)

  9. http://gordio.pp.ua/

    А мне очень... Ну просто очень понравился textile. Прост, удобен, и интуитивно понятен. У него есть только пару недочетов. (из тех что я бы подправил)

    bc. (блок кода) нельзя делать отступы на 1 строку, или 2 если использовать bc.. (видится только 1 решение сделать закрывающий тег, если закрывающий тег не находится тогда работаем по старинке). bq. (блок цитаты) аналогично предыдущему.

    Что то больше ничего не вспоминается, но точно было еще :)

  10. admin

    А вот эту штуку FencedCodeBlocks можешь включить? Все равно здесь чистый маркдаун ни кто не читает, а делать отступы по 4 пробела не всегда удобно.

    ~~~~
    Code here
    ~~~~
    

    Available_Extensions

  11. Ivan Sagalaev

    У меня не python-markdown используется. Плюс, прямо в textarea есть автоиндент, поэтому писать код с отступом не так сложно.

  12. ibnteo@gmail.com

    Сделал Markdown (Extra) блоговый движок на PHP, работает на RSS (кроме прямого назначения это еще и лента блога), и чистых Markdown файлов. Работающий пример блога: ibnteo.klava.org

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

    Проект открытый, любой желающий может скачать код с Google Code.

  13. Олег

    В 2017 MackDown Extra криво пашет.
    Сейчас сноски работают без вторых квадратных скобок. А для добавления сноски к картинке используется метод [![81% всех комментариев - спам.](/media/blog/too-much-spam.png "title")][spam], где ! обозначается картинка.

Добавить комментарий