脳ざらし紀行


2005-02-01

_ [ネット] 信義誠実の原則(民法1条2項)

GPLv3が「とんでもない変更」になったら、それは十分に信義則違反で無効になりうるものなのよね*2。これだけ契約者の意思が明らかなものも滅多にないし。

*2:もちろんFSFと「契約した」人についての話であって、そもそも著作権を譲渡していない、自分の責任でライセンスをGPLにした著作権者は論外

http://d.hatena.ne.jp/atsushieno/20050131#p2

_ [ネット] blade へ飛ぶ bookmarklet

javascript:(function(){
    var Q = document.getSelection();
    if(!Q){
        Q = prompt("Enter ruby-*:000000", "");
    }
    var arry = Q.split(':');
    var result = window.open();
    result.location.href = 'http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/' + 
                           arry[0] + '/' + arry[1];
    
    void(0);
})();

ruby-dev:25596 というのを選択してブックマークレットを実行すると blade に飛ぶ。選択していないとプロンプトで聞いてくる。

_ [ネット] 懐かしの特許データベースに直リンクする裏技

「一太郎」「花子」の製造販売中止命令関連。

一旦メニューにいってCookie をセットしてから以下をクリック。

争点の特許2803236

H16. 8.31 東京地裁 平成15(ワ)18830等 特許権 民事訴訟事件

_ [ネット] プログラミング環境

そうなんだよな。CUIの長所って結局履歴と補完なんだから。だったらzsh使わなきゃダメなんだよな。いつまで経っても今のbash使ってるようじゃ、リッチなGUI環境に勝てるわけねーんだよ。

バカが征く

お金があったら LL は捨てて .Net で VisualStudio でハアハアしますよ。.Net って何なのか未だにぼんやりとしか分かってないんですが。

ri の補完は ruby-talk に投げてみたけど、完全にスルーされました。Subject に as useful as viagra ぐらい入れておかないといけないのだろうか。

Eclipse を使ってみました。非常に重い。Emacs より重いエディタがこの世に存在したとは。それになんだか何も考えなくても楽できるというほどでもないようだ。拡張したい時は Java で plugin を書かないといけない。Java 知らないし。

hideshow.el の hs-hide-block の動作が Ruby スクリプトだとどうもおかしい。何が悪いんだろう。

録画しておいたプリキュアの最終回を見ようとしたら、何故かゾイドが録画されていました。

_ [まんが] かの人や月 (2)

本の画像いくえみ綾著『かの人や月 (2)』。円熟の域。どんどんうまくなっていっているのがすごい。

_ [まんが] プ〜ねこ

本の画像北道正幸著『プ〜ねこ』。北道氏の作品は人物を記号化せずに、コントをちゃんとまんがで描いたような作風です。絵が書けなかったら放送作家にでもなっていたのではないでしょうか。


2005-02-03

_ [Ruby] Ruby のドキュメント

確かに少ないと僕は思います。標準ライブラリ関連が揃っていないと思います。で、リファレンスを時々書いたりしているわけですが。

リファレンスが読みにくいかどうかに関しては、先日から ri + zsh 補完が(僕の中で)標準になったので、まあどうでもいいかなと。

おもしろいのは、2ちゃんねるのスレでもドキュメントが少ないという声があって「そうだよなあ、ライブラリ関連のドキュメントって少ないよなあ」と思っていたら、どうも2ちゃんねるでドキュメントが少ないといっているのは主にチュートリアルのことらしいんです。これは盲点でした。聞いてみないと分からないもんです。

Ruby の入門書なんて本屋へ行けば良書が売っているわけだから、チュートリアルがないと騒いでいるなんて思いもよらなかったんです。どんなプログラミング言語でもそうだけどオンラインのチュートリアルだけで修得できるのかなあ?

現時点では http://www.ruby-doc.org/リファレンスでだいたいのライブラリがカバーできるはず。カバーできていないライブラリ

本の画像 本の画像


2005-02-04


2005-02-05

_ くまうた将棋

コンピュータ将棋に自然なハンディキャップをつけるとすると何だろうという話になり、鼻歌を歌わせてはどうだろうというアイデアを思い付く。

http://www.sgtpepper.net/kaneko/diary/20050205.html#p01

