<?xml version="1.0" encoding="UTF-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>bkブログ</title>
  <link rel="alternate" type="text/html" href="http://0xcc.net/blog/" />
  <modified>2008-07-20T15:33:07Z</modified>
  <tagline>プログラミングやバッドノウハウについてのブログ</tagline>
  <id>tag:0xcc.net,2008:/blog//2</id>
  <generator url="http://www.movabletype.org/" version="4.12">Movable Type</generator>
  <copyright>Copyright (c) 2008, satoru</copyright>

  <entry>
    <title>LINUXシステムプログラミング</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000199.html" />
    <modified>2008-07-20T15:33:07Z</modified>
    <issued>2008-07-20T21:01:29+09:00</issued>
    <id>tag:0xcc.net,2008:/blog//2.199</id>
    <created>2008-07-20T12:01:29Z</created>
    <summary type="text/plain"> 発売後すぐに入手したものの長らく積読状態が続いていた『LINUXシステムプログ...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>book</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic48.jpg" alt="" style="float: right">発売後すぐに入手したものの長らく積読状態が続いていた『<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113628/bk256-1-22/ref=nosim/">LINUXシステムプログラミング</a>』をようやく読みました。
</p>
]]>
      <![CDATA[<p>
本書はその名の通り、Linux のシステムプログラミングについての解説書です。システムプログラミングの定義は明確ではありませんが、システムコールを用いて OS に近いレイヤーで行うプログラミングのことと考えて差し支えないと思います。
</p>

<p>
UNIX一般のシステムプログラミングについては『<a href="http://0xcc.net/blog/archives/000127.html">詳解UNIXプログラミング</a>』という決定版がありますが、本書は Linux 固有の話題や POSIX の比較的新しい API が載っているところが異なります。
</p>

<p>
たとえば、前者になく本書にだけ載っている話題としては以下のようなものがあります。知らなかった話も多くて勉強になりました。
</p>

<ul>
<li>posix_fadvise で I/Oのアクセスパターンのヒントを与える</li>
<li>epoll でI/Oイベントを効率的に監視する</li>
<li>Linux のI/Oスケジューラのアルゴリズム</li>
<li>sched_setaffinity でプロセスを特定のCPUにバインドする</li>
<li>shed_getschduler でスケジュールポリシーを変更する</li>
<li>getxattr, setxattr でファイルの拡張属性を操作する</li>
<li>inotify でファイルイベントを監視する</li>
<li>/dev/full に書き込んで ENOSPC をテストする</li>
<li>posix_memalign でアライメントを指定してメモリを確保する</li>
<li>mlock, mlockall でアドレス空間の一部または全体を物理メモリにロックする</li>
<li>mincore でメモリ領域が物理メモリにあるか調べる</li>
<li>glibc の malloc に特有の関数 mallopt, mallinfo, etc.</li>
<li>sigqueue でシグナルを送りつつデータも送る</li>
<li>素晴らしきかな sig_code の世界</li>
<li>POSIX のクロックインタフェース (clock_*)</li>
<li>POSIX のタイマーインタフェース (timer_*)</li>
<li>GCC の拡張機能</li>
</ul>

<p>
前述の『詳解UNIXプログラミング』が個々のトピックを徹底的に掘り下げているのと比べると、本書の解説は比較的、簡素な部類に入ります。それから、本書は扱うトピックをプロセス、ファイル、シグナル、時間といった基本的なコンセプトに絞っているのも特徴です。

<p>
プロセス間通信、スレッド、ネットワークプログラミングといった高度なトピックは本書の対象外です。同様に、端末やモデムといった、今となっては重要性が薄れたトピックも省かれています。
</p>

<h2>まとめ</h2>

<p>
Linux のシステムプログラミングの基本、および、新しいシステムコールを活用した一歩進んだテクニックが学べる良書です。初心者もベテランもどちらも楽しめる内容だと思います。全体で380ページ程度と比較的コンパクトなので、気負わずに読めるところもポイントです。唯一気になったのは図が少ない点です。
</p>

<p>
ところで、日本語訳である本書にはたびたび訳注が登場します。原書には登場しない openat システムコールを紹介するなど、ためになる注が入っています（蛇足っぽいものもありますが）。
</p>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113628/bk256-1-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51Oy0hCw4eL._SL160_.jpg" alt="Linuxシステムプログラミング" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113628/bk256-1-22/ref=nosim/" name="amazletlink" target="_blank">Linuxシステムプログラミング</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4873113628/bk256-1-22/ref=nosim/" title="Linuxシステムプログラミング" target="_blank">amazlet</a> at 08.07.20</div></div><div class="amazlet-detail">Robert Love ロバート ラブ <br />オライリージャパン <br />売り上げランキング: 9166<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113628/bk256-1-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>
]]>
    </content>
  </entry>

  <entry>
    <title>シンプル＝バッドシグナル説</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000198.html" />
    <modified>2008-06-23T15:59:22Z</modified>
    <issued>2008-06-24T00:14:46+09:00</issued>
    <id>tag:0xcc.net,2008:/blog//2.198</id>
    <created>2008-06-23T15:14:46Z</created>
    <summary type="text/plain"> 知人と話していて、シンプルという言葉は手抜きの言い訳として使われることがあまり...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>essay</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic47.jpg" alt="" style="float: right">知人と話していて、シンプルという言葉は手抜きの言い訳として使われることがあまりに多いので、シンプル＝バッドシグナル（バッドな兆候）なのではないか、という話になりました。
