2011-09-29
スマートフォンアプリ選手権にエントリーしてみた
@IT デザインハックミーティング 「スマートフォンアプリ選手権」
おとといの夜にエントリーメール送ったんだけど、App Hub無料開発者コード貰えました><
今のところ「おばか賞」を狙おうかと思ってます(`・ω・´)
2011-09-27
IS12T おもしれー
3日前に買いました!
初スマホ最高〜
SkyDriveとの連携がかなり Good!
ただ、スマホは文字打ちづらい><
プログラミング Windows Phone も予約完了したし、これから楽しみ〜
どうやら F# での開発もできるっぽい??
2011-09-08
F# の書式指定文字列
printf 使ってるとすぐに気付くんだけど
let s = "hoge" printfn s
これ、コンパイル通らないですね。
error FS0001: 型 'string' は型 'Printf.TextWriterFormat<'a>' と互換性がありません
Console.WriteLine みたいに単純に文字列を受け取るわけじゃないみたいです。
こういう間違った指定もコンパイルエラーになります。
printfn "%s, %i" 100 200
つまり、コンパイル時に文字列リテラルを解析して各プレースホルダーの型を解決できちゃう、と。
これはなかなか粋なことしてくれます!
ちなみに Printf.TextWriterFormat<'a> は PrintFormat<'a, System.IO.TextWriter, unit, unit> の型省略形です。
次の検証結果を見るとよくわかりますが、文字列リテラルを直接 PrintfFormat 型として扱うことができるってことですね。
> let format:PrintfFormat<_,unit,unit,unit> = "%s %i";;
val format : PrintfFormat<(string -> int -> unit),unit,unit,unit>
PrintfFormat のコンストラクタの引数に対しては解析処理は働きません。これは文字列リテラルを普通に string 型の引数として渡しているだけだから当然です。
> let format = new PrintfFormat<_,unit,unit,unit>("%s %i");;
error FS0030: 値の制限。値 'format' は次のジェネリック型を持つと推論されました。 val format : PrintfFormat<'_a,unit,unit,unit> 単純なデータ用語として 'format' を定義するか、明示的な引数を使用して関数にするか、ジェネリックにする意図がない場合は型の注釈を追加してください。
2011-09-06
とりあえず言語の基本機能はなんとか覚えたと思うのです
let FizzBuzz = function | x when x % 15 = 0 -> "FizzBuzz" | x when x % 3 = 0 -> "Fizz" | x when x % 5 = 0 -> "Buzz" | x -> string x >> printfn "%s" |> List.iter FizzBuzz [1..100]
2011-02-14
バレンタイン
これさえあれば
- 出版社/メーカー: 任天堂
- 発売日: 2011/02/26
- メディア: Video Game
- 購入: 24人 クリック: 1,996回
- この商品を含むブログ (368件) を見る
2010-08-06
やりかけがいっぱい
- C# で強い typedef っぽいことをするためのカスタムツール作成
- MVP パターンのフレームワーク作成
- DynamicObject 使って C# でプロトタイプベースなライブラリ作成
- MVP パターンの記事
- NotifyIcon 使った常駐アプリの作り方の記事
- 公開用 NHibernate のサンプルプログラム作成
- 公開用 TableModule のサンプルプログラム作成
- 公開用 ActiveRecord のサンプルプログラム作成
- 本気スケジューラアプリ作成
- 本気 TODO List アプリ作成
- etc...
だいたい三日〜一ヶ月位で冷めて放置というパターン
まともに何か達成したことがほとんどない件
とりあえず、typedef っぽいカスタムツール作成にまた興味出てきたけどいつまで続くか・・・w
2009-11-29
log4net サンプル
Global.asax.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState; using log4net; using log4net.Config; namespace Sample { public class Global : System.Web.HttpApplication { private static readonly ILog _log = LogManager.GetLogger("App"); protected void Application_Start(object sender, EventArgs e) { XmlConfigurator.Configure(); } protected void Application_Error(object sender, EventArgs e) { Exception lastError = this.Server.GetLastError(); if (lastError is HttpUnhandledException) { _log.Fatal("未処理の例外が発生しました。", lastError); } else { _log.Error("エラーが発生しました。", lastError); } } } }
Web.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <system.web> <customErrors mode="RemoteOnly" defaultRedirect="Error.html"/> </system.web> <log4net> <appender name="ApplicationLog" type="log4net.Appender.RollingFileAppender"> <file value="Logs/app" /> <appendToFile value="true" /> <maxSizeRollBackups value="10" /> <rollingStyle value="date" /> <staticLogFileName value="false" /> <datePattern value='"."yyyy-MM-dd".log"' /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> </layout> </appender> <appender name="NHibernateFileLog" type="log4net.Appender.RollingFileAppender"> <file value="Logs/nhibernate" /> <appendToFile value="true" /> <maxSizeRollBackups value="10" /> <rollingStyle value="date" /> <staticLogFileName value="false" /> <datePattern value='"."yyyy-MM-dd".log"' /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> </layout> </appender> <appender name="DataLog" type="log4net.Appender.RollingFileAppender"> <file value="Logs/data" /> <appendToFile value="true" /> <maxSizeRollBackups value="10" /> <rollingStyle value="date" /> <staticLogFileName value="false" /> <datePattern value='"."yyyy-MM-dd".log"' /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> </layout> </appender> <!-- levels: DEBUG, INFO, WARN, ERROR, FATAL --> <logger name="App" additivity="false"> <level value="Error"/> <appender-ref ref="ApplicationLog"/> </logger> <!--<logger name="NHibernate" additivity="false"> <level value="DEBUG"/> <appender-ref ref="NHibernateFileLog"/> </logger> <logger name="Pushable.Data" additivity="false"> <level value="DEBUG"/> <appender-ref ref="DataLog"/> </logger>--> </log4net> </configuration>
2009-11-13
最近買った本
- 作者: 神田昌典
- 出版社/メーカー: 講談社
- 発売日: 2004/01/27
- メディア: 単行本
- 購入: 17人 クリック: 208回
- この商品を含むブログ (73件) を見る
- 作者: 神田昌典
- 出版社/メーカー: フォレスト出版
- 発売日: 2002/06/01
- メディア: 単行本
- 購入: 18人 クリック: 153回
- この商品を含むブログ (199件) を見る
あなたの会社が90日で儲かる!―感情マーケティングでお客をつかむ
- 作者: 神田昌典
- 出版社/メーカー: フォレスト出版
- 発売日: 1999/12/14
- メディア: 単行本
- 購入: 13人 クリック: 96回
- この商品を含むブログ (55件) を見る