読者です 読者をやめる 読者になる 読者になる

.NETのORMのことを調べてたメモ

Entity FrameworkとDapper以外にあんまり知らないので、軽く調べてみた。 Dapperのページに他のORMとのベンチマーク比較があった。 github.com その中で検証してみたいなぁと思ったのは以下の二つ。 github.com nhibernate.info そういえばNHibernateとかあ…

今時の.NETテンプレートエンジンはRazorEngineっぽい

.NET用のテンプレートエンジンを探していたらRazorEngineっていうよさげなのを見つけた。 RazorEngine Razorをラップしたライブラリ。Razorは、ASP.NET MVCとかASP.NET Webページ(WebMatrix)とかで使われているMS謹製のテンプレートエンジンで、NuGetでも単…

PortAudioでのマイク入力をSpeexでエンコード/デコードしてそのまま鳴らす

この例だとNSpeexが負荷の高いノイズフィルタとしか扱えてないのだけど、検証コードとしては十分。NSpeexエンコーダのポイントとしては、 16bit MONO サンプルレート: NB=8KHz, WD=16KHz, UWD=32KHz フレームサイズ: NB=160, WD=320, UWD=640 NSpeex.SpeexEn…

PortAudioでマイク入力をそのままスピーカーに出力するだけのコード

portaudiosharp - .NET bindings for the portable low-latency audio library PortAudio - Google Project Hostingを使えばいいのに、ちょっとラッパーの実装が気に入らないので自分でアンマネージドコードを呼び出してみている。(ちなみにportaudiosharp…

アンマネージドコードにCallbackを指定したらCallbackOnCollectedDelegateが頻発する

なんとなくPortAudioSharpを使わずに、自分でDllImportとか書いてPortAudioを使ってみている。そしたら、少し動かしているだけでCallbackOnCollectedDelegateが頻発して、少しはまってしまった。原因はcallbackOnCollectedDelegate MDAに書いてある通り、ア…

gstremer-sharpでOgg/Speexを再生する

demuxerを使った場合のLinkのさせ方で詰まったのでメモ。 初期化 var path = @"C:\gstreamer"; Environment.SetEnvironmentVariable("PATH", String.Format(@"C:\Windows;{0}\lib;{0}\bin", path)); Environment.SetEnvironmentVariable("GST_PLUGIN_PATH", …

.NETから叩ける組み込みブラウザエンジン

丸一日かけて調査したのだけど、直近では使わなさそうなのでメモだけ。状況が変わりやすい世界のようなので、1年後にはここに書いた情報は陳腐化して使えなくなってる可能性がある。 Firefox(Gecko) Firefoxをアプリ内に組み込みたい場合は、XUL RunnnerをGe…

.NET基礎勉強会でMSILの話をしてきました

動的なILの生成と編集 from terurou 自分より.NET力の高い方が来場されていたお蔭で、スライドの間違いを2か所修正できました。ありがたいことです。

MuPDF conveter(MuPDFLib)でPDFを画像に変換してみる

MuPDFという軽量なPDFレンダラの.NETバインディングのMuPDF conveter(MuPDFLib)を使ってみた。簡単にPDFをWPFで表示できたりする。地味に32bit/64bit両対応しているのも良い。MuPDFのソースなりドキュメントを読まないとパラメータの意味がわからない部分…

自分でビルドしたPoppler 0.22.5 + .NETバインディングがうまく動かなかった

ここ数日、Popplerを自分でビルドしたりして.NETから叩いてみてたんだけど、どうも動作が不安定。 MinGWでPoppler 0.22.5をビルド - DenkiYagi Poppler 0.22.5の.NETバインディングを作成する - DenkiYagi こんな感じのコードが動いたり、AccessViolationExc…

Poppler 0.22.5の.NETバインディングを作成する

MinGWでビルドしたPoppler 0.22.5の.NETバインディングを作成する。Windows単体ではすんなり作成できそうにないので、Linux(Xubuntu)で作業した。 必要な環境 monoの開発環境。XubuntoでMonoDevelop 4が動かしたくて色々入れた後なので、どのパッケージが…

gstremer-sharpで明示的にデバイスを指定

例としてDirectSound Deviceを明示的に指定する。 var src = Gst.ElementFactory.Make("dshowaudiosrc"); var probe = new Gst.Interfaces.PropertyProbeAdapter(src.Handle); var devices = probe.ProbeAndGetValues("device-name"); src["device-name"] = …

.NETからGStreamerを使ってみる

GStreamerとは クロスプラットフォームのマルチメディアライブラリ。映像や音声の入力(デバイスでもファイルでもよい)をエンコードしたり、RTMPでストリーミングしたりとか、そういったものを簡単に作ることができる。なお、.NETからGStreamerをつかう実例…

.NET FrameworkのThreadPoolサイズ

プロセスごとに、1 つのスレッド プールがあります。 .NET Framework 4 以降では、プロセスのスレッド プールの既定のサイズは、仮想アドレス空間のサイズなど、いくつかの要素によって決まります。 スレッドの数は、プロセスで GetMaxThreads メソッドを呼…

F#というか.NETにJavaのAtomicBooleanがなかったので実装してみた

タイトルの通り、.NETにはJavaのAtomicBoolean(CAS操作のできるBoolean)が存在しないので、適当に実装してみた。スレッドセーフを保障しつつ、一回だけ処理を走らせたい場合なんかに使うと思う。 実装例 ここの例はF#だけど、Interlockedを使ってるだけな…

ローカルマシンのIPAddressを取得するのに Dns.GetHostEntry(Dns.GetHostName()) とか使えない

.NETでSocketをたたくコードをMSDNのサンプルをもとに書いてたのだけど、Socket#Bind()でエラーが出て少しハマった。よく考えればわかることなんだけど、Dns.GetHostEntry(Dns.GetHostName())だと、ipv6アドレスやHyper-Vの仮想NICとかのインターフェースも…

IKVM.Reflectionを使って動的にMSIL/アセンブリを生成してみる

LL/MLほにゃららシリーズではMSILしか弄ってない者です、こんにちわ。最近仕事が忙しいので、軽めのネタとしてIKVM.Reflectionを利用して動的にMSIL/アセンブリを生成してみる例を紹介しておきます。 IKVM.Reflectionとは まず、IKVMとは、.NETとJavaを相互…

IronPythonリハビリメモ

ここ1年以上、VB.NET・JavaScript・C#・XAMLしか書いてなかったので、IronPython(というかPython自体)をほとんど忘れてしまっていた。なので未来の自分が読んだらコードが書ける程度にメモを残しとく。一日で書けるやろ…ぐらいで書いてたら意外と終わらな…

.NET FrameworkでいわゆるJavaScriptのsetTimeout()みたいな事をやる方法

たまーにやりたくなるんだけど、その都度やり方を忘れちゃってるので備忘録。 private void SetTimeout(Action fn, int time) { BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += delegate(object sender, DoWorkEventArgs e) { Thread.…