rabbit-slide-hasumikin-RubyKaigiTakeout2021 2021.9.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.rabbit +1 -0
  3. data/PRK-Firmware--Keyboard-is-Essentially-Ruby.rab +514 -0
  4. data/README.rd +24 -0
  5. data/Rakefile +17 -0
  6. data/config.yaml +24 -0
  7. data/images/Multitasking.png +0 -0
  8. data/images/Multitasking_sandbox.png +0 -0
  9. data/images/Notepad.png +0 -0
  10. data/images/QR_prk_firmware.png +0 -0
  11. data/images/QR_raactivityreport.png +0 -0
  12. data/images/QR_raactivityreport_2.png +0 -0
  13. data/images/architecture_1.png +0 -0
  14. data/images/boot_button_1.png +0 -0
  15. data/images/crkbd.jpg +0 -0
  16. data/images/crkbd_2.jpg +0 -0
  17. data/images/drag_and_drop_1.png +0 -0
  18. data/images/drag_and_drop_2.png +0 -0
  19. data/images/hamburger.png +0 -0
  20. data/images/hero_hamburger.png +0 -0
  21. data/images/kakutani.jpg +0 -0
  22. data/images/kakutani.png +0 -0
  23. data/images/kakutani_1.jpg +0 -0
  24. data/images/kakutani_2.jpg +0 -0
  25. data/images/matamata.png +0 -0
  26. data/images/msc.png +0 -0
  27. data/images/pipi_gherkin.jpg +0 -0
  28. data/images/promicro.jpg +0 -0
  29. data/images/promicro_rp2040.jpg +0 -0
  30. data/images/promicro_rp2040_boot_button.png +0 -0
  31. data/images/qmk_kmk_prk.png +0 -0
  32. data/images/qmk_kmk_prk_2.png +0 -0
  33. data/images/release.png +0 -0
  34. data/images/remap.png +0 -0
  35. data/images/rpi_pico.jpg +0 -0
  36. data/images/shortage.jpg +0 -0
  37. data/images/shortage.png +0 -0
  38. data/images/takeout.000.png +0 -0
  39. data/images/takeout.001.png +0 -0
  40. data/images/textedit.png +0 -0
  41. data/memo_/345/220/214/346/231/202/351/200/232/350/250/263/347/224/250_RubyKaigiTakeout2021-PRK-Firmware--Keyboard-is-Essentially-Ruby.md +37 -0
  42. data/pdf/RubyKaigiTakeout2021-PRK-Firmware--Keyboard-is-Essentially-Ruby.pdf +0 -0
  43. data/theme.rb +131 -0
  44. metadata +98 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 73b42ce1898bfc4d60f2e274c314ec538097233870968312bf2d84ad65adb018