</p>
]]>
      <![CDATA[<p>
シンプルが言い訳としてよく使われるのは以下のような場面です。
</p>

<ul>
<li>必要な機能が足りていない</li>
<li>デザインがださい</li>
<li>そこらじゅう手を抜いている</li>
</ul>

<p>
プログラミングにおいてよくあるのが、まじめに実装していないクラスに Simple なんとかという名前をつけるパターンです。自らシンプルと名乗っているものには疑ってかかったほうがいいのかもしれません。
</p>

<p>
以上、シンプルな考察でした。
</p>
]]>
    </content>
  </entry>

  <entry>
    <title>BK通信 - 数値のバッドノウハウ</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000197.html" />
    <modified>2008-06-23T15:58:29Z</modified>
    <issued>2008-06-23T23:48:27+09:00</issued>
    <id>tag:0xcc.net,2008:/blog//2.197</id>
    <created>2008-06-23T14:48:27Z</created>
    <summary type="text/plain"> WEB+DB PRESS Vol. 45に「BK通信」の第2回「数値のバッドノ...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>article</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic46.jpg" alt="" style="float: right">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774134864/bk256-1-22/ref=nosim/">WEB+DB PRESS Vol. 45</a>に「BK通信」の第2回「数値のバッドノウハウ」を書きました。数値の処理ではまった話を取り上げています。
</p>
]]>
      
    </content>
  </entry>

  <entry>
    <title>yak shaving で人生の問題の80%が説明できる問題</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000196.html" />
    <modified>2008-06-22T04:58:55Z</modified>
    <issued>2008-06-20T23:56:00+09:00</issued>
    <id>tag:0xcc.net,2008:/blog//2.196</id>
    <created>2008-06-20T14:56:00Z</created>
    <summary type="text/plain"> つい最近、 yak shaving （ヤクの毛を刈る）、という言葉を知りました...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>essay</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic45.jpg" alt="" style="float: right">
つい最近、 <a href="http://www.catb.org/~esr/jargon/html/Y/yak-shaving.html ">yak shaving</a> （ヤクの毛を刈る）、という言葉を知りました (<a href="http://projects.csail.mit.edu/gsb/old-archive/gsb-archive/gsb2000-02-11.html">原典</a>)。これは「一見無関係に見えるけど、真の問題を解くのに必要な問題を解くのに必要な（これが何段階も続く）問題を解くのに必要な活動」という意味の言葉です。</p>
]]>
      <![CDATA[<p>
yak shaving は、ようするに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて…」ということが延々と続く状況を表しています。ちなみに、<a href="http://ja.wikipedia.org/wiki/%E3%83%A4%E3%82%AF">ヤク</a>とは毛が長い、牛の一種です。
</p>

<p>
yak shaving は、以前に覚えた <a href="http://0xcc.net/blog/archives/000135.html">bikeshed</a> と同じくらい便利そうな表現です。というもの、プログラムを書いていると yak shaving 的な状況がすぐに発生するためです。
</p>

<p>
たとえば、「Amazon のほしい物リストを CSV 形式に変換して Excel で読み込むプログラムがあったら便利かな」なんていう一見簡単そうなことをやろうとしても、次のような状況が発生するのは目に見えています。
</p>

<p>
「さーて、まずはほしい物リストのページをとってくるか」「うげ、SSLでログインが必要かよ」「えーと、SSLでページとってくるにはどうするんだっけ」「うわ、OpenSSL 入ってねー」「インストールインストール」「で、これ使って Basic 認証…、じゃねーし」「これPOSTで認証かよ、どうやるんだっけ、あー Cookie も使ってるのか」「こういうのってやるのなんかなかったけ」「Mechanize とかいうの使えばいいわけ。へーなるほど」「で、ようやくページゲット」「あれ、これ UTF-8 じゃないの? いまどき Shift_JISかよ...」「Shift_JIS を UTF-8 に変換するのどうやるんだっけ」「あー、なんかライブラリでできるのね。変換変換...」「うげー、全角の波線が半角チルダになっちまったよ。なんでやねん」「はあ、shift_jis と cp932 の変換テーブルは違うのか。さすが Wikipedia は役立つぜ、ところでジンバブエはどうなってるんだっけ」「なんかこの HTML ごちゃごちゃしてるなー。正規表現でうまくスクレイプできるんかな。って、メールアドレスの正規表現はこんなに長いのかよ。ああ、なんか他になかったっけ」「ナイスブログ発見、Scraper とかいうの使えばいいのか。やってみるかな」「で、これCSVにするのは、カンマいれればいいだけか」「と思ったら値段にカンマ入ってるし。余計なことするなよな、ようはダブルクオートすればいいのね」「と思ったら、今度は本のタイトルにダブルクオート入ってるし、勘弁してほしいし」「やれやれ、なんか CSV にまで RFC あるのかよ」「ってこれやっても Excel でやっぱ読めねーし。いってよしすぎる」「そういや、最近の Excel って XML 読み込めなかったっけ。どういうフォーマットだろう、こっちでいくかなー」「で、XMLの処理ってどうやるんだ。んー、 libxml とかいうのが必要なの？うげ、やっぱ入ってないし」「インストールインストール」「うわ、パッケージのバージョン古くてなんか動かない問題発生！」「自分でビルドするか。やな予感するなー」「うわ、やっぱビルドエラー！」「libtool 入れろってなんなのよ」「しかも libtool 入れてもコンパイルエラーで止まっちゃうし」「これって gcc のバージョンが古いってこと？」「gcc 入れるか」「ってサイト、ダウンしてるし」「そろそろブログでもチェックするかな、って、なんでこれが 600 ブックマーク超えてるの？」
</p>

<p>
実際のところ、プログラムを書き始めてから今にいたるまで、年がら年中こんなようなことをやっているわけで、my life is yak shaving という感じであります。
</p>

<p>
そう感じるのはめずらしくないようで、
<a href="http://joi.ito.com/weblog/2005/03/05/yak-shaving.html">Joi Ito 氏</a>は "Acutally, my whole life is just one big yak shaving exercise." と言っています。なんだか yak shaving という言葉だけで人生の問題のほとんどを説明できるような気がしてきました。
</p>
]]>
    </content>
  </entry>

  <entry>
    <title>BK通信 - JavaScript のバッドノウハウ</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000195.html" />
    <modified>2008-04-23T14:22:33Z</modified>
    <issued>2008-04-23T23:19:13+09:00</issued>
    <id>tag:0xcc.net,2008:/blog//2.195</id>
    <created>2008-04-23T14:19:13Z</created>
    <summary type="text/plain"> WEB+DB PRESS Vol. 44から「BK通信」という2ページの連載を...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>article</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic44.jpg" alt="" style="float: right">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774134686/bk256-1-22/ref=nosim/">WEB+DB PRESS Vol. 44</a>から「BK通信」という2ページの連載を始めました。第1回は JavaScript のバッドノウハウを3つほど取り上げました。「これはバッド！」とか「これはオレもはまった！」などと共感して楽しんでいただければと思います。
