Type Provider for INI file (draft)

F#

This entry is for F# Advent Calendar 2012, 9th. Previous one is Mono for Android with F#, written by @smallgeek. It's very interesting one, and I really want to make some exciting Game(s). # But I know that I don't have enough skills to do…

TODO

INIファイルからセクション情報やらをとってくるときに、10240バイト固定になっているので、大きいサイズのファイルを対象にするときちんと動作しません。 なのでそのあたりの面倒をちゃんと見られるようにできればdraftを外せるんじゃないかなと思います。 …

終わりに

Fsharpxには他にもたくさんのType Providerやライブラリがあるようなので、いつかそれらも試してみたいところです。

Tips to Debug Type Provider

Type Providerをデバッグする場合は以下のようにすると色々はかどるんじゃないかと思います。 Type Providerを作成中のプロジェクトのプロパティで[デバッグ]の[開始動作]を[外部プログラムの開始]にして「devenv.exe」へのパスを指定する [開始オプション]…

動作確認

1.別のVisual Studioを起動して、[F# アプリケーション]のプロジェクトを新規作成します。 2.作成したアセンブリを参照追加します。 2.1.[型プロバイダーのセキュリティ]ダイアログが表示されるので、[有効化]を選択します 3.テスト用のINIファイルを用意し…

詳細

Win32モジュール このモジュールにはINIファイル用のWin32 APIをP/Invokeするための定義があります。 今回はINIファイルを読み取る機能しかサポートしないつもりなので、以下の関数しか定義していません。 GetPrivateProfileSectionNamesW GetPrivateProfile…

Type Provider for INI file (draft)

namespace Personal.FSharp.TypeProviders open System open System.IO open System.Reflection open System.Runtime.InteropServices open System.Text open Microsoft.FSharp.Core.CompilerServices open Samples.FSharp.ProvidedTypes module Win32 = [<DllImport("kernel32", CharSet = CharSet.Unicode)>] </dllimport("kernel32",>…

Type Provider for INI file (draft)

F#

F# Advent Calendar 2012 用の記事です。 たぶん9日目じゃないかと思います。 9日目です。前回は@smallgeekさんのMono for Android と F#でした。 個人的にはAndroidのアプリもゲームもいつか作ってみたいと思いつつ無限に延期されている状態なのもあって、…

Bootstrapperでスタンドアロンインストーラーを使用して.NET Framework 4.0をインストールする

開発環境にWix 3.6がインストールされているものとする [ファイル]-[新規作成]-[プロジェクト]から[Windows Installer XML]-[Bootstrapper Project]を選択 [ソリューションエクスプローラー]内、作成したプロジェクトの[References]を右クリックして[参照の…

VS2010 Shell (Isolated) again.

前回は結局プロジェクトテンプレートのパスを直打ちしていたわけですが、なんとか.\NullPathというダミーパスでも プロジェクトが表示できるようになったのでそれまでの手順を再度まとめておきます。前提: Visual Studio 2010 SP1 Visual Studio 2010 SDK S…

メモ:VS2010 Shell (Isolated)にプロジェクトを追加する

前提: Visual Studio 2010 SP1 Visual Studio 2010 SDK for SP1 VS2010 Isolated Shellにとりあえず何かしら自前で用意したプロジェクトが表示されるようにするまでのメモ。まだプロジェクト生成システムが機能するところまで届いていません。

VS2010 Template for F# ASP.NET Web Application (again)

http://dl.dropbox.com/u/7392906/20100813/FSharpAspNet.zip http://dl.dropbox.com/u/7392906/20100813/FSharpAspNetItem.zipThese are experimental ones.

VS2010 Template for F# ASP.NET Web Application (再)

http://dl.dropbox.com/u/7392906/20100813/FSharpAspNet.zip http://dl.dropbox.com/u/7392906/20100813/FSharpAspNetItem.zipそれらしいものです。

VS2010 Template for F# ASP.NET Web Application

F# PowerPackのバージョンが変わって動作しなくなっているらしい? 出直してきます。

Memo about extending ExpandoObject class

F#

C#の場合、ExpandoObjectに新しいプロパティを追加するコードは以下のように書ける: dynamic d = new ExpandoObject(); d.NewProp1 = "Value1"; d.NewProp2 = 2;一方F#の場合、次のようなコードは書けない: let d = new ExpandoObject() d.NewProp1 <- "Va…

memo

ユーザーのプロファイルが消えてしまって、ホームディレクトリがC:\Users\TEMPになった場合には HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList にあるユーザ情報のうちで、ProfileImagePath がそれらしい値(C:\Users\TEMP)…

memo

F#

ネットで拾ったYコンビネータ2つ。 type rcs<'a, 'b> = Rec of (rcs<'a, 'b> -> ('a -> 'b)) let y maker = (fun (Rec f) x -> maker (f (Rec f)) x) (Rec (fun (Rec f) x -> maker (f (Rec f)) x)) // テスト let fact = y (fun f x -> if x = 0 then 1 els…

Visual Studio 2010 Beta2

月曜にMSDN Subscribers向けに公開されていましたが、今日一般向けの公開も始まりました。http://tinyurl.com/vsbeta2downloadなので早速インストールしてみました。

NTPサーバとして機能するように設定する

ためのメモ。まずWindows Timeサービスを起動する。 net start w32time 次にw32tmコマンドを使って、同期先のNTPサーバを指定する。 w32tm /config /manualpeerlist:ntp.jst.mfeed.ad.jp /syncfromflags:manual 複数のNTPサーバを使う場合は/manualpeerlist…

winmail.datのメモ

Thunderbirdを使ってIMAPでExchange Server 2007へ接続している時に、 日本語検索がなんとか機能しないものかといろいろ試していたら、 いつの間にかメールにwinmail.datが添付されて見えるようになってしまいました。特に害があるわけでもないんですが不要…

WinFormアプリでJumpListを操作する

世の中便利になったもので、Windows APIを呼ぶにも Windows API Code Packなるものを使えば C#からあんなことやそんなこともできてしまうそうですよ。というわけでWindows 7も近いことですし、C#のWinFormアプリでJumpListなど使ってみようという話です。ち…

自分用メモ。

JScriptで再帰的にフォルダを作る: function CreateFolderEx(n) { var wsh = new ActiveXObject("WScript.Shell"); var fso = new ActiveXObject("Scripting.FileSystemObject"); var re = /^.:\\/; var paths = n.split("\\"); var target = ""; if (!n.ma…

So-net, Exchange Server 2007 and Dynamic DNS

インストールしてからこの方受信専用となっていた自宅のExchangeServer2007を ようやくSMTPサーバとして使えるように設定できたのでメモ。 参考にした記事:http://infopatisserie.blog.so-net.ne.jp/2006-08-09ExchangeServer2007では2003と用語や管理UIが…

純粋仮想プロパティ

思いがけずはまったのでメモ。 // test.h ref class BaseClass abstract { public: void Test(); protected: virtual property System::String ^Prop1 { System::String ^get() = 0; // このあたりが純粋仮想プロパティ } }; ref class DerivedClass : BaseC…

ファイルの一意な情報を取得する

C#

メモ。 ファイルを移動しても同じ情報がとれる。 コピーして新しいファイルになったら違う情報。 今のところは役立つこともなさそうだけど一応メモ。 using System; using System.IO; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHand…

CLR via C#読書(2)

C#

Non-CLS Exception(CLS非互換例外?)の話。 バージョン1.xでは catch (Exception e) { // ※1 }として捕まえられるのはCLS互換な例外だけなので、 非マネージコードで発生した例外は捕まえられないのでした。 なのでどうするかといえば catch { // ※2 }とし…

独り言

ひょっとして空文字列「""」はアプリケーションのメタデータに文字列テーブルとして含まれて、 String.EmptyはCLRのメタデータにある文字列テーブルからデータを引っ張る? それだと Object.ReferenceEquals(String.Empty, new string(new char[0])) が True…

CLR via C#読書(1)

C#

CLR via C#で勉強したことのまとめ。途中。 Finalizeメソッドが呼ばれるタイミング マネージヒープが世代0で一杯になった時 と本には書いてあるけども、正確には世代n(n:0〜)で一杯になったとき? 明示的にコードから呼び出した時 Windowsからメモリが足り…

日記1日目

ブの方は使っていたんですがリーも使ってみることにしました。 それだけです。 今日はここまで。