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
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
170
都什麼時代了,你還在寫 while loop 嗎?
pishen
2
750
Pishen's Emacs Journey
pishen
0
160
Scala + Google Dataflow = Serverless Spark
pishen
6
870
Shapeless Introduction
pishen
2
920
ScalaKitchen
pishen
1
480
sbt-emr-spark
pishen
1
170
SBT Basic Concepts
pishen
1
670
annoy4s
pishen
0
100
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
Unsuck your backbone
ammeep
672
58k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
320
Ethics towards AI in product and experience design
skipperchong
2
300
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
720
My Coaching Mixtape
mlcsv
0
140
WCS-LA-2024
lcolladotor
0
620
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
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 個小東西就可以拿來當作 搭訕的好藉口。 • 我們需要更多面向初心者的活動/教材?
末尾再帰!