<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Батискаф FuntooMacs</title>
  <link href="http://visconte.github.com/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://visconte.github.com/"/>
  <updated>2012-09-08T13:41:15+03:00</updated>
  <id>http://visconte.github.com/</id>
  <author>
    <name>visconte</name>
    <uri>https://github.com/visconte</uri>
  </author>

  
  <entry>
    <title>Goodbye, мой блог, goodbye!</title>
    <link href="http://visconte.github.com/2012/09/08/goodbye-blog.html"/>
    <updated>2012-09-08T00:00:00+03:00</updated>
    <id>http://visconte.github.com/2012/09/08/goodbye-blog</id>
    <author>
      <name>visconte</name>
      <uri>https://github.com/visconte</uri>
    </author>
    <content type="html">&lt;p&gt;Итак, данный блог прекращает своё существование (хоть я и не планирую
его удалять). С блоговедением как формой проведения досуга я не
порываю, уже выбрав местечко для &lt;a href=&quot;http://www.vonavi.me&quot;&gt;нового блога&lt;/a&gt;, на этот раз,
имеющего собственное доменное имя и не привязанного к &lt;a href=&quot;http://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt; (на данный момент он размещён на &lt;a href=&quot;https://openshift.redhat.com/&quot;&gt;OpenShift&lt;/a&gt;). Выбор &lt;strong&gt;GitHub
Pages&lt;/strong&gt; в качестве платформы относится к раннему периоду моего
увлечения блогами, это первая проба пера и одновременно
&lt;em&gt;proof-of-concept&lt;/em&gt;. Так уж вышло, что необходимость перемен назрела
раньше, чем данный блог достиг своей зрелости. Надеюсь, что
произведённые перемены пойдут мне только на пользу.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Перемены произошли не во всём: я всё ещё остаюсь верен &lt;a href=&quot;http://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;, но
почувствовал необходимость в использовании расширений, которые &lt;em&gt;de
facto&lt;/em&gt; на GitHub запрещены по соображениям безопасности. Причины не в
том, что мне стало невыносимо скучно без рюшечек и свистелок, а лежат
гораздо глубже; о чём, пожалуй, стоит рассказать подробнее.&lt;/p&gt;

&lt;h3 id=&quot;github-pages--&quot;&gt;GitHub Pages и блоги&lt;/h3&gt;

&lt;p&gt;Изначально выбор пал на &lt;strong&gt;GitHub Pages&lt;/strong&gt;, поскольку данный сервис
рассматривался мною как &lt;em&gt;полноценная платформа для блога&lt;/em&gt;. Конечно, не
такая популярная, как &lt;a href=&quot;http://www.blogger.com/&quot;&gt;Blogger&lt;/a&gt; или &lt;a href=&quot;https://plus.google.com/&quot;&gt;Google+&lt;/a&gt;; да и вообще,
насколько оправданно называть платформой для блогов место, подходящее
разве что для размещения заметок программистов? Понятие платформы для
меня более широкое, и воспринимается как общепризнанный инструмент
внутри определённого сообщества людей, в данном случае —
пользователей GitHub. Чего стоит для разработчика, использующего
GitHub для своих проектов, &lt;a href=&quot;https://help.github.com/articles/creating-pages-with-the-automatic-generator&quot;&gt;завести статический сайт&lt;/a&gt;? А
раз так, то &lt;strong&gt;GitHub Pages&lt;/strong&gt;, несомненно, является платформой, хоть и
предназначенной для узкого круга людей. Платформы, как правило,
получают гораздо больше поддержки со стороны сообщества, чем тот или
иной движок для генерации сайта сам по себе. А в то, что проснувшись
завтра, мы обнаружим &lt;strong&gt;GitHub Pages&lt;/strong&gt; канувшим в лету, мне верится с
трудом. Значит и платформа, и Jekyll, как её важная составляющая,
будут получать поддержку, хотят их разработчики того или нет.&lt;/p&gt;

