scala bot for small business
TRANSCRIPT
![Page 1: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/1.jpg)
Scala Bot for Small Businessyllan @ ScalaConf.jpMarch 2, 2013
![Page 2: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/2.jpg)
Who Am I?
藍永倫 @yllan
Working at Hypo (http://hypo.cc)
Scala 下忍(⾃自称)しもおし
![Page 3: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/3.jpg)
Why am I here?初心者
![Page 4: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/4.jpg)
Scala:Scalable Language
![Page 5: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/5.jpg)
Scala:Scalable Language
拡大縮小が可能なさま。拡張性があるさま。Able to be changed in size or scale.
![Page 6: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/6.jpg)
scale-UP & scale-OUT
![Page 7: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/7.jpg)
scale-down & scale-in?
![Page 8: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/8.jpg)
Scala is good at BIG.
![Page 9: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/9.jpg)
大 > 小BIG > small
![Page 10: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/10.jpg)
Scala is good at small?
![Page 11: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/11.jpg)
RUBY SCALA
![Page 12: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/12.jpg)
![Page 13: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/13.jpg)
A lot of small business!
![Page 14: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/14.jpg)
![Page 15: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/15.jpg)
Right Toolfor
Automation
![Page 16: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/16.jpg)
Scala for script? Hmm…
![Page 17: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/17.jpg)
Cons for scala scripting
![Page 18: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/18.jpg)
Cons for scala scripting
Slow compile
![Page 19: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/19.jpg)
Cons for scala scripting
Slow compile
scala -savecompiled script.scala
![Page 20: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/20.jpg)
Cons for scala scripting
Slow compile
scala -savecompiled script.scala
Hard to memorize classpath
![Page 21: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/21.jpg)
Cons for scala scripting
Slow compile
scala -savecompiled script.scala
Hard to memorize classpath
JVM boot overhead
![Page 22: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/22.jpg)
Cons for scala scripting
Slow compile
scala -savecompiled script.scala
Hard to memorize classpath
JVM boot overhead
nailgun? Hmmm
![Page 23: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/23.jpg)
Cons for scala scripting
Slow compile
scala -savecompiled script.scala
Hard to memorize classpath
JVM boot overhead
nailgun? Hmmm
Default I/O library
![Page 24: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/24.jpg)
Recommended lib
rapture.io (http://rapture.io)
File / "home" / "work" / "contents" > Socket("localhost", Services.Tcp.telnet)
dispatch (http://dispatch.databinder.net/)
val svc = url("http://hostip.info/country.php")val country = Http(svc OK as.String)
![Page 25: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/25.jpg)
TIPSScala REPL comes to rescue!:cp - add a jar/dir to classpath
:load - load a scala file
:shscala> :sh find . -name *.mres0: s.t.n.i.ProcessResult = `find . -name *.m` (23 lines, exit 0)scala> res0.exitCoderes1: Int = 0scala> res0.linesres2: List[String] = List(...)
import scala.sys.process._
![Page 26: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/26.jpg)
I ♡ scala REPL!
![Page 27: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/27.jpg)
For non-geek?
![Page 28: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/28.jpg)
![Page 29: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/29.jpg)
![Page 30: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/30.jpg)
![Page 31: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/31.jpg)
SHIT HAPPENS.
![Page 32: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/32.jpg)
DANGEROUS!
![Page 33: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/33.jpg)
Only permit trained people use the guns; or
Make your gun super safe.
Solutions
![Page 34: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/34.jpg)
Take our company as example…
![Page 35: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/35.jpg)
![Page 36: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/36.jpg)
“Make gun safe” strategy works?
![Page 37: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/37.jpg)
![Page 38: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/38.jpg)
![Page 39: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/39.jpg)
Too many system!
![Page 40: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/40.jpg)
Let the trained people do.
![Page 41: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/41.jpg)
COLLEAGUE MEIM RUN
SCRIPT
![Page 42: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/42.jpg)
COLLEAGUE BOTIM RUN
SCRIPT
![Page 43: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/43.jpg)
IM
XMPP
AIM
Google Talk
Facebook Messenger
Smack Library (http://www.igniterealtime.org/projects/smack/)
![Page 44: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/44.jpg)
Command Parsing
Regex + extractor
Every command is a PartialFunction
![Page 45: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/45.jpg)
![Page 46: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/46.jpg)
Happy!
![Page 47: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/47.jpg)
That’s my little story about scala.
![Page 48: Scala Bot for Small Business](https://reader036.vdocuments.site/reader036/viewer/2022062514/558fc46b1a28ab8d318b4622/html5/thumbnails/48.jpg)
Q & A