03/13: gauche on cygwin
さっそくgaucheをインストールしましょう。Debian等のディストリビューションならパッケージが用意されていますので、そちらをインストールするのが安全確実です。cygwinにはパッケージが用意されていませんので、自前でコンパイル、インストールする必要があります。
gaucheに先立って、slibを導入しましょう。slibは汎用のschemeライブラリです。gaucheはサポート一覧に明記されていませんが、問題なく動作するようです。slibの配布サイトからzipをDLして、展開します。
$ cd tmp $ wget http://swiss.csail.mit.edu/ftpdir/scm/slib-3b1.zip $ unzip slib-3b1.zip -d /usr/local/libこれでslibの導入は完了です。
次にgaucheを配布元からDLし、コンパイル、インストールします。
$ wget http://prdownloads.sourceforge.net/gauche/Gauche-0.8.13.tgz $ tar zxvf Gauche-0.8.13.tgz $ cd Gauche-0.8.13 $ ./configure --with-slib=/usr/local/lib/slib $ make; make check $ make install基本的にはこの手順で問題なくインストールできます。私の環境ではmake check時にフリーズ(?)してしまいましたが、Ctrl-Cで一旦止めて、再度make check; make installで問題なくインストールできました。
03/11: gauche.night

去る03/08(土)、お台場にて開催されたgauche.nightに参加しました。gauche.nightの詳細はWiLiKiを参照して頂くとして、会場ではGauche/Scheme/Lispハッカー/プログラマの皆さんと一緒に、マターリと熱い一時を過ごしました。会場となったTOKYO CULTURE CULTUREスタッフによるライブレポートも、微妙にいい感じです。
上記サイトにもあるように、今回のイベントは書籍『プログラミングGauche』の発売記念だった訳ですが、いやもう濃いぃの何のって、これは参加した人にしか分からない。トークの内容も濃いぃ内輪ネタ(?)が満載な訳でして、プログラマ魂、息を潜めていたlambda式LOVEの感情がふつふつと。読了していないSICPも頭から読み直そうかな、と妄想中。
会場では、『プログラミングGauche』の早売りをGET! しかも初版以前のバージョンで、誤植を修正したシール付きの限定版。続編のkahua本? gaucheソースコード解説? にも期待しています。
いやー、刺激的な早春の一日でありました。
12/29: 冬休み集中連載! Androidで遊ぼう! その1
今日から弊社も冬休みです。まとまった時間も取れることですので、Androidで遊んでみることにしました。まずはAndroidについての説明ですが、WikipediaのAndroid[W]の記事にお任せしちゃいます。
さて、さっそくSDKをダウンロードしましょう。
該当するプラットフォームのzipをダウンロードし、適当なディレクトリに展開します。次に、展開したディレクトリ直下のtoolsディレクトリにPATHを通します(PATHの通し方は割愛)。開発環境としてEclipseを利用する場合は専用のプラグインも用意されているようですので、これもインストールして活用しましょう。あとはソースコードを編集するエディタだけが必要です。プラグインの用意されているEclipseを利用すると、テンプレートの自動生成などもしてくれるようですが、私はGNU Emacsで敢て茨の道を進んでみたいと思います。
プログラミング言語としてはJavaのみです。CやC++によるネイティブアプリの開発は、現時点では不可能です。その他の詳細はAndroid SDKに同梱のドキュメントを読んで下さい。明日から実際のコーディングを行ってみたいと思います。
» 続きを読む
11/03: MySQL 5.0へバージョンアップ
開発環境のMySQLを4.0から5.0へバージョンアップしたところ、いろいろな箇所で文字化けが発生しました。その対処法を備忘のため記録しときます。
バージョンアップ自体はインストーラなりaptなりで一発ですが、MySQL 4.1のどこかのバージョンから、クライアントからの文字列のキャラクタセットをサーバ側が自動的に変換してくれるというステキ(余計?)な機能が実装されたため、設定ファイルに追加が必要です。
具体的には、MySQLの設定ファイル
» 続きを読む
11/02: MySQLのlimitをJDBCで吸収
MySQLで検索条件にヒットするレコードを1件だけ取得したい場合、limitを利用します。Oracleならrownum、新しめのSybaseならtopなどですね。これらの条件句の詳細は割愛しますが、これらの違いはマルチプラットフォーム化の障壁になります。
そこで、JDBCの出番です。素晴しいことに、Statement#setMaxRows()というメソッドが用意されています。引数に取得する件数を渡すだけで、limitやrownumなどのRDB間の差異をJDBCが吸収してくれます。例えばこんな感じです。
» 続きを読む
さて、続きです。
java.sql.Statementクラスには、INSERT文にて自動生成されたキーを取得するためのAPIが提供されています。それが表題のStatement#getGeneratedKeys()メソッドです。このメソッドの返り値はjava.sql.ResultSetのインスタンスになっており、そこからキーを取得できるという訳です。
MySQLならResultSet#getIntでキーを取得できます。シンプルでいいですね。ところが、Oracleだとそう単純にはいきません。同様にgetInt()すると、メモリの位置っぽい感じの謎な数字が返ってきます。getInt()ではなくgetObject()で取得して確認してみると、oracle.jdbc.ROWIDなるクラスのオブジェクトであることが分かります。
このROWID、擬似的なカラムと言いますか、ポインタと言っていいと思います。このポインタがINSERT文で生成されたカラムを差しており、コレに対してSELECT文を投げることでようやく求めるキーが得られるという訳です。
» 続きを読む
MySQLには、新しいレコードをinsertする度にIDを自動生成してくれるauto_incrementというカラム属性があります。PostgreSQLではserialを利用できるようです。が、Oracleにはこれらの機能がありません。しかし、sequenceとtriggerを用いて擬似的にauto_incrementを実現することができます。
ここまでならwebにある情報で何とかなります。んでは次に、この生成されたID取得するにはどうすればよいか。MySQLならAPI経由で取得する方法がありますが、JDBC経由のOracleならどうでしょう? insertしたカラムをselectする? いえいえ、もっと楽な方法があるのです。
ということで次回に続きます。
03/26: Oracle on Debian
備忘です。Oracle 10g Express EditionをDebian Sargeにインストール。apt lineはunstable(不安定版)用になっていますが、sarge(stable; 安定版)でも問題なく動いています。
- apt lineの追加。
# vi /etc/apt/sources.list deb http://oss.oracle.com/debian unstable main non-free deb-src http://oss.oracle.com/debian/ unstable main
- apt-get実行。install時にswap領域が足りないと怒られる場合アリ。ウチのシステムでは1004MBものswapを要求されたので、パーティションを切り直して作業再開。
# apt-get update # apt-get install oracle-xe-universal oracle-xe-client
- デーモンの設定。基本的にはデフォルトのままでOK。ブラウザべースの管理画面が8080番ポートを使うことに注意。
# /etc/init.d/oracle-xe configure
- ユーザ登録等。デフォルトのままではremoteから管理画面にアクセスできないことに注意。ユーザ作成等ではJavaScriptが動作するブラウザが必要。
管理画面のGUIはよくできていると思いますが、localhostからの接続のみ可とか、JavaScript必須とか、CUIベースのサーバでの運用を意識していない作りはイケてません。後述の外部リソースを参考にすればremoteからもGUIを操作できるようにはなるのが救いです。
» 続きを読む
05/31: 『ふつうのHaskellプログラミング』
Haskell[W]本の2冊目、『ふつうのHaskellプログラミング』が出版されましたので、早速購入いたしました。ソフトバンクから出ている『ふつうの〜プログラミング』シリーズの1冊で、著者はRuby界隈で活躍されている青木さんです。既にサポートページも開設されており、サンプルコードの入手などが可能になっています。
内容は、Haskellインタプリタの導入から基本的な文法、お約束のリスト処理と来て、何とWikiエンジンやらHTMLパーサまで実装しちゃうという意欲的な一冊です。Haskell最大の難関であるモナド[G]については、かなり後半になってから記載されており、しかもIOモナドは更に後回し。先に出た『入門Haskell』との読み比べもしてみたいところですね。
そう言えば、久し振りのプログラミングの話題なような...
Happy Hacking Keyboard(HHK)を使い始めてまもなく10年、キーボードについてはこだわりを持ってHHKのみを利用し続けてきましたが、マウスについてはホイールが付いていれば便利だな程度の認識しかありませんでした。
しかし、右手をキーボードとマウスの間で行き来させなければならないのを煩わしく思っていたのも事実です。理想は、手をキーボード上のホームポジションから移動させることなく、マウスポインタを動かせることです。ノートPCのようにキーボード上にトラックポイント[W]があったりすればよいのでしょうが、無い物ねだりは虚しいものです。
現実的な解として、HHKの手前にトラックボール[W]を置くことを考えてみました。そうすることで、両手ともホームポジションに置いたまま、親指でボールを転がしたりボタンをクリックできるという訳です。さっそくウェブでよさげなトラックボールを探して、勢いで注文しました。
» 続きを読む

