小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Active Server Pages

Windows7にクラシックASPをインストールする

はじめに このエントリでは、Windows7にクラシックASP(Active Server Pages)をインストールする方法について書いています。Windows7のIIS7.5にはデフォルトでは、クラシックASPは入っていません。このため、手動でインストールする必要があります。 Windows7…

Visual Studio 2008でクラシックASPをデバッグする方法

はじめに このエントリでは、Visual Studio 2008でクラシックASPをデバッグする方法について書いています。 以下の環境で確認しました。 OS Windows XP Professional SP3 IIS IIS 5.1 Visual Studio Visual Studio 2008 Professional 仮想ディレクトリのサー…

Active Server Pagesのコアasp.dllの格納場所

Active Server Pagesのコアであるasp.dllは以下の場所に格納されています。 Windows XPでもWindows Serverでも格納場所は同じです。 C:\WINDOWS\system32\inetsrv\asp.dll ASPの本体はC:\WINDOWS\system32\inetsrv\asp.dllです。 これはCOM DLLで、次のペー…

Active Server Pages(レガシーasp)開発で学んだこと(2)

はじめに 僕は、会社に入社してから4年くらいの間、Active Server Pages(最近では、レガシーASPやクラシックASPと呼ばれる)を使ったアプリケーションの開発をしてきました。 昨年、Active Server Pages(レガシーasp)開発で学んだこと(1) - 大人になったら…

VBScriptで簡易的なhtmlspecialchars関数を実装する

