October 2006アーカイブ
Windows XP ネットワーク接続時のパスワード保存先
ネットワーク上のPCにアクセスする場合、以下の画面が表示されることがあります。

ユーザー名/パスワードを入力することによりアクセス可能になります。「パスワードを記憶する」にチェックすると、次回より入力を省略することができます。しかし最初に接続をした時に登録したユーザ名/パスワードの設定で、PC再起動後にうまく接続できない場合があります。最初に接続した時には、接続先マシンのユーザ名でアクセスしたにも拘わらず、再起動後には参加しているドメインのユーザとしてアクセスを試みているようなのです。(ちなみに接続しようとしているマシンは、ドメインに参加していません。)ドメイン参加ユーザと接続マシンに登録されている接続用ユーザは、当然のことながら管理元が異なるので扱いが異なります。どうして設定情報が変わってしまうのかよくわかりませんが・・・。
どうにかしたいけど、直接アクセスを試みると「ユーザー名が見つかりません」と怒られてしまいます。アクセスできないと困るので、ここは記憶させたパスワードをリセットすることにしましょう。
以下の手順で「ユーザーアカウント」の画面を開いてください。
[コントロールパネル] → [ユーザーアカウント] → [詳細設定]タブ

パスワード管理(M)を選択すると、接続先のコンピュータ名もしくはIPアドレスが表示されるので、ここから直接プロパティを開いて対象となるコンピュータへの接続情報(ユーザー名/パスワード)を変更することができます。また、同画面から接続情報を追加/削除を行うことも可能です。アクセスするユーザーを変更したい場合は、この画面から編集することができます。
接続情報を削除すると「パスワードを記憶する」の設定内容が削除されるわけであります。削除することで「ユーザー名が見つかりません」と怒られることもなく、再度、接続画面が表示させるようになります。

