2004/08/23(月)eperl ? embperl?

eRubyと同様に、html等に埋め込めるPerlを調べてみた。

さて、まず規格乱立である。この時点でやる気をなくさせる。

eperlとembperlが比較的メジャーなようだが余りWEBドキュメントがない。うーむ。

而して、Rubyとなると見やすいリファレンスが見つかっておらずまだ導入にためらいがある。

Perlポケットリファレンスはそこそこに使えるんだよなあ……

2004/08/22(日)Delphi ListView挙動色々

・ListView.Canvas.Brush.Color

等を変更した場合、

ListView.Canvas.Refreshしないと反映されないことがある。再現性は不明。とりあえず、心に留めてテスとしながら作っていくほか無いようだ。

・ListViewにはDoubleBufferedプロパティがある。結構ちらつきに効きます。こんなの知らなきゃ分からないですよ。

・Brush.Style を bsCross等にして、ListView.Canvas.FillRectするとなぜか十字線の隙間が真っ黒に!
Pen.StyleをpsClear(透明)にして、Canvas.Rectangleするしかなさそう…… 何だろうこの仕様。

・ListViewのデフォルトの表示に何か付け足そうと思ったら、すなおにListView1.CustomDrawItemを全部書いた方がよい。なぜかというと、ListView本来の描画に重ね書きするのは存外に難しいのだ。この際、OwnerDraw := True, OwnerData := True, で、OnDataには何も書く必要はない(OnDataは本来のListViewの表示にオリジナルのデータを載せたいときのもの)。CustomDrawItemで、DefaultDrawをFalseにしておく。

・OwnerData等の時、OnSelectItemで送られてきたItemのItem.Indexを取るとAccessViolationするようだ。仕様は不明だが、OnMouseDown等で座標から辿るか、ListView1.Focuced等で逆から辿ることで代用する。

・ListViewでOnColumnClickが2回連続で発生してしまっていた問題。原因はListViewのWndProc(ウィンドウプロシージャ)をオリジナルの物で上書きしていたから。これは、確か多値チェックを実現するために導入したはずだったが、現在は必要なくなっていた。この部分を削除すると正常に1回発生に戻った。他のイベントが正常だったため原因の切り分けに時間がかかった。起こらないようにするための手法は分かっていない。WINDOWS APIをよく理解していない所為で、本来なら真っ先に勉強しなきゃいけないのだが、今そんな時間がない。分からなくてもやっていくしかない。

2004/08/19(木)ShellTreeView!

エクスプローラっぽい画面であるところのShellTreeView。

Delphi付属のサンプルタブにある時点でなにやら怪しい気がしますが、6の頃からどうもバグとかがあって評判は悪いです(こういうところがDelphiがメジャーになれない理由)。

んでー、RootプロパティがTRoot型=Stringなのですね。これだと、どうやってマイコンピュータとかをトップにするのか分かりません。実用上というか、初期設定はデスクトップなのでマイコンピュータにしたいだけなのですが…… リファレンスガイド本見ると、rfMyComputerとかで設定できると書いてあるのですが、出来ない気配ですん。で、非常に情報が少ないのもDelphiのマイナスポイント。ML探してもようとして見つかりません。しゃあないので断念です。VCL_BAに書いてないと手が出ないな……

DirectoryListBox,DriveComboBoxを使うことにいたしましょう。いや実際速度的な話ならこちらの方が圧倒的に早いです。アイコンイメージを読み込まないですし、検索にも行かないので。問題かなと思うのは、長いディレクトリで横スクロールバーが出ないと。うーん。

2004/06/08(火)Tomcatをさわってみた

なかなか全貌が見えてこない、Java Tomcat Struts。これにApacheまで加わることを考えると相当きつい気がするが、まあとりあえずわかったことを書き連ねてみよう。

