フォーチュンサモナーズ
最新 追記

Don'tStopMusic

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|02|03|04|05|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|

カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年

知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。


2007-04-01 この日を編集

_ [Ruby] ActiveRecord 100%, Performance Doubling, Java Support Improving このエントリーを含むブックマーク

JRuby の開発者 Charles Nutter のブログ Headiusより

JRuby で ActiveRecord のユニットテストがすべて通るようになったとのこと(ただし、データベースに MySQL 使用時)。rails のフルサポートもそう先のことではないかも知れません。

パフォーマンスもよくなっていて、ベンチマークによっては CRuby よりも早いこともあるそう。へぇ。

_ [Rails] Mephisto Theme Gallery このエントリーを含むブックマーク

rails 製のブログソフトでは typo が有名ですが、Mephisto も割と使われているのを見ます。

Mephisto Theme Gallery は Mephisto 用のテーマギャラリーです。34 種類。Mephisto に限ったことではありませんが、英語で見るとシンプルで良いと思ったデザインでも日本語が並ぶとバランスが良くなかったりして悩ましいですね。

なお、Mephisto は最近は開発があまり活発ではありませんでしたが、また動き始めたようです。


2007-04-02 この日を編集

_ [Rails] Rails 1.2 Performance このエントリーを含むブックマーク

Riding Rails: Rails 1.2 Performance 経由

railsbench を使った Rails 1.1 と 1.2 のパフォーマンス比較です。1.2 の方が多少パフォーマンスが良くないようです。GC にパッチをあててヒープサイズを増やしてベンチマークをとっているようですね。action cached page が取り分け遅いといってますが、ベンチはそれでとっているのかな。

結論として、

  • Rails 1.2 が Rails 1.1 の 2 倍遅いというのは FUD
  • Action caching は注意して使うこと
  • pstore をセッションコンテナに使わないこと
  • Rails のコードベースが大きくなるにつれて今の Ruby (1.8 系)では速度低下は避けられない。GC の速度低下やインタプリタのオーバヘッドによる。YARV がこれを変えるかも

ということでここにも YARV カーゴが……

_ [ソフトウェア] Datetime Toolbocks このエントリーを含むブックマーク

Datetime Toolbocks は、Javascript による賢い日付入力フォームです。「2007-04-02」「today」「next friday」といった様々な記述方法で日付を入力できます。Remember The Milk の日付入力などもそうですね。

Remember The Milk は日本語に対応していますが、Datetime Toolbocks は残念ながら未対応です。日本語→英語置換の処理を最初に挟んでやれば日本語での入力もできそうな気がします。

なお、rails 用のプラグインも用意されています。

また、Rails で使えるカレンダー付きの日付入力フォームにはRails Date Kit などもあります。


2007-04-03 この日を編集

_ [Ruby] Ruby で REST API のクライアントを書くのに使えるライブラリは? このエントリーを含むブックマーク

REST API のクライアントを書こうとして気付いたのですが、もしや Net::HTTP を直接使う以外に手段がないのかな。open-uri は GET メソッドのみですし。