&lt;h3 id=&quot;markdown--org-mode&quot;&gt;Переход от Markdown к Org Mode&lt;/h3&gt;

&lt;p&gt;Звучит странно, но что именно меня не устроило — это языки разметки
&lt;a href=&quot;http://ru.wikipedia.org/wiki/Markdown&quot;&gt;Markdown&lt;/a&gt; и &lt;a href=&quot;http://ru.wikipedia.org/wiki/Textile_(язык_разметки)&quot;&gt;Textile&lt;/a&gt;, поддерживаемые Jekyll. И тот, и другой
по-своему хорош, но оба достаточно плохо приспособлены для конвертации
в форматы, отличные от HTML. Это и обусловило мой переход к &lt;a href=&quot;http://orgmode.org/&quot;&gt;Org Mode&lt;/a&gt;: захотелось в придачу к HTML иметь полноценную поддержку &lt;a href=&quot;http://ru.wikipedia.org/wiki/LaTeX&quot;&gt;LaTeX&lt;/a&gt;. Всё же я не считаю, что те вещи, о которых сообщается в блоге, не
имеют ценности за пределами интернета. Число веб-сервисов,
использующих Markdown, растёт день ото дня, и если эта тенденция
сохранится, то идея использовать Markdown для чего ещё (LaTeX,
DocBook) так и не достигнет своей зрелости. Не говоря уже о том, что
лучшего способа ведения заметок в Emacs, чем &lt;strong&gt;Org Mode&lt;/strong&gt;, попросту не
существует. Важным открытием для меня стал пакет &lt;a href=&quot;https://github.com/bdewey/org-ruby&quot;&gt;org-ruby&lt;/a&gt;,
который подключается к Jekyll через расширение &lt;a href=&quot;https://github.com/eggcaker/jekyll-org&quot;&gt;jekyll-org&lt;/a&gt; и
позволять писать посты сразу в &lt;strong&gt;Org Mode&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id=&quot;section&quot;&gt;Комментарии в блоге&lt;/h3&gt;

&lt;p&gt;Следует признать, что система комментариев в данном блоге не ахти, да
и требование регистрации на GitHub неоправданно жёсткое. Но
возвращаться к корням в лице &lt;a href=&quot;http://disqus.com/&quot;&gt;Disqus&lt;/a&gt; или &lt;a href=&quot;http://www.intensedebate.com/&quot;&gt;IntenseDebate&lt;/a&gt; мне не
хотелось. Мало того, что представленные платформы &lt;em&gt;закрытые&lt;/em&gt; (и с
неясной политикой сервисов, которые в один не самый прекрасный момент
могут перестать быть бесплатными), так ещё и требуют от комментаторов
навыков владения HTML. Markdown намного приятнее в обращении, поэтому
мой выбор пал на систему комментариев &lt;a href=&quot;https://github.com/phusion/juvia&quot;&gt;Juvia&lt;/a&gt;, которая к тому же
является &lt;em&gt;open-source проектом&lt;/em&gt;. Также всем желающим доступен довольно
простой &lt;a href=&quot;https://github.com/openshift/juvia-example&quot;&gt;пример&lt;/a&gt; размещения &lt;strong&gt;Juvia&lt;/strong&gt; на OpenShift.
Комментаторы тоже останутся довольны, поскольку в &lt;a href=&quot;http://www.vonavi.me&quot;&gt;новом блоге&lt;/a&gt;
никакая регистрация на GitHub больше не нужна!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; В новый блог перенесён, дополненный и приукрашенный, пост про
&lt;a href=&quot;http://visconte.github.com/Linux/2012/06/23/booting-linux-from-windows.html&quot;&gt;установку Linux на компьютер с предустановленной Windows&lt;/a&gt;.
Как оказалось, упоминавшийся в нём проект «Grub 2 For DOS» уже
переименован в «Grub 2 Win».&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>Установка Linux на компьютер с предустановленной Windows</title>
    <link href="http://visconte.github.com/Linux/2012/06/23/booting-linux-from-windows.html"/>
    <updated>2012-06-23T00:00:00+03:00</updated>
    <id>http://visconte.github.com/Linux/2012/06/23/booting-linux-from-windows</id>
    <author>
      <name>visconte</name>
      <uri>https://github.com/visconte</uri>
    </author>
    <content type="html">&lt;p&gt;Сегодня многие компьютеры и ноутбуки попадают в руки поклонников Linux
