2009年9月アーカイブ



JsonMLが使い勝手よいので、更に深堀り。


前回の記事。


JavaScript 最近使ったライブラリ


XMLをJSONにする。


JSONからHTML,XMLは前回紹介したのだけど,今度はHTML,XMLをJSONに変える。


といっても、コマンド実行です。


使うコマンドはxsktproc。macだと標準で入ってる。



$ xsltproc JsonML.xslt <対象のxmlファイル>

JsonML.xsl.xmlは、下記。


http://jsonml.org/JsonML.xslt


これで大量のHTMLをJSONに変換できる。


参考


IBM developerWorks Japan JsonML の紹介




他の書籍読んだり、遊んだりしてたので読む速度落ちた。再開。


































小節
第1部 予備知識1章 LispとScheme
2章 Gaucheの特徴
3章 Gaucheの設計思想や誕生の背景
第2部 Gaucheの基礎練習4章 Gaucheの開発スタイル
5章 プログラムの書式
6章 リスト
7章 手続き
8章 真偽値と条件判断
9章 状態の管理
10章 テストと例外処理
11章 評価モデル
第3部 実用的なプログラミング12章 数値
13章 文字と文字列の処理
14章 入出力
15章 テキストの構築
16章 さまざまなデータ構造
17章 総称関数とオブジェクト
18章 構文の拡張
19章 継続
20章 モジュールシステム
21章 デバッグ
22章 データベース
23章 日付と時間
第4部 Webアプリケーションへの応用24章 GaucheでCGIスクリプトを書いてみる
25章 スケジュール管理アプリケーション
26章 継続渡しによるWebアプリケーション
27章 Kahuaアプリケーションを書こう
付録AGaucheインストール
付録BEmacsの設定
付録CKahuaインストール
付録DGaucheとR6RS



画像認識の必要があったので、OpneCVをPythonから利用するための下準備。



例のごとく備忘録です。


opencvとpythonバインディングのインストール



yum -y install opencv opencv-devel opencv-python

確認

Pythonインタプリタでopencvモジュールを試しに読み込む。



