이 글은 코틀린 공식문서를 정리한 것입니다. Number 정수 코틀린의 정수는 4가지 타입이 있고, 각 타입마다 다른 범위를 가지고 있다. 코틀린은 동적 타이핑을 지원하는데 타입을 지정하지 않은 경우 기본적으로는 Int 타입이 된다. 만약 Int 타입의 범위를 벗어난 경우에는 Long 타입이 된다. Int 타입을 벗어나지는 않지만 Long 타입으로 지정하고 싶은 경우에는 숫자뒤에 문자 'L'을 붙여주면 된다. val one = 1 // Int val threeBillion = 3000000000 // Long val oneLong = 1L // Long val oneByte: Byte = 1 one과 threeBillion을 보면 범위에 따라 동적 타이핑이 어떻게 되는지 알 수 있다. oneLong을 보..
코틀린에서 enum을 선언할 때 자바보다 더 많은 키워드를 선언해야 한다. Color라는 enum 클래스를 선언할 때 java에서는 enum Color로 선언하지만 코틀린에서는 enum class Color과 같이 선언을 하기 때문이다. 코틀린에서 enum은 소프느 키워드(soft keyword)이다. 소프트 키워드는 변수 혹은 인자의 이름으로 사용가능한 키워드를 지칭한다. enum은 class 앞에서만 특별한 의미를 가지고 있고 다른 상황에서는 이름으로 사용이 가능하다. enum class Color { RED, YELLOW, GREEN, BLUE, VIOLET } 간단한 enum 클래스는 위와 같이 정의한다. enum class Color( val r: Int, val g: Int, val b: In..
영화 api를 구현하면서 영화의 정보와 함께 영화 포스터 이미지를 저장했다. 파일 업로드를 구현하고 저장하고 테스트한 것을 기록한다. MultipartFile HTTP에서 클라이언트가 파일과 데이터를 HTTP 서버로 보내기 위해서는 멀티파트 요청을 사용한다. 스프링에는 멀티파트 요청을 처리하기 위한 MultipartFile 인터페이스가 존재한다. 멀티파트 요청에서 수신된 업로드 파일의 표현이고 파일 내용은 메모리 혹은 일시적으로 디스크에 저장된다. 임시 저장소이기 때문에 요청이 끝나면 파일 내용이 지워진다. 따라서 파일 내용을 다른 저장소에 저장을해야 한다. 이 MultipartFile 인터페이스를 사용해서 파일 업로드를 처리하면 된다. Controller public record RequestCreat..
record의 도입 record는 Java 14 버전부터 새롭게 도입된 키워드이다. enum과 마찬가지로 record도 제약이 있는 클래스의 한 종류이다. 데이터를 변경하지 않고 생성자와 접근자 메서드를 포함하는 plain data carrier라고 오라클 공식문서에서 설명한다. Spring의 DTO와 같이 객체 간에 불변 데이터를 전달하는 일은 빈번한다. 불변 데이터를 전달하기 위해 사용하는 DTO 객체의 경우에는 setter 메서드 같은 데이터를 변경하는 메서드를 작성하지 않고 생성자로 인스턴스가 생성될 때만 값을 초기화하고 필드 앞에 final을 붙이는 방식으로 구현했었다. 이는 record를 통해서 대체할 수 있다. record를 class로 변환 public record Rectangle(flo..
GitHub Actions란? GitHub Actions를 간략하게 설명하면 아래와 같다. GitHub Actions는 빌드, 테스트, 배포 파이프라인을 자동화할 수 있게 도와주는 CI/CD(지속적 통합/지속적 서비스 제공) 플랫폼이다. push라던가 pull-request 등의 이벤트가 발생했을 때 GitHub Actions에서 이벤트에 대한 워크플로우를 실행한다. 이벤트 처리를 위해서 GitHub에서는 Linux, Window, MacOS 가상머신을 제공해준다. GitHub Actions의 구성요소 이벤트가 발생했을 때 실행할 워크플로를 작성하면 해당되는 이벤트가 발생했을 때 가상머신이나 컨테이너에서 워크플로가 실행된다. 워크플로는 하나 이상의 job으로 구성이 되어 순차적으로 처리될 수도 병렬로 처..
동등 연산자(==)을 사용한 비교의 문제점 Integer integer1 = 100; Integer integer2 = 100; System.out.println(integer1 == integer2); // true 위의 코드를 실행했을 때 integer1과 integer2는 동일하다고 나온다. Integer integer1 = 1_000; Integer integer2 = 1_000; System.out.println(integer1 == integer2); // false integer1, integer2 값이 4였을 때와는 달리 위의 코드는 integer1과 integer2를 비교했을 때 다르다는 결과가 출력된다. Integer 값을 동등 연산자(==)을 사용했을 때 정확하게 비교할 수 있는 값은..
revert 프로젝트를 되돌리기 위해서 reset을 사용하면 commit들이 삭제되기 때문에 좋은 방법이 아니다. 프로젝트를 과거 시점으로 되돌면서 기존의 commit들을 삭제시키지 않기 위해서는 revert를 사용하면 된다. revert는 기존의 commit들을 삭제하지 않고 새로운 commit을 생성하여 프로젝트를 과거의 시점으로 되돌린다. revert에서 log의 변화 git revert를 사용하면 메시지를 작성할 수 있는 vi 에디터가 나타난다. 로그를 출력하면 revert 메시지가 추가된 것을 확인할 수 있다. 그리고 파일들을 확인하면 이전의 시점으로 되돌아간 것을 확인할 수 있다. 여러 commit들을 revert 마침표 2개(..)를 사용하여 여러 commit들을 revert할 수도 있다. ..
reset reset은 이전 commit으로 되돌아 갈 때 사용한다. --soft git log를 간단하게 출력했다. 이를 기준으로 비교할 것이다. git reset에 soft 옵션을 주면 HEAD 포인터의 위치가 변했고 변경된 HEAD 포인터 다음의 commit이 사라진 것을 확인할 수 있다. 하지만 파일들을 출력해보면 다른 변화가 있지는 않다. 그리고 수정된 파일은 모두 stage에 등록되어 있다. 파일을 수정하고 add하고 commit을 한 3개의 상태가 있을 때 soft 옵션은 add를 하고 난 뒤의 상태로 되돌려 준다. 즉 commit을 하기 직전의 상태로 되돌려준다. add는 이미 실행되었기 때문에 스테이지에 파일들은 모두 등록되어 있다. 요약하면 soft 옵션은 HEAD의 위치를 변경하고, ..
rebase rebase도 merge와 마찬가지로 브랜치를 합치는 방법 중 한가지이다. rebase가 merge와 달리 commit들을 재배열한다. base 새로운 브랜치는 기존의 브랜치를 기반으로 생성된다. 그리고 이렇게 새로운 브랜치가 생성됐을 때 분기가 발생했다고 표현한다. 위의 그림에서 feature 브랜치는 main 브랜치 기반으로 생성된다. 분기가 발생한 공통 조상 commit, main commit 1을 base라고 한다. rebase는 이 base 앞에 re가 붙은 단어이다. rebase는 브랜치 분기가 발생한 기준이 되는 브랜치의 base commit을 변경하는 것이다. rebase를 하는 이유 rebase를 하면 commit의 트리 구조가 단순화된다. 브랜치의 개수가 많아지는 경우 co..
conflict 같은 위치의 코드를 동시에 수정하는 경우자동 병합이 실패하고 conflict가 발생한다. 파일의 동일한 부분을 수정하고 merge를 하면 CONFLICT 메시지가 출력된다. conflict가 발생했을 때 자동으로 commit이 생성되지 않는다. 이런 경우 직접 conflict를 해결하고 commit을 생성해야 한다. git status로 충돌시 상태를 확인하면 unmerged 메시지를 확인할 수 있다. 이런 충돌을 최소화 하기 위해서는 같이 작업할 때 상의를 하거나 혹은 자주 병합하는 것이 좋다. 💡 merge 취소하기 merge를 취소할 때 git merge --abort 명령어를 실행하면 된다. conflict 해결 > 병합하고자 하는 브랜치명(feature) conflict가 발생..
- Total
- Today
- Yesterday
- postman
- postman tests
- string
- 확장 함수
- Python
- hashcode
- 코딩테스트
- pm.expect
- squash merge
- solidity
- 1차 인터뷰
- 2차 인터뷰
- mysql
- DGS Framework
- 코틀린
- Basic Type
- git
- Squash and merge
- java
- github
- Kotlin
- python3
- pm.test
- 주생성자
- downTo
- postman collection
- 네이버 2022 공채
- graphql
- go 특징
- Kotlin In Action
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |