2004年11月29日

サーバ

サーバで有名どころIBM,DELL,HPのWebサイトをまわってみた。DELLはIEじゃないと見積もりしてくれなかったので却下。
一応IEで見積もりしたけどw 3万円台からで安かったな。
IBMは文句言いながらもFireFoxで動いてくれた。

DELL、HPは安かったが、仕事先のサーバのほとんどがIBM製だったのでIBMなら安心なんだろうと言うことでIBMに決定。
Celeronマシンだと安くて5万円台からある。
Celeron2.4G メモリ256M HD SATA80Gx2のRAID1の構成で6万7千。割と安い。
しかしHD2個でRAIDにするともうHDを指すコネクタは無く、家にあるHDはIDEなのでPCIカードで拡張しなければならない。しかもHDのベイは3つだけなので、拡張するとケースの中に固定されずにHDを置くことになりそうだ。(ケースは割とでかそうなので空きスペースは多そう)

1年間は無償修理でサーバまで来て修理や、電話で故障箇所がわかればユーザでパーツ交換できるキットを送ってくれるそうだ。
無償修理以降は有償でサポート期間延長や修理ごとにお金を払うシステムの様子。
聞いてみたら無料保証1年間を3年に増やす有償保証が約10万だと。あほか!
最安構成だと毎年買い変えた方が良さそうです。

