2013-07-13 Kyoto.pm #5 LT
-
Upload
iwata-susumu -
Category
Documents
-
view
566 -
download
4
Transcript of 2013-07-13 Kyoto.pm #5 LT
![Page 1: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/1.jpg)
Array::RangedInt
2013-07-13 Kyoto.pm #5岩田 享 / issm
![Page 2: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/2.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 3: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/3.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 4: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/4.jpg)
2013-07-13 Kyoto.pm #5
おまえだれよ?
岩田 享 / issm(いわた)
http://blog.iss.ms/
@issm, qr/issmx{,2}/
Perl / CoffeeScript / 自転車
嗜む程度に
個人事業
とある「商品」を販売 → 発注 → 発送管理 などするためのシステムの開発・保守
![Page 5: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/5.jpg)
2013-07-13 Kyoto.pm #5
名古屋(の近く)からきました
![Page 6: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/6.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
Textile記法
Text::Textile
拡張性について
応用
まとめ
アジェンダ
Minecraft がおもしろすぎておしごとするのがつらい
![Page 7: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/7.jpg)
2013-07-13 Kyoto.pm #5
本題
![Page 8: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/8.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 9: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/9.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 10: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/10.jpg)
2013-07-13 Kyoto.pm #5
Array::RangedInt
![Page 11: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/11.jpg)
2013-07-13 Kyoto.pm #5
とあるアプリケーションで何番が選択されているかを保持
選択されている番号のボタンをアクティヴに
![Page 12: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/12.jpg)
2013-07-13 Kyoto.pm #5
Array::RangedInt
![Page 13: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/13.jpg)
2013-07-13 Kyoto.pm #5
カテゴリに属するすべての番号が選択
→「このカテゴリのすべてを選択」ボタンをアクティヴに
とあるアプリケーションで
![Page 14: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/14.jpg)
2013-07-13 Kyoto.pm #5
Array::RangedInt
![Page 15: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/15.jpg)
2013-07-13 Kyoto.pm #5
商品の選択解除でボタンを非アクティヴに
→「このカテゴリのすべてを選択」ボタンを非アクティヴに
とあるアプリケーションで
![Page 16: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/16.jpg)
2013-07-13 Kyoto.pm #5
Array::RangedInt
![Page 17: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/17.jpg)
2013-07-13 Kyoto.pm #5
単品ごとの「選択」ボタンと「すべてを選択」ボタンとの整合性確保が必要
リスト・ハッシュでがんばろうとしたけど,カオス発生
「整数の範囲」を扱いたい
とあるアプリケーションで
![Page 18: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/18.jpg)
2013-07-13 Kyoto.pm #5
そのへんをなんとかするモジュールを書いてみた
(2012年の暮れに)
![Page 19: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/19.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 20: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/20.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 21: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/21.jpg)
2013-07-13 Kyoto.pm #5
Array::RangedInthttps://github.com/issm/p5-Array-RangedInt
「『範囲表記』な整数」を要素にもち,ごにょごにょするためのモジュール
要素の例
1
2-5
-5:-2 ( -5--2 でも可)
![Page 22: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/22.jpg)
2013-07-13 Kyoto.pm #5
Array::RangedInt隣接する整数群は「範囲」として扱う
(1, 2, 3, 4, 6, 8, 9, 10) -> (‘1-4’, 6, ’8-10’)
「範囲」を扱う特性上...
必ず順序付けされている
重複した値を持たない
![Page 23: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/23.jpg)
2013-07-13 Kyoto.pm #5
Array::RangedIntRange::Object::DigitString
似てる?
私のほしいメソッドが足りない
![Page 24: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/24.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 25: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/25.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 26: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/26.jpg)
2013-07-13 Kyoto.pm #5
コンストラクタ->new( @args ) / ->parse( $text )
$ari = Array::RangedInt->new( 1, 3, ‘5-10’ )
$ari = Array::RangedInt->parse( ‘1,3,5-10’ )
1, 3, 5-10
![Page 27: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/27.jpg)
2013-07-13 Kyoto.pm #5
要素を追加する->add(@args)
$ari->add( 2, 15, ’21-25’ )
1, 2, 3, 5-10, 15, 21-25
![Page 28: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/28.jpg)
2013-07-13 Kyoto.pm #5
要素を追加する->add(@args)
$ari->add( 2, 15, ’21-25’ )
1, 2, 3, 5-10, 15, 21-25
1-3, 5-10, 15, 21-25
![Page 29: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/29.jpg)
2013-07-13 Kyoto.pm #5
要素を削除する->remove(@args)
$ari->remove( 3, 8, ‘18-22’ )
1-3, 5-10, 15, 21-253 8 18-20,21-22
![Page 30: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/30.jpg)
2013-07-13 Kyoto.pm #5
要素を削除する->remove(@args)
$ari->remove( 3, 8, ‘18-22’ )
1-2, 5-7, 9-10, 15, 23-25
1-3, 5-10, 15, 21-253 8 18-20,21-22
![Page 31: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/31.jpg)
2013-07-13 Kyoto.pm #5
shift!->shift()
$ari->shift()
1-2, 5-7, 9-10, 15, 23-25
![Page 32: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/32.jpg)
2013-07-13 Kyoto.pm #5
shift!->shift()
$ari->shift()
2, 5-7, 9-10, 15, 23-25
got: 1
1-2, 5-7, 9-10, 15, 23-25
![Page 33: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/33.jpg)
2013-07-13 Kyoto.pm #5
pop!->pop()
$ari->pop()
2, 5-7, 9-10, 15, 23-25
![Page 34: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/34.jpg)
2013-07-13 Kyoto.pm #5
pop!->pop()
$ari->pop()
2, 5-7, 9-10, 15, 23-24
got: 25
2, 5-7, 9-10, 15, 23-25
![Page 35: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/35.jpg)
2013-07-13 Kyoto.pm #5
含んでいる?->includes( @args )
$ari->includes( 2 ) # 1
$ari->includes( 2, 5, 7 ) # 1
$ari->includes( 2, 3, 4 ) # 0
$ari->includes( ‘5-7’, ’23-24’ ) # 1
$ari->includes( ‘5-7’, ’20-25’ ) # 0
2, 5-7, 9-10, 15, 23-24
![Page 36: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/36.jpg)
2013-07-13 Kyoto.pm #5
配列のサイズを取得する->size()
$ari->size() # 9
2, 5-7, 9-10, 15, 23-241 3 2 1 2
![Page 37: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/37.jpg)
2013-07-13 Kyoto.pm #5
文字列として->stringify()
$ari->stringify()
’2,5-7,9-10,15,23-24’
![Page 38: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/38.jpg)
2013-07-13 Kyoto.pm #5
配列として->dump()
my @a = $ari->dump() # as array
my $a = $ari->dump() # as arrayref
( 2, 5 .. 7, 9 .. 10, 15, 23 .. 24 )
[ 2, 5 .. 7, 9 .. 10, 15, 23 .. 24 ]or
![Page 39: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/39.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 40: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/40.jpg)
2013-07-13 Kyoto.pm #5
自己紹介
背景
Array::RangedInt
SYNOPSIS
まとめ
アジェンダ
![Page 41: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/41.jpg)
2013-07-13 Kyoto.pm #5
まとめArray::RangedInt ってモジュールを書いた
「範囲表記」な整数をそのまま扱う
範囲をともなう整数の集合の扱いを多少ラクに
とても素直(愚直)なコーディング工夫の余地大あり
![Page 42: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/42.jpg)
2013-07-13 Kyoto.pm #5
まとめKansai.pm #15 での LT からの進展
bugfix 程度 ><
TODOA::RI オブジェクトを引数に
overload 使って A::RI 同士の演算を実装集合の加算・減算みたいに
メモリサイズや速度の計測・比較とか
![Page 43: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/43.jpg)
2013-07-13 Kyoto.pm #5
ご静聴ありがとうございました!https://github.com/issm/p5-Array-RangedInt
![Page 44: 2013-07-13 Kyoto.pm #5 LT](https://reader038.fdocuments.net/reader038/viewer/2022110121/558ff64c1a28abcd088b460c/html5/thumbnails/44.jpg)
2013-07-13 Kyoto.pm #5
Q?