ruby

バックアップコマンド

試しに、指定したディレクトリにタイムスタンプ付加し、ディレクトリ配下全てをコピーするスクリプトを書いてみた。 比較としてRubyも。 python import sys import shutil from datetime import datetime str = sys.argv[1] date =datetime.today() dist = "…

RESTFulとRails、map.resources

routes.rbに記載するmap.resourcesメソッドで提供される機能について、分かった範囲でメモ書きします。 この機能はREST支援機能なので、まずRESTから確認しました。 REST RESTについての自分の認識。 (ここではRailsにとってのRESTを見ていくので、「アーキ…

Getting Started With Rails

本家のGetting Startedってのを真似て進めてみました。 以下はその際のメモ書きです。 Getting Started With Rails http://guides.rails.info/getting_started_with_rails.html railsアプリ作成 rails blog -d mysql cd blog デフォルトデータベースはSQLite…

Railsセットアップの続き(CentOS on VMWare)

前回の続き。 MySQLのセットアップ yumで。バージョンは5.0.45-7.el5。 sudo yum install mysql mysql-devel sudo yum install mysql-server サーバー入れ忘れてこんなエラーが出るご愛敬などがあった。(ソケットに接続できない。ベタにMySQL立ち上がってな…

Railsセットアップ(CentOS on VMWare)

VMWare上でのRailsセットアップをやったので、今のところまでのメモ書きを載せます。 ローカル側はWindowsXP。 サーバがCentOS5.2 on VMWare。 Railsは2.2でした。 Ruby Ruby-1.8.7をインストール。 今回はデフォルトでいくことに。 /usr/local/bin/rubyがで…

「初めてのRuby」の復習をexpectationsで(変数と式)

# -*- coding: utf-8 -*- require "rubygems" require "expectations" #6章 変数と式 Expectations do expect [true, true] do a = "aaa" b = a [a == b, a.equal?(b)] end expect [true, false] do a = "aaa" b = "aaa" [a == b, a.equal?(b)] end #多値 ex…

「初めてのRuby」の復習をexpectationsで(メソッド)

# -*- coding: utf-8 -*- require "rubygems" require "expectations" #7章 メソッド Expectations do #多値 expect 2 do def foo; return 1, 2, 3; end a, b, c = foo b end expect [1, 2, 3] do def foo; return 1, 2, 3; end foo end #クロージャ expect …

「初めてのRuby」の復習をexpectationsで(オブジェクトとクラス)

# -*- coding: utf-8 -*- require "rubygems" require "expectations" #8章 オブジェクトとクラス Expectations do #加算メソッドの上書き expect 3 do class Fixnum alias original_add + def +(rhs); original_add(rhs).succ; end end 1 + 1 end #上書きの…

「初めてのRuby」の復習(入出力)

入出力はexpectationsに書き下すのが面倒そうなので普通に例文を写経。ユニットテストだと、こういう外部リソースとのアクセスが絡むとどう扱うか悩みます。DBアクセス(接続確立〜データ取得)、ファイル情報取得、ログ出力、認証付のWebアクセス・・・セオリ…

「初めてのRuby」の復習をexpectationsで(配列とハッシュ・文字列)

「初めてのRuby」を読みました。 特異メソッド・特異クラス周りについては馴染みきっていない印象です・・・知らなかったときよりは理解が深まりましたが。 その他、Rubyでの書き方や細かな動きの部分で知らないことが多く、ためになりました。 この「初めて…

Rubyテスティングフレームワーク・expectations

http://expectations.rubyforge.org/files/README.html http://d.hatena.ne.jp/keyword/expectations (via http://d.hatena.ne.jp/rubikitch/20080508/ruby187)Rubyのテスティングフレームワークであるexpectationsを動かしてみたのでメモ。 このテスティン…

Two-Phase Termination(interrupt版) →失敗

javaにおけるThread#interruptのような「wait/sleep状態のスレッドを中断させるメソッド」というものが分からなかったので、その点を省略しています。 http://d.hatena.ne.jp/qnzm/20080209/1202524095 と言っていたのですが、単純に例外投げるようThread拡…

ActiveObject

マルチスレッドパターン本のトリは、ActiveObjectパターンでした。 ActiveObject…能動的オブジェクトは、「外部から受け取った非同期メッセージを、自分固有のスレッドで、自分が都合のいいタイミングで処理する」というものです。 他のパターンに比べてクラ…

Thread Specific Storage

マルチスレッドパターン続き、今回はThread Specific Storage。 このパターンは、入口が1つでも内部ではスレッド固有の領域が用意されている、というパターンです。 サンプルではjava.lang.ThreadLocalを利用していますが、この点をHashで代用しました。 ま…

Two-Phase Termination

マルチスレッドパターン続き。 終了要求をうけ終了する前に、「終了状態」を挟むことによって安全性、生存性、応答性を確保しようというパターン。 今回はjavaのThread#interruptにあたるrubyのメソッドが見あたらなかったので、本とは少し異なったイメージ…

Future

マルチスレッドパターン続き、今回はFutureパターンです。 これは「戻り値の準備」と「戻り値の利用」を分けましょう、というものです。 メインスレッドは一旦プロキシを受け取っておいて、プロキシに対応する実際のデータは別スレッドで走って作りましょう…

メソッドの起動(invocation)と実行(execution)の分離(Thread-Per-MessageとWorker Thread)

マルチスレッドパターンの続き。 今回はThread-Per-MessageとWorker ThreadをRubyで書いてみました。 この二つのパターンは、いずれも「メソッドの起動(invocation)と実行(execution)の分離」という点で共通していて、 使い捨て(Thread-Per-Message) 使い回…

Guarded Suspension

id:hyukiさんの本を片手に、マルチスレッドのパターンを見ていっています。 今はGuarded Suspension。 自分の状態が適切なときだけ、目的の処理をスレッドに実行させることについて書かれていて、「じゃあrubyで書いてみよう」と思ったら、rubyにはQueueとい…

Remember The Milkのタスクリストをコンソール表示するRubyスクリプト

mechanizeを試すために、Remember The Milkにログオンしてタスクリストをとってくるスクリプトを書いてみました。 require 'rubygems' require 'mechanize' require 'kconv' agent = WWW::Mechanize.new agent.user_agent_alias = 'Mac Safari' page = agent…

commitのタイミングでGMail送信

$REPOS/hooks/post-commitに下のようなコマンドラインを追加、コミットのタイミングでメール送信を確認できました。 ruby /home/qnzm/script/svn-commit-gmail.rb \ --account=xxxxx@gmail.com \ --password=ppppp \ --svnlook=/usr/bin/svnlook \ --from=xx…