ToDo:
何やら色々楽しかったものの宿題も増える感じだった。
(00:27)
の fugafuga が WebKit と IE で動作そろえてて涙ぐましいとかいう話をしていたら、下の 3 つくらいが一致してないと気付いた。
ちなみに WebKit の該当コード。文字列長を3でわってどうこうとかやってるそうな
http://trac.webkit.org/browser/trunk/WebCore/dom/StyledElement.cpp#L346
(22:56)
そいえば雑談会で Python 嫌いとか言ってたんだけど、 結構使ってて、嫌いなものを結構使ってる今の状況って面白いなと少し思う。 とはいっても仕事の道具としての Python はそんなに嫌いじゃないんだけど。
適当な手段で適当に集計してみる。 WebKit にかかわったのは6月くらいからで112個のcommitがあるらしい。 うちわけを適当に
思ったよりすくなかったけど、まぁ Python 多いのだった。 reviewer になってから見たものは完全に Python ばっかりで、
らしい。 たしかに C++ はほとんどの場所が review できる域に達せてないから あんまり見てないけど、それにしても1個ってことはなかった気もするんだけど。
でまぁ嫌いだとしている Python とか Mac とかを使って それなりに幸せに仕事できてるのはこうまぁ、 なんかやはり趣味としての好き嫌いとかって 仕事とかだとわりとどうでもいいのかなぁとか思うわけだ。 なんというか仕事だと言語としての良し悪しとか環境の良し悪しなんかより、 もっと別な色々(回りの人とかコミュニケーションとか開発サポートするツールとかテストとかそういうの)のことの比重の方がはるかに大きくて、 ということなんじゃないかなぁと思う。
そのへんにこう関数型言語で仕事したいとか言う人に うさんくささを感じてしまう理由があるんじゃないかなぁと思う。
一度 PHP で仕事してみたいもんだと思う。嘘です
(18:08)
しかしまぁ僕は超嫌いな言語とかで作業してるわけじゃないので、 常日頃から嫌いで嫌いでしょうがない言語で作業させられてる人とかは、 まぁ普通に自分の一番好きな言語で作業したいと思うだろうし、 なんかあまりフェアじゃないうさんくささの感じかただなぁとか思った
(02:15)
http://twitter.com/niha28/status/8890624685
http://twitter.com/shinh/status/8896555291
Python だと、
for x in array: if fuga(x): break else: return # 見つからなかったから return
的なのができるって話なんだけど、 文法さえまともならどんな言語でも欲しいと思うんだよなぁ。
ちょっと考えてみるに continue/next 使うといいんじゃないかなぁと思うんだけど、 文法的にこう曖昧的な微妙さがある気がするんだな。
for (;;) { if (fuga) break; } continue { return; }
はまぁ continue の後にセミコロン以外ならいいのでいいか。
loop { break if fuga } next { return }
とか
loop do break if fuga next return end
は大変厳しそうだ。
(02:20)
kosaki さんが Ruby の hello がわからんとおっしゃっていたので あんま C と変わらんよ、と書いたコード
http://github.com/shinh/test/blob/014d475797f697d8f69017a3ce9517a46cdb9fcb/hello_ruby.rb
こんなかんじでつけ加えてやると C でもリンク通る。
http://github.com/shinh/test/blob/f24f802bfb24492b0e79167aae399385db54b5e8/hello_ruby.rb
C ぽさを維持して Perl あたりも通るようにするにはどうすればいいかなぁ。
#include <stdio.h> #include <stdlib.h> int loop { printf("Hello, world!\n"); exit(0); }
は手っ取り早いけど、関数に引数ないのは不自然だよな。
(02:33)
http://zerobase.jp/blog/2005/10/ajaxquickedit_html.html
こういうの無いかなーと思って検索したら出てきた。 検索キーワードは「ブックマークレット その場で編集」。 僕にしてはうまい検索だなーというか僕基本的に 一語以上で検索する脳が無いからな
(04:50)
(03:05)
BEGIN { print "o, " END { print "wor" BEGIN { print "ll" END { print "ld" BEGIN { print "He" END { puts "!" } } } } } }
BEGIN はうちから END は外から。 BEGIN も別に下から実行してるというわけではなくて、 並列に並べると上から下に行く。 なんかぱっと考えた時の直感と真逆な感じがあるんだけど、 わざわざこうなってるということは理由があるのかなぁ。
Perl も同じだから Perl にあわせたのか
(03:31)
http://www.stride.co.jp/chahan/shibuya.php
複数人の同僚さんがうまいと言ってたので行ったら真剣においしくてびびった。 やばかった
でも味の好みとか的には唐辛子入れてザーサイ入れたいなー的な
(03:48)
awk はたぶんだめだった。
あと結構自由なところに置けるんだなぁ
puts begin BEGIN { print "Hello, " } end || "world!"
(04:12)
http://blog.practical-scheme.net/shiro/20100211-string-literal-concatenation
3 はそれこそ awk とかですかね。
BEGIN{ w = "world!"; print "Hello, " w }
これがあの Perl でできないのは特筆すべきことなんじゃないかなぁと思う。 まぁ bare word があるような言語で文字列連結があると 崩壊以外の末路が見えんが。
あと Perl は文字列連結は . でやってても 両方定数だとコンパイルタイムでやってるように見える。 コードとかは見てないけど、そういう挙動というか
(04:17)
あ、なんかクラッシュしなかった。 なんか強烈に遅くて、クラッシュする時もある、って程度なんかな… あと gdb-1344 を野良ビルドしたらそっちの方がはやかったっぽい。
いずれにせよシンボル情報保存しておけばいいか…
(17:00)
結局真面目にやっていいのかよくわからんがまぁ適当にやろう。
(22:03)
なんか TLE 的なのを主催しつつ自分も参加するという 荒技はできないかなぁと時々考える。
なんか何人か呼んでその人達に1問ずつ問題とその解答のチェッカーを 当日まで秘密で作っておいてもらって、 当日になったら僕が頑張ってそのチェッカーをゴルフ場に移植しつつ 参加とかそういう感じでできるかなぁ。
出題者はハンデとして出題者以外のトップを 10000 として 出題者の点数は半分にして考える、但し最大 10000 点、 とかそんくらいでいい気がする。 どうせ出題するような人は他で強いし。
あと、チェッカーにバグがあるよとか指摘された場合に 投稿された解答をチェックする必要があると悲しいけど、 まぁそのへんはなんとかなる気もする。
あーでもやっぱ事前の協議とか無いと似たような問題が並ぶとか あったりするかなーどうだろう
あと言語が自由になるとさらに良いがもっとつらそうだ。 そういうのやるとしたらむしろ時間内に なるべくたくさんの言語で解きなさい! とか面白いかな。
(03:14)
https://lists.webkit.org/pipermail/webkit-dev/2010-February/011626.html
つげー。 EFL って Enlightenment ですよ。 投稿されてるデカいパッチとかのクォリチーはそれなりに高そうに見えるし、 どうもマジっぽい。
サムスンの援助で ProFUSION というブラジルの会社が 組み込み向けっつーことでやっているらしい。 Enlightenment 乗ったケータイとかテレビとか出たらすげーなぁ。 Qt とかじゃなくて Enlightenment でやることになった 経緯とかが知りたいもんだ。
このへんのムービーとか見ると これが EFL 上であるというのを信じるなら WebKit 動いてるっぽい。
http://blog.gustavobarbieri.com.br/2009/11/04/evas-uv-mapping-and-webkit-efl/
(00:21)
あたりまえだけど、 make alternatives はさっさと絶滅するか 一つを残して絶滅して欲しいと思っている。
そういう話をしてて wikipedia の素敵なエントリを見つけた。
http://en.wikipedia.org/wiki/List_of_build_automation_software
本当に絶滅してくれ…
make alternatives を作ってる人達は、 proof of concept として、 GCC あたりをその make alternatives で ちゃんとオプション変えつつビルドできることとかを 実証して欲しいよなぁと思う。 Makefile のパースだけで時間がかなりかかるような 巨大プロジェクトもあるわけで、 まぁそういうスケーラビリティは保証して欲しい。
そういえば Android は Makefile が find 的なことをしててとんでもないですよねーとか 言ってたら mmm とかいうのがあるらしいと教えてもらった。
(00:30)
_ shinh [うーんほっといてもそれなりに死屍累々となってきてませんかね。でもスーパーセット作るってのはまぁ面白そうですね。]
_ fd0 [> Qt とかじゃなくて Enlightenment でやることになった経緯とかが知りたいもんだ。 推測ですけど、Q..]
_ shinh [あーたしかに Qt 大きいですね。でもあれって結構 configure 的なやつでそぎ落とせたような気も]
_ morita [どっちかつーと Enlightenment のスポンサーになった Samsung が自社プラットホームの Bada ..]
_ shinh [なるほど。それでもなお GTK+ はきついきつかったんだろうか…とか思ってしまいますが GTK+ こそ大きそうかな。..]
なんか半角カナがいつの日にか出なくなっていた。昔のメモには r14 と書いてあるのだけど、 kana14 にすればいいらしい。 r12 とかももうダメなんだろうけど、今はまぁ 14 固定だからとりあえずいいや。
JISX0201_KATA=14,kana14;10,mplus_j10r-jisx;12,r12;
ついでに rdic の発音記号。
http://parsley225.hp.infoseek.co.jp/rdic.html
を参照して、
k14-1 -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0213.2004-1
を加えて
% sudo mkfontdir % xset fp rehash
と
JISX0208_1983=14,k14-1;10,-mplus-gothic-medium-r-normal--10-100-75-75-c-100-jisx0208.1983-0;12,k12; JISX0208_1990=14,k14-1;10,mplus_j10r;12,k12; JISX0213_2000_1=14,k14-1
あたりでなんとかなったみたいだ。フォントのインストールは特に必要じゃなかった。たぶん xfonts-jisx0213 パッケージでよい。
(00:07)
NX bit というのを立ててうんぬんというやつは exec-shield とは微妙に違うらしい…というのはだいぶ前どこかで読んだような気がするけどなんかまぁ知らん。とにかく Windows では DEP というらしい。
でまぁ、結局、スタック書き変えてレジスタも適当にセットして準備がそろった段階で mprotect に ret で飛んでく、っていうのが基本的な話らしい。 return to libc という単語は聞いたことはあったんだけど、 libc に飛んでくっつてもどの関数に飛んでくんだろうどうせたいした引数準備できないだろうし…とか思っていた。 mprotect に飛んでくなら納得だなーと思った。
address randomization なんてのはなんか筋が悪そうだとなんとなく思っていて、いや適当な fix としてはいいと思うんだけど、まぁとりあえず mprotect しなくていいプログラムは、このプログラムは絶対 mprotect 呼びませんよーと宣言すれば mprotect 絶対に呼べないようにするといいんじゃないかなぁとか、あとそこまで行かなくても writable かつ executable な mprotect は禁止ーとかすればそれなりになんとかなるのかなぁとか思ったりした。
(01:27)
VMX って具体的にどういう命令増えたかとか調べるべき。 特に vmcall ってどう受けるのかなーとか。
あと lua の tailcall が jmp じゃない理由。 コード見るとなんか一見だいぶ違うなー
あと lua の closure うんぬんは別になんか そのまんまな気がしたけどたしかに レジスタベースだとスタック保持しとくってわけでもないわけで どんな感じになってるのかなと少し考えるというか読むか
(01:32)
id:firewood さんに Windows での生活についてとかをお聞きする。
なんか Windows についてはとりあえず 疑問をまとめておく必要があるような気がした。
あと Linux 使ってる時も、 不便に感じるところをどう対処したか、 とかメモっていくと Windows で同じことする時どうするか、 みたいな疑問を後で一つ一つサバいていけたりするかなぁ。
あと CUI だとなんかちょっとしたミスで致命的なことが起きたりとか、 細かいオプションとか調べるのがだるいとか、そういう指摘はもっともだと思う。 とりあえず今度 man とか --help の履歴を見てみると面白いかな。
(01:36)
2008年は813回、2009年は374回。大幅に減ってるな…
2008年によく調べた man
8 diff 8 dosemu 8 getpid 8 gettimeofday 8 mprotect 9 backtrace 9 ld 9 signal 10 memset 10 objdump 10 printf 10 select 10 write 19 clock
なんで clock そんなに多いんだ… write とか memset はどうせ引数順、 select とか printf はたしかに調べてそう。
2009年
5 fgets 5 memcpy 5 write 6 fread 6 getpriority 6 mount 6 setpgid 7 atoi 7 printf 8 memset 10 connect
うーんなんだろうな。 明らかにゴルフ場でしょうね、というものも多いけど、 うーん connect?
あと info はどっちも当然 gcc が2年で57回で圧勝、2位が sed の 10 回。 あたりまえといえます
(01:47)
たぶん man clock で hwclock とかいうのが 出てくるから man 3 clock とやりなおす点と、 あと CLOCKS_PER_SEC を忘れるからだという予想が成立した
(01:50)
昨日は生きてたのに今は反応なくなってるー。 全部コード落としておくべきだった。
PREP は __COUNTER__ か __INCLUDE_LEVEL__ が便利だったみたいだ。 kinaba さんのが一番気がふれてる感じで良かったけど まだ理解できてない。 kinaba さんコードください :)
COMP は適度に読んでなんとなくわかったのは たぶん長さを可変長でエンコードしてるんだなーということ。 とりあえずポーカーやりながら何度目かわからん ハフマン符号とか実装してみてまぁ縮みそうだなーという感じはあったので とりあえずちょっと自分でやってみてどのくらい短くなるか調べるか。 しかし謎な定数が多くてまだ何もわかってないおそれも強い。
(05:23)
_ naoya_t [TLE復活してるっぽい]
前 | 2010年 2月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ 酒井 [当日どういう話だったか知らないけど…… > nested data parallelism ってなにかよくわからず..]
_ shinh [おおありがとうございます! > 直列処理を複数のデータに対して並列に適用するのが普通の data parallel..]
_ 酒井 [> 配列を4つに切るのが普通ので、配列を2つに切ったやつをさらに2つに切って…みたいなことやったものを並列にどうこう..]