Python 2.5.2 (r252:60911, Sep 30 2008, 15:41:38)
[GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import opencv
>>>

よし。モジュールは読み込めた。



公式


opencv.jp


参考


OpenCVのLinuxへのインストール


Python + OpenCVでウェブ上の画像を表示する




JsonML


決められたJSON(JSONML=JSONマークアップ言語)からHTML要素を生成するライブラリ。


公式

JsonML.org


参考

IT戦記 JsonML を使う高速テンプレートエンジン「JsonML.Template」


IBM developerWorks Japan JsonML の紹介



具体例

JsonML.parseにJSONを食べさせるとElementが帰ってくるからappendChildかinnerHTMLする。


まずはJSONMLで定義。onclickとかも設定できる。



var BnfGrammar = [
"div",
{"id":"main"},
["div",
{"id":"header"},
"ヘッダーです。"
],
["div",
{"id":"body"},
["div",
{"id":"menu"},
["div",
{"class":"button1"},
{"onclick":function(){
alert("ボタン1です。");
}},
"ボタン1"
],
["div",
{"class":"button2"},
{"onclick":function(){
alert("ボタン2です。");
}},
"ボタン2"
]
]
],
["div",
{"id":"footer"},
"Copyright(C) 2009 hogehoge. All Rights Reserved."
]
];

次に定義したJSONMLをHTMLに変換。



var UI = JsonML.parse(BnfGrammar, function (elem) {
if (elem.className.indexOf("Remove-Me") >= 0) {
return null;
}

if (elem.tagName && elem.tagName.toLowerCase() === "a" &&
elem.className.indexOf("External-Link") >= 0) {
elem.onclick = function(evt) {
window.open(elem.href); return false;
};

} else if (elem.className.indexOf("Fancy-Widgit") >= 0) {
FancyWidgit.bindDOM(elem);
}
return elem;
});

document.body.appendChild(UI);

逆にXMLやXHTMLをJsonに出来るメソッドもある。


残念なのは、メソッド一覧などのドキュメントが不足してること。デモとソースを解析するしか手だてはなさそう。




きしださんの思い出したついでだが、きしださんが本出した。


http://www.amazon.co.jp/dp/4839932530/


買う買う。




参加経緯


以前挫折したSICPを読むべくsicp-liteに参加した。


プログラミングGaucheを読む事2周目に突入しSchemeになれたから。



内容


sicp-liteの内容は、指定単元を読んできたこと前提で本書に掲載されている問題を解く。


詰まったところは発表したり話あったり。実際にソースコードをスクリーンに映したり。ホワイトボードつかったり。



正直な話。私は解答出来なかった。わからん>_<



理由は、



  • 数学的知識の欠如。

  • 魔術師本自体の日本語訳が理解できなかった。

  • 予習が不足していた。


予習不足については、改善の余地あり。他の二つ。


特に数学的知識については一朝一夕ではいかない。


...合成関数、不動点、Newton法、区間二分法...わからん>_<



本書問題


一番緩い問題ですら理解しきれてない。


問題1.41(p.43)


問題1.41


引数として一引数の手続きをとり,受け取った手続きを二回作用させる手続きを返す手続きdoubleを定義せよ.例えばincが引数に1を足す手続きとすれば,(double inc)は2を足す手続きとなる.




(define (inc arg)
(+ arg 1))

(define (double f)
(lambda (x) (f ( x))))

(((double (double double)) inc) 5)

gosh> 21

なぜ、21?どう展開されてるの...?


JavaScriptで何気なく書いてるような気がしないでもないけど...ここまでな書き方はしない。



参加者


コアメンバはSICP読み込んでいる方みたい。SICPの全貌を理解されているよう。


現役学生も参加しており、とても意欲的な明るいメンバ。


私見


sicp-liteコミュニティ(コミュニティでよい?)について

sicp-liteコミュニティ(?)方針として過去のsicp-liteを軌跡残しで議事録を取っていることは初参加者や既存参加者にやさしい!


あとメンバが良い人!←これ重要。



次回も参加しよう。



SICP自体について

id:nowokayこと、きしださんが書いていたいまSICPを読むのは時間の無駄が脳裏に浮かんだ。



というのは、数学知識に不足している私にはいくらやっても意味ないみたい...?


根本的な欠如。だがもう少し進める。



追記


java-jaのもっと素人臭いSICP読書会 in Java-jaは投票数がダントツだがいつやるのだろうか...?



参考




昨日自分が書いた記事。


Re:Gauche0.8.14とKahua1.0.7.3だとKahuaの./configureでこける。


原因探索(?)


どうやらVirtualBoxが犯人みたいです。


というのは職場のサーバにKahua入れたらうまく入り、動作も確認できました。


職場サーバの環境


  • Fedora10

  • Gauche0.8.14

  • Kahua1.0.7.3



なんだかなぁ。



ちなみに今日はプログラミングGaucehを読まずにSICPを読みます。




































小節
第1部 予備知識1章 LispとScheme
2章 Gaucheの特徴
3章 Gaucheの設計思想や誕生の背景
第2部 Gaucheの基礎練習4章 Gaucheの開発スタイル
5章 プログラムの書式
6章 リスト
7章 手続き
8章 真偽値と条件判断
9章 状態の管理
10章 テストと例外処理
11章 評価モデル
第3部 実用的なプログラミング12章 数値
13章 文字と文字列の処理
14章 入出力
15章 テキストの構築
16章 さまざまなデータ構造
17章 総称関数とオブジェクト
18章 構文の拡張
19章 継続
20章 モジュールシステム
21章 デバッグ
22章 データベース
23章 日付と時間
第4部 Webアプリケーションへの応用24章 GaucheでCGIスクリプトを書いてみる
25章 スケジュール管理アプリケーション
26章 継続渡しによるWebアプリケーション
27章 Kahuaアプリケーションを書こう
付録AGaucheインストール
付録BEmacsの設定
付録CKahuaインストール
付録DGaucheとR6RS



追記:原因はvirtualboxみたい?


詳しくはこちら。


Re:Gauche0.8.14とKahua1.0.7.3だとKahuaの./configureでこける。



Gauche0.8.14とKahua1.0.7.3だと、Kahuaの./configure時にこける。


3時間くらいハマった。


環境


Fedora10(Mac上のVirtualbox)


=>virtualboxが原因?と思ったけどどうやら違うみたい。



原因はどうやら、gauche/threads.scmがGaucheのインストール時に配置されないのが原因みたい。


/usr/local/share/gauche/0.8.14/libの中を確認しても確かにthreads.scmは確認なかった。


gaucheでthreadsが有効になってないのかな?と思い、gosh -Vを実行したら有効になってる罠。



ログ(Kahua ./configure時)



checking check Gauche version and thread type... gosh: "error": Compile Error: cannot find file "gauche/threads.scm" in *load-path* ("/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.8.14/lib")
"./check.scm":7:(use gauche.threads)

configure: error: You must install Gauche 0.8.13 or later which was built with
--enable-threads=pthreads configure option.

[root@localhost scheme]# gosh -V
Gauche scheme interpreter, version 0.8.14 [utf-8,pthreads]


対応


対応方法分からなかったので、以前問題なかったGauche0.8.13とKahuaの組み合わせに変更。結果問題なし。


ここでmakeの仕組みを知ってれば解決出来たろうけど、経験不足でした。




順調に14章読み終えた。format関数のフォーマット形式に慣れてないからもう少し見直す。



ファイル入出力は他言語のsourceにあたるものがポートであると解釈。


ゆくゆく、共通ライブラリ化しようと思う。



ちなみに今日はGoogle Maps APIを触ってるから、プログラミングGaucheをそんなに読み進めれそうもない。


































小節
第1部 予備知識1章 LispとScheme
2章 Gaucheの特徴
3章 Gaucheの設計思想や誕生の背景
第2部 Gaucheの基礎練習4章 Gaucheの開発スタイル
5章 プログラムの書式
6章 リスト
7章 手続き
8章 真偽値と条件判断
9章 状態の管理
10章 テストと例外処理
11章 評価モデル
第3部 実用的なプログラミング12章 数値
13章 文字と文字列の処理
14章 入出力
15章 テキストの構築
16章 さまざまなデータ構造
17章 総称関数とオブジェクト
18章 構文の拡張
19章 継続
20章 モジュールシステム
21章 デバッグ
22章 データベース
23章 日付と時間
第4部 Webアプリケーションへの応用24章 GaucheでCGIスクリプトを書いてみる
25章 スケジュール管理アプリケーション
26章 継続渡しによるWebアプリケーション
27章 Kahuaアプリケーションを書こう
付録AGaucheインストール
付録BEmacsの設定
付録CKahuaインストール
付録DGaucheとR6RS



































小節
第1部 予備知識1章 LispとScheme
2章 Gaucheの特徴
3章 Gaucheの設計思想や誕生の背景
第2部 Gaucheの基礎練習4章 Gaucheの開発スタイル
5章 プログラムの書式
6章 リスト
7章 手続き
8章 真偽値と条件判断
9章 状態の管理
10章 テストと例外処理
11章 評価モデル
第3部 実用的なプログラミング12章 数値
13章 文字と文字列の処理
14章 入出力
15章 テキストの構築
16章 さまざまなデータ構造
17章 総称関数とオブジェクト
18章 構文の拡張
19章 継続
20章 モジュールシステム
21章 デバッグ
22章 データベース
23章 日付と時間
第4部 Webアプリケーションへの応用24章 GaucheでCGIスクリプトを書いてみる
25章 スケジュール管理アプリケーション
26章 継続渡しによるWebアプリケーション
27章 Kahuaアプリケーションを書こう
付録AGaucheインストール
付録BEmacsの設定
付録CKahuaインストール
付録DGaucheとR6RS



12章を読み終えた。


12章 数値


正確数、不正確数は初めて聴いた用語。


あと、四則演算の「法」も知らなかった。


細かい関数は覚えきれないので、何ができるのかをひとまずさらう。


13章 文字と文字列の処理


最後の方にある正規表現処理が苦手。



第20章 モジュールシステム


Gaucheのモジュール例が載ってる。


この辺結構興味あって、既存のソースコード(srfi-0.scmとか、www/cgi.scmとか)に目を通してみた。


まだ、基本文法の知識不足で読めてないけど、モジュールに必要な構文は理解。



疑問に思った点

SRFIライブラリの内、useを使って読み込む必要があるライブラリ(srfi-13など)と組み込みのライブラリ(srfi-0など)はどのような理由で分けられているのか不明。


なぜ?歴史的なものであろうか...??


関連事項見つけた。



Gauche (0.8.14)


0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 18, 19, 22, 23, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 42, 43, 45, 55, 61, 62, 87


http://srfi.schemers.org/srfi-implementers.html

ひとまずGauche0.8.14は上記をサポートしているそうです。


追記:GaucheのSRFIライブラリサポート予定見つけた。


http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3Asrfi



SRFIってなによ?

そもそもSRFI自体がなんなのか知らないから読む。


Scheme Requests for Implementation


SRFIの細かいのはあとで読み解く。いまはGaucheに慣れるのが優先。



モジュール作成に必要な文法


  • define-module

  • export

  • provide


とか。


久々にメモしとく。

一行進む(多分downのn)
Ctrl + n
一行戻る。(多分upのp)
Ctrl + p



7章の手続きを読み終えた。letとか難しいので再度読み直すこと。


lambdaは問題なし。


次はひとまず、14章の入出力を読む。



余談だけど、いつ読んでるかと言うと



  • 会社に早くついた時

  • 帰宅後の夕飯前

  • 帰宅後の寝る前

  • 土日


とか。


履修表

































小節
第1部 予備知識1章 LispとScheme
2章 Gaucheの特徴
3章 Gaucheの設計思想や誕生の背景
第2部 Gaucheの基礎練習4章 Gaucheの開発スタイル
5章 プログラムの書式
6章 リスト
7章 手続き
8章 真偽値と条件判断
9章 状態の管理
10章 テストと例外処理
11章 評価モデル
第3部 実用的なプログラミング12章 数値
13章 文字と文字列の処理
14章 入出力
15章 テキストの構築
16章 さまざまなデータ構造
17章 総称関数とオブジェクト
18章 構文の拡張
19章 継続
20章 モジュールシステム
21章 デバッグ
22章 データベース
23章 日付と時間
第4部 Webアプリケーションへの応用24章 GaucheでCGIスクリプトを書いてみる
25章 スケジュール管理アプリケーション
26章 継続渡しによるWebアプリケーション
27章 Kahuaアプリケーションを書こう
付録AGaucheインストール
付録BEmacsの設定
付録CKahuaインストール
付録DGaucheとR6RS

履修表(はてな記法)


履修表をはてなダイアリーで使いたい方は下記をコピペして下さい。



|*部|*章|*節|*小節|*済|
|第1部 予備知識|1章 LispとScheme| | | |
| |2章 Gaucheの特徴| | | |
| |3章 Gaucheの設計思想や誕生の背景| | | |
|第2部 Gaucheの基礎練習|4章 Gaucheの開発スタイル| | | |
| |5章 プログラムの書式| | | |
| |6章 リスト| | | |
| |7章 手続き| | | |
| |8章 真偽値と条件判断| | | |
| |9章 状態の管理| | | |
| |10章 テストと例外処理| | | |
| |11章 評価モデル| | | |
|第3部 実用的なプログラミング|12章 数値| | | |
| |13章 文字と文字列の処理| | | |
| |14章 入出力| | | |
| |15章 テキストの構築| | | |
| |16章 さまざまなデータ構造| | | |
| |17章 総称関数とオブジェクト| | | |
| |18章 構文の拡張| | | |
| |19章 継続| | | |
| |20章 モジュールシステム| | | |
| |21章 デバッグ| | | |
| |22章 データベース| | | |
| |23章 日付と時間| | | |
|第4部 Webアプリケーションへの応用|24章 GaucheでCGIスクリプトを書いてみる| | | |
| |25章 スケジュール管理アプリケーション| | | |
| |26章 継続渡しによるWebアプリケーション| | | |
| |27章 Kahuaアプリケーションを書こう| | | |
|付録A|Gaucheインストール| | | |
|付録B|Emacsの設定| | | |
|付録C|Kahuaインストール| | | |
|付録D|GaucheとR6RS| | | |

対象書籍



プログラミングGauche



プログラミングGauche








java-jaという破滅集団から生まれた更なる破滅集団。


その名は...


java-ja.js


活動



他言語のハッカソンに参加してJavascriptしか書かない等の精力的な活動を行なっている。


http://java-ja.yoshiori.org/index.php?java-ja.js

Python温泉での噂は私も聴いた...さすが。


目標



最終的な目標はLinuxカーネルをjsで書く事 (進捗: 0/10,000,000行)


http://java-ja.yoshiori.org/index.php?java-ja.js

おお。楽しそう!


総括


という訳で、国内に活発なjavascriptコミュニティを知らなかっただけに嬉しいです。


これを機にJavaScripterな私は積極的に参加したいです。



そういえば、Rhino触る予定だったの放置してた...orz


参考


java-ja.js

http://java-ja.yoshiori.org/index.php?java-ja.js


java-ja

http://java-ja.yoshiori.org


Rhino

https://developer.mozilla.org/ja/Rhino




オライリーから出てる、プログラミングGauche。


1週目は流し読みだったので、2週目は更に腰を入れて。レッツゴー!!



プログラミングGauche



プログラミングGauche






履修表

































小節
第1部 予備知識1章 LispとScheme
2章 Gaucheの特徴
3章 Gaucheの設計思想や誕生の背景
第2部 Gaucheの基礎練習4章 Gaucheの開発スタイル
5章 プログラムの書式
6章 リスト
7章 手続き
8章 真偽値と条件判断
9章 状態の管理
10章 テストと例外処理
11章 評価モデル
第3部 実用的なプログラミング12章 数値
13章 文字と文字列の処理
14章 入出力
15章 テキストの構築
16章 さまざまなデータ構造
17章 総称関数とオブジェクト
18章 構文の拡張
19章 継続
20章 モジュールシステム
21章 デバッグ
22章 データベース
23章 日付と時間
第4部 Webアプリケーションへの応用24章 GaucheでCGIスクリプトを書いてみる
25章 スケジュール管理アプリケーション
26章 継続渡しによるWebアプリケーション
27章 Kahuaアプリケーションを書こう
付録AGaucheインストール
付録BEmacsの設定
付録CKahuaインストール
付録DGaucheとR6RS

履修表(はてな記法)


履修表をはてなダイアリーで使いたい方は下記をコピペして下さい。



|*部|*章|*節|*小節|*済|
|第1部 予備知識|1章 LispとScheme| | | |
| |2章 Gaucheの特徴| | | |
| |3章 Gaucheの設計思想や誕生の背景| | | |
|第2部 Gaucheの基礎練習|4章 Gaucheの開発スタイル| | | |
| |5章 プログラムの書式| | | |
| |6章 リスト| | | |
| |7章 手続き| | | |
| |8章 真偽値と条件判断| | | |
| |9章 状態の管理| | | |
| |10章 テストと例外処理| | | |
| |11章 評価モデル| | | |
|第3部 実用的なプログラミング|12章 数値| | | |
| |13章 文字と文字列の処理| | | |
| |14章 入出力| | | |
| |15章 テキストの構築| | | |
| |16章 さまざまなデータ構造| | | |
| |17章 総称関数とオブジェクト| | | |
| |18章 構文の拡張| | | |
| |19章 継続| | | |
| |20章 モジュールシステム| | | |
| |21章 デバッグ| | | |
| |22章 データベース| | | |
| |23章 日付と時間| | | |
|第4部 Webアプリケーションへの応用|24章 GaucheでCGIスクリプトを書いてみる| | | |
| |25章 スケジュール管理アプリケーション| | | |
| |26章 継続渡しによるWebアプリケーション| | | |
| |27章 Kahuaアプリケーションを書こう| | | |
|付録A|Gaucheインストール| | | |
|付録B|Emacsの設定| | | |
|付録C|Kahuaインストール| | | |
|付録D|GaucheとR6RS| | | |



Gaucheについて調べてたら、ブラウザのタブ占有数がえらい事になってきたので、一回まとめる。



Gauche ユーザリファレンス


ShiroKawa氏が管理されているGaucheユーザリファレンス。


http://practical-scheme.net/gauche/man/gauche-refj.html


モジュールに関しても載っているので、モジュールソースコード読む前に目を通すのが吉。



GaucheによるWEBフレームワークKahua


http://khead.kahua.org/


リファレンスが充実していてありがたい。



Chaton (「しゃとん」)


今は亡きLingerのGauche部屋を引き継ぐ。


Chaton



Gauche部屋

Chaton Gauche


SourceforgeにBSDLicenseで公開されている。


Chaton Code


追:ちなみにjava-jaはLingerからIRCに乗り換えました。



practical-scheme.net


SchemeやGaucheについての情報交換されてる場。


http://practical-scheme.net/wiliki/wiliki.cgi


というか、このwiki自体Gauche実装ですね。わかります。



wiliki

http://sourceforge.net/projects/wiliki/



wilikiに蓄積されたGaucheのページ


この情報は熱い!!


http://practical-scheme.net/wiliki/wiliki.cgi?Gauche


こっそり追加...


http://practical-scheme.net/wiliki/wiliki.cgi?rokujyouhitoma



mixiのGaucheコミュニティ


mixiのGaucheコミュニティは300人を超えてます。


http://mixi.jp/view_community.pl?id=197784



その他


R5RS

http://www.schemers.org/Documents/Standards/R5RS/HTML/


というわけで...


僕のブラウザのタブが10個くらい減ってすっきりしました。



代わりにダイアリーの情報が散漫になったのでまとめ直すかもしれません...。


こちらは雑多なメモ。はてなダイアリーにまとめたらあげる。

(use dbi)
(use gauche.sequence)

(define *db-name* "dbi:mysql:db=mysea;host=localhost")
(define *db-username* "root")
(define *db-password* "root")
(define *mysql-con*
(dbi-connect *db-name* :username *db-username* :password *db-password*))
(define (test)
(for-each print (dbi-do *mysql-con* "SELECT * FROM t_category"))
(dbi-close *mysql-con*))


dbiを使ってのmysql接続は、Gauche-dbd-mysql-0.2.2.tgzをインストールしてないとだめ。Gaucheの再インストールは必要ない。

gauche-package install -S root Gauche-dbd-mysql-0.2.2.tgz


で入れられるから楽チン。

参考:http://www.kahua.org/show/dev/DBI/dbd.mysql

あと別の参考だがGaucheのユーザリファレンスは参考になる。
http://practical-scheme.net/gauche/man/gauche-refj.html#Top

という感じに当面はGaucheに関するメモ書きを連ねる。
あまりにどうでもよい備忘録だったので、はてなダイアリーではなくこちらへ書く。

昔サイト管理画面を作ってた時に、FCKEditorって言うのを使ってたんだけど、先月CKEditor3.0ってことで高性能化してたので、使ってみた。

http://docs.fckeditor.net/

というのを忘れないように。



はまったので備忘録。


※JREの話です。



経緯


Eclipseを入れて、プラグインを使おうとしたんだけど、どうしてもプラグインが動かない。


どうしたのかなと思って調べてたら、Java1.6じゃないといけないのに、Java1.5だった...。


Macのソフトウェア・アップデートによってJavaをアップデート。


MacOS10.5にJava1.6がリリースされたので、アップデート。


Javaのバージョン確認。


terminalで下記を実行。このままだと、Java1.6がインストールされたけどJava1.5が選択されてる。>|java|


# java -version


java version "1.5.0_20"


Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_20-b02-315)


Java HotSpot(TM) Client VM (build 1.5.0_20-141, mixed mode, sharing)


||<


Javaのバージョンを確認


下記を実行すると、Java Preferencesウィンドウが開くので、Java1.6を上位に持ってくる。



# /Applications/Utilities/Java\ Preferences.app/Contents/MacOS/Java\ Preferences

キャプチャ

f:id:rokujyouhitoma:20090907221152p:image


再度Javaのバージョンを確認


あわせて読みたい

  • あわせて読みたいブログパーツ

Lingr java-ja

ウェブページ

Powered by Movable Type 4.1