일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nginx
- Angular2
- 스프링 배치
- SBT
- scala
- Spring Boot
- spark
- 도메인주도설계
- Clean Code
- hibernate
- Domain Driven Design
- elastic search
- Spring XD
- hdfs
- 엘라스틱서치
- Hbase
- hadoop
- design pattern
- Linux
- Spring
- Gradle
- elasticsearch
- Java
- apache storm
- intellij
- docker
- DDD
- Storm
- Spring Batch
- 제주
- Today
- Total
목록분류 전체보기 (236)
욱'S 노트
트래잇은 자바에서의 인터페이스와 유사하다. 트래잇은 지원해야하는 메소드 시그니처를 명시한다. 자바 8에서처럼 스칼라는 부분적인 구현을 지원한다. 몇몇의 메소드의 기본 구현을 제공할 수 있다는 것을 의미한다. 클래스와는 반대로 생성자 파라미터를 가질 수 없다.trait Similarity { def isSimilar(x : Any) : Boolean def isNotSimilar(x : Any) : Boolean = !isSimilar(x) }두개의 메소드를 가지고 있다. isSimilar는 구현을 제공하지 않고 있지만 isNotSimilar는 구현을 제공한다. 결과적으로 이 트래잇과 결합하는 클래스는 isSimilar에 대한 구현만 하면 된다. 트래잇은 일반적으로 mixin 클래스 컴포지션으로 클래스와 ..
클래스는 객체를 생성하기 위한 정적인 템플릿이다.class Point (var x : Int, var y : Int) { def move(dx : Int, dy : Int): Unit = { x = x + dx y = y + dy } override def toString : String = "(" + x + "," + y + ")" } 스칼라에서 클래스는 생성자 인자로 파라미터를 전달할 수 있다. 위 코드는 두개의 인자를 가진 생성자를 정의를 하고 있다. x 와 y는 클래스의 어디서든 접근을 할 수 있다.클래스는 또란 두개의 메소드를 포함하고 있는데 move 와 toString이다. move는 두개의 정수를 전달받아 x와 y값을 변경하고 리턴은 없다. 여기서 Unit이라는 키워드가 보이는데 자바와 같은..
스칼라에서는 모든 타입이 객체이다. 스칼라에서는 클래스 기반으로 타입정의를 하기 때문에 모든 값은 클래스의 객체이다.스칼라의 모든 클래스는 scala.Any의 서브클래스이다. 그리고 scala.Any를 직접적으로 상속받는 두 개의 클래스가 있는데, scala.AnyVal과 scala.AnyRef이다. 이름에서 연상되듯이 value 클래스와 reference 클래스이다. 모든 value 클래스들은 기정의되어 있으며 자바와 같은 언어의 프리미티브 타입과 유사하다. 나머지 모든 클래스는 reference 타입으로 정의된다. 만약 우리가 클래스를 정의한다면 기본적으로 레퍼런스 타입이며 scala.AnyRef의 서브 클래스가 된다. 모든 유저가 정의하는 클래스는 암묵적으로 scala.ScalaObject를 상속한..
스칼라는 현재적인 멀티-패러다임 프로그래밍 랭귀지이다. 정교하고 우아하며 타입-세이프한 일반적인 프로그래밍 패턴으로 표현한다. 스칼라는 객체지향언어다.스칼라는 순수한 객체지향 언어이며 이 의미는 모든 값은 객체라는 것이다. 타입과 객체의 행위는 클래스와 트래잇으로 표현된다. 클래스는 서브클래스에 의해 확장될 수 있고 다중 상속을 깔끔하게 대체하는 유연한 믹스인-기반 컴포지션 메커니즘을 지원한다. 스칼라는 함수형언어다.스칼라는 또한 함수형 언어다. 이 의미는 모든 함수는 값이라는 것을 의미한다. 스칼라는 익명 함수를 정의하기 위한 가벼운 문법을 제공한다. 하이오더 함수를 지원하며 함수의 중첩 및 커링을 지원한다. 스칼라의 케이스 클래스들과 많은 함수형 언어에서 사용중인 패턴 매칭 모델 대수학 타입을 빌트인..
유저가 링크를 클릭하거나 버튼을 눌렀을때 혹은 텍스트를 입력했을때, 우리는 그것에 대해 알고 싶을때가 있다. 이러한 유저 액션은 DOM 이벤트로서 일어난다. 이번 챕터에서는 Angular 이벤트 바인딩 문법을 활용해 이러한 이벤트를 처리하는 방법에 대해서 알아보자. 유저 입력 이벤트 바인딩우리는 DOM 이벤트에 응답하는 Angular 이벤트 바인딩을 사용할 수 있다.문법은 간단하다. DOM 이벤트명을 괄호로 둘러싸고 템플릿 문장으로 할당하면 된다. 다음 예는 click hander를 구현하기 위해 이벤트 바인딩을 한 예이다.Click me! (click)은 바인딩의 타겟을 의미한다. 따옴표안의 문자는 오른편은 컴포넌트 이벤트의 응답으로 컴포넌트 메소드 onClickMe를 할당했다는 것을 의미한다. 바인딩..
우리는 Angular 컴포넌트의 프로퍼티들을 HTML template에 표현하기 데이터를 바인딩할 수 있다. 이 예제를 따라하기 위해서는 먼저 quick-start를 설치해야 한다. angular 공식 사이트를 방문하여 quick-start를 먼저 설치하기를 바란다. 히어로 리스트들을 출력하는 페이지를 만들어 볼 것이다. 최종 UI는 다음과 같다. 보여지는 컴포넌트에 프로퍼티 삽입하기컴포넌트 프로퍼티를 출력하기 위한 가장 쉬운 방법은 삽입을 이용해서 프로퍼티 이름을 주입하는 방법이다. 삽입을 위해 view 템플릿에 프로퍼티 이름을 명시하자. {{myHero}}app.component.ts 파일을 아래와 같이 변경해보자.import { Component } from '@angular/core';@Compo..
Angular는 HTML과 JavaScript나 JavaScript로 컴파일될 수 있는 다른 언어(Dart or TypeScript)로된 클라이언트 어플리케이션을 생성하기 위한 프레임워크이다. 프레임워크는 몇몇의 라이브러리로 구성되는데, 코어와 몇몇의 옵션 라이브러리들이다.당신은 Angularized 마크업으로 HTML 템플릿을 구성하고 그러한 템플릿을 관리하기 위해 컴포넌트 클래스를 작성하고 서비스의 어플리케이션 로직을 추가하고 모듈내의 서비스와 컴포넌트를 boxing한다.그렇게하면 루트 모듈이 기동되어 당신의 어플리케이션이 기동된다. Angular는 당신의 어플리케이션 컨텐츠를 브라우저에 표시하고 당신이 제공한 지시에 따라 사용자 상호작용에 응답한다.물론 이것보다 더 많은 것들이 있다. 자세한 내용은..
HAProxy는 TCP와 HTTP 기반 어플리케이션이 여러대의 서버에 배포되어있을 경우 고가용성 로드 밸런서와 프록시 서버를 제공하는 무료, 오픈소스 소프트웨어이다. C로 작성되었으며 빠르고 효율적이라는 평을 받고 있다. HAProxy는 GitHub. BitBucke, Stack Overflow, Tumblr, Twitter 그리고 아마존 웹서비스의 OpsWork 제품에서 사용되고 있다. 출처 : 위키피디아
빌더 패턴은 소프트웨어 디자인 패턴이다. 오브젝트를 구성하는 추상화 스텝에 의도를 둔다. 다른 오브젝트를 생성하기 위해 추상화된 스텝의 다른 구현들을 활용한다. Builder Pattern vs Factory method pattern 우리는 빌더 패턴과 팩토리 메소드 패턴을 사용하기 위한 결정을 할 때 항상 의문점을 가지게 된다. . 팩토리는 단순히 생성자와 관련된 랩퍼 함수이다. 팩토리 매서드 패턴에서는 전체 오브젝트를 위한 한번의 함수 호출이 요구된다. 하나의 라인에 모든 파라미터들이 전달되어야 하며 최종 오브젝트가 리턴될 것이다. 실제 생활에서 예를 찾아보면 레스토랑의 오늘의 식사와 같다. 식사의 생성은 팩토리 패턴이다. 때문에 우리는 주문할때 오늘의 식사를 달라고 하고 이러한 오브젝트는 비밀의 ..
몇개월전 springframework.org에서는 어떠한 기능들을 사용하고 어떻게 해당 기능들을 사용하는지 설문조사를 하고 피드백을 받았다. 첫번째 질문은 required 디펜던시를 체크하는 것이고 어떠한 메커니즘을 활용하는 것이었다. 그런 다음 트랜잭션 관리 전략에 대해서도 물었다. 첫번째 설문에 대해선 @Required 어노테이션을 사용한다는 답변이 가장 많았고 두번째 설문에서는 @Transactional 어노테이션을 사용한다는 답변이 가장 많았다. 아래는 첫번째 설문에 대한 응답 결과이다. 두번째 설문의 경우 약 30% 응답자가 Transactional 어노테이션을 사용한다고 하였다. Required 디펜던시를 체크하는 방법 8%비즈니스 로직에서 체크한다.9% init-method를 사용하고 ass..