rabbit-slide-kou-rubykaigi-2019 2019.4.19.1 → 2019.4.19.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e221fe9bf7f94889fc89060ff8e9be02211e3033ba3a0a1e3cf92070cc5a2d6a
4
- data.tar.gz: aeb62998f66445093d09e3651199637314b8e15d340cdb2ba1b6ac95bdc2ad21
3
+ metadata.gz: 495e690dbe339a3e1fb9ad1fbd98e22b91aa1b733b4eb4b594884c40291aaeb7
4
+ data.tar.gz: 61866cde464a200c5d38175b88b23f9a81782e68723003977acd78b248c88e6f
5
5
  SHA512:
6
- metadata.gz: 402e69c2537dcdc4d7badb0506c01f440fcb59fd8d0ffe5ac5372c50a22d0aed32a0456f3062270d7672d7cdccddbf82b0febc984aeff9e23d19bc8e9891da9b
7
- data.tar.gz: 9a1a31fadae5799e381dfcc3eabb1563fc714694139db8a4c827251957e877dad2f9b2286c52f37d77542609fea360a3118200c4a8174e07eb056000d7eb70a1
6
+ metadata.gz: 66929548825ba3c0bb093dc12fcca1d07d92bc8ccd7474e429c076496d355c82f5416af327a7a930f797a4e622b959bba772f5b371894fce0a7b7b72f2860ec4
7
+ data.tar.gz: 96b451ad88c028d9a38f2c7addaa9af887970e1f24747df04f014ece8c36fdb2af2c7073fcedda4ab3885fec08d6d9e7328e7e3a1a0906e9fc491cbbe4692fe4
data/config.yaml CHANGED
@@ -7,7 +7,7 @@ tags:
7
7
  - csv
8
8
  - apachearrow
9
9
  presentation_date: 2019-04-19
10
- version: 2019.4.19.1
10
+ version: 2019.4.19.2
11
11
  licenses:
12
12
  - CC-BY-SA-4.0
13
13
  slideshare_id:
data/csv.rab CHANGED
@@ -52,7 +52,10 @@
52
52
 
53
53
  = Kazuma Furuhashi
54
54
 
55
- * TODO: Kazuma part
55
+ * A member of Asakusa.rb / Red Data Tools\n
56
+ (('note:Asakusa.rb/Red Data Toolsメンバー'))
57
+ * Worikng at Speee Inc.\n
58
+ (('note:Speeeで働いている'))
56
59
 
57
60
  = csv in Ruby 2.6 (1)\n(('note:Ruby 2.6のcsv(1)'))
58
61
 
