< January 2004 | February 2004 | March 2004 >

February 26, 2004

主キーを別のファイルグループに作成したくても・・・

MSDEで、表とプライマリキーを別々のファイルグループに作成しようとしたが、できなかった。たとえばこんな感じで表とプライマリーキーを作成したとする。

C:\>osql -S (local) -U sa -P mypass
1> USE master
2> GO
1> CREATE TABLE student_tbl
2> (
3>      enter_year      CHAR( 4 ) NOT NULL,
4>      id              CHAR( 8 ) NOT NULL,
5>      sex             CHAR( 1 ),
6>      phone   CHAR( 12 ),
7>      name    VARCHAR( 20 ),
8>      address VARCHAR( 80 )
9> ) ON STUDENTDB_MAIN;
10> GO
1> ALTER TABLE student_tbl
2> ADD CONSTRAINT pk_student_tbl
3> PRIMARY KEY
4> (
5>      enter_year,
6>      id
7> ) ON STUDENT_INDEX;
8> GO
1>

結果はどうなるか。実は、表もプライマリキーのインデックスも、両方STUDENT_INDEXファイルグループに作成されてしまう。

続きを読む...

MSDEのデータをエクスポート・インポートするJScript

MSDEのデータを手軽にExport/ImportするWSHスクリプトです。'.js'拡張子をつけて保存し、ダブルクリックするかコンソールからCSCRIPT Export.jsなどとして実行します。わざわざ実行速度の遅いJScriptで作っている理由は、単に try{...} catch( e ) {...} でトランザクション処理がしたかったというだけのことです 笑。

MSDE用になっているのは接続文字列だけなので、その部分のみ変更すればOracleやJETなど、ADOで接続可能なDBであれば使用可能だと思います。(でもWSHが利用可能な環境でしか実行できません。)

続きを読む...

sanitize属性

テンプレートの汎用属性として、sanitizeがある。これは、データに含まれるタグを取り除いたりする方法を指定する。

Movable Typeのマニュアルのひな形 TAG たち > Tag 全体を通しての属性によると

疑いのある文書に,浄化フィルターをかけます. この属性の値が 1 の場合, weblog の設定か全体の設定でしてある,標準の浄化ルールが適用されます. 属性値が 0 の場合,この Tag に関しては浄化が行われません. 属性値がそれ以外の場合,属性値は浄化ルールとして扱われます.

で、すべてのタグを取り除きたい場合は、sanitize=""とすればいいのかと思ったら、それではどうも0と同じ扱いになるらしい。いったいどうしたらよいのでしょうか。

February 25, 2004

VC++でDLLを作る

VC++でDLLを作るときのポイントです。

続きを読む...

February 24, 2004

Google API 文字化け続報

エントリーのタイトルでの検索結果をでるように作ったものをREBUILDすると、こんなエラーになります。

MT::App::CMS=HASH(0x8069d44) Wide character in print at lib/MT/FileMgr/Local.pm line 88.

思いついて、MT::FileMgr::Localの73行目に

    binmode FH, ':utf8';

を追加してみました。結果、エラーはでなくなりましたが、文字化けは直りません。to be continued...

VC++ と秀丸を連携させる

Old&New: Computer: Visual Studio 6.0: 秀丸とVC の連携に、VC++でカーソルのある行をにカーソルがある状態で秀丸を開く方法が紹介されてます。使えるー。

文字・文字列あれこれ

文字定数と文字列リテラルの大きな違いとして、シングルクオートで括ったら\0が付かない、ダブルクオートなら付く、ってことらしい。Perlとは違うのね。
参考:プログラミング演習III ~C言語中級編~

関数あれこれ
strchr 文字列から文字を探す
strstr 文字列から文字列を探す
strrchr 文字列の中に文字が含まれている最後の場所を探す
_snprintf 引数にsprintfする
sscanf 文字列よりscanfみたいにして値を取り出す。

February 23, 2004

実数型の内部表現

実数型の内部表現で一般に用いられる形式、IEEE754 floating-point standard について。

先頭より、以下のようにビットを割り当てる。

S(符号部)
先頭の1ビット。正のとき0、負のとき1。
E(指数部)
単精度の場合は8ビット、倍精度なら11ビット
M(仮数部)
単精度なら23ビット、倍精度は52ビット
±1.M * 2E-127
0.375f = 1.5 * 2-2
- ---+---- 1----+----2----+----3--
0 01111101 00000000000000000000101
S└  E  ┘ └──── M ────┘

あと、指数部と仮数部の特別な組み合わせが存在する。

指数部(S) 仮数部(M)
±0 全部0 0
±Infinity 全部1 0
NaN 全部1 0以外

IEEE754 倍精度浮動小数点数のフォーマットに詳しく解説したものがあります。

Google API で文字化け

MTGoogleSearchなどのタグを使って、エントリーのタイトルの検索結果を出そうと試みているのですが、文字化けしてしまいます。
Google API で文字化けでも、同じような症状が。でも、この際とは「EUCだから文字化け?」ってなってますが、raindropはUTF-8なんだけどな・・・。引き続き要調査。

rand, srand

Cの標準関数のsrand, randはPerlの同名の関数と動きが違う。つまり、min_val~max_valの乱数を求める場合はこんな感じ?(間違ってたら言ってください。)

srand( (unsigned)time( NULL ) );
n = min_val + ( ( max_val - min_val ) * ( (double)rand() / (double)RAND_MAX ) );

でも、max_val - min_valがRAND_MAXより小さいなら、これもありかも。

