2006-11-01から1ヶ月間の記事一覧

XmlSerializerでTimeSpanがシリアライズできないのは嫌がらせか何かですか?

C#

http://friends.newtelligence.net/clemensv/PermaLink,guid,46715ffd-2470-4396-a63c-f037ecd2fa0a.aspx というわけで対処としてはTimeSpanなパブリックメンバにXmlIgnore属性をつけて、あらためてstringなメンバをパブリックで追加と。ああ嫌らしい。

はてなに自動ログインする

はてなのリニューアルにともない、どうやらこの方法は使えなくなりました(2007.07.05) はてなのログインについて、ユーザー名とパスワードをいちいち入… - 人力検索はてな にインスパイヤされた。 //hatena_login.js var s1; var s2; function hatena_logi…

素人がC++にかかわらないほうがいい5つの理由

低い移植性 あらゆるプラットフォームにC++コンパイラがあるが、それらすべてには独自拡張とテンプレート関係のバグがある。 経験が必要 他の言語を学ばずにC++を習得するのは困難である。なぜなら、C++はさまざまな言語の要素を持っているので。たとえば: …

CodeDOMにおいて、static externなメソッド(P/Invoke用の)を定義する方法はないのか

The Old .NET Questions Forum - Another CodeDom Questionによると、ないようだ。FUCK. CodeSnippetTypeMemberを使えばどうにかなる気がする。

楽にunmanaged dllをダイナミックローディングしたい

http://www.codeproject.com/csharp/dynamicinvokedll.asp ダイナミックローディングにはこんな方法があるよ、と。ここから妄想。たとえば interface IHoge { void Hage([MarshalAs(...)]string str); int Fuga(int,int); }なんてインタフェースだけ定義して…

カスタム属性を関数の戻り値に適用する方法

c#

これ以外と知られてないと思いますよ!というか使う機会がほとんどないし。 class Hoge { [SomeAttr] //SomeAttrはHogehogeメソッドに適用される。では、メソッドの戻り値(string)に属性を適用するには? string Hogehoge() {} }MSDN:属性の対象 (C#) clas…

.netプログラムからrubyをつかう

rubydotnet rubyから.netを使う機能のほうに力が入っているが、RubyInterpreter.dllっていうドトネトからrubyをevalったりできるライブラリもついてくる。 IRubyInterpreter i = RubyInterpreter.instance; object resul=i.eval("1+1"); どれどれ…… ちょww…

Linuxファイルシステムは、いかにしてディレクトリの内容を列挙するのか

ちょっと調査する必要に迫られまして。まずはlsのソースコードから…… と思ったがlsのソースが見つからなかったのでやめ(しょぼい)linuxのシステムコール/ライブラリルーチンをざっと眺めますと、opendir()というのが目に付きます。調べてみたところどうや…

nimpl

C# VS

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>nimpl</Title> <Shortcut>nimpl</Shortcut> <Description>throw NotImplementedException</Description> <Author>gnarl</Author> </header></codesnippet></codesnippets>

genericは結構エロイ

C#

src: class A<T> where T : A<T> { static A() { Console.WriteLine("init:" + typeof(T).Name); } } class AA : A<AA> { } class BB : A<BB> { } class CC : A<Program> { } //err! class Program { static void Main(string[] args) { AA a = new AA(); BB b = new BB(); } } disp</program></bb></aa></t></t>…

調子に乗ってS式評価機を

もはやantlrと何の関係もない……!

ANTLRの練習としてS式構築機を

まずデータ構造を定義してだな(割愛)、あとはパーサを改造して、

ANTLRの練習としてS式パーサをつくってみる

試行錯誤した結果grammerはこんなふうになった。 options { language = "CSharp"; namespace = "Parser"; // encapsulate code in this namespace } class SExprParser extends Parser; options { k = 2; } sexpr : atom | list | QUOTE sexpr ; list : OPAR…

Visual studioでANTLRを使用した開発を行なうためのおぼえがき

すっきりした方法がみつからないので、とりあえずNANTをつかって自動化している。 //exec_antlr.build //default.build このふたつをプロジェクトdirにいれておいて、ビルドイベントで cd $(ProjectDir) nant を実行。生成された./generated内のファイルは手…

ANTLRメモ

ドキュメントはここ。

車輪の再実装

我ながら気の利いた言葉を思いついたものだ…… と思ったもののこの言葉自体車輪の再発見だったというオチ。 車輪の再発見 車輪の再発明 車輪の再実装 は違う概念だよなあ、という思考自体車輪の再ナントカな気もするが、反復を恐れていてはブロガーなどつとま…

「雑記」だってよ!こんなタグ初めて使ったぜ!

メインアカのはてブから技術系ネタをごっそりこちらにインポートしてきて、完全に仕事用(仕事じゃないけど)と遊び用でアカウントをわけてしまったほうがいいかもしれないと思った。アカウント切り替えにはいったんログインしなおす必要があるが、それを仕…

HTML parser for .net(Fuck the dirty HTML)

最近はC#で記述されたスクレイピングライブラリを開発中である。 HTMLのパースにはXmlReaderを使用、そのままだとほぼすべてのHTMLに対応できないのでTidyを使ってwell-formedなxmlに変換している。が、しかし、TidyはAmazonの超・ダーティなHTMLを食べると死…

XmlReaderの実体参照解決の仕様がよくわからない

src: XmlReader r =new XmlTextReader(new StringReader("<hoge><hage>&nbsp;hohho&lt;</hage></hoge>")); while(r.Read()) { Console.WriteLine("Type: {0} Name: {1} Value: {2}", r.NodeType, r.Name, r.Value); } result: Type: Element Name: hoge Value: Type: Element Name: hag…

C#でシリアライズ

シリアライズに関係する名前空間にはSystem.Runtime.SerializationおよびSystem.Xml.Serializationがあるんだけど、このふたつがみごとに無関係。前者でシリアライズするにはSerializable属性およびISerializableインタフェースをクラスにくっつけてやる必要…

技術ネタはこっちに書くことにする