たんでー のすべての投稿

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
}

magformers

magformersで遊んでみた。LEGOと違って、ブロックの積み重ねでなくて平面の組み合わせで構造ができていくのは面白いが、ゆがみがない構造を作ろうと思うと規則的に並べるしかなくて、いくつかのパターンを作ってみたら飽きるかな。

正五角形もちゃんと使って丈夫で大きな構造を作るには規則的な(磁石に頼らないで、辺がぴったりあうような)並べ方にしないといけない。これに気付かないとすぐつぶれてしまう。試行錯誤して新しい組み合わせを探すのは楽しいが、まぁ一通りやったら終わりかな。

といっても、四角と三角だけだと変化がなくて面白くないだろうが、平行な辺がない図形は構造を作るのに使いにくい、、。(まぁさすがに辺の長さがデタラメに違うものは無いようだが、、、。ないよね?)

個人的にはLEGOの方が好きだが、まぁこれはこれで面白いところもあるかもね。
しかし、頭の中だけでこの手の図形を作ってみるのが相当辛くなってた。まぁできた時なんて無かったかもしれないけど。

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

デンタルフロスをはじめた。今のところ毎日続いている。

先月歯医者に検診とクリーニングに行ったときに、歯肉炎があるようだーの話になり、熱心な歯医者さんに「80まで歯を残すためにぜひ毎日デンタルフロスをやったほうがいい。歯磨きができていないひとにはすすめたりはしないが、できているようなので、次の一歩としてぜひやったほうがいい。」といったようなことを熱く語られた。

歯間ブラシの方が楽だけど、歯間が狭くて入らないとのことだったので、じゃぁやってみるかとデンタルフロスをはじめてみた。

歯医者で言っていた通り、初めのうちは血が出てきたりしたけど、もうでなくなってきたし、なれたらテレビでも見ながらスルッとこなせるようになってきた。歯磨きした後にフロスでしゃしゃっとやると、食べかすとかが絡まっていることが思ったより多くて、効果があるのかもしれないと納得し始めている。(これは、フロスをし始めたから歯間が開いたんじゃないよなー、、、。)

歯医者がいうには、食べかすから虫歯が繁殖し始めるのは、24時間はかかるらしいから、一日一回は歯磨きとフロスをしてねと言うことだったが、今のところちゃんと毎日やっている。そろそろ習慣になってきた。

医者が相手だと、そういうならやってみようか、という気になりやすいよね。

このブログを整理した。

ブログを整理した。整理といってもタグを付けたりカテゴリを整理したりとか。
あまり意味はないけど、過去の記事を読んでいろいろ思い出して来たり、昔は結構更新してたなぁ、と思ったりした。
うーん。疲れた。

さらに、いろいろプラグインをあさってみて、リンク切れを修正したりとかキャッシュを使うようにしたりとかコードに色がつくようにしたりとかした。

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の組み合わせでドハマリした話

ip電話をひいた。

今まで、遠方への電話用に、家族割り適用のケータイを一台契約していたけど、それもそんなに激しく使うわけでもないので、プロバイダが提供しているip電話を契約した。050の番号だけど、普通に使えそうな感じだったので、割と満足。フリーダイヤルはたぶんかけられないけど、まぁ安いからいいし、ip電話でかけられない先にどうしてもかけたいときは、ケータイあるからね。ちなみに、加入電話はひいていない。電話機は以前の購入したものがあった。bluetoothでケータイからハンズフリーでできるやつ。

しかし、ブロードバンドモデムとルータとip電話機器と電話機にそれぞれACアダプタが必要なのは邪魔臭いのでなんとかならんのかなー。