4
+ data.tar.gz: 6d69bb3d6fca75ac60fd79a0034fda8bf3dc27b192cd08990aea180ce1f094ca
5
+ SHA512:
6
+ metadata.gz: 7507a5a607a21a7c0b289dbab5ce00b9850c6cfdda3b8b27c6f66450fc20910e9e02d13949067fc3d57f437cf1cba294d88cc3429ac800981abca1a7dc518716
7
+ data.tar.gz: 822438d27d8a2e6bdea14c2e9962b97db6fb074fc29edfddb381bd85d3303a4bd23b767063e96712eb6b3f7dfbe64dcfb33f1529afbf0b5dd164d4665ff1907f
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ PRK-Firmware--Keyboard-is-Essentially-Ruby.rab
@@ -0,0 +1,514 @@
1
+ = PRK Firmware
2
+
3
+ : subtitle
4
+ Keyboard is\nEssentially ((*Ruby*))
5
+ : author
6
+ Hitoshi HASUMI
7
+ : place
8
+ RubyKaigi Takeout 2021 | Sep 10th
9
+ : allotted-time
10
+ 25m
11
+ : theme
12
+ theme
13
+
14
+ = Acknowledgement
15
+ # image
16
+ # src = images/kakutani.png
17
+ # relative_height = 103
18
+ # relative_margin_top = 0
19
+
20
+ = Acknowledgement
21
+ # blockquote
22
+ # title = YOU COULD SAY DIY-KEYBOARD IS ESSENTIALLY RUBY
23
+ (('tag:center'))\n\n“You are able to build ((*Ruby*)) by yourself”\n\n\n
24
+
25
+ = Acknowledgement
26
+ # blockquote
27
+ # title = YOU COULD SAY DIY-KEYBOARD IS ESSENTIALLY RUBY
28
+ (('tag:center'))\n\n“You are able to build a ((*keyboard*)) by yourself”\n\n\n
29
+
30
+ = Acknowledgement
31
+ # blockquote
32
+ # title = YOU COULD SAY DIY-KEYBOARD IS ESSENTIALLY RUBY
33
+ (('tag:center'))\n“YOU COULD SAY\nDIY-KEYBOARD IS\nESSENTIALLY ((*RUBY*))”\n\n
34
+
35
+ = Exactly one year ago
36
+ # image
37
+ # src = images/kakutani_1.jpg
38
+ # relative_height = 103
39
+ # relative_margin_top = 0
40
+
41
+ = Exactly one year ago
42
+ # image
43
+ # src = images/kakutani_2.jpg
44
+ # relative_height = 103
45
+ # relative_margin_top = 0
46
+
47
+ = Keyboard firmware ... language
48
+ * QMK Firmware ... C
49
+ * KMK Firmware ... Python
50
+ * PRK Firmware ... ((*Ruby*))
51
+
52
+ = Keyboard firmware ... repository
53
+ # image
54
+ # src = images/qmk_kmk_prk.png
55
+ # relative_height = 103
56
+ # relative_margin_top = 0
57
+
58
+ = Keyboard firmware ⭐⭐⭐⭐⭐⭐⭐
59
+ # image
60
+ # src = images/qmk_kmk_prk_2.png
61
+ # relative_height = 103
62
+ # relative_margin_top = 0
63
+
64
+ = PRK Firmware - How to start
65
+ * Buy a DIY Keyboard kit
66
+ * Which uses ((*Pro Micro*))
67
+ * Pro Micro?
68
+ * Arduino compatible board
69
+ * PRK Firmware ((*doesn't*)) work on\n"normal" Pro Micro (AVR processor)
70
+
71
+ # image
72
+ # src = images/promicro.jpg
73
+ # align = right
74
+ # relative-height = 81
75
+ # relative_margin_left = 10
76
+
77
+ (('tag:right'))
78
+ (('tag:xx-small:https://www.switch-science.com/catalog/3914/'))
79
+
80
+ = PRK Firmware - How to start
81
+ * Instead, choose\n((*SPARKFUN PRO MICRO - RP2040*))\n((*[model no. DEV-17717]*))
82
+
83
+ # image
84
+ # src = images/promicro_rp2040.jpg
85
+ # align = right
86
+ # relative-height = 85
87
+ # relative_margin_left = 10
88
+
89
+ (('tag:right'))\n\n\n
90
+ (('tag:xx-small:https://www.sparkfun.com/products/17717'))
91
+
92
+ = PRK Firmware - How to start
93
+ * RP2040?
94
+ * "Raspberry Silicon"
95
+ * Implemented on Raspberry Pi Pico
96
+ * The target chip of ((*PRK Firmware*))
97
+
98
+ # image
99
+ # src = images/rpi_pico.jpg
100
+ # align = right
101
+ # relative-height = 100
102
+ # relative_margin_left = 2
103
+
104
+ (('tag:right'))\n\n
105
+ (('tag:xx-small:https://pc.watch.impress.co.jp/docs/news/1301670.html'))
106
+
107
+ = Troubleshooting of Pro Micro RP2040
108
+ * Logic level (depending on PCB)
109
+ * Pro Micro RP2040 may crash\nif VCC and RAW are connected
110
+ * Ask keyboard lovers to check it 🤓
111
+ * Shortage of conthrough's height\nif you build an ((*"upside down"*)) type
112
+ * Use XB-3-6-6P on akizukidenshi.com
113
+
114
+ # image
115
+ # src = images/shortage.png
116
+ # align = right
117
+ # relative-height = 90
118
+ # relative_margin_left = 9
119
+
120
+ = PRK Firmware - How to start
121
+ * Ask Rubyists on Twitter
122
+ * @takkanm
123
+ * @swan_match
124
+ * @kakutani
125
+ * @hasumikin (me), etc.
126
+ * Join #keyboard in ((*ruby-jp*)) Slack
127
+
128
+ = e.g.) picoruby/prk_pipigherkin
129
+ * Gherkin for\nthe Raspberry Pi Pico
130
+ * PCB available\non talpkeyboard.net
131
+ * Easy to explain but\n((*hard for newbies*)) to build
132
+
133
+ # image
134
+ # src = images/pipi_gherkin.jpg
135
+ # align = right
136
+ # relative-height = 80
137
+ # relative_margin_top = -3
138
+ # relative_margin_left = 8
139
+
140
+ (('tag:right'))
141
+ (('tag:xx-small:https://www.40percent.club/2021/02/pipi-gherkin.html'))
142
+
143
+ = e.g.) prk_pipigherkin/keymap.rb
144
+ # enscript ruby
145
+ # Initialize Keyboard
146
+ kbd = Keyboard.new
147
+ # Initialize GPIO pins
148
+ kbd.init_pins(
149
+ [ 12, 11, 10, 9, 8 ], # row0, row1,... respectively
150
+ [ 7, 6, 5, 4, 3, 2 ] # col0, col1,... respectively
151
+ )
152
+ # Default keymap
153
+ kbd.add_layer :default, %i(
154
+ KC_Q KC_W KC_E KC_R KC_T KC_Y KC_U KC_I KC_O KC_P
155
+ KC_A KC_S KC_D KC_F KC_G KC_H KC_J KC_K KC_L KC_BSPACE
156
+ Z_LSFT X_LGUI C_LALT V_LCTL SPC_LOWER ENT_RAISE B_RCTL N_RALT M_RGUI UNDS_RSFT
157
+ )
158
+ # Mode keys
159
+ kbd.define_mode_key :Z_LSFT, [ :KC_Z, :KC_LSFT, 150, 150 ]
160
+ # ...
161
+ kbd.define_mode_key :UNDS_RSFT, [ :KC_UNDS, :KC_RSFT, 200, 150 ]
162
+ kbd.define_mode_key :ENT_RAISE, [ :KC_ENTER, :raise, 150, 150 ]
163
+ kbd.define_mode_key :SPC_LOWER, [ :KC_SPACE, :lower, 300, 250 ]
164
+
165
+ = e.g.) prk_pipigherkin/keymap.rb
166
+ kbd.add_layer :raise, %i(
167
+ KC_EXLM KC_AT KC_HASH KC_DLR KC_PERC KC_CIRC KC_AMPR KC_ASTER KC_EQUAL KC_PLUS
168
+ KC_LABK KC_LCBR KC_LBRACKET KC_LPRN KC_MINUS KC_LEFT KC_DOWN KC_UP KC_RIGHT KC_BSPACE
169
+ KC_RABK KC_RCBR KC_RBRACKET KC_RPRN ADJUST ENT_RAISE KC_BSLASH KC_COMMA KC_DOT KC_SLASH
170
+ )
171
+ kbd.add_layer :lower, %i(
172
+ KC_1 KC_2 KC_3 KC_4 KC_5 KC_6 KC_7 KC_8 KC_9 KC_0
173
+ KC_TAB KC_NO KC_QUOTE KC_DQUO KC_MINUS KC_GRAVE KC_TILD KC_PIPE KC_COLON KC_SCOLON
174
+ KC_ESCAPE KC_LGUI KC_LALT KC_LCTL SPC_LOWER ADJUST KC_RCTL KC_RALT KC_RGUI KC_RSFT
175
+ )
176
+
177
+ = picoruby/prk_firmware/releases
178
+ # image
179
+ # src = images/release.png
180
+ # relative-height = 95
181
+
182
+ = Install uf2 into RP2040
183
+ * Connect USB cable while\npressing "boot button"
184
+ * RPI-RP2 will be mounted\nas a storage, then
185
+
186
+ # image
187
+ # align = right
188
+ # src = images/boot_button_1.png
189
+ # relative-height = 83
190
+ # relative_margin_left = 5
191
+ # relative_margin_top = -3
192
+
193
+ (('tag:right'))
194
+ (('tag:xx-small'))\n\n\n
195
+ https://www.raspberrypi.org/documentation/rp2040/getting-started
196
+
197
+ = Install uf2 into RP2040
198
+ # image
199
+ # src = images/promicro_rp2040_boot_button.png
200
+ # relative-height = 90
201
+
202
+ = Install uf2 into RP2040
203
+ # image
204
+ # src = images/drag_and_drop_1.png
205
+ # relative-height = 95
206
+
207
+ = ((*Automatically mounts!!!!!!!!*))
208
+ \n
209
+ (('tag:xx-large')) 🤩
210
+
211
+ # image
212
+ # align = right
213
+ # src = images/msc.png
214
+ # relative-height = 95
215
+ # relative_margin_left = 5
216
+
217
+ = ((*Drag & drop -> Automatically reloads!*))
218
+ # image
219
+ # src = images/drag_and_drop_2.png
220
+ # relative-height = 95
221
+
222
+ = ((* *))
223
+ (('tag:x-large'))
224
+ (('tag:center'))
225
+ Unlike QMK Firmware,\n
226
+ You don't need\n
227
+ to ((*compile*))\n
228
+ anything!
229
+ == prop
230
+ : hide-title
231
+ true
232
+
233
+ = Technology behind PRK Firmware
234
+ * Compiler and Virtual machine
235
+ # image
236
+ # src = images/architecture_1.png
237
+ # relative_height = 100
238
+ # relative_margin_top = -4
239
+
240
+ = Technology behind PRK Firmware
241
+ * PicoRuby
242
+ * PicoRuby compiler + mruby/c VM
243
+ * Ruby Association Grant\nhttps://www.ruby.or.jp/ja/news/20210715
244
+ # image
245
+ # src = images/QR_raactivityreport.png
246
+ # relative_height = 90
247
+
248
+ = e.g.) picoruby/prk_crkbd
249
+ # image
250
+ # src = images/crkbd_2.jpg
251
+ # relative_height = 95
252
+
253
+ = e.g.) prk_crkbd/keymap.rb
254
+ # enscript ruby
255
+
256
+ kbd = Keyboard.new
257
+ # (init_pins, add_layer etc., then)
258
+ rgb = RGB.new(
259
+ 0, # pin number
260
+ 6, # size of underglow LED
261
+ 21 # size of backlight LED
262
+ )
263
+ rgb.effect = :rainbow # or :breathing
264
+ kbd.append rgb
265
+ kbd.start!
266
+
267
+ = e.g.) prk_crkbd/keymap.rb
268
+ \n
269
+ If you wanna input ((*";"*)) with SHIFT and ((*":"*)) without SHIFT,
270
+
271
+ # enscript ruby
272
+ kbd.before_report do
273
+ kbd.invert_sft if kbd.keys_include?(:KC_SCOLON)
274
+ end
275
+
276
+ (('tag:center'))
277
+ You no longer need to modify .vimrc
278
+
279
+ = You can write invert_ctl in keymap.rb
280
+ # enscript ruby
281
+ class Keyboard
282
+ def invert_ctl
283
+ # KC_LCTL: 0b00000001 👈
284
+ # KC_LSFT: 0b00000010
285
+ # KC_LALT: 0b00000100
286
+ # KC_LGUI: 0b00001000
287
+ # KC_RCTL: 0b00010000 👈
288
+ # KC_RSFT: 0b00100000
289
+ # KC_RALT: 0b01000000
290
+ # KC_RGUI: 0b10000000
291
+ if (@modifier & 0b00010001) > 0
292
+ @modifier &= 0b11101110
293
+ else
294
+ @modifier |= 0b00000001
295
+ end
296
+ end
297
+ end
298
+ kbd.before_report do
299
+ kbd.invert_ctl if kbd.keys_include?(:KC_V)
300
+ end
301
+
302
+ = Fibonacci number
303
+ (('tag:center'))\n\n\n
304
+ (DEMO)
305
+
306
+ = Fibonacci number
307
+ # enscript c
308
+ 1
309
+ 2
310
+ 3
311
+ 5
312
+ 8
313
+ 13
314
+ 21
315
+ 34
316
+ 55
317
+ 89
318
+ 144
319
+ 233
320
+ 377
321
+ ....
322
+
323
+ = Fibonacci in keymap.rb
324
+ # enscript ruby
325
+ class Fibonacci
326
+ def initialize
327
+ @a = 0 ; @b = 1
328
+ end
329
+ # Omits F0 and F1
330
+ def take
331
+ result = @a + @b
332
+ @a = @b
333
+ @b = result
334
+ end
335
+ end
336
+ fibonacci = Fibonacci.new
337
+ kbd.define_mode_key :FIBONACCI,
338
+ [ Proc.new { kbd.macro fibonacci.take },
339
+ :KC_NO, 300, nil ]
340
+
341
+ = Password generator in keymap.rb
342
+ # enscript ruby
343
+ class Password
344
+ def initialize
345
+ @c = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_!@#$%^&*()=-+/[]{}<>'
346
+ end
347
+ def generate
348
+ unless @srand
349
+ srand(board_millis) # generate rand()'s seed by board_millis
350
+ @srand = true
351
+ end
352
+ password = ""
353
+ while true
354
+ i = rand % 100
355
+ password << @c[i].to_s
356
+ break if password.length == 8
357
+ end
358
+ return password
359
+ end
360
+ end
361
+ password = Password.new
362
+ kbd.define_mode_key :PASSWD, [ Proc.new { kbd.macro password.generate, [] }, :KC_NO, 300, nil ]
363
+
364
+ = ((* *))
365
+ (('tag:center'))\n\n\n
366
+ (('tag:large:By the way,'))
367
+ == prop
368
+ : hide-title
369
+ true
370
+
371
+ = ((* *))
372
+ (('tag:center'))\n\n
373
+ (('tag:large'))
374
+ ((*What do you think is\n
375
+ the No.1 text editor?*))
376
+ == prop
377
+ : hide-title
378
+ true
379
+
380
+ = ((* *))
381
+ (('tag:center'))\n\n\n
382
+ (('tag:large:vim?'))
383
+ == prop
384
+ : hide-title
385
+ true
386
+
387
+ = ((* *))
388
+ (('tag:center'))\n\n\n
389
+ (('tag:large:emacs?'))
390
+ == prop
391
+ : hide-title
392
+ true
393
+
394
+ = ((* *))
395
+ (('tag:center'))\n\n\n
396
+ (('tag:large:textbringer?'))
397
+ == prop
398
+ : hide-title
399
+ true
400
+
401
+ = ((* *))
402
+ # image
403
+ # src = images/matamata.png
404
+ # relative_height = 80
405
+ # relative_margin_top = 5
406
+ # relative_margin_left = -9
407
+ == prop
408
+ : hide-title
409
+ true
410
+
411
+ = ((* *))
412
+ \n\n\n\n
413
+ Copyright © Microsoft
414
+ # image
415
+ # src = images/Notepad.png
416
+ # align = right
417
+ # relative-height = 100
418
+ # relative_margin_left = 10
419
+ == prop
420
+ : hide-title
421
+ true
422
+
423
+ = PicoRuby Compiler on Board
424
+ (('tag:center'))\n\n
425
+ (DEMO)
426
+
427
+ = PicoRuby Compiler on Board
428
+ * Multitasking of mruby/c
429
+ # image
430
+ # src = images/Multitasking.png
431
+ # relative_height = 110
432
+ # relative_margin_top = -8
433
+
434
+ = PicoRuby Compiler on Board
435
+ * ((*Sandbox*)) task is never freed!
436
+ # image
437
+ # src = images/Multitasking_sandbox.png
438
+ # relative_height = 110
439
+ # relative_margin_top = -8
440
+
441
+ = ((* *))
442
+ (('tag:center'))\n
443
+ (('tag:xx-large'))
444
+ So,
445
+ == prop
446
+ : hide-title
447
+ true
448
+
449
+ = ((* *))
450
+ (('tag:center'))\n
451
+ (('tag:xx-large'))
452
+ You could say
453
+ == prop
454
+ : hide-title
455
+ true
456
+
457
+ = ((* *))
458
+ (('tag:center'))
459
+ (('tag:xx-large'))
460
+ Keyboard is\n
461
+ Essentially\n
462
+ ((*Ruby*))
463
+ == prop
464
+ : hide-title
465
+ true
466
+
467
+ = Future work
468
+ * WebUSB serial\n(like Remap)
469
+ * IoT, Robot
470
+ * Smalruby
471
+ * mruby Girls
472
+
473
+ # image
474
+ # src = images/remap.png
475
+ # align = right
476
+ # relative-height = 80
477
+ # relative_margin_top = -2
478
+ # relative_margin_left = 15
479
+
480
+ (('tag:right'))
481
+ (('tag:xx-small:https://remap-keys.app/catalog/gE11SshmfVPRGXEQZ6SC/keymap'))
482
+
483
+ = Conclusion
484
+ * PRK Firmware is ((*the world's\nfirst keyboard firmware in Ruby*))
485
+ * You can not only write your keymap\nbut also make your keyboard\n((*more than a keyboard*))
486
+
487
+ = ((* *))
488
+ (('tag:center'))
489
+ (('tag:xx-large'))
490
+ Code ((*Ruby*)) with\n
491
+ a keyboard that\n
492
+ runs on ((*Ruby*))
493
+ == prop
494
+ : hide-title
495
+ true
496
+
497
+ = ((* *))
498
+ (('tag:center'))
499
+ (('tag:xx-large'))
500
+ \n
501
+ Happy Coding!
502
+ == prop
503
+ : hide-title
504
+ true
505
+
506
+ = ((* *))
507
+ (('tag:center'))
508
+ (('tag:xx-large'))
509
+ \n
510
+ Thank you!!!q
511
+ == prop
512
+ : hide-title
513
+ true
514
+
data/README.rd ADDED
@@ -0,0 +1,24 @@
1
+ = PRK Firmware: Keyboard is Essentially Ruby
2
+
3
+ Presentation slide for RubyKaigi Takeout 2021
4
+
5
+ == For author
6
+
7
+ === Show
8
+
9
+ rake
10
+
11
+ === Publish
12
+
13
+ rake publish
14
+
15
+ == For viewers
16
+
17
+ === Install
18
+
19
+ gem install rabbit-slide-hasumikin-RubyKaigiTakeout2021
20
+
21
+ === Show
22
+
23
+ rabbit rabbit-slide-hasumikin-RubyKaigiTakeout2021.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,24 @@
1
+ ---
2
+ id: RubyKaigiTakeout2021
3
+ base_name: PRK-Firmware--Keyboard-is-Essentially-Ruby
4
+ tags:
5
+ - PicoRuby
6
+ - keyboard
7
+ - Raspberry
8
+ presentation_date: '2021-09-10'
9
+ presentation_start_time: 11:00
10
+ presentation_end_time: 11:25
11
+ version: 2021.9.10.0
12
+ licenses: []
13
+ slideshare_id:
14
+ speaker_deck_id:
15
+ ustream_id:
16
+ vimeo_id:
17
+ youtube_id:
18
+ author:
19
+ markup_language: :rd
20
+ name: HASUMI Hitoshi
21
+ email: hasumikin@gmail.com
22
+ rubygems_user: hasumikin
23
+ slideshare_user:
24
+ speaker_deck_user:
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/images/crkbd.jpg ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/images/msc.png ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/images/remap.png ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,37 @@
1
+ ## 一件すると一般名詞みたいだが、実は固有名詞なので単語の本来の意味を無視してそのまま発話すればよいものたち
2
+
3
+ (例えば「gem」を「宝石」のように解釈する必要はありません)
4
+
5
+ Rails
6
+ gem
7
+ steep
8
+ Shell
9
+
10
+ ##そのまま発話すればOKな固有名詞など
11
+
12
+ Rubygems(ルビージェムズ)
13
+ vim(ヴィム)
14
+ emacs(イーマクス)
15
+ textbringer(テクストブリンガ)
16
+ Git(ギット)
17
+ GitHub(ギットハブ)
18
+ HID(エイチアイディ)
19
+ GUI(ジーユーアイ)
20
+ CUI(シーユーアイ)
21
+ IRB(アイアールビー)
22
+ GPIO(ジーピーアイオー)
23
+
24
+ ## 適切な翻訳がある言葉たち
25
+
26
+ (スライドには書かれていないものもありますが、口頭でしゃべります)
27
+
28
+ 角谷さん -> Mr. Kakutani
29
+ (キーボードが)「割れてる」やつ -> Split type
30
+ ラズパイ -> Raspberry Pi(ラズベリーパイ)
31
+ ラズパイピコまたはラズピコ -> Raspberry Pi Pico(ラズベリーパイピコ)
32
+ ラズパイ財団 -> Raspberry Pi Foundation
33
+ マイコン -> Microcontroller
34
+ RP2040(あーるぴーにーぜろよんぜろ) -> RP-twenty-forty
35
+ (Windowsアプリの)メモ帳 -> notepad.exe(ノートパッドエグゼ)
36
+ 疑似乱数発生器 -> Pseudo random number generator
37
+
data/theme.rb ADDED
@@ -0,0 +1,131 @@
1
+ # puts font_families.sort
2
+ @xx_large_font_size = screen_size(12 * Pango::SCALE)
3
+ @x_large_font_size = screen_size(10 * Pango::SCALE)
4
+ @large_font_size = screen_size(7 * Pango::SCALE)
5
+ @normal_font_size = screen_size(5 * Pango::SCALE)
6
+ @small_font_size = screen_size(4 * Pango::SCALE)
7
+ @x_small_font_size = screen_size(3.5 * Pango::SCALE)
8
+ @xx_small_font_size = screen_size(2.5 * Pango::SCALE)
9
+
10
+ @font_family = find_font_family('Titillium Web')
11
+ @monospace_font_family = 'Ricty Discord'
12
+
13
+ @default_headline_line_color = '#0B374D'
14
+ @default_headline_line_width = 8
15
+ @default_headline_line_expand = false
16
+
17
+ set_graffiti_color "blue"
18
+ set_graffiti_line_width 8
19
+
20
+ #@table_frame_color = "#ffffff"
21
+ #@table_fill_color = "#0f0428"
22
+ #@table_body_frame_color = "#ffffff"
23
+ #@table_body_fill_color = "#3f3468"
24
+ #@table_head_frame_color = "#ffffff"
25
+ #@table_head_fill_color = "#rf0428"
26
+
27
+
28
+ @preformatted_fill_color = '#ebe0ce'
29
+ # @preformatted_centering = true
30
+ @space = screen_y(1)
31
+
32
+ @image_slide_number_start_flag_color = "#FFB400"
33
+ @image_slide_number_goal_flag_color = "#FF2B22"
34
+
35
+ include_theme('default')
36
+
37
+ match Slide, HeadLine do |heads|
38
+ heads.prop_set("size", @large_font_size)
39
+ heads.prop_set("weight", "bold")
40
+ end
41
+ match Slide do |slides|
42
+ slides.prop_set("foreground", "#0B374D")
43
+ end
44
+
45
+ @slide_headline_hide = true
46
+ match TitleSlide do |slides|
47
+ slides.margin_left = 900
48
+ slides.vertical_centering = true
49
+ slides.prop_set "foreground", "#0B374D"
50
+ slides.prop_set("weight", "bold")
51
+ end
52
+ match TitleSlide, Subtitle do |subtitle|
53
+ subtitle.margin_top = -20
54
+ subtitle.prop_set("size", @large_font_size)
55
+ end
56
+ match TitleSlide, Author do |author|
57
+ author.margin_top = 50
58
+ author.prop_set("weight", "normal")
59
+ end
60
+ match TitleSlide, Place do |place|
61
+ place.prop_set("size", @small_font_size)
62
+ end
63
+ match TitleSlide, "*" do |elems|
64
+ elems.horizontal_centering = false
65
+ end
66
+
67
+ # Cites
68
+ #match Slide do |slides|
69
+ # slides.each do |slide|
70
+ # if slide.match?(/Acknowledgement/)
71
+ # slide.horizontal_centering = true
72
+ # end
73
+ # end
74
+ #end
75
+
76
+ @title_slide_background_image = 'images/takeout.000.png'
77
+ include_theme("title-slide-background-image")
78
+
79
+ @slide_background_image = 'images/takeout.001.png'
80
+ include_theme("slide-background-image")
81
+
82
+ #@slide_logo_image = 'images/mark48.png'
83
+ #include_theme('slide-logo')
84
+
85
+ @item_image = 'images/hamburger.png'
86
+
87
+ include_theme("default-item-mark")
88
+
89
+ add_image_path("rabbit-images")
90
+
91
+ slide_body = [Slide, Body]
92
+ item_list_item = [ItemList, ItemListItem]
93
+
94
+ indent = 70
95
+
96
+ match(*(slide_body + (item_list_item * 1))) do |items|
97
+ name = "item1"
98
+ items.delete_pre_draw_proc_by_name(name)
99
+ items.delete_post_draw_proc_by_name(name)
100
+ draw_image_mark(items, @item_image, name, indent: indent)
101
+ end
102
+
103
+ match(*(slide_body + (item_list_item * 2))) do |items|
104
+ name = "item2"
105
+ items.delete_pre_draw_proc_by_name(name)
106
+ items.delete_post_draw_proc_by_name(name)
107
+ draw_image_mark(items, @item_image, name, indent: indent)
108
+ end
109
+
110
+ match(*(slide_body + (item_list_item * 3))) do |items|
111
+ name = "item3"
112
+ items.delete_pre_draw_proc_by_name(name)
113
+ items.delete_post_draw_proc_by_name(name)
114
+ draw_image_mark(items, @item_image, name, indent: indent)
115
+ end
116
+
117
+ enum_list_item = [EnumList, EnumListItem]
118
+
119
+ match(*(slide_body + enum_list_item + item_list_item)) do |items|
120
+ name = "enum-item1"
121
+ items.delete_pre_draw_proc_by_name(name)
122
+ items.delete_post_draw_proc_by_name(name)
123
+ draw_image_mark(items, @item_image, name, indent: indent)
124
+ end
125
+
126
+ match(*(slide_body + enum_list_item + (item_list_item * 2))) do |items|
127
+ name = "enum-item2"
128
+ items.delete_pre_draw_proc_by_name(name)
129
+ items.delete_post_draw_proc_by_name(name)
130
+ draw_image_mark(items, @item_image, name, indent: indent)
131
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-hasumikin-RubyKaigiTakeout2021
3
+ version: !ruby/object:Gem::Version
4
+ version: 2021.9.10.0
5
+ platform: ruby
6
+ authors:
7
+ - HASUMI Hitoshi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-09-09 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: Presentation slide for RubyKaigi Takeout 2021
28
+ email:
29
+ - hasumikin@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - PRK-Firmware--Keyboard-is-Essentially-Ruby.rab
36
+ - README.rd
37
+ - Rakefile
38
+ - config.yaml
39
+ - images/Multitasking.png
40
+ - images/Multitasking_sandbox.png
41
+ - images/Notepad.png
42
+ - images/QR_prk_firmware.png
43
+ - images/QR_raactivityreport.png
44
+ - images/QR_raactivityreport_2.png
45
+ - images/architecture_1.png
46
+ - images/boot_button_1.png
47
+ - images/crkbd.jpg
48
+ - images/crkbd_2.jpg
49
+ - images/drag_and_drop_1.png
50
+ - images/drag_and_drop_2.png
51
+ - images/hamburger.png
52
+ - images/hero_hamburger.png
53
+ - images/kakutani.jpg
54
+ - images/kakutani.png
55
+ - images/kakutani_1.jpg
56
+ - images/kakutani_2.jpg
57
+ - images/matamata.png
58
+ - images/msc.png
59
+ - images/pipi_gherkin.jpg
60
+ - images/promicro.jpg
61
+ - images/promicro_rp2040.jpg
62
+ - images/promicro_rp2040_boot_button.png
63
+ - images/qmk_kmk_prk.png
64
+ - images/qmk_kmk_prk_2.png
65
+ - images/release.png
66
+ - images/remap.png
67
+ - images/rpi_pico.jpg
68
+ - images/shortage.jpg
69
+ - images/shortage.png
70
+ - images/takeout.000.png
71
+ - images/takeout.001.png
72
+ - images/textedit.png
73
+ - memo_同時通訳用_RubyKaigiTakeout2021-PRK-Firmware--Keyboard-is-Essentially-Ruby.md
74
+ - pdf/RubyKaigiTakeout2021-PRK-Firmware--Keyboard-is-Essentially-Ruby.pdf
75
+ - theme.rb
76
+ homepage: https://slide.rabbit-shocker.org/authors/hasumikin/RubyKaigiTakeout2021/
77
+ licenses: []
78
+ metadata: {}
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubygems_version: 3.2.17
95
+ signing_key:
96
+ specification_version: 4
97
+ summary: 'PRK Firmware: Keyboard is Essentially Ruby'
98
+ test_files: []