[Common Lisp] 関数が定義されているか

2010 年 8 月 27 日 コメントはありません

シンボルに対応する関数が定義されているかは fboundp 関数で調べる。

CL-USER> (defun foo (x y) (+ x y))
FOO
CL-USER> (fboundp 'foo)
T
CL-USER> (fboundp 'bar)
NIL
カテゴリー: コンピュータ タグ: ,

[Common Lisp] intern と symbol-name

2010 年 8 月 24 日 コメントはありません

intern は印字名に対応するシンボルを得る関数。

逆に、シンボルの印字名を得るには symbol-name 関数を用いる。

下の concat-symbol は「2つのシンボルの各印字名を連結した印字名をもつシンボル」を返す関数。

(defun concat-symbol (x y)
  (intern (concatenate 'string (symbol-name x) (symbol-name y))))

CL-USER> (concat-symbol 'x 'y)
XY
NIL
カテゴリー: コンピュータ タグ: , ,

[Common Lisp] リストの複製

2010 年 8 月 23 日 コメントはありません

毎回忘れて再発明しそうになるが、Common Lisp にはリストの複製する関数 copy-tree がある。

CL-USER> (let ((lst '(a b c)))
           (eq lst (copy-tree lst)))
NIL
カテゴリー: コンピュータ タグ: ,

[Common Lisp] コマンドライン引数を取得

2010 年 8 月 9 日 コメントはありません

Common Lisp ではコマンドライン引数を取得する方法は処理系依存らしい。

Steel Bank Common Lisp (SBCL) の場合は *posix-argv* に文字列のリストの形で代入されている。

Allegro Common Lisp (ACL) の場合は system パッケージの command-line-arguments 関数で取得できる。

『KMRCLを眺める(184) COMMAND-LINE-ARGUMENTS』
によると、(apropos ‘argv) として ‘argv で関数の説明文を検索すれば処理系毎の方法が見つかることが多いとのこと。

破妖の剣6 鬱金の暁闇6

2010 年 8 月 5 日 コメントはありません

 外伝、聖石と来たときはまた止まる予感がしてたのだけれど、意外と早く出たよう。前回の本編から、1年経ってない。すばらしい。さらに帯にて「まんが化決定」の告知。今度は小島 榊が描くのだろうか。

 破妖の漫画化は今回初めてでなく、厦門潤 作画のものが4冊出ている。コバルト本誌で連載していて、当時幼かった自分も読んでいた。まだ読解力が不足していて、物語の筋は追えてもラスと闇主の関係とかやりとりとか、そういうものがよく分かっていなかったのだが、この漫画で二人の関係の壮絶さを知った気がする。今でもこのシリーズを追っているのはこの漫画によるところが大きいかもしれない。 『紫紺の糸』を漫画化した『深紫絃韻』が特に盛り上がっていて、壮絶な意地の張り合いから闇主が折れる?までがイイ。

 内容は本編7割、番外編3割。番外編はチェリクの幼い頃の話。帯で怒濤の展開とあおっている割にはあまり進んでいるような気がしない。ラエスリールが目覚めたって言うのが大きいんだろうけど、ほとんどそれだけ。ただ、魅了眼の存在、第六の妖主の目論見が少し分かってきた。次はアーゼンターラと藍絲の戦闘がメインのよう。時期については「あまり時間を空けず、第七巻をお届けする予定です」とのこと。

破妖の剣 6 鬱金の暁闇6 (コバルト文庫) 破妖の剣 6 鬱金の暁闇6 (コバルト文庫)
前田 珠子 小島 榊

ファロットの休日 (C・NovelsFantasia か 1-54 クラッシュ・ブレイズ) そして花嫁は恋を知る 黄金の都を興す姫 (コバルト文庫) 伯爵と妖精 永久の想いを旋律にのせて (コバルト文庫) 紅琥珀 破妖の剣外伝 (コバルト文庫) 白と黒のバイレ  踊れ、終演のカンテと共に (角川ビーンズ文庫)
by G-Tools

カテゴリー: タグ:

[SpamAssassin] mbox形式のメールで学習

2010 年 8 月 4 日 コメントはありません

mbox形式で保存されたメールを学習で用いるには、 sa-learn に –mbox オプションを指定する。

% sa-learn --mbox --spam smapfile
Learned tokens from 228 message(s) (228 message(s) examined)
カテゴリー: コンピュータ タグ: , ,

[Subversion] proxy経由でcheckoutする

2010 年 5 月 31 日 コメントはありません

Subversionで、HTTPプロトコルを用いてプロキシ経由でチェックアウトしたい。

What if I’m behind a proxy? – Subversion FAQ
によると、.subversion/servers を編集すればよいよう。

.subversion/servers の先頭に設定の説明があって、

###   http-proxy-host            Proxy host for HTTP connection
###   http-proxy-port            Port number of proxy host service
###   http-proxy-username        Username for auth to proxy service
###   http-proxy-password        Password for auth to proxy service
###   http-proxy-exceptions      List of sites that do not use proxy

ということらしい。

グループというのがあって、接続するサーバごとに設定が変えられるよう。
今回は、サーバ別に設定する必要はないので、global にプロキシの設定を追加した。

#.subversion/servers
[global]
# http-proxy-exceptions = *.exception.com, www.internal-site.org
http-proxy-host = proxy.mynetwork.com
http-proxy-port = proxy_port_num
# http-proxy-username = defaultusername
# http-proxy-password = defaultpassword
...

のように、http-proxy-host、http-proxy-port の行を復帰してプロキシのホスト名、ポート番号を書き込むと、プロキシ経由でチェックアウトするようになった。

カテゴリー: コンピュータ タグ: ,

[FreeBSD] portsを検索

2010 年 5 月 29 日 コメントはありません

ports から目的の port を探すには ports-mgmt/psearch が便利。

% psearch [options] PATTERN [PATTERN...]

とすることで、正規表現 PATTERN で ports 内を検索し、結果をリストアップしてくれる。

デフォルトでは port の名前(name)と短縮説明(short description)を検索するが、-s オプションを付けることで、詳細な説明(long description)内も検索するようになる。

-c オプションでカテゴリを指定。-n オプションでバージョンも含む、その port の正式名称を出力する。

カテゴリー: コンピュータ タグ: , ,

[Cプリプロセッサ] マクロ引数の文字列化

2010 年 5 月 28 日 コメントはありません

C言語のプリプロセッサにおいて、引数付きマクロの引数を文字列化したいときがある。

たとえば、

int variable = 1;
DEBUG_PRINT(variable);

とすると、

printf("%s is %d", "variable", 1);

のように置換されるマクロを定義したい場合。

#define DEBUG_PRINT(x) printf("%s is %d", "x", 1)

としても、

printf("%s is %d", "x", 1);

と出力されてしまい、望む結果が得られない。

このようなときは、引数の文字列化機能を使用する。

引数名の先頭に`#’をつけることで、引数の文字列定数表現を得ることができる。

上の例の場合は次のようにする。

#define DEBUG_PRINT(x) printf("%s is %d",  #x, x)

参考
The C Preprocessor

カテゴリー: コンピュータ タグ: , ,

[FreeBSD] ldap.confの場所

2010 年 5 月 21 日 コメントはありません

ports から pam_ldap や nss_ldap を入れた場合、openldap-client が自動で入る。

pam_ldap 用の ldap.conf.dist が/usr/local/etc にできるので、これを /usr/local/etc/ldap.conf にコピーして設定したが、ldapsearch などに反映されず、嵌った。

man ldap.conf によると、openldap-client の見る ldap.conf の場所は /usr/local/etc/openldap/ldap.conf だった。

要注意。

カテゴリー: コンピュータ タグ: , ,