明るくならないと眠れないみたいだ
なんていうんだろう。ここ最近そんな感じだったから、じゃあカーテン締めて暗いままだとずっと眠れないんだろうかと思ってしめっぱにしていたらやっぱ眠れない。
なんていうんだろう。ここ最近そんな感じだったから、じゃあカーテン締めて暗いままだとずっと眠れないんだろうかと思ってしめっぱにしていたらやっぱ眠れない。
UNIQLO とニトリのちらしが、派手さと落ちついた感じのバランスと、情報量の多さと余白のバランスがなんかよくて、すげーって思った。
たまには折込チラシも見るべきだなぁ。
読んでると、感じるような気持ちが、作家によって違う。あたりまえなのかもしれないけど、結構不思議だ。作品によって、じゃなくて、作家によって違う。
っていうのを見るとなんかムカついて目を反らしてしまう。Ruby は勉強するものじゃない。そうなって欲しくないと思う。
JS とか C とか Java にはそういうの感じない。なんなんだろう。
RDoc のデフォルトテンプレとか、出回ってるテンプレみたかぎりとか、なんていうか、色が濃すぎて、みんな嫌いなので RDoc のソースよみながら書いてみた。
http://safeeval.rubyforge.org/ こんなかんじになります。safeeval はちいさすぎていまいちだけど、ローカル gem の rdoc とかにつかうといいと思う。
配色とかは search.cpan.org っぽい感じにした。Ruby カラーの赤ってなんかドキュメントにいれるとイライラしてしまうので、というかドキュメント見てるときってだいたいイライラしてるので心を落ちつかせる青系がいいと思う。
svn co http://svn.coderepos.org/share/lang/ruby/rdoc/generators/template/html/resh/ resh
local gem の rdoc をアップデートするには
$ cat ~/.gemrc rdoc: --template ~/coderepos/lang/ruby/rdoc/generators/template/html/resh/resh.rb --inline-source $ sudo gem rdoc --all --no-ri --config-file ~/.gemrc
もし gem つくったときにデフォルトのテンプレートにしたいなら、Rake::RDocTask にオプション設定
rdoc.template = "#{ENV["HOME"]}/coderepos/lang/ruby/rdoc/generators/template/html/resh/resh.rb" 最初に表示されるページは指定されたオプションをガン無視して、README (あれば) と、クラス・メソッド・ファイルのインデックスをあわせたみたいなのにした。わりとうまくいく。
あと --inline-source オプションも常に無視して、常に inline-source 表示するようにしてる。でも邪魔は邪魔なので、JS で見えたり消えたりするようにしてる。ボックスが目立たないから最初はとまどうかもしれないけど、目立つべきじゃないのでこうしてる。慣れる。
実装は hate rdoc/template って感じでわざわざ ERB つかうように RDoc のメソッドをオーバーライドしてる。だから html_generator の実装が変わるとバグるかもしれない。generator ごと新しく作ろうと思ったけど、名前に困ったのでやめた。どっちにしろほとんどコピペになるし……互換性なくなったらそうしよう。
http://modulepluggable.rubyforge.org/
sudo gem install module-pluggable
Module::Pluggable っぽいのをつくろうとおもったのだけど、よくわかんないのでほしいのつくった。中身は chokan の plugin 機構とほとんど同じ。なので、スクリプトロード後のリロード (デーモンっぽいやつでの動的リロード) とか、多数のインスタンスをつくったり、リロードしないまんまのプラグインの状態を保持ったりできる。そのかわり直接プラグインのクラスにはアクセスできない (匿名モジュール内にロードされてインスタンス化される)。
それはともかく
なんか rubyforge config すると
package_ids:
modulepluggable: 5722とかなってしまって
package_ids:
module-pluggable: 5722にしないとリリースできない。これ config するたびに書きかえないといけないのかなぁ
EOF (End of file), EOS (End of string) を一番つかう。
これ以外のときも EOx にするようにしてる気がする。
タブインデントだとヒアドキュメント書くときに楽ができる
classs Hoge
def hoge
<<-EOS.gsub(/^\t+/, "")
hoge
hoge
aaaaa
EOS
end
endoptparse で banner 書くときによく使う。
あと晒せないけどごちゃごちゃ。鯖もローカル (Mac) も共通なのはこれぐらい
http://jp.rubyist.net/magazine/?0010-PackageManagement の generate_yaml_index.rb はいまはこのなまえ。
カレントディレクトリの gems/* を見て、
を生成する。yaml には gems/* 以下の Gem::Specification をあつめたやつが入ってる。キャッシュらしい。.rz/.Z は zlib で圧縮されたやつだけど gzip ではない。
rubygems
uri = source + "/gems/#{spec.full_name}.gem"
response = Gem::RemoteFetcher.fetcher.fetch_path uri
109: zipped_yaml = fetch_path("/quick/" + spec_name + ".gemspec.rz")
123: def get_quick_index
124: zipped_index = fetch_path("/quick/index.rz")
300: # Get the quick index needed for incremental updates.
301: def fetch_quick_index(source_uri)
302: zipped_index = fetcher.fetch_path source_uri + '/quick/index.rz'
306: "No quick index found: " + ex.message
355: spec_uri = source_uri + "/quick/#{spec_name}.gemspec.rz"なんか似たようなのがふたつ。
よくみる Bulk updating Gem source index for: は yaml.Z/yaml の更新 (source_index.rb)
quick/* を利用した incremental な source index の更新は
use_incremental = missing_gems.size <= INCREMENTAL_THRESHHOLD
で決まってる。INCREMENTAL_THRESHHOLD = 50。missing_gems はサーバの quick/index[.Z] と、ローカルの spec を比べたときにサーバがわにしかない spec。差分 spec が 50 以上のときと、quick index が利用できないときは常に bulk update により yaml[.Z] が取得される。
yaml[.Z] のサイズは rubyforge のもので .Z が 855KB, 圧縮していないのは 11MB (!) もある (単純に http://gems.rubyforge.org/yaml[.Z] にアクセスすればわかる)。リリースごとに spec は増えていくはずだから、あんだけ大きい gem サーバだとすぐ 50 を超えて bulk update になるだろうと思う。というかおれの使いかただと gem install するごとに毎回 bulk update してる感じだ。quick/index は 140KB。1行に1gem だから、rubyforge がホストしている gem の数は
wget http://gems.rubyforge.org/quick/index wc -l index
すればわかる。現在だと 8555 gems のようだ (バージョン違いの gem を含む)。
quick/index + 1M ぐらいダウンロードしてきて、伸張して YAML.load してるんだからそりゃ遅いよなぁ。gem の名前ごとに gem サーバをわけるとか、あるいはもっと根本的に解決しないとどんどこ遅くなっていくなぁ。なんか昔の RO のパッチクライアントを思い出した。
>