일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring Batch
- JanusGateway
- JanusWebRTCGateway
- preemption #
- VARCHAR (1)
- terminal
- kotlin
- JanusWebRTC
- table not found
- tolerated
- 겨울 부산
- 티스토리챌린지
- 개성국밥
- PytestPluginManager
- 달인막창
- pytest
- mp4fpsmod
- 자원부족
- PersistenceContext
- python
- taint
- JanusWebRTCServer
- k8s #kubernetes #쿠버네티스
- vfr video
- Value too long for column
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 코루틴 빌더
- 오블완
- 코루틴 컨텍스트
- 깡돼후
목록분류 전체보기 (583)
너와 나의 스토리
타입 시스템(Type system) NULL 가능성(Nullability) NullPointerException(NPE) 오류를 피할 수 있도록 돕는 코틀린 타입 시스템의 특성이다. 코틀린에서는 널이 될 수 있는지 여부를 타입 시스템에 추가함으로써 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지해서 실행 시점에 발생할 수 있는 예외의 가능성을 줄일 수 있다. NULL이 될 수 있는 타입 코틀린의 모든 타입은 기본적으로 널이 될 수 없는 타입이다. 코틀린은 널이 될 수 있는 타입을 명시적으로 지원한다. 타입 옆에 물음표(?)를 표시한다. NULL이 될 수 있는 타입의 변수이지만, 현재 NULL이 아님을 주장할 수 있다. 느낌표 2개(!!)를 변수 뒤에 붙인다. 이 표시를 통해 null이 될 수 없는 변수..
람다 식(lambda expression) 다른 함수에 넘길 수 있는 작은 코드 조각 람다를 사용하면 쉽게 공통 코드 구조를 라이브러리 함수로 뽑아낼 수 있다. 자바에서는 일련의 동작을 변수에 저장하거나 다른 함수에 넘기기 위해 익명 내부 클래스(anonymous inner class)를 사용하곤 했다. 익명 내부 클래스를 사용하면 코드를 함수에 넘기거나 변수에 저장할 수 있기는 하지만 상당히 번거롭다. 이와 달리 함수형 프로그래밍에서는 함수를 값처럼 다루는 접근 방법을 택함으로써 이 문제를 해결한다. 클래스를 선언하고 그 클래스의 인스턴스를 함수에 넘기는 대신 함수형 언어에서는 함수를 직접 다른 함수에 전달할 수 있다. 람다 식을 사용하면 코드가 더욱더 간결해진다. 람다 식을 사용하면 함수를 선언할 필..
컴파일러가 생성한 메서드: 데이터 클래스와 클래스 위임 코틀린 컴파일러는 데이터 클래스에 유용한 메서드를 자동으로 만들어준다. 모든 클래스가 정의해야 하는 메서드 자바와 마찬가지로 코틀린 클래스도 toString, equals, hashCode 등을 오버라이드할 수 있다. 고객 이름과 우편번호를 저장하는 간단한 Client 클래스를 만들어서 예제에 사용하자. class Client(val name: String, val postalCode: Int) 문자열 표현: toString() 자바처럼 코틀린의 모든 클래스도 인스턴스의 문자열 표현을 얻을 방법을 제공한다. 이 기본 구현을 바꾸려면 toString 메서드를 오버라이드해야 한다. class Client(val name: String, val posta..
코틀린의 클래스와 인터페이스는 자바 클래스, 인터페이스와는 약간 다르다. 인터페이스에 프로퍼티 선언이 들어갈 수 있다. 코틀린 선언은 기본적으로 final이며 public이다. 클래스 계층 정의 코틀린 인터페이스 코틀린 인터페이스 안에는 추상 메서드뿐 아니라 구현이 있는 메서드도 정의할 수 있다. -> Java 8의 default 메서드와 비슷 코틀린에서는 default 같은 키워드 따로 추가 안 하고 평범한 메서드처럼 선언하면 됨. 다만, 인터페이스에 필드는 들어갈 수 없다. 단순한 인터페이스를 구현해보자. 자바의 extends와 implements를 코틀린에서는 구분하지 않고 ':'로 모두 처리한다. 코틀린에서는 override 변경자는 선택이 아닌 필수로 사용해야 한다. interface Click..
1. 컬렉션 만들기 간단한 컬렉션들을 만들어보자 val set = hashSetOf(1, 7, 53) val list = arrayListOf(1, 7, 53) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") 코틀린은 자체 컬렉션을 제공하지 않다. -> 기존 자바 컬렉션을 활용할 수 있음 코틀린 컬렉션은 자바 컬렉션과 똑같은 클래스지만 자바보다 더 많은 기능을 쓸 수 있다. 예: 리스트의 마지막 원소 가져오기. 수로 이뤄진 컬렉션에서 최댓값 찾기 val numbers = setOf(1, 14, 2) println(numbers.max()) // output: 14 val set = hashSetOf(1, 7, 53) println(s..
스마트 캐스트 interface Expr class Num(val value: Int) : Expr // Expr 인터페이스를 구현한다 class Sum(val left: Expr, val right: Expr) : Expr 위의 예제를 보자. Expr 타입의 객체라면 어떤 것이나 Sum 연산의 인자가 될 수 있다. 즉, Num이나 다른 Sum이 인자로 올 수 있다. (1+2)+4를 계산한다고 하자. fun eval(e: Expr): Int { if(e is Num){ val n = e as Num return n.value } if(e is Sum){ return eval(e.right)+eval(e.left) } throw IllegalArgumentException("Unknown expressio..
1. 함수와 변수 함수 코틀린 함수는 내부에 아무 효과가 없어서 오로지 인자에 의해서만 반환 값이 결정된다. 이런 함수를 종종 순수 함수(pure function)라고 부른다. 이는 항상 같은 인자에 대해 같은 결과를 내놓는다. main 함수는 다음과 같이 생겼다. fun main(args: Array) { } Hello world를 출력해보자. main 함수에 println()를 이용해 'hello world' string을 출력할 수 있다. import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util.println fun main(args: Array) { println("Hello World!") // output: Hello World! }..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mEQgO/btq6SmpMoNZ/JElSuqoX5UUBI7RDon4gc0/img.png)
1. Spring initializr로 프로젝트 생성 기본 프로젝트 다운: https://start.spring.io/ 2. Data class와 controller 생성 MessageController.kt 파일을 생성해서 아래의 코드를 작성해주자. 두 개의 string 변수를 필드로 갖는 클래스 Message를 생성하였다 -> data class 이 Message 클래스를 type으로 가지는 리스트를 생성하여 값을 초기화해주었다. @GetMapping 어노테이션을 붙임으로써 "http://localhost:8080/message"로 요청이 들어오면 위에서 초기화한 리스트가 리턴된다. package demo import org.springframework.web.bind.annotation.GetMap..