</p>
]]>
      
    </content>
  </entry>

  <entry>
    <title>プログラミングの光景の全記事公開</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000194.html" />
    <modified>2008-03-12T13:35:17Z</modified>
    <issued>2008-03-12T22:22:14+09:00</issued>
    <id>tag:0xcc.net,2008:/blog//2.194</id>
    <created>2008-03-12T13:22:14Z</created>
    <summary type="text/plain"> WEB+DB PRESSに連載していた「プログラミングの光景」の最終回の記事「...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>article</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic43.jpg" alt="" style="float: right">
<a href="http://gihyo.jp/magazine/wdpress">WEB+DB PRESS</a>に連載していた「プログラミングの光景」の最終回の記事「<a href="http://gihyo.jp/dev/serial/01/scene/0006">プログラマについて</a>」が gihyo.jp で公開されました。<a href="http://gihyo.jp/dev/serial/01/scene/">全6回の記事</a>がすべて公開されています。
</p>
]]>
      
    </content>
  </entry>

  <entry>
    <title>プログラミングの光景 - プログラマについて</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000193.html" />
    <modified>2008-02-24T03:41:42Z</modified>
    <issued>2008-02-24T12:32:50+09:00</issued>
    <id>tag:0xcc.net,2008:/blog//2.193</id>
    <created>2008-02-24T03:32:50Z</created>
    <summary type="text/plain"> WEB+DB PRESS Vol. 43に「プログラミングの光景 プログラマに...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>article</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic42.jpg" alt="" style="float: right">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774133973/bk256-1-22/ref=nosim">WEB+DB PRESS Vol. 43</a>に「プログラミングの光景 プログラマについて」という1ページの記事を書きました。生産性の高いプログラマに見られる特徴について、技術的な面以外の側面について書いています。
</p>
]]>
      
    </content>
  </entry>

  <entry>
    <title>2007年の記事一覧</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000192.html" />
    <modified>2007-12-31T03:52:31Z</modified>
    <issued>2007-12-31T11:12:23+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.192</id>
    <created>2007-12-31T02:12:23Z</created>
    <summary type="text/plain"> 2007年の記事の一覧を写真を並べて作りました。これらの写真は、バッドノウハウ...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic41.jpg" alt="" style="float: right">
2007年の記事の一覧を写真を並べて作りました。これらの写真は、<a href="http://0xcc.net/misc/bad-knowhow.html">バッドノウハウ</a>ばかりのブログが少しは華やかになるかと期待して、今年からつけ始めたものです。
</p>]]>
      <![CDATA[<div style="clear: both;"></div><style>
div#summary2007 {
  margin-top: 3.0em;
  margin-bottom: 3.0em;
}

div#summary2007 img {
  padding: 0px;
  margin: 1px;
}
</style>



