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
The Curious Case for Waylosing
cassininazir
1
460
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
RailsConf 2023
tenderlove
30
1.5k
How GitHub (no longer) Works
holman
316
150k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
490
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Product Roadmaps are Hard
iamctodd
55
12k
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 個小東西就可以拿來當作 搭訕的好藉口。 • 我們需要更多面向初心者的活動/教材?
末尾再帰!