2018-01-01から1年間の記事一覧

F# Interactiveでunmanagedコードをデバッグ

F#

F# Interactiveでデバッグをする際は、Interactiveウィンドウ上で右クリックメニュー"Start Debugging"を利用するか、fsxファイル上で右クリックメニュー"Debug In Interactive"を利用すると思います。しかしこの方法ではデバッガがマネージドコードのみを対…

メインスレッド以外でWPFを利用する

WPFのWindowをmain関数内で表示する場合は、下記のような書き方になる。 [<STAThread>] [<EntryPoint>] let main argv = Application().Run(Window()) |> ignore 別スレッドでWindowを表示したい場合は下記のようになる。 let startApp() = Application().Run(Window()) |> ignore l</entrypoint></stathread>…

_CrtSetAllocHookでメモリアロケーション検知

C++

VC++にはメモリアロケーションをフックするために、_CrtSetAllocHookという関数が用意されています。今回はこれを利用してみたいと思います。ちなみに_DEBUGマクロが定義されていないと動作しません。 Hook関数 アローケーション時にprintfする関数を定義し…

PHP --- DateTimeを利用してカレンダー作成

PHP

PHPには標準でカレンダーを作成する機能はないので、実装の一例を紹介します。 二次元配列生成 年月を入力すると、日曜始まりのカレンダー二次元配列が生成されます。(日付が存在しない場所は0が入っています。)DateTimeのformatに'w'を渡すと曜日(日:…

PHP --- POSTで送られてきた画像をリサイズして保存

PHP

GDを利用するため、有効にしておいてください。php.ini extension=php_gd2.dll

designModeを利用して、ブラウザ上でリッチテキストエディタ

ブラウザ上で高機能なテキストエディタを実現したい時、ブラウザに元々備わっているdesignModeを利用することができます。 iframeを用意 ページにテキストエディタとなるiframeを配置します。 <html lang="ja"> <head> <meta charset="UTF-8"> <title>デザインモード</title> </head> <body> <iframe id="design-area" width="500" height="500"></iframe> </body> </html> designModeをON 下記のようにd…

PHP --- フレームワークを利用しないでToDoアプリ作成(4)

PHP

前回までで、基本的なToDoアプリの実装を行いました。 PHP --- フレームワークを利用しないでToDoアプリ作成(3) - 何でもプログラミング今回はCSRF対策とログイン機能を盛り込んでみたいと思います。両方ともセッションを利用しますので、$_SESSIONにアク…

PHP --- フレームワークを利用しないでToDoアプリ作成(3)

PHP

前回は、ルーティングの機能まで実装しました。 PHP --- フレームワークを利用しないでToDoアプリ作成(2) - 何でもプログラミング今回はデータベースと連携して、実際のToDoアプリを構築してみたいと思います。データベースはSQLiteを利用しており、CSRF…

PHP --- フレームワークを利用しないでToDoアプリ作成(2)

PHP

前回の記事にて、Viewをレンダリングして、レスポンスを生成して返すところまで実装しました。 PHP --- フレームワークを利用しないでToDoアプリ作成(1) - 何でもプログラミング今回はURLに応じて表示する内容を変更するよう実装してみたいと思います。ま…

PHP --- フレームワークを利用しないでToDoアプリ作成(1)

PHP

PHPにはCakePHPやLaravelなどのフレームワークがたくさん存在します。このシリーズでは、これらのフレームワークを利用せず、一からToDoアプリを作成してみたいと思います。本実装はローレベルの挙動を理解するためのものとして、実際のアプリ作成ではフレー…

F#でコマンドライン引数

F#

コマンドライン引数をパースするライブラリはすでにいくつも存在しますが、今回は簡単なものを実装してみました。簡単のため、ロング名のみ、値は=での指定のみに対応します。 some.exe --enable --value=10 今回実装したものの利用例 コマンドライン引数用…

F# Result型 便利関数

F#

F#4.1で導入されたResult型ですが、導入しやすくするよう幾つか便利関数を定義してみました。随時更新予定です。 Optionから変換 let ofOption (errorValue : 'error) (option : 'a option) : Result<'a, 'error> = if option.IsSome then Ok option.Value e…

レコード型のフィールド隠蔽(F#)

F#

例えば下記のようなCounterクラスを考えます。 type Counter() = let mutable count = 0 member this.CountUp() = count <- count + 1 member this.CountDown() = count <- count - 1 member this.Count = count これをレコード型を用いて実装すると下記のよ…

F#のMailboxProcessorで選択的受信

F#

F#にはアクターモデルを実現できるMailboxProcessorクラスが用意されています。基本的にはキューに積まれたメッセージを順に処理していくものですが、たまに特定のメッセージを先に処理したいときがあります。今回はMailboxProcessorで選択的に受信するよう…

C++でImmutableクラス

C++

C++のクラスは、下記のように普通の書き方をするとmutableなものになります。 struct Person { std::string Name; int Age; }; 今回はこのクラスをImmutableなものにしてみます。 メンバーをconstに 下記のようにメンバーをconstにすると、コンストラクタの…

F#でSQLite

今回はF#でSQLiteを利用してみたいと思います。 System.Data.SQLite入手 NuGetで下記のパッケージを取得します。 データベース準備 sample.sqliteファイルに、下記のテーブルを定義しています。作成は「DB Browser for SQLite」や、IDEに付属のツール、上記…

F#で逆誤差伝播法(ミニバッチ対応版)

下記記事にて逆誤差伝播法をF#で実装してみました。 F#で逆誤差伝播法 - 何でもプログラミング1データ/教師データ毎にネットワークを更新していましたが、今回はある程度の数学習してその変位の平均でネットワークを更新する、ミニバッチ法に対応してみたい…

F#で逆誤差伝播法

今回はニューラルネットワークで利用される、逆誤差伝播法をF#で実装してみたいと思います。実装をするに際し、Math.NETライブラリを利用しています。 レイヤーの定義 今回は、全結合のAffine層、ReLU活性化層、Softmax最終活性化層を定義しました。その他の…

MNISTの読み込み(F#)

F#

機械学習のデータとして、手書き数字の画像がまとめられた下記のサイトを利用することがあります。 MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges訓練データとして60000画像、テストデータとして10000画像用意されていま…

Boost Preprocessorでコンストラクタ生成

今回は、下記のように記述すると、その下のコードのように展開してくれるマクロを、Boost Preprocessorを利用して作成してみたいと思います。(実際には改行は生成されません。) struct Person { std::string FirstName; std::string LastName; int Age; CO…

C++ AMPで画像処理

今回はC++ AMPを利用して画像処理を行ってみたいと思います。下図のように、赤と青を入れ替える処理を実装していきます。 アプリケーションコード concurrency::arrayを利用するとint配列しか受け付けてくれないため、今回はconcurrency::graphics::texture…