GW前半ですが、全く普段の週末と変わらない過ごし方をしております。
REMPでやれる作業を進めようかと運営関係者が閲覧できる管理画面などを作っておりました。最初はPadrinoのadminで作ろうと考えたのですが、結局スクラッチしました。
利用状況や再生されている動画のランキングやログインアクティブ数などをとれる様にして便利。あとは本体のチューニングもしていったり新機能出したりしていって、もっとたくさんの人に使ってもらえる様にしたい。
GW前半ですが、全く普段の週末と変わらない過ごし方をしております。
REMPでやれる作業を進めようかと運営関係者が閲覧できる管理画面などを作っておりました。最初はPadrinoのadminで作ろうと考えたのですが、結局スクラッチしました。
利用状況や再生されている動画のランキングやログインアクティブ数などをとれる様にして便利。あとは本体のチューニングもしていったり新機能出したりしていって、もっとたくさんの人に使ってもらえる様にしたい。
REMPが動いているホスティングサービスSqaleの利用事例ページにREMPとストーリーボードが紹介されました。
REMPはこちらから。
特定のカラムを指定して検索した結果は素直にすると、
Visitlog.select([:normalize_count]).where(:group_id => 3, :visitor => '123') => [#<Visitlog normalize_count: 0.0833333>, #<Visitlog normalize_count: 0.0833333>,...]
となるのだけど、これを [0.08333, 0.0833, ...]
といった具合の配列で得たい場合、ActiveRecordにpluckというメソッドがあるのでそれを利用すればよかったことをやっと知った...。
Visitlog.where(:group_id => 3, :visitor => '2457892').pluck(:normalize_count) => [0.0833333, 0.0833333, ...]
mapしたりする方法とか散見したのだけど、この方法がスマートですね。
ふたまわり位遅れてますが、gemライブラリのparallelを使うと並列処理が簡単に書けて便利。
例として、とあるグループ別に記録されている訪問ログに対して各訪問者別の処理をする場合、以下の様な具合でかける。
require 'parallel' processor_count = Parallel.processor_count #CPUコア数取得 Group.select(:id).each do |group| visitors = Visitlog.select(:visitor).uniq.where(:group_id => group.id) Parallel.each(visitors, in_threads: processor_count) do |visitor| visitor_process(group.id, visitor.id) end end
Parallel.each の箇所で引数の in_threads
で与えられた数だけスレッドが作られて適宜実行される。この場合、各訪問者に対して行われる処理は独立なのでこの書き方で大丈夫ですね。
春だわ
いろいろ読んだのだけど、読了したのは8冊。読みかけて止めてる本もいくつかあったりするのですが、正確に読了と言えるのはこの数になってしまう。
今月も、相変わらず水木しげる関連のエッセイを2冊読んだ。
最近のコメント