с предустановленной Windows, любезно предоставленной
заводом-изготовителем. Возникает дилемма: удалять или не удалять, и
способ установки уже любимой OS зависит от её решения. Как правило,
изготовитель заранее побеспокоился о том, чтобы установка
дополнительной OS доставила вам множество незабываемых минут, часов,
дней и прочих радостей. Труден путь тех, кто не решился стереть все
воспоминания о Windows с диска, но дорогу осилит идущий.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h3 id=&quot;section&quot;&gt;Подготовка разделов диска&lt;/h3&gt;

&lt;p&gt;Способов установки дополнительной системы к Windows мало, поскольку
последняя поддерживает только таблицу разделов &lt;a href=&quot;http://ru.wikipedia.org/wiki/Главная_загрузочная_запись&quot;&gt;MBR&lt;/a&gt;, возможности
которой ограничены 4 первичными разделами или 3 первичными и одним
расширенным. Как правило, три первичных раздела уже задействованы:
один — под восстановление системы, и ещё два — под Windows. Мы же
силами Linux LiveCD и редактора разделов Gparted подвинем полномочия
Windows, уменьшив его раздел, а на освободившемся пространстве
создадим расширенный (Extended) раздел под Linux. Предварительно,
полезно ознакомиться с тем, как правильно &lt;a href=&quot;http://www.linux.org.ru/wiki/en/Выравнивание_разделов_диска&quot;&gt;выравнивать разделы диска&lt;/a&gt;. Для Linux желательно создавать не менее трёх логических
разделов: подкачки (swap), корневой и под домашний каталог.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/Linux/gparted-partition-table.png&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/Linux/gparted-partition-table.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;section-1&quot;&gt;Установка загрузчика&lt;/h3&gt;

&lt;p&gt;Можно было бы поместить загрузчик Grub на один из Windows-разделов,
если бы не неприкрытая любовь MicroSoft к NTFS. Для Grub эта файловая
система не подходит, поэтому установите Grub в корневой раздел Linux и
скопируйте файл настройки (&lt;code&gt;/boot/grub/grub.cfg&lt;/code&gt; для Grub 2) в место,
доступное из-под Windows. BIOS будет передавать управление Windows, а
уже потом будет грузиться Grub. Однако, Windows не обладает
способностью грузить разделы с файловыми системами Linux. Нам нужен
посредник, для чего можно воспользоваться проектом &lt;a href=&quot;http://sourceforge.net/projects/grub4dos/&quot;&gt;Grub For DOS&lt;/a&gt; или &lt;a href=&quot;http://sourceforge.net/projects/grub24dos/&quot;&gt;Grub 2 For DOS&lt;/a&gt;. Оба они равноправны,
первый создан на основе Grub, второй — на основе Grub 2. Об
использовании Grub For DOS очень обстоятельно рассказано &lt;a href=&quot;http://ru.d-ws.biz/articles/install-ubuntu-from-flash-on-s205.shtml&quot;&gt;здесь&lt;/a&gt;, ну а для пользователей дистрибутивов на основе Grub 2
настоящей находкой является Grub 2 For DOS, о котором и пойдёт речь
дальше.&lt;/p&gt;

