2005年 8月 03日 水曜日
Metropolis がやってきた
久しぶりなので、Blog らしく、くだけた感じで堅苦しくないことを書こうかと思います。
先日、まちに待った、新しいホームマシンがやってきました。それも...
Sun Java Workstation W1100z - Metropolis
すばらしい!プロダクトのテストマシンとしては、何度も使っていて、「こんなのが、自分専用だったらなぁ」
とずっと思っていたのですが、本当にやってくるとは。詳細な spec は、
http://jp.sun.com/products/desktop/ws/w1100z にありますが、主なものだけ書くと、
- AMD Opteron 150 プロセッサ (2.4GHz) - 2GB Memory (1GB + 1GB 拡張) - XF86-NV NVidia Corporation NV34GL [Quadro FX 500] - 80GB SCSI disk
1. dtlogin から console で login し、dtlogin を止める
# /etc/init.d/dtlogin stop
2. xorg.conf のテンプレートを自動生成
# env HOME=/ /usr/X11/bin/Xorg -configure
3. #2 で生成されたテンプレート xorg.conf.new の Monitor の部分を修正
Section "Monitor"
DisplaySize 473.6 296 # mm
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-96
VertRefresh 48-160
EndSection
4. #2 で生成されたテンプレート xorg.conf.new の SubSection "Display" の部分の Modes を
1920x1200 に変更
5. システムを reboot (X を起動し直すだけでは、driver が有効にならないので)
で、再度、login してみると、大成功。S9 では使用できなかった 1920x1200 も
きちんと使えるし、さっきの分身の術もすっかり直っていました。さすが、佐山さん!
あまりにも快適になった、ホームマシン。これで looking glass も動かせるようになりました。
次は、free の mailer でも入れてみようかと思っています。
Posted at 04:32午後 8 03, 2005 by kenji in ローテクな話 | 投稿されたコメント[0]
2005年 6月 24日 金曜日
第2話 - libauto_ef の使い方
libauto_ef の使い方です。libauto_ef は、文字エンコーディングを 判別するための library で、auto_ef (第1話参照) も、libauto_ef を 使って、エンコーディングを判別しています。 libauto_ef が提供している関数の詳細については、libauto_ef(3LIB) を 参照してください。ここでは簡単な sample (auto_ef_file()) とその説明を載せます。
/* */
/* test_file.c : auto_ef_file sample */
/* */
1 #include
2 #include
3
4 main (int argc, char **argv)
5 {
6 auto_ef_t *root1 = NULL;
7 int i=0;
8 size_t test;
9 test = auto_ef_file(&root1, argv[1], AE_LEVEL_0);
10 for (i=0; i < (int)test; i++){
11 printf("encoding = %s\n", auto_ef_get_encoding(root1[i]));
12 printf("score = %f\n", auto_ef_get_score(root1[i]));
13 printf("\n");
14 }
15 auto_ef_free(&root1[0]);
16 exit(0);
17 }
2 #include
ヘッダーファイル auto_ef.h を取り込んでいます。
auto_ef.h は、/usr/include/auto_ef.h にあります。
6 auto_ef_t *root1 = NULL;
エンコーディング判別の結果を格納する root1 を定義しています。
root1 に格納された値は、auto_ef_get_encoding (3LIB)、auto_ef_get_score(3LIB) で
取得することができます。11 行目、12 行目で実際に使っているので参照してください。
9 test = auto_ef_file(&root1, argv[1], AE_LEVEL_0);
エンコーディングの判別を行います。2番目の引数 argv[1] には、判別を行う
対象のファイル名が入ります。3番目の引数 AE_LEVEL_0 は、判別の精度を
指定しています。レベルは 0 から 3 まで存在し、AE_LEVEL_0 が最も精度が低く、
レベルが上がるに従って、精度は上がりますが、処理速度は遅くなります。
auto_ef_file は可能性のあるエンコーディングの数を戻り値 (test) として
返します。
10 for (i=0; i < (int)test; i++){
11 printf("encoding = %s\n", auto_ef_get_encoding(root1[i]));
12 printf("score = %f\n", auto_ef_get_score(root1[i]));
13 printf("\n");
14 }
判別したエンコーディングを出力しています。
auto_ef_get_encoding は、判別されたエンコーディング名を取得します。
エンコーディング名は、Solaris にバンドルされている iconv (1) で
使用できるエンコーディング名になっています。
auto_ef_get_score は、判別された エンコーディングにマッチする
可能性 (パーセンテージ) を取得します。
15 auto_ef_free(&root1[0]);
auto_ef_file によって割り当てられたメモリーを解放します。
% cc test_file.c -lauto_efで、コンパイルできるはずです。
./a.out FILENAMEfilename にエンコーディングを判別したいファイル名を入力します。
% ./a.out ~/memo/command.doc encoding = eucJP score = 94.000000 encoding = ko_KR.euc score = 5.000000このように、使い方は非常に簡単ですので、 是非試してみてください。
Posted at 07:35午後 6 24, 2005 by kenji in ローテクな話 | 投稿されたコメント[0]
2005年 6月 17日 金曜日
ローテクな話 - 第一話 auto_ef について
多少、技術的な話をまとめた自分用のメモ書きのような場所を作ってしまいました。他の方のサイトと違い、最新技術の話や、聞いて役に立つ話はほとんどないと思います... ちなみに、ローテクというは、
ローテク = low technique + localization technique
の造語です。
第一話として、Solaris 10 に実装された、auto_ef というコマンドについてです。
このコマンドは私が初めて (というか最初で最後) Solaris に実装したコマンドです。
また、Sun Java Enterprise messaging server のアラビア語とタイ語の問題を
解決するためにも利用されています。タイ語は patch としてしか提供されていない
ようですが (確か bugID 5084308 だったと思います)、アラビア語に関しては、一応、
docs.sun.com のドキュメントに掲載されています。
(http://docs.sun.com/source/819-1054/channel2.html)
auto_ef は引数として入力されたファイルの文字のエンコーディングを調べて出力してくれます。
nkf というコマンドが日本語では非常に有名ですが、nkf の国際化版、というのが
一番わかりやすいかと思います。もしくは、Mozilla などの browser に
実装されている文字コード自動判別機能をコマンドと、ライブラリにしたようなものです。
最も単純な使い方は、
% /usr/bin/auto_efと実行すれば、
例: % /usr/bin/auto_ef ~/memo/command.doc eucJPここで、表示されるエンコーディングは、Solaris の iconv (1) で利用可能な、 エンコーディングです。詳しくは、iconv の man page を参照してください。
例: % /usr/bin/auto_ef ~/memo/command.doc eucJP 0.94 ko_KR.euc 0.05この場合、eucJP である確率が 94%、 ko_KR.euc である確率は 5%、(残り 1% は、他のエンコーディング) であると判定されています。
Posted at 03:08午後 6 17, 2005 by kenji in ローテクな話 | 投稿されたコメント[1]