Shammer's Philosophy

My private adversaria

2012-11-01から1ヶ月間の記事一覧

続・Lisp Condition Level 2・concat 完成?

背景 Lisp Condition Level 2 - Shammerismの続きです。 前回うまくいかなかった自作 condition の利用だが、どうやら define-condition で :report をしていなかったのがいけないようだ。 参照:http://www.lispworks.com/documentation/lw61/CLHS/Body/f_er…

Lisp Condition Level 2

概要 以前、Lisp Condition Level 1 - Shammerismで、Runtime で定義済の何らかの処理で例外が発生した場合に、それをどのように捕捉するかということをやってみたことがある。かなり前のことだが、今度は自作の condition を投げるということをやってみる。…

SVGを書いてみる

Webページのコンテンツを書くとき、画像を使いたいときがある。画像と言ってもそんなにこったものでなく、単純な丸とか四角とか楕円とか、そんなレベルでいい。これまでは、そういう簡単な画像を png やら tiff やら、何らかの画像ファイルとして用意して、H…

わかっているようでわかっていないかもしれないパッケージ

背景 Lisp のパッケージで苦戦というか、ハマってしまった。理解が不十分なのかもしれないが、defpackage の use で common-lisp-user や common-lisp を定義しているのに、独自に用意した某関数を別パッケージからうまく呼出しできない状態に。原因はわかっ…

パッケージ名の取得でコケた・・・

パッケージ名の取得を楽チンにしたい - Shammerismで試したときは問題なかったはずだが、コンパイルしたあとでは想定した動作にならなくなってしまった。eval-when という関数があるようで、、、CLHS: Special Operator EVAL-WHENを読んでも、というか読みき…

Emacs HTML Font color 挿入関数

Emacs で HTML を編集するのだが、、、後から一度書いた Some String を <font color="#FF0000">Some String</font> に変更したい場合がある。この時、Some String の前後にカーソルを移動してタグを追加しなければならず、いちいち面倒ということで、Some String を選択して、あとは色を…

HTMLのカレンダー

ちょっとしたお遊び。Lisp で HTML の簡易カレンダーを出力するプログラム。 (defparameter *weeks* 1) (defparameter *month* 1) (defparameter *date* 1) (defparameter *is-leap-year* nil) (with-open-file (f "calendar.html" :direction :output :if-e…

パッケージ名の取得を楽チンにしたい

Lisp のプログラムでログを記録するとき、どの処理で記録したものかわかりやすくするために、ログの中にパッケージ名を残したい。でも、そのログを残す関数名を logger として、 (logger (package-name *package*) "Any messages") というように、毎回 (pack…

実行関数のマッピングリストを用意する

結局引数で渡すしかないのか? - Shammerismのやり方では、呼び出す側があらかじめ関数名を規定しておく必要があった。だが、関数名を規定するだけでは、一つの処理しか定義できない。そこで、あるキーワードごとの実行関数を呼び出す、というようにしてみる…

結局引数で渡すしかないのか?

特定関数呼出中のみの予約語を定義する - Shammerismでやった試みは失敗。let で宣言された変数に、外部ファイルで定義した関数からアクセスしたい、という方法として有効と思ったのだが。やっぱりありきたりだが、こういう場合は関数の引数を予め約束する形…

特定関数呼出中のみの予約語を定義する

自分のやろうとしていることの日本語がこれでよいのか、、、ちょっと心配なところもあるが、JSP で使用できる request とか out というようなものを自分で定義したい。一番基本的なところから考えてみるか。まず、以下のような関数を定義する。 ? (defun a (…

format や prin1 で文字列を受け取る

Lisp には string stream というのがある。どういう時に使うかはよくわからなかったが、即どこかの stream に書き出し、というようなことをせずに一旦出力される予定の文字列をバッファしておくのに使えそうだ。こういった使い方のためにあるものとはとても…

標準出力交換

Lisp では、 (format t "abcdefg") というようにすると、標準出力に abcdefg と出力される。これ自体は別に特別でも何でもない。しかし、内部では format は出力先に *standard-output* を指定しているように見える。以下のようなコードを書くと、 (with-ope…

Mac で auto mount

Mac

あちこちのサイトに既に情報があるが、自分用にメモ。 普通にFinderでマウントする ユーザー設定のLogin Itemsを開く +(プラス)をクリックし、マウントされたディレクトリを選択 なお、認証が必要であれば、ユーザー情報をキーチェーンに入れておく必要があ…

JavaScript で substring

JavaScript でも substring できるとわかった(当たり前だが)ので、そのメモ。拡張子の判定をする例。 if( $StringValue.substring($StringValue.lastIndexOf('.'), $StringValue.length) == ".txt" ){ window.alert("This is a text file."); } else { windo…