rabbit-slide-hasumikin-making-iot-device-with-ruby 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/Making-IoT-device-with-Ruby.rab +372 -0
- data/Making-IoT-device-with-Ruby.rab.pdf +0 -0
- data/README.rd +24 -0
- data/Rakefile +17 -0
- data/castle.jpg +0 -0
- data/chad.jpg +0 -0
- data/collage02.jpg +0 -0
- data/config.yaml +20 -0
- data/device04.jpg +0 -0
- data/hasumi.jpg +0 -0
- data/juji-asahi.jpg +0 -0
- data/kamosu.png +0 -0
- data/kishima-san.png +0 -0
- data/logo_10th@2x.png +0 -0
- data/mark.png +0 -0
- data/monstar-lab_shimane.jpg +0 -0
- data/mrubycKaigi.jpg +0 -0
- data/nigouki.jpg +0 -0
- data/pdf/making-iot-device-with-ruby-making-iot-device-with-ruby.pdf +0 -0
- data/poland.gif +0 -0
- data/psoc5lp_chip.jpg +0 -0
- data/raspberrypi.jpg +0 -0
- data/shinjiko.jpg +0 -0
- data/theme.rb +85 -0
- data/tranquilo.jpg +0 -0
- data/unsoldered-2.png +0 -0
- data//346/235/276/346/261/237/345/237/216_Matsue.rb.jpg +0 -0
- metadata +87 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ec724f1ff3eb18b5a37892cf83bc43d9efb4a3227a5de5649fe5afc2a425ad7e
|
4
|
+
data.tar.gz: da920fa000b16d3fe9b813c4e123786eaef2e347774b8c0e8f5d04c321a0d87b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f7eaeb57008ece62107ad5079f1df5442f57ee7127dd03d8d4b049aec0b8fa6426de0426a135a125f638d1464a6dc579259cfb99113dff4607a500b5a81462e4
|
7
|
+
data.tar.gz: 8f327b5e2e3d865738afd972a8519ab4f2d403ab91676c4c9acdbd97d5b1217c0b7c57dd43d4999a1a352e3122ace4f02ba6b40255e5ee92a065ab38ddef8981
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
making-iot-device-with-ruby.rab
|
@@ -0,0 +1,372 @@
|
|
1
|
+
= Making IoT device\nwith Ruby
|
2
|
+
|
3
|
+
:author
|
4
|
+
HASUMI Hitoshi
|
5
|
+
:institution
|
6
|
+
Monstar Lab, Matsue office
|
7
|
+
:allotted-time
|
8
|
+
25m
|
9
|
+
:date
|
10
|
+
Nov. 2, 2018 (day 2)
|
11
|
+
:place
|
12
|
+
RubyWorld Conference 2018\nKunibiki Messe, Shimane
|
13
|
+
:theme
|
14
|
+
./theme
|
15
|
+
|
16
|
+
= Information
|
17
|
+
|
18
|
+
= Information
|
19
|
+
* mrubycKaigi#1 on Oct. 31, 2018 (the day before yesterday)
|
20
|
+
# image
|
21
|
+
# src = mrubycKaigi.jpg
|
22
|
+
# align = center
|
23
|
+
# relative-height = 100
|
24
|
+
|
25
|
+
= Information
|
26
|
+
# image
|
27
|
+
# src = poland.gif
|
28
|
+
# align = center
|
29
|
+
# relative-height = 100
|
30
|
+
|
31
|
+
= Information
|
32
|
+
* Polish Ruby users group sent me an invitation
|
33
|
+
* they want me to talk about ((*mruby/c*))
|
34
|
+
* I'm going to have several talks and workshops in May 2019
|
35
|
+
|
36
|
+
= Information
|
37
|
+
* Polish Ruby users group sent me an invitation
|
38
|
+
* they want me to talk about ((*mruby/c*))
|
39
|
+
* I'm going to have several talks and workshops in May 2019
|
40
|
+
\n\n
|
41
|
+
(('tag:center'))((*RubyWorld!!!*))
|
42
|
+
|
43
|
+
= Making IoT device with Ruby
|
44
|
+
* PoC product for a Sake brewery, 旭日酒造
|
45
|
+
# image
|
46
|
+
# src = nigouki.jpg
|
47
|
+
# align = center
|
48
|
+
# relative-height = 100
|
49
|
+
|
50
|
+
= Making IoT device with Ruby
|
51
|
+
* prototype for mass production
|
52
|
+
* you can see the device at Monstar-lab's booth downstairs today (Nov. 1-2)
|
53
|
+
# image
|
54
|
+
# src = collage02.jpg
|
55
|
+
# align = center
|
56
|
+
# relative-height = 100
|
57
|
+
|
58
|
+
= Making IoT device with Ruby
|
59
|
+
* what does ((*`with Ruby`*)) mean?
|
60
|
+
* not only CRuby
|
61
|
+
* not only mruby/c, too
|
62
|
+
|
63
|
+
= Making IoT device with Ruby
|
64
|
+
* what does ((*`with Ruby`*)) mean?
|
65
|
+
* not only CRuby
|
66
|
+
* not only mruby/c, too
|
67
|
+
* but also ((*RubyWorld*))
|
68
|
+
|
69
|
+
= About me
|
70
|
+
|
71
|
+
= About me
|
72
|
+
# image
|
73
|
+
# src = 松江城_Matsue.rb.jpg
|
74
|
+
# align = center
|
75
|
+
# relative-height = 110
|
76
|
+
|
77
|
+
= About me
|
78
|
+
* Monstar Lab / Matsue office (now hiring!)
|
79
|
+
# image
|
80
|
+
# src = monstar-lab_shimane.jpg
|
81
|
+
# align = center
|
82
|
+
# relative-height = 100
|
83
|
+
|
84
|
+
= About me
|
85
|
+
* HASUMI Hitoshi(羽角 均) @hasumikin
|
86
|
+
* finished master's degree in architecture department
|
87
|
+
* majored in the history of Italian architecture
|
88
|
+
* became a programmer at 35 years old
|
89
|
+
* neither a computer specialist nor an electricity expert
|
90
|
+
|
91
|
+
= Technology stack of IoT
|
92
|
+
# image
|
93
|
+
# src = unsoldered-2.png
|
94
|
+
# align = center
|
95
|
+
# relative-height = 100
|
96
|
+
|
97
|
+
= Technology stack of IoT (1/2)
|
98
|
+
* TCP/IP
|
99
|
+
* cloud service
|
100
|
+
* RDB and KVS
|
101
|
+
* server programming
|
102
|
+
* mobile programming
|
103
|
+
* security
|
104
|
+
* test
|
105
|
+
|
106
|
+
= Technology stack of IoT (2/2)
|
107
|
+
* high school physics electricity and transistor
|
108
|
+
* microcontroller and peripherals like UART, I2C, ADC, etc.
|
109
|
+
* circuit and PCB artwork
|
110
|
+
* soldering and wiring
|
111
|
+
* 3D CAD for housing
|
112
|
+
* suppliers
|
113
|
+
* firmware programming
|
114
|
+
|
115
|
+
= Understanding the business
|
116
|
+
* Sake brewing process and Sake itself
|
117
|
+
# image
|
118
|
+
# src = chad.jpg
|
119
|
+
# align = center
|
120
|
+
# relative-height = 100
|
121
|
+
|
122
|
+
= Sake itself
|
123
|
+
# image
|
124
|
+
# src = juji-asahi.jpg
|
125
|
+
# align = center
|
126
|
+
# relative-height = 100
|
127
|
+
|
128
|
+
= The most thing you should know is
|
129
|
+
|
130
|
+
= The most thing you should know is
|
131
|
+
\n\n\n\n
|
132
|
+
(('tag:center'))(('tag:x-large:Ruby on Rails'))
|
133
|
+
|
134
|
+
= Ruby on Rails
|
135
|
+
* tells you what a good API is
|
136
|
+
* tells you what a reinventing the wheel is
|
137
|
+
* tells you what an ecosystem is
|
138
|
+
* tells you what a web service is
|
139
|
+
|
140
|
+
= Technology stack of IoT (1/2) again
|
141
|
+
* ((*✓*))TCP/IP
|
142
|
+
* ((*✓*))cloud service
|
143
|
+
* ((*✓*))RDB and KVS
|
144
|
+
* ((*✓*))server programming
|
145
|
+
* ((*✓*))mobile programming
|
146
|
+
* ((*✓*))security
|
147
|
+
* ((*✓*))test
|
148
|
+
|
149
|
+
= Ruby on Rails
|
150
|
+
* gives you time on digging into technologies other than the server app
|
151
|
+
* gives you wings
|
152
|
+
|
153
|
+
= Technology stack of IoT (2/2) again
|
154
|
+
* ((*✓*))high school physics electricity and transistor
|
155
|
+
* ((*✓*))microcontroller and peripheral interfaces like UART, I2C, ADC, etc.
|
156
|
+
* ((*✓*))circuit and PCB artwork
|
157
|
+
* ((*✓*))soldering and wiring
|
158
|
+
* ((*✓*))3D CAD
|
159
|
+
* ((*✓*))suppliers
|
160
|
+
* ((*✓*))firmware programming
|
161
|
+
|
162
|
+
= Microcontroller
|
163
|
+
* I use microcontrollers instead of single board computers like Raspberry Pi
|
164
|
+
# image
|
165
|
+
# src = psoc5lp_chip.jpg
|
166
|
+
# align = center
|
167
|
+
# relative-height = 100
|
168
|
+
|
169
|
+
= Microcontroller, upside
|
170
|
+
* starts immediately right after plugged in
|
171
|
+
* end users, brewery workers in my case, can use it simply
|
172
|
+
* you can narrow security issue list
|
173
|
+
* many a malware aims at linux or windows platform as a target
|
174
|
+
* you don't need to consider unnecessary deamon
|
175
|
+
* neither need to do `apt upgrade` nor `yum update`
|
176
|
+
|
177
|
+
= Microcontroller, upside
|
178
|
+
* low energy
|
179
|
+
* rarely overheated
|
180
|
+
* many choices of power supply
|
181
|
+
* mass production
|
182
|
+
* you can choose appropriate chipset(number of GPIOs, memory size, etc.) for your application
|
183
|
+
* cost advantage for parts supply and subcontractor manufacturing
|
184
|
+
|
185
|
+
= Microcontroller, downside
|
186
|
+
* less resource
|
187
|
+
* CPU, memory
|
188
|
+
* hard to be soldered
|
189
|
+
|
190
|
+
= Sake IoT project
|
191
|
+
|
192
|
+
= Sake IoT project
|
193
|
+
* IoT system for Asahi-shuzo(旭日酒造)
|
194
|
+
* delivered to actual brew work in January 2018
|
195
|
+
* devices post temperature of Sake materials in brewing, surrounding temperature and humidity to the cloud
|
196
|
+
* then, those data are displayed on the smartphone app
|
197
|
+
* the firmware written in ((*mruby/c*))
|
198
|
+
|
199
|
+
= what does mruby((*/c*)) mean?
|
200
|
+
|
201
|
+
= what does mruby((*/c*)) mean?
|
202
|
+
* compact
|
203
|
+
* concurrent
|
204
|
+
* capability
|
205
|
+
|
206
|
+
= Sake IoT project
|
207
|
+
# image
|
208
|
+
# src = kamosu.png
|
209
|
+
# align = center
|
210
|
+
# relative-height = 110
|
211
|
+
|
212
|
+
= So many factors to be troubled in IoT
|
213
|
+
* circuit design, soldering, wiring, peripheral equipments, network...
|
214
|
+
* hard to find why the application doesn't work well
|
215
|
+
* in addition to above, I introduced a new layer of mruby/c
|
216
|
+
* one year ago, mruby/c was yet young, had bugs and insufficiency
|
217
|
+
* (now it is enough good)
|
218
|
+
|
219
|
+
= So many factors to be troubled in IoT
|
220
|
+
: then, was mruby/c bad?
|
221
|
+
|
222
|
+
= So many factors to be troubled in IoT
|
223
|
+
: then, was mruby/c bad? - NO
|
224
|
+
* IoT at work makes you hurry, imagine
|
225
|
+
* you have to go alternately to dark 10℃ storage cellar and humid 35℃ manufacturing room
|
226
|
+
* brewery workers run around
|
227
|
+
* you have to amend your firmware with your small laptop in 10 minutes
|
228
|
+
* you will thank Ruby's descriptiveness and agility
|
229
|
+
|
230
|
+
= Does IoT at work make you hurry?
|
231
|
+
|
232
|
+
= Does IoT at work make you hurry?
|
233
|
+
# image
|
234
|
+
# src = tranquilo.jpg
|
235
|
+
# relative-height = 100
|
236
|
+
|
237
|
+
= Pre-prototyping
|
238
|
+
* preparation is the most important thing
|
239
|
+
* you have to confirm if a part works as same as the datasheet
|
240
|
+
* sometimes it is different
|
241
|
+
* you can prepare with Ruby
|
242
|
+
|
243
|
+
= Pre-prototyping
|
244
|
+
# image
|
245
|
+
# src = raspberrypi.jpg
|
246
|
+
# relative-height = 55
|
247
|
+
|
248
|
+
* Raspberry Pi & CRuby are great for pre-prototyping
|
249
|
+
* use breadboard or make PCB for test like this photo
|
250
|
+
|
251
|
+
= Pre-prototyping
|
252
|
+
ex) CRuby for serial communication test
|
253
|
+
# enscript ruby
|
254
|
+
# notice this is CRuby for RasPi
|
255
|
+
require 'rubyserial'
|
256
|
+
require 'timeout'
|
257
|
+
sp = Serial.new '/dev/serial0', BAUDRATE, 8 # match with your instrument
|
258
|
+
loop do
|
259
|
+
puts '[command]'
|
260
|
+
command = gets
|
261
|
+
sp.write command.sub("\n", "\r") # replace LF if needed
|
262
|
+
sleep 0.1
|
263
|
+
result = ''
|
264
|
+
begin
|
265
|
+
Timeout.timeout(10) do
|
266
|
+
loop do
|
267
|
+
line = sp.read(128)
|
268
|
+
break if line == '' && result != ''
|
269
|
+
result << line
|
270
|
+
sleep 0.1
|
271
|
+
puts '=> ' + result
|
272
|
+
rescue Timeout::Error
|
273
|
+
puts 'timeout!'
|
274
|
+
ennnnd
|
275
|
+
|
276
|
+
= Pre-prototyping
|
277
|
+
ex) CRuby for serial communication test
|
278
|
+
# enscript bash
|
279
|
+
$ serial_communication_test.rb
|
280
|
+
[command]
|
281
|
+
AT # command
|
282
|
+
=> OK # response
|
283
|
+
[command]
|
284
|
+
AT+CIMI # command
|
285
|
+
=> 123456789012 # response
|
286
|
+
[command]
|
287
|
+
AT+XXX # command
|
288
|
+
=> error # response
|
289
|
+
|
290
|
+
= Pre-prototyping
|
291
|
+
* then, you can copy and paste CRuby snippet to mruby/c source
|
292
|
+
|
293
|
+
= Firmware programming with mruby/c
|
294
|
+
|
295
|
+
= Firmware programming with mruby/c
|
296
|
+
* Ruby power
|
297
|
+
* string operations
|
298
|
+
* encapsulation (object oriented)
|
299
|
+
|
300
|
+
= Firmware programming with mruby/c
|
301
|
+
# enscript ruby
|
302
|
+
# ex) string operations
|
303
|
+
#
|
304
|
+
# concatenation
|
305
|
+
parameter = 'name=' + name + '&age=' + age.to_s
|
306
|
+
# => name=hasumikin&age=43
|
307
|
+
|
308
|
+
# substitution
|
309
|
+
'what_a_wonderful_world'.tr('_', '-')
|
310
|
+
# => what-a-wonderful-world
|
311
|
+
|
312
|
+
= Firmware programming with mruby/c
|
313
|
+
# enscript ruby
|
314
|
+
# ex) encapsulation (object oriented)
|
315
|
+
class LoggerBase
|
316
|
+
def info(line)
|
317
|
+
write(:info, line)
|
318
|
+
ennd
|
319
|
+
class LoggerBLE < LoggerBase
|
320
|
+
def initialize(*args)
|
321
|
+
@ble = BluetoothLowEnergy.bind_characteristic(args[0])
|
322
|
+
end
|
323
|
+
def write(log_level, line)
|
324
|
+
@ble.notify(line)
|
325
|
+
ennd
|
326
|
+
class LoggerFlashROM < LoggerBase
|
327
|
+
def initialize(*args)
|
328
|
+
@rom_io = RomFileStream.open('/log.txt', 'w')
|
329
|
+
end
|
330
|
+
def write(log_level, line)
|
331
|
+
@rom_io.write_ln(line)
|
332
|
+
ennd
|
333
|
+
logger = LoggerBLE.new(:log) /* or */ logger = LoggerFlashROM.new
|
334
|
+
logger.info('this is log')
|
335
|
+
|
336
|
+
= Firmware programming with mruby/c
|
337
|
+
* you must write both mruby and C
|
338
|
+
* C for microcontroller I/O
|
339
|
+
* mruby for business logic
|
340
|
+
* mruby/c seems like a thin wrapper for C
|
341
|
+
* two sides of the same coin:
|
342
|
+
* you have to write C that directly communicate with peripherals
|
343
|
+
* you can fall back to C anytime you get stuck
|
344
|
+
|
345
|
+
= Find more information on
|
346
|
+
* rubykaigi.org/2018/presentations/hasumon.html
|
347
|
+
* shimane.monstar-lab.com/hasumin
|
348
|
+
* follow twitter.com/mrubyc_jp
|
349
|
+
* ITOC and I are planning to make workshops of mruby/c
|
350
|
+
|
351
|
+
= Conclusion
|
352
|
+
|
353
|
+
= Conclusion
|
354
|
+
* Thank Ruby
|
355
|
+
* from pre-prototyping to production
|
356
|
+
|
357
|
+
= Conclusion
|
358
|
+
* Thank Ruby
|
359
|
+
* from pre-prototyping to production
|
360
|
+
* Thank Rails
|
361
|
+
* full of really important things
|
362
|
+
|
363
|
+
= Conclusion
|
364
|
+
* Thank Ruby
|
365
|
+
* from pre-prototyping to production
|
366
|
+
* Thank Rails
|
367
|
+
* full of really important things
|
368
|
+
* Thank Sake
|
369
|
+
|
370
|
+
= ((' '))
|
371
|
+
\n\n\n\n
|
372
|
+
(('tag:center'))(('tag:x-large:Thank you all!'))
|
Binary file
|
data/README.rd
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= Making IoT device with Ruby
|
2
|
+
|
3
|
+
I made an IoT system to manage the brewing temperature for Asahi Shuzo (Izumo city) with Ruby. I will talk about the value of Ruby on-the-spot of IoT, and about the way how a very ordinary Rubyist got to be able to handle microcontroller.
|
4
|
+
|
5
|
+
== 作者向け
|
6
|
+
|
7
|
+
=== 表示
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
=== 公開
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
== 閲覧者向け
|
16
|
+
|
17
|
+
=== インストール
|
18
|
+
|
19
|
+
gem install rabbit-slide-hasumikin-making-iot-device-with-ruby
|
20
|
+
|
21
|
+
=== 表示
|
22
|
+
|
23
|
+
rabbit rabbit-slide-hasumikin-making-iot-device-with-ruby.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("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/castle.jpg
ADDED
Binary file
|
data/chad.jpg
ADDED
Binary file
|
data/collage02.jpg
ADDED
Binary file
|
data/config.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
id: making-iot-device-with-ruby
|
3
|
+
base_name: making-iot-device-with-ruby
|
4
|
+
tags:
|
5
|
+
- mrubyc
|
6
|
+
presentation_date:
|
7
|
+
version: 1.0.0
|
8
|
+
licenses: []
|
9
|
+
slideshare_id:
|
10
|
+
speaker_deck_id:
|
11
|
+
ustream_id:
|
12
|
+
vimeo_id:
|
13
|
+
youtube_id:
|
14
|
+
author:
|
15
|
+
markup_language: :rd
|
16
|
+
name: HASUMI Hitoshi
|
17
|
+
email: hasumikin@gmail.com
|
18
|
+
rubygems_user: hasumikin
|
19
|
+
slideshare_user:
|
20
|
+
speaker_deck_user:
|
data/device04.jpg
ADDED
Binary file
|
data/hasumi.jpg
ADDED
Binary file
|
data/juji-asahi.jpg
ADDED
Binary file
|
data/kamosu.png
ADDED
Binary file
|
data/kishima-san.png
ADDED
Binary file
|
data/logo_10th@2x.png
ADDED
Binary file
|
data/mark.png
ADDED
Binary file
|
Binary file
|
data/mrubycKaigi.jpg
ADDED
Binary file
|
data/nigouki.jpg
ADDED
Binary file
|
Binary file
|
data/poland.gif
ADDED
Binary file
|
data/psoc5lp_chip.jpg
ADDED
Binary file
|
data/raspberrypi.jpg
ADDED
Binary file
|
data/shinjiko.jpg
ADDED
Binary file
|
data/theme.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
|
2
|
+
# puts font_families.sort
|
3
|
+
@xx_large_font_size = screen_size(10 * Pango::SCALE)
|
4
|
+
@x_large_font_size = screen_size(6.5 * Pango::SCALE)
|
5
|
+
@large_font_size = screen_size(5 * Pango::SCALE)
|
6
|
+
@normal_font_size = screen_size(4 * Pango::SCALE)
|
7
|
+
@small_font_size = screen_size(3.5 * Pango::SCALE)
|
8
|
+
@x_small_font_size = screen_size(3 * Pango::SCALE)
|
9
|
+
@xx_small_font_size = screen_size(2.5 * Pango::SCALE)
|
10
|
+
|
11
|
+
@default_headline_line_color = '#ffffff'
|
12
|
+
@font_family = find_font_family('Rockwell')
|
13
|
+
@monospace_font_family = 'Ricty Discord'
|
14
|
+
@preformatted_fill_color = '#ffffff'
|
15
|
+
# @preformatted_centering = false
|
16
|
+
@space = screen_y(1)
|
17
|
+
|
18
|
+
# うさぎの代わり
|
19
|
+
#@image_slide_number_image = "mo.png"
|
20
|
+
|
21
|
+
|
22
|
+
include_theme('default')
|
23
|
+
|
24
|
+
|
25
|
+
match(Slide, HeadLine) do |heads|
|
26
|
+
heads.prop_set("size", @large_font_size)
|
27
|
+
heads.prop_set("weight", "normal")
|
28
|
+
heads.margin_left = @space * 2
|
29
|
+
set_font_family(heads)
|
30
|
+
end
|
31
|
+
|
32
|
+
#@title_slide_background_image = 'background-487.png'
|
33
|
+
#include_theme("title-slide-background-image")
|
34
|
+
#
|
35
|
+
#@slide_background_image = 'keynote-base2-482.png'
|
36
|
+
#include_theme("slide-background-image")
|
37
|
+
#
|
38
|
+
@title_logo_image = 'logo_10th@2x.png'
|
39
|
+
include_theme('title-logo')
|
40
|
+
|
41
|
+
@item_image = 'mark.png'
|
42
|
+
|
43
|
+
include_theme("default-item-mark")
|
44
|
+
|
45
|
+
add_image_path("rabbit-images")
|
46
|
+
|
47
|
+
slide_body = [Slide, Body]
|
48
|
+
item_list_item = [ItemList, ItemListItem]
|
49
|
+
|
50
|
+
match(*(slide_body + (item_list_item * 1))) do |items|
|
51
|
+
name = "item1"
|
52
|
+
items.delete_pre_draw_proc_by_name(name)
|
53
|
+
items.delete_post_draw_proc_by_name(name)
|
54
|
+
draw_image_mark(items, @item_image, name)
|
55
|
+
end
|
56
|
+
|
57
|
+
match(*(slide_body + (item_list_item * 2))) do |items|
|
58
|
+
name = "item2"
|
59
|
+
items.delete_pre_draw_proc_by_name(name)
|
60
|
+
items.delete_post_draw_proc_by_name(name)
|
61
|
+
draw_image_mark(items, @item_image, name)
|
62
|
+
end
|
63
|
+
|
64
|
+
match(*(slide_body + (item_list_item * 3))) do |items|
|
65
|
+
name = "item3"
|
66
|
+
items.delete_pre_draw_proc_by_name(name)
|
67
|
+
items.delete_post_draw_proc_by_name(name)
|
68
|
+
draw_image_mark(items, @item_image, name)
|
69
|
+
end
|
70
|
+
|
71
|
+
enum_list_item = [EnumList, EnumListItem]
|
72
|
+
|
73
|
+
match(*(slide_body + enum_list_item + item_list_item)) do |items|
|
74
|
+
name = "enum-item1"
|
75
|
+
items.delete_pre_draw_proc_by_name(name)
|
76
|
+
items.delete_post_draw_proc_by_name(name)
|
77
|
+
draw_image_mark(items, @item_image, name)
|
78
|
+
end
|
79
|
+
|
80
|
+
match(*(slide_body + enum_list_item + (item_list_item * 2))) do |items|
|
81
|
+
name = "enum-item2"
|
82
|
+
items.delete_pre_draw_proc_by_name(name)
|
83
|
+
items.delete_post_draw_proc_by_name(name)
|
84
|
+
draw_image_mark(items, @item_image, name)
|
85
|
+
end
|
data/tranquilo.jpg
ADDED
Binary file
|
data/unsoldered-2.png
ADDED
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-hasumikin-making-iot-device-with-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- HASUMI Hitoshi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-02 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: I made an IoT system to manage the brewing temperature for Asahi Shuzo
|
28
|
+
(Izumo city) with Ruby. I will talk about the value of Ruby on-the-spot of IoT,
|
29
|
+
and about the way how a very ordinary Rubyist got to be able to handle microcontroller.
|
30
|
+
email:
|
31
|
+
- hasumikin@gmail.com
|
32
|
+
executables: []
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- ".rabbit"
|
37
|
+
- Making-IoT-device-with-Ruby.rab
|
38
|
+
- Making-IoT-device-with-Ruby.rab.pdf
|
39
|
+
- README.rd
|
40
|
+
- Rakefile
|
41
|
+
- castle.jpg
|
42
|
+
- chad.jpg
|
43
|
+
- collage02.jpg
|
44
|
+
- config.yaml
|
45
|
+
- device04.jpg
|
46
|
+
- hasumi.jpg
|
47
|
+
- juji-asahi.jpg
|
48
|
+
- kamosu.png
|
49
|
+
- kishima-san.png
|
50
|
+
- logo_10th@2x.png
|
51
|
+
- mark.png
|
52
|
+
- monstar-lab_shimane.jpg
|
53
|
+
- mrubycKaigi.jpg
|
54
|
+
- nigouki.jpg
|
55
|
+
- pdf/making-iot-device-with-ruby-making-iot-device-with-ruby.pdf
|
56
|
+
- poland.gif
|
57
|
+
- psoc5lp_chip.jpg
|
58
|
+
- raspberrypi.jpg
|
59
|
+
- shinjiko.jpg
|
60
|
+
- theme.rb
|
61
|
+
- tranquilo.jpg
|
62
|
+
- unsoldered-2.png
|
63
|
+
- 松江城_Matsue.rb.jpg
|
64
|
+
homepage: http://slide.rabbit-shocker.org/authors/hasumikin/making-iot-device-with-ruby/
|
65
|
+
licenses: []
|
66
|
+
metadata: {}
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options: []
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
requirements: []
|
82
|
+
rubyforge_project:
|
83
|
+
rubygems_version: 2.7.6
|
84
|
+
signing_key:
|
85
|
+
specification_version: 4
|
86
|
+
summary: Making IoT device with Ruby
|
87
|
+
test_files: []
|