はじめに VBScriptで、PHPのhtmlspecialcharsメソッド(特殊文字を HTML エンティティに変換する)を実装してみました。 Function htmlspecialchars(Byref string, Byref quote_style) Dim tmp tmp = string tmp = Replace(tmp, "&", "&") tmp = Replace(t…

VBScriptで一方向ハッシュ関数を利用する方法

はじめに このエントリでは、VBScriptで一方向ハッシュ関数を使って、ハッシュ値を生成する方法について書いています。 結論 VBScriptにはSHA1やMD5といったアルゴリズムを用いてハッシュ値を生成する関数がありません。 このため、ハッシュ値の生成が必要な…

クラシックASPでServerVariablesコレクションを列挙する

はじめに サーバの情報やアプリケーションにアクセスしてきたクライアントの情報を格納しているServerVariablesコレクションですが、格納している情報のキーが多すぎて、必要な情報をどうやって取得するのかをいつも忘れてしまいます。 そこで、ServerVariab…

クラシックASPでWebサーバとは別のサーバにファイルを作成する方法

はじめに クラシックASP(Active Server Pages)でIISが動作しているサーバとは別のサーバ上にファイルを作成する方法を調べたので、まとめてみました。 別サーバ(リモートサーバ)にファイルを作成する IISの動作しているWebサーバAとネットワークで繋がってい…

クラシックASPでファイルアップロードを実現する

はじめに クラシックASP(ASP.NETではない)では、サーバにファイルをアップロードする機能を実現できないと思っていたのですが、クラシックASPでもファイルアップロードの仕組みを実現できることがわかりました。 クラシックASPでファイルアップロードを実現…

クラシックASPのアプリケーションをhttpsで動作させる

クラシックASPのアプリケーションをhttpsの環境で動作させる方法を調べてみました。 IISでhttpsを利用する IISでHTTPSサービスを利用するには、以下の手順でSSL通信を要求するような構成にします。以下のドキュメントは、Windows Server 2000(IIS5.0)向けに…

VBScriptのADODB.Recordsetを使ってソート(sort)する

はじめに VBScriptには、JavaScriptでいうところのarray.sort()のような標準のソート(並び替え)関数がありません。このため、大抵はソート関数を自作することになるのですが、ADODB.Recordsetオブジェクトを使うと、簡単にソートが実現できます。 ADODB.Reco…

CommandTimeoutとSQLServerのSET LOCK_TIMEOUTについて

ADODB.ConnectionオブジェクトのCommandTimeoutプロパティに指定するタイムアウト時間とSQLServerのSET LOCK_TIMEOUTで指定するタイムアウト時間を混同していたので、調べてみました。 CommandTimeoutプロパティ CommandTimeoutには、ASPなどのスクリプトか…

クラシックASPでODBCを使ってデータベースに接続する

クラシックASPでODBCを経由してデータベースに接続する方法をコードポケット的に書いてみました。 コードポケット 誰に教えられたのでもないのですが、ぼくは冬眠前のリスのようにコード片を溜め込んでいます。コードを溜め込んでいるディレクトリをぼくは「…

クラシックASPはUnicode(UTF-16)をサポートしていない

IISで実行されるクラシックASPのスクリプトエンジンは、Unicode(UTF-16)で保存されたASPファイルを解釈できません。Unicode(UTF-16)の形式で保存したASPファイルを実行すると、以下のようなエラーになります。 アクティブ サーバー ページ、ASP 0239 (0x8000…

Windows Server 2003 SP2でSession_OnEnd()が動作しない問題と対処方法

Windows Server 2003 SP2には、クラシックASPアプリケーションのSession_OnEndが動作しないというバグがあります。 Service Pack 2 (SP2) には、Microsoft Windows の Server 2003 をインストールします。 Session_OnEnd() イベントを使用する ASP Web アプ…

クラシックASPでADODB.RecordSetを使ってデータベースの値を取得する

クラシックASPでADODB.RecordSetオブジェクトを使って、データベースから検索するコード。IDとNAMEというカラムを持つ、TABLE1というテーブルのデータをすべて取得する。 ' データベースへの接続 Dim connect : Set connect = CreateObject("ADODB.Connectio…

クラシックASPで画面に出力する文字コードを一時的に変更する方法

クラシックASPにおいて、クライアントに出力する際の文字コードは、@codepageディレクティブで指定したコードページに従います。@codepageディレクティブを指定していない場合は、サーバの既定コード*1で出力されます。ただし、Session.Codepageプロパティを…

Visual Studio 2005でクラシックASPをデバッグする方法(まとめ)

クラシックASPは、Visual InterDevでデバッグすることができますが、Visual InterDevはUTF-8のソースコードを表示できないという問題があります。この問題を回避するには、Visual Studio 2005(Visual Web Developer)を利用します。 以下、Visual Studio 20…

Visual Studio 2005でクラシックASPをデバッグする方法(On Windows XP Pro)(翻訳)

Visual Studio 2005でクラシックASPをデバッグする方法を探していたら、以下のページを見つけました。Google翻訳を駆使して、訳してみました。 Debugging Classic ASP pages in Visual Studio 2005 on Windows XP Pro Debugging Classic ASP pages in Visual…

Visual Studio 2005でクラシックASPをデバッグする方法(IIS5.1)(翻訳)

Visual Studio 2005でクラシックASPをデバッグする方法を探していたら、以下のページを見つけました。Google翻訳を駆使して、訳してみました。 How to debug classic ASP pages in VS 2005: IIS 5.1 – Mikhail Arkhipov (MSFT)'s WebLog How to debug classi…

クラシックASPの内部文字コードについて調べてみた。

Active Server Pages(以下、クラシックASP)のスクリプトエンジンは、文字情報を内部でどのような文字コードとして扱っているのかを調べてみました。結論から言いますと、文字コードセットはUCS-2。そして、エンコーディング方式にはUTF-16LEが使われていま…

VBScriptでサロゲートペアの文字を検出する方法

はじめに Web系雑記: サロゲートペアをJavaScriptで検出する方法にインスパイアされて、サロゲートペアの文字を検出するVBScriptを作成してみました。 サロゲートペアとは サロゲートペアとは、通称4バイト文字と呼ばれる特殊な文字を表現する方法のことです…

Visual Studio 2008 SP1ではクラッシックASPのインテリセンスとデバッグがサポートされている

クラシックASPの開発環境は、MicrosoftのVisual InterDevくらいしかないものだと思っていたのですが、Visual Studio 2008 SP1では、クラシックASPのインテリセンス(入力支援機能)とデバッグ機能がサポートされているようです。 前バージョンのVisual Studi…

CDO.Messageオブジェクトを利用してUTF-8のメールを送信する

CDO.Messageオブジェクトを利用してメールを送信すると、通常ではiso-2022-jp(JISコード)エンコーディングで送信されます。日本語以外の外国語を交えたメールを送信する場合には、UTF-8でエンコードしたメールを送信する必要があります。調べてみると、CDO…

IIS(Internet Information Server)のメタベースプロパティを変更する方法

Microsoftが提供するInternet Information Server(以下、IIS)には、メタベースと呼ばれる構成情報を管理する機構が存在し、構成情報はメタベースプロパティというプロパティによって参照したり、値を変更することができます。このメタベースプロパティを変…

ADODB.Streamオブジェクトを利用したUTF-8ファイルの読み書き

はじめに VBScriptでファイルを扱う場合、通常はFileSystemObjectを利用します。しかしながら、FileSystemObjectはShift_JISあるいはUTF-16形式で保存されたファイルしか扱えません。このため、VBScriptでUTF-8のファイルを扱うにはADODB.Streamオブジェクト…

クラシックASPアプリケーションのUTF-8化についてまとめてみた。

クラシックASPで作成したアプリケーションをUTF-8化する際のポイントをまとめてみました。 Webサーバ Windows 2000 および 2003(もちろん2008も)ServerはUnicodeに対応しているため、Webサーバ側で特別な設定をする必要はありません。 Windows 2000 におけ…

ADODB.Recordsetのcloseメソッドでエラーが発生する場合の対処法

クラシックASPで、データベースを操作する際にはADODB.Recordsetを使うことができる。このADODB.Recordsetオブジェクトには、オープンしたレコードセットをクローズするためのcloseメソッドがあるが、このcloseを呼び出す場合にケースによって、エラーするこ…

ADODB.RecordsetでRecordCountを取得する

はじめに レガシーASP(クラシックASP)で、SQLを発行してデータベースからデータを取得する際に、結果として取得したレコードの件数を取得したい場合があります。このエントリでは、ADODB.RecordsetのRecordCountで正しいレコード数を取得する方法を紹介しま…

Visual Studio2008でレガシーASP(クラシックASP)をデバッグする

Visual Studio 2008でレガシーASPをデバッグする方法を探していたら、以下のページが見つかった。まだ検証できていないけど、その前にさくっと訳してみた。 Debugging Classic ASP ( VBScript ) in Visual Studio 2008 はじめに この記事は、Visual Studio 2…