글 작성 이유 Node JS는 최근에 공부하기 시작해서 현재 프로젝트 및 개인적인 개발시 사용하고 있음. 간단한 설정 및 빠른 개발이 가능하여 자주 사용함. 혼자 공부하였기 때문에 따로 정리해두지 않았었음. 회사에 같이 일하시는 분들에게 node js를 소개할 기회가 있었고 이를 계기로 겸사겸사 정리 하기로함. 정리 계획 자바스크립트 기초 문법 정리 es6기반 자바스크립트 문법 정리 서버, 클라이언트 정리 nodejs설정 방법 정리 nodejs를 이용한 간단한 웹앱 정리 기초적인 문법만을 다룰 예정.
개발 환경 Intelli J java 8 kotlin 1.2.71 mysql spring boot 2.1 spring data jpa gradle 설정 Intelli J 최신버전으로 유지해줘야 원활한 개발이 가능합니다. (사용 버전: 2019.1.3) Intelli J 코틀린 플러그인 설치 https://plugins.jetbrains.com/plugin/6954-kotlin/ Kotlin - Plugins | JetBrains The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. plugins.jetbrains.com 코틀린 프로젝트 생성 Intelli J → File → New Project → Spring I..
람다 표현 람다식은 항상 중괄호로 감싼다. 파라미터 -> 몸체 형식으로 선언한다. 인자는 형식 추론이 가능하면 생략 가능하다. 바로 실행시 run을 사용한다. fun main () { val f: () -> String = { "hello lambda" } println(f()) // hello lambda run { println("hello lambda") } // hello lambda } 람다 사용 규칙 함수의 맨마지막이 람다면 ()안에서 빼내어 사용 가능하다. 인자가 하나라면 람다식 내부에서 it키워드로 대체해서 사용가능하다. 인자가 하나이면서 인자 타입이 람다라면 ()를 생략 가능하다. fun calculator(a: Int, b: Int, f: (a: Int, b:Int) -> Int) = ..
함수 선언 fun키워드를 이용해 선언한다. fun printAll(list: List) { for (e in list) { println(e) } } 기본 인자 함수의 파라미터는 기본 인자를 가질수 있으며 생략시 기본인자를 가진다. (오버로딩을 줄일수 있음) fun join(list: List, join: String = "_"): String { return list.joinToString(join) } fun main() { println(join(listOf("park", "jin"))) // park_jin println(join(listOf("park", "jin"), "~")) // park~jin } 기본 인자를 갖는 메서드를 오버라이드 할때는 기본인자를 생략해 주어야만 한다. open cl..
프로퍼티 위임 클래스 위임과 비슷하게 프로퍼티의 값 설정(set)/가져오기(get)에서 위임을 사용할 수 있다. 읽기 전용(val)일 경우에는 getValue()만 읽기/쓰기(var)가 가능할 경우 getValue()/setValue()를 구현한다. by키워드를 이용하여 위임할 객체를 프로퍼티 뒤에 명시한다. import kotlin.reflect.KProperty class PropertyDelegate(var value: String) { operator fun getValue(thisRef: Any?, property: KProperty): String { println("${property.name} get value ${this.value}") return value } operator fun ..
상속의 문제점 상위 클래스와 하위 클래스의 결합도가 높아져 상위 클래스의 변화가 하위 클래스에 주는 영향을 예측하기 어렵다. 불필요한 상위 클래스의 메서드까지 구현해야 한다. 하위 클래스로 내려갈수록 기능이 더해져 파악하기 어렵다. final클래스의 경우 상속이 불가능하다. 상속의 대안 위임 특정 처리를 다른 객체에게 넘기는 것을 의미한다. 다른 객체는 클래스 내부(포함)에 가지고 있는다. 코틀린 에서는 by키워드로 클래스 위임을 만들 수 있다. interface Attackable { fun attack() } class Knife: Attackable { override fun attack() { println("attack with knife") } } class Gun: Attackable { o..