Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
My Personal Report of Scala Kansai 2016
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
180
都什麼時代了,你還在寫 while loop 嗎?
pishen
2
760
Pishen's Emacs Journey
pishen
0
160
Scala + Google Dataflow = Serverless Spark
pishen
6
880
Shapeless Introduction
pishen
2
930
ScalaKitchen
pishen
1
480
sbt-emr-spark
pishen
1
170
SBT Basic Concepts
pishen
1
680
annoy4s
pishen
0
120
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
240
A Tale of Four Properties
chriscoyier
163
24k
Visualization
eitanlees
152
17k
Ethics towards AI in product and experience design
skipperchong
2
350
Building Flexible Design Systems
yeseniaperezcruz
330
40k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
500
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
A designer walks into a library…
pauljervisheath
211
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Typedesign – Prime Four
hannesfritz
42
3.1k
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 個小東西就可以拿來當作 搭訕的好藉口。 • 我們需要更多面向初心者的活動/教材?
末尾再帰!