본문 바로가기

분류 전체보기

(126)
[Kotlin In Action] 6장. 코틀린 타입 시스템 null 가능성 코틀린에서는 기본적으로 NPE를 방지하기 위해 모든 데이터 타입이 Non-Nullable이다. 코틀린은 널이 될 수 있는 타입과 널이 될 수 없는 타입을 명시적으로 지원한다. int strLen(String s) { return s.length(); } 자바에서는 해당 String에 대한 null 체크를 하지 않기 때문에 runtime 시점에 NPE가 터진다. 코틀린은 null과 관련된 문제를 가능한 실행 시점에서 컴파일 시점으로 옮긴다. fun strLen(s: String) = s.length >>> strLen(null) ERROR: Null can not be a value of a non-null type String null이 될 수 있는 타입 타입 이름 뒤에 ?를 붙임 프로퍼..
[Kotlin In Action] 5장. 람다로 프로그래밍 람다 식과 멤버 참조 람다식 함수 타입에 넘길 수 있는 코드 조각. 항상 중괄호로 둘러싸여 있으며, 인자 목록 주변에 괄호가 없다. 람다에서 화살표가 인자 목록과 람다 본문을 구분한다. { x: Int, y: Int ‐> x + y } 람다가 마지막 인자라면 괄호 밖에 위치시킬 수도 있다. 또한 인자가 한개이고 타입 추론이 가능하다면 default 명인 it을 사용할 수 있다. val people = listOf(Person("Alice", 20), Person("Bob", 31)) people.maxBy( { p: Person ‐> p.age } ) people.maxBy { p: Person ‐> p.age } people.maxBy { p ‐> p.age } people.maxBy { it.age ..
[Kotlin In Action] 4장. 클래스, 객체, 인터페이스 Kotlin in Action 책에서 각 챕터의 Summary를 보며 부족한 키워드만 후라닥 정리하는 글. 안드정이 코틀린 인 액션 책 스터디하면서 정리한 자료도 참고할 예정 땡큐땡큐 클래스 계층의 정의 인터페이스 인터페이스나 상위 클래스의 매서드, 프로퍼티 재 정의시 override 수식어를 사용한다. class Button : Clickable { override fun click() = println("I was clicked!") } 메서드 본문을 메서드 시그니처 뒤에 추가함으로 디폴트 메서드를 구현할 수 있다. interface Clickable { fun click() fun showOff() = println("defailt") } open, final, abstract 코틀린의 클래스와 클..
[JAVA] Google Java Style Guide 번역 2020년 11월 27일 작성 글 우아한 테크코스 과제는 Clean Code, 즉 코딩 컨벤션을 준수해야 한다. 우테코 측에서 프로그램 요구사항으로 제시한 구글 자바 스타일 문서를 번역기로 돌려 보았더니 허허 🐌 이해하기 쉬운 말로 좀 수정하고 받아 적어 정리하면서 깊게 쭉❗️ 훑어보자. 혹시나 이 자료를 찾는 사람들에게 도움이 되길 바라며••• 본문 내용을 이사하면서 글을 다시 읽어보고 오역이 있는 부분을 수정했습니다. 혹시나 잘못된 부분있다면 편하게 남겨주세요 ! 📃Google Java Style Guide 원문📃 1. 소개 이 문서는 Java ™ 프로그래밍 언어의 소스 코드에 대한 Google 코딩 표준의 완전한 정의로 사용됩니다. Java 소스 파일은 여기에있는 규칙을 준수하는 경우에만 Googl..
@DirtiesContext로 무거워진 인수 테스트 시간을 줄이는 실험을 해봅시다 인수 테스트 - @DirtiesContext 를 제거하자! 각각의 인수 테스트는 테스트 간 격리성을 가져야 하는데, RestAssured 테스트는 테스트 전용 @Transactional을 사용하지 못한다. 즉 데이터 관련 컨텍스트가 공유되고, 이 데이터 베이스를 각각의 테스트마다 초기화해주기 위해 지금껏 당연히 @DirtiesContext를 사용해왔다. 하지만 @DirtiesContext를 사용할 경우 매번 컨텍스트를 새로 로드하기 때문에 인수테스트만 어마무시한 시간이 들게 된다. 실제로 놀토 프로젝트도 인수테스트를 수행하는데만 (사양마다 다르겠지만) 내 맥북 기준 2분정도가 소요되었다. 결국 인수테스트에서 우리가 현재 원하는 것은 데이터의 격리성이고, 이를 위해 매번 빈들을 초기화 해주는 것이었다. 즉..
Level 4. HTTP 서버 구현하기 - 정리 1, 2 단계 - HTTP 서버 구현하기 & 리팩터링 HTTP HTTP 메시지는 ASCII로 인코딩된 텍스트 정보이며 여러 줄로 되어 있음 HTTP 프로토콜 초기 버전과 HTTP/1.1에서는 클라이언트와 서버 사이의 연결을 통해 공개적으로 전달되었음 사람이 읽을 수 있었던 메시지는 HTTP/2에서는 최적화와 성능 향상을 위해 HTTP 프레임으로 나누어짐 HTTP 메시지는 주로 소프트웨어, 브라우저, 프록시, 또는 웹 서버가 작성 HTTP Request 구조 요청 메시지는 다음과 같은 메시지로 날아온다. GET /index.html HTTP/1.1 Host: localhost:8080 Connection: keep-alive Accept: */* 먼저 내가 미션에서 만든 HTTP Request 객체의 구조..
[Kotlin In Action] 3장. 함수 정의와 호출 Kotlin in Action 책에서 각 챕터의 Summary를 보며 부족한 키워드만 후라닥 정리하는 글. 안드정이 코틀린 인 액션 책 스터디하면서 정리한 자료도 참고할 예정 땡큐땡큐 컬렉션 정의 코틀린에서 컬렉션은 두가지로 분리됨 Collection : 불변 MutableCollection : 가변 자체 콜렉션이 아닌 자바 콜렉션 사용: 자바 코드와 상호작용 용이 함수를 호출하기 쉽게 만들기 이름있는 인자 fun joinToString( collection: Collection, separator: String = ", ", prefix: String = "", postfix: String = "" ): String joinToString(collection, separator = " ", prefix..
[Kotlin In Action] 2장. 코틀린 기초 Kotlin in Action 책에서 각 챕터의 Summary를 보며 부족한 키워드만 후라닥 정리하는 글. 안드정이 코틀린 인 액션 책 스터디하면서 정리한 자료도 참고할 예정 땡큐땡큐 함수와 변수 함수를 정의할 때는 fun 키워드를 사용 변수를 정의할 때 val 키워드는 불변(읽기 전용), var 키워드는 가변을 나타냄 val name = "mazzi" // 타입 생략 가능 val name : String= "mazzi" // 타입 명시가능 val answer:Int // 초기화 식을 이용하지 않고 변수 선언시 타입 반드시 명시 answer = 24 초기화 식 없으면 컴파일러가 타입 추론 불가능하기 때문에 반드시 타입 명시 var는 변수 값을 변경할 수 있지만, 그 타입은 바꿀 수 없음 기본적으로 모든 ..