2010年7月31日土曜日

Kindle DXg のバッテリー持ちがすごい




丸5日間無充電で、一日平均3時間くらい使ってて、まだ6割くらいバッテリーが残ってる。
3GはほとんどOFF。


2010年7月26日月曜日

Hadoop (5) 参考IBM「Hadoop 入門」




アーキテクチャや処理内容が、図入り&サンプル入りですごいわかりやすい。

http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-0041751B

目次
 Hadoop とは
 Hadoop のアーキテクチャー
 Hadoop の導入と構成
 サンプルジョブによる動作確認
 スクリプトによるジョブの作成
 Pig の利用
 HBase の導入と構成
 参考資料


Kindle Store で買った商品をキャンセルする。




Kindle Storeで買ってみた毎日新聞英語版の購読を無料期間が終わる前にキャンセルしようとしたんだけど、どうもKindleからはキャンセルできないっぽい。
検索してみるとWebからキャンセルする必要があるみたい。

当たり前だけど、.comの方からアクセスする。
http://www.amazon.com/

Kindleを持ってるってことは、米Amazonのアカウントを持ってるって事だと思うから、それで普通にログイン。そっからYour Accountへ



次のページの真ん中くらいに、Digital Content → Manage Your Kindle ってのを選ぶ。

毎日のSubscriptionはここに表示されてたので、「Cancel」を選んだら消えた。
普通の本はキャンセルできるのかな?


2010年7月25日日曜日

Hadoop (4) Pigによる対話的操作




Hadoopの標準インターフェース hadoop xx xxxx ってのは対話式じゃないので、ちょっと使いにくい。
PigはHadoopのサブプロジェクトで、Hadoopを対話的に操作することが可能なインターフェースと、 MapReduceを効率的に行うための専用言語環境を提供してくれる。
Yahoo!なんかでも使われているっぽい。
Pigの素晴らしいところは、LISPのREPLのように、書いたコードをその場で実行しながら確かめられること。



Hadoop (3) 完全分散モード




次に完全分散モードでの実行を試みる。


前回の続き
Hadoop (1) スタンドアロン
Hadoop (2) 疑似分散モード


関連項目
Solaris10 zone 設定
Solaris10 zone で止めておいた方がよいサービス
ssh で認証無しログインをする方法(公開鍵方式)

参考ページ
Hadoopセットアップ・・・このサイトの設定ファイルテンプレートは非常に有用。



2010年7月24日土曜日

Solaris10 zone で止めておいた方がよいサービス




Solarisのゾーンは便利。特にアプリ的なテストをしたい場合には。
普通の仮想化よりも軽いのがいい。

Zoneを作ったら、以下のサービスを止めておくと、ますます軽くなるのでよりたくさんの仮想環境が実行できるようになる。



# svcadm disable svc:/system/webconsole:console
# svcadm disable svc:/application/cde-printinfo:default
# svcadm disable svc:/application/graphical-login/cde-login:default
# svcadm disable svc:/application/management/snmpdx:default


ssh で認証無しログインをする方法(公開鍵方式)




Hadoopやクラスタを組む場合、必須になるのでどういった流れで設定するかメモっておく。



alternatives によるコマンドの切り替え




例えば、javaにはOpenJavaやSun Javaといった同じ機能を提供するが、提供元が異なるものがある。
両者を異なる場所にインストールして、パスの順序で制御してもいいんだけど、
javaみたいにCLASSPATH等のパス以外の環境変数がかかわってくるケースだと非常に煩わしい。
他にもsendmail と Postfixなんてもの代表的な切換えが面倒なソフトだ。

そのため、RedHat系にalternativesというコマンドがインストールされており、こういったケースに対応できるようになっている。



Hadoop (2) 疑似分散モード




前回の続き
Hadoop (1) スタンドアロン

設定ファイルをいじくる。



2010年7月23日金曜日

Solaris10 zone 設定




VirtualBox上で4台も動かすと遅いので、HadoopをSolaris10のzoneで動かしてみた。



Hadoop (1) スタンドアロン




前回構築したPXEネットワークインストール環境で4台のCentOSを立ち上げた。
バージョンは全て共通でCentOS5.5


ノード1:hdp01(GNOMEデスクトップ)
ノード2:hdp02(Server)
ノード3:hdp03(Server)
ノード4:hdp04(Server)
()内はインストール時に選択したインストールグループ

*全てSolaris10上のVirtualBox上に構築された仮想環境です。




2010年7月22日木曜日

Kindleの標準辞書を英和辞典に




PDFだとあんまり関係ないですが、Kindleはちゃんとした電子書籍形式のファイルでは単語にカーソルを合わせると英英辞典で画面下に意味がポップアップされます。
僕は英語がそこまで得意ではないので、英語で意味を出してくれるより、わからない単語の意味を日本語で教えてくれる方がうれしいです。
ってことで、標準辞書を英和辞典に変更する方法。

参考にしたページ
yoshi's blog - Kindleで英和辞典を使う




Kindle DX 用レザー ケース縦開きを使ってみた




KindleってiPadみたいに表面が、カチカチがじゃないから、かばんに他のものと一緒に入れるのはちょっと不安。
って事で、このケースを買ってみた。ほんとは横開きが欲しかったんだけど、在庫切れだった。






2010年7月21日水曜日

PXE ブートによるネットワークインストール(CentOS 5.5)




Kindleばっかりいじってないで、ちゃんとストレージ関連の勉強もせねば。ということで、hadoop

Hadoopのためには複数ノードが必要になるので、今後のためにもネットワークインストール環境を構築しておく。

ホストはCentOS 5.5(192.168.1.71)
インストール対象はCentOS 5.5(インストールOSはなんでも良い)



