2013/11/23

StumpWM でアラーム

3分たったら知らせてほしい時とかあるよね。汁全部なくなったりしたら悲しいもんね。

使った。

(defcommand alarm (seconds message) ((:number "seconds: ") (:string "message: "))
"alarm"
(sb-thread:make-thread
(lambda ()
(sleep seconds)
(stumpwm::message-no-timeout "^3*~
~a

  ☆ * .  ☆
 ☆ . ∧_∧ ∩ * ☆
キタ━━━( ・∀・)/ . ━━━!!
  . ⊂   ノ* ☆
 ☆ * (つ ノ .☆
    (ノ"
message))))

StumpWM は手軽るにこういうことができるのがいい。

これで疲労ぬきして出撃できる。

2013/09/29

ラグドール

ラグドールのタオがうちに来てから一週間たった。だいぶ調子がでてきた感じ。

ダイエーでたまたま見かけた。誕生日が私と同じだから5か月ほど売れ残っていたことになる。これは運命とか縁とかいうものかね。

2013/09/14

Postgresql を 9.1 から 9.3 に

Debian sid で sudo apt-get dist-upgrade したら「メジャーバージョン 9.1 はもはや使われません」とか言われたので、素直にアップグレードした。

sudo apt-get install postgresql-9.3
sudo pg_dropcluster 9.3 main --stop
sudo pg_upgradecluster 9.1 main

2013/08/31

sed じゃなくて awk だよね

(ql:quickload :info.read-eval-print.sed)
(ql:quickload :trivial-shell)

(use-package :info.read-eval-print.sed)

(let ((odd-total 0)
(even-total 0))
(with-input-from-string (in (trivial-shell:shell-command "ls -l /tmp"))
(sed (:in in :n t)
(when ($ 5)
(let (($5 (parse-integer ($ 5))))
(if (oddp (parse-integer ($ 2)))
(incf odd-total $5)
(incf even-total $5))))))
(values odd-total even-total))

ブログ書かなきゃ

Google Reader がなくなってブログ読まなくなったな。それであまり書かなくなった。というわけではない。

今年も鳥取に帰省した。だれもいなく、くらげもいなかった。

Common Lisp 関連は https://github.com/quek/unpyo を書いて遊んでる。

2013/07/27

サーバプログラムでデバッガーの起動

Common Lisp でサーバプログラムを書いている時、エラーは (handler-case ... (error (e) ...) って感じで全てにぎりつぶしたい。

でも、そうすると開発中はデバッガ起動しなくて困る。

どうしよう・・・ということで Hunchentoot のソース読んでみた。 with-simple-restart で invoke-debugger をかこめばいいみたい。

次のようにすると変数1つでデバッガの起動するしないを切り替えられるんだね。

(defvar *invoke-debugger-p* t)

(defun my-debugger (e)
(when *invoke-debugger-p*
(with-simple-restart (continue "Return from here.")
(invoke-debugger e))))

(defmacro with-debugger (&body body)
`(handler-bind ((error #'my-debugger))
,@body))

;; サーバのループ処理イメージ
(loop for socket = (accept)
do (handler-case
(with-debugger (call socket))
(error (e)
(error-handle e))))

*invoke-debugger-p* を t にしておけばエラー発生時にデバッガがあがる。そのデバッガで Continue リスタートを選べば handler-case により error-handle がちゃんと呼ばれる。

invoke-debugger はそのままだと処理が戻らないから with-simple-restart でかこんであげるってことだね。

2013/06/30

キー入力のカスタマイズ

腱鞘炎気味だったのでキー入力をちょっと変えみた。

  • shift + 9 → <
  • shift + 0 → >

がつらい感じだったので

  • meta + , → <
  • mata + . → >

にしてみた。

;; キー定義。
(set-sequence ((+any+ +no-meta+ +no-shift+ KEY_COMMA) (+any+ +shift+ KEY_9)) ;, → (
((+any+ +shift+ KEY_COMMA) (+any+ KEY_COMMA)) ;shift + , → ,
((+any+ +no-meta+ +no-shift+ KEY_DOT) (+any+ +shift+ KEY_0)) ;. → )
((+any+ +shift+ KEY_DOT) (+any+ KEY_DOT)) ;shift + . → .
((+any+ +shift+ KEY_9) (+any+ +shift+ KEY_COMMA)) ;shift + 9 → <
((+any+ +shift+ KEY_0) (+any+ +shift+ KEY_DOT)) ;shift + 0 → >
((+any+ +meta+ KEY_COMMA) (+any+ +shift+ KEY_COMMA)) ;mata + , → <
((+any+ +meta+ KEY_DOT) (+any+ +shift+ KEY_DOT))) ;mata + . → >