くまうたと将棋ソフトを合体させるのはどうだろう。


2005-02-06

_ [Ruby] Ruby公式ホームページへのご意見募集

www.ruby-lang.org への不満点を投稿しよう。なるべく具体的に。単に「ドキュメントがない」だけだと、あなたが欲しい分野のドキュメントは一番最後になってしまうかもしれない。


2005-02-07

_ [ネット] Wiki を編集するまでに乗り越えるハードル

逆引きRubyは俺も大変お世話になった(というか現在進行形でなっている)。恩返しをするべく、まだ開いてるページ(CGIとかは欲しい人が多そうだなあ)を埋めてみようかと思いつくものの、ForntPageから察するに、たけうちさんの執筆物という形で作っているようだから、細部修正はともかくでっかくのっけるのは気が引ける…。

てくのーと

そこでやっぱり止まってしまうのか。Wiki なんだから他人のサイトだろうが自分が思うように編集して良いと思います。自由に編集されるのが嫌だったら認証を掛けるでしょうし。

個人の Wiki でさえ編集することが躊躇されるんだから、Ruby の公式リファレンスマニュアルの編集するまでに乗り越えるハードルはやっぱり高いんだろうか。どうやったら人が集まるだろう。

Wikipedia についてに関しては反応リンク集の先までは読んでないんだけど、思ったこと。間違いに気付いたら正しい記事を書けないまでも、「こことここは間違っている」と書くだけで、それは立派な貢献だと思う。また、ページの記述が全体的にどうしようもなかったら、全部削除して「間違いが多すぎたので削除。執筆者募集。」と書き換えるのもありだと思う。

_ [ネット] OpenSSL::PKey::DSAのverifyに渡すsignをrとsで指定する方法

正解自体は なひさんがコメントで書いているけど、どうやってこれを調べたら良いのかメモ。

RFC 2459 「インターネットX.509 PKI - 証明書と CRL のプロファイル」の 7.2.2 に ASN.1 で

 Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER }

と書いてある。だから、

 
 require 'openssl'
 include OpenSSL
 sig = ASN1::Sequence.new([ASN1::Integer.new(r), ASN1::Integer.new(s)]).to_der

が正解なのか。

でも RFC 2459 は RFC 3280 により obsolete されている。かつ RFC 3280 には DSA の署名の ASN.1 構造が載っていない。正解にたどり着くのは結構難しい。

DSA 自体の仕様は ANSI X.9.30.1 を見るのが一般的らしい。ただし有料。$50。無料で仕様書を閲覧できるRFC というシステムは素晴らしいなと思った。

_ [ネット] ASN.1 バイナリ変換規則

がんばって RFC とか仕様書とかを読んでみたけど、このページが一番分かりやすかった。

_ [Ruby] OpenSSL::ASN1.decode

ちゃんとデコードされる。おもしろい。

$ ruby -ropenssl -rpp -e ' 
pp OpenSSL::ASN1.decode("0,\002\024C\e\317)%E\300NR\347}\326\374\261fL\203\317-w\002\024\v[\232$\021\230\350\363\206\220\004\366\010\251\341\215\245\314:\324")
'  
#<OpenSSL::ASN1::Sequence:0x40331224
 @tag=16,
 @tag_class=:UNIVERSAL,
 @tagging=nil,
 @value=
  [#<OpenSSL::ASN1::Integer:0x40331288
    @tag=2,
    @tag_class=:UNIVERSAL,
    @tagging=nil,
    @value=383122548009866097833353951919834639622095187319>,
   #<OpenSSL::ASN1::Integer:0x40331238
    @tag=2,
    @tag_class=:UNIVERSAL,
    @tagging=nil,
    @value=64841693857718051568170099635345788375059413716>]>

2005-02-13

_ [映画] オペラ座の怪人

素晴らしい。ただただ、素晴らしい。


2005-02-15

_ [Ruby] irb に | less が欲しい

irb を使っていると画面に入り切らないくらいの大量の出力があった時に、| less したくなることがある。というわけで、作ってみました。.irbrc に以下のように書く。rdoc を参考にしました。

