일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Play2
- 안드로이드 웹뷰
- 그라파나
- 스칼라 강좌
- Akka
- 파이썬 머신러닝
- Play2 로 웹 개발
- 스위프트
- 하이퍼레저 패브릭
- 엔터프라이즈 블록체인
- 하이브리드앱
- 플레이프레임워크
- play2 강좌
- play 강좌
- 블록체인
- 파이썬 강좌
- 이더리움
- akka 강좌
- 파이썬
- 파이썬 동시성
- Adapter 패턴
- 스칼라 동시성
- 파이썬 데이터분석
- Hyperledger fabric gossip protocol
- 스칼라
- Actor
- hyperledger fabric
- Golang
- 주키퍼
- CORDA
- Today
- Total
목록Scala (51)
HAMA 블로그
Try 값이 util.Try 클렉션은 에러 처리를 컬렉션 관리로 바꾸어 놓는다. 이 클렉션은 주어진 함수 매개변수에서 발생한 에러를 잡아내는 메커니즘을 제공하여 함수가 성공적으로 실행된 경우에는 함수의 결과값을 그렇지 않은 경우에는 에러를 반환한다.추가 설명은 아래 링크를 참고하세요. http://blog.seulgi.kim/2015/07/monad-try.html Try 를 이용한 에러 처리 메소드 이름 예제 설명 flatMap nextError flatMap { _ => nextError } Success인 경우 util.Try를 반환하는 함수를 호출함으로써 현재의 반환값을 새로운 내장된 반환값(또는 예외에 매핀함, 우리의 'nextError' 데모함수는 입력값을 취하지 않기 때문에 우리는 현재 Su..
Promise이전 블로그글에서 Future 에 대해서 먼저 읽고 오자. (안읽으셨다면..) 스칼라의 Promise 는 Future 의 일반화라고 볼 수 있다. (스칼라의 Promise 다. 다른 언어 라이브러리들이 모두 Future, Promise 등에 대한 정의/구현이 조금씩 다를 수 있다. 요즘 처럼 동시성 이슈가 많은 시절에는 원할한 의사 소통을 위해 구분 지어야 할 것이다) 따라서 Future 에 대해서 학습했다면 쉽게 이해 가능하다. (여기서 일반화라는 말이 너무추상적이라 헤깔릴수 있을 텐데 좀 참아보자.)Future 에서는 보통 위임 행동이 강결합 되있었다. 즉 future.( 행동 ) 하지만 Promise 는 Promise 만 먼저 선언해두고 나중에 success 를 호출해서 완료된것을 알려..
* 이 글은 일단 발행은 하는데 오류가 있을 가능성도 있으며 수정&발전 될 것입니다. 동시성을 위한 스칼라 Observable 스칼라의 Observable 을 배우기 전에 여러가지 것들에 대해서 편하게 읽어보자. Play 의 Iteratee & Enumerator Play 에서 Iteratee / Enumerator / Enumeratee을 간단하게 말하면 :이름설명Iteratee [E, A] Iteratee [E, A]는 함수형 프로그래밍에서 iteration 컨셉의 일반화. E 입력,A 출력 (소비자역할)Enumerator [E]컬렉션을 일반화 한 것으로 형태 E를 열거한다. 무한 열거 (Streaming) 할 수도있다. (생산자역할)Enumeratee [E, A]거의 사용하지 않기 때문에 지금은 생..
동시성을 위한 스칼라 Collections 스칼라도 자바5에서 등장한 자바동시성 도구들 처럼 (을 사용한) 쓰레드 안전한 콜렉션들이 있다. 대표적으로 ConcurrentHashMap. LinkedBlockingQueue 등...concurrent.TrieMap 같이 스칼라 전용으로 추가된 것들도 있다. 대략적인 것은 안다고 가정하고 스칼라 코드를 살펴보자.* 이런 컬렉션들은 여러 쓰레드들에 의해 공유된다. 공유되지 않는 방법으로 동시성을 처리하는 경우도 있는데 이런 경우 공유 되지 않기 때문에 락을 걸 필요가 없어진다. (액터 등) 코드로 말해요.LinkedBlockingQueueobject CollectionsIterators extends App { import java.util.concurrent...
ExecutorContext 스칼라도 JVM 상에 돌아가는 언어 (네이티브 스칼라도 개발중이긴 하다.)라 자바의 라이브러리를 사용 할 수 도 있으며 자신의 라이브러리가 있다면 주로 그것을 사용하는 편 이다.쓰레드 생성 관련해서도 자바에 있는 Executor 와 ExecutorService 를 사용할수도 있겠지만 스칼라에서는 기능이 보강된 자신만의 것도 있다. 이름하여 ExecutorContext!!이번 포스트에서는 ExecutorContext 등 스칼라의 저레벨 (쓰레드를 직접 사용하는것은 원시레벨) 동시성 도구들에 대해 알아보자. 먼저 자바의 경우 Executor 는 그냥 Runnable 타입을 내부 쓰레드풀을 이용해서 실행시켜주는거다.기본 Executor구현으로는 ThreadPoolExecutor (..
{} 는 어디서 사용되는가? 이름 있는 함수 def timesTwo(i: Int): Int = { println("hello world") i * 2 }이름 없는 함수 : {} 를 통해 묶었다. scala> { i: Int => println("hello world") i * 2 }이렇게 스칼라 코드를 읽을때 개인적으로 자바와 가장 큰 차이점 중 하나는 시도 때도 없이 나타나는 {} 이다. def tweets = WebSocket.acceptWithActor[String, JsValue]{ request => out => TwitterStreamer.props(out) }예를들어 여기서 { } 는 뭘까? object Test { type HandlerProps = String => String def a..
lambda스칼라에서의 lambda 식은 다음과 같다. ( x : Int ) => Int 이것은 Int 형을 받아서 String 을 리턴하는 함수에 대한 람다식이다. object lambdaTest extends App { def test = (x:Int) => x + 1 log (test(3).toString()) }위의 test 메소드는 다음과 같다.def test (x: Int):Int = { x + 1 } 다음 코드를 살펴보자. 함수의 매개변수로 람다식이 사용되었다. object lambdaTest extends App { def test (f: Int => String) { log(f(3)) } def logging (x: Int ):String = { x.toString() } test(log..
1. Future 2. Promise 3. Awiat 4. async 5. Observable 6. 병렬 Future 스칼라에서의 Future 는 꽤 다양한 방식으로 사용 할 수있는데 먼저 스칼라에서의 Future 모양을 살펴보자.trait Future[T] : 퓨쳐값을 나타낸다. T 타입의 실제 우리가 리턴받기 원하는 객체를 포함한다. def apply[T](b: =>T) (implicit e: ExecutionContext) : Future[T] : 퓨처 계산을 나타낸다. 실제 계산을 수행하는 함수를 매개변수로 넣어주고 있다.: 암시적으로 ExecutionContext 가 매개변수로 들어간다. 즉 쓰레드풀을 넣어주는것. 퓨쳐값 과 퓨쳐계산을 잘 구분해서 기억해두자.1) 퓨쳐 실행 object Futu..
스칼라에서의 가변인자 1. 간단 예제 object test { def func[T](xs:T*) = xs.foreach(x => println(x)) def main(arg : Array[String]): Unit ={ func(0,1,2) } }(xs : T*) 처럼 타입뒤에 * 를 붙혀주면 됩니다. 2. 컬렉션은 _* 를 붙여줍니다.object test { def sum(xs:Int*):Int = if (xs.isEmpty) 0 else xs.head + sum(xs.tail:_*) def main(arg : Array[String]): Unit ={ println(sum(0,1,2,3)) // OK ! val ns = List(1, 3, 5) println(sum(ns:_*)) // OK! prin..
타입 기초 https://twitter.github.io/scala_school/ko/type-basics.html 타입별칭(Type alias)https://alvinalexander.com/scala/scala-type-aliases-syntax-examples 추상 타입 http://docs.scala-lang.org/ko/tutorials/tour/abstract-types.html 매개변수된 타입 (제너릭)http://docs.scala-lang.org/ko/tutorials/tour/generic-classes.html 상위 타입 경계http://docs.scala-lang.org/ko/tutorials/tour/upper-type-bounds 하위 타입 경계http://docs.scala-l..