〜2004年8月下旬〜
なんかよくわからんが、3がいっぱい並んだ記念に。
In this release the option '-fschedule-insns2' was disabled for '-O2' or greater optimization because there are some problems when compiling with this option as Corinna reported me. I.e. cygserver & openssh should build ok now when '-fschedule-insns2' is disabled.
いつのまにか110000を越えていた。 10000からは3ヶ月ちょっと。
BlueClothを試してみた。使いかたは簡単なRDocよりもさらに簡単。
require 'bluecloth' puts BlueCloth.new(input_string).to_html
Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).
とここまでをMarkdownで書いてみると
### \[Ruby\] [BlueCloth][] [BlueCloth][]を試してみた。使いかたはRDocよりもさらに簡単: require 'bluecloth' puts BlueCloth::new(input_string).to_html 詳しくは本家[Markdown][]の [syntax][]を参照。 > Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML). [BlueCloth]: http://raa.ruby-lang.org/project/bluecloth/ [Markdown]: http://daringfireball.net/projects/markdown/ [syntax]: http://daringfireball.net/projects/markdown/syntax/
という感じ。linkはinlineじゃなくてreferenceを使ってみた。 この形式のほうが見易くていいな。
引用はメールと同じで> なんだけど、 最初の行だけ書けば後は省略してもいいってのも面白い仕様だ。 しかしcode blockはcolonが必要ってことになかなか気づかなかった。
RedClothは本家の Textileを見ると、なんか中途半端な印象が否めないので試すのをやめた。
Changes:
Major changes include support for storing sudoers info in LDAP, a new "sudoedit" command to allow users to safely edit files with the editor of their choice, support for disabling execve(2) in dynamic executables run by sudo, and a new -i option to simulate initial login.
SM::ToHtmlだけではhyperlinkにならないことが判明。 rdoc/READMEに書いてある仕様にするには、 rdoc/generators/html_generator.rbのようにhandle_special_HYPERLINKを定義してadd_specialしないといけない。ちょっと面倒だなあ。
あまり知られていないが、RDocにもテンプレートがある。 RDoc自身がなぜかriのデータ対象になってないのでri RDocしてもヒットしないが、
% rdoc -1 -q /usr/local/lib/ruby/1.9/rdoc/template.rb > template.html
と実行すればドキュメントを見ることができる。
require 'rdoc/template' values = {"a" => "1", "b" => "2"} template = TemplatePage.new(<<'EOT') a = %a% b = %b% EOT res = '' p template.write_html_on(res, values)
結果は"a = 1\nb = 2"となる。なぜか最終行の改行がない。
さっき作ったtemplate.htmlも確認してみると確かにない。
% tail -1 template.html |od -tx1z 0000000 3c 2f 68 74 6d 6c 3e ></html>< 0000007
まあ、HTMLならいいのか。
cvsとspamにいったいどんな関係があるのか? と思ったら、単にcommit mailをHTMLで色づけして送るからそういう名前になったらしい。 たしかにそんなもんが送られてきたら高い確率でspamと判定される。
NEWSから気になった機能を。
2. Gawk now supports the ' flag in printf. E.g., %'d in a locale with thousands separators includes the thousands separator in the value, e.g. 12,345.
3桁毎に","で区切る。これは便利だ。
This has one problem; the ' flag is next to impossible to use on the command line, without major quoting games. Oh well, TANSTAAFL.
たしかにその通り。試そうとしてちょっと悩んだ。
% gawk 'BEGIN{printf "%'"'"'d\n", 12345}' 12,345
どうせなら %,dにすればいいのにと思ったり。
今回は非常によいこに育っているようだ。前回育てそこねた原因はなんなのか理由を考えてみた。 違いはというと、とある通知メールがspam扱いになるので思い切り学習させたくらいだ。 ってそれか。
フェーン現象の仕組み。そうだったのか。ってぐぐればちゃんと書いてあるな。
YAMLとERBでテンプレートエンジンもどきを作ったはいいが、idという名前が出てきて困った。
% ruby -e 'p id' 538098892
なのでmethod_missingが呼ばれない。 MyTemplateにidというメソッドを追加したところで、 printだのselectだの出てきたら切りがない。 やっぱ無名のmoduleか何かの中でメソッドを定義するか。 いやevalを使えって。
再放送かという内容が続いてどうしたんだと思ったら途中で中止になった。 この時期に台風が来るなんてあまり考えられないもんなあ。残念。
昨日の続き。結局evalを使わずにmethodを定義してみた。
require 'yaml' require 'erb' module MyTemplate def self.define_vars(vars) Module.new do vars.each do |name, val| define_method name do val end end end end def self.emit(template, vars) extend define_vars(vars) ERB.new(template).result(binding) end end vars = YAML.load(<<-'end') --- a: 1 b: 2 id: 3 end print MyTemplate.emit(<<'end', vars) a = <%=a%> b = <%=b%> id = <%=id%> end
でも2回目以降に問題があるな。YAMLにidがなくても3のままだ。
module MyTemplate def self.emit(template, vars) Module.new do vars.each do |name, val| define_method name do val end end extend self return ERB.new(template).result(binding) end end end
とするか。
つまりsyckが不安定だからか。 ってことは1.8のデフォルトを--enable-install-docにすると、 逆にGentooは--disable-install-docになってしまいそうな予感。
それにしても RAAで templateを検索するといっぱい出てくる。 今のおいらの用途だとERBを使わなくても TextTemplateで十分か。 まあ、でもERBだとRuby 1.8以降ならついてくるというのは大きい。
今週末に1.0.0が出る予定らしい。 fcって何かと思ったらfinal candidateらしい。
Markdownでは
# Within tags, encode * and _ so they don't conflict # with their use in Markdown for italics and strong. # We're replacing each such character with its # corresponding MD5 checksum value; this is likely # overkill, but it should prevent us from colliding # with the escape values by accident.
というコメントにもあるように、 MD5を使って過剰とも言えるエスケープをしている。 BlueClothはどうかなと確認してみると、やはり同じようにMD5を使ってる。 そこまで真似しなくてもという気はする。