<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2136810126015230672</id><updated>2011-11-28T08:31:11.678+09:00</updated><category term='Python'/><category term='wii-tag'/><category term='web'/><category term='NYC2008'/><category term='Gainer'/><category term='ocaml'/><category term='OLPC'/><category term='Perl'/><category term='ubuntu'/><category term='VAIO type Z'/><category term='たのまれごと'/><category term='go'/><category term='diary'/><title type='text'>亀鶴茄子</title><subtitle type='html'>亀鶴と茄子のblogです</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default?start-index=101&amp;max-results=100'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>219</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4667302713197148050</id><published>2011-09-14T22:58:00.000+09:00</published><updated>2011-09-14T22:58:57.630+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><title type='text'>devquiz 2011 Go!の解答</title><content type='html'>devquizのGo!の問題で提出した解答。&lt;br /&gt;問題文は以下の通り。&lt;br /&gt;&lt;blockquote&gt;Go 言語で、PNG 画像を入力として受け取り、その画像が何色使っているかを返す関数&lt;br /&gt;&lt;br /&gt;func CountColor(png io.Reader) int&lt;br /&gt;を実装してください。PNG 画像は io.Reader 型で与えられます。&lt;br /&gt;なお、入力の画像は R G B の各色の値が 0 から 255 までの 256 段階のいずれかであり、不透明（アルファチャンネルの値が常に 255）であることが保証されています。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;答えとして送ったもの(ただし変数名は多少整理した)。素直にスキャンしているだけです。&lt;br /&gt;&lt;pre&gt;&lt;code class="go"&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "fmt"&lt;br /&gt; "io"&lt;br /&gt; "strings"&lt;br /&gt; "image"&lt;br /&gt; "image/png"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func CountColor(r io.Reader) int {&lt;br /&gt; colormap := map[uint32]int{}&lt;br /&gt; image, _ := png.Decode(r)&lt;br /&gt; bounds := image.Bounds()&lt;br /&gt; w, h := bounds.Max.X, bounds.Max.Y&lt;br /&gt; var colorNum uint32 = 0&lt;br /&gt; for i := 0; i &lt; w; i++ {&lt;br /&gt;  for j := 0; j &lt; h; j++ {&lt;br /&gt;   colorNum = colorCheck(image.At(i, j))&lt;br /&gt;   colormap[colorNum] = colormap[colorNum] + 1&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; return len(colormap)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func colorCheck(color image.Color) uint32 {&lt;br /&gt; r, g, b, _ := color.RGBA()&lt;br /&gt; var num uint32&lt;br /&gt; num = uint32(uint8(r))&lt;br /&gt; num = num &lt;&lt; 8&lt;br /&gt; num = num + uint32(uint8(g))&lt;br /&gt; num = num &lt;&lt; 8&lt;br /&gt; num = num + uint32(uint8(b))&lt;br /&gt; return num&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* これらの関数は提出時に自動挿入されます。 */&lt;br /&gt;func main() {&lt;br /&gt; png := GetPngBinary()&lt;br /&gt; cnt := CountColor(png)&lt;br /&gt; fmt.Println(cnt)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func GetPngBinary() io.Reader {&lt;br /&gt; // img_strの中身は提出するたびに変化します。&lt;br /&gt; // 省略&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;以下は、後から考えたgoroutine使用版。&lt;br /&gt;&lt;pre&gt;&lt;code class="go"&gt;&lt;br /&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "fmt"&lt;br /&gt; "io"&lt;br /&gt; "strings"&lt;br /&gt; "image"&lt;br /&gt; "image/png"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func CountColor(r io.Reader) int {&lt;br /&gt; colormap := map[uint32]int{}&lt;br /&gt; img, _ := png.Decode(r)&lt;br /&gt; bounds := img.Bounds()&lt;br /&gt; w, h := bounds.Max.X, bounds.Max.Y&lt;br /&gt; result := make(chan uint32)&lt;br /&gt; go colorCheck(img, w, h, result)&lt;br /&gt; for i := 0; i &lt; w*h; i++ {&lt;br /&gt;  colormap[&lt;-result]++&lt;br /&gt; }&lt;br /&gt; return len(colormap)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func colorCheck(img image.Image, w, h int, result chan uint32) {&lt;br /&gt; var num uint32&lt;br /&gt; for x := 0; x &lt; w; x++ {&lt;br /&gt;  for y := 0; y &lt; h; y++ {&lt;br /&gt;   r, g, b, _ := img.At(x, y).RGBA()&lt;br /&gt;   num = uint32(uint8(r))&lt;br /&gt;   num = num &lt;&lt; 8&lt;br /&gt;   num = num + uint32(uint8(g))&lt;br /&gt;   num = num &lt;&lt; 8&lt;br /&gt;   num = num + uint32(uint8(b))&lt;br /&gt;   result &lt;- num&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* これらの関数は提出時に自動挿入されます。 */&lt;br /&gt;func main() {&lt;br /&gt; png := GetPngBinary()&lt;br /&gt; cnt := CountColor(png)&lt;br /&gt; fmt.Println(cnt)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func GetPngBinary() io.Reader {&lt;br /&gt; // img_strの中身は提出するたびに変化します。&lt;br /&gt; // 省略&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;goっぽさという点ではgoroutine版のが良いのだろうけど、いきなりこれを書くのは今の私には無理でした。&lt;br /&gt;&lt;br /&gt;改めて見ると、後者ではImageをスキャンしている部分(colorCheck)と、色数を数える部分(CountColor)が分離出来ているので、すっきりしているかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4667302713197148050?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4667302713197148050/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4667302713197148050' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4667302713197148050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4667302713197148050'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2011/09/devquiz-2011-go.html' title='devquiz 2011 Go!の解答'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8409856370787011164</id><published>2011-08-27T23:11:00.000+09:00</published><updated>2011-08-27T23:11:49.989+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>「小さな哲学者たち」という映画を見てきた</title><content type='html'>&lt;a href="http://tetsugaku-movie.com/index.html"&gt;小さな哲学者たち&lt;/a&gt;というドキュメンタリー映画を見てきた。&lt;br /&gt;これは、フランスはパリ近郊のZEP(教育優先地区)の幼稚園で行われた、3歳から5歳の子供に向けてなされた哲学の授業の様子を追いかけたドキュメンタリーで、原題は「Ce n'est qu'un début」。日本語だと「これは始まりに過ぎない」という意味になるみたい。&lt;br /&gt;(ガンダムF91のラストの字幕のようだけど、全く関係ない)&lt;br /&gt;&lt;br /&gt;哲学の授業といっても、哲学史ではなく、愛とは何か、死とは何かといった内容を、子供たち同士が意見を言い合い、互いの言葉に耳を傾け、時に反論し、時に賛成する。そういう態度を身につけさせるものらしい。話し合いだけでなく、それをフォローするように、テーマに沿った絵を描いたりもするらしい。&lt;br /&gt;&lt;br /&gt;その一番最初の授業では「大人と子供の違い」について先生が質問することで始めるのだけど、しばらくすると子供たちは黙りこんでしまう。それだけでなく、まったく関係ない話を先生に語ろうとしたり、隣の子とおしゃべりしたりと、授業の体を為さないまま終わってしまう。&lt;br /&gt;ZEPとされる地域は「恵まれない」とされる家庭が多く、また移民(二世も含む)の家族が多い土地で、教育レベルが高くないところだそうだけど、3歳児の教育レベルなんて、どこだろうとこんなものだろう。3歳の頃の自分にこの質問をしても「大きいのが大人で、小さいのが子供」以上のことは言えないと思う。先生は「大人がやっても良くて、子供がやってはいけないこと」は何か？とか、大人目線で見ればうまい質問をして、子供が考えるのを助けるのだけど、それでもやっぱり難しいらしい。&lt;br /&gt;&lt;br /&gt;それでも何回か授業を繰り返すうちに、自分や家族の実体験を元に具体例を提示した上で、「だから○○と思う」という議論の下地のような物を子供たち自身が獲得していく。子供の体験した事なので、提示される例は「チョコレートを出しっぱなしにしたから溶けちゃった」とか「お父さんとお母さんが喧嘩したけど、最後は謝っていた」みたいにささいだけど、ものすごく具体的。&lt;br /&gt;それと小さくても流石フランス人というべきか、女の子が好きな男の子と一緒にいる絵を描いていて、それを見たその男の子が「君とはもう別れたんだからそんな絵を描くな」と言ったりとか、子供たちの恋愛絡みの光景が多く映されている。知らないだけで日本の子もそんな感じかも知れないけど。&lt;br /&gt;&lt;br /&gt;印象的だったのは、ある女の子が障害を持った父親の事を「お父さんは自分で歩けないけど、自分で動ける」「自分とは違うけど同じ」と矛盾した言い回しで語っているシーン。他の子たちは、この矛盾を追求するのだけど、女の子はそれにきちんと応答しようと試み、最終的に「障害があるとしても、そのままのお父さんが好きである」事を表明する。矛盾の追求に対する回答にはなっていないのだけど、おそらくその子にとっては、矛盾の解消以上に重要なことに辿り着いたのだと思う。&lt;br /&gt;&lt;br /&gt;もう一つ印象に残ったのは、子供たちの多くが「自由」というものは一人で出歩く事であるという意見に同意していたこと。さらに大人が子供を「自由」に歩かせないのは、子供を守るためであることをきちんと認識していること。自分たちが「自由」で無い理由は、大人たちが守ってくれているからという事を理解しながらも、柵を乗り越えて怒られた子供の話や、旅行に行った子が滞在先の家から一人で海まで歩いたことを自慢気に話すのを、わくわくした顔で聞き入っているのが「移動の自由」の原点を表しているようで、微笑ましくも頼もしい。&lt;br /&gt;&lt;br /&gt;また、子供たちは哲学の授業から「愛」や「死」といったテーマを持ち帰り、家庭内でも思考が連続していく。両親とも一緒にテーマについて語り、両親もそれに応答していく。幼稚園だけでなく家庭も含めて思考する態度が訓練されていく様子が分かる。&lt;br /&gt;&lt;br /&gt;哲学というと抽象的で、虚学の総本山という印象があるけれど、この映画で、様々なバックグラウンドを持つ子供たちが、暴力ではなく言葉と思考によって、相手を説得する態度を学んでいく様子を見ると具体的で実践的なツールとして哲学を使うことが出来るのだと言うことがよく分かる。&lt;br /&gt;移民が多いという背景により「単純な一つの道徳」が暴力に成りうる土地、国において、まずなされるべき対話(これすら暴力かもしれないが、少なくともマシな暴力だ)を構築する上で、哲学の授業が有効に機能している。&lt;br /&gt;&lt;br /&gt;私が見た回では、上映後トークショーがあって、移民が少ない日本ではこのような授業の要請はまだ少ないと語られていたけど、例えば北海道と沖縄の子が遠隔で対話するような哲学の授業というのは潜在的に要求されているのではないかと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8409856370787011164?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8409856370787011164/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8409856370787011164' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8409856370787011164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8409856370787011164'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2011/08/blog-post_27.html' title='「小さな哲学者たち」という映画を見てきた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4945988786125926350</id><published>2011-08-27T21:53:00.000+09:00</published><updated>2011-08-27T21:53:56.435+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><title type='text'>道を聞かれた 新宿</title><content type='html'>西新宿のあたりで、初老の女性に十二庵?という場所が無いか聞かれた。&lt;br /&gt;聞いたことが無かったので、知りませんと回答。&lt;br /&gt;他の人にも聞いていたようだけど、他の人も心当たりが無さそう。&lt;br /&gt;&lt;br /&gt;後から調べるとニューオータニのあたりに、そういう名前のお店があるらしい。&lt;br /&gt;確かに、あのあたりのお店に行きそうな上品なお金持ち風の格好だったけど、無事辿りつけただろうか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4945988786125926350?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4945988786125926350/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4945988786125926350' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4945988786125926350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4945988786125926350'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2011/08/blog-post.html' title='道を聞かれた 新宿'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-9087492138648958957</id><published>2011-05-28T23:27:00.001+09:00</published><updated>2011-05-28T23:27:41.518+09:00</updated><title type='text'>正規表現 幅ゼロ先読みでよく間違えるのでメモ</title><content type='html'>正規表現で、いつも混乱するゼロ幅先読みについてメモ。&lt;br /&gt;整理せず思考過程をそのまま記述する。&lt;br /&gt;&lt;br /&gt;まず確認として、ゼロ幅とか気にしない正規表現。&lt;br /&gt;具体例が合ったほうが分かりよいので、以下の仕様で考える。&lt;br /&gt;&lt;br /&gt;1) aとzだけが使われる&lt;br /&gt;2) 文字列の長さは3以上、10以下&lt;br /&gt;&lt;br /&gt;これにマッチする正規表現は&lt;code&gt;^[az]{3,10}$&lt;/code&gt;である。ここまでは問題ない。&lt;br /&gt;次に以下の仕様を追加する。&lt;br /&gt;&lt;br /&gt;3)zは連続して3つ以上ならんではならない&lt;br /&gt;&lt;br /&gt;連続した3つ以上のzとマッチする正規表現は、&lt;code&gt;z{3,}&lt;/code&gt;なので、これを幅ゼロ否定先読みしてやればよい。&lt;br /&gt;そして、こう間違える&lt;code&gt;(?!z{3,})^[az]{3,10}$&lt;/code&gt;。(※)&lt;br /&gt;この書き方では、zzzaは確かにマッチしないが、aaazzzaaaにはマッチしてしまう。&lt;br /&gt;&lt;br /&gt;なぜなら、正規表現のカーソルはマッチした文字列の後ろに移動してしまうから。&lt;br /&gt;aaazzzaaaの場合、文字列の先頭(最初のaの直前)で3連続以上のzを探した後、aaazzzaaaにマッチして、カーソルは文字列の最後に移動してしまう。&lt;br /&gt;&lt;br /&gt;正しい正規表現はこうなる&lt;code&gt;(?![az]*z{3,})^[az]{3,10}$&lt;/code&gt;。&lt;br /&gt;否定先読みの中身だけ取り出すと&lt;code&gt;[az]*z{3,}&lt;/code&gt;。つまりaかzが先頭に0個以上あって、その後でzが3つ以上並んでいるかどうかを調べている。&lt;br /&gt;&lt;br /&gt;なんで、※のような間違いに至るかについて、自己分析してみる。&lt;br /&gt;人間が文字列を検索するときは基本的に頭から順番に一文字ずつ、対象の文字列と合っているかどうかを調べていく。&lt;br /&gt;対して、正規表現は与えられた個々の正規表現単位で合っているかどうかを調べていく。&lt;br /&gt;aaazzzaaaを^[az]{3,10}$と表す場合、aaazzzaaaで一つの「文字」であり、aaaやzzzという「文字」は存在していない。&lt;br /&gt;この違いを忘れて、人間の検索戦略をそのまま正規表現での検索に当てはめてしまうところに、間違いの原因がある。&lt;br /&gt;&lt;br /&gt;ところで、人間であっても実際には正規表現と似たような調べ方を行っている。&lt;br /&gt;例えば「時」という漢字は「日」「寺」に分けられるが、人間が「時」という文字を検索するとき(書体の影響もあるとはいえ)、「日寺」という文字の並びとはマッチさせない。&lt;br /&gt;とはいえ、あえて「時」と「日寺」をマッチさせるような遊びも楽しいのだけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-9087492138648958957?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/9087492138648958957/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=9087492138648958957' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9087492138648958957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9087492138648958957'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2011/05/blog-post.html' title='正規表現 幅ゼロ先読みでよく間違えるのでメモ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4226907827610093352</id><published>2011-03-11T11:37:00.004+09:00</published><updated>2011-03-11T11:43:37.657+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>かわいいPS1</title><content type='html'>TwitterでTerminalともっと仲良くなりたいという人と話していて、プロンプトをかわいくすれば仲良くなれるかも、と思ってやってみた。&lt;br /&gt;&lt;br /&gt;bashrcで&lt;code class="code"&gt;PS1="\w\n(･ᴗ･)?"&lt;/code&gt;と設定。&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/28342034@N04/5515996333/" title="kawaii PS1 by kameturu, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5054/5515996333_958a90e0a4.jpg" width="500" height="316" alt="kawaii PS1" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4226907827610093352?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4226907827610093352/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4226907827610093352' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4226907827610093352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4226907827610093352'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2011/03/ps1.html' title='かわいいPS1'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5054/5515996333_958a90e0a4_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8431068119796858582</id><published>2010-12-01T17:48:00.002+09:00</published><updated>2010-12-01T17:53:59.833+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><title type='text'>道を聞かれた 2010 師走</title><content type='html'>小学校までの道のりを聞かれた。&lt;br /&gt;私は知らないが、嫁が知っていたので伝える。&lt;br /&gt;だいぶ分かりづらいと思うのだけど、たどり着けただろうか。&lt;br /&gt;&lt;br /&gt;ほとんど外出しないので、本年最後の「道を聞かれた」になるはず。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8431068119796858582?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8431068119796858582/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8431068119796858582' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8431068119796858582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8431068119796858582'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/12/2010.html' title='道を聞かれた 2010 師走'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2171503492513757756</id><published>2010-11-25T21:18:00.004+09:00</published><updated>2010-11-25T22:32:05.568+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>IBM developerWorks Japan 最優秀www大賞受賞感想</title><content type='html'>&lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/EiCodWJ/entry/01_nov_25_2010?lang=ja" &gt;IBM Web Award 2010：「最優秀www大賞」を受賞&lt;/a&gt;だそうです。&lt;br /&gt;&lt;br /&gt;この記事を紹介するツイートがあったので、&lt;br /&gt;&lt;blockquote&gt;真面目な賞なんだろうけど何故か小馬鹿にしている感じがする。本文はまだ読んでない “@dW_Japan: 編集長ブログ更新：『IBM Web Award 2010：「最優秀www大賞」を受賞』 http://bit.ly/giJJ5W&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/#!/kameturu/status/7671097809969152"&gt;http://twitter.com/#!/kameturu/status/7671097809969152&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;こんな茶々を入れたら、&lt;br /&gt;&lt;blockquote&gt;本文をお読みになって是非ご感想をお寄せください（dW Japan編集長より） @kameturu: 真面目な賞なんだろうけど何故か小馬鹿にしている感じがする。本文はまだ読んでない&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/#!/dW_Japan/status/7673367763091456"&gt;http://twitter.com/#!/dW_Japan/status/7673367763091456&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;こんな返答が。&lt;br /&gt;すみません。どっちが小馬鹿にしているんだって話ですよね。&lt;br /&gt;&lt;br /&gt;というわけで読みましたので、その感想。&lt;br /&gt;まずはおめでとうございます。&lt;br /&gt;&lt;br /&gt;さて、他のノミネートサイトが分からないので、他のサイトとの比較は出来ないのですが、外から見た場合この賞をdwが取ったというのは順当なように思います。むしろ他に思いつくサイト、ページが無い。&lt;br /&gt;僕のWeb生活上、他のIBMのページは検索にひっかかったついでに見る程度だけど、dwについてはfeedを購読しているし、後で読もうと思ってブックマークだけしているページは数知れず。&lt;br /&gt;たしかdwを定期的に更新されるサイトとして認知したのは、Pythonを覚え始めた頃で、David Mertzさんの記事をむさぼる様に読んでいた記憶があります。&lt;br /&gt;&lt;br /&gt;編集長さんの今回の記事に『優秀な翻訳ベンダーとの協業により Contents Quality を高く維持できていること。』とあるのだけど、確かに古い記事は自動翻訳のような不自然な訳が目立っていたけど、段々と普通の訳になっていったように思います。しかも、何年か前までは、翻訳されるスピードが遅くて「これなら英語版を直接読んだ方が速いなあ」と思っていたけど、一年ぐらい(？)前から、物凄い速さで訳されるようになって、英語版を後で読もうと思っていたら、次の週には日本語訳が出来ていたりなんてザラにあったり。&lt;br /&gt;本当に優秀でありがたいです。&lt;br /&gt;&lt;br /&gt;一方で『ソーシャル化』ってのはちょっとピンと来なかったり。サインイン出来ることは知っているけど、その利点が今一つかめなかったり。とはいえ、これはネガティブな点ではなくソーシャル機能なんてなくても「読むサイト」としてのクオリティが高いという証左なのだと思います。&lt;br /&gt;&lt;br /&gt;感想からどんどん離れていってしまいますが、dw「Japan」に対する要望としては、「Japan」独自の記事をもっと読みたいなあと、いつも思っています。具体例が思い浮かばないのですが、日本発の情報というものもきっといろいろあるんじゃないかと。英語サイトも平行して読んでいると、あの記事の翻訳だなという事がほとんどで、驚きがあまりなかったり。テクニカルナイトの報告記事だけでもあると楽しいのにと思います。&lt;br /&gt;&lt;br /&gt;なんのかんの言っても、毎週金曜の更新を楽しみにしている人は、多いはず。&lt;br /&gt;dw編集長、担当の皆さん、今後も楽しい記事を楽しみにしています。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;おまけ&lt;br /&gt;&lt;br /&gt;毎週チェックしているわけじゃないけど、僕がIBMのサイトで他に良く見ているところ&lt;br /&gt;&lt;a href="http://www-01.ibm.com/software/ucd/index.html"&gt;Design @ IBM&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2171503492513757756?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2171503492513757756/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2171503492513757756' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2171503492513757756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2171503492513757756'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/ibm-developerworks-japan-www.html' title='IBM developerWorks Japan 最優秀www大賞受賞感想'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1063260336038382758</id><published>2010-11-20T07:21:00.004+09:00</published><updated>2010-11-20T07:49:29.082+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><title type='text'>gofmtをvimで簡単に使うためのスクリプト</title><content type='html'>Go言語は、推奨コーディングスタイルがあります。&lt;br /&gt;とはいえ、実際に書くときにはあまり細かく気にする必要はなく、gofmtというGo言語をインストールするとついてくるフォーマッタを通してやれば、推奨スタイル通りに整形してくれます。&lt;br /&gt;これを随時実行したいので、vimスクリプトを書いてみました。&lt;br /&gt;都合上、フォーマットをかける前に、ファイルを保存します。&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;function! Gofmt()&lt;br /&gt;:w&lt;br /&gt;python &lt;&lt; EOF&lt;br /&gt;import vim&lt;br /&gt;import subprocess&lt;br /&gt;&lt;br /&gt;cb = vim.current.buffer&lt;br /&gt;cursor = vim.current.window.cursor&lt;br /&gt;p=subprocess.Popen(&lt;br /&gt;        ['gofmt', cb.name],&lt;br /&gt; stdout=subprocess.PIPE,&lt;br /&gt; stderr=subprocess.PIPE,&lt;br /&gt; close_fds=True)&lt;br /&gt;returncode=p.poll()&lt;br /&gt;if not returncode:&lt;br /&gt;    err = p.stderr.read()&lt;br /&gt;    if err != None and err == '':&lt;br /&gt;        del cb[:]&lt;br /&gt;        cb.append(p.stdout.readlines(), 0)&lt;br /&gt;    else:&lt;br /&gt;        print(err)&lt;br /&gt;vim.current.window.cursor = cursor&lt;br /&gt;EOF&lt;br /&gt;endfunction&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1063260336038382758?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1063260336038382758/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1063260336038382758' title='4 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1063260336038382758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1063260336038382758'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/gofmtvim.html' title='gofmtをvimで簡単に使うためのスクリプト'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6568567160029520343</id><published>2010-11-15T16:15:00.003+09:00</published><updated>2010-11-15T16:52:43.656+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>子供が生まれた</title><content type='html'>11月15日の七五三の日の朝に誕生。&lt;br /&gt;病院の方針なのか、夫が立ち会う事は前提になっていたので、生まれた直後の子供を見ることが出来た。&lt;br /&gt;&lt;br /&gt;病院に行ったのは、金曜日の朝なので、だいたい72時間で生まれたことに。&lt;br /&gt;10分間隔で痛くなったら来いとの指示だったそうだけど、今思えば早すぎた感はあり。&lt;br /&gt;初めてのことなので、痛いのレベルが分からなかったというのが大きいけど、とりあえず「痛い、痛い」言っているレベルではまだ先は長いです。&lt;br /&gt;最終的には基本的に痛くてしゃべれないし、言えたとしても絞り出すようにしかしゃべれない。&lt;br /&gt;(中の人を含めて)個人差も大きいだろうから、一概には言えないのだろうけど。&lt;br /&gt;外から見る限りでは、分娩前の陣痛の方が分娩中より痛そうでした。もしかしたら分娩中は痛みどころでは無いのかな。&lt;br /&gt;&lt;br /&gt;立ち会うとはいえ、何か出来るわけでもなく、汗を拭いて、うちわで扇ぐだけ。基本的に夫は何も出来ないわけです。&lt;br /&gt;それでも、Twitterでリアルタイムで実況出来るほど余裕があるわけでもなく、途中途中の空き時間に友人、知人に向けて短くツイートする程度。他にも実家にメールとかもしてたしね。&lt;br /&gt;分娩中にTwitterで実況したい人は、妻、助産師、看護師、医師、(もしかしたら子供も)からの白い目に耐えるだけの精神力を鍛えてください。&lt;br /&gt;&lt;br /&gt;それにしても、赤ちゃんは文句無しにかわいい。&lt;br /&gt;病院内で他の赤ちゃんを見かける機会は時々あって、かわいいなとは思っていたけど、自分の子はそれとは別の感覚としてかわいいと感じる。&lt;br /&gt;客観的に見れば、生まれたての赤ちゃんは基本的にほわほわしていて、大人以上に個人差がないはずなのに。&lt;br /&gt;&lt;br /&gt;今日は出てくるのに疲れたのか、あまり泣いたりしなかったけど(鼻から羊水を吸い出すためにチューブを突っ込まれると流石に泣いてた)、明日からは元気に泣くんだろうな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6568567160029520343?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6568567160029520343/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6568567160029520343' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6568567160029520343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6568567160029520343'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/blog-post.html' title='子供が生まれた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3666746590158452321</id><published>2010-11-11T21:53:00.002+09:00</published><updated>2010-11-11T22:15:59.548+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><title type='text'>Gordonさまの動画を撮った</title><content type='html'>&lt;a href="http://kamenasu.blogspot.com/2010/11/gogordon.html"&gt;GoでGordonさまと遊ぶ&lt;/a&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HZlDll5wjLM?fs=1&amp;amp;hl=ja_JP&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HZlDll5wjLM?fs=1&amp;amp;hl=ja_JP&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kamenasu.blogspot.com/2010/11/gordon_09.html"&gt;Gordonさまがマウスカーソルにくっつく&lt;/a&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Pq2X9U_xQNc?fs=1&amp;amp;hl=ja_JP&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Pq2X9U_xQNc?fs=1&amp;amp;hl=ja_JP&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3666746590158452321?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3666746590158452321/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3666746590158452321' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3666746590158452321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3666746590158452321'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/gordon_11.html' title='Gordonさまの動画を撮った'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2698083851523613890</id><published>2010-11-10T22:43:00.003+09:00</published><updated>2010-11-10T22:49:15.441+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><title type='text'>gocode入れてみた</title><content type='html'>「&lt;a href="http://mattn.kaoriya.net/software/lang/go/20100729002939.htm"&gt;VimでGoがautocomplete出来るgocodeがいい感じ&lt;/a&gt;」を見て、&lt;a href="https://github.com/nsf/gocode"&gt;gocode&lt;/a&gt;を入れてみた。&lt;br /&gt;&lt;br /&gt;ビルドやインストールについては、gocodeのサイトに書いてあって、特に引っかかるところはない。&lt;br /&gt;ただ、その説明だけでは、gvimでは動作しなかったので、gvimrcに以下の行を追加した。&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;let $GOBIN="/home/hiroaki/bin/go/"&lt;br /&gt;let $GOROOT="/home/hiroaki/src/go/"&lt;br /&gt;let $PATH="$PATH:/home/hiroaki/bin/go"&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2698083851523613890?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2698083851523613890/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2698083851523613890' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2698083851523613890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2698083851523613890'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/gocode.html' title='gocode入れてみた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2318941412930068951</id><published>2010-11-09T07:02:00.005+09:00</published><updated>2010-11-10T20:53:30.195+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><title type='text'>Gordonさまがマウスカーソルにくっつく</title><content type='html'>多少書き直してみた。ついでに分身の術ではなく、マウスカーソルにくっつくように動くようにした。&lt;br /&gt;コールバックな部分は若干やっつけだけど、基本的にはこんな感じだと思う。&lt;br /&gt;event.goは綺麗というかすっきりして、ここまで来たらファイルを分離する意味が無い。&lt;br /&gt;その分、main.goのhandleMouseEventがやたら汚い。&lt;br /&gt;interface{}を具体的な型に落とす方法はswitchしかないのかな。&lt;br /&gt;&lt;br /&gt;(一度投降後、何度かコードを綺麗にしてます)&lt;br /&gt;&lt;br /&gt;main.go&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "fmt"&lt;br /&gt; "exp/draw"&lt;br /&gt; "exp/draw/x11"&lt;br /&gt; "image"&lt;br /&gt;&lt;br /&gt; "./event"&lt;br /&gt; "./gordon"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func handleMouseEvent(event interface{}, args ...interface{}) {&lt;br /&gt; switch e := event.(type) {&lt;br /&gt; case draw.MouseEvent:&lt;br /&gt;  {&lt;br /&gt;   me := draw.MouseEvent(e)&lt;br /&gt;   switch win := args[0].(type) {&lt;br /&gt;   case draw.Window:&lt;br /&gt;    {&lt;br /&gt;     win = draw.Window(win)&lt;br /&gt;     switch char := args[1].(type) {&lt;br /&gt;     case gordon.Character:&lt;br /&gt;      {&lt;br /&gt;       char = gordon.Character(char)&lt;br /&gt;       fmt.Printf(&lt;br /&gt;        "MouseEvent: Button= %d, Loc= %v\n",&lt;br /&gt;        me.Buttons, me.Loc)&lt;br /&gt;&lt;br /&gt;       draw.Draw(win.Screen(), char.Canon(), char.Mask(), image.ZP)&lt;br /&gt;       char.Position(me.Loc.X, me.Loc.Y)&lt;br /&gt;       draw.Draw(win.Screen(), char.Canon(), char, image.ZP)&lt;br /&gt;       win.FlushImage()&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; gordon1, e := gordon.NewGordon(image.Point{X: 0, Y: 0})&lt;br /&gt; if e != nil {&lt;br /&gt;  fmt.Printf("Error %v\n", e)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; win, e := x11.NewWindow()&lt;br /&gt; if e != nil {&lt;br /&gt;  fmt.Printf("Error %v\n", e)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; eventChan := win.EventChan()&lt;br /&gt; mouseCallBack := event.CallBack(handleMouseEvent)&lt;br /&gt; sync := make(&lt;-chan bool)&lt;br /&gt; go event.HandleCallBack(eventChan, mouseCallBack, win, gordon1)&lt;br /&gt; &lt;-sync&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;event.go&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;package event&lt;br /&gt;&lt;br /&gt;type CallBack func(event interface{}, args ...interface{})&lt;br /&gt;&lt;br /&gt;func HandleCallBack(eventChan &lt;-chan interface{}, fun CallBack, args ...interface{}) {&lt;br /&gt; for {&lt;br /&gt;  event := &lt;-eventChan&lt;br /&gt;  go fun(event, args...)&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;gordon.go&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;package gordon&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "bufio"&lt;br /&gt; "image"&lt;br /&gt; "image/png"&lt;br /&gt; "os"&lt;br /&gt;)&lt;br /&gt;os.DevNull&lt;br /&gt;&lt;br /&gt;type Character interface {&lt;br /&gt; image.Image&lt;br /&gt; Canon() image.Rectangle&lt;br /&gt; Mask() image.Image&lt;br /&gt; Position(x, y int)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;type Gordon struct {&lt;br /&gt; image.Image&lt;br /&gt; Rect      image.Rectangle&lt;br /&gt; maskImage image.Image&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func (g *Gordon) Position(x, y int) {&lt;br /&gt; r := g.Bounds()&lt;br /&gt; g.Rect = image.Rect(&lt;br /&gt;  x, y,&lt;br /&gt;  x+r.Max.X, y+r.Max.Y)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func (g *Gordon) Canon() image.Rectangle {&lt;br /&gt; return g.Rect.Canon()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func (g *Gordon) Mask() image.Image {&lt;br /&gt; return g.maskImage&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func NewGordon(point image.Point) (gordon *Gordon, e os.Error) {&lt;br /&gt; gordon = new(Gordon)&lt;br /&gt; img, e := loadGordon()&lt;br /&gt; if e != nil {&lt;br /&gt;  return nil, e&lt;br /&gt; }&lt;br /&gt; gordon.Image = img&lt;br /&gt; gordon.Position(point.X, point.Y)&lt;br /&gt; gordon.maskImage = image.NewGray(img.Bounds().Max.X, img.Bounds().Max.Y)&lt;br /&gt; return gordon, e&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func loadGordon() (image.Image, os.Error) {&lt;br /&gt; file, e := os.Open("./Gordon.png", os.O_RDONLY, 0666)&lt;br /&gt; if e != nil {&lt;br /&gt;  return nil, e&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; read := bufio.NewReader(file)&lt;br /&gt; icon, e := png.Decode(read)&lt;br /&gt; if e != nil {&lt;br /&gt;  return nil, e&lt;br /&gt; }&lt;br /&gt; return icon, nil&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2318941412930068951?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2318941412930068951/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2318941412930068951' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2318941412930068951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2318941412930068951'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/gordon_09.html' title='Gordonさまがマウスカーソルにくっつく'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7348600818919605711</id><published>2010-11-08T19:26:00.003+09:00</published><updated>2010-11-08T19:35:22.021+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><title type='text'>Gordonさまと遊んでみて</title><content type='html'>とりあえず、自分で見ても滅茶苦茶なソースだと思う。&lt;br /&gt;Interfaceなんて使ってみたかっただけで、無理やり過ぎる。&lt;br /&gt;そもそも書いてある場所がどう考えてもおかしい。&lt;br /&gt;コールバック的なものは関数型を渡してやればいいんだろうけど、何故かうまくいかなかった。&lt;br /&gt;基本的な文法で間違っている可能性大。&lt;br /&gt;&lt;br /&gt;そんな適当ながらも、書いてみてのGoの感想。&lt;br /&gt;&lt;br /&gt;1. interfaceにFieldを宣言出来ないのは若干不便&lt;br /&gt;Javaで言えばpublicなFieldの値を取りたいだけなのに、関数が必要になるのは不便。&lt;br /&gt;要するにsetter/getterもインターフェースに書く必要があるわけで。&lt;br /&gt;とはいえinterfaceてのはそういうものなのかも&lt;br /&gt;&lt;br /&gt;2. ifの括弧が無いのは楽&lt;br /&gt;慣れると他の言語で括弧を書くのを忘れる。&lt;br /&gt;&lt;br /&gt;3. 型の後置は慣れると気にならない。 &lt;br /&gt;たまに間違うけど&lt;br /&gt;&lt;br /&gt;4. 出来上がるバイナリがでかい&lt;br /&gt;パソコンで動かしていると大して気にならないけど。もっと貧弱な環境だと大変かも。&lt;br /&gt;&lt;br /&gt;CにもPythonにも似ていないけど、慣れれば便利な予感。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7348600818919605711?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7348600818919605711/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7348600818919605711' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7348600818919605711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7348600818919605711'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/gordon.html' title='Gordonさまと遊んでみて'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3363980267404955988</id><published>2010-11-07T20:54:00.004+09:00</published><updated>2010-11-07T21:21:09.426+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><title type='text'>GoでGordonさまと遊ぶ</title><content type='html'>Go言語のマスコットのGordonさまは、みんなから気持ち悪いと言われていますが、じっと見ていると、かわいいところが無く無くない気がしてきました。&lt;br /&gt;&lt;br /&gt;なので、ちょっとコードが整理されていませんが、GoでGordonさまをいっぱい並べられるものを作ってみました。&lt;br /&gt;コールバックな関数はどう書けばいいんだろう。&lt;br /&gt;&lt;br /&gt;main.go&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "fmt"&lt;br /&gt; "exp/draw/x11"&lt;br /&gt; "image"&lt;br /&gt;&lt;br /&gt; "./event"&lt;br /&gt; "./gordon"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; gordon1, e := gordon.NewGordon(image.Point{X: 0, Y: 0})&lt;br /&gt; if e != nil {&lt;br /&gt;  fmt.Printf("Error %v\n", e)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; win, e := x11.NewWindow()&lt;br /&gt; if e != nil {&lt;br /&gt;  fmt.Printf("Error %v\n", e)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; eventChan := win.EventChan()&lt;br /&gt; sync := make(&lt;-chan bool)&lt;br /&gt; go event.Handle(eventChan, win, gordon1)&lt;br /&gt; &lt;-sync&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;gordon.go&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;package gordon&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "bufio"&lt;br /&gt; "image"&lt;br /&gt; "image/png"&lt;br /&gt; "os"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;type Gordon struct {&lt;br /&gt; image.Image&lt;br /&gt; Rect image.Rectangle&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func (g *Gordon) Position(x, y int) {&lt;br /&gt; r := g.Bounds()&lt;br /&gt; g.Rect = image.Rect(&lt;br /&gt;  x, y,&lt;br /&gt;  x+r.Max.X, y+r.Max.Y)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func (g *Gordon) Canon() image.Rectangle {&lt;br /&gt; return g.Rect.Canon()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func NewGordon(point image.Point) (gordon *Gordon, e os.Error) {&lt;br /&gt; gordon = new(Gordon)&lt;br /&gt; img, e := loadGordon()&lt;br /&gt; if e != nil {&lt;br /&gt;  return nil, e&lt;br /&gt; }&lt;br /&gt; gordon.Image = img&lt;br /&gt; gordon.Position(point.X, point.Y)&lt;br /&gt; return gordon, e&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func loadGordon() (image.Image, os.Error) {&lt;br /&gt; file, e := os.Open("./Gordon.png", os.O_RDONLY, 0666)&lt;br /&gt; if e != nil {&lt;br /&gt;  return nil, e&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; read := bufio.NewReader(file)&lt;br /&gt; icon, e := png.Decode(read)&lt;br /&gt; if e != nil {&lt;br /&gt;  return nil, e&lt;br /&gt; }&lt;br /&gt; return icon, nil&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;event.go&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;package event&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "exp/draw"&lt;br /&gt; "fmt"&lt;br /&gt; "image"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;type Character interface {&lt;br /&gt; image.Image&lt;br /&gt; Canon() image.Rectangle&lt;br /&gt; Position(x, y int)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func Handle(eventChan &lt;-chan interface{}, win draw.Window, char Character) {&lt;br /&gt; for {&lt;br /&gt;  event := &lt;-eventChan&lt;br /&gt;  switch e := event.(type) {&lt;br /&gt;  case draw.MouseEvent:&lt;br /&gt;   {&lt;br /&gt;    me := MouseEvent(e)&lt;br /&gt;    go me.handleMouseEvent(win.Screen(), char)&lt;br /&gt;   }&lt;br /&gt;  case draw.KeyEvent:&lt;br /&gt;   {&lt;br /&gt;    ke := KeyEvent(e)&lt;br /&gt;    go ke.handleKeyEvent(win.Screen(), char)&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  win.FlushImage()&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;type MouseEvent draw.MouseEvent&lt;br /&gt;type KeyEvent draw.KeyEvent&lt;br /&gt;&lt;br /&gt;func (me *MouseEvent) handleMouseEvent(screen draw.Image, char Character) {&lt;br /&gt; fmt.Printf("MouseEvent: Button= %d, Loc= %v : %v\n", me.Buttons, me.Loc, char)&lt;br /&gt; char.Position(me.Loc.X, me.Loc.Y)&lt;br /&gt; draw.Draw(screen, char.Canon(), char, image.ZP)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func (ke *KeyEvent) handleKeyEvent(screen draw.Image, char Character) {&lt;br /&gt; fmt.Printf("KeyEvent: Key= %d\n", ke.Key)&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行結果&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__A7XrZqdcYc/TNaX9zJYfFI/AAAAAAAAAv0/y23QWcRfBAo/s1600/HowManyGordon.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__A7XrZqdcYc/TNaX9zJYfFI/AAAAAAAAAv0/y23QWcRfBAo/s320/HowManyGordon.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5536779879855979602" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3363980267404955988?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3363980267404955988/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3363980267404955988' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3363980267404955988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3363980267404955988'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/11/gogordon.html' title='GoでGordonさまと遊ぶ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__A7XrZqdcYc/TNaX9zJYfFI/AAAAAAAAAv0/y23QWcRfBAo/s72-c/HowManyGordon.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4698994669743144547</id><published>2010-10-17T21:27:00.002+09:00</published><updated>2010-10-17T21:45:34.105+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 10.10 型破りなミーアキャット</title><content type='html'>今回は大した変更はなし。&lt;br /&gt;インストーラが変わって、アカウント設定なんかはインストール(ファイルのコピー)中に行えるようになったのが目立つ程度。&lt;br /&gt;Unityが入るネットブックの方が今回は派手な印象。&lt;br /&gt;個人的にUbuntuのアップデートは定期バックアップを兼ねているのでやったけど、正直いって、無理に上げる必要はなさそう。&lt;br /&gt;&lt;br /&gt;最近デスクトップ版は派手な変更は無いけど、次回はGnome3が入るから期待したいところ。&lt;br /&gt;その分トラブルも多そうだけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4698994669743144547?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4698994669743144547/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4698994669743144547' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4698994669743144547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4698994669743144547'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/10/ubuntu-1010.html' title='Ubuntu 10.10 型破りなミーアキャット'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4405765744915797178</id><published>2010-09-05T07:06:00.001+09:00</published><updated>2010-09-05T07:08:18.894+09:00</updated><title type='text'>最近買ったもの</title><content type='html'>ここ2ヶ月ほどの間に買ったものたち。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Kindle DX グラファイト&lt;/h3&gt;&lt;br /&gt;増え続ける本を少しでも減らすために購入。&lt;br /&gt;&lt;br /&gt;これを買った一ヶ月後に、日本語対応されたKindle3が出て若干がっかりですが、画面サイズがでかいし、そのうちファームウェアアップデートがあるはず。&lt;br /&gt;&lt;br /&gt;画面の表示は、そこそこ高級なわら半紙にきちんと印刷したというレベルで、非常に読みやすい。&lt;br /&gt;見た感じはかなり紙に近いので、読んでいて疲れるということがありません。反面、文字入力はし辛いし、日本語は入力できない。書き換え速度の限界から、カーソル移動ももっさり。&lt;br /&gt;本当に読書をメインにした端末で、速読も不可能なので、まったり読むことが大好きな人以外にはおすすめできない。&lt;br /&gt;何となく、読書端末以上の可能性は感じるのだけど、これはKindleアプリが出てくれば分かるのかも。&lt;br /&gt;&lt;br /&gt;いまのところ入っている本は、青空文庫の小説をPDF化したものとか、適当なライブラリのドキュメントとかで、まだ電子書籍は一冊も買っていなかったり。厳密にはiPhoneアプリのオライリー本から、ePubを抜いたのがいくつか入っているので、これをもって電子書籍を買ったと、言えなくもないけど。&lt;br /&gt;&lt;br /&gt;なんで買っていないかと言えば、欲しい本の電子版が無いというシンプルな理由で、まだまだ移行期なんだなあということを実感させられています。&lt;br /&gt;&lt;br /&gt;オライリーの読み物系の本で、面白そうなものがいくつかあるので、それらはそのうち買うかも。&lt;br /&gt;Oreilly Safariに日本語の本がたくさんあれば、確実にユーザ登録するのだけどね。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Sony BRAVIA KDL-40HX800&lt;/h3&gt;&lt;br /&gt;液晶テレビです。&lt;br /&gt;選んだ理由は、モーションフロープロによる240コマ再生機能。&lt;br /&gt;クアトロンも出ていたけど、色の違いが気になるような映像より、残像が気になる映像をみるケースの方がはるかに多いので。&lt;br /&gt;実際、モーションフローの補完機能は凄まじい。&lt;br /&gt;ONにしたときと、OFFにしたときでは、まったく別の映像になってしまう。特に3DCGアニメとの相性は抜群で、絶対に映画館では見られないような映像に変化してしまっている。&lt;br /&gt;コマを補完して追加するので、実際別の映像と言ってもよいのだけど、では正しい映像の再現とは何なのだろうと考えてしまう。&lt;br /&gt;映画にしろテレビにしろ撮影というプロセスを経たその時点で実際の光学的風景とは別のものが記録されているわけで、それを「再生」したときの正解とは何なのかという問題になる。しかも電波で送信される場合、なんらかの変換が加えられている。3DCGの場合は、そもそも光学的実体すら存在しないわけで、ますますわけがわからないものを見ていることになる。&lt;br /&gt;こんなメディアアートな体験が出来る面白テレビは、他に無いような気がする。&lt;br /&gt;&lt;br /&gt;画面が大きくなったので、いままで見えていなかったものが見えるようになったというのも単純に嬉しいです。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;iPhone4&lt;/h3&gt;&lt;br /&gt;電話代やら、その他いろいろ考えての変更。&lt;br /&gt;まだ使いこなせていないからか、タッチしても意図しないところが反応してしまってイライラすることが多いです。小さいキーボードを買おうか考え中。&lt;br /&gt;マルチタスクというか、複数のアプリを行ったり来たり出来るところは、非常に便利。&lt;br /&gt;ただ、PythonなりPerlなりRubyなりが一つでも動けば、ものすごく便利になるのだけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4405765744915797178?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4405765744915797178/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4405765744915797178' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4405765744915797178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4405765744915797178'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/09/blog-post.html' title='最近買ったもの'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2655231265138147100</id><published>2010-07-17T09:51:00.003+09:00</published><updated>2010-07-17T09:59:38.029+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><title type='text'>道を聞かれた ソニー歴史資料館</title><content type='html'>道聞かれラッシュ。&lt;br /&gt;&lt;br /&gt;今回は&lt;a href="http://www.sony.co.jp/SonyInfo/CorporateInfo/History/Museum/"&gt;ソニー歴史資料館&lt;/a&gt;。&lt;br /&gt;聞かれた場所が資料館から結構離れていた所だったので、簡単な道のりと坂道の上にあることしか伝えられなかった。たどり着けただろうか。&lt;br /&gt;&lt;br /&gt;なにかイベントでもあったのかと思ったけど、そういうわけではなさそう。&lt;br /&gt;仕事かな？地図を持ってないあたり、営業ではなさそうだったけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2655231265138147100?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2655231265138147100/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2655231265138147100' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2655231265138147100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2655231265138147100'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/07/blog-post_17.html' title='道を聞かれた ソニー歴史資料館'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6679145786000844739</id><published>2010-07-14T22:40:00.002+09:00</published><updated>2010-07-14T22:43:26.745+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><title type='text'>道を聞かれた 梅雨明けもうすぐ</title><content type='html'>今回も駅の場所。&lt;br /&gt;分かっている人には線路どころかホームも見えているのですが、分からない人には認識できないのだろうな。&lt;br /&gt;&lt;br /&gt;とりあえず横断歩道ですれちがうときには聞かないで欲しい。危ないので。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6679145786000844739?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6679145786000844739/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6679145786000844739' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6679145786000844739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6679145786000844739'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/07/blog-post.html' title='道を聞かれた 梅雨明けもうすぐ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-5954771762387896525</id><published>2010-06-20T23:52:00.002+09:00</published><updated>2010-06-20T23:55:22.841+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><title type='text'>道を聞かれた梅雨</title><content type='html'>うちの近所で一丁目はどっちかと聞かれた。どっちだったかなあと考えている間に「こっちだよね」と指で道を示しながら言われたので、「ええ多分」と答えてしまう。&lt;br /&gt;&lt;br /&gt;ごめんね逆方向だったよ。&lt;br /&gt;丁目じゃなくてランドマークで聞かれたならちゃんと答えられたかも&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-5954771762387896525?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/5954771762387896525/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=5954771762387896525' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5954771762387896525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5954771762387896525'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/06/blog-post.html' title='道を聞かれた梅雨'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2680541385949822836</id><published>2010-05-30T09:42:00.010+09:00</published><updated>2011-01-03T12:57:14.303+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocaml'/><title type='text'>CからOCamlを呼ぶ</title><content type='html'>今月ずっとやっていたことのまとめ。&lt;br /&gt;&lt;br /&gt;CのコードからOCamlを呼び出す方法については、既に先人がいるのだけど、bigarrayと絡めるとあまり見当たらなかったので、まとめてみる。&lt;br /&gt;OCamlのドキュメントだと、&lt;a href="http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html"&gt;Chapter 18  Interfacing C with Objective Caml&lt;/a&gt;のあたりと、&lt;a href="http://caml.inria.fr/pub/docs/manual-ocaml/manual043.html"&gt;Chapter 29  The bigarray library&lt;/a&gt;のあたり。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;基本編&lt;/h4&gt;&lt;br /&gt;CからOCamlのプログラムを呼び出す場合、大体以下の事を頭に入れておくとよいらしい。&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Cから呼び出したいOCamlの関数を&lt;code&gt;Callback.register&lt;/code&gt;に設定する&lt;/li&gt;&lt;br /&gt;&lt;li&gt;C側でOCamlの関数を呼び出す前にmain関数で&lt;code&gt;caml_startup(argv)&lt;/code&gt;を呼ぶ&lt;/li&gt;&lt;br /&gt;&lt;li&gt;caml_named_valueで&lt;code&gt;Callback.register&lt;/code&gt;に設定したOCaml関数を取り出す&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;caml_callbackN&lt;/code&gt;でOCaml関数を呼ぶ&lt;/li&gt;&lt;br /&gt;&lt;li&gt;OCamlとのやり取りにはvalue型の値が使われる&lt;/li&gt;&lt;br /&gt;&lt;li&gt;OCaml関数への引数はCAMLparamNやCAMLlocalNで宣言(?)する(型によっては不要)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cの関数でCAMLparamNを通した値を戻り値にするときは&lt;code&gt;CAMLreturn&lt;/code&gt;を使う(型によっては不要)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;ではこれらを踏まえた簡単なサンプルを作ってみる。&lt;br /&gt;&lt;br /&gt;ocaml.ml&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;let ocaml_process (a : int) (b : int) = a + b&lt;br /&gt;&lt;br /&gt;(* 1. 呼びたい関数をCallback.registerに登録する *)&lt;br /&gt;let _ = Callback.register "ocaml_process" ocaml_process&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;ただの足し算。&lt;br /&gt;&lt;br /&gt;main.c&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;caml/memory.h&amp;gt;&lt;br /&gt;#include &amp;lt;caml/callback.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;  // 2. caml_startupを呼ぶ&lt;br /&gt;  caml_startup(argv);&lt;br /&gt;  // 3. OCamlの関数を取り出す&lt;br /&gt;  value *func = caml_named_value ("ocaml_process");&lt;br /&gt;&lt;br /&gt;  // 5. OCamlとのやり取りにはvalue型を使う&lt;br /&gt;  // Val_intでOcamlのintにします。&lt;br /&gt;  value a, b, result;&lt;br /&gt;  a = Val_int(2);&lt;br /&gt;  b = Val_int(4);&lt;br /&gt;  // 4. caml_callbackNでOCaml関数を呼ぶ&lt;br /&gt;  // 今回は引数が2つなのでN=2&lt;br /&gt;  // 引数が一つの場合はcaml_callbackと書き、数字はつけない&lt;br /&gt;  result = caml_callback2 (*func, a, b);&lt;br /&gt;&lt;br /&gt;  // 5. 戻ってきたvalue型の値をCの型に戻す&lt;br /&gt;  int print_result = Int_val(result);&lt;br /&gt;&lt;br /&gt;  printf("%d\n", result);&lt;br /&gt;  printf("%d\n", print_result);&lt;br /&gt;&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;6番の7番についての記述が無いのはint型では必要ないから。必要となるのはblockedな値らしい。blockedってのが良く分かっていないが、とりあえずGCで管理されるような値という認識。&lt;br /&gt;Int_valを使わない場合もあえてprintするようにしている。&lt;br /&gt;&lt;br /&gt;これをビルドするためのMakefileはこんなの。ライブラリの位置はOSなどなどによって違うはず。&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;PROGRAM=call_ocaml&lt;br /&gt;OCAML_LIB=/usr/lib/ocaml&lt;br /&gt;OBJS = camlcode.o main.o&lt;br /&gt;&lt;br /&gt;program : $(OBJS)&lt;br /&gt; ${CC} $(OBJS) -ldl -lm -L ${OCAML_LIB} -lasmrun -o ${PROGRAM}&lt;br /&gt;&lt;br /&gt;main.o : main.c&lt;br /&gt; ${CC} -o $@ -c main.c&lt;br /&gt;&lt;br /&gt;camlcode.o : ocaml.ml&lt;br /&gt; ocamlopt -output-obj -o $@ ocaml.ml&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;さて、これを実行してみると、Int_valを使わない場合は13、使った場合は6がprintされることが分かる。&lt;br /&gt;つまりOCamlのintを右に1シフトすると、Cのintになると。&lt;br /&gt;詳しくはmlvalues.hを参照。Val_intの場合は何をやっているのかも分かったり。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;argvにアクセス出来ない場合は？&lt;/h4&gt;&lt;br /&gt;一連の流れの中で、一番厄介なのは&lt;code&gt;caml_startup(argv)&lt;/code&gt;。main関数で呼べと言われても、mainに触れない場合なんてざらにあるわけで。何らかのフレームワークなんて使う場合は特にそう。それでもargvへのインターフェースが提供されていれば解決するけど、それも無いとお手上げ。&lt;br /&gt;本当にそうなのか？というかargvへのインターフェースが無いと使えないなんて現実的じゃないだろう。と思って調べていたら、こんな&lt;a href="http://www.yl.is.s.u-tokyo.ac.jp/~furuse//caml/startup.html"&gt;ページ&lt;/a&gt;を発見。&lt;br /&gt;無ければこんな感じに作ればいいらしい。&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;&lt;br /&gt;static void&lt;br /&gt;ocaml_init ()&lt;br /&gt;{&lt;br /&gt;  char *dummy_argv[2];&lt;br /&gt;  dummy_argv[0] = 0;&lt;br /&gt;  dummy_argv[1] = NULL;&lt;br /&gt;  caml_startup (dummy_argv);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;ドキュメントにはこんなやり方書いていないのだけど、とりあえず動く。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;bigarrayでやりとり&lt;/h4&gt;&lt;br /&gt;さて、世の中でかい数字の配列を使う機会というのはままあるわけですが、OCamlの配列は4M程度までしか扱えないらしい。4Mもあれば十分な気もするけど、足りない場合もあるし、充分なのか足りないのか良く分からない場合というのもある。&lt;br /&gt;そんなときはbigarrayというものを使うそうな。これを使うと整数と浮動小数点数限定で16次元までの制限はるものの、横のサイズに制限は無しな素敵な配列が使えるらしい。&lt;br /&gt;ついでにbigarrayのメモリレイアウトはCやFortrunと互換性があるので、これら2つの言語とOCamlをくっつけるときにも便利。&lt;br /&gt;&lt;br /&gt;説明については、マニュアルのが詳しいので、Cの配列をbigarrayにするサンプルコードを示す。&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;value call_ocaml(){&lt;br /&gt;  int array[5] = {0, 1, 2, 3, 4};&lt;br /&gt;  value result;&lt;br /&gt;  CAMLparam1 (result);&lt;br /&gt;  CAMLlocal1 (barray);&lt;br /&gt;  long dims[1];&lt;br /&gt;  dims[0] = 5;&lt;br /&gt;  barray = alloc_bigarray(BIGARRAY_UINT8 | BIGARRAY_C_LAYOUT, 1, array, dims);&lt;br /&gt;  value *func = caml_named_value ("ocaml_process");&lt;br /&gt;  result = caml_callback (*func, barray);&lt;br /&gt;  CAMLreturn(result);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;code&gt;alloc_bigarray&lt;/code&gt;がCの配列からbigarrayを作る関数。第1引数で配列の要素の型と、メモリレイアウトを指定。第2引数で配列の次元、第3引数にbigarrayに変換したいCの配列、第4引数に各次元の配列サイズを配列にして渡す。&lt;br /&gt;厳密には「作る」のではなくポインタをOCamlに渡せる形にすると言った方が良いと思う。&lt;br /&gt;それとbigarrayにすると言っても、Cの世界ではvalue型として扱われる。&lt;br /&gt;OCaml関数でbigarrayを返り値にした場合も、Cで受けとるときはvalue型になる。つまりintの場合と同様に変換が必要になる。&lt;br /&gt;biggarrayの場合は&lt;code&gt;Data_bigarray_val(big_array_value)&lt;/code&gt;というようにする。&lt;br /&gt;&lt;br /&gt;簡単なサンプルコードを書いてみる。&lt;br /&gt;ocaml.ml&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;let ocaml_process barray =&lt;br /&gt;  barray.{0}&lt;-1;&lt;br /&gt;  barray;;&lt;br /&gt;&lt;br /&gt;let _ = Callback.register "ocaml_process" ocaml_process&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;第1要素を1にしているだけ。&lt;br /&gt;&lt;br /&gt;main.c&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;caml/memory.h&amp;gt;&lt;br /&gt;#include &amp;lt;caml/callback.h&amp;gt;&lt;br /&gt;#include &amp;lt;caml/bigarray.h&amp;gt;&lt;br /&gt;&lt;br /&gt;value call_ocaml(){&lt;br /&gt;  int array[5] = {0, 1, 2, 3, 4};&lt;br /&gt;  value result;&lt;br /&gt;  CAMLparam1 (result);&lt;br /&gt;  CAMLlocal1 (barray);&lt;br /&gt;  long dims[1];&lt;br /&gt;  dims[0] = 5;&lt;br /&gt;  barray = alloc_bigarray(BIGARRAY_UINT8 | BIGARRAY_C_LAYOUT, 1, array, dims);&lt;br /&gt;  value *func = caml_named_value ("ocaml_process");&lt;br /&gt;  result = caml_callback (*func, barray);&lt;br /&gt;  CAMLreturn(result);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;  caml_startup(argv);&lt;br /&gt;  int* result = (int*)Data_bigarray_val(call_ocaml());&lt;br /&gt;  printf("%d\n", result[0]);&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;5要素の一次元配列を渡す。&lt;br /&gt;&lt;br /&gt;Makefile&lt;br /&gt;&lt;pre class="code"&gt;&lt;code&gt;PROGRAM=call_ocaml&lt;br /&gt;OCAML_LIB=/usr/lib/ocaml&lt;br /&gt;OBJS = camlcode.o main.o&lt;br /&gt;&lt;br /&gt;program : $(OBJS)&lt;br /&gt; ${CC} $(OBJS) -ldl -lm -L ${OCAML_LIB} -lasmrun -lbigarray -o ${PROGRAM}&lt;br /&gt;&lt;br /&gt;main.o : main.c&lt;br /&gt; ${CC} -o $@ -c main.c&lt;br /&gt;&lt;br /&gt;camlcode.o : ocaml.ml&lt;br /&gt; ocamlopt -output-obj bigarray.cmxa -o $@ ocaml.ml&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ポインタを渡している事を確認するのであれば、mainで配列を作ってOCamlからの返り値を投げ捨てた上で、元の配列を覗いてみるとよい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2680541385949822836?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2680541385949822836/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2680541385949822836' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2680541385949822836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2680541385949822836'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/05/cocaml.html' title='CからOCamlを呼ぶ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8061729371461847237</id><published>2010-05-09T10:31:00.002+09:00</published><updated>2010-05-09T10:38:33.343+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 10.04 入れた</title><content type='html'>10.04はLucid Lynx(透き通った山猫)。&lt;br /&gt;&lt;br /&gt;特に問題はなくインストールできた。5/1に入れて一週間ほどたつけど、特に問題無し。&lt;br /&gt;閉じるボタンの位置が変わったのはちょっと驚いたけど、普段はAlt + F4で閉じているので、そのうち気にならなくなるはず。&lt;br /&gt;&lt;br /&gt;あえて不満を言うと、Fx3.5上のTwitterのWebインターフェースでの入力がやたら遅いという事と、デスクトップの「名前順に整理する」でアイコンがどこかにすっ飛んでいくことぐらい。&lt;br /&gt;もしかしたらコアラの時からそうだったかもしれないけど、気になるほどではないかな。&lt;br /&gt;&lt;br /&gt;ところで、透き通った山猫ってのはチェシャ猫みたいなものだろうか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8061729371461847237?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8061729371461847237/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8061729371461847237' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8061729371461847237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8061729371461847237'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/05/ubuntu-1004.html' title='Ubuntu 10.04 入れた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6786080336101039989</id><published>2010-04-06T23:18:00.001+09:00</published><updated>2010-04-06T23:21:21.396+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>子供が出来て考えたこと</title><content type='html'>出来たといっても、まだ生まれていないので、正直まだ実感が湧かない&lt;br /&gt;エコー写真で1cmも満たない黒い影(既に心臓は動いているらしい)を見ても良く分からない。&lt;br /&gt;そんな状態で思ったことをいくつか。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;母子手帳。父はどこに？&lt;/h4&gt;&lt;br /&gt;妊娠すると母子手帳ってのがもらえます。正確には母子健康手帳です。市町村(区)から交付されます。&lt;br /&gt;とりあえずツッコミどころとして「母子」なんですよね。「父」はどこに行ったんでしょう？ものすごい疎外感です。&lt;br /&gt;これ、なんで「母子健康手帳」なのかっていうと、法律だからなんですね。&lt;a href="http://law.e-gov.go.jp/htmldata/S40/S40HO141.html"&gt;母子保健法&lt;/a&gt;の第十六条にばっちり「母子健康手帳」と書いてあります。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;（母子健康手帳）&lt;br /&gt;第十六条 　市町村は、妊娠の届出をした者に対して、母子健康手帳を交付しなければならない。&lt;br /&gt;２ 　妊産婦は、医師、歯科医師、助産師又は保健師について、健康診査又は保健指導を受けたときは、その都度、母子健康手帳に必要な事項の記載を受けなければならない。乳児又は幼児の健康診査又は保健指導を受けた当該乳児又は幼児の保護者についても、同様とする。&lt;br /&gt;３ 　母子健康手帳の様式は、厚生労働省令で定める。&lt;br /&gt;４ 　前項の厚生労働省令は、健康診査等指針と調和が保たれたものでなければならない。 &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;ちょっとひどいよね。一応、自治体によっては名称を親子手帳に変えているところもあるみたいですが(&lt;a href="http://www.city.toyota.aichi.jp/division/ak00/ak02/1194155_7172.html"&gt;豊田市の事例&lt;/a&gt;、&lt;a href="http://www.city.okayama.jp/category/category_00000055.html"&gt;岡山市の事例&lt;/a&gt;ぐぐって見つけた順)。&lt;br /&gt;それと母子手帳とは別に父子手帳を用意している自治体もあります。例えば東京都は&lt;a href="http://www.fukushihoken.metro.tokyo.jp/kodomo/kosodate/ouen_navi/f_handbook/index.html"&gt;父親ハンドブック&lt;/a&gt;というものを配布しています(紙は180円で売っているそうな)。&lt;br /&gt;とはいえ、法律でそのような名称を規程しているのはどうなんだろう。&lt;br /&gt;まさか親子手帳ってのは男女共同参画(内閣府)でやるべきで、育児(厚生労働省)ではやるべきでない、みたいな典型的縦割行政ってことはないよね。&lt;br /&gt;&lt;br /&gt;まあ、妊娠出産する上で、父親には何のリスクも無いというのも事実なわけですが。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;産むより育てる(育つ)方が大変らしい&lt;/h4&gt;&lt;br /&gt;当たり前かもしれませんが、母子手帳で出産に関する部分って前の方のほんのちょっとです。あとは全部生まれてからのこと。&lt;br /&gt;時間的にも生まれてからの方がはるかに長い(少なくともそれを期待する)わけですしね。&lt;br /&gt;ただ産むのが楽かというとそうでもない。母体への負担はもちろんだけど、分娩可能な病院は妊娠確認後にすぐ予約しないと駄目らしい。今、Wikipediaの出産難民の項を見たけど、『「分娩予約が予定日の6ヶ月前」などという事態がみられ』と書いてある。6ヶ月前ならまだマシな方です。誰か書き換えておいて下さい。&lt;br /&gt;ともかく、産科の医師不足ってのは深刻らしい。&lt;br /&gt;とりあえずうちは予約できたので一安心しておく。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;妊娠を伝える時期&lt;/h4&gt;&lt;br /&gt;当然ながら、妊娠した事を親戚知人に伝えねばなら無いわけで(内緒にしないといけない人もいるかもしれませんが)。うちは割とすぐ話しましたが。世の中には安定期になるまで話さないという人もいるらしい。&lt;br /&gt;回りのサポートを得るには早い方がいいとは思うものの、初期流産の率は10～15%と結構高いので、ある程度待つというのも分かる気がする。&lt;br /&gt;初期流産というのは防ぎようがない確率の問題らしいし。といっても妊婦はショックが大きいらしいし、場合によっては身体が危険になる場合もあるらしい。例によって父親には少なくとも身体的リスクは無いのだけど。精神的にはどうだろう。&lt;br /&gt;なんだかんだで産むのも大変なような。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;妊婦の様子&lt;/h4&gt;&lt;br /&gt;どうやら、ものすごく眠くなるらしい(寝つわり)。そして口に何か入れていないと気持ち悪くなるそうな(食べつわり)。なので少しの量を分散させて食べている。そうなのだが、明らかに量が増えているような気がしないでもない。それはともかく食べ過ぎは良くないらしい。赤ちゃんはまだ2cmぐらいなので、栄養が行っても処理し切れないのだろうな。赤ちゃんを育てるだけでなく母体も中をガードするために壁を作らなければならないだろうから、少しぐらいはいいのだろうか。食べられなくなるつわりは、もう少したったらなるみたいだし、そうなったら量も取れなくなるだろうし。&lt;br /&gt;一応、ノートにその日何を食べたか記録しているけど、続くかしら。&lt;br /&gt;嫁様は偏頭痛持ちなので、妊娠後に発生するかと思ったけど、どうやらなっていないらしい。人によっては症状がひどくなるらしいので、これはよかった。今気づいたけど、カフェインの摂取を減らしているのに頭痛になってないもよう。&lt;br /&gt;コーヒーが切れると頭痛が起きる身としては羨ましい。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;もうすこしエコー画像が人型になれば実感がわくようになるかなあ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6786080336101039989?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6786080336101039989/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6786080336101039989' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6786080336101039989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6786080336101039989'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/04/blog-post.html' title='子供が出来て考えたこと'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6790585223602332918</id><published>2010-03-03T23:10:00.000+09:00</published><updated>2010-03-03T23:11:22.792+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><title type='text'>道を聞かれた</title><content type='html'>おばあさんに駅までの道を聞かれる。&lt;br /&gt;駅は見えている場所なのだが、道が分からなかったらしい。&lt;br /&gt;世の中の駅は難しい場所にあるものなのか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6790585223602332918?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6790585223602332918/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6790585223602332918' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6790585223602332918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6790585223602332918'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/03/blog-post.html' title='道を聞かれた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-5927024343692506403</id><published>2010-02-13T14:22:00.000+09:00</published><updated>2010-02-13T14:24:43.656+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><title type='text'>道を聞かれた2010年初</title><content type='html'>道をあるいていたら、おばちゃんから公共施設の場所を聞かれた。&lt;br /&gt;知っている場所だったので普通に教えた。&lt;br /&gt;どうやら私の前の人の説明が適当過ぎだったらしい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-5927024343692506403?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/5927024343692506403/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=5927024343692506403' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5927024343692506403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5927024343692506403'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/02/2010.html' title='道を聞かれた2010年初'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-5878347442254578214</id><published>2010-02-02T21:04:00.002+09:00</published><updated>2010-02-02T21:26:16.311+09:00</updated><title type='text'>gstreamerでWebCamを使うときにひっかかった罠</title><content type='html'>gstreamerという、ライブラリ(ライブラリ群?)があります。&lt;br /&gt;Linuxな人には馴染み深いですね。マルチメディア処理では定番のライブラリです。&lt;br /&gt;このライブラリは、様々なマルチメディア要素をパイプラインを通すように処理出来ます。&lt;br /&gt;詳しいことは、ちゃんとしたチュートリアルを見てください。&lt;br /&gt;&lt;br /&gt;さて、それらのチュートリアルに、もしかしらWebCamから映像を取り込む内容が含まれているかもしれません。ここに罠が潜んでいます。&lt;br /&gt;WebCamソースを表すgstreamerの識別子は「v4l2src」です。「412」ではなく「4l2」です。&lt;br /&gt;「Video for Linux 2 のソース」 = 「v4l2src」=「ぶい よん える に えす あーる しー」です。&lt;br /&gt;&lt;br /&gt;世界的に引っかかる人が多く、おそらくこれからもひっかかる人が多数出るはずなので、メモを残しておきます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-5878347442254578214?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/5878347442254578214/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=5878347442254578214' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5878347442254578214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5878347442254578214'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/02/gstreamerwebcam.html' title='gstreamerでWebCamを使うときにひっかかった罠'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7510222837521938132</id><published>2010-01-21T21:30:00.000+09:00</published><updated>2010-01-21T21:29:42.422+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>ClutterのチュートリアルをPyClutterに翻訳 その2</title><content type='html'>ClutterのチュートリアルをPyClutterに翻訳するその2&lt;br /&gt;&lt;br /&gt;Scoreを使って複数のタイムラインを流すところの前半まで。後半のところはPyClutterの問題なのか、うまく出来ないので、原因を調査中。&lt;br /&gt;追記：原因解明。何が問題だったのかは後で書く。&lt;br /&gt;&lt;br /&gt;複数タイムラインの次は画像の読み込みのチュートリアルだけど、画像を用意するのが面倒なのでやらない。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;大きさの変更やオブジェクトの選択&lt;/h4&gt;&lt;br /&gt;まわして、かくだい&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;import mathhacks&lt;br /&gt;&lt;br /&gt;global rotation&lt;br /&gt;global scale&lt;br /&gt;rotation = 0&lt;br /&gt;scale = 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global rotation&lt;br /&gt;    global scale&lt;br /&gt;&lt;br /&gt;    rotation += 0.3&lt;br /&gt;    rect_list[0].set_rotation(clutter.Z_AXIS, rotation * 5, 0, 0, 0)&lt;br /&gt;    rect_list[1].set_rotation(clutter.Z_AXIS, rotation * 4, 0, 0, 0)&lt;br /&gt;    rect_list[2].set_rotation(clutter.Z_AXIS, rotation * 3, 0, 0, 0)&lt;br /&gt;    rect_list[3].set_rotation(clutter.Z_AXIS, rotation * 2, 0, 0, 0)&lt;br /&gt;    rect_list[4].set_rotation(clutter.Z_AXIS, rotation * 1, 0, 0, 0)&lt;br /&gt;    rect_list[5].set_rotation(clutter.Z_AXIS, rotation * 0.5, 0, 0, 0)&lt;br /&gt;&lt;br /&gt;    scale += 0.01&lt;br /&gt;    if scale &gt; 1.0:&lt;br /&gt;        scale = 0&lt;br /&gt;&lt;br /&gt;    scale_amount = mathhacks.smooth_step2(1.0, 2.0, scale)&lt;br /&gt;    for rect in rect_list:&lt;br /&gt;        rect.set_scale(scale_amount, scale_amount)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;    rect.set_anchor_point(128, 64)&lt;br /&gt;&lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;red = clutter.Color(255, 0, 0, 128)&lt;br /&gt;green = clutter.Color(0, 255, 0, 128)&lt;br /&gt;blue = clutter.Color(0, 0, 255, 128)&lt;br /&gt;yellow = clutter.Color(255, 255, 0, 128)&lt;br /&gt;cyan = clutter.Color(0, 255, 255, 128)&lt;br /&gt;purple = clutter.Color(255, 0, 255, 128)&lt;br /&gt;&lt;br /&gt;rect_list = []&lt;br /&gt;rect_list.append(create_rect(red))&lt;br /&gt;rect_list.append(create_rect(green))&lt;br /&gt;rect_list.append(create_rect(blue))&lt;br /&gt;rect_list.append(create_rect(yellow))&lt;br /&gt;rect_list.append(create_rect(cyan))&lt;br /&gt;rect_list.append(create_rect(purple))&lt;br /&gt;&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;stage.show()&lt;br /&gt;&lt;br /&gt;for r in rect_list:&lt;br /&gt;    stage.add(r)&lt;br /&gt;&lt;br /&gt;timeline = clutter.Timeline(60)&lt;br /&gt;timeline.connect('new-frame', on_timeline_new_frame, rect_list)&lt;br /&gt;timeline.set_loop(True)&lt;br /&gt;timeline.start()&lt;br /&gt;&lt;br /&gt;clutter.main()&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;まわして、かくだいして、おしたらきえる&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;import mathhacks&lt;br /&gt;&lt;br /&gt;global rotation&lt;br /&gt;global scale&lt;br /&gt;rotation = 0&lt;br /&gt;scale = 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_rotation_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global rotation&lt;br /&gt;&lt;br /&gt;    rotation += 0.3&lt;br /&gt;    rect_list[0].set_rotation(clutter.Z_AXIS, rotation * 5, 0, 0, 0)&lt;br /&gt;    rect_list[1].set_rotation(clutter.Z_AXIS, rotation * 4, 0, 0, 0)&lt;br /&gt;    rect_list[2].set_rotation(clutter.Z_AXIS, rotation * 3, 0, 0, 0)&lt;br /&gt;    rect_list[3].set_rotation(clutter.Z_AXIS, rotation * 2, 0, 0, 0)&lt;br /&gt;    rect_list[4].set_rotation(clutter.Z_AXIS, rotation * 1, 0, 0, 0)&lt;br /&gt;    rect_list[5].set_rotation(clutter.Z_AXIS, rotation * 0.5, 0, 0, 0)&lt;br /&gt;&lt;br /&gt;def on_timeline_scale_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global scale&lt;br /&gt;    scale += 0.01&lt;br /&gt;    if scale &gt; 1.0:&lt;br /&gt;        scale = 0&lt;br /&gt;&lt;br /&gt;    scale_amount = mathhacks.smooth_step2(1.0, 2.0, scale)&lt;br /&gt;    for rect in rect_list:&lt;br /&gt;        rect.set_scale(scale_amount, scale_amount)&lt;br /&gt;&lt;br /&gt;def on_stage_button_press(stage, event, *arg):&lt;br /&gt;    x = 0&lt;br /&gt;    y = 0&lt;br /&gt;    x, y = event.x, event.y&lt;br /&gt;    clicked = stage.get_actor_at_pos(clutter.PICK_ALL, x, y)&lt;br /&gt;    if clicked == stage:&lt;br /&gt;        return&lt;br /&gt;    clicked.hide()&lt;br /&gt;&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;    rect.set_anchor_point(128, 64)&lt;br /&gt;&lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;red = clutter.Color(255, 0, 0, 128)&lt;br /&gt;green = clutter.Color(0, 255, 0, 128)&lt;br /&gt;blue = clutter.Color(0, 0, 255, 128)&lt;br /&gt;yellow = clutter.Color(255, 255, 0, 128)&lt;br /&gt;cyan = clutter.Color(0, 255, 255, 128)&lt;br /&gt;purple = clutter.Color(255, 0, 255, 128)&lt;br /&gt;&lt;br /&gt;rect_list = []&lt;br /&gt;rect_list.append(create_rect(red))&lt;br /&gt;rect_list.append(create_rect(green))&lt;br /&gt;rect_list.append(create_rect(blue))&lt;br /&gt;rect_list.append(create_rect(yellow))&lt;br /&gt;rect_list.append(create_rect(cyan))&lt;br /&gt;rect_list.append(create_rect(purple))&lt;br /&gt;&lt;br /&gt;stage.connect("button-press-event", on_stage_button_press)&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;stage.show()&lt;br /&gt;&lt;br /&gt;for r in rect_list:&lt;br /&gt;    stage.add(r)&lt;br /&gt;&lt;br /&gt;timeline = clutter.Timeline(60)&lt;br /&gt;timeline.connect('new-frame', on_timeline_new_frame, rect_list)&lt;br /&gt;timeline.set_loop(True)&lt;br /&gt;timeline.start()&lt;br /&gt;&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;スコアを記録する&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;import mathhacks&lt;br /&gt;&lt;br /&gt;global rotation&lt;br /&gt;global scale&lt;br /&gt;rotation = 0&lt;br /&gt;scale = 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_rotation_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global rotation&lt;br /&gt;&lt;br /&gt;    rotation += 0.3&lt;br /&gt;    rect_list[0].set_rotation(clutter.Z_AXIS, rotation * 5, 0, 0, 0)&lt;br /&gt;    rect_list[1].set_rotation(clutter.Z_AXIS, rotation * 4, 0, 0, 0)&lt;br /&gt;    rect_list[2].set_rotation(clutter.Z_AXIS, rotation * 3, 0, 0, 0)&lt;br /&gt;    rect_list[3].set_rotation(clutter.Z_AXIS, rotation * 2, 0, 0, 0)&lt;br /&gt;    rect_list[4].set_rotation(clutter.Z_AXIS, rotation * 1, 0, 0, 0)&lt;br /&gt;    rect_list[5].set_rotation(clutter.Z_AXIS, rotation * 0.5, 0, 0, 0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_scale_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global scale&lt;br /&gt;    scale += 0.01&lt;br /&gt;    if scale &gt; 1.0:&lt;br /&gt;        scale = 0&lt;br /&gt;&lt;br /&gt;    scale_amount = mathhacks.smooth_step2(1.0, 2.0, scale)&lt;br /&gt;    for rect in rect_list:&lt;br /&gt;        rect.set_scale(scale_amount, scale_amount)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_stage_button_press(stage, event, *arg):&lt;br /&gt;    x = 0&lt;br /&gt;    y = 0&lt;br /&gt;    (x, y) = (event.x, event.y)&lt;br /&gt;    clicked = stage.get_actor_at_pos(clutter.PICK_ALL, x, y)&lt;br /&gt;    if clicked == stage:&lt;br /&gt;        return&lt;br /&gt;    clicked.hide()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;    rect.set_anchor_point(128, 64)&lt;br /&gt;&lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;red = clutter.Color(255, 0, 0, 128)&lt;br /&gt;green = clutter.Color(0, 255, 0, 128)&lt;br /&gt;blue = clutter.Color(0, 0, 255, 128)&lt;br /&gt;yellow = clutter.Color(255, 255, 0, 128)&lt;br /&gt;cyan = clutter.Color(0, 255, 255, 128)&lt;br /&gt;purple = clutter.Color(255, 0, 255, 128)&lt;br /&gt;&lt;br /&gt;rect_list = []&lt;br /&gt;rect_list.append(create_rect(red))&lt;br /&gt;rect_list.append(create_rect(green))&lt;br /&gt;rect_list.append(create_rect(blue))&lt;br /&gt;rect_list.append(create_rect(yellow))&lt;br /&gt;rect_list.append(create_rect(cyan))&lt;br /&gt;rect_list.append(create_rect(purple))&lt;br /&gt;&lt;br /&gt;stage.connect('button-press-event', on_stage_button_press)&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;&lt;br /&gt;for r in rect_list:&lt;br /&gt;    stage.add(r)&lt;br /&gt;&lt;br /&gt;score = clutter.Score()&lt;br /&gt;score.set_loop(True)&lt;br /&gt;&lt;br /&gt;timeline_rotation = clutter.Timeline(500)&lt;br /&gt;timeline_rotation.connect('new-frame', on_timeline_rotation_new_frame,&lt;br /&gt;                          rect_list)&lt;br /&gt;score.append(timeline_rotation)&lt;br /&gt;&lt;br /&gt;timeline_scale = clutter.Timeline(500)&lt;br /&gt;timeline_scale.connect('new-frame', on_timeline_scale_new_frame,&lt;br /&gt;                       rect_list)&lt;br /&gt;score.append(timeline_scale)&lt;br /&gt;score.start()&lt;br /&gt;&lt;br /&gt;stage.show()&lt;br /&gt;clutter.main()&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;2つのTimelineを接続する&lt;/h4&gt;&lt;br /&gt;pyclutterのREADMEを読むと書いてあるが、Score#appendの引数の順番は、CのAPIと違っている。昨日はこれに気づかなかった。ちゃんとREADMEは読めという話ですね。&lt;br /&gt;これはよりPythonicな書き方をするためらしい。こういうのは今後もあると思われ。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;import mathhacks&lt;br /&gt;&lt;br /&gt;# 回転情報&lt;br /&gt;global rotation&lt;br /&gt;global scale&lt;br /&gt;rotation = 0&lt;br /&gt;scale = 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_rotation_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global rotation&lt;br /&gt;&lt;br /&gt;    rotation += 0.3&lt;br /&gt;    rect_list[0].set_rotation(clutter.Z_AXIS, rotation * 5, 0, 0, 0)&lt;br /&gt;    rect_list[1].set_rotation(clutter.Z_AXIS, rotation * 4, 0, 0, 0)&lt;br /&gt;    rect_list[2].set_rotation(clutter.Z_AXIS, rotation * 3, 0, 0, 0)&lt;br /&gt;    rect_list[3].set_rotation(clutter.Z_AXIS, rotation * 2, 0, 0, 0)&lt;br /&gt;    rect_list[4].set_rotation(clutter.Z_AXIS, rotation * 1, 0, 0, 0)&lt;br /&gt;    rect_list[5].set_rotation(clutter.Z_AXIS, rotation * 0.5, 0, 0, 0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_scale_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global scale&lt;br /&gt;    scale += 0.01&lt;br /&gt;    if scale &gt; 1.0:&lt;br /&gt;        scale = 0&lt;br /&gt;&lt;br /&gt;    scale_amount = mathhacks.smooth_step2(1.0, 2.0, scale)&lt;br /&gt;    for rect in rect_list:&lt;br /&gt;        rect.set_scale(scale_amount, scale_amount)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_stage_button_press(stage, event, *arg):&lt;br /&gt;    x = 0&lt;br /&gt;    y = 0&lt;br /&gt;    (x, y) = (event.x, event.y)&lt;br /&gt;    clicked = stage.get_actor_at_pos(clutter.PICK_ALL, x, y)&lt;br /&gt;    if clicked == stage:&lt;br /&gt;        return&lt;br /&gt;    clicked.hide()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;    rect.set_anchor_point(128, 64)&lt;br /&gt;&lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;red = clutter.Color(255, 0, 0, 128)&lt;br /&gt;green = clutter.Color(0, 255, 0, 128)&lt;br /&gt;blue = clutter.Color(0, 0, 255, 128)&lt;br /&gt;yellow = clutter.Color(255, 255, 0, 128)&lt;br /&gt;cyan = clutter.Color(0, 255, 255, 128)&lt;br /&gt;purple = clutter.Color(255, 0, 255, 128)&lt;br /&gt;&lt;br /&gt;rect_list = []&lt;br /&gt;rect_list.append(create_rect(red))&lt;br /&gt;rect_list.append(create_rect(green))&lt;br /&gt;rect_list.append(create_rect(blue))&lt;br /&gt;rect_list.append(create_rect(yellow))&lt;br /&gt;rect_list.append(create_rect(cyan))&lt;br /&gt;rect_list.append(create_rect(purple))&lt;br /&gt;&lt;br /&gt;stage.connect('button-press-event', on_stage_button_press)&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;&lt;br /&gt;for r in rect_list:&lt;br /&gt;    stage.add(r)&lt;br /&gt;&lt;br /&gt;score = clutter.Score()&lt;br /&gt;score.set_loop(True)&lt;br /&gt;&lt;br /&gt;timeline_rotation = clutter.Timeline(500)&lt;br /&gt;timeline_rotation.connect('new-frame', on_timeline_rotation_new_frame,&lt;br /&gt;                          rect_list)&lt;br /&gt;score.append(timeline_rotation)&lt;br /&gt;&lt;br /&gt;timeline_scale = clutter.Timeline(500)&lt;br /&gt;timeline_scale.connect('new-frame', on_timeline_scale_new_frame,&lt;br /&gt;                       rect_list)&lt;br /&gt;score.append(timeline_scale, timeline_rotation)&lt;br /&gt;score.start()&lt;br /&gt;&lt;br /&gt;stage.show()&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7510222837521938132?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7510222837521938132/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7510222837521938132' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7510222837521938132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7510222837521938132'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/01/clutterpyclutter-2.html' title='ClutterのチュートリアルをPyClutterに翻訳 その2'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6280633914443581214</id><published>2010-01-19T22:51:00.004+09:00</published><updated>2010-01-20T20:50:38.935+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>ClutterのチュートリアルをPyClutterに翻訳 その1</title><content type='html'>Mikeforce::HomePageのClutterチュートリアルの和訳をPyClutterでやってみる。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;覚えておいてほしいこととして、あくまでのこの記事は Clutter のドキュメントで今現在不足している箇所を補うための「臨時措置」みたいなものだということです。私たちは、もっと広い視野でみた Python を中心とする Clutter のチュートリアルを作成中ですが、それを完成するには2,3ヶ月必要であるとみています。その間は、ここで紹介するチュートリアルで我慢していただき、 Clutter を使ったプログラミングを楽しんで欲しいと考えています。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;と書いてあるので、そのうち本気措置が取られる事を期待しつつ、とりあえず&lt;a href="http://mikeforce.net/blog/archives/2009/12/#a000597"&gt;前半戦&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;初めの一歩&lt;/h4&gt;&lt;br /&gt;黒い枠が出来るだけ。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;import clutter&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(color)&lt;br /&gt;stage.show()&lt;br /&gt;&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;四角を追加&lt;br /&gt;&lt;pre&gt;&lt;code&gt;import clutter&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;actor_color = clutter.Color(0, 255, 0, 128)&lt;br /&gt;rect = clutter.Rectangle(actor_color)&lt;br /&gt;rect.set_size(100, 100)&lt;br /&gt;rect.set_position(100, 100)&lt;br /&gt;&lt;br /&gt;stage.add(rect)&lt;br /&gt;stage.show()&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;必要に応じて長方形を描画する&lt;/h4&gt;&lt;br /&gt;元ネタでは、長方形の描画とstageへの登録を同じ関数内でやっているのだけど、個人的にそれが嫌なので、四角を作るだけにした。&lt;br /&gt;あと、PyClutterの場合、メインのウィンドウを閉じてもプロセスが生き続けてしまうので、それを避けるために、stageのhideシグナルに終了処理をくっつけた。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;import clutter&lt;br /&gt;&lt;br /&gt;"""ウィンドウを閉じたときに終了するためのclosure"""&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;"""関数内でaddするのが嫌だったのでrectを作るだけ"&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;    &lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;actor_color = clutter.Color(0, 255, 0, 128)&lt;br /&gt;rect = create_rect(actor_color)&lt;br /&gt;stage.add(rect)&lt;br /&gt;# 終了関数を設定&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;stage.show()&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;アニメーション一歩手前&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;&lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;red = clutter.Color(255, 0, 0, 128)&lt;br /&gt;green = clutter.Color(0, 255, 0, 128)&lt;br /&gt;blue = clutter.Color(0, 0, 255, 128)&lt;br /&gt;yellow = clutter.Color(255, 255, 0, 128)&lt;br /&gt;cyan = clutter.Color(0, 255, 255, 128)&lt;br /&gt;purple = clutter.Color(255, 0, 255, 128)&lt;br /&gt;&lt;br /&gt;rect1 = create_rect(red)&lt;br /&gt;rect2 = create_rect(green)&lt;br /&gt;rect3 = create_rect(blue)&lt;br /&gt;rect4 = create_rect(yellow)&lt;br /&gt;rect5 = create_rect(cyan)&lt;br /&gt;rect6 = create_rect(purple)&lt;br /&gt;&lt;br /&gt;stage.add(rect1)&lt;br /&gt;stage.add(rect2)&lt;br /&gt;stage.add(rect3)&lt;br /&gt;stage.add(rect4)&lt;br /&gt;stage.add(rect5)&lt;br /&gt;stage.add(rect6)&lt;br /&gt;&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;stage.show()&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;アニメーション&lt;/h4&gt;&lt;br /&gt;処理をシンプルにするために、四角形をリストに入れて運ぶようにしている。&lt;br /&gt;&lt;code&gt;on_timeline_new_frame&lt;/code&gt;の中がかっこ悪いのが気になる。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;&lt;br /&gt;# 回転情報&lt;br /&gt;global rotation&lt;br /&gt;rotation = 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global rotation&lt;br /&gt;    rotation += 0.3&lt;br /&gt;    rect_list[0].set_rotation(clutter.Z_AXIS, rotation * 5, 0, 0, 0)&lt;br /&gt;    rect_list[1].set_rotation(clutter.Z_AXIS, rotation * 4, 0, 0, 0)&lt;br /&gt;    rect_list[2].set_rotation(clutter.Z_AXIS, rotation * 3, 0, 0, 0)&lt;br /&gt;    rect_list[3].set_rotation(clutter.Z_AXIS, rotation * 2, 0, 0, 0)&lt;br /&gt;    rect_list[4].set_rotation(clutter.Z_AXIS, rotation * 1, 0, 0, 0)&lt;br /&gt;    rect_list[5].set_rotation(clutter.Z_AXIS, rotation * 0.5, 0, 0, 0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;&lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;red = clutter.Color(255, 0, 0, 128)&lt;br /&gt;green = clutter.Color(0, 255, 0, 128)&lt;br /&gt;blue = clutter.Color(0, 0, 255, 128)&lt;br /&gt;yellow = clutter.Color(255, 255, 0, 128)&lt;br /&gt;cyan = clutter.Color(0, 255, 255, 128)&lt;br /&gt;purple = clutter.Color(255, 0, 255, 128)&lt;br /&gt;&lt;br /&gt;rect_list = []&lt;br /&gt;rect_list.append(create_rect(red))&lt;br /&gt;rect_list.append(create_rect(green))&lt;br /&gt;rect_list.append(create_rect(blue))&lt;br /&gt;rect_list.append(create_rect(yellow))&lt;br /&gt;rect_list.append(create_rect(cyan))&lt;br /&gt;rect_list.append(create_rect(purple))&lt;br /&gt;&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;stage.show()&lt;br /&gt;&lt;br /&gt;for r in rect_list:&lt;br /&gt;    stage.add(r)&lt;br /&gt;&lt;br /&gt;timeline = clutter.Timeline(60)&lt;br /&gt;timeline.connect('new-frame', on_timeline_new_frame, rect_list)&lt;br /&gt;timeline.set_loop(True)&lt;br /&gt;timeline.start()&lt;br /&gt;&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;アニメーション アンカーポイントを変更&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;&lt;br /&gt;# 回転情報&lt;br /&gt;global rotation&lt;br /&gt;rotation = 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def on_timeline_new_frame(timeline, frame_num, rect_list):&lt;br /&gt;    global rotation&lt;br /&gt;    rotation += 0.3&lt;br /&gt;    rect_list[0].set_rotation(clutter.Z_AXIS, rotation * 5, 0, 0, 0)&lt;br /&gt;    rect_list[1].set_rotation(clutter.Z_AXIS, rotation * 4, 0, 0, 0)&lt;br /&gt;    rect_list[2].set_rotation(clutter.Z_AXIS, rotation * 3, 0, 0, 0)&lt;br /&gt;    rect_list[3].set_rotation(clutter.Z_AXIS, rotation * 2, 0, 0, 0)&lt;br /&gt;    rect_list[4].set_rotation(clutter.Z_AXIS, rotation * 1, 0, 0, 0)&lt;br /&gt;    rect_list[5].set_rotation(clutter.Z_AXIS, rotation * 0.5, 0, 0, 0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def quit(actor, *args):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_rect(color):&lt;br /&gt;    rect = clutter.Rectangle(color)&lt;br /&gt;    rect.set_size(256, 128)&lt;br /&gt;    rect.set_position(128, 128)&lt;br /&gt;    rect.set_anchor_point(128, 64)&lt;br /&gt;&lt;br /&gt;    return rect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clutter.init()&lt;br /&gt;stage_color = clutter.Color(0, 0, 0, 255)&lt;br /&gt;stage = clutter.Stage()&lt;br /&gt;stage.set_size(512, 512)&lt;br /&gt;stage.set_color(stage_color)&lt;br /&gt;&lt;br /&gt;red = clutter.Color(255, 0, 0, 128)&lt;br /&gt;green = clutter.Color(0, 255, 0, 128)&lt;br /&gt;blue = clutter.Color(0, 0, 255, 128)&lt;br /&gt;yellow = clutter.Color(255, 255, 0, 128)&lt;br /&gt;cyan = clutter.Color(0, 255, 255, 128)&lt;br /&gt;purple = clutter.Color(255, 0, 255, 128)&lt;br /&gt;&lt;br /&gt;rect_list = []&lt;br /&gt;rect_list.append(create_rect(red))&lt;br /&gt;rect_list.append(create_rect(green))&lt;br /&gt;rect_list.append(create_rect(blue))&lt;br /&gt;rect_list.append(create_rect(yellow))&lt;br /&gt;rect_list.append(create_rect(cyan))&lt;br /&gt;rect_list.append(create_rect(purple))&lt;br /&gt;&lt;br /&gt;stage.connect('hide', quit)&lt;br /&gt;stage.show()&lt;br /&gt;&lt;br /&gt;for r in rect_list:&lt;br /&gt;    stage.add(r)&lt;br /&gt;&lt;br /&gt;timeline = clutter.Timeline(60)&lt;br /&gt;timeline.connect('new-frame', on_timeline_new_frame, rect_list)&lt;br /&gt;timeline.set_loop(True)&lt;br /&gt;timeline.start()&lt;br /&gt;&lt;br /&gt;clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;続きはまた今度。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6280633914443581214?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6280633914443581214/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6280633914443581214' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6280633914443581214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6280633914443581214'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/01/clutterpyclutter.html' title='ClutterのチュートリアルをPyClutterに翻訳 その1'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7837666678641409007</id><published>2010-01-17T22:00:00.002+09:00</published><updated>2010-01-17T22:15:49.615+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>PyClutter 33行のHello, World的なコード</title><content type='html'>PyClutterは&lt;a href="http://www.clutter-project.org/"&gt;Clutter&lt;/a&gt;のPythonバインド。&lt;br /&gt;基本的な使い方はベースとなっているGtkとあまり変わらない。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;import clutter&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;    stage = clutter.Stage()&lt;br /&gt;    stage.set_color(clutter.Color(0xaa, 0xbb, 0xcc, 0xff))&lt;br /&gt;    stage.set_size(200, 200)&lt;br /&gt;&lt;br /&gt;    label = clutter.Text()&lt;br /&gt;    label.set_text('clutter')&lt;br /&gt;&lt;br /&gt;    button = clutter.Rectangle()&lt;br /&gt;    button.set_color(clutter.Color(0xcc, 0xbb, 0xaa, 0xff))&lt;br /&gt;    button.set_width(100)&lt;br /&gt;    button.set_height(100)&lt;br /&gt;    button.set_x(50)&lt;br /&gt;    button.set_y(50)&lt;br /&gt;    button.set_reactive(True)&lt;br /&gt;&lt;br /&gt;    stage.add(label)&lt;br /&gt;    stage.add(button)&lt;br /&gt;    stage.connect('button-press-event', change, label)&lt;br /&gt;    stage.connect('hide', quit)&lt;br /&gt;    stage.show_all()&lt;br /&gt;&lt;br /&gt;def change(actor, event, label):&lt;br /&gt;    label.set_text('press button')&lt;br /&gt;&lt;br /&gt;def quit(actor):&lt;br /&gt;    clutter.main_quit()&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    main()&lt;br /&gt;    clutter.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7837666678641409007?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7837666678641409007/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7837666678641409007' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7837666678641409007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7837666678641409007'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/01/pyclutter-33hello-world.html' title='PyClutter 33行のHello, World的なコード'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1857197643027043509</id><published>2010-01-03T16:54:00.003+09:00</published><updated>2010-01-03T17:13:03.916+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>スクリプト書き初め2010</title><content type='html'>「年末年始はスクリプト書く！」という人に触発されて、スクリプト書き初めをやってみました。&lt;br /&gt;実行結果はこのようになります。&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/N28TwbLbiZw&amp;hl=ja_JP&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/N28TwbLbiZw&amp;hl=ja_JP&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;以下コード。&lt;br /&gt;pygameでも出来ただろうけど、あえてPyClutterを使っています。&lt;br /&gt;下敷きにしたのは、PyClutterサンプルのflower.py。&lt;br /&gt;先に言い訳を書いておくと、コメントとか一切無いのは書き初めなので一気に書いたから、改行に見苦しい点があるのはpythontidyのせいです。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import clutter&lt;br /&gt;from clutter import CairoTexture&lt;br /&gt;import cairo&lt;br /&gt;import gobject&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import random&lt;br /&gt;&lt;br /&gt;BACKGROUND_COLOR = (0xee, 0xee, 0xee, 0xff)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Snow(CairoTexture):&lt;br /&gt;&lt;br /&gt;    colors = (&lt;br /&gt;        (0.6, 0.7, 0.9, 0.5),&lt;br /&gt;        (0.6, 0.7, 1.0, 0.5),&lt;br /&gt;        (0.7, 0.9, 0.9, 0.5),&lt;br /&gt;        (0.7, 0.7, 1.0, 0.5),&lt;br /&gt;        (0.8, 0.7, 0.9, 0.5),&lt;br /&gt;        (0.8, 0.9, 1.0, 0.5),&lt;br /&gt;        )&lt;br /&gt;&lt;br /&gt;    def __init__(&lt;br /&gt;        self,&lt;br /&gt;        x,&lt;br /&gt;        y,&lt;br /&gt;        translation_velocity,&lt;br /&gt;        rotation_velocity,&lt;br /&gt;        ground,&lt;br /&gt;        ):&lt;br /&gt;&lt;br /&gt;        self.x = x&lt;br /&gt;        self.y = y&lt;br /&gt;        self.rot = 0&lt;br /&gt;        self.v = translation_velocity&lt;br /&gt;        self.rv = rotation_velocity&lt;br /&gt;        self.ground = ground&lt;br /&gt;&lt;br /&gt;        CairoTexture.__init__(self, 20, 20)&lt;br /&gt;        cr = self.cairo_create()&lt;br /&gt;        cr.move_to(0, 0)&lt;br /&gt;        cr.rectangle(2, 2, 16, 16)&lt;br /&gt;        random_color = Snow.colors[random.randint(0, 5)]&lt;br /&gt;        cr.set_source_rgba(*random_color)&lt;br /&gt;        cr.paint()&lt;br /&gt;&lt;br /&gt;    def tick(self, max_width, max_height):&lt;br /&gt;        if self.ground - 10 &lt; self.get_y():&lt;br /&gt;            return&lt;br /&gt;        self.y += self.v&lt;br /&gt;        self.rot += self.rv&lt;br /&gt;&lt;br /&gt;        if self.y &gt; max_height:&lt;br /&gt;            self.y = -self.get_height()&lt;br /&gt;&lt;br /&gt;        self.set_position(self.x, self.y)&lt;br /&gt;        self.set_rotation(clutter.Z_AXIS, self.rot, self.get_width()&lt;br /&gt;                           / 2, self.get_height() / 2, 0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Kakizome(CairoTexture):&lt;br /&gt;&lt;br /&gt;    def __init__(self):&lt;br /&gt;        self.stage = clutter.Stage()&lt;br /&gt;        self.stage.set_color(clutter.Color(*BACKGROUND_COLOR))&lt;br /&gt;        self.stage.set_size(640, 480)&lt;br /&gt;        self.stage.set_title('Kakizome 2010')&lt;br /&gt;        self.started = False&lt;br /&gt;        self.ground = self.stage.get_height()&lt;br /&gt;&lt;br /&gt;        self.label = self.create_label('Hello, New Year.')&lt;br /&gt;        self.label.set_depth(1.0)&lt;br /&gt;        self.stage.add(self.label)&lt;br /&gt;&lt;br /&gt;        self.snows = list()&lt;br /&gt;&lt;br /&gt;        self.timeline = clutter.Timeline(500)&lt;br /&gt;        self.timeline.set_loop(True)&lt;br /&gt;        self.stage.connect('key-press-event', self.on_key_press)&lt;br /&gt;&lt;br /&gt;        gobject.timeout_add(50, self.tick, self.snows,&lt;br /&gt;                            self.get_width(), self.stage.get_height())&lt;br /&gt;&lt;br /&gt;    def create_label(self, message):&lt;br /&gt;        label_color = clutter.Color(*BACKGROUND_COLOR)&lt;br /&gt;        label = clutter.Text()&lt;br /&gt;        label.set_text(message)&lt;br /&gt;        label.set_font_name('Mono 32')&lt;br /&gt;        label.set_color(label_color)&lt;br /&gt;        label_x = (self.stage.get_width() - label.get_width()) - 50&lt;br /&gt;        label.set_position(label_x, (self.stage.get_height() / 3) * 2)&lt;br /&gt;        return label&lt;br /&gt;&lt;br /&gt;    def tick(self, snows, height, width):&lt;br /&gt;        for snow in snows:&lt;br /&gt;            snow.tick(height, width)&lt;br /&gt;        if self.ground &lt; 0:&lt;br /&gt;            return True&lt;br /&gt;&lt;br /&gt;        if random.randint(0, 1000) % 125 == 0:&lt;br /&gt;            self.ground -= 5&lt;br /&gt;&lt;br /&gt;        self.fall_snow()&lt;br /&gt;&lt;br /&gt;        return True&lt;br /&gt;&lt;br /&gt;    def fall_snow(self):&lt;br /&gt;        snow = Snow(random.randint(-10, self.stage.get_width()), -20,&lt;br /&gt;                    random.randint(1, 5), random.randint(3, 5),&lt;br /&gt;                    self.ground)&lt;br /&gt;        self.stage.add(snow)&lt;br /&gt;        snow.set_position(snow.x, snow.y)&lt;br /&gt;        self.snows.append(snow)&lt;br /&gt;&lt;br /&gt;    def run(self):&lt;br /&gt;        self.stage.show_all()&lt;br /&gt;        self.timeline.start()&lt;br /&gt;        clutter.main()&lt;br /&gt;&lt;br /&gt;    def on_key_press(self, actor, event):&lt;br /&gt;        key = event.get_key_symbol()&lt;br /&gt;        if key == clutter.keysyms.q:&lt;br /&gt;            clutter.main_quit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    app = Kakizome()&lt;br /&gt;    app.run()&lt;br /&gt;    sys.exit(0)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1857197643027043509?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1857197643027043509/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1857197643027043509' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1857197643027043509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1857197643027043509'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2010/01/2010.html' title='スクリプト書き初め2010'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3847720818271462782</id><published>2009-12-28T20:40:00.009+09:00</published><updated>2009-12-29T07:59:29.043+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wii-tag'/><title type='text'>wii-tagとりあえずのまとめ</title><content type='html'>夏ぐらいからCREAMとかGRLとかlaser-tagとかに関わって、考えた事のまとめ。&lt;br /&gt;&lt;br /&gt;wii-tagを作り始めた動機はlaser-tagを見て、以下のようなことを考え始めたのがきっかけでした。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;レーザー光線は危険&lt;/li&gt;&lt;li&gt;原理上複数人で遊べないのはつまらない&lt;/li&gt;&lt;li&gt;laser-tagの面白さはどこにあるか気になる&lt;/li&gt;&lt;/ul&gt;もっとも、最初からwii-tagを作ろうとしたわけではなく、これらの事、特に一番下の事柄を考えることから始めました。&lt;br /&gt;&lt;br /&gt;laser-tagの仕組みは大掛かりだけど単純で、レーザーポインタの軌跡をカメラでとらえてポイントされた位置をプロットして、その位置にブラシを描いた画像を、ポインタを当てた壁にプロジェクターで投影する、というものです。&lt;br /&gt;laser-tagについて、レーザーポインタで絵を描くという宣伝文句が使われますが、実際にはレーザ光線で直接描いているわけではなく、カメラ、コンピュータ、プロジェクターがレーザー光線と描かれた絵の間に存在するわけです。&lt;br /&gt;仕組み上、レーザーポインタは派手ではあるけど、座標を指定する役割しか持っていません。またカメラも結局のところ座標指定に必要なセンサーでしかなく、レーザーとカメラはセットとなります。座標の指定をしたいなら、レーザーポインタである必然性は実はなく、x,yの組さえ作り出せれば、他の道具でも構わないわけです。&lt;br /&gt;この事からlaser-tagの核は、コンピュータ、プロジェクター、壁の3つではないかと考えました。&lt;br /&gt;ではレーザーポインタの代わりに使えるものは何かという事で考えたのがWiiリモコンです。割と安直ですが、Wiiリモコンは以下のようなものです。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;レーザーポインタとほぼ同じ操作感&lt;/li&gt;&lt;li&gt;レーザーポインタほど危険ではなく&lt;/li&gt;&lt;li&gt;複数人による操作も可能&lt;/li&gt;&lt;/ul&gt;ここまでくるとWiiリモコンによるlaser-tagみたいなものがどのようなものか気になるわけです。誰かやっていないかと調べたのですが、誰もやっていないようで、自力でどうにかしないと手に入らない事が分かりました(実際にはGRLオーストラリアの人たちがWiiリモコンを使っていたのですが、その時は調べ切れませんでした)。&lt;br /&gt;&lt;br /&gt;実際に作り始めると、Wiiリモコンをパソコンで使う方法がなかなか分からず、またセンサーバーも自作したりと、結構大変な作業でした。&lt;br /&gt;その間にCREAMでの活動の中で、本家laser-tagについても触ったり、設定をいじったり、外でやったりする中で、レーザーポインタは必須では無いにしろ、派手さや遠距離到達性については無視できない特性であることに気付かされ、また危険性については回避しえない事の確認もしました。&lt;br /&gt;&lt;br /&gt;今現在、wii-tagはプロトタイプとしては、ほぼ完成状態にあり、一度どこかの壁にプロジェクションして、動作を確かめたいと考えています。&lt;br /&gt;ほぼ完成した今、気になっているのは、この5ヶ月ほどwii-tagを作りつづけた行為は何なのかという事です。&lt;br /&gt;現時点での答えは、wii-tagは鑑賞行為であり、批評行為であるというものです。&lt;br /&gt;ベルナール・スティグレールが紹介しているのですが、19世紀において美術館は作品を鑑賞するだけの場ではなく、模写をする場だったそうです。眼だけではなく、模写という手の運動によって、作品を自分の中に取り込む事が、作品を鑑賞するという行為であり、批評行為だったわけです。&lt;br /&gt;wii-tagはまさにlaser-tagの模写と言えます。5ヶ月がかりでwii-tagを作ると言うことは、5ヶ月がかりでlaser-tagを鑑賞してきた事と同じであり、ここまでやらないとlaser-tagについて最初に考えた事を解決する事は不可能でした。&lt;br /&gt;またこのことは、デジタル・テクノロジーが安価になる事で、デジタル・テクノロジーを利用した作品も模写出来るようになったという事を表しています。&lt;br /&gt;wii-tagについては、鑑賞、批評行為であったと一応結論づけるとして、模写による鑑賞が、デジタル・テクノロジーによる作品についても可能になったという事がどういう事なのかについては、もう少し考える必要があるようです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3847720818271462782?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3847720818271462782/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3847720818271462782' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3847720818271462782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3847720818271462782'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/12/wii-tag.html' title='wii-tagとりあえずのまとめ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8645179226938680275</id><published>2009-12-28T12:59:00.006+09:00</published><updated>2009-12-28T13:12:04.139+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>今年読んだ小説</title><content type='html'>何を読んだか記録しておくために、とりあえず記憶の中からリストアップ。&lt;br /&gt;本当は小説に限らず全部記録すべきで、そのためには都度記録した方がいいんだろうけど。&lt;br /&gt;小説というよりSFばかり。そして特に意識していなかったけど女流作家とイギリスの作品が多い。&lt;br /&gt;これは最近のハヤカワの傾向なのでしょうか？&lt;br /&gt;順番は基本的に挙げてある最後の本を読んだ作家順です。&lt;br /&gt;訳者は調べ直したけど、間違いがあるかも。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;プロバビリティ・ムーン&lt;br /&gt;プロバビリティ・サン&lt;br /&gt;プロバビリティ・スペース&lt;br /&gt;&lt;br /&gt;ナンシー・クレス／著　金子司／訳&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;複数の異星文明との接触とその戦争を描いたシリーズ。&lt;br /&gt;古代の銀河系超文明が残したらしいゲートを使った跳躍航法によって光速を突破出来る設定。&lt;br /&gt;タイトル通り、だんだんスケールが大きくなっていく。&lt;br /&gt;が、一番の見どころは、登場する異星文明の描写だと思う。&lt;br /&gt;そういう意味で、一番面白いのはムーンかと。サンとスペースはどちらかというと人類の描写が中心なので。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116881" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116946" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116962" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;エイリアン・テイスト&lt;br /&gt;ティンカー&lt;br /&gt;ようこそ女たちの王国へ&lt;br /&gt;&lt;br /&gt;ウェン・スペンサー／著　赤尾秀子／訳&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;キャラ重視で作品を作っているらしい作家。でもティンカーや、ようこそ女たちの王国へで描かれる異文化の描写も面白いと思う。&lt;br /&gt;エイリアン・テイストも異文化とまではいかないけど、特異なコミュニティの文化の描写に力をいれているように見える。&lt;br /&gt;表紙のノリは軽いけど、人物描写が丁寧なので&lt;br /&gt;内容とは直接関係ないけど各作品の表紙の絵と「A Brother's Price」を「ようこそ女たちの王国へ」というタイトルにしたのは最高だと思う。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116857" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150115729" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116393" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;アイオーン&lt;br /&gt;ラー&lt;br /&gt;&lt;br /&gt;高野史緒&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;アイオーンは短篇の集合のような構成。架空のヨーロッパを中心にした大河物語といえばよいか。&lt;br /&gt;スケールがでかいし、SF的ウソもでかいので、テンポ良く読める。&lt;br /&gt;ラーはそれに比して、ウソがちっちゃい。実際の研究とかけ離れすぎないようにしているのかもしれないけど、どうせならでかいウソの方がいい。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4152084499" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4152085711" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;啓示空間&lt;br /&gt;カズムシティ&lt;br /&gt;量子真空&lt;br /&gt;火星の長城&lt;br /&gt;銀河北極&lt;br /&gt;&lt;br /&gt;アレステア・レナルズ／著　中原尚哉／訳&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;同じ世界、歴史設定によるシリーズ。火星の長城と銀河北極は短編集で、それ以外は長編。&lt;br /&gt;どっかで聞いたような設定やガジェットがポコポコ出てくるので、ニヤニヤしながら読むのがお勧め。&lt;br /&gt;エイリアンvsプレデターみたいなお遊びを許せない人は読まない方がいい。&lt;br /&gt;シリーズ物なので、あっちの話の主役がこっちで脇役という事はあるものの、個々の話は独立しているので、好きな順序で読めばいい。&lt;br /&gt;ただし、啓示空間と量子真空だけはこの順序で読むのがお勧め。基本的には出版順で読むと良いかと&lt;br /&gt;&lt;br /&gt;特徴としては超光速やワープを禁じ手としているので、銀河系レベルで見ると結構狭い範囲のお話。&lt;br /&gt;遺伝子改造、身体機械化、精神のアップロードは出来るけど、シリーズ中の出来事によって万能過ぎる技術は極限定的にしか存在しなくなる。&lt;br /&gt;ほぼ登場人物が見聞きした事を通してしか情景が描かれないので、登場人物が観測できないことは描写が薄くなる傾向がある。&lt;br /&gt;つまり登場人物が冷凍睡眠に入ると、起きるまで時間が飛んで、その間の出来事は読者も登場人物も分からないという現象が発生する。&lt;br /&gt;登場人物は寝ていた時間に何があったかを、ネットと自分の足とで探りだそうとするので、なんとなくRPG的雰囲気がする。&lt;br /&gt;&lt;br /&gt;もう一つの特徴は、長編が物理的に分厚いこと。3冊とも1000ページを超えるので読み応えがある。&lt;br /&gt;厚くても中だるみしないのは、軽い謎解き要素のおかげかと。&lt;br /&gt;今年一番はまったシリーズ。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150115338" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150115710" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116741" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=415011630X" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116458" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;シンギュラリティ・スカイ&lt;br /&gt;&lt;br /&gt;チャールズ・ストロス／著　金子浩／訳&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;シンギュラリティが起きた後の物語なのに、いまいちそんな感じがしない。&lt;br /&gt;事件は確かに起きているのに、いまいち緊迫感がないというか、登場人物たちは一応行動は起こすのだけど、どうしようもなさすぎる事態すぎて結局何も出来ないまま。&lt;br /&gt;逆に言うと、作品世界内の人間の順応性がやたら高くて、解決できない場合、適応してしまうのだよね。&lt;br /&gt;道具立ては好みなのに、なぜかしっくりこなかった。世界設定がもっと詳しく描かれれていれば、入り込めたかも。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150115672" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;トランスフォーマーリベンジ&lt;br /&gt;アラン・ディーン・フォスター／著　中原尚哉／訳&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;映画第二作のノベライズ。フォスターさんは映画のノベライズを多く手がけていて、トランスフォーマーに関しても映画第一作のノベライズと映画の前日譚にあたる小説も書いている。&lt;br /&gt;映画とどこまで設定が同じなのか分からないけど、映画では映像で語っていることを、文字で語ってくれるので、映画を補完する設定資料集として読むのが良いのかも。&lt;br /&gt;映画では軽く流されていたところが、実は伏線だったりとか。発見も多い。&lt;br /&gt;結構細かく描写されているとはいえ、サイバトロンにしろデストロイにしろ、造型が頭に浮かばないと読んでいて楽しくないので、映画を見てから読むのが正解。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150117152" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;戦いの子&lt;br /&gt;艦長の子&lt;br /&gt;海賊の子&lt;br /&gt;&lt;br /&gt;カリン・ロワチー／著　嶋田 洋一／訳&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;三部作だけど、海賊の子は他二冊からだいぶ離れていて、外伝的印象がある。&lt;br /&gt;一番面白いと思ったのは、戦いの子。異星文明と人類文明の差、その中で成長していく主人公の描写は、成長物語として悪く言えばありきたりだけど、王道でもある。&lt;br /&gt;艦長の子と海賊の子は、人類文明も一つではない事と、その中での成長を描いていて面白いのだけど、第一作の主人公の王道さにどうしても負けてしまうように思える。&lt;br /&gt;出来れば三人の子供たちがもっと絡んで欲しかったなあ。周辺人物も魅力的だし、続ければ続けられると思うのだけど、このシリーズは一旦お終いらしい。&lt;br /&gt;読むなら、きちんと順番に読んだ方がいい。&lt;br /&gt;ところで、巻を追うごとに腐女子向け要素が増えていくのは何故だろう。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150116717" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150117187" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4150117292" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;機動戦士ガンダムUC1～10&lt;br /&gt;&lt;br /&gt;福井晴敏&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CCAの後、マフティー動乱の前の話。&lt;br /&gt;ニュータイプというか、人類の可能性についての話しでもある。&lt;br /&gt;ただオーバーセンス的な元気の良さはあまり無い。&lt;br /&gt;アニメ版が楽しみ。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047139696" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=404713970X" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047150037" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047150606" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047150843" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;nou=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047151122" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047151432" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047152293" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047152862" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4047152870" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8645179226938680275?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8645179226938680275/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8645179226938680275' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8645179226938680275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8645179226938680275'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/12/blog-post_28.html' title='今年読んだ小説'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3563225968411494675</id><published>2009-12-24T20:57:00.004+09:00</published><updated>2011-09-10T21:10:47.442+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>pythontidyをvimで使うためのスクリプト</title><content type='html'>Pythonのコードフォーマッタといえば、pythontidy。&lt;br /&gt;普通にコマンドとしても使えるわけですが、今書いているものに対して使用したいわけです。&lt;br /&gt;で、私のメインエディタはvimなので、vimで使うにはどうすればいいか。&lt;br /&gt;&lt;br /&gt;ただ使うだけならpythontidyにパスを通して&lt;code&gt;:%! pythontidy&lt;/code&gt;でよい。普通はこれを適当なキーにマッピングしてやることになるはず。&lt;br /&gt;&lt;br /&gt;ただpythontidyはsyntax errorのあるコードを受け付けないらしく、この方法ではsyntax errorが含まれているときに実行すると、エラーメッセージというかtracebackがバッファに書き込まれてしまう。uすれば戻るけど、うっかり:wqとかすると大変な事になる。&lt;br /&gt;&lt;br /&gt;正常に動作した場合でもカーソルが一番上の行に移動してしまう。これはマークを設定してやれば回避できるけど面倒すぎる。&lt;br /&gt;&lt;br /&gt;というわけで、pythontidyを使うためだけのvimスクリプトを書いてみた。&lt;br /&gt;前提としてPYTHONPATHにpythontidyが入るようにしておくこと。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;function! Pythontidy()&lt;br /&gt;python &lt;&lt; EOF&lt;br /&gt;import tempfile&lt;br /&gt;import vim&lt;br /&gt;import pythontidy&lt;br /&gt;&lt;br /&gt;cb = vim.current.buffer[:]&lt;br /&gt;b = tempfile.TemporaryFile(mode="rb+")&lt;br /&gt;out = tempfile.TemporaryFile(mode="rb+")&lt;br /&gt;for l in cb[:]:&lt;br /&gt;b.write(l + '\n')&lt;br /&gt;b.seek(0)&lt;br /&gt;pythontidy.tidy_up(b, out)&lt;br /&gt;out.seek(0)&lt;br /&gt;vim.current.buffer[:] = out.readlines()&lt;br /&gt;EOF&lt;br /&gt;endfunction&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;これをpython_tidy.vimという名前でもつけてあげて、ftpluginの下に置いてやる。&lt;br /&gt;で、python.vimに&lt;code&gt;map &amp;lt;f5&amp;gt; :call Pythontidy()&lt;cr&gt;&lt;/code&gt;と書く。&amp;lt;f5&amp;gt;のところは任意のキーでいい。&lt;br /&gt;これでsyntax errorを含むコードを食べさせても、インフォメーションメッセージにエラーが出てくる。ちゃんと動作したときも行の位置が変化しない。&lt;br /&gt;&lt;br /&gt;これで安心してダラダラコーディングできる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3563225968411494675?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3563225968411494675/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3563225968411494675' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3563225968411494675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3563225968411494675'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/12/pythontidyvim.html' title='pythontidyをvimで使うためのスクリプト'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8554911257044041204</id><published>2009-12-06T10:17:00.000+09:00</published><updated>2009-12-06T10:18:58.696+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>駅をたずねられた</title><content type='html'>書くのを忘れていたけど、ちょっと前に駅の場所を駅の近くで聞かれた。&lt;br /&gt;建物の陰になっていて、駅本体は見えないけど、線路は見えているので想像つくと思うのだが。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8554911257044041204?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8554911257044041204/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8554911257044041204' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8554911257044041204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8554911257044041204'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/12/blog-post_06.html' title='駅をたずねられた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1709601695766180702</id><published>2009-12-05T22:56:00.004+09:00</published><updated>2009-12-05T23:08:33.623+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>音楽映画を見る度に思い出すもの</title><content type='html'>音楽映画を映像にしろ、生演奏にしろ見る度に思い出すもの。&lt;br /&gt;&lt;br /&gt;&lt;blockqote&gt;&lt;br /&gt;　　風　景&lt;br /&gt;　　　　　純銀もざいく&lt;br /&gt;&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;かすかなるむぎぶえ&lt;br /&gt;いちめんのなのはな&lt;br /&gt;&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;ひばりのおしやべり&lt;br /&gt;いちめんのなのはな&lt;br /&gt;&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;いちめんのなのはな&lt;br /&gt;やめるはひるのつき&lt;br /&gt;いちめんのなのはな。&lt;br /&gt;&lt;/blockqote&gt;&lt;br /&gt;&lt;br /&gt;この詩の場合は、言葉によって映像が浮かぶわけですが。&lt;br /&gt;音楽映画による、この詩の再現も見てみたいです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aozora.gr.jp/cards/000136/files/731.html#32"&gt;青空文庫 聖三稜玻璃 風景へのリンク&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1709601695766180702?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1709601695766180702/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1709601695766180702' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1709601695766180702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1709601695766180702'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/12/blog-post.html' title='音楽映画を見る度に思い出すもの'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-333393077291826683</id><published>2009-12-05T20:45:00.003+09:00</published><updated>2009-12-05T22:41:31.849+09:00</updated><title type='text'>ヨコハマ国際映像祭 CREAM 感想(会期後)</title><content type='html'>最終日前日に、NYKの会場も見ました。それも含めて感想。&lt;br /&gt;&lt;br /&gt;前に書いた感想のうち、NYKは各論かもという予想を立てたけど、そんなことはなくて、新港ピアや他の場所の作品と呼応するというか、対置されている印象。&lt;br /&gt;&lt;br /&gt;例えばクリスチャン・マークレイのVideo Quartetは安野太郎の音楽映画と比べてみると面白いだろうし(これは安野さん自身もそう言っている)、「都市のミーム」とポーリーンはどう違うの？とか、1対1対応するわけではないけど、関連付けて見ざるを得ない展示になっていましたね。&lt;br /&gt;これも一種のデュアルスクリーン的効果なのかな。&lt;br /&gt;&lt;br /&gt;Video Quartetと音楽映画については、あまりに対置が綺麗過ぎて多分狙ったのだろうなあ。偶然だったらちょっと残念かも。「音楽と映像」というテーマへの回答が、違っているけど、どこか近いような形で現れているのは非常に面白い。可能であればVideo Quartetで音楽映画をやって欲しいけど、実際やったらどうなるんだろう。演奏側の負担が音楽映画第九番以上に高くなるのは確実ですが。&lt;br /&gt;&lt;br /&gt;ただ、対置されていると言っても、Video Quartetは映像作品で会期中ずっと見られたのに対し、音楽映画は演奏ということもあり、実際見られたのは11月28日にあった2回の発表会だけで、しかも整理券を手に入れられた人しか見られなかったというのが残念ですね。それ以上やるのは多分演奏者がもたないだろうけど。&lt;br /&gt;&lt;br /&gt;安野さん曰く、「公開するのは、実際見にきてもらった人に申し訳ない」とのことでしたが、実際見ないと分からない事は多いので、その辺は気にしなくても良いと思います。&lt;br /&gt;むしろ映像バージョンが広まるほど、生で見た価値は上がる気がしますし。&lt;br /&gt;ダイジェストバージョンは公開しても良いかもと言っていたので期待したいところです。&lt;br /&gt;&lt;br /&gt;音楽映画の言葉による解説などは、以下のリンクをどうぞ。&lt;br /&gt;演奏する人へのインタビューは実は貴重な気がします。&lt;br /&gt;&lt;a href="http://taro.poino.net/blog/archives/2009/11/post_233.html"&gt;作曲家・安野太郎のブログ 満員御礼！　音楽映画第九番　ありがとう！&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stickam.jp/video/179472706"&gt;安野太郎のMUSIC CREAM 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stickam.jp/video/179492360"&gt;安野太郎のMUSIC CREAM 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stickam.jp/video/179500625"&gt;安野太郎のMUSIC CREAM 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stickam.jp/video/179494993"&gt;演奏者へのインタビュー&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて、blogなんかを見ているとアルフレッド・ジャーの作品の人気が高いようですね。ただその理由を見ていると、ストーリーについてばかり語られて、映像についてはほとんど触れられていない様子。&lt;br /&gt;確かにあのストーリーはストーリーで興味深いけど、その興味深さは言葉や文字でも再現可能で、映像である理由はほとんど無いように思えるんだけど。&lt;br /&gt;つまり映像的にはそれほど面白みがあるわけでもないのに「ストーリーを見せている」という点で、一種のアンチ映像であり、そこが面白いとは思うのだけど、うまく言葉で説明できない。&lt;br /&gt;少なくともストーリーの面白さだけで、あの作品を語るのは何かが足りないんじゃないかという事はメモしておきたいです。&lt;br /&gt;&lt;br /&gt;NYKで書いておくことがあるとすると、山川さんの作品が不調っぽいのでスタッフに聞いてみたら、やっぱり不調だったというハプニングがあったので、正しい状態では見られなかったのが残念という事。&lt;br /&gt;(正常を知らないのに異常を感じる不思議)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて、NYKが一人で考える場だとすると、ラボスペースはみんなで考える場だったのかなあというのが、全て見て、会期が終わった直後の今の感想です。&lt;br /&gt;ラボスペースは悪い話しか聞かないと、今日会った人に言われたのだけど、あの場に入り込めない人にはそう評価されても仕方ない部分はあるし、排他的空気、あるいは参加することを強要する雰囲気がラボスペースにあったのは否めないと思う。&lt;br /&gt;ラボスペース内のCREAM CHANNELでは大量の動画が撮影されていて、stickamというサイトに、馬鹿みたいに大量に蓄積されているのだけど、この中にも一見さんお断りな動画は少なくない。&lt;br /&gt;&lt;a href="http://www.stickam.jp/profile/ifamy"&gt;ヨコハマ国際映像祭のstickamページ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;だいたいラボスペースに入ってすぐのところに、来場者に対して挑発的とも取れるメッセージがあったりとか、普通の映像「展覧会」を期待していた人には耐えきれないだろうね。&lt;br /&gt;中の展示もお互いに干渉しあっていて、コンテキストが崩壊しているので、読み取ることすら困難だし。&lt;br /&gt;&lt;br /&gt;でも、その分かなり自由な場所というか、他のコンテキストを潜り込ませる事も可能で、可能性としては一般来場者がCREAMのブースを利用することだって出来たはず(というより積極的に来場者を捕まえてたり)だし、サポートクルーが勝手に番組を作ることは当然の事として発生していました。&lt;br /&gt;最終日にレーザータグを来場者に触らせるというのも、一応簡単に了承を取ったとはいえ、サポートクルーが勝手にやったわけだしね。&lt;br /&gt;&lt;br /&gt;でも(と逆接に逆接を重ねるわけですが)、来場者というのは、会場において最も情報が少ない参加者なわけで、その状態でルール無きゲームに参加しろというのは、あまりに酷というかフェアでは無いと思うわけです。持っている手札が何か分かってもいないのに自由にやれと言われても、それは無茶というか横暴なだけで、その辺のケアがもっと出来なかったのかなというのが反省点かと。&lt;br /&gt;来ました、見ました、帰ります、では面白くないのは強く同意するけど、強くコミットしてもらうにはどうすればいいのか、もっと考えるべきだったのではないかと思います。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GRLとレーザータグについては、もう少し落ち着いて考えてみるつもり。&lt;br /&gt;&lt;br /&gt;だらだら書いたら語尾とか言葉使いが無茶苦茶ですね。後で直す気になったら直します。&lt;br /&gt;多分直さないけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-333393077291826683?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/333393077291826683/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=333393077291826683' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/333393077291826683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/333393077291826683'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/12/cream.html' title='ヨコハマ国際映像祭 CREAM 感想(会期後)'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6177939232193927281</id><published>2009-11-20T19:39:00.003+09:00</published><updated>2009-12-05T20:46:37.386+09:00</updated><title type='text'>ヨコハマ国際映像祭 CREAM 感想(会期中)</title><content type='html'>ヨコハマ国際映像祭 CREAMもあと10日を切ったのでそろそろ感想。&lt;br /&gt;&lt;br /&gt;ただし神港ピア会場、しかもラボスペースにずっといて、NYK会場にはまだ行けていないのだけど。&lt;br /&gt;&lt;br /&gt;とはいえ、今回の映像祭で一番面白いというか、エキサイティングなのはおそらくラボスペースだと思う。&lt;br /&gt;クオリティは低いけど、それを補って余りある混乱というか混沌というか、わけのわからなさが存在している。&lt;br /&gt;&lt;br /&gt;整理された展覧会を期待している人にとっては邪魔だろうけど、映像祭が「祭」であるならば、市民参加というお題目で、自由に映像と向き合っているラボスペースは確実に必要な要素だし、むしろラボスペースにこそ映像祭の核があると言ってもいい。&lt;br /&gt;&lt;br /&gt;ラボスペースで行われている事が、果たして「映像」といえるかという問題は、自分の中ではまだ解決していないし、おそらく展覧会スタッフさえ答えを持っていないように思える。&lt;br /&gt;大体、展示している側が「映像」だと思っているかすら、かなり疑問な部分もある。&lt;br /&gt;とはいえ「映像」というのはものすごく幅のある言葉で、即座に映像か、そうでないかを判定する事が困難なモノがある。&lt;br /&gt;個人的には、視覚情報と時間軸の存在が基準であると考えるけど、じゃあ音楽演奏は映像かと問われると判断に困るし、時間軸といっても時間の流れや時間解像度をどこまで許容するかはもっと判断に困る(あらゆるものは経年変化する)。&lt;br /&gt;&lt;br /&gt;もう少し単純化して、映像スペクトラムというものを想定してみる。完全に映像と言い切れるものとして、とりあえず映画をスペクトラムの端に置いておく。&lt;br /&gt;では、もう片方の端に何が置かれるか。建築？彫刻？絵画?&lt;br /&gt;鑑賞者である自分自身が時間軸に置かれる以上、何を置いても違和感が生まれる。&lt;br /&gt;&lt;br /&gt;個別の作品と対峙していると、作品との関係に閉じてしまうけど、明るく開放的なラボスペースでは、映像という概念と向き合うことが出来る。個々の完成度が低くて、没入できないとも言えるけど建設的に考えよう。&lt;br /&gt;&lt;br /&gt;(まだ見ていないけど)NYKにある作品は各論であって、総論はラボスペースといえるんじゃないだろうか。&lt;br /&gt;(追記 そんなことなかった)&lt;br /&gt;&lt;br /&gt;ただ、ラボスペースを楽しむにはかなりパワーが必要になるんじゃないかな。&lt;br /&gt;能動的に動いたり話したりしないと、わけがわからなすぎるし。&lt;br /&gt;展示を見るだけなら、5分かからないし(祭なのに見るだけというのも意味が分からんけど)。&lt;br /&gt;地元横浜や、周辺地域ならともかく、遠くから来た人にはハードルが高いよなあ。&lt;br /&gt;&lt;br /&gt;とりあえず分かりやすいものだけ見たい人は、ラボスペースに入らない方が、気分良く帰れると思います。&lt;br /&gt;ものすごく損するとは思うけど。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Youtubeに映像祭の動画があるので、雰囲気が知りたい人は見てみるとよいかも。&lt;br /&gt;&lt;a href="http://www.youtube.com/user/yeizo09"&gt;映像祭サイドが上げている動画&lt;/a&gt;&lt;br /&gt;このうち週CREAMというコンテンツは、サポートクルーと呼ばれる、いわゆるボランティアの人たちが企画撮影編集してます。&lt;br /&gt;他の動画でも撮影サポートクルーってのがあるはず。&lt;br /&gt;&lt;br /&gt;それと&lt;a href="http://twitter.com/cream09_lab"&gt;ラボスペースはtwitterアカウント持ってます&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6177939232193927281?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6177939232193927281/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6177939232193927281' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6177939232193927281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6177939232193927281'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/11/cream.html' title='ヨコハマ国際映像祭 CREAM 感想(会期中)'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4071851524734530379</id><published>2009-11-09T22:23:00.004+09:00</published><updated>2009-11-09T22:41:21.506+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu9.10 + Firefox3.5でDelicious Bookmarks拡張がおかしくなったのでUbuntu Firefox Mdifications 0.8を無効にしたら直った</title><content type='html'>ほぼ一年前の&lt;a href="http://kamenasu.blogspot.com/2008/11/ubuntu-firefox3-google-toolbar20081118.html"&gt;Ubuntu + Firefox3 で google toolbarが壊れる(2008年11月18日時点)&lt;/a&gt;にコメントがついていたので「一年前の事は覚えてないよ」とコメントしてから、ふと気づきました。&lt;br /&gt;&lt;br /&gt;実は、KOARAのFirefox3.5で「Delicious Bookmarks(2.1.072)」のツールバー部分がまったく表示されないのと、ナビゲーションツールバーにこの拡張のアイコンが表示されないという問題が出ていました。でも、サイドバーでは使えていたので、特に気にしていませんでした。&lt;br /&gt;&lt;br /&gt;さて、GoogleとDeliciousとの違いはあれどツールバー系がおかしくなっているのは同じです。&lt;br /&gt;で、拡張欄を見たら「Ubuntu Firefox Mdifications 0.8」がいました。&lt;br /&gt;即、無効にしてFirefoxを再起動。&lt;br /&gt;その結果、&lt;span style="font-weight: bold;font-size:180%;" &gt;Delicious Bookmarks完全復活！&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;そのうち対応されるかもしれませんが、今使えることが重要なので。&lt;br /&gt;コメント下さった方、過去の自分、ありがとうございました。&lt;br /&gt;&lt;br /&gt;それにしても、一年前と現在で使っている道具が変わっている事に驚きました。&lt;br /&gt;来年の今頃はどんな道具を使っているのでしょうか。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4071851524734530379?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4071851524734530379/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4071851524734530379' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4071851524734530379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4071851524734530379'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/11/ubuntu910-firefox35delicious.html' title='Ubuntu9.10 + Firefox3.5でDelicious Bookmarks拡張がおかしくなったのでUbuntu Firefox Mdifications 0.8を無効にしたら直った'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2549803839966546249</id><published>2009-11-03T21:20:00.002+09:00</published><updated>2009-11-03T21:51:28.906+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VAIO type Z'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='OLPC'/><title type='text'>宿業のコアラ</title><content type='html'>Ubuntu 9.10 Karmic Koaraにアップグレードしましたよ。&lt;br /&gt;いつもは新規に入れ直しているんだけど、今回はアップグレードしてみた。もしかしたら後でクリーンインストールするかも。&lt;br /&gt;&lt;br /&gt;さて、今回のコアラは、クラウド環境であるEucalyptusが目玉機能と呼ばれている様子。&lt;br /&gt;とはいえ使っているのはデスクトップ版なので、実はあまりピンと来ない。クラウド環境に興味はあるんだけど。そのため個人的には、テーマが大きく変わったのが目玉というか、印象的な変更点。&lt;br /&gt;ネット回りが若干不安定な気もするけど、概ね問題無し。&lt;br /&gt;&lt;br /&gt;Andorid環境がリリースされるという話もあったけど、今の所は無い様子。launchpadにはあるけど。&lt;br /&gt;&lt;br /&gt;typeZユーザとしては、画面の輝度変更が小細工無しで出来るようになったのがありがたいところ。&lt;br /&gt;&lt;br /&gt;角ウサギの頃から不調だったSugar環境については、コアラでも不調のまま。根が深い問題らしいので、おとなしくFedoraを使うことを考えるべきかなあ。&lt;br /&gt;typeZのディスクは余っているので、後一つぐらいOSが増えても問題ないけど、出来れば専用マシンが欲しい。Mac miniをFedoraマシンに出来たら良いのだけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2549803839966546249?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2549803839966546249/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2549803839966546249' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2549803839966546249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2549803839966546249'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/11/blog-post.html' title='宿業のコアラ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8745587742485832421</id><published>2009-10-27T21:02:00.003+09:00</published><updated>2009-10-27T22:25:11.205+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wii-tag'/><title type='text'>wii-tagのソフトウェア部分とか</title><content type='html'>今度はソフトウェアについて。&lt;br /&gt;&lt;h4&gt;結局はペイントソフト&lt;/h4&gt;wii-tagのソフトウェア部分は結局の所ペイントソフトです。&lt;br /&gt;元ネタであるLaser Tagのソフトウェアにはセッティング用のツールも含まれてはいるけど、こちらも本質的にはペイントソフトってのは議論を待たないかと。&lt;br /&gt;元々Laser Tagは仮想的にスプレーをレーザーに置き換えたものだし、GRLのGはgraffitiのGなわけで、当然といえば当然ですが。&lt;br /&gt;&lt;br /&gt;wii-tagにしても、実際にはマウスでも描く事が出来るように作られているし、他のポインティングデバイス用に拡張しやすいよう、ある程度、気を使って作っていたりもします。&lt;br /&gt;なので、作っているのはwii-tagというより、wii-tagをするためのプラットフォームというのが正しいわけです。丁度いい名前が無いので、もうしばらくはwii-tagと呼ぶ予定。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Laser Tagの面白さ&lt;/h4&gt;wii-tagを作ろうと思った頃に、少し考えたのだけど、レーザータグの面白さは、レーザーで描く事ではなくて、都市の壁面に別の文脈を持ち込む点にあるのですよ。&lt;br /&gt;実際には壁面どころか路面にビデオカメラとプロジェクターとパソコンという装置を持ち込んでいるので、言葉による説明によって想像される以上の文脈の衝突があったりするわけです。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;今思い出したけど、去年Python with Hardwareのみなさんたちと秋葉原で飲み会をしたとき、居酒屋の壁面にプロジェクションをしたけど、起きている事態としては同じですね。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;とはいえ、都市の文脈に別の文脈をぶつけるというのは、スプレーを使ったtaggingやgraffitiやらと変わらないわけで、レーザータグにしろwii-tagにしろ、それら旧来の手法とどうちがうのかってのは、しっかり考えるべき問題かと思います。&lt;br /&gt;現象レベルでは、物理的痕跡が残るかどうかというのが大きな違いではあるけど、そこはあまり重要じゃない予感がします(許可を取る際には大きなポイントですけど)。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8745587742485832421?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8745587742485832421/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8745587742485832421' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8745587742485832421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8745587742485832421'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/10/wii-tag_27.html' title='wii-tagのソフトウェア部分とか'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3394795395131189944</id><published>2009-10-20T22:22:00.010+09:00</published><updated>2009-10-20T23:10:45.523+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wii-tag'/><title type='text'>wii-tagと自作センサーバー</title><content type='html'>Laser Tagを自分の中で消化する為に、wii-tagと称してWiiリモコンを使ったLaser Tag的なものを作っています。&lt;br /&gt;&lt;br /&gt;動画でないと、さっぱり分からないと思いますが、こんな感じです。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__A7XrZqdcYc/St27cA0UZOI/AAAAAAAAAug/vuOKHj530Nw/s1600-h/wii-tag-screen-shot.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__A7XrZqdcYc/St27cA0UZOI/AAAAAAAAAug/vuOKHj530Nw/s320/wii-tag-screen-shot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5394674018589893858" /&gt;&lt;/a&gt;&lt;br /&gt;緑色の線は、マウスで描いたもので、紫色の線はWiiリモコンで描いた線です。&lt;br /&gt;ここまで作って考えた事もあるけど、それはとりあえず置いておきます。&lt;br /&gt;&lt;br /&gt;さてWiiリモコンを使うには、センサーバーが必要になります。&lt;br /&gt;Wiiの正式センサーバーでも良いのですが、Wii本体の電源が入っているとリモコンをWiiに取られてしまうことがあるので、自作する事にしました。&lt;br /&gt;&lt;br /&gt;最初に作ってみたのがこれです。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__A7XrZqdcYc/St29eaL9rNI/AAAAAAAAAuo/K-emmWi1LNM/s1600-h/P1040559.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__A7XrZqdcYc/St29eaL9rNI/AAAAAAAAAuo/K-emmWi1LNM/s320/P1040559.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5394676258782948562" /&gt;&lt;/a&gt;&lt;br /&gt;びっくりするほど、やっつけです。&lt;br /&gt;材料は、赤外線LEDが4個と抵抗2つ。USBで携帯を充電出来るケーブル、導線数センチ。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kamenasu.blogspot.com/2009/09/blog-post.html"&gt;前にデコチャリの手伝いをしたとき&lt;/a&gt;に作りました。&lt;br /&gt;ハンダ付けしたところは、その時その場にあった養生テープで一応保護しています。&lt;br /&gt;&lt;br /&gt;みかけはひどいですが、ちゃんと動きます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__A7XrZqdcYc/St2-eVIjkqI/AAAAAAAAAuw/-IovaUEhAKw/s1600-h/P1040562.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__A7XrZqdcYc/St2-eVIjkqI/AAAAAAAAAuw/-IovaUEhAKw/s320/P1040562.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5394677356938105506" /&gt;&lt;/a&gt;&lt;br /&gt;紫色に光っていますが、これが赤外線です。デジカメを通すと紫色ですが、肉眼では当然見えません。&lt;br /&gt;赤外線が出ているだけでなく、Wiiリモコンも反応してくれました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一応、これでも使えるのですが、導線が絡まりやすくて非常に使い辛いので、もうちょっとマシな姿に変えることに決定。先週末、材料を集めて工作しました。&lt;br /&gt;&lt;br /&gt;その結果がこれです。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__A7XrZqdcYc/St2_5yPO5aI/AAAAAAAAAu4/Nc19Xl7Zj34/s1600-h/P1040572.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__A7XrZqdcYc/St2_5yPO5aI/AAAAAAAAAu4/Nc19Xl7Zj34/s320/P1040572.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5394678928118834594" /&gt;&lt;/a&gt;&lt;br /&gt;かなりセンサーバーらしい形になりました。&lt;br /&gt;材料はほぼ初代から流用しましたが、USB充電ケーブルは捨てて、USBのBコネクタ(メス)をつけてあります。&lt;br /&gt;バーの部分は、千石で「ご自由にお取り下さい」と書いてあったレールです。ICとかが入っているやつですね。&lt;br /&gt;&lt;br /&gt;もちろん、ちゃんと光ります。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__A7XrZqdcYc/St3A5Z1igtI/AAAAAAAAAvA/CLAJVTNxdeU/s1600-h/P1040574.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__A7XrZqdcYc/St3A5Z1igtI/AAAAAAAAAvA/CLAJVTNxdeU/s320/P1040574.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5394680021080244946" /&gt;&lt;/a&gt;&lt;br /&gt;レールの溝が、typeZの頭にすっぽり入るので、非常に安定しています。&lt;br /&gt;&lt;br /&gt;完成と言ってよいとは思いますが、部分的にハンダがむき出しで少し怖い部分があるので、そこの手当ては必要かな。&lt;br /&gt;&lt;br /&gt;ソフトウェア側については、また今度書くことにします。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3394795395131189944?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3394795395131189944/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3394795395131189944' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3394795395131189944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3394795395131189944'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/10/wii-tag.html' title='wii-tagと自作センサーバー'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__A7XrZqdcYc/St27cA0UZOI/AAAAAAAAAug/vuOKHj530Nw/s72-c/wii-tag-screen-shot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8085620762615983904</id><published>2009-10-04T11:27:00.000+09:00</published><updated>2009-10-04T11:28:21.865+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>寿町のレーザータグ</title><content type='html'>はんだの手伝いのついでに寿町でやったレーザータグを見に行った事は書いたけど、今回はその詳細と感想。&lt;br /&gt;&lt;br /&gt;現場に行く前に、カメラをギャラリーに向けるなという説明を受けていて、まあ通行人=住人でもある可能性はかなり高いので、それ自体は分かるのだけど、カメラを肩にかけるのも止めた方がいいと念を押されて、昔何かあったのかなあと想像。&lt;br /&gt;自分自身、うちの近所で、ごついデジタル一眼をぶら下げている人を見ると微妙な気分になるし。&lt;br /&gt;&lt;br /&gt;事前知識から、山谷と似たような感じかなと思ったけど、実際に行ってみると山谷より活気があるというか人がたくさんいた。&lt;br /&gt;あの時間帯(午後6時)に山谷に行ったことは無いので、正確な比較では無いけど、それでも山谷が東京の外れにあるのに比べると、寿町は横浜の市街地から地続きになっている感覚がある。&lt;br /&gt;&lt;br /&gt;レーザータグをやったのは、その時は何も知らなかったけど、今調べたら寿労働センターというところらしい。市営住宅でもあるのかな。&lt;br /&gt;人の家の前で、レーザー光線とプロジェクターによる投影をやるというのは、なかなか乱暴ですな。施設の許可は取っているみたいだけど。&lt;br /&gt;&lt;br /&gt;で、設置をしていると、当然ながら人が寄ってくる。逆ですね、人の真ん中に入っていって設置しているのであって、おっちゃんたちは不審そうに見ているだけ。実際若者が謎の機材を設置している状況は不審だろう。レーザータグは環境の影響を受けやすいのか、設定に手間がかかるし。&lt;br /&gt;&lt;br /&gt;そして社交的な一部のおっちゃんはこちらに色々質問して絡んでくる。特に記録用カメラを持っている女性スタッフに絡んでくるのだけど、特に暴言を吐いてきているわけではないので放置。一番年かさのスタッフが適当にフォローしているし、おっちゃん同士でも怖がらせないように気をつかってくれてるようだったし。&lt;br /&gt;極一部に、「年寄りに横文字はわかんねぇよ！」と大声で叫ぶ人はいたけど、そういうのも他のおっちゃんが「気にすんなよ」とこちらをフォローしてくれる。&lt;br /&gt;&lt;br /&gt;やっとレーザータグが始まると、面白そうにしてくれる人が何人か寄ってくる。&lt;br /&gt;興味深いのは、壁にプロジェクションしているのを見て、即座に「今度、映画鑑賞会をやらないか」と言ってきたおっちゃんがいること。そういう発想がギャラリー側から出るというのは想像していなかった。普段から文化活動をやっているのかね。&lt;br /&gt;&lt;br /&gt;レーザータグ自体の動作についてはすぐに飲み込めたようで、自然と何を描いているのか当てるゲームが始まる。&lt;br /&gt;だけど、レーザータグで思い通りに描くというのは結構難しいので、描く人自身にしか何を描いているのか分からないなんて事はざら。&lt;br /&gt;だが、おっちゃんたちは、何を描いているのか分からないと、すぐに不機嫌になる。何だか分からないものに対して、かなり辛辣に非難する。抽象的なパターンが描かれるとすぐに不機嫌になり興味を失くす。逆にそれがどんなに単純であれ、具体的なものであれば喜ぶ。&lt;br /&gt;&lt;br /&gt;今考えても、あの反応は極端過ぎるように思う。理由は何なのだろう。&lt;br /&gt;何を描いているか当てるというゲームから外れること(答えが無意味な図形ではゲームにならない)に対する拒否反応なのか、それとも別の理由なのか。&lt;br /&gt;&lt;br /&gt;勝手に不機嫌になるのはいいんだけど、「あれは何だ」とか言われると「何でしょうねえ」とか「ぐるぐるしているから、でんでんむし」とか適当な回答をせざるを得ない。描いている人ですら何描いているのか分からないのに、第三者が見て分かるわけないだろうに。&lt;br /&gt;冷静になると、自分自身こそがゲームにとらわれていたのかな。求められていたのは答えではなく、会話だったのだろうし。&lt;br /&gt;&lt;br /&gt;とはいえ、不機嫌な酔っ払いの相手をするのは大変なのです。&lt;br /&gt;「これだけの機材持っているってことは、お前の両親は金持ちだろう」とか言ってくるし。少なくともその人よりは金持ちだろうけど、まさかそんな事を言うわけにもいかず、そういう発言は無視。&lt;br /&gt;ほっといたら機嫌が直っていたので、対応としては悪くなかったはず。&lt;br /&gt;&lt;br /&gt;そんなこんなでレーザータグは終了。&lt;br /&gt;まあまあ成功したと言えるのではないだろうか。&lt;br /&gt;&lt;br /&gt;技術的に気になったのは高輝度レーザーを使う点。ギャラリーにやってもらうにはかなり危険なように思う。&lt;br /&gt;だからこそ、いまWiiTagを作ろうとしているわけだけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8085620762615983904?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8085620762615983904/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8085620762615983904' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8085620762615983904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8085620762615983904'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/10/blog-post.html' title='寿町のレーザータグ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7818232098282472978</id><published>2009-09-30T21:13:00.003+09:00</published><updated>2009-09-30T21:39:17.966+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>NetWalker雑感</title><content type='html'>Ubuntu使いとして気になるマシンであるNetWalker。&lt;br /&gt;ちょっと前に、ヨドバシで触ってきたのでその雑感。&lt;br /&gt;&lt;br /&gt;ソフト的にはUbuntuのカスタム版。ARM系という縛りはあるけど、PythonとかVimとか使いたいソフトのほとんどにARM版はあるので、不満を覚えることはなさそう。&lt;br /&gt;Pythonとかの言語系の場合、ARM版特有の癖が出そうな予感はするけど、おそらく許容範囲のはず。&lt;br /&gt;&lt;br /&gt;ハード的にはバッテリー公称10時間保ちというのは魅力的。起動3秒という宣伝文句は実際にはサスペンドからの復帰なので、微妙に嘘が混じっている気がするけど、モバイル用途としてはありがたい。&lt;br /&gt;保存容量が少ないというのも、保存するのはテキストデータ中心になるだろうから心配ではない。アプリケーションもそんなに入れないだろうし。&lt;br /&gt;&lt;br /&gt;最大の問題はやはりキーボード。&lt;br /&gt;変則配列なのはサイズの問題もあるし許容できるとして、打鍵感覚が最悪。&lt;br /&gt;机に置いて両手で打とうが、親指で打とうがどうしようもなく打ちにくい。慣れればそれほどでもないのかもしれないけど、確実に手と腕に負荷がかかる。&lt;br /&gt;あれに我慢出来るなら、Ubuntu使いとしては最高の道具なのだけど。&lt;br /&gt;&lt;br /&gt;キーボードさえ何とかなれば、あるいはキーボードを妥協すれば確実に買ってしまうのだけど。&lt;br /&gt;次のLTSが出る頃にバージョンアップしてくれると信じて、今は買わないでおく。&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kameturu-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B002N7DLJK&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;#でも、キーボードに妥協してでも欲しい自分もいる。&lt;br /&gt;#少なくともコアラは待つけど、LTSが出たら勢いで買ってしまうかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7818232098282472978?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7818232098282472978/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7818232098282472978' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7818232098282472978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7818232098282472978'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/09/netwalker.html' title='NetWalker雑感'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1379713551780775475</id><published>2009-09-26T08:39:00.002+09:00</published><updated>2009-10-21T23:52:12.490+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>はんだづけのお手伝い</title><content type='html'>木曜日にヨコハマ国際映像祭 GRLチームの、お手伝いに行って来ました。&lt;br /&gt;&lt;br /&gt;内容はデコチャリにつけるLEDをつなげるだけ。電飾として使うということから、数は多いんだろうけど、難易度は低い予感。&lt;br /&gt;&lt;br /&gt;作業場所はこんな感じ。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/__A7XrZqdcYc/Sr1UesoEwDI/AAAAAAAAAsc/sSFzXAzihYI/s400/P1040300.JPG" /&gt;&lt;br /&gt;奥にいるのはチームリーダーの高松君。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/__A7XrZqdcYc/Sr1Vo3d2hHI/AAAAAAAAAt8/2B6XhYBdJMM/s400/P1040301.JPG" /&gt;&lt;br /&gt;デコチャリのベースはこんなのです。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/__A7XrZqdcYc/Sr1VwtStsRI/AAAAAAAAAuE/P3A7oE9lxy0/s400/P1040304.JPG" /&gt;&lt;br /&gt;電飾を点滅させる回路。一つの板に、二つ回路が載っています。因みに555を使っていました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて作業内容をもう少し詳しく書くとこうなります。&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;LEDのカソードの足を切って抵抗をつける&lt;/li&gt;&lt;br /&gt;&lt;li&gt;アノード側も切って導線をつける&lt;/li&gt;&lt;br /&gt;&lt;li&gt;熱圧着チューブでカバーする&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;1番の作業をするとこうなります。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/__A7XrZqdcYc/Sr1UfCKiHFI/AAAAAAAAAsk/aPvVSDwOE_U/s288/P1040307.JPG" /&gt;&lt;br /&gt;それほど難しくは無いけど、空中配線なので結構辛い。&lt;br /&gt;&lt;br /&gt;どんどん作ります。&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/__A7XrZqdcYc/Sr1Ue22fl-I/AAAAAAAAAsg/m81UK388agk/s400/P1040306.JPG" /&gt;&lt;br /&gt;シラウオみたいですね。&lt;br /&gt;&lt;br /&gt;このシラウオに対して、2番の作業をするとこうなります。&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/__A7XrZqdcYc/Sr1UgTtTBLI/AAAAAAAAAs0/_YJ68LR6vZM/s288/P1040312.JPG" /&gt;&lt;br /&gt;改めてみると、若干いもハンダな気もする。自転車の振動で割れないか不安だ。&lt;br /&gt;赤色LEDが切れたら私のせいかもしれません。&lt;br /&gt;&lt;br /&gt;どんどんやりますよ。&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/__A7XrZqdcYc/Sr1UgLHkCgI/AAAAAAAAAsw/yxQvBUyjiAk/s400/P1040311.JPG" /&gt;&lt;br /&gt;シラウオに足が生えました。&lt;br /&gt;&lt;br /&gt;最後の作業です。&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/__A7XrZqdcYc/Sr1UfwgwDrI/AAAAAAAAAss/ucx-GvDmzHQ/s288/P1040310.JPG" /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/__A7XrZqdcYc/Sr1UfmqbnlI/AAAAAAAAAso/iP38swZo7X0/s144/P1040309.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;こんな感じで8時間で90個作りました。&lt;br /&gt;久々のはんだだと、このペースが限界。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GRLというのは&lt;a href="http://graffitiresearchlab.com/"&gt;Graffiti Research Lab&lt;/a&gt;の略です。レーザー光線で絵を描くレーザータグが有名かな。このデコチャリもGRLの一環なわけです。&lt;br /&gt;&lt;br /&gt;そしてこの日の夕方から、寿町でレーザータグをやるとのことで見物に行きました。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/__A7XrZqdcYc/Sr1Ugu3kbBI/AAAAAAAAAs4/iitePNuFlZg/s400/P1040328.JPG" /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/__A7XrZqdcYc/Sr1Ug_SgfMI/AAAAAAAAAs8/5lnq4FSp0ME/s400/P1040329.JPG"/&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/__A7XrZqdcYc/Sr1UhEOMgEI/AAAAAAAAAtA/Q7gcq7aaZDg/s400/P1040330.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ヨコハマ国際映像祭のチケットはローソンで買えるそうです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1379713551780775475?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1379713551780775475/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1379713551780775475' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1379713551780775475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1379713551780775475'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/09/blog-post.html' title='はんだづけのお手伝い'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/__A7XrZqdcYc/Sr1UesoEwDI/AAAAAAAAAsc/sSFzXAzihYI/s72-c/P1040300.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2255832918106482361</id><published>2009-09-09T22:54:00.002+09:00</published><updated>2009-09-09T22:57:41.120+09:00</updated><title type='text'>Remember The Milk 簡単入力</title><content type='html'>&lt;a href="http://blog.rememberthemilk.com/2009/09/introducing-smart-add-a-smarter-way-to-add-your-tasks/"&gt;これ&lt;/a&gt;のSmart Addのやり方をリストにした。&lt;br /&gt;&lt;br /&gt;t ) 入力開始&lt;br /&gt;^ ) 期日&lt;br /&gt;! ) 優先度&lt;br /&gt;# ) 一つ目の#はリスト&lt;br /&gt;# ) 二つ目の#はタグ&lt;br /&gt;@ ) 場所&lt;br /&gt;* ) リピート&lt;br /&gt;= ) 予測時間&lt;br /&gt;&lt;br /&gt;時間系の指定はある程度アバウトでOK。&lt;br /&gt;http:// っぽく書くとURLとして扱われる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2255832918106482361?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2255832918106482361/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2255832918106482361' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2255832918106482361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2255832918106482361'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/09/remember-milk.html' title='Remember The Milk 簡単入力'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-218120616528806321</id><published>2009-08-27T01:01:00.002+09:00</published><updated>2009-08-27T01:05:54.558+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>PythonでNotifyOSD</title><content type='html'>眠いので簡単に。後で追記するかも。&lt;br /&gt;&lt;br /&gt;角ウサギからUbuntuの通知欄が格好良くなったのだけど、それをPythonから使うための簡単なコード。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;import pynotify&lt;br /&gt;&lt;br /&gt;pynotify.init("notify-example")&lt;br /&gt;n = pynotify.Notification(&lt;br /&gt;    "notify-example",&lt;br /&gt;    "Hello, NotifyOSD",&lt;br /&gt;    "notification-message-IM")&lt;br /&gt;n.show()&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-218120616528806321?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/218120616528806321/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=218120616528806321' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/218120616528806321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/218120616528806321'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/08/pythonnotifyosd.html' title='PythonでNotifyOSD'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-13960110182846274</id><published>2009-08-02T11:41:00.006+09:00</published><updated>2009-10-27T22:30:22.243+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>UbuntuでWiiリモコンアプリ開発</title><content type='html'>ちょっと前からUbuntuでWiiリモコンを使ったアプリケーションを作る方法を調べていて、基本的な事がやっと分かったのでメモ。&lt;br /&gt;事後的に書いているので、足りないところがあるかも。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;用意するもの&lt;/h4&gt;&lt;br /&gt;Ubuntuの入ったパソコン(バージョンは9.04を使っています)&lt;br /&gt;Wiiリモコン&lt;br /&gt;センサーバー(自作してもいいけど)&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;インストール&lt;/h4&gt;&lt;br /&gt;まずは何はなくとも関連するライブラリのインストール。&lt;br /&gt;cwiidというモジュールと、それのpythonバインドを使います。今回Pythonは2.6でやりました。3.0で出来るかは未調査です。&lt;br /&gt;&lt;pre&gt;apt-get install python-cwiid&lt;/pre&gt;&lt;br /&gt;これで基本的なところは入るはず。&lt;br /&gt;WiiリモコンとUbuntuの疎通確認にはwmguiが便利。&lt;br /&gt;&lt;pre&gt;apt-get install wmgui&lt;/pre&gt;&lt;br /&gt;これについては説明を省きます。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;基本のコード&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import cwiid&lt;br /&gt;import time&lt;br /&gt;&lt;br /&gt;#Wiimoteクラスをインスタンス化する&lt;br /&gt;#press 1 + 2 button&lt;br /&gt;wiimote = cwiid.Wiimote()&lt;br /&gt;&lt;br /&gt;#レポートモードを設定&lt;br /&gt;wiimote.rpt_mode = cwiid.RPT_ACC&lt;br /&gt;&lt;br /&gt;#こういう指定もできる&lt;br /&gt;#wiimote.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC&lt;br /&gt;&lt;br /&gt;#レポートモード一覧&lt;br /&gt;#cwiid.RPT_ACC&lt;br /&gt;#cwiid.RPT_CLASSIC&lt;br /&gt;#cwiid.RPT_IR&lt;br /&gt;#cwiid.RPT_STATUS&lt;br /&gt;#cwiid.RPT_BTN&lt;br /&gt;#cwiid.RPT_EXT&lt;br /&gt;#cwiid.RPT_NUNCHUK&lt;br /&gt;&lt;br /&gt;#そして状態取得&lt;br /&gt;while True:&lt;br /&gt;   print wiimote.state&lt;br /&gt;   time.sleep(1)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;基本のコード解説&lt;/h4&gt;&lt;br /&gt;importは見ての通り。timeはウェイトを仕込むためなので必須ではないです。念のため。&lt;br /&gt;注意すべきは&lt;code&gt;wiimote = cwiid.Wiimote()&lt;/code&gt;のところ。このWiimoteのインスタンス化のタイミングで、Wiiリモコンの1ボタンと2ボタンを同時押ししないと、インスタンス化してくれず、RuntimeErrorが投げられてしまう。&lt;br /&gt;これではちょっと不便なので回避方法が無いかは調べているところ。&lt;br /&gt;&lt;br /&gt;無事インスタンス化されたら、次は状態取得。wiimoteインスタンスのrpt_modeというフィールドに、&lt;code&gt;WiiMote.RPT_&lt;/code&gt;で始まるフラグを入れると、それに応じた値がwiimote.stateに入るようになります。このフラグは論理和で複数取得が可能なので、ボタン状態と傾きの2つが知りたかったら、&lt;code&gt;wiimote.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC&lt;/code&gt;とやればOK。&lt;br /&gt;どこを指しているかを知るにはRPT_IRを使います。この時、センサーバーかその代わりが無いと、何の値も取得できません。&lt;br /&gt;&lt;br /&gt;ここから先は、&lt;a href="http://abstrakraft.org/cwiid/"&gt;Cwiidのサイト&lt;/a&gt;とかを参考にして下さい。とはいえ、Cwiidのサイトは分かり辛いのですが。&lt;br /&gt;今回最も、役に立ったのは、&lt;a href="http://fazerjogos.org/?p=40"&gt;このページ(リンク切れ中 2009/10/27時点)&lt;/a&gt;です。言葉は分からないけど、画像とサンプルコードのおかげで、どうすればいいのか非常に分かりやすいです。&lt;br /&gt;というか、上に書いたことのほとんどは、このページの前部分の要約みたいなものだったりします。&lt;br /&gt;後ろの方には、キャリブレーションのやり方も出ているので参考にどうぞ。&lt;br /&gt;(cwiidのサイトにもキャリブレーションのやり方は書いてあります)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;雑談&lt;br /&gt;&lt;br /&gt;昨日、本屋に行ったら、WiiRemoteプログラミングという本が出ていたのだけど、&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kameturu-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=4274067505&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="width: 120px; height: 240px;" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;内容はWindowsでの開発だったので、残念ながら私の役には立ちそうになかった。センサーバーの自作とかも載っていたけど、そのために1冊買うのはちょっとなあ。将来買うかもしれないけど、少なくとも今はそういう本があることだけ覚えておくことにしよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-13960110182846274?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/13960110182846274/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=13960110182846274' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/13960110182846274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/13960110182846274'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/08/ubuntuwii.html' title='UbuntuでWiiリモコンアプリ開発'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3133425926944979275</id><published>2009-08-02T09:43:00.004+09:00</published><updated>2009-08-02T11:31:10.695+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>サマーウォーズ見てきた</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__A7XrZqdcYc/SnT6VWUgLuI/AAAAAAAAAl0/jLRsC7lCNug/s1600-h/poster01.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 226px; height: 320px;" src="http://4.bp.blogspot.com/__A7XrZqdcYc/SnT6VWUgLuI/AAAAAAAAAl0/jLRsC7lCNug/s320/poster01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5365188300780875490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://s-wars.jp/index.html"&gt;サマーウォーズ&lt;/a&gt;見てきました。&lt;br /&gt;&lt;br /&gt;何書いてもネタバレになるので、公式サイトにある情報だけで簡単に。&lt;br /&gt;&lt;br /&gt;「デジモンアドベンチャー ぼくらのウォーゲーム」が好きな人は、確実にお勧め。&lt;br /&gt;デジタルワールド(ネット世界)での危機が、現実の危機へと繋がっていくという基本的な部分は同じだけど、ウォーゲームでの演出が、サマーウォーズでどう変わっているのか。子供たちだけの戦争から、親戚一同による戦争になることで、物語がどう変化するのかとか、いろいろな見方が楽しめます。&lt;br /&gt;&lt;br /&gt;もう一つ、この物語は、主人公のネット世界のアバターが乗っ取られる事から展開していくのだけど、その姿はミッキーマウスを彷彿とさせる姿。そしてそれに対抗する親戚軍団の一人のアバターがウサギの姿。で、この映画の配給はワーナー。&lt;br /&gt;つまり、ウサギのオズワルド対ミッキーマウス = ワーナー 対 ディズニーという構図があるわけです。物語の舞台の一つであるネットサービス集合体の名前もOZなので、オズワルドを暗示しているようないないような。&lt;br /&gt;物語としては、この構図自体にそれほど意味を持たせているようでは無いのだけど。&lt;br /&gt;&lt;br /&gt;SFとしてはデジタルワールドとデジモンという、2つの大きな嘘をつけなくなった分、細かいところで苦労しているなあという印象。&lt;br /&gt;だけど物語自体は単純明快で展開もテンポ良く進むので、そういうごちゃごちゃしたことは見終わった後に考えて、観劇中は物語に没入しといた方がお得です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3133425926944979275?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3133425926944979275/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3133425926944979275' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3133425926944979275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3133425926944979275'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/08/blog-post_02.html' title='サマーウォーズ見てきた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__A7XrZqdcYc/SnT6VWUgLuI/AAAAAAAAAl0/jLRsC7lCNug/s72-c/poster01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7476029671652326004</id><published>2009-08-01T09:50:00.005+09:00</published><updated>2009-08-01T10:22:56.645+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>コアラの中のアンドロイドと、動かない砂糖</title><content type='html'>今更気づいたけど、Ubuntu9.10に向けてUbuntuの中でAndroidのアプリケーションを動かそうという、取り組みがあるらしい。&lt;br /&gt;&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/Specs/AndroidExecutionEnvironment"&gt;Specs/AndroidExecutionEnvironment&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9.04ではSugar環境がちゃんと動いてくれず、いろいろ設定を変えたりしたり、jhbuildから動かそうと四苦八苦していまして。結局出来ないので余っているマシンに8.04を入れて、そっちでやろうと思っていたのですが、Androidに心移りしそう。&lt;br /&gt;&lt;br /&gt;SugarやるならFedoraってことなのかね。&lt;br /&gt;RedHat系は慣れていないので避けたいのだけど、開発環境と割り切れば一台用意してもいいのかな。&lt;br /&gt;&lt;br /&gt;追記:&lt;br /&gt;Fedora11はSugarで起動できるオプションがあるらしい。俄然欲しくなってきました。&lt;br /&gt;古いPCを捨てて、コンパクトなマシンを買おうかな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7476029671652326004?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7476029671652326004/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7476029671652326004' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7476029671652326004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7476029671652326004'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/08/blog-post.html' title='コアラの中のアンドロイドと、動かない砂糖'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4545064920666725732</id><published>2009-07-21T22:53:00.003+09:00</published><updated>2009-07-21T23:11:29.105+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>新メガネ</title><content type='html'>前から、もう一本くらいメガネが欲しいと思っていたので、999.9で新しいメガネを購入。&lt;br /&gt;今まで使っているものより、一段階だけレンズのパワーを抑えてもらった。&lt;br /&gt;&lt;br /&gt;999.9にしたのは、今使っているのも999.9だからという単純な理由。だけど、999.9は顔にただ乗っけているだけ、というよりレンズが目の前に浮いている感覚になるくらい掛け心地が良い。むしろ掛けていることを忘れると言ったほうがいいか。&lt;br /&gt;&lt;br /&gt;視力を測ってくれた店員さん(？)に聞いたのだけど、近視の人は、近くのものを見るときにはメガネを外したり、度が弱いメガネに変えたほうがいいらしい。&lt;br /&gt;職業柄、ほぼ一日中モニタに向かって作業しているのに、今までずっとメガネつけっぱなしだったよ。&lt;br /&gt;これからは、モニタ作業中はメガネを外すようにします。&lt;br /&gt;これで視力が回復するといいなあ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4545064920666725732?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4545064920666725732/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4545064920666725732' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4545064920666725732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4545064920666725732'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/07/blog-post.html' title='新メガネ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1618057591139837007</id><published>2009-06-29T04:46:00.003+09:00</published><updated>2009-06-29T04:58:03.832+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>電車の行き先を聞かれた</title><content type='html'>上野駅で電車が目的地に止まるかを聞かれた。&lt;br /&gt;英語で聞かれたのだが、相手の発音がよくないせいで、行きたい場所が新宿なのか千住なのか分からず。&lt;br /&gt;確率としては新宿の方が高そうだけど、新宿と千住では方向が違うので迂闊に答えられない。&lt;br /&gt;こっちも余裕がなかったので、教えられず。&lt;br /&gt;&lt;br /&gt;地名は末尾まではっきり発音してくれないと困ります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1618057591139837007?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1618057591139837007/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1618057591139837007' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1618057591139837007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1618057591139837007'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/06/blog-post_29.html' title='電車の行き先を聞かれた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2513873837051188298</id><published>2009-06-21T14:26:00.002+09:00</published><updated>2009-06-21T14:36:49.862+09:00</updated><title type='text'>マカーの茄子さんがちょっと通りますよ</title><content type='html'>４年つきあったレッツノートW４からMacBookに移行して早２週間。&lt;br /&gt;まだまだ使いこなせていないですが、順調に移動時の重さで腰が痛くなってきています。&lt;br /&gt;&lt;br /&gt;私のやっているLLPの会計業務を移行しなくてはいけないため、Mac用の会計ソフトを少し調べましたが、結果WINソフト最強。ということみたい。&lt;br /&gt;なので、Macソフトの購入は見送り、Windows7をまち、弥生会計導入という流れかなと。&lt;br /&gt;&lt;br /&gt;それまでは、レッツノートに会計専用機としてがんばってもらうことにしようかと思います。&lt;br /&gt;&lt;br /&gt;以下、Macソフトの情報まとめ&lt;br /&gt;&lt;br /&gt;■A&amp;amp;A会計&lt;br /&gt;http://aakaikei.weblogs.jp/home/&lt;br /&gt;→減価償却ができないそうな。&lt;br /&gt;&lt;br /&gt;■macの会計&lt;br /&gt;http://www.magrex.co.jp/products/MacG/kaikei/index.html&lt;br /&gt;→伝票の貸方／借方がつりあってなくても処理してしまうっぽい。&lt;br /&gt;&lt;br /&gt;Macソフトの難点&lt;br /&gt;・開発の継続性が微妙&lt;br /&gt;・ユーザーが少なすぎてぐぐっても解決しない&lt;br /&gt;・小規模会社の開発でサポート体制が不安&lt;br /&gt;&lt;br /&gt;まあ、小さな会社なので、上のソフトでもできるとは思うのですが、今使ってるwinソフトにもなれてしまったので、このままでいこうかなと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2513873837051188298?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2513873837051188298/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2513873837051188298' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2513873837051188298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2513873837051188298'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/06/blog-post_21.html' title='マカーの茄子さんがちょっと通りますよ'/><author><name>茄子</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1614174279676826351</id><published>2009-06-19T20:43:00.002+09:00</published><updated>2009-06-19T20:48:16.268+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>道を聞かれた</title><content type='html'>今朝、うちの近所で二人連れに駅の場所を聞かれました。&lt;br /&gt;近所の人なら駅の場所は確実に知っているわけで、その人たちは地元民ではないのは確実。&lt;br /&gt;&lt;br /&gt;「迷うくらいなら、電車で来いよ！」とか思いつつ、教えてあげました。&lt;br /&gt;バスで来たのかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1614174279676826351?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1614174279676826351/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1614174279676826351' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1614174279676826351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1614174279676826351'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/06/blog-post_19.html' title='道を聞かれた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8794700933464481612</id><published>2009-06-04T20:46:00.002+09:00</published><updated>2009-06-04T21:06:03.242+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>オンラインブックマーク移行</title><content type='html'>これまでGoogleブックマークを使っていましたが、ブックマークの量が300を超えたあたりから、使い物にならなくなってきたので、Deliciousに移行しました。&lt;br /&gt;&lt;br /&gt;実際にはちょっと前にDeliciousのアカウントを取って新しいブックマークは出来るだけDeliciousにつけるようにはしていて、昨日までインポート機能があることに気付かなかっただけなんですが。&lt;br /&gt;&lt;br /&gt;餅は餅屋というか、オンラインブックマークとしてはDeliciousの方が使い勝手が良いように感じます。Firefox拡張の使い勝手もGoogleツールバーやGMarkより、Delicious拡張の方が気が利いている印象。&lt;br /&gt;&lt;br /&gt;一番大きな違いは、タグを打ちやすいところと、自動で階層化してくれるところ。&lt;br /&gt;これでブクマ1000個くらいまでは頑張れるはず。&lt;br /&gt;それ以上になると、別の表示法が必要になるかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8794700933464481612?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8794700933464481612/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8794700933464481612' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8794700933464481612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8794700933464481612'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/06/blog-post.html' title='オンラインブックマーク移行'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-809553112370620772</id><published>2009-05-18T21:51:00.004+09:00</published><updated>2009-05-18T22:07:29.891+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>いつの間にか変わっていたもの</title><content type='html'>気づくと一年前と変わっていたもの2つ。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;メインエディタ&lt;/h4&gt;&lt;br /&gt;EmacsからVIMに変わった。&lt;br /&gt;完全に切り替わった時期は、おそらく去年の年末から年明けぐらいにかけて。その頃、肩から首にかけて激痛が続いたときがあって、それが決定打になったんだと思う。&lt;br /&gt;左手の小指や腕への負担は減ったように思う。&lt;br /&gt;ただし、他のエディタでも:wとか:%s/とか打ってしまうという問題が発生。&lt;br /&gt;さらにEmacsのキーバインドを忘れかけているという状況にある。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;バージョン管理システム&lt;/h4&gt;&lt;br /&gt;前はmercurialを個人用VCSとして使っていたけど、いつのまにかBazaarになった。&lt;br /&gt;ubuntuをつかっているんだし、せっかくだからBazaarを試してみようと思ったことは覚えているけど、mercurialを完全に置き換えた時期を思い出せない。&lt;br /&gt;&lt;br /&gt;個人利用の範囲では、mercurialとそれほど変わらない印象。&lt;br /&gt;&lt;code&gt;bzr ignore&lt;/code&gt;で、非管理ファイルを簡単に追加できるところは気に入っているけど、それほどこだわりがあるわけでもない。&lt;br /&gt;来年にはgitやdarcsを使っているかも。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;他にも気づいていないだけで、変わっている事はあるのかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-809553112370620772?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/809553112370620772/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=809553112370620772' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/809553112370620772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/809553112370620772'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/05/blog-post_18.html' title='いつの間にか変わっていたもの'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2989312476282544702</id><published>2009-05-02T08:40:00.002+09:00</published><updated>2009-05-02T08:48:59.935+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>汎用モバイルバッテリー</title><content type='html'>ITmedia +D を見ていたら&lt;a href="http://plusd.itmedia.co.jp/pcuser/articles/0905/01/news015.html"&gt;MyBattery Book X&lt;/a&gt;という汎用バッテリーの記事を発見。&lt;br /&gt;&lt;br /&gt;5～19Vまで出せるので、いろんなものに使えそう。&lt;br /&gt;問題は1万8000円という価格かな。&lt;br /&gt;とはいえ、エネループを何本も直列するよりは、これを買ったほうが便利なことは確実かと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2989312476282544702?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2989312476282544702/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2989312476282544702' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2989312476282544702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2989312476282544702'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/05/blog-post.html' title='汎用モバイルバッテリー'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7092080591937304733</id><published>2009-04-28T06:53:00.002+09:00</published><updated>2009-04-28T06:56:09.782+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 9.04 画面輝度</title><content type='html'>画面輝度が変えられないと思ってたけど、それはキーボードショートカットからできないだけで、「電源管理の設定」からだと、ちゃんと設定できた。&lt;br /&gt;&lt;br /&gt;ショートカットも頑張れば設定できるかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7092080591937304733?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7092080591937304733/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7092080591937304733' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7092080591937304733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7092080591937304733'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/04/ubuntu-904_28.html' title='Ubuntu 9.04 画面輝度'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1147579092290378360</id><published>2009-04-26T22:04:00.002+09:00</published><updated>2009-04-29T22:08:23.604+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='たのまれごと'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>たのまれごと</title><content type='html'>日頃、道を聞かれたり、写真を取ることを頼まれたりすることが多いと感じているので、これから記録を残してみる。&lt;br /&gt;&lt;br /&gt;2009年4月26日&lt;br /&gt;&lt;br /&gt;取手駅ホームにて、老婦人に牛久に行く電車を聞かれる。&lt;br /&gt;乗り場が違うことと、電光掲示板の場所を教える。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1147579092290378360?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1147579092290378360/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1147579092290378360' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1147579092290378360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1147579092290378360'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/04/blog-post_26.html' title='たのまれごと'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1847200128843501102</id><published>2009-04-26T20:31:00.002+09:00</published><updated>2009-04-26T20:44:25.206+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 9.04 若干のトラブル</title><content type='html'>リポジトリの設定が重複(duplicate)しているという警告が出た。&lt;br /&gt;そのままでもapt-get、Synapticともに、動作しているようだけど、気持ち悪いのでsource.listを覗いてみる。&lt;br /&gt;するとこんな風に、リポジトリのタイプが空白で区切られているのと、&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;deb http://jp.archive.ubuntu.com/ubuntu/ jaunty-updates main restricted universe multiverse&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;こんな風に、一つずつ書いてあるのが書いてある。&lt;br /&gt;&lt;blockquote&gt;deb http://jp.archive.ubuntu.com/ubuntu/ jaunty universe&lt;/blockquote&gt;&lt;br /&gt;で、どうやら上の、空白区切りだけあれば十分らしいので、一つずつ版については全部頭に#をつけて、コメントアウトしたところ警告が消えた。&lt;br /&gt;multiverseが有効になっているのはちょこっとだけ気になるけど。&lt;br /&gt;正しい対処か知らんけど、とりあえず解決としよう。&lt;br /&gt;&lt;br /&gt;しかし、どのタイミングでこうなったんだろ？&lt;br /&gt;インストール直後には警告は出なかったはずなんだけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1847200128843501102?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1847200128843501102/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1847200128843501102' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1847200128843501102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1847200128843501102'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/04/ubuntu-904_26.html' title='Ubuntu 9.04 若干のトラブル'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8638502422773030722</id><published>2009-04-25T07:34:00.002+09:00</published><updated>2009-04-25T07:45:42.081+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 9.04 導入</title><content type='html'>Ubuntu 9.04 Jaunty Jackalope(陽気な角うさぎ)をtypeZに早速入れました。&lt;br /&gt;&lt;br /&gt;8.10で不安定だった無線LANが安定動作するようになったのが一番の嬉しいところ。&lt;br /&gt;起動が速くなったらしいけど、私の環境では数秒程度の効果。ちゃんと計ってはいませんが。&lt;br /&gt;新しい情報通知方式は結構好みです。&lt;br /&gt;サスペンドも出来るし、概ね良い感触。&lt;br /&gt;&lt;br /&gt;デフォルト状態で、ディスプレイの輝度調整が出来ないのは相変わらずっぽい。&lt;br /&gt;致命的ではないので、もう気にしない事にします。&lt;br /&gt;&lt;br /&gt;今回はServer版とNetbook版はいろいろパワーアップしているみたいですが、Desktop版は地味というか堅実なバージョンアップなようです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8638502422773030722?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8638502422773030722/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8638502422773030722' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8638502422773030722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8638502422773030722'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/04/ubuntu-904.html' title='Ubuntu 9.04 導入'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1638768842327615367</id><published>2009-04-22T19:58:00.002+09:00</published><updated>2009-04-22T20:04:06.220+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>癒しサイト</title><content type='html'>&lt;a href="http://www.prettyloaded.com/"&gt;Pretty Loaded&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;延々と色々な「now loading」を表示してくれるサイト。&lt;br /&gt;一日中見ていられる自信がある。&lt;br /&gt;&lt;br /&gt;現代のプログラムピクチャーと言えますね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1638768842327615367?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1638768842327615367/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1638768842327615367' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1638768842327615367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1638768842327615367'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/04/blog-post_22.html' title='癒しサイト'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-9111918279223470631</id><published>2009-04-07T23:10:00.003+09:00</published><updated>2009-04-07T23:23:55.181+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>NHKワンセグ2開始</title><content type='html'>ワンセグ端末を持ってない私にはあまり関係ないけど、NHKが&lt;a href="http://www.nhk.or.jp/1seg-start/1seg2/index.html"&gt;ワンセグ2&lt;/a&gt;というワンセグ専門チャンネルを開始したそうな。&lt;br /&gt;&lt;br /&gt;目的としては以下の通り(NHKワンセグ2より抜粋)。&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;現在のワンセグは固定テレビ向け放送のサイマル（同時）放送がほとんどであるため、必ずしも携帯電話での視聴に適したコンテンツが放送されているとはいえません。 　ＮＨＫでは、こうした状況に鑑み、放送と通信の融合を先導する意義も込めて、平成２１年４月からワンセグ独自サービスを開始します。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;NHKにやらせて、よさげだったら民放も追従するということかしら。&lt;br /&gt;こういう風にしてNHKはノウハウを蓄積して、民放を突き放していくのですかね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-9111918279223470631?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/9111918279223470631/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=9111918279223470631' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9111918279223470631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9111918279223470631'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/04/nhk2.html' title='NHKワンセグ2開始'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6288627048003322492</id><published>2009-04-05T00:25:00.004+09:00</published><updated>2009-04-05T01:35:04.875+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>「テオ・ヤンセン 砂浜の生命体」展に行ってきた</title><content type='html'>Makeのblogでも時々みかけるテオ・ヤンセンの展覧会に行ってきました。&lt;br /&gt;こういうやつです。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/28342034@N04/3412042412/" title="TheoJansen in Hibiya 01 by kameturu, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3368/3412042412_e8b2b73a3b.jpg" width="500" height="375" alt="TheoJansen in Hibiya 01" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/28342034@N04/3412039418/" title="TheoJansen in Hibiya 05 by kameturu, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3573/3412039418_388e3ed93b.jpg" width="500" height="375" alt="TheoJansen in Hibiya 05" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;展覧会のタイトルの通り、ヤンセンさんは生命体としてこれらの作品を作っているそうな。&lt;br /&gt;実際、風力によってこれらの生命は活動するように設計されています。&lt;br /&gt;会場内に説明は無かったけど、一連のシリーズが作られ始めた1990年は人工生命が流行っていたころだし、ヤンセンさんは大学で物理学を学んでいたそうなので、これらの作品は人工生命研究としての側面もあるのかも。&lt;br /&gt;&lt;br /&gt;さて、生命である以上、当然ながら死もあるわけで、会場内ではそれら死んでしまった過去の作品は「化石」として展示されています。&lt;br /&gt;上の写真の生命体も、化石だそうです。&lt;br /&gt;&lt;br /&gt;一応、今回唯一生きているのは最新作であるこれ。&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/28342034@N04/3411242791/" title="TheoJansen in Hibiya 03 by kameturu, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3588/3411242791_32fc903368.jpg" width="500" height="375" alt="TheoJansen in Hibiya 03" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;といっても、室内展示用に風力伝達用のシャフトを切断されていたりします。&lt;br /&gt;並んでいるペットボトルは風を圧縮して溜め込むための臓器(人間で言えば肝臓の一部の機能か脂肪にあたる？)で、これにより無風状態でも2,3分は活動可能だそうです。&lt;br /&gt;&lt;br /&gt;自己修復や自己複製が出来ないなど生命としてはまだ未完成で、それらを克服させるよう進化させるのがヤンセンさんの目標だそうな。&lt;br /&gt;ヤンセンさんと共生関係を保たないと絶滅するってのもどうにかするのかな。&lt;br /&gt;&lt;br /&gt;会場内にはヤンセンさんの仕事場をイメージしたコーナーがあって、そこにこんなものが。&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/28342034@N04/3411211259/" title="TheoJansen in Hibiya ATARI by kameturu, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3308/3411211259_249c3993f0.jpg" width="500" height="375" alt="TheoJansen in Hibiya ATARI" /&gt;&lt;/a&gt;&lt;br /&gt;ATARI 1040STだそうな。&lt;br /&gt;設計時にコンピュータシミュレートをやるらしいけど、会場にあるってことは、現役で使っているわけではないはず。&lt;br /&gt;今は何使ってるのかな？&lt;br /&gt;&lt;br /&gt;広々としていて、割と自由に撮影もできて、一部の展示品には実際に触れることも出来る、子供から老人まで楽しめるよい展示でした。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6288627048003322492?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6288627048003322492/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6288627048003322492' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6288627048003322492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6288627048003322492'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/04/blog-post.html' title='「テオ・ヤンセン 砂浜の生命体」展に行ってきた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3368/3412042412_e8b2b73a3b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4873580481581611952</id><published>2009-03-30T22:00:00.002+09:00</published><updated>2009-03-30T22:35:16.470+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>00ガンダム テレビ版</title><content type='html'>「人類を超越した主人公が世界最強のロボット兵器に乗って、人類に相互理解を訴えるお話」&lt;br /&gt;&lt;br /&gt;と書くと、ものすごくひどい話に思える。&lt;br /&gt;&lt;br /&gt;00ガンダムは1stをW経由でやり直していると思っていたので、最後は全ガンダム廃棄(オリジナル太陽炉廃棄)だと予想していたけど、全ガンダム残っているという、正反対の結果にちょっと驚いたり。&lt;br /&gt;劇場版のためなのかもしれないけど、一基ぐらい壊れてもいいんじゃないかと思うんだけどな。&lt;br /&gt;どうせティエリアはヴェーダになったんだし、もういらないでしょ。&lt;br /&gt;&lt;br /&gt;劇場版ではもうちょっとマシな展開になるんだろうか。&lt;br /&gt;00ガンダムの木星にまつわる設定は「オリジナル太陽炉の生産場所」程度なわけだけど。何があるんだろ。&lt;br /&gt;イオリア計画という前振りから考えると、既に外宇宙から知的生命体が来ているという展開もありだろうし、巨大な黒い板とオーライザーのバトルとか、せっちゃんがスターチャイルドになるとかそういう面白映画になることを期待しよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4873580481581611952?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4873580481581611952/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4873580481581611952' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4873580481581611952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4873580481581611952'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/03/00.html' title='00ガンダム テレビ版'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6544564765492518772</id><published>2009-03-27T18:39:00.002+09:00</published><updated>2009-03-27T19:12:57.125+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>癒し系ソフト2</title><content type='html'>ライブラリリファレンスを見ていたら、標準ライブラリだけでもプログレスバーを作れることに気付いたので、作ってみた。&lt;br /&gt;Tkinterの拡張であるTixを使えばよいらしい。&lt;br /&gt;&lt;br /&gt;Python3.0とPython2.6で動作を確認済。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;try:&lt;br /&gt;    from tkinter import DISABLED&lt;br /&gt;    from tkinter import Frame&lt;br /&gt;    from tkinter import Button&lt;br /&gt;    from tkinter import tix&lt;br /&gt;except ImportError:&lt;br /&gt;    from Tkinter import DISABLED&lt;br /&gt;    from Tkinter import Frame&lt;br /&gt;    from Tkinter import Button&lt;br /&gt;    import Tix as tix&lt;br /&gt;&lt;br /&gt;class Window(Frame):&lt;br /&gt;    def __init__(self, master=None):&lt;br /&gt;        Frame.__init__(self, master)&lt;br /&gt;        self._p = 0&lt;br /&gt;        self._stopFlg = False&lt;br /&gt;&lt;br /&gt;        self.pack()&lt;br /&gt;        self.createWidgets()&lt;br /&gt;        self.progress()&lt;br /&gt;&lt;br /&gt;    def createWidgets(self):&lt;br /&gt;        self.stopButton = Button(text='now progress', command=self.stopToggle)&lt;br /&gt;        self.stopButton.pack({'side': 'bottom'})&lt;br /&gt;&lt;br /&gt;        self.meter = tix.Meter(value=self._p)&lt;br /&gt;        self.meter.pack({'side': 'bottom'})&lt;br /&gt;&lt;br /&gt;    def stopToggle(self):&lt;br /&gt;        self._stopFlg = not self._stopFlg&lt;br /&gt;        if self._stopFlg:&lt;br /&gt;            self.stopButton.configure(text='now pause')&lt;br /&gt;        else:&lt;br /&gt;            self.stopButton.configure(text='now progress')&lt;br /&gt;            &lt;br /&gt;        self.progress()&lt;br /&gt;    &lt;br /&gt;    def progress(self):&lt;br /&gt;        if self._p &lt; 1:&lt;br /&gt;            if not self._stopFlg:&lt;br /&gt;                self._p = self._p + 0.001&lt;br /&gt;                self.meter['value'] = self._p&lt;br /&gt;                self.after(10, self.progress)&lt;br /&gt;        else:&lt;br /&gt;            self._p = 1&lt;br /&gt;            self.stopButton.configure(text='finished', state=DISABLED)&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    root = tix.Tk()&lt;br /&gt;    app = Window(master = root)&lt;br /&gt;    app.mainloop()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Tkinterの使い方は&lt;a href="http://www.shido.info/index.php"&gt;紫藤のページ&lt;/a&gt;さんの記事を参考にしました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6544564765492518772?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6544564765492518772/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6544564765492518772' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6544564765492518772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6544564765492518772'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/03/2.html' title='癒し系ソフト2'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7783923565712944114</id><published>2009-03-17T18:53:00.004+09:00</published><updated>2009-03-17T19:12:57.889+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>足立美術館 五つ星</title><content type='html'>2年くらい前に行った、島根県の足立美術館がミシュラン観光ガイドで3つ星を獲得したそうです。&lt;br /&gt;厳密に言うと、足立美術館は2つ星で、3つ星とったのは足立美術館の日本庭園だそうですが。&lt;br /&gt;わざわざ分けたのは、美術館が持っている横山大観コレクションを別枠にしたかったのかな？&lt;br /&gt;事情はともあれ、合計5つ星取っている観光地ってミシュランの中でも珍しいんじゃないだろうか。&lt;br /&gt;&lt;br /&gt;あの庭園は、島根に行く機会があるなら絶対に見るべき価値があると断言出来る。それどころか、島根に行ってあれを見ないなんてありえない、と言いたいくらい素晴らしいのですが、今回の3(+2)つ星で大混雑になっちゃうのかなあ。&lt;br /&gt;前に行ったときでさえ、結構混んでたのに。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7783923565712944114?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7783923565712944114/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7783923565712944114' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7783923565712944114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7783923565712944114'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/03/blog-post_17.html' title='足立美術館 五つ星'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6285915602111978493</id><published>2009-03-08T20:02:00.005+09:00</published><updated>2009-03-08T20:36:20.645+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>癒し系ソフト</title><content type='html'>最近ずっとPerlに触っていて、ちょっと疲れたのでPythonで息抜き。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;プログレスバーがだんだん伸びていくのを見ると、とても落ち着くので、そのためだけのアプリを作ってみました。&lt;br /&gt;実行イメージはこんなかんじ。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__A7XrZqdcYc/SbOo20oFfxI/AAAAAAAAAQo/-8lUFmFgjLI/s1600-h/ScreenshotP1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 76px;" src="http://2.bp.blogspot.com/__A7XrZqdcYc/SbOo20oFfxI/AAAAAAAAAQo/-8lUFmFgjLI/s320/ScreenshotP1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310774045393125138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;一時停止も出来る。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__A7XrZqdcYc/SbOo3IJsh_I/AAAAAAAAAQw/7J_PfW4JaiE/s1600-h/ScreenshotP2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 76px;" src="http://2.bp.blogspot.com/__A7XrZqdcYc/SbOo3IJsh_I/AAAAAAAAAQw/7J_PfW4JaiE/s320/ScreenshotP2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310774050634369010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;面倒なので画面はGladeで適当に。プログレスバーの終了処理は適当過ぎるかもしれないけど、ネタでしかないので気にしない。&lt;br /&gt;一応3分で完了するはずだけど、あまり厳密ではない。そもそも、癒されているときにそんなことを考えないので、実用(?)上問題ない。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;基本的な機能は20分ほどで完成。プログレスバーの使い方を調べるのにちょっと時間がかかった。で、ダラダラしたり、Perlについて調べたりする合間に、適当にやっているうちに出来あがり。やはり慣れている言語だと速い。調べたこともライブラリの使い方であって、Pythonそのものについて調べるなんてことはまったく無し。&lt;br /&gt;Perlでもこれくらいさくさく書けるようになるだろうか。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以下、コード。ui.gladeは適当に。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;import gtk&lt;br /&gt;import gtk.glade&lt;br /&gt;import gobject&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Progress(object):&lt;br /&gt;&lt;br /&gt;    def __init__(self):&lt;br /&gt;        self.gladefile = 'ui.glade'&lt;br /&gt;        self.wTree = gtk.glade.XML(self.gladefile)&lt;br /&gt;&lt;br /&gt;        self.window = self.wTree.get_widget('window')&lt;br /&gt;        self.progress = self.wTree.get_widget('progressbar1')&lt;br /&gt;        self.button = self.wTree.get_widget('togglebutton1')&lt;br /&gt;        self.flag = True&lt;br /&gt;&lt;br /&gt;        self.window.connect('destroy', gtk.main_quit)&lt;br /&gt;        self.button.connect('toggled', self.on_toggled)&lt;br /&gt;&lt;br /&gt;        self.timer = gobject.timeout_add(100, self.update_progressbar)&lt;br /&gt;&lt;br /&gt;    def show_all(self):&lt;br /&gt;        self.window.show_all()&lt;br /&gt;&lt;br /&gt;    def update_progressbar(self):&lt;br /&gt;        if self.flag:&lt;br /&gt;            current_fraction = self.progress.get_fraction()&lt;br /&gt;            if current_fraction &amp;lt; 1:&lt;br /&gt;                self.progress.set_fraction(current_fraction + 0.000556)&lt;br /&gt;        return True&lt;br /&gt;&lt;br /&gt;    def on_toggled(self, *args):&lt;br /&gt;        self.flag = not self.flag&lt;br /&gt;        if self.flag:&lt;br /&gt;            self.button.set_label('ぷろぐれすちゅう')&lt;br /&gt;        else:&lt;br /&gt;            self.button.set_label('ていしちゅう')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    prog = Progress()&lt;br /&gt;    prog.show_all()&lt;br /&gt;    gtk.main()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;99%でなかなか終わらないとか、60%ぐらいで0%に戻る機能も考えたけど、癒し効果が無くなりそうなので、やめました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6285915602111978493?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6285915602111978493/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6285915602111978493' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6285915602111978493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6285915602111978493'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/03/blog-post.html' title='癒し系ソフト'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__A7XrZqdcYc/SbOo20oFfxI/AAAAAAAAAQo/-8lUFmFgjLI/s72-c/ScreenshotP1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-5640318032094263455</id><published>2009-03-05T23:05:00.002+09:00</published><updated>2009-03-05T23:21:19.149+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Perl学習中 ここ数週間の成果</title><content type='html'>ここ数週間の頑張りの成果。&lt;br /&gt;CSVから配列を作るサブロジックと、配列からハッシュを作るサブロジック。&lt;br /&gt;最終的にハッシュからDBにinsertするものを作りたかったけど、そこはDBIx::Classにお任せすることにした。&lt;br /&gt;一応インサート文を組み立てるサブロジックも作ったけど、使うのはちょっとどうかと思う作り。手元のソースからはあとで消そう。&lt;br /&gt;そうなるとモジュール名も変えなきゃ。&lt;br /&gt;&lt;br /&gt;Csv2Db.pm&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl -Ilib&lt;br /&gt;package Csv2Db;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;&lt;br /&gt;use IO::File;&lt;br /&gt;use Text::CSV_XS;&lt;br /&gt;&lt;br /&gt;sub csv2array {&lt;br /&gt;    shift;&lt;br /&gt;    my $file = shift;&lt;br /&gt;&lt;br /&gt;    my $csv_reader = new Text::CSV_XS( { binary =&gt; 1 } );&lt;br /&gt;    my @_line      = ();&lt;br /&gt;    my @csv_lines  = ();&lt;br /&gt;&lt;br /&gt;    while (&lt;$file&gt;) {&lt;br /&gt;&lt;br /&gt;        #CSV_XSを利用し、カラムを分解する&lt;br /&gt;        $csv_reader-&gt;parse($_)&lt;br /&gt;            || die "error: " . $csv_reader-&gt;error_input() . "\n";&lt;br /&gt;        @_line = $csv_reader-&gt;fields();&lt;br /&gt;        push( @csv_lines, [@_line] );&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    return @csv_lines;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub array2hash {&lt;br /&gt;    shift;&lt;br /&gt;    my ( $schema, $csvlist ) = @_;&lt;br /&gt;&lt;br /&gt;    _check_hash_refference($schema);&lt;br /&gt;    _check_array_refference($csvlist);&lt;br /&gt;&lt;br /&gt;    my %hash = ();&lt;br /&gt;&lt;br /&gt;    foreach my $key ( keys %$schema ) {&lt;br /&gt;        $hash{$key} = @$csvlist[ $schema-&gt;{$key} ];&lt;br /&gt;    }&lt;br /&gt;    return %hash;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub createInsertSql {&lt;br /&gt;    shift;&lt;br /&gt;    my ( $table, $valueHash ) = @_;&lt;br /&gt;    &lt;br /&gt;    _check_hash_refference($valueHash);&lt;br /&gt;&lt;br /&gt;    my $fields = '';&lt;br /&gt;    my $sql    = "INSERT $table SET ";&lt;br /&gt;&lt;br /&gt;    foreach my $key ( sort keys %$valueHash ) {&lt;br /&gt;        $fields = $fields . "$key='$valueHash-&gt;{$key}', ";&lt;br /&gt;    }&lt;br /&gt;    $fields = substr( $fields, 0, -2 );&lt;br /&gt;&lt;br /&gt;    $sql = $sql . $fields . ";";&lt;br /&gt;&lt;br /&gt;    return $sql;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub _check_hash_refference {&lt;br /&gt;    my $hash = shift;&lt;br /&gt;    die 'Undefined Hash..'    unless defined $hash;&lt;br /&gt;    die 'Not a HASH refernce..' unless ref $hash eq 'HASH';&lt;br /&gt;    die 'Empty Hash..'        unless keys(%$hash) &gt; 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub _check_array_refference {&lt;br /&gt;    my $array = shift;&lt;br /&gt;    die 'Undefined Array..'    unless defined $array;&lt;br /&gt;    die 'Not a ARRAY refernce..' unless ref $array eq 'ARRAY';&lt;br /&gt;    die 'Empty Array..'        unless $#$array &gt; -1;&lt;br /&gt;}&lt;br /&gt;1;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ここからテストコード。&lt;br /&gt;&lt;br /&gt;01_csv2db_csv2array.t&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use Test::More;&lt;br /&gt;use File::Temp qw( tempfile );&lt;br /&gt;&lt;br /&gt;use Csv2Db::Csv2Db;&lt;br /&gt;&lt;br /&gt;plan( tests =&gt; 2 );&lt;br /&gt;&lt;br /&gt;#test1&lt;br /&gt;{&lt;br /&gt;    my ( $tmp, $filename ) = tempfile();&lt;br /&gt;    print {$tmp} "0,k,hiro,m\n1,k,mai,f";&lt;br /&gt;    close($tmp);&lt;br /&gt;&lt;br /&gt;    my @result_arr&lt;br /&gt;        = ( [ ( '0', 'k', 'hiro', 'm' ) ], [ ( '1', 'k', 'mai', 'f' ) ] );&lt;br /&gt;&lt;br /&gt;    open( $tmp, "&lt;", $filename );&lt;br /&gt;    my @res = Csv2Db-&gt;csv2array($tmp);&lt;br /&gt;    ok( eq_array( \@res, \@result_arr ), 'normal pattern' );&lt;br /&gt;    close($tmp);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#test2&lt;br /&gt;{&lt;br /&gt;    my ( $tmp, $filename ) = tempfile();&lt;br /&gt;    close($tmp);&lt;br /&gt;&lt;br /&gt;    open( $tmp, "&lt;", $filename );&lt;br /&gt;    my @res = Csv2Db-&gt;csv2array($tmp);&lt;br /&gt;    ok( eq_array( \@res, [ () ] ), 'empty file' );&lt;br /&gt;    close($tmp);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;02_csv2db_array2hash.t&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use Test::More;&lt;br /&gt;&lt;br /&gt;use Csv2Db::Csv2Db;&lt;br /&gt;&lt;br /&gt;plan( tests =&gt; 7 );&lt;br /&gt;&lt;br /&gt;#normal&lt;br /&gt;{&lt;br /&gt;    my %schema = ( 'id' =&gt; 0, 'fname' =&gt; 2 );&lt;br /&gt;    my @arr = ( '000', 'k', 'name' );&lt;br /&gt;    my %result = ( 'id' =&gt; '000', 'fname' =&gt; 'name' );&lt;br /&gt;    my %test = Csv2Db-&gt;array2hash( \%schema, \@arr );&lt;br /&gt;    ok( eq_hash( \%test, \%result ), 'normal case' );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#undef hash&lt;br /&gt;{&lt;br /&gt;    my @arr    = ( '000', 'k', 'name' );&lt;br /&gt;    my %result = ( 'id' =&gt; '000', 'fname' =&gt; 'name' );&lt;br /&gt;&lt;br /&gt;    eval { my %test = Csv2Db-&gt;array2hash( undef, \@arr ); };&lt;br /&gt;    like( $@, qr/Undefined/, 'undef schema' );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#empty hash&lt;br /&gt;{&lt;br /&gt;    my %schema = ();&lt;br /&gt;    my @arr = ( '000', 'k', 'name' );&lt;br /&gt;    my %result = ( 'id' =&gt; '000', 'fname' =&gt; 'name' );&lt;br /&gt;&lt;br /&gt;    eval{my %test = Csv2Db-&gt;array2hash( \%schema, \@arr )};&lt;br /&gt;    like( $@, qr/Empty/, 'empty schema' );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#not hash&lt;br /&gt;{&lt;br /&gt;    my @schema = ();&lt;br /&gt;    my @arr = ( '000', 'k', 'name' );&lt;br /&gt;    my %result = ( 'id' =&gt; '000', 'fname' =&gt; 'name' );&lt;br /&gt;&lt;br /&gt;    eval{my %test = Csv2Db-&gt;array2hash( \@schema, \@arr )};&lt;br /&gt;    like( $@, qr/HASH/, 'not a hash' );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#undef arr&lt;br /&gt;{&lt;br /&gt;    my %schema = ( 'id' =&gt; 0, 'fname' =&gt; 2 );&lt;br /&gt;    &lt;br /&gt;    my %result = ( 'id' =&gt; '000', 'fname' =&gt; 'name' );&lt;br /&gt;&lt;br /&gt;    eval { my %test = Csv2Db-&gt;array2hash( \%schema, undef ); };&lt;br /&gt;    like( $@, qr/Undefined/, 'undef array' );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#empty arr&lt;br /&gt;{&lt;br /&gt;    my %schema = ( 'id' =&gt; 0, 'fname' =&gt; 2 );&lt;br /&gt;    my @arr = ();&lt;br /&gt;    my %result = ( 'id' =&gt; '000', 'fname' =&gt; 'name' );&lt;br /&gt;&lt;br /&gt;    eval{my %test = Csv2Db-&gt;array2hash( \%schema, \@arr )};&lt;br /&gt;    like( $@, qr/Empty/, 'empty array' );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#not hash&lt;br /&gt;{&lt;br /&gt;    my %schema = ( 'id' =&gt; 0, 'fname' =&gt; 2 );&lt;br /&gt;    my $arr = 'not a array';&lt;br /&gt;    my %result = ( 'id' =&gt; '000', 'fname' =&gt; 'name' );&lt;br /&gt;&lt;br /&gt;    eval{my %test = Csv2Db-&gt;array2hash( \%schema, \$arr )};&lt;br /&gt;    like( $@, qr/ARRAY/, 'not a array' );&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;03_csv2db_createInsert.t&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use Test::More;&lt;br /&gt;&lt;br /&gt;use Csv2Db::Csv2Db;&lt;br /&gt;&lt;br /&gt;plan( tests =&gt; 1 );&lt;br /&gt;&lt;br /&gt;#createInsertSql&lt;br /&gt;my $table1  = 'main_table';&lt;br /&gt;my %values1 = ( 'id' =&gt; "000", 'fname' =&gt; "hiro" );&lt;br /&gt;my $sql1    = Csv2Db-&gt;createInsertSql( $table1, \%values1 );&lt;br /&gt;is( $sql1, "INSERT main_table SET fname='hiro', id='000';" );&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;PODを一切書いていないので、書かなきゃですね。&lt;br /&gt;とりあえず目標期間内にここまで作れたのでOKとしよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-5640318032094263455?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/5640318032094263455/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=5640318032094263455' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5640318032094263455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5640318032094263455'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/03/perl_05.html' title='Perl学習中 ここ数週間の成果'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-9217878737701039169</id><published>2009-03-04T21:29:00.003+09:00</published><updated>2009-03-04T21:53:17.251+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Perl学習中 リファレンスとアルパカ本</title><content type='html'>どうやら今のレベルでPerlで書いていて、一番引っかかるのはリファレンス関係らしい。&lt;br /&gt;&lt;br /&gt;そして、リャマ本(第二版)にはリファレンスについてほとんど書いておらず、モダンPerl入門はリファレンスは知っていて当然というスタンスという、自分にとって一番必要な情報が書籍として手元に無いというひどい状態。&lt;br /&gt;&lt;br /&gt;で、更に書籍追加ということで「続・初めてのPerl(改訂版)」を買ってきた。&lt;a href="http://www.oreilly.co.jp/books/4873113059/#toc"&gt;目次&lt;/a&gt;を見ると分かる通り、前半は大体リファレンスについて書かれている。おかげで「なんだか良く分からないけど、バックスラッシュつけたら動いたよ」程度の認識だったリファレンスについて、というよりか、何でリファレンスを使うのかについて分かってきた。&lt;br /&gt;リファレンスも慣れれば自由自在に使えるんだろうか。&lt;br /&gt;&lt;br /&gt;目次のURLを取るためにオライリーを見に行ったら今度は&lt;a href="http://www.oreilly.co.jp/books/9784873113975/"&gt;マスタリングPerl&lt;/a&gt;が発売されるらしい。&lt;br /&gt;目次を見ても何言っているのか分からないので、今買う必要は無さそう。&lt;br /&gt;どちらかというと&lt;a href="http://www.oreilly.co.jp/books/4873113008/"&gt;Perlベストプラクティス&lt;/a&gt;のが欲しいかな。&lt;br /&gt;ラクダ本はPerl6がちゃんとリリースされてからでいいや。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-9217878737701039169?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/9217878737701039169/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=9217878737701039169' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9217878737701039169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9217878737701039169'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/03/perl.html' title='Perl学習中 リファレンスとアルパカ本'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-451573310200374747</id><published>2009-02-25T23:20:00.004+09:00</published><updated>2009-03-05T23:03:51.668+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Perl学習中 「モダンPerl入門」誤字</title><content type='html'>「モダンPerl入門」の103ページにある、DBIx::Class::Schema::Loaderを使うためのコマンドの3行目と、4行目の末尾のバックスラッシュは余分。少なくとも私の環境では。&lt;br /&gt;&lt;br /&gt;というか、行が連続している事を示すためのバックスラッシュであって、実際には一行で書けということなのかもしれない。だとしたら誤字じゃないですね。&lt;br /&gt;&lt;br /&gt;まあ、再びひっかかるかもしれない未来の自分へのメモということで。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;追記:&lt;br /&gt;誤字で良いそうです(コメント参照)。それに合わせタイトルの「？」を外しました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;これだけでは何なので、sqliteの場合の同コマンドの書き方。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;perl \&lt;br /&gt;    -MDBIx::Class::Schema::Loader=make_schema_at \&lt;br /&gt;    -e 'make_schema_at("Hoge::Schema", &lt;br /&gt;        {debug =&gt; 1, dump_directory =&gt; "lib" },&lt;br /&gt;        [ "dbi:SQLite:dbname=hoge.db","","" ])'&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;最後の配列のところは、要するにDBI-&gt;connectの引数なんですね。&lt;br /&gt;これは一度覚えれば忘れないかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-451573310200374747?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/451573310200374747/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=451573310200374747' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/451573310200374747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/451573310200374747'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/02/perl-perl.html' title='Perl学習中 「モダンPerl入門」誤字'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3222514766860778314</id><published>2009-02-22T22:35:00.002+09:00</published><updated>2009-02-22T23:00:23.681+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Perl学習中 ファイルハンドルをサブルーチンに渡す</title><content type='html'>ファイルハンドルをサブルーチンに渡す一連の流れ。他の書き方も出来るのだろうけど、今の知識で理解出来るのはこの書き方だけ。&lt;br /&gt;&lt;br /&gt;Perlのコードはこんな感じ。test.plという名前で保存。バージョンは5.10。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;&lt;br /&gt;use IO::File;&lt;br /&gt;&lt;br /&gt;my $file = IO::File-&gt;new();&lt;br /&gt;$file-&gt;open( 'data', 'r' ) or die $!; &lt;br /&gt;my @hoged = hoge($file);&lt;br /&gt;print $hoged[0];&lt;br /&gt;print $hoged[3];&lt;br /&gt;&lt;br /&gt;sub hoge {&lt;br /&gt;    my $file = shift;&lt;br /&gt;&lt;br /&gt;    my @lines = (); &lt;br /&gt;    while (&lt;$file&gt;) {&lt;br /&gt;        push(@lines, $_);&lt;br /&gt;    }   &lt;br /&gt;    return @lines;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;dataの中身はこんな感じ。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;data1&lt;br /&gt;data2&lt;br /&gt;data3&lt;br /&gt;data4&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;で、実行&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$perl test.pl &lt;br /&gt;data1&lt;br /&gt;data4&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;書き方は分かったけど、これのテストの書き方が分からない。&lt;br /&gt;擬似ファイルを作るか、Mockを作ればいいんだろうけど。&lt;br /&gt;眠いので寝る。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3222514766860778314?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3222514766860778314/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3222514766860778314' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3222514766860778314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3222514766860778314'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/02/perl_22.html' title='Perl学習中 ファイルハンドルをサブルーチンに渡す'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-67212154892727288</id><published>2009-02-19T23:33:00.003+09:00</published><updated>2009-02-21T23:59:01.220+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Perl学習中 その2</title><content type='html'>サブルーチンに引数として配列やらハッシュをそのまま渡すと展開されてしまうというのに3時間ハマった。リファレンスとして渡してやる必要があるらしい。&lt;br /&gt;引数として渡されるとき、&lt;code&gt;@_ = (@array, %hash);&lt;/code&gt;という風に配列コンテキストで渡るのかな？&lt;br /&gt;&lt;br /&gt;ちょっと実験。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;%hash = ('key1' =&gt; 1, 'key2' =&gt; 2);&lt;br /&gt;@array = (7, 8, 9);&lt;br /&gt;&lt;br /&gt;@arg1 = (%hash, @array);&lt;br /&gt;@arg2 = (\%hash,\@array);&lt;br /&gt;&lt;br /&gt;print "@arg1\n";&lt;br /&gt;print "@arg2\n";&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;こんなのを書いて実験すると。&lt;br /&gt;&lt;pre&gt;$perl test.pl &lt;br /&gt;key2 2 key1 1 7 8 9&lt;br /&gt;HASH(0x9771088) ARRAY(0x9771108)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;どうやら想像通りらしい。&lt;br /&gt;&lt;br /&gt;リファレンスを受け取ったサブルーチン側では、デリファレンスしてやる必要があるので、そのあたりで使われる記号が増えるという印象を生むのかな？&lt;br /&gt;改めて自分の作ったサブルーチンを見ると、確かに$記号はやたら使ってるし、デリファレンスの辺りは、一週間前の自分には読めないだろうなとは思う。&lt;br /&gt;ただ、書いているときはそれほど気にならなくて、それよりmyを忘れちゃうことの方が多い。javascriptのvarとか、VBAのDimみたいなものなので、そのうち慣れると信じることにしよう。&lt;br /&gt;&lt;br /&gt;あとテストは重要。&lt;br /&gt;詳しくない言語ほどテストの価値は上がるのかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-67212154892727288?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/67212154892727288/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=67212154892727288' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/67212154892727288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/67212154892727288'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/02/perl-2.html' title='Perl学習中 その2'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3816253996377097646</id><published>2009-02-13T23:16:00.006+09:00</published><updated>2009-02-17T23:53:43.837+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Perl学習中</title><content type='html'>お手伝いのために、Perlを覚える必要があるので、オライリー「初めてのPerl 第2版」と翔泳社の「モダンPerl入門」を横において少しずつ慣れるようにしている。&lt;br /&gt;&lt;br /&gt;今のところ、最大の壁は文末のセミコロンを忘れることで、Perl批判にありがちな記号多すぎとかは感じない。そこに不満を持つようになるのは、過去の自分のソースを読むようになってからなのかも。&lt;br /&gt;&lt;br /&gt;CPAN便利とは良く聞くけど、素直に依存性を解消してくれないケースもままあるので、あまりありがたみを感じない。環境設定が悪いのかもしれないが、面倒なのでubuntuパッケージからモジュールを拾うようにしている。それで駄目なら、そのモジュールには縁が無いということで深追いしない。&lt;br /&gt;&lt;br /&gt;本当はTDDとかをやってみたいけど、Perlを使いこなせない状態ではちょっと難しい。テストは書くようにしているので、段々とテストを先に書くようにしていくのを目標にしてみる。&lt;br /&gt;&lt;br /&gt;今週末にはそこそこ大きめの機能を組んでみよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3816253996377097646?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3816253996377097646/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3816253996377097646' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3816253996377097646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3816253996377097646'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/02/perl.html' title='Perl学習中'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-770945666624943355</id><published>2009-02-08T08:58:00.000+09:00</published><updated>2009-02-08T08:58:01.358+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>パソコンは使いにくい</title><content type='html'>パソコン(Windows Vista)の操作を教える機会があった、そしてこれからも教えることになりそうなので初心者を観察して気付いたことのメモ。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;0.教える相手の方について&lt;/h4&gt;&lt;br /&gt;年は、そこそこ年配。&lt;br /&gt;初心者と言ったけど、キーボード操作時にキーを探すようなことはないし、メールソフトも使えている。&lt;br /&gt;でも、新規フォルダを作ったり、Wordで作った文書を任意の場所へ保存したりは出来ない、もしくは自信が無い。&lt;br /&gt;ケータイはそれなりに使っている模様。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;1.マウスより、トラックパッドの方が使いやすいらしい&lt;/h4&gt;&lt;br /&gt;マウスだとクリックのタイミングでカーソルがズレるそうだ。そのためダブルクリックの成功率が下がるらしい。&lt;br /&gt;トラックパッドだと、カーソル操作とボタン操作が独立しているので「カーソルを置く」「クリックする」を独立出来る。&lt;br /&gt;&lt;br /&gt;ちなみに誤操作防止のために、トラックパッドを叩いてのクリック機能はオフにした。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;2.機能の抽象化ができていない&lt;/h4&gt;&lt;br /&gt;Wordファイルを削除すること、画像ファイルを削除すること、フォルダを削除することが全て、同じ「削除」であると直観出来ない。&lt;br /&gt;やりたいことを聞いて、それを教えるという形式だったので、仕方ないかも。系統立てて教えれば、すぐ理解できるはず。&lt;br /&gt;Wordの文書を削除する際「Wordから削除出来るんでしょ？」と聞かれたけど、これは盲点だった。&lt;br /&gt;確かに新規作成できるなら、削除が出来ても不思議は無いですね。むしろ自然なこと。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;3.マルチタスクで使えない&lt;/h4&gt;&lt;br /&gt;マルチタスクといっても、あるフォルダを開きながら、Wordで作業するとかのレベルなんですが、一つの作業をするとき、他のウィンドウを全部閉じてしまう。&lt;br /&gt;これも教える側の都合上、今やっている作業に関係ないウィンドウを常に閉じていたせいかも。覚えるまでは、私の操作を完全トレースするつもりらしいし。&lt;br /&gt;複数の窓を開きながら作業している様子は見せているので、慣れてきたらそういう使い方をするようになるはず。&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;4.ネットワークは難しい&lt;/h4&gt;&lt;br /&gt;IPアドレスなんかは、DHCPにおまかせでいいんだけど、メールが大変だった。&lt;br /&gt;正直、POP3だとかSMTPだとかポートの変更だとかを初心者にやらせるのは難しいです。&lt;br /&gt;このあたりもっとこなれないかな。&lt;br /&gt;popやsmtpの設定を1ファイルに閉じ込めて、それを配置すれば後はidとパスを入れるだけ、みたいな仕組みを標準化すると良いのかも。&lt;br /&gt;もう既にあるかな？&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;5.困ったらヘルプ、ネットに聞く&lt;/h4&gt;&lt;br /&gt;Windowsの使い方ならともかく、個々のアプリケーションの使い方なんてさっぱりわからないので、その時は悩まずにヘルプを使いました。昔はともかく最近のMSアプリのヘルプはかなり良くなっているので、基本的な操作(縦書きモードにするには？とか)を知るには一番手軽です。&lt;br /&gt;分からないことがあれば、まずヘルプという姿を戦略的に見せるという意味もありましたが、あまり伝わっていないかも。&lt;br /&gt;その他、頼りになったのは、「教えてgoo」や「okwave」などの質問サイト。大概の疑問は既に誰かが質問しているので、多くの問題を素早く解決出来ました。&lt;br /&gt;&lt;br /&gt;とりあずこれだけ。後で追記するかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-770945666624943355?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/770945666624943355/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=770945666624943355' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/770945666624943355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/770945666624943355'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/02/blog-post.html' title='パソコンは使いにくい'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-912176330159747243</id><published>2009-02-03T22:40:00.003+09:00</published><updated>2009-02-03T22:55:38.526+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VAIO type Z'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>typeZのバックライト設定</title><content type='html'>コメントでshinoさんに教えていただいたことを整理。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.以下のコマンドを実行&lt;br /&gt;xrandr --output LVDS --set BACKLIGHT_CONTROL native&lt;br /&gt;&lt;br /&gt;2.以下のコマンドで、明るさを設定。数字が大きいほど明るくなる。&lt;br /&gt;xbacklight -set [数値(0 - 100)]&lt;br /&gt;&lt;br /&gt;3.電源の管理の設定で画面の明るさの設定を、2で設定した値にする。&lt;br /&gt;xbacklightの設定と、電源の管理での設定が食い違うと、電源の管理側の設定値に近づくらしい。&lt;br /&gt;&lt;br /&gt;今のところ、上記で何とかなっている模様。&lt;br /&gt;後はいろいろ工夫してみよう。&lt;br /&gt;&lt;br /&gt;shinoさん改めてありがとうございます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-912176330159747243?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/912176330159747243/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=912176330159747243' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/912176330159747243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/912176330159747243'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/02/typez.html' title='typeZのバックライト設定'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8175243429099887182</id><published>2009-01-29T21:28:00.002+09:00</published><updated>2009-01-29T21:33:26.356+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VAIO type Z'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu(typeZ)でスリープ</title><content type='html'>昨日のアップデートでついにUbuntu側でもサスペンド出来るようになりました。&lt;br /&gt;寝るのも起きるのも充分早いので、これでようやくノートパソコンらしい使い方が出来そう。&lt;br /&gt;&lt;br /&gt;ただ相変わらず画面輝度はコントロール出来ないみたい。&lt;br /&gt;何か設定が必要なのかな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8175243429099887182?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8175243429099887182/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8175243429099887182' title='4 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8175243429099887182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8175243429099887182'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/01/ubuntutypez.html' title='Ubuntu(typeZ)でスリープ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-463196998376079221</id><published>2009-01-22T22:26:00.003+09:00</published><updated>2009-01-22T22:55:25.876+09:00</updated><title type='text'>ネットワークうさぎ 十景</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=z1MyloM5DR8"&gt;驚愕の日本語発話機能&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;フランス版ゆっくり&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=hTa1RzofHcw"&gt;悟空の恰好でlainを奏でるうさうさ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;耳の可動範囲は結構大きい。&lt;br /&gt;lainなら、うさぎではなくクマだろ。&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=Yqs9NOhtqT0"&gt;うざうさ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;なにをやっているのかわからないが、鬱陶しい。&lt;br /&gt;レスポンスは早くない。&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=QHh6PoPYM6g"&gt;踊るうさうさ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;おしゃれさん&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=cvT6KywnJRE"&gt;読書うさぎ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;本ではなく無線タグ(?)を読んでいるようだ。&lt;br /&gt;耳の色は塗ったのかな？&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=wzwH0gTPeDg"&gt;うさうさうさうさうさ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=AbLFdLfZEso"&gt;Chumbyに操られるうさ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;やはりレスポンスが悪い気がする&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=gGAyrdC1Hyk"&gt;あー、、、&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Podcastを受信しているのかな？&lt;br /&gt;実際飼うとなると、光るのはたぶん鬱陶しい&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=nuFbijBDFeA"&gt;割と実際的なデモ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;メール受信デモらしい。&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=K_e7Z-OEclA"&gt;みんなだいすきうさ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-463196998376079221?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/463196998376079221/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=463196998376079221' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/463196998376079221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/463196998376079221'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/01/blog-post_22.html' title='ネットワークうさぎ 十景'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3878955603009098539</id><published>2009-01-17T23:05:00.002+09:00</published><updated>2009-01-17T23:14:01.826+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OLPC'/><title type='text'>今は買えないXO</title><content type='html'>今、Amazon.co.ukをみたら、OLPC XO-1はUK Shipping onlyになってた。&lt;br /&gt;予約してたら買えたのかな？&lt;br /&gt;&lt;br /&gt;日本でも買えるNetbookにSugarを入れられたら、ハードウェアとしてのXOにこだわる必要は無くなるのだけど、XO以外にSugar環境を入れるのはいろいろ大変そう。&lt;br /&gt;Sugar-stick(ubuntuベース)で試してみたけど、typeZではネットワークが動いてくれない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3878955603009098539?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3878955603009098539/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3878955603009098539' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3878955603009098539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3878955603009098539'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/01/xo.html' title='今は買えないXO'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4699237080764692083</id><published>2009-01-17T07:54:00.002+09:00</published><updated>2009-01-17T08:01:49.010+09:00</updated><title type='text'>ネットワークうさぎ</title><content type='html'>&lt;a href="http://plusd.itmedia.co.jp/lifestyle/articles/0901/16/news146.html"&gt;ITmediaの記事&lt;/a&gt;によると、大分前に、ThinkGeekだかで見かけて欲しいなーと思っていた、ネットワークうさぎさんが、日本で発売されるそうです。&lt;br /&gt;&lt;br /&gt;しかし価格は2万5000円とかなり高い。ついでに写真が悪いせいか、ちょっとちゃちい。&lt;br /&gt;日本語で喋るというのはちょっと魅力的だけど、この値段ならPSPを買っちゃうなあ。&lt;br /&gt;&lt;br /&gt;しゃべくり機能以外は私にも自作できるかな。aruduinoで遊べる時間が出来たら、こういうのを作りたいかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4699237080764692083?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4699237080764692083/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4699237080764692083' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4699237080764692083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4699237080764692083'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/01/blog-post_17.html' title='ネットワークうさぎ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4633040615039480262</id><published>2009-01-11T23:58:00.004+09:00</published><updated>2009-01-12T00:13:04.757+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OLPC'/><title type='text'>OLPC体制変化</title><content type='html'>昨今の経済情勢のせいか、OLPCプロジェクトは解雇＆減給で体制を縮小するそうです。&lt;br /&gt;Sugarの開発はコミュニティベースに移行なので、開発速度の低下は否めないかと。&lt;br /&gt;&lt;br /&gt;ただ、メーリングリストでは今のところ混乱は無いようで、「XO Camp楽しいよね」という話題がほとんどです。&lt;br /&gt;&lt;br /&gt;Sugarを作っているのでなく、Sugarで遊んでいる私も残念という気持ちはあるけど、潰れなくて良かったという気持ちの方が大きいかも。&lt;br /&gt;コミュニティベースに移行することで、XO以外のハードでもきちんと動くようになる方向に進むといいなあ。&lt;br /&gt;自分でも何か貢献はしたい。Sugarで遊ぶことが何らかの貢献につながりますように。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4633040615039480262?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4633040615039480262/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4633040615039480262' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4633040615039480262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4633040615039480262'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/01/olpc.html' title='OLPC体制変化'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4528014077621039077</id><published>2009-01-08T23:39:00.003+09:00</published><updated>2009-01-09T00:00:33.925+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Pygameでボタンスイッチを作る方法</title><content type='html'>現状のメモ。&lt;br /&gt;&lt;br /&gt;spriteでボタンを作って、それを押したら「何か」が実行されるというのが作りたかったのです。&lt;br /&gt;で、Pygameのドキュメントを眺めてみた。spriteオブジェクトに、自分が押されたかどうか知る仕組みがあることを期待したけど、見つけられず。&lt;br /&gt;&lt;br /&gt;なので、&lt;br /&gt;&lt;ol&gt;&lt;li&gt;マウスの座標にぴったりくっつくsprite(=cursor)を用意&lt;/li&gt;&lt;li&gt;クリックイベントが発生したらcursorとボタンのスプライトが衝突しているか判定&lt;/li&gt;&lt;li&gt;衝突していたら「何か」を実行！&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;という、原始的な方法をとってみた。&lt;br /&gt;ボタンが少なければこれでいいけど、増えてきたら大変になることは確実。&lt;br /&gt;イベントリスナ的仕掛けがあっても良さそうなんだけど(自分で作れってこと？)。&lt;br /&gt;もう少しドキュメントを読まないと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4528014077621039077?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4528014077621039077/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4528014077621039077' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4528014077621039077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4528014077621039077'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/01/pygame.html' title='Pygameでボタンスイッチを作る方法'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-9129129387444774304</id><published>2009-01-04T21:11:00.003+09:00</published><updated>2009-01-04T22:25:26.180+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>お正月を過ぎて</title><content type='html'>&lt;h2&gt;情報化社会 in 田舎&lt;/h2&gt;&lt;br /&gt;お正月は実家に帰って、餅を食べたり、冷麺を作ったり、温泉に入ったり、ご馳走を食べたりとなかなか忙しくすごしました。&lt;br /&gt;ネットに接続出来るのが、実家しかない(探せば公衆無線LANはあったかも)うえ、Willcomも実家以外ではなかなか電波を掴んでくれず、ほぼオフライン状態。&lt;br /&gt;こういう非接続状態になると、コンピュータやネットが全然当たり前じゃない、デジタルネイティブなにそれおいしいの？、という気分になれるので自分にとっては結構重要です。&lt;br /&gt;&lt;br /&gt;とはいえ、携帯電話は普通に繋がるので、思ったより情報格差ってのは無いのかも。定額性電話も兼ねる町内有線放送網があったりして、ある意味東京より情報化が進んでいる面もあるかも。&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;お正月で見た風景からの2009年の予測&lt;/h2&gt;&lt;br /&gt;2009年を予測せよと言われたので、お正月で見た風景と年末年始に考えていたことを元に予測してみる。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;1. Webブラウザベースではないネットワークアプリケーションの増加&lt;/h3&gt;&lt;br /&gt;Webブラウザで動くアプリではなく、専用クライアントを使用するネットワークアプリケーションが増えるんじゃないかなと予測。&lt;br /&gt;もう少し言うと、Webブラウザでも使えるけど、専用クライアントからの方が便利というソフトが増える、あるいは目立つようになるかと。&lt;br /&gt;既に、2chブラウザとかTwitterクライアントとかGoogle Talkみたいなのはある訳ですが、そういうのが目立つようになるんじゃないかなあ。今、個人でWebアプリを作るのが流行っている(?)けど、わざわざWebアプリにする意義を感じられないものが多いように思えるのですよ。HTTP通信して、適当に出力する程度なら何もWebアプリにする必然性は無いわけで。&lt;br /&gt;コアとなる処理の部分と、公開部分の切り分けという観点から、専用クライアント化は進むんじゃないかな。&lt;br /&gt;後で、もう少しまとめるかも。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;2. 全画面表示を前提としたユーザインターフェースデザインが重要になる&lt;/h3&gt;&lt;br /&gt;これは予測というより、今一番興味を持っていることかも。&lt;br /&gt;ディスプレイの大型化と共に、パソコンのユーザーインタフェースというのは画面に複数の窓を出す方向に進化してきたけど、これからは一つの窓だけがディスプレイに出る = 全画面表示のユーザーインターフェースデザインも並行して研究されるんじゃないかな。&lt;br /&gt;携帯の画面デザインは既に全画面を前提としているので、まったく新しい出来事ではないんだけど、iPhoneやスマートフォン、Netbookといった、従来のケータイよりパワフルだけど画面が小さいデバイスが増えていくと、それに合わせてデザインがされるんではないだろうかという予想です。&lt;br /&gt;ついでに言うと、DSiやSugarのインターフェースも全画面表示ですね。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;書いては見たけど、えらい地味な予測かも。あと気になるのはやっぱり地味だけどメッシュネットワーキングかなあ。ちゃんと調べてないから既に旬は過ぎているかもしれないし、特に書けるような事も無いです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-9129129387444774304?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/9129129387444774304/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=9129129387444774304' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9129129387444774304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9129129387444774304'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2009/01/blog-post.html' title='お正月を過ぎて'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-5290879804757006594</id><published>2008-12-28T07:34:00.003+09:00</published><updated>2008-12-28T10:30:40.546+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>パペットマペットと河崎実</title><content type='html'>昨日は、パペットマペットのライブに行ってきました。&lt;br /&gt;久々に見たけど面白い。1時間半ずっと笑いっぱなし。&lt;br /&gt;前のほうの席だったってのもあるけど、テレビで見るより面白いなあ。他の芸人もライブで見た方が面白いんだろうな。&lt;br /&gt;新喜劇みたいに舞台をそのままテレビで流す番組がもっと増えて欲しいです。&lt;br /&gt;&lt;br /&gt;途中トークの時間があって、映画監督の河崎実さんが登場。監督の名前は知らなかったけど「いかレスラー」「かにゴールキーパー」「日本以外全部沈没」と撮った映画は知っていました。&lt;br /&gt;19歳のときに豆腐が巨大化する映画を撮ったのが映画監督になったきっかけ。現実と虚構がごちゃまぜになっているのが好きらしく、このあたり昨今の拡張現実の流行とリンクしているような気がする。&lt;br /&gt;トークの最中に、プロットの構想をスラスラ語り出す（しかも面白い！）あたり、年がら年中映画のことを考えているんだろうなあ。&lt;br /&gt;&lt;br /&gt;パペマペの背後霊は交換可能なので100年後も続けられるという話題も出て来て、なかなか知的なトークでした。トークの最中も笑いっぱなしだったけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-5290879804757006594?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/5290879804757006594/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=5290879804757006594' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5290879804757006594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5290879804757006594'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/blog-post_28.html' title='パペットマペットと河崎実'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6797857866855991139</id><published>2008-12-26T21:37:00.004+09:00</published><updated>2008-12-26T22:19:20.134+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OLPC'/><title type='text'>PyCon2008 OLPC Tutorial 超要約 その4</title><content type='html'>その3からだいぶあいたけど、とりあえずメモ訳のまとめ。&lt;br /&gt;未来の自分と、これからこのTutorialをやろうとする人のための参考として。&lt;br /&gt;&lt;br /&gt;注意点&lt;br /&gt;reStructuredTextでまとめたものをHTMLに変換したので、変なHTMLソースになってます。&lt;br /&gt;また実際には、複数日かけてやってるので、口調や編集の仕方が変化している上に、最後の方は結構適当です。&lt;br /&gt;&lt;br /&gt;ではスタート。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Auto-generate a Skeletal Wrapper (Step 002)&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Sugarアクティビティには、作るのがちょっとだけ苦痛な&amp;quot;boilerplateコード&amp;quot;が結構あります。さっき(その3で)落としたOLPCGamesには、新しいActvityの構成を作ってくれる、スケルトン生成スクリプトが入っています。&lt;br /&gt;使い方はこんな感じです。実行してみてね。&lt;/p&gt;&lt;br /&gt;&lt;pre class="literal-block"&gt;&lt;br /&gt;cd OLPCGames-1.6/skeleton/&lt;br /&gt;./buildskel.py -n HelloPygame -t &amp;quot;Hello Pygame&amp;quot; -s org.laptop.community.HelloPygame&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;buildskel.pyのオプション:&lt;/p&gt;&lt;br /&gt;&lt;kbd&gt;&lt;span class="option"&gt;-n &lt;var&gt;NAME&lt;/var&gt;&lt;/span&gt;, &lt;span class="option"&gt;--name=&lt;var&gt;NAME&lt;/var&gt;&lt;/span&gt;&lt;/kbd&gt;&lt;br /&gt;分かりやすく簡潔な名前 (ファイル名に使われる)&lt;br /&gt;&lt;br /&gt;&lt;kbd&gt;&lt;span class="option"&gt;-t &lt;var&gt;TITLE&lt;/var&gt;&lt;/span&gt;, &lt;span class="option"&gt;--title=&lt;var&gt;TITLE&lt;/var&gt;&lt;/span&gt;&lt;/kbd&gt;&lt;br /&gt;分かりやすく、人間が読むための名前&lt;br /&gt;(ウィンドウやアイコンのタイトルに使われる)&lt;br /&gt;&lt;br /&gt;&lt;kbd&gt;&lt;span class="option"&gt;-m &lt;var&gt;MAINLOOP&lt;/var&gt;&lt;/span&gt;, &lt;span class="option"&gt;--mainloop=&lt;var&gt;MAINLOOP&lt;/var&gt;&lt;/span&gt;&lt;/kbd&gt;&lt;br /&gt;メインモジュールと関数名。package.module 見たいな感じで。&lt;br /&gt;&lt;br /&gt;&lt;kbd&gt;&lt;span class="option"&gt;-s &lt;var&gt;SERVICE&lt;/var&gt;&lt;/span&gt;, &lt;span class="option"&gt;--service=&lt;var&gt;SERVICE&lt;/var&gt;&lt;/span&gt;&lt;/kbd&gt;&lt;br /&gt;DBUSのサービス名。提供されないなら接頭辞の名前(?)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;今回使わないのは、-mだけ。今回はデフォルトである、run.pyのmain関数を使います。&lt;br /&gt;それと、-sはD-BUSで使われるので一意になるように名前付けをしてね。&lt;/p&gt;&lt;br /&gt;&lt;dl class="docutils"&gt;&lt;br /&gt;&lt;dt&gt;boilerplateコード&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;面倒で苦痛で決まりきった書き方の繰り返しみたいな意味。&lt;br /&gt;特に関数化やモジュール化も出来ないものを言う気がする。&lt;br /&gt;Sugar-Activityの場合、フォルダ構造とかMANIFESTファイルとかがそれにあたる。&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;&lt;h3&gt;&lt;a id="activity" name="activity"&gt;新しいActivityの登録&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;ActivityをSugarで使うには登録しないと駄目です。じゃないとSugarのランチャーに出てきません。&lt;br /&gt;まず、sugar-shellを起動します。sugar-jhbuildの場合は&amp;quot;sugar-jhbuild shell&amp;quot;をbuntuのパッケージでSugarを入れてるならsugar-shellコマンドを実行します。&lt;br /&gt;次に、あなたがOLPCGames-1.*/skeletonディレクトリにいるとして次の順に実行します。&lt;br /&gt;(注:HelloPygame.activityディレクトリはさっきbuildskel.pyで作られているはずです)&lt;/p&gt;&lt;br /&gt;&lt;pre class="literal-block"&gt;&lt;br /&gt;cd HelloPygame.activity&lt;br /&gt;python setup.py dev&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;そして、今後楽をするため、シンボリックリンクを張ります。&lt;/p&gt;&lt;br /&gt;&lt;pre class="literal-block"&gt;&lt;br /&gt;cd ../../../&lt;br /&gt;ln -s OLPCGames-1.*/skeleton/HelloPygame.activity .&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;そしてsugar-emulatorを実行してHelloPygameっていうActivityが登録されていたらOKです。&lt;br /&gt;うまく行かなかったらlogを見てね。&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;a id="id1" name="id1"&gt;ラッパーを見てみよう&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;好きなIDEで自動生成されたファイルを見てください。&lt;br /&gt;OLPCGamesはGTK Socket (X-Embed) プロトコルを通して、GTKアプリケーションのウィンドウの中にPygame(SDL)を埋め込むための、薄いラッパーです。&lt;br /&gt;これからどんどんカスタマイズしていきます。&lt;br /&gt;さて、何が作られたでしょうか。&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;&lt;a id="id2" name="id2"&gt;メタデータ&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;HelloPygame.activityディレクトリの下のactivityディレクトリにあるもの&lt;/p&gt;&lt;br /&gt;&lt;dl class="docutils"&gt;&lt;br /&gt;&lt;dt&gt;activity.info&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;何を動かすかとか、アイコンデータの指定とか&lt;br /&gt;&lt;a class="reference" href="http://wiki.laptop.org/go/Activity_Bundles#.info_File_Format"&gt;http://wiki.laptop.org/go/Activity_Bundles#.info_File_Format&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;activity.svg&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;アイコンデータ&lt;br /&gt;&lt;a class="reference" href="http://wiki.laptop.org/go/Sugar_Icon_Format"&gt;http://wiki.laptop.org/go/Sugar_Icon_Format&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;&lt;h3&gt;&lt;a id="gtk-wrapper-activity-py" name="gtk-wrapper-activity-py"&gt;GTK Wrapper(activity.py)&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;概要&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;クラス定義&lt;ul class="first last simple"&gt;&lt;br /&gt;&lt;li&gt;PygameActivityを継承&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;GTKイベントの割り込みや生成&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Sugar用ツールバーの追加&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pygameウィンドウのサイズの宣言&lt;/li&gt;&lt;br /&gt;&lt;li&gt;名前、タイトルの宣言&lt;/li&gt;&lt;br /&gt;&lt;li&gt;メインループ関数の宣言&lt;/li&gt;&lt;br /&gt;&lt;li&gt;別のPygameスレッドを作ること&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Pygameメインループ詳細&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;import&lt;br /&gt;&lt;ul class="first last"&gt;&lt;br /&gt;&lt;li&gt;pygame : 描画、メインループ、そしてそれら素晴らしいモノ全て&lt;/li&gt;&lt;br /&gt;&lt;li&gt;olpcgames.pausescreen : sleep状態に素早く移行するためのイベントを発生させる&lt;/li&gt;&lt;br /&gt;&lt;li&gt;logging : 標準モジュールのログです。使い方を知っている必要があります&lt;/li&gt;&lt;br /&gt;&lt;li&gt;olpcgames : イベントの定数にアクセスするために&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;loggingセットアップ&lt;/li&gt;&lt;br /&gt;&lt;li&gt;main関数&lt;br /&gt;&lt;ul class="first last"&gt;&lt;br /&gt;&lt;li&gt;画面の準備をする&lt;/li&gt;&lt;br /&gt;&lt;li&gt;フレームの限界値を設定(25か50がいい)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ダブルバッファリング&lt;/li&gt;&lt;br /&gt;&lt;li&gt;イベント開始&lt;br /&gt;&lt;ul class="first last simple"&gt;&lt;br /&gt;&lt;li&gt;非アクティブ時は画面描画を止める&lt;/li&gt;&lt;br /&gt;&lt;li&gt;そうでないならイベントを発生させる&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;&lt;a id="id3" name="id3"&gt;サポートメカニズム&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;setup.py&lt;br /&gt;パッケージング用のスクリプト。stuptoolsではないので注意。&lt;br /&gt;MANIFEST.in, POTFILES.in&lt;br /&gt;setup.pyに食べさせる。&lt;br /&gt;&lt;h1&gt;&lt;a id="step003" name="step003"&gt;step003&lt;/a&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;Activityを走らせることは出来たけど、微妙な状態ですね。&lt;br /&gt;というわけで、&amp;quot;Hello World&amp;quot;的なものを加えてみます。&lt;br /&gt;これにはOLPCGamesのTextClassを使う。これはPangoテキストレンダリングエンジンのラッパーです。&lt;br /&gt;Pygameのスプライトクラスは、多くのラスタ画像を表示するのに非常に効率的なメカニズムになってます。&lt;br /&gt;Pygameの大概のことは、スプライト関連のクラスを使うとうまくいきます。&lt;br /&gt;「Hello world」がスプライトエンジンを激しく使わない内に、関連操作に慣れるために使っていきます。&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Sprite と Sprite-Groups&lt;ul class="first last"&gt;&lt;br /&gt;&lt;li&gt;Sprites: imageと長方形の枠(Rect)&lt;ul class="first last simple"&gt;&lt;br /&gt;&lt;li&gt;Rects in Pygame&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Group タイプとなぜRenderUpdates()するか&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Group 追加/除去 操作&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;TextSpriteを使ったテキストレンダリング&lt;ul class="first last simple"&gt;&lt;br /&gt;&lt;li&gt;PangoFont クラス&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fontの仕様&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fontレンダリング結果、画像とRect&lt;/li&gt;&lt;br /&gt;&lt;li&gt;文字列の翻訳のためにgettextをつかえ&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;layout関数とRect&lt;ul class="first last simple"&gt;&lt;br /&gt;&lt;li&gt;Rectの仮想プロパティとそれらへの課題&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6797857866855991139?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6797857866855991139/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6797857866855991139' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6797857866855991139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6797857866855991139'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/pycon2008-olpc-tutorial-4.html' title='PyCon2008 OLPC Tutorial 超要約 その4'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-9006854775837180898</id><published>2008-12-26T19:46:00.003+09:00</published><updated>2008-12-26T20:04:20.518+09:00</updated><title type='text'>O'Reilly Japan Ebook Store開店</title><content type='html'>&lt;a href="http://www.oreilly.co.jp/ebook/"&gt;O'Reilly Japan Ebook Store&lt;/a&gt;が開店したそうです。&lt;br /&gt;書籍版よりちょっぴり安いみたい。我が家の場合、本棚を圧迫しないというメリットの方がでかいですな。&lt;br /&gt;&lt;br /&gt;リファレンスやクックブックは検索しやすいから電子のメリットは高いはず。逆に読み物系はメリットは高くないかな。むしろ自由に持ち歩けないデメリットの方がでかいように思う。&lt;br /&gt;オライリーのサイトではiPhone(iPod touch)で表示している画像が出ているけど、じっくり読むには辛そう。&lt;br /&gt;&lt;br /&gt;それと、買ったEbookを間違って消しちゃったらアウトなのか、それとも一度買ったら何度でも落とせるのかが分からないけど、何となく消したらアウトっぽい。テキストコピーは不可みたいだけど、ファイルコピーはどうなんだろう。質問しようかな。&lt;br /&gt;&lt;br /&gt;一月末までにEbookを買った人の中から抽選でオライリーロゴ入りフリースジャケット（限定版）が当たるらしいけど、さてどうしようか。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://safari.oreilly.com/"&gt;Safari&lt;/a&gt;で日本語書籍が読めれば、それが一番いいんだけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-9006854775837180898?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/9006854775837180898/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=9006854775837180898' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9006854775837180898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/9006854775837180898'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/oreilly-japan-ebook-store.html' title='O&apos;Reilly Japan Ebook Store開店'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-1037123072252436471</id><published>2008-12-21T23:02:00.002+09:00</published><updated>2008-12-21T23:12:36.827+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='OLPC'/><title type='text'>Sugarでアニメーション</title><content type='html'>Pygameだけで画面を作れとの教え通りにしたら、Sugar上で簡単なアニメーションをさせることも楽に出来ました。&lt;br /&gt;見栄えがGtkと離れるから気持ち悪いけど、Gtkと組み合わせるのは将来の課題にしよう。&lt;br /&gt;&lt;br /&gt;次に知りたい情報は次の2つ&lt;br /&gt;・XO(Sugar?)のストレージの扱い方&lt;br /&gt;・カメラの使い方&lt;br /&gt;&lt;br /&gt;ストレージの方はPyCon2008のOLPC Tutorial資料にあるみたい。このチュートリアルは夏ぐらいに序盤だけをやって、放置していたので、今年中に全部やってみよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-1037123072252436471?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/1037123072252436471/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=1037123072252436471' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1037123072252436471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/1037123072252436471'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/sugar.html' title='Sugarでアニメーション'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3407898502676352569</id><published>2008-12-19T20:30:00.001+09:00</published><updated>2008-12-19T20:33:31.408+09:00</updated><title type='text'>かわいいプロジェクター</title><content type='html'>小型プロジェクターは流行ってるみたいですね。&lt;br /&gt;&lt;a href="http://www.castrade.co.jp/product/hm_cvmp01.php"&gt;こういうかわいいの&lt;/a&gt;もでるみたい。&lt;br /&gt;&lt;br /&gt;映像作品をクリアに見せるにはパワー不足だろうけど、逆に見えるか見えないかのレベルで映す前提であればこういうので良いのかも。&lt;br /&gt;小型な分、設置の自由度も高いから、展示の仕方も工夫できるはず。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3407898502676352569?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3407898502676352569/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3407898502676352569' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3407898502676352569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3407898502676352569'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/blog-post.html' title='かわいいプロジェクター'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-680045114784348761</id><published>2008-12-17T22:53:00.003+09:00</published><updated>2008-12-17T23:25:27.548+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Gtk with Pygameを調査してみた</title><content type='html'>思い出したかのようにXOとかSugarで遊んでいますが、Gtkの中にPygameの画面を出したいなあと考えて調べてみた。&lt;br /&gt;割とメジャーな要望らしく、いろいろ解決策を発見。でもサンプルコードが動かない。&lt;br /&gt;要するにDrawingAreaを用意して、それをPygame用とすれば良いらしいのだけど。&lt;br /&gt;&lt;br /&gt;時間があれば、自力でなんとかなりそうだけど、Pygame本家で&lt;a href="http://www.pygame.org/wiki/gui"&gt;GUIs with pygame&lt;/a&gt;という文書を発見。&lt;br /&gt;&lt;br /&gt;要約すると「GtkとかQtとかWxの中にPygame入れようなんて思うな。時間の無駄だ」だそうで。&lt;br /&gt;言ってることは分からなくもないけど。&lt;br /&gt;代替として、Pygame(Sprite)で実装したGUIライブラリ(というよりウィジェットといった方が正確？)を提示してるけど、それもどうだろう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-680045114784348761?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/680045114784348761/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=680045114784348761' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/680045114784348761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/680045114784348761'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/gtk-with-pygame.html' title='Gtk with Pygameを調査してみた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-3792272257155286379</id><published>2008-12-12T22:02:00.003+09:00</published><updated>2008-12-12T22:14:57.797+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OLPC'/><title type='text'>275ポンドで買えるもの</title><content type='html'>今、1ポンドは135円くらいみたいです。&lt;br /&gt;137.5ポンドだと18,500円くらいですね。&lt;br /&gt;DSiは18,900円なので、まあだいたい同じくらいですかね。&lt;br /&gt;&lt;br /&gt;なんとですね、DSiと同じ値段でパソコンを買えるらしいのですよ。茄子さん。&lt;br /&gt;ただ、&lt;a href="http://www.amazon.co.uk/One-Laptop-Per-Child-XO/dp/B001LDQWJI/"&gt;セット販売で2台ずつしか買えない&lt;/a&gt;んですよ。&lt;br /&gt;でも4万円せずに、2台も買えるってすごいよね。輸送費を考えても十分安いよね。&lt;br /&gt;2台もいらないから、1台は寄付してもいいよね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-3792272257155286379?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/3792272257155286379/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=3792272257155286379' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3792272257155286379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/3792272257155286379'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/275.html' title='275ポンドで買えるもの'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-115268572458334910</id><published>2008-12-07T15:38:00.003+09:00</published><updated>2008-12-08T20:19:35.549+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Python3000とバックスペースキー</title><content type='html'>昨日、Python3000のインタラクティブシェルでバックスペースが効かないという話を聞いたけど、そんなことないよなーと思いつつ確信がなかったので特に「そーなんだー」と流していた。&lt;br /&gt;&lt;br /&gt;今、Ubuntu8.10上のGnomeコンソールで確認したところ、ASCII DELなら普通にバックスペースが効く。Contorol-Hは駄目。&lt;br /&gt;ビルド＆インストール時、configureはprefix以外何もつけておらず、makeも特別な事はしていない。&lt;br /&gt;&lt;br /&gt;Vistaではコマンドプロンプトも、Power Shellも両方OK。&lt;br /&gt;そして、終了のショートカットがControl-Dではなく、Control-Zに変更されていることに気付く。ちゃんとドキュメント読めよという話ですが。&lt;br /&gt;&lt;br /&gt;Macは確認がめんどいので、後回しにしよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-115268572458334910?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/115268572458334910/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=115268572458334910' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/115268572458334910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/115268572458334910'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/python3000_07.html' title='Python3000とバックスペースキー'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-317815618927546117</id><published>2008-12-07T10:42:00.005+09:00</published><updated>2008-12-07T11:45:20.967+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>Python with Hardwareの飲み会に行ってきた</title><content type='html'>昨日はPython with HardwareとHacker's Cafeのみなさんと合同での飲み会でした。&lt;br /&gt;&lt;br /&gt;記憶とデジカメの記録による見たもの聞いたものリスト(順不同)&lt;br /&gt;・(今ある技術で出来る範囲の、それでも十分凄い)電脳メガネ&lt;br /&gt;・Ouch!さんの野望(MES)&lt;br /&gt;・測距センサーによるコントローラ&lt;br /&gt;・電脳スターラリーのプレゼン&lt;br /&gt;・位置エネルギーを使った歩行模型(脱力を利用することを考慮に入れている？)&lt;br /&gt;・a2cさんのプロダクションで使われているものの説明&lt;br /&gt;・未来予測 電脳メガネを実現するには&lt;br /&gt;・iPhoneと網膜センサーと筋肉とチームワークによるインタラクションシステム&lt;br /&gt;(他にもいろいろあった気がする)&lt;br /&gt;&lt;br /&gt;金額的にも技術的にも敷居が下がることで、個人レベルで出来ることが拡大していることを実感できる3時間でした。&lt;br /&gt;昨日の飲み会の延長線上に、1000TB以上のストレージが普通な世界があるんだろうなと。&lt;br /&gt;そのなかで&lt;a href="http://d.hatena.ne.jp/a2c/"&gt;a2c&lt;/a&gt;さんの、プロダクションレベルで求められるクオリティは高いという指摘には、考えさせられるところがあります。凄い技術が個人レベルであたりまえになったとき、その上のレベルはどうあるか、何が個人レベルと違うのかという事は、もっと意識する必要があるし、それがMake的、DIY的世界にも反響するだろうなと。昨日の今日で、あまりまとまってないけど。&lt;br /&gt;&lt;br /&gt;Ouch!さんの野望を聞いていて「&lt;a href="http://www.sbcr.jp/books/products/detail.asp?sku=4797333146"&gt;ものづくり革命 パーソナル・ファブリケーションの夜明け &lt;/a&gt;」を紹介したいなあと思ったけど、昨日言う機会がなかったので、ここに書いときます。もう読んでるかもしれないけど。技術的内容ではなく、リーズナブルな技術は社会、世界をどのように変えていけるかという事が語られています。もちろんOuch!さん以外にもおすすめです。&lt;br /&gt;&lt;br /&gt;メディアアーティストとかにも絡んでいろいろ考えたけど、寝て起きたら飛んでしまった。&lt;br /&gt;そのうち思い出すかな。&lt;br /&gt;&lt;br /&gt;幹事のOuch!さんありがとうございました。&lt;br /&gt;それとあれだけ変な事をやっても、何も言わないお店にも感謝です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-317815618927546117?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/317815618927546117/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=317815618927546117' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/317815618927546117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/317815618927546117'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/python-with-hardware.html' title='Python with Hardwareの飲み会に行ってきた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4800520205498354695</id><published>2008-12-04T22:39:00.003+09:00</published><updated>2008-12-04T22:47:29.605+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python3000出たよ</title><content type='html'>とりあえず確認。&lt;br /&gt;&lt;br /&gt;Python2.6の場合&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; class Hoge:&lt;br /&gt;...     pass&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; Hoge.__base__&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;  File "&amp;lt;stdin&gt;", line 1, in &amp;lt;module&gt;&lt;br /&gt;AttributeError: class Hoge has no attribute '__base__'&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Python3.0の場合&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; class Hoge:&lt;br /&gt;...     pass&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; Hoge.__base__&lt;br /&gt;&amp;lt;class 'object'&gt;&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4800520205498354695?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4800520205498354695/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4800520205498354695' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4800520205498354695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4800520205498354695'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/python3000.html' title='Python3000出たよ'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8016266693639073225</id><published>2008-12-02T22:57:00.003+09:00</published><updated>2008-12-02T23:29:21.076+09:00</updated><title type='text'>Ajaxについて(概要)</title><content type='html'>Ajaxとはなにかと聞かれましたが、こういう風に略字を展開すると意味が分かるはず&lt;br /&gt;&lt;br /&gt;Asynchronous(非同期) + javascript and XMLHttpRequest(or XML)&lt;br /&gt;&lt;br /&gt;要するに「javascriptを使ってXMLを非同期に通信する」というのが、ざっくりした説明です。&lt;br /&gt;最近はXML以外のものも使われるけど、XMLはそれほど重要じゃなくて、大事なのは非同期ってとこです。&lt;br /&gt;目立つ効果としては、ページ遷移が発生しない。なのでユーザのストレスを軽減出来ると言われてます。&lt;br /&gt;とはいえ、結局通信はしているので、重いときには通信が成功したかどうか分かりにくいとも言えます(作り方次第だけどね)。&lt;br /&gt;&lt;br /&gt;システム的な利点としては、必要なデータだけを取りにいくので、一回の通信でやりとりするデータ量を抑えられるというのが一番なのかな？HTMLだと直接必要無いタグもやりとりすることになるけど、Ajaxだとデータ構造として最低限のXMLでやりとり出来るので。&lt;br /&gt;ただ、これも作り方とコンテンツ次第だけど、ひっきりなしにリクエストが来ちゃうと結局サーバ負荷が高くなる可能性もあったり。&lt;br /&gt;&lt;br /&gt;あくまで通信方法でしかないので、コンテンツ保護とはまったく別の話です。ユーザーインタフェース的な話でしかないです。&lt;br /&gt;&lt;br /&gt;Internet Exploer限定とかならコンテンツ保護ソリューションてのは各社から出てるけど、そんなものを使うくらいなら公開しない方がマシ。いまさらっと調べたけどVista対応しているのは少ないみたいだし、これでIE8、Windows7が出てきたら、どこまで対応してくれるか分からない。&lt;br /&gt;最終的に画面をカメラで取られたらアウトなんだしね。&lt;br /&gt;&lt;br /&gt;あと、さっき言った新しいマルチメディア用マークアップ言語ってのはこれの事です。日本語記事は適当に検索してね。&lt;br /&gt;&lt;a href="http://www.w3.org/TR/2008/REC-SMIL3-20081201/cover.html"&gt;SMIL 3.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8016266693639073225?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8016266693639073225/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8016266693639073225' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8016266693639073225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8016266693639073225'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/12/ajax.html' title='Ajaxについて(概要)'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4490522821322651012</id><published>2008-11-30T20:07:00.002+09:00</published><updated>2008-11-30T20:48:47.492+09:00</updated><title type='text'>hamsterdbの特徴</title><content type='html'>hamsterdbはデータベースエンジンだけど、データベース管理システム(DBMS)ではないそうです。&lt;br /&gt;つまりOracleだとかMySQLとはレイヤーが異なるわけですね。&lt;br /&gt;DBMSではないので、当然SQLは使えません。型の扱いも貧弱で、高度なリレーション処理なども使えません。&lt;br /&gt;組み込み用途なので、高速性とサイズの小ささ重視なわけですね。&lt;br /&gt;iPhoneアプリの内部で使うとかすれば、違いがわかるのかな？今のところARMはサポートしてないっぽいけど。&lt;br /&gt;&lt;br /&gt;可愛さにつられてインストールまでしましたが、私にはあまり縁が無いもののようです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4490522821322651012?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4490522821322651012/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4490522821322651012' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4490522821322651012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4490522821322651012'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/hamsterdb.html' title='hamsterdbの特徴'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2635965618493968331</id><published>2008-11-28T21:23:00.003+09:00</published><updated>2008-11-28T22:07:41.944+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntuのランチャーからarduino IDEとprocessingを起動する</title><content type='html'>もしかしたら常識かもしれない。ついでに過去に似たようなことをやったことがある気もするけど、また忘れないようにメモ。&lt;br /&gt;&lt;br /&gt;事の発端は、せっかくarduinoを買ったのに、全然時間がとれなくて遊べなかったので、arduinoIDEを入れてみようとしたところから。&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;問題発生までの過程&lt;/h2&gt;&lt;br /&gt;普通に公式サイトからLinux用のアーカイブを落として、解凍して、「arduino」というシェルスクリプトをダブルクリックすると普通に起動。この辺はさすがJavaですね。&lt;br /&gt;&lt;br /&gt;ついでに1.0が出たというprocessingも落として、解凍して、「processing」というシェルスクリプトをダブルクリックすると普通に起動。さすがJavaですね。&lt;br /&gt;arduinoIDEとprocessingは兄弟みたいなもんですしね。&lt;br /&gt;&lt;br /&gt;ところが、ランチャー経由ではどちらも起動しない。&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;解決編&lt;/h2&gt;&lt;br /&gt;いろいろやっても駄目だったので半ば諦めかけたのですが、そもそもシェルスクリプトの中身を読んでないことに気づき、読んでみる。&lt;br /&gt;どうやら起動時のカレントディレクトリがarduino(processing)のディレクトリであることを前提にしているみたい。&lt;br /&gt;&lt;br /&gt;なのでこんなシェルスクリプトを書いてみた。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;cd $HOME/arduino-0012&lt;br /&gt;sh arduino&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;実行属性をつけて、ランチャーの起動先をこのスクリプトに変更。&lt;br /&gt;すると、無事起動に成功。&lt;br /&gt;processingも同様にして起動を確認しました。&lt;br /&gt;&lt;br /&gt;やっぱり過去に同じ事をやった記憶があるな。何のアプリだったろう。&lt;br /&gt;あと、もう少し美しい方法はないだろうか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2635965618493968331?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2635965618493968331/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2635965618493968331' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2635965618493968331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2635965618493968331'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/ubuntuarduino-ideprocessing.html' title='Ubuntuのランチャーからarduino IDEとprocessingを起動する'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-5065396806505825356</id><published>2008-11-24T08:54:00.003+09:00</published><updated>2008-11-24T09:43:45.230+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>石内都展－ひろしま/ヨコスカ に行ってきた</title><content type='html'>目黒区美術館の&lt;a href="http://www.mmat.jp/event/ishiuchi/index.html"&gt;「石内都展－ひろしま/ヨコスカ」&lt;/a&gt;に行ってきました。&lt;br /&gt;直前に写真美術館の&lt;a href="http://www.syabi.com/details/sakka_vol7.html"&gt;「日本の新進作家展vol.7「オン・ユア・ボディ」&lt;/a&gt;を見てからなので、写真三昧です。&lt;br /&gt;&lt;br /&gt;写真家石内都の初期の作品から最新作「ひろしま」までを一度に見られる非常にお得な展示内容です。&lt;br /&gt;ものすごく大雑把に見るとヨコスカという街から始まり、アパートメントという建物、人間、被服と、対象がどんどんクローズアップされていく流れ。&lt;br /&gt;石内さんの興味は、被写体というより、その表面の肌理(きめ)textureにあるみたいで、年を追うごとにその傾向は強まっているように見えます。石内＝マザーズと思っている人(私です)にとっては唐突な印象の「ひろしま」も、textureを追ううちに自然にtextileに辿り着いたのだということが良く分かるはず。&lt;br /&gt;&lt;br /&gt;「ひろしま」は、その被写体の性格上「ヒロシマ」という物語に見る側が引きずられて、作品ではなく、「ヒロシマ」という物語の感想を抱きかねないので、作品の流れの中で見られたのはラッキーでした。&lt;br /&gt;&lt;br /&gt;石内都ファンだけでなく、石内都をこれから知りたいという人にもお勧めの展覧会です。&lt;br /&gt;ちなみにカタログは、これまでの石内都の全てが載っていると言っても過言ではないほどの情報量で、これまたお勧めです(重いけど)。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-5065396806505825356?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/5065396806505825356/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=5065396806505825356' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5065396806505825356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/5065396806505825356'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/blog-post.html' title='石内都展－ひろしま/ヨコスカ に行ってきた'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-7349524571280588633</id><published>2008-11-23T23:31:00.002+09:00</published><updated>2008-11-23T23:51:13.834+09:00</updated><title type='text'>DSiを買った</title><content type='html'>ヨドバシカメラで普通に、しかも午後に買えてしまいました。&lt;br /&gt;大方の予想通り、DS(lite)やWiiと違い、爆発的に売れているというわけじゃないみたいですね。&lt;br /&gt;GBAが出来なくなるという大きな機能削減もあるので、正直微妙という気はしなくもないです。&lt;br /&gt;&lt;br /&gt;実際、DSiはソフトウェア的なアップデートを前提としていたり、オンラインでソフトを買えるなど、コンセプトそのものがこれまでのDSとは異なっているようです。&lt;br /&gt;DSはあくまでもパッケージソフトを前提としたプラットフォームだったけど、DSiはパッケージソフト以外の可能性を開くのが目的なのかな。&lt;br /&gt;バンブラやレシピ集など、枠組みはそのままで、データのアップデートを行いたくなるソフトが出てきている現状から言えば自然な流れなんでしょうな。&lt;br /&gt;特に学習系ソフトなんかは、複数のソフトを使っていると入れ替えが面倒だと思うので、より便利になるかと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-7349524571280588633?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/7349524571280588633/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=7349524571280588633' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7349524571280588633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/7349524571280588633'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/dsi.html' title='DSiを買った'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-4677961212219791753</id><published>2008-11-22T07:26:00.002+09:00</published><updated>2008-11-22T07:38:09.946+09:00</updated><title type='text'>Google Chromeの変な挙動は続く</title><content type='html'>Google Chrome 0.3.154.9でまた「SSL2.0を使用する」のチェックが勝手に入っていた。&lt;br /&gt;似たような現象が無いかGoogleで検索しても亀鶴茄子がひっかかるだけで、なんの解決にもならない。&lt;br /&gt;再現性がさっぱりわからないので、報告もし辛い。&lt;br /&gt;まだbetaだからですかね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-4677961212219791753?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/4677961212219791753/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=4677961212219791753' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4677961212219791753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/4677961212219791753'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/google-chrome.html' title='Google Chromeの変な挙動は続く'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-6459667441053039526</id><published>2008-11-18T20:22:00.005+09:00</published><updated>2009-11-09T22:46:11.701+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu + Firefox3 で google toolbarが壊れる(2008年11月18日時点)</title><content type='html'>Ubuntu Firefox Modifications 0.6がgoogle toolbarに干渉するみたい。&lt;br /&gt;そのうち解決されると思うけど、Ubuntu Firefox Modificationsを無効にすることで、とりあえず対応。&lt;br /&gt;どっちかというとgoogle toolbarのが大事なので。&lt;br /&gt;&lt;br /&gt;Firefox 3.04のアップデートが原因かな？&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kamenasu.blogspot.com/2009/11/ubuntu910-firefox35delicious.html"&gt;9.10でも同様の事象が発生しました 2009年11月9日&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-6459667441053039526?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/6459667441053039526/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=6459667441053039526' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6459667441053039526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/6459667441053039526'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/ubuntu-firefox3-google-toolbar20081118.html' title='Ubuntu + Firefox3 で google toolbarが壊れる(2008年11月18日時点)'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-2766419890276918398</id><published>2008-11-18T19:17:00.001+09:00</published><updated>2008-11-18T19:19:42.488+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OLPC'/><title type='text'>日本からG1G1</title><content type='html'>今度のGive 1 Get 1は、イギリスのAmazon経由なら日本からでも注文できるそうですよ。&lt;br /&gt;円高だし、何より世界の子供たちのために参加しなくてはですね。&lt;br /&gt;2台目が欲しいとかじゃないですから。子供たちのためですから。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-2766419890276918398?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/2766419890276918398/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=2766419890276918398' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2766419890276918398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/2766419890276918398'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/g1g1.html' title='日本からG1G1'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2136810126015230672.post-8618508726143877429</id><published>2008-11-10T22:50:00.006+09:00</published><updated>2008-11-10T23:29:35.651+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[Python]設定ファイルを使ったログ記録</title><content type='html'>普段はprintで十分だけど、たまにしっかりとしたログを取りたくなる。そういうときに限って忘れているので、未来の自分へメモ。&lt;br /&gt;&lt;br /&gt;設定ファイルの読み込みにはlogging.config.fileConfig(filename)を使うので、&lt;code&gt;import logging&lt;/code&gt;だけでなく、&lt;code&gt;import logging.config&lt;/code&gt;もしなきゃダメ。&lt;br /&gt;&lt;br /&gt;以下サンプル&lt;br /&gt;&lt;br /&gt;設定ファイル&lt;br /&gt;&lt;pre style="background-color:#eeeeee"&gt;&lt;code&gt;[loggers]&lt;br /&gt;keys=root,logger01&lt;br /&gt;&lt;br /&gt;[handlers]&lt;br /&gt;keys=stdout01,file01&lt;br /&gt;&lt;br /&gt;[formatters]&lt;br /&gt;keys=form01&lt;br /&gt;&lt;br /&gt;[logger_root]&lt;br /&gt;level=NOTSET&lt;br /&gt;handlers=stdout01&lt;br /&gt;&lt;br /&gt;[logger_logger01]&lt;br /&gt;lebel=DEBUG&lt;br /&gt;handlers=stdout01,file01&lt;br /&gt;propagate=0&lt;br /&gt;qualname=top.mid&lt;br /&gt;&lt;br /&gt;[handler_stdout01]&lt;br /&gt;class=StreamHandler&lt;br /&gt;level=NOTSET&lt;br /&gt;formatter=form01&lt;br /&gt;args=(sys.stdout,)&lt;br /&gt;&lt;br /&gt;[handler_file01]&lt;br /&gt;class=FileHandler&lt;br /&gt;level=WARNING&lt;br /&gt;formatter=form01&lt;br /&gt;args=("app.log",'w')&lt;br /&gt;&lt;br /&gt;[formatter_form01]&lt;br /&gt;format=%(name)s: %(asctime)s %(levelname)s %(message)s&lt;br /&gt;datefmt=&lt;br /&gt;class=logging.Formatter&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;サンプルコード&lt;br /&gt;&lt;pre style="background-color:#eeeeee"&gt;&lt;code&gt;#-*- coding: utf-8 -*-&lt;br /&gt;import logging&lt;br /&gt;import logging.config&lt;br /&gt;&lt;br /&gt;logging.config.fileConfig('./logging.conf')&lt;br /&gt;&lt;br /&gt;#logger_root&lt;br /&gt;logger = logging.getLogger()&lt;br /&gt;logger.debug(logger.name)&lt;br /&gt;logger.debug('DEBUGログ')&lt;br /&gt;logger.warn('WARNINGログ')&lt;br /&gt;&lt;br /&gt;#logger_logger01(top.mid)&lt;br /&gt;logger = logging.getLogger('top.mid')&lt;br /&gt;logger.debug(logger.name)&lt;br /&gt;logger.info('infoログ')&lt;br /&gt;logger.warn('warnログ')&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;以下、実行結果&lt;br /&gt;&lt;br /&gt;標準出力&lt;br /&gt;&lt;pre style="background-color:#eeeeee"&gt;&lt;code&gt;root: 2008-11-10 22:50:00,038 DEBUG root&lt;br /&gt;root: 2008-11-10 22:50:00,042 DEBUG DEBUGログ&lt;br /&gt;root: 2008-11-10 22:50:00,042 WARNING WARNINGログ&lt;br /&gt;top.mid: 2008-11-10 22:50:00,042 DEBUG top.mid&lt;br /&gt;top.mid: 2008-11-10 22:50:00,043 INFO infoログ&lt;br /&gt;top.mid: 2008-11-10 22:50:00,043 WARNING warnログ&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;app.logへの出力&lt;br /&gt;&lt;pre style="background-color:#eeeeee"&gt;&lt;code&gt;top.mid: 2008-11-10 22:50:00,043 WARNING warnログ&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;だいたい見れば分かるはず。&lt;br /&gt;&lt;code&gt;propagate&lt;/code&gt;ってのは自分が受け取ったものを、上位のloggerにも通知するかの設定(通知する=1,しない=0)。何でもかんでも通知するとログが大爆発するので、記録方法によっては注意したほうが良いかも。&lt;br /&gt;&lt;code&gt;level=NOTSET&lt;/code&gt;ってのはroot loggerの場合、全てを記録。その他のloggerの場合は、親のloggerの設定に従ってログります。&lt;br /&gt;FileHandlerが使用するファイルは無い場合、fileConfigを呼んだ時点で勝手に作られる。&lt;br /&gt;あと、サンプルだからFileHandlerを使ったけど、実際にはRotatingFileHandlerを使うケースのがほとんどのはず。&lt;br /&gt;&lt;br /&gt;これ以上知りたいなら、ドキュメントを読みましょう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2136810126015230672-8618508726143877429?l=kamenasu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kamenasu.blogspot.com/feeds/8618508726143877429/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2136810126015230672&amp;postID=8618508726143877429' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8618508726143877429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2136810126015230672/posts/default/8618508726143877429'/><link rel='alternate' type='text/html' href='http://kamenasu.blogspot.com/2008/11/python.html' title='[Python]設定ファイルを使ったログ記録'/><author><name>亀鶴</name><uri>http://www.blogger.com/profile/00663453431403053017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__A7XrZqdcYc/SVatQVRB5MI/AAAAAAAAAQA/Bjnb4yCqH8Y/S220/sakura.png'/></author><thr:total>0</thr:total></entry></feed>