require 'pp'
class IRBLess
  def setup_pager
    for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq
      return IO.popen(pager, "w") rescue nil
    end
  end
  def less(obj)
    pager = setup_pager
    begin
      save_stdout = STDOUT.clone
      STDOUT.reopen(pager)    
      pp obj
    ensure
     STDOUT.reopen(save_stdout)
     save_stdout.close
     pager.close
    end
  end
end

class Object
  def |(less)
    if less.is_a?(IRBLess)
      less.less(self)
    end
  end
end
 

class Array
  alias :orig_bar |
  def |(less)
    if less.is_a?(IRBLess)
      less.less(self)
    else
      orig_bar(less)
    end
  end
end

def less 
   IRBLess.new
end     

使い方。以下のように使う。

irb(main):001:0> Array.new(100){ rand.to_s } | less

とても便利。

_ [Ruby] Rubyist Magazine 0005号

出た。


2005-02-17

_ [ネット] デバッガの研究

メモ。


2005-02-18

_ 今年の流行

複数購入して重ね置きできる製品。ほんわかキリン本店佐藤一郎 Web日記より。


2005-02-19

_ [Ruby] irb で複数行の履歴を一度に表示

zsh だと複数行の履歴を一度に表示する機能があります。例えば、いま手元でCtrl-r で履歴 ./ruby を検索すると以下のように履歴に表示されました。

$ ./ruby -ve '   
[1, 2].each{|v|  
  Thread.start{
    p v
  }
}
'

irb でも

irb(main):001:0> class Foo
irb(main):002:1>   def foo
irb(main):003:2>     "foo"
irb(main):004:2>   end
irb(main):005:1> end

なんて入力した時は、履歴を検索した時に

irb(main):006:0> class Foo
                   def foo
                     "foo"
                   end
                 end

と表示してほしいですよね。以下のようなパッチで実現できます。

Index: irb.rb
===================================================================
RCS file: /src/ruby/lib/irb.rb,v
retrieving revision 1.7
diff -u -1 -r1.7 irb.rb
--- irb.rb      10 Jun 2003 05:22:16 -0000      1.7
+++ irb.rb      19 Feb 2005 03:25:57 -0000
@@ -97,2 +97,3 @@
       @scanner.exception_on_syntax_error = false
+      @hist_buf = nil
     end
@@ -125,2 +126,8 @@
        end
+        if indent == 0
+          if @hist_buf and @hist_buf != Readline::HISTORY[-1]
+            Readline::HISTORY.push(@hist_buf)
+          end
+          @hist_buf = nil
+        end
       end
@@ -131,2 +138,8 @@
            print l if @context.verbose?
+            if @hist_buf
+              @hist_buf = @hist_buf + "\n" +
+                ' ' * @context.io.prompt.size + Readline::HISTORY.pop
+            else
+              @hist_buf = Readline::HISTORY.pop
+            end
          else

IRB.conf[:SAVE_HISTORY] を true に設定してファイルに履歴を保存するようにしている場合は、以下のようなパッチも必要。

Index: input-method.rb
===================================================================
RCS file: /src/ruby/lib/irb/input-method.rb,v
retrieving revision 1.5
diff -u -1 -r1.5 input-method.rb
--- input-method.rb     7 Feb 2004 10:56:16 -0000       1.5
+++ input-method.rb     19 Feb 2005 03:02:11 -0000
@@ -96,3 +96,3 @@
               open(file, 'w' ) do |f|
-                hist = hist.to_a
+                hist = hist.to_a.map{|s| s.gsub(/(?!\Z)$/, '\\')} 
                 f.puts(hist[-num..-1] || hist)
@@ -111,3 +111,14 @@
 
-       loader = proc {|f| f.each {|l| HISTORY << l.chomp}}
+       loader = proc {|f|
+          buf = ''
+          f.each {|l|
+            if /\\\n/ =~ l
+              buf << l.sub(/\\\n/, "\n")
+            else
+              buf << l
+              HISTORY << buf.chomp
+              buf = ''
+            end
+          }
+        }
        if hist = IRB.conf[:HISTORY_FILE]

2005-02-20

_ [Ruby] irb でオブジェクトの中に入る

irb を使えばオブジェクトと対話するだけでなく、オブジェクトの中に入ることもできます。

