October 2006アーカイブ

ネットワーク上のPCにアクセスする場合、以下の画面が表示されることがあります。

接続

ユーザー名/パスワードを入力することによりアクセス可能になります。「パスワードを記憶する」にチェックすると、次回より入力を省略することができます。しかし最初に接続をした時に登録したユーザ名/パスワードの設定で、PC再起動後にうまく接続できない場合があります。最初に接続した時には、接続先マシンのユーザ名でアクセスしたにも拘わらず、再起動後には参加しているドメインのユーザとしてアクセスを試みているようなのです。(ちなみに接続しようとしているマシンは、ドメインに参加していません。)ドメイン参加ユーザと接続マシンに登録されている接続用ユーザは、当然のことながら管理元が異なるので扱いが異なります。どうして設定情報が変わってしまうのかよくわかりませんが・・・。

どうにかしたいけど、直接アクセスを試みると「ユーザー名が見つかりません」と怒られてしまいます。アクセスできないと困るので、ここは記憶させたパスワードをリセットすることにしましょう。

以下の手順で「ユーザーアカウント」の画面を開いてください。

[コントロールパネル] → [ユーザーアカウント] → [詳細設定]タブ

ユーザーアカウント

パスワード管理(M)を選択すると、接続先のコンピュータ名もしくはIPアドレスが表示されるので、ここから直接プロパティを開いて対象となるコンピュータへの接続情報(ユーザー名/パスワード)を変更することができます。また、同画面から接続情報を追加/削除を行うことも可能です。アクセスするユーザーを変更したい場合は、この画面から編集することができます。

接続情報を削除すると「パスワードを記憶する」の設定内容が削除されるわけであります。削除することで「ユーザー名が見つかりません」と怒られることもなく、再度、接続画面が表示させるようになります。

接続


「パスワードを記憶する」のチェック、実はかなりクセ者です・・・。

SQL*Plus上で、SQLの処理にかかった時間を測定する方法があります。手順としては以下の通り。


  1. 実行結果(クエリの結果)を表示させない。(※ 表示時間もカウントされてしまうため。)
  2. 経過時間を測定する設定を行う。
  3. SQL文を実行。

1. に関して索引の絡みなどを考えると、実行計画もあると便利なので、
AUTOTRACEを使用し、結果セットのみを表示しないようにします。経過時間を表示するにはTIMINGを使用します。


  1. set autotrace traceonly
  2. set timing on
  3. 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

索引を設定する前後で調べると、かなり有効な結果が得られるのではないでしょうか。(まぁ、索引設定前後の速度は、時刻を計るまでもない変貌振りですが・・・。)

タスクマネージャを起動するにはいくつか方法があります。

よく使う方法としては

1.[Ctrl]+[Alt]+[Delete] → [タスクマネージャ]
2.タスクバー右クリック → [タスクマネージャ]

たぶんこんな方法は使わないと思うけど、

3.[スタート] → [ファイル名を指定して実行] → [taskmgr]

なんて方法でも起動できたりします。
そして一番便利な方法は


4.[Ctrl]+[Shift]+[Esc]


これだけ。簡単でしょ。頻繁に使用するアプリゆえに、ショートカットは知っておいて損はないですよね。

Windows オートログオン

2006.10.08 Sunday

Windows XP(2000)でユーザー名とパスワードを設定したにも拘わらず、OSの起動時に自動的にログオンする方法があります。以下、レジストリの操作により実装できるのですが、うっかり操作を間違えるとOSが起動しなくなる可能性(フォーマットしてOSの再インストールしなきゃダメ。)もあるので、十分に注意してください。あと、実装する場合はセキュリティ面でも注意が必要です。


  1. 「スタート」→「ファイル名を指定して実行」→「regedit」
  2. 「¥HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows NT¥
    CurrentVersion¥Winlogon」を開く
  3. 以下の値を設定する(無い場合は新規に追加)
    変数名設定値
    DefaultDomainNameREG_SZログオン先ドメイン
    DefaultUserNameREG_SZログオンユーザー名
    DefaultPasswordREG_SZログオンユーザーパスワード
  4. 次の値を追加
    変数名設定値
    AutoAdminLogonREG_SZ1
  5. AutoAdminLogonの値で、オートログオンのON・OFFを切り替えられるので、もし無効にしたい場合は0にしてあげれば良い。
  • AUX
  • COM1 ~ COM9
  • CON
  • LPT1 ~ LPT9
  • NUL
  • PRN

