ToDo:
Ruby の at ってこうなってて欲しいと常々思ってるんだけど、 なんかダメな理由あるのかなぁ。
class Array def at(a,b=nil) self[a] || b end end class Hash def at(a,b=nil) self[a] || b end end a = [0,1,2] p a.at(0) # 0 p a.at(0,3) # 0 p a.at(3,4) # 4
Array.new とかの引数使えって話もあるとは思うんだけど、 あれ使っちゃうと pstore に入らなくなるよねたしか… むしろそっちが問題なのかな。
ところで || はダメだな false が要素として入ってると終わる
あとこれを Array と Hash のループにしてかつ Ruby 1.8 で動くようにする方法を僕はしらない
(13:13)
GBLについての誤解が!
http://route477.net/w/?RubySDLSmallFonts
1おくえんではなく10おくえんで、 平均的な人生を余裕で一生遊んでくらせるくらいの額に設定してあります!
とか書いてる暇あったら wiki だからなおしておいた方がいいのかな…
(16:34)
自然言語をプログラム言語チックにして欲しいというのはよく思うんだよね。 具体的には英語の that を {} でくくるようにして欲しい。
I prefer the cake {which you ate yesterday} to this cake.
的な。
(18:51)
http://www.kmonos.net/pub/Presen/fltv/FLTV.pdf
これは今まで見た kinaba さんの偉業の中でも 最高峰だなぁこれは。 そしてこの偉業に自分の名前が出ててうれしかった。
kinaba さんは詐欺師にむいていると思う。 説明がうますぎて、賛成できなくてもすばらしいと思ってしまう。
賛成できない、というか少しひっかかるのは名前推論の話。 最初見た時はすごいなー面白いなーと思った記憶がある。 でもいつだったかその話をぼんやり思い出してる時に、 微妙にひっかかることがあって、そのひっかかりを今また思い出した。 みんなそうかもだけど、僕こういうのよくあるんだよなぁ。 他の人の発言やら意見を最初ぼんやり流しておいて、 後から replay した時になにかそれに対する考えがまとまってくるみたいな。
で何が賛成できないかというと、 コピペビリティを落としたり、 直交する文を挿入した時に意味を変えちゃうことがあるんだよねコレ。
String serializedString; Obj objs[10]; for (int i = 0; i < 10; i++) { var _ = objs[i].serialize(); serializedString += $String; }
とか書いてたことにして、 なんかこうこの時点での objs[i] の値の中身が見たいとして、 適当に他からコピペしてきたデバッグルーチンを コピペではったりするとして、
String serializedString; Obj objs[10]; for (int i = 0; i < 10; i++) { Obj o = objs[i]; var _ = o.serialize(); // ここを String s = ""; for (int j = 0; j < o.children.size; j++) { if (j != 0) s += ", "; s += o[j].debugString(); } printString(s); // コピってきたよ serializedString += $String; }
とか、まあ恣意的な例だしこれ自体に関しては デバッグ出力用の関数を Obj のメンバにしろよボケという話なのだけど、 まぁこういう状況は他にもまぁ、あるんじゃないかなぁと思う。
自然言語でも実際これってよく起きる問題だと思うんだよなぁ。 英語論文とかひいこら言いながら書いてた時とか、 わかりやすくするために文の順序とか入れ替えてたりすると、 いつのまにか以前は問題なかった the が 意味がわからんくなる程度に遠くになっちゃったりして。
エラーコレクティングが容易な口語では、 この手の省略ってヤツは鬼強い物体なので、 口語でプログラムできるようになったら こういう名前推論はありかなぁとか思う。 あと、要はミスに気付かせてくれればいいわけで、 IDE が賢くなって、名前が変わった時に $String が色が変わったりして知らせてくれると十分なのかもね。 あるいは名前推論は basic block をまたげないとか そういう制約を入れてしまうか…
ところで上の例はもう一つ本当にウザい話と関係していて、 コピってきた元の例が本当に j でループしてくれていればいいんだけど、 i でループしてたらこれ全部 j に書き換える必要があったわけで、 for の中の 3 つの i=>j はまぁ忘れなかったとしても、 中の if の i=>j は、これは、僕がやったら 50% くらいの確率で ミスる部分なんじゃないかなぁとか思う。 さてこの内側のループのコピペミスに関しては、 これはむしろ名前推論がなされてれば完全に防げるミスだったりするわけですよね… 実際 Perl でコード書いてると $_ についてよく起きることのように思う。
とかなんとか。
every と some は、 sawzall の some はそんな動きしてたっけ、 いやなんかもっと珍妙な動きをしてた気もするが…
http://labs.google.com/papers/sawzall-sciprog.pdf
Quantifier variables are declared like regular variables, but the base type (usually int) is prefixed by a keyword specifying the form of quantifier. For example, given an array a, the statement
when (i: some int; B(a[i])) F(i);
executes F(i) if and only if, for some value of i, the boolean condition B(a[i]) is true. When F(i) is invoked, i will be bound to the value that satisfies the condition.
全然別物だったよ。 要はループに並列可能性を suggest するためのものだった。
メッセージを共通化する話は、
.maxPriority = .max{|a,b|a.priority<=> b.priority}
っていう文法は普通にいいなぁ。
objs.map{|o|o.children.map{|c|c.doSomething}}
が
objs.map(&.children.map(&:doSomething))
とか書けるといいなぁ。 途中の話に戻るけど、要はループ変数というのが 最も名前を省略したい物体なのだよね。 あれだけ type 数を増加させる C++ の algorithm なのだけど、 iterator の名前をつけなくて良いのは抗いがたい魅力なのですよ。
どうでも良いのですが、 僕は iterator の変数は i とかつけて j とか k とかにするのは k とかが int じゃないのが混乱を招きそうで嫌いだし、 it は英語の it ぽくてキモいという話もあって iter を採用しているのですけど、 iter の次の、2つ目以降の iterator 型ループ変数名にいつも困っていたのでした。 たいていは外っかわをもう少し説明的な名前にしてたのだけど、 どうしても名前つけにくいものも多くて。
ところがこの間 jter とか kter とかつける文化が 多くは無いもののあるようだと教えてもらって、 これがすごく気にいっているのでした。
変数名として意味の無いものをつけるべきでない、 という主張があって、 tmp とかはいけないとされてると思う。 でも、どうでもいいループの変数、特にループの中で すぐにデリファレンスしてそれ以降使わない iterator 、つまり、
for (vector<Obj*>::const_iterator iter = objs.begin(); iter != objs.end(); ++iter) { Obj* obj = *iter; // 二度と iter は必要ない… }
とかそういうものは 本当にどうでもいいんだから、 どうでもいい名前をつけるべきだと思っていて、 これを obj_iter とかつけるのはむしろこう、 意味深で可読性を落としているように、 個人的には思うんだよな。
一方僕は humans.find(you) とかした結果帰ってきた iterator に iter と名付けるのはよくないと思う。 それは単なる名もなきどうでもいい 60億要素の humans それぞれを指す iter じゃなくて、 60億の中のたったひとりのために用意されたかけがえのない iterator なので、 もう少し意味がある名前をつけるべきだと思う。 僕は found とかよくつけるけど。
find といえば、その見つかった iterator を 名付けないのもあまり好きでない。
objMap.erase(objMap.find(o), objMap.end());
とかいうヤツ。 これは冗長でも分けたいケースが多いように思う。
map<Obj*>::iterator found = objMap.find(o); objMap.erase(found, objMap.end());
なぜかというと、 この found は何かしら貴重なものに決まってるから、 後から log 出力に加えたい可能性、 printf デバッグやデバッガで名前を指定したい可能性が かなり強いと思うから。
これは意識するようになったのは割と最近のことかもしれない。
(05:56)
何個か書き忘れてた。
(06:05)
自称サヨとしてはむしろ民主より左よりでいいくらいなので、 自民よりは民主でまぁいいかなぁという感じだった。 公明も消えるし。
うちの選挙区の自民の人は大変ニートにやさしくなさそうなことを ブログに書いていて、気にいらない感じだったのでそれもよかった。
個人的には民主は結局何言ってるのか わからんとかいう話があるのだけど、 まぁ色々な人から広く支持集めようとするとそんなもんかねえ的な。 僕だけの支持を得ればいいのであれば もっとわかりやすい左でいいわけだけど
(06:21)
http://twitter.com/kmizu/status/3646075084
あるといいなぁ。
というかでも、なんだろう一つのコードを ひたすら読むのって結構疲れるし あまり意味ない時間も多い気がするんだよな。
でなんか思ったんだけど、 最近読んだ/いじったコードを紹介する輪読会があれば 僕は満足なんじゃないかなぁとか思った。
(06:27)
_ kohls coupons [そのような意味&#..]
http://d.hatena.ne.jp/w_o/20090830#p1
僕もこないだ行った時 漫画喫茶でウシジマ君ひたすら読んだな… 仙台にはウシジマ君を読ませる魔力があるんだなぁ。
(17:35)
ranhaさんの序盤の発表のしかたがたいへん面白かった。 話すことのテーマだけ決めておいて、 聞いてる人にも考えさせる的な。
たぶんテーマの作りかたが色々うまかったんだと思う。
(18:47)
http://twitter.com/wraith13/status/3587968262
すごいナイーブにコンパイラ実装したら mov 2回になっても不思議はないような… TCC でも大丈夫なレベルだけど。
(19:28)
結局まぁ、現状のタイムアウトはわかりにくすぎると思う。 というわけで OCaml meeting 終わったら なんとかしてみようと思う。 腐ったシステムのせいで意外と変更が大きいので、 今回やるのは見送ることにした…
でまぁ、結論としては、 せっかく合計時間が表示されているのだから、 その時間を time limit として使うのが妥当だろうと考える。 まぁどう考えてもそうなっているべき。
ただ今から昔の問題の意味変えるのも微妙だし、 いずれにせよちょっとややこしい変更が必要なので、 deny exec みたいな感じで別オプションをつけようかなぁと思う。
ややこしいのは、どうしようもなく起動に時間がかかる言語群は 起動時間のためにタイムリミットに一定のボーナスをあげているのだけど、 これが実行サーバの方で超絶アドホックにハードコーディングされてるのが 大変問題で、問題ぽい。
(07:01)
http://www.ipa.go.jp/jinzai/mitou/2009/2009_1/youth/gaiyou/sk-3.html
via http://d.hatena.ne.jp/hogelog/20090825/p1
hogelogさん採用おめでとございます。
あと概要の最初の文が妙にかっこいいな。 よくわからんけど未踏の提案って「私は」で始まるもんなんだろうか。
私はスクリプト言語Luaのメモリ管理機構を改良し、 高速性と省メモリ性を向上させアプリケーション 組み込み言語の利用用途を広げることを提案するっ!!
(01:08)
どこが発生源かは知らないのですが。
%backup%~ 52.html 6.189-lecture15-cilk.pdf Current Version Desktop Downloaded Albums Downloads Mail News Pictures Videos apfc.js apt.txt apt2.txt arch bg.gif bin cell cfg chrome chrome_printing_test.pdf cluster08.ppt contestapplet.conf contestapplet.conf.bak cvsroot dai-21reidai-kyouyou.pdf dat diff driver.ppt du extensions_toolstrip.css foo.doc hardcopy.0 hellowave.xml icfp09.pdf index.html index.html~ kansai_pm_11.pptx kiyaku.doc kousokuka.ppt lib log manifest.json memo mnt nacl_paper.pdf neta poker pokerimgs pokerimgs.tgz pouzu.gif public_html shot-4k shot-4k-src.zip src t tcc64 test tinycc tinycc.git tmp trouble_cases.pdf wrk
適当に整理しろってかんじだなぁ。 あと core が無いのは人としてはずかしいことではないか
(03:25)
捨てられそうな TODO
(21:29)
適当にいじってみた。
なんかうまく動いてるようでうまくいってないので、 もうちょっとなんかする。 たぶん focus() 呼ぶんじゃなくて click イベント飛ばす感じにした方がいいのかね。 まぁそのたもろもろよくわからん。
(21:30)
http://hnw.jp/documents/unixmemo/ssh-keepalive.html
これっぽい。 .ssh/config に書く方法で回避。 これは手軽で良い。
(21:31)
なんかこう、もう CPU が速いとか言われてもそんなもん別に欲しくもないんだけど、 デバッグがしやすい CPU とかあれば、 それは数万とかなら買っちゃいそうな気がするわけです。 どういうのがあれば嬉しいかというと、 まぁ hardware data break とか別にそんなに欲しいかっていうとそうでもなくて。
たぶんログ残すような機能があるといいと思うんだよなぁ。 なんか最近のハイエンドの POWER とかって transaction log 取っておいて データぶっこわれたら replay とかできるとか そんな話を聞いたことがある気がするんだけど、 一定の逆再生ができる程度に transaction log が残っていれば、 組込みとかでない環境での reversible debugging とかに わりと現実味が湧いてくるんじゃないかなぁと思う。
まぁそこまでやらんでも、 レジスタに関しては書き込みごとに 前回の値を5つ程度残すであるとか、 メモリを同じサイズで2本差しておいたら メモリ書き込み時に古い値が自動的にもう1本の方に行くとか、 そういう壊滅的なことが起きる前の状況の ヒントみたいなのが残せるといいんじゃないかなぁとか漠然と。
(21:54)
うごいた! すごい! でもなんか挙動が気にいらんのでいじる
あと upload できない問題は quick fix したバージョンをあげておいた。
さっさと local storage やるべ。
(01:16)
http://codegolf.com/guns-and-zips
とりあえず1位まで。 あと 10B くらいは手間をかければたぶん縮む。 ただそうでなくても 10B くらいはどこにでものびしろがありそうだから、 そういう細かい調整は今はまだしたくない感じ。 なによりもフラたんなら 400 切るくらいはやってくれるだろうなこれ…
(23:28)
には先生が使ってくれたおかげで問題点が色々わかったりわかんなかったり。
とりあえず localStorage に移行しないとかなぁ。
あと TODO として x509 のエラーがあるんだけど、 これ 64bit debian sid でしか起きてないな…
(04:19)
http://d.hatena.ne.jp/kazuhooku/20090823/1251005064
kazuhoさんが面倒なので考えてない点について少し。
C のマクロは僕の大雑把な理解では、
とかいう感じじゃないかなぁと思う。 # の順序が遅いので、 たぶん assert.h の assert は __STRING とかで先に assert の中身を文字列化してやってるんだと思う。 見ると実際そうだった。
だから処理としては、
つーかんじでうまくいくんだとおもう
(15:54)
http://blog.man7.org/2009/07/whats-book-about.html
なにやらでかい本を書いてるらしい。 面白そうです。
(20:48)
_ kosaki [Michael Kerriskはlibcだけじゃなくman ページ全体ですね。 っ http://www.kerne..]
微妙に忙しいというか暴飲暴食の日々を終えて 2週間休暇というか会社にいない系になることに。 2週間いないってのは実は今までなかった気がする。
さっそく激しくゲリでいけてない。
確実にこなさないといけない TODO としては…
やらんくていいけどやりたいこととしては
あと全然関係ないがネットブックが欲しい。 ゴルフ場がそろそろ色々キツいので、 そっちに移行できるといいかなぁとか。
(02:41)
http://osaka.cssnite.jp/cssnite-in-osaka/event-info/vol18/1137/
これちょっと行ってみたいけど 翌日成田行かにゃならんからさすがにキツいかなぁ。
つか選挙の期限前投票もあるのであったざんねん
(19:34)
前 | 2024年 10月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ Gimite [Hash.new(3)はMarshalableなはずですが、Arrayにはデフォルト値とかないっぽいですね。]
_ akai [fetchを使えばいいのでは?]
_ shinh [fetch! こんなものがあったんですね。ゴルフに関係なさそうな長さのメソッドは目に入らないという病気のせいで…今後..]