rabbit-slide-hasumikin-making-iot-device-with-ruby 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 +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: []
|