JavaScript内のArray(VARIANT型)をCOMへ投げ入れてみたが、keyは文字型になる。JavaScript : var ar = [1,2,3]; var map = { "first":1,"second":2,"third":3 };// obj is CListCom Variant obj.Set( ar ); obj.Set( map );C++ : STDMETHODIMP CListCom::Set…

高分解能 経過時間の計測方法 #include "stdafx.h" #include #include int _tmain(int argc, _TCHAR* argv[]) { LARGE_INTEGER s,f,e; QueryPerformanceFrequency(&f); QueryPerformanceCounter(&s); { Sleep(1000); // 1sec } QueryPerformanceCounter(&e);…

c++ amp ソート

GPUによる頭悪そうな総当たりソートプログラム。 #include #include using namespace concurrency; void test_sort() { std::vector data(16); // random value data[0] = 8; data[1] = 4; data[2] = 3; data[3] = 7; data[4] = 6; data[5] = 5; data[6] = 2…

C++ Amp のindexクラスについて、の簡単明瞭サンプル。 #include using namespace concurrency;void test1() { std::vector data(10); for (int count = 0; count { data[count] = count; // 0,1,2,3,4 } concurrency::array a(2,5, data.begin(), data.end(…

VC++の環境ディレクトリの設定方法などをまとめてみた。●プロジェクトのプロパティ 構成プロパティ ->VC++ディレクトリ 注1 ->C/C++ 全般 追加のインクルドディレクトリ 注2 ->リンカー 全般 追加のライブラリディレクトリ 注3 ->ビルドイベント ビルド後…

Passenger絡みでインストールがうまくいかなかったので、ビルドしてみた。#OSをインストール後、 sudo apt-get update sudo apt-get upgrade#Passengerをビルド。 sudo apt-get install libcurl4-openssl-dev sudo apt-get install apache2-prefork-dev sudo…

githubへあるプログラムを公開しました。 Windows上でC++アプリからjavascriptを利用するサンプルです。

zlibとgzipの圧縮アーカイバーを作成。 http://www.zlib.net/ からzlib source codeをダウンロード(zipファイル)して解凍します。この中のwin32のMakefile.mscをビルドします。 zlib.libが作成されます。 Menu->Microsoft VisualStudio2012->VisualStudio To…

CLIENT_KEY_EXCHANGEがとんできた場所でencrypted_pre_master_secretをRSA解凍してpre_master_secretを取得します。 RSAの秘密鍵(PrivateKey)はkey.derのバイナリデータそのままです。 pre_master_secretから各種キーを取得します。 MSのCryptApiを使用。RSA…

クライアント(IE)からの"GET /index.html HTML/1.1..."はなぜか"G"と"ET.."に分かれ暗号化されています。 最初を復号するとG(0x47)+MAC+PADDINGというPlaintextになります。"G"という文字とclient_macからサーバ側で計算したMACが、d4 90... と一致するか検…

HTTPSの実装 TSL 5

C#でPRFの実装しました。データ元はwirsharのSSL debug fileです。 pre master secretからmaster_secretさらにmac,key,ivを取り出せます。 PRFの詳しい説明はここにあります。 from wireshark debug file. ssl_generate_keyring_material:PRF(pre_master_sec…

keyblockからは以下のようにしてキーを取得します。サーバ用とクライント用に分かれてます。 key+ivは共通鍵です。macはデータの検証で使用します。ivが曲者でここで取得したivデータは初回しか使えません。 毎回、ivは最終ブロックデータの先頭へ変更します…

