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のデータを手軽にExport/ImportするWSHスクリプトです。'.js'拡張子をつけて保存し、ダブルクリックするかコンソールからCSCRIPT Export.jsなどとして実行します。わざわざ実行速度の遅いJScriptで作っている理由は、単に try{...} catch( e ) {...} でトランザクション処理がしたかったというだけのことです 笑。
MSDE用になっているのは接続文字列だけなので、その部分のみ変更すればOracleやJETなど、ADOで接続可能なDBであれば使用可能だと思います。(でもWSHが利用可能な環境でしか実行できません。)
テンプレートの汎用属性として、sanitizeがある。これは、データに含まれるタグを取り除いたりする方法を指定する。
Movable Typeのマニュアルのひな形 TAG たち > Tag 全体を通しての属性によると
疑いのある文書に,浄化フィルターをかけます. この属性の値が 1 の場合, weblog の設定か全体の設定でしてある,標準の浄化ルールが適用されます. 属性値が 0 の場合,この Tag に関しては浄化が行われません. 属性値がそれ以外の場合,属性値は浄化ルールとして扱われます.
で、すべてのタグを取り除きたい場合は、sanitize=""とすればいいのかと思ったら、それではどうも0と同じ扱いになるらしい。いったいどうしたらよいのでしょうか。
エントリーのタイトルでの検索結果をでるように作ったものを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...
Old&New: Computer: Visual Studio 6.0: 秀丸とVC の連携に、VC++でカーソルのある行をにカーソルがある状態で秀丸を開く方法が紹介されてます。使えるー。
文字定数と文字列リテラルの大きな違いとして、シングルクオートで括ったら\0が付かない、ダブルクオートなら付く、ってことらしい。Perlとは違うのね。
参考:プログラミング演習III ~C言語中級編~
関数あれこれ
strchr 文字列から文字を探す
strstr 文字列から文字列を探す
strrchr 文字列の中に文字が含まれている最後の場所を探す
_snprintf 引数にsprintfする
sscanf 文字列よりscanfみたいにして値を取り出す。
実数型の内部表現で一般に用いられる形式、IEEE754 floating-point standard について。
先頭より、以下のようにビットを割り当てる。
±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 倍精度浮動小数点数のフォーマットに詳しく解説したものがあります。
MTGoogleSearchなどのタグを使って、エントリーのタイトルの検索結果を出そうと試みているのですが、文字化けしてしまいます。
Google API で文字化けでも、同じような症状が。でも、この際とは「EUCだから文字化け?」ってなってますが、raindropはUTF-8なんだけどな・・・。引き続き要調査。
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="_blank"を毎回書くのがめんどくさい、というところ。要はfrog.raindrop.jp以外のホストへのリンクにはtargetを勝手につけるようなフィルタがあればいいなってところですか。そんなの、誰かが作ってそうなので、探してみようと思っているのですが、同時に、私の悪い癖「作ってみたい!」ってのも少しあるわけです。
そこで、調査に乗り出したところなのですが、これなんか参考になりそうです。
MovableTypeのプラグイン作成(邦訳)
ただし参考になるかならないかは、これから読むわけです。
もう、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 |
Net::DNSを使用した実装例です。
Email::Validを使用すると可能なのですが、リトライする、レコードなしはNGだが、タイムアウトなどのエラーはとりあえずOKとするなど、柔軟性がほしかったので作ってみたもの。でもよく考えたら、ここに載せなくても、Email::Validのソースをみたらいつでもよいサンプルになるのかもしれません。
Windows 2000の頃に、Ctrl + Alt + Delを押下すると、「Windowsのセキュリティ」ってダイアログがでて、そこからシャットダウンしたり、ログオフしたりできて便利だったのに、Windows XPではタスクマネージャが出るなーって思ってました。タスクマネージャは別にCtrl + Shift + Escで出せるからどうでもいいのにーって。でも、使ってるうちにいつの間にか、Windows XpでもCtrl + Alt + DelでWindowsのセキュリティ画面が出るようになって、何でかなって思ってました。どうやら、ユーザの簡易切り替えと関係があるみたい。簡易切り替えを使用すると、タスクマネージャになるみたいです。なんか変なのー。
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 で宣言していました。修正しました。
# うわーん、かっこわるー (-_-;)
CGIからsendmailでメール送信するときに、送信に成功したかエラーになったかを取得する方法を調べてみたのでとりあえず実験編です。
まず、送信エラー時にエラーメールを返す、ってやつ。通常メールクライアントからSMTPに投げると返ってくるけど、同じことをさせるには、sendmailの-fオプションで返信先を指定します。sendmailについてはsendmailのman page[www.linux.or.jp]が参考になります。ためしにてきとうなアドレスに送ってみたら、ちゃんと返ってきました 笑。
も一個、sendmailは実行時にステータスを返してくるのを取得してみよう、ってやつ。特殊変数$?にステータスコードが入ってくる・・・はずだけど、そのような条件を作れませんでした。なので、定数を宣言したのみ。まあ、画面出力してみてます。