<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[T.I.D.]]></title>
  <link href="http://tokkonopapa.github.com/atom.xml" rel="self"/>
  <link href="http://tokkonopapa.github.com/"/>
  <updated>2015-12-20T14:57:18+09:00</updated>
  <id>http://tokkonopapa.github.com/</id>
  <author>
    <name><![CDATA[tokkonopapa]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Git管理下のWordPressプラグインを公式SVNリポジトリに上げる - git-svnを使う方法／使わない方法]]></title>
    <link href="http://tokkonopapa.github.com/blog/2014/02/04/wordpress-plugin-deploy-from-git/"/>
    <updated>2014-02-04T21:25:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2014/02/04/wordpress-plugin-deploy-from-git</id>
    <content type="html"><![CDATA[<p>Git をメインのバージョン管理に使うなら、<code>git-svn</code> は使う必要がないと言う記事。</p>

<!--more-->

<p>Git や GitHub で管理する WordPress プラグインを公式の SVN リポジトリに送る方法として <code>git-svn</code> を使うワークフローが多く紹介されている。</p>

<ul>
  <li>2014年01月06日 <a href="http://pasero.net/~mako/blog/s/544">WordPress のプラグインを公式リポジトリと GitHub に公開する</a></li>
  <li>2013年09月26日 <a href="http://notnil-creative.com/blog/archives/2431">GitHubにホストしていたレポジトリをWordPress.orgのSVNにSourceTree(Mac)を使ってプッシュするまで</a></li>
  <li>2012年09月19日 <a href="https://gist.github.com/kasparsd/3749872">Using Git (and GitHub) with Subversion Mirroring for WordPress Plugin Development</a></li>
  <li>2011年05月23日 <a href="http://teleogistic.net/2011/05/revisiting-git-github-and-the-wordpress-org-plugin-repository/">Revisiting Git, Github, and the wordpress.org plugin repository</a></li>
</ul>

<p>これらの問題点は以下の通り。</p>

<ul>
  <li>SVN リポジトリから git に取り込む（<code>git svn fetch</code>）際、一本の巨大なリポジトリ・ツリーを頭から検索するため、非常に時間がかかる。</li>
  <li>SVN へのコミットはすべての変更を集約する必要がある。これには git 側でのマージ処理が必要だが、途中の過程をすっ飛ばして前バージョンと最新をマージするため、コンフリクトが発生する可能性が高い。この解消は全くもって無駄な作業である。</li>
  <li><code>git-svn</code> の制限により、サブモジュールが扱えない。</li>
  <li>開発の歴史をすべて SVN リポジトリへ引き継ぐため、リポジトリが増大する。</li>
</ul>

<p>蛇足だが、上記最後の記事には 「公式リポジトリを単にリリース用に使うだけなら、せめて <code>git rebase -i</code> か <code>git merge -squash</code> でやってくれ」 という <a href="http://teleogistic.net/2011/05/revisiting-git-github-and-the-wordpress-org-plugin-repository/comment-page-1/#comment-332025">Otto さんの嘆き</a> が書き込まれている（<a href="http://ottopress.com/">Otto さん</a> は WordPress のプラグイン開発で有名な人）。</p>

<p>一方、Git / GitHub を主とする開発では、</p>

<ul>
  <li>開発の歴史はすべて Git / GitHub で管理する。</li>
  <li>公式 SVN リポジトリは、単にリリース・バージョンの保持のために利用する。</li>
</ul>

<p>SVN クライアントとして動作する <code>git-svn</code> を使うと、git リポジトリと同時に SVN のリポジトリも同時に生成・管理することになるが、上記を前提とすれば、<code>git-svn</code> を使う必要がない。</p>

<p>基本的には、公式サイトの記事 <a href="http://wordpress.org/plugins/about/svn/">How to Use Subversion</a> に書かれている手作業をスクリプトで自動化するイメージ。</p>

<p>現在見つけたスクリプトは以下の2系統。どちらもリリース・バージョンを GitHub に push する直前からの利用を想定している。バージョン番号に応じたタグ付けなど、ワン・コマンドによる自動化が可能。一時的に SVN リポジトリを作成するが、残す必要がないので、その都度削除するという潔さ。スクリプトの動作も軽い。</p>

<h3 id="sudar--wp-plugin-in-githubhttpsgithubcomsudarwp-plugin-in-githubblobmasterclone-from-svn-to-gitsh"><a href="https://github.com/sudar/wp-plugin-in-github/blob/master/clone-from-svn-to-git.sh">sudar / wp-plugin-in-github</a></h3>

<p>歴史を含めて既存の SVN リポジトリから git にクローンを作成する <code>clone-from-svn-to-git.sh</code> と git で管理しているファイル群を SVN に上げる <code>deploy-plugin.sh</code> がメイン。前者は <code>git-svn</code> のインストールが必要だが、最初から GitHub で開発している場合には後者だけを使えば良く、<code>git-svn</code> のインストールは不要。</p>

<p><code>assets</code> への転送、<code>add-textdomain.php</code> や <code>makepot.php</code> による言語ファイルの更新（Otto さんの記事 <a href="http://ottopress.com/2013/language-packs-101-prepwork/">Language Packs 101 – Prepwork</a> を参照）も含まれており、至れり尽くせりのスクリプト。</p>

<p>また、マークダウンで書かれた README.md を readme.txt に変換する <code>readme-converter.sh</code> や、プラグインの zip アーカイブを作成する <code>create-archive.sh</code> もあり、すべての作業内容が網羅されている。</p>

<p>詳しくは、以下の紹介記事を参照のこと。</p>

<ul>
  <li>2014年01月03日 <a href="http://www.tecking.org/archives/3830">公式リポジトリのWordPressプラグインをGitHubでバージョン管理できる『wp-plugin-in-github』使ってみたよ</a></li>
  <li>2013年12月23日 <a href="http://wp.tekapo.com/2013/12/23/wordpress-plugin-repository-with-github/">WordPress公式プラグインリポジトリに登録しているプラグインをGitHubで管理する</a></li>
</ul>

<h3 id="garyjones--wordpress-plugin-git-flow-svn-deployhttpsgithubcomgaryjoneswordpress-plugin-git-flow-svn-deploy"><a href="https://github.com/GaryJones/wordpress-plugin-git-flow-svn-deploy">GaryJones / wordpress-plugin-git-flow-svn-deploy</a></h3>

<p><a href="https://github.com/deanc/wordpress-plugin-git-svn">deanc / wordpress-plugin-git-svn</a> から派生したスクリプトで、サブモジュールや <code>assets</code> の転送、途中で削除されたファイルなどの対応もサポート。</p>

<p>私はこのスクリプトを元に自分の構成に合わせて修正、利用した。</p>

<p>いずれにしても盲目的に実行するのではなく、自分の環境に合っているかどうか、スクリプトの各行を吟味して実行するが吉。さもないとトラブルの際、うろたえることになる。</p>

<p>またまた蛇足だが、<a href="http://wordpress.org/ideas/topic/create-git-repositories-for-plugins-and-themes">Create Git Repositories for Plugins and Themes</a> には公式リポジトリの GitHub 化が提案されている。WP.org のアカウントとリポジトリのアカウントを同一にしているのをどうするかが一番の問題点と見た。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Pygmentで使える言語パーサー]]></title>
    <link href="http://tokkonopapa.github.com/blog/2013/08/04/pygment-lexer/"/>
    <updated>2013-08-04T19:51:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2013/08/04/pygment-lexer</id>
    <content type="html"><![CDATA[<p><a href="http://pygments.org/docs/lexers/">Pygment</a> が色々な言語をハイライト出来ることを最近知ったので、レンダリングを確かめるためのメモ。</p>

<!--more-->

<h3 id="section">言語解析キーワード</h3>

<p>コマンドラインでは、<code>pygmentize -L lexers</code> で一覧を出力。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>pygmentize -L lexers の出力例</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
</pre></td><td class="code"><pre><code class="console"><span class="line"><span class="go">Pygments version 1.5, (c) 2006-2011 by Georg Brandl.</span>
</span><span class="line">
</span><span class="line"><span class="go">Lexers:</span>
</span><span class="line"><span class="go">~~~~~~~</span>
</span><span class="line"><span class="go">...（解釈可能な言語の一覧）</span>
</span><span class="line"><span class="go">* yaml:</span>
</span><span class="line"><span class="go">    YAML (filenames *.yaml, *.yml)</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="rbcon-ruby-">rbcon （Ruby のコンソール出力）</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>rbcon </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
</pre></td><td class="code"><pre><code class="rbcon"><span class="line"><span class="gp">irb(main):001:0&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="mi">1</span>
</span><span class="line"><span class="go">=&gt; 1</span>
</span><span class="line"><span class="gp">irb(main):002:0&gt; </span><span class="nb">puts</span> <span class="n">a</span>
</span><span class="line"><span class="go">1</span>
</span><span class="line"><span class="go">=&gt; nil</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="c-cpp-c">c, cpp, c++</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>c++ </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
</pre></td><td class="code"><pre><code class="c++"><span class="line"><span class="cp">#include &lt;stdio.h&gt;</span>
</span><span class="line">
</span><span class="line"><span class="kt">int</span> <span class="n">main</span><span class="p">()</span>
</span><span class="line"><span class="p">{</span>
</span><span class="line">    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Hello world</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
</span><span class="line">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span><span class="line"><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="objective-c-objectivec-obj-c-objc">objective-c, objectivec, obj-c, objc</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>objc </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="cp">#import &lt;stdio.h&gt;</span>
</span><span class="line"><span class="cp">#import &lt;objc/Object.h&gt;</span>
</span><span class="line">
</span><span class="line"><span class="k">@interface</span> <span class="nc">Test</span> : <span class="nc">Object</span>
</span><span class="line"><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">method</span><span class="p">;</span>
</span><span class="line"><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="bash-sh-ksh-tcsh-csh-console">bash, sh, ksh, tcsh, csh, console</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>csh </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
</pre></td><td class="code"><pre><code class="csh"><span class="line"><span class="nv">$ </span>git checkout master
</span><span class="line">Switched to branch <span class="s1">&#39;master&#39;</span>
</span><span class="line"><span class="nv">$ </span>git <span class="nb">log</span> -1
</span><span class="line">commit 5350862c0d0e11ab765f994e057f4c3c7646c226
</span><span class="line">Author: tokkonopapa &lt;tokkonopapa@yahoo.com&gt;
</span><span class="line">Date:   Fri Feb 8 18:33:17 2013 +0900
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="mysql">mysql</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>mysql </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
</pre></td><td class="code"><pre><code class="mysql"><span class="line"><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="nf">example</span> <span class="p">(</span>
</span><span class="line">    <span class="n">id</span> <span class="kt">INT</span><span class="p">,</span>
</span><span class="line">    <span class="n">data</span> <span class="kt">VARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
</span><span class="line"><span class="p">);</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="cssphp-htmlphp-jsphp-javascriptphp">css+php, html+php, js+php, javascript+php</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>html+php </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
</pre></td><td class="code"><pre><code class="html+php"><span class="line"><span class="o">&lt;</span><span class="nx">html</span> <span class="nx">lang</span><span class="o">=</span><span class="s2">&quot;ja&quot;</span><span class="o">&gt;</span>
</span><span class="line">    <span class="o">&lt;</span><span class="nx">head</span><span class="o">&gt;</span>
</span><span class="line">        <span class="o">&lt;</span><span class="nx">meta</span> <span class="nx">charset</span><span class="o">=</span><span class="s2">&quot;utf-8&quot;</span><span class="o">&gt;</span>
</span><span class="line">    <span class="o">&lt;/</span><span class="nx">head</span><span class="o">&gt;</span>
</span><span class="line">    <span class="o">&lt;</span><span class="nx">body</span><span class="o">&gt;</span>
</span><span class="line">        <span class="o">&lt;?</span><span class="nx">php</span> <span class="k">require_once</span> <span class="s2">&quot;HTTP/Request.php&quot;</span><span class="p">;</span> <span class="cp">?&gt;</span>
</span><span class="line">    <span class="nt">&lt;/body&gt;</span>
</span><span class="line"><span class="nt">&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="diff">diff</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>diff </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
</pre></td><td class="code"><pre><code class="diff"><span class="line"><span class="gu">@@ -120,7 +120,7 @@ def convert(content)</span>
</span><span class="line">   rd = RDiscount.new(content, *@rdiscount_extensions)
</span><span class="line">   html = rd.to_html
</span><span class="line">   if rd.generate_toc and html.include?(@config[&#39;rdiscount&#39;][&#39;toc_token&#39;])
</span><span class="line"><span class="gd">-    html.gsub!(@config[&#39;rdiscount&#39;][&#39;toc_token&#39;], rd.toc_content)</span>
</span><span class="line"><span class="gi">+    html.gsub!(@config[&#39;rdiscount&#39;][&#39;toc_token&#39;], rd.toc_content.force_encoding(&#39;utf-8&#39;))</span>
</span><span class="line">   end
</span><span class="line">   html
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="pot-po">pot, po</h4>
<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>po</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
</pre></td><td class="code"><pre><code class="po"><span class="line"><span class="c1"># LANGUAGE (LOCALE) translation for WordPress.</span>
</span><span class="line"><span class="s">&quot;</span><span class="py">MIME-Version:</span><span class="s"> 1.0\n&quot;</span>
</span><span class="line"><span class="s">&quot;</span><span class="py">Content-Type:</span><span class="s"> text/plain; charset=UTF-8\n&quot;</span>
</span><span class="line"><span class="s">&quot;</span><span class="py">Content-Transfer-Encoding:</span><span class="s"> 8bit\n&quot;</span>
</span><span class="line"><span class="kd">#: ../inc/admin.php:79</span>
</span><span class="line"><span class="nv">msgid</span> <span class="s">&quot;%s: You need WordPress 3.1.0 or higher and PHP 5 with libcurl.&quot;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="http">http</h4>
<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>http</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
</pre></td><td class="code"><pre><code class="http"><span class="line"><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
</span><span class="line"><span class="na">Content-Type</span><span class="o">:</span> <span class="l">text/plain; charset=utf-8</span>
</span><span class="line"><span class="na">Content-Length</span><span class="o">:</span> <span class="l">12</span>
</span><span class="line">
</span><span class="line">Hello World
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="section-1">コードの書き方</h3>
<p><a href="https://github.com/davidfstr/rdiscount">rdiscount</a> にしろ <a href="https://github.com/gettalong/kramdown">kramdown</a> にしろ、<a href="https://github.com/imathis/octopress">Octopress</a> のスニペット記述方法は4通り。</p>

<h4 id="section-2">1. インライン − バッククォート</h4>
<p>シングルのバッククォート <code>`</code> で囲む。ちなみに、n個のバッククォートを表すには n+1個のバッククォート（と1つの空白）で囲むとのこと。</p>

<h4 id="section-3">2. コードブロック − インデント</h4>
<p>行頭をタブ、もしくはスペース4文字でインデントさせる。</p>

<h4 id="httpoctopressorgdocspluginsbacktick-codeblock">3. コードブロック − 3連のバッククォート（<a href="http://octopress.org/docs/plugins/backtick-codeblock/">公式ドキュメント</a>）</h4>
<p>3連のバッククォート <code>```</code> で囲む。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>raw </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class=""><span class="line">``` [言語] [タイトル] [リンクURL] [リンクのタイトル]
</span><span class="line">ここにコードスニペット
</span><span class="line">```</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="codeblock-httpoctopressorgdocspluginscodeblock">4. コードブロック − codeblock ブロック（<a href="http://octopress.org/docs/plugins/codeblock/">公式ドキュメント</a>）</h4>
<p><code>{% codeblock TITLE lang:LANG %}</code> 〜 <code>{% endcodeblock %}</code> で囲む。</p>

<p>忘れがちなのが <code>{% ... %}</code> が解釈されてレンダリングされないようにする書き方。次の様に raw ブロックで囲む。</p>

<pre><code>{% codeblock [タイトル] [lang:言語] %}
{% raw %}
{% ... %}
{% endraw %}
{% endcodeblock %}
</code></pre>

<p>ちなみに 3. と 4. は Pygment でレンダリングされる。</p>

<h4 id="section-4">参考情報</h4>
<ul>
  <li>
    <p><a href="http://qiita.com/Qiita/items/c686397e4a0f4f11683d">Qiita - Markdown記法 チートシート - Qiita [キータ]</a></p>
  </li>
  <li>
    <p><a href="http://stackoverflow.com/questions/3426182/how-to-escape-liquid-template-tags">How to escape liquid template tags? - Stack Overflow</a></p>
  </li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Liquid Exception: invalid byte sequence in UTF-8 in atom.xml]]></title>
    <link href="http://tokkonopapa.github.com/blog/2013/08/04/liquid-exception-error/"/>
    <updated>2013-08-04T18:08:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2013/08/04/liquid-exception-error</id>
    <content type="html"><![CDATA[<p><a href="https://github.com/imathis/octopress">Octopress 本家</a> に追従する度にエラーで悩まされる。今度は <code>rake generate</code> 時に <code>Liquid Exception: invalid byte sequence in UTF-8 in atom.xml</code> というエラー。</p>

<p>どこかで日本語の扱いをヘクってると思われるが…</p>

<!--more-->

<h3 id="section">対策</h3>

<p>原因は色々あるんだろうけど、ウチの場合は <code>markdown</code> を <code>rdiscount</code> から <code>kramdown</code> に変えることでエラーが出なくなった。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>_config.yml </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class="yaml"><span class="line"><span class="l-Scalar-Plain">markdown</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">kramdown</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>Gemfile </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
</pre></td><td class="code"><pre><code class="diff"><span class="line">   gem &#39;rake&#39;, &#39;~&gt; 0.9&#39;
</span><span class="line">   gem &#39;jekyll&#39;, &#39;~&gt; 0.12&#39;
</span><span class="line">   gem &#39;rdiscount&#39;, &#39;~&gt; 2.0.7&#39;
</span><span class="line"><span class="gi">+  gem &#39;kramdown&#39;</span>
</span><span class="line">   gem &#39;pygments.rb&#39;, &#39;~&gt; 0.3.4&#39;
</span><span class="line">   gem &#39;RedCloth&#39;, &#39;~&gt; 4.2.9&#39;
</span><span class="line">   gem &#39;haml&#39;, &#39;~&gt; 3.1.7&#39;
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>でもって <code>bundle install</code>。あるいはいっそ</p>

<div class="bogus-wrapper"><notextile><figure class="code"><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class=""><span class="line">gem install kramdown</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>ただし Markdown パーサーを変えることになるので、方言には要注意。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[octopressで見出しの目次を記事に埋め込む方法]]></title>
    <link href="http://tokkonopapa.github.com/blog/2013/02/23/octopress-toc/"/>
    <updated>2013-02-23T10:12:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2013/02/23/octopress-toc</id>
    <content type="html"><![CDATA[<p><a href="http://pages.github.com/">GitHub Pages</a> で <a href="https://github.com/mojombo/jekyll">jekyll</a> が 0.12.0 にバージョンアップした事に伴い、
<a href="https://github.com/rtomayko/rdiscount">rdiscount</a> の <a href="https://github.com/mojombo/jekyll/pull/333">目次作成機能（Table Of Contents）</a> が効くようになった。</p>

<p>これを <a href="https://github.com/imathis/octopress">Octopress</a> でも試してみた。</p>

<!--more-->

<h3 id="section">目次</h3>

<h3 id="section-1">作成方法</h3>

<h4 id="section-2">設定</h4>
<p><code>_config.yml</code> に以下を追加。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>_config.yml に RDiscount の設定を追加 </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="yaml"><span class="line"><span class="l-Scalar-Plain">rdiscount</span><span class="p-Indicator">:</span>
</span><span class="line">  <span class="l-Scalar-Plain">extensions</span><span class="p-Indicator">:</span> <span class="p-Indicator">[</span><span class="s">&#39;generate_toc&#39;</span><span class="p-Indicator">]</span>
</span><span class="line">  <span class="l-Scalar-Plain">toc_token</span><span class="p-Indicator">:</span> <span class="s">&quot;{:TOC}&quot;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="section-3">記事の書き方</h4>
<p>記事に <code>{:TOC}</code> を書き込むと、その部分が目次に置き換わる（<code>TOC</code> は <code>Table Of Contents</code> の略）。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>記事に目次を埋め込む </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class="text"><span class="line">### 目次
</span><span class="line">{:TOC}
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="section-4">日本語の見出し</h3>
<p>見出しに日本語を使うと、<code>generate</code> 時にエラーが出る。</p>

<pre><code>Liquid Exception: incompatible character encodings: UTF-8 and ASCII-8BIT in atom.xml
</code></pre>

<p>この問題は、<a href="https://github.com/mojombo/jekyll/pull/555">Issue #555</a> で報告されている。<a href="https://github.com/Kinvey/jekyll/commit/21325ce2b71ad138be66748b8df7290dd3438ba4">このパッチ</a> の通り、
<code>gems/jekyll-0.12.0/lib/jekyll/converters/markdown.rb</code>
を対策する。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>lib/jekyll/converters/markdown.rb </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
</pre></td><td class="code"><pre><code class="diff"><span class="line"><span class="gu">@@ -120,7 +120,7 @@ def convert(content)</span>
</span><span class="line">           rd = RDiscount.new(content, *@rdiscount_extensions)
</span><span class="line">           html = rd.to_html
</span><span class="line">           if rd.generate_toc and html.include?(@config[&#39;rdiscount&#39;][&#39;toc_token&#39;])
</span><span class="line"><span class="gd">-            html.gsub!(@config[&#39;rdiscount&#39;][&#39;toc_token&#39;], rd.toc_content)</span>
</span><span class="line"><span class="gi">+            html.gsub!(@config[&#39;rdiscount&#39;][&#39;toc_token&#39;], rd.toc_content.force_encoding(&#39;utf-8&#39;))</span>
</span><span class="line">           end
</span><span class="line">           html
</span><span class="line">         when &#39;maruku&#39;
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>ただし <code>force_encoding('utf-8')</code> が気に入られず、取り込まれていない。</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[common.rb:304:in escape: undefined method gsub for ... (NoMethodError)]]></title>
    <link href="http://tokkonopapa.github.com/blog/2013/02/03/jekyll-error-of-common-rb/"/>
    <updated>2013-02-03T15:46:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2013/02/03/jekyll-error-of-common-rb</id>
    <content type="html"><![CDATA[<p>ruby を 1.9.3-p374 に上げたり、jekyll を 0.12.0 に上げたりしていたら、
<a href="https://github.com/tokkonopapa/jekyll-experiment">jekyll-experiment</a>
がタイトルのようなエラーを吐くようになってしまった。  </p>

<p>とりあえずのモンキーパッチを当てる方法。</p>

<!--more-->

<h3 id="section">エラーの内容</h3>
<p><code>escape</code> メソッドで <code>gsub</code> が未定義だということ。</p>

<pre><code>/Users/****/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/uri/common.rb:304:in `escape': undefined method `gsub' for ["Ruby", "jekyll/hyde"]:Array (NoMethodError)
    from /Users/****/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/uri/common.rb:638:in `escape'
    from /Users/****/.rvm/gems/ruby-1.9.3-p374/gems/jekyll-0.12.0/lib/jekyll/post.rb:140:in `block in url'
    ...
</code></pre>

<p><code>common.rb</code> の該当箇所は、</p>

<pre><code>str.gsub(unsafe) do
</code></pre>

<p><code>post.rb</code> の該当箇所は、</p>

<pre><code>"categories" =&gt; categories.map { |c| URI.escape(c) }.join('/'),
</code></pre>

<p>どうやら、<code>categories</code> に配列 <code>["Ruby", "jekyll/hyde"]</code> を指定しているの原因。</p>

<h3 id="section-1">モンキーパッチ</h3>
<p><code>URI.escape(c)</code> の <code>c</code> を明示的に <code>String</code> に変換する。</p>

<pre><code>"categories" =&gt; categories.map { |c| URI.escape(c.to_s) }.join('/'),
</code></pre>

<p>う〜ん、これでいいのかなぁ（いいわけない！）。カテゴリのアーカイブを作る時に <code>Ruby/jekyll/hyde</code>
になるように、ちゃんと考えなきゃ…。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[jekyllの実験的テンプレート]]></title>
    <link href="http://tokkonopapa.github.com/blog/2012/09/22/jekyll-experiment/"/>
    <updated>2012-09-22T15:30:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2012/09/22/jekyll-experiment</id>
    <content type="html"><![CDATA[<p>jekyll で本格的ブログを作るためのテンプレート <a href="https://github.com/tokkonopapa/jekyll-experiment">jekyll-experiment</a> を作ってみたが、色々と作り込むうちに複雑になってきたので、ここに記録しておく。</p>

<!--more-->

<h2 id="section">制作方針</h2>
<ul>
  <li>モジュール化により、カスタマイズし易くすること。</li>
  <li>ブログに必要な最小限の機能が、プラグインの使えない <a href="http://pages.github.com/">GitHub Pages</a> 上の jekyll でも動作すること。</li>
</ul>

<h2 id="section-1">構成</h2>
<pre><code>.
├── _deploy/                # デプロイ時の静的ファイル群を保存しておく
├── _includes/              # 他からインクルードされるテンプレート部品
│     ├── asides/           # サイドバー用各種テンプレート部品
│     ├── post/             # 個別記事ページ用各種テンプレート部品
│     ├── libs/             # 小さなテンプレート部品
│     ├── js/               # 小さな js 部品
│     ├── css/              # 小さな css 部品
│     │     └── pygments/   # pygments 用 css
│     └── bootstrap-2.1.1/  # bootstrap の部品
├── _layouts/               # ページ用テンプレート
├── _plugins/               # 拡張用プラグイン（参考用）
├── _posts/                 # 記事
├── _site/                  # ここに一時的な静的ファイル群が作られる
├── assets/                 # サイト用リソース
│     ├── bootstrap-2.1.1/  # 必要な bootstrap 部品をインクルードする
│     ├── css/              # 必要な css 部品をインクルードする
│     ├── js/               # 必要な js 部品をインクルードする
│     ├── ico/              # ファビコンなど
│     └── img/              # サイト用画像
├── blog/                   # ブログ用テンプレート
└── project/                # プロジェクト用テンプレート
</code></pre>

<h3 id="configyml-">1. <code>_config.yml</code> の設定</h3>

<h4 id="urlbaseurl"><code>url</code>、<code>baseurl</code></h4>
<p>GitHub プロジェクトページの場合は、次のように指定する。</p>

<pre><code>url: http://USERNAME.github.com/REPOSITORY
baseurl: /REPOSITORY
</code></pre>

<h4 id="paginatecolumns"><code>paginate</code>、<code>columns</code></h4>
<p>トップページでの表示記事数と、先頭記事以外のカラム数。</p>

<h4 id="dateformat"><code>date_format</code></h4>
<p>使える書式は、<a href="http://rubydoc.info/gems/liquid/2.2.2/Liquid/StandardFilters#date-instance_method">Module: Liquid::StandardFilters — Documentation for liquid (2.2.2)</a> （GitHub の Liquid バージョンと同じ） を参考に。</p>

<h4 id="truncatelen"><code>truncate_len</code></h4>
<p>トップページで紹介する記事の表示文字数。</p>

<h4 id="navbarlist"><code>navbar_list</code></h4>
<p>次のように <code>{name, link}</code> のペアでナビゲーションバーのメニューを定義。</p>

<pre><code>navbar_list:
- name: Blog
  link: /
- name: Project
  link: /project/
- name: About
  link: /about.html
</code></pre>

<p>サブメニューは、<code>dropdown: &amp;dropdown</code> を使い、次のように定義。</p>

<pre><code>navbar_list:
- name: Blog
  link: /
  dropdown: &amp;dropdown
  - name: Categories
	link: /blog/categories.html
  - name: Tags
	link: /blog/tags.html
</code></pre>

<p>これ以上の多階層化は、<code>_includes/navbar.html</code> に直接マークアップするのが吉。</p>

<p>またリンク部をハイライトするためには、テンプレート側の YAML ディレクティブ <code>group</code> に、親メニューの <code>name</code> を指定する。以下は、<code>/blog/categories.html</code> の例。</p>

<pre><code>---
layout: default
title: Archives
group: Blog
---
</code></pre>

<h4 id="pygmentsstyle"><code>pygments_style</code></h4>
<p><a href="http://pygments.org/">Pygments - Python syntax highlighter</a> の <a href="http://pygments.org/demo/">Online demo</a> で、カラーリングを確認するのが吉。</p>

<p>カラーリングに関しては、次のサイトもご参考。</p>

<ul>
  <li><a href="https://github.com/mojombo/tpw/blob/master/css/syntax.css">tpw/css/syntax.css at master - mojombo/tpw</a><br />
  jekyll 本家による、GitHub のカラー。</li>
  <li><a href="https://github.com/uraimo/pygments-vimstyles">uraimo/pygments-vimstyles - GitHub</a><br />
  VIM で有名なテーマを Pygments 用に変換したスタイルシート。</li>
  <li><a href="http://www.uraimo.com/2011/09/21/from-vim-theme-to-pygments-css/">From VIM Theme to Pygments CSS</a><br />
  VIM 用のスタイルを Pygments 用スタイルに変換する python プログラム。</li>
  <li>Gist に投稿されたスタイル
  <a href="https://gist.github.com/1125708">Solarized Pygments CSS - Gist</a>、
  <a href="https://gist.github.com/2005058">Solarized Light Pygments CSS / Jekyll - Gist</a>、
  <a href="https://gist.github.com/1573884">Solarized Pygments Dark CSS - Gist</a></li>
</ul>

<h3 id="yaml-">2. 記事の YAML ディレクティブ</h3>

<h4 id="excerpt"><code>excerpt</code></h4>
<p>トップページ (index.html) で表示する、記事の要旨。</p>

<h4 id="thumbnail"><code>thumbnail</code></h4>
<p>トップページ (index.html) で表示する、サムネイル画像。</p>

<h4 id="comments"><code>comments</code></h4>
<p>3rd パーティー製コメントシステムを有効にする。</p>

<h4 id="published"><code>published</code></h4>
<p><code>true</code> で記事公開、<code>false</code> で保留。</p>

<h4 id="category"><code>category</code></h4>
<p>カテゴリは、配列 <code>[...]</code> を使って複数指定可。この場合、左から順に親子関係となる。</p>

<h4 id="tags"><code>tags</code></h4>
<p>タグも配列を使用可能。カテゴリとは異なり、親子関係はない。</p>

<h3 id="section-2">3.「続きを読む」機能</h3>
<p>トップページ (index.html) の表示時、<code>_includes/libs/truncate_xxxx</code> で以下の処理を実行する。</p>

<h4 id="excerpt-">3.1 <code>excerpt</code> の処理</h4>
<p>記事の YAML ディレクティブにコレがあれば、要旨として表示する。</p>

<h4 id="more---">3.2 <code>&lt;!--more--&gt;</code> の処理</h4>
<p><code>safe: false</code> な jekyll 環境では、<code>_plugins/postmore.rb</code> を使って <code>&lt;!--more--&gt;</code> で分割した文字列の前半をレンダリングする。一方プラグインが使えない GitHub ページ上の jekyll では、次のように Liquid で、<code>&lt;!--more--&gt;</code> から記事の終わりまでコメント化し、擬似的な more 機能を実現する。</p>

<pre><code>{% if post.content contains '&lt;!--more--&gt;' %}
	{{ post.content | remove:'--&gt;' }}--&gt;
{% endif %}
</code></pre>

<p>テキストとしては送られるが、高々数十キロバイトだろうから、目をつぶってもらうというわけである。</p>

<p>余談だが、次のような Liquid コードも試してみた。が、適当な1バイトの区切り文字 <code>SEP</code> をセットできないのでダメ。何か良い案はないだろうか？</p>

<pre><code>{{ post.content | replace_first:'&lt;!--more--&gt;', SEP | split:SEP | first }}
</code></pre>

<h5 id="section-3">参考情報</h5>
<ul>
  <li><a href="http://www.jacquesf.com/2011/03/creating-excerpts-in-jekyll-with-wordpress-style-more-html-comments/">Creating Excerpts in Jekyll with Wordpress-style &lt;!–more–&gt; HTML Comments - Jacques Fortier</a><br />
  <code>&lt;--more--&gt;</code> より手前を <code>excerpt</code> とする <code>postmorefilter</code> プラグイン 。</li>
  <li><a href="http://kaspa.rs/2011/04/jekyll-hacks-html-excerpts/">Jekyll hacks - HTML excerpts</a><br />
  <code>&lt;!-- more start --&gt;</code> ～ <code>&lt;-- more end --&gt;</code> 間をコメント化して <code>excerpt</code> とする方法。</li>
</ul>

<h4 id="section-4">3.3 先頭から既定文字数だけを表示する処理</h4>
<p><code>excerpt</code> および <code>&lt;!--more--&gt;</code> が共にない場合、先頭の <code>truncate_len</code> だけ文字を表示する。GitHub 上の jekyll （バージョン 2.2.2） の場合、<code>truncate</code> フィルタがユニコードに対応しておらず、単なるバイト数でカウントされてしまうため、日本語が文字化けする可能性がある。そこでかなりトリッキーな方法ではあるが、末尾の文字コードを調べ、適切な所で丸める処理を Liquid で実装した。</p>

<h3 id="section-5">4. カテゴリ、タグ</h3>
<p><a href="https://github.com/mojombo/jekyll/wiki/Template-Data">Template Data - mojombo/jekyll Wiki</a> にある通り、テンプレートからは <code>site.categories</code> （ハッシュ） や <code>page.categories</code> （配列） などでアクセスすることが出来る。<code>_includes/libs/list_categories</code> と <code>_includes/libs/list_tags</code> にそれらの扱いを集約すると共に、両者をフラグで使い分ける仕様とした。</p>

<p>またカテゴリは、親子関係を表す配列で提供されるのが jekyll の仕様である。例えば、<code>_post/1970-1-1-hello-world.md</code> の YAML ディレクティブに次のようなカテゴリが指定されていたとする。</p>

<pre><code>title: "hello world!"
category: [parent, child]
</code></pre>

<p>もし、<code>_config.yml</code> のパーマリンク設定が <code>permalink: /blog/:categories/:title.html</code> であった場合、上記の記事は、次のように展開される。</p>

<pre><code>/blog/parent/child/hello-world.html
</code></pre>

<h3 id="bootstrap-">5. bootstrap 関連</h3>
<p>コレのコンフィグレーションを色々できるようにしたことが複雑化の原因。不要なら一切を削除するのがお勧め。</p>

<h4 id="section-6">5.1 基本構成</h4>
<p><code>assets/bootstrap-X.Y.Z/</code> 下のファイルが、<code>_includes/bootstrap-X.Y.Z/</code> 下の部品をインクルードする構成とした。</p>

<p>例えば、<code>assets/bootstrap-2.1.1/js/bootstrap.custom.js</code> は、次のように bootstrap の js 部品をインクルードする。</p>

<pre><code>---
---
{% include bootstrap-2.1.1/js/bootstrap-carousel.js %}
{% include bootstrap-2.1.1/js/bootstrap-collapse.js %}
{% include bootstrap-2.1.1/js/bootstrap-dropdown.js %}
{% include bootstrap-2.1.1/js/bootstrap-tab.js %}
{% include bootstrap-2.1.1/js/bootstrap-transition.js %}
</code></pre>

<p>コレのポイントは、YAML ディレクティブが空でも jekyll がちゃんと処理してくれて、自分自身のファイル形式に変換してくれること。</p>

<p>css ファイルは、<a href="http://twitter.github.com/bootstrap/customize.html">web-based Customizer</a> から適当なモジュールを選択し、ダウンロードしたファイルで代用している。そのうち LESS をインストールし、モジュール化したい。</p>

<h4 id="configyml--1">5.2 <code>_config.yml</code> の設定。</h4>

<h5 id="bootstrap"><code>bootstrap</code></h5>
<p><code>custom</code> を指定すると <code>/assets/bootstrap-X.Y.Z/</code> のカスタムファイルを用いる。この場合、<code>_includes/bootstrap-X.Y.Z/</code> から必要な部品をインクルードする。<code>original</code> あるいはそれ以外では、<a href="http://www.bootstrapcdn.com/">BootstrapCDN</a> にアップされているファイルを使う。</p>

<h5 id="bootstrapver"><code>bootstrap_ver</code></h5>
<p>バージョン X.Y.Z を指定。</p>

<h5 id="bootswatchver"><code>bootswatch_ver</code></h5>
<p>テーマファイルのバージョンを指定。</p>

<h5 id="responsivebp"><code>responsive_bp</code></h5>
<p>ナビゲーションバーを折り畳みタイプにする、メディアクエリ上のブレーク・ポイント。<code>assets/bootstrap-X.Y.Z/bootstrap-responsive.custom.css</code> に、この値をレンダリングする。</p>

<h5 id="jqueryver"><code>jquery_ver</code></h5>
<p>本当は 1.8.x を使いたいんだけれど、私のスマホ （Optimus L-01D/Android 2.3） のネイティブなブラウザが落ちる。Firefox なら大丈夫。たぶんブラウザのバグ （だと思う）。</p>

<h5 id="section-7">参考情報</h5>
<ul>
  <li><a href="http://developmentseed.org/blog/2011/09/09/jekyll-github-pages/">Using Jekyll and GitHub Pages for Our Site | Development Seed</a><br />
  YAML ディレクティブを空に設定し、CSS や json ファイルを作る方法。GitHub Pages でもちゃんと動く。</li>
</ul>

<h3 id="rakefile-">6. <code>Rakefile</code> のエントリー</h3>

<h4 id="preview"><code>preview</code></h4>
<p><code>rake preview</code> もしくは <code>rake</code> で <a href="http://localhost:4000/">http://localhost:4000/</a> でのテストが可能。</p>

<h4 id="post"><code>post</code></h4>
<p>新規投稿。次の書式が可能。</p>

<pre><code>rake post title="title of my article"
rake post["title of my article"]
</code></pre>

<h4 id="page"><code>page</code></h4>
<p>新規ページの作成。</p>

<pre><code>rake page name="about.html"
</code></pre>

<h4 id="setupremote"><code>setup_remote</code></h4>
<p>記事の公開に <code>git push</code> を使う場合の、リモートの設定。<code>push</code> するリモート側のブランチは、Rakefile 中のグローバルなハッシュ <code>CONFIG['deploy_branch']</code> で指定する。</p>

<h4 id="deploy"><code>deploy</code></h4>
<p><code>setup_remote</code> で設定したリモートサーバに記事を <code>git push</code> する。<code>_site</code> に出来た静的ファイルは、プレビュー中にも変わってしまうため、<code>_deploy</code> ディレクトリにコピーし、デプロイ用ファイルを確定させる。</p>

<h3 id="gemfile-">7. <code>Gemfile</code> 関連</h3>

<h4 id="gem-jekyll"><code>gem 'jekyll'</code></h4>
<p><a href="http://rubygems.org/">RubyGems</a> に現在公開されている <a href="http://rubygems.org/gems/jekyll">jekyll</a> は pygmentize ごとにプロセスを起動するため、処理時間がかかるとのこと （情報源：<a href="http://d.hatena.ne.jp/hokaccha/20120808/1344436656">pygmentsが原因でjekyllが重くなってた - hokaccha.hamalog v2</a>）。GitHub 上の最新バージョンを使う方が吉かも。</p>

<h4 id="gem-gsl"><code>gem 'gsl'</code></h4>
<p>jekyll のソースを読む限り、<code>lsi: false</code> を指定すると、単に最新の記事数件を 「関連する記事」 とするだけである。<code>lsi: true</code> だと、少しはマシになるらしいが、処理時間がかかる模様。<a href="http://rubygems.org/gems/gsl">gsl</a> を使えば、10倍高速化できるとのこと （未確認）。</p>

<h4 id="gem-rake"><code>gem 'rake'</code></h4>
<p>いつの間にか、システムにインストールしたバージョンを 0.9.2.2 に上げてしまったようで、Octopress が指定しているバージョン 0.9.2 と競合するようになった。Octopress 側を <code>bundle exec rake ...</code> で対応しているが、そもそも各アプリごとに gem を分けた方が良いかもしれない。</p>

<h5 id="bundler-">bundler の参考サイト</h5>
<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td>[[ruby]最初に知っておけば良かったbundlerの使い方 rails編</td>
          <td>Into my web](http://kozo002.blogspot.jp/2012/01/rubybundler.html)</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li><a href="http://blog.mirakui.com/entry/20100703/1278165723">gem管理の新標準ツール”Bundler”のTips - 昼メシ物語</a><br />
  システムの gem と分離させる方法。</li>
  <li><a href="http://d.hatena.ne.jp/itmammoth/20110420/1303309226">複数のRailsアプリのgemを管理するためbundlerを使用する - Oh! My! Enter! ～バッチを起動しようと勢いよくキーを叩いたら、それはシフトキーだった～</a><br />
  gem をすべてアンインストールして、bunder で管理しましょう、の記事。</li>
</ul>

<h3 id="section-8">8. その他、テンプレート作成で参考になったサイト</h3>

<h4 id="jekyllliquid-">jekyll、Liquid の解説</h4>
<ul>
  <li>
    <p><a href="http://rubydoc.info/gems/liquid/2.2.2/Liquid/StandardFilters">Module: Liquid::StandardFilters - Documentation for liquid (2.2.2)</a><br />
  <a href="https://help.github.com/articles/using-jekyll-with-pages">GitHub 上の jekyll バージョン</a> で使える、Liquid 2.2.2 の標準フィルタに関するマニュアル。</p>
  </li>
  <li>
    <p><a href="http://melborne.github.com/2012/05/13/first-step-of-jekyll/">30分のチュートリアルでJekyllを理解する</a><br />
  1ステップづつ、実例を交えながら解説されていて、Jekyll に関しては、ココが一番詳しい。プラグインの作り方がお役立ち。<a href="http://melborne.github.com/2012/05/09/translation-of-jekyll-plugins/">Jekyll Wiki Pluginsの説明ページを勝手に翻訳しました</a> が分かり易い。</p>
  </li>
  <li>
    <p><a href="http://web.sfc.keio.ac.jp/~t10078si/wpx/?p=862">jekyll+github pagesでブログを作る « fragments</a><br />
  git、jekyll のインストール、<a href="">jekyll bootstrap</a> のインストールと構成、記事作成、GitHub への公開。pygments による Syntax highlight の説明アリ。</p>
  </li>
  <li>
    <p><a href="http://krakenbeal.blogspot.jp/2012/05/ruby-jekyll-jekyll-bootstrap.html">ruby と jekyll と jekyll-bootstrap で静的サイトを作る - KRAKENBEAL RECORDS</a><br />
  インストールから公開までの概要。末尾の参考文献がお役立ち。</p>
  </li>
  <li>
    <p><a href="http://css.studiomohawk.com/jekyll/2011/06/11/jekyll/">Jekyll | CSS Radar | Mini Books For Front End Developers</a><br />
  jekyll の基本的解説。Rakefile の作り方がお役立ち。</p>
  </li>
  <li>
    <p><a href="http://css.studiomohawk.com/less/2011/04/03/use_less_to_clean_up_your_css/">LESS - CSSプリプロフェッサ | CSS Radar | Mini Books For Front End Developers</a><br />
  LESS の使い方を含む解説。less.js を使った開発時の使い方と、リリース用のコンパイル方法が解説されている。</p>
  </li>
  <li>
    <p><a href="http://brizzled.clapper.org/blog/2012/03/05/using-twitter-bootstrap-with-jekyll/">Using Twitter Bootstrap with Jekyll - Brizzled</a><br />
  CSS の生成を自動化する LESS 用 Rakefile の書き方など。</p>
  </li>
</ul>

<h4 id="bootstrap-1">Bootstrap</h4>
<ul>
  <li><a href="http://www.bootstrapcdn.com/">BootstrapCDN</a><br />
  Bootstrap と Boostwatch の CDN。</li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopressサイトのウェブマスター登録]]></title>
    <link href="http://tokkonopapa.github.com/blog/2012/07/25/site-verification/"/>
    <updated>2012-07-25T00:03:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2012/07/25/site-verification</id>
    <content type="html"><![CDATA[<p>このサイトを Google ウェッブマスターツールに登録していたのだが、
久々にウェッブマスターツールを開いてみたら、ず〜と、サイト所有権
の確認が済んでいなかったことが判明。その時のメモ。</p>

<p>別に SEO とか気にしてないんだけど、どういうキーワードで皆さんが
見てくれているかをあらためて知り、ちょっと幸せな気分 ♪</p>

<!--more-->

<h3 id="section">おすすめの方法</h3>
<p>ウェッブマスターツールが指定する確認用ファイルを <code>_deploy</code> 
ディレクトリにコピーし、リモートにプッシュすると、一時的にはうまくいく。</p>

<pre><code>cd _deploy
git add google225275b4fc00ad7d.html
git commit -m "add google site verification file"
git push
</code></pre>

<p>GitHub だと、このファイルにアクセスできるようになるには、ちょっとタイムラグが
ある感じなので、ちゃんとアクセスできるようになってから、「確認」すべし。</p>

<p>ただしこの方法では、次回記事をデプロイした時に確認用ファイルが消されてしまう。
Rakefile を書き換えれば良いのだけれど、お手軽には次の「別な方法」が簡単。</p>

<p><img src="https://lh3.googleusercontent.com/-piNUXPKHD70/UA63js9yEeI/AAAAAAAAANI/fDEQeMMiO8o/s480/site-verification.png" alt="推奨：HTMLファイルをアップロード" /></p>

<h3 id="section-1">別な方法</h3>
<p><a href="http://support.google.com/webmasters/bin/answer.py?hl=ja&amp;answer=79812">メタ タグ - ウェブマスター ツール ヘルプ</a> に
従って、<code>source/_includes/head.html</code> にメタタグを記述し、ページを再生成後、デプロイするだけ。</p>

<pre><code>vi source/_includes/head.html
... メタタグ &lt;meta name="google-site-verification" content="..." /&gt; を挿入
rake generate
rake deploy
</code></pre>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[GitHubber達が使うEmojiの出し方]]></title>
    <link href="http://tokkonopapa.github.com/blog/2012/06/27/github-emoji/"/>
    <updated>2012-06-27T00:39:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2012/06/27/github-emoji</id>
    <content type="html"><![CDATA[<h2 id="githubberemoji">GitHubber達が使うEmojiの出し方</h2>

<p><a href="http://en.wikipedia.org/wiki/Emoji" title="Emoji - Wikipedia, the free encyclopedia">Emoji</a> って、英語になってるんだ！ <a href="http://en.wikipedia.org/wiki/Manga" title="Manga - Wikipedia, the free encyclopedia">Manga</a> と同じだネェ。日本のガラケー文化もなかなかじゃん。</p>

<p>ってことで、GitHub の Issues とかで使える絵文字出し方。例えば、「:smile:」とやれば <img src="https://lh3.googleusercontent.com/-SjzsgPWV6rw/T-nWXjJHlUI/AAAAAAAAAMc/aKqow-jBQ-c/s20/smile.png" alt="Smile" title="Smile" />、プロジェクトが完成してお祝いしたいときには、「:beer:」で <img src="https://lh4.googleusercontent.com/-uJD5Y_R8Ff4/T-nWXxwnPWI/AAAAAAAAAMg/vLoHE0UzevI/s20/beer.png" alt="カンパ〜イ" title="カンパ〜イ" /> となるわけ。</p>

<!--more-->

<p>最初のアナウンスは、2011年3月11日の GitHub Blog の記事。</p>

<p><a href="https://github.com/blog/816-emoji" title="Emoji!"><img src="https://lh3.googleusercontent.com/-vyGJUXvoXP4/T-nKeC_Vb0I/AAAAAAAAAKI/zVO1LtwkLz4/s560/GitHubBlog.png" alt="Emoji!" title="Emoji!" /></a></p>

<p>どこで使えるでしょうか？的なコメントになっているが、要はコミュニケーション手段である Issues のコメント欄とか、Gist の Markdown とかで使える。</p>

<p>で、これの元になっているのが、<a href="https://github.com/arvida/emoji-cheat-sheet.com" title="arvida/emoji-cheat-sheet.com on GitHub">arvida/emoji-cheat-sheet.com</a> と、絵文字コードを簡単にコピペできるチートシート。</p>

<p><a href="http://www.emoji-cheat-sheet.com/" title="Emoji cheat sheet for Campfire and GitHub"><img src="https://lh6.googleusercontent.com/-1AGOcU3DpeE/T-nOy_Ip5sI/AAAAAAAAAK4/koElaC5Tl7k/s600/CheatSheet.png" alt="チートシート" title="チートシート" /></a></p>

<p>で、Gist に投稿すると、こうなる。</p>

<p><a href="https://gist.github.com/2989052"><img src="https://lh5.googleusercontent.com/-hG7jRIKJXdI/T-nRF6JgaOI/AAAAAAAAALM/LrgQy79oDnA/s600/GitHubMarkdown.png" alt="Gist" title="Gist" /></a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Git英文マニュアルを読むための予備知識]]></title>
    <link href="http://tokkonopapa.github.com/blog/2012/01/17/prior-knowledge-for-git-manual/"/>
    <updated>2012-01-17T00:18:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2012/01/17/prior-knowledge-for-git-manual</id>
    <content type="html"><![CDATA[<p>エンジニアたるもの、<a href="http://schacon.github.com/git/git.html" title="git(1) Manual Page">マニュアル</a> を読み込むべし。そのためには、Git 内部について若干の予備知識が必要。
ただしその深みにはまると、</p>

<blockquote>
  <p>Git - the stupid content tracker</p>
</blockquote>

<p>の意味がよく分かる。</p>

<p>ということで、まずは用語の理解から。</p>

<!--more-->

<h2 id="git-">Git オブジェクトのタイプ</h2>
<ul>
  <li>
    <p>blob<br />
ファイルの中身を表すオブジェクト</p>
  </li>
  <li>
    <p>tree<br />
ディレクトリの中身の一覧とどのファイルがどの blob に対応するかを表すオブジェクト</p>
  </li>
  <li>
    <p>commit<br />
ルートツリーおよびすべてのメタデータへのポインタを含むオブジェクト</p>
  </li>
  <li>
    <p>tag<br />
特定のコミットへのポインタを含むオブジェクト</p>
  </li>
</ul>

<p><img src="https://lh5.googleusercontent.com/-DByBDLtfe4c/UA7ECC7uDsI/AAAAAAAAANU/iAQ2bVtSf3U/s500/blob-object.png" width="500" height="338" title="Git オブジェクト" /><br />
（出典：<a href="http://progit.org/book/ja/ch3-1.html">Pro Git - Pro Git 3.1 Git のブランチ機能</a>）</p>

<p>上の図で、commit 直下の blob は、カレントディレクトリ <code>.</code> と考えると分かり易い。</p>

<h4 id="section">関連リンク</h4>
<ul>
  <li><a href="http://progit.org/book/ja/ch3-1.html#id58" title="ブランチとは">Pro Git - Pro Git 3.1 Git のブランチ機能 ブランチとは</a></li>
  <li><a href="http://progit.org/book/ja/ch2-6.html#id46" title="タグ">Pro Git - Pro Git 2.6 Git の基本 タグ</a></li>
</ul>

<h2 id="section-1">オブジェクトの指定</h2>
<p>全てのオブジェクトには、フラットな構造のリビジョンがある。リビジョンからオブジェクトを指定可能。</p>

<ul>
  <li>
    <p>SHA-1ハッシュ<br />
オブジェクトの内容に応じて算出されるチェックサム。40字もしくは7文字程度の16進数で表す。</p>
  </li>
  <li>
    <p>特定の commit オブジェクトを表すシンボルも使用可能。
HEAD（変更の基準となるコミットの名前）、
ORIG_HEAD（HEAD に対する変更を行う前の HEAD）、
FETCH_HEAD（<code>git fetch</code> したリモート・リポジトリのブランチ）、
MERGE_HEAD（<code>git merge</code> 実行時のマージ元のコミット）、
CHERRY_PICK_HEAD（<code>git cherry-pick</code> 実行時のコミット）。</p>
  </li>
</ul>

<h4 id="section-2">関連リンク</h4>
<ul>
  <li><a href="http://progit.org/book/ja/ch1-3.html#git" title="Gitは完全性を持つ">Pro Git - Pro Git 1.3 使い始める Gitの基本</a></li>
</ul>

<h2 id="section-3">リビジョン指定のバリエーション</h2>
<ul>
  <li>
    <p><em>&lt;refname&gt;</em><br />
<code>master</code>、<code>heads/master</code>、<code>refs/heads/master</code> など。</p>
  </li>
  <li>
    <p><em>&lt;refname&gt;@{&lt;date&gt;}</em><br />
<code>master@{yesterday}</code>、<code>HEAD@{1 month 2 weeks 3 days 1 hour 1 second ago}</code>、<code>HEAD@{1979-02-26 18:30:00}</code> など。</p>
  </li>
  <li>
    <p><em>&lt;refname&gt;@{&lt;n&gt;}</em><br />
<em>n</em> だけ前の参照。<code>HEAD@{1}</code> など。<em>&lt;refname&gt;</em> の省略は現在のブランチ。</p>
  </li>
  <li>
    <p><em>&lt;rev&gt;^</em> あるいは <em>&lt;rev&gt;^&lt;n&gt;</em><br />
<em>&lt;rev&gt;</em> から見て、commit オブジェクトを親→兄弟へと世代順・生成順にたどる場合の1番目、あるいは_n_番目のオブジェクト。<code>HEAD^</code> は <code>HEAD^1</code> と同じ。</p>
  </li>
  <li>
    <p><em>&lt;rev&gt;~&lt;n&gt;</em><br />
<em>&lt;rev&gt;</em> から見て、commit オブジェクトを直系の親だけをたどった場合の_n_番目の親。</p>
  </li>
  <li>
    <p><em>&lt;rev&gt;{&lt;type&gt;}</em><br />
指定リビジョンから参照できるオブジェクト。<code>HEAD^{tree}</code>、<code>v0.9^{commit}</code> など。<em>type</em> を省略すると？</p>
  </li>
  <li>
    <p><em>&lt;rev&gt;{/&lt;text&gt;}</em><br />
指定リビジョンからさかのぼり、commit メッセージに正規表現 <em>text</em> を含む最初のオブジェクトを参照する。</p>
  </li>
  <li>
    <p><em>:/&lt;text&gt;</em><br />
commit メッセージに正規表現 <em>text</em> を含む最初のオブジェクトを表示。<code>:/!</code> で続けて検索。</p>
  </li>
  <li>
    <p><em>&lt;rev&gt;:&lt;path&gt;</em><br />
指定リビジョンの blob（ファイル）あるいは tree（ディレクトリ）を参照する。<code>HEAD:README</code>、<code>master:./README</code> など。</p>
  </li>
</ul>

<h4 id="stupid-">とってもバカげた（stupid な）リビジョンの指定</h4>
<pre><code>G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A

A =      = A^0
B = A^   = A^1     = A~1
C = A^2  = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = F^   = B^3^    = A^^3^
J = F^2  = B^3^2   = A^^3^2
</code></pre>

<h4 id="section-4">関連リンク</h4>
<ul>
  <li><a href="http://schacon.github.com/git/git-rev-parse.html" title="git-rev-parse(1)">git-rev-parse(1) Manual Page</a></li>
</ul>

<h2 id="section-5">識別子の用語</h2>
<ul>
  <li>
    <p>&lt;object&gt;<br />
あらゆるタイプのオブジェクトの名前を表す。</p>
  </li>
  <li>
    <p>&lt;blob&gt;<br />
blob（ファイル）オブジェクトの名前を表す。</p>
  </li>
  <li>
    <p>&lt;tree&gt;<br />
tree（ディレクトリ）オブジェクトの名前を表す。</p>
  </li>
  <li>
    <p>&lt;commit&gt;<br />
commit オブジェクトの名前を表す。</p>
  </li>
  <li>
    <p>&lt;tree-ish&gt;<br />
tree、commit あるいは tag オブジェクトの名前を表す。</p>
  </li>
  <li>
    <p>&lt;commit-ish&gt;<br />
commit あるいは tag オブジェクトの名前を表す。</p>
  </li>
  <li>
    <p>&lt;type&gt;<br />
オブジェクトのタイプ。<code>blob</code>、<code>tree</code>、<code>commit</code> あるいは <code>tag</code>。</p>
  </li>
  <li>
    <p>&lt;file&gt;、&lt;path&gt;<br />
ファイル名。</p>
  </li>
  <li>
    <p>&lt;tag&gt;<br />
有効な tab 名。即ち <code>refs/tags/&lt;tag&gt;</code>。</p>
  </li>
  <li>
    <p>&lt;head&gt;<br />
有効な head 名。即ち <code>refs/heads/&lt;head&gt;</code>。</p>
  </li>
  <li>
    <p>HEAD<br />
現在のブランチの head。</p>
  </li>
</ul>

<h4 id="section-6">関連リンク</h4>
<ul>
  <li><a href="http://schacon.github.com/git/git.html#_identifier_terminology" title="Identifier Terminology">git(1) Manual Page - Identifier Terminology</a></li>
  <li><a href="http://schacon.github.com/git/gitglossary.html" title="gitglossary(7)">gitglossary(7) Manual Page</a></li>
</ul>

<h2 id="git--1">Git コマンドのオプション指定</h2>
<ul>
  <li>
    <p>一文字系:<br />
 <code>-a</code> とか <code>-h</code> とか。</p>
  </li>
  <li>
    <p>単語系:<br />
<code>--all</code> とか <code>--help</code> とか。</p>
  </li>
  <li>
    <p>ファイル名の指定:<br />
  <code>--</code> 以降に指定することで、直前のオプション引数と区別する。</p>
  </li>
</ul>

<h2 id="git--2">Git の内部</h2>
<p>内部の実例を見ると、イメージがわき易いかも。</p>

<h3 id="git--3">Git のファイル構成</h3>
<pre><code>$ tree -F .git
.git/
├── COMMIT_EDITMSG
├── FETCH_HEAD
├── HEAD
├── ORIG_HEAD
├── branches/
├── config
├── description
├── hooks/
│   ├── applypatch-msg.sample*
│   ├── commit-msg.sample*
│   ├── post-update.sample*
│   ├── pre-applypatch.sample*
│   ├── pre-commit.sample*
│   ├── pre-rebase.sample*
│   ├── prepare-commit-msg.sample*
│   └── update.sample*
├── index
├── info/
│   └── exclude
├── logs/
│   ├── HEAD
│   └── refs/
│       ├── heads/
│       │   ├── gh-pages
│       │   └── master
│       └── remotes/
│           └── origin/
│               └── gh-pages
└── refs/
    ├── heads/
    │   ├── gh-pages
    │   └── master
    ├── remotes/
    │   └── origin/
    │       ├── HEAD
    │       └── gh-pages
    └── tags/
        └── v1.0.1
</code></pre>

<h3 id="refs-">refs 内のオブジェクト</h3>
<pre><code>$ git show-ref
0acbba3b5bd52b9e169077a997bcf5d5f37faa96 refs/heads/gh-pages
8403eb93d7e03ca02275d4027d9deadc51dfe37f refs/heads/master
8403eb93d7e03ca02275d4027d9deadc51dfe37f refs/remotes/origin/HEAD
0acbba3b5bd52b9e169077a997bcf5d5f37faa96 refs/remotes/origin/gh-pages
8403eb93d7e03ca02275d4027d9deadc51dfe37f refs/remotes/origin/master
934f4f895321735829e4d8339c5963f54327bcc1 refs/tags/v1.0.0
d43e1ccc84a3930597d50c0f8e6da614c0d05a5a refs/tags/v1.0.1
</code></pre>

<h3 id="section-7">ステージされてるオブジェクト</h3>
<pre><code>$ git cat-file -p HEAD^{tree}
040000 tree 67036e7bea736aa461bf7e737b74925db941999f  PIE-1.0beta5
100644 blob 91b43a3e6572f2ffbe3b1d777d04104a976be686  README.md
040000 tree 8041e8916721cbe67da22fb03d668a8e2976d22a  css
040000 tree 3857137c4df661ac2b60461ff6ec7e393b54c638  google-code-prettify
100755 blob 49b085dd91dfafe28507007e8eb4bac44b20080c  index.html
040000 tree 436ea11960214eac6f68c3b0f935a078903d7062  js
</code></pre>

<h4 id="section-8">関連リンク</h4>
<ul>
  <li><a href="http://schacon.github.com/git/gitrepository-layout.html" title="gitrepository-layout(5)">gitrepository-layout(5) Manual Page</a></li>
  <li><a href="http://schacon.github.com/git/githooks.html" title="githooks(5)">githooks(5) Manual Page</a></li>
</ul>

<h2 id="section-9">日本語リソース</h2>
<ul>
  <li><a href="http://bit.ly/yG6pRv">Pro Git 日本語版PDF (2011-12-10).pdf</a></li>
  <li><a href="http://www8.atwiki.jp/git_jp/">Git入門 - ドキュメント</a></li>
  <li><a href="http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/user-manual.html">Git ユーザマニュアル (バージョン 1.5.3 以降用)</a></li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopress用Tag Cloudプラグインをリリースします]]></title>
    <link href="http://tokkonopapa.github.com/blog/2012/01/04/octopress-plugin-for-categories-cloud/"/>
    <updated>2012-01-04T21:00:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2012/01/04/octopress-plugin-for-categories-cloud</id>
    <content type="html"><![CDATA[<p>WordPress などの動的 CMS から Octopress に乗り換える記事が目につくが、まだまだプラグインが少ない。
ふと <a href="http://octopress.org/">Octopress</a> も <a href="http://jekyllrb.com/">jekyll</a> のラッパーだということを思い出し、<a href="https://github.com/mojombo/jekyll/wiki/Plugins">Wiki に載ってるプラグイン</a> から易しそうなタグクラウドを3つばかり試してみた。</p>

<ul>
  <li><a href="https://gist.github.com/710577">Jekyll tag cloud / tag pages plugin — Gist</a></li>
  <li><a href="http://vitobotta.com/how-to-migrate-from-wordpress-to-jekyll/">Migrating from Wordpress to Jekyll - Part 2: <strong>Everything</strong> you need to know about Jekyll</a></li>
  <li><del>Yeban’s Weblog - Jekyll - Tag Cloud</del>
<!-- https://github.com/yeban/yeban.github.com/blob/master/_plugins/tag_cloud.rb --></li>
</ul>

<p>結果は、どれも動作しない…</p>

<!--more-->

<p>jekyll には <code>site.categories</code> や <code>site.tags</code> という <a href="https://github.com/mojombo/jekyll/wiki/Template-Data">Template Data</a> があるが、単に Octopress に <code>tags</code> が実装されていないだけだと思う。</p>

<p>ということで、<a href="https://gist.github.com/1577100" title="Gist で公開中">3番目のコードを動くようにしてみた</a> 。文字の大きさをログスケールで変えたりしていて、イイ感じ。</p>

<p>他にも検索してみると、台湾サイトの記事「<a href="http://blog.eddie.com.tw/2011/12/05/add-catetories-to-sidebar-in-octopress/">あなたのOctopressの記事のカテゴリを高めるために</a>」（by Google 翻訳）で、サイドバーにタグクラウドを作るコード（ライセンスは非表記）が紹介されているのを発見。中国系 Octopress サイトでは結構使われている様子。</p>

<p>で、試してみたが、<code>rake preview</code> を実行時、3秒に1度 <code>regenerate</code> してしまい調子が悪い。<code>generate</code> 時にテンプレートの HTML ファイルをダイレクトに生成しているため、<code>preview</code> 時の監視プロセスにより更新判断され、再 <code>generate</code> されてしまうのだ。</p>

<p>ということで、この無限地獄を解消すべく、Octopress プラグインのルールに従って作り変えてみた。</p>

<h3 id="section">使い方</h3>

<pre><code>{% tag_cloud [counter:true] %}
{% category_list [counter:true] %}
</code></pre>

<h4 id="section-1">オプション</h4>

<ul>
  <li>counter:<br />
タグの後ろにカッコ付きで記事数を付ける場合には <code>true</code> を指定する</li>
</ul>

<h4 id="section-2">使用例</h4>

<h5 id="sourceincludecustomasidestagcloudhtml">source/_include/custom/asides/tag_cloud.html</h5>

<div class="bogus-wrapper"><notextile><figure class="code"> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;section&gt;</span>
</span><span class="line">  <span class="nt">&lt;h1&gt;</span>Tag Cloud<span class="nt">&lt;/h1&gt;</span>
</span><span class="line">    <span class="nt">&lt;span</span> <span class="na">id=</span><span class="s">&quot;tag-cloud&quot;</span><span class="nt">&gt;</span>{% tag_cloud counter:true %}<span class="nt">&lt;/span&gt;</span>
</span><span class="line"><span class="nt">&lt;/section&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h5 id="sourceincludecustomasidescategorylisthtml">source/_include/custom/asides/category_list.html</h5>

<div class="bogus-wrapper"><notextile><figure class="code"> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;section&gt;</span>
</span><span class="line">  <span class="nt">&lt;h1&gt;</span>Categories<span class="nt">&lt;/h1&gt;</span>
</span><span class="line">    <span class="nt">&lt;ul</span> <span class="na">id=</span><span class="s">&quot;category-list&quot;</span><span class="nt">&gt;</span>{% category_list counter:true %}<span class="nt">&lt;/ul&gt;</span>
</span><span class="line"><span class="nt">&lt;/section&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h5 id="sasscustomstylesscss">sass/custom/_styles.scss</h5>

<div class="bogus-wrapper"><notextile><figure class="code"> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="css"><span class="line"><span class="nf">#tag-cloud</span> <span class="p">{</span>
</span><span class="line">  <span class="k">line-height</span><span class="o">:</span> <span class="m">2.2em</span><span class="p">;</span>
</span><span class="line"><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h5 id="configyml">_config.yml</h5>

<pre><code># list each of the sidebar modules you want to include, in the order you want them to appear.
# To add custom asides, create files in /source/_includes/custom/asides/ and add them to the list like 'custom/asides/custom_aside_name.html'
default_asides: [custom/asides/tag_cloud.html, custom/asides/tag_cloud.html, ...]
</code></pre>

<h5 id="section-3">適用例</h5>

<p><img class="center" src="https://lh4.googleusercontent.com/-rXn3Ss4_7RI/TwWtjZuBPiI/AAAAAAAAAJA/La0HgCZhcMU/s520/TagCloudPlugin.png" width="520" height="400" title="タグクラウドとカテゴリリスト" /></p>

<h3 id="section-4">ダウンロードとインストール</h3>

<ul>
  <li><a href="https://github.com/tokkonopapa/octopress-tagcloud">tokkonopapa/octopress-tagcloud - GitHub</a><br />
サイドバーに表示するために必要な最低限追加すべきファイルをアップしてある。
自分の Octopress リポジトリとは別にクローンし、ファイルをコピーして使う。</li>
</ul>

<div class="bogus-wrapper"><notextile><figure class="code"> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
</pre></td><td class="code"><pre><code class="text"><span class="line">・
</span><span class="line">├─ plugins/
</span><span class="line">│  └── tag_cloud.rb
</span><span class="line">└─ source/
</span><span class="line">   └─ _includes/
</span><span class="line">      └─ custom/
</span><span class="line">         └─ asides/
</span><span class="line">            ├─ category_list.html
</span><span class="line">            └─ tag_cloud.html
</span></code></pre></td></tr></table></div></figure></notextile></div>

<ul>
  <li><del>tokkonopapa/octopress - GitHub</del><br />
<del>Octopress 本家のリポジトリをクローンし、別ブランチ（<code>tagcloud</code>）に上記ファイルを追加したもの。自分の Octopress リポジトリ内でリモートリポジトリとして追加し、<code>tagcloud</code> ブランチから追加すべきファイルをチェックアウトする（と出来るハズ）。</del>（このリポジトリは削除しました）</li>
</ul>

<h3 id="section-5">後記</h3>

<p>作者に「GitHub に載せたんだけど、ライセンスとかどう？」と聞いたら、「MIT でいいよ」とのこと。</p>

<p><a href="http://blog.eddie.com.tw/2011/12/05/add-catetories-to-sidebar-in-octopress/#disqus_thread"><img class="center" src="https://lh6.googleusercontent.com/-UNjZ3v2T--4/Twb6V-8YVfI/AAAAAAAAAJY/ulclIKKDhIg/s430/screenshot.png" width="420" height="430" title="ライセンスの確認" /></a></p>

<p>ただ Ruby という言語を触るのは今回が初めてなため、無駄の省き方も分かっていない。さらに、今回のようなプラグインを、Git という仕組みを使ってどうやったら本体にスムーズに導入できるのかも課題。</p>

<p>老練な Git 職人さん、白馬に乗った Rubiest さんに突っ込んでもらえると嬉しい :D</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopressのスタイル設定とカスタマイズ]]></title>
    <link href="http://tokkonopapa.github.com/blog/2012/01/03/customizing-octopress-styles/"/>
    <updated>2012-01-03T15:46:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2012/01/03/customizing-octopress-styles</id>
    <content type="html"><![CDATA[<p>Octopress には、スタイル設定に <a href="http://sass-lang.com/" title="Syntactically Awesome StyleSheets">Sass</a> と <a href="http://compass-style.org/">Compass</a> が導入されているため、カスタマイズには、SCSS（Sassy CSS）に関する知識が必要である。</p>

<p>この際だから覚えてしまうことにする。</p>

<!--more-->

<h3 id="sass-">Sass 関連の参考資料</h3>
<p>たぶん何度も読み直すと思うので、ここにメモ。</p>

<h4 id="sass">Sass</h4>

<ul>
  <li><a href="http://hail2u.net/documents/ala-getting-started-with-sass.html">Sassで行こう！</a></li>
  <li><a href="http://hail2u.net/documents/sass-tutorial.html">Sass - チュートリアル</a></li>
  <li><a href="http://hail2u.net/documents/sass-and-sassy-css.html">Sass、そしてSassy CSS (SCSS)</a></li>
  <li><a href="http://nodot.jp/articles/singletoninsass">Sass で Singleton を実現し、安心してクラスを再利用する - nodot</a></li>
  <li><a href="http://tech.naver.jp/blog/?p=845">sassの抑えておきたいfunctionの使い方 « NAVER Engineers’ Blog</a></li>
</ul>

<h4 id="compass">Compass</h4>

<ul>
  <li><a href="http://compass-style.org/reference/compass/">Compass Core Framework - Compass Documentation</a></li>
  <li><a href="http://compass-style.org/index/mixins/">All Mixins - Compass Documentation</a></li>
</ul>

<h3 id="octopress--sass-">Octopress の Sass 構成</h3>
<pre><code>sass/
├─ screen.scss              # 全ての定義の始まりであり、終わり
├─ _base.scss               # 各 base/* の読み込み
├─ base/
│  ├─ _utilities.scss       # sass の関数など
│  ├─ _solarized.scss       # コードスニペットの色定義
│  ├─ _theme.scss           # テーマカラーに関する定義など
│  ├─ _typography.scss      # 各 HTML 要素のフォントに関する定義
│  └─ _layout.scss          # メディアクエリ、サイドバーの折り畳みなど
├─ custom/
│  ├─ _colors.scss          # テーマカラーのカスタマイズ用
│  ├─ _fonts.scss           # フォント種類のカスタマイズ用
│  ├─ _layout.scss          # パディング、マージンのカスタマイズ用
│  └─ _styles.scss          # その他のスタイルに関するカスタマイズ用
├─ _partials.scss           # 各 partials/* を読み込み
└─ partials/
   ├─ _header.scss          # ヘッダー部に関するスタイル定義
   ├─ _navigation.scss      # ナビゲーションバーに関するスタイル定義
   ├─ _blog.scss            # 記事に関するスタイル定義
   ├─ _sharing.scss         # ソーシャルボタンに関するスタイル定義
   ├─ _syntax.scss          # コードスニペット関連のスタイル定義
   ├─ _archive.scss         # アーカイブ、カテゴリページのスタイル定義
   ├─ _sidebar.scss         # sidebar/* の読み込み
   ├─ sidebar/
   │   ├─ _base.scss        # サイドバーの汎用スタイル定義
   │   ├─ _twitter.scss     # セレクタ "#tweets" の定義
   │   ├─ _googleplus.scss  # セレクタ ".googleplus" の定義
   │   ├─ _pinboard.scss    # セレクタ "#pinboard_linkroll" の定義
   │   └─ _delicious.scss   # セレクタ ".delicious-posts" の定義
   └─ _footer.scss          # フッター部に関するスタイル定義
</code></pre>

<h4 id="screenscss">screen.scss</h4>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>screen.scss </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
</pre></td><td class="code"><pre><code class="css"><span class="line"><span class="k">@import</span> <span class="s2">&quot;compass&quot;</span><span class="p">;</span>
</span><span class="line"><span class="k">@include</span> <span class="nt">global-reset</span><span class="p">;</span>
</span><span class="line"><span class="k">@include</span> <span class="nt">reset-html5</span><span class="p">;</span>
</span><span class="line">
</span><span class="line"><span class="k">@import</span> <span class="s2">&quot;custom/colors&quot;</span><span class="p">;</span>
</span><span class="line"><span class="k">@import</span> <span class="s2">&quot;custom/fonts&quot;</span><span class="p">;</span>
</span><span class="line"><span class="k">@import</span> <span class="s2">&quot;custom/layout&quot;</span><span class="p">;</span>
</span><span class="line"><span class="k">@import</span> <span class="s2">&quot;base&quot;</span><span class="p">;</span>
</span><span class="line"><span class="k">@import</span> <span class="s2">&quot;partials&quot;</span><span class="p">;</span>
</span><span class="line"><span class="k">@import</span> <span class="s2">&quot;custom/styles&quot;</span><span class="p">;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>1〜3行目は、<a href="http://compass-style.org/reference/compass/reset/utilities/">Compass Reset Utilities</a> の Mixin を利用するための設定。5〜10行目の読み込み順が重要。スタイル定義の優先順位が決まる。</p>

<h3 id="section">カスタマイズ例</h3>
<p><code>sass/custom/</code> 以下のファイルでカスタマイズする。</p>

<h4 id="colorscss">_color.scss</h4>
<p>まずはテーマカラーの調整。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>_color.scss </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
</pre></td><td class="code"><pre><code class="css"><span class="line"><span class="o">//</span> <span class="nt">Change</span> <span class="nt">colors</span> <span class="nt">defined</span> <span class="nt">in</span> <span class="nt">_theme</span><span class="nc">.scss</span>
</span><span class="line"><span class="err">$</span><span class="nt">header-bg</span><span class="o">:</span> <span class="nf">#04263e</span> <span class="o">!</span><span class="nt">default</span><span class="o">;</span>
</span><span class="line"><span class="err">$</span><span class="nt">nav-bg</span><span class="o">:</span> <span class="nt">desaturate</span><span class="o">(</span><span class="nt">lighten</span><span class="o">(</span><span class="nf">#a0bfd6</span><span class="o">,</span> <span class="nt">18</span><span class="o">),</span> <span class="nt">5</span><span class="o">)</span> <span class="o">!</span><span class="nt">default</span><span class="o">;</span>
</span><span class="line"><span class="err">$</span><span class="nt">footer-bg</span><span class="o">:</span> <span class="nf">#d1e4f2</span> <span class="o">!</span><span class="nt">default</span><span class="o">;</span>
</span><span class="line"><span class="err">$</span><span class="nt">footer-color</span><span class="o">:</span> <span class="nf">#666</span> <span class="o">!</span><span class="nt">default</span><span class="o">;</span>
</span><span class="line"><span class="err">$</span><span class="nt">footer-link-color-hover</span><span class="o">:</span> <span class="nt">darken</span><span class="o">(</span><span class="err">$</span><span class="nt">footer-bg</span><span class="o">,</span> <span class="nt">50</span><span class="o">)</span> <span class="o">!</span><span class="nt">default</span><span class="o">;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="stylesscss">_styles.scss</h4>
<p>その他の細かなスタイルのカスタマイズ。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>_styles.scss </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
<span class="line-number">15</span>
<span class="line-number">16</span>
<span class="line-number">17</span>
<span class="line-number">18</span>
<span class="line-number">19</span>
<span class="line-number">20</span>
<span class="line-number">21</span>
<span class="line-number">22</span>
<span class="line-number">23</span>
</pre></td><td class="code"><pre><code class="css"><span class="line"><span class="o">//</span> <span class="nt">Change</span> <span class="nt">definitions</span> <span class="nt">in</span> <span class="nt">_typography</span><span class="nc">.scss</span>
</span><span class="line"><span class="k">@mixin</span> <span class="nt">header-text</span> <span class="p">{</span>
</span><span class="line">  <span class="k">@include</span> <span class="nt">text-shadow</span><span class="o">(</span><span class="nt">-5px</span> <span class="nt">-5px</span> <span class="nt">10px</span> <span class="nf">#000</span><span class="o">)</span><span class="p">;</span>
</span><span class="line"><span class="p">}</span>
</span><span class="line">
</span><span class="line"><span class="nt">body</span> <span class="o">&gt;</span> <span class="nt">header</span> <span class="nt">h1</span> <span class="p">{</span>
</span><span class="line">  <span class="o">@</span><span class="n">include</span> <span class="n">header</span><span class="o">-</span><span class="k">text</span><span class="p">;</span>
</span><span class="line"><span class="p">}</span>
</span><span class="line"><span class="nt">body</span> <span class="o">&gt;</span> <span class="nt">header</span> <span class="nt">h2</span> <span class="p">{</span>
</span><span class="line">  <span class="o">@</span><span class="n">include</span> <span class="n">header</span><span class="o">-</span><span class="k">text</span><span class="p">;</span>
</span><span class="line"><span class="p">}</span>
</span><span class="line">
</span><span class="line"><span class="k">@media</span> <span class="nt">only</span> <span class="nt">screen</span> <span class="nt">and</span> <span class="o">(</span><span class="nt">min-width</span><span class="o">:</span> <span class="nt">992px</span><span class="o">)</span> <span class="p">{</span>
</span><span class="line">  <span class="nt">h1</span> <span class="p">{</span> <span class="k">font-size</span><span class="o">:</span> <span class="m">2.2em</span><span class="p">;</span> <span class="p">}</span>
</span><span class="line"><span class="p">}</span>
</span><span class="line">
</span><span class="line"><span class="o">//</span> <span class="nt">Change</span> <span class="nt">definitions</span> <span class="nt">in</span> <span class="nt">_theme</span><span class="nc">.scss</span>
</span><span class="line"><span class="nt">html</span> <span class="p">{</span>
</span><span class="line">  <span class="o">@</span><span class="n">include</span> <span class="k">background</span><span class="p">(</span><span class="n">linear</span><span class="o">-</span><span class="n">gradient</span><span class="p">(</span><span class="k">top</span><span class="o">,</span> <span class="err">$</span><span class="k">page</span><span class="o">-</span><span class="n">bg</span><span class="o">,</span> <span class="err">$</span><span class="n">header</span><span class="o">-</span><span class="n">bg</span><span class="p">));</span>
</span><span class="line"><span class="p">}</span>
</span><span class="line"><span class="nt">body</span> <span class="p">{</span>
</span><span class="line">  <span class="o">@</span><span class="n">include</span> <span class="n">box</span><span class="o">-</span><span class="n">shadow</span><span class="p">(</span><span class="m">0</span> <span class="m">0</span> <span class="m">15px</span> <span class="m">#000</span><span class="p">);</span>
</span><span class="line"><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="section-1">謎の右マージンを直す</h4>
<p>サイドバーのツイッターを有効にすると、謎の右マージンが現れる。</p>

<p><img class="center" src="https://lh3.googleusercontent.com/-C2lRp_c2yAw/TwLWli56Q1I/AAAAAAAAAIY/cKbDczthVc8/s380/UnknownRightMargin.png" width="380" height="240" title="'謎のマージン'" /></p>

<p><img class="center" src="https://lh4.googleusercontent.com/-FvFRXgvmCqg/TwLWllgHJFI/AAAAAAAAAIU/jT5zjwsmSsc/s380/TwitterFollowButton.png" width="380" height="240" title="'Followボタンが原因'" /></p>

<p>原因は、サイドバー内側の幅が 260px に設定されているのに対し、フォローボタンに幅が指定されておらず、デフォルトの 300px となっていること。</p>

<p><code>source/_include/asides/twitter.html</code> で、フォローボタンの幅を <code>data-width="260px"</code> と指定して解決（<code>auto</code> に設定してもダメ）。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>twitter.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
</pre></td><td class="code"><pre><code class="html"><span class="line">  {% if site.twitter_follow_button %}
</span><span class="line">    <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://twitter.com/{{ site.twitter_user }}&quot;</span> <span class="na">class=</span><span class="s">&quot;twitter-follow-button&quot;</span> <span class="na">data-show-count=</span><span class="s">&quot;{{ site.twitter_show_follower_count }}&quot;</span> <span class="na">data-width=</span><span class="s">&quot;260px&quot;</span><span class="nt">&gt;</span>Follow @{{ site.twitter_user }}<span class="nt">&lt;/a&gt;</span>
</span><span class="line">  {% else %}
</span><span class="line">    <span class="nt">&lt;p&gt;</span>Follow <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://twitter.com/{{site.twitter_user}}&quot;</span><span class="nt">&gt;</span>@{{ site.twitter_user }}<span class="nt">&lt;/a&gt;&lt;/p&gt;</span>
</span><span class="line">  {% endif %}
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h5 id="section-2">参考情報</h5>

<ul>
  <li><a href="https://dev.twitter.com/docs/tweet-button">Tweet Button - Twitter Developers</a></li>
  <li><a href="https://dev.twitter.com/docs/follow-button">Follow Button - Twitter Developers</a></li>
</ul>

<h5 id="section-3">2012年1月11日 追記</h5>
<p>おそらく <a href="https://github.com/imathis/octopress/commit/930747f06ff633bb3f23df94fe57b679e311a015" title="Fix for annoying overflow scroll issues caused by facebook and twitter share/follow widgets.">本家のこのコミット</a> で直ったと思う。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[SEOに効くOctopressの隠し機能]]></title>
    <link href="http://tokkonopapa.github.com/blog/2012/01/02/octopress-hidden-features-for-seo/"/>
    <updated>2012-01-02T09:31:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2012/01/02/octopress-hidden-features-for-seo</id>
    <content type="html"><![CDATA[<p>Octopress のコードリーディングをしていて見つけた隠し機能について。同じネタが既に
<a href="http://www.meatleasing.com/octopress-hidden-features/index.html">Octopress Hidden Features</a>
に挙がっていた。</p>

<!--more-->

<h3 id="ltmetagt-">&lt;meta&gt; タグの追加機能</h3>
<p><code>source/_includes/head.html</code> の10行目付近から。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>head.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="html"><span class="line">  {% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %}
</span><span class="line">  <span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">&quot;description&quot;</span> <span class="na">content=</span><span class="s">&quot;{{ description | strip_html | condense_spaces | truncate:150 }}&quot;</span><span class="nt">&gt;</span>
</span><span class="line">  {% if page.keywords %}<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">&quot;keywords&quot;</span> <span class="na">content=</span><span class="s">&quot;{{ page.keywords }}&quot;</span><span class="nt">&gt;</span>{% endif %}
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>記事の <a href="https://github.com/mojombo/jekyll/wiki/yaml-front-matter">YAML ブロック</a> に <code>description</code> か、記事から HTML を除いた先頭150字が <code>&lt;meta name="description" content="..."&gt;</code> に挿入される。
同様に <code>keywords</code> で <code>&lt;meta name="keywords" content="..."&gt;</code> が挿入される。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>記事の YAML ブロック・サンプル</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
</pre></td><td class="code"><pre><code class="yaml"><span class="line"><span class="nn">---</span>
</span><span class="line"><span class="l-Scalar-Plain">layout</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">post</span>
</span><span class="line"><span class="l-Scalar-Plain">title</span><span class="p-Indicator">:</span> <span class="s">&quot;SEOに効くOctopressの隠し機能&quot;</span>
</span><span class="line"><span class="l-Scalar-Plain">date</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">2012-01-02 09:31</span>
</span><span class="line"><span class="l-Scalar-Plain">comments</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">true</span>
</span><span class="line"><span class="l-Scalar-Plain">categories</span><span class="p-Indicator">:</span> <span class="p-Indicator">[</span><span class="nv">octopress</span><span class="p-Indicator">]</span>
</span><span class="line"><span class="l-Scalar-Plain">description</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">Octopress のコードリーディングをしていて見つけた隠し機能について。</span>
</span><span class="line"><span class="l-Scalar-Plain">keywords</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">Octopress, SEO</span>
</span><span class="line"><span class="nn">---</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>ちなみにトップページの場合も、先頭記事が <code>{ content }</code> として参照されるのが、何だかアレな感じ。</p>

<h4 id="pluginsoctopressfiltersrb-">plugins/octopress_filters.rb の改修</h4>
<p>記事の先頭150字以内に改行が含まれていると、<code>content="..."</code> が改行されちゃうのもアレ（HTML 的には OK だから、気にすることないけどネ）。</p>

<p>そこで、<code>plugins/octopress_filters.rb</code>（<a href="https://github.com/imathis/octopress/blob/master/plugins/octopress_filters.rb">ソースコードの全体</a>）の104行目付近 <code>condense_spaces</code> に改行を削除するコードを追加。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>plugins/octopress_filters.rb の改修</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
</pre></td><td class="code"><pre><code class="ruby"><span class="line">  <span class="c1"># Condenses multiple spaces and tabs into a single space</span>
</span><span class="line">  <span class="k">def</span> <span class="nf">condense_spaces</span><span class="p">(</span><span class="n">input</span><span class="p">)</span>
</span><span class="line">    <span class="n">input</span><span class="o">.</span><span class="n">gsub</span><span class="p">(</span><span class="sr">/\s{2,}/</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">)</span>
</span><span class="line">    <span class="n">input</span><span class="o">.</span><span class="n">gsub</span><span class="p">(</span><span class="sr">/\n/</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
</span><span class="line">  <span class="k">end</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="rakefile-">Rakefile の改修</h4>
<p><code>Rakefile</code> 102行目付近の <code>new_post</code> エントリーで、上記を YAML ブロックに挿入する。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>Rakefile </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
</pre></td><td class="code"><pre><code class="ruby"><span class="line">  <span class="nb">puts</span> <span class="s2">&quot;Creating new post: </span><span class="si">#{</span><span class="n">filename</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span class="line">  <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">post</span><span class="o">|</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;---&quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;layout: post&quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;title: </span><span class="se">\&quot;</span><span class="si">#{</span><span class="n">title</span><span class="o">.</span><span class="n">gsub</span><span class="p">(</span><span class="sr">/&amp;/</span><span class="p">,</span><span class="s1">&#39;&amp;amp;&#39;</span><span class="p">)</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2">&quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;date: </span><span class="si">#{</span><span class="no">Time</span><span class="o">.</span><span class="n">now</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;%Y-%m-%d %H:%M&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;comments: true&quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;categories: &quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;description: &quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;keywords: &quot;</span>
</span><span class="line">    <span class="n">post</span><span class="o">.</span><span class="n">puts</span> <span class="s2">&quot;---&quot;</span>
</span><span class="line">  <span class="k">end</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="about-me-">サイドバーへの <code>About Me</code> 追加</h3>
<p>既にテンプレートが <code>source/_includes/custom/asides/about.html</code> にある。色々なサイドバー・パーツを追加するのにも使える。後は <code>_config.yml</code> 49行目付近に指定するだけ。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>_config.yml のサイドバーに about.html を指定する</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class="yaml"><span class="line"><span class="l-Scalar-Plain">default_asides</span><span class="p-Indicator">:</span> <span class="p-Indicator">[</span><span class="nv">custom/asides/about.html</span><span class="p-Indicator">,</span> <span class="nv">asides/recent_posts.html</span><span class="p-Indicator">,</span> <span class="nv">asides/github.html</span><span class="p-Indicator">,</span> <span class="nv">asides/twitter.html</span><span class="p-Indicator">,</span> <span class="nv">asides/googleplus.html</span><span class="p-Indicator">]</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopressにはてブボタンを設置する]]></title>
    <link href="http://tokkonopapa.github.com/blog/2011/12/31/hatena-bookmark-on-octopress/"/>
    <updated>2011-12-31T22:21:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2011/12/31/hatena-bookmark-on-octopress</id>
    <content type="html"><![CDATA[<p>ついでに Twitter、Google+1、Facebook の日本語化と JavaScript の非同期読み込みコードの共通化も。</p>

<!--more-->

<h3 id="section">関連ファイルの抽出</h3>
<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>Related-Files</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
</pre></td><td class="code"><pre><code class="console"><span class="line"><span class="go">source</span>
</span><span class="line"><span class="go">└── _includes/</span>
</span><span class="line"><span class="go">    ├── post/</span>
</span><span class="line"><span class="go">    │   └── sharing.html             # post.html、page.html から</span>
</span><span class="line"><span class="go">    └── after_footer.html            # default.html から</span>
</span><span class="line"><span class="go">        ├── disqus.html              # after_footer.html から</span>
</span><span class="line"><span class="go">        ├── facebook_like.html       # after_footer.html から</span>
</span><span class="line"><span class="go">        ├── google_plus_one.html     # after_footer.html から</span>
</span><span class="line"><span class="go">        ├── twitter_sharing.html     # after_footer.html から</span>
</span><span class="line"><span class="go">        └── custom/after_footer.html # after_footer.html から（コメントのみ）</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="section-1">ファイルの修正</h3>

<h4 id="configyml">_config.yml</h4>
<p>各ボタンの言語設定、Facebook アプリケーション ID 設定などを追加する。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>_config.yml</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
</pre></td><td class="code"><pre><code class="yaml"><span class="line"><span class="c1"># Twitter</span>
</span><span class="line"><span class="l-Scalar-Plain">twitter_tweet_button</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">true</span>
</span><span class="line"><span class="l-Scalar-Plain">twitter_tweet_button_lang</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">ja</span>
</span><span class="line">
</span><span class="line"><span class="c1"># Google +1</span>
</span><span class="line"><span class="l-Scalar-Plain">google_plus_one</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">true</span>
</span><span class="line"><span class="l-Scalar-Plain">google_plus_one_size</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">medium</span>
</span><span class="line"><span class="l-Scalar-Plain">google_plus_one_lang</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">ja</span>
</span><span class="line">
</span><span class="line"><span class="c1"># Facebook Like</span>
</span><span class="line"><span class="l-Scalar-Plain">facebook_like</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">true</span>
</span><span class="line"><span class="l-Scalar-Plain">facebook_lang</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">ja_JP</span>
</span><span class="line"><span class="l-Scalar-Plain">facebook_appID</span><span class="p-Indicator">:</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="sharinghtml">sharing.html</h4>
<p>適当な位置にはてブを追加する。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>sharing.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
<span class="line-number">15</span>
<span class="line-number">16</span>
<span class="line-number">17</span>
<span class="line-number">18</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;sharing&quot;</span><span class="nt">&gt;</span>
</span><span class="line">  {% if site.twitter_tweet_button %}
</span><span class="line">  <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://twitter.com/share&quot;</span> <span class="na">class=</span><span class="s">&quot;twitter-share-button&quot;</span> <span class="na">data-url=</span><span class="s">&quot;{{ site.url }}{{ page.url }}&quot;</span> <span class="na">data-via=</span><span class="s">&quot;{{ site.twitter_user }}&quot;</span> <span class="na">data-counturl=</span><span class="s">&quot;{{ site.url }}{{ page.url }}&quot;</span> <span class="err">{%</span> <span class="na">if</span> <span class="na">site</span><span class="err">.</span><span class="na">twitter_tweet_button_lang</span> <span class="err">%}</span><span class="na">data-lang=</span><span class="s">&quot;{{ site.twitter_tweet_button_lang }}&quot;</span><span class="err">{%</span> <span class="na">endif</span> <span class="err">%}</span><span class="nt">&gt;</span>Tweet<span class="nt">&lt;/a&gt;</span>
</span><span class="line">  {% endif %}
</span><span class="line">  {% if site.google_plus_one %}
</span><span class="line">  <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;g-plusone&quot;</span> <span class="na">data-size=</span><span class="s">&quot;{{ site.google_plus_one_size }}&quot;</span><span class="nt">&gt;&lt;/div&gt;</span>
</span><span class="line">  {% endif %}
</span><span class="line">  <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://b.hatena.ne.jp/entry/&quot;</span> <span class="na">class=</span><span class="s">&quot;hatena-bookmark-button&quot;</span>
</span><span class="line">      <span class="na">data-hatena-bookmark-layout=</span><span class="s">&quot;standard&quot;</span>
</span><span class="line">      <span class="na">data-hatena-bookmark-url=</span><span class="s">&quot;{{ site.url }}{{ page.url }}&quot;</span><span class="nt">&gt;</span>
</span><span class="line">    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;http://b.st-hatena.com/images/entry-button/button-only.gif&quot;</span>
</span><span class="line">        <span class="na">alt=</span><span class="s">&quot;このエントリーをはてなブックマークに追加&quot;</span> <span class="na">width=</span><span class="s">&quot;20&quot;</span> <span class="na">height=</span><span class="s">&quot;20&quot;</span>
</span><span class="line">        <span class="na">style=</span><span class="s">&quot;border: none&quot;</span><span class="nt">&gt;</span>
</span><span class="line">  <span class="nt">&lt;/a&gt;</span>
</span><span class="line">  {% if site.facebook_like %}
</span><span class="line">    <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;fb-like&quot;</span> <span class="na">data-send=</span><span class="s">&quot;true&quot;</span> <span class="na">data-width=</span><span class="s">&quot;450&quot;</span> <span class="na">data-show-faces=</span><span class="s">&quot;false&quot;</span><span class="nt">&gt;&lt;/div&gt;</span>
</span><span class="line">  {% endif %}
</span><span class="line"><span class="nt">&lt;/div&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="afterfooterhtml">after_footer.html</h4>
<p>Facebook、Google+1、Twitter をコメントアウトする。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>after_footer.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
</pre></td><td class="code"><pre><code class="html"><span class="line">{% include disqus.html %}
</span><span class="line">{% comment %}
</span><span class="line">{% include facebook_like.html %}
</span><span class="line">{% include google_plus_one.html %}
</span><span class="line">{% include twitter_sharing.html %}
</span><span class="line">{% endcomment %}
</span><span class="line">{% include custom/after_footer.html %}
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="custumafterfooterhtml">custum/after_footer.html</h4>
<p>Google+1、Facebook の言語設定と JavaScript の非同期読み込みコードを共通化してまとめる。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>custum-after_footer.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
<span class="line-number">15</span>
<span class="line-number">16</span>
<span class="line-number">17</span>
<span class="line-number">18</span>
<span class="line-number">19</span>
<span class="line-number">20</span>
<span class="line-number">21</span>
<span class="line-number">22</span>
</pre></td><td class="code"><pre><code class="html"><span class="line">{% comment %}
</span><span class="line">  Add content to be output at the bottom of each page. (You might use this for analytics scripts, for example)
</span><span class="line">{% endcomment %}
</span><span class="line"><span class="nt">&lt;script&gt;</span>
</span><span class="line"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span><span class="nx">d</span><span class="p">){</span>
</span><span class="line">    <span class="kd">var</span> <span class="nx">c</span><span class="p">,</span><span class="nx">e</span><span class="o">=</span><span class="nx">d</span><span class="p">.</span><span class="nx">createDocumentFragment</span><span class="p">(),</span><span class="nx">f</span><span class="o">=</span><span class="nx">d</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;script&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span>
</span><span class="line">    <span class="nx">a</span><span class="o">=</span><span class="kd">function</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">d</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="nx">b</span><span class="p">)){</span><span class="nx">c</span><span class="o">=</span><span class="nx">d</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;script&quot;</span><span class="p">);</span>
</span><span class="line">    <span class="nx">c</span><span class="p">.</span><span class="nx">src</span><span class="o">=</span><span class="nx">a</span><span class="p">;</span><span class="nx">c</span><span class="p">.</span><span class="nx">id</span><span class="o">=</span><span class="nx">b</span><span class="o">||</span><span class="kc">null</span><span class="p">;</span><span class="nx">c</span><span class="p">.</span><span class="nx">async</span><span class="o">=</span><span class="kc">true</span><span class="p">;</span><span class="nx">e</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">c</span><span class="p">);}};</span>
</span><span class="line"><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="nx">site</span><span class="p">.</span><span class="nx">google_plus_one</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="nx">site</span><span class="p">.</span><span class="nx">google_plus_one_lang</span> <span class="o">%</span><span class="p">}</span>
</span><span class="line">    <span class="nx">w</span><span class="p">.</span><span class="nx">___gcfg</span><span class="o">=</span><span class="p">{</span><span class="nx">lang</span><span class="o">:</span><span class="s2">&quot;ja&quot;</span><span class="p">};{</span><span class="o">%</span> <span class="nx">endif</span> <span class="o">%</span><span class="p">}</span>
</span><span class="line">    <span class="nx">a</span><span class="p">(</span><span class="s2">&quot;https://apis.google.com/js/plusone.js&quot;</span><span class="p">);</span>
</span><span class="line"><span class="p">{</span><span class="o">%</span> <span class="nx">endif</span> <span class="o">%</span><span class="p">}</span>
</span><span class="line"><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="nx">site</span><span class="p">.</span><span class="nx">twitter_follow_button</span> <span class="nx">or</span> <span class="nx">site</span><span class="p">.</span><span class="nx">twitter_tweet_button</span> <span class="o">%</span><span class="p">}</span>
</span><span class="line">    <span class="nx">a</span><span class="p">(</span><span class="s2">&quot;//platform.twitter.com/widgets.js&quot;</span><span class="p">);</span>
</span><span class="line"><span class="p">{</span><span class="o">%</span> <span class="nx">endif</span> <span class="o">%</span><span class="p">}</span>
</span><span class="line"><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="nx">site</span><span class="p">.</span><span class="nx">facebook_like</span> <span class="o">%</span><span class="p">}</span>
</span><span class="line">    <span class="nx">a</span><span class="p">(</span><span class="s2">&quot;//connect.facebook.net/{% if site.facebook_lang %}{{ site.facebook_lang }}{% else %}en_US{% endif %}/all.js#{% if site.facebook_appID %}appId={{ site.facebook_appID }}&amp;{% endif %}xfbml=1&quot;</span><span class="p">,</span><span class="s2">&quot;facebook-jssdk&quot;</span><span class="p">);</span>
</span><span class="line"><span class="p">{</span><span class="o">%</span> <span class="nx">endif</span> <span class="o">%</span><span class="p">}</span>
</span><span class="line">    <span class="nx">a</span><span class="p">(</span><span class="s2">&quot;//b.st-hatena.com/js/bookmark_button_wo_al.js&quot;</span><span class="p">);</span>
</span><span class="line">    <span class="nx">f</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">e</span><span class="p">,</span><span class="nx">f</span><span class="p">);</span>
</span><span class="line"><span class="p">})(</span><span class="k">this</span><span class="p">,</span><span class="nb">document</span><span class="p">);</span>
</span><span class="line"><span class="nt">&lt;/script&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="facebook--appid-">Facebook の AppID について</h3>
<p><code>facebook_like.html</code> には、作者のものと思われるアプリケーション ID が埋め込まれているが、このファイルは使わない。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>facebook_like.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
</pre></td><td class="code"><pre><code class="html"><span class="line">{% if site.facebook_like %}
</span><span class="line"><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">&quot;fb-root&quot;</span><span class="nt">&gt;&lt;/div&gt;</span>
</span><span class="line"><span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
</span><span class="line">  <span class="kd">var</span> <span class="nx">js</span><span class="p">,</span> <span class="nx">fjs</span> <span class="o">=</span> <span class="nx">d</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="nx">s</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
</span><span class="line">  <span class="k">if</span> <span class="p">(</span><span class="nx">d</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="nx">id</span><span class="p">))</span> <span class="p">{</span><span class="k">return</span><span class="p">;}</span>
</span><span class="line">  <span class="nx">js</span> <span class="o">=</span> <span class="nx">d</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="nx">s</span><span class="p">);</span> <span class="nx">js</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">id</span><span class="p">;</span> <span class="nx">js</span><span class="p">.</span><span class="nx">async</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
</span><span class="line">  <span class="nx">js</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="s2">&quot;//connect.facebook.net/en_US/all.js#appId=212934732101925&amp;xfbml=1&quot;</span><span class="p">;</span>
</span><span class="line">  <span class="nx">fjs</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">js</span><span class="p">,</span> <span class="nx">fjs</span><span class="p">);</span>
</span><span class="line"><span class="p">}(</span><span class="nb">document</span><span class="p">,</span> <span class="s1">&#39;script&#39;</span><span class="p">,</span> <span class="s1">&#39;facebook-jssdk&#39;</span><span class="p">));</span><span class="nt">&lt;/script&gt;</span>
</span><span class="line">{% endif %}
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>本来これは <code>_config.yml</code> で設定すべき事項。言語設定も含めて pull request するべきなんでしょうかネ。</p>

<h3 id="section-2">参考情報</h3>
<ul>
  <li><a href="http://tokkono.cute.coocan.jp/blog/slow/index.php/xhtmlcss/asynchronous-loading-of-major-social-buttons/">最近海外で流行りのTwitter,Facebook,Google+1,Analyticsをまとめる非同期スクリプトにはてなを加えてみた - ゆっくりと…</a></li>
  <li><a href="http://developers.facebook.com/setup/">Create an App - Facebook開発者</a></li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopressのインストールから運用管理まで]]></title>
    <link href="http://tokkonopapa.github.com/blog/2011/12/30/octopress-on-github-and-bitbucket/"/>
    <updated>2011-12-30T09:22:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2011/12/30/octopress-on-github-and-bitbucket</id>
    <content type="html"><![CDATA[<p>あらためて GitHub へのインストールから、GitHub Pages への記事投稿、Bitbucket での原稿管理までをまとめておく。
インストールは、公式サイトの <a href="http://octopress.org/docs/setup/">Octopress Setup</a> に従う。
GitHub Pages には、ユーザーページとプロジェクトページがあるが、以下ユーザーページ用を主とする。</p>

<!--more-->

<h3 id="octopress-">1. Octopress 利用の前提条件</h3>

<ul>
  <li>Git + GitHub アカウント</li>
  <li>ruby <del>1.9.2</del> 1.9.3 以上 + RubyGems<br />
  <a href="http://rubygems.org/">RubyGems</a> は、ruby 1.9.2 以上であれば <a href="http://rubyinstaller.org/" title="RubyInstaller for Windows">インストーラー</a> のパッケージに含まれているという情報が多い（特に Windows）。
  Mac であれば、<a href="http://beginrescueend.com/rvm/install/" title="RVM: Ruby Version Manager - Installing RVM">rvm</a> からアップデートする。
  また、gem は <code>gem update --system</code> で最新版にしておく。</li>
</ul>

<h3 id="github-">2. GitHub ユーザーページ用リポジトリの作成</h3>

<p>GitHub で <code>username.github.com</code> の <a href="https://github.com/repositories/new">リポジトリを作成</a> しておく。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>ローカル側の設定 </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">mkdir</span> <span class="n">username</span><span class="p">.</span><span class="n">github</span><span class="p">.</span><span class="n">com</span>
</span><span class="line"><span class="n">$</span> <span class="n">cd</span> <span class="n">username</span><span class="p">.</span><span class="n">github</span><span class="p">.</span><span class="n">com</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">init</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>Initialized empty Git repository in /path/to/repo/username.github.com/.git/
</code></pre>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>何でもいいからコミット </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">touch</span> <span class="n">README</span><span class="p">.</span><span class="n">md</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">add</span> <span class="n">README</span><span class="p">.</span><span class="n">md</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> <span class="err">&#39;</span><span class="n">first</span> <span class="n">commit</span><span class="err">&#39;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>[master (root-commit) a3bd2f1] first commit
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README
</code></pre>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>リモートの登録 </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">remote</span> <span class="n">add</span> <span class="n">origin</span> <span class="n">git</span><span class="err">@</span><span class="n">github</span><span class="p">.</span><span class="nl">com:</span><span class="n">username</span><span class="o">/</span><span class="n">username</span><span class="p">.</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">git</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">push</span> <span class="o">-</span><span class="n">u</span> <span class="n">origin</span> <span class="n">master</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>Counting objects: 3, done.
Writing objects: 100% (3/3), 205 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:username/username.github.com.git
 * [new branch]      master -&gt; master
Branch master set up to track remote branch master from origin.
</code></pre>

<h3 id="octopress--1">3. Octopress のインストール</h3>

<p>とりあえず、ユーザーページ用リポジトリ <code>username.github.com</code> と同じ階層にインストールする。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>Octopress のクローンを作る </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">cd</span> <span class="p">..</span><span class="o">/</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">clone</span> <span class="nl">git:</span><span class="c1">//github.com/imathis/octopress.git octopress</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>Cloning into 'octopress'...
remote: Counting objects: 5685, done.
remote: Compressing objects: 100% (2262/2262), done.
remote: Total 5685 (delta 3247), reused 5225 (delta 2933)
Receiving objects: 100% (5685/5685), 1.21 MiB | 435 KiB/s, done.
Resolving deltas: 100% (3247/3247), done.
</code></pre>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>bundler をインストール </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">cd</span> <span class="n">octopress</span>
</span><span class="line"><span class="n">$</span> <span class="n">gem</span> <span class="n">install</span> <span class="n">bundler</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>Successfully installed bundler-1.0.21
1 gem installed
Installing ri documentation for bundler-1.0.21...
Installing RDoc documentation for bundler-1.0.21...
</code></pre>

<p>ちなみに、いちいち <code>ri</code> とか <code>RDoc</code> とかのインストールがうざい場合、<a href="http://d.hatena.ne.jp/ruedap/20110514/ruby_gem_install_no_ri_no_rdoc_gemrc">RubyGemsでgemのインストール時に–no-ri –no-rdocをデフォルトにする - アインシュタインの電話番号</a> を参考に <code>.gemrc</code> を設定する。</p>

<p>次はおそらく <code>Gemfile</code> に書かれた gem を、依存関係含めてインストールしているのだと思う。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>必要な gem をインストール </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">bundle</span> <span class="n">install</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>Using rake (0.9.2) 
Using RedCloth (4.2.8) 
...
Using bundler (1.0.21) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
</code></pre>

<p>そして、Rakefile のエントリー <code>install</code> を実行する。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>Octopress デフォルトのテーマ classic のインストールやら </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">rake</span> <span class="n">install</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>## Copying classic theme into ./source and ./sass
</code></pre>

<h3 id="octopress--2">4. Octopress サイトの立ち上げ</h3>

<p>ここからは、公式サイトの <a href="http://octopress.org/docs/deploying/github/">Deploying to Github Pages With Github User/Organization pages</a> の内容。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>GitHub Pages との接続設定 </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">rake</span> <span class="n">setup_github_pages</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<pre><code>Enter the read/write url for your repository: git@github.com:username/username.github.com.git
Added remote git@github.com:username/username.github.com.git as origin
Set origin as default remote
Master branch renamed to 'source' for committing your blog source files
Initialized empty Git repository in /path/to/repo/octopress/username.github.com/_deploy/.git/
[master (root-commit) 314edb9] Octopress init
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 index.html

---
## Now you can deploy to http://username.github.com with `rake deploy` ##
</code></pre>

<p><code>Initialized empty Git repository</code> のパスが変だけど、<code>_deploy</code> に <code>.git</code> ができているのは確で、<code>.git/config</code> を確認。</p>

<p>実行される内容は次の通り。</p>

<ol>
  <li>GitHub Pages リポジトリへの read/write 可能なプロトコル／パスを入力</li>
  <li><code>imathis/octopress</code> を指すリモート名を <code>origin</code> から <code>octopress</code> に変更</li>
  <li>GitHub Pages リポジトリへのリモート名を <code>origin</code> に設定</li>
  <li>アクティブなブランチを <code>master</code> から <code>source</code> に変更</li>
  <li>リポジトリへのパス名に応じて、ブログサイトの URL を設定</li>
  <li><code>_deploy</code> ディレクトリに、デプロイ用の <code>master</code> ブランチを設定</li>
</ol>

<p>特に 4. 〜 6. 辺りの処理は、1. の入力に応じて自動的にデプロイ先のブランチが設定される（ユーザーページ用は <code>master</code>、プロジェクトページ用は <code>gh-pages</code>）。</p>

<p>そして、サイトの生成とデプロイ（後述の「6. 新規記事、新規ページの作成」も同じ）。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>サイトの生成とデプロイ </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">rake</span> <span class="n">generate</span>
</span><span class="line"><span class="n">rake</span> <span class="n">deploy</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>2つを一気に実行するには <code>rake gen_deploy</code> を、まずはローカルでプレビューするという場合には <code>rake preview</code> を実行後に http://localhost:4000/ にアクセスする。</p>

<h3 id="octopress--3">5. Octopress サイトの設定</h3>

<p>公式サイトの <a href="http://octopress.org/docs/configuring/">Configuring Octopress</a> を参考に、<code>_config.yml</code> を設定。</p>

<h3 id="section">6. 新規記事、新規ページの作成</h3>

<p>公式サイトの <a href="http://octopress.org/docs/blogging/">Blogging Basics</a> を参照。</p>

<h4 id="section-1">–新規投稿–</h4>

<h5 id="section-2">コマンド</h5>
<pre><code>rake new_post['post title']
</code></pre>

<p>記事のタイトルは、英語で。</p>

<h5 id="section-3">ファイル</h5>
<pre><code>source/
└── _post/
    └── YYYY-MM-DD-post-title.markdown
</code></pre>

<h5 id="yaml">YAMLブロック</h5>
<pre><code>---
layout: post
title: "post title"
date: YYYY-MM-DD hh:mm
comments: true
categories: [category1, ...]
---
</code></pre>

<p>ここで、<code>title</code> を日本語にすれば良い。</p>

<h4 id="section-4">–新規ページ–</h4>

<h5 id="section-5">コマンド</h5>
<pre><code>rake new_page[my-new-page]
rake new_page[my-new-page.html]
</code></pre>

<h5 id="section-6">ファイル</h5>
<pre><code>source/
└── my-new-page/
    ├── index.markdown	# rake new_page[my-new-page]
    └── index.html		# rake new_page[my-new-page.html]
</code></pre>

<h5 id="yaml-1">YAMLブロック</h5>
<pre><code>---
layout: page
title: 
date: YYYY-MM-DD hh:mm
comments: true
sharing: true
footer: true
---
</code></pre>

<h3 id="section-7">7. サイトの運用管理</h3>

<p><a href="http://octopress.org/docs/deploying/github/">Deploying to Github Pages</a> には、ユーザーページ、プロジェクトページのそれぞれで、本体のリポジトリと統合する方法が推奨されている。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>ユーザーページ用リポジトリへの push </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">add</span> <span class="p">.</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> <span class="err">&#39;</span><span class="n">your</span> <span class="n">message</span><span class="err">&#39;</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="n">source</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>プロジェクトページ用リポジトリへの push </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">remote</span> <span class="n">add</span> <span class="n">origin</span> <span class="p">(</span><span class="n">your</span> <span class="n">repo</span> <span class="n">url</span><span class="p">)</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">config</span> <span class="n">branch</span><span class="p">.</span><span class="n">master</span><span class="p">.</span><span class="n">remote</span> <span class="n">origin</span> <span class="err">#</span> <span class="n">set</span> <span class="n">your</span> <span class="n">new</span> <span class="n">origin</span> <span class="n">as</span> <span class="n">the</span> <span class="k">default</span> <span class="n">branch</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="n">source</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>統合後は、ローカルの <code>octopress</code> リポジトリは不要になる。</p>

<p><img src="https://lh5.googleusercontent.com/-W12FoatyQ0U/Tv1hkjI1lkI/AAAAAAAAAEA/2RTRvpi4k10/s600/OperationGitHub.png" width="600" height="363" title="1つのリポジトリに統合し、管理する" /></p>

<p>ただし、実際にやってみると次のようなデメリットもある。</p>

<ul>
  <li><code>source</code> ブランチで管理外だった <code>_deploy</code> や <code>public</code> などを、デプロイ先のブランチでも管理外にする必要アリ。（<code>.gitignore</code> の再設定）。</li>
  <li><code>source</code> ブランチでの <code>rake deploy</code> で デプロイ先のブランチが直接更新されるため、<code>git fetch; git pull</code> でローカルに反映させる必要アリ。</li>
  <li>この反映が、場合によってはコンフリクトを発生させる。</li>
</ul>

<p>コンフリクトは例えばこんな感じ。</p>

<pre><code>Auto-merging stylesheets/screen.css
CONFLICT (add/add): Merge conflict in stylesheets/screen.css
Auto-merging sitemap.xml
CONFLICT (add/add): Merge conflict in sitemap.xml
Auto-merging index.html
CONFLICT (add/add): Merge conflict in index.html
Auto-merging blog/archives/index.html
CONFLICT (add/add): Merge conflict in blog/archives/index.html
Auto-merging atom.xml
CONFLICT (add/add): Merge conflict in atom.xml
Automatic merge failed; fix conflicts and then commit the result.
</code></pre>

<p>こうなると手作業でコンフリクトを解消するか、次のようにしてローカルの内容を強制的にリモートで上書きしなければならない。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>強制的にリモートの内容で上書きする </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">reset</span> <span class="o">--</span><span class="n">hard</span> <span class="n">HEAD</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">pull</span> <span class="o">--</span><span class="n">rebase</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>ということで特にユーザーページ用においては、Octopress リポジトリは単独で管理する、しかも非公開が好ましいと言うのが現時点での結論。</p>

<p><img src="https://lh3.googleusercontent.com/-REF5krAHdqI/Tv1hklJ7kWI/AAAAAAAAAD8/0-i9S4AswjY/s600/OperationBitbucket.png" width="600" height="366" title="リポジトリを統合せず、単独で管理する" /></p>

<p>この目的にぴったりなのが <a href="https://bitbucket.org/">Bitbucket</a> というわけ。Git が使える上、リポジトリを非公開にでき、5人まで無料。個人利用であれば言うことなし。</p>

<p>Bitbucket のアカウント取得後にまずやることは、「Account settings」で SSH key を設定すること。<a href="http://confluence.atlassian.com/display/BITBUCKET/Using+SSH+to+Access+your+Bitbucket+Repository">Using SSH to Access your Bitbucket Repository</a> を参考に。</p>

<p><img src="https://lh3.googleusercontent.com/-4iSTHTCDNrY/Tv1dpUb86BI/AAAAAAAAADs/hf_SEC2v498/s500/BitbucketSSHKeys.png" width="500" height="220" title="SSH key の設定" /></p>

<p>次に Bitbucket に octopress リポジトリを作成し、リモートとして登録。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>リモート名 bitbacket で optopress リポジトリを登録する </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">remote</span> <span class="n">add</span> <span class="n">bitbucket</span> <span class="n">git</span><span class="err">@</span><span class="n">bitbucket</span><span class="p">.</span><span class="nl">org:</span><span class="n">username</span><span class="o">/</span><span class="n">octopress</span><span class="p">.</span><span class="n">git</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">push</span> <span class="o">-</span><span class="n">u</span> <span class="n">bitbucket</span> <span class="n">source</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>この段階で、リモートとして <code>origin</code>、<code>octopress</code>、<code>bitbucket</code> の3つが登録されることとなる。これ以降、記事のデプロイは <code>rake deploy</code>、原稿のバックアップは <code>git push</code> でできるようになる。</p>

<h3 id="octopress--4">8. Octopress の更新</h3>
<p>本家の更新を取り込んでマージする。<code>gems</code> の更新も忘れずに。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>Octopress の更新 </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class="objc"><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">fetch</span> <span class="n">octopress</span>
</span><span class="line"><span class="n">$</span> <span class="n">git</span> <span class="n">pull</span> <span class="n">octopress</span> <span class="n">master</span>
</span><span class="line"><span class="n">$</span> <span class="n">bundle</span> <span class="n">update</span> <span class="n">rake</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="section-8">参考情報</h3>
<ul>
  <li><a href="http://mattn.kaoriya.net/software/lang/ruby/20111017205717.htm">Big Sky :: githubとjekyllとoctopressで作る簡単でモダンなブログ</a></li>
  <li><a href="http://blog.glidenote.com/blog/2011/11/07/install-octopress-on-github/">GithubとOctopressでモダンな技術系ブログを作ってみる - Glide Note - グライドノート</a></li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopressのテーマ - classicの構成]]></title>
    <link href="http://tokkonopapa.github.com/blog/2011/12/29/octopress-classic-theme-structure/"/>
    <updated>2011-12-29T17:34:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2011/12/29/octopress-classic-theme-structure</id>
    <content type="html"><![CDATA[<p>いつか Octopress をカスタマイズし、オリジナルのテーマを作るときのために、ファイル構成をヒモ解いた。</p>

<!--more-->

<h3 id="section">1. テーマの概要</h3>

<h4 id="section-1">テンプレートファイル</h4>
<p><code>rake install</code> の時点で、<code>.themes/classic</code> から <code>source</code> にコピーされる。</p>

<h4 id="section-2">設定ファイル</h4>
<ul>
  <li><strong>_config.yml</strong><br />
  ここで定義された変数がテンプレート中 <code>site.変数名</code> でアクセスされる。</li>
</ul>

<h4 id="section-3">構成の概要</h4>
<pre><code>source/
├── _layouts/    # トップページ、個別記事ページ、カテゴリアーカイブページのレイアウト
└── _includes/   # ページレイアウト用の部品
    ├── post/    # サイトのメタデータ、ソーシャルメディア、コメントシステム用部品
	├── asides/  # テーマのサイドバー用部品
	└── custom/  # カスタマイズ用部品（&lt;head&gt;、&lt;header&gt;、&lt;navigation&gt;、&lt;aside&gt;、&lt;footer&gt;）
</code></pre>

<h3 id="section-4">2. テンプレートファイルの構成</h3>

<h4 id="section-5">ページ</h4>
<pre><code>└── _layouts/
    ├── default.html
    ├── page.html (layout: default)
    ├── post.html (layout: default, single: true)
    └── category_index.html (layout: page, footer: false)
</code></pre>

<h4 id="ltheadgt">&lt;head&gt;</h4>
<pre><code>└── _includes/
    ├── head.html
    ├── custom/head.html
    └── google_analytics.html
</code></pre>

<h4 id="rss">RSS</h4>
<pre><code>└── _includes/
    └── custom/category_feed.xml
</code></pre>

<h4 id="section-6">ヘッダー</h4>
<pre><code>└── _includes/
    ├── header.html
    └── custom/header.html
</code></pre>

<h4 id="section-7">ナビゲーション・メニュー</h4>
<pre><code>└── _includes/
    ├── navigation.html
    └── custom/navigation.html
</code></pre>

<h4 id="section-8">記事</h4>
<pre><code>└── _includes/
    ├── article.html            # post.html、index.html から
    ├── post/author.html        # post.html、page.html から
    ├── post/categories.html    # post.html、page.html から
    ├── post/date.html          # post.html、page.html、index.html から
    ├── post/disqus_thread.html # post.html、page.html から
    └── post/sharing.html       # post.html、page.html から
</code></pre>

<h4 id="section-9">サイドバー・パーツ</h4>
<pre><code>└── _includes/
    ├── custom/asides/about.html
    ├── asides/recent_posts.html
    ├── asides/github.html
    ├── asides/delicious.html
    ├── asides/googleplus.html
    ├── asides/pinboard.html
    └── asides/twitter.html
</code></pre>

<h4 id="section-10">フッター</h4>
<pre><code>└── _includes/
    ├── footer.html
    └── custom/footer.html
</code></pre>

<h4 id="section-11">ソーシャル・パーツ</h4>
<pre><code>└── _includes/
    ├── after_footer.html
    ├── custom/after_footer.html # コメントのみ
    ├── disqus.html              # after_footer.html から
    ├── facebook_like.html       # after_footer.html から
    ├── google_plus_one.html     # after_footer.html から
    └── twitter_sharing.html     # after_footer.html から
</code></pre>

<h4 id="section-12">アーカイブ</h4>
<pre><code>└── _includes/
    └── archive_post.html # category_index.html、blog/archives/index.html から
</code></pre>

<h3 id="section-13">3. 生成されるファイルの構成</h3>
<pre><code>├── index.html (layout: default)
├── atom.xml
├── blog/
│   └── archives/
│       └── index.html
├── sitemap.xml
├── favicon.png
├── images/
│   ├── bird_32_gray.png
│   ├── bird_32_gray_fail.png
│   ├── code_bg.png
│   ├── dotted-border.png
│   ├── email.png
│   ├── line-tile.png
│   ├── noise.png
│   ├── rss.png
│   └── search.png
├── javascripts/
│   ├── ender.js
│   ├── github.js
│   ├── libs/
│   │   ├── ender.js
│   │   ├── jXHR.js
│   │   └── swfobject-dynamic.js
│   ├── modernizr-2.0.js
│   ├── octopress.js
│   ├── pinboard.js
│   └── twitter.js
└── stylesheets/
	└── screen.css
</code></pre>

<h3 id="octopress">4. Octopressの動作</h3>

<h4 id="section-14">–新規投稿–</h4>

<h5 id="section-15">コマンド</h5>
<pre><code>rake new_post['post title']
</code></pre>

<h5 id="section-16">ファイル</h5>
<pre><code>└── _post/YYYY-MM-DD-post-title.markdown
</code></pre>

<h5 id="yaml">YAMLブロック</h5>
<pre><code>---
layout: post
title: "post title"
date: YYYY-MM-DD hh:mm
comments: true
categories: [category1, ...]
---
</code></pre>

<h4 id="section-17">–新規ページ–</h4>

<h5 id="section-18">コマンド</h5>
<pre><code>rake new_page[my-new-page]
rake new_page[my-new-page.html]
</code></pre>

<h5 id="section-19">ファイル</h5>
<pre><code>├── my-new-page/index.markdown # rake new_page[my-new-page]
└── my-new-page/index.html     # rake new_page[my-new-page.html]
</code></pre>

<h5 id="yaml-1">YAMLブロック</h5>
<pre><code>---
layout: page
title: 
date: YYYY-MM-DD hh:mm
comments: true
sharing: true
footer: true
---
</code></pre>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[jekyllで作る簡単GitHub Pages]]></title>
    <link href="http://tokkonopapa.github.com/blog/2011/12/28/easy-usage-of-jekyll-on-github/"/>
    <updated>2011-12-28T01:03:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2011/12/28/easy-usage-of-jekyll-on-github</id>
    <content type="html"><![CDATA[<p><a href="http://jekyllrb.com/">jekyll</a>（ジキル）は、テンプレートを使って静的な Web サイトを構築するための Ruby プログラム。</p>

<p>通常はローカルに jekyll をインストールするが、GitHub Pages では必ずしも必要ないという話。</p>

<!--more-->

<h3 id="section">通常の手順</h3>
<p><a href="https://github.com/mojombo/jekyll/wiki/Usage">こちら</a> に基本的な手順の説明。</p>

<ol>
  <li>
    <p>ローカルな Ruby 環境に <a href="https://github.com/mojombo/jekyll/wiki/Install">jekyll をインストール</a> する</p>
  </li>
  <li>
    <p>jekyll に必要な <a href="https://github.com/mojombo/jekyll/wiki/Usage">テンプレートファイル群</a> を構成し、<a href="https://github.com/mojombo/jekyll/wiki/Configuration"><code>_config.yml</code></a> や <a href="https://github.com/mojombo/jekyll/wiki/Pagination">テンプレートファイル</a> を設定する</p>
  </li>
  <li>
    <p><a href="http://yaml.org/">YAML</a> で記述した先頭ブロックの <a href="https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter">レイアウトとタイトル</a> に続けて、 HTML、Markdown、textile のいずれかの記法を使って記事を書く</p>
  </li>
  <li>
    <p>jekyll で HTML ページを生成し（<code>jekyll --server --auto</code>）、ローカルで確認（<a href="http://0.0.0.0:4000/">http://0.0.0.0:4000/</a>）、デプロイ（<code>_site</code> に生成されたページ群を git 経由でリモートにコピー）する</p>
  </li>
</ol>

<h3 id="github-pages-">GitHub Pages の場合</h3>
<p>一方 GitHub では、<a href="http://pages.github.com/">GitHub Pages</a> 上に jekyll に必要なファイル群があれば、自動的に HTML を生成してくれるので、必ずしもローカルに jekyll をインストールしなくても何とかなる。
もっともローカルで最終的なレンダリング結果を確認するためにも、jekyll をインストールするに越したことはないが…</p>

<p>1ページだけの GitHub Pages なら、最小構成ファイル群は以下の通り。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>Basic-Structure </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
</pre></td><td class="code"><pre><code class="text"><span class="line">.
</span><span class="line">├─ _layouts
</span><span class="line">│ └─ default.html
</span><span class="line">├─ css
</span><span class="line">│ └─ styles.css
</span><span class="line">└─ index.md
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>次は、テンプレートファイル <code>default.html</code> の例。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>default.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="cp">&lt;!doctype html&gt;</span>
</span><span class="line"><span class="nt">&lt;html</span> <span class="na">lang=</span><span class="s">&quot;ja&quot;</span><span class="nt">&gt;</span>
</span><span class="line"><span class="nt">&lt;head&gt;</span>
</span><span class="line"><span class="nt">&lt;meta</span> <span class="na">charset=</span><span class="s">&quot;utf-8&quot;</span><span class="nt">&gt;</span>
</span><span class="line"><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href=</span><span class="s">&quot;css/styles.css&quot;</span><span class="nt">&gt;</span>
</span><span class="line"><span class="nt">&lt;title&gt;</span>jekyllで作る簡単GitHub Pages<span class="nt">&lt;/title&gt;</span>
</span><span class="line"><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href=</span><span class="s">&quot;css/styles.css&quot;</span><span class="nt">&gt;</span>
</span><span class="line"><span class="nt">&lt;/head&gt;</span>
</span><span class="line"><span class="nt">&lt;body&gt;</span>
</span><span class="line">
</span><span class="line"><span class="nt">&lt;/body&gt;</span>
</span><span class="line"><span class="nt">&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p><code>index.md</code> には <code>default.html</code> の <code>content</code> の中身を記述する。</p>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>index.md </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
</pre></td><td class="code"><pre><code class="text"><span class="line">---
</span><span class="line">layout: default
</span><span class="line">title: プロジェクト・タイトル
</span><span class="line">---
</span><span class="line">
</span><span class="line">プロジェクト・タイトル
</span><span class="line">======================
</span><span class="line">ここにプロジェクトの概要を書きます。
</span><span class="line">...
</span></code></pre></td></tr></table></div></figure></notextile></div>

<p><code>index.md</code> 以外にも、<code>index.html</code> や <code>index.textile</code> でも OK だが、先頭の <code>layout</code>、<code>title</code> が重要。これがないとレンダリングしてくれない。</p>

<p><code>css/styles.css</code> で装飾し、必要なら <code>images</code> や <code>script</code>、<code>favicon.ico</code> などもお好みで。
そしてこれらファイル群を プロジェクト・リポジトリの <code>gh-pages</code> ブランチに <a href="http://pages.github.com/#project_pages" title="pushの仕方">push</a> する。</p>

<h3 id="section-1">さらに複雑なテンプレートの作り方</h3>
<p><img class="right" src="https://lh6.googleusercontent.com/-XPYN1_uoW2g/TvwH9lgXi-I/AAAAAAAAAB4/ps1ZlNCzbMo/s336/ComplexStructure.png" width="250" height="336" title="&#34;ページの構成&#34;" alt="&#34;ページの構成&#34;" /></p>

<p>サイドバー付きページのテンプレートを、<a href="http://www.initializr.com/">Initializr 2</a> をベースに構成する。</p>

<p><a href="https://github.com/tokkonopapa/Initializr2-on-jekyll/tree/gh-pages"><img src="https://lh4.googleusercontent.com/-001qniGUDbI/TvxeLnMhu-I/AAAAAAAAACg/vCusw7WbURI/s256/Initializr2-on-jekyll.png" width="256" height="236" title="&#34;実際の GitHub Pages 適用例&#34;" alt="&#34;実際の GitHub Pages 適用例&#34;" /></a></p>

<div style="clear:both"></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>README.txt </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
<span class="line-number">15</span>
<span class="line-number">16</span>
<span class="line-number">17</span>
<span class="line-number">18</span>
<span class="line-number">19</span>
</pre></td><td class="code"><pre><code class="text"><span class="line">.
</span><span class="line">├─ _includes
</span><span class="line">│    ├─ head.html
</span><span class="line">│    ├─ header.html
</span><span class="line">│    ├─ aside.html
</span><span class="line">│    ├─ footer.html
</span><span class="line">│    └─ script.html
</span><span class="line">├─ _layouts
</span><span class="line">│    ├─ default.html
</span><span class="line">│    └─ page.html
</span><span class="line">├─ css
</span><span class="line">│    └─ style.css
</span><span class="line">├─ js
</span><span class="line">│    ├─ libs
</span><span class="line">│    │   └─ modernizr-2.0.6.min.js
</span><span class="line">│    └─ script.js
</span><span class="line">├─ index.md
</span><span class="line">├─ demo.html
</span><span class="line">└─ documents.md
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>_config.yml </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
</pre></td><td class="code"><pre><code class="yaml"><span class="line"><span class="c1"># ----------------------- #</span>
</span><span class="line"><span class="c1">#      Main Configs       #</span>
</span><span class="line"><span class="c1"># ----------------------- #</span>
</span><span class="line">
</span><span class="line"><span class="l-Scalar-Plain">url</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">http://username.github.com/</span>
</span><span class="line"><span class="l-Scalar-Plain">title</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">サイトのタイトル</span>
</span><span class="line"><span class="l-Scalar-Plain">author</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">username</span>
</span><span class="line">
</span><span class="line"><span class="c1"># ----------------------- #</span>
</span><span class="line"><span class="c1">#   3rd Party Settings    #</span>
</span><span class="line"><span class="c1"># ----------------------- #</span>
</span><span class="line">
</span><span class="line"><span class="c1"># Google Analytics</span>
</span><span class="line"><span class="l-Scalar-Plain">google_analytics_tracking_id</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">UA-XXXXXXXX-X</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>default.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
<span class="line-number">15</span>
<span class="line-number">16</span>
<span class="line-number">17</span>
<span class="line-number">18</span>
<span class="line-number">19</span>
<span class="line-number">20</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="cp">&lt;!doctype html&gt;</span>
</span><span class="line"><span class="c">&lt;!--[if lt IE 7]&gt; &lt;html class=&quot;no-js ie6 oldie&quot; lang=&quot;ja&quot;&gt; &lt;![endif]--&gt;</span>
</span><span class="line"><span class="c">&lt;!--[if IE 7]&gt;    &lt;html class=&quot;no-js ie7 oldie&quot; lang=&quot;ja&quot;&gt; &lt;![endif]--&gt;</span>
</span><span class="line"><span class="c">&lt;!--[if IE 8]&gt;    &lt;html class=&quot;no-js ie8 oldie&quot; lang=&quot;ja&quot;&gt; &lt;![endif]--&gt;</span>
</span><span class="line"><span class="c">&lt;!--[if gt IE 8]&gt;&lt;!--&gt;</span> <span class="nt">&lt;html</span> <span class="na">class=</span><span class="s">&quot;no-js&quot;</span> <span class="na">lang=</span><span class="s">&quot;ja&quot;</span><span class="nt">&gt;</span> <span class="c">&lt;!--&lt;![endif]--&gt;</span>
</span><span class="line">{% include head.html %}
</span><span class="line"><span class="nt">&lt;body&gt;</span>
</span><span class="line">{% include header.html %}
</span><span class="line"><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">&quot;main-container&quot;</span><span class="nt">&gt;</span>
</span><span class="line">	<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">&quot;main&quot;</span> <span class="na">class=</span><span class="s">&quot;wrapper clearfix&quot;</span><span class="nt">&gt;</span>
</span><span class="line">		<span class="nt">&lt;article&gt;</span>
</span><span class="line">{{ content }}
</span><span class="line">		<span class="nt">&lt;/article&gt;</span>
</span><span class="line">{% include aside.html %}
</span><span class="line">	<span class="nt">&lt;/div&gt;</span> <span class="c">&lt;!-- #main --&gt;</span>
</span><span class="line"><span class="nt">&lt;/div&gt;</span> <span class="c">&lt;!-- #main-container --&gt;</span>
</span><span class="line">{% include footer.html %}
</span><span class="line">{% include script.html %}
</span><span class="line"><span class="nt">&lt;/body&gt;</span>
</span><span class="line"><span class="nt">&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>head.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;head&gt;</span>
</span><span class="line">	<span class="nt">&lt;meta</span> <span class="na">charset=</span><span class="s">&quot;utf-8&quot;</span><span class="nt">&gt;</span>
</span><span class="line">	<span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span class="s">&quot;X-UA-Compatible&quot;</span> <span class="na">content=</span><span class="s">&quot;IE=edge,chrome=1&quot;</span><span class="nt">&gt;</span>
</span><span class="line">
</span><span class="line">	<span class="nt">&lt;title&gt;</span>jekyllで作る簡単GitHub Pages<span class="nt">&lt;/title&gt;</span>
</span><span class="line">	<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">&quot;description&quot;</span> <span class="na">content=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;</span>
</span><span class="line">	<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">&quot;author&quot;</span> <span class="na">content=</span><span class="s">&quot;tokkonopapa&quot;</span><span class="nt">&gt;</span>
</span><span class="line">
</span><span class="line">	<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">&quot;viewport&quot;</span> <span class="na">content=</span><span class="s">&quot;width=device-width,initial-scale=1&quot;</span><span class="nt">&gt;</span>
</span><span class="line">
</span><span class="line">	<span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href=</span><span class="s">&quot;css/style.css&quot;</span><span class="nt">&gt;</span>
</span><span class="line">
</span><span class="line">	<span class="nt">&lt;script </span><span class="na">src=</span><span class="s">&quot;js/libs/modernizr-2.0.6.min.js&quot;</span><span class="nt">&gt;&lt;/script&gt;</span>
</span><span class="line"><span class="nt">&lt;/head&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>header.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">&quot;header-container&quot;</span><span class="nt">&gt;</span>
</span><span class="line">	<span class="nt">&lt;header</span> <span class="na">class=</span><span class="s">&quot;wrapper clearfix&quot;</span><span class="nt">&gt;</span>
</span><span class="line">		<span class="nt">&lt;h1</span> <span class="na">id=</span><span class="s">&quot;title&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://tokkonopapa.github.com&quot;</span><span class="nt">&gt;</span>T.I.D.<span class="nt">&lt;/a&gt;&lt;/h1&gt;</span>
</span><span class="line">		<span class="nt">&lt;nav&gt;</span>
</span><span class="line">			<span class="nt">&lt;ul&gt;</span>
</span><span class="line">				<span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://tokkonopapa.github.com&quot;</span><span class="nt">&gt;</span>Home<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
</span><span class="line">				<span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://tokkonopapa.github.comdemo.html&quot;</span><span class="nt">&gt;</span>Demo<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
</span><span class="line">				<span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://tokkonopapa.github.comdocuments.html&quot;</span><span class="nt">&gt;</span>Documents<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
</span><span class="line">			<span class="nt">&lt;/ul&gt;</span>
</span><span class="line">		<span class="nt">&lt;/nav&gt;</span>
</span><span class="line">	<span class="nt">&lt;/header&gt;</span>
</span><span class="line"><span class="nt">&lt;/div&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>aside.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;aside&gt;</span>
</span><span class="line">	<span class="nt">&lt;h3&gt;</span>aside<span class="nt">&lt;/h3&gt;</span>
</span><span class="line">	<span class="nt">&lt;p&gt;</span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sodales urna non odio egestas tempor. Nunc vel vehicula ante. Etiam bibendum iaculis libero, eget molestie nisl pharetra in. In semper consequat est, eu porta velit mollis nec. Curabitur posuere enim eget turpis feugiat tempor. Etiam ullamcorper lorem dapibus velit suscipit ultrices.<span class="nt">&lt;/p&gt;</span>
</span><span class="line"><span class="nt">&lt;/aside&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>footer.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">&quot;footer-container&quot;</span><span class="nt">&gt;</span>
</span><span class="line">	<span class="nt">&lt;footer</span> <span class="na">class=</span><span class="s">&quot;wrapper&quot;</span><span class="nt">&gt;</span>
</span><span class="line">		<span class="nt">&lt;h3&gt;</span>footer<span class="nt">&lt;/h3&gt;</span>
</span><span class="line">	<span class="nt">&lt;/footer&gt;</span>
</span><span class="line"><span class="nt">&lt;/div&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>script.html </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
<span class="line-number">15</span>
</pre></td><td class="code"><pre><code class="html"><span class="line"><span class="nt">&lt;script </span><span class="na">src=</span><span class="s">&quot;//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&quot;</span><span class="nt">&gt;&lt;/script&gt;</span>
</span><span class="line"><span class="nt">&lt;script&gt;</span><span class="nb">window</span><span class="p">.</span><span class="nx">jQuery</span> <span class="o">||</span> <span class="nb">document</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="s1">&#39;&lt;script src=&quot;js/libs/jquery-1.7.1.min.js&quot;&gt;&lt;\/script&gt;&#39;</span><span class="p">)</span><span class="nt">&lt;/script&gt;</span>
</span><span class="line">
</span><span class="line"><span class="nt">&lt;script </span><span class="na">src=</span><span class="s">&quot;js/script.js&quot;</span><span class="nt">&gt;&lt;/script&gt;</span>
</span><span class="line"><span class="nt">&lt;script&gt;</span>
</span><span class="line">	<span class="kd">var</span> <span class="nx">_gaq</span><span class="o">=</span><span class="p">[[</span><span class="s1">&#39;_setAccount&#39;</span><span class="p">,</span><span class="s1">&#39;UA-42366765-1&#39;</span><span class="p">],[</span><span class="s1">&#39;_trackPageview&#39;</span><span class="p">]];</span>
</span><span class="line">	<span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="kd">var</span> <span class="nx">g</span><span class="o">=</span><span class="nx">d</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="nx">t</span><span class="p">),</span><span class="nx">s</span><span class="o">=</span><span class="nx">d</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="nx">t</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span><span class="nx">g</span><span class="p">.</span><span class="nx">async</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span>
</span><span class="line">	<span class="nx">g</span><span class="p">.</span><span class="nx">src</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;https:&#39;</span><span class="o">==</span><span class="nx">location</span><span class="p">.</span><span class="nx">protocol</span><span class="o">?</span><span class="s1">&#39;//ssl&#39;</span><span class="o">:</span><span class="s1">&#39;//www&#39;</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;.google-analytics.com/ga.js&#39;</span><span class="p">;</span>
</span><span class="line">	<span class="nx">s</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">g</span><span class="p">,</span><span class="nx">s</span><span class="p">)}(</span><span class="nb">document</span><span class="p">,</span><span class="s1">&#39;script&#39;</span><span class="p">));</span>
</span><span class="line"><span class="nt">&lt;/script&gt;</span>
</span><span class="line">
</span><span class="line"><span class="c">&lt;!--[if lt IE 7 ]&gt;</span>
</span><span class="line"><span class="c">	&lt;script src=&quot;//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js&quot;&gt;&lt;/script&gt;</span>
</span><span class="line"><span class="c">	&lt;script&gt;window.attachEvent(&quot;onload&quot;,function(){CFInstall.check({mode:&quot;overlay&quot;})})&lt;/script&gt;</span>
</span><span class="line"><span class="c">&lt;![endif]--&gt;</span>
</span></code></pre></td></tr></table></div></figure></notextile></div>

<div class="bogus-wrapper"><notextile><figure class="code"><figcaption><span>index.md </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
<span class="line-number">13</span>
<span class="line-number">14</span>
<span class="line-number">15</span>
<span class="line-number">16</span>
<span class="line-number">17</span>
<span class="line-number">18</span>
<span class="line-number">19</span>
<span class="line-number">20</span>
</pre></td><td class="code"><pre><code class="text"><span class="line">---
</span><span class="line">layout: default
</span><span class="line">title: &quot;サンプル・ページ&quot;
</span><span class="line">---
</span><span class="line">
</span><span class="line">article header h1
</span><span class="line">=================
</span><span class="line">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sodales urna non odio egestas tempor. Nunc vel vehicula ante. Etiam bibendum iaculis libero, eget molestie nisl pharetra in. In semper consequat est, eu porta velit mollis nec.
</span><span class="line">
</span><span class="line">article section h2
</span><span class="line">------------------
</span><span class="line">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sodales urna non odio egestas tempor. Nunc vel vehicula ante. Etiam bibendum iaculis libero, eget molestie nisl pharetra in. In semper consequat est, eu porta velit mollis nec. Curabitur posuere enim eget turpis feugiat tempor. Etiam ullamcorper lorem dapibus velit suscipit ultrices. Proin in est sed erat facilisis pharetra.
</span><span class="line">
</span><span class="line">article section h2
</span><span class="line">------------------
</span><span class="line">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sodales urna non odio egestas tempor. Nunc vel vehicula ante. Etiam bibendum iaculis libero, eget molestie nisl pharetra in. In semper consequat est, eu porta velit mollis nec. Curabitur posuere enim eget turpis feugiat tempor. Etiam ullamcorper lorem dapibus velit suscipit ultrices. Proin in est sed erat facilisis pharetra.
</span><span class="line">
</span><span class="line">
</span><span class="line">### article footer h3 ###
</span><span class="line">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sodales urna non odio egestas tempor. Nunc vel vehicula ante. Etiam bibendum iaculis libero, eget molestie nisl pharetra in. In semper consequat est, eu porta velit mollis nec. Curabitur posuere enim eget turpis feugiat tempor.
</span></code></pre></td></tr></table></div></figure></notextile></div>

<h4 id="section-2">参考情報</h4>
<ul>
  <li>
    <p><a href="http://mattn.kaoriya.net/software/lang/ruby/20090409185248.htm">Big Sky :: Jekyllで始める簡単ブログ</a><br />
  jekyll でブログを作るためのファイル構成が解説されている。</p>
  </li>
  <li>
    <p><a href="http://www.ksr-it.net/pdf/kushiro-jekyll-text.pdf">Jekyllによる静的 Webサイト構築入門</a><br />
  <a href="https://github.com/mojombo/jekyll/wiki/_pages">mojombo/jekyll の Wiki</a> をかなりの範囲でカバーする、わかりやすい入門書。Windows へのインストール方法も解説されている。</p>
  </li>
  <li>
    <p><a href="http://radiumsoftware.tumblr.com/post/10518849682">GitHub Pagesで楽々ホスティング - Radium Software</a><br />
  Jekyll 用に構築された <a href="https://github.com/unity-yb/unity-yb.github.com">GitHub ユーザーページ用リポジトリ</a> が参考になる。</p>
  </li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Heroku アプリのネーミング]]></title>
    <link href="http://tokkonopapa.github.com/blog/2011/12/21/heroku-app-name/"/>
    <updated>2011-12-21T23:51:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2011/12/21/heroku-app-name</id>
    <content type="html"><![CDATA[<p>無料枠だと、命名できないと思っていたけど勘違いで、使われていない名前ならいつでも変えられる。</p>

<p>ということで、名前のつけ方、変え方。</p>

<!--more-->

<h3 id="heroku-httpdevcenterherokucomarticlesruby-bamboo3createyourherokuapplication-create-your-heroku-application">1. <a href="http://devcenter.heroku.com/articles/ruby-bamboo#3_create_your_heroku_application" title="Create your Heroku application">アプリ名の命名を Heroku に任せる</a></h3>

<div class="bogus-wrapper"><notextile><figure class="code"><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class=""><span class="line">$ heroku create</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>勝手に名前が付けられる。どんな名前を付けてくれるのか、結構楽しみだったりする。</p>

<h3 id="httpdevcenterherokucomarticlescreating-appscreatinganamedapp-creating-a-named-app">2. <a href="http://devcenter.heroku.com/articles/creating-apps#creating_a_named_app" title="Creating a Named App">アプリ名を指定して作成する</a></h3>

<div class="bogus-wrapper"><notextile><figure class="code"><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class=""><span class="line">$ heroku create myappname</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>当然、既に取得されているアプリ名はダメ。</p>

<h3 id="httpdevcenterherokucomarticlesrenaming-apps-renaming-apps-from-the-cli">3. <a href="http://devcenter.heroku.com/articles/renaming-apps" title="Renaming Apps from the CLI">アプリ名を変更する</a></h3>
<p>次の3通りの方法。</p>

<ul>
  <li>リポジトリのディレクトリ内で変更する場合</li>
</ul>

<div class="bogus-wrapper"><notextile><figure class="code"><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class=""><span class="line">$ heroku rename 新しい名前</span></code></pre></td></tr></table></div></figure></notextile></div>

<ul>
  <li>リポジトリのディレクトリ外で変更する場合</li>
</ul>

<div class="bogus-wrapper"><notextile><figure class="code"><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
</pre></td><td class="code"><pre><code class=""><span class="line">$ heroku rename 新しい名前 --app 古い名前</span></code></pre></td></tr></table></div></figure></notextile></div>

<ul>
  <li>「MyApps」から変更する場合</li>
</ul>

<p><img src="https://lh5.googleusercontent.com/-Um6U7b3dY4o/TvHx1OcDTdI/AAAAAAAAABQ/u5llrMWP-PE/s500/HerokuRename.png" alt="「MyApps」から変更する" /></p>

<ul>
  <li>変更したアプリ名をリポジトリに反映するには、heroku アプリへの SSH プロトコル／パスを指定し直す。</li>
</ul>

<div class="bogus-wrapper"><notextile><figure class="code"><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class=""><span class="line">$ git remote rm heroku
</span><span class="line">$ git remote add heroku git@heroku.com:新しい名前.git</span></code></pre></td></tr></table></div></figure></notextile></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[github-preview を heroku にインストールする]]></title>
    <link href="http://tokkonopapa.github.com/blog/2011/12/19/installing-github-preview-on-heroku/"/>
    <updated>2011-12-19T23:19:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2011/12/19/installing-github-preview-on-heroku</id>
    <content type="html"><![CDATA[<p><a href="https://github.com/kei-s">kei-sさん</a> に 
<a href="https://twitter.com/#!/kei_s/status/133351755009359872" title="@kei_s: [github]よければご利用ください...!">教えてもらった</a> 
<a href="https://github.com/kei-s/github-preview" title="kei-s/github-preview - GitHub">github-preview</a> を 
fork したので、<a href="http://www.heroku.com/">heroku</a> へのインストール方法をメモ。  </p>

<p>ここに記したのは Mac (Mac OS X 10.6.8 Snow Leopard) での話です。Windows はそのうち確かめたいと思います。</p>

<!--more-->

<h3 id="heroku--ruby-httpdevcenterherokucomarticlesruby-bambooprerequisites-getting-started-with-ruby-on-herokubamboo">1. <a href="http://devcenter.heroku.com/articles/ruby-bamboo#prerequisites" title="Getting Started with Ruby on Heroku/Bamboo">Heroku で ruby を使うための設定</a></h3>
<p>heroku を利用する前提条件は次の3つ。</p>

<ul>
  <li><a href="http://beginrescueend.com/">rvm</a> と ruby 1.9.2</li>
  <li><a href="http://git-scm.com/">git</a></li>
  <li><a href="http://www.heroku.com/">heroku</a> のアカウントと heroku gem のインストール</li>
</ul>

<p>最新の <code>ruby-1.9.3-p0</code> とか使っているけど、大丈夫そう。
ただし、プロジェクトに <code>.rvmrc</code> があって <code>rvm use 1.9.2</code> とか書いてあると
次のように怒られる。</p>

<pre><code>WARN: ruby ruby-1.9.2-p290 is not installed.
To install do: 'rvm install ruby-1.9.2-p290'
</code></pre>

<p>この場合は、<code>~/.rvmrc</code> に</p>

<pre><code>rvm_project_rvmrc=0
</code></pre>

<p>とか書いておくと、プロジェクトの <code>.rvmrc</code> を無視し、<code>~/.rvmrc</code> の設定を使う。（参考：<a href="http://beginrescueend.com/workflow/rvmrc/" title="RVM: Ruby Version Manager - rvmrc">rvmrc files</a>）。</p>

<h3 id="heroku-gem-httpdevcenterherokucomarticlesheroku-command-installing-the-heroku-cli">2. <a href="http://devcenter.heroku.com/articles/heroku-command" title="Installing the Heroku CLI">heroku gem のインストール</a></h3>
<p>各OS用パッケージが載っているが、以下で大丈夫。</p>

<pre><code>$ gem install heroku
Fetching: term-ansicolor-1.0.7.gem (100%)
...
Successfully installed heroku-2.15.1
7 gems installed
</code></pre>

<p>heroku コマンドは、たびたびバージョンアップがなされるようなので、アップデートをチェック。</p>

<pre><code>$ gem update heroku
Updating installed gems
Nothing to update
</code></pre>

<p>続いて <a href="http://devcenter.heroku.com/articles/keys#adding_keys_to_heroku" title="Adding Keys to Heroku">SSH キーの証明書を発行</a> する。
SSH キーは <a href="http://help.github.com/mac-set-up-git/" title="Help.GitHub - Set Up Git">GitHub での設定</a> と共用で大丈夫。</p>

<pre><code>$ heroku keys:add
Enter your Heroku credentials.
Email: tokkonopapa@yahoo.com
Password: 
Found the following SSH public keys:
1) github_rsa.pub
2) id_rsa.pub
Which would you like to use with your Heroku account? 2
Uploading ssh public key /Users/kiyo/.ssh/id_rsa.pub
</code></pre>

<p><code>1)</code> は <a href="http://mac.github.com/">GitHub for Mac</a> の SSH キー（たぶん）。</p>

<h3 id="heroku-httpdevcenterherokucomarticlesruby-bamboo3createyourherokuapplication-3-create-your-heroku-application">3. <a href="http://devcenter.heroku.com/articles/ruby-bamboo#3_create_your_heroku_application" title="3. Create your Heroku application">Heroku アプリの生成</a></h3>
<p>heroku に上げたい Git リポジトリのディレクトリで <code>heroku create</code> とするだけ。</p>

<pre><code>$ git clone git://github.com/kei-s/github-preview.git github-preview
Cloning into 'github-preview'...
remote: Counting objects: 116, done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 116 (delta 40), reused 101 (delta 25)
Receiving objects: 100% (116/116), 73.46 KiB | 16 KiB/s, done.
Resolving deltas: 100% (40/40), done.

$ cd github-preview

$ heroku create
Creating growing-winter-3139...... done, stack is bamboo-mri-1.9.2
http://growing-winter-3139.heroku.com/ | git@heroku.com:growing-winter-3139.git
Git remote heroku added

$ git push heroku
</code></pre>

<p>アプリ用 URL やリモートリポジトリの情報は、「My Apps → General Info」から参照できる。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopress on GitHub Pages のインストールでハマったこと]]></title>
    <link href="http://tokkonopapa.github.com/blog/2011/12/03/installing-octopress-on-github/"/>
    <updated>2011-12-03T13:30:00+09:00</updated>
    <id>http://tokkonopapa.github.com/blog/2011/12/03/installing-octopress-on-github</id>
    <content type="html"><![CDATA[<p>まだ Lion にアップグレードしていない Mac Book Air (Mac OS X 10.6.8 Snow Leopard) に、Xcode3 と RVM (Ruby Version Manager) をインストールし、Octopass の立ち上げを試みたのですが、ハマりました。誰かの何かの役に立つかもしれないので、その時のメモを記しておきます。</p>

<p>ただし私は、「Ruby ってどんな？ gem って何？」というヒトなので、ここに書かれたことには間違いが含まれている可能性アリです。ご参照はソコソコに。</p>

<!--more-->

<h2 id="xcode-3-">Xcode 3 のインストール</h2>
<p><a href="https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792">Xcode 3.2.6 and iOS SDK 4.3 for Snow Leopard</a> からダウンロード、
<code>xcode_3.2.6_and_ios_sdk_4.3.dmg</code> を実行。iOS SDK 4.3 は要らないので、インストールせず。</p>

<h2 id="rvm-">RVM のインストール</h2>
<p><a href="http://beginrescueend.com/rvm/install/">RVM: Ruby Version Manager - Installing RVM</a> には、Single-User が推奨されているので、以下を実行。</p>

<pre><code>$ bash &lt; &lt;(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
</code></pre>

<p><code>.bash_profile</code> に RVM function を読み込ませるスクリプトを追加。</p>

<pre><code>$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] &amp;&amp; . "$HOME/.rvm/scripts/rvm" # Load RVM function' &gt;&gt; ~/.bash_profile
</code></pre>

<p>第1のハマりは、これを <code>.bashrc</code> に設定していたこと。<code>.bach_profile</code> でないとダメ （bash の起動で <code>.bashrc</code> を読み込まないのは Mac 特有？）。あるいは <code>.bach_profile</code> に次を設定しておく（<a href="http://www.glamenv-septzen.net/view/383">“.bash_profile”と”.bashrc”の使い分け</a>）。</p>

<pre><code>if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi
</code></pre>

<p>これがちゃんと設定されていないと、後半の <code>rake install</code> で次のようなエラーが出る。</p>

<pre><code>Could not find RedCloth-4.2.8 in any of the sources
Run `bundle install` to install missing gems.
</code></pre>

<h2 id="ruby-193-">Ruby 1.9.3 のインストール</h2>
<p>Octopress は 1.9.2 以上が条件。<code>rvm list known</code> とすると、1.9.3 があるので、最新版をインストールすることに。rvm コマンドには sudo は付けない。付けるのは Multi-User 用。</p>

<pre><code>$ rvm install 1.9.3
</code></pre>

<p>デフォルトで 1.9.3 を使うように設定。</p>

<pre><code>$ rvm use 1.9.3
</code></pre>

<p>また <a href="http://octopress.org/docs/setup/rvm/">Installing RVM - Octopress</a> によると、rubygems の更新も必要。</p>

<pre><code>$ rvm rubygems latest
</code></pre>

<h2 id="octopress-">Octopress のインストール</h2>
<p><a href="http://octopress.org/docs/setup/">Octopress Setup</a> に従いインストール。まず、Octopress のクローンを作る。</p>

<pre><code>$ git clone git://github.com/imathis/octopress.git octopress
$ cd octopress
</code></pre>

<p>ここで次のようなメッセージが出現。</p>

<pre><code>==============================================================================
= NOTICE                                                                     =
==============================================================================
= RVM has encountered a new or modified .rvmrc file in the current directory =
= This is a shell script and therefore may contain any shell commands.       =
=                                                                            =
= Examine the contents of this file carefully to be sure the contents are    =
= safe before trusting it! ( Choose v[iew] below to view the contents )      =
==============================================================================
Do you wish to trust this .rvmrc file? (/Users/xxxxxx/github/octopress/.rvmrc)
y[es], n[o], v[iew], c[ancel]&gt; 
</code></pre>

<p>RVM が <code>.rvmrc</code> の上書きを監視しているようだ。よくわからないまま <code>y</code> を入力。これが間違えの元か？ 作成された <code>.rvmrc</code> には <code>rvm 1.9.2</code> と書かれているが、とりあえずそのまま。</p>

<pre><code>$ gem install bundler
$ bundle install
$ 
$ rake install
</code></pre>

<p>やばい、ここでエラー。</p>

<pre><code>rake aborted!
no such file to load -- bundler/setup
</code></pre>

<p><a href="http://www.oiax.jp/books/hajimeru_rails_3.html">『はじめる！ Rails3』読者サポートページ</a> の 「Ruby が複数インストールされた環境で発生する場合がある」 を元に、次を実行。</p>

<pre><code>sudo gem update rake
</code></pre>

<p>再び <code>rake install</code>。</p>

<pre><code>Could not find rake-0.9.2.2 in any of the sources
Run `bundle install` to install missing gems.
</code></pre>

<p>え～、今 bundle で install したばっかりでしょう！？ 再度 <code>rake install</code> しても</p>

<pre><code>$ bundle show rake
</code></pre>

<p>を実行すると、やはり <code>bundle install</code> しろと言われる。両コマンド間で参照している環境変数が違う感じ？</p>

<p>で、前述の <code>.rvmrc</code> を思い出す。試しに <code>.rvmrc-</code> に退避してみたらあっさり OK。</p>

<p>結局、rvm をインストールした時の、次のメッセージに従い、<code>~/.rvmrc</code> に <code>rvm_project_rvmrc=0</code> を記述して、一件落着。</p>

<pre><code>If you wish to disable the project .rvmrc file functionality, set
rvm_project_rvmrc=0 in either /etc/rvmrc or ~/.rvmrc.
</code></pre>

<p>現在は上記 <code>~/.rvmrc</code> への追加ではなく、<code>rvm use 1.9.3 --default</code> を実行して <code>.rvmrc</code> に
設定されている <code>rvm 1.9.2</code> を無視する設定としている。</p>

<p>ところで、<a href="http://gembundler.com/">bundler</a> って何？ Ruby の世界は奥深そうなのでした ;-) 。</p>
]]></content>
  </entry>
  
</feed>
