2012/09/22

標準入力を読むなら

(load "~/quicklisp/setup.lisp")

(let* ((*standard-output* (make-broadcast-stream))
(*error-output* *standard-output*))
(ql:quickload :series))

(use-package :series)

(write-string
(collect 'string (scan-stream *standard-input* #'read-char)))
yarn:~% echo "hello\nworld" | sbcl --script /tmp/a.lisp
hello
world

2012/09/21

sbcl --script でやるなら

昨日の Common Lisp から Skype を使う を sbcl —script でやるならこんな感じかな。

(load "~/quicklisp/setup.lisp")

(let* ((*standard-output* (make-broadcast-stream))
(*error-output* *standard-output*))
(ql:quickload :dbus))

(use-package :dbus)

(with-open-bus (bus (session-server-addresses))
(with-introspected-object (skype
bus
"/com/Skype"
"com.Skype.API")
(flet ((skype (command)
(skype "com.Skype.API" "Invoke" command)))
(skype "NAME FromCommonLisp")
(skype "PROTOCOL 8")
;; #xxx... はチャットルームの ID
(skype (format nil "CHATMESSAGE #xxxxxxx/$yyyyyyy;9999aaaa9999 ~a"
(second sb-ext:*posix-argv*))))))
sbcl --script skype.lisp "hello"

2012/09/20

Common Lisp から Skype を使う

なんだ。簡単だった。

dbus 経由。

リファレンス http://developer.skype.com/public-api-reference#Linux

(eval-when (:compile-toplevel :load-toplevel :execute)
(ql:quickload :dbus))

(defpackage :try-dbus
(:use :cl :dbus))

(in-package :try-dbus)

(with-open-bus (bus (session-server-addresses))
(with-introspected-object (skype
bus
"/com/Skype"
"com.Skype.API")
(flet ((skype (command)
(skype "com.Skype.API" "Invoke" command)))
(print (skype "NAME FromCommonLisp"))
(print (skype "PROTOCOL 8"))
(print (skype "GET USERSTATUS"))
(print (skype "PING"))
;; #xxx... はチャットルームの ID
(skype "CHATMESSAGE #xxxxxxx/$yyyyyyy;9999aaaa9999 てすとです(f)"))))

2012/08/25

夏休み

20日(月)から24日(金)まで鳥取に帰省していた。ニ年ぶりの帰省。

20日(月)

飛行機で羽田から米子へ。

米子空港の名前が米子鬼太郎空港にかわっていた。

家でバーベキューをして、家の裏の暗がりから天の川をながめた。

お風呂は白鳳の里。

21日(火)

水木しげるロードと、水木しげる記念館に行った。

水木しげるロードは以前よりブロンズ像がずっと増えていて、おもしろくなっていた。

水木しげる記念館は初めて入った。思っていたよりずっとよかった。壁に直筆の鬼太郎が描いてあったり、妖怪の模型や説明が充実してたり、うちの小学4年生もおおいに楽しんでいた。〇〇記念館の類の中でも秀逸だと思う。

「お魚天国すし若竹内団地2号店」で食事をして、夢みなとタワーに行った。「動物地球館」という移動動物園(?)を見た。ゾウガメに触れたのがよかった。しっぽがかわいい。

お風呂はうなばら荘。

22日(水)

午前中は近くの海へ海水浴に行った。お盆を過ぎているとはいえ、誰一人いなかった。プライベートビーチ。カモメと白鳥とクラゲ(2匹だけ)しかいなった。

午後は大山の森の国に行って、アスレチックで遊んだ。臆病な(それとも慎重派?)うちの子は、ろくにクリアできなかったけど、とても楽しかったらしい。

23日(木)

青山剛昌ふるさと館の方に行った。ちょうど「名探偵コナン 巨大迷路で少年探偵団を探せ!」というのやっていたので、迷路で遊んだ。

青山剛昌ふるさと館の方は。。。水木しげるロードと、水木しげる記念館はすごいな、という感じ。

お風呂は湧くわく天然温泉ラピスパ。

24日(金)

空港に行く前に、回転寿司「大漁丸 境港店」に行った。イワシと生サバが美味しかった。

米子鬼太郎空港から羽田へ。

2012/08/19

logtest

Common Lisp になら、あるんじゃないかなと思ったら、やっぱりあった。

(not (zerop (logand event-mask isys:epollin)))

(logtest event-mask isys:epollin)

http://www.lispworks.com/documentation/HyperSpec/Body/f_logtes.htm

http://www.lispworks.com/documentation/HyperSpec/Body/c_number.htm このへんは知らないのいっぱいある。

2012/08/12

Common Lisp で thread + epoll の Web サーバを作ってみた

https://github.com/quek/info.read-eval-print.httpd

(info.read-eval-print.httpd:start (make-instance 'info.read-eval-print.httpd:server))
ab -n 10000 -c 10 'http://localhost:1958/sbcl-doc/html/index.html'

Linux + SBCL にべったりで GET に対してファイルを返せるだけ。

システムコールばかりなので性能は悪くない感じ。

2012/07/10

Debian sid に Skype をインストールする

http://wiki.debian.org/skype に書いてあるとおり。

sudo dpkg --add-architecture i386
sudo apt-get update
wget -O skype-install.deb http://www.skype.com/go/getskype-linux-deb
sudo dpkg -i skype-install.deb

ひっかかったら

sudo apt-get -f install

Skype のバージョン 4.0.0.7 になってた。この前まで 2.x.x? beta だったのに。画面の共有もできるようになったようだ。