rabbit-slide-unasuke-rubykaigi-takeout-2021 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 732d56fa2a284c03379943a273a91515e2650e4f22e4c5e83e71c6da5c3e59a2
4
+ data.tar.gz: 5fd354443aede176899628795dec3d782d143b48a7acc4602b0a639d9f37bd88
5
+ SHA512:
6
+ metadata.gz: 2640702b071091842633bbe5a0bd78a3f822b6c97b5651f2e96cba723f724aaaf01dfa09adfa6c72e4fdcd7751f08a801c164334d8f2a7ff319939674dee238a
7
+ data.tar.gz: 778cd8171c8504075d16b36bcadc62ee9e7fe3ee9d2a3fb2c815909ee2df763a054a14368f160dc553148ca840a6d7d1087bdf6d997527aaa134903b27b4bf3e
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ --size 1200,675 slide.rab
data/README.rd ADDED
@@ -0,0 +1,24 @@
1
+ = Ruby, Ractor, QUIC
2
+
3
+ https://rubykaigi.org/2021-takeout/presentations/yu_suke1994.html
4
+
5
+ == 作者向け
6
+
7
+ === 表示
8
+
9
+ rake
10
+
11
+ === 公開
12
+
13
+ rake publish
14
+
15
+ == 閲覧者向け
16
+
17
+ === インストール
18
+
19
+ gem install rabbit-slide--rubykaigi-takeout-2021
20
+
21
+ === 表示
22
+
23
+ rabbit rabbit-slide--rubykaigi-takeout-2021.gem
24
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/config.yaml ADDED
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: rubykaigi-takeout-2021
3
+ base_name: slide
4
+ tags:
5
+ - ruby
6
+ - quic
7
+ - rubykaigi
8
+ - http
9
+ - ractor
10
+ presentation_date: 2021-09-11
11
+ presentation_start_time:
12
+ presentation_end_time:
13
+ version: 1.0.0
14
+ licenses: ['MIT']
15
+ slideshare_id:
16
+ speaker_deck_id:
17
+ ustream_id:
18
+ vimeo_id:
19
+ youtube_id:
20
+ author:
21
+ markup_language: :rd
22
+ name: unasuke
23
+ email: yusuke1994525@gmail.com
24
+ rubygems_user: unasuke
25
+ slideshare_user:
26
+ speaker_deck_user:
Binary file
Binary file
data/img/bindata.png ADDED
Binary file
Binary file
data/img/hamburger.png ADDED
Binary file
Binary file
data/img/icon_raw.jpg ADDED
Binary file
data/img/ko1_tweet.png ADDED
Binary file
Binary file
Binary file
data/img/quic.svg ADDED
@@ -0,0 +1,70 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+ viewBox="0 0 725.33331 245.33333"
11
+ height="245.33333"
12
+ width="725.33331"
13
+ xml:space="preserve"
14
+ id="svg2"
15
+ version="1.1"
16
+ inkscape:version="0.91 r13725"
17
+ sodipodi:docname="QUIC-Badge-Dark-RGB-Horiz.svg"
18
+ inkscape:export-filename="C:\Users\marti\Downloads\QUIC-Badge-Dark-RGB-Horiz.png"
19
+ inkscape:export-xdpi="96.114136"
20
+ inkscape:export-ydpi="96.114136"><sodipodi:namedview
21
+ pagecolor="#ffffff"
22
+ bordercolor="#666666"
23
+ borderopacity="1"
24
+ objecttolerance="10"
25
+ gridtolerance="10"
26
+ guidetolerance="10"
27
+ inkscape:pageopacity="0"
28
+ inkscape:pageshadow="2"
29
+ inkscape:window-width="1498"
30
+ inkscape:window-height="778"
31
+ id="namedview14"
32
+ showgrid="false"
33
+ inkscape:zoom="1.1893432"
34
+ inkscape:cx="215.47867"
35
+ inkscape:cy="150.92815"
36
+ inkscape:window-x="406"
37
+ inkscape:window-y="347"
38
+ inkscape:window-maximized="0"
39
+ inkscape:current-layer="svg2" /><metadata
40
+ id="metadata8"><rdf:RDF><cc:Work
41
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
42
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>QUIC Badge</dc:title></cc:Work></rdf:RDF></metadata><defs
43
+ id="defs6" /><g
44
+ id="horiz"
45
+ transform="matrix(0.13333333,0,0,-0.13333333,0,245.33333)"><g
46
+ id="badge"><path
47
+ id="path16"
48
+ style="fill:#284058;fill-opacity:1;fill-rule:nonzero;stroke:none"
49
+ d="m 1930.63,1200.17 -721.94,416.81 c -41.4,23.9 -92.39,23.9 -133.78,0 l -478.703,-276.38 0.18,-0.11 -4.821,-2.78 c 13.668,-4.14 26.887,-9.78 39.286,-17.01 l 19.343,-11.29 0.039,0.01 136.536,-78.79 -58.895,-34 -126.719,73.16 -0.011,-0.02 c -41.504,24.21 -94.426,22.04 -134.504,-5.68 13.066,-4.09 25.703,-9.55 37.589,-16.49 l 29.563,-17.25 -0.004,0 126.25,-72.89 -58.84,-33.97 -128.332,74.06 c -45.953,25.86 -105.254,19.83 -145.804,-16.96 -25.833,-24.9 -40.977,-59.49 -40.977,-96.28 l 0,-328.412 c 0,-47.777 25.496,-91.937 66.887,-115.847 L 1074.91,223.25 c 41.39,-23.898 92.38,-23.898 130.73,-1.762 l 479.18,276.653 -0.01,0.007 4.88,2.813 c -13.66,4.141 -26.88,9.777 -39.28,17.008 l -19.35,11.281 -0.11,-0.02 -729.54,421.012 58.949,34.028 719.611,-415.461 0.15,0.082 c 41.52,-24.231 94.47,-22.032 134.57,5.73 -12.7,3.969 -24.98,9.199 -36.57,15.859 l -7.7,4.45 -12.73,7.429 -0.11,-0.019 -729.38,421.09 58.78,33.94 720.07,-415.55 c 43.8,-25.379 100.18,-21.398 140.81,10.852 3.38,2.808 6.81,5.566 9.87,8.609 25.61,25.43 39.78,59.02 39.78,94.617 l 0,328.422 c 0,47.79 -25.5,91.95 -66.88,115.85"
50
+ inkscape:connector-curvature="0" /><path
51
+ id="path26"
52
+ style="fill:#5dcae9;fill-opacity:1;fill-rule:nonzero;stroke:none"
53
+ d="m 1141.79,681.512 -411.028,237.281 411.028,237.277 411.02,-237.277 -56.36,-32.539 185.58,-107.152 64.88,37.457 0,204.461 -605.11,349.33 -605.128,-349.33 0,-204.461 605.128,-349.329 241.93,139.668 -185.59,107.141 -56.35,-32.527"
54
+ inkscape:connector-curvature="0" /></g><path
55
+ inkscape:connector-curvature="0"
56
+ d="m 2795.1,814.641 -322.78,0 0,287.929 323.79,0 z m 194.51,-214.582 0,0 108.38,62.57 -135.16,78.043 0.46,394.808 c 0.02,17.95 -9.55,34.54 -25.09,43.51 l -101.56,58.65 c -20.35,11.74 -43.42,17.92 -66.91,17.92 l -271.19,0 c -23.48,0 -46.56,-6.18 -66.89,-17.92 l -101.72,-58.73 c -15.52,-8.96 -25.08,-25.53 -25.08,-43.45 l 0,-353.71 c 0,-17.93 9.56,-34.488 25.08,-43.449 l 101.73,-58.723 c 20.33,-11.75 43.4,-17.93 66.89,-17.93 l 116.11,0 0,0.352 138.91,0 112.89,-65.18 0,0 c 35.81,-20.539 83.02,-19.922 123.15,3.239"
57
+ style="fill:#284058;fill-opacity:1;fill-rule:nonzero;stroke:none"
58
+ id="q" /><path
59
+ inkscape:connector-curvature="0"
60
+ d="m 3463.28,661.648 214.77,0 c 23.48,0 46.56,6.18 66.89,17.93 l 101.9,58.813 c 15.48,8.961 25.05,25.488 25.07,43.39 l 0.65,473.779 -167.48,0 -1.02,-440.919 -266.99,0 0,440.919 -167.48,0 0,-473.81 c 0,-17.93 9.55,-34.488 25.08,-43.449 l 101.72,-58.723 c 20.34,-11.75 43.41,-17.93 66.89,-17.93"
61
+ style="fill:#284058;fill-opacity:1;fill-rule:nonzero;stroke:none"
62
+ id="u" /><path
63
+ inkscape:connector-curvature="0"
64
+ d="m 4168.5,661.66 166.51,0 0,593.9 -166.51,0 0,-593.9"
65
+ style="fill:#284058;fill-opacity:1;fill-rule:nonzero;stroke:none"
66
+ id="i" /><path
67
+ inkscape:connector-curvature="0"
68
+ d="m 5153.92,1102.57 0,152.99 -329.24,0 c -23.49,0 -46.56,-6.18 -66.91,-17.92 l -101.71,-58.73 c -15.52,-8.96 -25.08,-25.53 -25.08,-43.45 l 0,-353.71 c 0,-17.93 9.56,-34.488 25.08,-43.449 l 101.72,-58.723 c 20.34,-11.75 43.41,-17.93 66.9,-17.93 l 329.24,0 0,148.981 -0.96,0 0,4.012 -354.5,0 0,287.929 355.46,0"
69
+ style="fill:#284058;fill-opacity:1;fill-rule:nonzero;stroke:none"
70
+ id="c" /></g></svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/slide.rab ADDED
@@ -0,0 +1,347 @@
1
+ = Ruby, Ractor, QUIC
2
+
3
+ : author
4
+ unasuke (Yusuke Nakamura)
5
+ : content-source
6
+ RubyKaigi Takeout 2021
7
+ : date
8
+ 2021-09-11
9
+ : theme
10
+ theme
11
+
12
+ = Self introduction
13
+
14
+ * Name: unasuke (Yusuke Nakamura)
15
+ * Work: freelance Web app developer
16
+ * OOParts (Cloud Gaming Service) backend dev
17
+ * Itamae gem maintainer, Kaigi on Rails staff
18
+ * (('tag:x-small')) GitHub ((<URL:https://github.com/unasuke>))
19
+ * (('tag:x-small')) Mastodon ((<URL:https://mstdn.unasuke.com/@unasuke>))
20
+ * (('tag:x-small')) Twitter ((<URL:https://twitter.com/yu_suke1994>))
21
+
22
+
23
+ # image
24
+ # src = img/icon_face.jpeg
25
+ # relative_width = 24
26
+ # align = right
27
+ # relative_margin_right = -8
28
+ # relative_margin_top = 33
29
+
30
+ = Next generation Web
31
+ widespreading Web usage
32
+ \n
33
+ * Cloud Gaming
34
+ * Video meeting
35
+ * Streaming media
36
+ \n
37
+ We want the Web to be faster!
38
+
39
+ = Cloud Gaming requiement
40
+
41
+ ((*"real-time bidirectional communication"*))
42
+ \n
43
+
44
+ (1) Send player's input to the game on the cloud machine
45
+ (1) The game render the input result
46
+ (1) Send result to the player's screen (web browser)
47
+ \n
48
+ Repeat the above process as soon as possible for comfortable game play.
49
+
50
+ (Same as remote working collaboration)
51
+
52
+ = Way to real-time bidirectional communication on the Web
53
+ * Now
54
+ * WebRTC
55
+ * WebSocket
56
+ * Future?
57
+ * WebTransport
58
+ * a new server-client protocol over the HTTP/3
59
+ * use UDP
60
+ * status: draft → ((<URL:https://datatracker.ietf.org/group/webtrans/documents/>))
61
+
62
+ = HTTP/3
63
+ A new hyper text transfer protocol (draft)
64
+
65
+ # blockquote
66
+ This document defines HTTP/3, a mapping of HTTP semantics over the QUIC transport protocol
67
+
68
+ ((<URL:https://datatracker.ietf.org/doc/draft-ietf-quic-http/>))
69
+
70
+ "QUIC" ? What is this?
71
+
72
+ = QUIC
73
+ * standardized at 2021-05-27 by IETF
74
+ * More faster than HTTP/2
75
+ * Using UDP, not TCP
76
+
77
+ # image
78
+ # src = img/quic.svg
79
+ # relative_width = 55
80
+ # align = right
81
+
82
+ (('tag:right'))
83
+ (('tag:xx-small'))
84
+ \n\n\n\n
85
+ Logo from ((<URL:https://quic.tech>))
86
+
87
+ = Tweet by ko1
88
+
89
+ # image
90
+ # src = img/ko1_tweet.png
91
+ # relative_width = 57
92
+
93
+ (('tag:xx-small'))
94
+ (('tag:center'))
95
+ ((<URL:https://twitter.com/_ko1/status/1282963500583628800>))
96
+
97
+ = Tweet by ko1
98
+ two people
99
+
100
+ * @_ko1 (Koichi Sasada)
101
+ * Ruby core commiter
102
+ * Ractor author
103
+ * @kazuho (Kazuho Oku)
104
+ * author of h2o
105
+ * QUIC RFC contributor
106
+
107
+ Sounds interesting!
108
+
109
+ # image
110
+ # src = img/ko1_tweet.png
111
+ # relative_width = 55
112
+ # align = right
113
+
114
+ = What, Why QUIC
115
+ * HTTP uses TCP/IP
116
+ * TCP is reliable, but slow
117
+ * Oriented data transfer
118
+ * Retransmission of lost packets
119
+ * Congestion control
120
+ * UDP is unreliable, but fast
121
+ * realtime transfer e.g. audio
122
+
123
+ = What, Why QUIC - TCP's problem
124
+ * Three way handshake
125
+ * additional TLS handshake (at secure communication)
126
+ * Head-of-Line Blocking (HoLB)
127
+
128
+ \n
129
+
130
+ # blockquote
131
+ QUIC is a new latency-reducing, reliable, and secure internet transport protocol
132
+
133
+ ((<URL:https://www.fastly.com/blog/quic-is-now-rfc-9000>))
134
+
135
+ = Is there a benefit?
136
+
137
+ Why imprement QUIC on Ruby?
138
+
139
+ (1) For my study and interest
140
+ (1) For Ractor
141
+ * There are still few examples of Ractor
142
+ * helps evaluation and improvement of Ractor
143
+ * e.g. ((<URL:https://github.com/mame/optcarrot>))
144
+
145
+ = QUIC - Initial Packet (RFC9001 Appendix A)
146
+
147
+ # image
148
+ # src = img/quic_initial_packet.png
149
+ # relative_width = 59
150
+
151
+
152
+ = QUIC - reading Initial Packet
153
+
154
+ # image
155
+ # src = img/quic_initial_packet_reading_1.png
156
+ # relative_width = 90
157
+
158
+ = QUIC - reading Initial Packet
159
+
160
+ # image
161
+ # src = img/quic_initial_packet_reading_2.png
162
+ # relative_width = 90
163
+
164
+ = QUIC - reading Initial Packet
165
+
166
+ # image
167
+ # src = img/quic_initial_packet_reading_3.png
168
+ # relative_width = 90
169
+
170
+ = QUIC - reading Initial Packet
171
+
172
+ # image
173
+ # src = img/quic_initial_packet_reading_4.png
174
+ # relative_width = 90
175
+
176
+ = QUIC - reading Initial Packet
177
+
178
+ # image
179
+ # src = img/quic_initial_packet_reading_5.png
180
+ # relative_width = 90
181
+
182
+ = QUIC - reading Initial Packet
183
+
184
+ # image
185
+ # src = img/quic_initial_packet_reading_6.png
186
+ # relative_width = 90
187
+
188
+ = n月刊ラムダノート Vol.2, No.1(2020)
189
+ # image
190
+ # src = img/nmonthly-vol-2-no-1-2020.png
191
+ # relative_width = 26
192
+
193
+ (('tag:center'))
194
+ (('tag:xx-small'))
195
+ (('#1 パケットの設計から見るQUIC(西田佳史)'))\n
196
+ ((<URL:https://www.lambdanote.com/collections/frontpage/products/nmonthly-vol-2-no-1-2020>))
197
+
198
+ = QUIC - reading Initial Packet by Ruby
199
+
200
+ # image
201
+ # src = img/bindata.png
202
+ # relative_width = 80
203
+
204
+ = QUIC - reading Initial Packet by Ruby
205
+
206
+ # image
207
+ # src = img/bindata.png
208
+ # relative_width = 80
209
+
210
+ It causes ((*Ractor::IsolationError*)) when use in not main Ractor
211
+
212
+ = QUIC - reading Initial Packet by Ruby
213
+
214
+ # image
215
+ # src = img/quic_initial_packet_string.png
216
+ # relative_width = 100
217
+
218
+ I cannot read this, and ruby cannot read it ((*bit by bit*)).
219
+
220
+ = QUIC - reading Initial Packet by Ruby
221
+ How to read each "bit" in Ruby?
222
+
223
+ "A" ← 0x41 (ASCII-8BIT)
224
+ "A" ← 0b01000001 (ASCII-8BIT)
225
+ "A" → ? → "01000001"
226
+
227
+
228
+ = QUIC - reading Initial Packet by Ruby
229
+ Use "Array#pack", "String#unpack1"
230
+
231
+ # enscript ruby
232
+ "A".unpack1("B*") # => "01000001"
233
+ ["01000001"].pack("B*") # => "A"
234
+
235
+ Now, we can each "bit" by Ruby!
236
+
237
+ = Handling packet by Ractor
238
+ How do we handling UDP packet by Ractor?
239
+
240
+ = Handling packet by Ractor - think about QPACK
241
+ * QPACK (Header Compression for HTTP/3)
242
+ * Static Table
243
+ * "content-encoding gzip" (values that appear many times)
244
+ * Dynamic Table
245
+ * per client-server
246
+ * e.g. user-agent
247
+
248
+ (('&RightArrow;')) Create ractor per client that has a dynamic table state...🤔
249
+
250
+ = Handling packet by Ractor - UDP echo server by Ractor
251
+ * 3 classes
252
+ * Server class
253
+ * Router class
254
+ * Connection class
255
+
256
+ = UDP echo server by Ractor - Server class
257
+
258
+ # image
259
+ # src = img/udp_echo_ractor_server.png
260
+ # relative_width = 75
261
+
262
+ = UDP echo server by Ractor - Router class
263
+
264
+ # image
265
+ # src = img/udp_echo_ractor_router.png
266
+ # relative_width = 90
267
+
268
+ = UDP echo server by Ractor - Connection class
269
+
270
+ # image
271
+ # src = img/udp_echo_ractor_connection.png
272
+ # relative_width = 90
273
+
274
+
275
+ = benchmarking by udpbench
276
+
277
+ ((<URL:https://github.com/unasuke/udpbench>))
278
+
279
+ Improvised UDP benchmark tool written Go.
280
+
281
+ Send-receive UDP packet that contain UUIDv4 from goroutines.
282
+
283
+
284
+
285
+ = Result of benchmark UDP echo server by Ractor
286
+ $ ./udpbench --count 100 --parallelism 100
287
+ Total request count : 10000
288
+ Total request time : 10m48.446641s
289
+ Time per packets : 64.844664ms
290
+ Failed count : 0
291
+
292
+ = simple UDP echo server
293
+ # image
294
+ # src = img/udp_echo_simple.png
295
+ # relative_width = 90
296
+
297
+ = Result of benchmark simple UDP echo server
298
+ $ ./udpbench --count 100 --parallelism 100
299
+ Total request count : 10000
300
+ Total request time : 7.5696799s
301
+ Time per packets : 756.967µs
302
+ Failed count : 0
303
+
304
+ (('tag:center'))
305
+ (('tag:large'))
306
+ x85 faster than Ractor impl 🤷‍♂️❓
307
+
308
+ = Let's decrypt QUIC packet in Ractor
309
+
310
+ # image
311
+ # src = img/openssl_in_ractor.png
312
+ # relative_width = 100
313
+
314
+ = Let's decrypt QUIC packet in Ractor
315
+
316
+ # image
317
+ # src = img/openssl_in_ractor.png
318
+ # relative_width = 100
319
+
320
+ Failed by (({OpenSSL::Cipher.new})) 😵
321
+
322
+ (('tag:xx-small'))
323
+ Can OpenSSL (({rb_ext_ractor_safe(true)})) ...?
324
+
325
+ = Wait, I heard about yesterday...
326
+ # blockquote
327
+ 'Standard libralies are already ractor-safe' by ko1
328
+
329
+ I heard about that in "Ruby Committers vs the World" ((*yesterday*)).
330
+
331
+ = OpenSSL is `rb_ext_ractor_safe(true)`
332
+ # image
333
+ # src = img/openssl_rb_ext_ractor_safe_true.png
334
+ # relative_width = 100
335
+
336
+ Wow...
337
+
338
+ = Conclusion
339
+ There are two problems
340
+
341
+ * Libraies that cannot use in not main Ractor
342
+ * useful gem → imprement myself (e.g. bindata)
343
+ * core lib → DEEP DIVE to fix this (e.g. openssl)
344
+ * Need many many code to imprement QUIC
345
+ * Mozilla's Neqo : 50,000 LoC (Rust) ((<URL:https://github.com/mozilla/neqo>))
346
+ * aioquic : 17,000 LoC (Python) ((<URL:https://github.com/aiortc/aioquic>))
347
+ * Ruby : ?
data/theme.rb ADDED
@@ -0,0 +1,93 @@
1
+ @default_foreground ||= @foreground
2
+ @default_background ||= @background
3
+ @default_shadow_color ||= @shadow_color
4
+
5
+ rubykaigi_color = '#0b374d'
6
+ @default_font = 'Titillium Web'
7
+ @font_family = find_font_family(@default_font)
8
+ @bold_font = @default_font
9
+ @bold_font_family = find_font_family(@bold_font)
10
+ @monospace_font = 'Cica'
11
+ @monospace_font_family = find_font_family(@monospace_font)
12
+
13
+ @xxxx_large_font_size = screen_size(10 * Pango::SCALE)
14
+ @xxx_large_font_size = screen_size(8 * Pango::SCALE)
15
+ @xx_large_font_size = screen_size(6 * Pango::SCALE)
16
+ @x_large_font_size = screen_size(4.5 * Pango::SCALE)
17
+ @large_font_size = screen_size(4 * Pango::SCALE)
18
+ @normal_font_size = screen_size(3.5 * Pango::SCALE)
19
+ @small_font_size = screen_size(3.2 * Pango::SCALE)
20
+ @x_small_font_size = screen_size(3 * Pango::SCALE)
21
+ @xx_small_font_size = screen_size(2.8 * Pango::SCALE)
22
+ @xxx_small_font_size = screen_size(2.5 * Pango::SCALE)
23
+ @script_font_size = @x_small_font_size
24
+ @large_script_font_size = @small_font_size
25
+ @x_large_script_font_size = @large_font_size
26
+ @title_slide_title_font_size = @xxx_large_font_size
27
+
28
+ @block_quote_fill_color = "#f8f8f8"
29
+ @preformatted_fill_color = "#f8f8f8"
30
+ @default_headline_line_color = rubykaigi_color
31
+
32
+ @title_slide_background_image = 'img/title_background.png'
33
+ @slide_background_image = 'img/background_pale.png'
34
+
35
+ # set_foreground(@default_foreground)
36
+ # set_background(@default_background)
37
+
38
+ add_image_path("ruby-images")
39
+ include_theme("default-icon")
40
+ include_theme("default-title-text")
41
+ include_theme("default-text")
42
+ include_theme("default-title-slide")
43
+ include_theme("default-slide")
44
+ include_theme("default-item-mark")
45
+ include_theme("default-method-list")
46
+ include_theme("default-preformatted")
47
+ include_theme("default-block-quote")
48
+ include_theme("default-foot-text")
49
+ include_theme("default-description")
50
+ include_theme("image")
51
+ include_theme("table")
52
+ include_theme("newline-in-slides")
53
+ include_theme("per-slide-background-color")
54
+ include_theme("background-image-toolkit")
55
+ include_theme("per-slide-background-image")
56
+ include_theme("body-background-image")
57
+ include_theme("tag")
58
+ include_theme("syntax-highlighting")
59
+ include_theme("default-comment")
60
+
61
+ include_theme("title-slide-background-image")
62
+ include_theme("slide-background-image")
63
+
64
+ match(TitleSlide, Title) do |titles|
65
+ titles.padding_bottom = @space * 2
66
+ titles.prop_set("weight", "SemiBold")
67
+ end
68
+
69
+ match(Slide, HeadLine) do |heads|
70
+ heads.prop_set("size", @large_font_size)
71
+ heads.prop_set("weight", "bold")
72
+ end
73
+
74
+ match(TitleSlide) do |slides|
75
+ # slides.margin_left = 900
76
+ slides.vertical_centering = true
77
+ slides.prop_set "foreground", rubykaigi_color
78
+ slides.prop_set("weight", "bold")
79
+ end
80
+ match(TitleSlide, Subtitle) do |subtitle|
81
+ subtitle.margin_top = -20
82
+ subtitle.prop_set("size", @large_font_size)
83
+ end
84
+ match(TitleSlide, Author) do |author|
85
+ author.margin_top = 50
86
+ author.prop_set("weight", "normal")
87
+ end
88
+ match(TitleSlide, Place) do |place|
89
+ place.prop_set("size", @small_font_size)
90
+ end
91
+ match(TitleSlide, "*") do |elems|
92
+ elems.horizontal_centering = true
93
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-unasuke-rubykaigi-takeout-2021
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - unasuke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-09-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: https://rubykaigi.org/2021-takeout/presentations/yu_suke1994.html
28
+ email:
29
+ - yusuke1994525@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.rd
36
+ - Rakefile
37
+ - config.yaml
38
+ - img/background_no_icon.png
39
+ - img/background_pale.png
40
+ - img/bindata.png
41
+ - img/bindata_old.png
42
+ - img/hamburger.png
43
+ - img/icon_face.jpeg
44
+ - img/icon_raw.jpg
45
+ - img/ko1_tweet.png
46
+ - img/nmonthly-vol-2-no-1-2020.png
47
+ - img/openssl_in_ractor.png
48
+ - img/openssl_rb_ext_ractor_safe_true.png
49
+ - img/quic.svg
50
+ - img/quic_initial_packet.png
51
+ - img/quic_initial_packet_reading_1.png
52
+ - img/quic_initial_packet_reading_2.png
53
+ - img/quic_initial_packet_reading_3.png
54
+ - img/quic_initial_packet_reading_4.png
55
+ - img/quic_initial_packet_reading_5.png
56
+ - img/quic_initial_packet_reading_6.png
57
+ - img/quic_initial_packet_string.png
58
+ - img/takeout.000.png
59
+ - img/takeout.001.png
60
+ - img/title_background.png
61
+ - img/udp_echo_ractor_connection.png
62
+ - img/udp_echo_ractor_router.png
63
+ - img/udp_echo_ractor_server.png
64
+ - img/udp_echo_simple.png
65
+ - pdf/rubykaigi-takeout-2021-slide.pdf
66
+ - slide.rab
67
+ - theme.rb
68
+ homepage: https://slide.rabbit-shocker.org/authors/unasuke/rubykaigi-takeout-2021/
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubygems_version: 3.2.22
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Ruby, Ractor, QUIC
91
+ test_files: []