ToDo:
ぐぐぷらで AKB48 のなんかが時々ながれてきて、かわいいもんだなぁとか思うわけだけど、今はじめてリンクされてた動画見てみたら、あたり前なのかもだけど子供の会話で、いや客層向けにそういうキャラ作ってるんかもだけどいずれにせよ、どうでもいいなと思った。アイドルの PV とか比較的好きだったけど、それなのにテレビ全く見ないとかと同じ話か。
(07:01)
LLVM に C++ の構造体を YAML として出力するための枠組を追加して、実際に object ファイルとかを YAML として吐けるようにしていく、という話。
http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-July/052045.html
GCC XML とかと似たような話ではあると思うんだけど、アレが吐いてたのは RTL だけだったと思うけど、こっちは今のところ object ファイル吐いてるのと、まぁそういう枠組さえ作ってしまえばゆくゆくは途中の bitcode とかもダンプできるようになるのかな。あとまぁ GCC XML は出力でかすぎたわけだけど、 YAML なら多少マシとはいえキツそうではあるな…
これ見ると binspect が吐いてたものに似た感じもあるなぁ。
http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20120725/6d72fd0f/attachment-0002.obj
(07:10)
数ヶ月前から Ulrich Drepper 氏が glibc から手をひいているというのを知った。 redhat やめたのは知ってたけど。実際 git log とか見るとほとんどないなーという。
でこの glibc の開発体制どうすんの? スレッドが面白い…
http://lwn.net/Articles/488778/
集団開発体制に…みたいなのがメインの議題なんだろうけど、 Ulrich さんの悪口が混じりまくってる、というかそっちがメインのトピックな気すらする。
特に
Ulrich タンいなくなっちゃったらオレら何ウォッチすればいいの? 誰が memcpy の仕様変えて Flash ぶっこわしてくれんの? 誰が gettid の libc wrapper 足すのを拒否して、各人が独自に書く必要があるようにしてくれんの? 誰が tar は obsolete だと言いつつ CVS を使い続けるの? 誰か他に代替無いまま sunRPC を glibc から取り除こうとしてくれるの? 誰が setenv を thread safe にするのを拒否してくれるの? Ulrich タンがいなくなったら、 glibc は良い意味でつまらんくなるとしか思えないよ… OpenBSD入れれ
みたいなのが面白かった。
I think Uli is an excellent *developer*. I think he was not an excellent *maintainer*
てのがいいまとめなのかな…
(21:45)
http://shinh.skr.jp/m/?date=20120728#p02
の続き。
今日日本時間朝11時から2時間ほど、Rubyスピードゴルフ勝負をしようということになりました。普通に2週間問題として出題しますが、参加する人は自主的に (2hrs) という suffix を名前の後ろにつけて参加する感じで。その後は suffix を勝手にはずして縮めていけば良いです。 Ruby 以外も大歓迎ですが、競争する相手がいるかは残念ながら謎です。とりあえず3人は参加者が確保できてます。
ゴルフとか久しぶりっていう人僕もそうなのでぜひ。
問題はたぶん perlgolf にもあったマインスイーパ。サイズは違うけど。でもはじまるまで考えないでください。
(08:40)
Seed というのが優勝した。この人は GSL 的には今年入ってから Code A/S の下の方に一瞬あらわれては死んでる感じだったのが、なんか突然優勝した。まぁ正直相手の運も良かったんだと思う。
この人は半年だか1年くらい前の GSTL でかなり衝撃的な感じの4人抜きだか5人抜きだかをやったので、はやく Code S 来ないかなぁと思ってたけど、すごく時間がかかってしまった。俺はアイツだいぶ前から知ってるぜ…みたいなことを言いたいわけだけど、しかし SC2 とか今でも見てる人の半分くらいは優勝する前から知ってる気がするし、そして韓国的にはこの人 SC1 の時からやってたらしいし…
決勝も P やってる身としては面白かった。 PvP は他の race の人からするとつまらんらしく、相手側の MC の方が人気あることもあるのか、結構イマイチだったーと言ってる人多かったけど…
思うに PvP だけ "greedy" の定義が違うんだと思う。 tech を進めのが他のマッチアップにおける expo くらいで、 fast expo とかは double expo くらいの感覚な気がする。昔は 4gw 以外の戦略は全て tech が進めるという意味で greedy で、本当に 4gw しか無いのはつまらなかったと思う。でも今はラッシュ多いとはいえ、色んな種類の rush が増えて、少し tech が進めつつやる rush が多いので、 allin 要素が少し少ない…と思う。
最近の新しい人だと Symbol ってのが良いようだ。なんかまぁ普通に強いし、いろいろスタンダードに正しい感じのことしてる気がする。 muta より infestor 多用ってのも今風なんだと思う。
でもそんなのより Freaky というのが良い。 infestor が好きでしょうがないらしくて、何に対しても mass infestor で対抗する。当然弱いので Code A/S には来ない…でも GSTL では NSHoSeo の選手層の薄さのおかげか、結構出てるぽい。
あとはこの MKP の CC first vs 6pool に感心しましたね…
http://www.gomtv.net/2012gsls3/vod/67627
(11:03)
についてなんか書こうかと思いつつ、特に何も書くことがないっていうか、どう書くとまともな説明になるのかよくわからない。「libc は strip されてるからバックトレースにシンボルが出ないんじゃ」みたいな頭痛が痛くなる発言をちょくちょく聞く気がするんだけど、何をどう説明すりゃそのへん系統だてた説明になるのかよくわかってない。
まー素直に最近僕が学んだことみたいなのをだらだら書いてくと良いのかもしれないんだけど、今ひとつ基本が浸透してないジャンルなので、それはそれでこう全く関係ない反応とかあるとしんどかったりも。
(13:18)
LLVM に投げてた趣味パッチが submit されたぽい。
http://llvm.org/viewvc/llvm-project/?view=rev&revision=160899
こっち見るとわかるのはこれのせいで ICFPC に 15 分ほど出遅れたということですね…
http://llvm.org/bugs/show_bug.cgi?id=13351
内容はしょうもなくて、 GCC だと入ってるけど LLVM は入れない dwarf の情報をひとつ入れただけ。 binutils がそれ使って読まなくていいとこの読み飛ばしをやってるんで、できたバイナリを addr2line するのが10倍くらいはやくなったりする。
テスト結果変わるから修正したりテスト増やしたりしてて気付いたんだけど、 lit とかいうテストツール使ってるんだなと。ぱっと見 dejagnu みたいなもんなんだけど、こういうテストツールみたいなのはプロジェクトごとに再生産した方がいいのかもね…とか。
(12:43)
leonid 先生と会う機会があったので4時間とか喋ってた。印象はなんかこの人なんでもよく覚えてるな…っていう。色々興味深い話を聞いた。覚えてるので面白かったのは、
http://golf.shinh.org/p.rb?Verhoeff+Algorithm
の問題。これ python が異様に短いんだけど、これにはタネがあるっていう話。これ出題した SeeNoEvil さんは短いコードを submit してあったんだけど、他の誰もタネに気付かないからヒント、ってことで SeeEvilRedBalloon って名前で投稿したと、で red balloon は base128 のデコーダ書けって話で、こっちの問題のテストケースを base128 で溶かすと python コードが出てくるからそれを exec するだけ…て話らしい。おもろい。
で、なんか coding session みたいなのすると楽しいんじゃないかってことだったので、いいねってことで、今度の月曜のたぶん19時くらいに問題投稿して1,2時間程度の勝負をしようみたいな話になった。日本時間だと火曜11時? 参加しにくそうですが暇な人は競ってくれればな…と思います。
あと言ってたのは、ペアプロでやるとかも面白そうだね、とか。チーム戦とか楽しそうではある…
(14:13)
4人席で2人で昼飯喰ってて、外人が寄ってきて、なんか聞く。文脈的に、「この椅子持っていっていい? 」か「この椅子誰か使ってるわけじゃないよね?」とかそんな質問である。実際僕の漠然としたリスニング能力も特にこの仮説を否定しない。
でこのへんで僕は投機的に yes と言ってしまう。質問がどっちだとしても、日本語だと、「うん」が正しい答えだから。で、言ってしまってから、ああ否定質問に、日本語で言う「うん」と言うには No という必要がある、っていう超基本的なことが頭によぎって、しまった No と言いなおさなきゃ、でもそれ以前にそもそも大本の質問は後者なんだっけ…とか、そのあたりでこう脳は全力で考えてるもののなにか言わなけりゃ、ということでタイムアウトした時の処理が走ることになる。タイムアウトの処理は比較的単純で、前回発話した単語からハッシュをひいて、その後にマルコフ連鎖的な意味で一番頻度が高い単語が出てくる。 "Yes" と既に言ってしまってるから、そのあとの単語は人工無能的には当然 please である。
この yes please というのは論外だってのは最初からわかってるし、そもそも sure とか go ahead とか言っときゃ無難だったのはすぐわかるんだけど、しかしこう既に愚かな発言をした後であって、はてどうしたもんかと思ってる間に相手は椅子を持ち去ってくれて、特に問題は起きない。いやあ相手が適当にこっちの意図を組んでくれる人で良かったなーと思うんだけど、 google ではたらいてる人とかはこういう意図を組んでくれる確率が非常に高くて、まあなんだかんだで頭いい人達だってことなのかなぁとかよく思う。あんまそれに頼って意思疎通するのよくないよね…
(15:19)
あと、なんかこう、 I always uses とかよく言ってしまう、って話をした。 uses は当然 use が正解。こういうミスをする理由もまたマルコフ連鎖で、僕の中では I or you なら動詞は use で、「それ以外」なら uses 、ってのが結びつけられてる。この時なんでまちがうかっていうと、 always がはさまってて、それは「それ以外」だから uses だろう、みたいな、ここまではほとんど考えてないレベルでの脳の反応だと思う。
でまあ、これはべつにひとつ前の話と違って、まぁぶっちゃけ間違っても問題なく通じるから、単純にほっとくと良い。言いなおしたりするとかえって混乱を招くから、言いなおすべきじゃない。そのへんはわかってるんだけど、しかし頭の中では「あー今 s/uses/use/ だなー」とか考えちゃう。それはまぁ日本語とかだとそんな問題なくて、多少ヘンな喋りかたしてしまって(こいうのは敬語がからむと結構あるころで、敬語で言うべき動詞を丁寧語で言っちゃった時とかに一瞬考えると思う)もまぁそこまで会話の流れに影響を及ぼさないんだけど、英語でこの手のミスをすると、「あーしくった!」「今のusesはuseと言うべきだった」「あーalwaysがはさまったせいだな!」とか、そいう思考が脳をかけめぐってしまう。でも、英語喋ってる時とかは少ない脳のCPUリソースが全部英会話に行ってるわけで、かつ全ての思考を英語に使わないとキツいわけで、比較的重要でないs/uses/use/問題とかにCPU時間を使ってる場合ではない。でもなんかあれこれ考えてしまって…みたいな感じで、よく詰む。
(15:33)
アンタのコードは大きいマップで大丈夫なの? と聞かれた。いい質問だなぁと思ったので、 tanakh さんとこのチームのリポジトリにランダム生成されたマップがあったなーと思い出したので、適当にやってみた。
https://github.com/tanakh/ICFP2012
結果としては、 128 と 256 くらいはまー一応 positive なスコア返す結果を出してるみたいだ。 1024 は10秒くらいで切り上げるとなんか 1byte とかの結果出してて、つまりとなりの lambda 取っただけ、って感じですかね…もうちょい待つとまぁそれなりに長い答えが出たり出なかったり。まぁでも正直動いてることに感心、ってだけの話ですね…
一応画面の更新は Growth のタイミング以外では全体をなめないようにしてあるんで、 befunge とはいえ、まぁまぁな速度で動いてるはずなんで、まーそんなもんかなー的な感じ…
(15:43)
http://www.cs.dartmouth.edu/~doug/mdmspe.pdf
via http://research.swtch.com/qsort
「quicksort の最悪計算量は O(n^2) ですよ、でも pivot のとりかたとかでだいたい大丈夫にすることはできますよ」、ってのはよく言われる話だけど、実際 quicksort が n^2 になるようなデータを作る方法を考えてみた、っていう話。
作りかたがちょっと面白くて、 qsort を実際に呼んで、 callback で呼ばれる比較関数で小さい数字から少しずつデータを確定させていく、みたいな。
このコード、 mac とか linux で実行してみると n^2 にならない。 russ cox によると glibc の qsort は実際は merge sort らしいからそういうもんらしい。 mac もそういう感じなのかな。 N が小さい時はわりと n^2 ぽい挙動してるけど…
ぱっとコード見た感じ、 2*(log(N)-1) 回越えて再帰する時は heapsort する、みたいなコードに見えるかな。まーなんとなくわからんでもないし、あとまぁそれならそういう挙動するかな的な。
自分で適当に qsort 書いてみて antiqsort に渡してみたら、モロに O(n^2) になった。おもしろい。 qsort は C だとっていうか余計なメモリ使わない実装は結構むずかしいと思ってて、昔書いた時はすっと書けなかった気がするけど、今回はそんなに苦労しなかった。全然テストしてないからあってるかは知らんけど。
void myqsort(void* base, size_t nel, size_t width, int (*compar)(const void*, const void*)) { char* pivot = (char*)base; char* b = pivot + width; char* e = (char*)base + nel * width; char* buf = (char*)malloc(width); size_t lc = 0; while (b < e) { int r = compar(pivot, b); if (r >= 0) { b += width; lc++; } else { e -= width; memcpy(buf, b, width); memcpy(b, e, width); memcpy(e, buf, width); } } if (lc) { memcpy(buf, b - width, width); memcpy(b - width, pivot, width); memcpy(pivot, buf, width); myqsort(pivot, lc, width, compar); } free(buf); if (nel - 1 - lc) myqsort(b, nel - 1 - lc, width, compar); }
(16:59)
こういうマップを妄想してた。
###L### # \\\ # # # # # # # #* # # * * # # * # # # # # #* # # # # # # *# # * * # # * # # # # R # #######
僕の AI に解かせてみたところ、なるほどこのロボット頭で岩止めれるのか…と気付いた。
(01:56)
2時に寝て8時に起きてしんどすぎると二度寝して、11時くらいと12時くらいと1時くらいと2時くらいでそれを繰り返して、明日からアメリカだから休もう…とメール書いた。で、また3時くらいでそれをやって、その時飯を喰って、あと2回そういう繰り返しをして今に至るがまだ体だるい…
とりあえずそろそろ準備しないとな…
(19:41)
http://herpolhode.com/rob/utah2000.pdf
読んだ。まーそうなんだろなっていう。よくわかってないけど CS とか半分くらいはそろそろ大学でやることじゃないんじゃないかな…てのは割とずっと思ってることだけど。
計算量とか数学系は続けりゃいいと思うし、科学技術計算のための大型計算機とかもやりゃいいと思う。ただシステムプログラミングとかは、もう企業にやらせりゃいいんじゃないかな…ていう感はある。12年前の rob pike の苦言を見て、そんな感じなんだろうなあと今思うてことは、たぶんあんま良くなってないんだろうな…
(21:43)
前 | 2025年 7月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ mtve [:)]