RedHat ユーザ一括登録時のパスワード設定




一括でユーザ登録しつつ、自動でパスワードを設定する場合に使う。
echo 'password' | passwd --stdin username


結構便利。


2010年7月20日火曜日

Kindle DX Graphite (2.5.5) 日本語ハック 成功




以下でぐだぐだ言ってたけど、思い切ってフォント上書きしたら、それだけでできたw

Kindle DX Graphite 日本語ハック スクリプトを読む
Kindle DX Graphite, 3G Works Globally (2.5.5)を日本語ハック(未遂)



Kindle DX Graphite 日本語ハック スクリプトを読む





*Kindle DX Graphite 2.5.5の日本語のハックの方法はこちら
 →Kindle DX Graphite (2.5.5) 日本語ハック 成功


勢い余って購入済みの英辞郎をそのままにしておくのも悔しいので、

http://wiki.mobileread.com/wiki/Kindle_Font_Hack_for_all_2.5.x_Kindles

のフォントハックのスクリプトをちゃんと読んでみる。

kindle-2.5-fonts-3.5.N.zip を解凍すると、
kindle-2.5-fonts-3.5.N/src にソースが入っており、付属のperlスクリプトでインストールバイナリ化できる。

install.sh
まず最初に呼ばれるのは、 kindle-2.5-fonts-3.5.N/src/install.sh っぽい。
この中では同一階層の linkfonts-init を、/etc/init.d へコピーし、
それぞれのランレベルの起動スクリプトにリンクしているだけ。

この起動スクリプトが配置されることで、Kindle起動時に毎回 linkfonts-init が呼び出されることになる。

linkfonts-init
linkfonts-initの中では、Kindle起動時に、


LINKFONTS_EMERGENCY="/mnt/us/linkfonts/bin/emergency.sh"

