Nokogiri で xml2hash

実際に使ってみたら色々と残念な動作をしたので直した

def xml2hash(doc)
  result = nil
  doc.children.each do |child|
    if child.text?
      return {doc.name.to_sym => doc.content}
    elsif child.cdata?
      return {doc.name.to_sym => doc.child.content}
    elsif child.blank?
      return {doc.name.to_sym => nil}
    else
      child_result = xml2hash(child)
      key = child_result.keys[0]
      value = child_result.values[0]
      result ||= {}
      if result[key]
        result[key] = [result[key]] unless result[key].class == Array
        result[key] << value
      else
        result[key] = value
      end
    end
  end

  {doc.name.to_sym => result}
end

doc = Nokogiri::XML(@session.body) do |config|
  config.noblanks
end
p xml2hash(doc.root)

AdbancedDataGridでプログラムから複数セルを選択させる

ひさびさにFlexなんてものを触る機会があったのでメモ

selectedCells = [ { rowIndex : 0, columnIndex : 0 }, { rowIndex : 1, columnIndex : 0 }]

思いっきりドキュメントに書いてあったんだけど、直前までJavaScriptいじる仕事だったから微妙に文化が違って、プロパティに値入れたら画面反映されるっていうのが認識できなかった。

オムロン 体重体組成計 カラダスキャン HBF-701 レビュー

オムロン 体重体組成計 Karada Scan701 HBF-701

オムロン 体重体組成計 Karada Scan701 HBF-701

部位ごとの測定については自分の他に友人二人にも測ってもらった結果、ちゃんとそれぞれの特徴が出てたので精度は問題なさそう。自分は上半身の筋肉量が極端に少ないとか。皮下脂肪率は全体的に低いとか。
あと体年齢も3人の健康度順に並んでたので問題ないかなと。全員実年齢は同じだけど、体年齢は18歳、26歳、31歳と出たりして面白かった。

毎日の測定結果を記録とかはしてくれないけど、基準のデータは登録できるので、ある日の測定結果と今の状況の差は簡単に確認できそう。まずは買ってから最初に測定したデータを基準として登録しておいて、そこから健康的な値になるようにがんばると理想の体型に近づく。理想の体型になったら基準データを登録しなおして、差を確認しながら体型を維持する運用が良さそう。たぶんきっと。

何回か測ってみるとやっぱり体内の水分量とかで結果がだいぶ変化するので、毎日計測を続けるなら計測のタイミングを一定にする必要がありそう。正しい測定方法やら測定する時間については説明書に詳しく書いてあったので、参照は必須。定番のふろ上がり計測はダメ、ゼッタイ。

商品の説明書は買う前でも
http://www.healthcare.omron.co.jp/product/hbf701_1.html
から落とせるので購入を検討する場合は読んでおくと参考になるかも。

というわけでまとめると、トレーニングとかダイエットのモチベーション維持には十分効果的だと思う。

他の商品を試用とかはしてないので比較してのレビューは無理。
しばらく使ってからまたレビューし直すかも。

randomでレコードを取得

DBからランダムでレコードを取得したいときは↓みたいな感じ。

MySQL

SELECT * FROM hoge ORDER BY RAND() LIMIT 5;

PostgreSQLSQLITE

SELECT * FROM hoge ORDER BY RANDOM() LIMIT 5;

頑張っていろいろ試行錯誤した後にふと思いついて調べたら、こんな簡単にできた。

Ruby on Railsでenviroment.rb以外から設定を呼び出したりする

enviroment.rbで↓みたいに書いとく

Rails::Initializer.run do |config|
  $config = config
end

DB接続の設定とかは↓みたいに使える

db_conf = $config.database_configuration[RAILS_ENV]

そろそろ書かないと1年経ってしまいそうだったから書いてみた。非常に需要がなさそうなネタ。
これからは卒研でJRuby on RailsからJena使ったりしてたから、そこら辺を整理して連載とかしたいところ。

モジュールで定義されたクラス変数

Rubyではモジュールで定義されたクラス変数は、include されたクラス間で共有されるのか。気づかなくてしばらくはまった。

そうして欲しくないクラス変数の定義は

module Foo
  def self.included(mod)
    @@hoge = 'hogehoge'
  end
end

とかやるべきなのかな。よく分かんない。