Programming + Jiro Noodles = takeshik

新しくカメラ買いました。そして仙川へ。 (昨日
まだ慣れないけどやっぱり現行世代カメラの力は絶大でした。すごい。ちょっと赤みがかってしまったが…
で、今回の仙川。ちなみにアブラは珍しく後乗せじゃなかったです。
豚がどしんと鎮座してますが、残念ながら今回はパサ豚、どちらかというと大外れだったかな、といった感じ。もう少し味染みるか柔らかな出来だったら良かったんだが。
とまあ豚は残念だったんだが、今回は麺が素晴らしかった!麺が!もう俺好みでどんなに豚が残念でもこれでもうなんでもよくなった。
なんとも固めな茹で上がり。ポキポキ、というよりはもっちりずっしり、といった趣か。素晴らしい食い応え。素晴らしい。素晴らしすぎる。仙川のこの麺、好みとか色々あるだろうが俺はこれがたまらない。初めて仙川に来たときのことが思い出される…(遠い目
で、スープもそこまで甘くなく、カネシが結構強く効いてて美味しい麺と美味しいスープ、抜群の相乗効果。光と闇があわさって最強にみえた。
ニンニクもいつになく結構大量に入ってて、実に満たされる (ヤク的な意味で)。ちょっと辛めだったけどまあどうでもいい。
アブラは結構美味しかったんだけど来たのが比較的遅かったからか量は少なめでちょっと残念だが自業自得と言わざるを得ない。野菜はいつも通りなんでノーコメント。
一言でまとめると…豚がよければ最高の一杯でした。とまあそんな感じだったが普通に美味かった。ごちそうさまでした!

@RSan からのリクエスト。大した内容ではないかもしれないけれども書いてみる。どうも表示が変になるので不自然な (C++ 的な?w) スペースを置いてます。
都合上コードを色々参照してるけど、全て MIT License が適用されてます。まあ見られるくらいどうでもいいけれど。
前説
アプリケーションドメインをラップするコードを書いていたわけだが、AppDomainSetup.ConfigurationFile を設定する必要に駆られた。
順当にやるならばコンストラクタ (このコンストラクタは最終的に AppDomainSetup を作って低レベルのコンストラクタに引き渡している) に引数を追加してやればいいわけだが、そんなことをやってはきりがないのは確定的に明らか。そもそも「次」の引数候補がいつ出るか分からない。抜本的な思考の転換が必要とされていたわけ。
そこでふと思い出したのが、自分がかつて書いた HttpWebRequest をラップするコード。要は Get とかする度にうまいこと HttpWebRequest を裏で作ってくれるわけだけど、この HttpWebRequest をジェネレートする部分を
として公開しているわけ。これを応用しようと思いついた。以上。
Action<T> in constructors
とりあえず最初にコードを出してみる。…と思ったけど例のコードは色々サンプルにならない部分があるので新しく書き起こそうと思う。
例として ProcessStartInfo を挙げた。後は自分の例として HttpWebRequest、AppDomainSetup、の他に CompilerParameters とかでも適用可能だと思う。
変態なクラスしか頭に浮かばないけどご愛敬。まだまだあるはず。ランタイム外でも。
変なヘルパメソッド作らなきゃいけないのが癪。自分のコードでは怪しげな自前拡張メソッドで済ませているけど。let 欲しい。
つかいかた。
おまけ
params Action< T >[] だけでなく、IEnumerable< Action< T >> なオーバーロードもお好みで。LINQ との親和性の問題。params IEnumerable< T > 欲しい。
解説
これは簡単に言ってしまえばオブジェクト初期化子的な柔軟性を与えるわけだけれども、この設計のポイント的な部分を数点。
なぜオブジェクト初期化子ではないのか?
なぜ
ではなく
なのか。詰まるところ、オブジェクト初期化子は累積的な設定が不可能。つまり、引数とユーザ名のみを独立した引数としたコンストラクタを用意したとき (ここで最後に params Action<ProcessStartInfo>[] を用意するのがミソ)、つまり:
というコンストラクタを置いたときに、さらにパスワードまで設定したい時に、この設計なら
とできる。オブジェクト初期化子を使った設計の場合は、
といちいち同じ事を書かねばならない。新しいコンストラクタのオーバーロードを作って引数の少ない方から多い方へ流してやればいいというのは問題ではなくて、ここでの問題は、この設計によって、どんな設定であってもオーバーロードを必ずしも作ることなく対応することができ、また作ったとしても更なる設定でも対応可能だということである。副次的に、メソッドの呼び出し (Set~(obj) 等) も可能となる。
params であるということ
上で
というシグネチャを示したが、ここで、このオーバーロードは
という呼び出しでも当てはまる。params は空の引数を受け入れる。よってユーザはこの追加のイニシャライザ引数を (オーバーロードを別途用意することなく) 意識することなく使用できる。地味に見えて結構大きいポイント。
他には?
あとは…

単純な関数オブジェクトのシーケンスなので、どこかの static フィールドに設定を用意しておいて、それを連結したり、あるいは、設定の記述である [...]

いつもの (※昨日)。
ロットの乱れが心配されたがなんとか普通に食えた。なんか書く気がマッハなので要点だけ押さえようと思う。
美味かった。
豚があまり見えないのが残念なところではあるのだけど、ほとんどの塊がふわとろ状態で、脂もかなり乗ってて、とても食べやすかった。味も最高。確実に上位レベルの豚。
麺はまさに俺の好きな具合で、ホゴホゴと素晴らしい食い応え。最高一歩手前ってくらい。
アブラもうまい。ヤサイもうまい。ニンニクはちょっと少なかった気もするけど普通にうまい。ただスープはちょっと油がきつかった。悪くはないが。
自分の調子がよろしくなかったのか、美味しい一杯だったが久々に苦戦。もう少しすいすい食べたかったところではある。
全体的に完成度が高かっただけに残念。普通に調子が良ければきっとこのスープももっと楽しめたんじゃないかなと思う。
まあそんなかんじです。今回は自分が二郎に少し負けてしまった感じ。
ごちそうさまでした!

…において、開いたジェネリック型を使って継承関係をさらさらっと探索するのはどうも無理っぽい。つまり、

public class A<TA> { }
public class B<TB> : A<TB> { }
var a = typeof(A<>);
var b = typeof(B<>);

とあるとき、b.IsAssignableFrom(a) とか b.IsSubclassOf(a) は false となる。当然の挙動っぽい気も微妙にしないでもない?し、おかしい挙動なのかもしれない?けど、出来て欲しかったなあという気分。
typeof(A<>) みたいな感じで開いたジェネリック型のオブジェクトが取れるというのは面白いネタだけど一般的ではないようなのでたまーに宣伝したりしてます。
結局、次善策は b.BaseType.GetGenericTypeDefinition() == a となると思われる。これだと 1 つ上の親クラスしか見れないし、なんだかなあ、といった感じ。
ちなみに、恐らくこの記事がこの blog で初めてのプログラミングネタかと思われます。頑張ってこれからもネタ増やしていくので生暖かくこのジログを見守って頂ければこれ幸い。

2010 年最初の二郎はホーム仙川で (※昨日)。なんか今日は Twitter-er が随分仙川に来たみたいだが。
で、これが今年の初二郎。
…まず背景説明からしなければならない。簡単なことで、つまりこの右に見える二郎はロット内で一番最初に麺上げされ、一番最後にコールを聞かれたのだ… @zuzucchi 氏に麺が柔らかいという reply を頂いたが、ちょっとこれは別問題か…というわけでスープは幾分か冷めてしまって、麺は柔らかめ (因果関係不明)。良く言えば大変食べやすく、悪く言えば食い応えに欠ける。…まぁ、こればっかりは運が悪かったとしか言いようがない。仕方ないね。
とはいえ、二郎としては悪くない仕上がりであった。麺は確かに柔らかいがいつもの仙川の麺で香り高く、二郎欲を十分に満たしてくれる。二郎の麺の美味しさとは何か?という問いに対する答えをきちんと押さえている。確かに柔らかめなのは残念ではあるが (でも麺固は失敗体験からコールできないでいるw) 肝心のポイントはきちんとしているのだ。豚はぱっと見ではガチ豚かと思ったが、写真見ても結構ほろほろしてるのが分かるだろうし、脂のたっぷり乗った端の部分などもしっかり入っており、それなりにいける。中~中の上ってところかと。スープはカネシが結構聞いているが基本的には所謂甘めの状態。これも大好きだけどたまには生姜のがつんと聞いた頭がクラクラしそうなスープも頂きたいところではある。アブラは固体・液体ともにそんなに絶対量は多くなかったが、臭みが無くて個人的には変に量が多くて臭みが残るのより大満足であった。ヤサイはいつも通りであってコメントする要素なし。キャベツの量は元に戻ったw ニンニクはちょっと辛めだったけどそもそも絶対量がもっと欲しかったところ。俺が見逃した可能性もあるのかもしれないが…
そんなこんなで、ごちそうさまでした。
俺の 2010 年が始まりました!

OCN IPv6 サービスを利用するに当たって、非固定 prefix の場合だと上から RA でアドレスが降ってくるのだが、固定 prefix だと DHCPv6 で貰わなければならない。
で。
Gentoo のリポジトリには Linux DHCPv6 と Dibbler DHCPv6 しかない。で、これらはどうもうまく動いてくれない。WIDE-DHCPv6 でないと動かないという話も聞く。
しかし、バージョン 20080615 をインストールしようとすると make で
In file included from dhcp6c.c:73:
./common.h:158: error: conflicting types for ‘dprintf’/usr/include/stdio.h:397: note: previous declaration of ‘dprintf’ was heremake: *** [dhcp6c.o] Error 1
In file included from dhcp6c.c:73:
./common.h:158: error: conflicting types for ‘dprintf’
/usr/include/stdio.h:397: note: previous declaration [...]

++year;

カテゴリー 未分類 | コメントする

新年明けましておめでとうございます。
今年はなんとか MetaTweet なんとかしたいといういつも通りの言葉をもって目標とします。
…去年も同じだったという突っ込みはパスで