ファイルが存在すれば実行する(emergency.sh は 解凍した中には入っていないのでどんなものか不明
後、 /mnt/us/linkfonts/ ってのは、USBでルートにコピーしたフォントフォルダの事(たぶん

次に、
LINKFONTS_ENABLE="/mnt/us/linkfonts/auto"
LINKFONTS_SCRIPT="/mnt/us/linkfonts/bin/linkfonts"

が存在すれば、"/mnt/us/linkfonts/bin/linkfonts" を実行する。

linkfonts
この実行される、linkfonts なるスクリプトの動作は以下、

まず、linkfonts ディレクトリに空のbackup というファイルがあると、既存のファイルをバックアップする。


    cp -f /usr/java/lib/font.properties ${LINKFONTS_BASEDIR}/backups/font.properties
    cp -f /opt/amazon/ebook/config/netfront.ini ${LINKFONTS_BASEDIR}/backups/netfront.ini
    cp -f /usr/java/lib/fonts/* ${LINKFONTS_BASEDIR}/backups/
    cp -f /etc/prettyversion.txt ${LINKFONTS_BASEDIR}/backups/prettyversion.txt

この空ファイルは解凍したファイルに入っているので、初回再起動時に必ず実行される。

次に、"/mnt/us/linkfonts/fonts" の中を調べて、空だったら終了。
さらに、フォルダの内部を詳しく調べて、
Serif_Regular.ttf
Serif_Bold.ttf
Serif_Italic.ttf
Serif_BoldItalic.ttf
Sans_Regular.ttf
Sans_Bold.ttf
Sans_Italic.ttf
Sans_BoldItalic.ttf
Mono_Regular.ttf
Mono_Bold.ttf
Mono_Italic.ttf

Mono_BoldItalic.ttf
Kindle_Symbol.ttf
Kindle_MonospacedSymbol.ttf

上記の一個でも欠けていれば終了する。

次がよくわからんけど、watchdogを再起動しているっぽい。

そして最後に、

        mount --bind ${LINKFONTS_BASEDIR}/bin/font.properties /usr/java/lib/font.properties
        mount --bind ${LINKFONTS_BASEDIR}/bin/netfront.ini /opt/amazon/ebook/config/netfront.ini
        mount --bind ${LINKFONTS_BASEDIR}/fonts /usr/java/lib/fonts

で、配置したフォントと設定ファイルを、現行のモノに上書きマウントしている。

なので、 font.properties netfront.ini に適切な設定を書いて、
fonts に フォントファイルを配置してやればいいみたいだ。

と、ここまで来て思ったのが、結局フォントファイルを用意しないと行けないという事とと、呪文みたいなfont.propertiesを読まない行けないという事だった。。。
(Xのフォント設定すらまともにできないのに・・・javaのフォント設定とか何の罰ゲームw)


unlinkfonts
Kindleを再起動するときの、終了処理にfontlink-initから、unlinkkfontsが呼ばれる。
やってることは、linkfontsの逆。


Kindle DX Graphite, 3G Works Globally (2.5.5)を日本語ハック(未遂)





*Kindle DX Graphite 2.5.5の日本語のハックの方法はこちら
 →Kindle DX Graphite (2.5.5) 日本語ハック 成功


この 黒 Kindle DX は海外では「Kindle DX Graphite」や「DXg」と呼ばれているようだ。


Kindleを使ってるとやっぱり日本語が表示させたくなる。というわけで、公開されているフォントハックを試してみる。
(こんなことしなくても日本語表示できるのがうれしいけど)

日本語で公開されている情報(2.5.2や2.5.3)の方法ではうまくいかなかったので、ちょっと苦戦した(というか未だにできてない
どうも黒Kindleは標準で2.5.5のファームがインストールされているようで、
以前の2.5.x系列とは違い、USBでつなぐと表示されるsystemディレクトリの内部が参照できないようになっているっぽい。
たぶんinsltall, unistallのスクリプトを通してのみ、システム側にアクセスできるような仕組みになっているようだ。
そのため、フォントの入れ替えには面倒な手順を踏まないといけないようだ。


勘違いかも。前のバージョンを持ってないので正確にはわかりません。でも面倒なことに変わりなし。


*** この手順は失敗したので参考までにとどめてください ****

以下の手順で実施する。

1. kindleのjailbreak
以下サイトからファイルを入手する。

kindle-2.5-jailbreak-0.1.N.zip

このファイルを解凍すると、
update_jailbreak_dxg_install.bin

というファイルができるので、USB経由でKindleのルートディレクトリへコピーする。
USBを外し、HOME → MENU → SETTING → MENU → Update Your Kindle を選択する。
(左下にU006と表示され、アップデート失敗とでるが、実は成功している模様)

2. フォントハック
次に同サイトから、


kindle-2.5-fonts-3.5.N.zip


を入手し、

update_fonts_3.5.N_dxg_uninstall.bin ファイルと、
src配下にある、 linkfonts フォルダを Kindle のルートディレクトリにコピーする。


そして再度、USBを外し、HOME → MENU → SETTING → MENU → Update Your Kindle を選択する。


これで、再起動してくると標準のフォントが入れ替わっている事が確認できると思う。


*ここまでやっても、HOME -> MENU -> Setting のところのバージョン表記に変化なし。


インストールのソーススクリプトを追う限り、この状態で、fontlink/font 配下のフォントを入れ替え、Kindleを再起動すれば、フォントを変更できるっぽいが、そもそも日本語フォントをどうやって準備すればいいかわからない。イタリックとかどうすんのw
もしかすると、font.properties ファイルも変更しないといけないかも??(このファイル意味わかんねー


フォントの指定をミスると、旧バージョンでは文鎮化するとの報告もある。コンソールでもつなげないので、余り無茶はせずここでいったん止めておくことにする。


フォントを自由に入れ替えられる方法がわかったら、Osakaフォントに変えたい。
http://osakattf.hp.infoseek.co.jp/


2010年7月19日月曜日

SBCL で コマンドライン引数を取得する方法




前回の、Common Lisp をバッチ的に動かす方法に引き続き、
プログラムとして動作させるには引数を処理できる必要がある。

引数は *posix-argv* に格納されているようだ。

-------------------------------------------

[root@centos55 src]# sbcl
This is SBCL 1.0.40, an implementation of ANSI Common Lisp.
More information about SBCL is available at .

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* *posix-argv*


("sbcl")
* (quit)

[root@centos55 src]# sbcl a b c
This is SBCL 1.0.40, an implementation of ANSI Common Lisp.
More information about SBCL is available at .

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* *posix-argv*


("sbcl" "a" "b" "c")
*

* (quit)
-------------------------------------------
こんな感じで引数をリストとして取得できるようだ。


次に、コマンドラインからclを実行した場合、

vi test1.lisp
------------------
(format t "~{~a~%~}" *posix-argv*)
------------------


[root@centos55 src]# sbcl --script test1.lisp
sbcl

おや?--script と test1.lisp というのを引数として認識していないようだ。


[root@centos55 src]# sbcl --script test1.lisp a b c d
sbcl
a
b
c
d


ちょっと動作に癖があるようだ。使用時には注意。


電子書籍リーダーとしての Kindle DX と iPad 比較




買ってから3日目で、すっかりKindleにはまってしまった。

iPadもKindleも電子書籍を読む目的で購入しました。
iPadはGoodReadを使っています。
現段階では、両者とも純正の電子書籍は日本語の本がほとんどないので、おのずとPDF公開されている文書や、自炊したPDFを読むというのが目的になります。

結論から言うと、iPad + GoodRead は電子書籍をじっくり読むには、僕には厳しかったです。
手に持って使う iPadは普通のPCモニタよりも眼への距離が近くなりますので、画面の明るさを落としても、じっくり本を読むと眩しすぎて目が疲れてしまうんです。
なので、今では本を読むのにはほとんど使ってません。
(代わりに、室内で運動しながらのRSSチェックしたりするのに使ってます)

Kindleは汎用モバイル端末のiPadに比べると機能的にかなり劣ります。内蔵ストレージの容量、処理速度、操作インターフェース・・・等々、劣ってる点の方がはるかに多いです。かつ、PDF Viewとして比較した際も、GoodReadは高機能で使いやすく、Kindleのファイル管理やPDF表示機能よりも圧倒的に優れています。
が、「電子ペーパーの可読性」と「片手で持った時の重量」という点でKindleの方が優れており、この2点のみによって読書デバイスとして考えた時は、Kindleに軍配が上がります。

1.電子ペーパーの可読性
白黒しか表示できない。再描画が遅い。等の問題もありますが、バックライトの無い電子ペーパーは紙と変わりません。時の細かい本を読む時なんかは如実に差が感じられます。

2.片手で持った時重量
iPadやKindleのようなデバイスは片手で縁を持った時、テコの原理で重さ以上の重量感が手に感じられます。iPadとKindleの重量差は200gと僅かな差なんですが、この差が何倍にも感じられてしまいます(僕は男でそこそこ筋力があるので、女性にとっては両方とも重いかもしれませんが。

おまけ.バッテリーの持ち
買ってから充電して以来、3日間一度も充電していませんが、まだバッテリーは6割以上残っています(かなり使ってるのにもかかわらず


写真で見るiPadとKindle DX

大きさはキーボードのあるKindle DXの方がやや大きい。


同じ文書を映したところ。蛍光灯下で移しているので、やや写真は暗いのだけど、バックライトで発行しているiPadの方が明るいのが分かる。



同じく文書表示


iPad拡大

Kindle DX拡大

拡大した画面を見比べると、iPad側は「ディスプレイに映っている」というのが分かるが、Kindle側は紙を写真に撮ったのと区別がつかない。

太陽光下でみた、Kindleのモニタ。
かなり細かい技術書を表示しているが、問題なく読めるのが確認できると思う(かすれているのはスキャンミス)
(表示している本はこちら 「実践Common Lisp」)



しばらくは、
Kindle ・・・家・外の読書専用
iPad ・・・家で運動しながらのネット用
PC ・・・家でのいろいろ作業用
iPhone ・・・外での電話・ネット用

って感じで使う予定。

*基本的にKindle絶賛してるけど、あくまで静的なコンテンツである「本」を読む場合に限っての事。その他の用途にはKindleは全く使えません。当然ながらWebを見たり、メールを見たりといった、汎用目的にはiPadの方が良いです。

しかし恐ろしいのが、KindleのGlobal 3G機能。貧弱とは言えブラウザ機能がある端末に、全世界無料で使い放題の3Gを提供するとは。。。
次期Kindleで、電子ペーパー描画速度の改善と、処理速度がアップすると使い勝手が格段に向上しそう。
これからに期待。

いいことばっかり書いてるけど、Kindleの不満点も書いておく。
1.日本語非対応(入力どころか、表示すらできない。当然日本語検索もできない。
2.ストレージ容量が小さすぎる(これは自炊電子書籍の容量がでかいってのが大きいな要因
3.再描画が遅い(1世代前の電子ペーパーなのでしょうがない、次期モデルはもっと速くなるはず
4.PDFの拡大・縮小がショボイ。
・・・ちなみにこれらの不満はiPadには無い。

しっかし、電子書籍自炊のなんたる不毛な作業なことか。
出版社でデジタルデータ化されたものを、印刷業者がアナログに変換し、個人で再度デジタルに変換するとか馬鹿らしすぎる。
オライリーを見習って、最初っからデジタルで提供してほしいものだ。



仕事用小物




最近使ってる小物

表紙にポケットの付いたノートカバー。A5用。
ポケットにポストイットや、定規、後述するポケット付箋を入れておける。便利。
後ろ側には名刺入れあり。
ノートは入れ替え可能。




ポケット付箋
打ち合わせで貰った資料を、折りたたんで、メモを取ったノートのページと同じ場所にくっつけられる。


ジョッター。どこでもメモツール。IDカードと一緒にぶら下げてる。
ちょっと呼ばれた時にいちいちノートを持っていかなくてもよいのがうれしい。
KNOX-ノックス-【ステュワード】 ジョッター
KNOX-ノックス-【ステュワード】 ジョッター
価格:5,250円(税込、送料別)


小型万年筆。ジョッターとの相性○


Common Lispのプログラム実行について




実用Common Lispを読みながら勉強中なのですが、ここで一つの疑問が。
本書ではプログラムは全てREPLの中で実行させていますが、
実際にプログラムが完成して独自にバッチ等で動かそうと思ったらどうすればいいんだろう?

cなら、cc でコンパイルして出来上がった実行環境を ./a.out 等で実行できるし、
javaなら javac でバイトコンパイルしたものを jre等で実行できる。

この操作をCommon Lispならどうやるのだろう?という事で調べてみた。
*間違ってるかもしれないので注意。

SBCLではスクリプト実行をサポートしているようなので、

1. 実行可能なスクリプトとして
# vi test.cl
--------------------------
#!/usr/local/bin/sbcl --script

(format t "hello world~%")
--------------------------

# chmod +x test.cl
# ./test.cl
→ hello world


2.ソース、またはfaslとして読み込ませる
# vi test.cl

--------------------------
(format t "hello world~%")
--------------------------

# sbcl
* (compile-file "test.cl")

‐ # sbcl --script test.cl
→ hello world

- # sbcl --script test.fasl
→ hello world

とりあえず、これで作ったプログラムを単独で実行させられそう。

clispとかどうやるんだろう?



RedHat のiSCSI でLUNサイズを変更する手順(未確認)




NFSと違って、iSCSIではストレージのLUN上に直接ファイルシステムを構築するため、
動的なサイズ変更が単純ではない。

調べてみたところ、以下の条件で動的にサイズ変更できるようだ。
(未確認、ZFSのiSCSIはサイズを変更すると、一度セッションが切れるようで、再接続したときに新しいサイズを認識してしまうため)

前提条件
・対象のLUNの全体がLVMで管理されていること(パーティションを使わない)
- 必須ではないが、ほぼ必須に近い(パーティションで区切ってしまうと、実質的に動的拡張は無理
- ほんとはできなくはないけど、非常にリスキー。

手順
1. ストレージのLUNサイズを拡張する

2. iSCSIのセッションを再スキャンする
iscsiadm -m session -R

3. 認識したLUNを pvresize で拡張する。


動的にサイズ変更できるストレージがあれば試してみたい。

*でも実際、こんなリスクの高い作業せずに、新しい領域として認識させて、LVMで結合した方が安全だし手っ取り早い。
*本番でこんな運用はしない方がよい。


2010年7月18日日曜日

ZFS sharenfs 設定方法




zfs の sharenfs オプションを使うと、簡単にNFS共有することが可能。
でも、指定の方法がmanにも詳しく書いてないので、結局dfstabに頼ることに。。。

せっかく、簡単に設定できるオプションが用意されているのなら使わない手はないので、方法を調べて設定してみた。

こんな感じで指定する。

zfs set sharenfs='rw=centos55,root=centos55' spool/cifs01


root@sol10-u24 23:04:16>zfs get sharenfs
spool/cifs01                                sharenfs  rw=centos55,root=centos55  local


root@sol10-u24 23:13:45>share
-               /spool/cifs01   sec=sys,rw=centos55,root=centos55   ""
-               /spool/home   rw=sol10-u24

指定できるオプションは share_nfs(1M) を参照。


Emacs バッファ操作




バッファを切換えるときに以下を入れておくと便利に切り替えができる。

====================================

(iswitchb-mode 1)                    ;; バッファ切換えをインクリメンタルサーチ風に
(add-hook 'iswitchb-define-mode-map-hook
          '(lambda ()
             (define-key iswitchb-mode-map "\C-n" 'iswitchb-next-match)
             (define-key iswitchb-mode-map "\C-p" 'iswitchb-prev-match)
             (define-key iswitchb-mode-map "\C-f" 'iswitchb-next-match)
             (define-key iswitchb-mode-map "\C-b" 'iswitchb-prev-match)))

(global-set-key "\C-x\C-b" 'buffer-menu)
====================================

通常のC-c C-b は、別のウインドを開いて、バッファ一覧を表示してくれるけど、
カーソルは元のバッファに残るため、いちいちC-x o しないといけない。
このbuffer-menu は 今のバッファにリストを表示してくれるので、ウインド移動の手間が省ける。

ちょっとした点だけど、使う機会が多い機能なので、便利にしておくにこしたことは無い。


Emacs の自動バックアップ




ここを参考にそのまま使ってる。


Emacsの保存関係の設定

======================================
(setq make-backup-files t)           ;; バックアップファイルをまとめる
(setq backup-directory-alist
  (cons (cons "\\.*$" (expand-file-name "~/.emacs.d/backup"))
    backup-directory-alist))
(setq version-control t)             ;; 複数のバックアップ世代を管理
(setq kept-new-versions 5)           ;; 新しいものをいくつ残すか
(setq kept-old-versions 5)           ;; 古いものをいくつ残すか
(setq delete-old-versions t)         ;; 確認せずに古いものを消す。
(setq vc-make-backup-files t)        ;; バージョン管理下のファイルもバックアップを作る。
======================================

これで過去の履歴が追えるのでちょっと便利に。


2010年7月17日土曜日

自炊電子書籍作成に便利な一括画像処理バッチ




紙の本をスキャンして電子書籍化する際に便利な一括画像処理のスクリプトです。

ImageMagicを使ってますので、使う場合は事前にダウンロードしておきましょう。
http://www.imagemagick.org/www/binary-releases.html#windows

image-conv.bat
---------------------------------------
@echo off

set TODAY=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set time2=%time: =0%
set NOWTIME=%time2:~0,2%%time2:~3,2%%time2:~6,2%

rem ここに出力先のディレクトリを指定する。
set OCRDIR=Z:\temp\ocr\%TODAY%_%NOWTIME%

mkdir %OCRDIR%
for %%i in (*.jpg) do C:\Tool\ImageMagick-6.5.8-6\convert  -monochrome -quality 100 -crop 2400x3436+40+30 %%i %OCRDIR%\%%i
---------------------------------------
*色が付いているところを自分の環境に合わせて変更する。
このバッチを、画像ファイルが保管されたフォルダに入れて実行すると、
そのフォルダ内の全てのjpgファイルに対して変換処理を実行する。
変換されたファイルは元のファイルと同じ名前で別ディレクトリに保存される。

■ -monochrome ・・・画像をモノクロ変換する(OCR認識率を上げることができる)
■ -quality 100 ・・・jpgの圧縮率。100は読み込み元と同じ圧縮率を保つ。
■ -crop 2400x3436+40+30 ・・・画像の左上から、横40px、縦30pxの位置から、横幅2400px,縦幅3436pxを切り出す。つまり画像のふちをカットすることができる。

その他参考
■ Acrobat 「ClearScan」のポイント
■ 裁断した書籍をスキャンする時のポイント
■ 書籍の電子化


Kindle DX で ClearScan PDF を表示させてみる




さてさて、昨日受け取ったKindle DXでいろいろやってみたのでまとめておきます。

ファームバージョンは届いたままの2.5.5。特にHackは無しの状態です。
内蔵ストレージは4GBくらい。3G通信はほんとに無料で使える(後述

基本的に日本語表示、入力は不可ですが、
PDFのように日本語フォントを埋め込まれたものであれば問題なく表示されます。

スリープ状態の時はこんな感じで壁紙(?)が常に表示されます(いろんなパターン有り、格好良いのが多いです
さすが、描画に電力を使わない電子ペーパー。


スリープから復帰させると、前の状態に戻る(この場合はホーム画面に戻ってます

*iPhone3GSのカメラで撮ったので、あまり画質は良くないですが、
実際はかなりクリアな表示がされています。


まず普通のPDFを表示させてみる。これは昨日もやったけど問題なし。



次に本題のAcrobatのClearScanでOCRしたPDFを表示してみる。
表示させるのは「銀河英雄伝説2 野望編

タイトル・・・問題なし


本文・・・問題なし


拍子抜けするほど簡単に見れてしまった(ClearScanもフォント埋め込みPDFなので当たり前か・・・
100MBを超えるClearScan PDFも問題なし。ページ単位で読み取りしているようで、ファイルが小さくても、大きくても描画に差は無いように感じる。


電子ペーパーの画面の切り替えはこんな感じ(YouTubeから転載


普通の液晶とはちょっと感覚が違うのがわかると思う。

また標準搭載&無料の3G通信を使って、ブラウザからインターネットを見たり、Twitter連携をしたりもできる。
(ただ標準では日本語表示できないのと、電子ペーパーは動的に表示されるページの描画が全然ダメなので、それほど使い勝手は良くない

今のところ3GはKindle Store専用といった感じ(日本語の書籍はほとんどないけど。。。

オライリーのPDF版も問題なく読めるようです。
オライリー(日本語)の本をKindleで読む

次はiPadとの比較でも。


2010年7月16日金曜日

2010/7/7発売の新型 Kindle DX 到着




2010/7/7にマイナーアップしたKindle DXを買ってみた。

iPad + GoodReaderは自作電子書籍の読書には眩しすぎて、白黒の本を長時間読むのが結構きつく、あまり使わなくなってしまった。
(ClearScan PDFが読めることと、動作速度・使用感は申し分がないが、静的なコンテンツをじっくり読むにはちょっと不向きな印象)

そこで電子ペーパー方式のKindle DXを購入してみた。
購入するときに知ったんだけど、Kindleって3G標準搭載で、しかもその回線費はAmazon持ち。太っ腹すぎる。
Kindle DX Wireless Reading Device, Free 3G, 9.7" Display, Graphite, 3G Works Globally
(現在は英語のページからしか注文できない。またUS Amazonのアカウントが必要なのに注意)

日本時間の7/11(日)に注文して、7/15(木)に着(不在だったので受け取りは7/16 夜)結構早い。

専用の箱に入っている。
*関係ないけど、Amazonの梱包箱の洗練されっぷりはすごい。ガムテなし、ホッチキスなし、開けるのも、捨てるために分解するのも素手で安全にできる。国内企業は即効パクるべき。



昔々あるところに・・・



パカッ
最初、紙が画面の上に乗ってるのかと思ったら、ディスプレイに映ってるのコレ
ふむふむ、まずは電源さして充電しろと。



充電し始めると、初期化開始。



初期化が終わると説明書が表示された。


初期状態でユーザ登録はされていた。


早速USBでPCとつなぐ。PCからはUSBストレージとして見えるので、documentフォルダにPDFを突っ込んでみる。普通のPDFを表示してみる。
表示データにはこれ「OSS仮想化機構KVMについての調査
イイヨー(・∀・)イイヨー
日本語表示に問題なし(ただしファイル名の日本語は化けた)


普通に読める・・・(当たり前か
ページ切り替え時の再描画時に一度ブラックアウト(電子ペーパーの特性)することを除けば、紙媒体と遜色なしな感じ。

細かい使用感はこれから試してみる。


2010年7月13日火曜日

NTEmacs + w3m + HyperSpec




うまくいかなかった奴ができて、これでNTEmacsからもHyperSpecが引けるようになった。

■まずw3mを準備する必要がある。
これはcygwinからコンパイル済みのexeとdllを貰ってくることにする。

(Service for UNIXが動いている環境なので、cygwinはインストールしたくない)

w3m.exe
w3mman
cygcrypto-0.9.8.dll


cyggcc_s-1.dll
cygiconv-2.dll
cygintl-8.dll
cygssl-0.9.8.dll
cygwin1.dll
cygz.dll

w3m.exeだけとってきて、実行すると足りないdllを教えてくれるので、それを全部取ってくればよい。
取ってきたexeとdllは c:\emacs\bin 配下に配置する。

■次にemacs-w3mをインストールする。
csvから最新版を取ってくる必要あり。


cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m
c:\> cd emacs-w3m
c:\emacs-w3m> c:\emacs\bin\emacs.exe -batch -q -no-site-file -l w3mhack.el NONE -f w3mhack-nonunix-install
これで c:\site-lisp\w3mにコンパイルされるので、c:\emacs\site-lispへ移動。
■dot.emacsの定義
;; HyperSpecのパスを指定
;; ここで注意なのは、w3mにはcygwin形式のパスを渡す必要がある。
(require 'hyperspec)
(setq
 common-lisp-hyperspec-root "file:///cygdrive/c/emacs/doc/HyperSpec/"
 common-lisp-hyperspec-symbol-table (expand-file-name "~/doc/HyperSpec/Data/MapSym.txt"))

;; HyperSpecをemacs-w3mで起動
(require 'w3m-load)
(defadvice common-lisp-hyperspec
  (around hyperspec-lookup-w3m () activate)
  (let* ((window-configuration (current-window-configuration))
         (browse-url-browser-function
          `(lambda (url new-window)
             (w3m-browse-url url nil)
             (let ((hs-map (copy-keymap w3m-mode-map)))
               (define-key hs-map (kbd "q")
                 (lambda ()
                   (interactive)
                   (kill-buffer nil)
                   (set-window-configuration ,window-configuration)))
               (use-local-map hs-map)))))
    ad-do-it))

;; 検索したい関数の上で C-c H で検索する。
(global-set-key "\C-cH" 'hyperspec-lookup)


2010年7月12日月曜日

Windows NTEmacs23 + SBCL + SLIME 環境構築




前回はCentOS上で環境構築したが、今回はWindows上で同じ環境を構築してみる。
CentOSの時は端末エミュレータ上で操作していたため、HyperSpecの表示にemacs-w3mを使ったが、
Windowsの場合は普通にブラウザで表示させる(w3mを動かすのが面倒なので・・・

Windows XP Pro SP3 x86
emacs-23.2-20100508
sbcl-1.0.37-x86-windows-binary
slime-2010-07-11
HyperSpec-7-0

■emacs-23.2
gnupackは使わず、ntemacsのみを使います。取ってきたexeを実行すると自己解凍されるので、解凍されたフォルダをここではc:\emacsに配置。

■sbcl
公式からWindows用のインストーラを取ってきて、実行するだけ。
コマンドラインからのパスが通っていることを確認しておこう。
c:> sbcl
* (format t "aaa" t)
→ aaa NIL

* (quit)

■slime-2010-07-11
解凍したフォルダをC:\emacs\site-lisp\slime-2010-07-11へ配置

■HyperSpec
解凍したフォルダを C:\emacs\doc\HyperSpec へ配置


===============================================
ここから設定。emacsの設定ファイルを配置するための環境変数を設定する。
ここでは、C:\emacs\home をホームディレクトリとして定義する。


HOME
C:/emacs/home

次にdot.emacsを作るのだが、先頭がドットのファイルはエクスプローラーから作れない。
emacsで作るか、コマンドラインから echo 1 > .emacs としてファイルを作る。

以下 dot.emacs いろいろ追加してみました。
----------------------------
;; slimeの配置先を指定(site-lisp配下は自動的にロードされるので、今回はいらない)
;;(add-to-list 'load-path "~/site-lisp/slime-2010-07-11")
;;(add-to-list 'load-path "~/site-lisp/slime-2010-07-11/contrib")

;; sbclのパスを記述
(setq inferior-lisp-program "sbcl.exe")
(setq slime-net-coding-system 'utf-8-unix)

(add-hook 'lisp-mode-hook (lambda ()
                            (slime-mode t)
                            (show-paren-mode)))

(require 'slime)
(slime-setup '(slime-repl))


;; C-c L で slimeを起動
(defun my-slime (&optional command coding-system)
  (interactive)
  (switch-to-buffer-other-window
   (get-buffer-create "*lisp*"))
  (slime command coding-system))
(global-set-key "\C-cL" 'my-slime)


;; slimeバッファを切換え(まだよくわからんです)
(global-set-key "\C-cs" 'slime-selector)


;; HyperSpecのパスを指定
;; 検索するとエラー。ブラウザを呼び出してるところっぽいけど文字化けててよくわからんです。
(require 'hyperspec)
(setq common-lisp-hyperspec-root
        (concat "file://" (expand-file-name "~doc/HyperSpec/")) common-lisp-hyperspec-symbol-table (expand-file-name "~/doc/HyperSpec/Data/MapSym.txt"))

;; 検索したい関数の上で C-c H で検索する。
(global-set-key "\C-cH" 'hyperspec-lookup)

;; C-hでバックスペース、DELでその場の文字を消す
(global-set-key "\C-h" 'backward-delete-char)
(global-set-key "\177" 'delete-char)

;; リージョンをハイライト
(setq-default transient-mark-mode t)

;; 起動画面を消す
(setq inhibit-startup-message t)

;; デフォルト言語をUTF8に
(set-language-environment "UTF-8")

;; 時計を表示
(display-time)

;; カラーテーマを設定
;; http://code.google.com/p/gnuemacscolorthemetest/downloads/list
;; からファイルを取ってきて、site-lispに coloer-theme.el と themesフォルダを入れる
(require 'color-theme)
(color-theme-initialize)
(color-theme-subtle-hacker)

;; 行番号を表示
;; http://stud4.tuwien.ac.at/~e0225855/linum/linum.html
;; から取得。C-c N で行番号をON/OFF
(require 'linum)
(global-set-key "\C-cN" 'linum-mode)

;; シェルウインドウの文字コード設定(文字化け対策)
;; M-x shell でコマンドプロンプトを起動
(setq process-coding-system-alist
(cons '("cmdproxy.exe$" sjis . sjis)
process-coding-system-alist))

;; 初期のウインドウサイズの設定
(setq initial-frame-alist
  (append
    '((top    . 30)    ; フレームの縦位置(ドット数)
      (left   . 450)   ; フレームの横位置(ドット数)
      (width  . 120)    ; フレーム幅(文字数)
      (height . 65))   ; フレーム高(文字数)
  initial-frame-alist))

;; 文字飾りを有効とする
(setq w32-enable-synthesized-fonts t)


;; メニューバーを消す
(tool-bar-mode -1)

;; 起動時にホームディレクトリへ移動
(cd "~")

;; 日本語設定
(set-keyboard-coding-system 'japanese-shift-jis)
(setq default-input-method "W32-IME")
(w32-ime-initialize)
(set-default-font "MS ゴシック-10")











CentOS5.5 + SBCL + SLIME + Emacs22 環境構築




Lispboxでいろいろ勉強中だけど、あまりに便利すぎて作ったプログラムを別環境で動かそうとした時にはまりそうなので、自力で環境構築してみた。

CentOS5.5(x86)
・sbcl-1.0.40-x86-linux
・emacs-22.1-2
・slime-2010-07-11
・emacs-w3m-1.4.4
・w3m-0.51
・HyperSpec-0.7

CentOSの持っている自前rpmのEmacs21ではw3mがうまく動かせなかったので、Emacs22を使ってます。


■Emacsのインストール
特に考える必要なし、以下のパッケージを突っ込んで終わり。
ftp://ftp.pbone.net/mirror/centos.karan.org/el5/misc/testing/i386/RPMS/emacs-22.1-2.el5.kb.i386.rpm
ftp://ftp.pbone.net/mirror/centos.karan.org/el5/misc/testing/i386/RPMS/emacs-common-22.1-2.el5.kb.i386.rpm

■SBCLのインストール
こちらも余り考える必要なし。公式から最新版を取ってきて、INSTALLファイルの通りにインストールのみ

■w3m
これはCentOS に付属するパッケージを使う
w3m-0.5.1-15.el5

■emacs-w3m
こちらも公式から最新版を取得し、configure; make; make install で終了

■HyperSpec-0.7
こちらも公式から取得したものを解凍してどこか好きな場所へ配置する。
今回は/root/.emacs.d/hyperspec/HyperSpec へ配置。

■slime-2010-07-11
公式から最新版を取得。
/root/.emacs.d/slime-2010-07-11 へ配置。

========================================
ここまではただインストールしたり配置したりするだけ。
ここから .emacsの設定を行う。ほとんどネットで探したものです。
========================================

;; slimeを配置したディレクトリを指定する

(add-to-list 'load-path "/root/.emacs.d/slime-2010-07-11")
(add-to-list 'load-path "/root/.emacs.d/slime-2010-07-11/contrib")

;; sbclのパスを記述
(setq inferior-lisp-program "/usr/local/bin/sbcl")
(setq slime-net-coding-system 'utf-8-unix)

(add-hook 'lisp-mode-hook (lambda ()
                            (slime-mode t)
                            (show-paren-mode)))

(require 'slime)

;; マニュアルには(slime-setup)としか書いてないけど、
;; こう書かないと、REPLプロンプトが出ない
(slime-setup '(slime-repl))

(defun my-slime (&optional command coding-system)
  (interactive)
  (switch-to-buffer-other-window
   (get-buffer-create "*lisp*"))
  (slime command coding-system))

;; slimeバッファを切換え(よくわからんです)

(global-set-key "\C-cs" 'slime-selector)


;; C-c L で slimeを起動
(global-set-key "\C-cL" 'my-slime)

;; HyperSpecのパスを指定
(require 'hyperspec)
(setq common-lisp-hyperspec-root
        (concat "file://" (expand-file-name "/root/.emacs.d/hyperspec/HyperSpec/")) common-lisp-hyperspec-symbol-table (expand-file-name "/root/.emacs.d/hyperspec/HyperSpec/Data/MapSym.txt"))

;; HyperSpecをemacs-w3mで起動
(defadvice common-lisp-hyperspec
  (around hyperspec-lookup-w3m () activate)
  (let* ((window-configuration (current-window-configuration))
         (browse-url-browser-function
          `(lambda (url new-window)
             (w3m-browse-url url nil)
             (let ((hs-map (copy-keymap w3m-mode-map)))
               (define-key hs-map (kbd "q")
                 (lambda ()
                   (interactive)
                   (kill-buffer nil)
                   (set-window-configuration ,window-configuration)))
               (use-local-map hs-map)))))
    ad-do-it))


(require 'w3m-load)


;; 検索したい関数の上で C-c H で検索する。
(global-set-key "\C-cH" 'hyperspec-lookup)

;; バックスペースで1文字戻って消す
(if (eq window-system 'x)
(progn
        (define-key function-key-map [backspace] [8])
        (put 'backspace 'ascii-character 8)
))
(global-set-key "\C-h" 'backward-delete-char)
(global-set-key "\177" 'delete-char)

;; リージョンをハイライト
(setq-default transient-mark-mode t)

;; 起動画面を消す
(setq inhibit-startup-message t)
========================================
これで動いてるっぽく見える。まだあんまり試してないので、不具合があるかはまだ不明。

参考にしたサイト
Meadow2+SLIME+SBCL@Windows XP SP3
LISPをみんなで勉強しよう!
とりあえず暇だったし何となく始めたブログ


2010年7月9日金曜日

実践 Common Lisp





実践Common Lisp
実践Common Lisp
価格:4,410円(税込、送料別)


ちょっと高いけどいい本。
Paradigms of Artificial Intelligence Programming(通称PAIP)の日本語翻訳版です。

Common Lispはまず処理系を構築するという、今の開発環境だとあまりなじみのない作業を必要とするため、とっつきがあまり良くなく、ハードルが高い。
本書は環境構築から、CDデータベースの作成という面白いサンプルを交えて導入を行ってくれるため、初めてLISPを触る人(自分もその一人)にもありがたい構成になっています。

しかし、導入部を過ぎると非常に実践的な内容でレベルが高く。理解しながら読むのに苦労します。
*ちょっと構成が悪いなと思ったのが、本書ではloopマクロを多様しながら、そのloop自体が最後に解説されている部分です。
なのでこの本は、いったん理解できる範囲で最終章のスパムフィルタ前まで読んだ後に、再度最初から読みなおすと、かなり理解を深めながら読めます。

入門書としてはややレベルが高いですが。LISPを使って実用的なプログラムを作るにはお勧めの一冊です。


2010年7月4日日曜日

クラスタの安全設計まとめ




今までの投稿をまとめ。

通常の安全設計は今まで通り行い、その上でこれらの事に注意して、より安全性の高いシステムを構築できるように。

(ケース1)内蔵RAIDボードの障害
(ケース2)共有ストレージのコントローラ障害
(ケース3)ローリングアップグレードは計画的に


以下に代表的なクラスタソフトを列挙しておく。

Microsoft Cluster Service (MSCS)
Windowsでクラスタするならこれが一番手軽で安全。ただし細かい制御はできない。

Sun/Solarisではおなじみ。Linux版もあり。VxVM/VxFSと組み合わせた運用をしたい場合に適している。そこそこ細かいこともできる。

安い。ただし柔軟性低い。

純国産。サポートが素早い。

昔ながらのクラスタソフト。安定性は抜群で柔軟性も高い。ただし、クラスタソフト自体は非常にシンプルな機能しかないので、監視等の機構を自分で開発し組み込む必要がある。

RedHat標準クラスタソフト。柔軟性高い。HPはMC/SG for Linux を終了し、こちらへ移行した。