• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
5分で分かる Measure
 

5分で分かる Measure

on

  • 6,048 views

5分で分かる Measure

5分で分かる Measure

Statistics

Views

Total Views
6,048
Views on SlideShare
5,902
Embed Views
146

Actions

Likes
3
Downloads
5
Comments
0

3 Embeds 146

http://d.hatena.ne.jp 114
http://coderwall.com 31
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    5分で分かる Measure 5分で分かる Measure Presentation Transcript

    • 札幌 Ruby 会議‒01; 2008‒10‒255分で分かるMeasure村田 賢太Kenta Murata
    • やるおは偉いからその日のうちに宿題を片付けてしまうんだお!
    • 本日の宿題自分の身長を測ってみよう!
    • 身長を測ってみよう!
    • だっておwwwwwwwバカにするのもいいかげんにして欲しいおwww
    • やる夫の身長は11文字 放尿は気持ちイイお!
    • もう宿題終わったお!今日も YourAVHost でスッキリするお! エロギーク様々だおっ
    • やる夫くん、気を付けて
    • だ、誰だお?
    • やる夫くん、問題を良く見て
    • 本日の宿題 自分の身長を 測ってみよう!何フィートかな?
    • フィートってなんだお・・・さっきは書いてなかった気がするお・・・
    • 11文字が何フィートになるか分かんないおどうしたらいいお?
    • Measure
    • Measure ライブラリ‣ 単位付き数値クラスを提供‣ 異なる単位間の変換を定義可能‣ 単位付き数値の簡易記法を提供 18
    • 単位付き数値とは?‣ 173 [cm]‣ 63 [kg]‣ 376.730 [Ω]‣ 101,325 [Pa]‣ 1.602 10 [C] ‒19 19
    • インストール方法mrkn-macbook:~ root# gem install -r measureBulk updating Gem source index for: http://gems.rubyforge.orgSuccessfully installed measure-0.1.01 gem installedInstalling ri documentation for measure-0.1.0...Installing RDoc documentation for measure-0.1.0...mrkn-macbook:~ root# 20
    • 使い方mrkn-macbook:~ root# irbirb(main):001:0> require measureirb(main):002:0> Measure.define_unit :m, :lengthirb(main):003:0> Measure.define_unit :cm, :lengthirb(main):004:0> Measure(1, :m)=> #<Measure:0x57d8c @unit=:m, @value=1>irb(main):005:0> Measure(1, :cm).to_s=> "1 [cm]" 21
    • 単位変換irb(main):006:0> Measure.define_conversion :m, :cm => 100irb(main):007:0> (Measure(1, :m) + Measure(1, :cm)).to_s=> "1.01 [m]"irb(main):008:0> Measure.define_unit :in, :lengthirb(main):009:0> Measure.define_conversion :in, :cm => 2.54irb(main):010:0> Measure.define_unit :mm, :lengthirb(main):011:0> Measure.define_conversion :m, :mm => 1000irb(main):012:0> (Measure(210, :mm) - 2*Measure(1, :in)).to_s=> "159.2 [mm]" 22
    • マルチホップ変換 [in] 2.54倍 [cm] 100分の1 2.54分の1 100倍 [m] 1000倍連結な単位間での 1000倍相互変換の経路を [mm]幅優先探索で発見 23
    • 簡易記法irb(main):013:0> require measure/supportirb(main):014:0> Measure.form { 1.m - 1.cm }.to_s=> "0.99 [m]" 24
    • Proc による単位変換irb(main):015:0> Measure.define_unit :deg_c, :temperatureirb(main):016:0> Measure.define_unit :deg_f, :temperatureirb(main):017:0> Measure.define_conversion :deg_c, :deg_f=> lambda {|x| 9.0*x/5.0 + 32 }irb(main):018:0> Measure.define_conversion :deg_f, :deg_c=> lambda {|x| 5.0*(x - 32)/9.0 }irb(main):019:0> Measure.form { -40.deg_c.as_deg_f }.to_s=> "-40.0 [deg_f]" 25
    • 定義済み単位‣ measure/length を require すると次の単位 が定義され相互変換可能な状態になるm, meter pt, point, dp, didot_point in, inchcm, centi_meter bp, big_point ft, feetmm, milli_meter pc, pica yd, yardkm, kilo_meter aa, angstromum, micro_meter au, AU, astronomical_unitnm, nano_meter ly, light_year 26
    • Future works‣ 定義済み単位を増やす ‣ 【急募】地域で定義が違う場合の対応方法‣ 多次元単位への対応 ‣ 1 [kg m / s ] 1.kg.m.s(–2) 2‣ 複数の単位変換系をサポート‣ スレッドセーフ化 27
    • 糸冬 了2008年10月25日 札幌Ruby会議にて