<div id="summary2007">
<a href="http://0xcc.net/blog/archives/000152.html" title="OLYMPUS E-330 をしばらく使ってみての感想"><img src="http://0xcc.net/blog/archives/pic1.jpg" alt="OLYMPUS E-330 をしばらく使ってみての感想"></a><a href="http://0xcc.net/blog/archives/000153.html" title="動くようにする - 学校では教えてくれないバッドノウハウ英語 #4"><img src="http://0xcc.net/blog/archives/pic2.jpg" alt="動くようにする - 学校では教えてくれないバッドノウハウ英語 #4"></a><a href="http://0xcc.net/blog/archives/000154.html" title="JavaScript でトップページへのリンクを追加する"><img src="http://0xcc.net/blog/archives/pic3.jpg" alt="JavaScript でトップページへのリンクを追加する"></a><a href="http://0xcc.net/blog/archives/000155.html" title="RAII と setjmp/longjmp"><img src="http://0xcc.net/blog/archives/pic4.jpg" alt="RAII と setjmp/longjmp"></a><a href="http://0xcc.net/blog/archives/000156.html" title="問題を再現させる - 学校では教えてくれないバッドノウハウ英語 #5"><img src="http://0xcc.net/blog/archives/pic5.jpg" alt="問題を再現させる - 学校では教えてくれないバッドノウハウ英語 #5"></a><a href="http://0xcc.net/blog/archives/000157.html" title="Binary Hacks の新聞広告"><img src="http://0xcc.net/blog/archives/pic6.jpg" alt="Binary Hacks の新聞広告"></a><a href="http://0xcc.net/blog/archives/000158.html" title="実用上OK - 学校では教えてくれないバッドノウハウ英語 #6"><img src="http://0xcc.net/blog/archives/pic7.jpg" alt="実用上OK - 学校では教えてくれないバッドノウハウ英語 #6"></a><a href="http://0xcc.net/blog/archives/000159.html" title="JavaScript 第3版"><img src="http://0xcc.net/blog/archives/pic8.jpg" alt="JavaScript 第3版"></a><a href="http://0xcc.net/blog/archives/000160.html" title="JavaScript でソートアルゴリズムを可視化"><img src="http://0xcc.net/blog/archives/pic9.jpg" alt="JavaScript でソートアルゴリズムを可視化"></a><a href="http://0xcc.net/blog/archives/000161.html" title="デバッグに使えるサスペンス用語 - 学校では教えてくれないバッドノウハウ英語 #7"><img src="http://0xcc.net/blog/archives/pic10.jpg" alt="デバッグに使えるサスペンス用語 - 学校では教えてくれないバッドノウハウ英語 #7"></a><a href="http://0xcc.net/blog/archives/000162.html" title="スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl"><img src="http://0xcc.net/blog/archives/pic11.jpg" alt="スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl"></a><a href="http://0xcc.net/blog/archives/000163.html" title="数字に関する短縮記法 - 学校では教えてくれないバッドノウハウ英語 #8"><img src="http://0xcc.net/blog/archives/pic12.jpg" alt="数字に関する短縮記法 - 学校では教えてくれないバッドノウハウ英語 #8"></a><a href="http://0xcc.net/blog/archives/000164.html" title="浮動小数点演算ではまった話"><img src="http://0xcc.net/blog/archives/pic13.jpg" alt="浮動小数点演算ではまった話"></a><a href="http://0xcc.net/blog/archives/000165.html" title="特別扱いする - 学校では教えてくれないバッドノウハウ英語 #9"><img src="http://0xcc.net/blog/archives/pic14.jpg" alt="特別扱いする - 学校では教えてくれないバッドノウハウ英語 #9"></a><a href="http://0xcc.net/blog/archives/000166.html" title="スルー力を掲載するー力"><img src="http://0xcc.net/blog/archives/pic15.jpg" alt="スルー力を掲載するー力"></a><a href="http://0xcc.net/blog/archives/000167.html" title="小飼弾のアルファギークに逢いたい #3"><img src="http://0xcc.net/blog/archives/pic16.jpg" alt="小飼弾のアルファギークに逢いたい #3"></a><a href="http://0xcc.net/blog/archives/000168.html" title="OLYMPUS ZUIKO DIGITAL ED 50mm F2.0 Macro  を購入"><img src="http://0xcc.net/blog/archives/pic17.jpg" alt="OLYMPUS ZUIKO DIGITAL ED 50mm F2.0 Macro  を購入"></a><a href="http://0xcc.net/blog/archives/000169.html" title="重箱の隅をつつく - 学校では教えてくれないバッドノウハウ英語 #10"><img src="http://0xcc.net/blog/archives/pic18.jpg" alt="重箱の隅をつつく - 学校では教えてくれないバッドノウハウ英語 #10"></a><a href="http://0xcc.net/blog/archives/000170.html" title="年を取ると環境設定がどうでもよくなる現象"><img src="http://0xcc.net/blog/archives/pic19.jpg" alt="年を取ると環境設定がどうでもよくなる現象"></a><a href="http://0xcc.net/blog/archives/000171.html" title="信じ込ませる - 学校では教えてくれないバッドノウハウ英語 #11"><img src="http://0xcc.net/blog/archives/pic20.jpg" alt="信じ込ませる - 学校では教えてくれないバッドノウハウ英語 #11"></a><a href="http://0xcc.net/blog/archives/000172.html" title="Dependency Injection の基本的なアイディア"><img src="http://0xcc.net/blog/archives/pic21.jpg" alt="Dependency Injection の基本的なアイディア"></a><a href="http://0xcc.net/blog/archives/000173.html" title="プログラミングの光景 - デバッグについて"><img src="http://0xcc.net/blog/archives/pic22.jpg" alt="プログラミングの光景 - デバッグについて"></a><a href="http://0xcc.net/blog/archives/000174.html" title="外に追い出す - 学校では教えてくれないバッドノウハウ英語 #12"><img src="http://0xcc.net/blog/archives/pic23.jpg" alt="外に追い出す - 学校では教えてくれないバッドノウハウ英語 #12"></a><a href="http://0xcc.net/blog/archives/000175.html" title="カメラのしくみ"><img src="http://0xcc.net/blog/archives/pic24.jpg" alt="カメラのしくみ"></a><a href="http://0xcc.net/blog/archives/000176.html" title="誤った判定 - 学校では教えてくれないバッドノウハウ英語 #13"><img src="http://0xcc.net/blog/archives/pic25.jpg" alt="誤った判定 - 学校では教えてくれないバッドノウハウ英語 #13"></a><a href="http://0xcc.net/blog/archives/000177.html" title="プログラミングの光景 - コーディングスタイルについて"><img src="http://0xcc.net/blog/archives/pic26.jpg" alt="プログラミングの光景 - コーディングスタイルについて"></a><a href="http://0xcc.net/blog/archives/000178.html" title="C++と Pthreads でミニマルなHTTPサーバを書く"><img src="http://0xcc.net/blog/archives/pic27.jpg" alt="C++と Pthreads でミニマルなHTTPサーバを書く"></a><a href="http://0xcc.net/blog/archives/000179.html" title="C++の設計と進化"><img src="http://0xcc.net/blog/archives/pic28.jpg" alt="C++の設計と進化"></a><a href="http://0xcc.net/blog/archives/000180.html" title="Binary Hacks の韓国語版"><img src="http://0xcc.net/blog/archives/pic29.jpg" alt="Binary Hacks の韓国語版"></a><a href="http://0xcc.net/blog/archives/000181.html" title="coLinux の開発版のスナップショット"><img src="http://0xcc.net/blog/archives/pic30.jpg" alt="coLinux の開発版のスナップショット"></a><a href="http://0xcc.net/blog/archives/000182.html" title="プログラミングの光景 - 日常的な学習について"><img src="http://0xcc.net/blog/archives/pic31.jpg" alt="プログラミングの光景 - 日常的な学習について"></a><a href="http://0xcc.net/blog/archives/000183.html" title="Unicode の文字列をソースコードに埋め込む方法"><img src="http://0xcc.net/blog/archives/pic32.jpg" alt="Unicode の文字列をソースコードに埋め込む方法"></a><a href="http://0xcc.net/blog/archives/000184.html" title="Unicode の文字列をエスケープする JavaScript"><img src="http://0xcc.net/blog/archives/pic33.jpg" alt="Unicode の文字列をエスケープする JavaScript"></a><a href="http://0xcc.net/blog/archives/000185.html" title="JavaScript で MIME ヘッダをデコード"><img src="http://0xcc.net/blog/archives/pic34.jpg" alt="JavaScript で MIME ヘッダをデコード"></a><a href="http://0xcc.net/blog/archives/000186.html" title="JavaScript でいろいろエスケープ・アンエスケープ"><img src="http://0xcc.net/blog/archives/pic35.jpg" alt="JavaScript でいろいろエスケープ・アンエスケープ"></a><a href="http://0xcc.net/blog/archives/000187.html" title="続 JavaScript でいろいろエスケープ・アンエスケープ"><img src="http://0xcc.net/blog/archives/pic36.jpg" alt="続 JavaScript でいろいろエスケープ・アンエスケープ"></a><a href="http://0xcc.net/blog/archives/000188.html" title="デジイチデビュー、一年後"><img src="http://0xcc.net/blog/archives/pic37.jpg" alt="デジイチデビュー、一年後"></a><a href="http://0xcc.net/blog/archives/000189.html" title="プログラミングの光景 - コードリーディングについて"><img src="http://0xcc.net/blog/archives/pic38.jpg" alt="プログラミングの光景 - コードリーディングについて"></a><a href="http://0xcc.net/blog/archives/000190.html" title="strchr() ではまった話"><img src="http://0xcc.net/blog/archives/pic39.jpg" alt="strchr() ではまった話"></a><a href="http://0xcc.net/blog/archives/000191.html" title="Python の unicodedata モジュール"><img src="http://0xcc.net/blog/archives/pic40.jpg" alt="Python の unicodedata モジュール"></a><a href="http://0xcc.net/blog/archives/000192.html" title="2007年の記事一覧"><img src="http://0xcc.net/blog/archives/pic41.jpg" alt="2007年の記事一覧"></a></div>

