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

  <title><![CDATA[Glide Note]]></title>
  <link href="http://blog.glidenote.com/atom.xml" rel="self"/>
  <link href="http://blog.glidenote.com/"/>
  <updated>2012-05-17T23:31:53+09:00</updated>
  <id>http://blog.glidenote.com/</id>
  <author>
    <name><![CDATA[Akira Maeda]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[homebrewを利用してrubyオプションが有効なvimを導入]]></title>
    <link href="http://blog.glidenote.com/blog/2012/05/16/vim-ruby-homebrew/"/>
    <updated>2012-05-16T23:12:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/05/16/vim-ruby-homebrew</id>
    <content type="html"><![CDATA[<p>LionというかMacに入っているVimはrubyオプションが無効になっているので、
homebrewを利用してrubyオプションが有効なvimを導入。毎回ググっているので自分用メモ。</p>

<p>デフォルトのvimのrubyオプションの状態を確認</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>
<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=""><span class="line">[akira@MacBookAir] $ uname -a
</span><span class="line">Darwin MacBookAir.local 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64
</span><span class="line">[akira@MacBookAir] $ vim --version | grep ruby
</span><span class="line">-python3 +quickfix +reltime -rightleft -ruby +scrollbind +signs +smartindent </span></code></pre></td></tr></table></div></figure></notextile></div>

<p><code>-ruby</code>となっていてrubyオプションが無効になっている。</p>

<h2 id="homebrew">homebrewを利用して導入</h2>

<p><a href="https://gist.github.com/721952">非常に便利なformula</a>があったのでそれを利用</p>

<div><script src="https://gist.github.com/2710710.js?file="></script>
<noscript><pre><code>brew install \
https://raw.github.com/gist/721952/e99293dc36c9b5c27aec0a4024b848ce50b9b126/vim.rb \
--enable-interp=ruby --force</code></pre></noscript></div>

<p>homebrew経由で導入したvimのrubyオプションの状態を確認</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>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class=""><span class="line">[akira@MacBookAir] $ /usr/local/bin/vim --version | grep ruby
</span><span class="line">+reltime -rightleft +ruby +scrollbind +signs +smartindent -sniff +startuptime 
</span><span class="line">Linking: /usr/bin/llvm-gcc   -L. -L/Users/akira/.rbenv/versions/1.9.2-p290/lib  -L/usr/local/lib  -L/usr/local/lib -o vim       -lm  -lncurses -liconv -framework Cocoa        -lruby-static -lobjc -L/Users/akira/.rbenv/versions/1.9.2-p290/lib   </span></code></pre></td></tr></table></div></figure></notextile></div>

<p><code>/usr/local/bin/vim</code>に<code>+ruby</code>でrubyオプションが有効になったvimが入りました。</p>

<h2 id="section">参考</h2>

<ul>
  <li><a href="http://codenote.net/ruby/194.html">Homebrew で Vim をインストールする方法 | CodeNote.net</a></li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Moshのrpm作成を簡略化した]]></title>
    <link href="http://blog.glidenote.com/blog/2012/05/15/mosh-rpm/"/>
    <updated>2012-05-15T09:36:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/05/15/mosh-rpm</id>
    <content type="html"><![CDATA[<p><a href="http://mosh.mit.edu/">Mosh</a>が便利で、かなり活用しているんですが、
開発速度が速く、バージョンアップのたびにRPM作成をしていくのが結構だるいので
多少楽になるように対応。</p>

<ul>
  <li><a href="https://github.com/glidenote/mosh-1.2-rpm">glidenote/mosh-1.2-rpm</a></li>
</ul>

<p>単にGitHub上にspecとbuild用のスクリプトを配置しているだけですが。  </p>

<p>CentOS6とSL6決めうちなのは、私がそれしか使っていないからです。
もしCentOS5用のを作る場合は<a href="http://www.sssg.org/blogs/naoya/archives/2267">@n0tsさんのサイト</a>が
参考になります。</p>

<h2 id="section">参考</h2>

<ul>
  <li><a href="http://blog.kyanny.me/entry/2012/04/11/233514">mosh-1.1.3-1.el6.x86_64.rpm - 刺身☆ブーメランのブログ</a></li>
  <li><a href="http://www.sssg.org/blogs/naoya/archives/2267">mosh バージョン 1.2 | Carpe Diem</a></li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[kindle4を買って4ヶ月経ったので感想を書いてみる]]></title>
    <link href="http://blog.glidenote.com/blog/2012/05/13/kindle4/"/>
    <updated>2012-05-13T22:21:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/05/13/kindle4</id>
    <content type="html"><![CDATA[<p><img src="http://distilleryimage9.s3.amazonaws.com/f4f9e03c74a111e180c9123138016265_7.jpg" height="300" width="300" align="right" /></p>

<p>kindle4を買ったときに使用感などを書こうと思っていたんですが、
買ってからいつの間にか4ヶ月も経ってしまっていたので、今さらながら感想を書いてみる。</p>

<p>私は初代iPad所有で初Kindleという感じです。</p>

<h2 id="kindle4">kindle4の感想を箇条書き</h2>

<ul>
  <li>注文して中4日で届いた。</li>
  <li>軽く、小さいので持ち歩きが苦じゃない。初代iPadを利用していたので、その差は歴然。</li>
  <li><a href="http://www.oreilly.co.jp/ebook/">日本のオライリーPDF</a>はサイズ的に読むのが厳しい。iPadの方が良いと思う。</li>
  <li>E-inkが読みやすい。</li>
  <li>記憶容量が少ない。約1.2GB程度。</li>
  <li>Amazon.comで購入したら、すぐに自分のKindle内にデータが送られてくるのが便利過ぎる。</li>
  <li>データサイズが数百MBの自炊PDFを読むことは容量的に基本無理。</li>
  <li>日本語の電子書籍が少ないので、必然的に洋書を読むようになる。</li>
  <li>搭載されているブラウザは残念な感じ。</li>
  <li>物理キーボードが付いていないので、文字入力も残念な感じ。</li>
  <li><a href="http://www.east-village.jp/KINDLE/">英辞郎 MOBI/Kindle3/Kindle4</a>を使えば、分からない英単語をすぐに調べられる。</li>
  <li><a href="http://pragprog.com/">The Pragmatic Bookshelf</a>とKindle連携が素晴らしい。購入済み書籍が改訂されると自動的にKindleに送られてくる。</li>
  <li><a href="http://www.instapaper.com/">Instapaper</a>、<a href="http://www.readability.com/">Readability</a>など海外ウェブサービスは連携出来るものが多い。</li>
  <li>バックライトが無いので当然ながら暗所での利用不可。<a href="http://www.amazon.com/gp/product/B004SD20DU/">LED付きカバー</a>が<strong>必須</strong>。</li>
  <li>LED付きカバーを利用するとちょっと重い。LED付きカバー 141g + kindle4 166g</li>
  <li>mobi形式最高</li>
</ul>

<p>kindle4の購入直後は、iPad時代に購入したオライリーのPDFと、ブックスキャンで自炊してもらったPDFを読むのに
適しておらず若干後悔をしていたんですが、英語の書籍、技術書読む用と割り切った瞬間から
非常に優れたデバイスであることに気づいて、今では本はKindleで読んでいる時間が一番長いです。</p>

<p>また英語縛りみたいなのを自分に課したことで、日常的に英語の技術書をを読む習慣がついたのと
英語への抵抗が少なくなった事が一番良かった点かなと思っています。
(まだ読み終わった冊数も少なく、読む速度はめちゃくちゃ遅いですが…)</p>

<p>周りに購入を迷っていた人が結構いたので何かの参考になれば幸いです。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[モバイルバッテリーを大容量から小容量に切り替えたら生活が快適になった話]]></title>
    <link href="http://blog.glidenote.com/blog/2012/05/12/eneloop-mobile-booster/"/>
    <updated>2012-05-12T22:00:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/05/12/eneloop-mobile-booster</id>
    <content type="html"><![CDATA[<p>
<a href="http://www.amazon.co.jp/三洋電機-KBC-L54D-SANYO-USB出力付きリチウムイオンバッテリー-高容量リチウムイオン3-7V5400mAh電池使用/dp/B005DUMNSE?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B005DUMNSE"><img src="http://ecx.images-amazon.com/images/I/4183wp7N5bL._SL160_.jpg" align="right" /></a>
<a href="http://www.amazon.co.jp/三洋電機-KBC-L27D-SANYO-USB出力付きリチウムイオンバッテリー-高容量リチウムイオン3-7V2700mAh電池使用/dp/B005DUMOMY?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B005DUMOMY"><img src="http://ecx.images-amazon.com/images/I/41oqWuqmL5L._SL160_.jpg" align="right" /></a>
</p>

<ul>
<li><a href="http://www.amazon.co.jp/三洋電機-KBC-L27D-SANYO-USB出力付きリチウムイオンバッテリー-高容量リチウムイオン3-7V2700mAh電池使用/dp/B005DUMOMY?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B005DUMOMY">SANYO USB出力付きリチウムイオンバッテリー (高容量リチウムイオン3.7V2700mAh電池使用) KBC-L27D</a></li>
<li><a href="http://www.amazon.co.jp/三洋電機-KBC-L54D-SANYO-USB出力付きリチウムイオンバッテリー-高容量リチウムイオン3-7V5400mAh電池使用/dp/B005DUMNSE?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B005DUMNSE">SANYO USB出力付きリチウムイオンバッテリー (高容量リチウムイオン3.7V5400mAh電池使用) KBC-L54D</a></li>
</ul>

<p>最近iPhoneとSony Ericsson mini用に使っているモバイルバッテリーを電池容量の小さいものに
変えたら生活が快適になったので、ちょっと書こうかと思います。</p>

<p>KBC-L54DとKBC-L27Dは同じ日に発売された同世代のモバイルバッテリーなので、
本体サイズ、電池容量、給電ポート数以外の性能は同じです。<br />
ランプで残容量が分かったり、 マイクロUSBで充電が出来るタイプのものです。</p>

<h2 id="kbc-l54d">大容量KBC-L54Dを利用していて不便に感じていた点</h2>

<ul>
  <li>サイズが大きい 62(幅)×70(高さ)×22(奥行)mm</li>
  <li>重い 142g</li>
  <li>片手でiPhoneと一緒に持つと操作しにくい。疲れる</li>
  <li>充電しながらズボンのポケットに入れて持ち歩くことが難しいサイズ感</li>
  <li>上記理由から充電するときはカバンに入れざるを得ない</li>
  <li>給電ポート2個を同時に利用することがほとんど無い</li>
  <li>電池容量(5400mAh)が大きいので充電時間が長い</li>
</ul>

<p><img src="http://farm6.staticflickr.com/5337/7180207570_8f60285ee1_c.jpg" alt="" /></p>

<h2 id="kbc-l27d">小容量KBC-L27Dに切り替えて良かった点</h2>

<ul>
  <li>サイズが小さい 寸法:70(幅)×39(高さ)×22(奥行)mm</li>
  <li>軽い 78g</li>
  <li>iPhoneを充電しながらポケットに入れて持ち歩けるサイズ感</li>
  <li>片手でiPhoneと一緒に持っても操作問題なし</li>
  <li>電池容量(2700mAh)が小さいので充電が早い</li>
  <li>iPhone4へのフル充電が1回半出来るので、1日過ごすには十分</li>
</ul>

<p><img src="http://farm8.staticflickr.com/7103/7180206696_ce96fc41d6_c.jpg" alt="" /></p>

<p>KBC-L54DとKBC-L27Dはいずれも2011年9月に発売され、コストパフォーマンスが良かったので
何も考えず大容量のKBC-L54Dを購入して利用していたのですが、5400mAhという容量は使い切ることがなく
1回給電したら充電という利用方法で、大容量のメリットを生かし切れておらず
上に挙げたような不便さだけが際立ってきていたので、小容量のKBC-L27Dに切り替えて快適になりました。</p>

<p>KBC-L27Dは値段が安定していないので、同等性能のPanasonic製品の方が安いケースがありますので、 
購入前に両方の値段をチェックすることをお勧めします。</p>

<p>
<a href="http://www.amazon.co.jp/Panasonic-USB対応モバイル電源パック-リチウムイオン5400-ブラック-QE-PL201-K/dp/B0051R4EYU?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B0051R4EYU"><img src="http://ecx.images-amazon.com/images/I/21otpm0VfNL._SL160_.jpg" align="right" /></a>
<a href="http://www.amazon.co.jp/Panasonic-USB対応モバイル電源パック-リチウムイオン2700-ブラック-QE-PL101-K/dp/B0051R4EJU?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B0051R4EJU"><img src="http://ecx.images-amazon.com/images/I/31P4Z3LsIaL._SL160_.jpg" align="right" /></a>
</p>

<ul>
<li><a href="http://www.amazon.co.jp/Panasonic-USB対応モバイル電源パック-リチウムイオン2700-ブラック-QE-PL101-K/dp/B0051R4EJU?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B0051R4EJU">Panasonic USB対応モバイル電源パック リチウムイオン2700 ブラック QE-PL101-K</a></li>
<li><a href="http://www.amazon.co.jp/Panasonic-USB対応モバイル電源パック-リチウムイオン5400-ブラック-QE-PL201-K/dp/B0051R4EYU?SubscriptionId=AKIAI227ELAAME5ZX3JQ&amp;tag=glidenote-22&amp;linkCode=xm2&amp;camp=2025&amp;creative=165953&amp;creativeASIN=B0051R4EYU">Panasonic USB対応モバイル電源パック リチウムイオン5400 ブラック QE-PL201-K</a></li>
</ul>

<p><br clear="all" /></p>

<p>iPhone4のバッテリもへたってきたのか、最近バッテリ持ちが悪くなってきたので買い換え時かな…</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[netstatの代替品ssコマンドのzsh補完関数を作った]]></title>
    <link href="http://blog.glidenote.com/blog/2012/05/11/ss-zsh-completion/"/>
    <updated>2012-05-11T23:20:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/05/11/ss-zsh-completion</id>
    <content type="html"><![CDATA[<p><a href="http://blog.glidenote.com/blog/2012/05/03/zsh-completion/">前回はサブコマンドとファイル名を手抜き補完</a>に続いて
今回は<code>ss</code>コマンドの補完関数を作成しました。</p>

<p>作成したものはgithubにも公開してます。</p>

<ul>
  <li><a href="https://github.com/glidenote/ss-zsh-completion">glidenote/ss-zsh-completion</a></li>
</ul>

<h2 id="section">事の発端</h2>

<p>twitterを見ていて、下記のようなtweetを発見。</p>

<blockquote class="twitter-tweet" lang="ja"><p>fedoraのnetstatのmanを見てて気付いたけど、netstatは時代遅れだからssを使いなって書いてあるね。</p>&mdash; Masami Ichikawaさん (@masami256) <a href="https://twitter.com/masami256/status/198438975545942018" data-datetime="2012-05-04T15:48:33+00:00">5月 4, 2012</a></blockquote>
<script src="http://blog.glidenote.com//platform.twitter.com/widgets.js" charset="utf-8"></script>

<ul>
  <li>確かに自宅サーバのFedora16で<code>man netstat</code>を見てみるとそんなような事が書いてある<code>This program is obsolete.  Replacement for netstat is ss.  Replacement for netstat -r is ip route.  Replacement for netstat -i is ip  -s  link.   Replacement for netstat -g is ip maddr.</code></li>
  <li>ssを使ってみる。なかなか良い感じ</li>
  <li>zshでオプション補完されないし、使い方もよく分からん</li>
  <li>補完関数を作ろう</li>
</ul>

<p>という感じで、<code>ss</code>コマンドの補完関数作成に着手。</p>

<h2 id="ss">ssコマンドのオプションを確認</h2>

<p>補完関数を作成する前に、まず<code>ss -h</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>
<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>
<span class="line-number">24</span>
<span class="line-number">25</span>
<span class="line-number">26</span>
<span class="line-number">27</span>
<span class="line-number">28</span>
<span class="line-number">29</span>
<span class="line-number">30</span>
<span class="line-number">31</span>
</pre></td><td class="code"><pre><code class=""><span class="line">Usage: ss [ OPTIONS ]
</span><span class="line">       ss [ OPTIONS ] [ FILTER ]
</span><span class="line">   -h, --help           this message
</span><span class="line">   -V, --version        output version information
</span><span class="line">   -n, --numeric        don't resolve service names
</span><span class="line">   -r, --resolve       resolve host names
</span><span class="line">   -a, --all            display all sockets
</span><span class="line">   -l, --listening      display listening sockets
</span><span class="line">   -o, --options       show timer information
</span><span class="line">   -e, --extended      show detailed socket information
</span><span class="line">   -m, --memory        show socket memory usage
</span><span class="line">   -p, --processes      show process using socket
</span><span class="line">   -i, --info           show internal TCP information
</span><span class="line">   -s, --summary        show socket usage summary
</span><span class="line">
</span><span class="line">   -4, --ipv4          display only IP version 4 sockets
</span><span class="line">   -6, --ipv6          display only IP version 6 sockets
</span><span class="line">   -0, --packet display PACKET sockets
</span><span class="line">   -t, --tcp            display only TCP sockets
</span><span class="line">   -u, --udp            display only UDP sockets
</span><span class="line">   -d, --dccp           display only DCCP sockets
</span><span class="line">   -w, --raw            display only RAW sockets
</span><span class="line">   -x, --unix           display only Unix domain sockets
</span><span class="line">   -f, --family=FAMILY display sockets of type FAMILY
</span><span class="line">
</span><span class="line">   -A, --query=QUERY, --socket=QUERY
</span><span class="line">       QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
</span><span class="line">
</span><span class="line">   -D, --diag=FILE      Dump raw information about TCP sockets to FILE
</span><span class="line">   -F, --filter=FILE   read filter information from FILE
</span><span class="line">       FILTER := [ state TCP-STATE ] [ EXPRESSION ]</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="section-1">完成形</h2>

<div><script src="https://gist.github.com/2639605.js?file="></script>
<noscript><pre><code>#compdef ss
# ------------------------------------------------------------------------------
# Description
# -----------
#
#  Completion script for ss
#
#  Source: https://github.com/glidenote/ss-zsh-completion
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
#  * Akira Maeda
#
# ------------------------------------------------------------------------------

_arguments -s -S \
  '(-h --help)'{-h,--help}'[Print this summary and exit]' \
  '(-V --version)'{-V,--version}'[output version information]' \
  '(-n --numeric)'{-n,--numeric}&quot;[don't resolve service names]&quot; \
  '(-r --resolve)'{-r,--resolve}'[resolve host names]' \
  '(-a --all)'{-a,--all}'[display all sockets]' \
  '(-l --listening)'{-l,--listening}'[display listening sockets]' \
  '(-o --options)'{-o,--options}'[show timer information]' \
  '(-e --extended)'{-e,--extended}'[show detailed socket information]' \
  '(-m --memory)'{-m,--memory}'[show socket memory usage]' \
  '(-p --processes)'{-p,--processes}'[show process using socket]' \
  '(-i --info)'{-i,--info}'[show internal TCP information]' \
  '(-s --summary)'{-s,--summary}'[show socket usage summary]' \
  '(-4 --ipv4)'{-4,--ipv4}'[display only IP version 4 sockets]' \
  '(-6 --ipv6)'{-6,--ipv6}'[display only IP version 6 sockets]' \
  '(-0 --packet)'{-0,--packet}'[display PACKET sockets]' \
  '(-t --tcp)'{-t,--tcp}'[display only TCP sockets]' \
  '(-u --udp)'{-u,--udpi}'[display only UDP sockets]' \
  '(-d --dccp)'{-d,--dccp}'[display only DCCP sockets]' \
  '(-w --raw)'{-w,--raw}'[display only RAW sockets]' \
  '(-x --unix)'{-x,--unix}'[display only Unix domain sockets]' \
  '(-f --family)'{-f,--family=}'[display sockets of type FAMILY]' \
  '(-A --query --socket)'{-A,--query=,--socket=}'[QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}]:query:(all inet tcp udp raw unix packet netlink)' \
  '(-D --diag)'{-D,--diag=}'[Dump raw information about TCP sockets to FILE]:_files' \
  '(-F --filter)'{-F,--filter=}'[read filter information from FILE. FILTER := \[ state TCP-STATE \] \[ EXPRESSION \]]:_files' \
  '(-):command: _command_names -e' \
  '*::args: _normal'</code></pre></noscript></div>

<p><code>ss</code>のようにオプションだけしかない場合は、定型フォーマットで書いていくだけです。<br />
出来上がった<code>_ss</code>を<code>$fpath</code>において<code>exec $SHELL</code>で利用出来るようになります。<br />
またzsh補完関数には<a href="https://github.com/zsh-users/zsh/blob/master/Etc/completion-style-guide">completion-style-guide</a>という
書式スタイルのガイドがあるので、それに従った形で書いています。</p>

<p><img src="http://blog.glidenote.com/images/2012/05/ss-completion0.png" alt="" /></p>

<p><img src="http://blog.glidenote.com/images/2012/05/ss-completion1.png" alt="" /></p>

<h2 id="url">参考URL</h2>

<ul>
  <li><a href="http://news.mynavi.jp/column/zsh/017/index.html">【コラム】漢のzsh (17) コマンド補完設定 - daemonコマンド編(1) </a></li>
  <li><a href="http://news.mynavi.jp/column/zsh/018/index.html">【コラム】漢のzsh (18) コマンド補完設定 - daemonコマンド編(2) </a></li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[GitHubのfeedをfacebookのtimeline風に表示するgitspectiveがシャレオツ]]></title>
    <link href="http://blog.glidenote.com/blog/2012/05/10/gitspective/"/>
    <updated>2012-05-10T02:00:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/05/10/gitspective</id>
    <content type="html"><![CDATA[<p>GitHubのfeedをfacebookのtimeline風に表示してくれる<a href="http://zmoazeni.github.com/gitspective/">gitspective</a>という
サービスがリリースされていたので、早速試してみました。</p>

<p><a href="http://zmoazeni.github.com/gitspective/">http://zmoazeni.github.com/gitspective/</a>にアクセスすると下記のような画面。</p>

<p><img src="http://blog.glidenote.com/images/2012/05/gitspective0.png" alt="" /></p>

<p>私のtimelineを表示させた場合</p>

<p><img src="http://blog.glidenote.com/images/2012/05/gitspective1.png" alt="" /></p>

<p>[Push],[Fork],[Gist],[Branch],[Tags],[Follows],[Comments]などで表示、非表示が
出来るので、必要な情報だけ絞り込むことが出来ます。</p>

<p>Gistだけを表示させると下記のような感じ</p>

<p><img src="http://blog.glidenote.com/images/2012/05/gitspective2.png" alt="" /></p>

<p>またソース自体も公開されているので、ローカルに<code>git clone</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">git clone git://github.com/zmoazeni/gitspective.git</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>同じディレクトリに下記のような<code>server.rb</code>スクリプトを配置し、</p>

<div><script src="https://gist.github.com/2646654.js?file="></script>
<noscript><pre><code>#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'webrick'
include WEBrick

server = HTTPServer.new(
    :DocumentRoot  =&gt; File.join(Dir.pwd, &quot;.&quot;),
    :Port  =&gt; 10080
)

trap(&quot;INT&quot;) { server.shutdown }
server.start</code></pre></noscript></div>

<p><code>ruby server.rb</code>して、<code>http://localhost:10080/</code>にアクセスすれば
ローカルですぐに動作もします。</p>

<p>憧れの技術者が「今何を作ってるんだろう」とか「何に注目しているんだろうとか」
ネットストークする際に活躍しそうです。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[zshでサブコマンドとファイル名を手抜き補完する]]></title>
    <link href="http://blog.glidenote.com/blog/2012/05/03/zsh-completion/"/>
    <updated>2012-05-03T23:00:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/05/03/zsh-completion</id>
    <content type="html"><![CDATA[<p>結婚祝いで先日<a href="https://twitter.com/#!/gosukenator">mizzy</a>さんから頂いた<a href="http://pragprog.com/book/dccar/build-awesome-command-line-applications-in-ruby">Build Awesome Command-Line Applications in Ruby</a>
を読んで自作コマンドを作っているんですが、zshで補完されず不便だったので手抜きで対応。<br />
最初はzshの補完関数も一緒に作っていたのですが、あまりに非効率だったので、<code>.zshrc</code>に書いて対応。</p>

<p>たとえば<code>hoge</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>
<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=""><span class="line">hoge init
</span><span class="line">hoge update
</span><span class="line">hoge upgrade
</span><span class="line">hoge commit</span></code></pre></td></tr></table></div></figure></notextile></div>

<p><code>hoge[tab]</code>でサブコマンドが補完され、</p>

<p><img src="http://blog.glidenote.com/images/2012/05/zsh-completion1.png" alt="" /></p>

<p>サブコマンドの後はファイル、ディレクトリが補完されるように。</p>

<p><img src="http://blog.glidenote.com/images/2012/05/zsh-completion2.png" alt="" /></p>

<h2 id="section">サブコマンドとファイル名を補完する</h2>

<p>下記を<code>.zshrc</code>に記載して<code>exec $SHELL</code></p>

<div><script src="https://gist.github.com/2574327.js?file="></script>
<noscript><pre><code>compdef _hogecmd hoge
function _hogecmd {
  local -a cmds
  if (( CURRENT == 2 ));then
    cmds=('init' 'update' 'upgrade' 'commit')
    _describe -t commands &quot;subcommand&quot; cmds
  else
    _files
  fi

  return 1;
}</code></pre></noscript></div>

<p>やっていることは</p>

<ol>
  <li><code>compdef</code>で<code>_hogecmd</code>という補完用functionを定義し、<code>hoge</code>コマンドを実行したときに呼び出されるように。</li>
  <li>function内の<code>cmds</code>で補完したいサブコマンドを列挙</li>
  <li><code>CURRENT == 2</code>で<code>hoge</code>のあとに補完されるのはサブコマンドだけと指定</li>
  <li><code>_describe</code>で補完候補で表示されるときに<code>subcommand</code>というグループになるようにしている</li>
  <li>サブコマンドのあとは<code>_files</code>でファイルとディレクトリが補完されるように</li>
</ol>

<h2 id="section-1">参考になるサイト</h2>

<p>zshの補完関数の書き方がまとまっているところがほとんど無いので下記が非常参考になります。</p>

<ul>
  <li><a href="http://hakobe932.hatenablog.com/entry/2012/02/13/214934">zsh補完関数を自作すると便利 - はこべブログ♨</a> </li>
  <li><a href="http://www.ayu.ics.keio.ac.jp/~mukai/translate/write_zsh_functions.html">zsh補完関数の書き方(訳)</a></li>
  <li><a href="http://linux.die.net/man/1/zshcompsys">zshcompsys(1): zsh completion system - Linux man page</a></li>
  <li><a href="http://linux.die.net/man/1/zshcompwid">zshcompwid(1): zsh completion widgets - Linux man page</a></li>
</ul>

<p>特に<a href="http://hakobe932.hatenablog.com/entry/2012/02/13/214934">はこべブログ♨ </a>さんの記事は、
補完の際に用いる、<code>compadd</code>,<code>_files</code>,<code>_describe</code>などについて詳しく書いてあるのでオススメです。</p>

<p>自作コマンドに限らず、新しいツールなどを利用していたりするとサブコマンドが補完されず
ガッカリすることがありますが、ほんの数行でサクッと出来る対応なのでオススメです。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[社内でターミナル勉強会を開催した]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/30/terminal-study-vol-2/"/>
    <updated>2012-04-30T03:14:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/30/terminal-study-vol-2</id>
    <content type="html"><![CDATA[<p>月一回のペースで社内勉強会を主催しているんですが、
資料をspeckerdeckに置くようにしたので、
先日社内で開催したターミナル勉強会の資料を公開。  </p>

<iframe style="border:0; padding:0; margin:0; background:transparent;" mozallowfullscreen="true" webkitallowfullscreen="true" frameborder="0" allowtransparency="true" id="presentation_frame_4f9a6a2b78ef2a0021034baa" src="http://blog.glidenote.com//speakerdeck.com/embed/4f9a6a2b78ef2a0021034baa" width="700" height="601"></iframe>

<p>去年にも同じテーマで勉強会をやっていて、
今回は実際のターミナル操作8割、説明2割みたいな感じでやったので
資料だけみても正直あんまり役に立たないかと思いますが。  </p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bash版oh-my-zsh、Bash framework「bash-it」を試してみた]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/24/bash-it/"/>
    <updated>2012-04-24T18:00:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/24/bash-it</id>
    <content type="html"><![CDATA[<p>久しく利用していないBashですが、Bash版<a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a>といえる
<a href="https://github.com/revans/bash-it">bash-it</a>という面白そうなツールがあったので試してみました。</p>

<ul>
  <li><a href="https://github.com/revans/bash-it">revans/bash-it</a></li>
</ul>

<h2 id="bash-it">bash-itの導入</h2>

<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>
<span class="line-number">10</span>
<span class="line-number">11</span>
</pre></td><td class="code"><pre><code class=""><span class="line">cd ~
</span><span class="line">git clone http://github.com/revans/bash-it.git ~/.bash_it
</span><span class="line">sh ~/.bash_it/install.sh
</span><span class="line">
</span><span class="line">Your original .bash_profile has been backed up to .bash_profile.bak
</span><span class="line">Copied the template .bash_profile into ~/.bash_profile, edit this file to customize bash-it
</span><span class="line">Do you use Jekyll? (If you don't know what Jekyll is, answer 'n') [Y/N] Y
</span><span class="line">Copied the template .jekyllconfig into your home directory. Edit this file to customize bash-it for using the Jekyll plugins
</span><span class="line">Would you like to enable all, some, or no aliases? Some of these may make bash slower to start up (especially completion). (all/some/none) all
</span><span class="line">Would you like to enable all, some, or no plugins? Some of these may make bash slower to start up (especially completion). (all/some/none) all
</span><span class="line">Would you like to enable all, some, or no completion? Some of these may make bash slower to start up (especially completion). (all/some/none) all</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>私はOctoperssを利用していて、<a href="https://github.com/mojombo/jekyll">jekyll</a>拡張もあると便利そうなので一緒に導入しました。</p>

<h2 id="bash-it-1">bash-itの利用</h2>

<p><code>~/.bash_profile</code>がbash-it用に変更されているのでsourceで読み込む</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">source ~/.bash_profile</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="section">自分用のカスタム設定を記載</h2>

<p>自分用のaliaseなどのカスタム設定は下記のファイルに記載。
<code>custom</code>ディレクトリ中に拡張子を<code>.bash</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>
<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=""><span class="line">~/.bash_it/aliases/custom.aliases.bash
</span><span class="line">~/.bash_it/lib/custom.bash
</span><span class="line">~/.bash_it/plugins/custom.plugins.bash
</span><span class="line">~/.bash_it/custom/*.bash</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="section-1">テーマの変更</h2>

<p>2012年4月24日現在下記のテーマがあるので、
<code>.bash_profile</code>に記載してsourceで再読み込ませすると反映されます。</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>
<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>
<span class="line-number">24</span>
<span class="line-number">25</span>
</pre></td><td class="code"><pre><code class=""><span class="line">bobby
</span><span class="line">candy
</span><span class="line">clean
</span><span class="line">demula
</span><span class="line">dos
</span><span class="line">doubletime
</span><span class="line">doubletime_multiline
</span><span class="line">doubletime_multiline_pyonly
</span><span class="line">envy
</span><span class="line">hawaii50
</span><span class="line">mbriggs
</span><span class="line">minimal
</span><span class="line">modern
</span><span class="line">modern-t
</span><span class="line">n0qorg
</span><span class="line">pete
</span><span class="line">rainbowbrite
</span><span class="line">rjorgenson
</span><span class="line">simple
</span><span class="line">sirup
</span><span class="line">standard
</span><span class="line">tonka
</span><span class="line">tylenol
</span><span class="line">zitron
</span><span class="line">zork</span></code></pre></td></tr></table></div></figure></notextile></div>

<p><img src="http://blog.glidenote.com/images/2012/04/bashit.png" alt="" /></p>

<p>うーん、自分でカスタムしまくったzshに慣れすぎてしまっているせいか
正直今はあんまり便利な感じがしない。<br />
oh-my-zshの出始めはこんな感じだったようか気がするのでもうすこしテーマとか
補完関数がそろってくると便利になるかもしれない。</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[git + etckeeper + BitbucketのPrivate Repositoryで/etcを管理]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/23/etckeeper-bitbucket/"/>
    <updated>2012-04-23T14:00:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/23/etckeeper-bitbucket</id>
    <content type="html"><![CDATA[<p>個人で利用しているさくらのVPSのプラン変更に伴い、サーバの移行作業をしているんですが、
そのタイミングで、<code>/etc</code>配下のファイルの管理を個人で立ててたgitoliteから
<a href="https://bitbucket.org/">Bitbucket</a>のprivate repositoryでの管理に変更したのでメモ。</p>

<p>Bitbucketでprivate repositoryを作成する方法は以前紹介したのでそちらを参照下さい。</p>

<ul>
  <li><a href="http://blog.glidenote.com/blog/2012/02/13/manage-private-repository-with-bitbucket/">Private RepositoryをBitbucketで管理し始めた - Glide Note - グライドノート</a></li>
</ul>

<p>導入環境はCentOS 6.2です。Bitbucketへの鍵登録などは済んでいるものとします。</p>

<h2 id="etckeeper">etckeeperの導入</h2>

<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">sudo yum -y install git etckeeper</span></code></pre></td></tr></table></div></figure></notextile></div>

<p><code>/etc/etckeeper/etckeeper.conf</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>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class=""><span class="line">VCS="git"
</span><span class="line">HIGHLEVEL_PACKAGE_MANAGER=yum
</span><span class="line">LOWLEVEL_PACKAGE_MANAGER=rpm</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>などとgitを利用し、CentOSに適した設定になっているので、そのまま利用。</p>

<h2 id="etcgitignore-">/etc/.gitignore に管理したくないファイルを追加</h2>

<p>非公開なリポジトリとはいえ、外部のサーバにファイルを置くので、
万が一漏洩しても被害を少なくするためセキュリティ上管理しないファイルを
<code>/etc/.gitignore</code>に記載。<br />
<code>/etc/passwd</code>とか<code>/etc/shadow</code>は管理しない方がいいかと思います。</p>

<h2 id="etckeeperetccommit">etckeeperを用いて、/etcをcommit</h2>

<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">sudo etckeeper init
</span><span class="line">sudo etckeeper commit</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>ちなみにetckeeperがcommitするタイミングは主に下記の2点</p>

<ol>
  <li>yumを実行したタイミング</li>
  <li>dailyでのcron</li>
</ol>

<p>手動でcommitするときは下記のような感じ</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">sudo etckeeper commit</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="bitbucketpush">Bitbucket上のプライベートリポジトリにpush</h2>

<p><a href="https://bitbucket.org/">Bitbucket</a>上に作成したprivate repositoryにpush。
下記は<code>foobar</code>というプライベートリポジトリにpushする例。</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>
<span class="line-number">2</span>
<span class="line-number">3</span>
</pre></td><td class="code"><pre><code class=""><span class="line">cd /etc
</span><span class="line">sudo git remote add origin ssh://git@bitbucket.org/glidenote/foobar.git
</span><span class="line">sudo git push origin master</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>これで/etc配下のファイルのバージョン管理が出来るようになりました。
検証やpuppetマニフェストの動作確認とかでOSの再インストールを頻繁に行うので、
/etc配下のファイルを管理していると再構築が楽でいろいろと捗ります。</p>

<h2 id="section">参考</h2>

<ul>
  <li><a href="http://blog.udzura.jp/2010/11/22/tutorial-of-etckeeper/">etckeeperのつかいかた（インストール、サブコマンド追加） « blog.udzura.jp</a></li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Speaker Deckを貼れないサイトにEmbedlyを利用して貼る方法]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/21/speaker-deck/"/>
    <updated>2012-04-21T06:30:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/21/speaker-deck</id>
    <content type="html"><![CDATA[<p>プレゼンの資料を公開するのに今回<a href="http://speakerdeck.com/">Speaker Deck</a>を
使ってみたのですが、自分のブログに資料を貼ろうとしても上手く表示されず。 
ちょっと工夫が必要だったのでメモ。</p>

<p>結論から言うと<a href="http://embed.ly/">Embedly</a>を活用すれば出来る。</p>

<ul>
  <li><a href="http://embed.ly/">Embedly | Embed any URL through one powerful API</a></li>
</ul>

<h2 id="speaker-deckscript">Speaker Deck自体のScript</h2>

<p>Speaker Deck自体で表示されるのは下記のようなscript</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">&lt;script async class="speakerdeck-embed" data-id="4f9008a649bc250022016265" data-ratio="1.299492385786802" src="http://blog.glidenote.com//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt;</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>上を貼ってもそのまま表示されてプレゼン資料は表示されず。</p>

<p>いろいろ調べてみると、Speaker Deck自体が貼れないブログサービス、
CMSが結構あるらしく上手く貼るために別途プラグインが用意されているというのを理解。</p>

<p>やっぱSlideShareに変更しようかと迷いながら、なんとかする方法は無いか調べていたら
公式のFAQを読んでいたら下記のような記載を発見。</p>

<blockquote><p>Every presentation on Speaker Deck has the oEmbed endpoint as a link tag in the header so it can be automatically detected by sites like Embed.ly.</p><footer><strong>How do I use oEmbed to display a presentation on my site?</strong><cite><a href="http://speakerdeck.com/faq#oembed">speakerdeck.com/faq#oembed/&hellip;</a></cite></footer></blockquote>

<h2 id="embedly">Embedlyを利用</h2>

<p>下記のように自分の資料のURLを入力</p>

<p><img src="http://blog.glidenote.com/images/2012/04/embedly0.png" alt="" /></p>

<p>すると下記のように変換される</p>

<p><img src="http://blog.glidenote.com/images/2012/04/embedly1.png" alt="" /></p>

<p>Embedlyで表示されるiframeを利用した形式</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">&lt;iframe style="border:0; padding:0; margin:0; background:transparent;" mozallowfullscreen="true" webkitallowfullscreen="true" frameborder="0" allowtransparency="true" id="presentation_frame_4f9008a649bc250022016265" src="http://blog.glidenote.com//speakerdeck.com/embed/4f9008a649bc250022016265" width="700" height="601"&gt;&lt;/iframe&gt;  </span></code></pre></td></tr></table></div></figure></notextile></div>

<p>上を貼るとちゃんと表示されるようになりました。<br />
これで「2012年にもなってSlideShare使ってんじゃねえよ」とかdisられなくて済みます。たぶん。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[MySQL Casual Talks Vol.3でLTをさせて頂きました]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/20/mysql-casucal-vol3/"/>
    <updated>2012-04-20T08:00:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/20/mysql-casucal-vol3</id>
    <content type="html"><![CDATA[<p><a href="http://atnd.org/events/26373">MySQL Casual Talks Vol.3</a>でLTをさせて頂きました。<br />
登壇の機会を与えてくれた主催の<a href="https://twitter.com/#!/myfinder">@myfinder</a>さん、
会場を提供していただいた日本オラクルさん、運営に携わった方々ありがとうございました！</p>

<iframe style="border:0; padding:0; margin:0; background:transparent;" mozallowfullscreen="true" webkitallowfullscreen="true" frameborder="0" allowtransparency="true" id="presentation_frame_4f9008a649bc250022016265" src="http://blog.glidenote.com//speakerdeck.com/embed/4f9008a649bc250022016265" width="700" height="601"></iframe>

<p><br clear="all" /></p>

<p>以前blogに書いた内容に、実際の状況などを加えCacualに話させて頂きました。<br />
詳しい内容は下記エントリをご覧ください</p>

<ul>
  <li><a href="http://blog.glidenote.com/blog/2011/12/01/watch-mysql-replication-error/">logmonとMaatkitでMySQLレプリケーションエラーから自動復旧 - Glide Note - グライドノート</a></li>
  <li><a href="http://blog.glidenote.com/blog/2011/12/02/logmon-with-supervisord/">ログファイル監視スクリプトlogmonをsupervisordで管理 - Glide Note - グライドノート</a></li>
</ul>

<p>あと下記のようなエントリを書いておいて、何事も無かったかのようにしれっとkeynoteでCasualにLT。</p>

<ul>
  <li><a href="http://blog.glidenote.com/blog/2012/04/04/presentation-2012/">2012年のプレゼンはgithub pages+markdown2impressで決まり!! - Glide Note - グライドノート</a></li>
</ul>

<p>私が運悪く担当サービスのメンテ日と重なってしまい、<a href="http://atnd.org/events/28056">懇親会</a>に出れなくて残念でしたが、
<a href="https://twitter.com/#!/n0ts">@n0ts</a>さん、<a href="https://twitter.com/#!/sugyan">@sugyan</a>さんにお会いできて感激しました。 </p>

<p>またどこかで登壇する機会があれば、そのときは皆様よろしくお願いします。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[CUIなスニペットツールsheetが便利なのでzshでsheetファイルを補完]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/16/sheet/"/>
    <updated>2012-04-16T10:25:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/16/sheet</id>
    <content type="html"><![CDATA[<p>コマンドラインで動作するスニペットツール「<a href="http://oscardelben.github.com/sheet/">sheet</a>」を
使ってみたらめちゃくちゃ便利だったので、zshでsheetファイルを補完するようにしてみました。</p>

<ul>
  <li><a href="http://oscardelben.github.com/sheet/">Sheet - Text snippets for the command line</a></li>
</ul>

<p>ついでにsheetの導入方法と使い方も案内。
sheetの要件の記載が特に無いですが、恐らくRuby 1.9以上は必要かと。
導入環境は<code>Lion</code>です。</p>

<h2 id="section">導入方法</h2>

<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 sheet</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="sheet">sheetの使い方</h2>

<h3 id="sheet-1">sheetの確認</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">sheet</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>もしくは</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">sheet list</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="sheet-2">sheetの作成</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">sheet new シート名</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>たとえば、apacheのログ確認用のスニペットファイルを作成するときは</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">sheet apache</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>とかでファイルを開いてエディタで編集。</p>

<h3 id="sheet-3">sheetの編集</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">sheet edit シート名</span></code></pre></td></tr></table></div></figure></notextile></div>

<h3 id="sheet-4">sheetのクリップボードへのコピー</h3>

<p>Macの<code>pbcopy</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">sheet copy シート名</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>でシートの中身をクリップボードにコピー出来ます。
(linuxも<code>xclip</code>でクリップボードと連携出来るようですが、
私のFedora16環境では動作しなかったので誰かlinuxでの検証を!!)</p>

<h2 id="sheet-5">sheetの削除</h2>

<p>シートの削除自体が、今のところ実装されていないので
<code>~/.sheet/</code>内のファイルを<code>rm</code>する感じです。</p>

<h2 id="url">URLを開く</h2>

<p>定型フォーマットでURLを記載しておくとブラウザで開くことが出来ます。</p>

<p>sheetファイルを用意。(<code>google</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">sheet new google</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>下記のようなフォーマットで用意</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">url: https://www.google.co.jp/</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>下記コマンドでブラウザにurlを渡されます。</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">sheet google</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="section-1">活用方法</h2>

<p>とりあえず私は</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">sheet new apache</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>とかで<code>apache</code>,<code>mysql</code>とかでソフトウェアごとに分類して、よく使うコマンドを下記のように登録してます。</p>

<div><script src="https://gist.github.com/2394106.js?file=apache-command.sh"></script>
<noscript><pre><code># 直近5000アクセス中、アクセスが集中しているURLを調べ、上位4件を表示。 
tail -5000 /usr/local/apache2/logs/access_log|awk '{print $1}'|sort | uniq -c |sort -gr|head -n 4

# 直近5000アクセス中、アクセス元のIPアドレスを調べ、上位4件を表示。 
tail -5000 /usr/local/apache2/logs/access_log|awk '{print $2}'|sort | uniq -c |sort -gr|head -n 4

# 直近5000アクセス中アクセスの多いリダイレクト元（アクセス元)を調べ、上位4件を表示。 
tail -n 5000 /usr/local/apache2/logs/access_log | awk '{print $12}' | sort | uniq -c | sort -gr | head -n 4 

# 直近5000アクセス中アクセスの多いU/Aを調べ、上位4件を表示。 
tail -n 5000 /usr/local/apache2/logs/access_log | awk '{print $13}' | sort | uniq -c | sort -gr | head -n 4</code></pre></noscript></div>

<div><script src="https://gist.github.com/2394106.js?file=mysql-command.sql"></script>
<noscript><pre><code># ユーザの確認
select user,host,password from mysql.user;

# レプリケーションエラー対応用
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G

# mk-slave-restart
mk-slave-restart -uroot -p --error-numbers 1062 --verbose</code></pre></noscript></div>

<p>そしてzshでsheetファイルが補完されるように<code>.zshrc</code>に下記のような設定を記載</p>

<div><script src="https://gist.github.com/2375020.js?file="></script>
<noscript><pre><code># sheet
function _sheets {
  _files -W ~/.sheets/ &amp;&amp; return 0;
  return 1;
}
compdef _sheets sheet</code></pre></noscript></div>

<p>sheetで呼び出してterminalやら、tmuxのコピーモードで必要な行だけコピーして利用してます。<br />
普段あんまり利用しないコマンドとかを一式用意しておくと楽が出来そうです。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[zsh+MoshでHostnameを補完出来るようにした]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/14/mosh-hostname-completion/"/>
    <updated>2012-04-14T09:58:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/14/mosh-hostname-completion</id>
    <content type="html"><![CDATA[<p><a href="http://mosh.mit.edu/">Mosh</a>を利用していてHostnameが補完されずに不便だったので、
下記を<code>.zshrc</code>に書いて、sshと同じように<code>mosh [tab]</code>でhostnameを補完するようにしました。
ほぼssh補完関数そのままですが。</p>

<div><script src="https://gist.github.com/2381208.js?file="></script>
<noscript><pre><code># mosh
function _mosh_hosts {
  local -a config_hosts
  local config
  integer ind

  # If users-hosts matches, we shouldn't complete anything else.
  if [[ &quot;$IPREFIX&quot; == *@ ]]; then
    _combination -s '[:@]' my-accounts users-hosts &quot;users=${IPREFIX/@}&quot; hosts &quot;$@&quot; &amp;&amp; return
  else
    _combination -s '[:@]' my-accounts users-hosts \
      ${opt_args[-l]:+&quot;users=${opt_args[-l]:q}&quot;} hosts &quot;$@&quot; &amp;&amp; return
  fi
  if (( ind = ${words[(I)-F]} )); then
    config=${~words[ind+1]}
  else
    config=&quot;$HOME/.ssh/config&quot;
  fi
  if [[ -r $config ]]; then
    local IFS=$'\t ' key hosts host
    while read key hosts; do
      if [[ &quot;$key&quot; == (#i)host ]]; then
	 for host in ${(z)hosts}; do
	    case $host in
	    (*[*?]*) ;;
	    (*) config_hosts+=(&quot;$host&quot;) ;;
	    esac
	 done
      fi
    done &lt; &quot;$config&quot;
    if (( ${#config_hosts} )); then
      _wanted hosts expl 'remote host name' \
	compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' &quot;$@&quot; $config_hosts
    fi
  fi
}

compdef _mosh_hosts mosh</code></pre></noscript></div>

<p><code>$HOME/.ssh/config</code>と<code>$HOME/.ssh/known_hosts</code>に記載されているものは
補完されるようになりました。</p>

<p><strong>2012年4月23日 追記</strong></p>

<p><a href="https://twitter.com/#!/n0ts">@n0ts</a>さんがブログで紹介していた方法のほうが楽なので追記。</p>

<ul>
  <li><a href="http://www.sssg.org/blogs/naoya/archives/2245">mosh コマンドで ssh コマンドと同等の補完をする方法 | Carpe Diem</a></li>
</ul>

<p><code>.zshrc</code>に下記を1行追加だけでホスト名が補完されるのでこっちの方が楽です。
(ホスト名だけでなくsshのオプションも補完されてしまいますが)</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">compdef mosh=ssh</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>ますますMosh生活が快適になりました。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopress利用時のrel='canonical'の問題]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/12/octopress-canonical-problem/"/>
    <updated>2012-04-12T23:00:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/12/octopress-canonical-problem</id>
    <content type="html"><![CDATA[<p><a href="http://octopress.org/">Octopress</a>を利用していて、はてブが分散されてしまう問題があって
原因がよく分かっていなかったんですが、<a href="https://twitter.com/#!/sugyan">@sugyan</a>さんに
指摘して頂いて解決しました!!@sugyanさん、ありがとうございます!!</p>

<h2 id="octopress">Octopressのソースで修正した箇所</h2>

<p>結論から言うと、下記のように修正して解決。</p>

<div><script src="https://gist.github.com/2365383.js?file="></script>
<noscript><pre><code>diff --git a/source/_includes/head.html b/source/_includes/head.html
index 0fdc401..198cd0d 100644
--- a/source/_includes/head.html
+++ b/source/_includes/head.html
@@ -17,7 +17,7 @@
   &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
 
   {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
-  &lt;link rel=&quot;canonical&quot; href=&quot;{{ canonical }}&quot;&gt;
+  &lt;link rel=&quot;canonical&quot; href=&quot;{{ canonical }}/&quot;&gt;
   &lt;link href=&quot;{{ root_url }}/favicon.png&quot; rel=&quot;icon&quot;&gt;
   &lt;link href=&quot;{{ root_url }}/stylesheets/screen.css&quot; media=&quot;screen, projection&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
   &lt;script src=&quot;{{ root_url }}/javascripts/modernizr-2.0.js&quot;&gt;&lt;/script&gt;</code></pre></noscript></div>

<h2 id="section">問題エントリの一例</h2>

<ul>
  <li><a href="http://b.hatena.ne.jp/entry/blog.glidenote.com/blog/2012/02/29/autojump-zsh/">はてなブックマーク - zsh使いなら効率改善のため知っておきたいAUTOJUMP - Glide Note - グライドノート</a></li>
  <li><a href="http://b.hatena.ne.jp/entry/blog.glidenote.com/blog/2012/02/29/autojump-zsh">はてなブックマーク - zsh使いなら効率改善のため知っておきたいAUTOJUMP - Glide Note - グライドノート</a></li>
</ul>

<p>エントリが重複している…</p>

<ul>
  <li><a href="http://b.hatena.ne.jp/entrylist?url=http%3A%2F%2Fblog.glidenote.com%2F">『Glide Note - グライドノート』 の新着エントリー - はてなブックマーク</a></li>
</ul>

<h2 id="sugyan">@sugyanさんの指摘</h2>

<blockquote class="twitter-tweet" lang="ja"><p>glidenoteさんスゴいなー 手が早い…このブログ、link rel=&#8221;canonical&#8221;で指定されてるURLが末尾スラッシュ無しなのに目次などからのurlはスラ有りだったりで、はてブが分散されてる気がする</p>&mdash; すぎゃーんさん (@sugyan) <a href="https://twitter.com/sugyan/status/189992754657509376" data-datetime="2012-04-11T08:26:17+00:00">4月 11, 2012</a></blockquote>
<script src="http://blog.glidenote.com//platform.twitter.com/widgets.js" charset="utf-8"></script>

<h2 id="section-1">問題の原因</h2>

<ul>
  <li>Octopress自体が生成するURLが<code>http://blog.glidenote.com/blog/2012/02/29/autojump-zsh/</code>というような末尾に<code>/</code>有りのURL</li>
  <li>htmlソースに記載されているcanonicalは<code>http://blog.glidenote.com/blog/2012/02/29/autojump-zsh</code>と末尾に<code>/</code>無しのURL</li>
</ul>

<p>これにより、別エントリとして解釈されており、よく調べてみたら<a href="https://github.com/imathis/octopress/pull/415">githubでも問題は指摘されていました</a>。</p>

<p>Octopress利用していて残念だった点が解消しました!!<strong>@sugyan++</strong><br />
感謝の意を表して@sugyanさんの好きな画像を貼って起きますよ</p>

<p><img src="http://blog.glidenote.com/images/2012/04/momoclo.jpg" alt="" /></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[tmux上でmosh接続したときに新しいウィンドウを生成する]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/11/mosh-with-tmux/"/>
    <updated>2012-04-11T23:12:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/11/mosh-with-tmux</id>
    <content type="html"><![CDATA[<p><a href="http://blog.glidenote.com/blog/2012/04/11/mosh-on-sakura-vps/">前回の記事</a>で
<a href="http://mosh.mit.edu/">Mosh</a>を導入してあまりに快適なので、zsh+tmux+moshの環境を整え中。</p>

<p>tmuxを利用中に、moshでリモートホストに接続したら、新規ウィンドウを生成するように
<code>.zshrc</code>に下記のように記載。</p>

<div><script src="https://gist.github.com/2359525.js?file="></script>
<noscript><pre><code>if [ $TERM = screen ]; then
function mosh_tmux() {
    eval server=\${$#}
    tmux new-window -n $@ &quot;exec ssh $@&quot;
}
alias mosh=mosh_tmux
fi</code></pre></noscript></div>

<p>下記のように、新規にmoshでリモートホストに接続すると
hostnameの入ったウィンドウが生成されるようになりました。</p>

<p><img src="http://blog.glidenote.com/images/2012/04/mosh-tmux.png" alt="" /></p>

<p>スリープから復帰してもリモートホストに接続しているターミナルが
生きているので、tmux+moshで新境地が開拓出来そうな予感。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[さくらVPSにSSH代替品のMoshを入れてみた]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/11/mosh-on-sakura-vps/"/>
    <updated>2012-04-11T11:42:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/11/mosh-on-sakura-vps</id>
    <content type="html"><![CDATA[<ul>
  <li><a href="http://mosh.mit.edu/">Mosh: the mobile shell</a></li>
</ul>

<p>話題の<a href="http://mosh.mit.edu/">Mosh</a>をMacBook Airと自宅サーバのFedora16に入れて、
あまりのレスポンスの良さに感動して、早速さくらVPS(CentOS6)にも入れてみました。<br />
moshの解説は<a href="http://d.hatena.ne.jp/karasuyamatengu/20120411/1334092521">karasuyamatenguさんのサイト</a>に非常によくまとまっています。</p>

<p>ssh鍵の登録などのsshの設定は完了しているものとして作業します。(認証部分はsshに依存しているので)</p>

<h2 id="vpsmosh">さくらVPSにMoshを導入</h2>

<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">sudo yum -y install boost-devel zlib-devel ncurses-devel protobuf-devel paco
</span><span class="line">exec $SHELL</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>yumで導入出来なかったので、githubからソースを持ってきて導入。
ソースから導入する場合は、<a href="http://paco.sourceforge.net/">paco</a>で
管理した方が楽なので、<code>paco</code>を利用します。<br />
<code>IO::Pty</code>も必要のようなことが書いてありますが検証した<code>Lion</code>、<code>Fedora16</code>、<code>SL6.2</code>、<code>CentOS6.2</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>
<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=""><span class="line">mkdir ~/tmp
</span><span class="line">cd ~/tmp
</span><span class="line">git clone git://github.com/keithw/mosh.git
</span><span class="line">cd mosh
</span><span class="line">./autogen.sh
</span><span class="line">./configure
</span><span class="line">make
</span><span class="line">sudo paco -D make install
</span><span class="line">sudo paco -ua
</span><span class="line">exec $SHELL</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>さくらVPS側では、UDPの60000-61000番ポートを開放する必要があります。<br />
私は<code>/etc/sysconfig/iptables</code>に下記を設定しました。適時変更してください。<br />
検証時は接続元を絞った方がいいかと思います。</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>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class=""><span class="line"># mosh
</span><span class="line">-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 60000:61000 -j ACCEPT</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="macmosh">MacにMoshを導入</h2>

<p>Homebrewを利用して導入</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">brew install mobile-shell</span></code></pre></td></tr></table></div></figure></notextile></div>

<h2 id="macvpsmosh">MacからさくらVPSにMosh接続</h2>

<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">mosh hostname</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>という感じで接続出来ます。sshdのように常時デーモンが起動しているわけでなく、
mosh接続した際に、リモートホストでmosh-serverが起動される感じです。</p>

<p>sshに慣れきっていたので、Moshのレスポンスの良さは驚きです。
とりあえずローカル環境に関してはsshじゃなくmoshでいいような。</p>

<p>自分の開発環境には全台導入しました。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[keepalived.conf編集用にkeepalived-syntax.vimを作った]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/09/keepalived-syntax.vim/"/>
    <updated>2012-04-09T01:09:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/09/keepalived-syntax.vim</id>
    <content type="html"><![CDATA[<p><a href="https://github.com/vim-scripts/nginx.vim">nginx.vim</a>のソースを眺めてて、
syntax系Vim pluginが作ってみたくなったのと、<a href="http://www.keepalived.org/">keepalived</a>
のconfを書くときにsyntax highlightが効かなくて困っていたのを思い出したので書いてみた。</p>

<ul>
  <li><a href="https://github.com/glidenote/keepalived-syntax.vim">glidenote/keepalived-syntax.vim</a></li>
</ul>

<p>keepalived自体にconfのsyntax checkをしてくれる機能が無くて、confを修正するときは
<a href="https://github.com/frsyuki/keepalived-check">keepalived-check</a>を必ず回しているんですが
そもそもconfの作成の時点で、間違いに気づければいいなと昔から思っていたので、
それが解決しそうです。</p>

<h2 id="section">導入方法</h2>

<p>導入には<a href="https://github.com/gmarik/vundle">vundle</a>か、<a href="https://github.com/Shougo/neobundle.vim">NeoBundle</a>を利用してください。</p>

<p>私はvundleを利用しているので、<code>.vimrc</code>に下記のように記載しています。</p>

<p><strong>2012年4月9日 2:00追記 setからsetlocalに修正しました</strong></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>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class=""><span class="line">Bundle 'glidenote/keepalived-syntax.vim'
</span><span class="line">au BufRead,BufNewFile keepalived.conf setlocal ft=keepalived</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>@heavenshellさんに教えてもらいました</p>

<blockquote class="twitter-tweet" lang="ja"><p>@<a href="https://twitter.com/glidenote">glidenote</a> &#8220;au BufRead,BufNewFile keepalived.conf set ft=keepalived&#8221; は setlocal の方が良いようです。<a href="http://t.co/IDF8bqkX" title="http://bit.ly/Itypeg">bit.ly/Itypeg</a> <a href="http://t.co/6F0BIw4a" title="http://bit.ly/Itypeh">bit.ly/Itypeh</a></p>&mdash; heavenshellさん (@heavenshell) <a href="https://twitter.com/heavenshell/status/189033982409703425" data-datetime="2012-04-08T16:56:28+00:00">4月 8, 2012</a></blockquote>
<script src="http://blog.glidenote.com//platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>before</p>

<p><img src="http://blog.glidenote.com/images/2012/04/keepalived0.png" alt="" /></p>

<p>after</p>

<p><img src="http://blog.glidenote.com/images/2012/04/keepalived1.png" alt="" /></p>

<p>最近keepalivedのconfを一から書く事はほとんどないですが、
confを修正するときに重宝しそうです。</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[nginx.vimを入れてみた]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/08/nginx.vim/"/>
    <updated>2012-04-08T04:33:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/08/nginx.vim</id>
    <content type="html"><![CDATA[<p>nginxのconfを書いていて、syntax highlightがきかないので導入してみた。</p>

<ul>
  <li><a href="https://github.com/vim-scripts/nginx.vim">vim-scripts/nginx.vim</a></li>
</ul>

<p><code>.vimrc</code>に下記のように記載</p>

<div><script src="https://gist.github.com/2331541.js?file="></script>
<noscript><pre><code>Bundle 'nginx.vim'
au BufRead,BufNewFile /etc/nginx/* set ft=nginx</code></pre></noscript></div>

<p>before</p>

<p><img src="http://blog.glidenote.com/images/2012/04/nginxvim0.png" alt="" /></p>

<p>after</p>

<p><img src="http://blog.glidenote.com/images/2012/04/nginxvim1.png" alt="" /></p>

<p>ソースがわかりやすいので、syntax系vim pluginはすぐ自作出来そう。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[auto-fu.zshの自動補完が便利すぎる]]></title>
    <link href="http://blog.glidenote.com/blog/2012/04/07/auto-fu.zsh/"/>
    <updated>2012-04-07T00:16:00+09:00</updated>
    <id>http://blog.glidenote.com/blog/2012/04/07/auto-fu.zsh</id>
    <content type="html"><![CDATA[<p><code>auto-fu.zsh</code>の自動補完が便利すぎてやばいです。
2年前くらいに話題になっていたようですが、全く知りませんでした。</p>

<ul>
  <li><a href="https://github.com/hchbaw/auto-fu.zsh">hchbaw/auto-fu.zsh</a></li>
</ul>

<p><img src="https://github.com/hchbaw/auto-fu.zsh/raw/readme/auto-fu.gif" alt="" /></p>

<p>普通に試すだけなら下記を実行すればOK</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>
<span class="line-number">2</span>
</pre></td><td class="code"><pre><code class=""><span class="line">git clone git://github.com/hchbaw/auto-fu.zsh.git
</span><span class="line">source auto-fu.zsh/auto-fu.zsh; zle-line-init () { auto-fu-init; }; zle -N zle-line-init</span></code></pre></td></tr></table></div></figure></notextile></div>

<p>私は下記のような感じで設置しました。</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>
<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=""><span class="line">mkdir ~/work/ ~/.zsh/
</span><span class="line">cd ~/work/
</span><span class="line">git clone git://github.com/hchbaw/auto-fu.zsh.git
</span><span class="line">cp ~/work/auto-fu.zsh/auto-fu.zsh ~/.zsh/auto-fu.zsh</span></code></pre></td></tr></table></div></figure></notextile></div>

<p><code>.zshrc</code>に下記を追加して、<code>exec $SHELL</code></p>

<div><script src="https://gist.github.com/2320385.js?file="></script>
<noscript><pre><code>#=============================
# source auto-fu.zsh
#=============================
if [ -f ~/.zsh/auto-fu.zsh ]; then
    source ~/.zsh/auto-fu.zsh
    function zle-line-init () {
        auto-fu-init
    }
    zle -N zle-line-init
fi

</code></pre></noscript></div>

<p>これは凄い</p>

<h2 id="url">参考URL</h2>

<ul>
  <li><a href="http://d.hatena.ne.jp/hchbaw/20100526/1274886125">zshで自動補完したい - hchbaw記</a></li>
  <li><a href="http://www.clear-code.com/blog/2011/9/5.html">おすすめzsh設定 - ククログ(2011-09-05)</a></li>
</ul>
]]></content>
  </entry>
  
</feed>