Tomcatで動かすサーブレットはコンパイルの後Tomcatディレクトリの中に置く。場所は/webappsがルートとなり、その直下にアプリ名のディレクトリを作る。アプリディレクトリ内は規定ルールで構造化する。直下にWEB-INF/を作り、その中にclasses/とweb.xmlを置く。classesにはコンパイル済みのclassファイルを置く。

web.xmlには最低限、タグの中に、タグ、タグを書いておく必要がある。タグは名前とサーバ上のクラスの対応、タグは名前とservletを呼び出すためにアクセスするURIの対応を書く。なお、最初の/(servletの前の)を入れ忘れたりすると、バリエラーをはく。気をつけること。

●例


Hello
HelloWorldServlet


Hello
/servlet/Hello




・注意点
今知る限り、Tomcat for Windowsはしちめんどくさいことに一度エラーを出すとそのアプリをマークし実行させないようにする。どういうことかというと、アプリ用のweb.xmlを書き換えて何か失敗したら、Tomcatの再起動が必要になる。もちろん、/conf内の書き換えは即要再起動。

2004/04/01(木)BCBヘルプのキーワード消失

メーリングリスト役に立つねえ……

これをブックマークに入れておいた昔の私は偉い!

BCBのヘルプに於いてキーワードのタブが消失する問題。
キーワードの件数が多すぎる所為で、65536を超えると起こるようだ。

ヘルプ->カスタマイズ->キーワードからキーワードが多そうなファイルを削除。
今回はペケマークが付いていた(よくわからない)rdwとかいうのと、CLXを削除した。

これで表示されるようになりました。ほっと一息。3日も悩んでしまった。

2004/01/31(土)BRegExp仕様研究

VC ,Delphi等で使える正規表現ライブラリBRegExp。

業界標準ぽいが、なにせポインタだらけなのと仕様書がいい加減なので気づかずに結構エラーを出すときがある。

BRegExpの仕様メモ。

BSubst(たぶんBTransも)は置き換えを1つも行わない場合、BRegExp.outpに値をはかない。
outpのアクセスは問題ないがチェックが必要。

検索関係でのEAccessViolation失敗は、ほとんどの場合与えたSが空列か、正規表現が間違っているとき。Indexの値にも注意が必要。ラッパーBMatchAllは作って使った方がよい。

2004/01/18(日)Delphi WEBプログラミング

http://www.cryer.co.uk/brian/delphi/twebbrowser/twebbrowser_oleobject.htm

なんともわからない。VCL_BAにリファレンスがないのが痛い。
ホントにBorland Helpは役立たずだった。

MSDNからWEB開発->DHTMLリファレンスとかで調べられる。

OLEVariant 型を作って、WebBrowser.Document.DocmentElement.OuterHTML
辺りでアクセスする。

OnNavigateComplete2やOnDownloadCompleteではドキュメント読み込み完了検知が上手くいかない。OnDocumentCompleteを使うか、外からStateを見るらしい。

サンプルがあれば3分で解決する話だ。1日かかってやる事じゃない。

2004/01/11(日)Delphiあれこれ

まだまだ同タイトルで続きます。
Formを動的にCreateして、Showした場合。

Label等が表示されないときがある。
Form2.Update等をCreateの直後に打つと正常化。

仮想リストビューの使い方。
なんてーかどこにも解説がないのね。
アイテムは全て自己管理。表示のみListViewに依頼する。
それにはItems.Addは厳禁。ともかくItems.Item[i]に関してはメモリエラーの温床となるので徹底的にアクセスを避ける。表示の設定はOnData等のイベントと、Items.Countを用いて行う。表示したいアイテム数だけ、Items.Countを設定してやるわけだ。

2003/12/30(火)Delphiあれこれ

メニューが表示されないのは、FormのプロパティBorderStyleがbsDialogであったため。
当然、ダイアログにメニューは必要ないわね。

Delphiのfor文はC等とは異なり、多分毎週条件判定を読んでいない。もしくは、=等の判定をしている。

終了値の変動可能性がある場合は、問答無用でwhileを使うべき。
OK キャンセル 確認 その他