2009-01-01から1年間の記事一覧

タバコが吸いたいなあ。酒を入れてしまった。とてもまずい。意思が弱くなる。 まだ30時間ぐらいだっけ。72時間はやめないと。

ポストタモリ問題

タモリを朝廷から与えられる官職にして受け継いでいくといいと思う。

型の問題もシリアライズの問題も解決した。当初分からなかった部分はクリアーできた。 ニコチンが抜けるまで少し待とう。72時間ぐらいか。いや、1週間必要かな。 プログラミングは俺にとってわけの分からないところのある対象ではなくなった。やっと数値とい…

無呼吸症候群

俺は寝てる間は呼吸を結構止めているんだけど、禁煙すると起きてるときもしょっちゅう止まる。だからニコチン不足がトリガーになって呼吸が止まるようなんだけど、まあなんらかの脳への刺激なんだろうなあ。わかんないけど。

禁煙

まだ受かったかどうか分からないが、タバコが切れたので禁煙しよう。禁煙は昔はニコチンガムとかが必要だったが、何回かやってるうちに慣れた。単に頭痛と眠気に耐えればいいだけだ。 俺は喫煙しないと阿呆になってしまうので、ある程度依存をなくして、まあ…

しかし

C#

Entity Frameworkの理解できなさがすごいな。積みゲーになっているすばせか並みに意味が分からない。こんなに意味がわからないのはロマサガ3のトレード以来だ。LINQ to SQLでいいじゃねえか。

IEnumerableとIEnumerable

C#

GetEnumeratorを二つ実装しなきゃいけなくなるという、かなり破綻した仕組みだ。まあinterfaceはほっとけば必ず破綻するものだから仕方が無い。

ソースコードによる自動シリアライズ 19

C#

よし、10KBを超えたら書き出そう。さらに10KB追加されたらAppendしよう。これを繰り返して、クラスのサイズになったら次に以降する。 1IDごとにメモリを10KBまで消費することがある。100MB消費するのに10000か。厳しいな。まあしょうがないだろう。 世の中の…

ソースコードによる自動シリアライズ 18

C#

どれもこれも大きさに限界があってめんどくさいのだが、1プロジェクト=1ファイル=1クラス、これをおよそ65000行に収めることにする。プロジェクトは必然的にフォルダになるが、この中のファイル数が問題だ。いくつまでなら許容できるのか。100万オブジェクト…

ソースコードによる自動シリアライズ 17

C#

まあ最終出力がファイルなんだからファイルに入れとくのがいいのだろうけど、方法としては「メソッドを書き出し、後で読み出してクラスに統合してまた書き出す」「メソッドをパーシャルクラスにして一つ一つファイルに書き出す」「クラスをオンメモリで持っ…

C#

多分処理中にG2のGCが入った時点でメモリ管理は失敗、大失敗といえるんだろう。そんなのは処理が終わった後の空き時間でやればいいんだ。 小さいオブジェクトを作ってすぐ捨ててG0,G1にとどめる。大きいマネージオブジェクトは出来てしまった時点で失敗。大…

ソースコードによる自動シリアライズ 16

C#

プロジェクトを生成するようにしないと使いにくいんじゃないかと思うのだが、1プロジェクトにソースを溜め込むとコンパイルが通らなくなる。謎のエラーメッセージが延々出てきたりする。 論理的に考えるなら、ソリューションを作るしかない。今までの1ファイ…

ソースコードによる自動シリアライズ 15

C#

今日は1日眠かったのだが寝ようとすると眠れない。なんなんだ。プログラムに精神を奪われてしまっている。 まあいいや。とりあえず100万件を目指そう。ngenさえ安定して効けば100万件だって楽勝でいけるはずなんだ。とりあえず100万件のソースコードが馬鹿で…

ソースコードによる自動シリアライズ 14

C#

いやマジでよくわかんねえけど一瞬で終わるときは終わるなあ。ngenが効いてるんだろうけど効く時と効かない時の差がわかんねえ。

ソースコードによる自動シリアライズ 13

C#

とりあえず置いとく。 http://pmoky.ame-zaiku.com/csharp.html 通常の使用では破綻はしなくなったと思うがパフォーマンスの問題は結局解決しなかった。現実的に使えるのは10万オブジェクトぐらいだろうか。

ソースコードによる自動シリアライズ 12

C#

