C#

Dispatcher とか Queue とかメッセージループとか

GUIのコードを書いていると、時間のかかる処理をやりたくなることは多々あると思うんですが、それを普通に実行しちゃうとGUIが固まりますよね。で、C#には、Taskという比較的簡単に使える道具がありまして、例えば、適当なスレッドで実行して、その結果だけ…

HttpStream を .NET Platform Standard 1.1 対応のパッケージとして NuGet で公開しました

実は、以前に HttpStream というライブラリを作ってました。espresso3389.hatenablog.comこれ、普通に HttpClient で ReponseStream とかをランダムアクセスしようとすると、対応してないぜって感じで例外が出て悲しいので、うまーい具合にラッパーを作るこ…

続続) 気づいたら、C# が C++ の速度を凌駕している!

先日の記事、espresso3389.hatenablog.com.NET Native だとどうよ?っていう話があったので、試してみました。 コードは趣旨を変更しない範囲で弄りました。 スレッドプールのプライオリティとかどうなってんの?っていう疑問はあるんですが、 実行した感じ…

気づいたら、C# が C++ の速度を凌駕している!

5年半程前に書いた、この記事。espresso3389.hatenablog.comC#というか、.NET Framework 4.6 は、 RyuJIT という新しい JIT の導入によって、64-bit 環境での実行が高速化されています。なので、さーて、少しは面白い結果が出るんじゃないかなぁーと。blogs.…

ファイルに対する画像を取得する(WPF)

WPFで、単にファイルに対する画像を取得しようとしたのですが、たったこれだけのことにも関わらず、 意外と、どこにもソースが落ちていない。もちろん、 WindowsAPICodePack を使えば、簡単にできるんですが、大なた過ぎて、ちょっと・・・っていう感じだっ…

配列とIEnumerable, IReadOnlyList での処理速度差

C#

C# で配列を確保した後に、それを IEnumerable や IReadOnlyList で受けて処理をした場合にどの程度の速度差があるのかを計ってみた。.NET 4.6, x64環境での調査。100000000要素での結果は、 Array 87 ms. IEnumerable 624 ms. IReadOnlyList 568 ms.という…

C#からネイティブDLLを呼び出す場合のVSからのデバッグのジレンマを解決する

「C#を使う最大のメリットって、やっぱり、Visual Studioですよね!」って自信を持って言いたいですね。という心境ではあるんですが、私の仕事はどっちかというとC++よりなので、どうしても、DllImportはお友達という側面があります。そうすると、プログラム…

Xamarin.Forms の ListView で System.MissingMethodException: Default constructor not found for type

※2016/08/31追記:今更ながら、AOT関係ないじゃんっていうツッコミもらったので、AOTっていうのを消しておきます。正しくは、単に、リンカのstrip処理ですね・・・。突然ですが、 SIN@SAPPOROWORKS の記事を引用します:みたいなコードを見て、 Xamarin.Form…

.NET の Stream を CoreGraphics で利用する

※2015/1/23 追記 下記の文書によれば、32-bit環境においても、 sizeof(off_t)=8 です。僕は何となく新しい環境でしかテストしていなかったため、問題が起きませんでしたが、当初、sizeof(off_t)=4と誤解してコードを記述していました。 そのため、 position …

特定のプロセスが開いているファイルの一覧を取得する

そんなん、下の奴を見れば終わり:HOWTO: Enumerate handlesっていう訳にもいきませぬ。 上の奴からたどれる範囲のコードでは、 32bit PID値に未対応 SYSTEM_HANDLE ではなく、SYSTEM_EXTENDED_HANDLE を使う。 ネットワーク共有上のファイルに未対応 \Devic…

XAMLでウィンドウの最大化・最小化・閉じるボタン群を制御する Attached Property

Attached Property の便利さに目覚めたので、最近はこういうのは全部、Attached Properyです。

Per-Monitor-Dpi をAttached Propertyで実現する

WPFのアプリで、Per-Monitor-DPIを実現する方法自体は、Developing a Per-Monitor DPI-Aware WPF Application - MSDNで紹介されており、これに基づいて様々なPer-Monitor-Dpi用のヘルパーが用意されています。githubで per-monitor-dpiでググると、それらし…

Ubuntu 12.04.3 LTS に Katana(OwinHost.exe) をインストールする

OwinHost.exe - Katana C#+Owinのコード書きたい。でも、IISじゃなくてLinuxでホストしたいよっていうヒネクレな状況で、とりあえず、Katanaが動かないと話にならないので、Katanaを動かしてみたっていうのが趣旨です。 Mono 3.X とりあえず、新しいバージョ…

Xamarin iOSのP/Invokeでコールバックを使うときの制限

