본문 바로가기

728x90
반응형
개발 55

[Effective Kotlin] Item 31: Define contract with documentation Intro 문서로 약속을 정의해라. Item 27: Use abstraction to protect code against change 에서 나왔던 '메세지를 보여주는 함수'에 대해서 다시 보겠습니다. fun Context.showMessage( message: String, length: MessageLengh = MessageLength.LONG ) { val toastLength = when(length) { SHORT -> Toast.LENGTH_SHORT LONG -> Toast.LENGTH_LONG } Toast.makeText(this, message, toastLength).show() } enum class MessageLength { SHORT, LONG } 위 코드는 어떻게 메세지를 .. 2021. 9. 11.
[Effective Kotlin] Item 24: Consider variance for generic types Intro 아래의 generic class를 보면, 타입 파라미터인 T는 out이나 in과 같은 제네릭 변성 한정자(generic variance modifier)가 없기 때문에 타입 변경이 불가능합니다(invariant). 이 말은 generic class에 의해 생성된 서로 다른 타입 사이에는 관계가 없다는 것을 의미하는데요. class Cup fun main() { val anys: Cup = Cup() //Error: Type mismatch val nothings: Cup = Cup() //Error } 예를 들면, Cup와 Cup, Cup와 Cup사이에는 관계가 없습니다. 만약, 관계가 필요하다면 out이나 in과 같은 제네릭 한정자를 사용해야 합니다. out은 type parameter를 공.. 2021. 9. 9.
Cloud Native와 CNCF Cloud Native Landscape Intro 예전에 CNCF 재단에서 권장하는 Cloude Native 환경을 만들기 위한 landscape에 대해 살펴본 적이 있습니다. 주기적으로 업데이트를 하는 자료이기도 하고, 클라우드 기반의 어플리케이션을 구축하기 위해 어떤 제품을 선택해서 조합하여 사용할 수 있을지도 한눈에 파악할 수 있어 가끔 살펴보곤 했습니다. 오늘은 이 Cloud Native, CNCF재단, Cloud Native Trail Map와 함께, Landscape에서 확인할 수 있는 몇가지 대표적인 소프트웨어에 대해서 소개하고자 합니다. Cloud Native (클라우드 네이티브) 가상화 기술이 발전하고 Cloud 환경의 발전이 가속화됨에 따라 애플리케이션의 구성 역시 Cloud 환경에 맞게 설계되어야 할 필요성을 갖게됩니다. .. 2021. 9. 6.
[Effective Kotlin] Item 17: Consider naming arguments Intro val text = (1..10).joinToString("|") 위와 같은 예시가 있을 때, joinToString에 대해서 모른다면 "|"이 seperator라는 것을 알기 어렵고, 명확하지 않습니다. (물론 요즘은 IntelliJ와 같은 IDE가 잘알려주지만,,, 그래도!) 가장 좋은 방법은 naming argument를 사용하는 것 입니다. 아래처럼요! val text = (1..10).joinToString(separator = "|") 비슷한 방법으로 naming variable이 있습니다. val separator = "|" val text = (1..10).joinToString(separator) 위의 경우, naming argument보다는 좀 덜 안정적입니다. 변수 명은 개.. 2021. 8. 25.
쿠키(Cookie) vs 세션(Session) 쿠키와 세션을 사용하는 이유: HTTP 프로토콜의 약점(비연결지향, 상태정보유지안함)을 보완하기 위해 사용 쿠키 (Cookie) 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일 프로세스 브라우저에서 웹페이지로 접속 클라이언트가 요청한 웹 페이지를 받으면서 쿠키를 클라이언트 로컬에 저장 클라이언트가 재 요청시 웹 페이지 요청과 함께 쿠키값도 전송 지속적으로 로그인 정보를 가지고 있는 것처럼 사용 Session(세션) 일정 시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 유지하는 기술 프로세스 클라이언트가 서버에 접속시 세션ID발급 서버에서는 클라이언트로 발급해준 세션ID를 쿠키를 사용해 저장 클라이언트는 다시 접속할 때, 이 쿠키를 이용해 세션 ID값을 서버에 전달 .. 2021. 8. 21.
[Kotlin test framework] Kotest Document Document: https://kotest.io/ Github Reference Dockument: https://github.com/kotest/kotest/wiki/Reference-Doc Kotest | Kotest Flexible, powerful and elegant kotlin test framework with multiplatform support kotest.io Introduce Kotest는 Kotlin을 위한 테스팅 도구 Kotlin-Test에서 Kotest로 이름이 변경되었으며, 이름에서 알 수 있듯이 Kotlin언어로 작성된 코드를 테스트하기에 아주 용이 Spock와 유사하게 간결한 코드와 다양한 유형의 테스트 방식을 지원 Kotest는 multi-platfor.. 2021. 8. 21.
728x90
반응형