2009年5月28日木曜日

てすと

google-code-prettifyなるものを導入してみたのでテスト.

;;;Hello,World
(defun hello ()
(format t "Hello,World!")) ;出力


/* Hello,World */
int main(void)
{
printf("Hello,World!"); //出力
return 0;
}

2009年5月27日水曜日

本日の酒(2009/5/27)

今日は親戚から頂いた日本酒を飲みました.

・越の柏露 純米吟醸(白露酒造株式会社)

・古志 純米吟醸(柏露酒造株式会社)

いろいろ間違えてたので修正.酔った勢いで書くとこんなもんです.

2009年5月23日土曜日

cl-ncurses

cl-ncursesを使ってみましたが,どうも日本語を表示できないようなので,読み込むライブラリをlibncursesからlibncurseswに変更してみました.
一応日本語の表示はできたので,この状態でいろいろ試してみようと思います.

2009年5月21日木曜日

田島屋酒店@金沢文庫

金沢文庫駅前にある田島屋酒店にて,以下の日本酒を購入してきました.
・菊姫 山廃仕込純米酒(菊姫合資会社)1800ml
・黒龍 特選吟醸(黒龍酒造)720ml

さて,今夜はどちらを飲もうか.

@サイゼリア

大学の帰りにサイゼリアで飲酒.
4人でワインのボトルを2本空けました.ワインの名前はおぼえていられません.

2009年5月19日火曜日

HUB@八王子

今日(すでに昨日ですが)は八王子のHUBで飲んできました.
酒:グレンリベット(ウィスキー),アブサン,天国への階段
つまみ:チョコレート

せっかく始めたブログが飲酒履歴になってきたと思う今日この頃.
日々書き続けるにはその程度じゃないと無理っす.

2009年5月14日木曜日

PDP11シミュレータ

Lions' Commentary on UNIXに取り組むうえで,やはり実際に動作する環境(PDP-11)がほしいと思い調べてみたところ,様々な古のコンピュータのシミュレータとしてSIMHというものがあるらしいことを知りました.
Ubuntu 9.04でapt-cache search simhを実行するとどうやらデフォで存在する様子.流石apt様.
ということでさっそくインストールしました.SIMHの使い方を覚えたり,コードを入力したりはまだ先のことになりそうですが.

京都の日本酒

京都の物産展にて,日本酒を購入してきました.
購入したのは「神聖 源ベヱさんの生酒 吟醸」720mlと「丹山 完熟」180ml.
今日は神聖を飲みました.たいした舌の持ち主ではないので詳しく批評はできませんが,おいしかったです.

扇屋@大学付近

通ってる大学付近の備長扇屋で飲んできました.
日本酒の辛丹波300ml+キャベツ+串焼きetcで約1400円なり.
焼き鳥メインの店っぽいけど野菜ばかり食べてました.
名著と名高いLions' Commentary on UNIXを借りてきたので取り組もうと思いつつも,飲酒状態なので布団へダイブすることにします.

2009年5月11日月曜日

立ち飲み@横浜西口5番街

皇居周辺を巡った後,帰宅途中の横浜で西口5番街にある居酒屋に寄ってきました.
5番街はIT系的に表現するならばドスパラ横浜駅前店あたり.
「酒寮キンパイ」という立ち飲み屋で5時過ぎ頃から飲み始め,冷酒+枝豆+モツ煮で30分ほど滞在.その後はキンパイから10mほどの距離にある,これまた立ち飲み屋の「ちょいのみてい」で日本酒(独楽蔵・玄)+冷奴+茄子(の煮びたし?)を注文.茄子ウマーでした.

立ち飲み屋に入ったのは初めてでしたが,ちょっと1杯といって飲むには良い形式だと感じました.安いし速いし,ファーストフードっぽい印象がします.
まぁ,2杯3杯と飲むなら座ってまったりしたいですが.

2009年5月10日日曜日

リーダマクロによる文字列生成

文字列を生成する際にはもっぱらformat関数を使っていますが,毎回(format nil "hoge~A" fuga)と書くのがめんどくさいので,#!"hoge{fuga}"と書けるようにリーダマクロにチャレンジしてみました.



(defun make-format-args (lst)
(let ((fmt-lst nil)
(args nil))
(dolist (obj lst)
(if (characterp obj)
(push
(cond
((char= obj #\~) "~~")
((char= obj #\\) "\\")
(T (string obj)))
fmt-lst)
(progn
(push "~A" fmt-lst)
(push (car obj) args))))
(append
(list (apply #'concatenate 'string (reverse fmt-lst)))
(reverse args))))

(defun emb-str (stream ch1 ch2)
(declare (ignore ch1 ch2))
(let ((str (read stream)))
(unless (stringp str) (error "object isn't string"))
(append '(format nil)
(make-format-args
(let ((*readtable* (copy-readtable)))
(set-macro-character #\} (get-macro-character #\)))
(with-input-from-string (in str)
(loop :while (listen in)
:for ch = (read-char in)
:collect (if (char= ch #\{)
(read-delimited-list #\} in)
ch))))))))

(set-dispatch-macro-character #\# #\! #'emb-str)

;;;test
>(defparameter hoge 3)
>#!"hoge={hoge}"
"hoge=3"
>'#!"hoge={hoge}"
(FORMAT NIL "hoge=~A" HOGE)
>#!"hoge * hoge = {(funcall #'(lambda (x) (* x x)) hoge)}"
"hoge * hoge = 9"


問題は多々あれど(エスケープ,終了判定等),普段の使い方からするとあまり気にならなさそう.困ることが起きてから直せばいいか.
まぁ,プログラムうんぬんよりも先に,ブログへのコードの張り付けをどうにかしようと思います.

2009年5月9日土曜日

readtable-case

CommonLispはデフォルトで読み込み時にシンボルを大文字にしますが,readtable-caseを用いて挙動を変更できます.
(setf (readtable-case *readtable*) case-sensitivity-mode)
case-sensitivity-modeには :upcase, :downcase, :preserve, :invertの4種類を設定できるようです.
:invertは大文字と小文字を入れ替えるらしいですが,大文字と小文字が混在するシンボルだとpreserveと違いがないようです.

blog

自分を追い込む意味を込めて,人目にさらす文章を書いてみようと決意.