스프링 애플리케이션에서 Controller 내에서 글로벌하게 발생하는 예외를 ControllerAdvice를 사용해 핸들링 할 수 있다. 우선 ControllerAdvice란? > 특정 패키지나 컨트롤러, 나아가서 컨트롤러 단에서 글로벌하게 발생하는 예외를 공통적
코틀린 + Spring을 사용하여 첫 프로젝트의 국룰인 RESTful한 TODO 리스트를 만들어보자. task 엔드포인트에서 구현해야할 HTTP method는 다음과 같다GET: 모든 TODO 리스트를 가져옴POST: 새로운 TODO 리스트를 추가함DELETE: 해당
Empirical tests (경험적 테스트) 경험적 테스팅은 개발자가 코드를 발전시켜나감과 동시에, 해당 메소드를 호출하고 의도를 검증하는 방식이다. Airport라는 데이터 클래스에 3가지 샘플 프로퍼티를 먼저 정의한다 Testing for methods 빈
현대 어플리케이션에서는 원격 서비스의 호출, DB 업데이트, 검색 등 많은 작업들이 내부적으로 계속 돌아간다. 프로그램의 효율화를 위해서는 각각의 작업들을 비동기, non-blocking(I/O 작업이 완료될 때 까지 기다리지 않고 다른 작업을 수행하는 개념) 방식으로
Coroutine은 동시성 프로그래밍을 가능하도록 만든 개념이다. 스레드와 기능적으로 같지만, 좀 더 가볍고 유연한 백그라운드 스레드에서 코드를 처리할 때 사용하는 하나의 방법이다. Concurrency(동시성)는 하나의 작업을 일정량 처리하고 다음 작업을 처리하는 여
재귀(recursion)을 활용하면 분할정복 문제를 해결할 수 있다. 퀵정렬 예시코틀린은 재귀함수를 지원하지만 해당 함수에 해단 return type을 반드시 명시해줘야 한다(타입 추론 불가)재귀를 사용하려면 어느정도의 진입장벽은 있지만 한번 공부하면 유용하게 사용할
Fluency in Kotlin Need for operator overloading 연산자 오버로딩(operator overloading)이란? > 연산자 오버로딩(operator overloading)은 객체 지향 컴퓨터 프로그래밍에서 다형성의 특정 경우로 다른
외부 반복자는 배열에서 요소를 for나 while 등의 루프로 하나씩 꺼내서 직접 조작하는 방식이다추가적으로 break나 continue문을 활용해 직접 루프를 쉽게 제어할 수 있다.내부 반복자는 반복당 수행할 액션만을 정의하고 그 액션을 컬렉션이 받아 내부적으로 자동
Functional Programming with Lambdas Imperative vs Declarative 만약 이라는 이름이 담긴 리스트에서 라는 이름을 찾고 싶다면? imperative style(명령형) : 리스트를 돌면서 하나씩 비교 declarati
Extension through Delegation Delegation (클래스 위임) 이란? > 코틀린에서는 모든 클래스가 자바와 달리 final이다. 클래스 상속이 필요하면 상속될 클래스에 접근자를 명시해줘야 한다. 그래야 이 붙은 클래스를 수정할 때 하위 클래
몇가지 추상 메소드들로 구성된 인터페이스를 만들어보자! 코틀린 인터페이스는 interface 키워드를 사용해 정의해준다. 위에서 작성한 인터페이스를 활용해보자! 기본 생성자 옆에 콜론(:)을 붙여 사용할 인터페이스를 명시해준다.TVRemote 클래스는 Remote 인터
코틀린에서 object 키워드와 {} 를 사용하면 바로 anonymous object(익명 객체)를 생성할 수 있다.여기서 더 기능을 확장하려면 익명 객체보다 클래스를 설계하는게 더 좋다.Why익명 객체는 클래스와 비교해서 다음과 같은 한계점들이 있다익명 객체의 내부
코틀린에서 Any 클래스는 모든 클래스가 상속받는 자바의 Object 클래스라고 할 수 있다. 자바의 equals(), toString() 메소드가 Object 클래스의 소속인것 처럼 코틀린에도 equals(), hashCode(), toString() 다양한 메소드가
Using Collections Collection이란 > Collection 객체는 여러 원소들을 담을 수 있는 자료구조를 뜻한다. ex) DTO, Array, List, Set, Map Types of collections in Kotlin 코틀린 Colle
Range and Iteration 코틀린에서 1부터 5사이의 숫자와 같은 범위를 표현할때는 Range 클래스를 사용해준다. 기본적으로 마지막 범위를 포함시키며 증가 또는 감소값은 기본 1이다. 숫자 범위 뿐만 아니라 문자 범위, 문자열 범위도 표현할 수 있다. 범위를 정해주었다면 for (x in ..)문을 사용해 반복문을 만들수 있다. for문 안...
Working with Functions Creating Functions 코틀린에서 함수는 fun 키워드로 정의한다. 뒤이어 함수의 이름과 매개변수(parameter) 리스트를 정의해준다. 위와 같은 간단한 단일표현 함수 (single-expression function) 이라면 함수의 body 부분의 중괄호({})를 = 연산자로 대체 가능하다. 또...
코틀린 개발자들은 세미콜론은 굳이 권장하지 않는다고 한다. 세미콜론은 한줄에 여러 문장을 적는 경우를 빼고 사용하지 않아도 된다. 코틀린은 정적 타입 지정 언어다. 컴파일 시점에서 모든 객체나 메소드의 타입을 알 수 있다. 즉, 컴파일러가 타입을 확정하고 검증해준다.
코틀린은 서버사이드, 안드로이드 앱, 프론트엔드 개발에 전부 다 사용할 수 있는 몇 안되는 풀스택 개발언어 중 하나이다. Java bytecode의 컴파일링, Javascript로써의 트랜스파일링 또한 가능하다. 자바, 코틀린은 정적 타입 지정 언어이다. 정적 타입 언
Data Democratization(데이터 민주화) : 높은 접근성ELT (Extract-Load-Transform)Process데이터 추출 -> 가공 -> 웨어하우스 저장문제점 : 저장하기전에 데이터 가공과정에서 문제가 발생함. 어떤 형태로 데이터를 가공할 것인지에
Redis란? > REDIS(REmote DIctionary Server)의 약자로 인 메모리 기반의 key-value 구조 데이터 관리 시스템이다. 모든 데이터를 메모리에 저장하므로 빠른 Read & Write 속도를 보장하는 NoSQL 데이터베이스이다. 요즘 회사들은 자체 RBDMS의 부하를 줄이기 위해 redis 클러스터를 주로 사용해 운영한다. ...