&lt;p&gt;Установка Grub 2 For DOS очень проста: скачайте архив с сайта и
распакуйте в корень Windows-раздела (обычно, это диск &lt;code&gt;C&lt;/code&gt;), там должна
появиться папка &lt;code&gt;grub&lt;/code&gt;. Запустите &lt;code&gt;C:\grub\install\grub24dos.exe&lt;/code&gt; и
выполните его настройку, после этого инсталлятор добавит новую запись
«Grub 2 For DOS» в меню загрузки Windows. Для наших целей достаточно
выставить «Windows boot timeout», остальные данные продублируйте из
своего дистрибутива, поместив сохранённый &lt;code&gt;grub.cfg&lt;/code&gt; в &lt;code&gt;C:\grub&lt;/code&gt;.
Теперь выбор «Grub 2 For DOS» в меню загрузки перенесёт вас в Grub
2.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Прим. При любых изменениях, вносимых в конфигурацию Grub 2, не
забывайте обновлять меню, подкладывая Grub 2 For DOS изменённый
&lt;code&gt;grub.cfg&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;bcd&quot;&gt;Ручная настройка BCD&lt;/h3&gt;

&lt;p&gt;Наверняка вам известно, что для загрузки, начиная с Windows Vista,
используется &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Vista_startup_process#Boot_Configuration_Data&quot;&gt;Boot Configuration Data&lt;/a&gt; (BCD), которую
модифицирует Grub 2 For DOS. Для тонкой настройки меню загрузки
предназначена специальная утилита &lt;strong&gt;bcdedit&lt;/strong&gt;. Желательно перед любыми
изменениями создавать резервную копию BCD в соответствии с
&lt;a href=&quot;http://sourcedaddy.com/windows-7/how-to-back-up-and-restore-settings.html&quot;&gt;инструкцией&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;С помощью строки поиска в главном меню Windows найдите интерпретатор
командной строки &lt;code&gt;cmd&lt;/code&gt; и выберите вариант запуска «Run as
administrator». Используя подробную справку &lt;code&gt;bcdedit /v&lt;/code&gt; по записям в
BCD, каждой из которых соответствует уникальный GIUD, найдите «Grub 2
For DOS». Можно выставить «Grub 2 For DOS» первым в меню&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/displayorder&lt;/span&gt; {GUID} &lt;span class=&quot;n&quot;&gt;/addfirst&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;а также сделать пунктом по умолчанию&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/default&lt;/span&gt; {GUID}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Дальнейшее описывает шаги по созданию записи «Grub 2 For DOS» с нуля
на тот случай, если вы пожелаете это сделать самостоятельно. Новая
запись в BCD создаётся командой&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/set&lt;/span&gt; {GUID} path \grub\winloader\grub.boot
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;После этого будет отображен GUID новой записи, который нужно
подставлять в следующих командах. Укажем раздел, на котором находится
Grub 2 For DOS&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/set&lt;/span&gt; {GUID} device partition&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;C:
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;и местоположение загрузчика&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/set&lt;/span&gt; {GUID} path \grub\winloader\grub.boot
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Новая запись будет добавлена в меню загрузки только после выполнения
команды&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/displayorder&lt;/span&gt; {GUID} &lt;span class=&quot;n&quot;&gt;/addfirst&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Если &lt;code&gt;/addfirst&lt;/code&gt; заменить на &lt;code&gt;/addlast&lt;/code&gt;, то новая запись будет
добавлена в меню загрузки не первой, а последней. Остаётся сделать
запись выбором по умолчанию&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/default&lt;/span&gt; {GUID}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;и установить время ожидания меню&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bat&quot;&gt;bcdedit &lt;span class=&quot;n&quot;&gt;/timeout&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
  </entry>
  
  <entry>
    <title>Создание системы комментариев на основе GitHub</title>
    <link href="http://visconte.github.com/GitHub/2012/05/07/howto-github-hosted-comments.html"/>
    <updated>2012-05-07T00:00:00+03:00</updated>
    <id>http://visconte.github.com/GitHub/2012/05/07/howto-github-hosted-comments</id>
    <author>
      <name>visconte</name>
      <uri>https://github.com/visconte</uri>
    </author>
    <content type="html">&lt;p&gt;После того, как была &lt;a href=&quot;/GitHub/2011/12/09/github-hosted-comments-features.html&quot;&gt;описана&lt;/a&gt; система комментариев на
