flied_onionとにかく入れてみた。kvmの依存にmonoがあるのでmonoも勝手に入ります。package.jsonの内容を取得するみたい。見るにmonoのバージョンを上げなくてはならないよう。ブラウザでアクセスしてみる。kestrel終了した。MVCのサンプルも試してみる。kestrelStartedMVCの方はソースを見るにさしあたりこれまで通りのやり方で実装できそう。Markdown使ってテキストだけで文書を綺麗に作成できるのはうれしいですよね。標準化にあたってはすったもんだしているようで、CommonMarkはどうなることやら心配ですがあちらもシンプルで便利になるといいですね。そんなわけでWordPressでMarkdownがJetPackにて公式サポートされた時には小躍りしていたわけですが、コードブロックのハイライト表示はサポートされておらず、いろんなSyntaxHighlighterプラグインを試してみたもののなかなかちゃんと使えるものがみつかりませんでした。いくつか問題なく使えると思われるプラグインも見つけましたので今回はそれを紹介します。flied_onionコンフリクトエラーの解決方法がわかったのでメモ。More)クリック時にスクロールさせない。使う事で出てくる「続きを読む」のリンクをクリックすると通常はその続きのところまでスクロールしますが、それが嬉しくない場合に無効化する方法。英語codexに記載があるそのままですが、日本語版にはまだ載っていないようなのでメモがてら。F#に初めてさわりつつ比較してみる。2ではscope_nameというものが出てきます。Consoleで以下のようなコマンドを実行すると取得できます。2のConsoleでなにかしていたり、pluginの作製などをしていると現在編集しているファイルの種類を取得したくなることがあります。viewオブジェクトを利用して取得してみましょう。self.viewとなります。Evolvedは大括弧を使用してコードブロックを記述する。Improved環境では大括弧の扱いを間違えると投稿の修正時にマークダウンではなくHTMLのまま編集する羽目になることも。ここではいくつかの方法で大括弧そのものを表示させる方法を試す。Improvedを使用することにした。このプラグインはどうやら保存時のマークダウン変換でなにかあると(調べてないので逆変換ができるかどうかかな)、HTMLとして保存され以降の編集がHTMLでの編集になってしまう(Markdownが失われる)という問題がある。(失う前にマークダウンをhiddenとかHTMLコメントにでも放り込むとかなんかメッセージ出してくれるとかして欲しいものだが・・・、それは気が向いたら考えてみよう。2はそのままでも優秀なエディタですが、プラグインの導入、キーマップの変更などを行うとさらに便利になり、だんだん自分でもプラグインを作成したいと思うようになってきます。いうことで、まずはConsoleを使ってsublimeのviewオブジェクトを操作してみましょう。viewオブジェクトはプラグイン作成時にも役立ちますし、プラグインを作らないにしても知っていおいて損はないはずです。flied_onionIeUnitそのものについてはとりあえず省略。機会があれば紹介します。普通はSeleniumだよねー。事情があるんだよねー。http://code.google.com/p/ieunit/ieunitは便利なんですが、使っていると機能を追加したりしたい場合も出てきます。flied_onionAcceptChangesすると、DataAdapter経由でDBが更新されません。下のコメントをとると、DataRowVersionがNoChangeになるため。通常、machine.configに設定されているcompilationの設定を継承して、ロードされるためprivatePathであるbinフォルダ内のアセンブリはすべてバッチコンパイルされる。論理上、webserviceの実行(起動?)に必要なファイルだけバッチコンパイルされるだけでも(実行時にコストがかかるかもしれないが)実行時にアセンブリがロードされれば実行可能だと考える。なんで、clearセクションを追加してサービスのアセンブリ、システムアセンブリ(machine.config参照)でやればいいのでは・・・とりあえずためしにやってみた。webサービスページは表示可能。実際に動作するかは不明。だめなときはビルドに必要だったアセンブリを追加すればいいのかな。イベントを使用すると、オプティミスティック同時実行制御違反をアプリケーションに通知できます。行の更新を行ったときに発生します。エラー情報の追加、再試行ロジックの追加などの特別の処理コードを追加できます。プロパティを返します。レコードが更新されないためです。この場合、例外がスローされます。値を設定することで例外を抑止したりできます。flied_onionデバッグのステップインでたまにソースファイルを求められる場合があります。俺の予想では、デバッグビルドだがpdbファイルがないdll(つーかアセンブリ)の場合に出現。ファイルを探さない」にソース名がいるやも。ファイルが検索される場所を指定します。ページをクリックします。ファイルが検索されるディレクトリの一覧が表示されます。ファイルを探さない]デバッガによる読み取りから除外するファイルの名前を入力できます。デバッガは、上で指定したディレクトリのいずれかでこれらのファイルを見つけた場合、それを無視します。Frameworkでは、スレッドを使うときThreadクラスとThreadStartデリゲートを使います。ThreadStartデリゲートは、次のように定義されています。ThreadStart();Threadクラスのコンストラクタは、4つのバージョン(オーバーロード)がありますが、ThreadStartデリゲートを使うバージョンは、Thread(ThreadStart)と宣言されています。デリゲートとは、安全な関数ポインタみたいなものなので、ThreadStartにはスレッドとして動作させるメソッドを設定します。Thread(Func);のように関数名を指定してもかまいません(自動的にデリゲートに変換されます)。ThreadStartデリゲートの作るにはバックグランドで動作するメソッドの名前を引数としてThreadStartをインスタンス化する。ThreadStart(DoWork);バックグランドで動作するメソッドのプロトタイプは、戻り値なし(void型)、引数なしであること。DoWork();スレッドを使う手順ThreadStartデリゲートを引数として、Threadクラスをインスタンス化する。ThreadクラスのStartメソッドを呼び出す。結局、次のようなコードを実行するとスレッドが走ります。Work(){....}サンプル1単純なサンプルです。スレッド関数を単に走らせるだけです。Function();という形式なので、パラメータを渡すことができません。これは実用上不便なので普通は、クラスを用意しそのコンストラクタのパラメータとしてスレッドのパラメータを渡します。そのパラメータをThreadStartデリゲートで指定したメソッド(関数)が使用して処理を行うようにします。サンプル2スレッド用クラスを用意して、そのメンバ関数をスレッドとして走らせるサンプル簡単にスレッドを使うためのクラススレッドを使うたびに、クラスを作って同じような処理を行うためのコードを書くのは面倒なので、Java風のRunnableという抽象クラスを作って、それをベースとしてスレッド用クラスを作ると便利です。サンプル3は、Runnableクラスとその使用例です。ThreadTest3.cs)スレッドを便利に使うためのRunnableクラスを使ったサンプルParameterizedThreadStartデリゲートを使うParameterizedThreadStartデリゲートは、オブジェクトを引数とする関数を設定できます。いうことは、データを直接にスレッドに渡すことができます。ParameterizedThreadStartデリゲートを使うときの要件スレッド関数は、void型でパラメータはobject型1個であること。Start(object)メソッドを使うこと。このメソッドの引数として、パラメータをスレッド関数に引き渡すことができる。2.0以上で使用できます。サンプル4ParameterizedThreadStartデリゲートを利用して、スレッドに直接データを渡して動作させる例。スレッドの終了を待つにはサンプル1~4までは、スレッドの終了を待たずにMainが終了していました。これでは、すけっどの実行結果の表示やエラーがあったときの処理ができません。スレッドが終わるまで待つには、ThreadクラスのIsAliveプロパティを監視します。監視ループの中では、ThreadクラスのSleepメソッドを使って、メインスレッドをある時間間隔でスリープさせながら監視します。しないと、CPUの負荷が高くなって動作が重くなります。Joinメソッドを使う方法(下記)も考慮してください。サンプル5サンプル4でスレッドの終了を待つようにしたサンプル。呼び出しもとのスレッドをブロックするには呼び出しもとで、スレッドの監視をすると無駄なCPUタイムを消費するし、コードも書かなくてはなりません。言う訳で、Joinメソッドというものが用意されています。これを使うと、サンプル5はサンプル6のように書き換えできます。サンプル6サンプル5でjoinメソッドを使ってスレッドの終了を待つようにしたサンプル。スレッドどうしの競合を回避するには複数のスレッドが競合するリソースを使うときには、競合を回避する必要があります。あるスレッドがあるデータを書き換えている最中に、別のスレッドがそのデータを読み出すと困ったことが起こるかもしれません。そのような場合には、そのリソースをロックして、他のスレッドがアクセスできないようにすることができます。lockキーワードは、次のような感じで使います。他のスレッドと競合するコード}サンプル72つのスレッド関数が1つのオブジェクトを使うサンプル。(参考)Monitorクラスを使ってスレッドの競合を回避することもできます。lockキーワードはMonitorクラスを使って実装されているそうです。スレッドどうしで同期を取るにはあるスレッドから別のスレッドへイベントを通知して、複数のスレッドが協調しながらある動作をさせたいときがあります。そのような場合は、AutoResetEventクラスやManualResetEventクラスを使います。これらのクラスを使うと、スレッドはシグナルを通じて相互に通信できます。AutoResetEventクラスとManualResetEventクラスの違いは、シグナル状態のリセットが自動で行われるのか、手動で行うかです。ManualResetEventは複数のスレッドにシグナルを送るとき使います。AutoResetEventクラスの使い方AutoResetEventクラスをインスタンス化する。AutoResetEventコンストラクタは、bool型パラメータで初期のシグナル状態を指定する。非シグナル状態で初期化イベント待ち側のスレッドは、WaitOneメソッドを使って、シグナル待ちで待機する。このとき、そのスレッドはブロッキング状態になる。イベント発信側のスレッドは、発信可能になったらSetメソッドを使ってイベントをシグナル状態にする。WaitOneメソッドで待機していたスレッドがブロッキングが解除され処理が続行される。プロセス間で同期を取るときは、Mutexクラスを使います。Windowsフォームでのバックグランド処理Windowsフォームでバックグランド処理をするには、BackgroundWorkerコントロールを使うと簡単です。バックグランド処理は、DoWorkイベントハンドラを追加しその中にバックグランド処理を記述します。バックグランド処理に開始は、RunWorkerAsyncメソッドで開始することができます。バックグランド処理が終了すると、RunWorkerCompletedイベントが発生するのでその中で後処理を行うことができます。APIをコールせずに時間がかかる処理を行う場合は、Application.DoEventsメソッドをループ内でコールして、Windowsメッセージポンプを動作させます。しないと、Windowsメッセージがリアルタイムで処理されないため、他の操作が阻害されます。Windowsフォームでスレッドを停止させるにはApplicationクラスのExit()やExitThread()メソッドを使います。flied_onion天文学的な数値を変換しないかぎりはなくてもよさそう。やるならtypeof(string)で中間キャストするよりも、typeof(byte[])のほうがいいんじゃないかとも思われる。DATE型の場合に時刻が失われるという事象が発生。flied_onionVB.NET用のサンプルソースC#用に書き換えてください。