Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
- 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
今月の一行
- 2005-11-30 [Gauche] 遅延ストリーム
- 2005-11-29 [find] あれこれ
- 2005-11-28 [JavaScript] <や>を<や&ht;に変換する
- 2005-11-25 [Gauche] 特定要素の上げ下げ
- 2005-11-24 [bzip2] 圧縮と展開
- 2005-11-22 [php] コマンドライン実行
- 2005-11-21 [Gauche] Vine Linux 3.2でのGauche-dbd-pgインストール
- 2005-11-18 [Gauche] Vine Linux 3.2でのGauche-dbd-mysqlインストール
- 2005-11-17 [Firefox] 子ウインドウに表示されたエラーメッセージを読む
- 2005-11-16 [Emacs] Syntax Highlight
- 2005-11-15 [linux] メモリの使用状況
- 2005-11-14 [kahua-admin] ワーカープロセスの再起動
- 2005-11-11 [kahua-admin] ワーカープロセスの表示
- 2005-11-10 [gosh] バージョンの表示
- 2005-11-09 [debian] キーボードマップの変更
- 2005-11-08 [df] サイズの概算表示
- 2005-11-07 [ls] 概算のファイルサイズ
- 2005-11-04 [CVS] ChangeLogの自動生成
- 2005-11-02 [CVS] ブランチ
- 2005-11-01 [misc] --full-timeを指定すると...
2005-11-30 [Gauche] 遅延ストリーム
Gauche-0.8.6 には遅延ストリームのライブラリが追加されている. これをつかって,iterate という関数を定義するといろいろ楽しいことができ る.
(use util.stream) (define (iterate f x) (stream-delay (stream-cons x (iterate f (f x)))))
たとえば,無限個(もちろん理屈の上でのはなし)の 1 を要素にもつストリー ム ones とか無限個の 2 を要素のもつストリームとか.
gosh> (define ones (iterate identity 1)) ones gosh> (stream->list (stream-take ones 10)) (1 1 1 1 1 1 1 1 1 1) gosh> (define twoes (stream-map + ones ones)) twoes gosh> (stream->list (stream-take twoes 5)) (2 2 2 2 2)
(iota ∞ n) とか
gosh> (define (iota-oo n) (iterate (cut + 1 <>) n)) iota-oo gosh> (stream->list (stream-take (iota-oo 0) 10)) (0 1 2 3 4 5 6 7 8 9)
iota-oo があれば,すべての素数を含むストリームなんてのも可能です.
(define (sieve pxs)
(let ((p (stream-car pxs))
(xs (stream-cdr pxs)))
(stream-filter (lambda (x) (not (zero? (modulo x p)))) xs)))
(define prims
(stream-map stream-car (iterate sieve (iota-oo 2))))
これで,100番目の素数はというと,(ちなみに 0 番目は 2 )
gosh> (stream-ref prims 0) 2 gosh> (stream-ref prims 1) 3 gosh> (stream-ref prims 100) 547
--nobsun
2005-11-29 [find] あれこれ
- 10日以上更新されていないPerlファイルをリストアップ。
$ find . -name "*.pl" -mtime +10 -print- カレントディレクトリから*.bakをみつけて,削除
$ find . -name "*.bak" --exec rm {} \;-execは、かなり応用が利くので、マスターすべし!--masq
find ってなかなか使い方がおぼえられないんですよねぇ. そんなあなたに(って儂のことか...orz) fuji さんからすばらしいサイト情報をいただいた.
http://www.gnu.org/software/findutils/manual/html_mono/find.html
--nobsun
最近のfindには-lsとか-deleteってあるんだ。
-execは便利なのですが、見つけたパスひとつごとにコマンドが起動されるので、大量のファイルを処理したいときは遅かったりします。なので、xargsも使えるときっと幸せになれます。 $ find ~/ -name '*~' -print0|xargs -0 rm -f とか。なぜ-print0かと言えば、Mac OS Xなどで空白を含んだパスがあると、-printでは思わぬパスが渡ってしまうことがあるからです。
2005-11-28 [JavaScript] <や>を<や&ht;に変換する
標準でそのような関数はJavaScriptには存在しないが、 prototype.jsにはStringの拡張メソッドとしてescapeHTMLというメソッドがある。
escapeHTML: function() {
var div = document.createElement('div');
var text = document.createTextNode(this);
div.appendChild(text);
return div.innerHTML;
},
JavaScriptでのDOMの仕様を知らないと皆目わからないコードだがちゃんと動く。
--yasuyuki
There is no comment.
2005-11-25 [Gauche] 特定要素の上げ下げ
リスト内の特定の要素と,その前あるいは後ろにある要素と入れかえる.
(use srfi-1)
(use srfi-11)
(define (age p ls)
(receive (xs ys) (break p ls)
(cond ((null? xs) ls)
((null? ys) ls)
(else (let-values (((z zs) (car+cdr ys))
((w ws) (car+cdr (reverse xs))))
(append (reverse ws) (list z w) zs))))))
(define (sage p ls)
(receive (xs ys) (break p ls)
(if (null? ys)
ls
(receive (z zs) (car+cdr ys)
(if (null? zs)
ls
(receive (w ws) (car+cdr zs)
(append xs (list w z) ws)))))))
実行してみよう.
gosh> (age (cut = 5 <>) (iota 10)) (0 1 2 3 5 4 6 7 8 9) gosh> (sage (cut = 5 <>) (iota 10)) (0 1 2 3 4 6 5 7 8 9) gosh>
効率をあまり気にしないなら(普通は気にするよなぁ^^;),sage の定義は
(define (sage p ls) (reverse (age p (reverse ls))))
で十分かな...
--nobsun
There is no comment.
2005-11-24 [bzip2] 圧縮と展開
Unix系の環境ではアーカイブファイルは .tar.gz あるいは .tgz という 拡張子をもっていて,tar でまとめたものを gzip で圧縮するというのが 一般的だった.でも,最近では,.tar.bz2 というように,bzip2 で 圧縮してあるものも多くなってきた bzip2 は gzip で圧縮するのに 比較すると,60〜70%ほど圧縮率がよいらしい.
GNU tar と組合せてつかうときは j オプションを使う.
展開は
% tar jxvf hoge.tar.bz2
アーカイブ + 圧縮は
% tar jcvf hoge.tar.bz2 hoge
最後の引数 hoge はディレクトリ. デフォルトでカレントディレクトリにぶちまけるような行儀の悪いアーカイブ ファイルを作らないようにしようね.
--nobsun
There is no comment.
2005-11-22 [php] コマンドライン実行
phpは、コマンドラインから実行できる。
phpコマンドから出力されたHTMLをファイルとしてリダイレクトして、 ブラウザで確認できます。ユニットテストをするだけなら、 Webサーバーは必要なく、phpコマンドとテスティングフレームワークだけで 十分です。
$ php runtest.php > result.html
こうやっといて,result.htmlをブラウザで見る.
--masq
There is no comment.
2005-11-21 [Gauche] Vine Linux 3.2でのGauche-dbd-pgインストール
Vine Linuxで、 Gauche-0.8.6以降にGauche-dbd-pgをインストールする。
まずPostgreSQLをインストールする。
sudo apt-get install postgresql postgresql-devel postgresql-libs postgresql-server
/etc/init.d/postrgesql startでサーバーを起動する。
sudo /etc/inid.d/postgresql start
次にpostgresユーザー権限で、 ログイン名と同じ名前のPostgreSQLユーザー、 ログイン名と同じ名前のデータベースを作成する。
ログイン名がyasuyukiなら以下のようになる。
sudo su - postgres createuser yasuyuki createdb yasuyuki exit
Gauche-dbd-pg最新版を以下からダウンロードする。
http://www.kahua.org/cgi-bin/kahua.fcgi/kahua-web/show/dev/DBI
gauche-packageを使ってインストールする。
sudo gauche-package install Gauche-dbd-pg-0.2.tgz
--yasuyuki
There is no comment.
2005-11-18 [Gauche] Vine Linux 3.2でのGauche-dbd-mysqlインストール
Gauche-0.8.6以降にGauche-dbd-mysqlをインストールする。
まずMySQLをインストールする必要がある。
sudo apt-get install MySQL-client MySQL-devel MySQL-server MySQL-shared
Gauche-dbd-mysql最新版を以下からダウンロードする。
http://www.kahua.org/cgi-bin/kahua.fcgi/kahua-web/show/dev/DBI
gauche-packageを使ってインストールしようとすると、 リンクオプション-lzが使えないというエラー。
sudo gauche-package install Gauche-dbd-mysql-0.2.tgz
checking for gosh... /usr/local/bin/gosh
checking for gauche-config... /usr/local/bin/gauche-config
checking for gauche-package... /usr/local/bin/gauche-package
checking for gauche-install... /usr/local/bin/gauche-install
checking for gauche-cesconv... /usr/local/bin/gauche-cesconv
checking for mysql_config... /usr/bin/mysql_config
checking checking mysql client library... ok
configure: creating Gauche-dbd-mysql.gpd
configure: creating ./config.status
config.status: creating Makefile
/usr/local/bin/gauche-package compile --verbose \
--cflags="-I/usr/include/mysql -pipe -march=i386 -mcpu=i686" \
--libs="-L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm" \
dbd_mysql dbd_mysql.c dbd_mysqllib.stub
'/usr/local/lib/gauche/0.8.6/i686-pc-linux-gnu/gauche-config' --fixup-extension 'dbd_mysql'
'gcc' -c -I'/usr/local/lib/gauche/0.8.6/include' -I/usr/include/mysql -pipe -march=i386 -mcpu=i686 -fPIC -o 'dbd_mysql_head.o' 'dbd_mysql_head.c'
'gcc' -c -I'/usr/local/lib/gauche/0.8.6/include' -I/usr/include/mysql -pipe -march=i386 -mcpu=i686 -fPIC -o 'dbd_mysql.o' 'dbd_mysql.c'
'/usr/local/lib/gauche/0.8.6/i686-pc-linux-gnu/gosh' genstub dbd_mysqllib.stub
'gcc' -c -I'/usr/local/lib/gauche/0.8.6/include' -I/usr/include/mysql -pipe -march=i386 -mcpu=i686 -fPIC -o 'dbd_mysqllib.o' 'dbd_mysqllib.c'
'gcc' -c -I'/usr/local/lib/gauche/0.8.6/include' -I/usr/include/mysql -pipe -march=i386 -mcpu=i686 -fPIC -o 'dbd_mysql_tail.o' 'dbd_mysql_tail.c'
'gcc' -L'/usr/local/lib/gauche/0.8.6/i686-pc-linux-gnu' -shared -o dbd_mysql.so 'dbd_mysql_head.o' 'dbd_mysql.o' 'dbd_mysqllib.o' 'dbd_mysql_tail.o' -lgauche -ldl -lcrypt -lutil -lm -lpthread -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm
/usr/bin/ld: cannot find -lz
collect2: ld はステータス 1 で終了しました
/usr/local/bin/gauche-package compile --verbose \
--cflags="-I/usr/include/mysql -pipe -march=i386 -mcpu=i686" \
--libs="-L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm" \
dbd_mysql dbd_mysql.c dbd_mysqllib.stub
'/usr/local/lib/gauche/0.8.6/i686-pc-linux-gnu/gauche-config' --fixup-extension 'dbd_mysql'
'gcc' -c -I'/usr/local/lib/gauche/0.8.6/include' -I/usr/include/mysql -pipe -march=i386 -mcpu=i686 -fPIC -o 'dbd_mysql_head.o' 'dbd_mysql_head.c'
'gcc' -c -I'/usr/local/lib/gauche/0.8.6/include' -I/usr/include/mysql -pipe -march=i386 -mcpu=i686 -fPIC -o 'dbd_mysql_tail.o' 'dbd_mysql_tail.c'
'gcc' -L'/usr/local/lib/gauche/0.8.6/i686-pc-linux-gnu' -shared -o dbd_mysql.so 'dbd_mysql_head.o' 'dbd_mysql.o' 'dbd_mysqllib.o' 'dbd_mysql_tail.o' -lgauche -ldl -lcrypt -lutil -lm -lpthread -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm
/usr/bin/ld: cannot find -lz
collect2: ld はステータス 1 で終了しました
/usr/local/bin/gosh -I. test.scm > test.log
Testing dbd.mysql ... *** ERROR: Compile Error: can't find dlopen-able module "dbd_mysql"
"./test.scm":12:(use dbd.mysql)
Stack Trace:
_______________________________________
0 (dynamic-load "dbd_mysql")
At line 42 of "./dbd/mysql.scm"
gmake: *** [check] エラー 70
*** ERROR: command execution failed: cd "./Gauche-dbd-mysql-0.2"; "/usr/bin/gmake" check
Stack Trace:
_______________________________________
0 (make-check config dir)
At line 159 of "/usr/local/share/gauche/0.8.6/lib/gauche/package/build.scm"
1 (usage)
At line 99 of "/usr/local/bin/gauche-package"
2 (usage)
At line 99 of "/usr/local/bin/gauche-package"
エラーの原因はzlib-develがインストールされていないから。
sudo apt-get install zlib-devel
これでインストールできるようになる。
--yasuyuki
There is no comment.
2005-11-17 [Firefox] 子ウインドウに表示されたエラーメッセージを読む
JavaScriptなどでリサイズできない子ウインドウを表示したとき、 サーバーエラーが発生してもエラーメッセージは一部しか表示できない。
こんなときは子ウインドウ上で右クリックし、 コンテキストメニューから[ページのソースを表示]を選ぶとすべてのエラーメッセージが読める。
--yasuyuki
There is no comment.
2005-11-16 [Emacs] Syntax Highlight
Emacsでプログラムコードのキーワードなどに色をつけるのは、 Options->Syntax HighlightingをONにする。
NetBSDだとデフォルトでOffになってる。 知らなかった。orz
--cut-sea
There is no comment.
2005-11-15 [linux] メモリの使用状況
/proc/meminfo 現在のメモリー使用量やキャシュ使用量などのデータがリアルタイムに 書き込まれている。
total: used: free: shared: buffers: cached: Mem: 658882560 651014144 7868416 0 84017152 68845568 Swap: 1339260928 1978368 1337282560 MemTotal: 643440 kB MemFree: 7684 kB MemShared: 0 kB Buffers: 82048 kB Cached: 66420 kB SwapCached: 812 kB Active: 90296 kB Inactive: 59168 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 643440 kB LowFree: 7684 kB SwapTotal: 1307872 kB SwapFree: 1305940 kB
--masq
ノーマルファイルじゃないので、書き込まれていると言うと語弊があるような。透けて見えるって感じかしら。
なるほど。透けて見えるって表現はいいですね。
2005-11-14 [kahua-admin] ワーカープロセスの再起動
kahua-admin restart 【KahuaプロセスID】 でワーカープロセスを再起動できる。
% kahua-admin restart 9
("jg9:19e99")
--masq
There is no comment.
2005-11-11 [kahua-admin] ワーカープロセスの表示
kahua-admin ls で Kahuaプロセスがリストされる。
$ kahua-admin ls wno pid type since wid 3 21033 kamehameha Nov 2 22:39 g89:59ovs 9 25209 kagoiri-musume Nov 3 21:52 jg9:19e99
--masq
There is no comment.
2005-11-10 [gosh] バージョンの表示
gosh -V でバージョンが確認できる
% gosh -V Gauche scheme interpreter, version 0.8.6_pre4 [euc-jp,pthreads]
--masq
バージョン番号だけがほしければ、 % gauche-config -V 0.8.6
ちょっと無理矢理だけど gosh -E'print (gauche-version)' -Eexit とか… gosh -E'print (gauche-character-encoding)' -Eexit は使えるかも
2005-11-09 [debian] キーボードマップの変更
kbdconfigでキーボードマップが変更できる。
たとえば、106に変更したい場合は、「Select keymap from full list」を選択して、 「pc / qwerty / Japanese / Standard / Standard」を選択すればOK。
--masq
loadkeysも便利です。 loadkeys dvorak とか。 bash_loginとbash_logoutにloadkeysを仕掛けておくと、 ユーザーごとにキー配列を違うものにできます。
.Xmodmapもお勧めです。 keycode 208 = Super_R clear mod4 add mod4 = Super_R で「カタカナ」がSuper修飾キーに。 keycode調べるにはxevですね。
ふむふむ。 クライアント側のセッティングは、いろいろな方法があって、悩みますなぁ。
2005-11-08 [df] サイズの概算表示
dfも-hを付けると、サイズが概算形式になる。
$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 255912 53374 188885 23% / tmpfs 128428 0 128428 0% /dev/shm /dev/hda9 3557744 113660 3263356 4% /home /dev/hda8 286026 8242 262524 4% /tmp /dev/hda5 3470776 413456 2881012 13% /usr /dev/hda6 1663524 315572 1259195 21% /var $ df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 250M 53M 185M 23% / tmpfs 126M 0 126M 0% /dev/shm /dev/hda9 3.4G 111M 3.2G 4% /home /dev/hda8 280M 8.1M 257M 4% /tmp /dev/hda5 3.4G 404M 2.8G 13% /usr /dev/hda6 1.6G 309M 1.3G 21% /var
--masq
There is no comment.
2005-11-07 [ls] 概算のファイルサイズ
-h オプションを追加すると、ファイルサイズが概算形式になる。
% ls -l drwxr-xr-x 5 root root 4096 2005-07-31 01:18 xoops-2.0.11-JP -rw-r--r-- 1 root staff 1349219 2005-08-02 17:35 xoops-2.0.11-JP.tar.gz % ls -lh drwxr-xr-x 5 root root 4.0K 2005-07-31 01:18 xoops-2.0.11-JP -rw-r--r-- 1 root staff 1.3M 2005-08-02 17:35 xoops-2.0.11-JP.tar.gz
--masq
There is no comment.
2005-11-04 [CVS] ChangeLogの自動生成
ChangeLogを全く書いていなくてCVSのコミットログから自動生成したいとき、 cvs2cl.plというツールが公開されている。
http://www.red-bean.com/cvs2cl/
--yasuyuki
とはいえ。ChangeLogは自分のためにも、共同開発者のためにも、commit時に書くようにしましょう。
2005-11-02 [CVS] ブランチ
project 開発のメインストリームから離れて実験的な実装を試したいときには, ブランチを作成するとよい.メインストリームで新しいバージョンを リリース(リリースタグは release1_0 とする)したタイミングがいいだろう.
% cvs rtag -r release1_0 -b branch1_0 project
--nobsun
There is no comment.
2005-11-01 [misc] --full-timeを指定すると...
$ ls -l xxx -rw-r--r-- 1 fuji user 2047 10月 9 17:42 xxx
と時刻が hh:mm までしか出ないのだが、--full-time を指定すると
$ ls --full-time xxx -rw-r--r-- 1 fuji user 2047 2005-10-09 17:42:57.000000000 +0900 xxx
となって、秒以下まで分かる。
--fuji
BSD系のlsだと--full-timeというのはなくて、-Tで秒まで表示できます。 $ls -lT -rw-r--r-- 1 user group 0 Nov 2 16:25:52 2005 hoge
There is no comment.