「パスワードを記憶する」のチェック、実はかなりクセ者です・・・。
Oracle SQL文の処理時間を測定
SQL*Plus上で、SQLの処理にかかった時間を測定する方法があります。手順としては以下の通り。
- 実行結果(クエリの結果)を表示させない。(※ 表示時間もカウントされてしまうため。)
- 経過時間を測定する設定を行う。
- SQL文を実行。
1. に関して索引の絡みなどを考えると、実行計画もあると便利なので、
AUTOTRACEを使用し、結果セットのみを表示しないようにします。経過時間を表示するにはTIMINGを使用します。
- set autotrace traceonly
- set timing on
- select c_hoge from T_HOGE where ・・・
↓こんな感じになります。
SQL> set autotrace traceonly
SQL> set timing on
SQL> select c_hoge from T_HOGE;
12行が選択されました。
経過: 00:00:00.08
実行計画
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=3 Card=12 Bytes=972)
1 0 TABLE ACCESS (FULL) OF 'T_HOGE' (TABLE) (Cost=3 Card=12 Bytes=972)
統計
----------------------------------------------------------
1 recursive calls
0 db block gets
8 consistent gets
6 physical reads
0 redo size
2773 bytes sent via SQL*Net to client
504 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
12 rows processed
索引を設定する前後で調べると、かなり有効な結果が得られるのではないでしょうか。(まぁ、索引設定前後の速度は、時刻を計るまでもない変貌振りですが・・・。)
Windows タスクマネージャの起動方法
タスクマネージャを起動するにはいくつか方法があります。
よく使う方法としては
1.[Ctrl]+[Alt]+[Delete] → [タスクマネージャ]
2.タスクバー右クリック → [タスクマネージャ]
たぶんこんな方法は使わないと思うけど、
3.[スタート] → [ファイル名を指定して実行] → [taskmgr]
なんて方法でも起動できたりします。
そして一番便利な方法は
4.[Ctrl]+[Shift]+[Esc]
これだけ。簡単でしょ。頻繁に使用するアプリゆえに、ショートカットは知っておいて損はないですよね。
Windows オートログオン
Windows XP(2000)でユーザー名とパスワードを設定したにも拘わらず、OSの起動時に自動的にログオンする方法があります。以下、レジストリの操作により実装できるのですが、うっかり操作を間違えるとOSが起動しなくなる可能性(フォーマットしてOSの再インストールしなきゃダメ。)もあるので、十分に注意してください。あと、実装する場合はセキュリティ面でも注意が必要です。
- 「スタート」→「ファイル名を指定して実行」→「regedit」
- 「¥HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows NT¥
CurrentVersion¥Winlogon」を開く - 以下の値を設定する(無い場合は新規に追加)
変数名 型 設定値 DefaultDomainName REG_SZ ログオン先ドメイン DefaultUserName REG_SZ ログオンユーザー名 DefaultPassword REG_SZ ログオンユーザーパスワード - 次の値を追加
変数名 型 設定値 AutoAdminLogon REG_SZ 1 - AutoAdminLogonの値で、オートログオンのON・OFFを切り替えられるので、もし無効にしたい場合は0にしてあげれば良い。
Windows 絶対につけられないファイル名
- AUX
- COM1 ~ COM9
- CON
- LPT1 ~ LPT9
- NUL
- PRN
Windowsで、これらの名前をファイル名/フォルダ名としてつけることはできません。小文字にしても拡張子を付けてもダメです。これらはMS-DOSの予約語(デバイス名)として使われています。無理にファイルを作成しようとすると、「指定されたファイル名は既に存在します。」と怒られてしまいます。しかもこれらの予約語を含むパスに無理矢理アクセスしようとすると、Windows9x系(95, 98, ME)ではOSがハングしてしまうみたいです。(「concon問題」で調べればすぐに出てきます。)
VB6.0 各種型
いろいろな言語に触れると、ふとしたタイミングでド忘れするのでメモ。
| データ型 | サイズ | 範囲 | *1 |
|---|---|---|---|
| Byte型 | 1byte | 0 ~ 255 | - |
| Boolean型 | 2byte | True or False | - |
| Integer型 | 2byte | -32,768 ~ 32,767 | % |
| Long型 | 4byte | -2,147,483,648 ~ 2,147,483,647 | & |
| 単精度浮動小数点数 (Single)型 | 4byte | 【負】 -3.402823E38 ~ -1.401298E-45 【正】 1.401298E-45 ~ 3.402823E38 | ! |
| 倍精度浮動小数点数 (Double)型 | 4byte | 【負】 -1.79769313486232E308 ~ -4.94065645841247E-324 【正】 4.94065645841247E-324 ~ 1.79769313486232E308 | # |
| 通貨(Currency)型 | 8byte | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 | @ |
| 10進(Decimal)型 | 14byte | 【整数】 -79,228,162,514,264,337,593,543,950,335 ~ 79,228,162,514,264,337,593,543,950,335 【小数第28位まで】 -7.9228162514264337593543950335 ~ 7.9228162514264337593543950335 【0を除く絶対値の最小値)】 0.0000000000000000000000000001 | - |
| Date型 | 8byte | 西暦 100/1/1 ~ 西暦 9999/12/31 | - |
| Object型 | 4byte | - | |
| String型(可変長) | 10byte +文字列長 | 0byte ~ 2Gbyte | $ |
| String型(固定長) | 文字列長 | 1byte ~ 2Gbyte | $ |
| Variant型(数値) | 16byte | Double型と同じ | - |
| Variant型(文字列) | 22byte +文字列長 | 可変長文字列型と同じ | - |
| ユーザー定義型 | 要素に依存 | 内容によりけり | - |
*1 : 型宣言文字
VB6.0 スクロールする方法
このご時勢でVB6.0の話をするのはどうかと思うけど...それでもまだ.NETに移行せずに、VB6.0で稼動しているシステムも多いし、システム改訂の需要があれば対応しなきゃいけないのは、仕事上どうしようもないわけで...。
VB6.0の開発環境を初めて触った時、マウスホイールでコードがスクロールしてくれなくて随分と苦労したものです。1モジュール1000ステップを越えると、ドラッグしながらスクロールするってのはかなり非効率です。そこで、マウスホイールイベントできちんとスクロールしてくれるようにする方法をメモしておきます。(時代遅れなのは重々承知してます。でもしょうが無いんです。。。)
実はこの機能、きちんと対応する方法がマイクロソフトのサポートページに記載してあります。アドレスは↓こちら
http://support.microsoft.com/default.aspx?scid=kb;ja;837910
概要は大体こんな感じ
- VB6MouseWheel.EXE パッケージをダウンロード (Click!)
- VB6MouseWheel.EXE を適当な場所に解凍 (C直下がいいかと。)
- [スタート]→[ファイル名を指定して実行]で以下のコマンドを入力
「regsvr32 (解凍先)¥VB6IDEMouseWheelAddin.dll」 - VB6.0を起動し[アドイン] →[アドイン マネージャ]
- 「MouseWheel Fix」を選択
- [ロード/アンロード] と [起動時にロード]の項目にチェック
- [OK] で完了
これでマウスホイールイベントを受け付けてもらえるようになります。ってかなんでこんな面倒なことをしなきゃいけないんだか。ねぇ。
Javascript parseInt関数
parseInt(strNumber [,radix]);
第二引数は基数を表すけど、JAVAと違って省略したからって必ず10進数で変換されるわけじゃないらしいです。(JAVAの場合はradix省略時は10進数で変換。)
省略時、第一引数が 「 0X 」で始まれば16進数、「 0 」で始まれば8進数。だから「"08"」や「"09"」は、そもそも8進数として存在しない値だから、戻り値が「 0 」になっちゃう。だから第一引数に「 0 」から始まる値が入る可能性がある場合、radixの設定は必須なわけで。その原理で考えれば戻り値で「 0 」が戻ってくるのはバグじゃないんだろうけど...。
結局のところ、万が一に備えて第二引数もほぼ必須で考えた方が良さそうですね。楽しちゃダメってことですよね。最近は普通にAjaxの技術も見られますので、Javascriptについてもちゃんと勉強しないといけない気がしてきました。
MovableType 3.3でエントリー画面が変に
MovableType3.3が正式にリリースされたそうで、早速導入してみました。方法は、3.3のマニュアルにしたがって実施。取り敢えず上手くいったと思いきや・・・なぜかエントリー投稿画面のボタン(テキストエリア直上の太字にしたりするやつ)が変な位置に表示されていました。(画面キャプチャするの忘れました・・・。)
流石にバグじゃないだろうと思っていたのですが、解決方法がなかなか見つからず。IEではきちんと表示されているのに。まったく。で、キャッシュを削除したら無事表示されました。よかったよかった。
Movable Type エントリー内でMTタグを使用する方法
MovableTypeのタグマニュアルを見ていたら、「使えるタグ」が意外と存在することを知りました。今回はその中の1つ、MTLinkタグについてご紹介します。
MTLinkタグは以下の属性があります。
- template
- entry_id
これらの属性を付加することにより、「テンプレート」または「指定エントリー」のURLを自動的に生成してくれるというものなのです。それぞれアンカータグ内で使用する場合を例として挙げてみると・・・
- 指定したテンプレートへのリンク
<a href="<$MTLink template="テンプレート名"$>">リンク文字列</a>「テンプレート名」にはテンプレート編集画面で設定した名前を設定します。 - 特定のエントリーへのリンク
<a href="<$MTLink entry_id="エントリーID"$>">リンク文字列</a>「エントリーID」にはURLを生成したいエントリーのIDを設定します。
メリットとしては、例えばエントリー内で過去の記事にリンクを貼る場合、このタグを使うことによりエントリーのURLを変更しても影響が出ない点です。サーバーを変更してドメインが変わったり、またはhtmlからphp化してファイル拡張子が変わったり、エントリーファイルの命名方法自体を変更したり、などなど。どこかしらアドレスが変わってしまっても、このタグを使用していれば直接エントリー内のアドレスを変えずに、再構築の処理のみで済んでしまうので、非常に便利だと思います。
と、ここまで説明しておいて・・・実はMovableTypeではエントリー内でMTタグが使用できないのです。だから通常の使用方法では、上記メリットが何も得られないのです。そこで登場するのがプラグインです。
エントリー内においてMTタグを使用可能にできるプラグイン
(正確にはテンプレート以外でMTタグが使用可能にできるプラグイン)
「MT::Plugin::EvalTemplate」 by Life on the Kernel
設定方法
- 上記サイトよりファイルをダウンロード
- ダウンロードファイル「eval-template.txt」を「eval-template.pl」へリネーム
- MovableTypeのpluginsディレクトリにファイルをアップロード
(プラグイン側の設定はここまで。画面からの設定は不要です。) - MTタグを使用したい所に属性「eval="1"」を加える
→ この属性を加えるはテンプレートファイル内のMTタグです。
以上の方法で、「MTLink」タグがテンプレート以外で使用可能になります。4について具体的な値の設定方法は以下の通り。
| エントリー内タグを使用したい場合 | エントリー追記部内で使用したい場合 | |
|---|---|---|
| 追加前 | <$MTEntryBody$> | <$MTEntryMore$> |
| 追加後 | <$MTEntryBody eval="1"$> | <$MTEntryMore eval="1"$> |
尚、リンク先のサイトでも注意しているように、どんなテンプレートタグにも使える反面、悪用される危険を伴うため、コメントやトラックバックのテンプレートに対し有効にしないように気をつけましょう。内部で閉じているってことが、セキュリティー面では大切なんですね (*^ー゚)b
Movable Type トラックバック時の500エラー
MovableTypeでエントリー投稿時にトラックバックを送る際、エラー500で戻ってくきてしまう事象が起こりました。どうやら送った先のサーバーでの処理時間が遅かったために、レスポンスが戻ってくる前に勝手にタイムアウトしちゃってたみたいです。
原因を探していたら、MovableTypeのトラックバックの処理フローについて、非常に詳しく説明しているサイトを見つけました。
↓
【 nlog(n): トラックバック送信時のエラー 】
要するにPing送信時のレスポンス待ち時間を延ばせば良いと。なるほど、そんな設定をする箇所があったんですね。ConfigファイルはMTのバージョンが変わったので「mt-config.cgi」を修正します。(バージョン3以降の話・・・かな?)しかもデフォルトで設定する箇所がコメントアウトされています。
↓こちらですね。(個人により設定が異なるので行数については割愛します。)
# PingTimeout 20
なので上記のコメントアウトを外して、適当な秒数を設定してあげます。今回はnlog(n)さんのサイトと同じく60秒に設定することにします。
# PingTimeout 60
さて、これで500エラーが出なくなると助かるのですが・・・。