作図ツールcal.js
久々にプログラミングをしてみました。cal.jsはコンパスとものさしで描ける図をJSコードで書いて作図をするJavaScriptライブラリです。下の動画はそのGUI版の試作です。
ここで遊ぶことができます。ソースコードは一応まだ"公開"してません。
描いた図
Ruby技術者認定試験(シルバー)練習アプリrcertの更新
実施日、読み込んだファイル、間違えた問題などのレポートを書き出すように修正しました。
動画
2種ある範囲演算子の暗記方法
範囲演算子は'0..10'と'0...10'があります。どっちかが10を含んで、どちらかが10を含まないんですが、さぁこれをどう暗記しようかなという話です。使用頻度が高い方をおぼえたら、消去法でどちらの意味も分かるのですが、なんとなく範囲演算子ってあまり書いた記憶がありません。たまに書くという感じ。
ということで方針を変更。記号の意味をこじつけてみましょう。まず、'a..b'がbを含む方なのですが、こちらを基本形とします。すると、bを含まない方は'a..(bの前)'と書くことになるでしょう。bの前を出す関数をリテラルで表しているのが'.b'を考えれば辻褄があいます。
更にa=0, b=100としてaからbの数字を並べて書くとa1...99b。更に関係ない部分を除くと99bって感じに書ける。でも実際にはb=100とは限らないので'.b'と書くと考えると割とグラフィカルな記号です。どうでも良い話ですが、除算の記号÷も上の.に左の数を下の.に右の数をというように(例えば3÷6は3/6)、グラフィカルな記号なんだと勝手に納得してます。
静的ページのミドルウェア(Rack)
Rack::FileのラッパーStaticが静的ページを扱うミドルウェアになっています。railsもpublicディレクトリの表示は同様の方法をとっています。なので、静的なページをpublicに置くとそちらが優先されます。
動作デモ
Engine, Applicationはクラスメソッドの呼び出しに失敗した場合は、インスタンスメソッドを実行する
railsアプリのconfig.ruを見ると"run XXX::Application"となっていて、でもRails::Applicationにはcall(env)がなくてってので、どうして動くのか理解できませんでしたが、ソースコードを見ると
class Railtie autoload :Configurable, "rails/railtie/configurable" ... class << self def inherited(base) unless base.abstract_railtie? base.send(:include, Railtie::Configurable) ... end end ...
となっていて、ようするにXXX::ApplicationはConfigurableをincludeしています。Configurableはだいたい次のコードのConfigurableをextendしたような効果があります。それで、rackがXXX::Application.call(env)しても動いてくれるのです。
最後にちょっと言語の知識をメモを。「rubyはメソッドが見つからないとき、method_missingを呼ぶきまりになっている」ようです。