основе GitHub, возникает законный вопрос о том, как же её получить. В
отличие от статических страниц &lt;a href=&quot;http://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt;, использование только
&lt;a href=&quot;https://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt; для этих целей недостаточно. Нам понадобится сценарий
JavaScript для загрузки и отображения комментариев, а также место для
их хранения, в качестве которого используется &lt;a href=&quot;https://github.com/blog/411-github-issue-tracker&quot;&gt;Issue-трекер&lt;/a&gt;
GitHub.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h3 id=&quot;section&quot;&gt;Создание ветки комментариев&lt;/h3&gt;

&lt;p&gt;Создайте issue на Issue-трекере в репозитории блога для хранения
комментариев к вашему посту. Например, &lt;a href=&quot;https://github.com/visconte/visconte.github.com/issues/1&quot;&gt;вот&lt;/a&gt; issue для
комментариев предыдущего поста, ссылка на который состоит из базового
URL &lt;code&gt;https://github.com/visconte/visconte.github.com/issues/&lt;/code&gt; и
уникального id (&lt;code&gt;1&lt;/code&gt; в данном примере). Данный issue используется
читателями блога для отправки комментариев, что выглядит примерно так:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/issue-tracker-comments.png&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/issue-tracker-comments.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;После этого включите полученный id в &lt;a href=&quot;https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter&quot;&gt;YAML-заголовок&lt;/a&gt; исходного
текста поста, чтобы использовать его для загрузки комментариев на
соответствующую страницу блога (значение id указано напротив
&lt;code&gt;commentIssueId&lt;/code&gt;):&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;yaml&quot;&gt;&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;l-Scalar-Plain&quot;&gt;layout&lt;/span&gt;&lt;span class=&quot;p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l-Scalar-Plain&quot;&gt;post&lt;/span&gt;
&lt;span class=&quot;l-Scalar-Plain&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;GitHub&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Pages:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;дальнейшая&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;интеграция,&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;или&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;комментарии&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;блога&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;на&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;GitHub&amp;quot;&lt;/span&gt;
&lt;span class=&quot;l-Scalar-Plain&quot;&gt;commentIssueId&lt;/span&gt;&lt;span class=&quot;p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l-Scalar-Plain&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;l-Scalar-Plain&quot;&gt;category&lt;/span&gt;&lt;span class=&quot;p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l-Scalar-Plain&quot;&gt;GitHub&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Вот фрагмент &lt;a href=&quot;https://github.com/mojombo/jekyll/wiki/Usage&quot;&gt;layout-файла&lt;/a&gt;, генерирующего страницы блога
(&lt;code&gt;post.html&lt;/code&gt; в данном примере), с ссылкой на issue. Внутри неё
используется &lt;a href=&quot;https://github.com/mojombo/jekyll/wiki/Liquid-Extensions&quot;&gt;Liquid-шаблон&lt;/a&gt;, извлекающий id для issue (часть
&lt;code&gt;page.commentIssueId&lt;/code&gt;, заключённая в двойные фигурные скобки):&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;comments&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Отправить комментарий&lt;span class=&quot;nt&quot;&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
    Комментарии блога предоставлены сервисом
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;a&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;https://github.com/&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;GitHub&lt;span class=&quot;nt&quot;&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;.
    Вы можете отправить комментарий с
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;a&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;https://github.com/visconte/visconte.github.com/issues/{{ page.commentIssueId }}#discussion_bucket&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;данной страницы&lt;span class=&quot;nt&quot;&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    (необходима &lt;span class=&quot;nt&quot;&gt;&amp;lt;a&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;https://github.com/signup/free&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;регистрация на GitHub&lt;span class=&quot;nt&quot;&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;)
    или связаться со мной по
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;a&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;user-email&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;email&lt;span class=&quot;nt&quot;&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;.
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3 id=&quot;issue-&quot;&gt;Загрузка комментариев с Issue-трекера&lt;/h3&gt;