Windowsで、これらの名前をファイル名/フォルダ名としてつけることはできません。小文字にしても拡張子を付けてもダメです。これらはMS-DOSの予約語(デバイス名)として使われています。無理にファイルを作成しようとすると、「指定されたファイル名は既に存在します。」と怒られてしまいます。しかもこれらの予約語を含むパスに無理矢理アクセスしようとすると、Windows9x系(95, 98, ME)ではOSがハングしてしまうみたいです。(「concon問題」で調べればすぐに出てきます。)

VB6.0 各種型

2006.10.06 Friday

いろいろな言語に触れると、ふとしたタイミングでド忘れするのでメモ。

データ型サイズ範囲*1
Byte型1byte0 ~ 255-
Boolean型2byteTrue 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型(数値)16byteDouble型と同じ-
Variant型(文字列)22byte
+文字列長
可変長文字列型と同じ-
ユーザー定義型要素に依存内容によりけり-

*1 : 型宣言文字

VB6.0 スクロールする方法

2006.10.05 Thursday

このご時勢でVB6.0の話をするのはどうかと思うけど...それでもまだ.NETに移行せずに、VB6.0で稼動しているシステムも多いし、システム改訂の需要があれば対応しなきゃいけないのは、仕事上どうしようもないわけで...。

VB6.0の開発環境を初めて触った時、マウスホイールでコードがスクロールしてくれなくて随分と苦労したものです。1モジュール1000ステップを越えると、ドラッグしながらスクロールするってのはかなり非効率です。そこで、マウスホイールイベントできちんとスクロールしてくれるようにする方法をメモしておきます。(時代遅れなのは重々承知してます。でもしょうが無いんです。。。)

実はこの機能、きちんと対応する方法がマイクロソフトのサポートページに記載してあります。アドレスは↓こちら
http://support.microsoft.com/default.aspx?scid=kb;ja;837910

概要は大体こんな感じ

  1. VB6MouseWheel.EXE パッケージをダウンロード (Click!)
  2. VB6MouseWheel.EXE を適当な場所に解凍 (C直下がいいかと。)
  3. [スタート]→[ファイル名を指定して実行]で以下のコマンドを入力
    「regsvr32 (解凍先)¥VB6IDEMouseWheelAddin.dll」
  4. VB6.0を起動し[アドイン] →[アドイン マネージャ]
  5. 「MouseWheel Fix」を選択
  6. [ロード/アンロード] と [起動時にロード]の項目にチェック
  7. [OK] で完了

これでマウスホイールイベントを受け付けてもらえるようになります。ってかなんでこんな面倒なことをしなきゃいけないんだか。ねぇ。

Javascript parseInt関数

2006.10.04 Wednesday
parseInt(strNumber [,radix]);

第二引数は基数を表すけど、JAVAと違って省略したからって必ず10進数で変換されるわけじゃないらしいです。(JAVAの場合はradix省略時は10進数で変換。)

省略時、第一引数が 「 0X 」で始まれば16進数、「 0 」で始まれば8進数。だから「"08"」や「"09"」は、そもそも8進数として存在しない値だから、戻り値が「 0 」になっちゃう。だから第一引数に「 0 」から始まる値が入る可能性がある場合、radixの設定は必須なわけで。その原理で考えれば戻り値で「 0 」が戻ってくるのはバグじゃないんだろうけど...。

