#仕事のスクリプトを C で書いた。なんか楽しい。他チームも似たようなプログラムを Scheme で書いていたが、継続を捕捉したり再帰したり本当に面倒くさい。SEGV は人を癒す。
#仕事のスクリプトを毛筆で書いた。なんか楽しい。他チームはワープロで書いていたが、ソフトのライセンスを揃えたりバージョンを揃えたり本当に面倒くさい。墨の香りは人を癒す。
#まぁスクリプト違いですが(笑)
#: u8vector-xor 一発で決めたので、再帰のさの字も使ってません
#2年半ぶりにGauche-dbd-mysqlをいじった
#些末なテストがひとつ失敗した以外は問題なくテストが通ったのには驚いた(笑)
#何か4.1をサポートするために汚いコードが満載なんだけど、もう5.0以降縛りにしちゃってもいいんじゃないかと思った
#> もう5.0以降縛りにしちゃってもいいんじゃないかと思った
#賛成!
##ハリウッド式の採用って、会社でも有効なんですかね。
##【島国大和】「ハリウッド式」ゲーム制作について考える
#ただ、ハリウッド式っていうは、俳優とかのユニオンがあって初めて成り立つんだという意見も見た事あるんですけど、どうなんでしょうかね。
#ふーむ。Joelの、StackOverflowCareersをハリウッドに例えてるのは、ちょっとハリウッドを単純化しすぎているような気がする。
#確かに、役者の決定というのはものすごく複雑な条件のマッチングだ。条件が複雑すぎるために、casting directorという専門の職種を必要とするくらいだ。この職種は役者の生き字引みたいなもので、どれだけ多くの役者のタイプを頭に入れといて、監督からの要請にしたがってどれだけ候補者を引っ張ってこれるかがポイントとなる。
#本当にJoelが言うように"Developers are not even remotely interchangeable. "であって、best fitな一人を見つけたいのなら、マッチング作業は雇用者がデータベース上のCVを眺めて候補者を見つけられるような話ではない。専業の人間が必要になるほど込み入った話になるはず。
#もうひとつJoelのたとえとハリウッドが違うのは、ハリウッドの契約はプロジェクト毎だってこと。Joelはもっと長期スパンで考えてるんじゃないかな。
#んで、プロジェクト毎に仕事を探さなければならない立場になると、ユニオンの存在は大きいでしょうね。特に業界に入りたい人が多いと、ユニオン無しではどんどん買い叩かれちゃうんで。
#ただ、ユニオンが存在できるのは全体として競争力があるからで (もし映画において、ノンユニオンで必要な才能が全部まかなえるなら、製作会社はわざわざユニオンの人材を使おうとは思わなくなる。ユニオンが力を持ってるのは、才能のある人のほとんどを握っているから)、同じ状況をゲームで作れるかというと難しい気もする。
#ハリウッド映画で主役を張れるような役者でもユニオンには入ってるもんなんですか?
#ユニオンに入ってないとハリウッド映画で主役張れません。
#あーそういうもんなんですか
#まず映画全体としてユニオンと契約するかしないかというのがあって、ユニオンと契約する場合は主要キャストやスタッフはユニオンから雇わないとならないことになってます。
#そこいら辺はミュージシャンとは違うんですねぇ
#で、ユニオンと契約しない場合、ユニオンの人を一切使うことができません (これはユニオンの基本ルールで、ユニオン加入者はノンユニオンの映画に参加してはいけないことになっています)
#ふむふむ
#ユニオンって複数あるんですか?
#例外はインディペンデントの実験的映画や学生の映画で、その場合はユニオンに書類を出せばユニオンの人とノンユニオンの人が一緒にやれます。私が参加する映画はこのパターンですね。
#なるほど
#ユニオンは基本は業界ごとですね。作家なら作家、撮影スタッフなら撮影スタッフ。役者の場合、映画役者はSAGですが、それ以外に舞台中心に活動するユニオンとTV中心に活動するユニオンがあります。
#なるほど
#ハリウッドのユニオンで記憶に新しいのは、脚本家のユニオンのストライキがありましたっけね
#はい。ユニオンの縛りは結構厳しいらしく、ノンユニオンで仕事したのがばれると除名になったりします。なのでストライキを打つとその分野の大部分のプロ仕事人が使えなくなってしまうので、ストライキが有効なんですね。
#日本には役者のユニオンってあるのかなぁ
#声優のユニオンがあるってのは聞いたことがあるのだけど
#役者は一応日本俳優協会がありますが、ハリウッドのような縛りが無いみたいなんで、あまり力を持てないんじゃないでしょうか。
#なるほど
#% svn diff src/vmcall.c
Index: src/vmcall.c
===================================================================
--- src/vmcall.c (revision 6831)
+++ src/vmcall.c (working copy)
@@ -91,7 +91,7 @@
PUSH_ARG(p); \
} else { \
/* 'unfold' rest arg */ \
- CHECK_STACK(reqargs + optargs - argc); \
+ CHECK_STACK(reqargs + optargs - argc + 1); \
for (c=argc; SCM_PAIRP(p) && c<reqargs+optargs; c++) { \
PUSH_ARG(SCM_CAR(p)); \
p = SCM_CDR(p); \
@@ -105,13 +105,13 @@
wna(vm, VAL0, rargc+argc-1, rargc); RETURN_OP(); NEXT; \
} \
POP_ARG(p); /* tail of arglist */ \
- if (argc-1 < reqargs) { \
+ if (rargc > 0) { \
/* 'unfold' rest arg */ \
- CHECK_STACK(reqargs - argc); \
- for (c=argc-1; SCM_PAIRP(p) && c<reqargs; c++) { \
+ CHECK_STACK(rargc); \
+ do { \
PUSH_ARG(SCM_CAR(p)); \
p = SCM_CDR(p); \
- } \
+ } while (--rargc > 0); \
} \
} \
argc = S
#そういえば、これ以前ここで話した変更ですが…
#自分でも忘れてました。
#あ、なんかありましたね。まだ反映してなかったか。これで問題が出る具体的なテストコードってありましたっけ。
#問題はどう起こせるのかよくわからないです。
#CHECK_STACK で一個足りないときに起きる何かがあれば…
#SCM_PAIR(p) が常に真とかは多分テストできないし。
#イ元々が diff 読んでいて見つけたものなので)
#あっそうか。ちょうどスタックの末端ぎりぎりのところで何かしないとならないのか。
#そんじゃパッチだけ入れときます。
#一応
#説明をしておくので、納得だけしてください。最初のCHECK_STACKは、for() のあとの PUSH 分で +1 が必要。
#if (argc - 1 < reqargs) は reqargs == rargc + argc - 1 が成り立つので同じ意味(だけど次のループの意味からしてこっちのほうが多分適当)、
#CHECK_STACK(reqargs - argc) は同じ条件から CHECK_STACK(rargc - 1)と同じだけど、次のループはrargc回回るので一つたりない。
#SCM_PAIR(p)はScm_Length() で rargc を求めているので常に真。do {} while() は比較が一回少なく済む。
#以上です。
#はい納得です。
#ありがとうございます。たまに変なポカをするので、他の人に double check してもらうのは重要。