【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

C#

簡易JPEGビューア

oPad MID701を入手したので、Windows CEをインストールしてもらって、自分でスキャンした本の閲覧に使うことにしました。機能は単純でもサクサク動くものが欲しかったので、C#(.NET Compact Framework 2.0)で簡単なビューアを自作しました。id:n7shi:20090…

Streamの一部を取り出す

C# F#

Streamの一部を取り出すため、別のStreamでラップしてみました。C#とF#の両方のコードをパブリックドメインで貼っておきます。C#とF#の対比や、カスタムStreamの例として使えるのではないかと思います。F#の構文はC#と掛け離れていますが、簡潔なので慣れれ…

割り算

Alphaには除算命令がありません。インタプリタ側で計算することで実装は回避しましたが、どうやって実装するのか気になりました。最初は10進数に引っ張られて小難しく考えていたのですが、2進数で考えると、除数をシフトしながら被除数を引いていけば良いと…

逆アセンブラ・インタプリタ

Alphaの命令について調査するため、Silverlightで逆アセンブラ・インタプリタを作成しました。以下でホスティングしています。ページ上部の[Test1]などのボタンを押すとサンプルを読み込んで実行します。 Sirius - Alpha Canis Majoris (名前の由来:最も明…

ulongの積の上位64bit

C#

ulong(64bit符号なし整数型)同士の掛け算を128bitで計算して上位64bitを取得する必要に迫られました。C#のサンプルが見当たらなかったので、作成したものをパブリックドメインに置いておきます。下位64bitは普通に掛け算すれば得られます。 public ulong u…

HTMLをパース

私がHTMLをパースするのに使用している独自パーサーXmlParserをご紹介します。.NET標準のXmlReaderから妥当性チェックなどを省いて単純化したものです。構造は単純で、XmlParserという1つのクラスだけで構成されています。C#/VB10のソースを以下にパブリック…

ActiveSync

gotouさんとのやり取りで.NET Compact FrameworkやアプリのコピーでActiveSyncについての質問があったためこちらにまとめます。Windows Mobile端末には標準でActiveSyncがインストールされていますので、追加インストールする必要はありません。ActiveSyncな…

gtkmmからC#に移植

g:auautech:id:daiki41ti:20091026で公開されているid:daiki41tiさんのgtkmmアプリケーションをFreeBSDで動かして、C#に移植してみました。Monoのバグらしきものに遭遇しました。右のスクリーンショット(クリックで拡大します)内の右下に3つ並べて比較して…

Avoid Rush

id:ZerOx4CさんのAvoid Rush (Vector 新着ソフトレビュー)をFreeBSDで遊んでみました。Monoを使えば、何も改造せずにそのまま動きました。(画像をクリックすると拡大します)最近、id:m107さんの影響でSDLをいじる機会が増えましたが、GDI+(System.Drawing)…

スマートフォン勉強会@関東#3 発表資料

スマートフォン勉強会@関東#3で発表させていただきました。資料を公開します。発表する機会をくださったスタッフの方々に感謝いたします。ありがとうございました。スライドで解説している手順の詳細はid:n7shi:20090106をご覧ください。スライドの中でご…

pc01_02 for Windows Mobile

id:n7shi:20091011で移植したid:m107さんのmikotoローダ(pc01_02)をOpenGL ESに移植してWindows Mobileで動かしました。Windows XP/Vista/7(32/64)とWindows Mobileに対応したバイナリとソースを置いておきます。 pc01_02-cs-glutes-20091013.zip いくつか問…

テクスチャの読み込み

id:n7shi:20091010でSystem.Drawing.BitmapからOpenGLにテクスチャを渡しましたが、同じことをVincent ESでもやってみました。Compact Frameworkの制限でPixelFormat.Format32bppArgbがないためFormat32bppRgbを使います。OpenGL ESの制限でGL_BGRA_EXTがな…

pc01_02 for C#

id:m107:20090924で公開されているmikotoローダ(pc01_02)をC#に移植しました。ある程度C#風にリファクタリングしています。SDLやOpenGLは既存のラッパーライブラリを使わずに必要なものだけP/Invokeしています。Windows XP/Vista/7(32/64)用のソースとバイナ…

テクスチャの読み込み

OpenGLを使ったプログラムをC++からC#に移植しています(id:n7shi:20091011)。元のプログラムではOpenGLに渡すテクスチャをSDL_imageで読み込んでいます。SDL_imageは依存するDLLが多いため、id:setuna-kanataさんの以下の記事を参考にGDI+で読み込んでみまし…

スマートフォン勉強会@関東#3

スマートフォン勉強会@関東#3でセッションをさせていただくことになりました。 日時: 2009/10/31(Sat.) 13:15 〜 17:00(開場 13:00)内の14:00〜14:30 会場: マイクロソフト新宿本社 セミナールームA&B 第2セッション:七誌「無料環境でWindows Mobileアプ…

GLES#

GLES#というOpenGL ESのC#ラッパーを作成しました。スクラッチから書いた部分はパブリックドメイン、Vincent ESやGLUT|ESから流用した部分は元のライセンスです。Windows Mobile対応のためid:n7shi:20090106の方法により無料のVC# Expressで開発しています。…

glBegin(), glEnd(), glFrustum()

OpenGL ESはサブセットのため関数が少ないです。入門書などでもよく使われるglBegin()とglEnd()がないのはつらいので実装しました。glNormal3f()やglVertex3f()をキャッシュしてglNormalPointer()やglVertexPointer()に渡しています。GL_QUADS/GL_QUAD_STRIP…

関数ポインタのマーシャリング

.NET Compact Framework 2.0では関数ポインタのマーシャリングがサポートされましたが、引数や戻り値の型に制限があります。boolは変換できないためNotSupportedExceptionになります。boolの代わりにintを使えば問題ありません。このことを知らずにP/Invoke…

TextBoxを流用したIME入力

IMEの状態が検出できるようになったので、内部でTextBoxを利用して独自コントロールで文字入力してみました。 ⇒ 動作確認とソースキャレットは点滅しません。カーソルキーやクリックで移動できません。編集は[Backspace]だけです。たまに変換中に文字を取り…

IMEの状態を検出

Silverlight 3でIMEの制御は、TextBoxでの有効・無効の設定しかできません。TextBox以外からIMEを利用する方法はありません。キーストロークから文字を取得(例: [Shift]+[1]→!)する方法もありません。このような状況でエディタを作ろうとすると、全部自前…

YOPViewer.NETのデッドロック対策

【注】2010年12月10日以降、仕様変更により利用不可となりました。暗号化のため対応は不可能です。id:n7shi:20090907のコメントでmmmtokさんからページをめくるときにフリーズするというご指摘がありました。修正したものを公開します。id:n7shi:20090106の…

YOPViewer.NET 1.1 (メモリ節約版)

id:n7shi:20090201のコメントでmmmtokさんにメモリを節約する方法を教えていただきました。 次のようにBitmapのコンストラクタにformatを指定すると、使用メモリが減るようです。 new Bitmap(w, h, PixelFormat.Format16bppRgb565); 修正したものを公開しま…

WebRequestの同期呼び出し (2)

id:n7shi:20090731:1248967824でMonitorを取り上げましたが、AutoResetEventを使った方が簡単だということが分かりました。詳細はid:n7shi:20090731:1248967824を修正したのでそちらを参照してください。AutoResetEventについてはParallel で最適化してみる…

XAPコンテンツの読み込み (2)

id:n7shi:20090714でXmlXapResolverを取り上げましたが、Application.GetResourceStream()を使った方が簡単だということが分かりました。詳細はid:n7shi:20090714を修正したのでそちらを参照してください。

MIZU GAME for Windows Mobile

id:fslashtさんのMIZU GAMEをCompact Frameworkに移植しました。id:n7shi:20090106の方法により無料のVC# Expressで開発しています。PCとWindows Mobileの両方で動きます。ダウンロードは以下です。 MizuGame.CAB (Windows Mobile用CABインストーラ) MizuGam…

MIZU GAME for Silverlight

id:fslashtさんのMIZU GAMEをSilverlightに移植しました。動作確認とソースのダウンロードは以下です。 MIZU GAME for Silverlight オリジナルを初めて起動したとき、流れるような水の表現に圧倒されました。それを再現するため、SDL.NETを使用している部分…

スーパーマリョーワールド(仮) CABインストーラ

スーパーマリョーワールド(仮)のWindows Mobile用CABインストーラを作成しました。分散するとわかりにくくなるため、以前のエントリにまとめて置きます。 id:n7shi:20090801 操作のときにIMEが邪魔になるため、起動時にIMEをオフにするようにしました。参考…

FontSourceによるフォントの取得

SilverlightではSystem.Windows.Documents.FontSourceでフォントを読み込んで描画に使用できます。GDI+のPrivateFontCollectionに相当しますが、Familiesに相当するものがないため、あらかじめフォント名を調べておく必要があります。mplus-2p-black.ttfなら…

MediaElementとビジュアルツリー

MediaElementをXAMLに記述しないでコードから呼ぼうとしてハマりました。検索しても情報が錯綜しています。 id:beta_magnus:20090625:1245906963 : SilverlightのMediaElementはビジュアルツリーに組み込まないと音声再生などができないらしい、という噂を聞…

Super Maryo World for Silverlight

id:n7shi:20090801のスーパーマリョーワールド(仮)をSilverlightに移植しました。実際にプレイできます。動作確認とソースのダウンロードは以下です。 Super Maryo World for Silverlight 移植にはid:n7shi:20090730で開発したWindows Formsエミュレーション…