Shammer's Philosophy

My private adversaria

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

client socket handling macro

with-open-passive-socket ver 20120327 - Shammerismの処理では accept したクライアントの処理を普通に書いていたが、 accept される read する close する という一般的すぎる流れ。read の直後の処理はケースバイケースかもしれないが、accept されると…

with-open-passive-socket ver 20120327

with-open-passive-socket ver 20120322 を試す - Shammerismを見ていて、with-open-passive-socket の直下の do がどうしても気になり、、、do まで macro に含めてしまおう、ということでちょっとだけ書き直してみた。書き直したバージョンがこれ。 (defma…

with-open-passive-socket ver 20120322 を試す

with-open-passive-socket ver 20120322 - Shammerismで作成した Echo Server で使ってみることに。 (defun open-echo-server (addr port) (format t "> OpenEchoServer port open...~%") (with-open-passive-socket (server addr port) (do () (nil) (let (…

with-open-passive-socket ver 20120322

with-open-passive-socket 改 ver 20110709 - Shammerismで完成かと思っていたが、一部冗長なところが見つかったので改良。 (defmacro with-open-passive-socket (&rest body) (let ((server-symbol-value (caar body)) (server-listen-addr (cadar body)) (…

Lisp の文字列操作-Ver20120318

Lisp の文字列操作-Ver20120304 - Shammerismに、文字列を byte array にするもの、byte array を文字列にするものを追加。 数値を文字列に変換する->write-to-string ? (setf a 1) 1 ? (type-of a) BIT ? (setf string-1 "aaa") "aaa" ? (concatenate 'stri…

動作中にCurrentDirectoryを取得

ccl::get-user-home-dirの方がいい場合 - Shammerismの続き。Lisp の動作中に CurrentDirectory を取得。CurrentDirectory と言っても、プロセスを起動したディレクトリのことではない。説明が難しいけれども、ある関数を実行中にその関数が記述されているソ…

Python に冗長なコードを出力してもらう

問題点 オブジェクト指向でコードを書いていて退屈してくるのが ValueObject の記述。フィールドがあって、そのフィールドに対するアクセサを書く。2 つとか 3 つくらいならいいけれども、フィールドが 10 とかあるとうんざりしてくる。しかも同じようなコー…

Lisp で多重ロードをしないようにする

概要 CLHS: Function PROVIDE, REQUIREによれば、どうやら provide と require を使用するようだ。言われてみればよく見かける関数だ。provide でモジュールリストを確認し、存在しなければモジュールリストに対象モジュールを追加する。そして、require は…

Python HTTP Post client

とりあえず、、、そろそろ Python も触ってみようかと思って書いてみた。たいしたことはやっていないけれども。とりあえずこれだけ。 KeepAlive & Content-Length import socket HOST = '10.0.0.1' port = 80 POST_DATA = "username=administrator" client =…

&KEY をちょっとだけ使用してみようと思う

以前、&key の考察 - Shammerismで keyword 引数についての記事を少しだけ書いた。でも、実際に使用したかというと・・・全然使用していない。とりあえず、最初の引数だけは必須で、それ以外は Keyword 引数になるという関数を定義。 ? (defun main (command…

Lisp の文字列操作-Ver20120304

Lisp の文字列操作 - Shammerismに少し追加。 数値を文字列に変換する->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 expected type SEQUENCE.…

load したファイルで in-package しているとどうなる?

例えば、以下のようなファイル(lib1.lisp)を load すると想定。 (defpackage "MYLIB1") (in-package mylib1) (export 'hello) (defun hello () (format t "Hello! This is mylib1:hello.~%")) 単純にロードすると、以下のようになる。 ? (load "lib1.lisp") …