ruby で Access MDB 更新件数取得
ruby でwin32ole を使った Access MDB のデータベース操作で
update文の更新件数を取得するのに手間取ったので
やり方のメモ
Mimori's Algorithms Press | kamiyn の技術メモです
なんかでとりあえずrecordsAffectedという引数が
ありそうなことは分かったんだけど、
rubyは参照渡しのはずなのに変数の中身が変化しない
結局、
http://homepage1.nifty.com/markey/ruby/win32ole/win32ole_qa_ja.html
を見たら、出力用の引数はWIN32OLE.ARGV を使う仕様らしいので、
結局書いたのは以下の様なコード(抜粋)
module DBConnection attr_reader :recordsAffected end cn = WIN32OLE.new("ADODB.Connection") ... cn.extend DBConnection def cn.doQuery sql ... affected = 0 rs = self.Execute(sql, affected) @recordsAffected = affected ...
ジンバブエ・ドルが年率
朝日新聞でジンバブエ・ドルが「ある月に年率換算で2億%のインフレ」という記述を読んだ。
http://www.asahi.com/international/update/1230/TKY200812300156.html
が、もし、1ヶ月で3.1倍になったら2ヶ月で10倍、12ヶ月で1000000倍(1億%)なので、
その月だけを見ると4倍くらい(それでもすごいけれど)にしかなっていないのに年率換算だと2億%になってしまうのではないだろうか。これは誇張表現だと思う。
それとも7月だけで2億%/12のインフレだったのだろうか。もし、そうなら、年2億%というのは少ないと思う。
朝日新聞は年率換算だけでなく、その月に実際どれだけインフレしたのかを書くべきだと思う。
もし、年率だけを使ったら、1日で株価が5%下がった日は1年が200日として、単純な掛け算で年率1000%(株価マイナス)、指数計算で99.99%の下落率ということになってしまう。
特にこういう異常な状態で年率だけを使うのは数のマジックとしては面白いがミスリーディングではないだろうか。同じ様な異常な状態が1年続くわけはないのだから。特に株価や為替は将来の価値を予測して変動することになっているので、1年同じ状態が続くという仮定はおかしい。
カワハギの肝和え
魚の刺身の中で一番美味しいのはカワハギの肝和えらしいということで、
http://plaza.rakuten.co.jp/hazedonblog/2001
とか
http://tops3235.hp.infoseek.co.jp/gekiuma-kimoae.htm
とかを参考に作成。
鯛とかの皮を剥くのは大変だけど、カワハギは手で面白いように剥けた。薄皮は最初に取ろうとすると大変だけど、身を細かくする際にどうせ包丁で切れずに下に残るのであまり問題にならなかった。
調理バサミも適宜使用、味付けは「めんつゆ」。たしかに美味しかったと思う。
RubyでACCESS MDBアクセス
http://jp.rubyist.net/magazine/?0005-Win32OLE
を参考にして、RubyからMDBの操作を試した。
その際、気づいたのだが、上のページのeach_recordの最初のif節が何かおかしいと思う。
self.MoveFirstより後にやるならまだしも、each_recordが現在参照中のレコード位置に依存する結果になってしまう。
(each_recordを二回続けて呼び出した際の動作が恐らく期待通りでない)
が、何もないと、レコードが無い時とかINSERT文の後とかにエラーになるみたいなので、EOF or BOF でなく EOF and BOFとしたら良いかもしれない。
でも、Rubyの特異メソッドは面白いな、と思う。
それを使って、startADOを次のようにすると使いやすいと思う。
def startADO filename cn = WIN32OLE.new("ADODB.Connection") connstr = "DRIVER={Microsoft Access Driver (*.mdb)};Dbq=#{filename}" cn.Open connstr def cn.doQuery sql rs = self.Execute sql rs.extend Recordset return rs end begin yield cn ensure cn.Close end end
DS ファイナルファンタジー4 10ゲーム
スクウェアエニックスのメンバーサイト(http://member.square-enix.com/jp/)
にあった、ファイナルファンタジーのリディアの10ゲームが難しかったので、
計算プログラムを作成した。
http://aofg.web.fc2.com/rydia_10game/
DS版 FF4のミニゲームの方は何も無くても9999点を取れるんだけど、
ウェブのは操作性が悪いと思う。
# 演算子選択にドラッグが必要な意味が分からない。