TSLではPRFという名のSHA1とMD5で構成された関数からキーなどを作成します。そして、ラベルを4種類使用します。 "master secret" : pre_master_secretからmaster secretという名のデータを作成 "key expansion" : master_secretからkeyblock(CLENT_MAC+SERV…

HTTPSのシーケンシャルは以下です。この辺の説明は省きます。 [**CLIENT**] [**SERVER**] CT_HANDSHAKE -----------------------------> CLIENT_HELLO (client_randam) SERVER_HELLO (serevr_randam) CERTIFICATE (x509) SERVER_HELLO_DONE CT_HANDSHAKE ---…

C++でHTTPSサーバを実際に作成しています。実装に関しては情報が少ないため、かなり難しいです。 しかし、なんとか目途がたったので役に立つ情報を出してみたいと思います。 なお、使用する暗号形式はTLS_RSA_WITH_AES128_CBC_SHAに限定します。TSL1.0はSSL3…

元ネタはhttp://www.atmarkit.co.jp/ait/articles/1303/19/news099.html です。 上記サンプルのClientはJavascript+IEですが、C#で作成すると下のようになり、無事サーバのメッセージをキャッチできました。 WebSocketの使い道ですが、チャットぐらいしか思…

underscore.jsというインテリジェンス満タンのライブラリをMSのtypescriptで使う(動作確認レベル)方法。1, underscoreの型情報をgithubからdownloadする。underscore.browser.d.ts 2, VS2012のVisualC#にある"HTML Application with TypeScript"を作成 3, un…

javascriptのXMLHttpRequestをc++で利用。 イベントハンドラであるonreadystatechangeの扱いがscript向けになっていた。 javascript内でxmlHttpRequest.onreadystatechange = function(){ ... の場合、 この無名関数はIDispatchのDISPID=0になるようだ。 ///…

Direct2DでDPtoLPを実現する。DPはデバイス座標。LPは論理座標。 GDI32ではDPtoLPなる関数があり、それに相当する。 DP:LP=1:1でないアプリを作成する場合になくてはならない。///////////////////////////////////////////////////////////////////////////…

とりあず、async/awaiにCancelとProgressを追加。/////////////////////////////////////////////////////////////////////////////// ★C#側のWindowsランタイムコンポーネント private async static Task test7_3Inner(int number, System.Threading.Cancel…

async/awaitのさばき方が難解2

とりあず、async/awaiをパターン化してみました。 Task->IAsyncOperation->create_taskで1つのパターンになるようです。/////////////////////////////////////////////////////////////////////////////// ★C#側のWindowsランタイムコンポーネントprivate …

とにかくMS提供のサンプルが難しすぎ。C++は0xも含めネタが多すぎて、相当難しすぎように感じます。 「あまりに難解なものはやがて廃れて忘れ去られる」という言葉を思い出しまた。(昔、OLE2の本の厚さにビックりした方の名言) C#で作成したWindowsRuntime…

Windows8のMetroはまだ情報が小出しで、サンプルも難しすぎですがC#のasync/awaitと同じことを、C++でテストしてみました。 create_asyncを使用するためWindows環境では動作しません。Metro環境(WindowsRT)のみです。Button_Click_1 はボタンを押すと実行さ…

MonoDevelopでMySqlを使うとき、設定がややこしい事がわかったので、その解決法。 #1 MySql ConnectorsからConnector/NETをダウンロードし解凍。現在の最新は6.4.4#2 SuperUserで以下実行 mono /usr/lib/mono/4.0/gacutil.exe -i mysql.data.dll#3 名前を変…

nginxというWEBサーバを使用。 1, OSをUSA語でインストール。mint linux 12。 2, 以下のコマンドをSuperuserで順番に実行。#まずはアップデート-------------------------------------- apt-get update #Webサーバをインストール---------------------------…

ようやく暇になったのでLinuxへASP.NET MVCをインストールしてみた。 monodevelopの関係でlanuageは英語を使用しています。 Ubuntuでも多分同じでしょう。 1, OSをUSA語でインストール。mint linux 12。 2, 以下のコマンドをSuperuserで順番に実行。#まずは…

C++, ガベージコレクション、回収 3/3

ガベージコレクションの回収。どの方式でも多分似たようなものだと思う。 // ガベージコレクショの回収 void GCCollect() { std::vector handles; // 自プロセスの他スレッドを一時停止 MySuspendThread(handles); std::vector dels; // mark 生きているGCOb…

ガベージコレクショのメモリ管理の基本1,参照はオブジェクト側から。 2,メモリの開放はヒープ側から。参照はGCPtrであるオブジェクト側から確認します。std::setにinsert,delすることでオブジェクトの生存を管理します。オブジェクトが必要なくなりdelさ…

ガベージコレクタでは、classに対してdeleteを使わない同等の処理が必要になる。 case1とcase2は同じであるが、case2ではデストラクタを取り出し、外側からデストラクトしている。 #define GC_NEW(T) new(GCAllocate::GC_new( sizeof(T) ))T typedef void (*…

C++、C#、HMACSHA1、HMACSHA256

ついでに、CryptAPIでHMACSHA256を作成しました。 当たり前ですが、C#のHMACSHA256と同じ結果を出力します。 HMACSHA1も可。 返り値であるCStringAはバイナリのコンテナとして使用しているので、読める字に直すにはBase64Encodeが必要。 CStringA HMACSHA( c…