Archive for category <技術一般>

returning は死んだ。 Object#tap を使おう

標記のとおり、死ぬみたいです。

crankharder

I’m curious to know what the rational is behind this?

rohit

You can now use tap.

正論過ぎて返す言葉もありませんね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require "rubygems"
require "active_support"
 
a1 = returning [] do |ary|
  ary << 'hoge'
  ary << 'fuga'
end
 
a2 = [].tap do |ary|
  ary << 'hoge'
  ary << 'fuga'
end
 
require "spec"
a1.should == a2
#=> true

確かに、タイピング量的にも、tapの方が少なくなりますね。でも、1.8.6みたいにtapのバックポートが無い場合とか、あとreturningを使いまくってる場合は…。

そもそもtapもreturningも4行ぐらいで実装できるので、以下のような config/initializers/returning_strikes_back.rb を作成すれば互換性を確保できるんじゃあないでしょうか。あまり薦めませんが。。

1
2
3
4
5
6
7
8
9
10
module ReturningStrikesBack
  def returning(value)
    yield(value)
    value
  end
end
 
class Object
  include ReturningStrikesBack
end

Ubuntuでkumofsのdebを作成する

kumofsは、memcache互換のプロトコルをサポートする分散型KVS。

なぜかまだだれもdebを公開していなかったようなので、作り方を調べてみました。

Read the rest of this entry »

Linux Commandline Ripping – Abcde

A Better CD Encoder via CDRipping

Those who want a no-nosense, fast, customizable ripping solution should try ABCDE.

mp3エンコーディングのためには、id3v2が要るって言われました。

1
sudo aptitude install id3v2 abcde

一応、lameとかも入れた方がいいかもしれません。いや、勝手に入るのかも。既に入れてたので確認できてませんが。。。

使ってみた感じ、コマンドラインなのでわりと軽い、何より速いです。AsunderとかRubyRipperとかも試したんですけど体感速度は全然違います。

/etc/abcde.conf で細かく設定します。以下、オプション設定例。

1
2
3
4
5
6
7
8
# デフォルトの出力フォーマット
OUTPUTTYPE=mp3
# lameに渡すオプションを直接記入
LAMEOPTS="--preset studio"
# ファイル出力先の書式
OUTPUTFORMAT='/home/udzura/Music/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'
# リッピング終了後に、ディスクを取り出す
EJECTCD=y

あと、普通にコマンドラインのオプションを色々渡せます。

1
abcde -o 'mp3:--preset studio' -x # for example

ヘルプをガン見すればより細かい制御もできそうだし、しばらく使ってみようかと。ちなみに /usr/bin/abcde 自体はただのシェルスクリプトですね…。

# もしかしたら、WindowsでもCygwinとかで動くんじゃないですかね?