From: Masao M. <mu...@hi...> - 2003-06-16 15:59:04
|
むとうです。 すっかりSokobanにはまってしまったのですが、 コンティニューができないのがイマイチだったので Ruby/GConfを使って、次回起動時は前回終了時 のステージから始めるようにしてみました。 というわけで、是非、私と一緒にSokobanについて 熱く語りましょう(^^;) というのはおいといて。 今回、初めてRuby/GConfを使ってデータの 保存・読み出しを行ってみたのですが(っておい(^^;)) これ、スゲー良いです。 gconfdが入出力を管理してくれているのでロックの問題とか 一切考えなくて良いですし。 以下に岡さんが訳されたGConfのドキュメントがあります。 興味のある方はどうぞ。 http://www.globe.to/~oka326/archive/gnome/gconf/doc/index.html で、実際にどうやって使うかというと、 以下のような感じです。 たったこれだけで永続的にデータを保存・読み出しできます。 基本的なデータ型しかサポートしてませんが、設定情報としては これで十分でしょう。 --- require 'gconf2' client = GConf::Client.new # データ取得 p client["/apps/hoge/laststage"] p client["/apps/hoge/name"] # データ書き込み client["/apps/hoge/laststage"] = 1 client["/apps/hoge/name"] = "Ruby-GNOME2" --- この例ではわざと読込を先にやっているので1度目はnilが出力 されますが、2度目に実行したときは1, Ruby-GNOME2が出力 されます。 さらに余談ですが。 実装自体はgconfdのバックエンドとしてLDAPやSQLDB等を使える ことを考えている(いた?)ようですが、現状(少なくともRedHat9)は、 $HOME/.gconf/apps/hoge/%gconf.xml というファイルにXML形式で保存されます。 #ただし書き込みは非同期のようです。 --- P.S. なんか、まともに遊べるようになって来ちゃったので ruby-talk/listあたりでアナウンスしちゃおうかしらん。>Sokoban -- .:% Masao Mutoh<mu...@hi...> |