.NET

.NET diff class

.NET 高速 diff classを公開します。2つの文字列のdiffを取ります。行単位のdiff(UNIXのdiffコマンドのような)と、文字単位のdiffを取れます。 "An O(NP) Sequence Comparison Algorithm"(PDF), Sun Wu, Udi Manber, Gene Myers, (1989) のアルゴリズムを使…

diff その3

前回は http://www.mathertel.de/Diff/ のコードの Hashtable を削除したら2倍速くなったところまで。今日はその続き。 このコードでは文字列を行ごとにばらしてハッシュ値にする前処理があって、その後にハッシュ値配列のdiffを調べる。この前処理とdiff処…

diff その2

http://www.mathertel.de/Diff/ここのO(ND)なコード、「非常に早いコードです。diffのアルゴリズムに詳しくなければこれより早いコードは書けません。」と書いたばかりでなんだけど、ちょっといじったら2倍早くなった。前言撤回(^^; Hashtableいらなくね?…

diff

(追記)この日の日記で紹介したO(ND)のdiffクラスより高速なO(NP)のdiffを書きました。id:siokoshou:20070315を参照。(追記終わり)コード中でdiffを取りたかったので.NETなdiffクラスがないかと探してみたら、とてもよいものを見つけました。http://www.mathe…

PowerShell でラインカウント

昨日よりだいぶましになった。 > $wc = New-Object System.Collections.HashTable > ls -name -Recurse -filter *.cs | foreach { $wc[ $_ ] = ( cat $_ | wc -l ).lines } > $wc 結果はこう。 Name Value ---- ----- ApplicationControl.cs 323 HtmlDocumen…

PowerShell遊び

C#ファイルのライン数カウント。 cat (ls -recurse -name -Include *.cs)| Measure-Object -line あるいは、「Set-Alias wc Measure-Object」して cat (ls -recurse -name -Include *.cs)| wc -l で。「wc -l `find . -name '*.cs'`」相当。ただ、空白行が無…

Windows PowerShell正式版

が出た!正式版は遠い未来に延期されたと思っていたのでびっくり。遊んでみたい!!http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx http://journal.mycom.co.jp/news/2006/11/15/364.htmlプロンプトを見ると ls…

Conditional属性

部屋を整理してたら、昔勉強したC#の本が出てきて、こんなのあったなぁと思い出したので遊んでみた。 #ifdef HOGE 〜 #endif みたいなのをまたちょっと違う方法で実現できる属性。条件付きメソッド。TraceやDebugあたりの仕組みを実現するために作ったんだろ…

Vista と .NET と VisualStudio と

Vista で .NET1.0 は動かない。1.1 と 2.0 は動く。 Vista で Visual Studio.NET 2002 と 2003 は動かない。2005 (SP1 と Vista Support Update を適用したもののみ) と VB6 は動く。Vista で .NET1.1 で問題起きたら泣きますね…(T-T)http://www.microsoft.c…

Box化確認ツール

.NET3.0 が出た記念ってわけでもないけど、Box 化確認ツールを作ってみました。しょぼいツールなのに驚きの効果が…w きっかけは、自作の WinForm アプリがもっっっさりと遅くて、「WinForm、おせ〜」とか言いながら調べてみたら、実は原因は意図していない …

.NET Remoting メモ

