サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
www7a.biglobe.ne.jp/~tsuneoka
戻る 最近,LANを構築するための装置も大変安価となり家庭でも複数のパソコンを 持っている方は気軽にLANを構築することができるようになっています.当然仕事で パソコンを利用するときは,ネットワークに接続されていないパソコンは使い物に ならない状況になっているのではないでしょうか? Windows95やWindowsNTでは,標準で「パーソナルWebサーバ」などのように標準で Webサーバが提供されるようになりました.Webサーバは,HTML (HyperText Makeup Language)ファイルをInternet ExploerなどのWebブラウザで 表示させるサーバとして利用しますが,単にテキストファイルを転送する機能として でなくWebサーバのCGIで,なにか処理を行わせて結果を受信することも可能です. 最近は,ASP(Active Server Page)でデータベースへの
戻る EXEファイルの種類をEXEヘッダーから判断して,どのような環境で実行すべきかを ローダーが判断します.たとえば,WindowsNTで16ビットアプリケーションを実行し ようとすると,DOSサブシステムとWOW(Windows On Win32)が動作を開始して,16ビット アプリケーションを実行できる環境を作り出します. ローダーが行う処理は意外と複雑で,メモリ内にモジュールをマッピングし, EXEファイルが利用するDLLのエントリポイントを設定したり多くの処理を必要と します.ある程度の規模を持つアプリケーションでは,EXEファイルやDLLをロードして マッピングするための処理時間は無視できないものとなってきています. そこで,少しでもローダーの処理を軽減して,アプリケーションの起動時間を速くする 方法について考えます. 9-1 最も簡単な高速化 Microsoft Office
戻る WindowsNTやWindows95は、ピアーツーピアー(peer to peer)の型と呼ばれる ネットワーク環境を提供しています。 これによりOSの利用者は、リモートマシンのクライアントとしてプリンタなど のリソースを共有し、またある時にはリモートマシンに対してリソースを提供する サーバとして動作します。 Windowsの場合、通常は1台のマシン上でアプリケーションを動作させますが、 ネットワーク上に処理能力の高いマシンがあれば、それを利用してアプリケーション を実行することができると便利です。 そこで、ここでは、Windows95, WindowsNT を利用して、リモートマシンに処理を 行わせる方法について考えてみましょう。 3-1 分散アプリケーション ○分散処理のメリットとWindows環境 UNIXマシンは、リモートマシンからTELENTで接続することにより利用できま
戻る Windows95,WindowsNTでは、スクリーンセーバーにパスワードを設定して、他の人が画面 を操作できないようにする機能が含まれます。 しかし、画面を操作中に席を離れてしまい、サーバーの画面をスクリーンセーバーで パスワードを設定しロックしたままにしておくことは、他の人の利用を妨げることにも なります。 そこで、一定時間マシンを利用していない場合は、自動的にログオフしてしまう スクリーンセーバーを作成して、利用者が席を離れてもトラブルが起こらないように できると便利です。 通常、スクリーンセーバは、長時間利用されないCRTの焼き付きを防いだり、 他人にデスクトップ上の情報を盗み見られないようにするために利用します。 しかし、マシンをある一定時間利用されていないときに、処理を行う必要があるとき や、利用していないデスクトップ画面上になにか情報を表示させるといった、本来の 利用方
戻る DOSでは、FEP(Front End Processer) と呼ばれていた「かな漢字変換機能」は、 Windowsでは IME(Input Method Editor)という名称となり、システムの一部として 提供され、制御するためのAPIも提供されるようになりました。 漢字(2バイト文字)を入力するときには、その度にIMEを起動するためのキーを入力 する必要があります。たとえば、IMEで入力する可能性が高いエディットボックスなどの 入力域では、キーを入力しなくても漢字が入力することができればキー操作がスムーズ にできるでしょう。 Windows95と共に、IMEも全面的に修正されました。とは言え、以前のメッセージ ベースのAPI も利用することができますし、キーボードからの操作は今までと同様に 可能です。新しくなった32ビットIMM API を利用することにより、処理が単純化 され
戻る 16ビットアプリケーションでは,簡単なデバッグを行うとき,Win16 API OutputDebugString でログを出力させ,Windows3.1 SDK 付属の "DBWin" アプリケーションでログを表示させることができました. しかし,Win32 では,OutputDebugString が出力するログを表示させる方法は, デバッガ以外にありません. しかし,デバッガ(Deveroper Studio や Win32 SDK 付属の WinDbg)は, Win32 API OutputDebugString を含むデバッグイベントを受信すると,デバッガに フォーカスが移動することがあるため,ウィンドウのメッセージのトレースを行う ときには大変困ります.そこで,32ビット版 DBWinを作成して,OutputDebugString を表示できるツールを作成して,デバッグログ
戻る MS-DOSやUNIXでは、Cランタイムルーチンを介してシステムコールを実行して いました。 Windowsプログラミングでは Win16, Win32 API がシステムコールとなっています。 このため、以前と比較してCランタイムルーチンは日陰の存在になっていますが、 CランタイムとAPIを必要に応じて使い分けることにより、パフォーマンスの向上 などに役立てることができます。 そこで、ここでは、Cランタイムルーチンの有効な活用法を考えてみます。 10-1 Cランタイムルーチンとは ○Cランタイムルーチンの用途 いわゆるC言語の関数と呼ばれるもの、例えば printf や scanf など は、Cランタイムルーチンに含まれます。 これらの関数は、OSや言語のメーカなどによってもサポートが異なり、また、Windows の中心的なAPIとなっているWin32 API は、Win16 AP
戻る WindowsNTでは,\WINNT\SYMBOLS に システムモジュールのDBGファイルをインストール することで,アプリケーションが異常終了したときの手がかりとすることができます. アプリケーションが異常終了したときに,即時対応しなければならない アプリケーションでは,リリース用のモジュールをデバッグバージョンのまま出荷 しているものを見かけますが,デバッグ情報をもったモジュールはそれだけで起動時の 速度を遅くしたり,リバースエンジニアリングの手助けをすることにもなりかね ません.そこで,DBGファイルを生成してモジュールからデバッグ情報を抜き出して, 必要に応じて利用する方法について考えます. 17-1 トラブル発生! ●トラブルの原因を突き止める古典的な方法 ユーザ先でアプリケーションがトラブルを起こした場合,そのときの状態を追跡する ための手段が必要なことがよくあります.
HTTP誕生の背景,HTTPとCGIの関係,HTTPヘッダの詳細 戻る 1.1 HTTPとCGIの普及 インターネット上のホームページをブラウズしたり,電子メールを利用することは, コンピュータ関係の技術者だけでなく,一般のユーザーでも当然のことになって います. また,ホームページを作成して個人がもつ情報を発信することも, それほど困難な話ではなくなってきています. さて,これらを実現している技術は,最新技術のように思われがちです. しかし,インターネットが商用に解放されるまでは,それほど知られていません でしたが,意外と歴史があります.と言ってしまうと,さもすごいことを実現する 機能のように思われるかもしれませんが,指定されたファイルをクライアントの コンピュータにダウンロードするだけの単純な機能を提供しているにすぎません. ダウンロードされるファイルは,おもにHTML(Hyper T
戻る WindowsNTのログオンダイアログボックスは,ログオンを行うときに必ず [Ctl]+[Alt]+[Del]キーを入力しなければログオンすることができません. この仕様は,悪意をもった利用者がログオンダイアログボックスを偽装した アプリケーションを起動させて,他のユーザのパスワードを盗み取ることを防ぐことを 目的としています.しかし,ログオンが必ずキー入力を伴うのは大変困ります. たとえば,IDカードを利用してログオンする必要があるときや,キーボードなしで ログオンする必要があるシステムでは,ログオンの方法をカスタマイズしてシステム にあわせる必要があります. また,一般家庭でWindowsNTを利用するときには,ログオンの度に [Ctl]+[Alt]+[Del]キーを入力するのを面倒だと思われる方が多いのではないかと 思われます.もっとも簡単にログオンするには,自動ログオン設定を
戻る 複数のモジュールで1つのアプリケーションを構成している場合,すべて一人で作成 していることより複数の人が同時に開発したり,すでに作成されているモジュールを 流用することの方が多いのではないかと思います. 複数の人が関わっているアプリケーションでは,少しの修正がアプリケーション全体に 影響を及ぼすこともよくあります.このため,各モジュールがいつどのような修正が 行われたかを管理しておく必要があります.また,アプリケーションをリリースした あとに,限定機能追加やバグ修正によって一部のモジュールを配布した場合, インストールされた環境やモジュールの構成によって正しく動作しないことも珍しく ありません. そこで,各モジュールがどのバージョンであるかを簡単に見分けることができる ようにしてすることにより,モジュールバージョンの組み合わせによるトラブルを防ぐ 方法について考えます. 20-1 D
戻る 32ビットアプリケーションを作成するための環境が整い,16ビット アプリケーションを新規に作成することは少なくなってきているのではないかと 思われます.16ビットアプリケーションと異なり,32ビットでは完全な (プリエンティブな)マルチスレッド・マルチタスクでプロセスが実行できるように なっています. しかし,最近スレッドの使い方を誤ることによるトラブルをよく見掛け ます.スレッドを使い方を間違えるとシステムのパフォーマンスを低下させたり, システムリソースを不必要に消費させてしまいます.また,各スレッドで共有する システムリソースを,いずれかのスレッドが勝手に破棄したり,スレッドが何かの処理 を行っている途中でプロセスが終了してしまうと何が起こるか分かりません. そこで,基本的なスレッドの扱いについてまとめてみたいと思います. 19-1 スレッドとは いまさらスレッドを説明すること
戻る ネットワーク上(LAN以外にPPP接続を含む)で稼動している複数のマシンで動作する 複数の同一アプリケーションを一意に識別したいときや,どのマシンの アプリケーションで作成されたデータであるかを厳密にチェックしたい場合,マシンに インストールされたアプリケーションを一意に示す識別子が必要になります. しかし,実際に確実に一意の値を作成するのは意外と大変です. そこで,手軽にマシン固有の値を作成する方法を考えてみたいと思います. 11-1 ローカルマシンで一意の値 非常に簡単な話で,Win32 API GetCurrentProcessId や Win32 API CreateProcess で取得できるプロセスIDを利用することで,少なくともアプリケーションが 動作している間は必ず一意の値となります.しかし,アプリケーションが終了しまうと 再利用される可能性がありますので,プロセスI
JavaScriptの有効利用法,CGIプログラミングの支援ツールとして考える 戻る JavaScriptは,Webブラウザのバージョンによって,動作が異なる場合があり, いろいろなWebブラウザを利用してアクセスする可能性があるシステムで不用意に 利用すると,トラブルの元になります. しかし,どのWebブラウザでも利用できる最小限の機能や,イントラネットで利用し, Webブラウザを特定できる場合は,CGIに対して最小限のリクエストで最大限の効果を 得られるシステムを構築する手助けになるでしょう. JavaScriptは、HTMLと共にクライアントに送信されるため,内部処理を利用者に 知られたくない場合は,利用しないほうがよいでしょう. 8.1 文字列の長さのチェックを行う HTMLでは,文字列の長さを「バイト数」でなく「文字数」で扱う傾向があります. しかし,ほとんどの場合CGIで処理で
戻る ○Windowsの印刷処理と印刷速度 Windows の印刷処理は、WYSIWYG「what-you-see-is-what-you-get」見たままのもの が得られるという考え方に基づいた処理を行うために適した構造を持っています。 この考え方により、プリンタの能力にあまり依存せず、高品位の印刷結果が得られる ようになりました。 しかし、いままで「オフコン」でおこなわれていた基幹業務の印刷処理では、 定形の帳票に文字を出力するたけの印刷処理が多く、印刷結果と画面の一致性より 印刷速度を重視することが多いようです。 そこで、ここでは、印刷速度を重視した印刷処理の方法を考えてみましょう。 特に、プリンタが持つフォントで印刷することは、Windowsが印刷すに使うビットマップ フォントと比較すると、高品位であると同時に、スプールファイルのサイズにおいても 有利なため、プリンタのもつ機能を活
戻る Windowsシステムは,多くのDLLで構成されています.コードをDLL化することにより, 複数のアプリケーションが同じコードを同時に利用することができ,メモリや ディスク容量を減らすことができます.しかし,DLLにバグがある場合,同時に複数の アプリケーションでトラブルを起こす危険もあります. マイクロソフトの開発環境では,再配布を行ってもよいとされるDLLが多く存在します が,これらのDLLを配布することにより,インストール先のマシンにインストール されている他のアプリケーションに影響を与える場合があります. そこで,筆者の経験を踏まえて共有DLLの扱いについて考えてみたいと思います. 15-1 新しいDLLは安全か? Microsoft社は,新しい開発環境を提供する度に共有DLLもアップグレードします. 少し前は,新しい開発環境ごとに共有DLLも異なるファイル名で提供してきまし
戻る ○複数のプロセスが協調して動作するアプリケーション 複数のプロセスが協調して動作するアプリケーションは、お互いが処理するデータを 参照または受け渡しを行いながら、一つの処理を行います。 このような処理を行う場合、Windows 3.1 ではDLLのスタティック領域を複数の プロセスで共有する方法がよく用いられます。 Windows95 や WindowsNT でもこの方法は利用できますが、通常プロセスが動作する メモリ空間はプロセスごとに割り当てられるため、16ビットアプリケーションと比較 してシステムの強度が向上するため、利用しないほうがよいでしょう。Win32ではこれに 代わる複数のプロセスを協調して動作させるための機能を多く持っています。 そこで、ここでは、プロセスが協調して動作するアプリケーションに有用なWindows95や WindowsNTの優れた機能である各種プロセス間
一般にデーモンプロセスとは,一般的にはインタラクティブに処理を行わず, 時間やある一定のトリガーによって動作する常駐プロセスのことを指す. そもそもデーモン(daemon)注1とは,ギリシャ神話に登場する「神々と人間の間に介在する 二次的な神」や「守護神」のことで,コンピューターの中で,人知れず動作する 「縁の下の力持ち」の常駐プロセスには,ふさわしい愛称と言えるだろう. さて,デーモンプロセスは,一般的なコマンドとして動作するアプリケーションと比較 してもそれほど複雑ではない.しかし,作り方によっては守護神にも悪魔に もなってしまう可能性を秘めている. デーモンプロセスを「守護神」にするか「悪魔」にしてしまうかは, プログラムの作者が正しい知識を持っているかどうかにかかっているといっても 過言ではない. 注1 デーモンといえば demon も日本語読みでは同じ発音になるが, demonの
目次 戻る はじめに 第1章 デスクトップ上にショートカットを作成する方法 第2章 アプリケーションにディスクフォーマットを組み込む方法 第3章 サーバーが稼働中かどうかを調べる方法 第4章 Webサーバーを使った分散アプリケーションの作り方 第5章 Windows NTで動作するディスクユーティリティを作成する方法 第6章 Windows NTのログオンダイアログボックスをカスタマイズする方法 第7章 IMEを制御する方法 第8章 ダイヤルアップをプログラムで制御する方法 第9章 モジュールのロードを高速化する方法 第10章 Windows NTでファイルにアクセス権を設定する方法 第11章 アプリケーションが一意に判断できる値を得る方法 第12章 Windows NTでアプリを実行するユーザーを制御する方法 第13章 Windows NTでシステムの状態を取得する方法 第14章 Win
戻る バッチファイルは、MS-DOSが全盛のころには、ちょっとした処理を行うためによく 利用していました。 しかし、Windows 上で動作するアプリケーションはウィンドウを操作して動作するもの がほとんどであるため、バッチファイルに記述して逐次処理を行えるものは少なく なっています。 このように、バッチファイルは AUTOEXEC.BAT 以外ではほとんど利用すること がなくなっているようですが、ファイルのバックアップや定期的に行う必要があり、 ユーザがカスタマイズする必要がある処理を行うときに、効果的に利用することが できます。 このような処理は、クライアントよりサーバで行われることが 多いため、処理の経過や結果をクライアントに通知する方法についても考えて みます。 9-1 バッチファイルとは ○バッチファイルは、なくならない バッチファイルは、ユーザがデスクトップ上で操作する必要がな
HTMLだけのメール送信,SMTP/POP3の基礎,ソケットによるメール送受信 戻る 5.1 mailto:を利用してHTMLの記述のみでメールを送信する HTMLで記述したフォームの内容をメールで送信する場合,タグのaction に, "mailto:" を設定すると,フォーム内に設定された値を送信することが可能です. この方法は,Webブラウザに設定されたメールクライアントを呼び出してメールを 送信します.このため,CGIにメール送信機能を持つ必要がありませんので,簡単に 実現できますが,次の点に注意する必要があります. メール送信を行うためのアプリケーションがWebブラウザ以外に必要 Webブラウザに設定しているメールクライアントの機能に依存する(フォームデータの送信をサポートしていないメールクライアントも存在します。) フォームの入力域に設定したデータが"%xx"形式の文字列に変換
本書は、出版当初大変なご好評をいただき、専門性の高い内容にかかわらず予想外の売り上げを記録いたしましたが、時代は流れ、今となっては周知の技術も多く含まれております。 しかし、今もってサンク関連など、Microsoft社の公式文書でなければ見られない内容もあり、Win32関連の掲示板を覗くと本書を参考にしていただければ、解決できるような内容を見ることがあります。 そこで、絶版となりました拙著の内容をご活用いただくため、本ページで公開するに至りました。 本ページは、拙著の内容を超えた技術サポートをお受けすることを 意図するものではありません。 技術情報の詳細な確認および質問等は、マイクロソフトの 正規サポートをご利用ください。 書籍の内容を超えるご質問等については一切お答えできませんので、 あらかじめご了承ください。
HTTPSへの対応,OpenSSLの利用方法,Webクライアント機能付きCGIプログラム 戻る HTTPクライアントは,通常WebクライアントであるInternetExplorerやNetscape があれば必要ないと思われるかもしれません. しかし,CGIから別のサーバにアクセスを行って結果を得る必要がある場合, 検索エンジンが情報を収集するためのロボット,個人で利用しているパソコンでも Webサーバの情報を丸ごと取得するためのロボットもあります. これらは,Webサーバから見ればすべてWebクライアントです.最近,コンテンツの 実体を隠すために,CGIが他のサーバに対してアクセスを行い,結果を中継する ような,「プロキシCGI」をよく見かけます.このような機能は, 指定されたコンテンツの本当のURLを隠してアクセスさせたり,利用者のリクエスト をトレースし,どのようなコンテンツが人気が
戻る ○困った! printf() で直接出力できない Windows のプログラミングを初めて行ったころに、困ったのは printf() で、 直接出力することができないということでした。 また、動作のよく分からないAPIを使うとき、サンプルプログラムを手に入れて ソースを見ても、見慣れないイベント駆動の動作を解析するのに大変苦労 しました。 このようなとき、手軽に動作をトレースでき、不要になってもコメントアウトする 必要のないデバッグログがあると便利です。 ここでは、そのようなデバッグルーチンについて考えてましょう。 7-1 動作のトレースとデバッグログ出力機能について ○動作のトレース デバッグや動作のトレースは、作成したアプリケーションがトラブルを起こしたとき だけとは限りません。モジュールを単体テストを行うときにも利用できます。 Windows アプリケーションは、メッセージによ
このページを最初にブックマークしてみませんか?
『www7a.biglobe.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く