일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- coursera
- Slick
- statestore
- play framework
- gradle
- Elk
- scala
- confluent
- Kafka
- aws
- kafka interactive query
- springboot
- 카프카
- enablekafkastreams
- Elasticsearch
- avo
- RabbitMQ
- reactive
- kafkastream
- kafkastreams
- scala 2.10
- spring-batch
- schema registry
- spring-cloud-stream
- spring-kafka
- 플레이 프레임워크
- kafka streams
- Spring
- 한빛미디어
- Logstash
- Today
- Total
목록language/scala (15)
b
다른 JVM 언어처럼 Scala 역시 컴파일시점에 type 정보를 잃어버린다.SCALA는 JVM의 type erasure issue 를 TypeTag(이전에는 Manifest)로 해결 할 수 있다// TODO undeprecated until Scala reflection becomes non-experimental // @deprecated("Use `scala.reflect.ClassTag` (to capture erasures) or scala.reflect.runtime.universe.TypeTag (to capture types) or both instead", "2.10.0") type Manifest[T] = scala.reflect.Manifest[T]scala> def evenElems..
하나 이상의 타입인자가 있는 클래스는 ‘제네릭 클래스’이고 타입인자를 실제 타입으로 대체하면 일반 클래스이다.1234class Pair[T,S](val first:T, val second:S) //제네릭 클래스 val p1 = new Pair(42, "String") //추론에 의해서 일반 클래스val p2 = new Pair[Int, String](42, "String") //명시적 선언에 의해서 일반 클래스 함수, 메소드도 타입인자를 가질 수 있다.12345def getMiddle[T](a: Array[T]) = a(a.length) / 2 ex)getMiddle(Array("Mary", "had")) //추론의 의해서 getMiddle 호출val f = getMiddle[String] _ //타입인..
spary 팀이 akka-http 에 합류하더라도, spary는 계속 진행될 거다 라는 내용은.. 아마 https://github.com/sirthias의 글에서 본 걸로 기억이 난다. 당시만 해도 akka-http가 시작되는 정도였지만 spary는 거의 중단된채 akka쪽에 힘쓰는걸 보니, 말과는 다르게 접히겠구나 생각되었다. 오늘 갑자기 생각나서 들어가보니 PR 와 documentation 와는 다르게 Superseded by Akka HTTP 라는 내용으로 README.md가 대체되었다. 그리고 sparu 1.3.3 과 함께 고민을 하게 하면 akka-http는 experimental 에서 2.5.0 까지 나왔인줄 알았는데 현재 10.0.5 -_-;akka에서 분리되어 독립 project가 생겼고,..
p83~1. 엄격성과 비엄격성 - 엄격성 (strictness)- 비엄검성 (non-strictness; laziness) : 함수의 한 속성으로, 함수가 엄격하지 않다는 것은 하나 이상의 인수들을 '평가하지 않을 수도'있다는 뜻이다. 대부분의 프로그래밍 언어에서는 엄격한 함수가 기본이다. 스칼라로 기본 정의는 엄격한 함수이다. 하지만 그 개념 자체는 익숙하다. 부울 함수의 &&, ||의 단축 평가는 '엄격하지 않다' 첫 조건이 true이어야만 두 번째 조건을 검사한다.스칼라의 if 역시 '비엄격성 함수'로 생각할 수 있다(단 매개변수 자체에 대해서는 엄격하다). 여튼 스칼라는 인수들 중 일부가 평가되지 않아도 호출이 성립하는 비엄격함수를 작성 할 수 있다. 2. 스칼라의 비엄격성 함수 작성 def if..
스칼라의 package object는 어떤 모습을 하고 있을까? package com { package sub { class klazz { val name = pubValue } } package object sub { val pubValue = "A" private val priValue = "B" def pubMethod() = "C" }} 1. com/sub 폴더 내에는 다음과 같은 파일들이 생성된다.- klazz.class- package$.class- package.class 2. package, package$$ javap -p packagepublic final class com.sub.package { public static java.lang.String pubMethod(); publi..
lazy val x = 솰라솰라... 단순히 늦은/지연 연산일 줄만 알았다... testclass lazyval { lazy val x = 5 }를 scalac로 컴파일하고 다시 디컴파일 해서 내용을 보면public class lazyval{ private int x$lzycompute() { synchronized(this) { if(!bitmap$0) { x = 5; bitmap$0 = true; } BoxedUnit _tmp = BoxedUnit.UNIT; } return x; } public int x() { return bitmap$0 ? x : x$lzycompute(); } public lazyval() { } private int x; private volatile boolean bitma..
scala 기반에 프레임웍으로는 제일 유명한게 Play Framework.... 나름 몇일몇주를 번역해가며 스터디 한 놈이지만... 선택받지는 못했다. 그 외에도 scalatra나, finatra도 있지만 지금 API Platform을 구성하는데는 spray 1.3.1 을 사용중... 얘도 actor 기반이고, 간결하다. 테스트와 성능이슈를 위해서 Route를 다시 한번 Route로 묶음으로서 원하는 요구사항은 몇줄만에 해결 val mockRoute = pathPrefix("mock") { parameter('delay.as[Int] ){ delay => { Thread.sleep(delay) logger.warn("delay {} millisecond" , delay.toString) apiRoute ..
1. Enum 타입의 사용scala.Enumeration을 상속한다.object REQUEST_METHOD_TYPE extends Enumeration { type REQUEST_METHOD_TYPE = Value val GET, POST = Value } 2. Slick의 선언implicit val MethodMapper = MappedColumnType.base[REQUEST_METHOD_TYPE,String] ( s=>s.toString, s=>REQUEST_METHOD_TYPE.withName(s)) def method = column[REQUEST_METHOD_TYPE]("method", O.NotNull, O.Default(REQUEST_METHOD_TYPE.GET), O.DBType("VAR..