srand( (unsigned)time( NULL ) );
n = rand() % ( max_val - min_val ) + min_val;

外部リンクに自動的にtarget属性を追加しよう計画(調査編)

やっと、ブログ全体に手が入ったところで、次にいじくりたいのは、エントリー内でリンクを張ったとき、target="_blank"を毎回書くのがめんどくさい、というところ。要はfrog.raindrop.jp以外のホストへのリンクにはtargetを勝手につけるようなフィルタがあればいいなってところですか。そんなの、誰かが作ってそうなので、探してみようと思っているのですが、同時に、私の悪い癖「作ってみたい!」ってのも少しあるわけです。
そこで、調査に乗り出したところなのですが、これなんか参考になりそうです。
MovableTypeのプラグイン作成(邦訳)
ただし参考になるかならないかは、これから読むわけです。

February 20, 2004

インデックスのTABLESPACE指定

Oracleで、テーブルスペースを指定して、インデックス・主キーを作成する方法です。

続きを読む...

HOSTSの変更はいつ反映されるの?

というわけで、こんなテストをしてみた。

続きを読む...

February 17, 2004

SI Object Browser 7 BDE設定

もう、8になってこの設定はいらなくなったんだけど、この前たまたま7のインストールされたマシンを使うことがあって困って調べたので、一応書いておくことにします。

Object Browserはあると何かと便利なので、よく使ってるし、この設定自体はものすごく何度もやってるはずなんだけどね。覚えるほどのことでもないし。

「BDE設定」をスタートメニューから起動し、ツリーの「環境設定」ってタブを選択。「 Drivers > Native > Oracle 」のDLL32とVENDOR INITを以下に設定します。

データベース DLL32 VENDOR INIT
Ver 7.3 SQLORA32.DLL ORA73.DLL
Ver 8.03 SQLORA32.DLL ORA803.DLL
Ver 8.04以降 SQLORA8.DLL OCI.DLL

February 13, 2004

メールアドレスの正当性チェックを実行する

Net::DNSを使用した実装例です。

Email::Validを使用すると可能なのですが、リトライする、レコードなしはNGだが、タイムアウトなどのエラーはとりあえずOKとするなど、柔軟性がほしかったので作ってみたもの。でもよく考えたら、ここに載せなくても、Email::Validのソースをみたらいつでもよいサンプルになるのかもしれません。

続きを読む...

Windows Xp で、Ctrl + Alt + Del で、「Windowsのセキュリティ」画面が表示される条件

Windows 2000の頃に、Ctrl + Alt + Delを押下すると、「Windowsのセキュリティ」ってダイアログがでて、そこからシャットダウンしたり、ログオフしたりできて便利だったのに、Windows XPではタスクマネージャが出るなーって思ってました。タスクマネージャは別にCtrl + Shift + Escで出せるからどうでもいいのにーって。でも、使ってるうちにいつの間にか、Windows XpでもCtrl + Alt + DelでWindowsのセキュリティ画面が出るようになって、何でかなって思ってました。どうやら、ユーザの簡易切り替えと関係があるみたい。簡易切り替えを使用すると、タスクマネージャになるみたいです。なんか変なのー。

February 8, 2004

タスクトレイにアイコンを表示するユーザーコントロール

2年くらいあっためてたレシピ。フォームにはっつけてIconプロパティに適当なアイコンを設定して、InTrayプロパティをTrueに設定すると、タスクトレイにアイコンが常駐します。アイコンがクリックされたりするとイベントが発生します。あと、コンテキストメニューも、FormなんかのPopUpMenuメソッドと同じ方法で表示することができます。ただし、自分で使う用に作ってあるので、無駄も多いしあんまり細かいところまでちゃんとできてません。バグもあるかもです。

これ作ったとき、VBでUserControlのPopupMenuメソッドでメニューを表示すると、キーボードでメニュー操作ができないのは何でかなー、フォーカスがはずれてもコンテキストメニューが出たままになってしまうなー、と問題を残したまま長く使っていたんだけど、このたび解決方法[homepage2.nifty.com]を見つけたので公開してみました。ポイントは

    Call SetForegroundWindow(UserControl.hwnd)
    Call UserControl.PopupMenu(Menu, flags, x, y, DefaultMenu)
    Call PostMessage(UserControl.hwnd, WM_NULL, 0&, 0&)

てな感じにSetForegroundWindowしてからメニューを表示しWM_NULLをポストすることらしいです。

---------------
2004/04/23 追記
GetSystemMetrics の引数を、間違って HEX で宣言していました。修正しました。
# うわーん、かっこわるー (-_-;)

続きを読む...

February 2, 2004

sendmailの送信エラーを捕捉する(実験編)

CGIからsendmailでメール送信するときに、送信に成功したかエラーになったかを取得する方法を調べてみたのでとりあえず実験編です。

まず、送信エラー時にエラーメールを返す、ってやつ。通常メールクライアントからSMTPに投げると返ってくるけど、同じことをさせるには、sendmailの-fオプションで返信先を指定します。sendmailについてはsendmailのman page[www.linux.or.jp]が参考になります。ためしにてきとうなアドレスに送ってみたら、ちゃんと返ってきました 笑。

も一個、sendmailは実行時にステータスを返してくるのを取得してみよう、ってやつ。特殊変数$?にステータスコードが入ってくる・・・はずだけど、そのような条件を作れませんでした。なので、定数を宣言したのみ。まあ、画面出力してみてます。

続きを読む...