2007-11-27
■ [prog] PAC(Presentation-Abstraction-Control)パターン
なんかMVCの進化系パターンとして、PACなるものがあるらしい。
- PACフレームワーク - MVCの次に来るもの|Ouobpo
- Presentation-Abstraction-Control
- Presentation-abstraction-control - Wikipedia, the free encyclopedia
MとVとCを持った小さいコンポーネントがたくさんあり、それぞれがCを介してやりとりする…みたいなイメージか。
2番目のサイトでは、使用例として「新しいGUIコンポーネントを開発するとき」が挙げられている。 ボタンやパネルなどいろいろなコンポーネントがあり、それぞれのCを通してイベントをやりとりすると。
■ [ruby] LiveConsole
実行中のRubyプログラムにTCP経由で接続して、デバックプリントしたりパッチ当てたりなんだり、というソフトウェア。
Lisperはよくそういうことをやる(らしい)けど。
まだ認証機能がないので、イントラネット以外で使わないように、とのこと。
■ [ruby] Rubyスクリプトであり、バッチファイルでもあるファイルの作り方
こういうのがテンプレらしい。
@echo off ruby -x "%~f0" %* goto :EOF #!ruby #---------------ruby script starts here puts "hello, rb.bat" #---------------ruby script ends here __END__ :EOF
-xなんてオプションがあったんですねえ。
メッセージ中のスクリプトを取り出して実行します。スクリプトを読み込む時に、`#!'で始まり, 'ruby'という文字列を含む行までを読み飛ばします。スクリプトの終りはEOF(ファイルの終り), ^D(コントロールD), ^Z(コントロールZ)または予約語__END__で指定されます。
[Rubyリファレンスマニュアル - Rubyの起動より引用]
「%~f0」についてはDOS窓で call /? なんかを。
wget.rb.bat
試しに、超適当なwgetもどきを作ってみました。
@echo off ruby -x "%~f0" %* goto :EOF #!ruby #---------------ruby script starts here require 'open-uri' if ARGV.size == 0 puts "usage: #{$0} url" else url = ARGV[0] fname = File.basename(url) puts "downloading #{url} to #{fname}..." File.open(fname, "w") do |f| f.write open(url){|io| io.read} end puts "done." end #---------------ruby script ends here __END__ :EOF
普通にやると
- wget.rbを書く
- それを呼び出すwget.batを書く
- それらをPATHが通ったディレクトリに置く
という手順になるんですが、これだと wget.rb.bat というファイルを作るだけで済むので楽ですね。
始めましてgaryoです。<br>Windowsのバグのせいで標準入出力でリダイレクトパイプを使うRubyスクリプトはBAT埋め込みが必要らしいですね。<br><br>http://ruby.g.hatena.ne.jp/garyo/20071129/1196287722
らしいですねぇ。僕は単純に、rbの関連付けをしてなかっただけなんですが…^^;