WCF目前なのにRemotingをちょっと使ったので調べたことなんかをメモしておきます。あまり詳しくないので、疑って読んでください(-_-;Remotingは通信手段ではあるけれど、主題は、オブジェクトをサーバとクライアントでやり取りするってとこが要点って感じ。…

Visual Studio 2005 Expressが永久無料に

以下は勝手な妄想です。くれぐれも本気にしないでください。A:Eへの対抗上VSEは無料で出すしかないね。 B:でもB社に訴えられるかもね。 A:じゃあ、期間限定ってことで。あおりをくらってB社が開発製品を手放す。A:もう遠慮はいらないね、ずっと無料で。 B:あ…

スタートキットスクリーンセーバーのRSS1.0対応

VisualStudio2005のスタートキットのスクリーンセーバーがRSS2.0にしか対応してなかったので、RSS1.0にも対応させてみました。 スタートキットのRssディレクトリにある3ファイルをちょこっと改造して、さらに2ファイル追加しました。http://briefcase.yahoo.…

C#でRSSしてみる

.NETでRSSを扱ってみたいなと思って調べたのでメモ。 まずはWikipediaでRSSを調べてみます。Firefoxならアドレスバーに「wp rss」って入れるだけでWikipediaに飛んでいくので、便利。 http://ja.wikipedia.org/wiki/RSSRSS0.9/2.0系列、RSS1.0系列、Atomなん…

WPF/E

http://pcweb.mycom.co.jp/articles/2006/03/30/mix1/ これってつまり、MS製の.NET実行環境がほかのプラットフォームにも提供されるってことなの!?

Boyer-Moore-Horspool検索法(BMH法)

BM法で検索しているときにこちらのページでBMH法っていう、BM法の改良があることを知りました。読んでみると実に簡単です。なんでこれでうまく行くのよ?ってのも絵を描いて実際に試してみればすぐうまく行くことがわかりました。正式にはBoyer-Moore-Horspo…

FirefoxのMSDN2検索プラグイン

Firefoxの検索バーからMSDN2を検索するプラグインを作ってみました。 Document Explorerで検索できますが、Firefoxにもあると便利かなと思って作ってみました。 # MSDN2 search plug-in by siokoshou <search name="MSDN2" description="www.google.co.jp" method="GET" action="http://www.google.co.jp/search" queryCharset="UTF-8" queryEncoding="utf-8"> </search>

SubRange Enumerator

ちょっとだけ実用的な列挙子。また列挙かよってつっこみはなしの方向でw 指定範囲だけ列挙してくれる SubRange Enumerator。for 文使えよってつっこみもなしの方向でw using System; using System.Collections.Generic; namespace SubRangeEnumerator { pu…

EqualityComparer

昨日のエントリーは玉砕してしまって考察が不足したまま終わったので、考察を追加します。朝起きたらいろんな疑問が湧いてきたわけです。 その前にちょっと反省。昨日のコードは Test クラスのメソッド名がどれもよくないですね。今読んでみると何が何だかわ…

番兵つき Find Enumerator

今日は長文。 MSDN の Articles and Columns に載っている Tips and Tricks がおもしろかったので、いろんな列挙を書いて遊んでみました。 STL でいうところのアルゴリズムとイテレータが混ざったものに当たるので、コンテナ、アルゴリズム、イテレータを分…

実行には30秒掛かります…

class Set { public void Analyze() { foreach ( Entity e in list ) { e.Analyze(); } ... } } class Entity { public void Analyze() { Regex r = new Regex( ... ); Match m = r.Match( str ); ... } }みたいなコードが実行に30秒もかかっていて、30秒も…

速度比較

Listのソート速度を比較してみました。 using System; using System.Collections.Generic; using System.Collections; namespace ListSortSpeedTest { public class Program { private const int Max = 5000000; public static void Main( string[] args ) {…

C#によるWindowsのバージョン判定方法

http://support.microsoft.com/kb/304283/ メモ

圧縮つきWebClientクラス

WebClient クラスは2.0でかなり便利になってますね。非同期に使えるようになったんで、html を落としてファイルに保存する程度ならもうこれだけでいいね。 非同期に使う方法も .NET2.0 で新しく出てきた「イベントベースの非同期パターン」ってやつで超簡単…

上の続き

ふと気づいたけど、アプリケーション設定は読み取り専用で、ユーザー設定は読み書きOK。読み取り専用のアプリケーション設定を読む ApplicationSettingsBase 継承クラスはいくつあっても何の問題もないけど、読み書きOKなユーザー設定に対してだと複数あると…

アプリケーション設定 その4

その3は長すぎた。まあそれはおいといて。 ユーザー設定はその3で書いたように app.config のセクション名と読み書きするクラス(ApplicationSettingsBaseを継承したクラス)の名前が一致していなくても読み書きできた。 今度はアプリケーション設定で同じよ…

アプリケーション設定 その3

id:siokoshou:20060122 でアプリケーション設定を VisualStudio と手書きで混在させる方法が分からないって書いてた件、解決できたのでメモしときます。以下は前回に引き続きユーザー設定の話題を扱ってます。プロジェクトのプロパティを開くと出てくる画面(…

ユーザー設定カラクリ編とヒント(アプリケーション設定 その2)

あんまり深くないカラクリ解説編。 まずはFormから値がどこにどう設定されているのかってあたり。Form1.Designer.csを開いてみてみると、Properties.Settings.Defaultにデータがバインドされてるのが分かる。 データバインディングでLocationが変わるたびに…

フリーの.NETプロファイラNProf

フリー(GPL)の.NETのプロファイラ、NProfが.NET2.0では動かないので困った。SourceforgeのMLを読むとどうやらそのうち.NET2.0対応版を出すようです。が、MLを読んでみた限りあまりやる気はなさそう。NProfのホームはこちら。 http://nprof.sourceforge.net/S…

XMLシリアル

google:"xmlシリアル"の結果、「228件」!��( ̄□ ̄;)(つд⊂)ゴシゴシ(;°д°)(つд⊂)ゴシゴシ(;゜ Д゜)エエエ、少なすぎ。あんまり使われてない!?そうなの?そうなの? 楽でいい〜と思ってたんだけど…。検索語がまずい?それともほかの何かを使ってる?