| 2001/01 ALL | |
| Last Modified : | 02/01 01:07 |
| Total Access : | |
| Today Access : | |
| Your Access : | COOKIE_TIMES: deprecated in static mode. |
いまいち。なんか背景の合成がめだつなあ。
ああタッキーの部屋の机ほしいなー。
いきなり主役は自分の境遇が演技と受け止めている、初回でつぎのことをした。
キャラクターは濃いけど全部みわたせるようになっている。
不思議な存在(深田恭子や窪塚洋介)があるのは野島伸司脚本らしい。
窪塚洋介はいつものキャラクターでGOOD。
最後は死んじゃうのかな。
woody、Jirai、VineSeed、FreeBSD-CURRENTの約1カ月ぶりのアップデートが終わった。 そろそろwoodyやめてsidにしようかな。
休みの間にXP本を読んだ。
さっそくTest First、by IntensionとEverything That Could Possibly Breakを
試した。テストを先に書きそのテストを満たすようにコードを作っていくのは
「アプリケーションモデル(ビジネスロジック)」のようなものを作る場合には
とてもいい。
逆にServletやTaglibのようなものは気軽につかえないので
あまりうれしくない。ServletのテストにはJ2EEUnitなるものもあるが、
「機能作成のためのテスト」を作るには重すぎリズムが作れなかった。
もっと軽いテストフレームワークがほしい。
そう、「使い方を示せるテスト」が書けるのが必要だろう。
念願のマキァヴェッリ全集の1巻を買った。6000円近くもした。 1巻は「戦争論」、「戦争の技術」、「カストルッチョ・カストラカーニ伝」だ。 2巻は「ディスコルシ」でこれもほしいな。 まだ15ページまでしかよんでないけど。
「バージョン管理システム(CVS)の導入と活用」など数冊の本を 買いました。とくにスペンサー・ジョンソンの「チーズはどこへ消えた?」が 良かった。変化とその参加者についての寓話とその寓話をもとにしたディスカッション でできている。この本は
を忘れていないかを気づかせてくれる。変化を注目するという点ではXPにも 役立つだろう。
昨日、XPで技術取得するのはどうすればいいか、というので疑問を持ったが
一つの解として「Managerが学習しProgrammerに伝える」というのが考えられる。
XPではManagerは製品の技術面、ビジネス面双方に決定権を持たない。
だから技術取得の時間はManagerの役割の一つに割り当てられる。
その場合、Managerはコーチとして技術取得し、必要に応じてProgrammerに紹介する。
そしてProgrammerはその技術をつかったりtaskにしてStoryに組み込んだりできる。
もちろんこうするにはManagerは技術に強い必要があるだろう。
逆に技術面で弱いManagerの場合は外部から人を引っ張るしかないだろう。
今年は21世紀の初めの年だ。なにをやっても「21世紀になったんだから」という 理由で許されるような気がする。
めざましが壊れたので新しいのを買った。
いままでめざましのUIがアラームONとアラームストップが同じ
部分でできるやつだったが、いざ買いにいってみるとそういうのがあまりなかった。
多かったのはうえにある押すのは単にアラームストップだけでスイッチは裏などに
別にある、というやつだった。うまれてからいままで同じUIだったので違うUIを
使う気にはなれなかったので、少ない選択肢の中一番押した感じがつよいやつを
選んだ。これはメロディが4種類あるのも気に入っている。
とはいえ一番重要なのは「目が覚める」ことである。さて明日起きれるのだろうか。
今日はとりわけ寒かった。 かぜをひかないようにしないとな。
10巻を借りる。ギンガナム一派が登場。3話目でオープニングテーマが変わる。
後半しか見れなかった。よくわからなかった。
woodyからsidに変えました。glibc-2.2.1になった。
ゆでる前にたまごに薄皮がやぶれないようにたたいてひびをいれてゆでるだけ。 薄皮と殻の間に水がはいり薄皮がふやけるのでむけやすくなるのだ。
田中くんがビルから飛びおりた。あれで中断されるとすごい気になる。 来週は踊る大走査線?
津田沼の千葉工大のすぐ南にあるラーメン屋必勝軒で食べてきました。 開店午後6:30にいったらすでに並んでいて30分まちでやっと入れた。 メニューは
です。普通でも2玉で大盛りは何玉でもいいみたいです。
ぼくはチャーシュー大盛りで3玉を食べました。
正直いっぱいいっぱいでした。ほんまにふつうの3玉でした。
大盛りは普通の3倍ははいりそうなうつわででてきます。
チャーシューメンだとぶ厚い
100グラムくらいのが3枚はいっていました。
スープは魚系のあじがしました。麺も肉もすべて手作りのようす。
みせは15席でとてもいいかんじでした。
かべにコートかけはあるし、ジャズがながれています。
なによりも店長がとてもあかるくてかんじのいいかたでした。
SoftwareDesign誌2月号のPacific Connectionより。
著者はCalderaの副社長にインタビューしている。
その記事で「しかしどちらもマイナーブランドですから、はたして目に見えた
合併効果はあるのでしょうか。」と尋ねている。きちんと答えてくれている。
日本ではインタビューアーはまずそんなふうにきかないし、
尋ねてもきちんと答えてくれないだろうな。
開始して1年、トータル4MBを越えた。
さて、どうしたものか。。。
イメージなんてぜんぜんのせていないのにこれじゃ
ぜんぜんたりんぞ。
ほかのひとはどうしているんだろう。。。
やー、雪が降ってつもってるよん。
まだ昨日の雪がつもっている。
外出たくないしひまなので久しぶりに知識の再確認をした。
CVSはtag付け、マージの練習。
LaTeXはhere.sty、miscのlisting、eclbkbox.styのbreakbox、
eclclass.styを使って書いた。
「スタイルファイルのページ」
参考。
elispは関数を書く。これは全インデントをする関数。
(defun indent-all ()
(interactive)
(setq my-current-line (count-lines (point-min) (point)))
(setq my-current-column (current-column))
(goto-char (point-min))
(while (not (eobp))
(indent-according-to-mode)
(forward-line 1))
(goto-char (point-min))
(forward-line (- my-current-line 1))
(move-to-column my-current-column))
これはJUnitのテンプレートを入れる関数。
(defun junit-test-template ()
(interactive)
(setq my-test-class-name (read-string "Input TestClass name: "))
(while (eq (length my-test-class-name) 0)
(setq my-test-class-name (read-string "Input TestClass name again: ")))
(setq my-current-point (point))
(insert "import junit.framework.*;\n")
(insert "\n")
(insert "public class @CLASS@ extends TestCase {\n")
(insert " \n")
(insert " public testEmpty() {\n")
(insert " ;\n")
(insert " }\n")
(insert " \n")
(insert " public setUp() {\n")
(insert " ;\n")
(insert " }\n")
(insert " \n")
(insert " public tearDown() {\n")
(insert " ;\n")
(insert " }\n")
(insert " \n")
(insert " public static Test suite() {\n")
(insert " return new TestSuite(@CLASS@.class);\n")
(insert " }\n")
(insert " \n")
(insert " public @CLASS@(String name) {\n")
(insert " super(name);\n")
(insert " }\n")
(insert "}\n")
(goto-char my-current-point)
(while (search-forward "@CLASS@" nil t)
(replace-match my-test-class-name t))
(goto-char my-current-point))
これだけで一応基本をおさえているはず。
ブッシュ氏が新大統領になった。
結局クリントンの訴訟は全部終わることになった。
本来なら新大統領が弾劾すべきだが、僅差のために何もできなくなった。
さて最初の行動はなにになるだろうか。
cvsをJavaプロジェクトにあうようにカスタマイズする方法。
$ cvs init $ cvs co CVSROOT $ cd CVSROOT $ echo '*.class' >> cvsignore $ cvs add cvsignore $ echo '*.jar '-k"'b'" >> cvswrappers $ echo '*.war '-k"'b'" >> cvswrappers $ echo '*.jpg '-k"'b'" >> cvswrappers $ echo '*.png '-k"'b'" >> cvswrappers $ cvs ci -m 'For Java Project enhancement.' $ cd .. $ cvs rel -d CVSROOT
この意味は
ちなみにcvs up -r VERSIONで戻した場合Sticky TAGがつくので
一度cvs ci -AとしてSticky TAGを外してからcvs ciする必要があります。
こんどはcc-modeのカスタマイズです。 まずインデントをスペースで埋める方法です。
(add-hook 'c-mode-common-hook
(function (lambda () (setq indent-tabs-mode nil))))
つぎはEnter改行ですぐインデントした位置にカーソルを置く方法 (\C-jと同じ)。
(add-hook 'c-mode-common-hook
(function (lambda () (define-key c-mode-base-map
"\C-m"
'reindent-then-newline-and-indent))))
c-mode-common-hookはjava-mode、c-mode、objc-mode、c++-mode、idl-mode、
pike-modeなどで共通に使うhookです。そこにadd-hookで関数を追加しておくと
そのモードになったときに登録したhook関数がよびだされます。
c-mode-base-mapはそれらのモードで共通に使うためのキーマップです。
XPをLyeeなんぞと同類に見られてしまった。
そやつはプログラマーではないのだが、それでもいやなかんじだ。
Lyeeなんぞ投資家をだまくらかす要素しかないが、XPはプログラムに
恩恵をあたえてくれるものだ。
まずXPはWebで自由に情報をしいれること使うことができ書籍も出ている。
一方Lyeeは独占技術(技術か?)だしあまつさえ特許を取っている
(これは投資家にはうけるけどプログラムを作るほうにはぜんぜん歓迎されない)。
XPはさらにひろまる傾向にあるのに対し、Lyeeは誰も使わなくなるだろう。
内容もLyeeは簡単にいうと仕様を記述しそこから実装をつくるというものだ。
この「仕様」がくせものでこれをさいしょからきちんと書ける人間はとっても少ない。
さらにそれができる人はそんなわけのわからないものをつかわずに
ずっとシンプルできれいなプログラムを作れるのである。
つまり、Lyeeはプログラムを書かない人には使えないし、
仕様をきっちり書けるひとはLyeeなんぞいらないのだ。
XPは口語のストーリーを中心にプログラムに肉づけしていくものだ。
ストーリーを実装していくうちにチームは認識をたかめ、技術もあげていく。
テスト中心でプログラムをつくり、必要になったときにその仕様を表現する
テストを書いていき、そのテストが通るようにコードを実装する。
つまり、プログラムは常に存在し、それが徐々に仕様、機能とも(そしてチームも)
にエンハンスされていくものだ。
いま、ソフトウェア開発に必要なのはすばやく高品質に動くものを開発すること、
それと開発者を中心にもってくることだ。
XPはそれが目標に入っている。LyeeはLyee自体がかわいいだけでプログラムや
開発者のことはその下になる。そんなものが世の中を席捲することなど
まずありえない。
cでオブジェクトファイルを作ってそれをSWIGで使ってみる。 swig-rubyを使った。
$ jed sample.c # ライブラリのソースを書く $ gcc -c sample.c $ gcc -shared -o libsample.so sample.o $ swig -ruby sample.c # デフォルトでモジュール名がSwigを作る $ gcc -c sample_wrap.c -I/usr/lib/ruby/1.6/i686-linux $ gcc -shared -o swig.so -L. -lsample $ jed sample.rb # つかうためのrubyコードを書く $ LD_LIBRARY_PATH=. ruby sample.rb 0 1
sample.cは
static int count = 0;
int get() {return count;}
void inc() {++count;}
coid set(int aCount) {count = aCount;}
sample.rbは
require 'swig' # swig.soをロード p Swig.get Swig.inc p Swig.get
惹かれる内容はなかった。
ためしにAmazon.co.jpで頼んだ本が今日付いた。 注文から発送まで2日、到着まで1日の計3日でとどいた。
いまだ家の前には雪が積もっている。 暗いときすべってきけんなのだ。
今日が発売日。あちこちでずっと流れっぱなし。 「さあ諸君たちも楽しもうではないか!」 あ、なんか欲しくなったかも。