irb(main):002:0> class Foo
irb(main):003:1>   def initialize
irb(main):004:2>     @a = "I am an instance var."
irb(main):005:2>   end
irb(main):006:1> end
=> nil

とクラス Foo を定義して以下のように実行します。

irb(main):007:0> irb Foo.new

すると以後 irb は Foo オブジェクトの中で実行されます。

irb#1(#<Foo:0x40444b28>):001:0> @a
=> "I am an instance var."

この機能と drb を一緒に使えば、リモートのオブジェクトの中にだって入れるかもしれません。ナイスなアイディアです。

以下のようにコマンドラインから実行して、

$ ruby -r drb/drb -e 'class Foo
                    def initialize
                      @a = "I am an instance var."
                    end
                    
                    def foo
                      "foo foo bar"
                    end
                  end
DRb.start_service("druby://:12250", Foo.new)
sleep
'

別の端末から以下のように実行すると

$ irb -rdrb/drb
irb(main):001:0> irb DRbObject.new(nil, "druby://:12250")
irb#1(#<Foo:0x4022d5dc>):001:0> @a
=> nil

あら nil しか返ってきませんね。これは @a が Foo オブジェクトのインスタンス変数ではなく、DRbObject オブジェクトのインスタンス変数として実行されちゃうからです。でもメソッドなら呼び出せます。

irb#1(#<Foo:0x4022d5dc>):002:0> foo
=> "foo foo bar"

どうせならインスタンス変数も直接呼べるようにしたいですよね。

_ [Ruby] irb でリモートのオブジェクトの中に入る

irb を適当に変更すれば、リモートのインスタンス変数を直接触ったり、メソッドを定義したり、実行したりする事は簡単にできます。ただ問題がひとつ出てきます。ローカルの irb のプロセスで定義されていないクラスのインスタンスを返り値として渡された時どうするかという問題です。これに関して『dRubyによる分散オブジェクトプログラミング』では次のように書かれています。

値渡しには大きな問題があります。オブジェクトを渡される側、つまり読み手の知らないクラスのオブジェクトは渡せません。読み手が Marshal.load できないためです。dRuby ではこれを解決する決め手が見つからず、あきらめています。値渡しをするアプリケーション間では、そのオブジェクトのクラスをお互いに知っているように注意してください。

『dRubyによる分散オブジェクトプログラミング』 P40-41

しかし、今回の場合はローカルの irb のプロセスにリモートのオブジェクトのコピーが必要というわけではありません。ローカルの irb のプロセスが知っておく必要があるのはオブジェクトを inspect した文字列だけです。これさえあれば、irb を操作している人間は、リモートのオブジェクトを本当に直接触っている感を得ることができます。

_ [Ruby] irb と drb でデバッグ

ここからが本題です。もし irb でリモートのオブジェクトを操作できるようになれば、それはデバッグに使えるはずです。ruby にも debug.rb というデバッガが付属しています。が、僕が愛用しているデバッガは print だとか p とかだったりするわけです。debug.rb はどうも難しくて使えません。たぶんそれは以下のような理由なんじゃないかなと思います。

  1. debug.rb が何をしているのか良く分からない。
  2. だから自分が書いたプログラムも debug.rb と一緒になった場合、どう動いているのか良く分からない。
  3. いちいちブレークポイントをコマンドラインから設定するのが面倒くさい。

ブレークポイントを設定するのにどうして直接ソースに書かないのか前から不思議に思っていました。コンパイルの必要な言語ならまだしも、コンパイルの必要のないスクリプト言語なわけですから、ソースなんて必要になったら書き直して良いはずです。この方法だと、やっていることは print デバッグと同じですから、人間に分かりやすいはずです。

というわけで、

  • 直接ソースにブレークポイントを書く。
  • irb をデバッガのインターフェースとして使う。
  • drb を使って実行中の他のプロセスを直接覗き見て、実行結果を変えることができる。

というような仕組みを作ってみました。デバッガに drb を組み合わせるのは yard の真似です。

class Hoge
  attr_accessor :somevar
end
Thread.new{
  loop do
    i = 'foo'
    j = 'another thread'
    IRBDB::SetBreakePoint(binding) if $DEBUG
  end
}

loop do
  i = rand()
  j = Hoge.new
  IRBDB::SetBreakePoint(binding) if $DEBUG
  i = 'hoge'
  IRBDB::SetBreakePoint(binding) if $DEBUG