オブジェクト100万個のコードをコンパイルすると「メタデータを入れる記憶域がありません」みたいなことを言われてコンパイルできない。 50万個だとngenしてもデシリアライズに4分かかる。うーむ。どうもこの100MBのpdbが怪しいんだよなあ。デバッグなしで直…

ソースコードによる自動シリアライズ 11

C#

クラスを7万個作ったらコンパイルしただけでハングしたぞ。うーむ。

ソースコードによる自動シリアライズ 10

C#

1クラスに書けるのが65000行程度のようだなあ。本当か? Controlクラスって65000行しかないのか? 中身はほとんどinternalクラスなのかな。 クラス分割しかないか。くそ。まあたいして可読性は変わらないだろうけど。

クラスの継承は消せるか

C#

クラスの継承は危険そのものなのでなくてもいいように思うが、型引数が長くなりすぎて可読性もへったくれもなくなったジェネリッククラスに名前をつけるのに今のところ必要だ。delegateもFunc<T1,T2,TR>とかでいいじゃんと思うかもしれないが、名前をつけ…

concept

C#

interfaceってなくせないものかな。 C++みたいなconceptというのを考えた。ソースの置き換えみたいな過激なことをせず、かといってinterfaceのように「このメソッドとこのメソッドとこのメソッドが無いとダメ」というのを統一的に設計させるという無理なこと…

コレクションと副作用

C#

LINQの登場により、C#ではコレクションを書き換える場合、列挙すると書き換えた結果をその場で作るIEnumerableを返すのが標準になったと理解している。それは元のコレクションを書き換えない、副作用の無い処理だ。 IEnumerableといっても実際にコレクション…

関数の実行結果をキャッシュするDictionary

C#

関数の実行結果をキャッシュすると言うか、keyに対応したvalueが自動生成されるディクショナリ。 class LazyDictionary<TKey, TValue> { Dictionary<TKey, TValue> dic; Func<Tkey, TValue> valueCreator; public LazyDictionary(Dictionary<TKey, TValue> dic, Func<TKey, TValue> valueCreator){ this.dic = dic; this.valueCreato</tkey,></tkey,></tkey,></tkey,></tkey,>…

ソースコードによる自動シリアライズ 9

C#

Hoge[] GetCollection3132() { var a = new Hoge[32598]; a[0] = GetHoge51458(); a[1] = ... ... a[9999] = ... _10000から20000(a); _20000から30000(a); _30000から32598(a); return a; } こんな感じだな。1関数に2万行書けるかわからないけど、とりあえ…

面接

まあ多分通ったんじゃなかろうか。 とりあえずニコチンへの依存を減らさないと学校生活は出来そうに無いので禁煙したい。しかし禁煙すればコードなんか書けない。だからもうさっさと今書いてるのを終わらせて禁煙しようと思う。ニコチンなしで制御できるよう…

ソースコードによる自動シリアライズ 8

C#

本当はこんなことしてる場合じゃないのだが、ちょっと進めた。 new[]{ ... } この配列の中の値を手打ちしていくと、65000を越えたあたりで「型が読み込めない」という例外が飛ぶ。intでもobjectでもなんでもそうだ。それとは別に45000を超えたあたりでdecima…

視覚室と聴覚室を合わせたものが視聴覚室なんだろうか。

メタプログラミングと互換性

C#

参照型かどうかのチェックは(type.IsValueType == false)だと思うのだけど、これが正しいのかどうか良く知らない。けど正しいものとして、とりあえず.NET Frameworkがバージョンアップして、値型でも参照型でもない第三の型が現われた時に、この指定は正しく…

interfaceの使い道

C#

昨日の続き。 そういや自分で言っといて忘れてたけど言語内言語の文法定義に使える。同じオブジェクトにさまざまなinterfaceを実装して遷移させ、インデントはラムダ式を使うとシンプルに書ける。 interfaceをユーザーに実装させるために提供するという道は…

なんか今日は意味もなく酒を飲んだ。 思想の二文字がもっと力を持つ時代に産まれてきたかったなあ。今の時代は馬鹿が一番情報強者だ。騙される奴がいない。騙されたところで2chでネット右翼をやったりXbox360の工作員をやったりだからな。そんなに間違ってる…

interfaceは要るのか

C#

クロージャを一々渡してられないようなものもある。GetEnumerator, Count, インデクサ、Dispose辺りはいちいち自分で「Disposeのメソッドはこれです」なんて指定していたら発狂してしまうかもしれない。そういうものにはinterfaceは必要だろう。あとフレーム…