«前月 最新 翌月» 追記
2002|09|
2003|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|10|11|
2008|01|

ひ日誌


2004-12-03  ( ja -> en )

_ ロボットに教えられてリンク修正

<URL:http://www.fobj.com/rubycocoa/doc/trysamples.en.html> の中の 'Dr. Dobbs Journal, May 2002'のリンクがちゃうというメール(ロボットが送ったらしい)をスパムの山の中から発見。直した。 ひさしぶりに rubycocoa を cvs commit*1。緊張した(汗

*1  docsrcだが


2004-12-05  ( ja -> en )

_ VineLinux を 3.1 に更新

# /etc/apt/sources.list を編集 (3.0 -> 3.1)
apt-get update
apt-get dist-upgrade
# /etc 下の設定をいくつか修正

emacs で aspell のエラー。/etc/emacs-21.3/site-start.d に aspell の設定があるのに aspell-el が入ってない。

apt-get install aspell-el

kernel 関連を更新。

なぜか emacs の日本語表示の行間が広くなってしまった。読みやすいのでよしとする。


2004-12-07  ( ja -> en )

_ [rubycocoa] c2.com に RubyCocoa のページ

<URL:http://c2.com/cgi/wiki?RubyCocoa> ができてた。


2004-12-23  ( ja -> en )

_ [lisp] On Lisp と SCIP の texinfo 版を発見

とりあえず置いておく。これでひと安心。

_ [emacs][lisp] mapcar の引数の順を入れ換えるマクロを書いてみた

ついでに info の置き場所を整理。自分で拾ってきたりしたやつは ~/share/info 以下に置くことにした。Info-additional-directory-list にパスを追加。気分で:

(add-hook 'Info-mode-hook
          (lambda ()
            (setq Info-additional-directory-list
                  (append (mapcar (lambda (i) 
                                    (concat (getenv "HOME") i))
                                  (list "/share/info/"
                                        "/share/info/emacs/"))
                          Info-additional-directory-list))))

のように書いてみたがなんだか汚い。いまだに、リストにパスなどを追加するときの定石の書き方、というほどでもないが、確立できていない。そこで思い立ちマクロを書いてみた。初めての elisp マクロ:

