コードスペランカー

ゲーム開発日誌など

ActionScript3.0の勉強

突然、今さらながら、ActionScript3.0をやってみる。

一般的なプログラム言語と違って描画周りがオブジェクト化されており
それをベースのオブジェクトに貼り付けて描画している印象をうける。
なので、制御方法もチョット違うアプローチをする必要があるようだ。

具体的にはMainが持っているstageや、graphics
(これらはたぶんSpriteクラスからの継承)
といったものにたいして、様々なアクションを行うことで
制御を行っていく必要がありそうだ。

Visual Studio 2012 C++で.NET Framework 4.0 以前をターゲットする方法

詳しい内容はここにかいてある

リンク先がなくなるといやなので部分的に転載
プロジェクトファイル(*.vcxproj)を直接テキストエディタで開いて書き換える
v4.5 .NET Framework 4.5
v4.0 .NET Framework 4.0
v4.0
Client .NET Framework 4.0 Client Profile
v3.5 .NET Framework 3.5
v3.5
Client .NET Framework 3.5 Client Profile
v3.0 .NET Framework 3.0
v2.0 .NET Framework 2.0

DLLの種類について

DLLにも色々あるようでC#でつかえるDLLとそうじゃないものがあるようだ。
1、Win32
一昔まえの最も一般的なDLLの形だと思われる。何も考えずにC++あたりでDLLをつくるとこの形式になる。しかしこの形式ではC#では参照ができないようで利用することができないので、どうしても使いたいときは他の形式のDLLでラッピングするといった作業が必要になる。C#側で再定義してもいけるっぽい。
2、COM
C++だとATLとかていうテンプレートで作成できるが、Visual Studio 2012 ExpressではATLプロジェクトは作れない。C#はとは相性がよいらしくそのまま使えるらしい。
3、CLR
.Netで一般的に使われる形式らしくそのまま使える。Win32形式をラッピングするならこの形式が良いと思えるがフレームワークのバージョンに注意しないといけない。

WebMatrixでのアプリ開発(ログイン編)

まずは適当にログインができるページを作ろうと考えたわけだ
DBにMySQLを使えば安上がりになると考えて、早速やってみる。
ASP.NETには便利なクラスが色々用意されてるようで、ログインをコントロールするWebSecurityクラスもそのひとつとなる。
で早速WebSecurity.InitializeDatabaseConnectionを使ってDBを初期化しようかと思ったわけだが、指定したテーブルが見つからないというエラーをMySQLが吐いてくれた。テーブル名を[]で囲って表記してるようで、これでは見つかるはずがない。
何か情報がないかと探し回ること丸1日、ここMySQLには未対応なんでSQL Server Compactでもつかってくれという内容のことが書かれていた。面倒だがログインコントロールを自分で実装するか、ログイン部分のDBをSQL Server Compactを使って制御する必要があるようだ。
で、WebSecurity.InitializeDatabaseConnectionなのだが、初期化のためのメソッドなので当選呼ぶのは1回だけでよい。2回以上呼ぶとエラーになる。アプリケーション起動時にだけ呼ぶには_AppStart.cshtmlに記述する必要があるようだ。_AppStart.cshtmlはルートディレクトリに配置すればよいらしい。

Webアプリ開発ツールについて

VisualStudio2012ForWebもいいのだけど、手軽なツールがあたのでメモしておく
WebMatrixというものでRazor構文を中心とした開発環境を提供してくれる。
このRazorというのは「@」からはじまる構文をHTMLに埋め込むことで動作するものでPHPやeRubyに近い感じでWebアプリをつくれるというもの。

Web上でのクッキーを使ったセッション管理

まずはクッキーの発行

HttpCookie mc = new HttpCookie("MyTestCookie");
DateTime now = DateTime.Now;
// クッキーの値に発行した時間
mc.Value = now.ToString();
// 有効期限は発行後1分間
mc.Expires = now.AddMinutes(1);

Response.Cookies.Add(mc);
Response.Write("<p> クッキーを発行しました</P>");

続いてクッキーの受信

HttpCookie mc = new HttpCookie("MyTestCookie");
mc = Request.Cookies["MyTestCookie"];
if (mc != null)
{
    Response.Write("<p> クッキーを受信しました</p>");
    Response.Write(mc.Value);
}

クッキーが偽造されていないという前提であれば、クッキーの受け渡しができたかどうかだけ見ればセッションの管理は可能となる。となると後は偽造対策になるわけだが、サーバ側に接続したクラインとのIPを保存し過去に発行したクッキーの送り先と一致するかを確認することで、簡単な偽造対策になると考えられる。まぁ抜け道はあるがあくまで簡易的なものとして利用できそうだ。