C#でコードが書きたいという一心で、Xamarin iOSを使おうと考えているんですが、基本的に僕の各コードは、C/C++で基本的なAPIセットを用意して、それのラッパーをC#で書き、さらにそのラッパーを呼び出すコードをC#で書く or 書いて貰うという感じになります…

C++とC# unsafeで速度差を計測してみる

何となく、unsafeコードの速度が気になったので、.NET Framework 4.0上でのC#コードと、Visual C++ 2010のコードの速度差を計測してみました。 ちなみに、このコードは、いわゆる画像処理の速度差を計測することを前提とするものなので、w/h/strideといった…

FlipFlopワンライナー

C#

Algorithm - 0と1を次々と返す簡単なお仕事LLじゃないけど、C#でもやってみた。 using System; class FlipFlop { static void Main(string[] args) { Func<bool, Func<bool>> flipflop = f => () => {f = !f; return f;}; var ff = flipflop(false); Console.WriteLine(ff());</bool,>…

bing.com 動画検索

C#

賛否両論あるようだけど、bing.comの動画のサムネイルはおもしろい。これを一度にダウンロードして、同時に再生するプログラムとかを作るとおもしろいと思ったので、手始めにこの動画サムネイルをダウンロード出来ないかどうか試してみた。簡単にできた。普…

超簡単なZIPアーカイバ

C#

圧縮率とか速度とかを度外視して、どの程度の行数でZIPのアーカイバを作成できるかどうか検証してみた。ZIPの仕様書(英語)を流し読みしながら実装。分からないところは、手元で作った複数のZIPファイルをバイナリエディタで眺めながら解析。正直、version ma…

ストリームに対するインクリメンタルなハッシュ計算

C#

ファイルのダウンローダなどで、ファイルのダウンロードが完了してからハッシュを計算しているソフトウェアを見るが、あれは、どう考えても、ダウンロード中にインクリメンタルにハッシュを計算した方が確実に効率がよい。ダウンロード中は、ほとんどの場合…

.NET FrameworkのMutexの納得いかない仕様

C#

変な仕様 .NET Frameworkの名前付きMutexは、どうも、Disposeというか、Closeしても、MutexをReleaseMutexしてくれないような感じ。試しに下のようなコードを書いた。 using System; using System.Threading; namespace MutexTest { public class MutexTest …

C#でUACに対応する

Windows Vistaで一部の処理で管理者権限が必要だが、起動時に管理者権限を要求するまでもないようなアプリがある。タスクマネージャやProcess Explorerはその典型例だが、こういうアプリにはシールドアイコンが付加されたボタンやメニューがある。このアイコ…

JScriptのevalを使う

JScriptのevalを簡単なパーサーとして使うぐらいは、探せば腐るぐらい見つかるけど、戻り値の型についての記述は意外と少ない。 とりあえず、JScriptからの戻り値をstringにせずに返してもらって、その型を調べてみるコード。 using System; using System.Te…

AssocCreate on C#

P/Invoke.netにもなかったので作ってみた。COM関連のマーシャリングは意外と難しい。というか、しばらくやっていないと完全に忘れてしまう。 class Assoc { public static string GetAssociatedCommandLine(string ext, string verb) { try { object obj; As…

仕様書をなぞった実装

「ソースコードがドキュメント足りえないのは訓練していないから」 - イトウ アスカ blog 5月という時期だけにこういう話はたくさんある。新人研修にはうってつけの話かもしれない。仕様書をなぞったようなコードを書くのは、単にそのプログラマがウブだから…

IIS FTPで一時的にフォルダを公開する

ユーザー認証はしない(anonymous)けど、接続元IPを限定することによって、ある程度のセキュリティは維持でき、一定時間が過ぎると仮想ディレクトリごと削除する。そんな機能が必要になったので、適当に作ってみました。やってみると、意外と難しくない。とい…

XML名前空間

C#

やっぱり勘違いしていました。XML名前空間の落とし穴 によると、hrefは、aに固有の名前空間に収容されているらしい。というか、属性のデフォルトの名前空間は、タグに拘束されているということのようだ。で、そんなものは普通は指定しなくて良いと言うことら…

XPathでリンク一覧を取得する

C#

FirefoxとかのXPath系の拡張だと、 //a[@href!='']でリンク一覧を根こそぎとれます。しかしながら、XHTMLに対して、真面目にXPathを適用しようとしてハマりました。 C#のコードなんですが、 XmlDocument doc = new XmlDocument(); doc.XmlResolver = null; /…

Subversionにaddされた同一ファイルを検出してリポジトリをダイエットする

背景 Subversionのリポジトリを長く運用していると、同じファイルが何度も新規でAddされていることに気づくことがあります。プロジェクトによっては、バイナリをaddせざるを得なくなることも少なくなく、その場合、確実に重複したファイルがリポジトリ上に存…