&lt;p&gt;Добавим JavaScript сценарий, извлекающий комментарии к посту блога из
соответствующего issue на GitHub. &lt;a href=&quot;http://developer.github.com/v3/issues/&quot;&gt;GitHub issues API&lt;/a&gt; как раз то,
что нам сейчас нужно — сделать XHR-запрос и получить все комментарии
для конкретного issue. Для каждого комментария вы таким образом
получаете id пользователя GitHub, что оставил данный комментарий, id
его Gravatar-изображения; порядковый номер комментария на issue, время
его создания и модификации, а также сам комментарий. Вот часть
layout-файла, которая забирает комментарии поста посредством &lt;a href=&quot;http://api.jquery.com/jQuery.ajax/&quot;&gt;jQuery&lt;/a&gt; (заметьте, что вам нужен Liquid-шаблон для определения ссылки на
issue, чтобы извлекать оттуда комментарии):&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ajax&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;https://api.github.com/repos/visconte/visconte.github.com/issues/{{ page.commentIssueId }}/comments&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;dataType&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;json&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;headers&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Accept&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;application/vnd.github.html+json&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;success&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;loadComments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Подождите, разве не применяется &lt;a href=&quot;http://ru.wikipedia.org/wiki/Правило_ограничения_домена&quot;&gt;Правило ограничения домена&lt;/a&gt; в
случае XHR-запроса к GitHub API со страницы блога? Да, конечно
применяется. И до недавнего времени, единственный способ обойти это
ограничение состоял в использовании &lt;a href=&quot;http://en.wikipedia.org/wiki/JSONP&quot;&gt;JSONP&lt;/a&gt;. Однако, JSONP не
позволяет изменять HTTP-заголовок запроса, что необходимо для задания
требуемого &lt;a href=&quot;http://developer.github.com/v3/mime/&quot;&gt;Mime-типа&lt;/a&gt; отклика GitHub API в заголовке &lt;code&gt;Accept&lt;/code&gt;
(смотри код выше). Но с недавних пор GitHub поддерживает
&lt;a href=&quot;http://www.w3.org/TR/cors/&quot;&gt;спецификацию CORS&lt;/a&gt;, позволяющую делать кросс-доменные запросы.
Способ, которым &lt;a href=&quot;http://developer.github.com/v3/#cross-origin-resource-sharing&quot;&gt;GitHub API реализует CORS&lt;/a&gt;, состоит в
регистрации веб-сайтов как OAuth-приложений для доступа к API. Чтобы
разрешить CORS блогу на GitHub, необходимо перейти к
&lt;a href=&quot;https://github.com/settings/applications/new&quot;&gt;форме регистрации OAuth-приложений&lt;/a&gt; и создать новое приложение,
указав при этом URL блога в полях «Main URL» и «Callback URL».
Заметьте, что данный способ подходит (и остаётся неизменным) не только
для блогов внутри доменной зоны GitHub (например,
&lt;code&gt;visconte.github.com&lt;/code&gt;), но и для блогов на GitHub, имеющих
&lt;a href=&quot;http://pages.github.com/#custom_domains&quot;&gt;собственный домен&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/github_oauth.png&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/github_oauth.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;section-1&quot;&gt;Отображение комментариев в блоге&lt;/h3&gt;

