<?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-28877138</id><updated>2011-10-13T12:25:07.572+09:00</updated><category term='superh'/><category term='arm'/><category term='t-code'/><category term='AES'/><category term='C'/><category term='assembler'/><category term='add-on'/><category term='w3m'/><category term='ネタ'/><category term='firefox'/><category term='evernote'/><category term='test'/><category term='make'/><category term='git'/><category term='web.py'/><category term='todo'/><category term='vim'/><category term='MD5'/><category term='greasemonkey'/><category term='wget'/><category term='xen'/><category term='patch'/><category term='distcc'/><category term='SSH'/><category term='wifi'/><category term='WPA'/><category term='bridge'/><category term='wif'/><category term='webdav'/><category term='security'/><category term='N73'/><category term='OpenOffice'/><category term='bash'/><category term='pthreads'/><category term='pdf'/><category term='OpenSolaris'/><category term='trac'/><category term='global'/><category term='filesystem'/><category term='TortoiseHG'/><category term='705NK'/><category term='etch'/><category term='tiddlywiki'/><category term='palm'/><category term='Qt'/><category term='Bluetooth'/><category term='sakura'/><category term='pkgsrc'/><category term='NetBSD'/><category term='subversion'/><category term='google'/><category term='MBR'/><category term='ruby'/><category term='puffs'/><category term='MacOSX'/><category term='wiki'/><category term='svs'/><category term='fuse'/><category term='cache'/><category term='SHA1'/><category term='OpenSSL'/><category term='x86'/><category term='googlenotewiki'/><category term='disklabel'/><category term='DMA'/><category term='codereview'/><category term='CPU'/><category term='agile'/><category term='python'/><category term='markdown'/><category term='amazon'/><category term='PGP'/><category term='cruisecontrol'/><category term='llvm'/><category term='debian'/><category term='itron'/><category term='multiprocessor'/><category term='windows'/><category term='xzgv'/><category term='SSL'/><category term='postscript'/><category term='thunderbird'/><category term='Android'/><category term='hardware'/><category term='current'/><category term='canna'/><category term='debug'/><category term='embedded'/><category term='Enigmail'/><category term='math'/><category term='gdb'/><category term='english'/><category term='cygwin'/><category term='programming'/><category term='scm'/><category term='book'/><category term='quiz'/><category term='thread'/><category term='702NK'/><category term='GTD'/><category term='print'/><category term='web2.0'/><category term='Linux'/><category term='unix'/><category term='kernel'/><category term='dictionary'/><category term='samba'/><category term='gcc'/><category term='IE'/><category term='Ubuntu'/><category term='mercurial'/><category term='LaTeX'/><category term='gmail'/><title type='text'>夜でもアッサム</title><subtitle type='html'>NetBSDとかGTDとかSubversionとか組み込み開発とか、そのあたりの技術メモ。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default?start-index=101&amp;max-results=100'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>243</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-28877138.post-1813524702495962818</id><published>2011-07-28T10:21:00.004+09:00</published><updated>2011-07-28T10:29:56.012+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TortoiseHG'/><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu上のTortoiseHGがcommitメッセージ作成中に落ちる件の対処</title><content type='html'>Ubuntu 11.04上のTortoiseHGで、commitダイアログのauto-completionが働くときにTortoiseHGが落ちる。&lt;br /&gt;valgrindで調べるとQtの中で落ちているっぽいので、QtかScintillaのバグの様だ。&lt;br /&gt;&lt;br /&gt;Qt/Scintillaの中を追うのは大変なので、TortoiseHG側でauto completionをOffにすることで対処する。&lt;br /&gt;&lt;br /&gt;参考:&lt;br /&gt;&lt;a href="http://www.riverbankcomputing.co.uk/static/Docs/QScintilla2/classQsciScintilla.html"&gt;ScintillaのAPI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;/usr/share/pyshared/tortoisehg/hgqt/messageentry.pyを以下のように変更する。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;--- messageentry.py.orig 2011-07-28 10:23:28.976103550 +0900&lt;br /&gt;+++ messageentry.py 2011-07-28 10:23:35.004133442 +0900&lt;br /&gt;@@ -28,7 +28,7 @@&lt;br /&gt;         self.setCaretLineVisible(True)&lt;br /&gt;         self.setAutoIndent(True)&lt;br /&gt;         self.setAutoCompletionThreshold(2)&lt;br /&gt;-        self.setAutoCompletionSource(QsciScintilla.AcsAPIs)&lt;br /&gt;+        self.setAutoCompletionSource(QsciScintilla.AcsNone)&lt;br /&gt;         self.setAutoCompletionFillupsEnabled(True)&lt;br /&gt;         self.setLexer(QsciLexerMakefile(self))&lt;br /&gt;         self.lexer().setFont(qtlib.getfont('fontcomment').font())&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/28877138-1813524702495962818?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1813524702495962818/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1813524702495962818' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1813524702495962818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1813524702495962818'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2011/07/ubuntutortoisehgcommit.html' title='Ubuntu上のTortoiseHGがcommitメッセージ作成中に落ちる件の対処'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7452731612214026516</id><published>2011-07-14T14:47:00.002+09:00</published><updated>2011-07-14T15:10:47.130+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSSL'/><title type='text'>AndroidのSSLSocketはマルチスレッドに対応しているのか</title><content type='html'>OpenSSLを知っている人には有名な話だと思うが、OpenSSLではひとつのソケット(SSL型)に対してSSL_read()とSSL_write()を同時に呼ぶことはできない。(実際には多くの場合は動作するが、re-negotiationが動作しない)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.openssl.org/support/faq.html#PROG1"&gt;OpenSSLのFAQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;この仕様は、blocking IOの時に問題となる。SSL_read()でブロックしている最中に別スレッドからSSL_write()することができないのだ。&lt;br /&gt;&lt;br /&gt;SSL上の通信が、Read,Writeがシーケンシャルに行われるような通信の場合には問題とならないが、ReadとWriteが独立して行われる通信の場合、blocking IOのSSLは使えないことになる。&lt;br /&gt;&lt;br /&gt;AndroidのSSL部はOpenSSLを使っているが、この辺りがどうなっているのか(制限がそのままあるのか、回避されているのか)を調べてみた。&lt;br /&gt;&lt;br /&gt;結論としては、AndroidのSSLはマルチスレッド対応している。以下、その説明。&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;SSLSocketの実装は、&lt;a href="http://tools.oesf.biz/android-2.3_r1.0/xref/libcore/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl.java"&gt;OpenSSLSocketImpl.java&lt;/a&gt;にある。&lt;br /&gt;SSLSocketからは、&lt;a href="http://tools.oesf.biz/android-2.3_r1.0/xref/libcore/luni/src/main/native/NativeCrypto.cpp"&gt;NativeCrypto.cpp&lt;/a&gt;の関数が呼ばれている。&lt;br /&gt;&lt;br /&gt;NativeCrypto.cppのNativeCrypto_SSL_do_handshake()で、ソケットをnon-blockingにしている。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;/*&lt;br /&gt; * Make socket non-blocking, so SSL_connect SSL_read() and SSL_write() don't hang&lt;br /&gt; * forever and we can use select() to find out if the socket is ready.&lt;br /&gt; */&lt;br /&gt; if (!setBlocking(fd.get(), false)) {&lt;br /&gt;   throwSSLExceptionStr(env, "Unable to make socket non blocking");&lt;br /&gt;   SSL_clear(ssl);&lt;br /&gt;   JNI_TRACE("ssl=%p NativeCrypto_SSL_do_handshake =&gt; 0", ssl);&lt;br /&gt;   return 0;&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;NativeCrypto.cppのsslRead()とsslWrite()には、以下のコメントがある。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;/*&lt;br /&gt; * Helper function which does the actual writing. The Java layer guarantees that&lt;br /&gt; * at most one thread will enter this function at any given time.&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;関数の中身を見ると、&lt;br /&gt;&lt;br /&gt;  1. non-blockingでSSL_read()/SSL_write()を呼び出す。&lt;br /&gt;  2. 失敗した場合は、sslSelect()を呼び、ブロックする。&lt;br /&gt;&lt;br /&gt;としている。&lt;br /&gt;&lt;br /&gt;結局、&lt;br /&gt;・AndroidのSSLは、non-blocking IOを使っているが、上位にはblockingのAPIを提供している。&lt;br /&gt;・OpenSSLのblocking IOにあるような、マルチスレッドの呼び出し制限は無い。&lt;br /&gt;ということで、ユーザーにとって使いやすいAPIとなっている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7452731612214026516?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7452731612214026516/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7452731612214026516' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7452731612214026516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7452731612214026516'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2011/07/androidsslsocket.html' title='AndroidのSSLSocketはマルチスレッドに対応しているのか'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2991358158760494294</id><published>2010-06-19T22:53:00.002+09:00</published><updated>2010-06-19T22:57:36.105+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Googleのサービスをcommand lineから使う</title><content type='html'>Googleのサービス(picasa, docs, blogger, calendar等)をcommand lineから制御するツール。&lt;br /&gt;&lt;a href="http://google-opensource.blogspot.com/2010/06/introducing-google-command-line-tool.html"&gt;GoogleCL&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;via osnews&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-2991358158760494294?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2991358158760494294/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2991358158760494294' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2991358158760494294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2991358158760494294'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2010/06/googlecommand-line.html' title='Googleのサービスをcommand lineから使う'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7083895741183897175</id><published>2010-03-23T15:18:00.002+09:00</published><updated>2010-03-23T15:22:01.979+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>数あるLinuxのsound APIのうち、何を使うべきか?</title><content type='html'>Linuxには様々なsound API(ライブラリ)があるが、目的別にどのAPIを使うべきかを解説したページ。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://0pointer.de/blog/projects/guide-to-sound-apis.html"&gt;Profession: Audio Terrorist&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7083895741183897175?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7083895741183897175/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7083895741183897175' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7083895741183897175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7083895741183897175'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2010/03/linuxsound-api.html' title='数あるLinuxのsound APIのうち、何を使うべきか?'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-5724616140877069182</id><published>2010-02-28T23:11:00.004+09:00</published><updated>2010-02-28T23:36:06.181+09:00</updated><title type='text'>技術的な内容のメールは直メールすべきではない</title><content type='html'>私は、技術的な内容のメールは直メールすべきではなく、MLに流すべきだと考えている。&lt;br /&gt;MLに流して多数の目に触れるようにすることの効果をわかっていない人が多いようなので、私の考えを書いておく。&lt;br /&gt;&lt;br /&gt;技術的な内容のメールをMLに流すことの効果として、すぐに思いつくのは以下の2点。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;・その技術的な内容を知らない人への教育。&lt;/dt&gt;&lt;dt&gt;・内容に誤りがあったときに、他の人の指摘を受けることができる。&lt;/dt&gt;&lt;/dl&gt;&lt;br /&gt;上記の点だけしか意識していない人が多いが、他に以下の大きな効果がある。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;・どんなときにどんな指摘をすべきかの見本を示すことができる。&lt;/dt&gt;&lt;dd&gt;手本・見本は他の人に見せてこそ見本となる。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;・疑問点を質問しやすい雰囲気を作ることができる。&lt;/dt&gt;&lt;dd&gt;先輩社員が簡単な内容を質問することにより、質問をしやすい雰囲気を作ることができる。全然流量がないMLや高度な質問ばかりのMLでは、質問がしにくくなる。&lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5724616140877069182?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5724616140877069182/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5724616140877069182' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5724616140877069182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5724616140877069182'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2010/02/blog-post_28.html' title='技術的な内容のメールは直メールすべきではない'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-7660680674255295971</id><published>2010-02-28T22:21:00.003+09:00</published><updated>2010-02-28T22:50:13.738+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>日常表現の英語の学習方法</title><content type='html'>英語の表現を学ぶ際、それが日常表現なのかその他なのかで適切な学習方法が違うのではないかと思う。&lt;br /&gt;&lt;br /&gt;私が考える、日常表現を覚える最適な方法は以下の通り。&lt;br /&gt;1. 文字だけではなく、絵(や映像)が載っている教材を使う。&lt;br /&gt;2. 日本語訳が書いていない教材を使う。&lt;br /&gt;&lt;br /&gt;この条件を満たした教材を使って、とにかく&lt;br /&gt;「このシチュエーションではこの表現を使う」&lt;br /&gt;というのを丸暗記するしかない。&lt;br /&gt;&lt;br /&gt;■1. 文字だけではなく、絵(や映像)が載っている教材を使う。&lt;br /&gt;&lt;br /&gt;同じようなシチュエーションのときに同じ表現が頭に浮かばなくてはならないが、絵があるほうがその「浮かびやすさ」が高くなる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■2. 日本語訳が書いていない教材を使う。&lt;br /&gt;&lt;br /&gt;日常表現は、日本語の単語と英語の単語が一対一で対応しないことが多い。&lt;br /&gt;洗う=washと覚えていると、野菜を水洗いする場合のrinseという単語はでてこない。&lt;br /&gt;&lt;br /&gt;日本語訳が載っていると、「洗う=wash」という覚え方をしてしまいやすくなる。&lt;br /&gt;そのように日本語と結びつけた覚え方をすると、日本語で「洗う」を使う表現すべてに英語の「wash」をつかえるように錯覚してまい、間違った連想が行われてしまう。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;私が持っている本でお勧めなのは、&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/1564202224/vimrc-22/ref=nosim"&gt;English for Everyday Activities&lt;/a&gt;という本。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/1564202224/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/1564202224.01.TZZZZZZZ.jpg"&gt;&lt;/a&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/28877138-7660680674255295971?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7660680674255295971/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7660680674255295971' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7660680674255295971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7660680674255295971'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2010/02/blog-post.html' title='日常表現の英語の学習方法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4183909034824993045</id><published>2010-02-25T01:48:00.004+09:00</published><updated>2010-02-25T01:58:17.733+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='llvm'/><title type='text'>DragonEgg - gccのバックエンドとしてllvmを使うもうひとつの方法</title><content type='html'>gccのバックエンドとしてllvmを使うには通常llvm-gccを使うが、&lt;a href="http://dragonegg.llvm.org/"&gt;DragonEgg&lt;/a&gt;という選択肢もある。&lt;br /&gt;&lt;br /&gt;llvm-gccはgccを独自に変更したプログラムだが、DragonEggはgccのpluginの仕組みを使うことで、素のgccから利用できるのが特徴(正確には、現状ではひとつだけgccにパッチが必要)。&lt;br /&gt;&lt;br /&gt;個人的には、このプロジェクト自体より、このプロジェクトによる副産物のほうに興味がある。&lt;br /&gt;それは以下の点。&lt;br /&gt;・DragonEggがgccのpluginのヘビーユーザーになることで、gccのpluginの仕組みが枯れる&lt;br /&gt;・gcc内部の機能の分離が進み、一部だけを置き換えることが容易になる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4183909034824993045?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4183909034824993045/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4183909034824993045' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4183909034824993045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4183909034824993045'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2010/02/dragonegg-gccllvm.html' title='DragonEgg - gccのバックエンドとしてllvmを使うもうひとつの方法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4438087471882854816</id><published>2010-01-02T20:59:00.005+09:00</published><updated>2010-01-02T21:16:31.888+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>pthreadのbacktraceでの不思議な現象</title><content type='html'>Debian lennyのgdbでbacktraceが正しく表示されないことがある。&lt;br /&gt;&lt;br /&gt;うーむ。さっぱり原因が分からない。&lt;br /&gt;どなたか分かる方、教えてください。&lt;br /&gt;&lt;br /&gt;以下、再現させるためのプログラム。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#include &amp;lt;pthread.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static void *print_thread(void *arg)&lt;br /&gt;{&lt;br /&gt;        for (;;) {&lt;br /&gt;                printf("print thread\n");&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;        pthread_t th;&lt;br /&gt;&lt;br /&gt;        pthread_create(&amp;th, 0, print_thread, 0);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        for (;;) {&lt;br /&gt;                printf("main\n");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return 0;&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;このプログラムをgdbで実行すると、"main\n"と"print thread\n"が表示される.&lt;br /&gt;途中でCtrl-Cでプログラムを停止させてbacktraceを表示すると、stackが正しく表示されない。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;(gdb) thr 1&lt;br /&gt;[Switching to thread 1 (Thread 0xb7e576b0 (LWP 12994))]#0  0xb7fdc424 in __kernel_vsyscall ()&lt;br /&gt;(gdb) bt&lt;br /&gt;#0  0xb7fdc424 in __kernel_vsyscall ()&lt;br /&gt;#1  0xb7f46b53 in ?? () from /lib/i686/cmov/libc.so.6&lt;br /&gt;#2  0xb7eb87b3 in ?? () from /lib/i686/cmov/libc.so.6&lt;br /&gt;Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;(gdb) thr 2&lt;br /&gt;[Switching to thread 2 (Thread 0xb7e56b90 (LWP 12997))]#0  0xb7fdc424 in __kernel_vsyscall ()&lt;br /&gt;(gdb) bt&lt;br /&gt;#0  0xb7fdc424 in __kernel_vsyscall ()&lt;br /&gt;#1  0xb7f2828b in write () from /lib/i686/cmov/libc.so.6&lt;br /&gt;#2  0xb7ec1d6c in _IO_file_write () from /lib/i686/cmov/libc.so.6&lt;br /&gt;#3  0xb7ec2ee7 in _IO_do_write () from /lib/i686/cmov/libc.so.6&lt;br /&gt;#4  0xb7ec2895 in _IO_file_overflow () from /lib/i686/cmov/libc.so.6&lt;br /&gt;#5  0xb7ec5713 in __overflow () from /lib/i686/cmov/libc.so.6&lt;br /&gt;#6  0xb7eb8746 in puts () from /lib/i686/cmov/libc.so.6&lt;br /&gt;#7  0x08048456 in print_thread (arg=0x0) at a.c:12&lt;br /&gt;#8  0xb7fb94c0 in start_thread () from /lib/i686/cmov/libpthread.so.0&lt;br /&gt;#9  0xb7f386de in clone () from /lib/i686/cmov/libc.so.6&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;thread 1のbacktraceが、corruptと表示される。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4438087471882854816?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4438087471882854816/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4438087471882854816' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4438087471882854816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4438087471882854816'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2010/01/pthreadbacktrace.html' title='pthreadのbacktraceでの不思議な現象'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4698801134292202205</id><published>2009-12-23T08:46:00.002+09:00</published><updated>2009-12-23T09:05:08.027+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test'/><title type='text'>プログラマ性愚説</title><content type='html'>プログラマ(SEも含む)の性賢説と性愚説というのを考えた。&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;テスト対象のコードは大幅に書き換えられる。時には外部公開APIも変わる可能性がある。&lt;br /&gt;→テストコードはテスト対象のコードが変わっても使える様にしておくべきである。&lt;br /&gt;→テストコードは、再利用できる部分とできない部分に分けておくべきである。&lt;br /&gt;&lt;br /&gt;例えばAPIのテストを行うときには、以下の二つのコードがある。&lt;br /&gt; 1. テストに使用するテストパターン&lt;br /&gt; 2. テスト対象の関数の呼び出し&lt;br /&gt;このうち、1.は再利用が可能なので、2.とは別にしておくのが望ましい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4698801134292202205?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4698801134292202205/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4698801134292202205' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4698801134292202205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4698801134292202205'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/12/blog-post.html' title='プログラマ性愚説'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-738990211131052490</id><published>2009-12-10T18:12:00.005+09:00</published><updated>2009-12-11T14:16:16.206+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='assembler'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='CPU'/><title type='text'>x86のmisalignアクセス時に例外を起こす方法</title><content type='html'>x86ではmisalignアクセス時でも、例外を起こさずにアクセスする事ができる。&lt;br /&gt;例えば次のコード&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;long *p;&lt;br /&gt;char buf[32];&lt;br /&gt;p = (long*)&amp;buf[1];&lt;br /&gt;&lt;br /&gt;*p = 0;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;は、misalignアクセスであり、多くのプロセッサでは例外が発生する。&lt;br /&gt;&lt;br /&gt;x86でも同様に例外を発生させてやるには、EFLAGSレジスタのbit18、AC(Alignment Check)ビットを1にしてやれば良い。&lt;br /&gt;&lt;br /&gt;gccのインラインアセンブラの例。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;        __asm__ __volatile__ (&lt;br /&gt;        "pushf\n"&lt;br /&gt;        "\tpopl %%eax\n"&lt;br /&gt;        "\tor $0x00040000, %%eax\n"&lt;br /&gt;        "\tpushl %%eax\n"&lt;br /&gt;        "\tpopf\n"&lt;br /&gt;        :::"%eax");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これが何の役に立つかと言うと、&lt;br /&gt;・misalignアクセスで例外が発生するプロセッサ上で動作させるコードを作成したい。&lt;br /&gt;・でも、そのテストはx86(Linuxなど)上で行いたい。&lt;br /&gt;という場合。&lt;br /&gt;&lt;br /&gt;参考:&lt;br /&gt;&lt;a href="http://en.wikibooks.org/wiki/X86_Assembly/X86_Architecture#EFLAGS_Register"&gt;X86 Assembly/X86 Architecture&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/548164/mis-aligned-pointers-on-x86"&gt;Mis-aligned pointers on x86&lt;/a&gt;&lt;br /&gt;&lt;a href="http://caspar.hazymoon.jp/OpenBSD/annex/gcc_inline_asm.html"&gt;GCC Inline Assembler&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;09/12/11 追記:&lt;br /&gt;この機能、実はあまり使えないような気がしてきた。&lt;br /&gt;なぜなら、glibcはACが0である事を期待したコードになっていて、ACを1にするとglibcの関数で落ちるから。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-738990211131052490?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/738990211131052490/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=738990211131052490' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/738990211131052490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/738990211131052490'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/12/x86misalign.html' title='x86のmisalignアクセス時に例外を起こす方法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2840390560452240251</id><published>2009-12-06T23:33:00.004+09:00</published><updated>2009-12-06T23:40:51.483+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>pmccabe - プログラムの複雑度を測定する</title><content type='html'>&lt;a href="http://www.parisc-linux.org/~bame/pmccabe/"&gt;pmccabe&lt;/a&gt;。&lt;br /&gt;CやC++のプログラムの循環的複雑度を計測してくれるツール。&lt;br /&gt;&lt;br /&gt;改行コードがCRLFのファイルにpmccabeをかけると、以下のようなエラーがでる。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;"a.c", line 187: too many }'s&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;これを防ぐには、pmccabeに通す前にソースコードの改行コードをLFに書き換えるか、pmccabe自体を以下の様に変更すれば良い。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;--- pmccabe.h.orig 2009-12-06 23:36:37.000000000 +0900&lt;br /&gt;+++ pmccabe.h 2009-12-06 23:26:15.000000000 +0900&lt;br /&gt;@@ -133,7 +133,7 @@&lt;br /&gt; stats_t *stats_pop(stats_t *sp);&lt;br /&gt; void stats_accumulate(stats_t *sp);&lt;br /&gt; &lt;br /&gt;-#define ISSPACE(c) ((c) == T_NCNULINE || (c) == '\n' \&lt;br /&gt;+#define ISSPACE(c) ((c) == T_NCNULINE || (c) == '\n'  || (c) == '\r'\&lt;br /&gt;    || (c) == '\t' || (c) == ' ')&lt;br /&gt; &lt;br /&gt; #define ISIDENT1(c) (((c) &gt;= 'a' &amp;&amp; (c) &lt;= 'z') \&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/28877138-2840390560452240251?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2840390560452240251/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2840390560452240251' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2840390560452240251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2840390560452240251'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/12/pmccabe.html' title='pmccabe - プログラムの複雑度を測定する'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6603886844549506923</id><published>2009-12-04T13:56:00.003+09:00</published><updated>2009-12-04T14:02:02.941+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>Cで、constなポインタからconstをはずす方法</title><content type='html'>constなポインタからconstをはずすキャストをすると、コンパイラのwarningが出る事がある。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;const void *p;&lt;br /&gt;void *p2;&lt;br /&gt;&lt;br /&gt;p = xxx;&lt;br /&gt;p2 = (void*)p; ←ココ。&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;明示的にキャストしているから問題ないような気もするのだが、warningは出てしまう。&lt;br /&gt;&lt;br /&gt;一度longにキャストするという手もある。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;p2 = (void*)(long)p;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;しかしこれだと、「ポインタのサイズとlongのサイズは同じなのか?」問題があり、スッキリしない。&lt;br /&gt;&lt;br /&gt;以下のようにunionを使うと、コンパイラをだまらせる事ができ、しかもスッキリと問題が解決する。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;union {&lt;br /&gt;  void *vp;&lt;br /&gt;  const void *cvp;&lt;br /&gt;} u;&lt;br /&gt;&lt;br /&gt;u.cvp = p;&lt;br /&gt;p2 = u.vp;&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/28877138-6603886844549506923?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6603886844549506923/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6603886844549506923' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6603886844549506923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6603886844549506923'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/12/cconstconst.html' title='Cで、constなポインタからconstをはずす方法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-831359539556377718</id><published>2009-11-18T21:55:00.002+09:00</published><updated>2009-11-18T22:01:12.054+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>様々な周波数のbeep音を出す2</title><content type='html'>ioctlによる方法だと特別な権限が必要になってしまう。特別な権限無しにbeep音をだしたかったので、&lt;a href="http://www.portaudio.com/"&gt;PortAudio&lt;/a&gt;を使うことにした。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://portaudio.com/trac/browser/portaudio/branches/V18.1/pa_tests"&gt;テスト用のファイル&lt;/a&gt;のうち"sin"とつくものを適当に改造すれば、任意の周波数のbeep音を出すことができる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-831359539556377718?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/831359539556377718/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=831359539556377718' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/831359539556377718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/831359539556377718'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/11/beep2.html' title='様々な周波数のbeep音を出す2'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2692358580232146091</id><published>2009-11-18T21:37:00.003+09:00</published><updated>2009-11-18T21:41:17.472+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>様々な周波数のbeep音を出す。</title><content type='html'>ioctl(fd, KIOCSOUND, val);で、様々な周波数のbeep音を出すことができる。要root権限。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;#define CLOCK_TICK_RATE 1193180&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt; int fd;&lt;br /&gt; int ret;&lt;br /&gt; int freq;&lt;br /&gt; int val;&lt;br /&gt;&lt;br /&gt; fd = open("/dev/console", O_WRONLY);&lt;br /&gt; if (fd == -1) {&lt;br /&gt;  perror("open");&lt;br /&gt;  exit(1); &lt;br /&gt; if (argc &gt; 1) {&lt;br /&gt;  freq = atoi(argv[1]);&lt;br /&gt;  val = (int)(CLOCK_TICK_RATE/freq);&lt;br /&gt; } else {&lt;br /&gt;  val = 0;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; ret = ioctl(fd, KIOCSOUND, val);&lt;br /&gt; if (ret &lt; 0) {&lt;br /&gt;  perror("ioctl");&lt;br /&gt;  exit(1);&lt;br /&gt; }&lt;br /&gt; return 0;&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/28877138-2692358580232146091?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2692358580232146091/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2692358580232146091' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2692358580232146091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2692358580232146091'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/11/beep.html' title='様々な周波数のbeep音を出す。'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6614584757403269534</id><published>2009-08-13T00:37:00.002+09:00</published><updated>2009-08-13T01:06:27.714+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='itron'/><title type='text'>ITRONのランデブ機能を使って、mallocで確保したメモリを受け渡してはいけない</title><content type='html'>ITRONには、ランデブという機能がある。&lt;br /&gt;簡単に説明すると、タスクAからタスクBにメッセージを送り、BからAにその返答を返すことができる機能。&lt;br /&gt;&lt;br /&gt;ぱっと見便利な機能なのだが、タスクAからタスクBにメッセージを渡すときに、malloc()等で動的に確保したメモリのポインタを渡すことができないというワナがある。&lt;br /&gt;このワナを知らないと、メモリリークを起こす。&lt;br /&gt;&lt;br /&gt;以下、詳細。&lt;br /&gt;&lt;br /&gt;タスクAからメッセージを送るときには、cal_por()またはtcal_por()というAPIを使う。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;tcal_por(portid, 0x1, msg, msgsize, timeout);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;これでタスクAは、タスクBにmsgを送ることができる。&lt;br /&gt;タスクB側は、以下のようなコードになる。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;acp_por(portid, 0x1, &amp;retno, buf); /* tcal_porされるのを待つ */&lt;br /&gt;...&lt;br /&gt;rpl_rdv(retno, retmsg, sizeof(retmsg)); /* タスクAに返答を返す */&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;タスクBがrpl_rdv()を呼ぶと、タスクAのtcal_por()がリターンして、タスクAはタスクBから返答を受け取ることができる。(返答は、tcal_por()の第3引数msgの指すアドレスに上書きされる)&lt;br /&gt;&lt;br /&gt;ここで問題となるのは、tcal_por()がタイムアウトした場合。&lt;br /&gt;tcal_por()は、タスクBから一定時間内にrpl_rdv()が呼ばれなかった場合にタイムアウトする。タスクBがacp_por()でメッセージを受け取ったかどうかは関係が無い。&lt;br /&gt;すなわちタスクAは、タスクBがacp_por()でAからのメッセージを受け取ったかどうかを判断することができない。&lt;br /&gt;&lt;br /&gt;以下のように、malloc()で動的に確保したメモリをメッセージに含めて、tcal_por()に渡したとする。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;msg.pointer = malloc(msgsize);&lt;br /&gt;tcal_por(portid, 0x1, msg, msgsize, timeout);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;tcal_por()がタイムアウトした場合、free()は一体誰が呼べば良いだろうか？&lt;br /&gt;メッセージはタスクBに伝わっていればBがfree()し、伝わっていなければAがfree()すべきである。&lt;br /&gt;しかし、タスクAは、メッセージが伝わっているのか否かを判断することができないのである。&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;タイトルがちょっと不正確なので、正しく書き直すと、&lt;br /&gt;「ITRON4準拠のランデブ機能を使うときに、mallocで確保したアドレスを含むメッセージをtcal_por()に渡してはいけない。」&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6614584757403269534?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6614584757403269534/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6614584757403269534' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6614584757403269534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6614584757403269534'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/08/itronmalloc.html' title='ITRONのランデブ機能を使って、mallocで確保したメモリを受け渡してはいけない'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2942704801402321875</id><published>2009-08-07T00:21:00.004+09:00</published><updated>2009-08-07T00:53:23.370+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><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;「設計時には、○○図と○○図を作成すること」&lt;br /&gt;などとルール化を行うのは、以下の理由から弊害がある。&lt;ul&gt;&lt;li&gt;不要なドキュメントまで作成してしまう可能性がある。&lt;/li&gt;&lt;li&gt;ルールに明記したドキュメントを作ればOKという思考停止に陥り、本当に必要な設計が行われない可能性がある。&lt;/li&gt;&lt;/ul&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/28877138-2942704801402321875?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2942704801402321875/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2942704801402321875' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2942704801402321875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2942704801402321875'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/08/blog-post_07.html' title='ソフトウェアの設計とは、ドキュメントを書くことではない'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-161730672028278771</id><published>2009-08-03T00:36:00.005+09:00</published><updated>2009-08-03T12:13:38.601+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><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;単語のスペルや意味と発音は、同時に覚えなくては、使い物にならない。&lt;br /&gt;後から発音を覚えるのは、二度手間になる。&lt;br /&gt;&lt;br /&gt;■発音記号を覚えない。&lt;br /&gt;&lt;br /&gt;caught, coat、など、発音の違いを知らないと、その単語を聴いたときに、文脈から意味を推測しなくてはならなく、リスニングが大変。&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;a href="http://www.eikyo.or.jp/wave/"&gt;Nonstop English Wave&lt;/a&gt;&lt;br /&gt;月刊なのだが、1ヶ月では私にはペースが早いので、2ヶ月に1度ほどのペースで買っている。&lt;br /&gt;&lt;br /&gt;追記: 上のリンクは、古かった。&lt;br /&gt;&lt;a href="http://www.eikyo.or.jp/new/index.html"&gt;新しいリンクはこちら&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-161730672028278771?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/161730672028278771/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=161730672028278771' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/161730672028278771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/161730672028278771'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/08/blog-post.html' title='効果の薄い英語学習法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2557765928365348751</id><published>2009-07-06T10:23:00.004+09:00</published><updated>2009-07-06T10:28:20.749+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Java言語で学ぶデザインパターン入門 マルチスレッド編</title><content type='html'>&lt;br&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797331623/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4797331623.01.TZZZZZZZ.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;beakmark氏から教えてもらった本。&lt;br /&gt;&lt;br /&gt;ITRONを使っている人には、この本の内容はちょっともの足りない。&lt;br /&gt;なぜなら、&lt;br /&gt;・組み込みの場合、リソースをどこからAllocするのかという問題が付きまとう。この本にはその点が触れられていない。(Javaを対象としているから、しかたないけど)&lt;br /&gt;・ITRONでは、待ちに入る+ロックを解除する、という事を実現するAPIが無い。そのため、この本に書いてあるコードを直接ITRONで実装する事はできない。&lt;br /&gt;&lt;br /&gt;Javaで初めてマルチスレッドプログラムを書く人にはおすすめできる本だと思う。&lt;br /&gt;&lt;br /&gt;評価: 4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-2557765928365348751?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2557765928365348751/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2557765928365348751' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2557765928365348751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2557765928365348751'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/07/java.html' title='Java言語で学ぶデザインパターン入門 マルチスレッド編'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2194892279772588164</id><published>2009-06-18T19:15:00.003+09:00</published><updated>2009-06-18T19:41:30.164+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><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/28877138-2194892279772588164?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2194892279772588164/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2194892279772588164' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2194892279772588164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2194892279772588164'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/06/blog-post.html' title='プログラムのスキルのうち、最も修得が難しいスキルは何か'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-3932707967649580159</id><published>2009-05-22T14:35:00.003+09:00</published><updated>2009-05-22T14:43:12.160+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>テストリストファースト開発</title><content type='html'>テストファーストという開発手法があるが、この手法は前程として&lt;br /&gt;・テストリストの作成&lt;br /&gt;・テストの実装&lt;br /&gt;の2つの物を、分けられない物としているのではないだろうか。&lt;br /&gt;(多分そうなのだと思うけど、アジャイル開発手法にあまり詳しくないので、違うかも)&lt;br /&gt;&lt;br /&gt;私の経験上では、たいていの場合は&lt;br /&gt;1. テストリストを作成する&lt;br /&gt;2. 実装する。&lt;br /&gt;3. テストを実装する。&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/28877138-3932707967649580159?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/3932707967649580159/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=3932707967649580159' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3932707967649580159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3932707967649580159'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/05/blog-post.html' title='テストリストファースト開発'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7695792270590352734</id><published>2009-04-02T10:24:00.003+09:00</published><updated>2009-04-02T10:31:18.220+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bridge'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>LinuxとNetBSDのbridgeの違い</title><content type='html'>LinuxとNetBSDでは、bridgeの意味が違うようだ。&lt;br /&gt;&lt;br /&gt;Linuxのbridgeは、複数のネットワークを一つのネットワークに見せるために使う。&lt;br /&gt;例えばeth0とeth1をブリッジする時には、&lt;br /&gt;・eth0とeth1には、IPアドレスを割り当てない(0.0.0.0)。&lt;br /&gt;・bridgeに対して、IPアドレスを割り当てる。&lt;br /&gt;このようにする事で、eth0とeth1が一つのネットワークに見え、Linuxは一つのIPアドレスを持つ事になる。&lt;br /&gt;&lt;br /&gt;NetBSDのbridgeは、複数のネットワーク間でパケットを素通しするために使う。&lt;br /&gt;例えばeth0とeth1をブリッジすると、&lt;br /&gt;・eth0に来たパケットは、eth1へ行く。&lt;br /&gt;・eth1に来たパケットは、eth0へ行く。&lt;br /&gt;・bridgeはIPアドレスを持たない。eth0とeth1はIPアドレスを持っている。&lt;br /&gt;Linuxと同じように、eth0とeth1が一つのネットワークに見えるが、NetBSDの場合は二つのIPアドレスを持つ事になる。&lt;br /&gt;&lt;br /&gt;参考&lt;br /&gt;&lt;a href="http://archive.netbsd.se/?ml=openbsd-misc&amp;a=2006-05&amp;t=2063095"&gt;http://archive.netbsd.se/?ml=openbsd-misc&amp;a=2006-05&amp;t=2063095&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7695792270590352734?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7695792270590352734/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7695792270590352734' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7695792270590352734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7695792270590352734'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/04/linuxnetbsdbridge.html' title='LinuxとNetBSDのbridgeの違い'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6899621819221233158</id><published>2009-03-27T18:59:00.003+09:00</published><updated>2009-03-27T19:06:40.405+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='etch'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>debian etchでpthreadのデバッグができない</title><content type='html'>debian etchでpthreadを使ったプログラムのデバッグをしようとしているが、うまくいかない。&lt;br /&gt;同じくetchの別のPCだと動くのだが…。&lt;br /&gt;&lt;br /&gt;gdbでプログラムをロードすると、&lt;pre&gt;&lt;code&gt;gdb: Failed to read a valid object file image from memory&lt;/code&gt;&lt;/pre&gt;と出る。&lt;br /&gt;これは、&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=401482"&gt;kernelのバグのようで&lt;/a&gt;、kernelをetchnhalfの2.6.24にする事で解決。&lt;br /&gt;&lt;br /&gt;ちなみに、&lt;a href="http://www.debian.org/releases/etch/debian-installer/etchnhalf"&gt;etch-n-half&lt;/a&gt;とは、「etch使っているけど、xxxだけ新しいの使いたいよ」という人のための追加パッケージ。&lt;br /&gt;&lt;br /&gt;次は、&lt;pre&gt;&lt;code&gt;thread_db_get_info: cannot get thread info: generic error&lt;/code&gt;&lt;/pre&gt;が出て、これが解決できない。&lt;br /&gt;&lt;br /&gt;別のetch PCで問題なく動作しているのも謎。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6899621819221233158?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6899621819221233158/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6899621819221233158' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6899621819221233158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6899621819221233158'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/03/debian-etchpthread.html' title='debian etchでpthreadのデバッグができない'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4302173883416845444</id><published>2009-03-06T13:14:00.003+09:00</published><updated>2009-03-06T13:18:30.338+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>premature abstraction(早すぎる抽象化)は良くない結果をもたらす</title><content type='html'>知識の少ない状態、サンプルが一つしかない状態で抽象化しても、結局は良いデザインとはならない事が多い。&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://www.ddj.com/development-tools/214502253"&gt;Dr.Dobb's Portal&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4302173883416845444?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4302173883416845444/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4302173883416845444' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4302173883416845444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4302173883416845444'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/03/premature-abstraction.html' title='premature abstraction(早すぎる抽象化)は良くない結果をもたらす'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-3048082994486234578</id><published>2009-02-12T12:27:00.000+09:00</published><updated>2009-02-12T12:30:19.498+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>vimのpython用インデント設定</title><content type='html'>pythonでは、インデントはタブではなくスペースが推奨されている。&lt;br /&gt;.pyファイル開いた時のインデントは、以下のように設定すれば良い。&lt;br /&gt;&lt;br /&gt;~/.vim/ftplugin/python.vimを作り、内容を以下のようにする。(windowsの場合は、$HOME/vimfiles/ftplugin/python.vim)&lt;pre&gt;&lt;code&gt;setlocal tabstop=4&lt;br /&gt;setlocal softtabstop=4&lt;br /&gt;setlocal shiftwidth=4&lt;br /&gt;setlocal textwidth=80&lt;br /&gt;setlocal smarttab&lt;br /&gt;setlocal expandtab&lt;br /&gt;setlocal smartindent&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;あと、.vimrcに以下を書いておくと便利。&lt;pre&gt;&lt;code&gt;autocmd BufRead *.py set smartindent cinwords=if,elif,&lt;br /&gt;else,for,while,try,except,finally,def,class&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/28877138-3048082994486234578?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/3048082994486234578/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=3048082994486234578' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3048082994486234578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3048082994486234578'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/02/vimpython.html' title='vimのpython用インデント設定'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-6879910587905630680</id><published>2009-01-23T12:37:00.003+09:00</published><updated>2009-01-23T12:53:10.951+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSSL'/><title type='text'>opensslのs_serverの不思議</title><content type='html'>以下のようなコードを書いた。これをopenssl.shとする。&lt;pre&gt;&lt;code&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;openssl s_server ...(省略)... &amp;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;bash上から、&lt;code&gt;$ ./openssl.sh&lt;/code&gt;とすると、バックグラウンドでopensslのs_serverが起動する。&lt;br /&gt;&lt;br /&gt;NetBSD上で&lt;pre&gt;&lt;code&gt;$ ./openssl.sh&lt;/code&gt;&lt;/pre&gt;を実行すると、このs_serverにブラウザから接続できる。&lt;br /&gt;しかし、Linux上で./openssl.shを実行すると、ブラウザから接続できない。&lt;br /&gt;&lt;br /&gt;openssl.sh経由ではなく、以下のように直接opensslを実行すると、ブラウザから接続できる。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$ openssl s_server ... &amp;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;openssl.sh経由と直接の違いをktraceで調べてみた。&lt;br /&gt;&lt;br /&gt;直接opensslを動作させると、&lt;br /&gt;1. opensslがselectを呼ぶ&lt;br /&gt;2. selectから抜ける。&lt;br /&gt;3. ブラウザからの接続があり、通信を行う。&lt;br /&gt;となるのだが、openssl.sh経由だと、&lt;br /&gt;1. opensslがselectを呼ぶ&lt;br /&gt;2. selectから抜ける。&lt;br /&gt;3. fdの0(STDIN)が切られているので、プログラムを終了する。&lt;br /&gt;と動作しているようだ。&lt;br /&gt;&lt;br /&gt;なぜLinuxとNetBSDで動作が違うのかが不明。&lt;br /&gt;bashの違い? opensslの違い?&lt;br /&gt;&lt;br /&gt;動作が違う原因はわからないが、opensslのSTDINをcloseしてはいけないという事はわかった。&lt;br /&gt;以下のようにする事で、回避する事にした。&lt;br /&gt;1. openssl.shの中でopenssl s_serverを起動する時には、&amp;を付けない。&lt;pre&gt;&lt;code&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;openssl s_server ...(省略)... &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;2. openssl.shを起動する時に、&amp;を付ける。&lt;pre&gt;&lt;code&gt;$ openssl.sh &amp;&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/28877138-6879910587905630680?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6879910587905630680/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6879910587905630680' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6879910587905630680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6879910587905630680'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/01/opensslsserver.html' title='opensslのs_serverの不思議'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6784299479908956869</id><published>2009-01-06T10:19:00.001+09:00</published><updated>2009-01-06T10:21:37.118+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenOffice'/><title type='text'>OpenOfficeで目次にハイパーリンクをつける</title><content type='html'>OpenOfficeで、目次にハイパーリンクをつける方法。&lt;br /&gt;&lt;a href="http://smil.exblog.jp/4382176/"&gt;http://smil.exblog.jp/4382176/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;とってもUIが分かりにくい。&lt;br /&gt;XMLの開始、終了タグをつけているのだと考えれば、このUIにした気持ちはわからなくはないが、もうちょっと良いUIにできたのでは?と思ってしまう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6784299479908956869?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6784299479908956869/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6784299479908956869' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6784299479908956869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6784299479908956869'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2009/01/openoffice.html' title='OpenOfficeで目次にハイパーリンクをつける'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2851784679766469599</id><published>2008-12-26T13:46:00.004+09:00</published><updated>2008-12-26T13:50:35.509+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='evernote'/><category scheme='http://www.blogger.com/atom/ns#' term='tiddlywiki'/><title type='text'>TiddlyWikiのデータをEvernoteにインポートする</title><content type='html'>TiddlyWikiのhtmlデータを、Evernoteでインポートできるenex形式に変換するスクリプトを作った。&lt;br /&gt;&lt;a href="http://sakurai.sumomo.ne.jp/tiddlywiki_to_evernote_py"&gt;http://sakurai.sumomo.ne.jp/tiddlywiki_to_evernote_py&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TiddlyWiki 2.3と、Evernote 3.0.0で確認。&lt;br /&gt;&lt;br /&gt;TiddlyWikiのタグをいろいろ駆使していると、変換に失敗するかもしれないけど。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-2851784679766469599?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2851784679766469599/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2851784679766469599' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2851784679766469599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2851784679766469599'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/12/tiddlywikievernote.html' title='TiddlyWikiのデータをEvernoteにインポートする'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-9114158968482268764</id><published>2008-12-26T10:13:00.003+09:00</published><updated>2008-12-26T10:30:22.628+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>スレッドを確実にsuspendする</title><content type='html'>&lt;div&gt;Solarisのスレッドには、thr_suspend()という関数がある。この関数は、&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;他のスレッドをsuspendし、thr_suspend()からリターンした時には、ターゲットとなるスレッドが停止している事が保証されている。&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;という関数である。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pthreadでスレッドAから別のスレッドBをsuspendするには、&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;pthread_kill(B, SIGSTOP)&lt;/code&gt;&lt;/div&gt;&lt;div&gt;を使えば良いのだが、pthread_killからリターンした時点では、スレッドBは停止していない可能性がある。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pthreadでthr_suspend()と同じ機能を実現しようと思ったら、以下のようにすると良い。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. スレッドBのSIGUSR1のシグナルハンドラを登録しておく。&lt;/div&gt;&lt;div&gt;2. スレッドAは、pthread_kill(B, SIGUSR1)をする。&lt;/div&gt;&lt;div&gt;3. スレッドAは、sem_wait()でセマフォ待ちをする。&lt;/div&gt;&lt;div&gt;4. スレッドBのSIGUSR1のシグナルハンドラで、sem_post()して、スレッドAを起こす。&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ポイントは、4。&lt;/div&gt;&lt;div&gt;シグナルハンドラからは非同期シグナルセーフ関数しか呼んではいけないが、sem_post()は非同期シグナルセーフ関数なので、スレッド間の同期を取るのに使う事ができる。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;参考:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.usenix.org/events/usenix01/freenix01/full_papers/wood/wood_html/index.html"&gt;&lt;/div&gt;&lt;div&gt;Building an open-source Solaris-compatible threads library&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://sourceforge.net/projects/sctl/"&gt;Solaris-compatible Thread Library(STL)&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-9114158968482268764?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/9114158968482268764/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=9114158968482268764' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/9114158968482268764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/9114158968482268764'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/12/suspend.html' title='スレッドを確実にsuspendする'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5768876353812172308</id><published>2008-12-15T13:45:00.001+09:00</published><updated>2008-12-15T13:48:18.016+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>CORDIC - 加減・シフトだけで三角関数の計算を行う</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/CORDIC"&gt;CORDIC&lt;/a&gt;を使うと、加算、減算、ビットシフトだけで三角関数の計算ができる。&lt;br /&gt;らしい。&lt;br /&gt;&lt;br /&gt;via current-used@netbsd(だったかな?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5768876353812172308?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5768876353812172308/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5768876353812172308' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5768876353812172308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5768876353812172308'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/12/cordic.html' title='CORDIC - 加減・シフトだけで三角関数の計算を行う'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1454974309450589606</id><published>2008-11-22T20:42:00.004+09:00</published><updated>2008-11-22T20:56:02.459+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='DMA'/><title type='text'>[クイズ]DMAをする時に、いつcacheを操作するか - 答え</title><content type='html'>CPU&amp;lt;---Cache&amp;lt;---Memory&amp;lt;---Device&lt;br /&gt;&lt;br /&gt;DeviceからMemoryにDMAでデータを転送して、そのデータをCPUで読む場合、以下のどちらの操作が必要か。&lt;br /&gt;&lt;br /&gt;1. DeviceからMemoryへの転送前に、cacheのinvalidate(cacheの内容を捨てる)をする。&lt;br /&gt;3. DeviceからMemoryへの転送後に、cacheのinvalidateをする。&lt;br /&gt;&lt;br /&gt;答えは、&lt;br /&gt;「1が正しく、3だと正しくデータが読めない事がある」&lt;br /&gt;&lt;br /&gt;3.だとダメな理由は以下の通り。&lt;br /&gt;&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;例として、DMA転送先のアドレスを0xa0000000とする。&lt;br /&gt;3.は、以下のように細分化できる。&lt;br /&gt;&lt;br /&gt;3-1 0xa0000000の内容(古い内容)が、既にcache上にある。&lt;br /&gt;3-2 DeviceからMemoryの0xa0000000へDMA転送を開始する。&lt;br /&gt;3-3 DMAの完了を待つ。&lt;br /&gt;3-4 0xa0000000の古い内容がcacheにあるので、それをinvalidateする。&lt;br /&gt;3-5 0xa0000000の新しい内容をMemoryから読む。&lt;br /&gt;&lt;br /&gt;問題は、3-3の間に0xa0000000の古い内容がcacheから追い出されてしまい、新しい0xa0000000の内容を古い内容で上書きしてしまう可能性がある事。&lt;br /&gt;&lt;br /&gt;3-3の間に、他のスレッドが頻繁にメモリアクセスを行うなどすると、0xa0000000の古い内容がcacheから追い出されやすい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1454974309450589606?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1454974309450589606/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1454974309450589606' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1454974309450589606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1454974309450589606'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/11/dmacache_22.html' title='[クイズ]DMAをする時に、いつcacheを操作するか - 答え'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-195614237562573163</id><published>2008-11-20T23:59:00.005+09:00</published><updated>2008-11-21T14:38:14.545+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quiz'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='DMA'/><title type='text'>[クイズ]DMAをする時に、いつcacheを操作するか</title><content type='html'>CPU&amp;lt;---Cache&amp;lt;---Memory&amp;lt;---Device&lt;br /&gt;&lt;br /&gt;DeviceからMemoryにDMAで転送して、そのデータをCPUで読む場合、以下のいずれかのcacheの操作を行う必要がある。&lt;br /&gt;&lt;br /&gt;1. DeviceからMemoryへの転送前に、cacheのinvalidate(cacheの内容を捨てる)をする。&lt;br /&gt;&lt;strike&gt;2. DeviceからMemoryへの転送前に、cacheのflush(cacheの内容をMemoryへ書き出す)する。&lt;/strike&gt;&lt;br /&gt;3. DeviceからMemoryへの転送後に、cacheのinvalidateをする。&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;2.はflushの分遅くなるが、実質1.と変わり無い。&lt;/strike&gt;これらの&lt;strike&gt;3&lt;/strike&gt;2つのうちどれかを行えば、正しくDMA転送ができる。&lt;br /&gt;&lt;br /&gt;…のだと、ずっと思っていた。&lt;br /&gt;今日まで。&lt;br /&gt;&lt;br /&gt;ところが、上記のうち1つは正しくない事に、この歳になって今さらながら気付いた。&lt;br /&gt;&lt;br /&gt;■クイズ&lt;br /&gt;&lt;br /&gt;上記の&lt;strike&gt;3つ&lt;/strike&gt;1と3のうち、正しくデータを読めないのはどれか。&lt;br /&gt;また、正しくデータを読めない理由は何か。&lt;br /&gt;&lt;br /&gt;■訂正&lt;br /&gt;&lt;br /&gt;2.もダメでしたね。1.と3.の2択に変更しました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-195614237562573163?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/195614237562573163/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=195614237562573163' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/195614237562573163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/195614237562573163'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/11/dmacache.html' title='[クイズ]DMAをする時に、いつcacheを操作するか'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-6068665268398223025</id><published>2008-11-18T13:52:00.003+09:00</published><updated>2008-11-18T13:59:01.631+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>subversionのpost-commitフックで、pipeがつまるのを修正</title><content type='html'>以前作った、commit時にメールを送る&lt;a href="http://sakurai.sumomo.ne.jp/page/svn-commit-mail"&gt;post-commit&lt;/a&gt;だが、変更ファイル数が多い時に、pipeがつまって止まってしまう事がわかったので、修正した。&lt;br /&gt;&lt;br /&gt;以前のバージョン:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;(nkfr, nkfw) = popen2.popen('nkf -j')&lt;br /&gt;nkfw.write(log2)&lt;br /&gt;nkfw.close()&lt;br /&gt;jislog = nkfr.read()&lt;br /&gt;nkfr.close()&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;これだと、&lt;br /&gt;・nkf側が、JISに変換した結果をwriteしようとする&lt;br /&gt;・post-commit側もwrite中&lt;br /&gt;の時に、デッドロックする。&lt;br /&gt;&lt;br /&gt;selectを使うという手もあったが、もっと単純に、テンポラリファイルを作って対処する事にした。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;(fd, tname) = tempfile.mkstemp()&lt;br /&gt;os.write(fd, log2)&lt;br /&gt;os.close(fd)&lt;br /&gt;&lt;br /&gt;(nkfr, nkfw) = popen.popen2('nkf -j %s' % (tname,))&lt;br /&gt;nkfw.close()&lt;br /&gt;jislog = nkfr.read()&lt;br /&gt;nkfr.close()&lt;br /&gt;&lt;br /&gt;os.unlink(tname)&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/28877138-6068665268398223025?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6068665268398223025/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6068665268398223025' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6068665268398223025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6068665268398223025'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/11/subversionpost-commitpipe.html' title='subversionのpost-commitフックで、pipeがつまるのを修正'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5033219794015178760</id><published>2008-11-17T14:45:00.002+09:00</published><updated>2008-11-17T14:47:43.909+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PGP'/><category scheme='http://www.blogger.com/atom/ns#' term='Enigmail'/><category scheme='http://www.blogger.com/atom/ns#' term='thunderbird'/><title type='text'>Enigmailで使っていたPGPのprivate keyを、他のPCに移行する</title><content type='html'>&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$ c:\Program Files\GNU\GnuPG\gpg.exe --export-secret-keys &gt; mykey.asc&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;あとはこのファイルをEnigmailでimportしてやれば良い。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5033219794015178760?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5033219794015178760/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5033219794015178760' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5033219794015178760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5033219794015178760'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/11/enigmailpgpprivate-key.html' title='Enigmailで使っていたPGPのprivate keyを、他のPCに移行する'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-8988547216321758928</id><published>2008-10-28T12:58:00.002+09:00</published><updated>2008-10-28T13:02:49.108+09:00</updated><title type='text'>手っ取り早く勉強するには、FAQを読むと良い</title><content type='html'>先程のpthreadのエントリにもちょっと書いたが、何かを手っ取り早く勉強するには、&lt;br /&gt;&lt;br /&gt;1. 基本を学ぶ。&lt;br /&gt;2. FAQを読む。わからない点は調べる。&lt;br /&gt;&lt;br /&gt;とするのが早いと思う。&lt;br /&gt;&lt;br /&gt;例えば、C言語の場合なら、基本を理解した後に、&lt;a href="http://www.kouno.jp/home/c_faq/"&gt;C言語 FAQ&lt;/a&gt;を読むのが良い。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-8988547216321758928?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/8988547216321758928/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=8988547216321758928' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8988547216321758928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8988547216321758928'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/10/faq.html' title='手っ取り早く勉強するには、FAQを読むと良い'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1023916849624316783</id><published>2008-10-28T12:44:00.005+09:00</published><updated>2008-10-28T12:57:52.963+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>私のPthreadsの勉強方法</title><content type='html'>私がPthreadsを勉強した方法。この方法で、Pthreadsの初級者レベルは脱したと思う。&lt;br /&gt;&lt;br /&gt;1. man ptheradを読む。&lt;br /&gt;どんなAPIがあるのかを理解する。自分でthreadを作ったり、condとmutexを使ってみる。&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.cognitus.net/html/howto/pthreadSemiFAQ.html"&gt;POSIX Threads: Semi-FAQ&lt;/a&gt;を読む。&lt;br /&gt;わからない所はmanで調べる。&lt;br /&gt;&lt;br /&gt;3. pthreads本を読む。&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4900900664/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4900900664.01.TZZZZZZZ.jpg"&gt;&lt;/a&gt;&lt;br /&gt;説明がまわりくどいが、役立つ情報がいろいろ書いてある。(特に後半)&lt;br /&gt;&lt;br /&gt;4. pthreadsライブラリの実装を見る&lt;br /&gt;私の場合は、NetBSDの&lt;a href="http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libpthread/?only_with_tag=MAIN"&gt;src/lib/libpthread&lt;/a&gt;のソースを読んだ。&lt;br /&gt;NetBSDのpthreadのソースは読みやすかったが、Linuxのpthreadsのソースも読みやすいかはわからない。&lt;br /&gt;&lt;br /&gt;あと役に立ちそうなサイト。&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/yupo5656/20040703/p3"&gt;memologue&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fenix.ne.jp/~G-HAL/comp/sig.txt"&gt;sig.txt&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1023916849624316783?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1023916849624316783/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1023916849624316783' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1023916849624316783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1023916849624316783'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/10/pthreads.html' title='私のPthreadsの勉強方法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1853246582689902861</id><published>2008-10-22T13:43:00.006+09:00</published><updated>2008-10-22T14:22:41.779+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='itron'/><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>ITRONのAPIは初心者に優しく、pthreadsのAPIは上級者に優しい</title><content type='html'>スレッド間(ITRONの用語では、タスク間)の通信を行う場合のITRONのAPIとpthreadsのAPIを比べると、&lt;br /&gt;・ITRONの通信APIは、初心者に優しい&lt;br /&gt;・pthreadsの通信APIは、上級者に優しい&lt;br /&gt;と思う。&lt;br /&gt;&lt;br /&gt;■ITRONとptheadsにはどんなAPIがあるか&lt;br /&gt;&lt;br /&gt;ITRONのAPIには、多数の通信用の関数が用意されている。&lt;pre&gt;&lt;code&gt;・wai_sem()/sig_sem()&lt;br /&gt;・set_flg()/wai_flg()&lt;br /&gt;・snd_dtq()/rcv_dtq()&lt;br /&gt;・snd_mbx()/rcv_mbx()&lt;/code&gt;&lt;/pre&gt;ITRONの拡張APIも含めると、&lt;pre&gt;&lt;code&gt;・loc_mtx()/unl_mtx()&lt;br /&gt;・snd_mbf()/rcv_mbf()&lt;br /&gt;・cal_por()/acp_por()&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;多数のAPIが用意されているため、ユーザーは用途に合ったAPIを選んで使う事になる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一方、pthreadsでスレッド間の通信を行う場合、基本的には以下の4つのAPIを使う事になる。&lt;pre&gt;&lt;code&gt;・pthread_mutex_lock()/pthread_mutex_unlock()&lt;br /&gt;・pthread_cond_signal()/pthread_cond_wait()&lt;/code&gt;&lt;/pre&gt;これらのAPIを使って、所望の通信機能を自分で作成する事になる。&lt;br /&gt;例えばセマフォが欲しければ、これらの4つのAPIを使ってセマフォを実装する事になる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■独自の通信APIを自分で実装できるかどうか&lt;br /&gt;&lt;br /&gt;ITRONの場合は、自分で独自の通信APIを実装しようとした時に、かなり難しい事に気付く。&lt;br /&gt;それは、&lt;br /&gt;・ロックを解除する&lt;br /&gt;・待ちに入る&lt;br /&gt;を同時に(atomicに)実現する手段が、ITRONには用意されていないからだ。&lt;br /&gt;&lt;br /&gt;ロックをしつつ、待ちに入る事ができないので、ITRONでは待ちに入る前には必ずロックを解除しなくてはならない。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;wai_sem(lock_sem);&lt;br /&gt;...&lt;br /&gt;sig_sem(lock_sem);&lt;br /&gt;/* ここで、他のスレッドにここで割り込まれるかも */&lt;br /&gt;wai_sem(sleep_sem);&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;ロックの解除から待ちに入る間に他のスレッドにスイッチしてしまう可能性があるため、正しく動作するコードが書くのが非常に難しい。&lt;br /&gt;&lt;br /&gt;逆に言うと、ITRONでは独自の通信APIを実装するのが難しいからこそ、多数の通信APIが最初から用意されているという見方もできる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一方、pthradsのpthread_cond_wait()では、mutexのアンロックと待ちに入る事を同時に実現できる。&lt;br /&gt;これにより、pthreadsでは独自の通信APIを作るのが非常に簡単である。&lt;br /&gt;&lt;br /&gt;■結論&lt;br /&gt;&lt;br /&gt;ITRONの通信APIは、多数の通信APIが最初から用意されているので、用途に合ったAPIが既にある場合には非常に楽。&lt;br /&gt;一方、用途に合うAPIが無い場合は、非常に苦労する。&lt;br /&gt;&lt;br /&gt;pthreadsの通信APIは、APIが少ないため、セマフォのような簡単に物でも自分で作らなくてはならない。&lt;br /&gt;しかし、どんな通信APIでも実装が可能であるため、上級者にはこちらの方が使いやすい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1853246582689902861?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1853246582689902861/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1853246582689902861' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1853246582689902861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1853246582689902861'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/10/itronapipthreadsapi.html' title='ITRONのAPIは初心者に優しく、pthreadsのAPIは上級者に優しい'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7262760397538425337</id><published>2008-10-21T09:59:00.004+09:00</published><updated>2008-10-21T10:07:50.741+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>NetBSD4/currentのgdbで、info threadsが動作しない</title><content type='html'>NetBSD4とcurrentの、gdbでのpthreadサポートが動作しないようだ。&lt;br /&gt;&lt;br /&gt;以下のプログラムをコンパイルする。&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;pthread.h&amp;gt;&lt;br /&gt;&lt;br /&gt;void *func(void *arg)&lt;br /&gt;{&lt;br /&gt;        printf("hello\n");&lt;br /&gt;&lt;br /&gt;        sleep(10);&lt;br /&gt;        return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;        pthread_t th;&lt;br /&gt;&lt;br /&gt;        pthread_create(&amp;th, 0, func, 0);&lt;br /&gt;&lt;br /&gt;        pthread_join(th, 0);&lt;br /&gt;&lt;br /&gt;        return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;gdbでinfo threadsとしても、何も出力されない。&lt;pre&gt;&lt;code&gt;(gdb) run&lt;br /&gt;Starting program: /home/sakurai/tmp/pth/a.out &lt;br /&gt;hello&lt;br /&gt;^Z&lt;br /&gt;Program received signal SIGTSTP, Stopped (user).&lt;br /&gt;0xbbb17667 in sa_yield () from /usr/lib/libc.so.12&lt;br /&gt;(gdb) info threads&lt;br /&gt;(gdb) &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;いくつかPRが出ているが、まだ修正されていない様子。&lt;br /&gt;&lt;a href="http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=34194"&gt;PR34194&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=35540"&gt;PR35540&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=35657"&gt;PR35657&lt;/a&gt;(これはclosed)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7262760397538425337?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7262760397538425337/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7262760397538425337' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7262760397538425337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7262760397538425337'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/10/netbsd4currentgdbinfo-threads.html' title='NetBSD4/currentのgdbで、info threadsが動作しない'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6157734118372687395</id><published>2008-10-03T10:26:00.002+09:00</published><updated>2008-10-03T10:41:50.227+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PGP'/><category scheme='http://www.blogger.com/atom/ns#' term='Enigmail'/><category scheme='http://www.blogger.com/atom/ns#' term='thunderbird'/><title type='text'>thunderbirdでPGPする時に、UTF-8で送られてしまうのを回避する</title><content type='html'>Thunderbird + EnigmailでPGPメールを送ると、日本語メールでも必ずUTF-8で送られてしまう。&lt;br /&gt;そうすると、UTF-8に対応していないメーラーで受信すると、メールが化けてしまう。&lt;br /&gt;&lt;br /&gt;下記リンクの方法を使うと、UTF-8ではなくISO-2022-JPで送る事ができる。&lt;br /&gt;&lt;a href="http://kiyo.chips.jp/blog/archives/2008/01/enigmail_0956.html"&gt;bonbonniere - Enigmail 0.95.6での不具合の回避&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;ちなみに私はEnigmail-0.95.7を使っているが、上記の方法で回避できた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6157734118372687395?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6157734118372687395/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6157734118372687395' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6157734118372687395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6157734118372687395'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/10/thunderbirdpgputf-8.html' title='thunderbirdでPGPする時に、UTF-8で送られてしまうのを回避する'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-8031872440739845595</id><published>2008-09-24T10:41:00.001+09:00</published><updated>2008-09-24T10:43:56.190+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>phk mallocの内部動作の説明</title><content type='html'>*BSDでは、最近までphk mallocと呼ばれるmallocが使われていた。&lt;br /&gt;&lt;br /&gt;社内ゼミ用に、&lt;a href="http://sakurai.sumomo.ne.jp/page/phkmalloc"&gt;phk mallocの内部動作の説明&lt;/a&gt;を書いたので、公開。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-8031872440739845595?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/8031872440739845595/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=8031872440739845595' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8031872440739845595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8031872440739845595'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/09/phk-malloc.html' title='phk mallocの内部動作の説明'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1381288041290467784</id><published>2008-09-11T23:34:00.004+09:00</published><updated>2008-09-12T09:37:14.451+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='pkgsrc'/><category scheme='http://www.blogger.com/atom/ns#' term='canna'/><title type='text'>NetBSD-currentでcannaserverが落ちるのを修正する</title><content type='html'>NetBSD-currentのバージョンを上げたら、cannaserverが動作しなくなってしまった。&lt;br /&gt;&lt;br /&gt;cannaserverのlib/RK/ncache.cに、以下のコードがある。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#define hash(x)     ((int)((x)%NCHASH))&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;xはどこかのバッファのアドレスで、このアドレスを元にhashのインデックスを作成しているようだ。&lt;br /&gt;&lt;br /&gt;このアドレスが0x80000000以上になるとhash(x)が負になってしまい、誤動作してしまう。&lt;br /&gt;このバグを直すには、&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#define hash(x)     ((int)(((unsigned long)(x))%NCHASH))&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;とcastしてやれば良い。&lt;br /&gt;&lt;br /&gt;08/09/12追記:&lt;br /&gt;他に困っている人いないのかな?と思って検索してみた。&lt;br /&gt;- &lt;a href="http://jyurai.ddo.jp/~amorita/diary/?date=20071221#p02"&gt;Orz日記&lt;/a&gt;でも取りあげられていた。&lt;br /&gt;- cvs版では、&lt;a href="http://lists.sourceforge.jp/mailman/archives/canna-cvs/2006-March/001126.html"&gt;06/03/30に修正済み&lt;/a&gt;だった。(未リリース)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1381288041290467784?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1381288041290467784/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1381288041290467784' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1381288041290467784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1381288041290467784'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/09/netbsd-currentcannaserver.html' title='NetBSD-currentでcannaserverが落ちるのを修正する'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5995969392356507215</id><published>2008-09-04T09:44:00.004+09:00</published><updated>2008-09-04T09:50:22.746+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>signedの比較 - 答え</title><content type='html'>前回の答え。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;long a = 0x80000000;&lt;br /&gt;long b = 1;&lt;br /&gt;&lt;br /&gt;if (a - b &gt; 0) {&lt;br /&gt;    printf("hello");&lt;br /&gt;} else {&lt;br /&gt;    printf("world");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;これは、helloではなくworldが出力される事もある。&lt;br /&gt;&lt;br /&gt;なぜかと言うと…&lt;br /&gt;&lt;br /&gt;Cでは、signedの計算でオーバーフローした時の動作は、未定義。&lt;br /&gt;そのためコンパイラは、「signedの計算はオーバーフローしない」と思って最適化をかける事がある。&lt;br /&gt;&lt;br /&gt;コンパイラの最適化の結果、&lt;code&gt;a-b&amp;gt;0&lt;/code&gt;が、&lt;code&gt;a&amp;gt;b&lt;/code&gt;に変換されると、以下のコードになる。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;long a = 0x80000000;&lt;br /&gt;long b = 1;&lt;br /&gt;&lt;br /&gt;if (a &gt; b) {&lt;br /&gt;    printf("hello");&lt;br /&gt;} else {&lt;br /&gt;    printf("world");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;この場合、aは負、bは正なので、worldが出力される事になる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5995969392356507215?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5995969392356507215/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5995969392356507215' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5995969392356507215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5995969392356507215'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/09/0-printfhello-else-printfworld.html' title='signedの比較 - 答え'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1925513311087071403</id><published>2008-09-03T13:49:00.001+09:00</published><updated>2008-09-03T13:50:48.125+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>signedの比較</title><content type='html'>社内で出したクイズ。&lt;br /&gt;&lt;br /&gt;以下のコードは、何が出力されるでしょう。longは32bitとした場合。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;long a = 0x80000000;&lt;br /&gt;long b = 1;&lt;br /&gt;&lt;br /&gt;if (a - b &gt; 0) {&lt;br /&gt;    printf("hello");&lt;br /&gt;} else {&lt;br /&gt;    printf("world");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;答えは次回。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1925513311087071403?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1925513311087071403/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1925513311087071403' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1925513311087071403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1925513311087071403'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/09/signed.html' title='signedの比較'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1005384820295547796</id><published>2008-09-01T13:16:00.001+09:00</published><updated>2008-09-01T13:18:29.740+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>AnkhSVN - visual studioでSubversion</title><content type='html'>visual studioとsubversionを連携できる&lt;a href="http://ankhsvn.open.collab.net/"&gt;AhknSVN&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://www.infoq.com/news/2008/08/ankhsvn-2"&gt;InfoQ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1005384820295547796?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1005384820295547796/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1005384820295547796' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1005384820295547796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1005384820295547796'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/09/ankhsvn-visual-studiosubversion.html' title='AnkhSVN - visual studioでSubversion'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-679016190116342271</id><published>2008-08-28T11:03:00.002+09:00</published><updated>2008-08-28T11:05:43.855+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>NetBSD4のSH7710用パッチ</title><content type='html'>&lt;a href="http://sakurai.sumomo.ne.jp/netbsd/netbsd4-26-diff.gz"&gt;NetBSD4のSH7710用のパッチ&lt;/a&gt;を作った。&lt;br /&gt;ターゲットボードは、BUG社(私の勤めている会社)の&lt;a href="http://www.cente.jp/product/ESPT2.html"&gt;ESPT2&lt;/a&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/28877138-679016190116342271?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/679016190116342271/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=679016190116342271' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/679016190116342271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/679016190116342271'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/08/netbsd4sh7710.html' title='NetBSD4のSH7710用パッチ'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2977689887811803389</id><published>2008-08-21T12:23:00.003+09:00</published><updated>2008-08-21T12:29:08.939+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='pkgsrc'/><title type='text'>pkgsrcのrubyをrdoc無しでビルドする</title><content type='html'>pkgsrcのrubyは、そのままの状態では--enable-install-docがconfigureのオプションに付いているので、rdocのインデックスも構築しようとする。&lt;br /&gt;&lt;br /&gt;メモリが少ない環境(16MBとか…)だと、これが結構きびしい。というか、スワップしまくりでビルドが終わらない。&lt;br /&gt;&lt;br /&gt;/etc/mk.confに以下のように書くと、rdocのインデックスを作らない。&lt;br /&gt;&lt;code&gt;PKG_OPTIONS.ruby=-ruby-build-ri-db&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-2977689887811803389?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2977689887811803389/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2977689887811803389' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2977689887811803389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2977689887811803389'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/08/pkgsrcrubyrdoc.html' title='pkgsrcのrubyをrdoc無しでビルドする'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7562940031007954576</id><published>2008-08-19T11:02:00.004+09:00</published><updated>2008-08-19T11:09:28.884+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='distcc'/><category scheme='http://www.blogger.com/atom/ns#' term='pkgsrc'/><title type='text'>distccでpkgsrcをビルドする</title><content type='html'>distccを使ってpkgsrcをビルドする時に、&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$ make CC=distcc&lt;/code&gt;&lt;/pre&gt;としても、以下のようなエラーが出てビルドする事ができない。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$ make CC=distcc&lt;br /&gt;=&gt; Bootstrap dependency digest&gt;=20010302: found digest-20080510&lt;br /&gt;ERROR: This package has set PKG_FAIL_REASON:&lt;br /&gt;ERROR: Unable to satisfy dependency: gcc34&gt;=4.1.2&lt;br /&gt;*** Error code 1&lt;br /&gt;&lt;br /&gt;Stop.&lt;br /&gt;$ &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;distccでpkgsrcをビルドするには、まず/etc/mk.confに以下のように書く。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;PKGSRC_COMPILER=distcc gcc&lt;br /&gt;DISTCC_HOSTS=192.168.0.1 localhost&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;その後、フツーに&lt;pre&gt;&lt;code&gt;$ make&lt;/code&gt;&lt;/pre&gt;とすれば良い。&lt;br /&gt;&lt;br /&gt;参考&lt;br /&gt;&lt;a href="http://www.ki.nu/software/pkgsrc/distcc.html"&gt;http://www.ki.nu/software/pkgsrc/distcc.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7562940031007954576?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7562940031007954576/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7562940031007954576' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7562940031007954576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7562940031007954576'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/08/distccpkgsrc.html' title='distccでpkgsrcをビルドする'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6630138325166533772</id><published>2008-08-04T18:58:00.007+09:00</published><updated>2008-08-04T19:10:33.710+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><title type='text'>SSL(TLS)のDHとDHEの違い</title><content type='html'>&lt;ul&gt;&lt;li&gt;DHEのEは、EphemeralのE。&lt;/li&gt;&lt;li&gt;DHEは、DHパラメータを通信時に動作に作成する。&lt;/li&gt;&lt;li&gt;DHは、DHパラメータは証明書に書かれている物を使う。よって、static DHとも呼ばれる。&lt;/li&gt;&lt;li&gt;DH-RSAは、証明書にCAがRSAで署名したという事。証明書にRSA鍵が入っているわけではない。&lt;/li&gt;&lt;li&gt;DHE-RSAは、証明書にRSA鍵が入っている。&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DH-RSA&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DH-DSS&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DHE-RSA&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DHE-DSS&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;サーバーの証明書に入っている物&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DHパラメータ&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DHパラメータ&lt;/th&gt;&lt;br /&gt;&lt;th&gt;RSA鍵&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DSA鍵&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;DHパラメータ&lt;/th&gt;&lt;br /&gt;&lt;th&gt;静的(証明書に書かれている)&lt;/th&gt;&lt;br /&gt;&lt;th&gt;静的(証明書に書かれている)&lt;/th&gt;&lt;br /&gt;&lt;th&gt;動的(通信時に作る)&lt;/th&gt;&lt;br /&gt;&lt;th&gt;動的(通信時に作る)&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;証明書の署名&lt;/th&gt;&lt;br /&gt;&lt;th&gt;RSA&lt;/th&gt;&lt;br /&gt;&lt;th&gt;DSA&lt;/th&gt;&lt;br /&gt;&lt;th&gt;-&lt;/th&gt;&lt;br /&gt;&lt;th&gt;-&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6630138325166533772?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6630138325166533772/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6630138325166533772' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6630138325166533772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6630138325166533772'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/08/ssltlsdhdhe.html' title='SSL(TLS)のDHとDHEの違い'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-8080193377475952823</id><published>2008-08-04T10:25:00.001+09:00</published><updated>2008-08-04T10:27:56.035+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>プロカウンセラーの聞く技術</title><content type='html'>&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4422112570/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4422112570.01.TZZZZZZZ.jpg"&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-8080193377475952823?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/8080193377475952823/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=8080193377475952823' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8080193377475952823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8080193377475952823'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/08/blog-post.html' title='プロカウンセラーの聞く技術'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4787349120468436007</id><published>2008-08-01T12:28:00.002+09:00</published><updated>2008-08-01T12:31:34.223+09:00</updated><title type='text'>twitter始めた</title><content type='html'>twitterを始めて3か月。細々とだけど続きそうなので、URL公開。&lt;br /&gt;&lt;a href="http://twitter.com/anolivetree"&gt;http://twitter.com/anolivetree&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4787349120468436007?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4787349120468436007/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4787349120468436007' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4787349120468436007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4787349120468436007'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/08/twitter.html' title='twitter始めた'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-9034785597502909784</id><published>2008-07-25T17:59:00.002+09:00</published><updated>2008-07-25T18:09:17.423+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>全部のbfdnameが入ったobjcopyを作る</title><content type='html'>訳あってelf32-littlearmのobjcopyが欲しかったのだが、cygwinの標準バイナリのobjcopyはelf32-littlearmには対応していない。&lt;br /&gt;&lt;br /&gt;objcopyくらい、最初から全てのbfdnameに対応していればいいのに。&lt;br /&gt;とは思うが、無い物はしかたないので自分でビルド。&lt;br /&gt;&lt;br /&gt;1. cygwinのsetup.exeで、objcopyのソースを持ってくる。&lt;br /&gt;2. $ cd /usr/src/binutils-xxx/&lt;br /&gt;3. $ ./configure --enable-targets=all&lt;br /&gt;4. $ make&lt;br /&gt;5. $ cp binutils/.libs/objcopy.exe &amp;lt;どこか好きなディレクトリ&amp;gt;&lt;br /&gt;&lt;br /&gt;なぜかビルドが途中でエラーで止まるが、目的のobjcopyはビルドされたので、気にしない事にする。&lt;br /&gt;&lt;br /&gt;参考&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/natsutan/20080429"&gt;ぱた☆へね 2008-04-29&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ところで、上記の「ぱた☆へね」サイトのbinaryカテゴリ、おもしろそうなので後で読もう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-9034785597502909784?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/9034785597502909784/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=9034785597502909784' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/9034785597502909784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/9034785597502909784'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/bfdnameobjcopy.html' title='全部のbfdnameが入ったobjcopyを作る'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1947811285404300838</id><published>2008-07-24T10:41:00.003+09:00</published><updated>2008-07-24T10:45:59.689+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>false positiveとfalse negative</title><content type='html'>false positiveとfalse negative、どっちがどっちかの覚え方。&lt;br /&gt;falseは「間違って」と訳す。&lt;br /&gt;&lt;a href="http://chalow.net/2008-06-22-2.html"&gt;http://chalow.net/2008-06-22-2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;なるほどー。&lt;br /&gt;spam filterの例で言えば、spam filterはスパムと判定するのが役目なので、&lt;br /&gt;false positive → 間違ってspamと判定した&lt;br /&gt;false negative → 間違ってspamではないと判定した&lt;br /&gt;という意味になる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1947811285404300838?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1947811285404300838/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1947811285404300838' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1947811285404300838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1947811285404300838'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/false-positivefalse-negative.html' title='false positiveとfalse negative'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-8267646228407228792</id><published>2008-07-22T23:57:00.004+09:00</published><updated>2008-07-23T00:28:25.368+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><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/28877138-8267646228407228792?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/8267646228407228792/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=8267646228407228792' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8267646228407228792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8267646228407228792'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/blog-post_22.html' title='ソースコードのコメントに書くべき事'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-3043482466810590545</id><published>2008-07-22T22:55:00.004+09:00</published><updated>2008-07-22T23:37:12.184+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><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;&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/28877138-3043482466810590545?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/3043482466810590545/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=3043482466810590545' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3043482466810590545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3043482466810590545'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/blog-post.html' title='結合テストは単体テストよりも先に行うべき'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-5188249851997117470</id><published>2008-07-15T13:32:00.002+09:00</published><updated>2008-07-15T13:34:40.632+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scm'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>2時間で学ぶgit</title><content type='html'>&lt;a href="http://excess.org/article/2008/07/ogre-git-tutorial/"&gt;gitのscreen cast&lt;/a&gt;。前後半合わせて2時間。&lt;br /&gt;&lt;br /&gt;via OSnews&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5188249851997117470?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5188249851997117470/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5188249851997117470' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5188249851997117470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5188249851997117470'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/2git.html' title='2時間で学ぶgit'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4354902446544400828</id><published>2008-07-14T18:10:00.003+09:00</published><updated>2008-07-14T18:15:28.655+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>MAKEDEV wdとすると、不正なデバイスができる</title><content type='html'>他にハマる人もいないとは思うけど、地味に30分くらいハマッたのでメモ。&lt;br /&gt;&lt;br /&gt;MAKEDEVでwdのデバイスファイルを作る時&lt;pre&gt;&lt;code&gt;# cd /dev/&lt;br /&gt;# ./MAKEDEV wd&lt;/code&gt;&lt;/pre&gt;とすると、不正なファイルが作成される。&lt;pre&gt;&lt;code&gt;# ls -l&lt;br /&gt;c------r-x   1 root     wheel       0, 0x00000280 Jul 14 18:09 rwd0a*&lt;br /&gt;c------r-x   1 root     wheel       1, 0x00000280 Jul 14 18:09 rwd0b*&lt;br /&gt;c------r-x   1 root     wheel       2, 0x00000280 Jul 14 18:09 rwd0c*&lt;br /&gt;c------r-x   1 root     wheel       3, 0x00000280 Jul 14 18:09 rwd0d*&lt;br /&gt;c------r-x   1 root     wheel       4, 0x00000280 Jul 14 18:09 rwd0e*&lt;br /&gt;c------r-x   1 root     wheel       5, 0x00000280 Jul 14 18:09 rwd0f*&lt;br /&gt;c------r-x   1 root     wheel       6, 0x00000280 Jul 14 18:09 rwd0g*&lt;br /&gt;c------r-x   1 root     wheel       7, 0x00000280 Jul 14 18:09 rwd0h*&lt;br /&gt;brw-r-----   1 root     operator    3,   0 Jul 14 18:09 wd0a&lt;br /&gt;brw-r-----   1 root     operator    3,   1 Jul 14 18:09 wd0b&lt;br /&gt;brw-r-----   1 root     operator    3,   2 Jul 14 18:09 wd0c&lt;br /&gt;brw-r-----   1 root     operator    3,   3 Jul 14 18:09 wd0d&lt;br /&gt;brw-r-----   1 root     operator    3,   4 Jul 14 18:09 wd0e&lt;br /&gt;brw-r-----   1 root     operator    3,   5 Jul 14 18:09 wd0f&lt;br /&gt;brw-r-----   1 root     operator    3,   6 Jul 14 18:09 wd0g&lt;br /&gt;brw-r-----   1 root     operator    3,   7 Jul 14 18:09 wd0h&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;正しくは、&lt;pre&gt;&lt;code&gt;# ./MAKEDEV wd0&lt;/code&gt;&lt;/pre&gt;のように、数字を付ける。&lt;pre&gt;&lt;code&gt;crw-r-----  1 root     operator    3,   0 Jul 14 18:12 rwd0a&lt;br /&gt;crw-r-----  1 root     operator    3,   1 Jul 14 18:12 rwd0b&lt;br /&gt;crw-r-----  1 root     operator    3,   2 Jul 14 18:12 rwd0c&lt;br /&gt;crw-r-----  1 root     operator    3,   3 Jul 14 18:12 rwd0d&lt;br /&gt;crw-r-----  1 root     operator    3,   4 Jul 14 18:12 rwd0e&lt;br /&gt;crw-r-----  1 root     operator    3,   5 Jul 14 18:12 rwd0f&lt;br /&gt;crw-r-----  1 root     operator    3,   6 Jul 14 18:12 rwd0g&lt;br /&gt;crw-r-----  1 root     operator    3,   7 Jul 14 18:12 rwd0h&lt;br /&gt;brw-r-----  1 root     operator    0,   0 Jul 14 18:12 wd0a&lt;br /&gt;brw-r-----  1 root     operator    0,   1 Jul 14 18:12 wd0b&lt;br /&gt;brw-r-----  1 root     operator    0,   2 Jul 14 18:12 wd0c&lt;br /&gt;brw-r-----  1 root     operator    0,   3 Jul 14 18:12 wd0d&lt;br /&gt;brw-r-----  1 root     operator    0,   4 Jul 14 18:12 wd0e&lt;br /&gt;brw-r-----  1 root     operator    0,   5 Jul 14 18:12 wd0f&lt;br /&gt;brw-r-----  1 root     operator    0,   6 Jul 14 18:12 wd0g&lt;br /&gt;brw-r-----  1 root     operator    0,   7 Jul 14 18:12 wd0h&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;warningくらい出してくれてもいいのに…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4354902446544400828?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4354902446544400828/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4354902446544400828' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4354902446544400828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4354902446544400828'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/makedev-wd.html' title='MAKEDEV wdとすると、不正なデバイスができる'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7540593672752655598</id><published>2008-07-14T15:53:00.003+09:00</published><updated>2008-07-14T15:56:09.182+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='t-code'/><title type='text'>漢直win+TortoiseSVN</title><content type='html'>TortoiseSVN1.4で&lt;a href="http://www.sato.kuis.kyoto-u.ac.jp/~yuse/tcode/kw/"&gt;漢直win&lt;/a&gt;を使う時には、&lt;pre&gt;&lt;code&gt;[TortoiseSVN]&lt;br /&gt;className=Scintilla&lt;br /&gt;outputMethod=1&lt;/code&gt;&lt;/pre&gt;としないと日本語を入力できなかったが、TortoiseSVN1.5では&lt;pre&gt;&lt;code&gt;[TortoiseSVN]&lt;br /&gt;className=Scintilla&lt;br /&gt;outputMethod=0&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/28877138-7540593672752655598?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7540593672752655598/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7540593672752655598' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7540593672752655598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7540593672752655598'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/wintortoisesvn.html' title='漢直win+TortoiseSVN'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-8315041237136244198</id><published>2008-07-10T09:46:00.005+09:00</published><updated>2008-07-10T10:03:46.887+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='disklabel'/><title type='text'>disklabelとエンディアン</title><content type='html'>disklabelを調べて、ちょっとわかった事をまとめる。&lt;br /&gt;disklabelを読み書きするにはdisklabel(8)を使うのだが、2通りの方法がある。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;disklabel(8)は、ioctlでdisklabelの内容をkernel経由で読み(書き)する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;disklabel(8)に-rを渡すと、ディスクから直接disklabelを読み(書き)する。&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;disklabelのパーサーは、kernel内とdisklabel内の2つが存在し、disklabel(8)に-rを渡すと後者が使われる。&lt;br /&gt;&lt;br /&gt;で、このパーサーに違いがある。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;kernel内でのdisklabelのパーサーはSH3ではarch/sh3/sh3/disksubr.c。これは、デフォルトではEndian Independentではない。つまり、i386で作ったdisklabelをBig EndianのCPUでは読めない。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;disklabel(8)内のdisklabelのパーサーは、Endian Independent。&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;これによって、どんな現象が起こるかと言うと、i386でdisklabelを付けたCFをsh3-ebで読もうとした場合に、&lt;ul&gt;&lt;li&gt;# disklabel wd0のようにすると、disklabelが無いかのように扱われる。(kernelが自動作成したfictitiousなdisklabelが見える)&lt;/li&gt;&lt;li&gt;# disklabel -r wd0とすると、i386で作ったdisklabelが読める&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;SH3でdisksubr.cをEndian Independentにするには、confにoptions BSDDISKLABEL_EIと書くと良い。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-8315041237136244198?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/8315041237136244198/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=8315041237136244198' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8315041237136244198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8315041237136244198'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/07/disklabel.html' title='disklabelとエンディアン'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5022325412678650176</id><published>2008-06-26T13:50:00.002+09:00</published><updated>2008-06-26T13:52:20.212+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='pthreads'/><title type='text'>VSTHlite - pthreadsのテストスイート</title><content type='html'>&lt;a href="http://www.opengroup.org/testing/downloads/vsthlite.html"&gt;VSTHlite&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.netbsd.se/VSTHlite"&gt;NetBSDでVSTHliteを使う方法&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;via tech-misc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5022325412678650176?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5022325412678650176/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5022325412678650176' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5022325412678650176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5022325412678650176'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/06/vsthlite-pthreads.html' title='VSTHlite - pthreadsのテストスイート'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5150473835866070936</id><published>2008-06-26T11:36:00.002+09:00</published><updated>2008-06-26T11:45:34.674+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>SH3ボード上のNetBSDで、CF動作に成功</title><content type='html'>自社のSH3(SH7710)のボードにNetBSD4.0をポーティングしていたのだが、&lt;br /&gt;やっとCFを動作させる事に成功。&lt;br /&gt;長かった…&lt;br /&gt;&lt;br /&gt;epppcic.cを参考に作ったのだが、kthreadの動作でよくわからない所がある。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;  attach()&lt;br /&gt;  {&lt;br /&gt;    ...&lt;br /&gt;    kthread_create(thread1, ph);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  thread1()&lt;br /&gt;  {&lt;br /&gt;    ...&lt;br /&gt;    kthread_create1(thread2, ph, ...);&lt;br /&gt;    kthread_exit(0);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  thread2()&lt;br /&gt;  {&lt;br /&gt;    ...&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;としていたのだが、これだと、なぜかfixjobcで落ちてしまう。&lt;br /&gt;kthread_exit(0)を抜くと動作した。&lt;br /&gt;なぜだろう。親threadはexitしてはいけないというルールでもあるのだろうか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5150473835866070936?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5150473835866070936/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5150473835866070936' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5150473835866070936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5150473835866070936'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/06/sh3netbsdcf.html' title='SH3ボード上のNetBSDで、CF動作に成功'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6389789860721284779</id><published>2008-06-17T13:50:00.001+09:00</published><updated>2008-06-17T13:53:37.672+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBR'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='disklabel'/><title type='text'>MBRラベルから、BSDのdisklabelを作る</title><content type='html'>BSDでは、ディスクのパーティーション情報はdisklabelに書いてあり、MBRに書いてある情報は使わない。&lt;br /&gt;&lt;br /&gt;mbrlabel(8)を使うと、MBR(Master Boot Record)ラベルから、BSDのdisklabelを作成してくれる。&lt;br /&gt;&lt;br /&gt;via netbsd-users&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6389789860721284779?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6389789860721284779/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6389789860721284779' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6389789860721284779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6389789860721284779'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/06/mbrbsddisklabel.html' title='MBRラベルから、BSDのdisklabelを作る'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-50342030508040144</id><published>2008-06-16T18:10:00.002+09:00</published><updated>2008-06-16T18:13:38.936+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><title type='text'>cacheのカラーリング</title><content type='html'>プログラムの実行速度を上げるためには、CPUが持っているcacheをいかに上手に使うかが重要になってくる。&lt;br /&gt;cacheのcoloringというプログラムテクニックを使うと、cacheのmiss率を下げる事ができる。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sakurai.sumomo.ne.jp/page/cache_coloring"&gt;cache coloringの社内勉強会用資料&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-50342030508040144?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/50342030508040144/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=50342030508040144' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/50342030508040144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/50342030508040144'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/06/cache.html' title='cacheのカラーリング'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-9076370650782416836</id><published>2008-06-13T18:35:00.000+09:00</published><updated>2008-06-13T18:36:40.430+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSH'/><title type='text'>OpenSSHのスループットを上げるためのpatch</title><content type='html'>&lt;a href="http://www.psc.edu/networking/projects/hpn-ssh/"&gt;High Performance SSH/SCP - HPN-SSH&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;via NetBSDのML(のどれか)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-9076370650782416836?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/9076370650782416836/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=9076370650782416836' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/9076370650782416836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/9076370650782416836'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/06/opensshpatch.html' title='OpenSSHのスループットを上げるためのpatch'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5083706432515670013</id><published>2008-06-09T18:26:00.000+09:00</published><updated>2008-06-09T18:27:44.184+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux Kernel Map</title><content type='html'>&lt;a href="http://www.makelinux.net/kernel_map"&gt;Linux Kernel Map&lt;/a&gt;。&lt;br /&gt;Linuxカーネルの内部モジュールの地図。&lt;br /&gt;&lt;br /&gt;via OSnews&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5083706432515670013?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5083706432515670013/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5083706432515670013' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5083706432515670013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5083706432515670013'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/06/linux-kernel-map.html' title='Linux Kernel Map'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7451659133656510064</id><published>2008-06-09T17:35:00.002+09:00</published><updated>2008-06-09T17:40:21.384+09:00</updated><title type='text'>Protothreads</title><content type='html'>&lt;a href="http://www.sics.se/~adam/pt/"&gt;Protothreads&lt;/a&gt;を使うと、OS不使用にもかかわらず、まるでスレッドプログラミングしているかのようにプログラミングを行う事ができる。&lt;br /&gt;&lt;br /&gt;そのProtothreadsの&lt;a href="http://sakurai.sumomo.ne.jp/page/protothreads"&gt;社内勉強会用の資料&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7451659133656510064?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7451659133656510064/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7451659133656510064' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7451659133656510064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7451659133656510064'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/06/protothreads.html' title='Protothreads'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6094234145450964522</id><published>2008-05-29T18:11:00.002+09:00</published><updated>2008-05-29T18:22:08.462+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='codereview'/><title type='text'>Subversionのブランチをソースコードレビューに使う</title><content type='html'>オンラインで行うソースコードレビューツールには、&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.review-board.org/"&gt;Review Board&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/rietveld/"&gt;Rietveld&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;などいろいろある。&lt;br /&gt;&lt;br /&gt;が、もっと簡単でお手軽な方法を見つけた。それは、&lt;br /&gt;「Subversionのブランチをソースコードレビューに使う」&lt;br /&gt;という物。&lt;br /&gt;&lt;br /&gt;やり方:&lt;ol&gt;&lt;li&gt;レビュー対象のソースコードを、ブランチしておく&lt;/li&gt;&lt;li&gt;各自レビューを行い、ソースコードの中にコメントを書き込む。(必ずしも、/* */で括られている必要は無い)&lt;/li&gt;&lt;li&gt;コメントをcommitする&lt;/li&gt;&lt;/ol&gt;これだけ。&lt;br /&gt;コメントには、/* FIXME */とか、/* XXX */とか書いておくと、あとでgrepしやすくて良いかもしれない。&lt;br /&gt;&lt;br /&gt;メリット:&lt;ul&gt;&lt;li&gt;レビュアーが、好きなエディタが使える。&lt;/li&gt;&lt;li&gt;導入がカンタン&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;デメリット:&lt;ul&gt;&lt;li&gt;レビューの内容をバグ表と関連付けるとか、直ったかどうか確認する、などの高度な事はできない&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6094234145450964522?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6094234145450964522/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6094234145450964522' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6094234145450964522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6094234145450964522'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/subversion.html' title='Subversionのブランチをソースコードレビューに使う'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-8072248197048750327</id><published>2008-05-29T10:46:00.001+09:00</published><updated>2008-05-29T10:48:21.556+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='w3m'/><title type='text'>w3mでページの内容に応じてキーバイントを変えるpatch</title><content type='html'>w3mで、ページの内容に応じてキーバイントを変えるpatchを作った。&lt;br /&gt;このpatchを使うと、&lt;br /&gt;「gmailで、'k'で一つ新しいメール、'j'で一つ古いメールを見る」&lt;br /&gt;なんて機能を実装する事ができる。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sakurai.sumomo.ne.jp/page/w3m-hook"&gt;こちら&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-8072248197048750327?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/8072248197048750327/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=8072248197048750327' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8072248197048750327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8072248197048750327'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/w3mpatch.html' title='w3mでページの内容に応じてキーバイントを変えるpatch'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1043947373909265620</id><published>2008-05-19T18:58:00.003+09:00</published><updated>2008-05-19T19:00:46.365+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>Cでのポインタの読み方</title><content type='html'>社内ゼミ用資料。ゼミの内容がマニアックな内容になってきたので、今回は軽い話題にした。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int (*p[5])[3];&lt;br /&gt;char (*(*fp)(void))(int);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;などの読み方。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sakurai.sumomo.ne.jp/page/c_pointer"&gt;http://sakurai.sumomo.ne.jp/page/c_pointer&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1043947373909265620?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1043947373909265620/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1043947373909265620' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1043947373909265620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1043947373909265620'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/c.html' title='Cでのポインタの読み方'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4383019547390415179</id><published>2008-05-16T21:21:00.002+09:00</published><updated>2008-05-16T21:32:57.196+09:00</updated><title type='text'>BSS領域はだれが0クリアしているのか? - 答え</title><content type='html'>答えは、&lt;br /&gt;1. カーネルが、プログラムのロード時に行う。&lt;br /&gt;&lt;br /&gt;なぜカーネルが行っているかの理由はわからないが、ユーザーランドの初期化ルーチンが0クリアするよりも、カーネルが行うほうが圧倒的に効率がよい。&lt;br /&gt;以下、なぜ効率がよいかの説明。&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;プロセスがロードされるとき、メモリに一度に全てロードされるわけではない。&lt;br /&gt;ページと呼ばれる4KBの塊ごとに分割され、アクセスがあったページだけがメモリにロードされる。&lt;br /&gt;(これを、demand-pagingと言う)&lt;br /&gt;このdemand-pagingにより、プロセスの起動時間の短縮と、必要なメモリ量の低減が実現できる。&lt;br /&gt;&lt;br /&gt;プロセスが初期値0の変数にアクセスすると、その変数が存在するページ4KBだけがメモリに割り当てられる。&lt;br /&gt;その際、カーネルが0クリアしたページが割り当てられる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;もしユーザーランドの初期化ルーチンが0クリアするとなると、&lt;br /&gt;&lt;code&gt;memset(bssarea, 0, bssarea_size);&lt;/code&gt;&lt;br /&gt;を実行することになる。&lt;br /&gt;&lt;br /&gt;このmemsetはBSS領域の全ての領域にアクセスすることになる。&lt;br /&gt;すなわち、一度全ての領域をメモリにロードしてしまうことになり、&lt;br /&gt;demand-pagingの恩恵が受けられない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4383019547390415179?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4383019547390415179/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4383019547390415179' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4383019547390415179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4383019547390415179'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/bss0_16.html' title='BSS領域はだれが0クリアしているのか? - 答え'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-1061513976650284981</id><published>2008-05-16T11:19:00.002+09:00</published><updated>2008-05-16T11:23:49.922+09:00</updated><title type='text'>BSS領域はだれが0クリアしているのか?</title><content type='html'>社内で出したクイズ。結構反応がおもしろかったので、blogにも書こう。&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Cのプログラムで、&lt;br /&gt;static char buf[1000];&lt;br /&gt;などとすると、buf領域は0クリアされています。&lt;br /&gt;&lt;br /&gt;この0クリアはだれが行っているでしょう?&lt;br /&gt;OSは、UNIXとします。(多分windowsでも同じだと思うけど)&lt;br /&gt;&lt;br /&gt;1. カーネルが、プログラムのロード時に行う。&lt;br /&gt;2. ユーザーランドのプログラムの初期化ルーチンが、main()に飛ぶ前に行う。 &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;答えは、そのうち。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1061513976650284981?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1061513976650284981/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1061513976650284981' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1061513976650284981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1061513976650284981'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/bss0.html' title='BSS領域はだれが0クリアしているのか?'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5541166843131629387</id><published>2008-05-13T11:41:00.002+09:00</published><updated>2008-05-13T11:46:40.817+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>master.passwdとpasswdとpwd.dbとspwd.dbの関係</title><content type='html'>/etc/master.passwdが元となるファイル。&lt;br /&gt;これから、pwd_mkdbを使って、以下が作られる。&lt;ul&gt;&lt;li&gt;passwd: master.passwdからパスワードを取り除いた物。だれでも読める。&lt;/li&gt;&lt;li&gt;spwd.db: master.passwdをBerkeley DBにした物。rootしか読めない。&lt;/li&gt;&lt;li&gt;pwd.db: passwdをBerkeley DBにした物。だれでも読める。&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;参考:&lt;br /&gt;&lt;a href="http://www.samba.gr.jp/ml/article/sugj-tech/msg06004.html"&gt;http://www.samba.gr.jp/ml/article/sugj-tech/msg06004.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://x68000.q-e-d.net/~68user/unix/pickup?pwd_mkdb"&gt;http://x68000.q-e-d.net/~68user/unix/pickup?pwd_mkdb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5541166843131629387?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5541166843131629387/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5541166843131629387' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5541166843131629387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5541166843131629387'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/masterpasswdpasswdpwddbspwddb.html' title='master.passwdとpasswdとpwd.dbとspwd.dbの関係'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-326854246133677930</id><published>2008-05-12T11:58:00.001+09:00</published><updated>2008-05-12T12:00:45.183+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>crunchgenの仕組み</title><content type='html'>*BSDには、複数のプログラム(コンポーネント）を結合して、一つの実行ファイルにするcrunchgenというプログラムがある。&lt;br /&gt;&lt;br /&gt;要は、Linuxでのbusyboxのような物。&lt;br /&gt;&lt;br /&gt;社内ゼミ用に、&lt;a href="http://sakurai.sumomo.ne.jp/page/crunchgen-internal"&gt;crunchgenの仕組み&lt;/a&gt;の資料を作った。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-326854246133677930?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/326854246133677930/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=326854246133677930' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/326854246133677930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/326854246133677930'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/crunchgen.html' title='crunchgenの仕組み'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-1349758678732097755</id><published>2008-05-08T10:29:00.003+09:00</published><updated>2008-05-08T10:37:20.578+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>NetBSDのroot ramdiskで、initをmulti user modeで動作させる</title><content type='html'>root ramdiskを使った場合、initはsingle user modeで起動してしまう。&lt;br /&gt;&lt;br /&gt;なぜかと言うと、&lt;ul&gt;&lt;br /&gt;&lt;li&gt;dev/md_root.cのmd_open_hook()で、&lt;code&gt;boothowto |= MEMORY_RBFLAGS&lt;/code&gt;としている。MEMORY_RBFLAGSの値は、RB_SINGLE。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;kern/init_main.cのstart_init()で、&lt;code&gt;boothowto &amp; RB_SINGLE&lt;/code&gt;だったら、-sを付けてinitを起動している。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;initは-sを付けて起動されると、single user modeで起動する&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;よって、initをmulti user modeで起動するには、kernelのconfファイルで、&lt;br /&gt;&lt;code&gt;&lt;br /&gt;options MEMORY_RBFLAGS=0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;のように、MEMORY_RBFLAGSの値を上書きしてやれば良い。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-1349758678732097755?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/1349758678732097755/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=1349758678732097755' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1349758678732097755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/1349758678732097755'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/netbsdroot-ramdiskinitmulti-user-mode.html' title='NetBSDのroot ramdiskで、initをmulti user modeで動作させる'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2683717531907113650</id><published>2008-05-07T12:07:00.001+09:00</published><updated>2008-05-07T12:13:15.296+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='distcc'/><title type='text'>distccの動作の簡単な説明</title><content type='html'>社内のゼミ用に、distccの動作の簡単な説明を書いた。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sakurai.sumomo.ne.jp/page/distcc"&gt;http://sakurai.sumomo.ne.jp/page/distcc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-2683717531907113650?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2683717531907113650/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2683717531907113650' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2683717531907113650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2683717531907113650'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/distcc.html' title='distccの動作の簡単な説明'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5583936467245373996</id><published>2008-05-02T11:18:00.004+09:00</published><updated>2008-05-02T11:38:53.449+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><title type='text'>NetBSDのcrunchgenで、SMALLPROGを0にしてビルドする方法</title><content type='html'>NetBSDのユーザーランドのいくつかのプログラムは、SMALLPROGをdefineしてビルドすると、小さいバイナリを作る事ができる。&lt;br /&gt;&lt;br /&gt;例えば、&lt;br /&gt;・initは、single user modeのみ&lt;br /&gt;・ddは、ASCIIとEBDICの変換なし&lt;br /&gt;・shは、printfコマンド無し&lt;br /&gt;など。&lt;br /&gt;&lt;br /&gt;NetBSDのcommon/Makefile.crunchには、小さいプログラムを作るためのオプションが用意されていて、&lt;br /&gt;・SMALLPROGを0にすると、各プログラムのmake時にそのままビルドする。&lt;br /&gt;・SMALLPROGを1にすると、各プログラムのmake時にSMALLPROG=1にしてビルドする&lt;br /&gt;という機能がある。SMALLPROGが設定されていないと、SMALLPROG=1となる。&lt;br /&gt;&lt;br /&gt;Makefile.crunch経由で、通常の大きなプログラムを作ろうと思った場合、&lt;br /&gt;&lt;code&gt;$ make SMALLPROG=0&lt;/code&gt;&lt;br /&gt;や、&lt;br /&gt;&lt;code&gt;$ SMALLPROG=0 make&lt;/code&gt;&lt;br /&gt;としても、小さいinit/dd/shプログラムを作る事ができない。&lt;br /&gt;&lt;br /&gt;なぜなら、&lt;br /&gt;・SMALLPROGが0にdefineされている。&lt;br /&gt;・init/dd/shのMakefileは、SMALLPROGがdefineされていた場合、小さなプログラムを作る(値が0か1か、ではない)。&lt;br /&gt;となっているため。&lt;br /&gt;&lt;br /&gt;Makefile.crunchgen経由で小さいプログラムを作るには、makeの引数に&lt;code&gt;SMALLPROG=0&lt;/code&gt; と書くのではなく、Makefile.crunchgenを.includeするMakefileに、&lt;br /&gt;&lt;code&gt;SMALLPROG=0&lt;/code&gt;&lt;br /&gt;と書く必要がある。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5583936467245373996?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5583936467245373996/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5583936467245373996' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5583936467245373996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5583936467245373996'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/05/netbsdcrunchgensmallprog0.html' title='NetBSDのcrunchgenで、SMALLPROGを0にしてビルドする方法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4337389642286670124</id><published>2008-04-02T10:22:00.004+09:00</published><updated>2008-04-02T10:26:40.034+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='pkgsrc'/><title type='text'>pkgsrcで、依存したパッケージをinstallせずに、extractだけを行う</title><content type='html'>pkgsrcで、&lt;code&gt;make extract&lt;/code&gt;を行うと、ソースをextractするよりも先に、依存したパッケージをinstallしてしまう。&lt;br /&gt;&lt;br /&gt;&lt;code&gt;make extract SKIP_DEPENDS=yes&lt;/code&gt;&lt;br /&gt;とすると、依存したパッケージをinstallせずに、extractしてくれる。&lt;br /&gt;&lt;br /&gt;単に「extractしてソースだけ見たい」という場合に便利。&lt;br /&gt;&lt;br /&gt;via tech-pkg&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4337389642286670124?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4337389642286670124/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4337389642286670124' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4337389642286670124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4337389642286670124'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/04/pkgsrcinstallextract.html' title='pkgsrcで、依存したパッケージをinstallせずに、extractだけを行う'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2151598698854970736</id><published>2008-03-28T18:53:00.003+09:00</published><updated>2008-03-28T19:03:57.355+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><title type='text'>NetBSDでBluetoothを使う</title><content type='html'>結構手こずってしまった。&lt;br /&gt;&lt;br /&gt;基本的には、&lt;br /&gt;&lt;a href="http://www.netbsd.net/docs/guide/en/chap-bluetooth.html"&gt;http://www.netbsd.net/docs/guide/en/chap-bluetooth.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.netbsd.se/index.php/Bluetooth"&gt;http://wiki.netbsd.se/index.php/Bluetooth&lt;/a&gt;&lt;br /&gt;に書いてある通りにした。&lt;br /&gt;&lt;br /&gt;BDアドレスに名前を付けるには、&lt;br /&gt;&lt;code&gt;/etc/bluetooth/hosts&lt;/code&gt;&lt;br /&gt;に、&lt;br /&gt;&lt;code&gt;XX:XX:XX:XX:XX:XX   myphone&lt;/code&gt;&lt;br /&gt;のように書けば良い。&lt;br /&gt;&lt;br /&gt;BDアドレスを知るには、&lt;br /&gt;&lt;code&gt;$ btconfig ubt inq&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ペアリングするには、&lt;br /&gt;&lt;code&gt;$ sudo btpin -p 1234 -a myphone&lt;/code&gt;&lt;br /&gt;のようにする。&lt;br /&gt;btpinを実行すると、一定時間、ペアリングができるようになる。&lt;br /&gt;この間に、携帯等から接続したり、その逆を行えば良い。&lt;br /&gt;&lt;br /&gt;私使っているBTドングルは、&lt;br /&gt;&lt;code&gt;ubt0 at uhub0 port 2 configuration 1 interface 0&lt;br /&gt;ubt0: Cambridge Silicon Radio Bluetooth USB Adapter, rev 1.10/5.25, addr 2&lt;/code&gt;&lt;br /&gt;という物。&lt;br /&gt;/etc/rc.confは、以下のようにした。&lt;br /&gt;&lt;code&gt;btconfig_args="up -iscan pscan auth encrypt switch -hold -sniff -park class 0x02010c ptype 0x0018"&lt;/code&gt;&lt;br /&gt;このへんをうまく設定してやらないと、通信ができない。&lt;br /&gt;(これらの値の意味はよくわかっていないけど)&lt;br /&gt;&lt;br /&gt;これでやっと、obexftpを使って携帯から画像を取り出せるようになった。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-2151598698854970736?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2151598698854970736/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2151598698854970736' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2151598698854970736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2151598698854970736'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/03/netbsdbluetooth.html' title='NetBSDでBluetoothを使う'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6237078435932598612</id><published>2008-03-28T14:22:00.002+09:00</published><updated>2008-03-28T14:32:26.741+09:00</updated><title type='text'>関数名は、「その関数を呼ぶ事で何をしたいか」ではなく「その関数が何をするか」を表すべき</title><content type='html'>tech@netbsdに、関数名の付け方の話でおもしろい話が出ていた。&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;例えば、lockのリファレンスカウントを増やす関数を作る時は、&lt;br /&gt;lock_retainやlock_holdという名前は適さない。&lt;br /&gt;&lt;br /&gt;なぜなら、これらの関数名は、&lt;br /&gt;「リファレンスカウントを増やす事で、呼び出し側がlockをretainしたい」&lt;br /&gt;という、呼び出し側の立場で名前が付けられているから。&lt;br /&gt;&lt;br /&gt;「その関数が何をするか」&lt;br /&gt;という立場で名前を付けるなら、lock_increfのような名前にするのが良い。&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/28877138-6237078435932598612?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6237078435932598612/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6237078435932598612' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6237078435932598612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6237078435932598612'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/03/blog-post.html' title='関数名は、「その関数を呼ぶ事で何をしたいか」ではなく「その関数が何をするか」を表すべき'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-3428148509225698306</id><published>2008-03-26T23:16:00.002+09:00</published><updated>2008-03-26T23:26:53.485+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='N73'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='705NK'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><title type='text'>Nokia 705NKで撮影した画像をBluetoothでLinuxへ転送する</title><content type='html'>&lt;a href="http://sakurai.sumomo.ne.jp/page/n73-bluetooth-linux"&gt;Nokia 705NKで撮影した画像をBluetoothでLinuxへ転送する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;携帯内のC:/Data/Images/とE:/Images/以下の全ての画像をPCに転送するスクリプト。&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/28877138-3428148509225698306?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/3428148509225698306/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=3428148509225698306' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3428148509225698306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3428148509225698306'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/03/nokia-705nkbluetoothlinux.html' title='Nokia 705NKで撮影した画像をBluetoothでLinuxへ転送する'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-8558812611413828085</id><published>2008-03-21T16:35:00.002+09:00</published><updated>2008-03-21T16:41:25.445+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>xtermなどのタイトルバーに、svnのリポジトリのURLを表示する</title><content type='html'>いろいろなリポジトリをcheckoutしていると、今作業しているディレクトリが&lt;br /&gt;何のリポジトリの物なのかがわからなくなる事がある。&lt;br /&gt;わからないだけなら良いが、勘違いしてしまうと大変困る。&lt;br /&gt;&lt;br /&gt;そこで、カレントディレクトリのリポジトリのパスをタイトルバーに表示する方法。&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export PROMPT_COMMAND="svn info 2&gt;/dev/null | python -c 'import sys;d=sys.stdin.readlines(); a = len(d)&gt;2 and d[1].strip() or \"URL:\";sys.stdout.write(\"\033]2;\"+a+\"\007\")'"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;bash3.0とsvn1.4.4とrxvt 2.7.10の組み合わせで動作している。&lt;br /&gt;&lt;br /&gt;参考:&lt;br /&gt;http://www.linux.or.jp/JF/JFdocs/Xterm-Title.txt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-8558812611413828085?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/8558812611413828085/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=8558812611413828085' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8558812611413828085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/8558812611413828085'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/03/xtermsvnurl.html' title='xtermなどのタイトルバーに、svnのリポジトリのURLを表示する'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4737942046893961365</id><published>2008-02-13T23:12:00.000+09:00</published><updated>2008-02-13T23:17:54.856+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>マルチコアを生かした圧縮・伸長</title><content type='html'>マルチプロセッサ・マルチコアを生かした圧縮・伸長プログラム。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://compression.ca/pbzip2/"&gt;Parallel BZIP2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lemley.net/mgzip.html"&gt;mgzip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4737942046893961365?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4737942046893961365/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4737942046893961365' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4737942046893961365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4737942046893961365'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/02/blog-post.html' title='マルチコアを生かした圧縮・伸長'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4561781491423782679</id><published>2008-01-29T13:04:00.000+09:00</published><updated>2008-01-29T13:06:52.521+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ネタ'/><title type='text'>Unix Wareのテスト</title><content type='html'>&lt;a href="http://www.pref.miyagi.jp/syouhi-sc/youkitest.htm"&gt;宮城県消費生活センターのテスト結果&lt;/a&gt;。&lt;br /&gt;unix wareは、ちょっと高いが、顧客満足度が高い。&lt;br /&gt;&lt;br /&gt;いいな。Unix Ware。ちょっと欲しい(笑&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4561781491423782679?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4561781491423782679/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4561781491423782679' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4561781491423782679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4561781491423782679'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/unix-ware.html' title='Unix Wareのテスト'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-3332373611041249258</id><published>2008-01-28T23:34:00.001+09:00</published><updated>2008-01-28T23:47:51.381+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>「新・知的生産術」で勝間和代さんが薦めている本の一覧リンク</title><content type='html'>&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478002037/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478002037.01.TZZZZZZZ.jpg"&gt;&lt;/a&gt;&lt;br /&gt;勝間和代さんの本、「効率が10倍アップする 新・知的生産術」では、著者のお薦めの本として、多数の本が挙げられている。&lt;br /&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.amazon.co.jp/exec/obidos/ASIN/4788504480/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4788504480.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;人間この信じやすきもの―迷信・誤信はどうして生まれるか (認知科学選書)&lt;br /&gt;トーマス ギロビッチ,Thomas Gilovich,守 一雄,守 秀子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4334961886/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4334961886.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;第1感  「最初の2秒」の「なんとなく」が正しい (翻訳)&lt;br /&gt;M・グラッドウェル,沢田 博,阿部 尚美&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4902222027/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4902222027.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;結婚の謎(ミステリー)&lt;br /&gt;ウィリアム グラッサー,カーリーン グラッサー,William Glasser,Carleen Glasser,柿谷 正期,岩井 智子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4870313944/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4870313944.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ティッピング・ポイント―いかにして「小さな変化」が「大きな変化」を生み出すか&lt;br /&gt;マルコム グラッドウェル,Malcolm Gladwell,高橋 啓&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532149312/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532149312.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;なぜITは社会を変えないのか&lt;br /&gt;ジョン・シーリー ブラウン,ポール ドゥグッド,John Seely Brown,Paul Duguid,宮本 喜一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/412100907X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/412100907X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;人はいかに学ぶか―日常的認知の世界 (中公新書)&lt;br /&gt;稲垣 佳世子,波多野 誼余夫&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4121005996/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4121005996.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;無気力の心理学―やりがいの条件 (中公新書 (599))&lt;br /&gt;波多野 誼余夫,稲垣 佳世子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4334007341/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4334007341.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「快眠」セラピー―いつでも、どこでも、ぐっすりと (カッパ・ブックス)&lt;br /&gt;高田 明和&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4061155059/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4061155059.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;タテ社会の人間関係―単一社会の理論&lt;br /&gt;中根 千枝&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478190445/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478190445.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;フリーエージェント社会の到来―「雇われない生き方」は何を変えるか&lt;br /&gt;ダニエル ピンク,Daniel H. Pink,池村 千秋,玄田 有史&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/479421071X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/479421071X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ファストフードが世界を食いつくす&lt;br /&gt;エリック シュローサー,楡井 浩一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532352207/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532352207.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「豊かさ」の誕生―成長と発展の文明史&lt;br /&gt;ウィリアム バーンスタイン,William J. Bernstein,徳川 家広&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794210051/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4794210051.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;銃・病原菌・鉄〈上巻〉―1万3000年にわたる人類史の謎&lt;br /&gt;ジャレド ダイアモンド,Jared Diamond,倉骨 彰&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/479421006X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/479421006X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;銃・病原菌・鉄〈下巻〉―1万3000年にわたる人類史の謎&lt;br /&gt;ジャレド ダイアモンド,Jared Diamond,倉骨 彰&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4047915068/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4047915068.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「みんなの意見」は案外正しい&lt;br /&gt;ジェームズ・スロウィッキー,小高 尚子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4314010037/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4314010037.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;利己的な遺伝子 &amp;lt;増補新装版&amp;gt;&lt;br /&gt;リチャード・ドーキンス,日高 敏隆,岸 由二,羽田 節子,垂水 雄二&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906638082/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4906638082.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ライフスタイル革命―私たちの健康と幸福と地球のために&lt;br /&gt;ハーヴィー ダイアモンド,マリリン ダイアモンド,Harvey Diamond,Marilyn Diamond,松田 麻美子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048930095/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4048930095.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;エコロジカル・ダイエット―生きのびるための食事法&lt;br /&gt;ジョン ロビンズ,John Robbins,田村 源二&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/462031806X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/462031806X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「最後の社会主義国」日本の苦闘&lt;br /&gt;レナード・ショッパ,野中 邦子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839902259/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4839902259.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;未来をつくった人々―ゼロックス・パロアルト研究所とコンピュータエイジの黎明&lt;br /&gt;マイケル ヒルツィック,Michael Hiltzik,鴨澤 眞夫,エ・ビスコム・テック・ラボ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789553515/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4789553515.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;科学が証明する新・朝食のすすめ&lt;br /&gt;香川 靖雄&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4140806605/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4140806605.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;いじわるな遺伝子―SEX、お金、食べ物の誘惑に勝てないわけ&lt;br /&gt;テリー バーナム,ジェイ フェラン,Terry Burnham,Jay Phelan,森内 薫&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478860513/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478860513.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;感じる脳 情動と感情の脳科学 よみがえるスピノザ&lt;br /&gt;アントニオ・R・ダマシオ,田中 三彦&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/453231156X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/453231156X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;人脈づくりの科学 「人と人との関係」に隠された力を探る&lt;br /&gt;安田 雪&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4469211737/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4469211737.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;滅びゆく思考力―子どもたちの脳が変わる&lt;br /&gt;ジェーン ハーリー,Jane M. Healy,西村 弁作,新美 明夫&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4531081471/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4531081471.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;身体が「ノー」と言うとき―抑圧された感情の代価&lt;br /&gt;ガボール マテ,Gabor Mat´e,伊藤 はるみ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794207417/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4794207417.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;平気でうそをつく人たち―虚偽と邪悪の心理学&lt;br /&gt;M.スコット ペック,M.Scott Peck,森 英明&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4047914304/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4047914304.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;知の挑戦―科学的知性と文化的知性の統合&lt;br /&gt;エドワード・オズボーン ウィルソン,Edward O. Wilson,山下 篤子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794208766/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4794208766.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;セックスはなぜ楽しいか (サイエンス・マスターズ)&lt;br /&gt;ジャレド ダイアモンド,Jared Diamond,長谷川 寿一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794214642/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4794214642.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;文明崩壊 滅亡と存続の命運を分けるもの (上)&lt;br /&gt;ジャレド・ダイアモンド,楡井 浩一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794214650/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4794214650.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;文明崩壊 滅亡と存続の命運を分けるもの (下)&lt;br /&gt;ジャレド・ダイアモンド,楡井 浩一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4061456555/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4061456555.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「ゆとり」とは何か―成熟社会を生きる&lt;br /&gt;飯田 経夫&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4569660061/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4569660061.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「不機嫌」と「甘え」の心理 なぜ人は素直になれないのか PHP文庫 (PHP文庫)&lt;br /&gt;加藤 諦三&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4140807431/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4140807431.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;新ネットワーク思考―世界のしくみを読み解く&lt;br /&gt;アルバート・ラズロ・バラバシ,青木 薫&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4790706141/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4790706141.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;フロー体験 喜びの現象学 (SEKAISHISO SEMINAR)&lt;br /&gt;M. チクセントミハイ,Mihaly Csikszentmihalyi,今村 浩明&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4757141033/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4757141033.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;働く過剰  大人のための若者読本  日本の〈現代〉12&lt;br /&gt;玄田 有史&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4140811250/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4140811250.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;脳が「生きがい」を感じるとき&lt;br /&gt;グレゴリー バーンズ,野中 香方子,Gregory Berns&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4150502609/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4150502609.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;フィンチの嘴―ガラパゴスで起きている種の変貌 (ハヤカワ・ノンフィクション文庫)&lt;br /&gt;ジョナサン ワイナー,Jonathan Weiner,樋口 広芳,黒沢 令子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532149479/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532149479.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;さあ、才能(じぶん)に目覚めよう―あなたの5つの強みを見出し、活かす&lt;br /&gt;マーカス バッキンガム,ドナルド・O. クリフトン,Marcus Buckingham,Donald O. Clifton,田口 俊樹&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4309462081/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4309462081.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「困った人たち」とのつきあい方 (河出文庫)&lt;br /&gt;ロバート・M. ブラムソン,Robert M. Bramson,鈴木 重吉,峠 敏之&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906638015/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4906638015.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;7つの習慣―成功には原則があった!&lt;br /&gt;スティーブン・R. コヴィー,ジェームス スキナー,Stephen R. Covey,川西 茂&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/410290008X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/410290008X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;人間を幸福にしない日本というシステム (新潮OH!文庫)&lt;br /&gt;カレル ヴァン・ウォルフレン,Karel van Wolferen,鈴木 主税&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4894511304/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4894511304.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;非常識な成功法則―お金と自由をもたらす8つの習慣&lt;br /&gt;神田 昌典&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4877710736/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4877710736.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ライフストラテジー 人生戦略 ― 相手に圧倒的差をつける戦略的人生論&lt;br /&gt;フィリップ マグロー,渡部 昇一,Phillip C. McGraw,Phillip C. McGraw Ph.D.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4061592998/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4061592998.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;本を読む本 (講談社学術文庫)&lt;br /&gt;モーティマー・J. アドラー,C.V. ドーレン,Mortimer J. Adler,Charles Van Doren,外山 滋比古,槇 未知子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4900528293/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4900528293.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;母が教えてくれなかったゲーム&lt;br /&gt;ベティ・L. ハラガン,Betty Lehan Harragan,福沢 恵子,水野谷 悦子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4837901891/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4837901891.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;向上心　運命のカベを破る人になれ 知的生きかた文庫&lt;br /&gt;サミュエル スマイルズ,竹内 均&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/483797578X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/483797578X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「すぐれた考え方」入門―「考える力」をつけるための心理学 (知的生きかた文庫)&lt;br /&gt;和田 秀樹&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478490341/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478490341.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;問題発見プロフェッショナル―「構想力と分析力」&lt;br /&gt;斎藤 嘉則&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/431400861X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/431400861X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;モラル・ハラスメント―人を傷つけずにはいられない&lt;br /&gt;マリー=フランス イルゴイエンヌ,Marie‐France Hirigoyen,高野 優&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4896918479/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4896918479.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ファスト風土化する日本―郊外化とその病理 (新書y)&lt;br /&gt;三浦 展&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4043496028/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4043496028.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ひとを“嫌う”ということ (角川文庫)&lt;br /&gt;中島 義道&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4106035731/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4106035731.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;醜い日本の私 (新潮選書)&lt;br /&gt;中島 義道&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062810530/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4062810530.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;成功者の告白―5年間の起業ノウハウを3時間で学べる物語 (講談社プラスアルファ文庫)&lt;br /&gt;神田 昌典&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4476032303/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4476032303.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;愛する二人別れる二人―結婚生活を成功させる七つの原則&lt;br /&gt;ジョン・M. ゴットマン,ナン シルバー,John M. Gottman,Nan Silver,松浦 秀明&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4877710787/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4877710787.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;仕事は楽しいかね?&lt;br /&gt;デイル ドーテン,Dale Dauten,野津 智子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4877710833/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4877710833.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;仕事は楽しいかね? 2&lt;br /&gt;デイル・ドーテン,野津 智子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4101252246/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4101252246.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;こころの処方箋 (新潮文庫)&lt;br /&gt;河合 隼雄&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4569569609/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4569569609.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;心が軽くなる本―「不安」を「安らぎ」に変える57のヒント (PHP文庫)&lt;br /&gt;山崎 房一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062747596/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4062747596.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;失敗学のすすめ (講談社文庫)&lt;br /&gt;畑村 洋太郎&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4837973620/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4837973620.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;頭は3週間で良くなる!―世界の権威が実証した、“驚異”のノウハウ! (知的生きかた文庫)&lt;br /&gt;ウィン ウェンガー,Win Wenger,渡辺 茂&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4061492624/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4061492624.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「世間」とは何か (講談社現代新書)&lt;br /&gt;阿部 謹也&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062690675/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4062690675.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;共依存症 いつも他人に振りまわされる人たち (講談社SOPHIA BOOKS)&lt;br /&gt;メロディ ビーティ,Melody Beattie,村山 久美子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4822242633/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4822242633.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ビジョナリー・カンパニー 2 - 飛躍の法則&lt;br /&gt;ジェームズ・C. コリンズ,山岡 洋一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478420408/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478420408.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ザ・ゴール ― 企業の究極の目的とは何か&lt;br /&gt;エリヤフ ゴールドラット,三本木 亮&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478374228/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478374228.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ザ・プロフィット 利益はどのようにして生まれるのか&lt;br /&gt;エイドリアン・J・スライウォツキー,中川 治子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4270000708/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4270000708.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ブルー・オーシャン戦略 競争のない世界を創造する (Harvard business school press)&lt;br /&gt;W・チャン・キム,レネ・モボルニュ,有賀 裕子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478300593/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478300593.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;プロフェッショナルの条件―いかに成果をあげ、成長するか (はじめて読むドラッカー (自己実現編))&lt;br /&gt;P・F. ドラッカー,Peter F. Drucker,上田 惇生&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798100234/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4798100234.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;イノベーションのジレンマ―技術革新が巨大企業を滅ぼすとき (Harvard business school press)&lt;br /&gt;クレイトン・クリステンセン,玉田 俊平太,伊豆原 弓&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4822740315/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4822740315.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ビジョナリー・カンパニー ― 時代を超える生存の原則&lt;br /&gt;ジェームズ・C. コリンズ,ジェリー・I. ポラス,James C. Collins,Jerry I. Porras,山岡 洋一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/447837323X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/447837323X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;組織の不条理―なぜ企業は日本陸軍の轍を踏みつづけるのか&lt;br /&gt;菊澤 研宗&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478190453/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478190453.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ネクスト・ソサエティ ― 歴史が見たことのない未来がはじまる&lt;br /&gt;P・F・ドラッカー,上田 惇生&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/447800210X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/447800210X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ドラッカー名著集8 ポスト資本主義社会 (ドラッカー名著集 8)&lt;br /&gt;P・F・ドラッカー,上田 惇生&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4884970772/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4884970772.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;「Sカーブ」が不確実性を克服する―物理学で解く2000年の経営&lt;br /&gt;セオドア モディス,Theodore Modis,寒河 龍太郎&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798104930/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4798104930.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;イノベーションへの解 収益ある成長に向けて (Harvard business school press)&lt;br /&gt;クレイトン・クリステンセン,マイケル・レイナー,玉田 俊平太,櫻井 祐子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4122018331/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4122018331.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;失敗の本質―日本軍の組織論的研究 (中公文庫)&lt;br /&gt;戸部 良一,寺本 義也,鎌田 伸一,杉之尾 孝生,村井 友秀,野中 郁次郎&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532148677/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532148677.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;まず、ルールを破れ―すぐれたマネジャーはここが違う&lt;br /&gt;マーカス バッキンガム,カート コフマン,Marcus Buckingham,Curt Coffman,宮本 喜一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4270000716/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4270000716.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;明日は誰のものか イノベーションの最終解 (Harvard business school press)&lt;br /&gt;クレイトン・M・クリステンセン,スコット・D・アンソニー,エリック・A・ロス,宮本 喜一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4492601074/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4492601074.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;決定版 リアル・オプション―戦略フレキシビリティと経営意思決定&lt;br /&gt;トム コープランド,ウラジミール アンティカロフ,Tom Copeland,Vladimir Antikarov,栃本 克之&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478720185/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478720185.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;意思決定5つの誘惑―経営者はこうして失敗する&lt;br /&gt;パトリック レンシオーニ,Pattrick Lencioni,山村 宜子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4122039614/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4122039614.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;すぐれた意思決定―判断と選択の心理学 (中公文庫)&lt;br /&gt;印南 一路&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478001510/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478001510.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;会計操作―その実態と識別法、株価への影響&lt;br /&gt;須田 一幸,山本 達司,乙政 正太&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4022501758/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4022501758.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ヒルズ黙示録―検証・ライブドア&lt;br /&gt;大鹿 靖明&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4502267600/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4502267600.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;実証会計学&lt;br /&gt;石塚 博司&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532190797/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532190797.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;リスク〈上〉―神々への反逆 (日経ビジネス人文庫)&lt;br /&gt;ピーター バーンスタイン,Peter L. Bernstein,青山 護&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532190800/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532190800.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;リスク〈下〉―神々への反逆 (日経ビジネス人文庫)&lt;br /&gt;ピーター バーンスタイン,Peter L. Bernstein,青山 護&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4492653902/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4492653902.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;証券投資の思想革命―ウォール街を変えたノーベル賞経済学者たち&lt;br /&gt;ピーター・L. バーンスタイン,Peter L. Bernstein,青山 譲,山口 勝業&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532192692/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532192692.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ゴールド―金と人間の文明史 (日経ビジネス人文庫)&lt;br /&gt;ピーター・バーンスタイン,鈴木 主税&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4492222235/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4492222235.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;勝者の代償―ニューエコノミーの深淵と未来&lt;br /&gt;ロバート・B. ライシュ,Robert B. Reich,清家 篤&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4822332268/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4822332268.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;日本の統計 2007年版 (2007)&lt;br /&gt;総務省統計研修所&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4822332314/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4822332314.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;世界の統計 2007年版 (2007)&lt;br /&gt;総務省統計研修所&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4492312501/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4492312501.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ベッカー教授の経済学ではこう考える―教育・結婚から税金・通貨問題まで&lt;br /&gt;ゲーリー・S. ベッカー,ギティ・N. ベッカー,Gary S. Becker,Guity Nashat Becker,鞍谷 雅敏,岡田 滋行&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/433403375X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/433403375X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;統計数字を疑う　なぜ実感とズレるのか？&lt;br /&gt;門倉 貴史&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532191300/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532191300.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;選択の自由―自立社会への挑戦 (日経ビジネス人文庫)&lt;br /&gt;Rose Friedman,Milton Friedman,ミルトン フリードマン,西山 千明,ローズ フリードマン&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4822245519/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4822245519.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;投資の科学 あなたが知らないマーケットの不思議な振る舞い&lt;br /&gt;マイケル・J・モーブッシン,川口 有一郎,早稲田大学大学院応用ファイナンス研究会&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532352150/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532352150.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;全米No.1投資指南役ジム・クレイマーの株式投資大作戦&lt;br /&gt;ジム クレイマー,James J. Cramer,井手 正介,吉川 絵美&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4140019913/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4140019913.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;確率的発想法~数学を日常に活かす&lt;br /&gt;小島 寛之&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532351944/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532351944.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;統計学を拓いた異才たち―経験則から科学へ進展した一世紀&lt;br /&gt;デイヴィッド サルツブルグ,David S. Salsburg,竹内 惠行,熊谷 悦生&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478200645/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478200645.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;投機バブル 根拠なき熱狂―アメリカ株式市場、暴落の必然&lt;br /&gt;ロバート・J. シラー,Robert J. Shiller,植草 一秀,沢崎 冬日&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478002630/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478002630.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;セイラー教授の行動経済学入門&lt;br /&gt;リチャード・セイラー,篠原 勝&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478290474/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4478290474.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;知識資本主義&lt;br /&gt;レスター・C・サロー,三上 義一&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4766411684/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4766411684.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;セイヴィング キャピタリズム&lt;br /&gt;ラグラム ラジャン,ルイジ ジンガレス,Raghuram G. Rajan,Luigi Zingales,堀内 昭義,有岡 律子,アブレウ 聖子,関村 正悟&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/447860049X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/447860049X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;バブル再来&lt;br /&gt;ハリー・S・デント・ジュニア,神田 昌典,飯岡 美紀&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4532350484/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4532350484.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;市場の期待を株価で読み解く エクスペクテーション投資入門&lt;br /&gt;アルフレッド・ラパポート,マイケル・モーブッシン,新井 富雄,高橋 文郎,芹田 敏夫&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4590011220/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4590011220.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;インベストメント―米系バイサイド・アナリストの投資哲学と投資技法&lt;br /&gt;山本 潤,クレイフィンレイインク&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4893465228/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4893465228.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ソロスの錬金術&lt;br /&gt;ジョージ ソロス,George Soros,ホーレイU.S.A.,Pacific Advisory &amp;amp; Consultant&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4828405305/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4828405305.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;ホイラーの法則―ステーキを売るなシズルを売れ!&lt;br /&gt;エルマー ホイラー,Elmer Wheeler,駒井 進&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798101524/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4798101524.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;キャズム&lt;br /&gt;ジェフリー・ムーア,川又 政治&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/453214938X/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/453214938X.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;クチコミはこうしてつくられる―おもしろさが伝染するバズ・マーケティング&lt;br /&gt;エマニュエル ローゼン,Emanuel Rosen,浜岡 豊&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4806117293/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4806117293.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;これからの10年 団塊ジュニア1400万人がコア市場になる!―マーケティング戦略の狙い目はここだ!&lt;br /&gt;三浦 展&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4884970233/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4884970233.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;売れるもマーケ 当たるもマーケ―マーケティング22の法則&lt;br /&gt;アル ライズ,ジャック トラウト,Al Ries,Jack Trout,新井 喜美夫&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4561660992/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4561660992.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;マーケティング・インタフェイス―開発と営業の管理&lt;br /&gt;石井 淳蔵,石原 武政&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4889901183/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4889901183.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;第三の消費スタイル―日本人独自の“利便性消費”を解くマーケティング戦略&lt;br /&gt;野村総合研究所,野村総研=&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4894511371/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4894511371.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;売り込まなくても売れる! ― 説得いらずの高確率セールス&lt;br /&gt;ジャック・ワース,ニコラス・Ｅ・ルーベン,坂本 希久子,神田 昌典&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4916069021/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4916069021.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;勝者の法則―「ジョブマッチング」で強い営業組織をつくれ! (ゾディアック叢書)&lt;br /&gt;ハーバート・グリーンバーグ,泉田 雅典,吉田 達生&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4334933335/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4334933335.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;なぜ安アパートに住んでポルシェに乗るのか (ペーパーバックス)&lt;br /&gt;辰巳 渚&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4480423133/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4480423133.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;趣味は読書。 (ちくま文庫 さ 13-3)&lt;br /&gt;斎藤 美奈子&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4333011752/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4333011752.01.TZZZZZZZ.jpg"&gt;&lt;br /&gt;科学の知恵 心の知慧&lt;br /&gt;広中 平祐&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-3332373611041249258?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/3332373611041249258/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=3332373611041249258' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3332373611041249258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3332373611041249258'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/blog-post_28.html' title='「新・知的生産術」で勝間和代さんが薦めている本の一覧リンク'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7437988592859860424</id><published>2008-01-27T00:08:00.000+09:00</published><updated>2008-01-27T15:41:11.907+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Pythonクックブック</title><content type='html'>今さらだけど、Pythonクックブック。&lt;br /&gt;Pythonを習得しようと思ったら、この本ははずせない。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873112761/vimrc-22/ref=nosim"&gt;&lt;img src="http://images-jp.amazon.com/images/P/4873112761.01.TZZZZZZZ.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;プログラミング言語を習得するには、基本的な文法や、プリミティブな型を覚える他に、以下のような事を学ばねばならない。&lt;br /&gt;&lt;br /&gt;1. API仕様書などを読むだけではわからない(気付かない)、使い方のコツや思わぬ使い方を知る&lt;br /&gt;2. どんなモジュールやクラスが提供されているかを知る&lt;br /&gt;3. 自分に馴染みのない概念(オブジェクト指向とか、クロージャとか、yieldとか)を学ぶ&lt;br /&gt;&lt;br /&gt;Pythonクックブックには、1.が詰まっている。しかも、良質なコードが。&lt;br /&gt;Pythonの初級者からレベルアップするには、Pythonクックブックが一番の近道だと思う。&lt;br /&gt;(と、初級者の私が言うのも変だが)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7437988592859860424?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7437988592859860424/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7437988592859860424' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7437988592859860424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7437988592859860424'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/python.html' title='Pythonクックブック'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7497181317050825592</id><published>2008-01-24T17:20:00.000+09:00</published><updated>2008-01-24T17:22:16.429+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codereview'/><title type='text'>ReviewboardでリモートSMTPサーバーを使う</title><content type='html'>setting_local.pyのSEND_REVIEW_MAILをTrueにするだけだと、localhostの25番にSMTP接続しようとする。&lt;br /&gt;&lt;br /&gt;リモートのSMTPサーバーを使うには、&lt;br /&gt;&lt;code&gt;EMAIL_HOST="ホスト名"&lt;/code&gt;&lt;br /&gt;としてやる。&lt;br /&gt;&lt;br /&gt;よくわからないが、Djangoのemailモジュールの仕様のようだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7497181317050825592?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7497181317050825592/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7497181317050825592' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7497181317050825592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7497181317050825592'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/reviewboardsmtp.html' title='ReviewboardでリモートSMTPサーバーを使う'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4476791309973357375</id><published>2008-01-24T17:17:00.000+09:00</published><updated>2008-01-24T17:20:18.032+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codereview'/><title type='text'>ReviewBoardで日本語ファイルのdiffをとる</title><content type='html'>そのままだと、日本語が化ける。SJIS前程で無理矢理変換。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;Index: diffviewer/diffutils.py&lt;br /&gt;===================================================================&lt;br /&gt;--- diffviewer/diffutils.py     (revision 1136)&lt;br /&gt;+++ diffviewer/diffutils.py     (working copy)&lt;br /&gt;@@ -159,7 +159,8 @@&lt;br /&gt;             u = unicode(s, 'utf-8')&lt;br /&gt;             return u&lt;br /&gt;         except UnicodeError:&lt;br /&gt;-            u = unicode(s, 'iso-8859-15')&lt;br /&gt;+            #u = unicode(s, 'iso-8859-15')&lt;br /&gt;+            u = unicode(s, 'sjis')&lt;br /&gt;             return u.encode('utf-8')&lt;br /&gt;     else:&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/28877138-4476791309973357375?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4476791309973357375/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4476791309973357375' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4476791309973357375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4476791309973357375'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/reviewboarddiff.html' title='ReviewBoardで日本語ファイルのdiffをとる'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5870338253401134729</id><published>2008-01-24T17:07:00.000+09:00</published><updated>2008-01-24T17:12:11.960+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codereview'/><title type='text'>ソースコードレビューツール</title><content type='html'>フリーで使えてソースが公開されているソースコードレビューツールを探したら、&lt;br /&gt;以下の2つが見つかった。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/reviewboard/"&gt;Review Board&lt;/a&gt;&lt;br /&gt;&lt;a href="http://codestriker.sourceforge.net/index.html"&gt;Codestriker&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;前者はpyton, 後者はperlで書かれている。&lt;br /&gt;とりあえず設置はしてみたので、しばらく使ってみる事にしよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5870338253401134729?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5870338253401134729/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5870338253401134729' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5870338253401134729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5870338253401134729'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/blog-post.html' title='ソースコードレビューツール'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6808024951739168901</id><published>2008-01-24T13:31:00.000+09:00</published><updated>2008-01-24T13:37:09.500+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>Subversionで、commitメッセージ無しのcommitをはじく</title><content type='html'>hook/pre-commitを、以下のようにする。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import os&lt;br /&gt;&lt;br /&gt;repo = sys.argv[1]&lt;br /&gt;txn = sys.argv[2]&lt;br /&gt;svnlook = "/usr/bin/svnlook"&lt;br /&gt;&lt;br /&gt;text = os.popen('%(svnlook)s log -t %(txn)s %(repo)s' \&lt;br /&gt;        % locals()).read()&lt;br /&gt;&lt;br /&gt;if not text.strip():&lt;br /&gt;        sys.stderr.write("no commit message!!")&lt;br /&gt;        sys.exit(1)&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/28877138-6808024951739168901?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6808024951739168901/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6808024951739168901' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6808024951739168901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6808024951739168901'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/subversioncommitcommit.html' title='Subversionで、commitメッセージ無しのcommitをはじく'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-2729696530874465752</id><published>2008-01-18T10:51:00.000+09:00</published><updated>2008-01-18T10:56:19.809+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SHA1'/><category scheme='http://www.blogger.com/atom/ns#' term='MD5'/><title type='text'>MD5やSHA1にcollisionがあっても、HMACとしては使える</title><content type='html'>MD5やSHA1などは衝突耐性が突破されているが、HMACとして使う分には、問題ないらしい。&lt;br /&gt;&lt;a href="http://www-cse.ucsd.edu/users/mihir/papers/hmac-new.html"&gt;New Proofs for NMAC and HMAC: Security without Collision-Resistance&lt;/a&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/28877138-2729696530874465752?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/2729696530874465752/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=2729696530874465752' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2729696530874465752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/2729696530874465752'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/md5sha1collisionhmac.html' title='MD5やSHA1にcollisionがあっても、HMACとしては使える'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-5496635638538616244</id><published>2008-01-16T15:37:00.000+09:00</published><updated>2008-01-16T15:47:28.266+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><title type='text'>Firefoxのスマートキーワードで、amazon.co.jpの文字化けを防ぐ</title><content type='html'>Firefoxには&lt;a href="http://firefox.geckodev.org/index.php?%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89"&gt;スマートキーワード&lt;/a&gt;という機能がある(今日知ったのだけれど)。&lt;br /&gt;&lt;br /&gt;で、何も考えずにamazon.co.jpの検索フォームをスマートキーワードに登録すると、日本語が化けてしまい、正しく検索が行えない。&lt;br /&gt;&lt;br /&gt;そのまま登録すると、Locationは&lt;br /&gt;http://www.amazon.co.jp/...=%u30AB%u30BF%u30AB%u30CA&amp;url=...&lt;br /&gt;となる。&lt;br /&gt;この%u30AB...の部分を以下のように書き換えれば、日本語が化けずに検索できる。&lt;br /&gt;http://www.amazon.co.jp/...=%83J%83%5E%83J%83i&amp;url=...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-5496635638538616244?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/5496635638538616244/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=5496635638538616244' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5496635638538616244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/5496635638538616244'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/firefoxamazoncojp.html' title='Firefoxのスマートキーワードで、amazon.co.jpの文字化けを防ぐ'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-7519429883871360449</id><published>2008-01-16T11:44:00.000+09:00</published><updated>2008-12-10T16:49:33.400+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='add-on'/><title type='text'>firefoxのadd-onが動作しなくなった時の対処</title><content type='html'>何がきっかけとなったかはわからないのだが、Firefoxのadd-onが一切動作しなくなってしまった。&lt;br /&gt;Tools-&amp;gt;Add-onsのwindowを表示すると、全てのadd-onが、&lt;br /&gt;"this add-on will be installed when firefox is restarted"&lt;br /&gt;と表示されていた。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jKeFtm6FJTc/R41wHeNS7II/AAAAAAAAAEY/nwgeccUfwd4/s1600-h/Clipboard01.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_jKeFtm6FJTc/R41wHeNS7II/AAAAAAAAAEY/nwgeccUfwd4/s320/Clipboard01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5155900422079310978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Firefoxをリスタートしても、再インストールしても直らなかったのだが、以下の3つのファイルを削除してFirefoxを起動する事で、直った。&lt;br /&gt;- extensions.cache&lt;br /&gt;- extensions.ini&lt;br /&gt;- extensions.rdf&lt;br /&gt;&lt;br /&gt;参考&lt;br /&gt;http://www.itwire.com/content/view/14939/1127/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7519429883871360449?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7519429883871360449/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7519429883871360449' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7519429883871360449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7519429883871360449'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/firefoxadd-on.html' title='firefoxのadd-onが動作しなくなった時の対処'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jKeFtm6FJTc/R41wHeNS7II/AAAAAAAAAEY/nwgeccUfwd4/s72-c/Clipboard01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28877138.post-4297037279939908706</id><published>2008-01-11T11:48:00.000+09:00</published><updated>2008-01-11T12:25:29.042+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>pythonのthreading.local()の動作</title><content type='html'>threading.local()の使い方のメモ。&lt;br /&gt;&lt;br /&gt;threading.local()は、以下のように考えるとわかりやすい。&lt;br /&gt;仮に、オプジェクトの内部構造を見るinternalという関数があったとしよう。&lt;br /&gt;&lt;br /&gt;threading.local()を呼ぶと、ディクショナリを持った新しいオプジェクトが作られる。&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt;tss1 = threading.local()&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;internal(tss1.__dict__)&lt;br /&gt;{}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;tss1に値をセットすると、自動的に、スレッド番号をキーとしたサブディクショナリへ値がセットされる。仮にスレッド番号が9056とすると、&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt;tss1.val = 10&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;internal(tss1.__dict__)&lt;br /&gt;{9056: {'val': 10}}&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;tss1.val&lt;br /&gt;10&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;違うスレッドから値valをセットすると、違うサブディクショナリへセットされる。&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt;tss1.val = 20&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;internal(tss1.__dict__)&lt;br /&gt;{9056: {'val': 10}, 1026: {'val', 20}}&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;tss1.val&lt;br /&gt;20&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;threading.local()は、呼ぶたびに別のディクショナリが作られる。&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt;tss1 = threading.local()&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;tss1.val = "hello"&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;tss2 = threading.local()&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;tss2.val = "world"&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;tss1.val&lt;br /&gt;hello&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;tss2.val&lt;br /&gt;world&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以下の解釈は間違い。&lt;br /&gt;・threading.local()は、最初からどこかに存在するTSSを指すポインタを返す。よって、何度threading.local()を呼んでも、同じデータにアクセスする事ができる。&lt;br /&gt;・threading.local()は、毎回同じグローバルなオブジェクトを返してくる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4297037279939908706?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4297037279939908706/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4297037279939908706' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4297037279939908706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4297037279939908706'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/pythonthreadinglocal.html' title='pythonのthreading.local()の動作'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-63736567978427622</id><published>2008-01-08T11:41:00.000+09:00</published><updated>2008-01-08T11:43:51.521+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='wif'/><title type='text'>Broadcomのwifiチップを使った製品のリスト</title><content type='html'>&lt;a href="http://broadcom.rapla.net/"&gt;Broadcomのwifiチップを使った製品のリスト&lt;/a&gt;。&lt;br /&gt;Broadcomはバイナリドライバしか提供していないので、NetBSDではBroadcomのチップを使った製品は動作しないようだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-63736567978427622?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/63736567978427622/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=63736567978427622' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/63736567978427622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/63736567978427622'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2008/01/broadcomwifi.html' title='Broadcomのwifiチップを使った製品のリスト'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4429967965994343090</id><published>2007-12-19T18:46:00.000+09:00</published><updated>2007-12-19T18:53:56.551+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='CPU'/><title type='text'>mprotectでPROT_WRITEした領域へのmemsetができない場合がある</title><content type='html'>NetBSDのcompat-linuxな環境で、以下のコードが動作しないらしい。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;mprotect(buf, len, PROT_WRITE);&lt;br /&gt;memset(buf, 0, len);&lt;/code&gt;&lt;/pre&gt;原因は、glibcがmemset時にリードアクセスを行う事があるためらしい。&lt;br /&gt;&lt;br /&gt;memset時にリードアクセスをすると速くなる(事がある)理由は、以下の通り。&lt;br /&gt;・アーキテクチャによっては、read時のキャッシュミスではキャッシュをfillし、write時のキャッシュミスではfillしない物がある。&lt;br /&gt;・そのようなアーキテクチャの場合、4バイト毎に実メモリへの書き込みが発生してしまう。&lt;br /&gt;・事前に一回空readをしてキャッシュラインをfillしておくと、writeアクセスは実メモリではなくキャッシュに対して行われるようになり、高速に書き込みが行われる。&lt;br /&gt;&lt;br /&gt;via current-users@netbsd&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4429967965994343090?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4429967965994343090/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4429967965994343090' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4429967965994343090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4429967965994343090'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/12/mprotectprotwritememset.html' title='mprotectでPROT_WRITEした領域へのmemsetができない場合がある'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7465063509885475797</id><published>2007-11-30T13:54:00.000+09:00</published><updated>2007-11-30T14:41:11.165+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><category scheme='http://www.blogger.com/atom/ns#' term='WPA'/><title type='text'>NetBSDでwpaを使う</title><content type='html'>NetBSD-4から、WPAがサポートされている。&lt;br /&gt;その設定方法のメモ。&lt;br /&gt;&lt;br /&gt;1. /etc/wpa_supplicant.confに、以下のような記述をする。&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;network={&lt;br /&gt;    ssid="APのSSID"&lt;br /&gt;    scan_ssid=1&lt;br /&gt;    key_mgmt=WPA-EAP&lt;br /&gt;    eap=PEAP&lt;br /&gt;    phase2="auth=MSCHAPV2"&lt;br /&gt;    identity="ユーザー名"&lt;br /&gt;    password="パスワード"&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;2. 以下のコマンドで、wpa_supplicantを実行してみる。&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf -dd&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;ifconfigでath0のstatusがactiveとなれば、接続できている。&lt;br /&gt;&lt;br /&gt;3. うまく行ったら、rc.confに以下のように書く&lt;br /&gt;&lt;code&gt;&lt;br /&gt;wpa_supplicant=YES&lt;br /&gt;wpa_supplicant_flags="-B -i ath0 -c /etc/wpa_supplicant.conf"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ちなみに、wi0ではおそらくWPAはできない。Atheros系のカード(ath)じゃないとダメなようだ。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;参考: &lt;a href="http://wiki.netbsd.se/index.php/How_to_get_connected_using_WPA"&gt;NetBSDのwiki&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-7465063509885475797?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7465063509885475797/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7465063509885475797' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7465063509885475797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7465063509885475797'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/11/netbsdwpa.html' title='NetBSDでwpaを使う'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4407138259704185101</id><published>2007-11-20T13:41:00.000+09:00</published><updated>2007-11-20T13:48:38.245+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='pkgsrc'/><title type='text'>ftp.netbsd.orgにIPv4でアクセスする</title><content type='html'>うちの社内のネットワークは、なんちゃってIPv6になっていて、LAN内はIPv6が通るのだが、外とのIPv6通信はできない。&lt;br /&gt;&lt;br /&gt;そんなネットワークでPKG_PATHをftp.netbsd.orgにしていると、pkg_add時にIPv6通信しようとして、パッケージを持ってくる事ができない。&lt;br /&gt;&lt;br /&gt;IPv4で通信をするには、アドレスをftp.netbsd.orgではなくftp4.netbsd.orgにしておくと良い。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-4407138259704185101?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4407138259704185101/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4407138259704185101' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4407138259704185101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4407138259704185101'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/11/ftpnetbsdorgipv4.html' title='ftp.netbsd.orgにIPv4でアクセスする'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-6095009735820123651</id><published>2007-11-20T13:31:00.000+09:00</published><updated>2007-11-20T13:41:07.318+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='pkgsrc'/><title type='text'>PKG_PATHの設定はhttpにしておくと良いかも</title><content type='html'>pkgsrcでは、通常PKG_PATHには、ftp://ftp.netbsd.org/.../Allのようなアドレスをセットする。&lt;br /&gt;&lt;br /&gt;今日、NetBSD4.0RC2をPCにインストールして、pkg_addしようとしたら、&lt;blockquote&gt;229 Entering Extended Passive Mode&lt;/blockquote&gt;と出た後止まってしまい、全然インストールができなかった。&lt;br /&gt;&lt;br /&gt;ftpクライアントで手動で接続した時には、&lt;blockquote&gt;ftp&amp;gt; epsv&lt;br /&gt;EPSV/EPRT on IPv4 off&lt;/blockquote&gt;と入力すればExtended Passive ModeをOFFにして通信できるのだが、pkg_addでepsvを発行する方法がわからない。&lt;br /&gt;&lt;br /&gt;ふと思い立って、PKG_PATHをftp://ではなくhttp://にした所、何の問題もなくパッケージのインストールができた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-6095009735820123651?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/6095009735820123651/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=6095009735820123651' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6095009735820123651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/6095009735820123651'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/11/pkgpathhttp.html' title='PKG_PATHの設定はhttpにしておくと良いかも'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-3640383356563149622</id><published>2007-11-08T16:57:00.000+09:00</published><updated>2007-11-08T17:05:28.903+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='make'/><title type='text'>cygwin用のGNU make 3.80の入手方法</title><content type='html'>GNU make 3.80と3.81では挙動が違うようで、同僚があるmakefileをcygwinのGNU make 3.81で使おうとしたら、&lt;br /&gt;「3.80用のmakefileだから使えないよ」&lt;br /&gt;という旨のエラーが出た。&lt;br /&gt;&lt;br /&gt;困った事に、cygwinのミラーには既に3.81しか無く、cygwinのインストーラーでは3.80をインストールする事ができない。&lt;br /&gt;3.80が欲しければ、&lt;a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2"&gt;ここ&lt;/a&gt;から入手して自分でインストールすれば良い。&lt;br /&gt;&lt;br /&gt;詳しくは、&lt;a href="http://developer.mozilla.org/ja/docs/Windows_build_prerequisites_using_cygwin"&gt;Mozilla developer center&lt;/a&gt;へ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-3640383356563149622?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/3640383356563149622/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=3640383356563149622' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3640383356563149622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/3640383356563149622'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/11/cygwingnu-make-380.html' title='cygwin用のGNU make 3.80の入手方法'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-7574097703810207480</id><published>2007-11-07T19:12:00.000+09:00</published><updated>2007-11-08T10:57:32.351+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>デバイスドライバのコードレビューは、ハード担当者にしてもらおう</title><content type='html'>なぜこんな単純な事に今まで気付かなかったのだろう。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;デバイスドライバのコードレビューを行う時、ハードを作ったハードエンジニアにレビュアーの一人になってもらうと良い。&lt;br /&gt;特に、自社でFPGAのロジックを作って、そのデバイスドライバを書く場合は。&lt;/b&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/28877138-7574097703810207480?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/7574097703810207480/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=7574097703810207480' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7574097703810207480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/7574097703810207480'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/11/blog-post.html' title='デバイスドライバのコードレビューは、ハード担当者にしてもらおう'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-275242120046904264</id><published>2007-10-26T13:49:00.000+09:00</published><updated>2007-10-26T15:06:14.058+09:00</updated><title type='text'>Xenによる仮想化はセキュリティを高めるわけではない</title><content type='html'>&lt;a href="http://kerneltrap.org/OpenBSD/Virtualization_Security"&gt;kerneltrap&lt;/a&gt;より。&lt;br /&gt;&lt;br /&gt;Theoのコメント&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;If the actual hardware let us do more isolation than we do today, we&lt;br /&gt;would actually do it in our operating system.&lt;br /&gt;&lt;br /&gt;The problem is the hardware DOES NOT actually give us more isolation&lt;br /&gt;abilities, therefore the VM does not actually do anything what the say&lt;br /&gt;they do.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;要は、OS A,B,Cの危険度をそれぞれ5,10,20とした場合、仮想化で全体として危険度は5くらいにはなるかもしれないが、いきなり1とか2になったりはしないよ、という話。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28877138-275242120046904264?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/275242120046904264/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=275242120046904264' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/275242120046904264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/275242120046904264'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/10/xen.html' title='Xenによる仮想化はセキュリティを高めるわけではない'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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-28877138.post-4076932635128561854</id><published>2007-10-25T14:39:00.000+09:00</published><updated>2007-10-25T14:45:12.001+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='markdown'/><title type='text'>IEのお気に入りをMarkdownに変換する</title><content type='html'>いろいろなサイトのURLをIEのお気に入りで管理していたのだが、破綻したので、Markdownで管理する事にした。&lt;br /&gt;&lt;br /&gt;で、以下、IEのお気に入り(.url)をMarkdown書式にするscript。&lt;br /&gt;なぜかファイル名に「≫」が入っているとopenに失敗するので、try/exceptを入れている。なぜだろう。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import os&lt;br /&gt;&lt;br /&gt;def mywalk(arg, dirname, fnames):&lt;br /&gt; #print "dir=", dirname&lt;br /&gt; first = True&lt;br /&gt; for f in fnames:&lt;br /&gt;  if f.endswith('.url') or f.endswith('.URL'):&lt;br /&gt;   if first:&lt;br /&gt;    print ''&lt;br /&gt;    print dirname[2:] # remove './'&lt;br /&gt;    print '==============='&lt;br /&gt;    print ''&lt;br /&gt;    first = False&lt;br /&gt;   #for l in open(os.path.join(dirname, f), 'rb'):&lt;br /&gt;   try:&lt;br /&gt;    for l in open(dirname + '/' + f, 'rb'):&lt;br /&gt;     l = l.strip()&lt;br /&gt;     if l.startswith('URL=') or l.startswith('url='):&lt;br /&gt;      print '- [%s](%s)' % (f[0:-4], l[4:]) # remove '.url' and 'url='&lt;br /&gt;   except:&lt;br /&gt;    print "cannot open %s" % (dirname + '/' + f)&lt;br /&gt;&lt;br /&gt;os.path.walk('./', mywalk, None)&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/28877138-4076932635128561854?l=assam-at-night.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assam-at-night.blogspot.com/feeds/4076932635128561854/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28877138&amp;postID=4076932635128561854' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4076932635128561854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28877138/posts/default/4076932635128561854'/><link rel='alternate' type='text/html' href='http://assam-at-night.blogspot.com/2007/10/iemarkdown.html' title='IEのお気に入りをMarkdownに変換する'/><author><name>sakurai</name><uri>http://www.blogger.com/profile/10140029564122291869</uri><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></feed>
