タグ

システムとrubyに関するo-hayatoのブックマーク (2)

  • 米GitHub、Ruby向けのリファクタリング支援ツール「Scientist 1.0」を発表 | OSDN Magazine

    GitHubは2月3日、コードパスをリファクタリングするRubyライブラリ「Scientist 1.0」を公開した。重要なコードの書き直しと置き替えを安全かつ確実に行うことができるツールを目指すという。 Scientistはコードのリファクタリングを行う際に利用するツール。最初のバージョンは2014年2月に公開された。 数年前、GitHub内でアプリケーションにおいてアクセス制御のパーミッションコードなどの最も重要なシステムを書き換えるにあたって、作業を確実に行うために開発されたという。リファクタリングでは抽出レイヤを挿入する「Branch by Abstraction(BBA)」手法があるが、この手法では新しいシステムの振る舞いが置き替えたいシステムと同等かを確認できないという問題点を指摘している。一方で、テストについても、すべての可能性を網羅できないなど限界があるとしている。 Sci

    米GitHub、Ruby向けのリファクタリング支援ツール「Scientist 1.0」を発表 | OSDN Magazine
  • rubyで衝突しないユニークな文字列を生成するには?

    ユーザがアップロードしたファイルのファイル名を決定する際、ファイル名が衝突しないように 現在時刻(ミリ秒)からIDを発行するという方法を思いつきました。 色々ためしてみて、下記のコードが完成したのですが、現在時刻の数値を62進数に変換しただけなので「p2dhXa6」や「p2d9Wco」のようにファイルの先頭文字がほぼp2で固定されてしまいます。 このままでも良いのですが、ファイル名で利用出来る文字を使って、衝突しないユニークかつ視覚的にもランダムであり、文字列長がより短いIDを生成する方法はございますでしょうか。 現状のコード def uniqid() def dec62(num) table = [('0'..'9'),('a'..'z'),('A'..'Z')].map{|c| c.to_a }.flatten num > 61 ? dec62(num/62)+table[num%62

    rubyで衝突しないユニークな文字列を生成するには?
  • 1