今日の研究記録
Rubyをいろいろいじって勉強。深いなRubyは。多分非常に初歩的なことなのだが、気づいたことをメモ的に書く。明日は計算系のRMSDがなぜか不安定な根拠を探ろう。
Rubyからシェルコマンド
%x{}で囲めばいい。バッククオートでもいける(backticksという)が、バッククオートの入力法がわからん。まぁ%x{}はbackticksを使うらしいので、前者で良い。
今までがんばって慣れないシェルスクリプトを使っていたのが馬鹿みたいだ。僕の認識では
- シェルスクリプト
- メリット:コマンドを普通に書ける
- デメリット:文法になじまない
RubyのModule
便利だ。なるほどこうして使うのか
ファイル1"hoge.rb"に
module Hoge aaa = 100 def Hoge.bar(x) #... end end
とか書いて、他のファイルから
require 'hoge' percent = value / (Hoge::aaa) y = Hoge.bar(Hoge::aaa)
とか。定数アクセスが「::」だ。
正規表現
あるパターンを指定して、そいつをそのままにして部分的置換。「さっきマッチしたもの」を参照する特別な表現があるはず…と探した。
:%s/ \([A-Z][A-Z]*\) \1 / \1 /g
[A-Z][A-Z]*は、「一文字以上の大文字アルファベット」にマッチする(※1)。 注目すべきは、これを囲む\( \)である。 このようにエスケープした丸括弧で囲まれた部分は、 その後に続く検索、置換文字列内で参照することができる(※2)。 \1の部分がそれである。 これは[A-Z][A-Z]*でマッチした文字列に置き換えられる。
例えば、[A-Z][A-Z]*にONがマッチしたときは、置換コマンドは
:%s/ ON ON / ON / g
と指定したことになる。
(略)
\( \)は複数個配置できるし、入れ子にもできる。 それらは、\1, \2, \3, ..., \9を用いて9個まで参照可能である。 この番号は、最も左にある\(から、1から順に割り当てられる。
(略)
なお、検索文字列全体は、&で参照することができる。
load to vi master - 技
→前のマッチ全体は"&"で参照できる。
また、/\(...\)/ とエスケープ丸括弧で囲んだ中身を\1, \2, ..., \9で参照可能。
Finderが落ちた
フロッピーに入れたデータを読もうとしてUSBでつないだら、実験装置依存で作成されるフォルダの変わりになぜかUNIX実行ファイル(名はフォルダの時のと同じ)があって、ロック解除して実行したらFinderが落ちた。立ち上がらないのでセーフブートで再起動。一方フロッピーは、撮影所(?)のやつでフォーマットした(リモコンから)。
→入った。とりあえずデスクトップにデータを移し、もっかいノーマルで再起動。