<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Linux / Drkcore</title><link>http://blog.kzfmix.com/entry/Linux</link><description>Programming, Music, Snowboarding</description><atom:link href="http://blog.kzfmix.com/rss/" rel="self"></atom:link><language>ja</language><lastBuildDate>Fri, 06 Jan 2012 20:23:39 +0900</lastBuildDate><item><title>Linuxネットワークプログラミングバイブルを買った</title><link>http://blog.kzfmix.com/entry/1325848013</link><description>&lt;p&gt;&lt;a href="http://blog.kzfmix.com/entry/1324625962"&gt;UNIXネットワークプログラミング入門&lt;/a&gt;と&lt;a href="http://blog.kzfmix.com/entry/1324984017"&gt;ルーター自作でわかるパケットの流れ&lt;/a&gt;を読んで、pollとかepollとかlibeventの使い方を覚えたいなぁと思ったらLinuxネットワークプログラミングバイブルってのを見つけた。&lt;/p&gt;
&lt;p&gt;というか、ルーター自作でわかるパケットの流れの著者とソケットプログラミングを調べていたときに見つけたブログの著者の共著だったので、即買いした。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798028622/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41i8%2BuLykGL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Linuxネットワークプログラミングバイブル&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    小俣 光之&lt;br /&gt;
    秀和システム / 3990円 ( 2011-01 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;小さいけどきちんと動くコードがたくさん載ってて、&lt;strong&gt;プログラムはコードで語れ&lt;/strong&gt;という匂いが感じられるのは個人的にはありがたい。8章まで読んだけどわかりやすくて良かった。特に5章の多重化の章はボリュームがあってselect,poll,epollにマルチプロセス、マルチスレッド、ノンブロッキングI/Oのコードが一通り揃っていて知りたいことは全部入ってた。&lt;/p&gt;
&lt;p&gt;まだ流し読みしただけで写経はしてないが、Cのネットワークプログラミングはここまでおさえておけば自分的には満足だなぁという感じなので、いい本ゲットしたなぁと思った。&lt;/p&gt;</description><pubDate>Fri, 06 Jan 2012 20:23:39 +0900</pubDate><category>Linux</category></item><item><title>プログラムからデータリンク層を扱う</title><link>http://blog.kzfmix.com/entry/1324984017</link><description>&lt;p&gt;&lt;a href="http://blog.kzfmix.com/entry/1324625962"&gt;Unixネットワークプログラミング入門でTCPとUDP&lt;/a&gt;をあつかったので、その勢いでデータリンク層をあつかってみます。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774147451/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51VqNMNcENL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;ルーター自作でわかるパケットの流れ&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    小俣　光之&lt;br /&gt;
    技術評論社 / 1974円 ( 2011-07-09 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;2章は基本。&lt;/p&gt;
&lt;p&gt;TCP,UDPと同じようにsocketを使えばいい&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;soc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PF_PACKET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;SOCK_RAW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;htons&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ETH_P_IP&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;ちなみにTCPの場合はこんな感じ&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;soc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AF_INET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SOCK_STREAM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;続いてbind&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;sa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sll_family&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PF_PACKET&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;sa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sll_protocol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;htons&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ETH_P_IP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;sa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sll_ifindex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ifreq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ifr_ifindex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="p"&gt;,(&lt;/span&gt;&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;sockaddr&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sa&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;と、socをインターフェースに関連付ける&lt;/p&gt;
&lt;p&gt;TCPの場合もbindでアドレスとポートに結びつける&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sin_family&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AF_INET&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sin_addr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;s_addr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;htonl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;INADDR_ANY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sin_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;htons&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;soc_waiting&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;sockaddr&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;me&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;me&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;まだ2章までしか読んでいないが、3章でパケットキャプチャ、4章でブリッジ、5章でルータを書いていくという流れになっていて、楽しみ。&lt;/p&gt;
&lt;p&gt;ちなみに初心者向けではなくて、著者の暗黙の前提のあたりは説明がさくっと省かれている。 Unixネットワークプログラミング入門を読んでなかったら速攻挫折してたと思う。&lt;/p&gt;
&lt;p&gt;ちなみにサンプルコードはmacでは動かない。&lt;/p&gt;</description><pubDate>Tue, 27 Dec 2011 20:07:39 +0900</pubDate><category>Linux</category></item><item><title>UNIXネットワークプログラミング入門</title><link>http://blog.kzfmix.com/entry/1324625962</link><description>&lt;p&gt;Nodeを触っているのは楽しいんだけど、じゃぁなんか作りたいものがあるのかと言われたらイマイチ思い浮かばない。リアルタイムウェブ〜とか言っておいて（言ってないけど）アイデアが浮かばないってのはまずかろうとソケットプログラミングの本を読んでみることにした。&lt;/p&gt;
&lt;p&gt;ソケットプログラミングを覚えるにはいい本だった。サンプルはCで書いてあるんだけど、システムコールとかの低レベルのモジュールはPerlもPythonもほとんど一緒なので、動きがイメージできるようになって良い感じ。本を読み終えたついでに&lt;a href="http://www.python.jp/doc/release/library/socketserver.html"&gt;SocketServer&lt;/a&gt;のソースコード読んでみたけど、理解度がさらにあがった。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774117544/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41TQMN3JJML._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;UNIXネットワークプログラミング入門&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    雪田 修一&lt;br /&gt;
    技術評論社 / ?円 ( 2003-06-05 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;本の内容は、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一対一通信&lt;/li&gt;
&lt;li&gt;一対一非同期通信&lt;/li&gt;
&lt;li&gt;一対多通信&lt;/li&gt;
&lt;li&gt;一対多非同期通信&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;非同期はselect使っています。8章でデーモンの入門の章だったんだけど、なんでforkを二回するのかわかりやすい説明ではなかったので、&lt;a href="http://rryu.sakura.ne.jp/nisenise-fuhito/2005/03/16/377.html"&gt;ここ&lt;/a&gt;を読むといいですね。&lt;/p&gt;
&lt;p&gt;3章のチャットっぽいものをPythonとPerlで書いてみた&lt;/p&gt;
&lt;h4&gt;server&lt;/h4&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;socket&lt;/span&gt;

&lt;span class="n"&gt;host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gethostbyname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;

&lt;span class="n"&gt;soc_waiting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AF_INET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SOCK_STREAM&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;soc_waiting&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;soc_waiting&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;server running at &lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;client_addr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soc_waiting&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;accept&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;soc_waiting&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Go ahead!&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;raw_input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;recv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;

&lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h4&gt;Client (Python)&lt;/h4&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nb"&gt;import&lt;/span&gt; &lt;span class="nb"&gt;socket&lt;/span&gt;

&lt;span class="n"&gt;host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;gethostbyname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;

&lt;span class="n"&gt;soc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AF_INET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SOCK_STREAM&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Wait\n&amp;quot;&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;True:&lt;/span&gt;
    &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;recv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;
    &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;raw_input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;break&lt;/span&gt;

&lt;span class="n"&gt;soc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h4&gt;Client (Perl)&lt;/h4&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c1"&gt;#!/usr/bin/env perl&lt;/span&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;IO::&lt;/span&gt;&lt;span class="n"&gt;Socket&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$soc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nn"&gt;IO::Socket::&lt;/span&gt;&lt;span class="n"&gt;INET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;localhost:50000&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;IO::Socket : $!&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="nv"&gt;$soc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Wait\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$msg&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$soc&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;recv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="nv"&gt;$msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;$msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;&amp;lt;STDIN&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;chomp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$msg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$soc&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;last&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;$msg&lt;/span&gt; &lt;span class="ow"&gt;eq&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$soc&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Unixネットワークプログラミング欲しいなぁ&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/213B9PVJD1L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    W.リチャード スティーヴンス&lt;br /&gt;
    ピアソンエデュケーション / 8400円 ( 1999-07 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;h3&gt;おまけ（なんか考えた）&lt;/h3&gt;
&lt;p&gt;今度静岡で&lt;a href="http://www.omachibar.com/"&gt;おまちバル&lt;/a&gt;があるように、静岡はバルブーム、バルバブル、バブルボブル。で、バルイベントには&lt;strong&gt;ハッシュタグとtwitterでつぶやいて盛り上がろう&lt;/strong&gt;的な今時なソーシャルな仕掛けも一緒についてくるんだけど、これがまじでつまらない。&lt;/p&gt;
&lt;p&gt;ハッシュタグが漢字混じりのひらがなとかあり得ないでしょう。そもそも酒飲むイベントで打たせるか？と。全員がiPhoneに向かってカチャカチャやってるIT系のオフじゃないんだから。あと、飲んでる時にハッシュタグでtweetおいかけるのもめんどくさい。結局送りっぱなしになっちゃうので、だれかがまとめたのを読み返すくらいで、全然リアルタイムじゃないね。&lt;/p&gt;
&lt;p&gt;というわけで、バルのtweetシステムに不満があったのでソーシャルでスマホ持ちの我々が使って楽しいシステムを考えてみた。&lt;/p&gt;
&lt;p&gt;バルラーにちまちまと端末を打たせないように店の入口に「店なうだらー、ハッシュタグ、ジオコード」が入ったQRコードを貼っとく。これで、カメラで撮るだけでtweetできるようになるので酒が良い感じに入っていてもOK。パンフにつけておいてもいいかも。そっちは宣伝で、人気度調査用にしてもいいかもしれん。&lt;/p&gt;
&lt;p&gt;で、サーバー側をリアルタイムウェブで、twitterのストリーム読みながらマップ上にマッピングさせていくと。ジオコードの頻度で明るくするとかでもいいしね。そうすればリアルタイムで楽しい。ユーザーの動向を線でつないでも面白いかも（どういう順番で店をまわってんのかとか）。主催者側にもそういうデータが集まればいろいろ役に立つでしょう。&lt;/p&gt;
&lt;p&gt;そういうシステムをNode.jsでつくったら楽しいだろうなぁと思った。&lt;/p&gt;</description><pubDate>Fri, 23 Dec 2011 17:11:31 +0900</pubDate><category>Linux</category></item><item><title>ネットワーク関連の本を読んでみることにした</title><link>http://blog.kzfmix.com/entry/1323779856</link><description>&lt;p&gt;最近ちょっとヤル気がおきないので、別のことでもしようとネットワーク関連の本でも読んでみることにした。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774117544/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41TQMN3JJML._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;UNIXネットワークプログラミング入門&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    雪田 修一&lt;br /&gt;
    技術評論社 / ?円 ( 2003-06-05 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774147451/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51VqNMNcENL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;ルーター自作でわかるパケットの流れ&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    小俣　光之&lt;br /&gt;
    技術評論社 / 1974円 ( 2011-07-09 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;そういえばRWHにもSocket通信の章があったので後で読みなおしてみるか。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0596514980/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51I6dXmEFKL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Real World Haskell&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Bryan O'Sullivan&lt;br /&gt;
    Oreilly &amp; Associates Inc / 4058円 ( 2008-12-05 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Tue, 13 Dec 2011 21:38:07 +0900</pubDate><category>Linux</category><category>Haskell</category></item><item><title>「はじめて読む486」を読んでいる</title><link>http://blog.kzfmix.com/entry/1316690510</link><description>&lt;p&gt;Linuxカーネル2.6解読室の流れで読み始めた。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756102131/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51tb5GSx3uL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;はじめて読む486―32ビットコンピュータをやさしく語る&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    蒲地 輝尚&lt;br /&gt;
    アスキー / 2548円 ( 1994-09 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;Linuxも色々勉強しておかないといけない。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797338261/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51KedJM81CL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Linuxカーネル2.6解読室&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    高橋浩和&lt;br /&gt;
    ソフトバンククリエイティブ / 5670円 ( 2006-11-18 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;そしてこれはまだ読んでいない、積んである。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873115019/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51blzciVfIL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    池田 宗広&lt;br /&gt;
    オライリージャパン / 4200円 ( 2011-07-26 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Thu, 22 Sep 2011 20:25:40 +0900</pubDate><category>Linux</category></item><item><title>「Linuxカーネル Hacks」予約した</title><link>http://blog.kzfmix.com/entry/1310558782</link><description>&lt;p&gt;そういう風が吹いているということで&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873115019/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51blzciVfIL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    池田 宗広&lt;br /&gt;
    オライリージャパン / 4200円 ( 2011-07-26 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1章 カーネル入門&lt;/li&gt;
&lt;li&gt;2章 リソース管理&lt;/li&gt;
&lt;li&gt;3章 ファイルシステム&lt;/li&gt;
&lt;li&gt;4章 ネットワーク&lt;/li&gt;
&lt;li&gt;5章 仮想化&lt;/li&gt;
&lt;li&gt;6章 省電力&lt;/li&gt;
&lt;li&gt;7章 デバッグ&lt;/li&gt;
&lt;li&gt;8章 プロファイリング、トレース&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Wed, 13 Jul 2011 21:06:21 +0900</pubDate><category>Linux</category></item><item><title>USBメモリでraid0</title><link>http://blog.kzfmix.com/entry/1307769056</link><description>&lt;p&gt;先日の静岡インフラ部でZFSのホットスワップを見た。&lt;/p&gt;
&lt;iframe width="480" height="390" src="http://www.youtube.com/embed/N8eu06HNj1w" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;面白かったのでやってみた。ちなみにZFSではないので単にraid0の構築です。&lt;/p&gt;
&lt;p&gt;貰ったUSBハブとUSBメモリをかき集めたので、128M, 256M, 2G, 8Gという中途半端なサイズ。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;fdisk /dev/sda &lt;span class="c"&gt;# typeはfd&lt;/span&gt;
fdisk /dev/sdb &lt;span class="c"&gt;# typeはfd&lt;/span&gt;
fdisk /dev/sdc &lt;span class="c"&gt;# typeはfd&lt;/span&gt;
fdisk /dev/sdd &lt;span class="c"&gt;# typeはfd&lt;/span&gt;
mdadm -C -v /dev/md0 -l0 -n4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mkfs -j /dev/md0
mkdir /tmp/raid
mount /dev/md0 /tmp/raid
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;これで10G位のサイズのファイルが見える&lt;/p&gt;
&lt;p&gt;&lt;img alt="1307768420" src="http://www.kzfmix.com/images/blog/1307768420.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;データを書きこんでみる。yesコマンドで無限y攻撃&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;yes&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="sr"&gt;/tmp/&lt;/span&gt;&lt;span class="n"&gt;raid&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;img alt="1307768423" src="http://www.kzfmix.com/images/blog/1307768423.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;それぞれのメモリが点滅しているのできちんと書きこまれていることが分かる。そして、それぞれのメモリのロゴを見ることで貰い物のガジェットであることがわかる。&lt;/p&gt;
&lt;p&gt;参考&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.livedoor.jp/vine_user/archives/51331562.html"&gt;USBメモリでRAIDを構築する方法&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Sat, 11 Jun 2011 14:19:39 +0900</pubDate><category>Linux</category></item><item><title>KVM徹底入門が面白い</title><link>http://blog.kzfmix.com/entry/1301948937</link><description>&lt;p&gt;さくらのVPSで採用されているというKVMに興味を持ったので書籍を探してみたら、これがヒットしたので早速購入して読んでみた。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798121401/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51BpsUti-5L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    平 初&lt;br /&gt;
    翔泳社 / 3444円 ( 2010-07-08 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;ちなみにKVMとは&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.atmarkit.co.jp/flinux/rensai/kvm01/kvm01a.html"&gt;第1回　Linux標準の仮想化技術「KVM」の仕組み&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;KVMは、Linux Kernel自体をハイパーバイザとする仕組みで、正式名称を「Kernel-based Virtual Machine」といいます。KVMは現時点では、Intel VT-xやAMD-VといったCPUの仮想化支援機能を必要とし、完全仮想化によりOSの仮想化環境を提供します。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本書の内容は、仮想化全般の基礎知識から、インストール、導入まで。あとはコマンドのちょっとしたリファレンスが付いてくる感じ。Amazonのレビューにある通りひと通り試したことある人には物足りない内容かも知れないが、予備知識無しでKVMが知りたいのならば手軽に読めてよいと思う。&lt;/p&gt;
&lt;p&gt;僕の場合には&lt;a href="http://www.ginnokagi.com/2009/04/kvmos_1.html"&gt;こういう&lt;/a&gt;内容が知りたかったのだけど、ライブマイグレーションの話題しか触れてなかったのでそこはちょっと残念だったかな。&lt;/p&gt;
&lt;p&gt;自分の職場はサーバー管理のスキルのない人間が管理者をヤラざるを得ず、ハードウェアを移行するたびに、(昔作ったサービスが移行できずに)サーバー環境が劣化していくという結構悲惨な状況だったりするわけだ。そもそもサーバー管理自体が本来の仕事と関係なくて片手間なのでしょうがなかったりするので、仮想化しとけばさくっと移行できて、ハードウェア移行の際のコスト減らせるかなぁという期待感からKVMに興味を持ったのだ。&lt;/p&gt;
&lt;p&gt;特に7章でPythonとlibvirtを使ったプログラミングの例が出ているようにPythonを利用して色々できそうなので、サーバー管理の省力化に貢献しそうな気はするんだよなぁ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;仮想マシンの導入には複数の方法がある&lt;/li&gt;
&lt;li&gt;ホストから見た場合、VCPUはQEMUが立ち上げるスレッドに対応する。&lt;/li&gt;
&lt;li&gt;実CPUの数を超えてVCPUを割り当てることも可能だが、あまり意味はない&lt;/li&gt;
&lt;li&gt;HugePageの利用シーンは?&lt;/li&gt;
&lt;li&gt;virtio-balloonでメモリの確保と開放&lt;/li&gt;
&lt;li&gt;live migration&lt;/li&gt;
&lt;li&gt;ネットワークの設定の仕方は主に2つある&lt;/li&gt;
&lt;li&gt;libvirtdでのプログラミング&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 05 Apr 2011 05:39:21 +0900</pubDate><category>Linux</category><category>Python</category></item><item><title>実用SSH</title><link>http://blog.kzfmix.com/entry/1300997012</link><description>&lt;p&gt;今週からさくらのVPSを使い始めた。&lt;/p&gt;
&lt;p&gt;sshをきちんと使えなきゃなということで数年前に買って積んでいたこの本をじっくり読んだら、大変勉強になったというかちゃんと読んでよかった。&lt;/p&gt;
&lt;p&gt;7章のクライアント使用法 応用編が役に立った。&lt;/p&gt;
&lt;p&gt;特にscpは非常に便利で使い方覚えたらこればっか使うようになってしまい、Cyberduck立ち上げなくなった。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873112877/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41GJBSC36XL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;実用SSH 第2版―セキュアシェル徹底活用ガイド&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Daniel J. Barrett&lt;br /&gt;
    オライリー・ジャパン / 5040円 ( 2006-11-22 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenSSHでパスフレーズの変更は-pオプション&lt;/li&gt;
&lt;li&gt;SFTPとFTPはプロトコル上の互換性はない&lt;/li&gt;
&lt;li&gt;OpenSSHでは-Tオプションでptyを割り当てない&lt;/li&gt;
&lt;li&gt;&amp;lt;ESC&amp;gt; .でSSHセッションの終了&lt;/li&gt;
&lt;li&gt;scpでディレクトリの再帰的コピーは-rオプション&lt;/li&gt;
&lt;li&gt;sshでトラブったら-vで冗長モードにする&lt;/li&gt;
&lt;li&gt;scpのポート指定オプションは-P&lt;/li&gt;
&lt;li&gt;scpの-Cでデータ圧縮して転送&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Sun, 27 Mar 2011 14:06:17 +0900</pubDate><category>Linux</category></item><item><title>linuxのatコマンド</title><link>http://blog.kzfmix.com/entry/1300106124</link><description>&lt;p&gt;うちは輪番停電の第5グループなので、明日は正午に停電が起こるわけだ。&lt;/p&gt;
&lt;p&gt;そのタイミングで自宅サーバーも落としておきたいがcronだと毎日同じ時間に設定されるし、毎度毎度変更するのも面倒くさい。&lt;/p&gt;
&lt;p&gt;そういう時にはatを使えばいいらしい。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;echo&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;shutdown&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&amp;quot; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; 11&lt;span class="p"&gt;:&lt;/span&gt;50 3&lt;span class="o"&gt;/&lt;/span&gt;15&lt;span class="o"&gt;/&lt;/span&gt;2011
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;なにげにatを使うのは初めてだな。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sonic64.com/2004-08-31.html"&gt;at で時間指定コマンド自動実行&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/jp/linux/library/l-job-scheduling.html"&gt;Linux のヒント: cron と at を使ったジョブ・スケジューリング&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774145017/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/61JA5nOamIL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;プロのための Linuxシステム構築・運用技術 (Software Design plus)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    中井 悦司&lt;br /&gt;
    技術評論社 / 3024円 ( 2010-12-22 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;というわけで、このブログは第5グループの停電に応じてアクセスできなくなることが判明した。&lt;/p&gt;</description><pubDate>Mon, 14 Mar 2011 21:36:28 +0900</pubDate><category>Linux</category></item></channel></rss>