と言うことで次のサーバマシン候補はeServer eSeries206バリューモデル( http://www-6.ibm.com/jp/servers/eserver/xseries/product/x206vl/ )にしよう。

サーバクラッシュ

古いHDに入っていたバックアップデータ50Gぐらいをファイルサーバにコピー中に急にコピーが遅くなった。
ファイルサーバにログインし、プロセスを見てみるとファイル共有のSambaプロセスがCPUを使い尽くしていた。
そしてファイルコピーをキャンセルすると、サーバが応答無しになり、ログインもできなくなってしまった。
う~ん、と思いつつサーバを直接スイッチで強制終了し、再起動させると・・・。
なんか電源が勝手に消えたり付いたりして不安定になってる・・・。また妙に焦げ臭いし・・・。
そしてついには電源が入らなくなってしまった・・・。

不安定になってる時に、ちゃんとCPUファンとHDの起動音が連動していたし電源、マザーボードがあやしいと判断。
そして電源を余っているヤツに変えてもダメだったのでマザーボードが逝ったっぽい。

で、以前IDE関連が妖しい動作をしていたので交換した古いマザーに移し替えると動いてくれた。
やっぱマザーが逝ったようだ。このマザー買って2ヶ月ちょっとしかたってないんだけどな・・。
古いマザーも機能は十分だけどIDEが相変わらず不安定でIDEコネクタ何回か指したり抜いたりしないと起動しないし・・。
やっぱ24時間稼働だとPCサーバでは無く専用のマシンを用意しないとダメなんだろうか・・・。
でも高いだろうしなぁ。
また出費が・・・まぁマザーはそれほど高くはないけど・・・痛い・・・。
ずっとGIGABYTEのマザー使ってるけど別のメーカにしてみるか・・・。

2004年11月18日

キーワードハイライトなど完成

JFace使い出したら開発が進む進む。
正規表現使いまくりで重かった単語ハイライトもJFaceの機能で楽に実装。
SQLをフォーマットする機能もJFaceに「コードをフォーマットする機能を実装するのにサポートするクラス」があるのでそれを使えばそれなりに楽に実装できそう。
Undo Redoもコード数行追加で実装できた。

JFace楽だなぁ、こんなに便利なら最初から使っておけば良かった・・・。
割とできてきたけど欲しい機能からすると完成度は30%ぐらいか。
GUIでの設定や、開発を手助けする機能がまだまだ足りない。
和製でフリーソフトでSQLコード補完機能付いてるのは知らないから完成すれば割と"使える"ツールになる予感。
dbe20041118.png

参考にしたサイトは
SWT Tips and Samples
http://cjasmin.fc2web.com
Eclipseプラグイン開発
http://yoichiro.cocolog-nifty.com/eclipse/
ObserveEclipse
http://www13.plala.or.jp/observe/

2004年11月16日

コード補完、近道

例のSQL実行するツールなのだが、SQLコード補完は必須の機能と考えている。
しかしEclipseのコード補完のようにナイスでスマートなコード補完を自前で実装するのは鬱になること必至。
http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=JFace
を参考にするとJFaceで楽にコード補完できるそうだ。
ちなみにSWTがGUIのライブラリで、JFaceがSWTを簡単に扱えるように、そしてアプリケーション的な機能を実装しやすくしているライブラリ。どちらもEclipseのために作られたライブラリ。

試しにちょっといじってみると今のSWT直書きなコードにも簡単にJFaceの機能の一部を追加することができるようだ。
コレで楽勝にコード補完ができる!そして今の微妙に重い単語ハイライトもイイ感じにできるらしい。
さらにUndo機能も楽に実装できるという話もどっかで見た。
至れり尽くせりのJFaceを導入しよう。

問題があるとすればライブラリのjarのサイズとファイル数が多いことだなぁ。
約2MBのサイズアップ。
現在のライブラリを含めたサイズ約5MB。
まぁ10MBぐらいまでなら大丈夫だろう。

コード補完、Undo機能追加できれば一気にゴールに近づけるな。

でけた

dbe20041116.jpg
すげー楽に実装できた。
オブジェクト指向万歳。
一部適当に作ってしまったおかげで以前の実装に依存してた部分があったのでそこだけ修正したらすんなり新しいエディタで動いてくれた。

ちなみに写真の状況は6行目でSと入力した後にCtrl+スペースを押した時の表示。
Sが絞り込まれて表示されている。この後続けて入力するとさらに2文字目、3文字目で絞り込むことが可能。

JFaceなかなかスバラシイですな♪

なんだかやる気がでてきましたよ?

Typo

SQL実行する例のツールのメモリ不足の場合の処理を作っていた。
DB検索で条件指定せずにでかい範囲で検索するとメモリ不足になることがあるので、エラーメッセージの出力とその解決方法の説明は必須の機能だろう。

メモリ不足のメッセージを出力するためOutOfMemoryErrorをcatchし、GCしてからエラーメッセージ表示。
そのときにDBの検索結果のResultSetをcloseしようとすると
java.sql.SQLException: I/O例外です。: Invalid Packet Lenght
なる例外が。
ふむ、メモリ足りなくて内部でおかしくなってるのだろうか。詳細をGoogleで検索すると・・
「もしかして: Invalid Packet Length resultset 」
む、typoだw

LenghtとLength、確かに急いで書くと間違えそうだ。
Oracleの中の人も打ち間違えをすると言うことでw

2004年11月15日

マルチスレッド

今仕事で重たい処理をすることが多くなった。
機械学習で学習データを学習させるのに数時間かかる。
計算用マシンはDualCPUだけどプログラムはシングルスレッドなので1CPUしか動いていない。
コレはとてももったいない。
関係ないが別の研究室の計算用マシンにXeon3.2Gを4つ搭載してるマシンが2台もある・・。
のぞいてみるとこちらも1プログラム1CPUで動かしているようだ。

Pentium4は4Gを諦めたらしいしこれからマルチコアに移行するという話を聞いた。
今後ますますマルチスレッドでのプログラムの必要性が出てくるだろう。

今の機械学習のプログラムはC++だけどJavaに移植してマルチスレッドで実装してみたいな。


と思ったら別の研究室のマシンはHT対応のCPUなので2つのCPUが4つに見えているだけらしい・・・。
/proc/cpuinfoだけ見てだまされてしまったようだw
物理CPUの数はマザーボードをのぞいてみないとわからないのだろうか。

2004年11月10日

MP3

LinuxでMP3エンコーディング。

エンコードにはlameを使う。
今回はTurboLinux10F上でするのでlameをTurboLinuxのHPから落とす。
Cuickinは楽だけどCUI版は無いのかな。GUI版はメンドイ。まぁどっちにしろyum最強。

んで
lame -h -b 160 input.wav output.mp3
-hはちょっと遅いけど高品質 -b 160で160kbps
-V nでVBR(可変ビットレート)でエンコード。
数字が小さい方がビットレート高いようだ。デフォルトは4。

Navi2chインストール

emacsで2chが見れるnavi2chを入れてみる。
サイトから落として./configureしてmakeしてmake install。
ドキュメントに書いてあるとおりではダメで
.emacsファイルに
(setq load-path
(append '("/usr/share/emacs/21.3/site-lisp/navi2ch") load-path))
(autoload 'navi2ch "navi2ch" "Navigator for 2ch for Emacs" t)
と追加。
デフォルトのload-path以外の場所にインストールされる??のでload-pathにインストールされた位置を記述。
後はドキュメント通り。
起動後、画面が真っ暗のままになることがあるがコレは板一覧の文字が黒で表示されているから。WhiteBoxEnterpriseLinuxでは黒だったがVineLinux3.0では正しく表示された。
VaraTermの黒の表示を灰色に設定し解決。もっと根本的なところで設定が必要かもしれないけどとりあえず問題回避できたのでおk。

2004年11月09日

Emacs設定

Emacsを使うとバックスペースキーでヘルプが出ることがある。
Ctrl+Hキーでバックスペースの効果が出るようにすれば解決。
ヘルプが見れなくなるけどどうせ英語だし読まないのでモーマンタイ。
ちなみに以下の設定をしなくてもCtrl+BSでバックスペースになるようだ。

以下を.emacsファイルに追加
(define-key global-map "\C-h" 'delete-backward-char)

2004年11月04日

Firefox拡張

Firefoxインストール時に一緒に入れる拡張メモ

タブ機能追加
http://piro.sakura.ne.jp/xul/_tabextensions.html

マウスジェスチャー
All-in-one Gestures
http://perso.wanadoo.fr/marc.boullet/ext/extensions-en.html
設定方法は
C:\Documents and Settings\USERID\Application Data\Mozilla\Firefox\Profiles\sdl7ueo2.default\chrome\smoothwheel\content\smoothwheel.js
をいじる。ターボに設定するとサッと移動してIEっぽくなる。
Fastの設定ファイル
http://rainbowdevil.jp/etc/files/smoothwheel.js


ブックマーク自動共有
Bookmarks Synchronizer
http://cgi29.plala.or.jp/~mozzarel/


クリップボードのURLを新しいタブで開いたり、クリップボードのキーワードで新しく検索するショートカットキー追加
about:configでextensions.pasteandgo.OpenNewTabをtrueに
http://tecwizards.de/mozilla/


ホイールのスクロールをなめらかに
http://smoothwheel.mozdev.org/

2004年11月02日

人狼BBS

JavaWorldに紹介されていた人狼BBSをのぞいてみた。

人狼BBSとはプレイヤー参加型のゲームで村人と人狼が知恵を競い合うゲーム。
村人全員が村人全員を疑い、毎晩誰かを処刑する。
人狼は村人を装い、何食わぬ顔で毎晩誰かを牙で切り裂く。
最後に残るのは村人か、人狼か。

正直アツい、過去ログを読むだけでもかなりおもしろい。
人狼が村人を装い、どうすれば村人が生き残れるかを力説している裏で毎晩誰かを食べる。
村人は知恵を絞り誰が本当のことを言っているか、誰が疑わしいかを探り合う。そして毎晩だれかを処刑する・・。

本家
http://ninjinix.x0.com/wolf/index.rb

まとめサイト
http://wolfbbs.halfmoon.jp/

最初に読んだゲームのログがいきなり名勝負
毎日一人だけ対象の人物が人間が人狼かを占える占い師が、いきなり人狼二人を当てるが偽物占い師が出てきてどちらが村人の信頼を勝ち取るのかのガチンコ勝負。
このゲーム、いかに村人の信頼を勝ち取るのかが難しいですな。
http://ninjinix.x0.com/wolf/index.rb?vid=1&#bottom

一度参加してみたいけど頭が良くないと全然ゲームにならないだろうなぁ。
約1週間 割と時間がある人じゃないと発言力つけられないだろうし気軽には遊べないゲームですな。

2004年11月01日

Firefox

軽くてナイスなブラウザFirefoxのRCが公開されてたので入れてみる。Windows,Linux,Mac版それぞれあり。
0.9やPRを入れてみたことがあったけど中途半端なタブブラウザっぽさや、軽いと言いつつ妙に重かったのですぐ消してたけどRC入れてみたらすごく軽くてイイ感じ。
前のは適当にいろいろ入れた拡張(プラグイン)が悪さしてたんだろうか。

とりあえず便利そうな拡張を入れてみる。
タブブラウザ機能をパワーアップするプラグイン
http://piro.sakura.ne.jp/xul/_tabextensions.html
めちゃくちゃ細かい設定ができる拡張。
sleipnirボタンがあり、ボタン一つでsleipnirと同じ動作の設定ができるようだ。
DonutPボタンはドコだ!?
でもいろいろいじるとDonutPと同じ動作にすることができた。

All-in-one Gestures
http://perso.wanadoo.fr/marc.boullet/ext/extensions-en.html
マウスジェスチャーのプラグイン
マウスの軌跡が表示されたりしてイイ感じ。
以前のバージョンだとめちゃ重くて全然使い物にならなかったけどバージョンあげたら軽くなった。何かのプラグインと機能衝突してたかも。

Bookmarks Synchronizer
http://cgi29.plala.or.jp/~mozzarel/
探し求めてた機能、ブックマーク自動共有。
ブラウザ起動時に指定のFTPに接続してブックマークを取り込み、ブラウザ終了時にブックマークをアップロードしてくれるプラグイン。
これで複数のマシンのブックマークを常に同じにできる。マージも可能な様子。

Firefoxは素の状態では機能が貧弱だけど拡張でどうにでもなるのでなかなかイイかも。
ただ別のマシンで同じ設定にしようと思うといろんな拡張を落としてきていろんな拡張の設定をしないとダメなのでメンドイ。

WindowsだとIE系のタブブラウザがイイ感じだけどLinuxだとFirefoxで決まりかと。

後はFirefoxで「クリップボードにあるURLを新しいタブで開く」があれば最高なんだけどな。
DonutPだとURLをコピーしてCtrl+Shift+Vで新しいタブで開くことができる。これはなかなか便利な機能だったんだけどFirefoxでは無し・・。残念。
↑の機能を実現するボタン
http://tkm.s31.xrea.com/xul/newtabandgo.shtml

まぁでもブックマーク自動共有機能が強力すぎるのでFirefoxメインで使うようにしてみよう。
今、家と会社で5台のマシン使っててそれぞれのブックマークが別々なので大変不便だったけどコレでかなり解消される予感。


軽いと言いつつ重いのは特殊なUIのせいのようだ。Firefoxまとめページによると「MozillaはXULって言うXMLの一種とスタイルシートとジャバスクリプトでUIを構成してるから、OSを問わない汎用性はあるけど各OSのネイティブUIのブラウザに比べるとパフォーマンスは劣っちゃう。」とのこと。
軽いと言う評判はFirefoxに使われているGeckoエンジンの軽さらしい。
拡張を入れることにより自分的に最強ブラウザのDonutPと同じ動作にできてさらにインクリメンタルサーチやブックマーク自動共有など便利な機能があるのでやっぱFirefoxで決まりだな。
多少重いけど我慢するかー。

2004年11月その他のエントリー