ToDo:
http://mono.kmc.gr.jp/~yhara/d/?date=20071222#p01
こいの見てて思うのはあんまり関係ない二つのことだなぁ… 一つ目はこう shell はもっとステートフルであって欲しいとか zsh には zftpsys っていうのがついてるの知ってましたかとか そんな話で、 shell っていつか作りたいものの一つなのだけど…というようなほげほげ。 二つ目は Smalltalk のアレいいよなぁという。 名前を忘れてしまったのだけど同じレシーバに対して続けて処理する時のアレ。
receiver doFirst . doSecond
とか書けるんだっけ。なんか違う気もするけど。 なんかあれ shell とかにたまに良さそうだよなぁとたまに。 たぶんあの機能自体 Smalltalk でもたぶんたまにあるとたまに 便利的な微妙機能なんじゃないかと予想している。
これは僕の知る限り Bjarne 信者の C++ 屋が
obj.setA(a).setB(b)
とか書くとか頭おかしい Ruby 屋が
5.times{|i|p i}.times{|i|p i}
とか書くくらいのレアなアレ (上のコードの出力をわかった人は懸賞でひゃくえんくらいがあたります) なのであんまり便利なものでもないのかもしれない。
しかし機械語に落とす時にレシーバは常に EAX とかそんな感じで ほげほげすれば割と良いようなよくないような。
(01:43)
カウボーイなんとかに行ってきて色々興味深かった。 たぶん Unix じゃない人が多いのがなかなか色々。 ただ何故カウボーイなのかとかよくわからなかった。
あと sevil とかは 「役に立つものはゴミみたいなクォリティーのコードにする」 という固い信念に基きゴミなのでまぁゴミなのであった。 というかごめんなさい。
自分でもこれ見ると何がしたいのかよくわからなくて戸惑う。
(01:56)
どうなってたら便利なんだろうか… よくあるケースとしては、
親起動→子起動→子停止→親が捕獲して適当にコード注入して PC いじる →子復活→子 SEGV 。
たぶんこんなケースだろう。 うーん、子への他プロセスからの attach を保留する機能と、 その他プロセスに委譲する機能があればいいのかなぁ…
そうすれば、
親起動→子起動→子停止→親が捕獲して適当にコード注入して PC いじる →親が子に対する他プロセスの attach を保留する設定に → gdb で子プロセスに attach →親は新しく attach しようとしてた gdb に委譲して子復活 →子 SEGV → gdb が捕獲。
みたいなことができるのかなぁ。 知らん。 今度コード見る。
(02:19)
http://a-nickels-worth.blogspot.com/2007/11/effective-emacs.html
http://udrepper.livejournal.com/19557.html
(14:06)
例えば SKK-JISYO.L には「こわs」に対して 「怖」とか「恐」とか入ってるわけだけど、 これは要はおそろしいの読み間違え みたいなのも入ってるって感じなんだろうなぁ。
(18:04)
なつたんさんのところでたまに見かける 長門というのは「ちょうもん」ではなくて「ながと」 だとわかった。 あと「らきすたのどれか」という認識だったんだけど ハルヒの左にいる子のことらしい。
(22:58)
いかに Firefox がアホかというような話だったように思う。 kernel 側で Firefox だけ メモリの扱い変えるとか、 Firefox を定期的に再起動する Extension だの Firefox を二つ動かしておいて定期的に swap しつつ 片方を落とすだの、 ができれば良いと、 まぁそんな話だった。
まぁもう Firefox 専用チップとか作ればいいんじゃないかなぁ。 今時のマシンって Core 2 Duo (ただし片方の CPU は Firefox が使用) メモリ 2GB (ただし 1GB は Firefox が使用) とかそんな感じだろうし…
(03:07)
ネイティブコードがいるんだろう。 setjmp/longjmp でできると思うんだけど。
http://twitter.com/alohakun/statuses/523538622
(17:41)
の興奮も冷めやらぬタイミングで新しいお知らせが!!
http://zinnia.dyndns.org/~hiki/SandBox/?SDL-2008%C7%AF%BF%B7%BD%D5
(18:05)
_ あろは [確かに,今ちょっと調べてみたら,昔の C++ トランスレータは,例外の実装に setjmp/longjmp を使って..]
だるくてニコニコ見る気も起きないので見てまわる。
zinniaさんに見せてもらって こう首にかけるタイプのはなかなか良いなぁとわかった。
たぶんこれなんだけど難点があってソニ〜なのであった。
ソニ〜でよければこれが次の型なのかね。
このへんネックストラップらしいがまだ出てない。
http://hobby10.2ch.net/test/read.cgi/phs/1184127288/313n-
あと知らんけど ad[es] & bluetooth はびみょうらしい。
(17:53)
nanka さいきんたまに (人|物)++ って表現見るけどこれって ギークなおねえさんとかで最初に見たような気がするけど よくある表現なのかな。
とりあえず賛成の意味で +1 はよく見る。
(21:11)
とりあえずかなり簡単な問題とかなり難しい問題を出してみて 反応を眺めてみてどんくらいの問題にしようか決めようかと思って、 今回はかなり難しい方なので難しいはずというか。
(23:44)
http://b.hatena.ne.jp/spiritloose/20071217#bookmark-6831256
perl -e 'print g.o x shift.gle'
かな。
(01:15)
http://b.hatena.ne.jp/totttte/20071217#bookmark-6831256
知らんけど
main(a,b){printf("g%sgle",memset(b,111,atoi(gets(b))));}
とかならたいてい通るんちゃうかな
(01:24)
起きたらなんかえらいだるかった。 でまぁ会社行ってコート脱いだら Tシャツだということに気付いた… けど誰も指摘しなかったので かわいそうな子認定を受けてるのだろうと思った。 あと金月と書いてたどうでもいいコードをかなり捨てて こう久々に大きく無駄なことしてたなぁと悲しくなった。
(20:58)
(09:50)
http://d.hatena.ne.jp/higepon/20071215/1197733211
あるなぁ、
(01:00)
昨日はRHGにいった。 思ってたより面白かった… というか Common LISP が思ってたより面白かった。 これ見るとホント Ruby はよく影響受けた言語なんだなぁと。 この本は買うなぁ。 今の状態見ると翻訳はあまりクオリティ高くなさげだけど、 なんとなく適当にわかるし。 ただプログラム初学者向けでは無さげ。 まぁたぶん初学者は買わんから問題なさげ。
その場で CLISP と GCL と SBCL 入れて 適当に比較しつつ遊んでた。 雰囲気としては
遊ぶなら CLISP でマジメにやるなら SBCL とかなのかな。
(16:18)
Perl golf history book 的なのを 他言語でも欲しいという話が IRC であった。 まったくその通りだと思った。
とりあえず Wiki でも上げてみて、 古い問題については deadline なくてもネタバレアリ、 って感じでまとめていってみるのはアリかな。
考えてるのは
をある程度自動的に作れると良いんだけど。 あとは人気コードランキングとかあるといいのう
(16:35)
_ shinh [ひげぽんさんは僕なんかよりもっとそうだと思うのですけど、正直逆アセって最も手軽かつ確実な方法だったりしません?別に機..]
_ ひげぽん [>ひげぽんさんは僕なんかよりもっとそうだと思うのですけど、正直逆アセって最も手軽かつ確実な方法だったりしません?別に..]
_ shinh [もうちょい応用をきかせて書いてるコードのアセンブリが常に隣に出てる、とかは夢ではありますねえ。]
_ ひげぽん [それは良いですね。 今のマシンパワーならわりと余裕で出来そうですね。]
_ Jcftymkt [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]
http://d.hatena.ne.jp/odz/20071214/1197622976
このへんを見た。 オリジナルのコードが変わってるみたいだから内容はよくわかってない。 そこであまり関係ない話。
#include <math.h> int main() { return pow(3, 4); }
が
main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx movl $81, %eax popl %ecx popl %ebp leal -4(%ecx), %esp ret
こうなる。 これが __builtin の魔力か! てか -O とかつけんくても消えるんだね。 pow(3.3, 4) とかしちゃうと pow が呼ばれてしまう。
で -ffast-math をつけると
main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx movl $118, %eax popl %ecx popl %ebp leal -4(%ecx), %esp ret
わいわい。
あとまぁ pow(argc, 4) とかでも -ffast-math つければ call pow は消えるから 最適化で pow が速くなることはないというわけでもないとか。
TODO(きっとあろはさんが調べるという意味): これ GCC のどこ? builtins.c は微妙に違いげ。
(03:44)
builtins.c か。
/* Attempt to evaluate pow at compile-time. */ if (TREE_CODE (arg0) == REAL_CST && ! TREE_CONSTANT_OVERFLOW (arg0)) { REAL_VALUE_TYPE x; bool inexact;
x = TREE_REAL_CST (arg0); inexact = real_powi (&x, TYPE_MODE (type), &x, n); if (flag_unsafe_math_optimizations || !inexact) return build_real (type, x); }
このへんかね。
にしても fold_builtin_pow は相当アホな感じな最適化がほげってるなぁ。
/* Optimize pow(cbrt(x),y) = pow(x,y/3) iff x is nonnegative. */ if (BUILTIN_CBRT_P (fcode)) { tree arg = TREE_VALUE (TREE_OPERAND (arg0, 1)); if (tree_expr_nonnegative_p (arg)) { const REAL_VALUE_TYPE dconstroot = real_value_truncate (TYPE_MODE (type), dconstthird); tree narg1 = fold_build2 (MULT_EXPR, type, arg1, build_real (type, dconstroot)); arglist = tree_cons (NULL_TREE, arg, build_tree_list (NULL_TREE, narg1)); return build_function_call_expr (fndecl, arglist); } }
/* Optimize pow(pow(x,y),z) = pow(x,y*z). */ if (fcode == BUILT_IN_POW || fcode == BUILT_IN_POWF || fcode == BUILT_IN_POWL) { tree arg00 = TREE_VALUE (TREE_OPERAND (arg0, 1)); tree arg01 = TREE_VALUE (TREE_CHAIN (TREE_OPERAND (arg0, 1))); tree narg1 = fold_build2 (MULT_EXPR, type, arg01, arg1); arglist = tree_cons (NULL_TREE, arg00, build_tree_list (NULL_TREE, narg1)); return build_function_call_expr (fndecl, arglist); }
これとか。
(03:56)
http://www.jmuk.org/diary/2007/12/14/1
似たようなことが w3m で起きてたのだけど なんか inflate ってコマンド無いと w3m の場合ダメなんかなとか ダメなんかなーと思って accept-encoding から deflate 外してから 気付いたんだけど、よく考えると akr さんとこ (http://cvs.m17n.org/~akr/diary/) は 見えてるのであったのでなにかがおかしい。
それはそうと akr さんとこは Accept-Encoding に deflate 無くても DeFLaTe で送ってくるのはエグいような。
echo 'GET http://cvs.m17n.org/~akr/diary/ HTTP/1.0\r\nHost: cvs.m17n.org\r\n\r\n' | netcat cvs.m17n.org 80
http://www.ietf.org/rfc/rfc2616.txt
とかを見て Accept-Coding: identity を送ってみるも通じず。ムネン。
(04:25)
かんどうした
>>(defun f (&optional a b &key k) (list a b k)) F >>(f 1 2) (1 2 NIL) >>(f 1 2 :k 3) (1 2 3) >>(f :k 3) (:K 3 NIL)
(15:34)
gcl
>>(defun nil() (return 1)) NIL >>(nil) 1
clisp
[1]> (defun nil () (return 1)) NIL [2]> (nil) 1
sbcl
* (defun nil() (return 1)) debugger invoked on a SYMBOL-PACKAGE-LOCKED-ERROR in thread #<THREAD "initial thread" {A7BD3F9}>: Lock on package COMMON-LISP violated when setting fdefinition of NIL. See also: The SBCL Manual, Node "Package Locks" The ANSI Standard, Section 11.1.2.1.2
(16:01)
GCL はインタラクティブモードで disassemble しようとするとあわててコンパイルしてから objdump してる感じ。
しかし objdump は読みなれてるので良い。
(17:26)
_ Ashykaju [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]
なんかやけにしんどい
んなことより昨日カタストロフが起きて大変だった。 なんかノートPCが落下したり色々あったけど、 結論としてはたぶん kernel を中途半端に入れ変えた影響で u3 の ssh が起動時に立ち上がらなくなった。
などという実に中途半端ながら 結論を言えばログインできない感じの状態になった。
復旧法としては USB の HDD で kernel とか適当にほげればいいんだろうけど、 ていうかさすがに 6 年も働いてくれたので捨ててもいいんじゃないかというような。
Duron 800MHz でメモリ 128MB とかだいぶ懐しい感じのスペック。 こんなもんが SVN サーバと IRC プロキシと メインの Web サーバやってくれてたのがアレだなー。
ところでゴルフ場もキーボード効かない&&ディスプレイほぼ見えない という割に過酷な状態のマシンで経営されているとは
(22:23)
800MHz もあるのに懐しいとか贅沢になったもんだね! 昔のアンタはそんなんじゃなかったよ!! 133MHz とかで g++ 使ってコンパイルに30分とかかかってたじゃない!
(22:26)
前 | 2024年 11月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ sumim [>同じレシーバに対して続けて処理する時のアレ 「カスケード」と呼ばれています。セミコロンを使います。 rec..]
_ shinh [おお、ありがとうございます。 sumim さんの日記で何度か見ていて少し面白いなぁと思っていたのですが、名前や記号を..]
_ hogelog [> こわs これって「恐すぎる」とかのためではないのですかね。恐すぎるって日本語として合ってんだか自信無いですが。..]
_ shinh [あーホントですね。ご指摘ありがとうございます。日本語能力ないのにこのへんアレコレ考えてると混乱が混乱を呼び勘違いだけ..]