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
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
930
ScalaKitchen
pishen
1
480
sbt-emr-spark
pishen
1
170
SBT Basic Concepts
pishen
1
670
annoy4s
pishen
0
110
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
The Cost Of JavaScript in 2023
addyosmani
55
10k
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 個小東西就可以拿來當作 搭訕的好藉口。 • 我們需要更多面向初心者的活動/教材?
末尾再帰!