<?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-4315385927802141312</id><updated>2011-12-29T11:18:06.384+09:00</updated><category term='linux'/><category term='javafx'/><category term='screen'/><category term='YCSB'/><category term='cassandra'/><category term='iphone'/><category term='android'/><category term='MacOSX'/><category term='vlan'/><category term='scala'/><category term='javascript'/><category term='google maps'/><category term='java'/><category term='python'/><category term='mac'/><category term='gdata'/><category term='maven'/><category term='google storage'/><category term='aufs'/><category term='vserver'/><category term='hadoop'/><title type='text'>メモ捨て場</title><subtitle type='html'>技術系の備忘録．基本的に自分だけのためのものなので，詳しく書きません．検索でいらした方、すみません．</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default?start-index=101&amp;max-results=100'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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>139</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4315385927802141312.post-998480450111183880</id><published>2011-12-29T11:18:00.001+09:00</published><updated>2011-12-29T11:18:06.394+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python の時間関連ライブラリ</title><content type='html'>Javaの時間関連ライブラリもたいがい使いにくいが、Pythonのも使いにくい。
多分問題なのは、時刻表現のコアになるタプル形式にタイムゾーンの情報が無いことだろう。
タプル形式を経由するとタイムゾーン情報が欠落するのでローカルタイムで扱っていたのか、GMTなのかわからなくなる。
ちなみにタプル形式にはDay light saving time（サマータイム）かどうかのフラグはある。なんなんだ。
&lt;p/&gt;
今回はまったのはGMTのdatetime型からepoch秒数を求める場所。タプルにするとタイムゾーンが落ち、
&lt;pre&gt;
time.mktime(tuple)
&lt;/pre&gt;
とすると、ローカルタイムで解釈されるので、9時間ずれる。。。
&lt;p/&gt;
色々ググって
&lt;pre&gt;
calendar.timegm(tuple)
&lt;/pre&gt;
とするといいということがわかった。これはGMTで解釈してくれるので大丈夫、とのこと。
&lt;p/&gt;
しかし、なんだかなあ。。Javaのように、epochからのミリ秒表現をコアにするほうが合理的だと
おもうのだが。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-998480450111183880?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/998480450111183880/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=998480450111183880' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/998480450111183880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/998480450111183880'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/12/python.html' title='python の時間関連ライブラリ'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4287417603329414930</id><published>2011-12-29T08:32:00.000+09:00</published><updated>2011-12-29T08:32:08.626+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google storage'/><title type='text'>Google Storage  public linkの更新遅延</title><content type='html'>Google storageは、プライベートリンクとパブリックリンクが作れるんだけど、
ドキュメントを更新してもパブリックリンクの中身がなかなか更新されない。。
プライベートのほうはすぐに更新されるのに。
中身を消してもパブリックリンクからはしばらくアクセスできる。正確にはわからないが、おそらく1時間程度は
アクセスできてしまうもよう。
&lt;p/&gt;

&lt;a href="http://groups.google.com/group/gs-discussion/browse_thread/thread/63367fb8dd2de1d0"&gt;
こちら&lt;/a&gt;の記事には、CacheのExpireの問題ではないかということだが、ブラウザのキャッシュの問題ではないことは
確認できている。想像するに、パブリックリンクのほうはプロキシかなんかになっていて、このプロキシのなかで
キャッシュされているのではないか。その場合、デフォルトで1時間キャッシュされることになる。

&lt;p/&gt;
間違えてパブリックにしてしまった場合、一度でもアクセスするとキャッシュされてしまうので、すぐにパブリックを消しえも、1時間は公開状態が続いてしまうので、結構要注意。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4287417603329414930?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4287417603329414930/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4287417603329414930' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4287417603329414930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4287417603329414930'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/12/google-storage-public-link.html' title='Google Storage  public linkの更新遅延'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1011634812903846656</id><published>2011-12-29T08:21:00.000+09:00</published><updated>2011-12-29T08:21:00.350+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Google SitesでJavaScript</title><content type='html'>Google Sites のページはHTMLで編集できるのだけど、危険なタグは全部削り落とされてしまうので、javascriptが使えない。
&lt;p/&gt;
検索してみたところ、
&lt;a href="https://sites.google.com/site/michinobumaeda/cms/googlesitesjs"&gt;こちらのページ&lt;/a&gt;
が引っかかった。要するにガジェットとしてどこかにおいておいて、そのガジェットへの参照をGoogle Sitesに置く、ということ。
ガジェットにするには、HTMLフラグメントの前と後ろにおまじないを書いてXMLにするだけ。
ちょっとめんどうだけど、よく考えると、こちらのほうがワークフロー的に自動化しやすい。
&lt;p/&gt;
たしかにJavaScriptは動くのだけど、なんか初期値がおかしい。具体的にはdisplay noneに指定しているエレメントが表示されている。よくわからないので放置。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1011634812903846656?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1011634812903846656/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1011634812903846656' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1011634812903846656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1011634812903846656'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/12/google-sitesjavascript.html' title='Google SitesでJavaScript'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7917589205112747847</id><published>2011-12-16T18:52:00.002+09:00</published><updated>2011-12-16T18:52:34.949+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>mac os Xにstatic route を登録</title><content type='html'>&lt;a href="http://meinit.nl/add-permanent-static-route-mac-os-x"&gt;&lt;/a&gt;
に書いてあった。

一時的に変更するには
&lt;pre&gt;
sudo route add 192.168.1.0/24 -interface vmnet8
&lt;/pre&gt;
とかやればいい。

