REXML DoS 脆弱性対策
REXML DoS 脆弱性対策をしようとして typo があったため落ちてましたorz
落ちてる間に見ようとした人達がもしいたら、ご迷惑をお掛けしました。
Posted in Ruby | no comments |
Hash#default_proc をあとでセットする方法
Hash#default_proc= がなかったのであるハッシュにあとで default_proc をセットする方法を考えてみました。
以下のようにするとうまく行きます。
hash = {} # default_proc が無い。
hash.default_proc # => nil
other_hash = Hash.new{|h, k| h[k] = [] }.merge(hash)
other_hash.default_proc # => #<Proc:0xb7c87474@-:3>Posted in Programming, Ruby | no comments |
Hiki on Rack 2
続き。
とりあえず、ページを編集できるところまで確認。 作業手順をまとめると以下のような感じ。
- hiki.ru を用意する。
- hiki.rb を用意する。
- Hiki::App クラスを作って call メソッドを定義する
- @cgi を使っている部分を全て @request に変更する
- params['hoge'][0] を全て params['hoge'] に変更する
- ENV を使用している部分を @request.env に変更する
- クッキーを使用している部分を修正する
- セッションキーだけなので簡単
- print している部分を Rack::Response 的なものを返すように変更
- [ヘッダー,ステータス,ボディ] な配列で OK
- 面倒なのでヘッダーとボディだけ返してステータスは常に 200 にしといた
- Rack::Lint によるとヘッダーに Status を入れてはいけないらしいのでそれを入れてる部分を削除
- その他こまごまとした修正が必要。
- CGI に依存している部分とか、ロードパスとか。
まとめ
頑張ればできる。
いや、でも Hiki のソースも意外とひどいというのがわかった。統一感がないというかカオス一歩手前というか。
Posted in Ruby | no comments |
Hiki on Rack
Hiki - Hiki -Front Page- を Rack: a Ruby Webserver Interface に載せる実験中。
概ねうまく行きそうな感じだけど、セッションまわりに苦戦中。あと、たぶんプラグインを全部修正しないといけないのが辛いかもしれない。
ちゃんと出来たら公開する予定。
Posted in Ruby | no comments |
第29回 Ruby/Rails勉強会@関西
行ってきました。
ちょっと睡眠不足気味だったので各セッションの記憶はあまりなかったりします。
なので今回は行ったという記録のみ残しておきます。
Posted in Ruby | no comments |
KansaiWorkshop#27 on 2008-06-28
日本Rubyの会 公式Wiki - 第27回 Ruby/Rails勉強会@関西
もうすぐ開催されます。
今回はかずひこさんも久しぶりに登壇しますので、すごく楽しみです。
お時間のある方は、上記URIに申し込み方法が書いてあるので、そちらを参照の上、参加申し込みしてくださいね。
Posted in Ruby | no comments |
るりまに検索機能とかいろいろ付きました
Posted in Ruby | no comments |
Passenger (mod_rails) を使ってみた
Overview — Phusion Passenger (a.k.a. mod_rails)
思ったより簡単だったのでちょっとだけ手順を書いておく。
- Apache は 2.2 系
- Rails2.0.2
- Redmine0.7.0RC1
上記はインストールできている and 動作確認できている前提で。 まずは、Passenger をインストール。
sudo gem install passengerで以下のコマンドを実行。
passenger-install-apache2-moduleそうすると対話型っぽい感じになって色々と親切に教えてくれる。足りないライブラリとそれらの入手方法とか。 個人的にはもう少し不親切でもいいような気がした。
このコマンドではApacheのモジュールをビルドするので Windows ではかなり苦労するであろう事が予想される。(調べてないけど)
最後に、httpd.conf に書く設定内容が表示されるのでそれをコピペして Apache を再起動すればOK。 各アプリの設定は後で書く。
もう一つのインストール方法でやる場合は、ソースを展開したディレクトリの下にビルドしてインストールされてしまうので、ちょっと気持ち悪い。手でコピーすればいいけどコマンドが動的に生成されるっぽいのでその辺の調整が必要。
### Redmine を使う
- /var/webapps/redmine に置いている
- /var/www/html が Apache の DocumentRoot
サブドメインが使える場合は以下でOK。
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /var/webapps/redmine/public
</VirtualHost>サブドメインが使えない場合(素朴なイントラネットなど)。
ln -s /var/webapps/redmine/public /var/www/html/redmineのようにシンボリックリンクを DocumentRoot 以下に用意する。 で、以下の内容を httpd.conf を追加する。
DocumentRoot /var/www/html
RailsBaseURI /redmineサブドメインが使える場合は NameBase の VirtualHost でいくらでもアプリケーションを置くことができるが、そうでない場合は以下のようにすればいけるかもしれない。(まだ試してない)
RailsBaseURI /redmine1
RailsBaseURI /redmine2考えてみたけど VirtualHost を使用せずに一つのアプリに別々のRailsEnv を設置する方法がわからない。 上のやり方だと、一つの環境しか設定できないような気がするし。
以上の設定内容は全部、 Passenger のサイトに書いてあった。最初からドキュメントが揃っているのは素晴らしい!
Posted in Ruby | no comments |
第23回Ruby勉強会@関西の初級者レッスン演習問題の解答例たち
- 第23回 Ruby/Rails勉強会@関西に参加してきた (Kanasansoft Web Lab.)
- ころころ毬藻転がし(RC) 第23回 Ruby/Rails勉強会@関西に関するメモ
- RubyKansai23 - Ruby/Rails勉強会@関西に行ってきた - 風産み日記
- Ruby関西勉強会#23参加 - らいとなひび
- ruby勉強会の演習問題を解いてみた - いつの間にか27歳日記
- Ruby/Rails勉強会@関西 - チナミニ
- 2008-02-17 - ekurodaの日記
- wwwaku » 2008 » 2月 » 17
- Nov's daily? report - DeveloperNews #4 , 第23回 Ruby/Rails勉強会@関西 , 最近の Amazon , tail
ざっとこんなもんかな。時間ある時に勝手に添削する。
# 添削希望のものだけね。
Kanasan の 100 マス計算
趣味も大分入るけど以下のような感じで添削しました。
- 題意を勘違いしてる?
- 演算子もランダムにして欲しかったけどこれはこれでアリなので活かすことにする
- 使える演算子は決まっているので、定数化する
- 入力値のチェックに正規表現を使っていたがこの程度なら文字列比較で十分
- 一度初期化したら変わらない変数は定数にする
- メソッド定義のカッコは省略しない
- るりまのフォーマットに従う方向で。
- exit 1 にしとく
- コマンドの失敗時の戻り値は 1 であることが多いため
- 一文字変数はスコープが短い所で使用する
- 配列の変数名は配列であることが予想できるような名前にする
#! /usr/bin/ruby
OPERATORS = %w[+ - * / %]
DIGIT = 2
SEPARATOR = " "
VERTICAL_LINE = "|"
HORIZONTAL_LINE = "-"
CROSS_LINE = "+"
operator = ARGV[0].to_s
unless OPERATORS.include?(operator)
puts "wrong parameter: operator is only +-*/%"
exit 1
end
def display100Math(xs, ys, operator, display_answer)
print SEPARATOR * (DIGIT - operator.size)
print operator
print SEPARATOR
print VERTICAL_LINE
xs.to_a.each do |x|
print SEPARATOR
print SEPARATOR * (DIGIT - x.to_s.size)
print x
end
puts ""
print HORIZONTAL_LINE * DIGIT
print HORIZONTAL_LINE
print CROSS_LINE
xs.size.times do
print HORIZONTAL_LINE
print HORIZONTAL_LINE * DIGIT
end
puts ""
ys.each do |y|
print SEPARATOR * (DIGIT - y.to_s.size)
print y
print SEPARATOR
print VERTICAL_LINE
if display_answer
xs.each do |x|
answer = y.send(operator, x)
print SEPARATOR
print SEPARATOR * (DIGIT - answer.to_s.size)
print answer
end
end
puts ""
end
end
xs = (1..9).sort_by{rand}
ys = (1..9).sort_by{rand}
display100Math(xs, ys, operator, false)
puts ""
display100Math(xs, ys, operator, true)やらなかったこと
- 100マス化
- 今のは 81 マスしかない
- 短く簡潔にすること
- やっちゃうと大改造になるため(元が残らない)
sixeight さんの 100 マス計算
同じく趣味が入るけどこんな感じ。
- いくつかの変数名/メソッド名を変更した
- 多分、わかりやすくなった?
- initialize に仕事積めすぎなので @header を make_question に移動
- そうするとインスタンス変数である必要がなくなるのでローカル変数にした
- make_matrix は表作成専用にした
適切に仕事を分割することでよりよくなったはず。
class Hyakumasu
def initialize
@op = [:+, :-, :*, :/][rand(4)]
@row = (0..9).sort_by{ rand }
@col = (0..9).sort_by{ rand }
end
def make_matrix
header = "#{@op} | " + @col.join(' ') + "\n--|" + "---" * @col.length
@row.inject(header){|r, v|
r + "\n#{v} |" + (block_given? ? yield(v) : '')
}
end
def display
puts make_matrix
puts
puts make_matrix{|v|
@row.map {|i|
"%3d" %((@op == :/ && i.zero?) ? 0 : v.send(@op, i))
}.join
}
end
end
Hyakumasu.new.displayPosted in Programming, Ruby | no comments |
第23回 Ruby勉強会@関西に行ってきた
いつも通りみんなの集合時間より早く行って簡単な打ち合わせ。
日本Rubyの会 公式Wiki - 第23回 Ruby/Rails勉強会@関西
Ruby1.9 の仕様 − Array 関連の新しい機能 by こなみ さん
よくも悪くも講義?って感じだった。 最後の方の内容が面白かっただけに尻切れとんぼっぽくなったのが残念。
純粋関数型言語Ruby(3) 30分でわかるMonad by 氏久(ujihisa)さん
やっぱり 30min ではわからなかった Monad
参加者大半おいてけぼり??
Rails以外のWebアプリケーションフレームワーク」 by yhara さん
merb, capmping, ramaze の紹介。前二つはストヤン経由で聞いてたけど結局試してなくてごめんなさい。
今度、試す。
Rubyのリフレクション by 大林さん
おもしろかった。久しぶりに燃えるセッションだった。 # って自分こんなにリフレクション好きだったっけ?
すごく勉強になった。要復習。
これくらいの濃さのセッションが毎回あるといいのだけど。
Ruby初級者向けレッスン第17回 by okkezさん
自分のセッション。
初級者レッスンと言いつつ、るりまの宣伝乙。 演習問題もリファレンスを見てやってもらう前提だったのでこんなものかと。
演習問題の最後に、使うかもしれないメソッド一覧を載せたのは良かったらしい。Keep
そう言えば、自分が発表する場合の時間の読み方がかなり正確になってきた気がする。
Posted in Ruby | no comments |
Older posts: 1 2