<h2>まとめ</h2>
<p>
2007年に書いた記事は、この記事を含めて41本でした。はてなブックマークでの人気記事は次の通りです。
</p>

<ol>
<li><a href="http://0xcc.net/blog/archives/000162.html">スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl</a> <a href="http://b.hatena.ne.jp/entry/http://0xcc.net/blog/archives/000162.html"><img src="http://b.hatena.ne.jp/entry/image/http://0xcc.net/blog/archives/000162.html" align="absmiddle"></a></li>

<li><a href="http://0xcc.net/blog/archives/000160.html">JavaScript でソートアルゴリズムを可視化</a> <a href="http://b.hatena.ne.jp/entry/http://0xcc.net/blog/archives/000160.html"><img src="http://b.hatena.ne.jp/entry/image/http://0xcc.net/blog/archives/000160.html"></a></li>

<li><a href="http://0xcc.net/blog/archives/000170.html">年を取ると環境設定がどうでもよくなる現象</a> <a href="http://b.hatena.ne.jp/entry/http://0xcc.net/blog/archives/000170.html"><img src="http://b.hatena.ne.jp/entry/image/http://0xcc.net/blog/archives/000170.html"></a></li>

<li><a href="http://0xcc.net/blog/archives/000178.html">C++と Pthreads でミニマルなHTTPサーバを書く</a> <a href="http://b.hatena.ne.jp/entry/http://0xcc.net/blog/archives/000178.html"><img src="http://b.hatena.ne.jp/entry/image/http://0xcc.net/blog/archives/000178.html"></a></li>

<li><a href="http://0xcc.net/blog/archives/000164.html">浮動小数点演算ではまった話</a> <a href="http://b.hatena.ne.jp/entry/http://0xcc.net/blog/archives/000164.html"><img src="http://b.hatena.ne.jp/entry/image/http://0xcc.net/blog/archives/000164.html"></a></li>

<li><a href="http://0xcc.net/blog/archives/000172.html">Dependency Injection の基本的なアイディア</a> <a href="http://b.hatena.ne.jp/entry/http://0xcc.net/blog/archives/000172.html"><img src="http://b.hatena.ne.jp/entry/image/http://0xcc.net/blog/archives/000172.html"></a></li>
</ol>
]]>
    </content>
  </entry>

  <entry>
    <title>Python の unicodedata モジュール</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000191.html" />
    <modified>2007-12-28T12:07:00Z</modified>
    <issued>2007-12-23T11:20:34+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.191</id>
    <created>2007-12-23T02:20:34Z</created>
    <summary type="text/plain"> Unicode のちょっとしたテキスト処理をしようと思い、 Python の ...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>python</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic40.jpg" alt="" style="float: right">
