본문 바로가기

분류 전체보기

(90)
인수테스트 격리 유스콘 마지막 과제를 진행하고 나서 제이슨님이 아래와 같은 질문을 주셨다. 인수테스트를 작성하셨는데 테스트 격리를 매번 테스트를 수행하고 초기화를 해주는 작업을 하신 것 같다. 선택하신 방법 외에 어떤 방법이 있는지? 나는 @Transactional 어노테이션을 쓰면 될 것 같다고 하였고 추가로 테스트 메서드에 어노테이션을 붙여주면 정상적으로 동작할 것 같냐는 질문에 나는 아래와 같이 답변하였다. 동작할 것 같다. 발생할 수 있는 문제로는 실제로 데이터의 변경이 일어나는 서비스 로직에 @Transactional 어노테이션을 붙이지 않고 테스트에만 붙이는 경우 테스트는 통과하는데 실제로 해당 로직에서 에러가 발생할 수도 있을 것 같다. 과연 정상적으로 동작하였을까? 한번 알아보도록 하자. 테스트 격리 인수..
RESTful API API를 개발하다 보면 혹은 많은 회사의 JD의 자격 요건을 보면 이러한 문장을 흔히들 볼 수 있다. RESTful API 설계 및 개발 경험누구나 흔하게 REST라는 말을 쓰지만 잘 모르겠는 주제인데 최근에 플람님이 아래와 같은 질문을 주셨다. RESTful 하게 개발하려 하신 것 같은데 호출 URL 들이 동사로 되어있는 것 같은데 어떤 의도가 있으신가요?그 질문을 받고 순간 아차 싶었고 순간 당황해서 RESTful하게 개발하려 했는데 그 부분은 놓친 것 같다라고 답변하였지만 명확하게 정리하지 못한 것 같아서 정리를 해보려 한다. RESTful API REST는 REpresentational statue Transfer의 약자로 웹의 장점을 최대한 잘 활용할 수 있는 제약조건의 집합이다. REST 아키..
M1 Pro 구매 M1 Pro를 구매하게 되었습니다. 기존에 쓰고있던 장비 기존 사용하던 2018 인텔 맥북 Pro도 아직 현역이기는 하지만 빌드나 4k모니터를 연결해서 사용 시 발열을 잡기가 쉽지 않았기 때문에 바꾸기로 결심하였습니다. 옵션 화면 크기는 14인치를 선택하였는데 기존에 15.6인치를 쓰고 있었지만 14인치도 크게 작다는 느낌을 받지 못하였고 14인치와 16인치의 무게 차이가 상당히 커서 14인치가 좋을 것이라는 생각에 선택하게 되었습니다. (M1 Pro기준 14인치: 1.6kg, 16인치: 2.1kg) 색상은 언제나 사용하던 스페이스그레이를 사용하였고 램은 기존에 16GB를 사용하고 있었는데 항상 부족하다고 느껴서 32GB로 선택하였습니다. SSD는 1TB로 올렸는데 기존에 256GB를 사용하고 있었고 개..
뒤늦은 2022 상반기 회고 벌써 7월이 끝나 8월이 시작되려는데 회고를 남겨보고 싶었던 이유도 있었고 마침 그동안 한 일에 대해 정리하다 보니 뒤늦은 회고를 작성하게 되었다. 이번 상반기는 개인적으로 가장 바쁘게 지낸 시기가 아니었나 생각한다. 1. 회사 기술적인 큰 도전은 거의 없었던 상반기였던 것 같다. 1 PCI-DSS 글로벌 결제 데이터 보안 인증인 PCI-DSS 인증을 위한 요건을 맞추기 위해 준비하였고 그 과정에서 자체 KMS를 개발하긴 하였으나 아마 나중에는 외부 KMS 솔루션을 도입하지 않겠냐고 생각하였다. 결과적으로는 많은 분들의 노력으로 PCI-DSS 인증은 획득하였다 2 부킹엔진 개선 어쩌다 보니 PCI-DSS 이후 부킹엔진 개선 쪽을 맡게 되어 분석과 개발환경 개선, 리팩터링등을 맡게 되었다. 뒤에 나오겠지만..
[코틀린 인 액션] 2장. 코틀린 기초 함수와 변수 코틀린 함수 기본구조 fun 함수이름 (파라미터 목록) : 반환타입 { return 함수 본문 } // 아무런 값을 반환하지 않는 함수 fun printHelloWorld() { println("Hello World") } // 블럭문이 아닌 식으로 정의 가능 fun printHelloWorld() = println("Hello World") // if는 문장이 아니고 식(expression)이다. fun sum(a: Int, b: Int): Int { return if (a > b) a else b } // 식이 본문인 함수 fun maxNum2(a: Int, b: Int) = if (a > b) a else b 반환 타입을 생략할 수 있는이유는 정적 타입 지정 언어여서 컴파일러가 타입추론..
[코틀린 인 액션] 1장. 코틀린이란 무엇이며, 왜 필요한가? 코틀린 주요 특성 정적 타입 지정 언어 자바와 마찬가지로 정적 타입 지정 언어 성능 런타임에 어떤 메서드를 호출할지 알아내지 않아도되 메서드 호출이 빠름 신뢰성 컴파일러가 검증하기 때문에 오류로 중단될 가능석이 적음 유지보수성 도구지원 코틀린의 철학 실용성 연구를 위한 언어가 아닌 실제 문제를 해결하기 위해 만들어진 실용적인 언어 이미 성공적으로 검증된 해법과 기능에 의존함 간결성 코드가 간결하여 파악하기 쉬움 getter, setter, 생성자 파라미터를 필드에 대입하는 로직 등을 묵시적으로 제공 안전성 JVM 기반으로 동작하여 이미 상당한 안전성을 보장받음 상호운용성 자바와 매우 높은 호환성을 가짐 참고문서 코틀린 인 액션 - 드미리 제로프, 스트나 이코바
블록체인이란 블록체인 정보를 블록이라는 단위로 저장하여 블록들을 체인형태로 묶은 저장기술 블록 헤더에 블록 정보와 이전 블록의 해시(hash pointer)를 가짐 해시를 가지기떄문에 앞에 어떤 블록이 와야하는지 알 수 있음( 블록의 순서를 결정할 수 있음) 블록 높이 이전 블록이 아래, 최근블록이 위로오도록 sort하면 블록이 생성될때마다 높이가 증가 블록의 순서 = 높이라고함( 첫번째 블록은 편의상 높이를 0) 블록 생성 주기 블록생성 시간: 다음 블록을 생성하기까지 걸리는 시간 블록생성 주기: 생성 시간이 비교적 일정한경우 합의(Consensus) PoW: 계산이 어려운 문제를 풀어 제안자격을 취득 PoS: 플랫폼 토큰을 보유한 양과 기간에 따라 결정적으로 또는 확률적으로 취득 BFT: 정해진 순번 또는 정해진..
Test Double, Stub, Spy, Mock 대역(Test Double) 외부요인(테스트 대상의 파일 시스템접근이나 DB에서 데이터 조회, 외부 서버와 http통신)에 의존적인 테스트는 때때로 원활한 테스트를 진행하기 힘든 경우가 발생할 수 있다. 이때 실제 객체를 대신 사용할 객체를 테스트 더블이라고 한다. 테스트 더블의 종류에는 Stub, Fake, Spy, Mock등이 있다. Stub 구현을 단순한 것으로 대체한다. 전체 기능이 아닌 테스트에 맞게 일부 기능에 집중하여 원하는 기능대로 동작하게 구현한다. Fake 실제 구현이 존재하는 객체로 실제로는 사용할 수 없지만, 테스트를 위해 사용하는 객체 수행하려는 테스트가 외부 환경에 의존적인 경우(fake DB) Spy 호출된 내역을 기록한다. 기록한 내용은 테스트 결과를 검증할 때 사용한다. M..