< December 2004 | January 2005 | February 2005 >

January 31, 2005

MakeSureDirectoryPathExists を VB6 でシミュレートする

VB6 で、MakeSureDirectoryPathExists 関数の動きをシミュレートしたものを作ったので、おいときます。

続きを読む...

January 21, 2005

WSH でショートカットを作成する

WSH でショートカットを作成する方法です。どこにでも転がっているものと同じですが、自分のために。 コマンドラインコピーツール のインストーラとして作成したものです。

続きを読む...

January 20, 2005

VB6 実行時エラーのコールスタックを採取する小ネタ

VB6 で、エラーをハンドリングする際のスケルトン。例によって VB6 に限定しているのは、.NET はまだ仕事で使ってないので語るものを持たないためです。

エラーを必ずハンドリングする必要があるのは、呼出元を持たないプロシージャ、つまり、Sub Main() 、イベントプロシージャ、またはコールバックプロシージャ(ウインドウをサブクラス化した時のウインドウプロシージャとか、フックプロシージャのこと)などで、自分自身が大元の呼び出し元であるプロシージャ達です。それ以外のエラーは呼出元に返すことができます。

呼出元に返す際に、 Err オブジェクトにプロシージャ名をセットしていくと、前述の呼出元プロシージャでは、呼出順をとることができます。

続きを読む...

January 14, 2005

mt-comments.cgi に簡易スパムフィルタを実装する

あまりにもコメントスパムが多くなってきたので、mt-comments.cgi に急遽自前フィルタを追加してみた。結構いい感じ。

下記は 'sex' と 'porn' を含むコメントをポストできなくした例。

実際にはスパム業者はある程度絞れるので、具体的に特定の URL を本文に含むもの、などとしている。

続きを読む...

January 6, 2005

コマンドラインコピーツール

小品。コマンドラインで渡された文字列をクリップボードにセットするだけのプログラム。ショートカットを「送る」に追加しておけば、任意のファイルのフルパスをクリップボードにコピーできたり。

続きを読む...

January 5, 2005

EXTRACT の ORA-30076

EXTRACT という関数がある。Oracle や PostgreSQL に実装されているが、Oracleでの挙動が少々わかりにくい。

Oracle のSQLリファレンスによると

注意: 抽出を実行するフィールドは、datetime_value_expr または interval_value_expr フィールドである必要があります。たとえば、DATE 値からは、YEAR、MONTH およびDAY のみを抽出できます。同様に、TIMESTAMP WITH TIME ZONE データ型からは、TIMEZONE_HOUR および TIMEZONE_MINUTE のみを抽出できます。

という注意書きが付いているが意味が良くわかんないのである。確かに、SELECT EXTRACT(SECOND FROM SYSDATE) FROM DUAL を実行しようとすると

ORA-30076: 抽出ソースの抽出フィールドが無効です

と叱られる。じゃあいったい SECOND ってキーワードは何なの? である。

続きを読む...