Unicode のちょっとしたテキスト処理をしようと思い、
Python の <a href="http://docs.python.org/lib/module-unicodedata.html">unicodedata</a> モジュールを使ってみました。これは非常に便利です。
</p>
]]>
      <![CDATA[<p>
unicodedata は Python に標準で付属するため、別途のインストールは不要です。次のようなことができます。
</p>

<h2>文字の名前を取得する</h2>

<p>
文字の名前を取得することができます。Unicode の文字にはすべて一意の名前がつけられています。ソースコード内で Unicode のコードポイントを使うときは U+20AC (EURO SIGN) などとコメントをつけておくと便利でしょう。
</p>

<pre>
&gt;&gt;&gt; unicodedata.name(u'A')
'LATIN CAPITAL LETTER A'
&gt;&gt;&gt; unicodedata.name(u'あ')
'HIRAGANA LETTER A'
</pre>

<h2>文字の名前から文字を取得する</h2>

<p>
逆に名前から文字を取得することもできます。
</p>

<pre>
&gt;&gt;&gt; unicodedata.lookup('LATIN CAPITAL LETTER A')
u'A'
&gt;&gt;&gt; unicodedata.lookup('HIRAGANA LETTER A')
u'\u3042'
</pre>

<h2>文字の幅を調べる</h2>

<p>
文字に対し文字の幅が半角か全角か調べることができます。Unix の端末上で動くツールを作るときに重宝しそうです。
</p>

<pre>
&gt;&gt;&gt; unicodedata.east_asian_width(u'Ａ')  # 全角のA
'F'
&gt;&gt;&gt;  unicodedata.east_asian_width(u'ｱ')  # 半角のア
'H'
&gt;&gt;&gt; unicodedata.east_asian_width(u'あ')
'W'
&gt;&gt;&gt; unicodedata.east_asian_width(u'A')  # ASCII のA
'Na'
&gt;&gt;&gt; unicodedata.east_asian_width(u'Ⅳ')
'A'
&gt;&gt;&gt; unicodedata.east_asian_width(u'\u0E20')  # タイ語の文字
'N'
</pre>

<p>
east_asian_width() の返り値は
<a href="http://www.unicode.org/reports/tr11/tr11-14.html">UAX #11: East Asian Width</a> の定義に対応しています。
</p>

<ul>
<li>F - East Asian Full-width</li>
<li>H - East Asian Half-width</li>
<li>W - East Asian Wide</li>
<li>Na - East Asian Narrow (Na)</li>
<li>A - East Asian Ambiguous (A)</li>
<li>N - Not East Asian</li>
</ul>

<h2>文字の数値を調べる</h2>

<p>
文字が数字の場合、その数値を調べることができます。decimal ⊂ digit ⊂ numeric の順に集合が大きくなります。
</p>

<pre>
&gt;&gt;&gt; unicodedata.decimal(u'3')  # decimal
3
&gt;&gt;&gt; unicodedata.digit(u'\u2462')  # ③ digit
3
&gt;&gt;&gt; unicodedata.numeric(u'\u215b')  # 1/8 numeric
0.125
&gt;&gt;&gt; unicodedata.numeric(u'Ⅳ')  # これも numeric
4.0
&gt;&gt;&gt; unicodedata.numeric(u'三', False)  # 漢数字はない
False
</pre>

<h2>文字の種類を調べる</h2>

<p>
小文字、大文字などの文字の種類を調べることができます。詳しい分類は <a href="http://www.unicode.org/Public/UNIDATA/UCD.html#General_Category_Values
">Unicode Character Database</a> のページに解説されています。
</p>

<pre>
&gt;&gt;&gt; unicodedata.category(u'a')  # Letter, Lowercase
'Ll'
&gt;&gt;&gt; unicodedata.category(u'A')  # Letter, Uppercase
'Lu'
&gt;&gt;&gt; unicodedata.category(u'あ')  # Letter, Other
'Lo'
</pre>

<h2>その他</h2>

<p>
この他にも unicodedata モジュールはテキストの正規化や合字 (combining character) のクラスの取得などといったことができます。詳しくは<a href="http://docs.python.org/lib/module-unicodedata.html">unicodedata モジュールのマニュアル</a>を参照してください。
</p>

<h2>htmlentitydefs モジュール</h2>

<p>
<a href="http://docs.python.org/lib/module-htmlentitydefs.html">htmlentitydefs</a>
は unicodedata とは別のモジュールですが、合わせて使うと便利なので、ついでに紹介します。このモジュールは HTML の実体文字参照 (character entity reference) に関する3つの辞書を提供しています。entitydefs は ISO-8859-1 の文字を返すので Unicode 処理では次の2つを使います。
</p>

<pre>
# コードポイントから名前を取得
&gt;&gt;&gt; htmlentitydefs.codepoint2name[0x20ac]
'euro'

# 名前からコードポイントへ
&gt;&gt;&gt; '%x' % htmlentitydefs.name2codepoint['euro']
'20ac'
</pre>

<h2>まとめ</h2>

<p>
Python の unicodedata および htmlelementdefs モジュールについて紹介しました。どちらも Unicode テキスト処理のさまざまな場面で役立ちそうです。
</p>
]]>
    </content>
  </entry>

  <entry>
    <title>strchr() ではまった話</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000190.html" />
    <modified>2007-12-23T02:19:39Z</modified>
    <issued>2007-12-22T22:15:59+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.190</id>
    <created>2007-12-22T13:15:59Z</created>
    <summary type="text/plain"> 標準Cライブラリに strchr() という関数があります。文字列の先頭から指...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>c</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic39.jpg" alt="" style="float: right">
標準Cライブラリに strchr() という関数があります。文字列の先頭から指定した文字を探すという単純な関数なのですが、先日、意外な仕様を知りました。
</p>
]]>
      <![CDATA[<p>
以下のコードを見てみます。
</p>

<pre>
  if (strchr("+-*/", c)) {  // c は四則演算の記号かな?
    ...
  }
</pre>

<p>
この if 文は c が +  - * / のいずれかの場合に条件が真となり、ブロック中が実行されます。…と、思いきや、実は条件が真になるケースがもうひとつありました。c が '\0' の場合です。
</p>

<p>
まさかと思って手元の Linux の man を見ると、文字列の終端のナル文字 ('\0') の扱いは明記されていません。
</p>

<blockquote>
<p>
The  strchr() function returns a pointer to the first occurrence of the character c in the string s.
</p>
</blockquote>

<p>
そこで The Single Unix Specification のマニュアルの
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/strchr.html">strchr</a>の項を見てみると、次のように記述されていました。
</p>

<blockquote>
<p>
The strchr() function shall locate the first occurrence of c (converted to a char) in the string pointed to by s. <strong>The terminating null byte is considered to be part of the string.</strong>
</p>
</blockquote>

<p>
というわけで、文字列の末尾の '\0' は文字列の一部とみなされるようです。strchr() を使って文字の種類を検査するコードは結構あると思うのですが、上のように書くと、 '\0' はすべて検査を通ってしまいます。これはなかなか厄介なバグの元になりそうです。
</p>

<p>
C++ で std::string を使っている場合は、 s.find_first_of("+-*/") != string::npos が使えます。
</p>

<h2>まとめ</h2>

<p>
strchr() が文字列終端のナル文字を含めて探索するということを今頃になって知りました（常識かもしれませんが）。単純そうに見える関数でもなかなか奥が深いものです。ちなみに、The Single UNIX Specification のマニュアルを読むには Firefox の
<a href="http://d.hatena.ne.jp/yupo5656/20060619/p1">SUSv3検索プラグイン</a>が便利です。
</p>
]]>
    </content>
  </entry>

  <entry>
    <title>プログラミングの光景 - コードリーディングについて</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000189.html" />
    <modified>2007-12-18T23:45:32Z</modified>
    <issued>2007-12-18T22:21:37+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.189</id>
    <created>2007-12-18T13:21:37Z</created>
    <summary type="text/plain"> WEB+DB PRESS Vol. 42に「プログラミングの光景 - コードリ...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>article</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic38.jpg" alt="" style="float: right">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774133310/bk256-1-22/ref=nosim">WEB+DB PRESS Vol. 42</a>に「プログラミングの光景 - コードリーディングについて」という1ページの記事を書きました。今号のアルゴリズム特集は岡野原さんが簡潔データ構造について書いているなど、読み応えのある記事がたくさんあります。