結局のところ、万が一に備えて第二引数もほぼ必須で考えた方が良さそうですね。楽しちゃダメってことですよね。最近は普通にAjaxの技術も見られますので、Javascriptについてもちゃんと勉強しないといけない気がしてきました。

MovableType3.3が正式にリリースされたそうで、早速導入してみました。方法は、3.3のマニュアルにしたがって実施。取り敢えず上手くいったと思いきや・・・なぜかエントリー投稿画面のボタン(テキストエリア直上の太字にしたりするやつ)が変な位置に表示されていました。(画面キャプチャするの忘れました・・・。)

流石にバグじゃないだろうと思っていたのですが、解決方法がなかなか見つからず。IEではきちんと表示されているのに。まったく。で、キャッシュを削除したら無事表示されました。よかったよかった。

MovableTypeのタグマニュアルを見ていたら、「使えるタグ」が意外と存在することを知りました。今回はその中の1つ、MTLinkタグについてご紹介します。
MTLinkタグは以下の属性があります。

  1. template
  2. entry_id

これらの属性を付加することにより、「テンプレート」または「指定エントリー」のURLを自動的に生成してくれるというものなのです。それぞれアンカータグ内で使用する場合を例として挙げてみると・・・

  1. 指定したテンプレートへのリンク
    <a href="<$MTLink template="テンプレート名"$>">リンク文字列</a> 「テンプレート名」にはテンプレート編集画面で設定した名前を設定します。
  2. 特定のエントリーへのリンク
    <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

設定方法

  1. 上記サイトよりファイルをダウンロード
  2. ダウンロードファイル「eval-template.txt」を「eval-template.pl」へリネーム
  3. MovableTypeのpluginsディレクトリにファイルをアップロード
    (プラグイン側の設定はここまで。画面からの設定は不要です。)
  4. MTタグを使用したい所に属性「eval="1"」を加える
    → この属性を加えるはテンプレートファイル内のMTタグです。

以上の方法で、「MTLink」タグがテンプレート以外で使用可能になります。4について具体的な値の設定方法は以下の通り。

エントリー内タグを使用したい場合エントリー追記部内で使用したい場合
追加前<$MTEntryBody$><$MTEntryMore$>
追加後<$MTEntryBody eval="1"$><$MTEntryMore eval="1"$>

尚、リンク先のサイトでも注意しているように、どんなテンプレートタグにも使える反面、悪用される危険を伴うため、コメントやトラックバックのテンプレートに対し有効にしないように気をつけましょう。内部で閉じているってことが、セキュリティー面では大切なんですね (*^ー゚)b

MovableTypeでエントリー投稿時にトラックバックを送る際、エラー500で戻ってくきてしまう事象が起こりました。どうやら送った先のサーバーでの処理時間が遅かったために、レスポンスが戻ってくる前に勝手にタイムアウトしちゃってたみたいです。

原因を探していたら、MovableTypeのトラックバックの処理フローについて、非常に詳しく説明しているサイトを見つけました。
 ↓
nlog(n): トラックバック送信時のエラー

要するにPing送信時のレスポンス待ち時間を延ばせば良いと。なるほど、そんな設定をする箇所があったんですね。ConfigファイルはMTのバージョンが変わったので「mt-config.cgi」を修正します。(バージョン3以降の話・・・かな?)しかもデフォルトで設定する箇所がコメントアウトされています。

↓こちらですね。(個人により設定が異なるので行数については割愛します。)

# PingTimeout 20

なので上記のコメントアウトを外して、適当な秒数を設定してあげます。今回はnlog(n)さんのサイトと同じく60秒に設定することにします。

# PingTimeout 60

さて、これで500エラーが出なくなると助かるのですが・・・。

About

Name : NJ
age : 28くらい
技術メモなどなど。個人的な備忘録ではありますが、情報として役に立てたら何よりです。難しい事はよくわかりません。
お便りはこちらまで。