ToDo:
Lots of requests to publish Tetsu Soh's memory profiler on Github. I agree! #rubykaigi
どっかにコード無いんかなーと探してたらこれを見つけた。
(01:49)
というのを漠然と考えた。新しい語の導入を許すと
puts sh = "Hello, world!"
とかで一瞬で解決して、許さないとすぐに無理ゲー感がただよってくる。
ていうか hello だけなら
"Hello, world! ".display
とかでたまたま解決したりするし、ゲームとして色々成立しない。
改行を出すのにムダに苦労してみるとか…
"Hello, world!".display yield Dir rescue eval "loop { puts ; STDERR; raise exit }"
たぶんルールは
とかか。 eval もなんか取ってつけたような感じだから禁止してもいいかも
"Hello, world!".display yield Dir rescue END { DATA; ARGF; fail loop { puts; STDERR; raise exit } } true __END__
偶然だけど、 END fail raise exit と登場して、 true __END__ でシメててなんかかっこいい。
(02:40)
続き
その後
(23:57)
名古屋っぽいもの食いたい。 USB ケーブル無いから GPS 無いのが痛いかな
それはそうといろいろためになったとおもう。なんか忘れそうなんでなにか書いておく。
なんかまだあった気がするけどまぁ
あとは何度も定義読んだであろう Sort モジュールなー
これを読んだ。面白かった。
- 最初の方の暗号ってその時代に生まれてたら解けたんじゃねと思ってしまうけど解けないんだろうね。なんというか基礎教養的なものってのは案外強いんだよなーたぶん - まだ解けてない宝の地図とかあるのかーロマン - ディフィーさんとヘルマンさん (以下 DH) は別人 - DH より RSA の方が良いようだ…今一つメリットにどうもピンと来ないけど - RSA も DH も発見者は彼らじゃないそうだすげえ
(00:45)
http://golf.shinh.org/p.rb?Sort+by+Length+for+OCaml+Golf+Competition
これなんかうちに short coding とか二冊あるから 賞品とかにしたらどうでしょーとか 自分で言っておきながら持ってかえってくるの忘れて 帰省してた。
僕が優勝すればいいのではないか!
(01:07)
MacOSX のバイナリを無理矢理 linux で動かして遊ぼうとしている。 で、なんか、それなりには動くんだけど たいていのプログラムはどっかで crash する感じで、 どうも glibc の初期化ルーチン走ってないのが良くないかぁ という感じのものが多い気がする。 たとえば setlocale とかそういう。
で、 glibc を初期化したいわけだけど、 どうしたらいいかなーというのがあまりいい案がない。
とかになるのかなーと思うんだけど、 libc の初期化ルーチンを自前でリンクするとかめどい…
なんもしない main を書いて、 それを実行バイナリに落として、 必要な部分を自分の ELF binary にコピってくる… みたいな感じで動くんかなぁ。
リンカじゃなくてローダにすべきだった気がしてきた。
今からやるとするとどっちがラクかなー
(23:54)
ややこしいよなぁ…
http://www.x86-64.org/documentation/abi.pdf
これによると struct 返り値は hidden parameter でいいのかなー と思ってたんだけど、 なんか GCC の挙動違うぞ… と思って調べてみたところ、 どうも RAX と RDX に入るならそっち使う、 って感じかなー。
http://agner.org./optimize/calling_conventions.pdf
によるとややこしいなぁ…
(14:29)
devquiz の pacman とかやってみる。 ダメぽ。
おそらく熱暴走で reverse proxy の役目を果たしてた マシンが止まるという事件が 2 度ほどあったので、 OCaml meeting 前にこれは不安だろうということで、 ゴルフ場のマシンの方に reverse proxy の役割をうつした。 これでたぶん大丈夫かな…
(21:56)
http://d.hatena.ne.jp/lyrical_logical/20100819/1282232382
そういう話なんかなコレ。 pimpl 死ね死ね派として。
元の話は
// header class C { public: C(); void f(); private: class CImpl; CImpl* pimpl_; }; // source class C::CImpl { public: CImpl() {} void f() { // ... } }; C::C() {} void C::f() { pimpl_->f(); }
と
// header class C { public: C(); virtual void f(); static C* create(); }; // source class CImpl : public C { public: CImpl() { } virtual void f() { // ... } }; C* C::create() { return new CImpl(); }
の比較ってことなんじゃないのかな知らんけど。 pimpl とファクトリの比較って言ってるから pimpl とファクトリは組み合わせれるとかじゃなくて、 pimpl 的なことをファクトリでやる、っていう話かと想像した。 まぁいずれにせよ元の話が違っても 僕は後者の方が好きだという主張したいという話をしたい。
pimpl って何がダメってめんどくさすぎることで、 ただでさえヘッダのせいで二カ所に関数名書かにゃならんので DRY から遠ざかってるのに、 pimpl とかしたらに三カ所なってありえんというだけ。 まぁそれだけなんだけど、しかし三カ所に書くってホントありえんと思うんですよ。 単に引数一個増やすだけであちこち書き直していくとか完全におかしい。
たぶん後者の話の弱点は仮想関数呼び出しとか ヒープアロケーションのオーバヘッドくらいなわけだけど、 たぶん pimpl 使いたいと思うようなクラスを思い出してみると、 たぶんたいした個数作らないオブジェクトがほとんどなんじゃないかなぁと思う。 NantokaMgr とか NantokaController とか名前つけたくなるクラスが多いんじゃないかと。
(02:16)
http://shinh.skr.jp/m/?date=20100815#c
意外とみんな作りたいということがわかった。
僕が作りたいというかエディタを作るとしたら… という妄想としては二種類あるようだ。
まず一つ目は、 WM でいうところの sevilwm みたいな、 俺しか使わないから俺の必要な機能だけつけるよ系の何か。 僕の使う機能だけ、ってことならまぁ割と現実的に作れるんじゃないかな。 まぁそういうものでも多少 scriptable な方がやりやすそうなので、 まぁ JS あたりは乗せるのかなぁ、どうだろ。
もう一つの方は明らかに単なる妄想で、 Emacs lisp の部分を JS にして シングルスレッドやめた Emacs みたいな何か。
ほとんどのコードを JS にしておくことによって、 ネイティブアプリとしても、ブラウザ上でも動くよ的な妄想。
まぁブラウザで動かすって方は テキストを持つデータ構造を好きにできないので、 大きいファイル相手にすごく重くなって全く実用的でない予感しかしないけど。 裏で超かしこく range 指定での query を繰り返せばなんかできるかもしれん。
(00:37)
会社が六本木に引越したので近くて出社がラク。
六本木には卓球台があるのでやたらやってる。 卓球ですらケガできる子なので生傷がたえない。
Star Craft 2 を遊んでいる。 面白いと思う。
ただ SC2 はアカウントロックされて悲しいことになった。
電話自体は大変親切で、英語電話としてはこれまでに無いくらいスムーズだった。 片言でも英語喋れて良かったね的な…
あと思ったのはついでに秘密の質問も再設定してもらうべきだった。 どうもログインできても変更できないみたいだ…
(00:49)
知ったかぶりコメントを書いた。
http://d.hatena.ne.jp/mindcat/20100815/1281877127#c1282062678
まとめておくと、
って感じかな。 Opera は linux 上での結果だけど、まぁ win とか mac も同じだろうと思う。 てか IE9 はどうだろ。 今 Win 無いので明日見てみようと思う。 僕のカンでは Firefox に一致するんじゃないかな。
WebKit は同じ WebKit でも結構環境依存で 挙動が変わる部分があって、 こいう議論の時はうざいことこのうえないことだと思う。 ただ、 WebKit の環境ごとに最速な方法で 実装する手段を与えますよーていうやり方で、 共通レイヤ作りがちで速度的な面で不利になりがちな Gecko より速くなりがちなので、 一概に WebKit うんこというわけではないんだよー という話かなぁと思う。
(01:48)
この実装はちょっと面白いなと思った。
http://trac.webkit.org/browser/trunk/JavaScriptCore/wtf/text/StringImpl.cpp?rev=65493#L511
何度見てもこれは内容を忘れるものの一つだと思うのでまた今度読もうと思う…
こういうのもあるらしい。
でこの StringImpl 見てて思ったんだけど、 これメモリもうちょいケチれね?
(02:10)
http://golf.shinh.org/p.rb?data+order
ソートしない方針は思いついたけど、 Array#count が refe で出てこなかったから、 あれー無かったっけーと思ってやめてしまった…
(05:05)
前 | 2025年 1月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ isshiki [>暗号解読 ボクも数年前に読みました。感想は今となっては小学生の感想文レベルでしか語れないので控えますが、当時思っ..]