전체 글
스프링 배치 익혀보기 : 개념 정리 + 간단한 실습
주제 배치의 개념과 구성 요소에 대해 알아본다. 하나의 Job을 여러 Step으로 구성하는 방법을 알아본다. Tasklet, Chunk 단위로 처리해본다. 1. Spring Batch란 1.1 정의 1.1.1 Batch 작업이란? 대용량 데이터를 처리하려면 많은 시간과 자원이 소요될 수 있고, 동일한 데이터를 사용하는 다른 서비스에 영향을 줄 수 있다. 때문에 이를 실시간이 아닌 한번에 많은 데이터를 처리할 때가 있다. 실시간이 아닌 일괄적으로 모아서 처리하는 작업을 배치 작업이라고 한다. 1.1.2 Spring Batch란? 엔터프라이즈 시스템의 일상적인 작업에 필수적인 강력한 배치 응용 프로그램을 개발할 수 있도록 설계된 가볍고 포괄적인 배치 프레임워크 로깅/추적, 트랜잭션 관리, 작업 처리 통계, ..
클린코드 9장
주제 클린코드 9장 정리 9장 "단위 테스트" 요약 단위 테스트 # 메모 TDD 법칙 1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 방대한 테스트 케이스를 커버할 수 있지만 그만큼 관리 문제도 야기된다. 실제 코드가 진화하면 테스트 코드도 변해야 한다는 문제. 테스트 코드가 지저분하고 복잡할 수록 수정하기도 어렵고 새로운 테스트 케이스를 추가하기도 어렵다. 떄문에 새 버전을 출시할 때마다 팀이 테스트 케이스를 유지하고 보수하는 비용도 늘어난다.. 이시간이 많이 드는 문제로 테스트를 포기하는 상황에 처함 근데 테스트가 없으면 개발자가 수..
클린코드 6~8장
주제 클린코드 6장 6장 "객체와 자료 구조" 요약 객체와 자료 구조 # 메모 조회 함수와 설정 함수(get, set)로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. (좌표 클래스의 setX(), setY()로 뭔가 지정하는게 아닌 setCartesian(double x, double y)로 지정해야 함. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 제공한다. vs 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다...
클린코드 4~5장
주제 클린코드 4~5장 요약 4장 "주석" 요약 잘 달린 주석 # 메모 주석 없이 이해할 수 없는 코드는 좋지 않은 코드다. 부정확한 주석은 안스니만 못함 코드에 주석을 추가한다고 코드 품질이 좋아지진 않음 표현력이 풍부하고 깔끔하고 주석이 거의 없는 코드 >>>> 복잡하고 어수선하며 주석이 많은 코드 코드만으로 의도를 설명하라 좋은 주석(정말 좋은 주석은 주석을 달지 않고 이해 가능한 것) 법적으로 넣어야 하는 주석 기본적인 정보를 제공하는 주석(정규식의 의미 설명) 의도를 설명하는 주석 (이건 이것 때문에 작성한 코드이다~... 이러한 조건이 있어 작성한 조건식이다 ... ) 의미를 명료하게 밝히는 주석(a.eqauls(b) // a == b) 결과를 경고하는 주석 여유 ( //시간이 충분하지 않으면..
클린코드 3장
주제 클린코드 3장 정리 3장 "함수" 요약 함수를 잘 만드는법 # 메모 어떤 프로그램이든 가장 기본적인 단위는 함수이다. ★ 함수는 무조건 작게 만들어라 if/else, whilel 문 등에 들어가는 코드는 한 줄이어야 함 인덴트는 1단 혹은 2단을 넘어가지 않는다. (중첩 구조 발생) 함수는 한 가지 기능만 수행해야 한다. 한 가지 기능은 여러 단계에 걸쳐 수행될 수 있다. 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 하는 것 애초에 함수를 만드는 이유는 큰 개념(함수 이름을) 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위함 함수가 한 가지만 하는지 판단하는 방법 : 단순히 다른 표현이 아니라 의미 있는 다른 함수를 추출할 수 있다면 여러 작업을 ..
클린코드 1장 ~ 2장
주제 클린코드 1장 ~ 2장 정리 1장 "깨끗한 코드" 요약 1. 깨끗한 코드란 무엇인가? # 메모 코드는 요구사항을 표현하는 수단 질 나쁜 코드가 누적되면 생산수단이 저하된다 요구사항의 변화와 시간의 압박으로 인한 코드 품질 저하 결국 좋은 품질의 코드를 생산하는 것은 프로그래머의 몫 빠른 시간 안에, 좋은 품질의 코드를 생산하기 위한 가장 좋은 방법은 코드를 깨끗하게 유지하는 습관이다. 나쁜 코드를 보고 나쁘다는 생각은 누구나 떠올릴 수 있지만, 개선 방안을 떠올리는 것은 코드 감각이 있는 프로그래머 깨끗한 코드는 보는 사람에게 즐거움을 선사해야 한다 오류 처리에 철저하라(메모리 누수, 경쟁 상태, 일관성 없는 명명법) 깨끗한 코드는 잘 쓴 문장처럼 읽혀야 한다 깨끗한 코드는 작성자가 아닌 사람도 읽..
윈도우 명령 프롬프트 cmd에서 ls, clear 사용하기
doskey ls = dir doskey clear = cls doskey 명령어를 통해 원하는 key로 매핑할 수 있다.
[Kotlin] 코틀린 개념 정리
주제 코틀린 기초 개념 정리 1. 코틀린에 대해 알아보기 1.1 코틀린이란? 1.1.1 코틀린이란? 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어로, 기존 Java 언어나 프레임워크와 함께 작동할 수 있다. 구글에서 지정한 안드로이드 공식 지원 언어이며, 여러 IT 대기업들이 채택한 각광받는 언어 Jetbrains에서 개발하였음 1.2 특징 1.2.1 멀티 패러다임 언어 함수형 프로그래밍과 객체 지향 프로그래밍을 모두 지원하는 멀티 패러다임 언어이다. # 함수형 프로그래밍 - 함수는 일반 값처럼 변수에 저장할 수 있고, 다른 함수의 인자로도 넘길 수 있다 - 불변 객체를 사용하여 프로그램을 작성한다. - 입력이 같으면 항상 같은 출력을 보장하고, 함수 외부의 다른 객체를 건드리지 않는다. (순수함수) ..
Checked Exception과 Unchecked Exception 이란? 예외 처리 기법
주제 Checked Exception과 Unchecked Exception Exception별 예외 처리 방법 1. Error 와 Exception 1.1 Error와 Exception의 차이 Error와 Exception은 문제가 생겼다는 점에서 비슷하지만 다른 클래스이다. Error란 시스템이 비정상적일 때 발생하고, 개발자가 미리 예측하거나 대처하기 어렵다 Ex) 메모리 부족(Out of Memory), 스택 오버플로우(StackOverflow) Exception이란 개발자의 실수 혹은 구현한 코드 레벨에서 발생하는 오류로 미리 예측하거나 대처할 수 있다. NullPointerException, FileNotFoundException 등등 1.2 Exception의 종류 Exception의 종류는 ..
[JPA] 낙관적 락(Optimistic Lock), 비관적 락(Pessimistic Lock)
주제 비관적 락과 낙관적 락에 대해 알아본다. 각각 적합한 사용처를 알아본다. 1. 비관적 락, 낙관적 락 1.1 락이 왜 필요한가요? 트래픽이 낮은 서비스에서는 자주 발생하지 않겠지만, 트래픽이 많아진다면 여러 트랜잭션/요청이 동시에 같은 데이터에 접근하는 경우가 생길 수 있다. 이때 각기 다른 요청이 수행하는 작업은 서로의 작업 결과에 영향 끼칠 수 있다. 데이터의 일관성을 유지하기 위해 Lock을 통해 이를 제어할 수 있다. 1.1 비관적 락(Pessimistic Lock) 1.1.1 정의 자원 요청에 따른 동시성 문제가 발생할 것이라 예상하고 락을 거는 방법론 트랜잭션 간에 충돌이 발생할 것이라고 가정한다. 하나의 트랜잭션이 자원에 접근했을 때 락을 걸고, 다른 트랜잭션은 접근하지 못한다. DB에..