Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
My Personal Report of Scala Kansai 2016
Search
Pishen Tsai
November 01, 2016
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
My Personal Report of Scala Kansai 2016
Pishen Tsai
November 01, 2016
More Decks by Pishen Tsai
See All by Pishen Tsai
Introduction to Minitime
pishen
1
210
都什麼時代了,你還在寫 while loop 嗎?
pishen
2
770
Pishen's Emacs Journey
pishen
0
160
Scala + Google Dataflow = Serverless Spark
pishen
6
890
Shapeless Introduction
pishen
2
940
ScalaKitchen
pishen
1
490
sbt-emr-spark
pishen
1
170
SBT Basic Concepts
pishen
1
680
annoy4s
pishen
0
120
Featured
See All Featured
A Soul's Torment
seathinner
8
3.7k
Automating Front-end Workflow
addyosmani
1369
210k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
550
Documentation Writing (for coders)
carmenintech
77
5.6k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Chasing Engaging Ingredients in Design
codingconduct
0
350
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Designing Experiences People Love
moore
143
24k
A designer walks into a library…
pauljervisheath
211
25k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
How to Ace a Technical Interview
jacobian
280
24k
Transcript
Pishen(屁軒) 的 Scala関西 之旅
None
None
10:00 18:30 4F,6F 本編 無料 +懇親会 4500円
None
None
None
The IT meetup platform for building connections.
Searched "Scala" gave out 360 events...
None
None
None
None
None
None
None
None
None
4Fイベントホール 6F 会議室AB 6F 会議室D (ハンズオン)
The セッションs 不是內容太難看不懂,就是日文太難聽不懂
• Scala入門/基礎的な文法 - 5場 • 開発環境・ビルドツール - 1場 • Webアプリケーションフレームワーク
- 2場 • 関数型プログラミング - 2場 • 業務への導入・活用事例 - 5場 • データサイエンス - 2場 • Scala.js - 0場 (去年有) • リアクティブシステム - 5場 • コンパイラ・JVM - 1場
#1 http://www.slideshare.net/TaisukeOe/real-world-android-akka
#1 麻植 泰輔 Taisuke Oe - BONX Inc. - ScalaMatsuri
總召 - 業餘 Scala 教師 - DL4J 成員
#1
#1
#1
#1
#1
#1
#1
#1
#1
#1
#1 • sbt-android • Macroid • Proguard • Jack &
Jill
#2
#2 竹添 直樹 Naoki Takezoe - BizReach - GitBucket -
ScalaWarrior - Scala逆引きレシピ
#2
#2
#2 https://github.com/scalawarrior/scalawarrior
#2
#2
#2
#2
#3
#4
#4 岡田 遥来 Haruki Okada - Opt Inc. - chronoscala
#4
#4
#4
#4
#4
#4
#4
#4 opt-tech/chronoscala A port of nscala_time to JSR-310 https://github.com/opt-tech/chronoscala
#4
ZonedDateTime.now() + 2.months ZonedDateTime.now() < ZonedDateTime.now() + 1.month ZonedDateTime.now() to
(ZonedDateTime.now() + 1.day) (ZonedDateTime.now() to (ZonedDateTime.now() + 1.second)).millis 2.hours + 45.minutes + 10.seconds // returns PT2H45M10S (2.hours + 45.minutes + 10.seconds).millis 2.months + 3.days // returns P2M3D LocalDate.now() to (LocalDate.now() + 7.days) by 2.days #4
#4
お昼休憩 (60分)
#5
#5 中村 学(がくぞ) @gakuzzzz - Tech to Value 株式会社 -
ScalaMatsuri 營運成員
#5
#5
#5
#5
#6
#6 前出 祐吾 & 杉本 貴史 - TIS 株式会社
#6
#6
#6
#6
#6
#6
#7
#7 Naoki Aoyama @aoiroaoino - Monocle's committer
#7 case class B(b: Int) case class A(a: Int, b:
B) val a1 = A(1, B(2)) val a2 = a1.copy(a = 10) val a3 = a1.copy(b = a1.b.copy(b = 20))
#7 a.copy( b = a.b.copy( c = a.b.c.copy( d =
a.b.c.d.copy( e = a.b.c.d.e.copy( f = 87 ) ) ) ) ) The copy method hell.
#7 Lens = getter + setter
#7 getter def get[S, A]: S => A
#7 setter def set[S, A]: S => A => S
class Lens[S, A]( getter: S => A, setter: S =>
A => S ) { def get(s: S) = getter(s) def set(s: S, a: A) = setter(s)(a) def modify(s: S, f: A => A) = set(s, f(get(s))) } #7
case class User(id: Int, name: String) val _id = new
Lens[User, Int]( _.id, user => newId => user.copy(id = newId) ) val u1 = User(100, "Pishen") val u2 = _id.set(u1, 101) #7
class Lens[S, A](getter: S => A, setter: S => A
=> S) { def get(s: S) = getter(s) def set(s: S, a: A) = setter(s)(a) def modify(s: S, f: A => A) = set(s, f(get(s))) def ^|->[B](other: Lens[A, B]): Lens[S, B] = new Lens( s => other.get(this.get(s)), s => b => this.set(s, other.set(this.get(s), b)) ) } #7
#7 case class Msg(user: User, body: String) val msg =
Msg(User(100,"Pishen"), "Hi") msg.copy( user = msg.user.copy( id = 101 ) ) (_user ^|-> _id).set(msg, 101)
#7 What if getter return an Option? => Prism
#7 https://github.com/julien-truffaut/Monocle
#8
#8
#8
#8
Sessions が終わった
None
懇親会だ!!
None
None
None
None
None
心得: • 隨便 commit 個小東西就可以拿來當作 搭訕的好藉口。 • 我們需要更多面向初心者的活動/教材?
末尾再帰!