본문 바로가기

Programming/Scala

scala 로 kafka topic, partition 정보 가져오는 방법 아래 링크에 코드가 정리 되어 있다. https://gist.github.com/starblood/c35a4f70345cbbb5ad20d74d9fbe3f21 더보기
Reactive Manifesto Reactive Programming 이 붐이다. 우리나라는 어떻게 진행되고 있는 지 몰라도 해외에서는 이 패러다임이 대세인 것이다. 특히 미국에서. 오늘은 그래서 이 프로그래밍 패러다임이 도대체 어떤 것을 표방하는 지 알아보도록 하자.일단 google 에서 "Reactive Manifesto" 라는 키워드로 검색을 해보면 아래 사이트가 메인으로 뜬다. http://www.reactivemanifesto.org 해당 사이트에 가보면 "The Reactive Manifesto" 라는 글귀가 보이면서 소개가 나온다.이 사이트에 소개된 글을 한국어로 번역해 보면 나도 도움이 될 거 같아서 번역을 해볼까 한다. (더 좋은 번역이 있거나 제안이 필요할 경우 댓글을 남겨주길 바란다.) 다양한 도메인에서 소트웨어 관.. 더보기
collection 에서 lazy 방식의 view 를 생성하는 방법 scala 에서는 java 와 마찬가지로 collection 을 생성함과 동시에 메모리에 모든 element 를 올릴 수 있는 방법을 제공한다. 아래의 코드는 바로 그 방법scala> 1 to 10res1: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 아래의 코드는 lazy 방식의 view 를 생성scala> (1 to 10).viewres2: scala.collection.SeqView[Int,scala.collection.immutable.IndexedSeq[Int]] = SeqView(...) 그러므로 Collection type 의 view method 를 호출하게 되면 eager 방식(실행과 동.. 더보기
Merging sequence of Futures of Lists into one Future containing merged list Scala 에서 Future list 를 하나의 Future 로 merge 하는 방법을 소개한다.아래 gist 코드를 보면 예제가 잘 나와있다. 아래와 같이 interpreter 에서 실행해보면 원하는 결과를 얻을 수 있음을 확인할 수 있다.원래는 List[Future[List[Int]]] 이었던 것이 Future[List[Int]] 로 되는 것이다. 간단하게 예를 들면, List(Future(List(1,2)), Future(List(3,4)), Future(List(5,6))) 이Future(List(1,2,3,4,5,6)) 으로 병합된다. 더보기
scala 공부 자료 Scala 언어를 공부 하려는 사람에게 도움이 될 거 같아서 공유 합니다. 예전 사내에서 세미나를 진행 했던 자료라서 내용이 자세하지 않을 수 있습니다. Scala study, tutorial materialsgit@github.com:starblood/scala_tutorial.gitScala 설정maven 설정 - https://github.com/starblood/scala-maven-archetype 추천 온라인 강의Functional Programming Principles in Scala - https://www.coursera.org/course/progfunPrinciples of Reactive Programming - https://www.coursera.org/course/reacti.. 더보기
Scala 병렬 계산을 위한 Blitz library Scala 로 병렬 프로그래밍을 하고자 할때, primitive 값들 위주의 parallel operation 을 진행하고자 한다면, scala blitz library 를 사용하는 것이 훨씬 빠르다. import scala.collection.par._ import scala.collection.par.Scheduler.Implicits.global object Blitz extends App { val array = (0 until 100000).toArray // JVM JIT optimization 을 고려하여 충분히 해당 expression 들을 수행한뒤(1000번) body 를 수행 val seqtime = warmedTimed(1000) { array.reduce(_ + _) } val pa.. 더보기
Scala Palallelizable Collection scala collection 에서 병렬화가 가능한 것들이 있는데, Array, ArrayBuffer, mutable HashMap, HashSet, Range, Vector 가 있다. 이 것들은 단순히 par 함수를 호출함으로서 parallel collection 으로 변환 가능한데, 각각의 element 들의 복사가 이루어지지 않아서 속도가 빠르다. val arr = Array(1,2,3) val parArr = arr.par 더보기
slick maven setting I have been working on developing Database CRUD application in Scala nowadays. As you know, writing CRUD application in Java or Scala is very tedious and needs a lot of boilerplate codes.So before knowing Slick, I have to implement all the DB connection and CRUD codes manually. But, I come to know there is a convenient component called 'Slick' which does such jobs. So I chose Slick for my DB app.. 더보기
scala download Scala 2.10.3 download http://www.scala-lang.org/download/2.10.3.html You can find scala compiler and libraries and documentation. 더보기
Coursera Functional Programming Principles in Scala certificate 없는 시간 쪼개어 가며 공부했던 성과를 얻었다.뿌듯하다. 내 자신이 자랑스럽다고 느껴진다. ^^ 다른 분들도 저와 같은 즐거움을 느껴 보시길~ 더보기