rabbit-slide-unasuke-kagoshima-rubykaigi02 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rabbit +2 -0
- data/README.rd +24 -0
- data/Rakefile +17 -0
- data/config.yaml +23 -0
- data/img/QUIC-Badge-Dark-RGB-Horiz.png +0 -0
- data/img/aioquic-loc.png +0 -0
- data/img/aioquic-og.png +0 -0
- data/img/bulletproof-ssl-tls.jpg +0 -0
- data/img/icon.jpg +0 -0
- data/img/kagoshima-rubykaigi02-bg.png +0 -0
- data/img/protocol-stack-h2-h3-improved-readability.png +0 -0
- data/img/quic-impl-grep-ruby.png +0 -0
- data/img/raioquic-loc.png +0 -0
- data/img/ruby-or-jp-grant-2022-unasuke.png +0 -0
- data/img/wolfssl-tls13.jpg +0 -0
- data/pdf/kagoshima-rubykaigi02-slide.pdf +0 -0
- data/slide.rab +344 -0
- data/theme.rb +113 -0
- metadata +75 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 73371e2b5f29f3d41fc5b02fcbff1b5fa0b68c96de3e33114b299bbeee4347b0
|
4
|
+
data.tar.gz: d119f648c43c47cfd97332b0b0dc00ceae74106976f2e25670e8f93bf6c2ccf2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 35b9d6e87da277770cc5d4eeff2bf4ee09a4bc2f24cdc468cfc615a6574cb1947644ea08d490cec76d7ec4db945d9254aeb4fa0bd3649056e124d0f793bab8ad
|
7
|
+
data.tar.gz: b0567bf7ddc0ef74635fa60eec7fa840615b0a55c5479411a3f176baa3090728a33015ea3f4f3be71404c1cc446bc8e7f773b4adcc0612b0de0f8149e9698b16
|
data/.rabbit
ADDED
data/README.rd
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= kagoshima-rubykaigi02
|
2
|
+
|
3
|
+
https://k-ruby.com/kagoshima-rubykaigi02/
|
4
|
+
|
5
|
+
== 作者向け
|
6
|
+
|
7
|
+
=== 表示
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
=== 公開
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
== 閲覧者向け
|
16
|
+
|
17
|
+
=== インストール
|
18
|
+
|
19
|
+
gem install rabbit-slide-unasuke-kagoshima-rubykaigi02
|
20
|
+
|
21
|
+
=== 表示
|
22
|
+
|
23
|
+
rabbit rabbit-slide-unasuke-kagoshima-rubykaigi02.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,23 @@
|
|
1
|
+
---
|
2
|
+
id: kagoshima-rubykaigi02
|
3
|
+
base_name: slide
|
4
|
+
tags: ['ruby', 'python', 'quic']
|
5
|
+
presentation_date: '2023-03-04'
|
6
|
+
presentation_start_time:
|
7
|
+
presentation_end_time:
|
8
|
+
version: 1.0.0
|
9
|
+
licenses: ['MIT']
|
10
|
+
slideshare_id:
|
11
|
+
speaker_deck_id:
|
12
|
+
vimeo_id:
|
13
|
+
youtube_id:
|
14
|
+
width: 1200
|
15
|
+
height: 675
|
16
|
+
author:
|
17
|
+
markup_language: :rd
|
18
|
+
name: unasuke
|
19
|
+
email: yusuke1994525@gmail.com
|
20
|
+
rubygems_user: unasuke
|
21
|
+
slideshare_user:
|
22
|
+
speaker_deck_user:
|
23
|
+
source_code_url: https://github.com/unasuke/kagoshima-rubykaigi02
|
Binary file
|
data/img/aioquic-loc.png
ADDED
Binary file
|
data/img/aioquic-og.png
ADDED
Binary file
|
Binary file
|
data/img/icon.jpg
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/slide.rab
ADDED
@@ -0,0 +1,344 @@
|
|
1
|
+
= QUICをRubyの世界に持ってくる活動をしています
|
2
|
+
|
3
|
+
: author
|
4
|
+
unasuke
|
5
|
+
: content-source
|
6
|
+
鹿児島Ruby会議02
|
7
|
+
: date
|
8
|
+
2023-03-04
|
9
|
+
: theme
|
10
|
+
theme
|
11
|
+
|
12
|
+
= 自己紹介
|
13
|
+
|
14
|
+
* Name: うなすけ
|
15
|
+
* Work: フリーランス
|
16
|
+
* Ruby歴: 8年くらい
|
17
|
+
* Kaigi on Rails オーガナイザー
|
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
|
+
# image
|
23
|
+
# src = img/icon.jpg
|
24
|
+
# relative_width = 24
|
25
|
+
# align = right
|
26
|
+
# relative_margin_right = -8
|
27
|
+
# relative_margin_top = 20
|
28
|
+
|
29
|
+
= 今日話すこと
|
30
|
+
|
31
|
+
* QUICとは何か
|
32
|
+
* 具体的にやっていること
|
33
|
+
* 今後の展望
|
34
|
+
|
35
|
+
= QUICとは何か
|
36
|
+
|
37
|
+
# image
|
38
|
+
# src = img/QUIC-Badge-Dark-RGB-Horiz.png
|
39
|
+
# relative_width = 100
|
40
|
+
# align = center
|
41
|
+
|
42
|
+
(('tag:x-small'))(('tag:center')) image from ((<URL:https://github.com/quicwg/wg-materials>))
|
43
|
+
|
44
|
+
= QUICとは何か
|
45
|
+
|
46
|
+
* 2021年にRFC 9000を含むいつくかのRFCにより標準化
|
47
|
+
* TCPではなくUDPによって通信をするプロトコル
|
48
|
+
* これまでのTCP(HTTP)より高速 ← ?
|
49
|
+
* HTTP/3はQUICを使用する
|
50
|
+
|
51
|
+
= 「これまでのTCP(HTTP)より高速」とは?
|
52
|
+
|
53
|
+
ざっくりと……
|
54
|
+
|
55
|
+
* HTTP/2はTCPを使う
|
56
|
+
* TCP: "Transmission Control Protocol"
|
57
|
+
* 信頼性が高いがオーバーヘッドが大きい
|
58
|
+
* 途中のパケットが欠損すると、再送されるまで処理が止まる
|
59
|
+
* HTTP/3はUDP(QUIC)を使う
|
60
|
+
* UDP: "User Datagram Protocol"
|
61
|
+
* オーベーヘッドがないぶん高速だが信頼性は落ちる
|
62
|
+
* 途中のパケットが欠損しても、影響がない範囲で処理を継続する
|
63
|
+
|
64
|
+
|
65
|
+
ref: ((<URL:https://eng-blog.iij.ad.jp/archives/11166>))
|
66
|
+
|
67
|
+
= TCPとUDP
|
68
|
+
|
69
|
+
* TCPは信頼性が高いがオーバーヘッドが大きい
|
70
|
+
* HTMLとかJavaScriptとかCSSとか
|
71
|
+
* 欠損したら困る
|
72
|
+
* UDPはオーベーヘッドがないぶん高速だが信頼性は落ちる
|
73
|
+
* VoIP、RTPなどの音声、ビデオ通話とか
|
74
|
+
* 完全性よりリアルタイム性
|
75
|
+
|
76
|
+
しかしHTTP/3はQUICを使うし、QUICはUDP。これはどういうことか?
|
77
|
+
|
78
|
+
= QUICがやっていること
|
79
|
+
|
80
|
+
# image
|
81
|
+
# src = img/protocol-stack-h2-h3-improved-readability.png
|
82
|
+
# relative_width = 45
|
83
|
+
# align = center
|
84
|
+
|
85
|
+
(('tag:x-small'))(('tag:center')) image from ((<URL:https://github.com/rmarx/h3-protocol-stack>))
|
86
|
+
|
87
|
+
|
88
|
+
= QUICとは何か、詳しくは……
|
89
|
+
|
90
|
+
|
91
|
+
((<(('QUICをゆっくり解説 – 新しいインターネット通信規格 | IIJ Engineers Blog'))|URL:https://eng-blog.iij.ad.jp/quic>))
|
92
|
+
|
93
|
+
= 今日話すこと
|
94
|
+
|
95
|
+
* QUICとは何か
|
96
|
+
* 具体的にやっていること ((*←*))
|
97
|
+
* 今後の展望
|
98
|
+
|
99
|
+
= 具体的にやっていること
|
100
|
+
|
101
|
+
2022年までのぼく
|
102
|
+
|
103
|
+
「よ〜し、RFC読んでQUICの実装するぞ〜!」
|
104
|
+
|
105
|
+
= 具体的にやっていること
|
106
|
+
|
107
|
+
2022年までのぼく
|
108
|
+
|
109
|
+
「よ〜し、RFC読んでQUICの実装するぞ〜!」
|
110
|
+
|
111
|
+
(('tag:xx-large'))大挫折
|
112
|
+
|
113
|
+
= 大挫折2022
|
114
|
+
* 例えば「よ〜しオレオレpuma作るぞ〜」がうまくいくのか?
|
115
|
+
* 「オレオレRails」でも可
|
116
|
+
* → 無理
|
117
|
+
|
118
|
+
やったことがないことをやるのは大変
|
119
|
+
|
120
|
+
= 大挫折2022
|
121
|
+
* 例えば「よ〜しオレオレpuma作るぞ〜」がうまくいくのか?
|
122
|
+
* 「オレオレRails」でも可
|
123
|
+
* → 無理
|
124
|
+
|
125
|
+
やったことがないことをやるのは大変
|
126
|
+
|
127
|
+
→ じゃあ「やったことあること」をする、のはどうだろう
|
128
|
+
|
129
|
+
= 大挫折2022
|
130
|
+
* 例えば「よ〜しオレオレpuma作るぞ〜」がうまくいくのか?
|
131
|
+
* 「オレオレRails」でも可
|
132
|
+
* → 無理
|
133
|
+
|
134
|
+
やったことがないことをやるのは大変
|
135
|
+
|
136
|
+
→ じゃあ「やったことあること」をする、のはどうだろう
|
137
|
+
|
138
|
+
→ じゃあ「QUICの実装」を「やったことある」状態にするにはどうしたら?
|
139
|
+
|
140
|
+
= この世界にあるQUICの実装
|
141
|
+
|
142
|
+
* lsquic (C言語)
|
143
|
+
* quicly (C言語)
|
144
|
+
* quiche (Rust)
|
145
|
+
* quic-go (Go)
|
146
|
+
* aioquic (Python)
|
147
|
+
|
148
|
+
(('tag:x-small'))Ref: ((<URL:https://github.com/quicwg/base-drafts/wiki/Implementations>))
|
149
|
+
|
150
|
+
= この世界にあるQUICの実装
|
151
|
+
|
152
|
+
* lsquic (C言語)
|
153
|
+
* quicly (C言語)
|
154
|
+
* quiche (Rust)
|
155
|
+
* quic-go (Go)
|
156
|
+
* aioquic (Python) ←
|
157
|
+
|
158
|
+
(('tag:x-small'))Ref: ((<URL:https://github.com/quicwg/base-drafts/wiki/Implementations>))
|
159
|
+
|
160
|
+
\n
|
161
|
+
PythonはRubyに似てるらしい……
|
162
|
+
|
163
|
+
= この世界にあるQUICの実装、にRubyを加える
|
164
|
+
|
165
|
+
\n
|
166
|
+
(('tag:center'))QUICのPython実装であるaioquicをRubyに移植しよう!
|
167
|
+
|
168
|
+
= 採択
|
169
|
+
# image
|
170
|
+
# src = img/ruby-or-jp-grant-2022-unasuke.png
|
171
|
+
# relative_width = 90
|
172
|
+
# align = center
|
173
|
+
|
174
|
+
(('tag:center'))(('tag:x-small'))((<URL:https://www.ruby.or.jp/ja/news/20220823>))
|
175
|
+
|
176
|
+
= ねらい
|
177
|
+
* 締切
|
178
|
+
* 1/16 中間報告書提出締切
|
179
|
+
* 3/20 最終報告書提出締切
|
180
|
+
* メンター
|
181
|
+
|
182
|
+
= やっていること
|
183
|
+
ここまでが「やっている」までの経緯
|
184
|
+
|
185
|
+
= aioquicを移植する
|
186
|
+
# image
|
187
|
+
# src = img/aioquic-og.png
|
188
|
+
# relative_width = 90
|
189
|
+
# align = center
|
190
|
+
|
191
|
+
(('tag:center'))(('tag:x-small'))((<URL:https://github.com/aiortc/aioquic>))
|
192
|
+
|
193
|
+
= aioquicを移植する、その規模感
|
194
|
+
# image
|
195
|
+
# src = img/aioquic-loc.png
|
196
|
+
# relative_width = 90
|
197
|
+
# align = center
|
198
|
+
|
199
|
+
= aioquicの構造
|
200
|
+
|
201
|
+
* Buffer
|
202
|
+
* Crypto
|
203
|
+
* TLS
|
204
|
+
* QUIC
|
205
|
+
* Packet
|
206
|
+
* PacketBuilder
|
207
|
+
* Rangeset
|
208
|
+
* Configuration
|
209
|
+
* Retry
|
210
|
+
* Crypto
|
211
|
+
* Stream, Connection...
|
212
|
+
|
213
|
+
= aioquicの構造
|
214
|
+
|
215
|
+
* Buffer ← まあ……
|
216
|
+
* Crypto ← やばい
|
217
|
+
* TLS ← やばすぎ
|
218
|
+
* QUIC
|
219
|
+
* Packet ← まあ……
|
220
|
+
* PacketBuilder ← まあ……
|
221
|
+
* Rangeset ← easy
|
222
|
+
* Configuration ← easy
|
223
|
+
* Retry ← まあ……
|
224
|
+
* Crypto ← やばい
|
225
|
+
* Stream, Connection... ← やばすぎ
|
226
|
+
|
227
|
+
= "やばすぎ" mean...
|
228
|
+
|
229
|
+
* 行数?
|
230
|
+
* tls.py (1445行、テスト1163行)
|
231
|
+
* connection.py (2774行、テスト2171行)
|
232
|
+
* 行数は真のやばさではない
|
233
|
+
|
234
|
+
= QUICがやっていること(再)
|
235
|
+
|
236
|
+
# image
|
237
|
+
# src = img/protocol-stack-h2-h3-improved-readability.png
|
238
|
+
# relative_width = 45
|
239
|
+
# align = center
|
240
|
+
|
241
|
+
(('tag:x-small'))(('tag:center')) image from ((<URL:https://github.com/rmarx/h3-protocol-stack>))
|
242
|
+
|
243
|
+
= "やばすぎ" mean...
|
244
|
+
|
245
|
+
* QUICは暗号化も受け持つ
|
246
|
+
* つまり、TLSを実装する
|
247
|
+
* 鍵交換
|
248
|
+
* 認証
|
249
|
+
* etc
|
250
|
+
* 扱うデータの中身も暗号化されている
|
251
|
+
* OpenSSL「こんにちは〜」
|
252
|
+
* PythonとRubyでOpenSSLのAPIの抽象度合いが異なる
|
253
|
+
|
254
|
+
|
255
|
+
= で、どこまでできてるの?
|
256
|
+
* connection.py の移植の真っ最中
|
257
|
+
* Rubyishにするにはどうすればいいかの設計
|
258
|
+
|
259
|
+
= デモ
|
260
|
+
* curlから送信されたQUICのPacketを解析する
|
261
|
+
|
262
|
+
= 今日話すこと
|
263
|
+
|
264
|
+
* QUICとは何か
|
265
|
+
* 具体的にやっていること
|
266
|
+
* 今後の展望 ((*←*))
|
267
|
+
|
268
|
+
= 今後の展望
|
269
|
+
|
270
|
+
* QUIC自体
|
271
|
+
* 移植プロジェクト
|
272
|
+
|
273
|
+
= 今後の展望 - QUIC
|
274
|
+
* QUICは様々な場所で使われつつある
|
275
|
+
* Media over QUIC
|
276
|
+
* Warp (Twitch)
|
277
|
+
* WebTransport
|
278
|
+
* QUIC v2が策定中
|
279
|
+
* ((<URL:https://datatracker.ietf.org/doc/draft-ietf-quic-v2/>))
|
280
|
+
* 3月末 IETF 116 Yokohama
|
281
|
+
* ((<URL:https://datatracker.ietf.org/wg/quic/about/>))
|
282
|
+
|
283
|
+
= 今後の展望 - 移植プロジェクト
|
284
|
+
* aioquicの移植を終わらせる
|
285
|
+
* 3/20 最終報告書提出期限
|
286
|
+
* "Rubyishとは何か?"
|
287
|
+
* 設計、API、etc...
|
288
|
+
|
289
|
+
= 今後の展望、そもそもなぜこんなことを?
|
290
|
+
# image
|
291
|
+
# src = img/quic-impl-grep-ruby.png
|
292
|
+
# relative_width = 80
|
293
|
+
# align = center
|
294
|
+
|
295
|
+
= 現実問題
|
296
|
+
|
297
|
+
* お客様の中にpumaでHTTPSの通信をされている方は
|
298
|
+
* TLSを終端するのは誰なのか
|
299
|
+
|
300
|
+
= 現実問題
|
301
|
+
* AWS CloudFront
|
302
|
+
* ((<URL:https://aws.amazon.com/about-aws/whats-new/2022/08/amazon-cloudfront-supports-http-3-quic/>))
|
303
|
+
* Google Cloud Load Balancing
|
304
|
+
* ((<URL:https://cloud.google.com/load-balancing/docs/https#QUIC>))
|
305
|
+
* NGINX
|
306
|
+
* ((<URL:https://www.nginx.com/blog/binary-packages-for-preview-nginx-quic-http3-implementation/>))
|
307
|
+
* H2O
|
308
|
+
* Apache
|
309
|
+
|
310
|
+
= 現実問題への回答、RubyがQUICを喋る理由
|
311
|
+
* Just for Fun
|
312
|
+
* そこにRubyがないから
|
313
|
+
* 副産物
|
314
|
+
* OpenSSL gemの修正
|
315
|
+
* ((<URL:https://github.com/ruby/openssl/pulls?q=is%3Apr+author%3Aunasuke>)) (現在3つ)
|
316
|
+
* OpenSSL gemのドキュメント(るりま)が古い
|
317
|
+
* 思案中
|
318
|
+
* RDoc内の回遊を楽にしたい
|
319
|
+
* ((<URL:https://github.com/ruby/rdoc/pull/973>))
|
320
|
+
|
321
|
+
= まとめ
|
322
|
+
* QUICをRubyの世界に持ってくる活動をしています
|
323
|
+
|
324
|
+
# image
|
325
|
+
# src = img/raioquic-loc.png
|
326
|
+
# relative_width = 90
|
327
|
+
# align = center
|
328
|
+
|
329
|
+
|
330
|
+
= 参考資料
|
331
|
+
* ((<URL:https://quicwg.org>))
|
332
|
+
* ((<URL:https://www.rfc-editor.org/rfc/rfc9000.html>))
|
333
|
+
* ((<QUIC、RFC 9000 として正式に公開 - Fastly blog|URL:https://www.fastly.com/jp/blog/quic-is-now-rfc-9000>))
|
334
|
+
* ((<(('QUICをゆっくり解説 – 新しいインターネット通信規格 | IIJ Engineers Blog'))|URL:https://eng-blog.iij.ad.jp/quic>))
|
335
|
+
* ((<(('HTTP/3の解説を書いた (2020/06/01) - ASnoKaze blog'))|URL:https://asnokaze.hatenablog.com/entry/2020/06/01/005625>))
|
336
|
+
* ((<(('2021年 HTTPやQUICの最新動向振り返り - ASnoKaze blog'))|URL:https://asnokaze.hatenablog.com/entry/2021/12/31/011558>))
|
337
|
+
* ((<(('『プロフェッショナルSSL/TLS』 – 技術書出版と販売のラムダノート'))|URL:https://www.lambdanote.com/collections/ssl-tls>))
|
338
|
+
* ((<(('徹底解剖 TLS 1.3(古城 隆 松尾 卓幸 宮崎 秀樹 須賀 葉子)|翔泳社の本'))|URL:https://www.shoeisha.co.jp/book/detail/9784798171418>))
|
339
|
+
* ((<URL:https://quic.xargs.org>))
|
340
|
+
|
341
|
+
= 参考資料2
|
342
|
+
* ((<URL:https://github.com/aiortc/aioquic>))
|
343
|
+
* ((<URL:https://github.com/thekuwayama/tttls1.3>))
|
344
|
+
* ((<URL:https://datatracker.ietf.org/wg/quic/about/>))
|
data/theme.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
@default_foreground ||= @foreground
|
2
|
+
@default_background ||= @background
|
3
|
+
@default_shadow_color ||= @shadow_color
|
4
|
+
|
5
|
+
# pp font_families
|
6
|
+
font_color = '#333'
|
7
|
+
@default_font = 'BIZ UDPGothic'
|
8
|
+
@font_family = find_font_family(@default_font)
|
9
|
+
@bold_font = @default_font
|
10
|
+
@bold_font_family = find_font_family(@bold_font)
|
11
|
+
@monospace_font = 'Cica'
|
12
|
+
@monospace_font_family = find_font_family(@monospace_font)
|
13
|
+
|
14
|
+
@xxxx_large_font_size = screen_size(10 * Pango::SCALE)
|
15
|
+
@xxx_large_font_size = screen_size(8 * Pango::SCALE)
|
16
|
+
@xx_large_font_size = screen_size(6 * Pango::SCALE)
|
17
|
+
@x_large_font_size = screen_size(4.5 * Pango::SCALE)
|
18
|
+
@large_font_size = screen_size(4 * Pango::SCALE)
|
19
|
+
@normal_font_size = screen_size(3.5 * Pango::SCALE)
|
20
|
+
@small_font_size = screen_size(3.2 * Pango::SCALE)
|
21
|
+
@x_small_font_size = screen_size(3 * Pango::SCALE)
|
22
|
+
@xx_small_font_size = screen_size(2.8 * Pango::SCALE)
|
23
|
+
@xxx_small_font_size = screen_size(2.5 * Pango::SCALE)
|
24
|
+
@script_font_size = @x_small_font_size
|
25
|
+
@large_script_font_size = @small_font_size
|
26
|
+
@x_large_script_font_size = @large_font_size
|
27
|
+
@title_slide_title_font_size = @xxx_large_font_size
|
28
|
+
|
29
|
+
@block_quote_fill_color = "#f8f8f8"
|
30
|
+
@preformatted_fill_color = "#f8f8f8"
|
31
|
+
@default_headline_line_color = font_color
|
32
|
+
|
33
|
+
@title_slide_background_image = 'img/kagoshima-rubykaigi02-bg.png'
|
34
|
+
# @slide_background_image = 'img/bg.png'
|
35
|
+
|
36
|
+
# set_foreground(@default_foreground)
|
37
|
+
# set_background(@default_background)
|
38
|
+
|
39
|
+
add_image_path("ruby-images")
|
40
|
+
include_theme("default-icon")
|
41
|
+
# include_theme("default-title-text")
|
42
|
+
include_theme("default-text")
|
43
|
+
include_theme("default-title-slide")
|
44
|
+
include_theme("default-slide")
|
45
|
+
include_theme("default-item-mark")
|
46
|
+
include_theme("default-method-list")
|
47
|
+
include_theme("default-preformatted")
|
48
|
+
include_theme("default-block-quote")
|
49
|
+
include_theme("default-foot-text")
|
50
|
+
include_theme("default-description")
|
51
|
+
include_theme("image")
|
52
|
+
include_theme("table")
|
53
|
+
include_theme("newline-in-slides")
|
54
|
+
include_theme("per-slide-background-color")
|
55
|
+
include_theme("background-image-toolkit")
|
56
|
+
include_theme("per-slide-background-image")
|
57
|
+
include_theme("body-background-image")
|
58
|
+
include_theme("tag")
|
59
|
+
include_theme("syntax-highlighting")
|
60
|
+
include_theme("default-comment")
|
61
|
+
|
62
|
+
include_theme("title-slide-background-image")
|
63
|
+
include_theme("slide-background-image")
|
64
|
+
|
65
|
+
match(TitleSlide, "*") do |elems|
|
66
|
+
elems.horizontal_centering = true
|
67
|
+
elems.prop_set("size", @large_font_size)
|
68
|
+
set_font_family(elems)
|
69
|
+
end
|
70
|
+
|
71
|
+
match(TitleSlide, Title) do |titles|
|
72
|
+
titles.prop_set("size", @title_slide_title_font_size)
|
73
|
+
titles.padding_bottom = @space * 2
|
74
|
+
titles.prop_set("weight", "SemiBold")
|
75
|
+
end
|
76
|
+
|
77
|
+
match(Slide, HeadLine) do |heads|
|
78
|
+
heads.prop_set("size", @large_font_size)
|
79
|
+
heads.prop_set("weight", "bold")
|
80
|
+
end
|
81
|
+
|
82
|
+
match(TitleSlide) do |slides|
|
83
|
+
# slides.margin_left = 900
|
84
|
+
slides.vertical_centering = true
|
85
|
+
slides.prop_set "foreground", font_color
|
86
|
+
slides.prop_set("weight", "bold")
|
87
|
+
end
|
88
|
+
match(TitleSlide, Subtitle) do |subtitle|
|
89
|
+
subtitle.margin_top = -20
|
90
|
+
subtitle.prop_set("size", @large_font_size)
|
91
|
+
end
|
92
|
+
match(TitleSlide, Author) do |author|
|
93
|
+
author.margin_top = 50
|
94
|
+
author.prop_set("size", @large_font_size)
|
95
|
+
author.prop_set("weight", "normal")
|
96
|
+
end
|
97
|
+
match(TitleSlide, Place) do |place|
|
98
|
+
place.prop_set("size", @small_font_size)
|
99
|
+
end
|
100
|
+
match(TitleSlide, "*") do |elems|
|
101
|
+
elems.horizontal_centering = true
|
102
|
+
end
|
103
|
+
|
104
|
+
match(TitleSlide, Date) do |dates|
|
105
|
+
dates.prop_set("size", @small_font_size)
|
106
|
+
# dates.prop_set("style", "italic")
|
107
|
+
end
|
108
|
+
|
109
|
+
match(TitleSlide, ContentSource) do |sources|
|
110
|
+
sources.prop_set("size", @small_font_size)
|
111
|
+
sources.margin_bottom = @space
|
112
|
+
# sources.prop_set("style", "italic")
|
113
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-unasuke-kagoshima-rubykaigi02
|
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: 2023-03-04 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://k-ruby.com/kagoshima-rubykaigi02/
|
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/QUIC-Badge-Dark-RGB-Horiz.png
|
39
|
+
- img/aioquic-loc.png
|
40
|
+
- img/aioquic-og.png
|
41
|
+
- img/bulletproof-ssl-tls.jpg
|
42
|
+
- img/icon.jpg
|
43
|
+
- img/kagoshima-rubykaigi02-bg.png
|
44
|
+
- img/protocol-stack-h2-h3-improved-readability.png
|
45
|
+
- img/quic-impl-grep-ruby.png
|
46
|
+
- img/raioquic-loc.png
|
47
|
+
- img/ruby-or-jp-grant-2022-unasuke.png
|
48
|
+
- img/wolfssl-tls13.jpg
|
49
|
+
- pdf/kagoshima-rubykaigi02-slide.pdf
|
50
|
+
- slide.rab
|
51
|
+
- theme.rb
|
52
|
+
homepage: https://slide.rabbit-shocker.org/authors/unasuke/kagoshima-rubykaigi02/
|
53
|
+
licenses:
|
54
|
+
- MIT
|
55
|
+
metadata: {}
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
require_paths:
|
59
|
+
- lib
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
requirements: []
|
71
|
+
rubygems_version: 3.4.6
|
72
|
+
signing_key:
|
73
|
+
specification_version: 4
|
74
|
+
summary: kagoshima-rubykaigi02
|
75
|
+
test_files: []
|