end

みたいなデバッグ対象のソース sample.rb を用意します。コマンドラインから以下のように実行します。

$ ruby -rdebuggee -d sample.rb

別の端末から以下のように実行します。

$ irb -r irbdb
irb(main):001:0> irb DRbObject.new(nil, "druby://:12250")
irb#1("sample.rb:8"):001:0> 

sample.rb の8行目で止まっていることが分かります。例えばローカル変数を参照できます。

irb#1("sample.rb:8"):001:0> j
=> "another thread"

irbdb_c (or irbdb_continue) でスクリプトの実行を継続します。

irb#1("sample.rb:8"):002:0> irbdb_c
continue ...
=> reach another break point
irb#1("sample.rb:15"):003:0> j
=> #<Hoge:0x402186c8>
irb#1("sample.rb:15"):004:0> j.somevar = "foo foo bar"
=> "foo foo bar"
irb#1("sample.rb:15"):005:0> j.somevar
=> "foo foo bar"

ローカルの irb プロセスが知らない Hoge クラスのインスタンスも扱えます。メソッドも動的に定義できます。

irb#1("sample.rb:15"):006:0> def hoge
irb#1("sample.rb:15"):007:1>   'hoge'
irb#1("sample.rb:15"):008:1> end
=> nil
irb#1("sample.rb:15"):009:0> hoge
=> 'hoge'

irbdb からゲットできるので試してみてください。一応デフォルトで drb/acl を使ってアクセス制御はしていますが、他の悪意あるマシンから drb サーバに接続された場合なんでも実行可能なので注意してください。参考

この90行程度のスクリプトを作成するのに2回ほど print デバッグを行ないました。

_ [Ruby] irbdb の利点

  • set_trace_func を使っていないのでその分だけ debug.rb などより速いはず。
  • 標準出入力を邪魔しないので、例えば CGI スクリプトのデバッグにも使えるはず。

_ [ネット] デバッガに関するページ on c2.com

_ [Ruby] Breakpoint on Rails

Howto Debug With Breakpoint

binding_of_caller.rb すげえ。callcc と set_trace_func を使って、メソッドを呼び出した側の binding を取得する。some_method(binding) じゃ駄目ですかね。


2005-02-23

_ 〇〇 には何が入るでしょう

少し皮肉っぽくなっているきらいはあるものの,大方の指摘は的確であると感じられる。 〇〇 というシステムそのものに対する批評と言うよりかは, 〇〇 コミュニティに対する批判の方が比重が重くなっている。 〇〇 を万能であると信じ込んでいる人々や,その万能性をうそぶく人々が,ここでの批判の対象だ。

基本的に 〇〇 は極端なコンセプトに基づいた △△ であり,決して万能な □□ ではない。この点は多くの人々の同意が得られるところであると思う。したがって,その特徴を良く理解して運用することが重要であると考えられる。しかし 〇〇 コミュニティの人々は,その適応性を拡大的に解釈してしまったり,あるいは,誤った思想によって問題を覆い隠してしまっている節があると氏は批判する。そのような懐疑的な視点の欠如を "〇〇philia" ― 「〇〇病」と呼び揶揄しているというわけだ。

http://www.radiumsoftware.com/0502.html#050222


2005-02-24

_ 僕だったら

退職金に数億円から十億円程度を確約して、各取締役にこっちに付いてもらうように工作するかなあ。


2005-02-26

_ [経済] 新株発行に関する誤解

2005年2月25日の読売新聞を読んでいると解説面で三浦潤一氏によるニッポン放送の新株予約権に関して以下のような解説があった。

株の価値を計る指標に、利益を発行済株式で割った一株当たりの利益がある。ニッポン放送の昨年の三月期決算での連結税引き後利益は34億5700万円で、一株当たりの利益は101.67円だった。だが、新株が発行され、株数が3280万株から8000万株になれば、一株当たりの利益は41円程度に下がり、株の価値は目減りする。

『読売新聞』 2005年2月25日付