</p>
]]>
      <![CDATA[<p>
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/477413256X/bk256-1-22/ref=nosim">前号 (Vol. 41)</a> は宣伝を忘れましたが「<a href="http://gihyo.jp/dev/serial/01/scene/0004">コードレビュー</a>」について書きました。既に gihyo.jp で読めるようになっています。
</p>
]]>
    </content>
  </entry>

  <entry>
    <title>デジイチデビュー、一年後</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000188.html" />
    <modified>2007-12-17T00:14:47Z</modified>
    <issued>2007-12-16T23:38:33+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.188</id>
    <created>2007-12-16T14:38:33Z</created>
    <summary type="text/plain"> デジイチを買ってから１年以上経ちました。すぐ飽きるかと思いきや、いまだ飽きずに...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>camera</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic37.jpg" alt="" style="float: right">
<a href="http://0xcc.net/blog/archives/000145.html">デジイチを買って</a>から１年以上経ちました。すぐ飽きるかと思いきや、いまだ飽きずに遊んでいます。同じ頃にデジイチを買った周りの人間も案外、飽きずに楽しんでいるようです。</p>
]]>
      <![CDATA[<p>
ここでは、１年ほど使ってみて、「こんなことは最初から知っておけばよかった」と思ったことをまとめてみます。説明書に載っていることばかりですが…。
</p>

<h2>基本的な事柄</h2>

<ul><li>絞り優先モード</li><ul><li>だいたい絞り優先モードで撮っています。開放（絞っていない状態）だとシャッター速度が速く、ピントより奥と手前がぼけます。反対に、絞るとシャッター速度が遅くなって、前後ともにシャープになります。『<a href="http://0xcc.net/blog/archives/000175.html">カメラのしくみ</a>』にしくみが載っています。</li></ul><li>シャッター速度</li><ul><li>よ
く、「1 / 焦点距離(35mm換算)」が手ぶれせずに撮れるシャッター速度の限界の目安と言われています。どのくらい当てになる目安か不明ですが、手ぶれ補正機能のない E-330 では 1/2, 1/4 秒といったシャッター速度ではどんな焦点距離でも手ぶれしてしまいます。手ぶれ補正が強力な <a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000RGMD9I/bk256-1-22/ref=nosim/">E-510</a> などのカメラではそんなシャッター速度でも広角なら結構撮れてしまうようです。</li></ul><li>焦点距離（画角）</li><ul><li>広角だと広く撮れる、望遠だと遠くが撮れる、というのはわかりやすいのですが、広角だと奥行きが出て、望遠だと奥行きが圧縮される、ということはデジイチを買った後で知りました。近くのものを広角で撮ると遠近感が強すぎてゆがんで見えることがあります。この特徴をわざと利用して超広角で犬の顔のアップを撮った写真をよく見かけます。</li></ul><li>ホワイトバランス</li><ul><li>後述の「白い紙でホワイトバランス設定」はちょっと面倒なので、普段は「オート」「太陽光」「電球」くらいを使い分けています。<a title="E-330" href="http://0xcc.net/blog/archives/000145.html" id="s23w">E-330</a> 
には「蛍光灯」のモードは三種類あるのですが、それぞれがどういう特徴なのかよくわからないので使っていません（オートまかせ）。ホワイトバランスをわざとずらして食べ物をおいしそうに見せる、といった使い方もできます。<br></li></ul><li>ISO感度</li><ul><li>暗いところでは ISO感度を上げるとシャッター速度を速くすることができます。その代わりノイズが多くなります。最初は ISO 800 や 1600 を使うのは躊躇していましたが、ぶれた写真よりはノイズの方がましなので、あまり気にせずに上げています。<br></li></ul><li>露出補正</li><ul><li>カメラの自動露出はいつもばっちりというわけではないので、仕上がりを見てちょっと暗すぎ、明るすぎ、というときは露出補正をかけて撮り直しています。あるいは、意図的に露出補正をかけて明るくしたり、暗くして雰囲気を出すといった使い方もできます。<br></li></ul></ul>

<h2>小技</h2>

<ul><li>白い紙でホワイトバランス設定</li><ul><li>白い紙を使ってホワイトバランスを設定する機能です。暗い店内など、特に室内で効果抜群です。オリンパスのカメラではこの機能は「ワンタッチホワイトバランス」と呼ばれています。メーカーごとにいろいろな名称があるようです。</li></ul><li>日中シンクロ</li><ul><li>逆光が強く、被写体の顔が影で暗くなっているときに、正面から適度にフラッシュをあててやると影を打ち消すことができます。あまり使っていなかった内蔵フラッシュはこの用途のためにだいぶ使うようになりました。<br></li></ul><li>2秒タイマー</li><ul><li>三脚使用時などに、2秒タイマーを使うとシャッターを押すときの振動を避けることができます。三脚がないときはその辺の適当なものの上に乗せて固定したりします。<br></li></ul><li>ローキー・ハイキー</li><ul><li>E-330 にはローキー・ハイキーという設定項目があります（他のカメラにも同じような機能があると思います）。ローキーを選択すると、暗めの部分が強調され、ハイキーを選択すると明るい部分が強調されます。ハイキーを使って食べ物を明るく撮ったり、ローキーを使って空の色を深くしたりといったことができます。</li></ul></ul>

<h2>小物</h2>

<ul><li>PLフィルタ</li><ul><li>偏光をカットするフィルタです。水面やショーウィンドーなどの反射を抑制できるほか、空の青を強調する効果もあります。風景を撮るときによく使っています。<a title="14-54mm" href="http://www.amazon.co.jp/exec/obidos/ASIN/B0000D8V72/bk256-1-22/ref=nosim/" id="hf-.">14-54mm</a> のズームレンズ用に径が <a title="67mm のもの" href="http://www.amazon.co.jp/exec/obidos/ASIN/B000PJ1WEE/bk256-1-22/ref=nosim/" id="jv4t">67mm のもの</a>を買いました。これまでに買った中で一番満足度が高い小物です。<br></li></ul><li>水準器（レベラー）</li><ul><li>カメラの水平を調べる道具です。水平線をまっすぐ水平に撮りたいときに活躍します。カメラ上部のホットシューのところに取り付けられるものが<a title="ビックカメラなどで売っている" href="http://www.biccamera.com/bicbic/jsp/w/catalog/list.jsp?DISP_CATEGORY_ID=038099&amp;PARENT_CATEGORY_ID=03&amp;BACK_URL=camera/index.jsp&amp;SPEC_VALUE1=038099,013,%83%8C%83x%83%89%81%5B,,1," id="br4n">ビックカメラなどで売っています</a> 。カメラによってはファインダーのスクリーンをグリッドつきのものに交換できるので、水準器よりその方が便利そうです。</li></ul><li>ミニ三脚</li><ul><li>小さい三脚です。<a title="デジカメWatchに紹介" href="http://dc.watch.impress.co.jp/cda/item/2007/04/26/6130.html" id="t69o">デジカメWatchに紹介</a>されていた ULTRA MAXi mini を買ってみました。室内で<a href="http://0xcc.net/blog/archives/000168.html">マクロ</a>撮影したり、旅先で記念撮影をしたりといったときに活躍しています。</li></ul><li>レンズつきアイカップ</li><ul><li>E-330 のファインダーは小さい・暗いと不評です。そこで、ファインダーの小ささを改善しようと思い、レンズつきアイカップ <a title="ME-1" href="http://www.amazon.co.jp/exec/obidos/ASIN/B000CEK7JS/bk256-1-22/ref=nosim/" id="hjxp">ME-1</a> を導入してみました。個人的には効果は気持ち程度という感じでした。見た目がなんとなくかわいくなった気はします。</li></ul></ul>

<!--
<h2>その他</h2>

<ul><li>外に出かける機会が増えた</li><ul><li>デジイチを買ってから、旅行や散歩など、なんだかんだと外に出かける機会が増えました。</li></ul></ul>
-->

<h2>まとめ</h2>

<p>
以上、<a href="http://0xcc.net/blog/archives/000054.html">にわかな奴ほど語りたがる</a>でした。
</p>]]>
    </content>
  </entry>

  <entry>
    <title>続 JavaScript でいろいろエスケープ・アンエスケープ</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000187.html" />
    <modified>2007-10-27T10:50:24Z</modified>
    <issued>2007-10-27T19:41:50+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.187</id>
    <created>2007-10-27T10:41:50Z</created>
    <summary type="text/plain"> JavaScript でいろいろエスケープ・アンエスケープのページに EUC-...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>javascript</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic36.jpg" alt="" style="float: right">
