Scala High Performance Programming 책은 scala로 주식 트레이드 시스템을 개발한 한 저자가 쓴 책이다.


책은 괜찮았고 작년에 번역은 완료했다. 


자바 개발자가 스칼라를 공부할 때 함께 보면 좋을 것 같다. 스칼라 필독서 중 하나라 생각한다. 



언제 번역본이 나올라나..



https://www.amazon.com/Scala-Performance-Programming-Vincent-Theron/dp/178646604X







Posted by '김용환'
,



Devops 조직에는 주번이라는 제도가 있는데, 영어로 oncall이다. 


이런 주번 시스템을 링크드인에서 사용하고 있는데, 이를 오픈소스로 선보였다.




https://engineering.linkedin.com/blog/2017/06/open-sourcing-iris-and-oncall


https://oncall.tools/



Posted by '김용환'
,



scala에서 Stream은 lazy하게 계산되는 리스트이다. 


Stream에서 concat을 하려면 :: 이 아니라 #::을 사용한다. 



scala> val stream = 1 #:: 2 #:: 3 #:: Stream.empty

stream: scala.collection.immutable.Stream[Int] = Stream(1, ?)



실행 예제이다.


scala> def fibFrom(a: Int, b: Int): Stream[Int]  = a #:: fibFrom(b, a + b)

fibFrom: (a: Int, b: Int)Stream[Int]



여기서 엄청 큰 수를 넣어도 Stream(1, ?로 나타난다. 


scala> val fibs = fibFrom(1, 1).take(3)

fibs: scala.collection.immutable.Stream[Int] = Stream(1, ?)


scala> fibs.toList

res0: List[Int] = List(1, 1, 2)



또 다른 예제이다.'

scala> def from(n: Int): Stream[Int] = n #:: from(n+1)

from: (n: Int)Stream[Int]


scala>  val nats = from(0)

nats: Stream[Int] = Stream(0, ?)


scala>     val m4s = nats map (_ * 4)

m4s: scala.collection.immutable.Stream[Int] = Stream(0, ?)





실제 m4s에 매개 변수가 길더라도 lazy라서 아직 계산되지 않았다.


scala> m4s take 10000000

res2: scala.collection.immutable.Stream[Int] = Stream(0, ?)



실제 수행되는 시점에 toList를 호출한다.


scala> (m4s take 10000000).toList.drop(3)




Posted by '김용환'
,