일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- aws
- spring-batch
- Elk
- schema registry
- spring-cloud-stream
- 한빛미디어
- kafka streams
- statestore
- 카프카
- kafkastream
- confluent
- kafkastreams
- avo
- reactive
- kafka interactive query
- RabbitMQ
- Elasticsearch
- Slick
- gradle
- scala
- Spring
- spring-kafka
- play framework
- scala 2.10
- springboot
- Logstash
- coursera
- 플레이 프레임워크
- enablekafkastreams
- Kafka
- Today
- Total
목록scala (11)
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] _ //타입인..
스칼라의 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..
원하는거 : 부끄럽지 않은 코드를 만들고 싶다. 중복을 줄이고싶다-_-;; 요구사항1. Oracle, Mysql 2개Datasource에 접근해야함 => local import 2. 테이블명이 각각 다름 -> class 생성자 3. CRUD의 중복을 줄이고 싶음 trait사용... 삽질한것.1. dirver.simple._를 분리해야 한다. 아니면 oracle, mysql의 ddl 코드가 제네레이션 될때 문제가 발생한다. (오라클용 insert가 mysql에서 사용될려는 등) 2. extends CRUD 부분. 좀 더 깔끔하게 할 방법이 없을까? tableName과 driver, TableQuery 3개를 DI해야하는데 좋은 방법이 떠오르지 않아서 implicit로 처리했다. 좀 더 좋은게 있을듯 한데?..
Cacoo : 업무진행시 시스템구조도나 다이어그램을 그릴 때 유용할 듯하다. 기존에 쓰던 애들보다 유료템플릿모델이나 협업시스템이 잘 되어 있다. 이제 이걸 메인으로 쓸듯 추가 : 소개글 Snap.svg : adobe에서 공개한 svg library이다. IE9이상의 modern browsers만을 대상으로 하고 있어서 실무에서는 raphael를 대신할 수 없을 것 같지만. 러닝커브가 없다시피해서 제약상황이나 프로토타이핑에서는 고려해볼만하다. Scala 2.11 : 1년여만에 마이너버전이 업데이트가 되었다. 나중에 보도록 하자 ㅋ * 읽을거리 jQuery Stops IE 6 and IE 7 Support in v1.13 : 1.1.12를 쓰던가, 5프로대의 점유율인 IE7를 무시하고 쓰면 될것 같다. (뭐..