恒久的に変更するには、
&lt;ul&gt;
&lt;li&gt; ディレクトリ/Library/StartupItems/AddRoute を堀る。
&lt;pre&gt;
sudo mkdir /Library/StartupItems/AddRoute
&lt;/pre&gt;
ここに二つファイルをつくる。
&lt;li&gt; StartupParameters.plist を作る。
&lt;pre&gt;
{
 Description = \"Add static routing tables\";
 Provides = (\"AddRoutes\");
 Requires = (\"Network\");
 OrderPreference = \"None\";
}
&lt;/pre&gt;


&lt;li&gt; AddRoutes を作る。
&lt;pre&gt;
#!/bin/sh
. /etc/rc.common

StartService ()
{
        ConsoleMessage "Adding Static Routing Tables"
sudo route add 192.168.1.0/24 -interface vmnet8

}

StopService ()
{
        return 0
}

RestartService ()
{
        return 0
}

RunService "$1"
&lt;/pre&gt;

これに実行権限を与えておく。
&lt;pre&gt;
sudo chmod +x /Library/StartupItems/AddRoute/AddRoutes
&lt;/pre&gt;

&lt;/ul&gt;
なんというか面倒くさいことだなあ。なんでVMwareが自動的にやってくれないんだろう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7917589205112747847?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7917589205112747847/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7917589205112747847' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7917589205112747847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7917589205112747847'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/12/mac-os-xstatic-route.html' title='mac os Xにstatic route を登録'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5751712459190304627</id><published>2011-12-12T00:23:00.001+09:00</published><updated>2011-12-12T00:26:55.914+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python からgmail でメイル送信</title><content type='html'>面倒かな、と思って検索したら&lt;a href="http://labs.unoh.net/2007/06/python_2.html"&gt;こちら&lt;/a&gt;に全部書いてあった。ありがたや、ありがたや。

&lt;pre&gt;
# -*- coding: utf-8 -*-
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate
import getpass

def create_message(from_addr, to_addr, subject, body, encoding):
    msg = MIMEText(body, 'plain', encoding)
    msg['Subject'] = Header(subject, encoding)
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Date'] = formatdate()
    return msg

def send_via_gmail(from_addr, to_addr, msg, passwd):
    s = smtplib.SMTP('smtp.gmail.com', 587)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(from_addr, passwd)
    s.sendmail(from_addr, [to_addr], msg.as_string())
    s.close()

if __name__ == '__main__':
    from_addr = 'hoge@gmail.com'
    to_addr = 'target@example.com'
    passwd=getpass.getpass("password for %s:" % (from_addr))
    msg = create_message(from_addr, to_addr, u'テスト', u'本文', 'ISO-2022-JP')
    send_via_gmail(from_addr, to_addr, msg, passwd)

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5751712459190304627?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5751712459190304627/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5751712459190304627' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5751712459190304627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5751712459190304627'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/12/python-gmail.html' title='python からgmail でメイル送信'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2502018350005370129</id><published>2011-11-22T23:00:00.001+09:00</published><updated>2011-11-22T23:15:41.589+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='YCSB'/><title type='text'>cassandora 1.0 で YCSB</title><content type='html'>&lt;ul&gt;
&lt;li&gt; ベンチマークツール YCSBは 公式には多分まだ1.0をサポートしていない。db/cassandora-1.0というディレクトリはない。
けど試したところ、どうも0.8用の設定で動く模様。

&lt;li&gt; YCSBを動作させるにはテーブルスキーマを設定しなければならない。0.6ではstorage.xmlというファイルで静的に設定することができたが、これは0.7以降はできなくなっている。xml対yamlという話ではなく、0.7からは動的にスキーマが変更できるようになったため静的に設定できるべきではなくなった、ということらしい(&lt;a href="http://wiki.apache.org/cassandra/FAQ#no_keyspaces"&gt;出典&lt;/a&gt;)。

&lt;li&gt; したがって、動的にスキーマを入れなければならないが、これにはcassandra-cliを使う。基本的にはインタラクティブに使うツールのようだが、ファイルを指定すればバッチで実行される。

&lt;pre&gt;
create keyspace usertable
    with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'
    and strategy_options = {replication_factor:1};
use usertable;
create column family data;
&lt;/pre&gt;

このようなファイルをsetup.cas として用意しておいて

&lt;pre&gt;
&gt; cassandra-cli -h localhost -p 9160 -f setup.cas
&lt;/pre&gt;
とすればよい。

&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-2502018350005370129?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2502018350005370129/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2502018350005370129' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2502018350005370129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2502018350005370129'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/11/cassandora-10-ycsb.html' title='cassandora 1.0 で YCSB'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6267100218210278228</id><published>2011-11-19T02:50:00.001+09:00</published><updated>2011-11-19T02:52:43.587+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>gnome-shell でのemacs key map</title><content type='html'>&lt;a href="http://skalldan.wordpress.com/2011/11/13/debian-%E7%9A%84-gnome-shell-%E5%88%9D%E6%84%9F/"&gt;こちら&lt;/a&gt;のサイトに書いてあった。&lt;br /&gt;
&lt;br /&gt;
dconf-editorを起動、&lt;br /&gt;
/org/gnome/desktop/applications/interface の gtk-key-theme の値を Emacs に。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6267100218210278228?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6267100218210278228/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6267100218210278228' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6267100218210278228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6267100218210278228'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/11/gnome-shell-emacs-key-map.html' title='gnome-shell でのemacs key map'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3364289404705511672</id><published>2011-10-04T07:57:00.000+09:00</published><updated>2011-10-04T07:57:16.048+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>ffmpeg でiphone用動画</title><content type='html'>
&lt;pre&gt;
#!/bin/sh
ffmpeg -i $1 -s 480x270 -vcodec libx264 -b 100k -strict experimental -acodec aac -ac 2 -ar 48000 -ab 64k -coder 0 -level 13 -nr 50 -threads 2 $2
&lt;/pre&gt;

-b が動画ビットレート、-ab が音声ビットレート。これは、某レクチャーを見るためなので極端に低くしている。普通の映画とかならもっと高めにしないと駄目。
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3364289404705511672?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3364289404705511672/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3364289404705511672' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3364289404705511672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3364289404705511672'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/10/ffmpeg-iphone.html' title='ffmpeg でiphone用動画'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-348903251014786909</id><published>2011-09-02T10:15:00.003+09:00</published><updated>2011-09-02T10:16:29.104+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python でタイムアウト</title><content type='html'>SIG ALARMを使ったタイムアウトの仕掛け。再実装するのが嫌なのでメモとして残しておこう。スレッド環境では使えないので注意。

&lt;pre&gt;
import signal
import time

class timer():
    def __init__(self):
	self.flag = True

    def _handler(self, x, y):
	self.flag = False

    def set(self, sec):
	signal.signal(signal.SIGALRM, self._handler)
	signal.alarm(sec)

    def check(self):
	return self.flag

if __name__ == "__main__":
    tmr = timer()
    tmr.set(3)
    while tmr.check():
	time.sleep(100)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-348903251014786909?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/348903251014786909/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=348903251014786909' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/348903251014786909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/348903251014786909'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/09/sig-alarm-import-signal-import-time.html' title='python でタイムアウト'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7694503066372872216</id><published>2011-08-31T17:57:00.001+09:00</published><updated>2011-08-31T17:59:08.678+09:00</updated><title type='text'>Hadoop on Mac OS (single node)</title><content type='html'>CDH からHadoopをダウンロードしてきて展開。

&lt;a href="http://hadoop.apache.org/common/docs/stable/single_node_setup.html"&gt;http://hadoop.apache.org/common/docs/stable/single_node_setup.html&lt;/a&gt;
のとおりにconf以下の3つのファイルをいじる。
&lt;p/&gt;
ssh でlocalhostに入れるようにしなければならないので、共有でリモートログインを有効にしておく必要がある。
&lt;p/&gt;
で、
&lt;pre&gt;
&amp;gt; bin/hadoop namenode -format
&amp;gt; bin/start-all.sh
&lt;/pre&gt;

でOK. namenode のフォーマットをしないでstart-allするとnamenodeが起動しないので要注意。
&lt;pre&gt;
&amp;gt; jps
6724 
17758 DataNode
17969 Jps
17958 TaskTracker
17833 SecondaryNameNode
17683 NameNode
17885 JobTracker
&lt;/pre&gt;
とかなって、4つのデーモンが全部立ってればOK.



&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7694503066372872216?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7694503066372872216/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7694503066372872216' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7694503066372872216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7694503066372872216'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/08/hadoop-on-mac-os-single-node.html' title='Hadoop on Mac OS (single node)'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5464062753558980195</id><published>2011-08-23T16:06:00.001+09:00</published><updated>2011-08-23T16:06:44.248+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>Mac でfortran + mpi</title><content type='html'>本気で使うわけではないので適当に。mac portsで入れる。&lt;br /&gt;
&lt;br /&gt;
まずはfortran95を、とか思って&lt;br /&gt;
&amp;gt; sudo port install g95&lt;br /&gt;
とかやるとgcc4.2ベースのg95が入ってくれるけど、実はMPICH2が使ってくれない！ので無駄。&lt;br /&gt;
&lt;br /&gt;
MPICH２を入れるときにvariantとしてgccXXを入れると、enable-fortranフラグが立ち、勝手にfortranを入れてくれる。らしい。&lt;br /&gt;
&lt;br /&gt;
&amp;gt; sudo port install mpich2 +gcc45&lt;br /&gt;
&lt;br /&gt;
とかやると、fortranだけじゃなくて、なんかgcc-javaとかobjective-cとかまで入れてる。。いつまでたっても終わらん。が、最終的にはちゃんと入ったようだ。めでたい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5464062753558980195?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5464062753558980195/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5464062753558980195' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5464062753558980195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5464062753558980195'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/08/mac-fortran-mpi.html' title='Mac でfortran + mpi'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5686719831693889053</id><published>2011-08-23T14:17:00.001+09:00</published><updated>2011-08-23T14:17:22.784+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>Mac でMDをmp3に変換</title><content type='html'>&lt;a href="http://audacity.sourceforge.net/?lang=ja"&gt;Audacity&lt;/a&gt;&amp;nbsp;で万全。Audacity はもっといろんなことの出来るソフトウェアらしいのでこんなことに使っては申し訳ないような気もするが。&lt;br /&gt;
&lt;br /&gt;
Audacity は単体ではMP3への書き出しができないのでlameをプラグインとして追加する必要があるが、これもインストラクションに従えば良い。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;まずは録音をする。入力を外部入力に指定するのを忘れないこと。デフォルトはモノラルなのでステレオにすること。&lt;/li&gt;
&lt;li&gt;分割をする。「解析」ー「find silence」とやると自動的にラベルを打ってくれる。無音部を拾うだけなので実際の曲の区切りとは異なる場合があるので、結果を聞きながら修正する。ラベルは削除することも追加することも可能。削除はラベルの文字列を削除した状態からさらにバックスペースを押すと消える。特に1曲目の頭と最後の曲の末尾は、切り捨てられてしまう場合があるので、注意して修正する必要がある。&lt;/li&gt;
&lt;li&gt;「複数ファイルへ書き出し」でMP3へ書き出し。ID tagの入力をいちいち求められるがあとで纏めて打ったほうが簡単かもしれない。&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/4315385927802141312-5686719831693889053?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5686719831693889053/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5686719831693889053' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5686719831693889053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5686719831693889053'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/08/mac-mdmp3.html' title='Mac でMDをmp3に変換'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1190936340026220496</id><published>2011-08-12T13:31:00.001+09:00</published><updated>2011-08-12T13:31:36.270+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>Mac OS X 64ビットと32ビット切り替え</title><content type='html'>MacOS X でデフォルト動作モードを切り替える方法。

&lt;pre&gt;
$ sudo systemsetup -setkernelbootarchitecture x86_64
&lt;/pre&gt;

&lt;pre&gt;
$ sudo systemsetup -setkernelbootarchitecture i386
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1190936340026220496?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1190936340026220496/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1190936340026220496' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1190936340026220496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1190936340026220496'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/08/mac-os-x-6432.html' title='Mac OS X 64ビットと32ビット切り替え'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-798172199085422360</id><published>2011-07-22T02:16:00.000+09:00</published><updated>2011-07-22T02:16:46.499+09:00</updated><title type='text'>ps2gif</title><content type='html'>&lt;pre&gt;#!/bin/sh
pstopnm -stdout $1 | pnmrotate -90 | ppmtogif &amp;gt; ${1%.*}.gif
&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-798172199085422360?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/798172199085422360/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=798172199085422360' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/798172199085422360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/798172199085422360'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/07/ps2gif.html' title='ps2gif'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2102691580539844771</id><published>2011-07-10T22:59:00.006+09:00</published><updated>2011-07-15T10:04:58.206+09:00</updated><title type='text'>git の設定</title><content type='html'>手元のディレクトリ(text)を新たにリモート側にレポジトリを作ってプッシュする。&lt;br /&gt;
&lt;br /&gt;
リモートサーバ&lt;br /&gt;
まずは、リモートサーバにgit のレポジトリを用意&lt;br /&gt;
&lt;br /&gt;
&amp;gt; mkdir text.git&lt;br /&gt;
&amp;gt; chdir text.git&lt;br /&gt;
&amp;gt; git --bare init --shared&lt;br /&gt;
&lt;br /&gt;
ローカル側のディレクトリをレポジトリとして初期化&lt;br /&gt;
&lt;br /&gt;
&amp;gt; cd text&lt;br /&gt;
&amp;gt; git init&lt;br /&gt;
&lt;br /&gt;
ローカルレポジトリに追加してコミット&lt;br /&gt;
&lt;br /&gt;
&amp;gt; git add .&lt;br /&gt;
&amp;gt; git commit -m "initial commit"&lt;br /&gt;
&lt;br /&gt;
ローカルとリモートを接続&lt;br /&gt;
&lt;br /&gt;
&amp;gt; git remote add origin ssh://example.com/home/yourname/text.git&lt;br /&gt;
&lt;br /&gt;
このとき自分のホームからの相対パス&lt;b&gt;ではなく&lt;/b&gt;、フルパスで指定するところがポイント。&lt;br /&gt;
&lt;br /&gt;
で、プッシュ&lt;br /&gt;
&lt;br /&gt;
&amp;gt; git push origin master&lt;br /&gt;
&lt;br /&gt;
別のマシンで作業するときには&lt;br /&gt;
&lt;br /&gt;
git clone&amp;nbsp;ssh://example.com/home/yourname/text.git&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/4315385927802141312-2102691580539844771?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2102691580539844771/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2102691580539844771' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2102691580539844771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2102691580539844771'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/07/git.html' title='git の設定'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7477734878472630116</id><published>2011-06-26T15:14:00.002+09:00</published><updated>2011-06-26T15:17:35.103+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Mac Chromeでapplication shortcut</title><content type='html'>なんでだかいつまでたってもApplication ShortcutがサポートされないMac用Chrome。なんとかならんのかな、と思ってググっていたらこんなの見つけた。
&lt;a href="http://www.lessannoyingcrm.com/blog/2010/08/149/Create+application+shortcuts+in+Google+Chrome+on+a+Mac"&gt;こんなの&lt;/a&gt;みつけた。shell scriptで作ってしまうというもの。こんなに簡単にできるならなんで本体になかなかはいらないんだろう。とりあえず動いている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7477734878472630116?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7477734878472630116/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7477734878472630116' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7477734878472630116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7477734878472630116'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/06/mac-chromeapplication-shortcut.html' title='Mac Chromeでapplication shortcut'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8603321104905283789</id><published>2011-06-23T13:26:00.002+09:00</published><updated>2011-06-23T13:29:27.828+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Safari のJavaScript</title><content type='html'>なぜかSafariで動かないJavaScriptがあったので追ってみたら意外なことが。

&lt;pre&gt;
xxx.class = yyy;
&lt;/pre&gt;
という表現がパースエラーになっていた。
&lt;pre&gt;
xxx["class"] = yyy;
&lt;/pre&gt;
ならOK。'class'がキーワードになってるとか？
わけわからん。

ちなみにSafariのDevelop メニューを出すにはコンソールで次のようにする。
&lt;pre&gt;
defaults write com.apple.Safari IncludeDebugMenu 1
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8603321104905283789?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8603321104905283789/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8603321104905283789' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8603321104905283789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8603321104905283789'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/06/safari-javascript.html' title='Safari のJavaScript'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3166551662758366151</id><published>2011-06-14T01:05:00.005+09:00</published><updated>2011-06-14T01:13:44.362+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdata'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Picasa のアルバムをHTML化</title><content type='html'>何か他にずっといい方法がありそうだけど、Picasa のアルバム内の写真と説明を抜き出してHTMLのテーブル（の中身だけ）を取り出すスクリプト。&lt;a href="http://code.google.com/apis/picasaweb/docs/1.0/developers_guide_python.html"&gt;Picasa Web Albums Data API&lt;/a&gt;のPython APIを利用。簡単。
&lt;h3&gt;  使い方 &lt;/h3&gt;
第1引数にアルバム名を指定する。アルバム名は英字にしたほうがいい。漢字だとうまくいくかどうか不明。なにか面倒くさいことが起こるだろう。

&lt;h3&gt; ソース&lt;/h3&gt;
&lt;pre&gt;
# -*- coding: utf-8 -*-

import gdata.photos.service
import gdata.media
import gdata.geo
import getpass
import sys

email="YOUR_GMAIL_ADDRESS"
#
password=getpass.getpass("password for %s:" % (email))

albumname = sys.argv[1]

gd_client = gdata.photos.service.PhotosService()
gd_client.email = email
gd_client.password = password
gd_client.source = 'exampleCo-exampleApp-1'
gd_client.ProgrammaticLogin()

username=email

albumid = ""
albums = gd_client.GetUserFeed(user=username)
for album in albums.entry:
  if album.title.text == albumname:
    albumid = album.gphoto_id.text

photos = gd_client.GetFeed(
  '/data/feed/api/user/%s/albumid/%s?kind=photo' % (
    username, albumid))
for photo in  photos.entry:
  print '&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;a href="%s"&amp;gt;&amp;lt;img src="%s"/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;' % (photo.content.src, photo.media.thumbnail[-1].url)
  print '%s\n&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;' % (photo.summary.text)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3166551662758366151?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3166551662758366151/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3166551662758366151' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3166551662758366151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3166551662758366151'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/06/picasa-html.html' title='Picasa のアルバムをHTML化'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6826779483521409958</id><published>2011-06-12T00:29:00.003+09:00</published><updated>2011-06-12T00:35:04.241+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>GDDphone を2.3に</title><content type='html'>すでに1.6になっていたので、まずrootを取得
&lt;pre&gt;  
  http://komugi.net/archives/2010/08/04212446
&lt;/pre&gt;  
で、こちらを参考に2.3を導入。
&lt;pre&gt;  
  http://rhp.ninja-x.jp/review/Gingerbread/install.html
&lt;/pre&gt;  

ありがたいことだなあ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6826779483521409958?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6826779483521409958/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6826779483521409958' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6826779483521409958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6826779483521409958'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/06/gddphone-23.html' title='GDDphone を2.3に'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6901658377208415762</id><published>2011-04-19T11:44:00.001+09:00</published><updated>2011-04-19T11:45:38.694+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>java で pid (2)</title><content type='html'>ManagementFactory.getRuntimeMXBean().getName() 
とやると PID@HOST 形式の文字列が取れるらしい。こっちのほうがポータブル。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6901658377208415762?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6901658377208415762/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6901658377208415762' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6901658377208415762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6901658377208415762'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/04/java-pid-2.html' title='java で pid (2)'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7921677841435707707</id><published>2011-04-19T00:43:00.001+09:00</published><updated>2011-04-19T00:44:58.440+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java でgetpid</title><content type='html'>ポータブルかどうかはしらない。まあ、JNIを使うよりはましってことで。Windowsは無理ってことで。

&lt;pre&gt; 
 static private int getPid() throws IOException, InterruptedException {
  ProcessBuilder pb = new ProcessBuilder();
  pb.command("/bin/sh", "-c", "echo $PPID");
  Process p = pb.start();
  p.waitFor();
  String str = (new LineNumberReader(new InputStreamReader(p.getInputStream()))).readLine();
  return Integer.parseInt(str);
 }
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7921677841435707707?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7921677841435707707/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7921677841435707707' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7921677841435707707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7921677841435707707'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/04/java-getpid.html' title='Java でgetpid'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6848759337816478156</id><published>2011-03-29T13:42:00.002+09:00</published><updated>2011-03-29T13:45:01.267+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>mavenのレポジトリをGoogle code上に作る</title><content type='html'>MavenのレポジトリをGoogle code上に作る方法。
&lt;a href="http://code.google.com/p/raisercostin/wiki/Maven2DistributionManagementOnGooglecode"&gt;ここ&lt;/a&gt;に書いてあった。ためしてないけど、パスワードをベタでファイルに書くのか。。Google CodeのアカウントはGoogleのアカウントだから、これはちょっといやだなあ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6848759337816478156?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6848759337816478156/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6848759337816478156' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6848759337816478156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6848759337816478156'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/mavengoogle-code.html' title='mavenのレポジトリをGoogle code上に作る'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3517304022363304607</id><published>2011-03-24T12:46:00.002+09:00</published><updated>2011-03-24T12:50:07.874+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>ラベル付けとそれを使ったmount</title><content type='html'>SATAとPATA両方あるマシンでブートドライブじゃないほうのドライブが/dev/sdb になったり /dev/sdaになったり安定しない。ラベルをつければいいと言うことなのでつけてみた。e2labelコマンドでラベルをつける

&lt;pre&gt;
$ e2label /dev/sdb1 /repo
&lt;/pre&gt;
/etc/fstab でそれを参照。
&lt;pre&gt;
LABEL=/repo　　　/repo　　ext2　defaults　　1 2
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3517304022363304607?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3517304022363304607/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3517304022363304607' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3517304022363304607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3517304022363304607'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/mount.html' title='ラベル付けとそれを使ったmount'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1019322789977135391</id><published>2011-03-23T04:00:00.002+09:00</published><updated>2011-03-23T04:01:56.846+09:00</updated><title type='text'>gnome ディレクトリ名を英語表記に。</title><content type='html'>ubuntu インストールするたびにやるので。「デスクトップ」などの日本語ディレクトリを英語にするおまじない。
&lt;pre&gt;
 LANG=C xdg-user-dirs-gtk-update
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1019322789977135391?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1019322789977135391/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1019322789977135391' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1019322789977135391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1019322789977135391'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/gnome.html' title='gnome ディレクトリ名を英語表記に。'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3476649236073756529</id><published>2011-03-21T20:45:00.002+09:00</published><updated>2011-03-21T22:46:47.690+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>sbt</title><content type='html'>Scalaの開発環境、Eclipseがいつまでたっても安定してくれないようなので、sbtというのを使ってみる。統合環境ではなく、ビルドとテストを補助する環境で、&lt;a href="http://code.google.com/p/simple-build-tool/"&gt;ここ&lt;/a&gt;にある。&lt;a href="http://blog.8-p.info/2010/4-sbt-scala"&gt;こちら&lt;/a&gt;と&lt;a href="http://blog.8-p.info/2010/5-sbt-scala"&gt;こちら&lt;/a&gt;の記事を参考に試してみる。

&lt;h4&gt;環境をつくる&lt;/h4&gt;
空のディレクトリを作って、その中で sbtとうつ。新しいプロジェクトを作るか聞いてくるのでｓとするといろいろできる。
&lt;pre&gt;
$ sbt
Project does not exist, create new project? (y/N/s) s
Getting Scala 2.7.7 ...
:: retrieving :: org.scala-tools.sbt#boot-scala
 confs: [default]
 2 artifacts copied, 0 already retrieved (9911kB/281ms)
Getting org.scala-tools.sbt sbt_2.7.7 0.7.4 ...
:: retrieving :: org.scala-tools.sbt#boot-app
 confs: [default]
 15 artifacts copied, 0 already retrieved (4096kB/385ms)
&lt;/pre&gt;

&lt;h4&gt; コンパイルと実行 &lt;/h4&gt;
プログラムは src/main/scala/ 以下に書く。書いて sbt内のプロンプトで、run とやるとコンパイルして実行してくれる。compileだけならコンパイルまで。更新のあったファイルを自動的に検出して依存関係を見て（たぶん）コンパイルするようだ。
さらに ~run, ~compileとすると継続的にファイルを監視して実行してくれる。つまり、書き換えてセーブすると、コンパイルしてくれるてことだ。当然不完全な状況でセーブするとコンパイルエラーがでる。気持ち悪いが馴れか。

&lt;h4&gt; Scalaのバージョンを変える &lt;/h4&gt;
sbt は複数のScalaのバージョンに対応していて、コンパイラを管理してくれる。複数のバージョンに対してクロスビルドすることも可能。ターゲットを変えるには次のようにする。複数指定することも可能らしい。
&lt;pre&gt;
&gt; set.scala.versions 2.8.1
&gt; reload
&lt;/pre&gt;
こうすると2.8.1のコンパイラをとりに行ってくれる。べんりー。

&lt;h4&gt;ライブラリの導入&lt;/h4&gt;
プロジェクトを設定するとで自動的にmavenのライブラリを取ってきてくれたりする模様。project/以下にbuildというディレクトリを作って、そこに、scalaファイルを書くと、それを自動的にプロジェクトの定義として読むと言う仕掛けらしい。
&lt;pre&gt;
import sbt._

class MyProject(info: ProjectInfo) extends DefaultProject(info) {
  val scalaTest = "org.scalatest" % "scalatest" % "1.3"
}
&lt;/pre&gt;
で、reload, update とやる。
&lt;pre&gt;
&gt; reload
[info] Recompiling project definition...
[info]    Source analysis: 1 new/modified, 0 indirectly invalidated, 0 removed.
[info] Building project test 1.0 against Scala 2.8.1
[info]    using MyProject with sbt 0.7.4 and Scala 2.7.7
&gt; update
[info] 
[info] == update ==
[info] downloading http://scala-tools.org/repo-releases/org/scalatest/scalatest/1.3/scalatest-1.3.jar ...
[info]  [SUCCESSFUL ] org.scalatest#scalatest;1.3!scalatest.jar (4751ms)
[info] :: retrieving :: test#test_2.8.1 [sync]
[info]  confs: [compile, runtime, test, provided, system, optional, sources, javadoc]
[info]  1 artifacts copied, 0 already retrieved (1755kB/116ms)
[info] == update ==
[success] Successful.
[info] 
[info] Total time: 8 s, completed Mar 21, 2011 10:41:05 PM
&lt;/pre&gt;
レポジトリから自動的にライブラリをダウンロードしている。すごいなー。

&lt;h4&gt; テスト &lt;/h4&gt;
ScalaTestを入れたのでテストをすることができる。テストプログラムは、src/test/scala/ 以下に書く。
で、sbtのプロンプトからtestとやるとテストが実行されると。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3476649236073756529?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3476649236073756529/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3476649236073756529' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3476649236073756529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3476649236073756529'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/sbt.html' title='sbt'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1386950274335468661</id><published>2011-03-17T22:14:00.002+09:00</published><updated>2011-03-17T22:17:33.778+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdata'/><title type='text'>gdata でpicasaを操作</title><content type='html'>People FInder の入力作業に協力しようとしたのだけど、未作業の写真をなかなか見つけられないので、コメント数が1以下の写真だけを調べるスクリプトを書いてみた。といっても、&lt;a href="http://code.google.com/apis/picasaweb/docs/1.0/developers_guide_python.html#ListAlbums"&gt;ここ&lt;/a&gt;にあるスクリプトほぼそのままだが。

&lt;pre&gt;
import gdata.photos.service
import gdata.media
import gdata.geo

email=xxxxx
password=xxxx

gd_client = gdata.photos.service.PhotosService()
gd_client.email = email
gd_client.password = password
gd_client.source = 'exampleCo-exampleApp-1'
gd_client.ProgrammaticLogin()

username="tohoku.anpi"

albums = gd_client.GetUserFeed(user=username)
for album in albums.entry:
  print 'title: %s, number of photos: %s, id: %s' % (album.title.text,
      album.numphotos.text, album.gphoto_id.text)
  photos = gd_client.GetFeed(
      '/data/feed/api/user/%s/albumid/%s?kind=photo' % (
          username, album.gphoto_id.text))
  for photo in photos.entry:
      comments = gd_client.GetFeed('/data/feed/api/user/%s/albumid/%s/photoid/%s?kind=comment&amp;max-results=10' % (username, album.gphoto_id.text, photo.gphoto_id.text))
      if len(comments.entry) &lt; 2:
          print 'Photo title:', photo.title.text, len(comments.entry)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1386950274335468661?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1386950274335468661/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1386950274335468661' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1386950274335468661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1386950274335468661'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/gdata-picasa.html' title='gdata でpicasaを操作'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8145649875908867399</id><published>2011-03-16T23:55:00.003+09:00</published><updated>2011-03-17T00:11:32.804+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Hadoop のHDFS上のファイルを読む</title><content type='html'>サイドファイルにObjectOutputStreamで書いたものはObjectInputStreamで読めばいい。
dirname 以下のfilterにひっかかるファイルからオブジェクトを読み出すのはこうする。

&lt;pre&gt;
  Configuration conf = new Configuration();
  FileSystem fs = FileSystem.get(URI.create("hdfs://localhost:9000/"), conf);
  for (FileStatus status: fs.listStatus(new Path(dirname), filter)) {
   InputStream is = fs.open(status.getPath());
   ObjectInputStream ois = new ObjectInputStream(is); 
   Object o = ois.readObject();
   System.out.println(o);
  }
&lt;/pre&gt;

filter はこんな風に取得。filePrefix に指定した文字を含むファイルを選ぶ。この実装だとprefix になってないけど。
&lt;pre&gt;
 static PathFilter getPathFilter(final String filePrefix){
  PathFilter filter = new PathFilter() {
   public boolean accept(Path path) {
    return path.getName().contains(filePrefix);
   }
  };
  return filter;
 }
&lt;/pre&gt;

&lt;h3&gt;普通に書き出したファイルの場合&lt;/h3&gt;
サイドデータじゃなくて、普通にcontext.writeした場合は読み方が変わってくる。SequenceFile.Readerで読む。
&lt;pre&gt;
  Configuration conf = new Configuration();

  FileSystem fs = FileSystem.get(URI.create("hdfs://localhost:9000/"), conf);
  for (FileStatus status: fs.listStatus(new Path(dirname), filter)) {
   SequenceFile.Reader reader = new SequenceFile.Reader(fs, status.getPath(), conf);
   Text key = new Text();
                        Text value = new Text();
   while (reader.next(key, value){
                               ....
   }
  }
&lt;/pre&gt;


この読み方は、ValueがWritableの時にしか使えない。Serializable の場合はつぎのようにする。
nextでkeyだけ読んで、getCurrentValueでvalueを読む。このときにconfにJavaSerializationを追加しておかないと、エラーになるので注意。
&lt;pre&gt;
  Configuration conf = new Configuration();
  conf.set("io.serializations", 
    JavaSerialization.class.getName() + "," +
    WritableSerialization.class.getName());

  FileSystem fs = FileSystem.get(URI.create("hdfs://localhost:9000/"), conf);
  for (FileStatus status: fs.listStatus(new Path(dirname), filter)) {
   SequenceFile.Reader reader = new SequenceFile.Reader(fs, status.getPath(), conf);
   Text key = new Text();
   while (reader.next(key)){
    System.out.println(key.toString());
    ChlacTest.Result res = new ChlacTest.Result();
    res = (Result) reader.getCurrentValue(res);
    System.out.println(String.format("%d %d %f", res.rx, res.time_frame, res.alpha));
   }
  }
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8145649875908867399?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8145649875908867399/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8145649875908867399' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8145649875908867399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8145649875908867399'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/hadoop-hdfs.html' title='Hadoop のHDFS上のファイルを読む'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-9182406065775031013</id><published>2011-03-14T13:14:00.004+09:00</published><updated>2011-03-14T13:17:51.618+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google maps'/><title type='text'>googleで地名から緯度経度を取得</title><content type='html'>&lt;pre&gt;
$  curl "http://maps.google.com/maps/geo?q=千代田区外神田"
{
  "name": "千代田区外神田",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [ {
    "id": "p1",
    "address": "Japan, Tokyo Chiyoda外神田",
    "AddressDetails": {
   "Accuracy" : 4,
   "Country" : {
      "AdministrativeArea" : {
         "AdministrativeAreaName" : "東京都",
         "Locality" : {
            "DependentLocality" : {
               "DependentLocalityName" : "外神田"
            },
            "LocalityName" : "千代田区"
         }
      },
      "CountryName" : "日本",
      "CountryNameCode" : "JP"
   }
},
    "ExtendedData": {
      "LatLonBox": {
        "north": 35.7100074,
        "south": 35.6918852,
        "east": 139.7856097,
        "west": 139.7215803
      }
    },
    "Point": {
      "coordinates": [ 139.7535951, 35.6940027, 0 ]
    }
  } ]
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-9182406065775031013?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/9182406065775031013/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=9182406065775031013' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/9182406065775031013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/9182406065775031013'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/google.html' title='googleで地名から緯度経度を取得'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6537771312782000921</id><published>2011-03-11T03:00:00.002+09:00</published><updated>2011-03-11T03:40:19.818+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>hadoop side effect file</title><content type='html'>hadoopではファイルを正式なアウトプットの他に作ることができる。
getWorkOutputPath を使う。ディレクトリは正式なアウトプットの出力先と同じなので注意。
&lt;pre&gt;
 public static class R1 extends
 Reducer&lt;Text, S1, Text, S1&gt; {
  public void reduce(Text key, Iterable&lt;S1&gt; values,
  Context context) throws IOException, InterruptedException {
   context.write(key, values.iterator().next());
   Path path = FileOutputFormat.getWorkOutputPath(context); 
   Path fpath = new Path(path, "sidefile" + key.toString());  
    OutputStream os = fpath.getFileSystem(context.getConfiguration()).create(fpath);
   PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
   pw.println("hello");
   pw.flush();
   pw.close();
   os.close();
  }
 }
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6537771312782000921?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6537771312782000921/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6537771312782000921' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6537771312782000921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6537771312782000921'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/hadoop-side-effect-file.html' title='hadoop side effect file'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2196268222205538230</id><published>2011-03-09T08:25:00.001+09:00</published><updated>2011-03-09T08:26:46.492+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Hadoop job 管理</title><content type='html'>ps 相当
&lt;pre&gt;
&gt; hadoop job -list
&lt;/pre&gt;
kill
&lt;pre&gt;
&gt; hadoop job -kill xxxxxxxx
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-2196268222205538230?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2196268222205538230/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2196268222205538230' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2196268222205538230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2196268222205538230'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/hadoop-job.html' title='Hadoop job 管理'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3462026878010752511</id><published>2011-03-08T12:20:00.006+09:00</published><updated>2011-03-08T16:50:45.552+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screen'/><title type='text'>screen</title><content type='html'>&lt;h4&gt;設定&lt;/h4&gt;
デフォルトだとC-aがエスケープなのだけど、emacsとコンフリクトするのでC-zに設定し直す。下記を~/.screenrc に。
&lt;pre&gt;
escape ^z^z
&lt;/pre&gt;

&lt;h4&gt; デタッチ と アタッチ&lt;/h4&gt;
C-z d でデタッチ。screen -ls で確認すると、セッションが見える。
&gt;||
$ screen -ls
There is a screen on:
 6398.pts-11.xxxx (Detached)
1 Socket in /var/run/screen/S-xxxx.
||&lt;

screen -r でアタッチ。複数のセッションがある場合には先頭のpts番号（この場合は6398）を指定。

&lt;h4&gt; 仮想画面 &lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt; C-z c で仮想画面追加
&lt;li&gt; C-z w で仮想画面のリストを最下段に表示
&lt;li&gt; C-z 番号 でその番号の仮想画面に移動。
&lt;li&gt; C-z space で順番に仮想画面を移動。
&lt;li&gt; C-z n, C-z p で前後に移動。 nはspace と同じ。
&lt;/ul&gt;

&lt;h4&gt; コピーモード &lt;/h4&gt;
screen ではスクロールをscreenが処理してるので端末のスクロールバーが使えない。面倒。
そのかわりコピーモードというのがあってそれで過去のログをみることができる。
C-z [ でコピーモードに入る。エスケープで抜ける。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3462026878010752511?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3462026878010752511/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3462026878010752511' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3462026878010752511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3462026878010752511'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/03/screen.html' title='screen'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2870482308144166786</id><published>2011-02-04T01:01:00.003+09:00</published><updated>2011-02-04T10:31:11.698+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>hadoop でjava のserializableを受け渡すには</title><content type='html'>何らかの方法でシリアライズするわけだが、hadoop はデフォルトではJavaのシリアライズではなく
独自のシリアライザを使うようになっている。これはJavaのシリアライズが重いため、だそうだ。
&lt;p/&gt;
しかしもちろんシリアライザの実装を変更することができ、Javaのシリアライザを使うように
指定することもできる。それには、こうする。
&lt;pre&gt;
Configuration conf = new Configuration();
conf.set("io.serializations", 
  org.apache.hadoop.io.serializer.JavaSerialization.class.getName() + "," +
  org.apache.hadoop.io.serializer.WritableSerialization.class.getName());
&lt;/pre&gt;

要するにSerialization クラスをカンマで区切って、
io.serializations にセットするのだけど、JavaSerialization だけだと、Textとかが
デコードできなくなっちゃうので、デフォルトのWritableSerialization も書いておくこと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-2870482308144166786?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2870482308144166786/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2870482308144166786' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2870482308144166786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2870482308144166786'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/02/hadoop-java-serializable.html' title='hadoop でjava のserializableを受け渡すには'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7678089661317154474</id><published>2011-01-18T10:52:00.002+09:00</published><updated>2011-01-18T11:04:34.675+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>mac os JISキーボードをUS配列で</title><content type='html'>これまで、JISキーボードをUS配列で使うために、
 &lt;a href="http://homepage.mac.com/kenie/Projects/JANSI/MacOSX10.4/index.html"&gt;こちら&lt;/a&gt;の
JANSIマップというのを使っていた。
これは、キーマップを追加するもので、
日本語入力とUS入力の他にJANSIマップをつかって入力する形になる。
これはこれでいいのだけど、日本語入力では結局JIS配列になるし、気がついたら
USになっていたりして、発狂寸前。
&lt;p/&gt;
ということで、別の方法を模索したところ、Emacs bind化にもつかえる
&lt;a href="http://pqrs.org/macosx/keyremap4macbook/"&gt;KeyRemap4MacBook&lt;/a&gt;で出来ることが判明
さらに、スペースとコマンドキーの間にあってウザかった「英数」キーをコマンドキーに変えたので
大変に快適に！
ありがたいことだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7678089661317154474?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7678089661317154474/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7678089661317154474' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7678089661317154474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7678089661317154474'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2011/01/mac-os-jisus.html' title='mac os JISキーボードをUS配列で'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8899829378442201534</id><published>2010-11-29T13:06:00.003+09:00</published><updated>2010-11-29T13:09:13.578+09:00</updated><title type='text'>frameset と bodyタグ</title><content type='html'>いままで見えていたフレームが見えなくなったので調査。原因はChromeに変えたからだった。
どうも、フレームをbodyタグの中に書いていたのがまずかったらしい。bodyの
中だと無視されてしまうようだ。
Chromeの挙動がたぶん仕様的にはただしいんだろう。
でも、FirefoxでもSafariでも動いちゃうだけに、なんかなあ。

&lt;pre&gt;
&amp;lt;BODY&amp;gt;
&amp;lt;FRAMESET rows="70,100%"&amp;gt;&gt;
...
&amp;lt;/FRAMESET&amp;gt;
&amp;lt;/BODY&amp;gt;;
&lt;/pre&gt;

これだとレンダリングされない&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8899829378442201534?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8899829378442201534/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8899829378442201534' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8899829378442201534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8899829378442201534'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/11/frameset-body.html' title='frameset と bodyタグ'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3081717546685663174</id><published>2010-10-21T23:03:00.000+09:00</published><updated>2010-10-21T23:04:29.750+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Keyremap4MacBook</title><content type='html'>名前が思い出せなかった。Macでキーバインドを変更するソフト。Emacsにすることができる。

Keyremap4MacBook&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3081717546685663174?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3081717546685663174/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3081717546685663174' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3081717546685663174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3081717546685663174'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/10/keyremap4macbook.html' title='Keyremap4MacBook'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5659625559825301302</id><published>2010-09-08T15:12:00.002+09:00</published><updated>2010-09-08T15:14:37.401+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>carbon emacs のyankの設定</title><content type='html'>バージョンアップしたら、wordとかからペーストしたときに
変な属性がつくようになってしまった。
これで解決。しかし、ダレトクな機能をデフォルトにしたもんだ。
&lt;pre&gt;
(cond (window-system
       (setq x-select-enable-clipboard t)
       (setq yank-excluded-properties t)
       ))
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5659625559825301302?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5659625559825301302/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5659625559825301302' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5659625559825301302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5659625559825301302'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/09/carbon-emacs-no.html' title='carbon emacs のyankの設定'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6068295340231900374</id><published>2010-08-27T19:25:00.002+09:00</published><updated>2010-08-27T19:27:32.942+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>django filter登録</title><content type='html'>スタンドアロンでdjangoのテンプレートを使うときにフィルタを設定する方法。

&lt;pre&gt;
register = template.Library()

@register.filter
def texEscape(value):
   return value.replace("&amp;", "\\&amp;")

django.template.builtins.append(register)
&lt;/pre&gt;
組み込みとして登録してしまうアラワザ。これでいいのか？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6068295340231900374?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6068295340231900374/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6068295340231900374' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6068295340231900374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6068295340231900374'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/08/django-filter.html' title='django filter登録'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-858780755904215084</id><published>2010-08-13T11:36:00.001+09:00</published><updated>2010-08-13T11:37:42.424+09:00</updated><title type='text'>google map apiにurlアクセス</title><content type='html'>簡単だー。
&lt;pre&gt;
 curl "http://maps.google.com/maps/api/directions/json?origin=越谷,&amp;destination=草加,埼玉&amp;sensor=false"
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-858780755904215084?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/858780755904215084/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=858780755904215084' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/858780755904215084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/858780755904215084'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/08/google-map-apiurl.html' title='google map apiにurlアクセス'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1178316876795477058</id><published>2010-08-12T16:20:00.003+09:00</published><updated>2010-08-13T11:36:33.996+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>mac os で vlan</title><content type='html'>Mac OS X でのvlan 設定。linuxとちがって、vconfig はなくifconfigで直接やるようだ。

&lt;pre&gt;
# ifconfig vlan0 create
# ifconfig vlan0 vlan TAG vlandev IFNAME
# ifconfig vlan0 ADDR netmask MASK
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1178316876795477058?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1178316876795477058/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1178316876795477058' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1178316876795477058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1178316876795477058'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/08/mac-os-vlan.html' title='mac os で vlan'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5040901962240449352</id><published>2010-07-25T01:10:00.003+09:00</published><updated>2010-07-25T01:13:19.578+09:00</updated><title type='text'>lftp ログインできない</title><content type='html'>某ロリポップのサーバがアップグレードしたのち、lftpでログインできなくなっていた。ftpだとできる。
&lt;pre&gt;
debug 10
&lt;/pre&gt;
とかやって調べてみたところ、TLS OKとサーバが返してきてるので、TLSを使おうとして失敗していることが判明。
おそらくはサーバ側の設定ミス。で、
&lt;pre&gt;
set ftp:ssl-allow off
&lt;/pre&gt;
としたらうまくいくようになった。めでたい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5040901962240449352?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5040901962240449352/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5040901962240449352' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5040901962240449352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5040901962240449352'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/07/lftp.html' title='lftp ログインできない'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6823324229537355693</id><published>2010-07-24T23:38:00.002+09:00</published><updated>2010-07-24T23:41:31.596+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Scala mac 日本語</title><content type='html'>なぜかscalaで日本語出力すると文字化けする。よくわからなかったのだが、とりあえず実行時に下記が環境変数にのっていればOK.

&lt;pre&gt;
JAVA_OPTS="-Dfile.encoding=UTF-8"
&lt;/pre&gt;

コンパイル時には不要らしい。しかし、なんでこんなもんがいるんだ？javaだとふつうにできるのにね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6823324229537355693?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6823324229537355693/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6823324229537355693' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6823324229537355693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6823324229537355693'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/07/scala-mac.html' title='Scala mac 日本語'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3014783077832535375</id><published>2010-07-08T10:13:00.000+09:00</published><updated>2010-07-08T10:14:08.281+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>古いHHKをMacOS Xで使う方法。</title><content type='html'>http://ichiro.nnip.org/osx/HHKPS2USBDriver/

超便利。。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3014783077832535375?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3014783077832535375/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3014783077832535375' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3014783077832535375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3014783077832535375'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/07/hhkmacos-x.html' title='古いHHKをMacOS Xで使う方法。'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-293686930049228480</id><published>2010-06-07T15:01:00.002+09:00</published><updated>2010-06-07T15:03:03.602+09:00</updated><title type='text'>Unarchiver</title><content type='html'>Windowsで送られてくるZIPのファイル名が文字化ける問題が解決。すばらしい。。
&lt;a href="http://wakaba.c3.cx/s/apps/unarchiver.html"&gt;Unarchiver &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-293686930049228480?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/293686930049228480/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=293686930049228480' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/293686930049228480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/293686930049228480'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/06/unarchiver.html' title='Unarchiver'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7936305396676422624</id><published>2010-06-03T17:12:00.002+09:00</published><updated>2010-06-03T17:22:18.942+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>JavaILP</title><content type='html'>&lt;a href="http://javailp.sourceforge.net"&gt;JavaILP&lt;/a&gt;というものがある。これはいくつかのソルバのフロントエンドになってくれるJavaライブラリ。うまく動くなら一つのプログラムでいくつかのソルバがつかえるという寸法。
&lt;p/&gt;
これを、GLPKと組み合わせてみる。作りとしては、JNIを利用した各ソルバのJava bindingをwrapするという形なので、GLPKのwrapperを別途導入する必要がある。リンクぐらいはっておいてくれればいいのに、ないので、googleさまで聞くといくつか出てくる。どれだか分からないので試してみると、&lt;a href="http://glpk-java.sourceforge.net"&gt;これ&lt;/a&gt;だったようだ。
&lt;p/&gt;
swigを使って実装されているのでswigとlibtoolの導入が必要。INSTALLに書かれている通りでだいたい簡単にコンパイル出来るのだが、make checkが通らない。glp_error_hook がない、と言われる。どうも libglpk.a のほうがおかしいようだ。apt-getで入れたのがまずかったらしい。手で入れ直したらここは通った。
&lt;p/&gt;
あとはJavaプログラム実行時に libglpk.so と libglpk_jni.so がライブラリパスに入るように
&lt;pre&gt;
 -Djava.library.path=XXX
&lt;/pre&gt;
で指定してやるのが重要。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7936305396676422624?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7936305396676422624/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7936305396676422624' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7936305396676422624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7936305396676422624'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/06/javailp.html' title='JavaILP'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1612963746087031267</id><published>2010-03-20T14:41:00.001+09:00</published><updated>2010-03-20T14:46:01.194+09:00</updated><title type='text'>Bubbl.us</title><content type='html'>オンラインのマインドマップソフト．
&lt;a href="https://bubbl.us/"&gt;Bubbl.us&lt;/a&gt;．
なかなかよくできているが，
共同作業はできないようだ．フラッシュかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1612963746087031267?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1612963746087031267/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1612963746087031267' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1612963746087031267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1612963746087031267'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/03/bubblus.html' title='Bubbl.us'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5150803181386693640</id><published>2010-03-09T05:53:00.001+09:00</published><updated>2010-03-09T05:56:31.671+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Jericho HTML parser</title><content type='html'>GAE内で使うHTML パーザとしてhttp://htmlparser.sourceforge.net/を使っていた．これは，metaタグを見て文字コードを識別してくれ，なかなかよいと思っていたのだが，特定のページでエラーが出ることが判明．
&lt;p/&gt;
たとえば http://www.sbcr.jp/ がそうなのだが，
&lt;pre&gt;
&amp;lt;TITLE&amp;gt;SOFTBANK Creative：ソフトバンク クリエイティブの出版/サービス情報サイト&amp;lt;/TITLE&amp;gt; 
&amp;lt;META HTTP-EQUIV="content-type" CONTENT="text/html;charset=Shift-JIS"&amp;gt; 
&lt;/pre&gt;
のように，content-typeを指定したメタタグの前に多バイト文字列でタイトルを
書いてしまっている．
&lt;p/&gt;
htmlparserは，メタタグでcontent-typeを指定された時点で再度パーズにかかるのだが，
メタタグ以前の文字の長さが変わるとおかしくなるようだ．頭から再度パーズをするのであれば
問題なさそうなものだが．．
&lt;p/&gt;
で，別のを見つけた．
&lt;a href="http://jericho.htmlparser.net/docs/index.html"&gt;Jericho&lt;/a&gt;というもの．こちらはそのような問題は今のところなさそう．こちらもDOMではなく独自パーズだ．
&lt;p/&gt;
ああ，しかしはやくすべてがUTF-8とかになってくれないかなあ．面倒でたまらん．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5150803181386693640?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5150803181386693640/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5150803181386693640' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5150803181386693640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5150803181386693640'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/03/jericho-html-parser.html' title='Jericho HTML parser'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7940879429369422690</id><published>2010-02-05T12:09:00.003+09:00</published><updated>2010-02-05T12:11:10.775+09:00</updated><title type='text'>iui のフォーム入力文字化け</title><content type='html'>iphoneっぽいwebアプリを書くためのライブラリiuiの
致命的なバグ，フォームで日本語が通らない問題のフィックス．
&lt;p/&gt;

&lt;a href="http://code.google.com/p/iui/issues/detail?id=217"&gt;http://code.google.com/p/iui/issues/detail?id=217&lt;/a&gt;
&lt;p/&gt;
すばらしい．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7940879429369422690?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7940879429369422690/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7940879429369422690' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7940879429369422690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7940879429369422690'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/02/iui.html' title='iui のフォーム入力文字化け'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6946043433646550371</id><published>2010-01-31T16:25:00.002+09:00</published><updated>2010-01-31T16:31:52.724+09:00</updated><title type='text'>office for Macでtexの絵を描く．</title><content type='html'>pdf で出力してeps に変換すればいいやと思っていたのだが，
よく見てみるとすさまじくでかいpsが生成されていることが判明．
ビットマップになっているらしい．これでは話にならないので，pdfを直接取り込む
方法を模索．
&lt;p/&gt;
&lt;a href="http://mytexpert.sourceforge.jp/index.php?%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2FPDF%A4%CE%BA%EE%C0%AE"&gt;このページ&lt;/a&gt;を見つけた．
結局，導入していたtexはpdfの埋め込みに対応しており，.bb という拡張子のbounding boxを収めたファイルをpdfと同じディレクトリにおいておくだけでよい．ということ．で，.bbファイルは，ebb というコマンドで作成できる．ebbも知らない間にインストールされていた．
&lt;p/&gt;
ということでなんの苦労もなかった．ひとつ気になるのは，生成されたpdfがgvでちゃんと見えないこと．previewでは見えているから，まあいいか．
&lt;p/&gt;
これで数十年ぶりにpsファイルが論文書きのワークフローから完全になくなった．うれしいやら寂しいやら．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6946043433646550371?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6946043433646550371/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6946043433646550371' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6946043433646550371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6946043433646550371'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/01/office-for-mactex.html' title='office for Macでtexの絵を描く．'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6665366079585515053</id><published>2010-01-09T15:56:00.002+09:00</published><updated>2010-01-09T16:01:29.877+09:00</updated><title type='text'>mac でpowerpointの絵からepsを作る．</title><content type='html'>これまで windowsのpowerpointで絵を描いて，emf2epsでepsにしてtexに貼り込んでいたのだが，macのpowerpointに移行するので別の手段を考えなければならなくなった．
&lt;p/&gt;
意外に簡単で，powerepoint上でオブジェクトを選択して，右クリックから図にすることができる．このときにpdfでセーブする．あとは，このpdfをpdf2psでpsに変換すればいい．
&lt;p/&gt;
どうもpdfを直接取り込めるtexがよく使われているらしいが，移行はまたの機会に．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6665366079585515053?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6665366079585515053/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6665366079585515053' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6665366079585515053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6665366079585515053'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2010/01/mac-powerpointeps.html' title='mac でpowerpointの絵からepsを作る．'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3911940947600575055</id><published>2009-12-17T18:52:00.001+09:00</published><updated>2009-12-17T18:53:58.588+09:00</updated><title type='text'>memcached client</title><content type='html'>Javaのmemcached clientはツクダニにするほどあるようだが，
&lt;a href="http://code.google.com/p/spymemcached/"&gt;SPYMEMCACHED&lt;/a&gt;というのを
使ってみた．並列性に気を遣っているとのことなので．本当かどうかは不明．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3911940947600575055?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3911940947600575055/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3911940947600575055' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3911940947600575055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3911940947600575055'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/12/memcached-client.html' title='memcached client'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5527646701159872088</id><published>2009-12-17T18:45:00.003+09:00</published><updated>2009-12-17T18:52:19.743+09:00</updated><title type='text'>memcachedb on Mac Leopard</title><content type='html'>berkeley DB でパーシステントになった memcached であるところの
&lt;a href="http://memcachedb.org/"&gt;memcachedb&lt;/a&gt;をmac Leopardにインストール．
&lt;p/&gt;
まずはberkeley DB．デフォルトで入っているというはなしなのだが，どこにあるのかわからず，
Oracleから落としてきて普通に入れてみた．version4.8が最新だが，4.7で．
UNIX扱いで入る．
&lt;p/&gt;
libeventは port で．
&lt;p/&gt;
memcachdb はconfigureの際に--with-libevent=/opt/local とすればOK．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5527646701159872088?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5527646701159872088/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5527646701159872088' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5527646701159872088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5527646701159872088'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/12/memcachedb-on-mac-leopard.html' title='memcachedb on Mac Leopard'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4413642531049401962</id><published>2009-12-13T07:50:00.003+09:00</published><updated>2009-12-13T07:53:22.864+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>log4j - java.util.logging bridge</title><content type='html'>log4j の出力を java.util.logging にリダイレクトするためのアペンダを書いてみた．がうまく動かなかったので，ここに捨てておく．いや，動いたには動いたのだが出力がへん．

もっといいやり方としては，slf4j を間に挟む方法があるらしい．それをやってみよう．

&lt;pre&gt;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;

import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;

public class JDKLogAppender extends AppenderSkeleton {
    static Map&lt;String, Logger&gt; map = new HashMap&lt;String, Logger&gt;();
    static Map&lt;org.apache.log4j.Level, java.util.logging.Level&gt; levelMap = 
      new HashMap&lt;org.apache.log4j.Level, java.util.logging.Level&gt; ();  
    static {
        levelMap.put(org.apache.log4j.Level.FATAL, java.util.logging.Level.SEVERE);
        levelMap.put(org.apache.log4j.Level.ERROR, java.util.logging.Level.SEVERE);
        levelMap.put(org.apache.log4j.Level.WARN, java.util.logging.Level.WARNING);
        levelMap.put(org.apache.log4j.Level.INFO, java.util.logging.Level.INFO);    
        levelMap.put(org.apache.log4j.Level.DEBUG, java.util.logging.Level.FINE);            
        levelMap.put(org.apache.log4j.Level.TRACE, java.util.logging.Level.FINER);            
    }

    private Logger getLogger(String name){
        Logger logger = map.get(name);
        if (logger != null)
            return logger;
        logger = Logger.getLogger(name);
        map.put(name, logger);
        return logger;
    }
    
    @Override
    protected void append(LoggingEvent event) {
        String loggerName = event.getLoggerName();    
        Logger logger = getLogger(loggerName);
        logger.log(levelMap.get(event.getLevel()), layout.format(event));
    }        

    @Override
    public void close() {
    }

    @Override
    public boolean requiresLayout() {
        return true;
    }
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4413642531049401962?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4413642531049401962/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4413642531049401962' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4413642531049401962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4413642531049401962'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/12/log4j-javautillogging-bridge.html' title='log4j - java.util.logging bridge'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3131722971742260656</id><published>2009-12-12T08:54:00.005+09:00</published><updated>2009-12-12T10:55:57.232+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>html parser for GAE</title><content type='html'>JavaにはHTML parser はやまほどある．一番簡単なのは，Swing に標準で含まれている  javax.swing.text.html.parser.* を使う方法．だが，しかしこのパーザは，GAEでは使えない．swingが丸ごとblack listに入っているせい．実際にはグラフィックを使う部分ではないから
この部分には害はないはずなのだけど．
&lt;p/&gt;
他にもパーザはやまほどある．
&lt;a href="http://htmlcleaner.sourceforge.net/"&gt;htmlcleaner&lt;/a&gt;と言うものを使ってみたが，いまいちうまくいかない．
原因は，文書内のMETAタグの中のcharsetをちゃんと読んでくれないせい．
本来，HTTPのヘッダに含まれるContent-typeに含まれているべき情報なのだけど，
HTTPサーバだって各文書の文字コードのことまでは知らないので，ちゃんと設定するのはむずかしい．なので，METAタグでhttp-equivで書くのが普通．
htmlcleanerに渡すReaderを適当な文字コードで作ってやれば読めるのだけど，それには，先に一度文書の中を読んで，METAタグを調べてから，htmlcleanerに食わせてやらなければならない．
面倒だ．
&lt;p/&gt;
&lt;a href="http://htmlparser.sourceforge.net/"&gt;HTML Parser&lt;/a&gt;(どうでもいいが，もうすこし個体を識別できる名前をつけてほしい)は，まずは適当な仮定を持ってストリームを読み，meta tagを読み込んだ時点で，仮定と異なる文字コードだった場合には，頭からパーズし直してくれるらしい．
&lt;p/&gt;
使ってみると確かにちゃんと読めているようだ．
EUCのasahi.comもutf-8のwikipedia.jpも何も気にしないで読める．
こりゃ便利．ツリーの中のノードに対して適当な条件をつけて，合致するノードだけ返す，なんてこともできる．a タグ で href があるものだけ，という条件で読んでみるとこんな感じ．
&lt;pre&gt;
parser = new Parser(con);
Parser.getConnectionManager ().setRedirectionProcessingEnabled (true);
NodeFilter filter = 
  new AndFilter(new TagNameFilter("a"), new HasAttributeFilter("href"));
NodeList nodeList = parser.parse(filter);
for (Node node: nodeList.toNodeArray()) {
  TagNode tagNode = (TagNode)node;
  writer.println(tagNode.getAttribute("href"));
  writer.println(getText(tagNode));
}
&lt;/pre&gt;

いわゆるDomとは仕様が違うのが気になるけど，とりあえずこまらないかな．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3131722971742260656?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3131722971742260656/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3131722971742260656' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3131722971742260656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3131722971742260656'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/12/html-parser-for-gae.html' title='html parser for GAE'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-890891679389770817</id><published>2009-11-23T12:39:00.004+09:00</published><updated>2009-11-23T12:50:27.427+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>yaml for java</title><content type='html'>いくつも実装があるようなのだが，使える物がない．．．
&lt;ul&gt;
&lt;li&gt; JYamlは，すごく単純なドキュメントでもエラーがでてパーズできない場合がある．理由は不明．最近は更新されていない．
&lt;li&gt; JvYamlもエラーがでるらしい．これは試してない．
&lt;li&gt; JvYamlb はJvYamlの作者が最近作っている実装らしいのだが，最後のbが示すとおり，byte列のみを扱う．つまり，Javaのオブジェクトになってからも，byte列なのだ．get("xxx") とかすることもできない．勘弁してくれ．．
&lt;/ul&gt;

みんなどうしてるんだろう？

いろいろためして，
&lt;a href="http://yamlbeans.sourceforge.net/"&gt;YAMLBEANS&lt;/a&gt; にたどり着いた．これはいまのところ，期待したように動いてくれているようだ．．．しかし，需要はありそうなのに決定版がないのが不思議．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-890891679389770817?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/890891679389770817/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=890891679389770817' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/890891679389770817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/890891679389770817'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/11/yaml-for-java.html' title='yaml for java'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4976717206613719263</id><published>2009-11-06T12:15:00.002+09:00</published><updated>2009-11-06T12:20:19.590+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vlan'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>VLAN on CentOS</title><content type='html'>vlanconfigを使う手動法ではなく，自動的にできるようにする方法．
&lt;a href="http://metaphor1.exblog.jp/9058198/"&gt;ここ&lt;/a&gt;に詳しく書いてある．
&lt;p/&gt;
&lt;ul&gt;
&lt;li&gt; /etc/sysconfig/network に下記を追記
&lt;pre&gt;
VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID_NO_PAD
&lt;/pre&gt;
&lt;li&gt; /etc/sysconfig/network-scripts/ifcfg-ethX.YYY を書く．
YYYがタグ．
&lt;pre&gt;
DEVICE=ethX.YYY
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
&lt;/pre&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4976717206613719263?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4976717206613719263/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4976717206613719263' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4976717206613719263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4976717206613719263'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/11/vlan-on-centos.html' title='VLAN on CentOS'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7845850695462240102</id><published>2009-10-28T15:49:00.002+09:00</published><updated>2009-10-28T15:55:27.893+09:00</updated><title type='text'>pubsubhubbub</title><content type='html'>パブサブハバブと読むらしい．
&lt;a href="http://code.google.com/p/pubsubhubbub/"&gt;ホームページ&lt;/a&gt;．
&lt;p/&gt;
要するに，RSSのポーリングをノーティフィケーションに置き換える，という話で，間にブローカを置くことで，トラフィックを押さえる，というWeb Servicesの世界でもよく聞くような話．RSS Readerへの配送が早くなる，というが，Google ReaderのようなオンラインのReaderの場合だけで，ローカルなReaderだと別に早くならない．当たり前だが．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7845850695462240102?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7845850695462240102/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7845850695462240102' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7845850695462240102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7845850695462240102'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/10/pubsubhubbub.html' title='pubsubhubbub'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2389442532561666284</id><published>2009-10-28T15:42:00.003+09:00</published><updated>2009-10-28T15:56:16.436+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javafx'/><title type='text'>JavaFX と JAXB</title><content type='html'>混乱してきたのでまとめ．
&lt;ul&gt;
&lt;li&gt; JavaFX はJDK1.5 を前提としている．
&lt;li&gt; JAXBはJDK6から取り込まれたが，1.5の場合は外部ツールが必要
&lt;li&gt; JWSBP2.0にJAXBが含まれている．が，このJAXBも実はJDK6を必要としているようで，コンパイルは通るようになったのだが，実行すると落ちる．
&lt;/ul&gt;
&lt;p/&gt;
JAXBは，&lt;a href="https://jaxb.dev.java.net/servlets/ProjectDocumentList?folderID=5300&amp;expandFolder=5300&amp;folderID=3952"&gt;ここ&lt;/a&gt;からダウンロードできる．
&lt;ul&gt;
&lt;li&gt; JAXB の 2.2をためしてみたが，1.6用のようでだめ．
&lt;li&gt; 1.0.6は，逆に古すぎる？のか，クラスファイルのバージョン番号がおかしいと言われてだめ．
&lt;li&gt; 2.0.0 にしたら動いた！
&lt;/ul&gt;
&lt;p/&gt;
これほど面倒な面倒なことになるとは．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-2389442532561666284?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2389442532561666284/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2389442532561666284' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2389442532561666284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2389442532561666284'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/10/javafx-jaxb.html' title='JavaFX と JAXB'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7147152046573098634</id><published>2009-10-28T01:00:00.005+09:00</published><updated>2009-10-28T15:49:16.384+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>JWSDP 2.0</title><content type='html'>JAXBをJDK5 で使うために，JWSDP2.0を導入．
&lt;a href="http://java.sun.com/webservices/downloads/previous/webservicespack.jsp"&gt;ここ&lt;/a&gt;からダウンロード．Web startのダウンロードツールを強制的に使わされて不快．
&lt;p/&gt;
shellアーカイブなのだが，実行するとすてきなインストーラが起動する．~/packages以下にインストール．
&lt;p/&gt;
~/packages/jwdp2.0/jaxb/bin にjaxbがある．JWSDPにはいろいろ入っているが，用があるのは，JAXBだけなので，この下だけ切り出してもいいかも．
&lt;p/&gt;
jaxbを使うときに，javaが1.5になるようにPATHを調整する必要がある．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7147152046573098634?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7147152046573098634/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7147152046573098634' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7147152046573098634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7147152046573098634'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/10/jwsdp-20.html' title='JWSDP 2.0'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3337911110343439705</id><published>2009-10-28T00:28:00.003+09:00</published><updated>2009-10-28T15:49:38.859+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javafx'/><title type='text'>javaFX とJDK6</title><content type='html'>EclipseのJavaFXのプラグインで，JDK6のクラスを参照したjavaのコードが共存できない．プロジェクトはちゃんとJDK6にしてあってもだめ．
&lt;p/&gt;
内部的に，javafxpackagerというコマンドを起動しているのだが，これにverboseオプションをつけて実行してみると， なかでjavacを起動するときに，-target 1.5で起動している．．．なぜだ．
切り替えるオプションもないようだし，JDK5 でやるしかないのか．．．JAXBのライブラリどうしたらいいんだ？？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3337911110343439705?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3337911110343439705/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3337911110343439705' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3337911110343439705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3337911110343439705'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/10/javafx-jdk6.html' title='javaFX とJDK6'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2375138445974346262</id><published>2009-10-25T07:23:00.002+09:00</published><updated>2009-10-25T07:27:23.141+09:00</updated><title type='text'>jetty 組込</title><content type='html'>Jettyの組込サーバとしての利用法．&lt;a href="http://civic.xrea.jp/dev/jetty/noxml/"&gt;ここ&lt;/a&gt;に書かれている．
使い方としては，warのためのディレクトリ構成をつくって，そこを指定してサーバを起動する．
&lt;p/&gt;
注意点は，
&lt;ul&gt;
&lt;li&gt; jetty７だとパッケージ名が org.eclipse 以下になっている．
&lt;li&gt; サンプル中のコンテキストパスは，URLのプレフィックスを決めている模様．
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-2375138445974346262?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2375138445974346262/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2375138445974346262' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2375138445974346262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2375138445974346262'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/10/jetty.html' title='jetty 組込'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1616125080731614238</id><published>2009-10-05T13:05:00.002+09:00</published><updated>2009-10-05T13:19:08.801+09:00</updated><title type='text'>SteerMouse とtrackman fx</title><content type='html'>PS/2のTrackman marble FX をMacで使いたくて，アダプタ経由でつないでみたが，スクロールがうまくいかない．SteerMouseを試してみたが，やっぱりだめだ．Trackman marble FXは，あるボタンを押すと，ボールがホイール代わりになるという特殊な代物なので，どうにもならないようだ．不思議なことに，firefoxのなかではSteerMouseなしでもスクロールができる（というかスクロールボタンを押した状態になる）のだが，他の窓だとだめ．うーん．残念だなあ．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1616125080731614238?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1616125080731614238/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1616125080731614238' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1616125080731614238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1616125080731614238'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/10/steermouse-trackman-fx.html' title='SteerMouse とtrackman fx'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3624342466161417383</id><published>2009-09-21T02:12:00.001+09:00</published><updated>2009-09-21T02:13:59.530+09:00</updated><title type='text'>Servletで 405 エラー</title><content type='html'>App Engineで405がでてしばらくはまる．
&lt;p/&gt;
落ちは，doGet を doGETと書いていた．．．教訓は，
&lt;pre&gt;
@Override
&lt;/pre&gt;
は伊達じゃない，ってことで．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3624342466161417383?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3624342466161417383/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3624342466161417383' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3624342466161417383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3624342466161417383'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/09/servlet-405.html' title='Servletで 405 エラー'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-935450038148734233</id><published>2009-09-20T23:38:00.001+09:00</published><updated>2009-09-20T23:40:03.407+09:00</updated><title type='text'>java-twitter とGAE</title><content type='html'>java-twitterはApp Engineでは使えない．
&lt;pre&gt;
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
&lt;/pre&gt;
を使っているから．
&lt;p/&gt;
くそー．．．面倒くさいな．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-935450038148734233?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/935450038148734233/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=935450038148734233' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/935450038148734233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/935450038148734233'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/09/java-twitter-gae.html' title='java-twitter とGAE'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4337678684265191015</id><published>2009-09-20T21:14:00.003+09:00</published><updated>2009-09-20T21:27:11.540+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>java-twitterのインストール&lt;/</title><content type='html'>twitterのAPIをwrapしたライブラリ&lt;a href="http://code.google.com/p/java-twitter/"&gt;java-twitter&lt;/a&gt;をインストールしようとしたら，はまったのでメモ．バイナリがダウンロードできるのだが，依存しているjarが全然書かれていないので，一筋縄ではないかない，という．．．これがmaven時代のjavaプロジェクトのありかたなのか．
&lt;p&gt;
前提として，mavenはインストールされていること．適当なプロジェクトを作る．
&lt;/p&gt;
&lt;pre&gt;
&gt; mvn archetype:create -DgroupId=com.example -DartifactId=sample
&gt; cd sample
&lt;/pre&gt;
pom.xmlを編集して，下記を追加．レポジトリを追加しているのと，コンパイラのバージョン指定．
&lt;pre&gt;
  &amp;lt;repositories&amp;gt;
    ...
    &amp;lt;repository&amp;gt;
      &amp;lt;id&amp;gt;java-twitter-repository&amp;lt;/id&amp;gt;
      &amp;lt;url&amp;gt;http://java-twitter.googlecode.com/svn/repository/&amp;lt;/url&amp;gt;
      &amp;lt;name&amp;gt;java-twitter maven repository&amp;lt;/name&amp;gt;
    &amp;lt;/repository&amp;gt;
    ...
  &amp;lt;/repositories&amp;gt;
...
  &amp;lt;dependencies&amp;gt;
    ...
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;net.unto.twitter&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;java-twitter&amp;lt;/artifactId&amp;gt;
      &amp;lt;version&amp;gt;0.9-SNAPSHOT&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
    ...
  &amp;lt;dependencies&amp;gt;
...
  &amp;lt;build&amp;gt;
    &amp;lt;plugins&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;configuration&amp;gt;
          &amp;lt;source&amp;gt;1.6&amp;lt;/source&amp;gt;
          &amp;lt;target&amp;gt;1.6&amp;lt;/target&amp;gt;
        &amp;lt;/configuration&amp;gt;
      &amp;lt;/plugin&amp;gt;
    &amp;lt;/plugins&amp;gt;
  &amp;lt;/build&amp;gt;
&lt;/pre&gt;

で，
&lt;pre&gt;
&gt; mvn package
&gt; mvn dependency:copy-dependencies -DoutputDirectory=lib
&lt;/pre&gt;
とやるとlibにすべてのjarが集められる．

&lt;pre&gt;
&gt; cd lib
&gt; ls
commons-beanutils-1.7.0.jar ezmorph-1.0.6.jar
commons-codec-1.2.jar  google-collections-0.9.jar
commons-collections-3.2.jar java-twitter-0.9-SNAPSHOT.jar
commons-httpclient-3.1.jar joda-time-1.6.jar
commons-io-1.4.jar  json-lib-2.2.3-jdk15.jar
commons-lang-2.4.jar  junit-3.8.1.jar
commons-logging-1.0.4.jar protobuf-java-2.2.0.jar
&lt;/pre&gt;

こんなにたくさん．．．たしかにこれはいちいち書いてられないかも．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4337678684265191015?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4337678684265191015/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4337678684265191015' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4337678684265191015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4337678684265191015'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/09/java-twitter.html' title='java-twitterのインストール&lt;/'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4754644526837484273</id><published>2009-09-15T14:07:00.003+09:00</published><updated>2009-09-15T14:13:57.174+09:00</updated><title type='text'>OOWebとPOST</title><content type='html'>&lt;a href="http://ooweb.sourceforge.net/"&gt;OOWeb&lt;/a&gt;というcherrypyににたサーバフレームワークがある．メソッドをURLツリーにマップして，リフレクションでよびだしてくれてなかなか面白いのだが，どうもPOSTで生データを送ったりするのに対応できないっぽい．formからPOSTする場合のデータはちゃんとハンドルしてくれるのだけど，逆に生のデータがとれないのだ．
&lt;p/&gt;
メソッドにはRequestStateという引数がわたるのだけど，このRequestStateのなかに生データへアクセスする方法が含まれていないようなのだ．eclipseで止めてのぞいてみたがだめっぽい．
ソースをみても，RequestState以外を引数として呼び出すコードはない．ということで多分だめ．うーん，面倒だなあ．やっぱりjettyを使うのか．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4754644526837484273?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4754644526837484273/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4754644526837484273' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4754644526837484273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4754644526837484273'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/09/oowebpost.html' title='OOWebとPOST'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3134026325591293193</id><published>2009-08-27T01:31:00.003+09:00</published><updated>2009-08-27T01:58:47.647+09:00</updated><title type='text'>NHKのラジオ講座をMacでダウンロード</title><content type='html'>NHKのラジオ講座は，今年度から前の週1週間分だけ，ストリーミングできるようになった．
これはこれですばらしいことではあるが，なんで一週間分なんだ! とか怒りもわいたり．
さらに問題なのは，ストリーミングにフラッシュを使っているので，普通にダウンロードすることが
できないこと．しかも昨年度の試行では普通にできたのに，わざわざ今年度からできなくしているのだ．
こういう嫌がらせにどういう意味を見いだしているのか理解できない．
&lt;p/&gt;
それはさておき何とかならないか，調べてみると，Windows上には
&lt;a href="http://www.takanashi-it-factory.com/archives/450"&gt;高梨IT製作所のキャプチャツール&lt;/a&gt;
というツールがあり，フラッシュをダウンロードしてmp3に変換してくれる．
すばらしいのだが，MP3の名前をSJISにしているので，Macにコピーして iTunesに取り込むと文字化けする．
コピーするのも面倒．
&lt;p/&gt;
で，幸いこのツールはRubyで書かれているので，Macで使えるようにしてみた．
このキャプチャツールは&lt;a href="http://lkcl.net/rtmp/"&gt;rtmpdump&lt;/a&gt;という外部プログラムを
使ってflvをダウンロードし, ffmpegを使ってmp3に変換する．なので，これらをMac上に
用意する必要がある．ちなみに，rtmpdumpはadobeの独自プロトコルをリバースエンジニアリングして
作った物のようで，ちょっとグレイかもしれない．
&lt;p/&gt;
ffmpegは
&lt;pre&gt;
sudo port install ffmpeg
&lt;/pre&gt;
で入る．rtmpdumpのほうはソースからコンパイルする．このときopensslが必要なので，
&lt;pre&gt;
sudo port install openssl
&lt;/pre&gt;
でopensslを導入し，rtmpdumpのメイクファイルを編集し，CFLAGSとC++FLAGSに
&lt;pre&gt;
-I /opt/local/include
&lt;/pre&gt;
を，LDFLAGSに
&lt;pre&gt;
-L /open/local/lib 
&lt;/pre&gt;
を追加しておく．これでmakeすると rtmpdump_x86 というバイナリができる．これを
適当なパスにコピーしておく．

&lt;p/&gt;
キャプチャツールにはCUI版とGUI版がある．CUI版のほうを使う．
&lt;a href="http://www.takanashi-it-factory.com/archives/434"&gt;ここ&lt;/a&gt;
からダウンロードできる．
ZIPを展開すると，トップディレクトリにget-flv.rbがある．
このなかで，rtmpdumpとffmpegのバイナリを指定している場所があるので
適当に書き換える．id3も指定しているが，使っていないようなので無視．
&lt;p/&gt;
ファイル名がSJISになっているのは，わざわざSJISにしているから．
lib/get_flv.rb に何カ所か tosjis を呼んで部分があるが，
それらを全部削除．

これで，完成．
&lt;pre&gt;
ruby get-flv.rb kor
&lt;/pre&gt;
とやると，mp3/kor に日本語名でファイルがつくられる．
iTunesに入れても文字化けしない．

すばらしい．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3134026325591293193?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3134026325591293193/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3134026325591293193' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3134026325591293193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3134026325591293193'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/08/nhkmac.html' title='NHKのラジオ講座をMacでダウンロード'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6021590751457949022</id><published>2009-07-28T13:24:00.002+09:00</published><updated>2009-07-28T13:26:30.269+09:00</updated><title type='text'>netstat</title><content type='html'>TCPでリッスンしているポートを表示
&lt;pre&gt;
netstat -t -l
&lt;/pre&gt;

さらに
&lt;pre&gt;
netstat -t -l -p
&lt;/pre&gt;
とするとpidとプログラム名が表示されるけど，sudoしないと自分のプロセス以外は表示されない．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6021590751457949022?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6021590751457949022/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6021590751457949022' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6021590751457949022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6021590751457949022'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/07/netstat.html' title='netstat'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8520176190267751847</id><published>2009-07-24T16:28:00.001+09:00</published><updated>2009-07-24T16:31:49.932+09:00</updated><title type='text'>linux container ホスト，ゲスト通信</title><content type='html'>Linuxコンテナでは，ゲスト上で任意のジョブを実行することができない．vserver だとできるのだが．ネットワークをちゃんと設定してsshでやればいいのだが，macvlanを使う場合にはなかなか面倒らしい．

で，いろいろ試してみたら，FIFO (名前付きパイプ) で通信できることがわかった．ゲストのファイルシステム上にFIFOをつくればいい．簡単．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8520176190267751847?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8520176190267751847/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8520176190267751847' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8520176190267751847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8520176190267751847'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/07/linux-container.html' title='linux container ホスト，ゲスト通信'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6246148878079532578</id><published>2009-07-17T17:11:00.002+09:00</published><updated>2009-07-17T17:14:36.110+09:00</updated><title type='text'>VMware serverのコマンドラインからの制御</title><content type='html'>&lt;a href="http://d.hatena.ne.jp/pyopyopyo/20081011/p1"&gt;ここ&lt;/a&gt;にいろいろ書いてある．VMのIDは16，32，といくようだ．ひょっとして48を指定すると，16と32が同時に制御できるのか?

&lt;pre&gt;
 vmware-vim-cmd vmsvc/getallvms   - リスト取得
 vmware-vim-cmd vmsvc/power.on 16
 vmware-vim-cmd vmsvc/power.off 16
 vmware-vim-cmd vmsvc/power.reboot 16
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6246148878079532578?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6246148878079532578/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6246148878079532578' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6246148878079532578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6246148878079532578'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/07/vmware-server.html' title='VMware serverのコマンドラインからの制御'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1270852151204842120</id><published>2009-06-26T16:04:00.003+09:00</published><updated>2009-06-26T16:08:53.846+09:00</updated><title type='text'>bash リダイレクト</title><content type='html'>いつもわからなくなるbashのリダイレクト．&lt;a href="http://x68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8"&gt;ここ&lt;/a&gt;に詳しい．
&lt;p/&gt;
標準エラーと標準出力を同じファイルに．
&lt;pre&gt;
  command &gt; file 2&gt;&amp;1 
&lt;/pre&gt;
標準エラーと標準出力を同じパイプに
&lt;pre&gt;
  command 2&gt;&amp;1 | command2
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1270852151204842120?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1270852151204842120/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1270852151204842120' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1270852151204842120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1270852151204842120'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/06/bash.html' title='bash リダイレクト'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-236899474561844454</id><published>2009-06-22T06:18:00.002+09:00</published><updated>2009-06-22T06:21:45.847+09:00</updated><title type='text'>Log4Jの制御</title><content type='html'>Log4Jの出力ストリームをプログラム内部で制御

&lt;a href="http://www.roseindia.net/tutorials/log4j/writer-appender-log4j.shtml"&gt;ここ&lt;/a&gt;を参考に．

&lt;pre&gt;
WriterAppender appender = 
   new WriterAppender(new PatternLayout("%d [%t] %-5p %c - %m%n"), outstream);
Logger.getRootLogger().addAppender(appender);
&lt;/pre&gt;

で，出力先を他のストリームに変更することができる．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-236899474561844454?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/236899474561844454/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=236899474561844454' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/236899474561844454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/236899474561844454'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/06/log4j.html' title='Log4Jの制御'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5319656779977132598</id><published>2009-05-22T13:18:00.002+09:00</published><updated>2009-05-22T13:22:05.952+09:00</updated><title type='text'>ubuntu 9.04 jaでのflyspell mode</title><content type='html'>emacsのflyspell-modeがうまく動かなかった．理由は
&lt;ul&gt;
&lt;li&gt;そもそもaspellの英語辞書が入っていなかった．&lt;/li&gt;
&lt;li&gt;日本語環境だと日本語に対してスペルチェックしようとして日本語の辞書を探しにいく．&lt;/li&gt;
&lt;/ul&gt;
aspell-en を入れ，
&lt;pre&gt;
LANG=C emacs
&lt;/pre&gt;
で起動すればOK．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5319656779977132598?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5319656779977132598/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5319656779977132598' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5319656779977132598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5319656779977132598'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/05/ubuntu-904-jaflyspell-mode.html' title='ubuntu 9.04 jaでのflyspell mode'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-9099815543022816708</id><published>2009-05-19T09:30:00.002+09:00</published><updated>2009-05-19T10:37:44.834+09:00</updated><title type='text'>Xen で wake up on LAN</title><content type='html'>いろいろ試してみたがどうにもうまく行かない．サーチしてみたら
&lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=247523"&gt;こんなページ&lt;/a&gt;を見つけた．
&lt;p/&gt;
何かバグらしいのだけど，よくわからない．
ここに置いてあったパッチを，手元のCentOS 5.0, Xen 3.0に手作業で当ててみたのだけど，うまくうごいてくれなかった．むーん，なにがいけないんだろうか．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-9099815543022816708?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/9099815543022816708/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=9099815543022816708' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/9099815543022816708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/9099815543022816708'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/05/xen-wake-up-on-lan.html' title='Xen で wake up on LAN'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8260622998761676059</id><published>2009-05-19T04:56:00.003+09:00</published><updated>2009-05-19T07:06:39.580+09:00</updated><title type='text'>Eucalyptus のネットワーク</title><content type='html'>意外に面倒．というかすごく面倒．．．Rocksの中だからということもあるのだけど．
そもそもRocksのフロントエンドのDHCPDはRocksの管理下にあるので，
いじると何が起こるのか(私には)分からない．が，どのモードもDHCPDをいじる必要があるみたいなんだよな．．．面倒．
&lt;p/&gt;
可能なネットワーク設定は次の4種.
&lt;ul&gt;
&lt;li&gt; SYSTEM Mode &lt;/li&gt;
&lt;li&gt; STATIC Mode &lt;/li&gt;
&lt;li&gt; MANAGED Mode &lt;/li&gt;
&lt;li&gt; MANAGED-NOVLAN Mode &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt; SYSTEM Mode &lt;/h3&gt;
最も単純．ユーザがDHCPを起動しておき，Eucalyptusのインスタンスはそれを利用する．環境によっては何も考えずに簡単に導入できそうなのだが．．．

&lt;h3&gt; STATIC Mode &lt;/h3&gt;
DHCP サーバはEucalyptusが管理する．使用するMAC Address とIPaddressのペアを設定ファイルに書いておくと，Eucalyptusがそれらをラウンドロビンで利用する．
&lt;p/&gt;
SYSTEMもSTATICも，各VMコンテナのネットワークをブリッジして使う．これだと，RocksでインストールしたプライベートIPのクラスタでは，外から入れない．

&lt;h3&gt; MANAGED Mode &lt;/h3&gt;
プライベートIPのレンジを割り当て，そこをEucalpytusが管理するDHCPDが使う．この場合もアドレスはプライベートでルーティングできないのだけど， パブリックIPアドレスのプールを用意して尾家，ルーティングするように指定するころができる．

&lt;h3&gt; MANAGED-NOVLAN Mode &lt;/h3&gt;
MANAGEDとほとんど同じだが，内部でVLANをつかわないので，インスタンスの通信が分離されない．

&lt;hr&gt;
さて，どれを使ったものやら．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8260622998761676059?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8260622998761676059/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8260622998761676059' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8260622998761676059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8260622998761676059'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/05/eucalyptus.html' title='Eucalyptus のネットワーク'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3875830418529111498</id><published>2009-05-14T07:39:00.003+09:00</published><updated>2009-05-14T07:43:37.298+09:00</updated><title type='text'>Condor on Etch 86_64</title><content type='html'>すくなくともCondor 7.3 は etch用には86のバイナリしか無い．つまり86_64版がない．
これでも動くはずなのだが，libsspが無いと言われて動作しない．これには32bit用のgccをインストールすればいいはずだが，それはそれで面倒くさい．
&lt;p/&gt;
RHEL3,86_64版を持ってきたところ，これはこれでlibstd++.so.5がないと言われて動かない．
&lt;a href="http://packages.debian.org/etch/amd64/libstdc++5/download"&gt;http://packages.debian.org/etch/amd64/libstdc++5/download&lt;/a&gt;からdebを持ってきてインストールしたところ動作するようになった．めでたい．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3875830418529111498?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3875830418529111498/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3875830418529111498' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3875830418529111498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3875830418529111498'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/05/condor-on-etch-8664.html' title='Condor on Etch 86_64'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6345368979225105592</id><published>2009-05-08T18:03:00.006+09:00</published><updated>2009-05-09T04:44:18.616+09:00</updated><title type='text'>ubuntu 9.04 trackman marble fx</title><content type='html'>どうも最近のXorgはxorg.confをちゃんと読んでくれていない？マウスの設定はhalが認識してしまうらしい。で、trackman marble fxがうまく動いてくれないので、
&lt;a href="http://d.hatena.ne.jp/Johan511/20090419/1240068436"&gt;こちら&lt;/a&gt;を参考に、
こんな/etc/hal/fdi/policy/mouse-wheel.fdi を書いてみた。マウスの名前は/var/log/dmsgに出ていたもの。
&lt;pre&gt;
&amp;lt;match key="info.product" string="PS2++ Logitech Mouse"&amp;gt;
&amp;lt;merge key="input.x11_options.EmulateWheel" type="string"&amp;gt;true&amp;lt;/merge&amp;gt;
&amp;lt;merge key="input.x11_options.EmulateWheelButton" type="string"&amp;gt;8&amp;lt;/merge&amp;gt;
&amp;lt;merge key="input.x11_options.XAxisMapping" type="string"&amp;gt;6 7&amp;lt;/merge&amp;gt;
&amp;lt;merge key="input.x11_options.YAxisMapping" type="string"&amp;gt;4 5&amp;lt;/merge&amp;gt;
&amp;lt;merge key="input.x11_options.ZAxisMapping" type="string"&amp;gt;4 5&amp;lt;/merge&amp;gt;
&amp;lt;merge key="input.x11_options.Emulate3Buttons" type="string"&amp;lt;true&amp;lt;/merge&amp;gt;
&amp;lt;/match&amp;gt;
&lt;/pre&gt;
スクロールが動くようになった。めでたい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6345368979225105592?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6345368979225105592/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6345368979225105592' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6345368979225105592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6345368979225105592'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/05/ubuntu-904-trackman-marble-fx.html' title='ubuntu 9.04 trackman marble fx'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8452612537483346802</id><published>2009-05-03T16:18:00.003+09:00</published><updated>2009-05-03T16:31:00.680+09:00</updated><title type='text'>Wake up on LAN</title><content type='html'>職場の実験用クラスタに常に火が入っているのがもったいないのでWake up on LANを設定してみた．必要なことは下記．
&lt;ol&gt;
&lt;li&gt; 対象マシンのBIOSでWake up on LANを設定する &lt;/li&gt;
&lt;li&gt; 対象マシンのOSからインターフェースカードにWake up on LANを指定する &lt;/li&gt;
&lt;li&gt; 対象マシンに対してマジックパケットをブロードキャストするプログラム &lt;/li&gt;
&lt;/ol&gt;

はまったのは2．そんな設定が必要だと思っていなかった．
LINUXの場合，ethertool というものをつかえばよい．

&lt;a href="http://80286.blog62.fc2.com/blog-entry-37.html"&gt;ここ&lt;/a&gt;，
&lt;a href="http://80286.blog62.fc2.com/blog-entry-128.html"&gt;ここ&lt;/a&gt;にあるように，

&lt;pre&gt;
yum install ethtool
echo 'ETHTOOL="wol g"' &gt;&gt; /etc/sysconfig/network-scripts/ifcfg-eth0
&lt;/pre&gt;
とやればよい．初回は
&lt;pre&gt;
ifconfig eth0 down; ifconfig eth0 up
&lt;/pre&gt;
しないとこの設定が有効にならないので注意．

&lt;hr/&gt;
3のプログラムは，&lt;a href="http://code.activestate.com/recipes/358449/"&gt; ここ &lt;/a&gt;からとったものを使った．macaddressの書き方に寛容で便利．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8452612537483346802?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8452612537483346802/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8452612537483346802' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8452612537483346802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8452612537483346802'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/05/wake-up-on-lan.html' title='Wake up on LAN'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2366084022017174302</id><published>2009-04-22T01:33:00.002+09:00</published><updated>2009-04-22T01:40:38.558+09:00</updated><title type='text'>Mac OS X Leopard で VNC</title><content type='html'>LeopardにはScreen SharingというVNCクライアントが入っている．safariで
&lt;pre&gt;
vnc://address:port
&lt;/pre&gt;
とやるとつながる．ここでportはVNCとしての番号ではなくて5901などのポート番号．
&lt;p/&gt;
わたしのように普段safariを使わない人の場合は，terminalから
&lt;pre&gt;
&gt; open vnc://address:port
&lt;/pre&gt;
とやっても同じ．便利．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-2366084022017174302?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2366084022017174302/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2366084022017174302' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2366084022017174302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2366084022017174302'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/04/mac-os-x-leopard-vnc.html' title='Mac OS X Leopard で VNC'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3093919115656107264</id><published>2009-03-31T12:05:00.001+09:00</published><updated>2009-03-31T12:10:19.924+09:00</updated><title type='text'>CentOS で埋め込みビットマップを使わない</title><content type='html'>デスクトップに入れたCentOSでフォントをいれても，なんかレンダリングが汚いとおもっていたら，埋め込みビットマップが使われているせいだったらしい．Ubuntuだと大丈夫なのに．いろいろ調べて，/etc/fonts/conf.d/90-nobitmap.confとして下記のファイルをおいておけばよいということが判明．てこづった．しかしこれでデスクトップ画面がすばらしく見やすくなった．うれしい．
&lt;pre&gt;
&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&amp;gt;
&amp;lt;fontconfig&amp;gt;
 &amp;lt;match target="font" &amp;gt;
  &amp;lt;edit mode="assign" name="embeddedbitmap"&amp;gt;
   &amp;lt;bool&amp;gt;false&amp;lt;/bool&amp;gt;
  &amp;lt;/edit&amp;gt;
 &amp;lt;/match&amp;gt;
&amp;lt;/fontconfig&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3093919115656107264?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3093919115656107264/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3093919115656107264' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3093919115656107264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3093919115656107264'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/03/centos-no.html' title='CentOS で埋め込みビットマップを使わない'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8017493178223476173</id><published>2009-03-25T21:15:00.002+09:00</published><updated>2009-03-25T21:20:40.692+09:00</updated><title type='text'>python iso8601</title><content type='html'>bloggerのfeedの時刻情報はISO8601というフォーマットで出てくる．ところがpython標準のtimeモジュールやdatetimeモジュールではこれがパーズできない．正規表現を使ってかかなければ行けないのか，面倒だなあ．と思っていたところ，&lt;a href="http://code.google.com/p/pyiso8601/"&gt;こんなもの&lt;/a&gt;を見つけた．
&lt;p&gt;
すばらしい．．．ありがたいことだ．っていうかtimeモジュールのパーザ異常に弱い．Cの標準ライブラリに頼っている都合らしいが，もう少しなんとかしてくれ．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8017493178223476173?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8017493178223476173/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8017493178223476173' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8017493178223476173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8017493178223476173'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/03/python-iso8601.html' title='python iso8601'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8677605476027854360</id><published>2009-03-17T00:43:00.004+09:00</published><updated>2009-03-17T00:54:43.067+09:00</updated><title type='text'>google docs からダウンロード</title><content type='html'>docs に置いたファイルをスクリプトで処理するためにダウンロードする方法を調べた．
&lt;p&gt;
&lt;a href="http://code.google.com/p/gdatacopier/"&gt;ここ&lt;/a&gt;にあるgadatacopierを使う．このプログラムは，pythonで書かれていて，gdata APIのpython clientを使う
&lt;p&gt;
Python Clientは&lt;a href="http://code.google.com/apis/gdata/clientlibs.html"&gt;ここ&lt;/a&gt;からダウンロードする．展開するとsetup.pyがあるのでこれをsudoで実行すればインストールされる．インストールしたくなければ，srcをPYTHONPATHに加えればいい．

&lt;pre&gt;
PYTHONPATH=$DIR/gdata.py-1.2.4/src $DIR/gdatacopier-1.0.2/gdoc-cp.py\
 --username $NAME --export csv --google-id $ID --local $OUT
&lt;/pre&gt;

&lt;p&gt;
最初に試したときには，ひとつ問題があって，うまく動かなかった．&lt;a href="http://code.google.com/p/gdatacopier/issues/detail?id=18"&gt;この問題&lt;/a&gt;らしいので，ここに書かれている通りに.encode('UTF-8')をコメントアウトしたら動くようになった。
&lt;pre&gt;
def _get_item_list(self, item_type = None):
    .....
    item_list.append({'title': entry.title.text,#.encode('UTF-8'),
&lt;/pre&gt;
こんなハックでいいのかね．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8677605476027854360?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8677605476027854360/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8677605476027854360' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8677605476027854360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8677605476027854360'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/03/google-docs.html' title='google docs からダウンロード'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3450011323083689777</id><published>2009-03-16T11:10:00.002+09:00</published><updated>2009-03-16T11:15:43.305+09:00</updated><title type='text'>RADEON HD4350で WQXGA</title><content type='html'>手元にあったこのグラフィックボードをDELLの3008をつないだのだが，解像度が十分でない．Dual Linkがサポートされていないのか，とかいろいろ考えたのだが，単にドライバの問題だった．
&lt;p&gt;
&lt;a href="http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx?type=2.4.1&amp;product=2.4.1.3.38&amp;lang=English"&gt;ここ&lt;/a&gt;からダウンロードする．shell archiveになっているので，sudo sh xxxx.runで実行する．で，Xを再起動すればOK.

しかし，実売5000円しないようなグラフィックボードで，WQXGAがドライブできるのだなあ．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3450011323083689777?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3450011323083689777/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3450011323083689777' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3450011323083689777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3450011323083689777'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/03/radeon-hd4350-wqxga.html' title='RADEON HD4350で WQXGA'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8486220782658678270</id><published>2009-03-04T09:48:00.002+09:00</published><updated>2009-03-04T09:50:30.812+09:00</updated><title type='text'>gnuplot で積み上げグラフ</title><content type='html'>これで書ける．ちゃんとフィルされる．4.2じゃないとだめらしい．
&lt;pre&gt;
set style data histograms
set style histogram rows
set yrange [0:]
set style fill solid 1.0 border -1
set boxwidth 0.9 relative
plot 'testdata' using 2, '' using 3, '' using 4, '' using 5
&lt;/pre&gt;

データはこんな．
&lt;pre&gt;
1 0  10 12 18
2 1  11 13 19
3 1  12 14 20
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8486220782658678270?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8486220782658678270/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8486220782658678270' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8486220782658678270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8486220782658678270'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/03/gnuplot.html' title='gnuplot で積み上げグラフ'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3365455364934666632</id><published>2009-02-28T01:01:00.002+09:00</published><updated>2009-02-28T08:02:38.632+09:00</updated><title type='text'>google spreadsheet のダウンロード</title><content type='html'>&lt;a href="http://code.google.com/apis/documents/docs/2.0/developers_guide_protocol.html#DownloadingSpreadsheets"&gt;このドキュメントによれば&lt;/a&gt;
httpのGETで簡単に取得できるようだ.
&lt;p&gt;
curl https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=ID&amp;fmcmd=FOMAT
&lt;/p&gt;

が，認証がかかっているとリダイレクトされてしまう．認証の方法は&lt;a href="http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html"&gt;こちら&lt;/a&gt;にかかれている．後でやってみよう．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3365455364934666632?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3365455364934666632/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3365455364934666632' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3365455364934666632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3365455364934666632'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/02/google-spreadsheet.html' title='google spreadsheet のダウンロード'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-275310122090907790</id><published>2009-02-15T04:20:00.003+09:00</published><updated>2009-02-15T05:41:24.407+09:00</updated><title type='text'>Giftag</title><content type='html'>&lt;a href="http://www.giftag.com/"&gt;http://www.giftag.com/&lt;/a&gt;. BestBuy傘下のサービス．これはAmazonの「欲しいものリスト」のようなものだが，特定のサイトに閉じていないのが特徴．つまり任意のサイトのデータが利用できる．
&lt;p&gt;
基本的にはhProductという標準XMLフォーマットのデータを用いているサイトが対象で，このデータを持ってくるようなのだが，このフォーマットをサポートしていない場合にはそれなりになんとかしてくれるようだ．
&lt;p&gt;
で，これはGoogle App Engine上に実装されているらしい．ちゃんとスケールするということの証明になっているのだろうか．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-275310122090907790?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/275310122090907790/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=275310122090907790' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/275310122090907790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/275310122090907790'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/02/giftag.html' title='Giftag'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4670823665609602536</id><published>2009-02-12T20:15:00.002+09:00</published><updated>2009-02-12T20:29:57.827+09:00</updated><title type='text'>VMware Fusion 内のIME on/off</title><content type='html'>Macbook 上のVMware FusionでWindows XPとかLinuxとかを使っているのだけど，IMEの on/offのキーアサインが違っていて発狂寸前．でいろいろがんばってみた．ホストのMacbook状ではCmd+Spaceを使っているので，Windowsのほうをこれに合わせる．
&lt;p/&gt;
WindowsのIMEのon/offのアサインはツールを使わなくても結構自由に変えられる．「テキストサービスと入力言語」でIMEを選んでプロパティを開く．「全般」の「キー/ローマ字/色の設定」の「設定」を開くとキーバインドが出てくるのでここで指定すればいい．CmdキーはVMware上のWindowsではWindows-keyして認識されているので，Windows-key + spaceが設定できればいい．
ところが，ここでWindows-key + Spaceは指定できない．というかWindows-keyは一般的なmodifierとして認識されていないらしく，Windows-key関連はここではまったく使えない．
&lt;p/&gt;
私はWindows-keyのないthinkpad が長かったので，Windows でWindows-keyを使う習慣がない．なので，Windows-keyは要らない．と考えると話はわりに簡単．とりあえず，shift + spaceをキーバインドとして指定する．で，changekeyを使って，左のwindowsキーをshiftにしてしまう．これで，cmd+spaceでwindowsのIMEがon/offできるようになった．
&lt;p/&gt;
ちなみにこのように変更しても，当然Mac OS 側には何の影響も無いので，VMwareの画面からCmd+tabで抜け出すことができる．
&lt;p/&gt;
あとはlinuxだなあ．どうしよう．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4670823665609602536?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4670823665609602536/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4670823665609602536' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4670823665609602536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4670823665609602536'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/02/vmware-fusion-ime-onoff.html' title='VMware Fusion 内のIME on/off'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4178464727675304675</id><published>2009-02-11T11:39:00.002+09:00</published><updated>2009-02-11T11:48:50.271+09:00</updated><title type='text'>latex2html</title><content type='html'>ではまった．
&lt;p/&gt;
なぜかページが全然生成されない．原因は改行コードが0dになっていたこと．気の迷いでfileを作るときにeuc-jp-macにしていたのが原因．latexは普通に処理してくれていたので発見が遅れた．まいったまいった．

&lt;p/&gt;
もう一つ．
&lt;pre&gt;
latex2html -split 0 xxx.tex
&lt;/pre&gt;
とやると，すべてが1枚のhtmlになる．数ページ程度の文章ならこちらの方が読みやすい．あとwordに貼り込むときもこちらのほうが楽．いままで1枚のhtmlにするために，texのsectionをemacsのマクロで置き換えたりしていたのだが，まったく無駄だった．ちゃんとマニュアル読まないと．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4178464727675304675?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4178464727675304675/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4178464727675304675' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4178464727675304675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4178464727675304675'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/02/latex2html.html' title='latex2html'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7744905378505955376</id><published>2009-02-07T00:53:00.004+09:00</published><updated>2009-02-07T01:14:36.612+09:00</updated><title type='text'>boostで文字列と数字を連結する方法2件</title><content type='html'>Javaだと文字列と数字の連結は簡単で，
&lt;pre&gt;
"string" + 1
&lt;/pre&gt;
で"string1"になってくれる．C++の文字列にも+演算子が定義されているのだが，残念ながら文字列との結合しかしてくれないようだ．で，こういう場合どうするかというとstring streamを使うのが定番らしい．
&lt;pre&gt;
#include &amp;lt;sstream&amp;gt;
using namespace std;

ostringstream oss;
oss &amp;lt;&amp;lt; str &amp;lt;&amp;lt; 1;
string s0 = oss.str();
&lt;/pre&gt;
streamに一度書き込んで，そこから文字列を取り出すということ．うざい．
&lt;p/&gt;
&lt;h4&gt;lexcal_cast&lt;/h4&gt;
boostを使うともう少しきれいに書ける．一つは，数字を文字列に変換しておいて，文字列連結演算子で連結する方法．
&lt;pre&gt;
#include &amp;lt;boost/lexical_cast.hpp&amp;gt;
using namespace std;
using namespace boost;

string s1 = s  + lexical_cast&amp;lt;string&amp;gt;(1);
cout &amp;lt;&amp;lt; s1 &amp;lt;&amp;lt; endl;
&lt;/pre&gt;
だいぶきれいだが，キャストにかかる文字列が長くてこれはこれでうざい．ちなみに実装としてはstring stream を使っているらしい．

&lt;h4&gt;format&lt;/h4&gt;
formatをつかってもいい．これはCのprintf的なフォーマットを実現するもの．関係ないが，ヘッダファイルだけで実現されている．どうやってフォーマットをパーズしているんだろうなあ．．
&lt;pre&gt;
#include &amp;lt;boost/format.hpp&amp;gt;
using namespace std;
using namespace boost;

string s2 = (format("%1%%2%") % str % 1).str();
cout &amp;lt;&amp;lt; s2 &amp;lt;&amp;lt; endl;
&lt;/pre&gt;
%演算子で区切って引数を渡す構造．面倒なことに%演算子の優先順位が&amp;lt;&amp;lt;などより弱いので，括弧でくくらないとへんなことになったり．
&lt;p/&gt;
どれで書いてもあんまりすっきりしないなあ．なんで文字列に他の型を結合できるように演算子が定義されていないんだろう?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7744905378505955376?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7744905378505955376/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7744905378505955376' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7744905378505955376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7744905378505955376'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/02/boost2.html' title='boostで文字列と数字を連結する方法2件'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-5468271401932785851</id><published>2009-02-04T06:59:00.002+09:00</published><updated>2009-02-04T07:05:49.198+09:00</updated><title type='text'>libcurl のfileプロトコル</title><content type='html'>libcurlではhttp以外にもいろんなプロトコルが使えるようになっていて，当然fileも使える．が，httpでは動くcontent-lengthだけを取るやり方がうまく動かない．
&lt;p&gt;
HEADERとNOBODYを指定して，performしたあとで，CONTENT_LENGTH_DOWNLOADを取ると長さが分かる．
&lt;pre&gt;
  curl_easy_setopt(dwHandle, CURLOPT_URL, url);
  curl_easy_setopt(dwHandle, CURLOPT_HEADER, 1);
  curl_easy_setopt(dwHandle, CURLOPT_NOBODY, 1);
  curl_easy_setopt(dwHandle, CURLOPT_WRITEFUNCTION, &amp;func);
  curl_easy_perform(dwHandle);
  curl_easy_getinfo(dwHandle, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &amp;dSize);
&lt;/pre&gt;
httpの場合は，head メソッドを使ってcontent-lengthだけ取得しているのだろう．fileの場合はstatでとればいいのでさらに簡単なはずなのだが．
&lt;p&gt;
しかたがないのでソースをダウンロードして追ってみると，ちゃんとstatはしている．にもかかわらず，外のプログラムからアクセスできる構造体に設定していないようだった．ので，そこだけちょっと修正したら，動いているっぽい．
&lt;p&gt;
とりあえず，MLでレポートしておいたが，さてどうしたものか．CURLにパッチ当てなければ動かないのではソフトとしてリリースできないしなあ．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-5468271401932785851?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/5468271401932785851/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=5468271401932785851' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5468271401932785851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/5468271401932785851'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/02/libcurl-file.html' title='libcurl のfileプロトコル'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-4604170100574886410</id><published>2009-01-29T23:08:00.003+09:00</published><updated>2009-01-29T23:13:31.140+09:00</updated><title type='text'>const member function</title><content type='html'>関数が引数を変更しないときにはconstを引数に付ける．
&lt;pre&gt;
void func(const string &amp; str) ;
&lt;/pre&gt;
これはstrで参照されるオブジェクトをfuncが変更しないという意味になる．
&lt;p&gt;
メンバ関数の場合には，引数以外にも変更することの可能なオブジェクトがある．暗黙裏に渡されるthisである．このthisを変更しないという宣言をするには const を後ろに付ける．
&lt;pre&gt;
class A {
  void func(void) const;
}
&lt;/pre&gt;
なぜかというと前に付けると，返り値がconstである場合と区別がつかないから．ああ，面倒くさい．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-4604170100574886410?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/4604170100574886410/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=4604170100574886410' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4604170100574886410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/4604170100574886410'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/const-member-function.html' title='const member function'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-9084121883151708729</id><published>2009-01-29T06:15:00.004+09:00</published><updated>2009-01-29T06:22:02.207+09:00</updated><title type='text'>AtomフィードのURL</title><content type='html'>ブラウザのアドレスバーの右側にでるRSSフィードマークを出す方法．
&lt;pre&gt;
&amp;lt;link rel="alternate" type="application/atom+xml" title="Atom" href="atom.URL" /&amp;gt;
&lt;/pre&gt;
もしくは
&lt;pre&gt;
&amp;lt;link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="URL" /&amp;gt;
&lt;/pre&gt;
head内に書くのがポイント．同じサーバ上にある必要すらない．リダイレクトしようかと思っていたのだけどその必要も無かった．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-9084121883151708729?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/9084121883151708729/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=9084121883151708729' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/9084121883151708729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/9084121883151708729'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/atomurl.html' title='AtomフィードのURL'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3328884429609691836</id><published>2009-01-28T22:46:00.004+09:00</published><updated>2009-01-28T22:56:01.299+09:00</updated><title type='text'>boost regex でURIパーズ</title><content type='html'>boost のregular expression library を使って URIをパーズ．&lt;a href="http://www.s34.co.jp/cpptechdoc/article/regexpp/"&gt;こちらのページ&lt;/a&gt;を参考に．ただちょっと古いようでreg_expression -&gt; basic_regexと読み替えてやる必要がある．
&lt;p&gt;
しかし，テンプレートを使ったC++のライブラリの出すエラーメッセージは解読不能だ．1カ所ちょっと使うクラスを間違えただけで，みっしり数百行もエラーが出るのはどうなんだろう? 気の弱いプログラマなら卒倒しかねないぞ．しかもエラーメッセージを見てもまったくエラーの原因がわからないし．やっぱりtemplateは好きになれないなあ．まあ理解不能なメッセージという意味では，latexも似たようなものだが．
&lt;pre&gt;
#include &lt;string&gt;
#include &lt;boost/regex.hpp&gt;
/**
 *  assumed URI
 *  scheme://[user@][host][:port]/[path][?query][#fragment]
 */
class URI {
public:
  std::string scheme;
  std::string authority;
  std::string user;
  std::string host;
  int         port;
  std::string path;
  std::string query;
  std::string fragment;

  URI(std::string s) {
    static const char * pattern = "\\A([^:]+)://"   // scheme
      "((?:([^:/@]*)@)?([^:@/]*)(?::(\\d+))?)/"   // authority = [user-info@]host[:port]
      "([^\\?]*)(?:\\?([^#]*))?(?:#(.*))?\\z";    // body = [path?query#fragment]

    static const boost::regex e(pattern);
    boost::smatch match;
    regex_match(s, match, e);
    this-&gt;scheme    = match[1].str();
    this-&gt;authority = match[2].str();
    this-&gt;user      = match[3].str();
    this-&gt;host      = match[4].str();
    this-&gt;port      = atoi(match[5].str().c_str());
    this-&gt;path      = match[6].str();
    this-&gt;query     = match[7].str();
    this-&gt;fragment  = match[8].str();
  }
};
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3328884429609691836?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3328884429609691836/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3328884429609691836' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3328884429609691836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3328884429609691836'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/boost-regex-uri.html' title='boost regex でURIパーズ'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-8968651680456084564</id><published>2009-01-28T08:33:00.002+09:00</published><updated>2009-01-28T08:45:31.741+09:00</updated><title type='text'>C言語 の配列リテラル</title><content type='html'>配列を直接初期化してCのプログラム中に書くことができる．こんな感じ．
&lt;pre&gt;
int A[] = {1, 2, 3};
&lt;/pre&gt;
昔は，グローバル変数か，main関数の中でしか初期化つきで宣言できない，とかいう実装が透けて見えるような制約があったように記憶しているのだけど，gccの4だとごく普通に関数の中でも宣言できるようだ．
&lt;p&gt;
で，この書き方は変数の初期化にのみ使えて，例えば関数呼び出しの引数に直接書くことはできない．
&lt;pre&gt;
void foo(int x[]){}
...
foo({1, 2, 3}); // syntax error

int A[] = {1, 2, 3};
foo(A);         // OK
&lt;/pre&gt;
以前から面倒な仕様だと思っていたのだが，調べてみたらいつの間にか直接書く方法ができていた．
&lt;pre&gt;
void foo(int x[]){}

foo((int []){1, 2, 3});
&lt;/pre&gt;
見通しは悪いけど，一度変数を宣言するよりはだいぶまし．
&lt;p&gt;
これは手元のgcc 4.xで試して動いたというだけなので，どの範囲のコンパイラでサポートされているのかは不明．C90あたりで入っていたんじゃないかと思うので，ほとんどのコンパイラで使えそうだけど．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-8968651680456084564?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/8968651680456084564/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=8968651680456084564' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8968651680456084564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/8968651680456084564'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/c.html' title='C言語 の配列リテラル'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-1745837228788073464</id><published>2009-01-25T05:48:00.006+09:00</published><updated>2009-01-25T06:07:20.989+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>Mac OSとlinuxの EOF エラーハンドルの違い．</title><content type='html'>lessのように追記されるファイルから次々に読み込む場合，一度EOFが帰ってきたものに対してスリープして，再度読み込みを行ったりする．が，このときの挙動がlinuxとMac OSで違っていてはまった．


&lt;pre&gt;
  while (1) {
    char * p = fgets(buf, 1000, fp);
    if (p == NULL) {
      sleep(1);
    } else {
      printf("%s\n", p);
    }
  }
&lt;/pre&gt;
このずさんなコードはlinuxやSolarisだとちゃんと動いて，ファイルに追記されると追従することができるのだが，Mac OSでは動かない．ファイルに追記しても，ずっとfgetsがNULLを返す．
&lt;p&gt;
ストリームの中にはすでにEOFに当ったという情報が保持されているのだけど，これを明示的にクリアしてやらないと，いけない，ということのようだ．もっとお行儀のいいコードはこんな感じ．そもそもNULLで返ってきたときに，EOFなのかエラーなのかをferrorでちゃんと見てやって，EOFのときだけ，clearerr()でクリアしてやる．こうするとMac OS でもちゃんと動く．
&lt;pre&gt;
  while (true) {
    char * p = fgets(buf, 1000, fp);
    if (p == NULL) {
      if (ferror(fp)){
        printf("error, abort\n");
        break;
      }
      clearerr(fp);
      sleep(1);
    } else {
      printf("%s\n", p);
    }
  }
&lt;/pre&gt;
この違いは，きっとSys V系(Linux, Solaris)とBSD系(Mac OS X)に由来する違いなんだろうなあ．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-1745837228788073464?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/1745837228788073464/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=1745837228788073464' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1745837228788073464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/1745837228788073464'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/mac-oslinux-eof.html' title='Mac OSとlinuxの EOF エラーハンドルの違い．'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3213781282356576784</id><published>2009-01-24T23:47:00.006+09:00</published><updated>2009-01-25T06:07:42.872+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><title type='text'>Mac OS ar の COMMAND_MODE</title><content type='html'>通常の端末からはビルドできるC++のシステムが，eclipseのCDTからだとビルドできないので調べてみた．いちどarで.aを作っておいて，さらにldでリンクするようになっているのだけど，ldのところでこんなエラーがでてこける．
&lt;pre&gt;
ld: in XXXXX.a, archive has no table of contents
&lt;/pre&gt;
arのほうはこんなふうにかかれている．
&lt;pre&gt;
ar aruv xxx.o xxx.o ..
&lt;/pre&gt;
arのバイナリは同じものが起動されていることはwhich等で確認できる．

&lt;h4&gt;とりあえずの解決&lt;/h4&gt;
tableがarchiveに入っていないというエラーなので，強制的にtableを作るオプション's'を与えると，とりあえずビルドできるようになる．
&lt;pre&gt;
ar asruv xxx.o xxx.o ..
&lt;/pre&gt;
しかし's'がデフォルトで， tableを作らないようにするためには'S'で明示しなければならないはず．環境変数でも見ているのかとおもって，マニュアルを見ても何も書かれていない．

&lt;h4&gt;もう少し調べてみる&lt;/h4&gt;
バイナリをstringsで見てみる．最後に怪しいものが．．．
&lt;pre&gt;
$ stings `which ar`
...
COMMAND_MODE
legacy
&lt;/pre&gt;

eclipseの中で確認してみるとたしかにこのCOMMAND_MODE環境変数がlegacyに設定されている．端末ではunix2003になっている．
&lt;pre&gt;
$ echo $COMMAND_MODE
unix2003
&lt;/pre&gt;
&lt;pre&gt;
$ COMMAND_MODE=legacy make
&lt;/pre&gt;
とやってlegacyを指定してビルドするとeclipse内と同じように失敗する．これが原因であることはほぼ確定．つまり，legacyが指定されているとarのデフォルトの挙動が変わるのだろう．問題はなんでこんなものが指定されているのか，だ．
&lt;p&gt;
ググってみたら一番上に&lt;a href=http://www.nabble.com/ar-misbehaves-in-bundle-command-td20832360.html&gt;こんなページ&lt;/a&gt;を見つけた．推測でしかないのだが，eclipseはMac OS 10.4でも動くようにビルドされているので，launchd が起動時に識別して付けているのではないか，という話．うーん．．．
&lt;p&gt;
ちなみに，arのstringsでunix2003が引っかからないことからも予想できるように'legacy'以外なら何が指定されていてもちゃんとテーブルが生成される．
&lt;p&gt;
どう対処するのがただしいのか分からないのだけど s オプションは，他の環境でも付いていて害があるものではないので，かならずこれを付けるという方向で．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3213781282356576784?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3213781282356576784/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3213781282356576784' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3213781282356576784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3213781282356576784'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/mac-os-ar-commandmode.html' title='Mac OS ar の COMMAND_MODE'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-6395498343896215231</id><published>2009-01-23T04:30:00.007+09:00</published><updated>2009-01-23T23:07:55.889+09:00</updated><title type='text'>Doxygen</title><content type='html'>javadocのようなドキュメント作成ツール．&lt;a href="http://www.stack.nl/~dimitri/doxygen/"&gt;
ホームページ&lt;/a&gt;．サポート言語は
&lt;pre&gt;
C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), 
Fortran, VHDL, PHP, C#, and to some extent D
&lt;/pre&gt;
だそうだ．すごいね．手元のubuntuにはなぜだか入っていた．入れた記憶はないのだが．
出力フォーマットもゆたかで，HTML，latex のほかに，RTF (MS-Word), PostScript, hyperlinked PDF, compressed HTML, Unix man pageをサポート．

&lt;h4&gt;使い方&lt;/h4&gt;
&lt;pre&gt;
doxygen -f conf
&lt;/pre&gt;
とやると巨大なコンフィギュレーションファイルができる．デフォルトではhtmlとlatexができるようになっている．当面latexはいらないので，
&lt;pre&gt;
GENERATE_LATEX  = yes
&lt;/pre&gt;
をno に変更．PROJECT_NAME  にプロジェクトの名前を，INPUTに入力ファイルのあるディレクトリを指定．何も指定しないと，カレントディレクトリのみになる．EXTRACT_ALLをyesにしとくと，コメントの無いクラスもドキュメントを作ってくれるので最初はyesにしたほうがいいかもしれない．
&lt;p&gt;
で，
&lt;pre&gt;
doxygen conf
&lt;/pre&gt;
でOK

&lt;h4&gt;ドキュメントの書き方&lt;/h4&gt;
C++の場合，クラスやメソッドの前にスラッシュ3つで始まるコメントとして書く．ほかにもJavaDocスタイルとか，いろいろな書き方をサポートしているようだ．

&lt;pre&gt;
/// this is a class
class a {
public:
  /// this ia a method
  void b();
};
&lt;/pre&gt;
これでOK. 便利．
&lt;p/&gt;
Pythonの場合は，Python 標準のドキュメントの書き方でOKらしい．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-6395498343896215231?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/6395498343896215231/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=6395498343896215231' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6395498343896215231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/6395498343896215231'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/doxygen.html' title='Doxygen'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-285130426199569266</id><published>2009-01-21T21:11:00.002+09:00</published><updated>2009-01-21T21:14:28.341+09:00</updated><title type='text'>sudo とfile descriptor</title><content type='html'>親子プロセス間で通信するためにpipeを使うのはよくある方法だが，sudo を使うとこれがうまく行かない．おそらくsudoが対象コマンドにexecする前に3番以上のディスクリプタを全部クローズしているんだろう．0, 1，2は閉じていないようなのでこれらを使うしかなさそうだ．
&lt;p&gt;
面倒．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-285130426199569266?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/285130426199569266/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=285130426199569266' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/285130426199569266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/285130426199569266'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/sudo-file-descriptor.html' title='sudo とfile descriptor'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-2228980248203222860</id><published>2009-01-21T06:26:00.002+09:00</published><updated>2009-01-21T06:30:47.331+09:00</updated><title type='text'>CentOS5 python 2.6</title><content type='html'>with statement が使いたいということで，2.6を入れてみる．

手順は&lt;a href="http://d.hatena.ne.jp/tohae/20081009/1223568809"&gt;ここ&lt;/a&gt;に書かれている通り．

2.6はともかくそろそろ2.5は標準のレポジトリに入っていてもいいとおもうのだけど．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-2228980248203222860?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/2228980248203222860/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=2228980248203222860' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2228980248203222860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/2228980248203222860'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/centos5-python-26.html' title='CentOS5 python 2.6'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-7409463673656405034</id><published>2009-01-07T16:25:00.002+09:00</published><updated>2009-01-07T16:34:01.991+09:00</updated><title type='text'>Codesynthesis XSD</title><content type='html'>&lt;a href="http://codesynthesis.com/products/xsd/"&gt;Codesynthesis XSD&lt;/a&gt;．
いわゆるxsd スキーマからC++のオブジェクトを生成することができるシステム．
JavaのJaxbに相当するものだと思われる．面白いのはオブジェクトツリーを作る
コードの他に，SAX的な(でももっと簡単に使える)ストリームパーザを生成するコードも
生成するらしいこと．
&lt;p&gt;
&lt;h4&gt;ライセンス&lt;/h4&gt;
以下は，私の解釈．
&lt;p&gt;
GPL．生成されたコードもGPL．なのだが，例外条項がもうけられていて，
XSDの機能に対して十分な付加機能がある場合に限っては，
XSDおよび生成されたコードを含んだコードを
他のオープンソースライセンスで公開することが可能になっている．
さらに，それをその後proprietaryな製品に転用することも可能．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-7409463673656405034?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/7409463673656405034/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=7409463673656405034' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7409463673656405034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/7409463673656405034'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/codesynthesis-xsd.html' title='Codesynthesis XSD'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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-4315385927802141312.post-3722689928204839283</id><published>2009-01-07T06:51:00.001+09:00</published><updated>2009-01-07T06:52:45.517+09:00</updated><title type='text'>スタイルファイルを整備</title><content type='html'>改行が br に変換される設定だったのを直して，スタイルファイルをいじった．その結果以前書いたものがめちゃめちゃになったので，手でタグを入れるという地味な作業．
&lt;p&gt;
随分読みやすくなった．書く気がおきるというもの．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4315385927802141312-3722689928204839283?l=hidemon-memo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hidemon-memo.blogspot.com/feeds/3722689928204839283/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4315385927802141312&amp;postID=3722689928204839283' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3722689928204839283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4315385927802141312/posts/default/3722689928204839283'/><link rel='alternate' type='text/html' href='http://hidemon-memo.blogspot.com/2009/01/blog-post.html' title='スタイルファイルを整備'/><author><name>hidemon</name><uri>http://www.blogger.com/profile/07714249147854494033</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>