open-uri を GET メソッド以外に対応させるパッチを提案している人がいますね。[#6321] Make open-uri capable of handling HTTP methods other than GET とりあえずこれを使ってみるかな。

追記。今回の使い方ではこのパッチで十分事足りました。open-uri 本体にマージされないかな。

_ [Ruby] Why is the Java community so enchanted by Ruby? このエントリーを含むブックマーク

最近の言語戦争。

Artima や DZone といった Java 中心の技術コミュニティサイトで Ruby セクションが新設されたり、JRuby の開発者が Sun に雇用されたり、Netbeans の Ruby プラグインが開発されたりと Java コミュニティで Ruby が注目されているけど、Java 文化には Python の方が合っているんじゃないという投稿です。投稿の筆者の方は理由として、1. 読みやすさと明示性、 2. 成熟、3. 活気のあるコミュニティ、4. ライブラリ を挙げています。

2 3 4 からすると Perl の方がいいのではと思ったりもしますね。個人的には、軽量言語の流行や Java を補完するものとしてスクリプト言語が求められたといった背景と Rails による Ruby の興隆の時期が重なったというタイミングの影響が大きいのではと思います。


2007-04-04 この日を編集

_ [ソフトウェア] オープンソースワークフローエンジン OpenWFEru このエントリーを含むブックマーク

オープンソースのワークフローエンジンの Ruby 版なので OpenWFEru。サイトのロゴが「OPENWFE-る」になっていたりして面白いです。ワークフローを定義するソフトウェアとのこと。

quickstart では例として

  • http://ruby-lang.org/ を見て印象をコメントする
  • 参加者には alice と bob がいる

というワークフローを記述しています。

どういう用途に使うソフトウェアなのかよく分からないので検索してみたところ、ワークフローエンジン - OpenWFE 1.6.2公開 | エンタープライズ | マイコミジャーナル という記事がありました。

OpenWFE 1.6.2のようなワークフローエンジンやビジネスプロセス統合管理ツールは、この業務フローをフレームワークをベースに作成し、業務フローの変更に対して強いシステムを作成する上で重要。最近ではビジネスプロセスをどのように表現するかがキーテクノロジのひとつになりつつある。

なるほど。ワークフローをこれで記述して、人手がいるところは例えば Amazon Mechanical Turkで外だしすれば、「業務を実行」できるようになったりするのかなと勝手に妄想してましたが違いました。

業務フローをモデル化・記述するためのツールなのですね。Ruby で記述した場合はプログラムなので実行すると業務フローをシミュレートできたりすると。GUI をかぶせてドット絵キャラがちまちま動いたりすると楽しいかも。


2007-04-05 この日を編集

_ [Ruby] 人力検索はてな - Rubyでメソッド名とローカル変数名を見分ける易いコーディング規約について教えてください。 このエントリーを含むブックマーク

Rubyでメソッド名とローカル変数名を見分ける易いコーディング規約について教えてください。

Rubyコーディング規約
http://shugo.net/ruby-codeconv/codeconv.html

によると、ローカル変数もメソッドも小文字とアンダースコア(_)で書くことになっていますが、これだとパッと見で混乱してしまうことが多いので。

大抵の場合は見分けがつくのでそんなに気にすることではないと思います。どちらか分からないことで混乱するようなクラスやメソッドはリファクタリングしましょう。

メソッドだとすぐわかるケース

  • 引数を渡している : puts "hello, world"
  • ブロックがある : open{|f| ... }
  • ! ? が末尾にある : visible? delete!
  • 組み込み関数 : そのうち覚えます
  • converter メソッド : to_s to_a

レシーバも引数もない場合は見た目上変数と区別がつきづらい可能性があります。ただし、

  • 動詞なら、それはまずメソッド
  • 組み込みライブラリでメソッドなら、それはまずメソッド
  • 代入やメソッド呼び出しを伴わず単独で書かれているならメソッド
  • 単純代入の右辺ならメソッド

といえます。2、3、4 番目の補足説明をします。

組み込みライブラリでメソッドなら、それはまずメソッド

新しいメソッドの名前にはよく使われているメソッドの名前を選ぶからです。読み書きなら read/write gets/puts、イテレートは each など。メソッドの働きを類推しやすくするためや duck typing のためです。

代入やメソッド呼び出しを伴わず単独で書かれているならメソッド

filename = "/etc/hosts"
dir = File.dirname(filename)
filename

このようなコードがあった場合、変数 filename が単独で書かれている 3 行目は ruby プログラムとして正しいですが意味がありません。 識別子が単独で書かれている場合は、

def parse
 do_preprocess
 do_parse
 do_postprocess
end

のように処理の一部分を抽出したメソッドである可能性が高いでしょう。

単純代入の右辺ならメソッド

page = fetch

Ruby は変数のコピーをしたりはしないので、上記のような例で右側が変数の場合には単に同じオブジェクトに異なる変数名をつけるだけになります。意味がないのでそのような書き方はしないでしょう。

もうここまでで 90% (適当)は区別がつくのではないかと思います。

さらに

  • public や protected メソッドのレシーバを省略しない : self.foo と必ず self. をつける
  • 引数のないメソッドでも括弧を省略しない : foo()
  • Java のように CamelCase で書く

とすれば完全に区別がつきますが個人的にはこれらの書き方はしません。記述が冗長だったり、慣習とそぐいません。

さて、上の 3 つを採用しない場合に区別がつかないのは

  • setter メソッド
  • getter あるいはプロパティを返すメソッド

です。

setter

class Foo
  attr_accessor :bar
  def foo
    bar = 10
    hoge = 15
  end
end

bar = 10 は self.bar=(10) というメソッド呼び出しに他なりませんが、hoge = 15 は変数への代入です。 クラスが小さければ bar= が setter メソッドだと分かりますが、クラスが大きいと困ることがあるかもしれません。

上のようにアクセサを介して自分のインスタンス変数にアクセスすることを Indirect Variable Access といいます。 インスタンス変数へのアクセスを Direct Variable Access、つまり

class Foo
  attr_accessor :bar
  def foo
    @bar = 10
    hoge = 15
  end
end

と書くようにすればこの曖昧さは解消できますが、Indirect Variable Access が必要なケースもありますので規約化はできないと思います。

getter あるいはプロパティを返すメソッド

これらは引数がなく括弧もつけず動詞でもないメソッドです。Object#object_id、Object#class、Array#size などが該当します。

私の場合変数だったものをこのようなメソッドに置き換えることが良くあります。例えば

class Score
  def initialize
    @scores = []
  end
  def add(score)
    @scores << score
  end
  def print_score
    total = @scores.inject(0){|sum, i| sum += i}
    puts "your score: #{@scores.join(', ')}"
    puts "your total score: #{total}"
  end
end
score = Score.new
score.add(0)
score.add(2)
score.add(1)
score.add(3)
score.print_score
#=> your score: 0, 2, 1, 3
#=> your total score: 6

というクラスがあるとします。で、合計点だけ出力したくなってメソッドを追加します。

class Score
  def initialize
    @scores = []
  end
  def add(score)
    @scores << score
  end
  def print_score
    total = @scores.inject(0){|sum, i| sum += i}
    puts "your score: #{@scores.join(', ')}"
    puts "your total score: #{total}"
  end
  def print_total_score
    total = @scores.inject(0){|sum, i| sum += i}
    puts "total score: #{total}"
  end
end

total を求める部分が重複しています。気になるのでメソッドに括りだします。 このとき名前を get_total とでもすればメソッドだと明らかですが、

  def print_score
    puts "your score: #{@scores.join(', ')}"
    puts "your total score: #{get_total}"
  end
  def print_total_score
    total = get_total
    puts "total score: #{total}"
  end
  def get_total
    @scores.inject(0){|sum, i| sum += i }
  end

のように、リテラルに get_total と埋め込むのはキレイじゃないし、一度 total 変数に代入するのもなんだか無駄な気がします。 どのように書くかといえば、

class Score
  def initialize
    @scores = []
  end
  def add(score)
    @scores << score
  end
  def print_score
    puts "your score: #{@scores.join(', ')}"
    puts "your total score: #{total}"
  end
  def print_total_score
    puts "total score: #{total}"
  end
  def total
    @scores.inject(0){|sum, i| sum += i }
  end
end

としています。total が親クラスで定義されてたりすると変数かメソッドか分かりにくくなりますが、 それを区別しやすくするために get_total のような書き方をするよりもクラス構成やメソッドの長さや名前の付け方を良くするほうが はるかに可読性が向上するんじゃないかなと思います。

本日のツッコミ(全2件) [ツッコミを入れる]

_ kjana [setter の方は実は ruby も変数への代入と区別出来ないので self.foo = bar と書く必要があっ..]

_ だて [あああ。ほんとですね。昔 self と () を省略せずできるだけ形式的に書こうとしたことがあったのですが、p はど..]


2007-04-06 この日を編集

_ [Ruby] ネタの仕入れ元 このエントリーを含むブックマーク

以下のサイトから Ruby 関係の情報を仕入れています(英語圏)。他にもこれを読んどくといいよというのがあったら教えてください。

ruby-talk はとても追いきれないので読んでません。rubyonrails-talk も ANN だけ流し読みしてます。

本日のツッコミ(全2件) [ツッコミを入れる]

_ secondlife [http://eigenclass.org/ はどうですか]

_ だて [どもです。購読先に追加しました。こういう rails だけじゃなくて ruby 全般について書いているサイトを求めて..]


2007-04-09 この日を編集

_ [適当] CodeZine のインフォメーション欄を非表示にしたい このエントリーを含むブックマーク

追記: 誰かすでに書いているだろうなあと思って検索したらやっぱりありました → CodeZine記事 clean up 非常にすっきりしますね。

CodeZine はニュース記事本文の上にインフォメーション欄なるものがあります。スクロールしない状態のファーストビューで記事本文が表示されないので間違ったページにアクセスしてしまったかと思うわけです。

ということで Greasemonkey スクリプトを適当に書いてみました。他のスクリプトのマネです。

// ==UserScript==
// @name            condezinehideinformaitoncolumn
// @namespace       http://donstopmusic.no-ip.org/diary/
// @description     Hide obstacle information column
// @include         http://codezine.jp/a/article/*
// ==/UserScript==
 
(function() {
    function addGlobalStyle(css) {
        var head, style;
        head = document.getElementsByTagName('head')[0];
        if (!head) { return; }
        style = document.createElement('style');
        style.type = 'text/css';
        style.innerHTML = css;
        head.appendChild(style);
    }
    addGlobalStyle(
'.bannerleft { display: none; } ' 
    );
})();

全部描画が終わってから最後にインフォメーション欄が消えるのでしばらく待つことになるけどこれはしょうがないか。

_ [Ruby] 日本 Ruby 会議 2007 チケット販売 このエントリーを含むブックマーク

日本 Ruby 会議 2007 への参加には、事前にチケットの購入が必要です。日本 Ruby 会議 2007 のチケットは、ローソンチケットにて 4 月 14 日(土) 午前 10:00 より発売開始します。数に限りがありますので、お早めにお買い求めください。

日本 Ruby 会議 2007 サイトが更新されています。チケット販売の詳細が公開されました。今回も瞬殺が予想されます。

スポンサーページも更新されています。IBM、Sun といった名前が並んでいますね。

_ [Ruby] 日本で生まれ世界が育てた言語 Ruby:ITpro このエントリーを含むブックマーク

日経 BP の ITpro が Ruby 関係の記事を集めた特設サイトを作ったとのこと。日経 BP 技術賞ををとったからですかね。

本日のツッコミ(全3件) [ツッコミを入れる]

_ yokoyamen [スポンサー枠でもらえたりしないんですかね]

_ だて [もらえるみたいですけど、自分に回ってくるかどうかはわからないですね。]

_ mpmjrgtmpw [Hello! Good Site! Thanks you! lszxupsausjq]


2007-04-11 この日を編集

_ [Ruby] Faking cursors in ActiveRecord このエントリーを含むブックマーク

ActiveRecord はカーソル操作をサポートしていないので、バッチ処理などで大量のレコードに更新をかけるとき、単純に find(:all).each{...} などとするとメモリがなくなって困ったりします。

Faking cursors in ActiveRecord ではそんな用途向けのメソッドとして ActiveRecord::Base.each を定義しています。適当な数で区切ってデータベース検索とオブジェクト化をしているだけなのですが、順に更新するだけの用途なら十分でしょう。なお、検索条件が MySQL 限定みたいです。


2007-04-12 この日を編集

_ [Ruby] Ruby/LibGTop2 このエントリーを含むブックマーク

gnome libgtop のバインディングライブラリ Ruby/LibGTop2 を RubyForge 上でリリースしました。libgtop を使うとプロセスのメモリ使用量などがわかります。

ドキュメントは付属していませんので、使い方などは以前のリリースのときに作ったページを参照ください。

いまはハッシュで結果を返していますが、いずれ Struct で返すように変更予定です。またLibGTop をクラスじゃなくてモジュールにするかもしれません。ということでインタフェイスがしばらく不安定だと思います。


2007-04-13 この日を編集

_ [Ruby] Ruby Central and the Google Summer of Code このエントリーを含むブックマーク

RubyConrefence の主催などをしている Ruby Central は Google Summer of Code のメンターもしています。今年は 41 のアプリケーションの応募があって、最終的には 14 件が Google に受理されたようです。

テスト、ドキュメント、デバグに関するプロジェクトが多い(5件)のが興味深いです。参加者が学生だからかな。

個人的に気になるのはこのあたり。

_ [ニュース] 追悼:ヴォネガットさん、どうか安らかに・・・ このエントリーを含むブックマーク

カート・ヴォネガットが 4/11 (水) になくなったとのこと。小説家としては 1997 年のタイムクエイクで筆をおいていますので、新しい作品がもう読めないことは分かっていましたが、寂しいものですね。

_ [イベント] 2007年のLightweight Languageイベントについて このエントリーを含むブックマーク

今年は「LL魂」だそうです。

毎年皆さまにお楽しみいただいておりますLightweight Languageイベントですが、本年は以下の日時、場所、タイトルで開催することが決まりました。

  • タイトル: Lightweight Language Spirit (通称: LL魂)
  • 日時: 2007年8月4日(土)、おそらく朝から夜まで
  • 場所: 日本教育会館 一ツ橋ホール
    • 会場URL: http://www.jec.or.jp/

2007-04-14 この日を編集

_ [Ruby][イベント] 日本 Ruby 会議 2007 チケットを予約 このエントリーを含むブックマーク

すぐ近くにはローソンがないのでウェブで予約しました。

_ [Ruby][イベント] 日本 Ruby 会議 2007 予約枚数終了 このエントリーを含むブックマーク

今(13:50) ウェブ予約で調べたところ「予定枚数終了」になってました。10:20 くらいまでは予約可能でしたが、いつくらいに売り切れたのかな。

_ [Ruby][イベント] 日本 Ruby 会議 2007 のプログラムが公開 このエントリーを含むブックマーク

プログラムのページが公開されました。楽しみです。

1セッションあたりの時間が結構タイトです。いずれ部屋を分けて同時に複数セッションをやるようになるのでしょうね。

_ [Rails] Twitter と rails のスケーリング このエントリーを含むブックマーク

Twitter 開発者がインタビューで Twitter は rails を使っているがスケーリングの問題がたびたび発生していると答えています。ActiveRecord が複数データベースに同時に接続できないこと(クラス=テーブル単位で別のデータベースに接続はできますが)、Ruby が遅いことを挙げています。前者についてはすべてをキャッシングし、複数のスレーブデータベースを用意することで対処しているそう。

それに対して DHH が Twitter trouble という記事を書いていますがこれは未読。

関連してRails and Scaling with Multiple Databasesという記事では複数(5つ)の PostgreSQL データベースに接続している例を挙げています。

さらに Dr Nic が Magic Multi-Connections: A “facility in Rails to talk to more than one database at a time” でmagic_multi_connections gem という案を示し、rails-core Possible solution to multiple connections で議論をしています。

マスター・スレーブでのデータベース負荷分散について議論がされていますが、この方法では参照系は分散できても更新系はできませんので、更新が盛んなウェブアプリではいずれ壁にぶつかることになります。LiveJournal や mixi のようにユーザデータを複数のデータベースに分けて格納する方法が現時点での最終解?なわけですが、フレームワークでどこまでサポートすべきなのでしょうかね。

というか RDBMS 以外のデータ永続化手段はないのかな。RDBMS は十分に枯れていてノウハウがあるので RDBMS の機能とウェブアプリのデータ永続化への要件にギャップが多少あっても、そう多くないコストで解消できてしまっているわけですが。

_ [Ruby][イベント] 日本 Ruby 会議 2007 チケットを引き換えられない このエントリーを含むブックマーク

がんばってローソンまでいって引き換えようとしたら、番号にマッチする予約はないと言われました。電話番号を間違えて入力して予約してしまったのかなあ……

_ [Ruby] Ruby Quirks - Learning Ruby Blog このエントリーを含むブックマーク

dzone経由

Ruby Quirks という記事では Ruby の特徴的(変)だと思ったところ 5 点が挙げられています。確かに他の言語を長らく使っていてから Ruby を使うと勝手が違っていて混乱するところはあるでしょうね。それぞれ紹介してみます。

Object#instance_variable_set でカプセル化を壊せる

例えば以下のようなコードではオブジェクトの外からインスタンス変数をセットできます。

class Book
  def initialize(title, author)
    @title, @author = title, author
  end
end
book = Book.new('Lost in a Good Book', 'Jasper Fforde')
book.instance_variable_set(:@price, 2000)
p book
#=> #<Book:0xb7a9f33c @author="Jasper Fforde", @title="Lost in a Good Book", @price=2000>

付け加えますと eval 系メソッドを使ってもカプセル化を破壊できます。また Ruby はオープンクラスなので、Book クラスを上書き再定義できますので、カプセル化どころかクラスも破壊できます。

--- book.rb
class Book
  def initialize(title, author)
    @title, @author = title, author
  end
  ... いろいろメソッドがあるとします
end
--- book_rev.rb
require "book"
p book = Book.new('The Eyre Affair', 'Jasper Fforde')
#=> #
class Book
  def initialize(title, author, price)
    @title, @author, @price = title, author, price
  end
end
book2 = Book.new('Lost in a Good Book', 'Jasper Fforde')
#=> `initialize': wrong number of arguments (2 for 3) (ArgumentError)

この点については「紳士協定を守ろう」に尽きますね。与えられた力を使うには責任が伴います。

Expressions everywhere / Active Class Definitions / Everything is an Object

Expressions everywhere は Ruby の文法要素の多くが値を返すということです。例えばクラス定義も、

c = class Foo
end
p c
#=> nil

のように値を返します。ところで、この場合クラスが返っても良さそうですが、何で nil なのでしょうかね。

Active Class Definitions はクラス定義も実行されることを指します。alias(これは構文でしたね……) や attr_reader などが活用例で、ActiveRecord の has_one や validate などの DSL 的な書き方もそのひとつです。

class Foo
  puts "hello"
end
#=> hello

最後の Everything is an Object はクラスもオブジェクトであるというくらいの意味で言っているようです。実際にはすべてがオブジェクトではありません。メソッドは first-class-object ではありませんし、制御構文をオブジェクトとして扱う術はありません(たぶん)。

変数の入れ替え

多重代入があるので変数の入れ替えに一時変数が要りません。

a = 10, b = 20

としたときに、

tmp = b, b = a; a = tmp

とせずとも、

a, b = b, a

で済みます。でも、Ruby で変数の入れ替えって滅多に使わないですよね。

ブロックと変数スコープ

よく議論になるあれです。下のコードでは、

x = 7
[1,2,3].each do |x|
end
p x #=> 3

ブロック変数の x が外側の変数 x を書き換えます。

Ruby としては、将来的にブロックローカルのスコープを導入することでこの問題に対応しようとしていますが、記法について同意が得られず止まっています。

インスタンス変数がサブクラスからも参照できる

これはまあリファレンスにあるとおりの仕様ですね。

Further Readings

ここで紹介した記事は他の言語と比べて特徴的な仕様という程度に留まっていますが、Ruby の言語仕様への突っ込みでは Ruby で作る Prolog 処理系 (補講) が結構厳しいところを突いています。

本日のツッコミ(全4件) [ツッコミを入れる]

_ なかだ [c = class Foo self end p c]

_ だて [どもです。なるほどクラスの場合はそれでいいですね。 結局定義文はメソッド呼び出しではないわけで、クラス定義やメソッド..]

_ fopikolijok [Hello Looks good! Good resources here. Good stuff. I wi..]

_ ORDER PHENTERMINE [Hi I found lots of intresting things here. It very impr..]


2007-04-17 この日を編集

_ [Ruby][イベント] 日本 Ruby 会議 2007 チケット入手 このエントリーを含むブックマーク

ローソンチケットに問い合わせたところ、はたして登録した電話番号が間違っていました。登録電話番号を教えてもらって昨晩無事チケット入手。ありがとうローソンチケットの中の人。

_ [Rails][REST] REST 101 このエントリーを含むブックマーク

Softies on Rails というブログが少し前から REST について連載しています。REST を概念(DHH の ActiveResource + 執筆者流の解釈べース)から順に説明しており、結局 REST って何なんだという方も腑に落ちるのでは。英語ですが非常に読みやすい文章です。

Part1 では REST が扱うもの「リソース」とは何かという話、Part2 と Part3 では REST の API デザインの話、Part4 で rails における REST の話となっています。

現在のところ書かれている記事は以下の通りです。

_ [Rails] Ruby on Rails Security Blog このエントリーを含むブックマーク

ここはセキュリティについてのブログ。今のところは 10 数記事ですが、この調子で記事が増えていけば、いずれこのブログを見れば rails のセキュリティについては一通り勉強できるようになりそうな感じです。

rails に特化した内容だけでなく、MySQLapache 一般の記事もあります。


2007-04-19 この日を編集

_ [] 今日の早川さんが書籍化 このエントリーを含むブックマーク

しかも早川書房から。


2007-04-20 この日を編集

_ [Ruby] 島根県/松江市 このエントリーを含むブックマーク

最近島根県/松江市のニュースリリースを良く見ます。今日も Ruby Cityの松江市が「8年間家賃半額」でIT企業を誘致 島根大学が「オープンソースと地域振興」を開講,Rubyのまつもと氏も登壇しテキストも公開 の二つが。

講義も良いですが、大学では成果を外部と共有できるようなプロジェクトをぜひやってほしいと思います。Google Summer of Code の松江版とか。


2007-04-21 この日を編集

_ [] 選挙カーが五月蝿すぎる件 このエントリーを含むブックマーク

名前を連呼しないと票が集まらないというのなら、そんな選挙制度をどうにかしてほしい。ふと疑問に思ったのですが、諸外国でも選挙前には選挙カーが蔓延っているのでしょうか。

_ [適当] 非コミュ指数テスト このエントリーを含むブックマーク

してみました。とりあえず人間不信ではないらしい。

非コミュ指数: 52(レベル2/中度非コミュ/無関心型)
非コミュ指数テスト結果グラフ

_ [Ruby] Scruby : A Ruby shell for packet sending and sniffing このエントリーを含むブックマーク

Ruby Inside より

パケットを作成、送信して、その中身を見れるシェルアプリだそうです。いまのところウェブアプリのデバグでは Firefox の Live HTTP headers でこと足りていますが、使うことがあるかも。

_ [redMine] redMine のユーザマニュアルを訳してみました このエントリーを含むブックマーク

RubyForge: redMine: Modify: 10274 - Japanese user manual

そのうち取り込まれるかもしれません。ただ、元の英文マニュアルがソフトウェアと同期してアップデートはされていないので、最新の 0.5.0 とは内容が食い違ってたり説明のない機能があったりします。

追記

r459 で trunk にコミットされました。


2007-04-22 この日を編集

_ [プログラミング] The World of Hello World このエントリーを含むブックマーク

dzone より。

有名どころのプログラミング言語の産地をマッピングしている Google Map のマイマップです。やはり北米に集中していて、欧州が三つ、日本に一つという状態です。そうメジャーではない言語も含めるとどうなのでしょうね。

ソフトウェア技術者が急増していると思われる中国やインドで今後新しい言語が生まれたりしないかな。

_ [redMine] redMine 0.5.0 このエントリーを含むブックマーク

ちょっと前の 4/13 に redMine の新しいバージョンがリリースされました。プロジェクトごとの Wiki、時間のトラッキング、検索、RSS/Atom フィードとかなり新機能が増えています。Wiki はまだ機能や使い勝手がいまいちです。

また、このバージョンから日本語リソースが同梱されるようになりましたので、アカウントの言語を日本語にすれば表示が日本語になります。元から多言語化されているのは trac に対するアドバンテージといえますね。

redMine は Jean-Philippe Lang 一人が開発していますが、毎日のようにコミットがあります。4/13 のリリース後には数日コミットがなかったものの、再び猛烈な勢いで開発しています。r456 で issue 変更時のメール送信機能、r456 でマイページに watched issues が追加されています。どこかで燃え尽きないか心配です。

redMine のユーザマニュアルを訳してみましたじゃなくて、間違ってこっちに追記していたので削除。


2007-04-24 この日を編集

_ [ソフトウェア] subversion のレポジトリのバージョン違いで困る このエントリーを含むブックマーク

subversion のレポジトリフォーマットにバージョンがあることを知りました。[ruby-talk:180357] の須藤さんの投稿から拾った svn2rss を実行したところ、

/usr/lib/ruby/site_ruby/1.8/svn/util.rb:58:in `svn_repos_open': subversion/libsvn_repos/repos.c:1754 Expected format '3' of repository; found format '4' (Svn::Error::REPOS_UNSUPPORTED_VERSION)
        from /usr/lib/ruby/site_ruby/1.8/svn/util.rb:58:in `call'
        from /usr/lib/ruby/site_ruby/1.8/svn/util.rb:58:in `open'
        from /usr/lib/ruby/site_ruby/1.8/svn/repos.rb:28:in `_open'
        from /usr/lib/ruby/site_ruby/1.8/svn/repos.rb:28:in `open'
        from /usr/lib/ruby/site_ruby/1.8/svn/info.rb:48:in `setup'
        from /usr/lib/ruby/site_ruby/1.8/svn/info.rb:34:in `initialize'
        from /usr/local/bin/svn2rss:176:in `new'
        from /usr/local/bin/svn2rss:176:in `main'
        from /usr/local/bin/svn2rss:190

という結果に。対象は redmine の anonymous svn です。

gentoo で stable な subversion は 1.3.2 ですが、rubyforge はもっと新しいバージョンを使っているのでしょうね。

svn コマンドを使う分には困ったことがなかったのですが、各種言語のバインディングライブラリを使うときにはレポジトリのフォーマットのバージョンを気にしないといけないのでしょうか。

あ、この svn2rss はワーキングコピーではなくレポジトリにアクセスするんですね。なるほど。リモートのレポジトリの diff を得るにはどうすればいいのかな。コード読んでみよう。

_ [Ruby] YARV上での性能を40%改善 - JRuby 0.9.9がリリース このエントリーを含むブックマーク

記事タイトルが間違ってますね。記事本文での説明はあっているのにタイトルだけ変だという。

Ola Bini は JRuby 0.9.9 released で、

Performance has improved by 40% over 0.9.8 based on YARV benchmarks

といってますが、「YARV上での性能を40%改善 - JRuby 0.9.9がリリース」記事本文でそう訳されている通り、この「YARV benchmarks」は YARV 付属のベンチマークという意味です。1.9 シリーズ(trunk)にマージされる前には、YARV は YARV として別配布されていたのですが、その tarball には YARV 用のベンチマークプログラムが同梱されていました。trunk だと trunk/benckmark ですね。


2007-04-25 この日を編集

_ [Ruby] 日本Ruby会議2007のタイムライン このエントリーを含むブックマーク

moroの日記 - RubyKaigi2007 のタイムライン より

moro さんが日本Ruby会議2007のタイムラインを作っています。このサービス、音声や動画を載せられるといいですね。あと、詳細の情報を見るのに一つ一つクリックが必要なのが面倒かも(かといってポイントでオーバーレイ表示すると鬱陶しいかな)。

こういうイベントは参加者が自分のタイムラインをオーバーレイできると面白いかもですね。つまり、大本のタイムラインに自分のタイムラインを重ねることができると。そうではなくて、タイムラインの各項目にコメントやトラックバックを付けられるようにするという方法もありますが、言及自体もタイムラインになってるとタイムラインという概念に完結できてよさげ。

_ [Ruby] Ruby の今後のスケジュール このエントリーを含むブックマーク

ささださんが Ruby(1.9) の今後のスケジュールについて書いています。直近では

  • m17n
  • 標準添付ライブラリの追加・削除

が大きな動きですね。しかし、m17n についてネット上にまとまった情報はどこにあるのかなあ。……って2年前と同じこと書いてますね。

_ [Rails] Capistrano 2.0 Preview 1 このエントリーを含むブックマーク

rails のデプロイツール Capistrano の 2.0 preview がでました。それに合わせて Capistrano: Upgrade Guide という親切なページが用意されています。このページにある主な変更点をいくつか挙げてみます。

  • 名前空間のサポート: タスクに名前空間をつけることができる
  • デプロイ戦略: scm からの checkout だけでなく tarball でのデプロイなどに対応
  • run/sudo にホストを指定できる: タスク定義ではなくそのまま実行する Capistrano script を書けるようになった

What's New in Capistrano 2.0 を見ると、多くの新機能が挙げられています。

私は capistrano を rails のデプロイツールとしてではなく、リモートのホストでタスクを実行するツールとして利用していますが、ますます便利に使えそうな予感です。


2007-04-28 この日を編集

_ [Ruby] Hackety Hack: An Amazing Ruby Environment for Beginners このエントリーを含むブックマーク

2007/05/15 追記。Radium Software で Hackety Hack の記事。うちの日記より100倍わかりやすいのでこっちを読んで下さい。スクリーンキャストもあります。

RubyInside より。

Why's (Poignant) Guide to Ruby (和訳) や try ruby! などなどの作者 _why が子供(や初心者)のための Ruby プログラミング環境 「Hackety Hack」を作ったとのこと。今は Windows 用だけですが、Linux 版や Mac OS X 版も予定しているみたいです。インストールはインストーラを使って適当にクリックしていくだけで終わります。別途 Ruby をインストールする必要はありません。

プログラミングをしてそれを実行する環境を用意していますが、いわゆる IDE とはまったくテイストは違っています。白眉なのが Tutor 機能で、try ruby! の help と類似の機能です。同じ画面上にチュートリアルが表示されるので、それに従って操作をすることで Hackety Hack の使い方と Ruby プログラミングを覚えることができます。ただ、try ruby! は正しいプログラムを書いたかをチェックして進行しますが、Hackety Hack はまだそこまで賢くないようです。

Tutor Tutor

また、書けるプログラムは生の Ruby ではありません。Hackety Hack は実行環境でもありますので、いくつかのことが簡単にできるように拡張してあります。例えば ask メソッドで一行入力用のプロンプトを表示したりできます。

ask メソッドを使ったところ

他にもウェブからファイルを落とす Web.download、取得して RSS フィードだったらそれへアクセスもできる Web.fetch といった 気の利いたメソッドが用意してあって、典型的なウェブを利用したプログラムが簡単に書けるように工夫されています。チュートリアルの Lesson3 では、データベース(sqlite)を使ってデータを保存したり読み出したりするプログラムが出てきますが、データベースを使っているとは意識しないですね。

もちろん Hackety Hack の箱庭を超えたことをしようと思えば大変になってきますし、Hackety Hack 環境でしか動かない Ruby プログラムに慣れていると、別の環境で Ruby プログラミングするときに戸惑うかもしれません。でも、プログラミングの楽しさを知るための取っ掛かりとしては非常に良いのではないかと思います。

_ [ネットサービス] JIMOT このエントリーを含むブックマーク

住友不動産がやってる地域密着型 SNS。

江戸時代は非常に栄えてたものの、ここ数十年はあんまり栄えてない地域に住んでいて思うのは、ネットに載らないような情報、例えばスーパーやクリーニング屋はどこにあって営業時間はいつなのかとか、非常に細々としたものを手軽に知る方法がほしいなということです。食べ物屋は口コミサイトがありますが、私の近所の店はまず載ってません。病院も最近は検索サイトや口コミサイトが増えてきてますが、評判まではわかりませんし。あるいは、どこのコンビニではアフタヌーンを扱ってるといった情報もほしいときがあります(分厚いためか扱ってないコンビニが多い)。

とりあえず登録してみたものの、このサービスは 4/18 に始まったばかりなので、さすがにそういった情報は全然載ってませんでした。同じ地域の登録者数は 100人足らずでした。これは人口の 0.04%。この JIMOT は最初に地域という単位でユーザが分断されますから、Mixi のユーザ数 800 万強=人口の 6.7% という割合よりも高くなければ活発なやり取りはなされないのではないでしょうか。人口の 10% だと数万人。ちょっと厳しそう。

また、地域に関する情報のやりとりがメインとなると、個人が非常に特定しやすくなります。距離的にも精々数 km の範囲なので行こうと思えば徒歩で行けます。この手のサービスが流行るとネット上に限らないトラブルが懸念されますね。

_ [Ruby] [ruby-dev:30735] ObjectC style keyword argument このエントリーを含むブックマーク

なかださんがメソッド定義に Objective-C スタイルのキーワード引数を使えるようにするパッチを投げています。さすがー。メールからのコピペですが、以下のように書けるとのこと。

class ObjC
  def copy:from: p [copy, from] end
end
ObjC.new.copy: "x", from: "y" #=> ["x", "y"]

定義文の方はまだ議論の必要があるようです。また、レシーバが必要な場合には . も必要なので呼び出す時の字面がちょっと不自然な感じがします。とはいえ、キーワード引数の導入は大歓迎です。

rails の render メソッドを例にとりますと、

render :action => "show", :layout => "dialog"

はキーワード引数を使うと、

render action: "show", layout: "dialog"

と書けるようになりますね。これは良い。

_ [適当] title_tag プラグイン導入しました このエントリーを含むブックマーク

この tdiary はタイトルなしでいつも書いているので、日付別やセクション別に表示したときに、title にサイト名と日付しか表示されませんでした。ブックマークしてくれる人が不便そうだということに気付きましたので title_tag プラグインを導入して title が表示されるようにしました。まあ、どちらにせよタイトルの付け方が適当なのでわかりにくいですけどね。

追記:あー。常にその日のすべてのセクションタイトルが表示されるようになってしまいました。セクションのアンカーをクリックしたときには、そのセクションのタイトルだけ表示させるにはどうすればいいのでしょうか。

Javascript 使ってるよなーと思って、そういう風に表示されるサイトのソースを見たところ、highlight プラグインを使えばよいことがわかりました。ということで解決。

_ [サイト運営] tdiary 2.1.4 にしました このエントリーを含むブックマーク

ついでに tdiary を開発版にしました。スパム対策の機能がいろいろ増えてますね。


最近のコメント:

  1. mpmjrgtmpw (10-03)
  2. ORDER PHENTERMINE (09-16)
  3. fopikolijok (09-14)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).