<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Linux / Drkcore</title><link>http://blog.kzfmix.com/Linux</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Sat, 28 Oct 2017 10:39:55 +0919</lastBuildDate><item><title>rsyncでssh使えるの知らなかった</title><link>http://blog.kzfmix.com/entry/1509154795</link><description>&lt;p&gt;Dr. Bonoの生命科学データ解析を読み返していたら&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; rsyncって-eオプションでsshに切り替えられるんじゃん！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;と気づいて、ちょっと遅くなりかけてた本番環境のデータを開発環境にリモートコピーするっていうscpの作業をrsyncに切り替えたおかけで差分更新できるようになって超早くなって仕事の効率が上がって嬉しい。&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/4895929019/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="https://images-fe.ssl-images-amazon.com/images/I/51gwooGvqYL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Dr. Bonoの生命科学データ解析&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    坊農秀雅&lt;br /&gt;
    メディカルサイエンスインターナショナル / 3240円 ( 2017-09-29 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;あとついでに職場のubuntu(16.04)調べたらrsh入ってた。デフォルトで入るのかな？&lt;/p&gt;</description><pubDate>Sat, 28 Oct 2017 10:39:55 +0919</pubDate><category>Linux</category></item><item><title>Fastladder入れてる仮想環境のHDDの容量が足りなくなったので拡張した</title><link>http://blog.kzfmix.com/entry/1464784706</link><description>&lt;p&gt;もともと10GのHDDで仮想環境(KVM)作ったけど溢れてしまったので拡張した。&lt;/p&gt;
&lt;p&gt;ほぼまるごと&lt;a href="http://tossy-yukky.hatenablog.com/entry/2013/12/11/105939"&gt;「KVMでVMにHDD追加」&lt;/a&gt;を参考にした&lt;/p&gt;
&lt;p&gt;あとは色々調べるのはvgscan, lvscan, pvscanとscan系のコマンドを使えばいい。最近(4,5年前)のFedoraはデフォルトがLVMなので容量追加とか簡単で助かる。&lt;/p&gt;</description><pubDate>Wed, 01 Jun 2016 21:38:40 +0919</pubDate><category>Linux</category></item><item><title>ホストのサーバーを起動したらゲストの仮想マシンが自動起動してそれに乗っかっているサービスも起動するようにする</title><link>http://blog.kzfmix.com/entry/1416481557</link><description>&lt;p&gt;最近はホストのサーバーに仮想マシン(KVM)を複数たてて、それぞれnginx+supervisord+gunirocrn+Flaskとかnginx+unicorn+RoRみたいなウェブアプリを動かすパターンが多い。というかそれが全部。&lt;/p&gt;
&lt;p&gt;面倒くさいのだけど、（自動化するための手間をかけるほうがよりめんどくさかったので）サービスの起動まで手でやっていたのだが、ちょっと同僚に立ち上げをお願いしなきゃいけなくなって、作業手順を繰り返してもらうのもなんか悪いなーと思ったのでサーバー立ち上げればウェブアプリが動くところまで自動で進むようにすることにした。&lt;/p&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;ifupでブリッジとイーサをアクティブにする&lt;/li&gt;
&lt;li&gt;GUIのVMマネージャで仮想マシンを立ち上げ&lt;/li&gt;
&lt;li&gt;それぞれの仮想マシンにsshで入ってサービス立ち上げ(supervisordとかを起動)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;なんだけど、書き出してみるとやっぱり面倒臭い。よく手動で起動していたもんだｗ&lt;/p&gt;
&lt;h3&gt;2. ifupでブリッジとイーサをアクティブにする&lt;/h3&gt;
&lt;p&gt;onboot=yesをつけておく。以前試したんだけど何故かうまくいかなくて放置してたけど、&lt;a href="https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/5/html/Virtualization/sect-Virtualization-Network_Configuration-Bridged_networking_with_libvirt.html"&gt;これ&lt;/a&gt;を見ながらきちんと設定したら動いた。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
service network start
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;このあたりかな。あとfedora19だとこのあたりをいじるとsystemctlとcheckconfigが混在しててややこしい&lt;/p&gt;
&lt;h3&gt;3. GUIのVMマネージャで仮想マシンを立ち上げ&lt;/h3&gt;
&lt;p&gt;GUIのアプリを使って仮想マシンを起動してたんだけど、virsh便利。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;sudo virsh autostart &lt;span class="o"&gt;[&lt;/span&gt;vm_name&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;で自動起動できるので、最初からそうしておけばよかった。すでにGUIは使っていない。&lt;/p&gt;
&lt;h3&gt;4. それぞれの仮想マシンにsshで入ってサービス立ち上げ(supervisordとかを起動)&lt;/h3&gt;
&lt;p&gt;unicorn+RoRな構成のよくあるRailsアプリだと&lt;a href="http://www.torutk.com/projects/swe/wiki/Redmine%E3%82%92CentOS_7%E4%B8%8A%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%99%E3%83%BCUnicorn%E3%81%A8Nginx%E7%B7%A8"&gt;RedmineをCentOS 7上で動かすーUnicornとNginx編&lt;/a&gt;を参考にsystemd用の定義ファイルを用意すればよいです。&lt;/p&gt;
&lt;p&gt;supervisord+gunirocrn+Flaskが目下悩み中なのだけど&lt;a href="https://github.com/gcollazo/Fabulous/issues/4"&gt;/etc/init.d&lt;/a&gt;に書く方法しか見つからなかった。どうせだったらsystemctlコマンドで制御したいので引き続き調べる。&lt;/p&gt;</description><pubDate>Thu, 20 Nov 2014 20:19:29 +0919</pubDate><category>Linux</category></item><item><title>Fedora17で仮想化</title><link>http://blog.kzfmix.com/entry/1340707522</link><description>&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/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;ホストのインストールとか詳しくやらんでいいから、もっとネットワーク周りを充実させて欲しいなぁと思った。
私のニーズはサーバー群を集約して、複数のwebサーバーを一台で管理したいというニーズだったんだが、そこら辺の記述が妙に少ないなぁと。&lt;/p&gt;
&lt;h3&gt;ブリッジを使ったネットワーク環境の構築&lt;/h3&gt;
&lt;p&gt;まずはホストの設定、動くのを確認したらゲストをゆっくり設定すると問題の切り分けが簡単。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ホストだけでネットワークの設定をして外部につながることを確認。&lt;/li&gt;
&lt;li&gt;/etc/sysconfig/network-scripts/のifcfg-em1をコピーしてブリッジの設定をしたらネットワークを再起動してつながることを確認。プロミスキャスモードの必要はない。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ネットワークマネージャの管理下ではなくなるのでFedora17の場合は画面右上のネットワークアイコンに☓がつくがつながることを確認すればOK&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ゲストOSをインストールするときにハードウェアのアドバンス設定にブリッジが出るので、本のようにドメイン設定をvirshで行わなくてもOK&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;その他トラブルシューティング&lt;/h3&gt;
&lt;p&gt;libvirtdの軌道はsystemctl&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;systemctl start libvirtd.service
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;sshの設定は&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;yum install openssh-server
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;つながらない場合はFireWallを疑う。GUIの設定が正しいように見えても再度sshのチェックを付け直すと上手くいったりする。&lt;/p&gt;
&lt;p&gt;というわけで、virshの便利さに驚いた6月後半であった。&lt;/p&gt;</description><pubDate>Tue, 26 Jun 2012 20:03:45 +0919</pubDate><category>Linux</category></item><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 +0919</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 +0919</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 +0919</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 +0919</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 +0919</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 +0919</pubDate><category>Linux</category></item></channel></rss>