일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공짜블로그
- hugo 로 블로그
- Test
- 개인블로그 hugo
- Convariance
- JPA
- standard input
- Mutation testing
- resizer 구현
- change refresh rate
- resize image with go
- 객체지향
- standard output
- 코틀린 in
- IntelliJ
- Pitest
- 돌연변이 테스팅
- image resizer with go
- 코틀린 out
- output stream
- 자바
- 의존성역전원칙
- ruby
- Java
- kotlin
- 코틀린
- 코틀린 노트북
- InnoDB
- cli 만들기
- MySQL
- Today
- Total
목록Kotlin (48)
Rlog
이 예제는 코틀린 쿡북을 읽고 정리한 내용입니다. 아래와 같은 클래스가 하나 존재한다고 해보자. class Person( val first: String, val middle: String?, val last: String, ) 코틀린에는 Nullable(null 을 허용) 이라는 개념이 존재한다. 왜 이런 개념이 필요하지? 라는 의문을 가질 수 있는 사람이 분명 있을 것이기에 간단하게 짚고 넘어가려고 한다. Nullable 을 도입하는 이유는 Null 로 부터 더 안전해지기 위해서이다. 예를 들어 A 라는 변수에 Null 이 대입될 수 있다고 해보자. 자바같은 경우에는 A 라는 변수에 Null 이 들어갈 수 있다는 것을 런타임에 되서야 알 수 있을 것이다. 그렇게 되면 우리는 NullPointerExc..
Kotlin 은 Lombok 을 적용하기 힘든 구조였어서 아래와 같이 Logger 코드를 계속 반복해서 적용해야 하는 문제점이 있습니다. (최신 버전에서는 Lombok 이 된다고 하나.. 아직 Stable 하다는 소문은 못들어서 사용은 안하고 있긴 합니다.) 왜 안되는지 궁금하시다면 Kotlin 의 컴파일 순서 및 과정을 확인하시면 됩니다. 자바에서는 아래와 같이 Logger 코드를 작성하지 않고도 롬복을 이용해 Logger 를 사용할 수 있었습니다. 이것또한 바이트 코드를 보게 되면 롬복이 자동으로 생성해주는데요. 따라서 코틀린에서도 어차피 계속 작성된다면 간편하게 할 수 있는 방법을 찾아야 했습니다. 그래서 Intellij 의 라이브 템플릿을 이용하기로 했습니다. 사내에서도 라이브 템플릿을 이용하는 ..
맥 CLI 에서 코틀린을 사용하기 위해서 방법을 찾아보고 있었다. 일단 brew 를 통해 쉽게 설치 가능하다. brew install kotlin 위와 같이 입력하면 정상적으로 설치가 된다. 이렇게 설치되는 코틀린 SDK 는 코틀린 컴파일러 kolinc-jvm 과 코틀린 실행명령어 kotlin 이 포함되어 있다. 기존 javac 와 java 와 맵핑되는 느낌이다. 백문이 불여일타라고 한번 코드로 작성한뒤 컴파일과 실행을 해보자. fun main() { println("Hello World"); } 이제 한번 kotlinc-jvm 을 통해서 컴파일 시켜보자. kotlinc-jvm hello.kt 아래와 같이 잘 컴파일되어 Class 파일로 존재하는 것을 알 수 있다. 한번 Class 파일로 확인해보자. 아..
우리가 Java 로 프로그래밍을 하다보면 Null Pointer Exception 을 마주치고는 한다. NullPointerException 은 정말 위험한 Runtime 에러이다. 그래서 요즘 최신 언어들은 컴파일 타임에 Null 에 대한 처리를 관리하려고 하는데 코틀린 또한 그렇다. 어떻게 코틀린에서는 Null 처리를 컴파일에 강요한다는 것일까? 한번 알아보자. Null 이 될 수 있는 타입 코틀린과 자바의 차이는 Null 이 될수 있는 타입을 명시적으로 지원한다는 것이다. 이 얘기가 무엇이냐면 프로퍼티나 변수에 Null 이 들어갈 수 있는 걸 명시할 수 있다는 것 이다. 말만 들으면 이게 무슨소리야? 라고 할 수 있으니 한번 코드로 살펴보기로 하자. 일단 이해를 위해서는 자바코드를 먼져 살펴보아야 ..
RDB 에서는 데이터들간의 연관관계는 있지만, 상속관계는 존재하지 않는다. 하지만 우리는 객체지향적으로 프로그래밍을 해야할때 상속이 필요할때가 있는데 JPA 에서는 이를 상속관계맵핑을 통해 지원한다. 이는 슈퍼타입 서브타입 논리 모델을 통해 실제 모델을 상속관계를 구성할 수 있는데 말이 어려우니 그림을 보자. 우리가 이런식으로 슈퍼타입 서브타입 모델을 실제 물리 모델인 테이블로 구현하기 위한 전략이 필요하다. 즉 쉽게 말해서 Album, Movie, Book 이 Item 을 상속받고 있는데 이것들을 어떻게 실제 물리 모델로 구현하냐이다. 조인전략 첫번째로는 조인 전략이 있다. 뭐 기존 RDB 를 엔티티로 가져오듯, 전부 Entity 각각으로 만들고 Entity 당 Table 을 만든다. 즉 Album, ..
Kotlin JPA 를 Gradle 기반으로 간단히 설정해보자. https://start.spring.io/ 위의 링크로 이동해서 아래 사진과 같이 옵션들을 골라주자. 고르고 압축풀고 Intellij 를 통해서 열어주자. Kotlin 은 JPA 를 쓰기 위해서 여러가지 설정이 필요한데 그 이유는 첫번째로, JPA 는 기본적으로 클래스를 final 형태로 사용하는데 이는 Hibernate 와 별로 어울리지 않습니다. 그 이유는 JPA 에서는 지연로딩을 하게 될 경우 프록시 객체를 만들어야 하는데 이때 class 에 final 이 있게 되면 프록시 객체를 만들 수 없게 됩니다. 따라서 all-open plugin 을 이용해야 합니다. 뭐, 이런 문제 때문에 data class 를 이용하는 사람들도 있지만 스..
코틀린에는 object 라는 새로운 키워드가 도입되었다. 자바에는 이 키워드가 없는데 코틀린에서는 object 가 어떤 역할을 하게 되는지 알아보자. 백문이 불여일견 코드를 한번 작성해보자. 위의 코드는 급여를 계산하는 간단한 object 코드이다. 코틀린에는 자바와는 다르게 static keyword 가 존재하지 않는다. 그래서 object 로 선언해서 생성하게 되면 클래스 선언과 동시에 객체가 생성된다. 일단 object 는 싱글톤으로 구현되는 장점이 있다. 어떻게 Singleton 으로 구현되는 것일까? 컨버팅된 자바코드를 한번보자. 위의 코드를 컨버팅한 자바코드이다. 위를 보면 INSTANCE 에 Payroll 객체를 집어 넣는 모습이다. 하지만 위에 만 본다고 해서 전혀 싱글톤이 될거 같지는 않..
배달의 민족으로 이직하게 되면서 이동하게 되는 팀에서 내년까지 100% 코틀린 마이그레이션이 목표라고 한다. 그래서 코틀린을 공부해야 하는 상황이다. 코틀린은 많이 해본적이 없어서 공부하며 나오는 내용들을 정리하려고 한다. (지금 까지 느낌은 TypeScript 와 무언가 많이 비슷하다..) 변수선언 자바에서는 변수를 선언할때 Type 이 가장 앞에 온다. 예를 들면 아래와 같은 코드와 같은 형태일 것 이다. Person person = new Person 위 코드 처럼 자바에서는 Person 이라는 Type 이 가장 앞에오며, person 이라는 변수가 Person Type 임을 알려준다. 하지만 코틀린에서는 Type 이 변수 뒤에 온다. 예를 들면 코틀린에서의 코드는 아래와 같다. val person..