<a href="http://0xcc.net/jsescape/">JavaScript でいろいろエスケープ・アンエスケープ</a>のページに EUC-JP と Punycode の対応を追加しました。
</p>
]]>
      
    </content>
  </entry>

  <entry>
    <title>JavaScript でいろいろエスケープ・アンエスケープ</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000186.html" />
    <modified>2007-10-15T15:14:50Z</modified>
    <issued>2007-10-15T23:59:35+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.186</id>
    <created>2007-10-15T14:59:35Z</created>
    <summary type="text/plain"> Unicode の文字列をエスケープする JavaScriptとJavaScr...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>javascript</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic35.jpg" alt="" style="float: right">
<a href="http://0xcc.net/blog/archives/000184.html">Unicode の文字列をエスケープする JavaScript</a>と<a href="http://0xcc.net/blog/archives/000185.html">JavaScript で MIME ヘッダをデコード</a>を<a href="http://0xcc.net/jsescape/">ひとつのページ</a>にまとめました。
</p>
]]>
      
    </content>
  </entry>

  <entry>
    <title>JavaScript で MIME ヘッダをデコード</title>
    <link rel="alternate" type="text/html" href="http://0xcc.net/blog/archives/000185.html" />
    <modified>2007-10-15T14:51:23Z</modified>
    <issued>2007-10-07T05:24:47+09:00</issued>
    <id>tag:0xcc.net,2007:/blog//2.185</id>
    <created>2007-10-06T20:24:47Z</created>
    <summary type="text/plain"> MIME ヘッダのデコーダを JavaScript で書いてみました。BとQエ...</summary>
    <author>
      <name>satoru</name>
      <url>http://namazu.org/~satoru/</url>
      <email>satoru@namazu.org</email>
    </author>
    <dc:subject>javascript</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://0xcc.net/blog/">
      <![CDATA[<p>
<img src="http://0xcc.net/blog/archives/pic34.jpg" alt="" style="float: right">
MIME ヘッダのデコーダを JavaScript で書いてみました。BとQエンコーディング、およびUTF-8, Shift_JIS, ISO-2022-JP の文字エンコーディングに対応しています。
</p>
]]>
      <![CDATA[<div>
<a href="http://0xcc.net/jsescape/">http://0xcc.net/jsescape/</a> に移動しました。
</div>

]]>
    </content>
  </entry>

</feed>