@@ -277,8 +280,6 @@ Complex quote\n
277
280
  * (({String#split})) is naive for complex quote\n
278
281
  (('note:(({String#split}))は複雑なクォートを処理するには単純過ぎる'))
279
282
 
280
- = TODO: Kazuma part start
281
-
282
283
  = 2.5 uses (({String#split}))
283
284
 
284
285
  # rouge ruby
@@ -296,7 +297,7 @@ Complex quote\n
296
297
  end
297
298
  # ...
298
299
 
299
- = Parsing complex quote with (({split}))
300
+ = (({split})): Complex quote
300
301
 
301
302
  # RT
302
303
 
@@ -305,7 +306,8 @@ Complex quote\n
305
306
  Include sep2, 118.0i/s
306
307
 
307
308
  (('tag:center'))
308
- Slow down
309
+ Slow down\n
310
+ (('note:遅くなる'))
309
311
 
310
312
  = 2.6 uses (({StringScanner}))
311
313
 
@@ -332,6 +334,10 @@ Slow down
332
334
  parse_quoted_column_value
333
335
  end
334
336
 
337
+ (('tag:center'))
338
+ Compositable components\n
339
+ (('note:部品を組み合わせられる'))
340
+
335
341
  = (({parse_unquoted_column_value}))
336
342
 
337
343
  # rouge ruby
@@ -345,19 +351,12 @@ Slow down
345
351
  # rouge ruby
346
352
 
347
353
  def parse_quoted_column_value
354
+ # Not quoted
348
355
  return nil unless @scanner.scan(/"/)
349
- pos = @scanner.pos; value = ""
350
- loop do
351
- value << @scanner.scan(/[^"]+/)
352
- if @scanner.scan(/""/) # "": Escaped quote
353
- value << '"'
354
- elsif @scanner.scan(/"/) # End
355
- return value
356
- else # No end quote
357
- @scanner.pos = pos; return nil # Rewind and return
358
- end; end; end
359
-
360
- = Parse methods can be composited
356
+ # Quoted case ...
357
+ end
358
+
359
+ = Parse methods can be composited\n(('note:パースメソッドを組み合わせられる'))
361
360
 
362
361
  # rouge ruby
363
362
 
@@ -367,13 +366,21 @@ Slow down
367
366
  end
368
367
 
369
368
  (('tag:center'))
370
- Easy to maintain
369
+ Easy to maintain\n
370
+ (('note:メンテナンスしやすい'))
371
371
 
372
372
  = Point (1)\n(('note:ポイント(1)'))
373
373
 
374
- ...
374
+ * Use (({StringScanner})) for complex case\n
375
+ (('note:複雑なケースには(({StringScanner}))を使う'))
376
+ * (({StringScanner})) for complex case:\n
377
+ (('note:複雑なケースに(({StringScanner}))を使うと:'))
378
+ * Easy to maintain\n
379
+ (('note:メンテナンスしやすい'))
380
+ * No performance regression\n
381
+ (('note:性能が劣化しない'))
375
382
 
376
- = Parsing complex quote with (({StringScanner}))
383
+ = (({StringScanner})): Complex quote
377
384
 
378
385
  # RT
379
386
 
@@ -382,9 +389,8 @@ Easy to maintain
382
389
  Include sep2, 325.6i/s
383
390
 
384
391
  (('tag:center'))
385
- No slow down...?
386
-
387
- = TODO: Kazuma part end
392
+ No slow down...?\n
393
+ (('note:遅くなっていない。。。?'))
388
394
 
389
395
  = How to improve performance (2)\n(('note:速度改善方法(2)'))
390
396
 
@@ -456,7 +462,7 @@ for simple case\n
456
462
  (('note:(({while}))は新しいスコープを作らない'))
457
463
  * Normally, you can use (({loop}))\n
458
464
  (('note:ふつうは(({loop}))でよい'))
459
- * Normally, (({loop})) isn't bottle neck\n
465
+ * Normally, (({loop})) isn't a bottle neck\n
460
466
  (('note:ふつうは(({loop}))がボトルネックにはならない'))
461
467
 
462
468
  = How to improve performance (4)\n(('note:速度改善方法(4)'))
@@ -502,10 +508,6 @@ Lazy\n
502
508
  liberal_parsing: {backslash_quote: true})
503
509
  # [["a\\"bc", "a\\"bc"]]
504
510
 
505
- = TODO: Kazuma part start
506
-
507
- = TODO: Kazuma part end
508
-
509
511
  = (({strip:}))\n(('note:(({strip:}))'))
510
512
 
511
513
  # rouge ruby
@@ -736,9 +738,60 @@ Simplify\n
736
738
  performance regression ((*bugs*))\n
737
739
  (('note:性能劣化((*バグ*))を検出するために重要'))
738
740
 
739
- = TODO: Kazuma part start
741
+ = benchmark_driver gem
742
+
743
+ Fully-featured benchmark driver for Ruby 3x3\n
744
+ (('note:Ruby 3x3のために必要な機能が揃っているベンチマークツール'))
745
+
746
+ = BenchmarkDriver
747
+
748
+ * Accurate Measurement\n
749
+ (('note:正確な計測'))
750
+ * Pluggable & Fully Featured\n
751
+ (('note:プラガブルだし必要な機能が揃っている'))
752
+ * Flexible Interface\n
753
+ (('note:柔軟なインターフェイス'))
754
+
755
+ = Accurate Measurement\n(('note:正確な計測'))
756
+
757
+ * Low overhead benchmark\n
758
+ (('note:オーバーヘッドが小さいベンチマーク'))
759
+ * Profiling memory usage\n
760
+ (('note:メモリー使用量の分析'))
761
+ * Profiling high-precision real time\n
762
+ (('note:精度の高い実時間の分析'))
763
+
764
+ = Pluggable & Fully Featured\n(('note:プラガブルだし必要な機能が揃っている'))
740
765
 
741
- = TODO: Kazuma part end
766
+ * Runner and output format are\n
767
+ all pluggable\n
768
+ (('note:実行モジュールと出力モジュールはすべてプラガブル'))
769
+
770
+ = Flexible Interface\n(('note:柔軟なインターフェイス'))
771
+
772
+ * YAML input to easily manage structured benchmark set\n
773
+ (('note:構造化されたベンチマークセットを管理しやすいYAMLによる入力'))
774
+ * Comparing multiple Ruby binaries, even with miniruby\n
775
+ (('note:minirubyも含む複数Rubyバイナリーを使った比較'))
776
+
777
+ = Benchmark for each gem version\n(('note:gemのバージョン毎のベンチマーク'))
778
+
779
+ # img
780
+ # src = images/benchmark-driver.svg
781
+ # relative_height = 100
782
+ # reflect_ratio = 0.1
783
+
784
+ == Slide properties
785
+
786
+ : enable-title-on-image
787
+ false
788
+
789
+ = csv/benchmark/
790
+
791
+ * convert_nil.yaml
792
+ * parse{,_liberal_parsing}.yaml
793
+ * parse_{quote_char_nil,strip}.yaml
794
+ * read.yaml, shift.yaml, write.yaml
742
795
 
743
796
  = Summary: Benchmark\n(('note:まとめ:ベンチマーク'))
744
797
 
@@ -852,10 +905,20 @@ Default gemified\n
852
905
  * Improve perf. of REXML as well as csv\n
853
906
  (('note:csvのようにREXMLも高速化'))
854
907
 
855
- = Join us\n(('note:一緒に開発しようぜ!'))
908
+ = Join us!\n(('note:一緒に開発しようぜ!'))
856
909
 
857
910
  * Red Data Tools:\n
858
911
  ((<URL:https://red-data-tools.github.io/>))
859
912
  * RubyData Workshop: Today 14:20-15:30
860
913
  * Code Party: Today 19:00-21:00
861
914
  * After Hack: Sun. 10:30-17:30
915
+
916
+ = Join us!!\n(('note:一緒に開発しようぜ!!'))
917
+
918
+ * OSS Gate: ((<URL:https://oss-gate.github.io/>))
919
+ * provides a "gate" to join OSS development\n
920
+ (('note:OSSの開発に参加する「入り口」を提供する取り組み'))
921
+ * Both ClearCode and Speee are one of ((<sponsors|URL:https://oss-gate.github.io/sponsors/>))\n
922
+ (('note:クリアコードもSpeeeもスポンサー'))
923
+ * OSS Gate Fukuoka:\n
924
+ ((<URL:https://oss-gate-fukuoka.connpass.com/>))
Binary file
Binary file
@@ -0,0 +1,165 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:xlink="http://www.w3.org/1999/xlink"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ width="429.63293mm"
14
+ height="280.67984mm"
15
+ viewBox="0 0 429.63293 280.67984"
16
+ version="1.1"
17
+ id="svg8"
18
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
19
+ sodipodi:docname="benchmark-driver.svg">
20
+ <defs
21
+ id="defs2">
22
+ <clipPath
23
+ clipPathUnits="userSpaceOnUse"
24
+ id="clipPath4750">
25
+ <rect
26
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ef2929;fill-opacity:1;fill-rule:nonzero;stroke:#ef2929;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
27
+ id="rect4752"
28
+ width="337.45715"
29
+ height="177.59839"
30
+ x="-355.60001"
31
+ y="-44.640068" />
32
+ </clipPath>
33
+ <clipPath
34
+ clipPathUnits="userSpaceOnUse"
35
+ id="clipPath4756">
36
+ <rect
37
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ef2929;fill-opacity:1;fill-rule:nonzero;stroke:#ef2929;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
38
+ id="rect4758"
39
+ width="329.71262"
40
+ height="103.08146"
41
+ x="-211.67747"
42
+ y="394.2861" />
43
+ </clipPath>
44
+ </defs>
45
+ <sodipodi:namedview
46
+ id="base"
47
+ pagecolor="#ffffff"
48
+ bordercolor="#666666"
49
+ borderopacity="1.0"
50
+ inkscape:pageopacity="0.0"
51
+ inkscape:pageshadow="2"
52
+ inkscape:zoom="0.49497475"
53
+ inkscape:cx="394.08858"
54
+ inkscape:cy="635.1738"
55
+ inkscape:document-units="mm"
56
+ inkscape:current-layer="layer1"
57
+ showgrid="false"
58
+ fit-margin-top="0"
59
+ fit-margin-left="0"
60
+ fit-margin-right="0"
61
+ fit-margin-bottom="0"
62
+ inkscape:window-width="1920"
63
+ inkscape:window-height="1016"
64
+ inkscape:window-x="1920"
65
+ inkscape:window-y="27"
66
+ inkscape:window-maximized="1" />
67
+ <metadata
68
+ id="metadata5">
69
+ <rdf:RDF>
70
+ <cc:Work
71
+ rdf:about="">
72
+ <dc:format>image/svg+xml</dc:format>
73
+ <dc:type
74
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
75
+ <dc:title />
76
+ </cc:Work>
77
+ </rdf:RDF>
78
+ </metadata>
79
+ <g
80
+ inkscape:label="レイヤー 1"
81
+ inkscape:groupmode="layer"
82
+ id="layer1"
83
+ transform="translate(355.60001,44.640068)">
84
+ <image
85
+ sodipodi:absref="benchmark-driver-yaml.png"
86
+ xlink:href="benchmark-driver-yaml.png"
87
+ y="-44.640068"
88
+ x="-355.60001"
89
+ id="image4612"
90
+ preserveAspectRatio="none"
91
+ height="403.57776"
92
+ width="330.20001"
93
+ clip-path="url(#clipPath4750)" />
94
+ <rect
95
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ce5c00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
96
+ id="rect4712"
97
+ width="101.29761"
98
+ height="30.631138"
99
+ x="-342.44641"
100
+ y="-7.6488094" />
101
+ <image
102
+ sodipodi:absref="benchmark-driver-yaml.png"
103
+ xlink:href="benchmark-driver-yaml.png"
104
+ width="330.20001"
105
+ height="403.57776"
106
+ preserveAspectRatio="none"
107
+ id="image4748"
108
+ x="-212.16486"
109
+ y="93.78981"
110
+ clip-path="url(#clipPath4756)"
111
+ transform="translate(-143.92253,-261.32779)" />
112
+ <image
113
+ sodipodi:absref="benchmark-driver-result.png"
114
+ xlink:href="benchmark-driver-result.png"
115
+ y="9.1333265"
116
+ x="-170.79485"
117
+ id="image4709"
118
+ preserveAspectRatio="none"
119
+ height="162.98334"
120
+ width="244.82777" />
121
+ <circle
122
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#729fcf;stroke-width:0.8021611;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
123
+ id="path4725"
124
+ cx="-125.22695"
125
+ cy="41.448689"
126
+ r="3.4302914" />
127
+ <circle
128
+ r="3.4302914"
129
+ cy="90.207611"
130
+ cx="-125.22695"
131
+ id="circle4727"
132
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#729fcf;stroke-width:0.8021611;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
133
+ <circle
134
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#729fcf;stroke-width:0.8021611;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
135
+ id="circle4729"
136
+ cx="-125.22695"
137
+ cy="140.10046"
138
+ r="3.4302914" />
139
+ <rect
140
+ y="27.125006"
141
+ x="-342.44641"
142
+ height="34.773811"
143
+ width="101.29749"
144
+ id="rect4760"
145
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#729fcf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
146
+ <circle
147
+ r="3.4302914"
148
+ cy="61.627533"
149
+ cx="-125.22695"
150
+ id="circle4762"
151
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ce5c00;fill-opacity:1;fill-rule:nonzero;stroke:#ce5c00;stroke-width:0.8021611;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
152
+ <circle
153
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ce5c00;fill-opacity:1;fill-rule:nonzero;stroke:#ce5c00;stroke-width:0.8021611;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
154
+ id="circle4764"
155
+ cx="-125.22695"
156
+ cy="110.53786"
157
+ r="3.4302914" />
158
+ <circle
159
+ r="3.4302914"
160
+ cy="159.98271"
161
+ cx="-125.22695"
162
+ id="circle4766"
163
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ce5c00;fill-opacity:1;fill-rule:nonzero;stroke:#ce5c00;stroke-width:0.8021611;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
164
+ </g>
165
+ </svg>
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbit-slide-kou-rubykaigi-2019
3
3
  version: !ruby/object:Gem::Version
4
- version: 2019.4.19.1
4
+ version: 2019.4.19.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-11 00:00:00.000000000 Z
11
+ date: 2019-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rabbit
@@ -62,6 +62,9 @@ files:
62
62
  - Rakefile
63
63
  - config.yaml
64
64
  - csv.rab
65
+ - images/benchmark-driver-result.png
66
+ - images/benchmark-driver-yaml.png
67
+ - images/benchmark-driver.svg
65
68
  - images/clear-code-rubykaigi-2019-silver-sponsor.png
66
69
  - images/speee-rubykaigi-2019-cafe-sponsor.png
67
70
  - pdf/rubykaigi-2019-csv.pdf