&lt;p&gt;Включим скачиваемые комментарии в layout-файл, генерирующий страницы
постов. Например, вот мой код для вставки комментариев:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;http://datejs.googlecode.com/svn/trunk/build/date-ru-RU.js&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;loadComments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cuser&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;login&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cuserlink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;https://www.github.com/&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cuser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;clink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;https://github.com/visconte/visconte.github.com/issues/{{ page.commentIssueId }}#issuecomment-&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cbody&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;body_html&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cavatarlink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;avatar_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cdate&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;created_at&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;MMMM d, yyyy HH:mm&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

        &lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;#comments&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;lt;div class=&amp;quot;comment&amp;quot;&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;  &amp;lt;div class=&amp;quot;cmeta&amp;quot;&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;    &amp;lt;p class=&amp;quot;author&amp;quot;&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;      &amp;lt;span class=&amp;quot;gravatar&amp;quot;&amp;gt;&amp;lt;img height=&amp;quot;20&amp;quot; width=&amp;quot;20&amp;quot; src=&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cavatarlink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;      &amp;lt;strong&amp;gt;&amp;lt;a href=&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cuserlink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;quot;&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cuser&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;      &amp;lt;a href=&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;clink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;quot;&amp;gt;комментирует&amp;lt;/a&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;    &amp;lt;/p&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;    &amp;lt;p class=&amp;quot;date&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;clink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;quot;&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cdate&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;lt;/a&amp;gt; &amp;lt;span class=&amp;quot;icon&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;  &amp;lt;/div&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;  &amp;lt;div class=&amp;quot;body&amp;quot;&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cbody&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;lt;/div&amp;gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;lt;/div&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Для придания лучшего вида комментариям, мною используется
&lt;a href=&quot;http://www.datejs.com/&quot;&gt;библиотека DateJS&lt;/a&gt; для представления даты комментария, а к
пользователям добавляются их Gravatar-изображения. Остаётся добавить
CSS-правила для комментариев, чтобы получить следующий вид:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/blog-post-comments.png&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/blog-post-comments.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Вот и всё! Создание системы комментариев было достаточно просто, ведь
у GitHub уже есть все необходимые составляющие (Issue-трекер, GitHub
API, регистрация OAuth-приложений), и всё, что нам было нужно — это
немного клея, чтобы связать это воедино. Мне нравится, что система
интегрируется с аккаунтами GitHub, комментарии блога можно видеть на
страницах с issue, а также простота использования системы комментариев
в целом. Весь код, что используется для системы комментариев, —
единый layout-файл для постов блога и CSS-правила — вы найдёте
&lt;a href=&quot;https://gist.github.com/2595062&quot;&gt;здесь&lt;/a&gt;. Дайте мне знать, если вы обнаружите лучший способ для
размещения комментариев блога на GitHub или найдёте, как улучшить
этот.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Прим.&lt;/em&gt; Этот пост представляет собой близкое к оригиналу изложение
поста &lt;a href=&quot;http://ivanzuzak.info/2011/02/18/github-hosted-comments-for-github-hosted-blogs.html&quot;&gt;GitHub hosted comments for GitHub hosted blogs&lt;/a&gt;
пользователя &lt;a href=&quot;http://ivanzuzak.info/&quot;&gt;Ivan Zuzak&lt;/a&gt;. Выражаю глубокую признательность автору
за проделанный труд.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>GitHub Pages: дальнейшая интеграция, или комментарии блога на GitHub</title>
    <link href="http://visconte.github.com/GitHub/2011/12/09/github-hosted-comments-features.html"/>
    <updated>2011-12-09T00:00:00+02:00</updated>
    <id>http://visconte.github.com/GitHub/2011/12/09/github-hosted-comments-features</id>
    <author>
      <name>visconte</name>
      <uri>https://github.com/visconte</uri>
    </author>
    <content type="html">&lt;p&gt;Помимо того, что данный блог размещён на &lt;a href=&quot;http://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt;, есть у
него и другая отличительная черта: отправлять комментарии могут только
пользователи GitHub. При этом пользователю доступны те же средства,
что используются в повседневной работе на GitHub, в том числе, его
разработчиками. Подобная обратная связь позволяет постоянно повышать
удобство работы, оправдывая выбор данного сервиса даже для
комментариев блога и способствуя дальнейшей интеграции с GitHub.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Для отправки комментария достаточно перейти по ссылке в
соответствующем &lt;a href=&quot;#comments&quot;&gt;разделе&lt;/a&gt; в конце поста. Ссылка ведёт на
&lt;a href=&quot;https://github.com/blog/411-github-issue-tracker&quot;&gt;Issue-трекер&lt;/a&gt; GitHub, хранящий комментарии блога и
предоставляющий им тот же арсенал средств, что и в проектах на GitHub.
На страницах блога комментарии отображаются посредством JavaScript.
Хотите больше узнать об их возможностях? Читайте дальше.&lt;/p&gt;

