トップ 最新 追記

Route 477



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でちょっと話題になっていたこれ。

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に貼ってあげてください。

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

mame [「changed xx to yy」だけでなく、「何のために変えたか」を書くことが重要ではないかと。 英作が億劫で目..]

yhara [なるほど>何のために]


2011-04-27

[ruby] Chromeからruby-devのメールを簡単に開く方法

以下の設定をすると、Omnibarに

ruby-dev (スペース) 40000

と打つだけで http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/40000 が表示されるようになる。

  1. Chromeの設定画面を開く
  2. 基本設定→検索→検索エンジンの管理...
  3. 一番下のフォームに「ruby-dev検索」「ruby-dev」「」のように入力してEnter

応用として、「%s」を含まないただのリンクを登録すれば、ブックマーク代わりにも使える。

追記