#client.scmはどうやってインストールすればいいですか?
#gauche-packageL
#gauche-package?
#普通にconfigure+make+make installできるようになってるんで、
#tarballさえ作ればgauche-packageでいけるはず。
#DISTを入れればtarballがすぐ作れるのか。
#おっけー、DISTチェックインしといたんで、svn upして
#clientディレクトリ内で./DIST tgzしてもらえればtarballができます。
#それをどこへなりと持っていってgauche-pakcage installできるはず。
#(もちろんsvn upしたマシンでインストールするならわざわざその手順を踏まないでも、./DIST gen + ./configure + make + make install でいいです)
#インストールできました
##!/usr/bin/env gosh
(use chaton.client)
(use gauche.parameter)
(use gauche.parseopt)
(use gauche.process)
(use util.match)
(define-class <chaton-config> ()
((client :init-keyword :client
:accessor client-of :init-value #f)
(url :init-keyword :url
:accessor url-of :init-value #f)
(npath :init-keyword :npath
:accessor npath-of :init-value #f)
(ipath :init-keyword :ipath
:accessor ipath-of :init-value #f)))
(define *chaton-config*
(make-parameter
(make <chaton-config> :client "ChatonRader"
:url "http://practical-scheme.net/chaton/gauche"
:npath "/usr/local/bin/growlnotify"
:ipath "/Users/yasuyuki/Downloads/chaton-room-gauche.gif")))
(define (send-notify npath ipath title message)
(process-output->string
(list npath "--image" ipath "-t" title "-m" message)))
(define (rader-handler sx)
(match text
[((name (sec mil) body) ...)
(for-each
(cut send-notify (npath-of (*chaton-config*)) (ipath-of (*chaton-config*)) <> <>)
name body)]))
(define (main args)
(let-args (cdr args)
((cfile "c|conf=s" => (cut read-config <>))
(help "h|help" => (cut show-help <>)))
(chaton-connect (url-of (*chaton-config*))
(client-of (*chaton-config*)) rader-handler)))
#すぐ終わっちゃう。なぜだ
#show-helpとread-configがなかった
#でもやっぱりすぐ終わっちゃう。
#chaton-connectは、threadをつくって動かして return するだけで、自分は待ったりしないから、呼び出し側がexitしないでおく必要があると思います。
#(while #t)でいいのかな
#てすと
#らむ太が人体解剖図にえらく興味を持っていたので、Human Bodyなんちゃらという身体の仕組みの本を買ってやったらめちゃめちゃ熱心に見てる。
#もちろん説明(英語)は全然わかってないんだけど、絵だけ見て。
#神経の説明のところのシナプスの図解を見て、「おかーさーん、からだの、なかに、くらげが、いるよー、ほらほら」。クラゲに見えたらしい。
#(while #t)だと、スピンしちゃわない?(while #t (thread-yielf!))とか。
#preemptive にscheduleしてくれるなら、cpu timeが無駄になるだけか。
#ワーカースレッドに全部仕事を割り振っちゃう場合、メインスレッドはどう待つべきか、ということですが
#ワーカースレッドへのポインタを握ってるならそれに対してthread-join!するのがわかりやすいかなと。
#別解として、メインスレッドをシグナルハンドリング専用ということにして、無限ループ中でsys-pauseで待つ、というのもありだと思うんですが、最近それをちょっと試みてうまく動かなかったので、もしかするとマルチスレッド+シグナルハンドリング絡みでGaucheにまだバグがあるかも。
#そうか、thread-yield!だと、他の人が全員止まっちゃったらspinしちゃうか。
#帰還しました
#人生初DNF
#Did not finish?
#Yes
#第1関門タイムオーバー
#経験にない、どえらいキツいコースでした
#無理、歯が立たない
#累積高低差だけじゃコースはわかんないですね、直登の連続で、めちゃくちゃ辛かった
#走ろうと思う事自体すごすぎる
#フィニッシュ率ってどのくらいなんですか?
#今日は、雨(みぞれ混じり)強風のコンボで、しかもコースがめちゃめちゃ厳しい設定な上に、運営上の理由で制限時間がキツかったので、30%台じゃないかと言ってました
#普通のレースはもっと高いです
#そんなのフィニッシュするだけですごいですな。
#なんかサーバが重いとおもったらwiliki.cgiが大量に走ってる。なんだこれ。
#こないだの奄美50kmも、斑尾の50kmも、ともに90%台の完走率でしたから
#ここらでも今日は風随分強かったですものね、おつかれさまです
#"T-Mobile Dash Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 320x240; MSNBOT-MOBILE/1.1; +http://search.msn.com/msnbot.htm)" #こいつが集中アクセスかけてきてた。
#mobileだというのにbotとはこれいかに。
#とりあえずIP banした。
#search.msn.com内のIPから来てるよ。設定まちがえて暴走させたのか?
#いや、これのせいだけじゃないな。
#うーん、他のアクセスは分散してるので、やっぱりこいつが集中アクセスしてきたのがきっかけてつまった模様。一時期load averageが250いった。
#02:25PDTくらいから02:40PDTくらいまでバースト的にアクセスに来てそのあとぱたりと止まったから、何かのオペミスかもな。
#異常に重いと思ったらそういう事情でしたか
#昔のLinuxって高負荷時はわりとあっさり落ちてたような覚えがあるんだけれど、いまは結構がんばってますね。
#私のLingrデータのバックアップが入手できました。
#Gauche部屋の全部が入っているはず。これから中身見てみます。
#まだLingrから何も来ません。
#(define (main args)
(let-args (cdr args)
((cfile "c|conf=s" => (cut read-config <>))
(help "h|help" => (cut show-help <>)))
(let1 client (chaton-connect
(url-of (*chaton-config*))
(client-of (*chaton-config*))
rader-handler)
(thread-join! (ref client 'observer-thread)))))
#結局こうしました。