これは間違っている。ニッポン放送が新株発行によって得た資金を何の事業にも投資しなかった場合には、一株当たりの利益は確かに減るだろう。しかし、一般的には新しく得た資金を、会社の事業拡大への投資に回して利益を増やそうとするはずだ。それが成功するかどうかは分からないけど、新株発行後の一株当たりの利益はその新事業の成否を加味して予想されないといけない。

株価も下がる。企業の価値を表す株式の時価総額(発行済み株式数に株価を掛けたもの)でみると、ニッポン放送の時価総額は24日の終値で(6280円)ベースで約2059億円だが、株式数が8000万株に増えれば、株価は理論上、2500円程度に下がる計算になる。フジ以外の株主にとって新株予約権の発行は損失につながる。

『読売新聞』 2005年2月25日付

これも間違っている。まず第一に新株を発行して増資した後には自己資本が増えるわけで、その分 株式の時価総額に反映される。2059億円/8000万株 = 約2574円/株 などという単純な計算は成り立たない。分子の2059億円が増資の分だけ増えるはずだ。

一般に、増資前と増資後の株価というのは、増資によって得た資金を会社がどれだけうまく投資するかという投資家の予想に左右される。事業拡大などにより、これまでどおりの一株当たりの利益を稼ぐなら株価は増資前と変わらない。一株当たりの利益が下がると予想したなら、株価は下がるし、一株当たりの利益が上がると予想したなら、株価は上がる。

またニッポン放送の株価が2500円程度まで下落したら一番損するのはフジだ。予約権を行使するならフジは一株当たり5950円で取得するわけだから、それが2500円程度にもし下がったとしたら大損ということになる。フジが予約権を行使したなら、それはニッポン放送が増資によって得る資金を有効に活用するとフジが予想したということだ。自分の予想が外れたら損するのは、まあそれが投資というものだ。

_ [経済] ライブドアの言い分には一理ある

ポイズン・ピルは株式市場の効率を損なうだろうか。前にも書いたとおりポイズン・ピルはあってもなくても株式市場の効率を損なうことはないと僕は考える。しかし、企業が不当に安い行使価格の新株予約権を発行した場合は、敵対的買収の防衛が目的だろうが、単に増資が目的だろうが、市場の効率性を損なう。それは既存の株主から新規株主への所得の移転を意味する。要するに安い株価で株を取得できた新規株主は得するけど、その分 既存の株主は損をする事になる。

_ [経済] 巨大買収はなぜ失敗するか

買収というの買収対象企業に対する投資だ。投資の基本はリスクの分散だ。巨大企業の買収は、ある特定企業の株式だけに投資を集中するのと同じ事だから、非常にリスクが大きい。失敗することが多いのも当然だ。

企業買収が成功したなら、それは運が良かったか、小さな企業を複数買収してリスクを分散した場合だろう。

_ [経済] 自社株買いは自社の株式に対する投資だ

自社株買いは株価対策だと説明されることがある。これは間違っている。正確には自社の株式に対する投資だと考えるべきだ。

一般企業は証券会社や投資銀行と違って、他の企業の情報を多くは持っていないし分析する能力もない。だから株式に投資するということは普通しない。しかし、ただ1社に関してだけ非常に正確な情報を持っている。自社に関しての情報がそれ。どんな企業だって、自社に関する経営実態に関してはどこよりも正確な情報を持っているだろう。そして、もし自分の持っている情報に比べて、自社の株価が低かったなら自社の株式は有利な投資先となりうる。株価が低い時に自社の株を買って、高くなってからまた売れば(あるいは増資すれば)、場合によってはそれは自分の本来の事業へ投資するよりも、良い投資先かも知れない。

さて、企業が自社株買いした時に株価が上がるとしたら、本質的には上で書いた仕組みが原因で起こる。一株当たりの利益がどうだとかは関係ない。つまり、どこよりも正確な情報を持っている企業自身が有利な投資先として自社株を買ったということは、現在の株価が低いというシグナルを市場に送ることになる。だから、株価は上昇する。


2005-02-28

_ 先日、スーパーカーというバンドの解散ライブに行ってきました

そんなバンドがあったということを最近知りました。


最近のコメント

2003|01|02|03|04|05|06|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|11|12|
2006|01|02|03|04|05|06|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|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|04|05|
2011|04|
2012|03|07|
2013|01|02|07|
トップ 最新 追記