サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ニコニコ動画
www.keicode.com
デバッガでプログラムの実行の様子を見ていると、しばしば例外が発生していることが確認できます。 ある例外は意図的だったり、ある例外は極めて致命的なものであったり、さまざまな状態があります。 トラブルシューティングをするにあたり、例外の仕組みについて理解を深めておくことは重要です。 特に Windows の構造化例外処理 (SEH) 及び言語特有の例外処理の関係は重要です。 関連トピック .NET デバッグ ~ 例外オブジェクトの捕まえ方 構造化例外処理と UnhandledExceptionFilter ファーストチャンス例外とセカンドチャンス例外 Windows の構造化例外処理では、別ページでも少し書いたように 例外が発生したときに、例外ディスパッチャによって例外ハンドラを探しはじめます。 デバッガがアタッチされている場合は、例外ハンドラ探しの前にデバッガに例外が発生されたことが通知され
この資料では、MySQL 管理用の GUI ツールである MySQL Workbench を利用して、 簡単なストアドプロシージャを作成し、それを呼出す方法を示します。 MySQL Workbench だからといって、特に特別なことをするわけでもありませんが、 いくつか知っていないとつまずいてしまうポイントがありますので、そうした点について説明します。 MySQL Workbench とは? まず、MySQL Workbench とは何か?ということですが、これは MySQL の管理、 および MySQL 上での開発をサポートするための GUI ツール群といえます。 以前、MySQL Administrator とか MySQL Query Browser という GUI ツールがありましたが、 それらが統合されてさらに機能強化されたものとみてよいと思います。 と、MySQL Workbe
MongoDB サーバーの実行 MongoDB をインストールしたら、MongoDB を直ちに実行できます。 MongoDB サーバーを実行するには、 C:\data\mongodb-win32-<バージョン番号>\bin\mongod.exe を (オプション無しでそのまま) 実行すれば OK です。 mongod.exe が MongoDB サーバーであり、mongo.exe はコマンドラインクライアントなので注意してください。 初めて実行する時は、ネットワークの警告が表示されると思いますがこれは許可してください。 これは、MongoDB がデフォルトでポート番号 27017 でクライアントの接続を待ち受けるからです。 このときに、mongod.exe を実行するとウィンドウが開きますがこれは開いたままにしてください。これを閉じると、サーバープロセスが終了してしまい、以下のテストに失敗
HTTP プロトコルでは、ファイルの場所が変わったとき、すなわち、同じものに対する URL が変わったときに、 クライアントに対して、それを知らせる方法があります。 それが 3xx リダイレクトです。 例えば、ファイルの場所が変わったときは、サーバーは "301 Moved Permanently" というステータスをクライアントに返します。 このステータスによって、クライアントは「今度からは新しい URL をリクエストしないといけない」ということを知るのです。 では、新しい URL はどこになるかというと、それを示すのが Location ヘッダ です。 サーバーは 301 ステータスを返すときに、Location を含めて応答します。 例えば、次のようになります。 GET /foo.jpg HTTP/1.1 Host: example1.jp Accept: */* このように、foo
Windows でのインストール方法 MongoDB を Windows で利用するのはとても簡単です。 zip をダウンロードして、展開して、即実行可能です。 一点だけ、デフォルトの設定として、ディレクトリ構成が決まっていますので、それに従う所がポイントです。 MongoDB の入手方法 MongoDB は MongoDB のウェブサイト からダウンロードできます。 Linux、Windows をはじめ各種のプラットフォームのバイナリがありますから、バージョンに気をつけてダウンロードしてください。 私は、Windows 7 x64 上を利用しているので mongodb-win32-x86_64-1.4.3.zip をダウンロードしました。 MongoDB の設定手順 MongoDB のサイトで紹介されている標準的なインストール方法は次の通りです。 C:\data フォルダを作成する C:
盛りだくさんですが、それぞれの実装を確認しましょう。 ステップ3.ヘッダファイルの作成 CarDll.h、CarFactory.h、CarImpl.h はそれぞれ次のようになります。 まず CarDll.h です。 #include <windows.h> void LockModule(); void UnlockModule(); 次に CarFactory.h です。クラスファクトリを宣言します。 #include <windows.h> class CarFactory : public IClassFactory { public: // IUnknown Intarface STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppv); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULO
JSONP って何?どんなイイコトがあるの? JSONP というのは、JSON with padding (付け足し JSON) といい、 JSON (JavaScript Object Notation) を拡張したプログラミングモデルです。 JSONP では、同一生成元ポリシーによる他サーバーへの問い合わせの制限を回避して、 元のサーバーと異なるサーバーへの問い合わせを可能とします。 この資料では、JSONP で回避する問題である「同一生成元ポリシー」について簡単に説明してから、 JSONP におけるプログラミングモデル、アーキテクチャについて具体的に解説します。 この資料を理解するためには、JavaScript のオブジェクトリテラル表記など、 JavaScript のオブジェクト指向プログラミングと、JSON について理解していなければなりません。 ご存じない方は、当サイトの「Ja
ここまでに、 「IP アドレスはネットワーク ID とホスト ID に分けられる」 ということを説明してきました。 それら2つは 「サブネットマスク」 で分けられる。かつ、 ネットワークを表すときは、 ホスト ID を 0 にする。というルールでしたね。 ネットワーク ID と ホスト ID の区切り方に自信が無い人は、 「「ネットワーク ID」 と 「ホスト ID」 の区切り方」 にざっと目を通しておいてください。 これはとても大事です。 そしてさらに、その他、IP アドレスに関して、さらに抑えておきたいポイントがあります。 1つめは、IP アドレスはいくつかのクラス分けができる、ということ。 2つめは、グローバル IP アドレスと、プライベート IP アドレスがあるということです。 それでは、それぞれ説明します。 IP アドレスのクラス ~ デフォルトのネットマスク IP アドレスは、
ネットワークの基本となる TCP/IP の超入門コース です。 対象はネットワークについて、全く基礎知識・経験のない人です。 私は10年以上前、初めての勤務先でネットワーク管理者を任されました。マイクロソフトの TCP/IP 資格、 Windows NT4, 2000 等サーバー系の資格も取得しました。マイクロソフトで勤めてからは、 ウェブサーバの担当として、ネットワーク上のトラブル解決、プログラミングを数多くこなしてきました。 そういう、ネットワークを現場で使ってきた経験から、これだけは!というポイントを抑えてネットワークを大胆に解説してみたいと思います! 意外とネットワークの基礎は知られていないものなので、まずは「超入門」と題して、 本当に予備知識のない方でも「なるほど!」と思ってもらえるような入門コースを書いてみようと思います。 ネットワークって何? ネットワーク上にある他のコンピュ
mod_pagespeed とは? Google は 2009年に 'Make the Web Faster' (Web をより速くする) イニシアティブの一環として Page Speed の提供を開始しました。これは、開発者にウェブページをスピードアップする方法を示すためのツールです。 Page Speed が示す方法に従って、ウェブサーバーの設定、HTML、JavaScript、CSS そして画像などを変更することによって、 Web サイトの最適化を行うことができます。 尚、Page Speed を活用した Web サイトの最適化方法については、Web サイトを最適化する 21 個の方法 としてまとめていますので興味のある方はご覧ください。 2010年11月3日(アメリカ現地時間)、Google は Apache HTTP サーバー用の mod_pagespeed というモジュールを公
管理者権限でのプログラムの実行を要求 Windows Vista 以降では、プログラムを Administrator として実行させることを要求することができます。 Administrator 権限をもつアカウントでもフィルタード・トークン (フィルタ済みトークン, filtered token) で実行中の場合は、 それにリンクされたフルトークンでの実行に切り替えることを促されます。 マニフェストで管理権限を要求する 管理者権限を要求するには、マニフェストファイルで実行レベルを設定します。 実行レベルを指定する要素は requestedExecutionLevel です。管理者権限を要求する場合は、 requestedExecutionLevel 要素の level 属性を requireAdministrator に設定します。 実際に管理者権限を要求するテストをしてみましょう わかり
C# 匿名クラスとは? C# 3.0 から「名前のないクラスを定義できる」ようになりました。 「名前のないクラス」のことを匿名クラス (Anonymous Class) といいます。 これだけだと、何のことだかわかりにくいかと思いますので、少し補足説明をします。 JavaScript のオブジェクトリテラルのような使い方... JavaScript をご存知の方であれば、オブジェクトリテラルを用いたオブジェクトの作成方法に似ている、と考えるとわかりやすいと思います。 例えば、JavaScript では { } を用いて次のようにオブジェクトリテラルを使って、オブジェクトを定義することが可能です。 var person = { name: 'Ichiro', say_hello: function() { alert('Hello'); } }; こうすると次のように、say_hello メ
この資料では PHP の統合開発環境である、Eclipse PHP Development Tools (PDT) の基本的な使い方を説明します。 インストール Eclipse PDT は次のサイトからダウンロードできます。 PHP Development Tools Project オールインワン・パッケージをダウンロード (zip 形式) して、展開すればインストールは完了です。 システムに Java の実行環境が無い人は Java のサイトからダウンロード してください。 基本的な使い方 eclipse.exe をダブルクリックして開始すると、次のようなスクリーンが表示されプログラムが起動します。 基本的なウィンドウは次のようになります。 PHP プロジェクトを作成する ワークスペースの中に PHP プロジェクトを作成します。 ここではプロジェクト名を debug1 という名前にして
ここでは PHP を用いた基本的なプログラミング方法と、PHP のエクステンションや Xdebug による開発環境の構築といった発展的なテーマについての記事を書いています。 LAMP 環境を作るためのホスティングに関する情報については、海外ホスティング入門 の情報を参考にしてください。ちなみに、当サイトはブルーホスト上の LAMP 環境でホストされています。 ブルーホストは転送量、ディスク容量とも無制限、かつ安定していて大変オススメです。ホスティングを探している方はぜひ試してみてください。 尚、IIS 上での PHP 利用については IIS7 で PHP を使う方法 および IIS ホスティングランキングを参照してください。 PHP のセッションストレージを MySQL に切替える方法 パスからディファクトリ名、ファイル名、拡張子を取り出す方法 - pathinfo PHP で SQLit
SQLite は軽量のインプロセス・データベースエンジンで、今日の多くの主要なプログラムで広く利用されています。 例えば Firefox 等でも、ブックマークやヒストリ等様々なプログラムデータのストレージとして、SQLite を利用しています。 (参考: Firefox における SQLite の利用) この資料では SQLite を PHP から利用する簡単な例を示します。 SQLite のコマンドラインからの利用 PHP から SQLite を利用する前に、コマンドラインから SQLite を利用してみましょう。 コマンドラインツール (sqlite3.exe) は、SQLite のダウンロードページからバイナリをダウンロード可能です。 2010年3月25日現在、SQLite のバージョンは 3.6.23 が推奨版です。 次の手順で test.db という名前の SQLite データベ
LINQ to XML の単純なコードサンプル集の後半戦、LINQ と XPath によるノードの選択方法です。 « XML 文書の作成、ノードの操作 XML 要素の選択 (XPath と LINQ) XPath による単一要素の選択 上の 「要素を含む XML ファイルの作成」で作成した次の XML ファイルを考えます。 <?xml version="1.0" encoding="utf-8"?> <!--LINQ to XML Sample http://keicode.com/--> <Employees> <Employee> <FirstName>Keisuke</FirstName> <LastName>Oyama</LastName> <ID>123</ID> </Employee> </Employees> ここから FirstName=Keisuke である、Employ
前の資料では、WINAPI というのは __stdcall の別名であり、これは呼び出し規約であると説明しました。 そして 「呼び出し規約」 を理解するためには 「関数を呼び出す」ということがどのようなものか理解すると良いです。 尚、ここでは x86 アーキテクチャを想定しています。 結局、関数を呼び出すってどういうこと? あるプログラム A から、あるプログラム B を呼び出す時に x86 ではスタックというメモリ領域を使用します。 ここでは、A は Windows の Win32 サブシステム、B はここで作った自前のプログラムとします。 A から B の WinMain を呼び出すときのことを考えます。 この時に、A はスタックにパラメータを積み上げます。 B を実行するときに、必要に応じてスタックに積み上げられたパラメータを参照します。 B の処理が終わったら、制御は A へと戻り
構成ファイルのバックアップ IIS の構成ファイルはバックアップしておくことが可能です。 IIS 7.0 の管理用コマンドである AppCmd はバックアップをサポートしています。 IIS のバックアップは、なるべくこまめにとったほうが良いですが、特に次のタイミングでとっておくと良いと思います。 IIS をインストールした直後 クリーンな状態を保存するためです。 IIS に大きな変更を加える前 失敗した時に元に戻せるようにするためです。 この処理は管理権限で実行します。(参考: UAC と権限の昇格) バックアップは簡単です。 次のように add backup オプションで appcmd を実行します。 C:\>%systemroot%\system32\inetsrv\appcmd add backup BACKUP object "20090402T204657" added 上記のよ
PHP はエクステンションによってその機能を拡張できます。 私は今、PHP からの認証方法を各種検討中なのですが、先日 AD へ問い合わせる方法として LDAP を検討しました。 今回はもうひとつの方法として、OS の機能 (すなわち LSA) に任せる方法もあるのではないか、 そしてそのほうがセキュリティ上も良いのではないかと考えています。 これを利用するには、PHP のエクステンションを実装するのが一番簡単なように思えます。 そこで今回は PHP エクステンションを開発する方法をまとめます。 準備 Visual Studio なり Windows SDK なり、Windows の DLL のビルド環境を準備します。 これは普通に Win32 の DLL がビルドできれば OK です。 もし DLL の作成方法がわからない場合は、当サイトの「Windows プログラミング入門 - 単純な
class によるクラス定義 新しい JavaScript ではclassキーワードでクラス定義を行う方法が追加されました。 新しくコードを書く場合は「JavaScript のクラス定義」で説明している オブジェクト指向プラミングを実装することをお勧めします。 ただし、classキーワードは比較的新しい環境が必要です。ES6+ が実行できる環境が必要です。このことは、そのままでは IE 11 をサポートできないことを意味します。 さもなくば、Babel 等を利用して、ES3 レベルにトランスパイルする必要があります。 プロトタイプによるオブジェクト指向プログラミング
オンラインのファイル共有サイトを紹介します。ファイルのアップロード、オンラインバックアップ、知人とのファイル共有、あるいは複数 PC を持っていれば複数 PC 間での自分のファイルの同期ができると便利です。 サービス毎に細かな点では利用規約が違いますので、それぞれのサイトの利用規約に従って利用してください。 2GB 無料で使えます。クラウド・ファイル共有サイトとして最も有名だと思います。 各種 OS との融合に気を配られており、Windows、Mac、Linux (Ubuntu, Fedora は専用パッケージ有り) で簡単に専用クライアントを利用できます。 専用クライアントといっても、ネイティブのディレクトリのように使えます。ある PC でそのディレクトリにファイルをドロップすると、 他の PC の Dropbox 用に設定されたディレクトリと同期される、という風になります。 順位は2位
COM プログラミングでよく出てくる、BSTR とは? BSTR は COM で利用される一般的な文字列の形式です。 BSTR は基本的にワイドキャラクタ文字列として定義されていますが、その手前にデータ領域のバイト数を示すバイト数(4バイト)と、 終端に (00 00) という2バイトのデータが割り当てられます。 データ領域を示すバイト数には、終端の NULL (00 00) は含まれません。 従って、次のようなコードは誤りです。 BSTR bstr = L"Hello"; これでは変数 bstr は "Hello" というワイドキャラクタ文字列をポイントしていますが、 その文字列の前にデータバイト数を表すバイト数が割り当てられていませんので、正しい BSTR ではありません。 BSTR は COM のメモリアロケータで割り当てますので、割り当てには SysAllocString、解放には
MQ の概要 メッセージキュー (MQ) は、メッセージの処理を非同期に行います。 MQ は留守番電話に似た仕組みと考えられます。クライアントは、キューに対してメッセージを "録音" します。サーバー側では、キューからメッセージを取り出して "再生" します。 アイデアは新しい物ではありません。 上述の留守番電話の例で言うと、"録音" は Recorder を通して Queue Manager に対して行います。Queue Manager はクライアントとサーバー間の Queue 同士でのメッセージ交換を受け持ちます。サーバー側では、Queue Manager からメッセージを取り出し再生します。キューを監視するコンポーネントは、Listener といい "再生" は Player が行います。 アーキテクチャ 最低でもサーバー上にメッセージを処理するメッセージキューが必要です。 サーバー
MongoDB のインストール Windows 上での MongoDB のインストール方法を説明しています。とても簡単です。 MongoDB をコマンドラインクライアントで使う (基本編) MongoDB を MongoDB コマンドライン・クライアントで利用する方法を説明します。ここでは、 MongoDB の構文の基本をざっと確認することができます。 MongoDB プログラミング C# による MongoDB プログラミング C# から MongoDB を利用する方法を示します。簡単なアセンブリの参照程度ですが・・・。 関連書籍 ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。
検出されにくいヒープオーバーラン はじめに、この資料でどのような問題を解決できるのか簡単に説明します。 次のコードを見てください。 #include <windows.h> #include <assert.h> #include <stdio.h> void foo() { printf ( "Entering foo()\n" ); char* p = NULL; p = (char*) HeapAlloc ( GetProcessHeap(), 0, 8 ); assert( p ); ZeroMemory ( p, 16 ); // BUGBUG HeapFree ( GetProcessHeap(), 0, p ); printf ( "Exit foo()\n" ); } int main(int argc, char* argv[]) { foo(); return 0; }
SSL の設定は意外と知られていないようです。 証明書とか CA とか CSR とか CRL とか、いろいろな用語が出てきますから、確かに慣れないとなかなかピンとこないかもしれません。 この資料では、SSL の基本的な考え方と設定方法について説明します。 SSL の設定に必要なこと ~ サーバー証明書の作成方法 SSL を利用するには、IIS にサーバー証明書をインストールする必要があります。 既存のサーバー証明書の確認 IIS にサーバー証明書がインストールされているかどうか確認するには、IIS マネージャから確認できます。 サーバー証明書 (Server Certificate) から確認すると、インストールされていればサーバー証明書の一覧がこちらに表示されます。 私の環境ではまだひとつもインストールされていないので、こちらのリストには何も表示されていません。 サーバー証明書作成の第一
前の資料の続きで、JIT コンパイルの状態をみてみましょう。 button1_Click でブレークしたところで、button1_Click メソッドと button2_Click メソッドのメソッドディスクリプタを確認します。 さて、まずは Form1 の EEClass を確認します。この方法は他のページで説明済みです。 0:000> !sos.name2ee exceptiontest1.exe ExceptionTest1.Form1 Module: 00382c5c (ExceptionTest1.exe) Token: 0x02000005 MethodTable: 00385a40 EEClass: 00381574 Name: ExceptionTest1.Form1 0:000> !sos.dumpmt -md 00385a40 EEClass: 00381574 Mod
ここではおすすめソフトウェアを紹介します!(随時追加中!) Viso に変わるダイアグラムエディター及びモックアップ作成系のおススメは「Visio の代替ソフトウェアおススメ5個」をみてください。 無料で使える!オンラインファイル共有サイト11個 無料でメンバー登録無しですぐに使えるオンライン画像加工ツール18個! クラウド・ストレージを超簡単に利用するためのクライアント集 画像サイズを最適化するツール集 コード編集 WinMerge キレイに diff がとれます。windiff を使っている人はこちらに乗り換えると良いでしょう。 Beyond Compare のライセンスを買った人は、そのまま使っててもいいかもです。 Git ソースコードのバージョンコントロール。これまで SVN, CSV, TFS、さらに古くは VSS などを使ってた人も、もういい加減 Git に移行しましょう。 メ
リボンフレームワークとは何か? Windows リボンフレームワーク (Windows Ribbon Framework) は一言で言えば、 従来の Windows のメニュー、ツールバー、タスクペインなどを置き換える、 新しいコマンドフレームワークといえます。と、いってもなんだかわかりにくいと思いますので、実際に見てみるとこうなります。 従来の (Windows Vista 以前の)「ペイント」は次のようなユーザーインターフェイスでした。 Windows Vista 以前の従来の UI のペイント この従来形は、Windows ユーザーにはお馴染みだと思います。Windows 7 からはペイントの UI も大きく変わり、 次のように変更されています。 Windows 7 からの新しいペイント リボンフレームワークでは、新しいペイントの UI に見られるような タブ切り替え的なメニュー、ツ
次のページ
このページを最初にブックマークしてみませんか?
『Web/DB プログラミング徹底解説』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く