Shammer's Philosophy

My private adversaria

2012-01-01から1年間の記事一覧

Bashの$!

bashには、いろいろな変数があるが、また新しく一つ知ったのでそれを備忘メモ。最後に実行したback ground process の PID が格納される$!。以下、実行例。 $ sleep 5 & [2] 1779 $ [2]- Done sleep 5 $ echo $! 1779 $ sleep 30 & [2] 1796 $ echo $! 1796 …

Common Lisp UDP Server 自動起動スクリプト Ver.20121225

自動起動スクリプトの作成 - Shammerismで書いた自動起動スクリプトを自作の/etc/init.d/XXXで起動したらbackgroundで動作しない - Shammerismで修正したが、さらにこのスクリプトを修正。pid ファイルの生成がうまく行っていなかったのと、停止時処理を適切…

Debian Squeeze でのSSH公開鍵認証設定

Cygwinでの方法を Cygwin SSHの公開鍵認証でXenServerへ接続 - Shammerismでまとめたので、Debian Squeeze 版(たまたま試したのがこの環境なだけで、CentOSとかでも問題ないはず)も書くことにした。ほとんど同じだが。 ssh-keygen -t rsa save the key to …

Cygwin SSHの公開鍵認証でXenServerへ接続

職場の都合で、CygwinからXenServerへ接続しているが、このXenServerは完全検証用なので基本使うのは自分だけ。接続のたびに毎回パスワード入力するのも面倒なので、SSHの公開鍵認証をすることに。基本の手順は以下の通り。 cygwinのターミナルを開く ssh-ke…

ClozureCLでDNS lookup

Lispで名前解決 - Shammerismでも情報を書いていた。すっかり忘れているが。DNSの正引きと逆引きをLisp(ClozureCL)でやる場合のメモ。 ? (ipaddr-to-dotted (lookup-hostname "www.yahoo.com")) "106.10.139.246" ? (ipaddr-to-hostname (lookup-hostname "1…

応答を返すLispUDPServerその弐

応答を返す UDP Server - Shammerismに少しだけ手を加えた。 (defun start () (let ((server (make-socket :type :datagram :local-host "0.0.0.0" :local-port 7001 :format :binary))) (with-open-file (f "/var/log/clozure-udp-server.log" :direction :…

funcall 実行例

そのまま定義済の関数を実行 ? (funcall #'+ 1 2 3 4 5) 15 ? (defun hello (name) (format t "Hello, ~A!~%" name)) HELLO ? (funcall #'hello "Taro") Hello, Taro! NIL ? lambda 式を指定する ? (funcall #'(lambda (name) (format t "Hello, ~A!~%" name…

Lisp の判定処理サンプル - Ver20121208

数字かどうか判定する ? (numberp 100) T ? (numberp nil) NIL ? (numberp "aaa") NIL ? (numberp -101) T ? 偶数・奇数判定 偶数 ? (evenp 10) T ? (evenp 11) NIL ? 奇数 ? (oddp 10) NIL ? (oddp 11) T ? 文字列かどうか判定 ? (stringp "aaa") T ? (stri…

Lisp の文字列操作-Ver20121207

Lisp の文字列操作-Ver20120318 - Shammerismにsubstitute-ifを追加。 数値を文字列に変換する->write-to-string ? (setf a 1) 1 ? (type-of a) BIT ? (setf string-1 "aaa") "aaa" ? (concatenate 'string string-1 a) > Error: The value 1 is not of the …

dolist 排除計画 - split 編

背景 文字列の分割 - Shammerismで書いた split-string も dolist を使用していたので、これを使用しないように変更。 新実装 (defun split (base delimiter) (let ((x (search delimiter base :start2 (length delimiter)))) (if (null x) (cons base nil) …

dolist 排除計画その2

概要 dolist 排除計画その1 - Shammerismで、自作関数の concat から dolist を排除しようと再帰を取り入れたものの、初期実装は失敗。入れ子のリストをフラットにする処理例がHow to remove nested parentheses in LISP - Stack Overflowにあったので、そ…

dolist 排除計画その1

概要 続・Lisp Condition Level 2・concat 完成? - Shammerismで書いた concat だが、これでいいかと思ったものの、文字を連結させるところで dolist を使用しているのが気になった。 ((string-listp strings) (let ((result string1)) (dolist (s strings) …

続・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…

応答を返す UDP Server

自動起動スクリプトの作成 - Shammerismの UDP Server は、メッセージを受信したらそれをそのままクライアントのIPとかと一緒にログに記録するだけの動作だが、これが応答を返すようにしてみた。 (defun start () (let ((server (make-socket :type :datagra…

自作の/etc/init.d/XXXで起動したらbackgroundで動作しない

自動起動スクリプトの作成 - Shammerismで作成した UDP サーバーを、/etc/init.d/ 配下に作成したその UDP サーバ用の起動スクリプトで start するとフォアグラウンドで動作する。/etc/init.d/skeleton の start−stop−daemon が --background オプションがな…

自動起動スクリプトの作成

Lisp UDP Server 改 - Shammerismで作成した簡易UDPサーバを自動起動させたいと思う。その手順を整理する。大枠としては以下の作業になる。 lisp ファイルをコンパイルしてバイナリにする /etc/init.d/skeleton をコピーして編集 lisp ファイルをコンパイル…