(defmacro list-map (lst itm &rest body)
  `(mapcar (lambda ,itm ,@body) ,lst))

ちゃんと調べず Common Lisp のように書いてみたが:

(list-map '(1 2 3) (i)
  (message "hoge")
  (* 2 i))
  => (2 4 6)

elisp でも動いた。ひょっとすると知らぬ間に (require 'cl) になってたのかもしれない。

(add-hook 'Info-mode-hook
          (lambda ()
            (setq Info-additional-directory-list
                  (append (list-map '("/share/info/" 
                                      "/share/info/emacs/") (i)
                            (concat (getenv "HOME") i))
                          Info-additional-directory-list))))

やはり。こっちの上っ面の方が先のものよりも好みのようだ。body部が少ないうちは、どっちでもそんなに違わないのだが...

_ [lisp] gauche の object-apply でメッセージ伝達モデル

(define-method object-apply ((rcv <object>) 
                             (msg <generic>) . args)
  (apply msg (cons rcv args)))

と定義しておく。

(define-class point ()
  ((x :init-value 0)
   (y :init-value 0)))

(define-method move! ((@self point) dx dy)
  (inc! (slot-ref @self 'x) dx)
  (inc! (slot-ref @self 'y) dy))

(define-method move2! ((@self point) dx dy)
  (move! @self dx dy)
  (move! @self dx dy))

(define-method inspect ((@self point) . args)
  (format (if (null? args) #f (car args))
          "[point ~a ~a]"
          (slot-ref @self 'x)
          (slot-ref @self 'y)))

のように定義したクラスが:

(define o (point make))
(o inspect)
(o move! 2 3)
(o move2! 2 3)

のように使える。ついでに、上の point クラスの定義を:

(class point ()

  (accessor (x :init-value 0)
            (y :init-value 0))

  (def move! (dx dy)
     (inc! @x dx)
     (inc! @y dy))

  (def move2! (dx dy)
     (move! @self dx dy)
     (move! @self dx dy))

  (def inspect args
    (format (if (null? args) #f (car args))
            "[point ~a ~a]" @x @y)))

のような雰囲気に書けるマクロが欲しい。書けるのだろうか?今のところ見当がつかん。「素直に Ruby 使え」という声が聞こえてきそう...

本日のツッコミ(全2件) [ツッコミを入れる]

_ kimuraw [知ってるかもしれませんが、野田さんという方が「On Lisp」の邦訳を公開していますね。http://user.ec..]

_ hisa [もちろん知ってまっせ。最初の方、ボトムアッププログラミングのあたりを読んだ感想としては、結局のところアジャイルと同じ..]


2004-12-28  ( ja -> en )

_ [lisp] MIT/GNU Scheme を入れてみた

MIT/GNU Scheme

入れたみただけ。ソースから作ろうとドキュメントどおりに作るができない。面倒なのでバイナリを入れた。それにしてもやたらとでかい。何か実用的なコードを書きたいのだが、単なるSchemeコレクタになりつつあるような。

次は「CやC++など従来からある言語との共存を念頭に置いた」という文言(プログラミング言語Schemeより)が気になる Bigloo でも試してみるかな。C++のおかげで生産性が1/100くらいに低下してるような気がしてるところを、一気に回復できないものか。既存のC++のコードの一部(修正・追加など)を Scheme などの LISP 族で書きたい。というのが目的。リンクすればシンプルに使えるようなものがいい。


2004-12-29  ( ja -> en )

_ [lisp] Bigloo のインストールメモ

きのうの続き。これは MIT/GNU Scheme 以上にでかい。spec ファイルがあったので RPM 化しようとしばしホゲった。が、うまくいかないので make install することに...

Bigloo本体を作って /usr/local/bigloo にインストール:

tar zxf bigloo2.6e.tar.gz
cd bigloo2.6e
./configure --prefix=/usr/local/bigloo --bee=full
make
make DESTDIR=/tmp/bigloo install   # インストールされる内容を確認
sudo make install                  # DESTDIR=/usr/local/bigloo

都合がいいようにリンクなど:

cd /usr/local/bin
for i in ../bigloo/bin/*; do sudo ln -s $i; done
cd /usr/local/lib
for i in ../bigloo/lib/*.so; do sudo ln -s $i; done
cd /usr/local/man/man1
sudo ln -s ../../bigloo/man/man1/bigloo.1
cd ~/share/info
cp /usr/local/bigloo/info/bigloo*
for i in bigloo*; do /sbin/install-info $i dir; done

BEE (Emacs用の開発環境らしい?)を作ってインストール:

cd src/bigloo2.6e
make compile-bee
make DESTDIR=/tmp/bigloo install-bee  # インストール内容を確認
make install-bee                      # DESTDIR=/usr/local/bigloo

ふたたび都合がいいようにリンクなど:

cd /usr/local/bin
for i in ../bigloo/bin/*; do \
  test ! -f `basename $i` && sudo ln -s $i; done
cd /usr/local/lib
for i in ../bigloo/lib/*.so; do \
   test ! -f `basename $i` && sudo ln -s $i; done

なんかでかいもんを入れてしまったが、さてどうやって使うんだろうか?

_ [lisp] Enjoy Gauche

Enjoy Gauche

いっしょに Gauche プログラミングを楽しみましょう、とのこと。期待。


2004-12-30  ( ja -> en )

_ [lisp] TinyScheme

TinyScheme

これはとてもコンパクト。strip なしで 110K、strip後で 45K程度。 libc のみで動く。既存のC++コードに組み込んじゃうのも簡単そう。

_ [lisp] 日本語ハンディースキーム

日本語ハンディースキーム

HandyScheme は Mini-scheme、TinyScheme をルーツとした、windows 98/SE/ME/XP で動作する超コンパクトな SCHEME言語(LISP方言,SJIS対応) 処理系です。 HandyScheme にはいわゆる対話環境はなく、GUIを備えたスクリプト言語として動作します。 (中略) また、完成した便利なツールは 単独の 【EXEファイル】 として自由に再配布することも可能です。

windows用だがこれもおもしろそう。TinyScheme はここからたどりついた。でもソースはないみたい。

Scheme コレクタ状態が加速してる。うーむ。


2004-12-31  ( ja -> en )

_ マツケンサンパ

FMを聴いてたらマツケン登場。マツケンサンバ作ったのは小西康陽か?と微妙に納得しつつ笑った。けど、どうも単にリミックスしただけらしい。そういうことならたいへん真っ当。残念。

_ [lisp] Chicken Scheme-to-C compiler

Chicken Scheme-to-C compiler

しばし tinyscheme をいじったりドキュメント眺めたり。ドキュメントはややわかりにくい。が、何しろこじんまりしてるので、適当にいじりやすいのはうれしい。

さて、きょうの Scheme コレクションは Chicken 1.86。これはでかい。configure すると chicken.spec ができるので RPM 化(VineLinux 3.1)してみることに。そのままだとエラーになるので以下のように修正:

$ ./configure 

--- SPECS/chicken.spec.orig	2004-12-31 14:48:37.000000000 +0900
+++ SPECS/chicken.spec	2004-12-31 14:53:03.000000000 +0900
@@ -3,3 +3,3 @@
 Version: 1.86
-Release: 1
+Release: 1_hisa
 URL: http://www.call-with-current-continuation.org/chicken.html
@@ -21,3 +21,3 @@
 %setup
-./configure --prefix=%{_prefix} --mandir=%{_mandir}
+./configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir}

@@ -28,3 +28,5 @@
 rm -rf $RPM_BUILD_ROOT
-make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} install
+make prefix=$RPM_BUILD_ROOT%{_prefix} \
+     mandir=$RPM_BUILD_ROOT%{_mandir} \
+     infodir=$RPM_BUILD_ROOT%{_infodir} install

@@ -40,3 +42,2 @@
 %dir %{_libdir}/chicken
-%(_libdir)/chicken/*
 %dir %{_datadir}/chicken
@@ -44,4 +45,17 @@
 %{_mandir}/*/*
+%{_infodir}/*
+%doc ChangeLog ChangeLog.0-20040412 LICENSE README INSTALL format.txt chicken.html FAQ.html
+
+%post
+/sbin/install-info --info-dir=%{_infodir} %{_infodir}/chicken.info
+
+%preun
+if [ $1 = 0 ] ;then
+  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/chicken.info
+fi

 %changelog
+* Fri Dec 31 2004 FUJIMOTO Hisa
+- modified for VineLinux
+
 * Thu Aug 19 2004 Felix Winkelmann

_ Pink Floyd のライブ

FM で Pink Floyd の昔のライブやってる:

  • IF
  • ATOM HEART MOTHER
  • ONE OF THESE DAYS
  • ECHOES

選曲もいい。録音しておきたかった。初めて気づいたが ECHOES の歌のところハモってる。

本日のツッコミ(全1件) [ツッコミを入れる]

_ マツケンサンパ [マツケンパ                                                 ..]


«前月 最新 翌月» 追記