■
Submit test via vim.
I use https://github.com/motemen/hatena-vim .
rails3でYAMLから読み込んだ値をグローバルな定数にする
config/api_key.ymlで認証キーを管理して、これをグローバルな定数として使い回したいとする。
consumer_secret : 'xxxxxxxx' consumer_key : 'xxxxxxxxxxxxxx'
railsは起動時にconfig/initializers/以下においたファイルをロードする。
よってconfig/initializer/constants.rb に以下のように書けばいい。
API_KEY = YAML.load_file("#{Rails.root}/config/api_key.yml")
あとはAPI_KEY['consumer_key']な感じで適当に呼び出せる。
Rails.rootのところをRAILS_ROOTとしていたのがハマりポイントでした。
rails3からの変更点のようです。今更気づいたのかって感じですけど。
Ruby on Rails 3.0 Release Notes — Ruby on Rails Guides
Railties now deprecates:
RAILS_ROOT in favor of Rails.root,
RAILS_ENV in favor of Rails.env, and
RAILS_DEFAULT_LOGGER in favor of Rails.logger.
PLUGIN/rails/tasks, and PLUGIN/tasks are no longer loaded all tasks now must be in PLUGIN/lib/tasks.
メソッド呼び出し時の::と->の違い
Package::Hogeというパッケージがあって、そこで定義されているhugaメソッドがあるとします。
これを呼び出すときに、
Package::Hoge::huga(@args)
と書くのと、
Pakage::Hoge->huga(@args)
と書くのでは動作が異なります。
同じだと思ってました。
なぜなら、
Pakage::Hoge->huga
は、実は
Package::Hoge::huga(Package::Hoge, @args)
を意味しているからです。
アロー演算子(->)を使った場合、メソッドの引数リストにクラス名が渡され、
クラスの継承関係を辿っていくことができます。これにより、
参照urlのように、パールのようなものでネコにニャーと泣かせることができます。
しばらく動物が嫌いになりそうです。
(続・初めてのPerl 11章)
perlboot - Perl オブジェクト指向導入編 【perldoc.jp】 http://perldoc.jp/docs/perl/5.10.0/perlboot.pod#Introducing32the32method32invocation32arrow
solarized,nocomplcache導入
タブ補完
neocomplcacheをインストールしてみた - yuitowest's blog
を参考にしながらnocomplcacheを導入。
括弧類を自動補完
vimを本格的にしようする環境がやってきたので、本腰いれてvimrcを整備することにしました。
eclipseのように括弧補完がやりたかったので以下の設定を入れた。
Vimで括弧/クォートを自動補完 - spiritlooseのはてなダイアリー http://d.hatena.ne.jp/spiritloose/20061113/1163401194
inoremap { {}<LEFT> inoremap [ []<LEFT> inoremap ( ()<LEFT> inoremap " ""<LEFT> inoremap ' ''<LEFT> vnoremap { "zdi{<C-R>z}<ESC> vnoremap [ "zdi[<C-R>z]<ESC> vnoremap ( "zdi(<C-R>z)<ESC> vnoremap " "zdi"<C-R>z"<ESC> vnoremap ' "zdi'<C-R>z'<ESC>
vnoremapについては、引用元の設定そのままだと私の環境では上手く動きませんでした。
が、^Vを削除したら動いたのでよしとする。
vnoremap " "zdi^V"<C-R>z^V"<ESC> を vnoremap " "zdi"<C-R>z"<ESC> としたら動いた。
モデルに含まれる原子座標の最小値と最大値を得る方法
measureコマンドを使う。
例
measure minmax [atomselect top "all"]
measureコマンド解説:
measure http://www.ks.uiuc.edu/Research/vmd/current/ug/node135.html
動的正規表現を使って任意の変数と文字列をマッチさせる
The GNU Awk User's Guide - 正規表現
動的正規表現を使う
`~'演算子や`!~'演算子の右辺に置くものは正規表現定数(スラッシュの間に置 かれた文字列)である必要はなく、任意の式を置くことができる。そのような式 は評価され、必要があれば文字列に変換される。評価され変換が行なわれた 結果は正規表現として扱われる。 このように演算が行われる正規表現は動的正規表現(dynamic regular expression)と呼ばれる。例を挙げよう。
BEGIN { identifier_regexp = "[A-Za-z_][A-Za-z_0-9]+" }
$0 ~ identifier_regexp { print }
これはidentifier_regexpにawkでの変数名を表す正規表現をセ ットし、入力レコード中にこの正規表現にマッチするものがあるかをテストす るものである。
これを使えば任意の変数を含む行を抽出できる。
例
BEGIN{ var="hoge" } $0~var{ print $0 } END{ }