Gauche > Archives > 2011/01/24

2011/01/24 07:08:21 UTCPettal管理人
#
お初にお目にかかります。Pettal管理人ともうします。バックエンドにGaucheを使用した「Pettal」というWebアプリを作成しました。Webで付箋を貼れるスクラップ帖アプリです。お試し版をリリースしたので、ぜひ一度試してみてください。
http://pettal.net/
#
それから、はてなでブログも始めました。
Gaucheを使った「S式->JSON変換」や、Javascriptでの「連想配列->S式変換」のコード等を紹介しています。
こちらもよろしければ、こちらものぞきに来てください。
http://d.hatena.ne.jp/harry-y
#
あれ?投稿したコメントの表示が他のコメントと違うようなのですが、投稿方法間違っていますか?
#
マルチポストになるのかもしれませんが、後ほどmixiのGauche部屋にも投稿させていただきます。
2011/01/24 07:16:55 UTC齊藤
#
一回の投稿が複数行だった場合 (改行が含まれていた場合) にはコードを貼った扱いとなり、 pre タグで囲まれます。
2011/01/24 07:19:07 UTCPettal管理人
#
了解いたしました。ありがとうございます。
2011/01/24 07:32:09 UTCshiro
#
性能のチューニングや機能不足で困ったことがあったら遠慮なく言ってください。
2011/01/24 07:33:09 UTCPettal管理人
#
いきなりで厚かましいのですが、Thriftに対応したライブラリなんて、計画されていますか?GaucheからCassandraにアクセス、やってみたいなあと思っています。
2011/01/24 07:38:01 UTCshiro
#
私個人はまだ必要としたことがないので特に計画はありませんが、あれば使いたい人は多そうですね。
2011/01/24 07:41:57 UTCPettal管理人
#
そうですね。了解しました。ありがとうございます。現在のところ、Gaucheには非常に満足しております。Gauche-fastcgiを使うことで、Webアプリとしてのレスポンスも良好です。今はtrunk 7208を使用しておりますが、大きな問題はありません。Gauche、すばらしいです。
2011/01/24 08:08:47 UTCayato
#
むむむ、どういう風にバックエンド作ってあるか個人的に興味ありまくり。
2011/01/24 08:18:11 UTCPettal管理人
#
えへへ、嬉しいですね。基本的な構造は単純です。(with-fastcgi (lambda() (cgi-main (lambda ・・・))))でGET/POSTを受け取って、リクエスト内容によって処理関数をディスパッチして、レスポンスをJSONにして返しているだけです。行数はコメント含めて9000行くらい。WebサーバはApache、データベースはMySQLを使っています。
2011/01/24 08:23:23 UTCayato
#
「カラムをキーとバリューだけ」。SQLへのトランスレータ作ったりですか?
2011/01/24 08:27:08 UTCPettal管理人
#
(get-db テーブル名 キー1 キー2)でレコードを取得する関数は作っています。トランスレーターというほどのものではありません。レコードの格納は(put-db テーブル名 キー1 キー2 バリュー option)です。バリューはkv-list、optionは'updateか'insertを指定できます。指定しなければレコードチェックして自動的にupdate/insertを判別します。
#
get/putでレコード操作を統一すると、アプリ作成が単純になっていいです。うまくやればそのままCassandraへも移行できるのでは、と期待しているのですが。
2011/01/24 08:37:48 UTCayato
#
勉強になります。FriendFeedは全てを(SQLの上で)キー、バリューに。Redditは全てを(SQLの上で)subject、predicate、objectに。っていう感じなのかなあ。
2011/01/24 08:41:06 UTCPettal管理人
#
FriendFeedはそうみたいですね。その代わりバリュー内部を構造化して、スキーマ代わりにしているのだと思います。私のやり方もそれです。ただしこうすると、RDBのカラム内に複数のカラムが入ってくることになるので、アプリケーション側で“ほどいてやる”必要があります。ちなみにPettalではバリュー内のデータ構造は階層的なkv-listになっているので、これに対応した関数も作成しています。最初はget-keywordをつなげて要素を取り出していたのですが、これではどんどんコードが長くなってしまうので。
2011/01/24 08:46:05 UTCayato
#
バリューの中身がクエリの条件に関わってこないなら単純にwriteしたオブジェクト入れてやると良さそう。
2011/01/24 08:50:02 UTCPettal管理人
#
それもアリだと思います。
2011/01/24 11:51:12 UTCshiro
#
構造式がラスボスのようだ。 Tree-like giant is largest molecule ever made http://www.newscientist.com/article/dn19931-treelike-giant-is-largest-molecule-ever-made.html