2010年10月30日土曜日

今年読んだ本

なんとなく、今年(2010年)買った技術書を列挙してみる。

プログラミング言語系
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
Pythonチュートリアル 第2版
開発ツール
入門git
入門SSH
GDBハンドブック
HTML & CSS ビジュアル・リファレンス 改訂版
その他
Software Design 総集編 【2000~2009】(DVD付)
Puzzles for Hackers:スクリプトキディから大人のハッカーへ (IT Architects' Archive 知の連環)
Winnyの技術

後は図書館とか大学の蔵書をちょこちょこと。 「プログラミングClojure」や「Scheme手習い」などのLisp系の書籍は面白そうと思いながらも結局買ってなかったな…。

自分にしては珍しく色々と買ったような気がしたが、よく見ると入門書ばかり漁っていたらしいことにようやく気づいた。

2010年9月8日水曜日

[Emacs]Unicodeエスケープ文字を復元する

\u0040\u006b\u006f\u0073\u0068\u005f\u0062\u006f\u0074
上記のようなUnicodeエスケープ文字を元の文字列に戻すためのEmacs Lispです。ついでなので逆のエスケープする関数も書いておきます。

xyzzyの方は単純にElispのコードを書き換えただけ。xyzzyはemacsより書き方に幅があるようだけど、あんまりトリッキーなコードだとelisp<=>xyzzy間のコードの移植が大変になりそう。

emacsでこんな感じの置換操作を行う場合は以下のように書くのが定石らしい。

(while (re-search-forward "検索したい文字列" nil t)
  (replace-match "置換後の文字列" nil 'リテラルかどうか))

xyzzyならストリームを扱う関数を作ってed::text-decode-regionから呼び出すのが便利。

参考リンク

2010年7月20日火曜日

今日の無題

Debian4.0終了のお知らせ(遅)

半年くらい前にインストールしたcoLinuxを久々に 引っ張りだしてみたら、どうやら Debian-4.0r0-etch.ext3 ではディストリビュ ーションのバージョンが少々古くなってしまったらしい。

apt-getが使えないと色々困るので Debian -- ディストリビューションアーカイブ に書いてあるのを参考に /etc/apt/sources.list を書き換える必要がある。

    deb http://ftp.riken.jp/Linux/debian/debian-archive/ etch main contrib non-free
    deb-src http://ftp.riken.jp/Linux/debian/debian-archive/ etch main contrib non-free

もしくは素直にSourceForge.net からDebian 5.0 Lennyを持ってきたほうが賢いのかもしれないけど。

参考

2010年5月31日月曜日

[Emacs]sha1-file

舌足らずなブログ: あれ? がようやく解決したのでメモ。

こっちもxyzzyのエンコーディング指定と同じミスでした。
sha1.elはそれなりに長い文字列を受け取ると外部プロセスに処理を投げるので、その時の入力をバイナリ指定にしないといけないらしい。

(defun sha1-file (filename)
  (require 'sha1)
  (let ((coding-system-for-write 'binary))
    (with-temp-buffer
      (insert-file-contents filename)
      (sha1 (buffer-string)))))

ちなみにEmacs内部で処理する場合はエンコーディング指定は要らない。

(let ((sha1-use-external nil))
  (with-temp-buffer
    (insert-file-contents FILENAME)
    (sha1 (buffer-string))))

2010年5月19日水曜日

[newLISP]今日の無題

自作したnewlisp.elの挙動がおかしかった原因が少し分かったのでメモ。

newlispのREPLはデフォルトで行編集ライブラリ(readline)が使えるが、 複数行を入力する場合は[cmd]~[/cmd]タグでS式を囲まなければいけないのが newlispの面倒な仕様。

newlisp.elの newlisp-eval関数はその辺を考慮してプロセスに文字列を 送るようにしているのだけど、なぜか効果が無いようでREPLバッファに 入力が溜まってしまう現象がよく起きていた。

2010年2月9日火曜日

newLISP基礎文法最速マスター

待っていても誰も書きそうにないので自分で作りました。

これは何?

Lisp風スクリプト言語newLISPの文法一覧です。(→newLISP公式ページ)
S式について多少でも知っている人は他の処理系と比較してもよし。
そもそもS式を知らない人はLisp入門にしてもよし。 (先に他の有名なScheme処理系やCommon Lispに手を出す方が無難ですが)
newLISPの簡易リファレンスとして利用できるかと思います。ただし無保証です。