&lt;h3 id=&quot;section&quot;&gt;Создавайте разметку текста легко&lt;/h3&gt;

&lt;p&gt;Если вы ещё не знакомы с &lt;a href=&quot;http://daringfireball.net/projects/markdown/syntax&quot;&gt;Markdown&lt;/a&gt;, облегчённым языком разметки,
то сделать это можно в непринуждённой обстановке обсуждения. Помимо
простого текста, Markdown распознаёт структурные вставки для создания
разметки, добавления гиперссылок и картинок, и всё это — на простом
и интуитивном уровне. Недаром эта разметка так полюбилась
пользователям GitHub, что они придумали собственное расширение,
&lt;a href=&quot;http://github.github.com/github-flavored-markdown/&quot;&gt;GitHub Flavored Markdown&lt;/a&gt;, и используют его повсеместно, в том
числе — в комментариях.&lt;/p&gt;

&lt;h3 id=&quot;section-emoji&quot;&gt;Выражайте эмоции посредством Emoji&lt;/h3&gt;

&lt;p&gt;Достигнуть эффекта большей выразительности и эмоциональности вам
поможет уникальный набор иконок Emoji. GitHub использует наборы
символов, которые преобразуются в замечательные иконки в соответствии
с таблицей ниже.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/github-icons-emoji-set.png&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/github-icons-emoji-set.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;section-1&quot;&gt;Принимайте участие в дискуссиях&lt;/h3&gt;

&lt;p&gt;Пригласить пользователя в дискуссию очень просто — достаточно в
комментарии набрать &lt;code&gt;@имя_пользователя&lt;/code&gt;, и ваш собеседник получит
уведомление об этом.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/mentioning-in-a-comment.jpg&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/mentioning-in-a-comment.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Если вы оставили комментарий к посту или получили приглашение, вы
будете автоматически подписаны на всё дальнейшее обсуждение. Ссылка
внизу страницы с комментариями позволяет подписаться на дискуссию
самостоятельно или, наоборот, отписаться от неё.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/comments-notifications.jpg&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/comments-notifications.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Если нет желания вступать в дискуссии, то оповещения о вашем
упоминании в комментариях можно отключить в &lt;a href=&quot;https://github.com/account/notifications&quot;&gt;Notification Center&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/managing-notifications.jpg&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/managing-notifications.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;email&quot;&gt;Отправляйте ответы по email&lt;/h3&gt;

&lt;p&gt;Свой ответ на комментарий вы можете послать по email, используя
почтовый ящик, указанный в аккаунте GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/sending-an-email.jpg&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/sending-an-email.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;На сегодняшний день обеспечена поддержка только простого текста,
поэтому вставки HTML-кода и прикреплённые файлы
игнорируются. Отправленный по email ответ будет опубликован в
комментариях.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/plaintext-comment.jpg&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/plaintext-comment.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;section-2&quot;&gt;Используйте поиск по комментариям&lt;/h3&gt;

&lt;p&gt;Данный поиск доступен на странице с комментариями.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/issue-search.png&quot;&gt;&lt;img src=&quot;http://dl.dropbox.com/u/35307988/visconte.github.com/images/GitHub/issue-search.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;section-3&quot;&gt;Ссылки по теме&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.emoji-cheat-sheet.com/&quot;&gt;Emoji cheat sheet for Campfire and GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/blog/821-mention-somebody-they-re-notified&quot;&gt;Mention @somebody. They’re notified&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/blog/811-reply-to-comments-from-email&quot;&gt;Reply to Comments from Email&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry>
  
</feed>
