「趣味」カテゴリーアーカイブ

codeiq

しばらく前から気になる広告がいくつか出ていたので、連休の暇つぶしにやってみた。

サクサクっと解けるものは解けるのだけれども、なかなか早く解くアルゴリズムを、想定時間(30分とか)で考えてコードしてテストするのは、結構厳しい感じ。

まぁ、暇つぶしとしてはそれなりによさそうかな。
企業からのスカウトというのが来てしまっても、今のところは困ってしまうのだけれども、暇つぶしとして、ということで、、、。

set_trace_func を使うことで Ruby on Rails のデバッグが超はかどったという話。

最近、 rails で開発しているときに、set_trace_funcでエラー行を表示させるのが便利だったので、メモ。 gem で使っているライブラリも疑っていろいろ見ないといけないので、結構便利だ。

rails側では controllerか何かで適当に
require_relative "hogehoge" if Rails.env.development?
しておいて、hogehoge.rbには下に書いた感じで書くと、はかどった。

実際には、if文の条件をもっといろいろ追加して、余計な出力を出さないようにするが、大筋ではこんな感じ。
eventでc-callやらc-returnを指定すれば、cで書いたメソッドの呼び出しと戻りも表示できる、ということで、いろいろできそうだ。

require 'pp'
set_trace_func lambda{|event, file, line, id, binding, klass|
  if event == "raise"
    # raise 例外が発生したファイル名と行番号を表示。
    print "#{event} at #{klass}:#{id} #{file}:#{line}"

    # 例外が発生した場所でのローカル変数一覧を表示。
    # railsではインスタンス変数やselfを表示させようとすると
    # 表示結果が多すぎて煩雑になる。
    binding.eval(local_variables.map{|v|[v.to_s, eval(v)]})
      .each{|name, val| print "#{name} = #{val.pretty_inspect}" }
  end
}

sinatra で、サーバ側で作成した画像を直接表示

バイナリで送って、javascriptでbase64でencode、、、とか最初は考えたけど、探したらhttp://qiita.com/haruboh/items/b90fcf763295b56b0915を見つけられたので、そのままやった。

まぁ、よくよく考えてみれば当たり前。転送量だってそんなにたいした画像を書くわけでもないので、気にするほどでもなかった。
なお、元記事にある改行コードの削除は、strict_encode64メソッドでエンコードすればOK。

だいたいこんな感じ。
画像作成はgnuplot(と、ruby_gnuplot)を利用。 set output を指定しなければ、ruby変数に処理結果を格納できる。

require 'base64'
require 'gnuplot'
get '/plot' do
  img = Gnuplot.open do |gp|
    # 適当なpng作成処理
  end
  base64 = Base64.strict_encode64(img)
  "<img src='data:image/png;base64,#{base64}'>"
end

で、よくよく確かめたら、今どきのgnuplotは set ternminal svg でsvgをそのまま吐けるので、エンコードとかややこしいことを考えずとも、そのままHTMLにはればよかった。
これだと、gnuplotの日本語fontなど色々ケアしなくてもよいので楽だった。(IE8,9対策に、pngでも描画できないとだめだけども、、、。)

require 'base64'
require 'gnuplot'
get '/plot' do
  img = Gnuplot.open do |gp|
    # 適当なsvg作成処理
  end
  img # svgは普通のXML文字列なので、そのままでOK
end

Microsoft sculpt comfort mouse の関係でbluetoothドライバの設定変更

買った時の記事

sculpt comfort mouse がカクついてイラつく。カクつき始めたら新しい電池を入れればしばらくは快適だが、何が原因かよくわからん。(この電池を入れ替えるとき、eneloopだと電池の出し入れがきついのがまたイラつく。もうむかついたので、電池を入れるとき、引っ張るためのリボンを仕込んだ。)

とりあえず、http://answers.microsoft.com/en-us/windows/forum/windows_8-hardware/why-bluetooth-mouse-keeps-on-disconnecting-in/4d6587f2-a1e9-4486-8a1d-07299cc78d7c を参考にして、
デバイスマネージャー > ヒューマンインターフェース デバイス > Microsoft ハードウェア Bluetooth デバイス > 電源の管理 タブ > 「電力の節約のために、コンピューターでこのデバイスの電源をオフにできるようにする。」 のチェックを外した。

意味があるかはわからないが、とりあえずはこれでしばらく様子見。

logicool k400r を買って DN2820fykh 上のCentOS7で使った話

nuc DN2820fykh向けのキーボードとして、無線のlogicool k400r を買った。
買ってから気づくキー配列のひどさ、、、。

それはともかく、DN2820fykhのBIOSでは買ったまま、レシーバを刺しただけでちゃんと認識したものの、
CentOS7では認識しなかったので、ちょっと工夫して解決した。 CentOS7.2頃には解決しているはず。
続きを読む logicool k400r を買って DN2820fykh 上のCentOS7で使った話

Intel DN2820fykhでCentOS7が起動しない件

DN2820fykhには、CentOS7をインストールして利用していたが、先ごろkernelのアップデート以降起動しなくなった。
grub設定でカーネルパラメタをいじるか、BIOS設定をいじるかで解決!

なお、少なくともBIOS0048ではこの問題は解決しているようです。

続きを読む Intel DN2820fykhでCentOS7が起動しない件

VE-TA10とWN-AC1167DGRの組み合わせでドハマリした話

宅内の無線LANルータをBuffaloのWHR-HP-GNからIODATAのWN-AC1167DGRに変えたら、自宅のIP電話がかからなくなった。
宅内のIP電話は、プロバイダが提供しているサービスで、IP電話対応機器として、VE-TA10が送付されてきて、それを利用していた。

結局、VE-TA10の設定を変更することによって解決できた。

続きを読む VE-TA10とWN-AC1167DGRの組み合わせでドハマリした話

intel DN2820FYKH を買うことに決めた。

sheevaplugの代わりにintel DN2820FYKHを買うことに決めた。早ければ明日。遅ければ今週の土曜。

corei3のやつと違って、msataがつなげないけど、OSは使い捨て上等でUSBメモリに入れればいいことに気付いた。https://communities.intel.com/message/222493
まぁ、またログを出さないようにとか、気を付けないといけないけれども。
中のdiskは、今ある外付けHDDの500GBのやつ(結構前に相当安く買った。)のガワをはがしていれることにするので、追加で必要なのはメモリと各種ケーブルのみ。

今日は秋葉原を徘徊してBRIXのceleronのやつの方がいいかなぁとも思ったけど、まぁ、こちらの方が3万くらい安く済むし、sheevaplugと値段もさして変わらない。
ファンの音がうるさくないことと、発熱が少ないことを祈るのみ。

思えばsheevaplugにも、交換用電源やOS用のSDカードなどなど、投資したものだ、、、。
でもやっぱりsheevaplugはいろいろと取り回しが面倒なんだよね~。そろそろfedora14のままというのもつらいので、これを気に乗り換える。
もう、やらせていることもすくないのだけれども、、、。