続・Mac から Windows へリモートデスクトップ接続

先日(http://d.hatena.ne.jp/cocoatomo/20090328/1238211147)、リモートデスクトップ接続できなかった作業の続き。
リモートデスクトップ接続のサーバ機能が無い Windows XP Home Edition へは UltraVNC (http://kp774.com/soft/uvnc_jp/index.html) をインストール。Mac には Chicken of the VNC (http://sourceforge.net/projects/cotvnc/) をインストール。
設定をちょちょいとしたら、無事繋がりました。これで嫁とテレビのディスプレイを取り合う必要は無くなりました(ホッ)

Mac から Windows へリモートデスクトップ接続

最近、我が家の Windows 機の余りまくっているハードディスク容量と CPU 能力を活かすため、Virtual Box で VM を入れることにしましました。(もちろん「Virtual Box を入れてみたいから」が一番の理由ですが。)それでメモリも増設して、Virtual Box もインストールし、準備万端になったのですが問題が一つ。

我が家の Windows のディスプレイは実はテレビ。最近はパソコンと繋げるテレビが多いようで、ディスプレイを置く場所を節約しようとテレビを Windows のディスプレイにしてました。しかも、嫁が Windows 機をメインで使っているため、なかなか VM 環境を活かせない。「リモート接続できればいいのになぁ、そうしたら Mac から接続できて便利なのに。」と調べてみたら、普通に本家にありました。

Microsoft Remote Desktop Connection Client for Mac 2
http://www.microsoft.com/mac/downloads.mspx?pid=Mactopia_RDC&fid=803F9438-8DF3-490F-92C6-0E0F92787DB8#viewer

問題無くインストールも済み、さて Windows の設定するか……、と「システムのプロパティ」を開いたのはいいものの、リモート接続の設定が無い……。あれ?もしや……とググってみると、Windows XP Home Edition にはリモートデスクトップのサーバ機能が無い……orz

という訳で振り出しに戻ったのでした。リモートデスクトップのサーバ機能のあるフリーソフト無いかなぁ。

Common Lisp 実行環境インストールメモ

環境

Mac OS X 10.4.11
X11
Carbon Emacs

作業内容

Emacs Lisp の実行環境はあるので、Common Lisp の実行環境が欲しくなりインストールしたときの作業メモ。

SBCL が良さそう(直感)だったので、SorceForge.net からインストールしてみた。
参考: http://web.sfc.keio.ac.jp/~k12u/lecture/KB/mac_cl.html
http://www.sbcl.org/manual/Running-from-Emacs.html#Running-from-Emacs

しかし、実行すると "Bus error" が出て動かない。"sbcl bus error mac" とかでググると、「Tigar 環境だと同じエラーが出て動かない。Leopard なら動く。」という記述が複数サイトにあった。ちょい凹む。
# Leopard 買いたいなぁ。でも、snow Leopard まで待った方がいいだろうしなぁ……。


気を取り直して、インストールディレクトリである /usr/local 以下の sbcl という文字列を含むファイルやフォルダを find して、全て削除。

finkclisp を入れ、cvs で slime をチェックアウト。Carbon Emacsclisp と slime のパスを設定。
参考: http://d.hatena.ne.jp/qnzm/20080925/1222292076

Emacs を立ち上げて、M-x run-lisp したら無事に clisp が立ち上がった。めでたしめでたし。

SQLite3 の C/C++ インターフェース

中心となるオブジェクトとインターフェース

オブジェクト。
  • データベース接続オブジェクト: sqlite3
  • Prepared Statement オブジェクト: sqlite3_stmt
そして、これらを操作する関数。
  • sqlite3_open()
  • sqlite3_prepare()
  • sqlite3_step()
  • sqlite3_column()
  • sqlite3_finalize()
  • sqlite3_close()

これらには UTF-8 用のもの、UTF-16 用のもの、version2 のものなど幾つかのバージョンがある。

関数の説明。

sqlite3_open():

SQLite3 のデータベースファイルへの接続を開き、接続オブジェクトを返す。たいてい sqlite3 API を使うとき最初に呼ばれる。

sqlite3_prepare():

文字列の SQL 文を prepared statement に変換し、ポインタを返す。sqlite3_open() で取得したデータベース接続と SQL 文を与える必要がある。

sqlite3_step():

prepared statement を評価する。最初に実行すると結果セットの最初の行を指している状態になり、もう一度実行すると2行目を指している状態になる。
sqlite3_step() は最後の行に達するまで呼べる。結果セットを返さない INSERT、UPDATE、DELETE などでは、最初の呼び出しですぐに最後の行を呼んだときの値(SQLITE_DONE?)が返る。

sqlite3_column():

sqlite3_step() で評価した prepared statement の結果セットの、現在指している行の中の1カラムを返す。実際には sqlite3_column() という関数があるのではなく、sqlite3_column_*() という関数群がある。また、(string や BLOB 型の)カラムの値のサイズを返す関数やカラムの数を返す関数もある。

sqlite3_finalize():

prepared statement を破棄する。メモリリークを防ぐため、prepared statement はこの関数で必ず破棄しなくてはいけない(must)。

sqlite3_close():

データベース接続を閉じる。閉じる前に関係する prepared statement は sqlite3_finalize() で破棄しておく方が良い(should)。


(続く(予定))

Safari で JavaScript のエラーを表示

「開発」→「エラーコンソールを表示」(option + command + c)で JavaScript のエラーが表示される。

alert("Hello!) ← 二重引用符の閉じ忘れに気付くのに、30分くらい格闘した。初心者っぽいミスだ。