| 2001/01 20-31 | |
| Last Modified : | 02/01 01:07 |
| Total Access : | |
| Today Access : | |
| Your Access : | COOKIE_TIMES: deprecated in static mode. |
開始して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日でとどいた。
いまだ家の前には雪が積もっている。 暗いときすべってきけんなのだ。
今日が発売日。あちこちでずっと流れっぱなし。 「さあ諸君たちも楽しもうではないか!」 あ、なんか欲しくなったかも。