2010年12月24日金曜日

今日の無題

今年もVLCメディアプレイヤーは期間限定でクリスマス仕様みたいです。
(左:WindowsXP / 右:Ubuntu9.10)

去年(2009年)のスクリーンショット

2010年11月14日日曜日

[newLISP]guiserverをインストールせずに使いたい

newlispに付属のGUI(GUI-Server)は各種ファイルが既にインストールされている状態で ないと利用できないので、なるべく任意のディレクトリで使うようにするための方法です。

※newlispのバージョンアップに伴い利用できなくなる可能性があります
※Linux環境(CentOS_5)にて動作確認

環境変数NEWLISPDIRにguiserver.{jar.lsp}が置いてあるディレクトリを指定してプロセスを起動させる
(ソースパッケージを展開した場合は"newlisp-10.x.x/guiserver"以下にあるはず)

% pwd 
/home/kosh/src/newlisp-10.2.16/guiserver
% NEWLISPDIR=`pwd` newlisp table-demo.lsp
newLISP-GS v.1.42 on Linux
(guiserverが起動する)

いちいちタイプするのが面倒なら設定ファイル ~/init.lsp (または .init.lsp)に以下のコードを記述する

(env "NEWLISPDIR" "/path/to/guiserver"))

guiserverディレクトリ内にあるデモスクリプトを眺めるのはこれでOK

newLISPエディタを起動させる

エディタを起動させる場合にはもう少し手を加える必要がある。
guiserver-edit.lspを編集してハードコートされているnewlispのパスを書き換える。

% sed 's!"/usr/bin/newlisp "!/path/to/newlisp!g' newlisp-edit.lsp > newlisp-edit-alt.lsp
% newlisp newlisp-edit-alt.lsp

また、main-args関数にはnewlispが実行されたときの引数がリストとして格納されているので

"/usr/bin/newlisp " -> (main-args 0)

のように置換しても良い。

2010年11月8日月曜日

newLISP v10.2.X インストールメモ

以前書いた情報 がすっかり古くなったので書き直し。

現在(2010年11月時点)の安定版はnewlisp v.10.2.8
開発版はnewlisp v.10.2.17です。

このページは以下のURLと配布ファイルに同梱しているREADMEを参考に作成しています。

newLISP - Downloads

ダウンロードページ

配布されているtarballの中身

newlisp-xx.yy.zz
|-- makefile_XXX - 各種Makefile
|-- newlisp.c - newlispのソースコード
...
|-- doc/ - ドキュメント・マニュアル
|   |-- MemoryManagement.html
...
|   `-- newlisp_manual.html
|-- example/ - サンプルスクリプト
|-- guiserver/
|   |-- guiserver.jar - GUI-Server本体
|   |-- guiserver.lsp - GUI-Serverとの通信用スクリプト
    ...
|   |-- images/ - 各種アイコン
|   `-- java/ - guiserver.jarのソースコード
|-- modules/ - モジュール
|-- qa-specific-tests/ - テスト用ファイル
|-- util/ - その他
...
|-- configure
|-- configure-alt
`-- README

インストーラからインストールする

WIn32/MacOSX/Ubuntuには公式でインストーラが配布されているので導入は楽

ただしWin32のUTF-8版バイナリはインストーラとは別に配布されている

wget http://www.newlisp.org/downloads/UTF-8_win32/newlisp.exe

公式のダウンロードページの下部には有志によるDebianリポジトリも作成されているので、これを利用して自動更新する方法もある。

apt and dpkg repository for newLISP

ソースからmakeする

野良ビルドの基本としてconfigureスクリプトがあるが、代わりに同梱されている configure-alt スクリプトを利用すると自分の環境に合わせたmakefileを作成して くれる。

具体的には以下

  • OSの判別
  • データ型モデル(LP64/ILP32)の判別
  • UTF-8の利用(デフォルトはyes)
  • readlineライブラリの有無
  • IPv4/6利用の選択(デフォルトはIPv4)
  • インストールディレクトリの選択 (--prefix=/usr/local)
  • などなど

※newLISPではこの辺をautomakeを使わずに自前で用意している。
※configure-altも失敗する可能性があるので、その時はconfigureスクリプトを使う

guiserverはソースと共にjarファイルが同梱されているのでjavaコンパイラは必要ない。もちろんguiserverを起動させる場合にはjava仮想マシン(JVM)がインストールされている必要がある。

実際にコンパイルしてみる

% wget http://www.newlisp.org/downloads/newlisp-10.2.X.tgz
% tar zxvf newlisp-10.2.X.tgz
% cd newlisp-10.2.X
% ./configure-alt
% make
% make check
% sudo make install

最小インストール

Win32,UNIX系OSどちらも実行バイナリ単体で動作する。

% sudo cp newlisp /usr/local/bin/newlisp

開発版と安定版を使い分ける場合はバージョン番号で管理すると便利。

% sudo install -m 755 ./newlisp /usr/local/bin/newlisp-10.2.16
% sudo ln -sf /usr/local/bin/{newlisp-10.2.16,newlisp}

% ls -l /usr/local/bin/newlisp*
    lrwxrwxrwx 1 root root     30 11月  1 11:59 /usr/local/bin/newlisp -> /usr/local/bin/newlisp-10.2.16
    -rwxr-xr-x 1 root root 270520 11月  1 11:57 /usr/local/bin/newlisp-10.2.16

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))))