2011-04-08
■ [ruby] Ruby用のコマンドラインパーサSlop
標準添付のoptparseに似てるけど、オプション項目の置き場所も兼ねてるところが便利そう。
READMEより:
# parse assumes ARGV, otherwise you can pass it your own Array opts = Slop.parse do on :v, :verbose, 'Enable verbose mode' # boolean value on :n, :name, 'Your name', true # compulsory argument on :s, :sex, 'Your sex', :optional => false # the same thing on :a, :age, 'Your age', :optional => true # optional argument end # if ARGV is `-v --name 'lee jarvis' -s male` opts.verbose? #=> true opts.name? #=> true opts[:name] #=> 'lee jarvis' opts.age? #=> false opts[:age] #=> nil
2011-04-19
■ [scheme] R7RSの最初のドラフトが公開された
twitterでちょっと話題になっていたこれ。
- http://trac.sacrideo.us/wg/attachment/wiki/WikiStart/r7rs-draft-1.pdf (このページからDownloadをクリック)
Schemeの言語仕様の第7版、R7RSの最初のドラフトである。R7RSは、(Schemeにしては)大きくなりすぎたR6RSの反省を受けて、 コア部分の「Small Scheme」を定義するWorking Group 1と、ライブラリまで含めた「Large Scheme」を定義するWorking Group 2に分かれている。今回のドラフトはWG1のSmall Schemeの方。
まだちゃんと読んでないけど、R5RSをベースに、モジュール・例外・レコード型などが追加された感じか。
- レコード型はR6RSのやつより小さい仕様。サブセットかも。
- syntax-caseは入ってなかった。
- parameterizeが入った。
- 新しいデータ型としてblob (バイナリデータ) が入ってる。
- R6RSで「R5RS互換ライブラリ」に追いやられたdelayとforceが復活してるw
2008年にこんなことを書いたのですが、以外と動きが速くてピンチですね。
あとjsSchemeはR5RSベースですが、BiwaSchemeはR6RS準拠を目指しています。 目標時期は「R7RSが策定されるより前」とされています。
[Route 477 - BiwaSchemeより引用]
しかしWG2の方はなんかまだまだかかりそうに見えます。ていうか、ThreadとかGettextとかUDPとかやりたい放題だなおまえら!
2011-04-21
■ [english] コミットログを英語で書くためのテンプレ
githubに上げるコードは、可能なら英語でコミットログを書いたほうが良いです。なんか面白そうなプロジェクト見つけたとして、コミットログがロシア語とかアラビア語だったら困るよねという話です。
英語とか難しいと思うかも知れないですが、だいたい何か追加したか直したか変更したかのどれかなのでわりとパターン化できます。読めない言語で書かれている場合の可読性=0なので、英単語を適当に並べるだけで可読性が無限大パーセント改善されます。やった!
僕がよく使うのはこんな感じです(英語的に正しいかは知りません)。
- new: xx
- new: added (some) xx
- fix: xx did not work
- fix: xx was wrong
- fix: xx should (not) yy
- changed xx to yy
- removed unused xx
■ [ruby] Wirbでirbを色つけする
Wirbは、irbを機能拡張するWirbleというgemから、色つけ機能だけを取り出して、 ついでにバグも直したライブラリだ。
使い方は~/.irbrcに以下のように書くだけ。
require 'rubygems' # ← Ruby 1.9では不要 require 'wirb' Wirb.start
Wirbleはしばらく使ってたんだけど、Array.methodsとかの:+や:-が「:」になってしまうバグがあって削除してしまった。信用できないデバッグ出力は本当に困るので。
Wirbは:+や:-も正しく出力してくれる。ただし、デフォルトのカラースキームだと、ダブルクオート(")が灰色に割り当てられているので白背景の人は困ると思う。配色はこんな感じで変えられる。
Wirb.schema = {
# container
:open_hash => :light_green,
:close_hash => :light_green,
:open_array => :light_green,
:close_array => :light_green,
:open_set => :green,
:close_set => :green,
:open_enumerator => :green,
:close_enumerator => :green,
# delimiter colors
:comma => :green,
:refers => :green,
# class
:class => :light_green,
:class_separator => :green,
:object_class => :light_green,
# object
:open_object => :green,
:object_description_prefix => :green,
:object_description => :brown,
:object_addr_prefix => :brown_underline,
:object_addr => :brown_underline,
:object_line_prefix => :brown_underline,
:object_line => :brown_underline,
:object_line_number => :brown_underline,
:close_object => :green,
# symbol
:symbol_prefix => :yellow,
:symbol => :yellow,
:open_symbol_string => :brown,
:symbol_string => :yellow,
:close_symbol_string => :brown,
# string
:open_string => :dark_gray,
:string => :dark_gray,
:close_string => :dark_gray,
# regexp
:open_regexp => :light_blue,
:regexp => :dark_gray,
:close_regexp => :light_blue,
:regexp_flags => :light_red,
# number
:number => :cyan,
:range => :red,
:open_rational => :light_cyan,
:rational_separator => :light_cyan,
:close_rational => :light_cyan,
# misc
:keyword => nil, # rename to default?
:nil => :light_red,
:false => :red,
:true => :green,
}
いい感じのができたらWikiに貼ってあげてください。
2011-04-27
■ [ruby] Chromeからruby-devのメールを簡単に開く方法
以下の設定をすると、Omnibarに
ruby-dev (スペース) 40000
と打つだけで http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/40000 が表示されるようになる。
- Chromeの設定画面を開く
- 基本設定→検索→検索エンジンの管理...
- 一番下のフォームに「ruby-dev検索」「ruby-dev」「」のように入力してEnter
応用として、「%s」を含まないただのリンクを登録すれば、ブックマーク代わりにも使える。
□ mame [「changed xx to yy」だけでなく、「何のために変えたか」を書くことが重要ではないかと。 英作が億劫で目..]
□ yhara [なるほど>何のために]