바이너리 서치는 매우 효율 적이고, 이해하기도 쉽기 때문에 많은 자료구조, 알고리즘 서적의 처음에 등장한다. 구현은 매우 간단하다. 하지만 종종 실수한다. 바이너리 서치와 비슷한 bisect 구현도 추가한다. 구현을 찾아보다 보면 mid 구하는 식에 가 쓰이기도 하고, 이 쓰이기도 한다. 무슨 차이가 있나 싶은데. 차이가 없다. 그런데, 어떤 문제 풀이...
heap 의 사전적 의미는 더미 라는 뜻이다. 대충 쌓아 올린다는 뜻이다. 그런데 꺼내는건 쉽지 않다. heap push 와 pop 을 간단하게 구현했다. 인터넷에 거창한 구현들이 많다. 다들 너무 거창하고 주석도 너무 자세하다. min heap 의 간단한 구현체다. 이 구현은 0번 인덱스 까지 사용한다. 그래서 parent 를 계산하는 식이 조금 다를 수...
퀵 정렬은 평균적으로 가장 빠르고, 이해하기도 쉬운 정렬 알고리즘이다. 이 알고리즘의 핵심 알고리즘은 partition 이다. 흔히 pivot 이라고 부르는 메소드다. partition algorithm 은 Lumuto, hoare 두개의 방법이 존재한다. 최악의 경우에서 hoare 가 더 좋은 성능을 가진다. 하지만, hoare 는 구현하기 굉장히 까다...
이 장의 내용 빌드가 느려지는 근본 원인 찾기 테스트 코드 속도 개선 기법 자동 빌드 속도 최적화 기법 좋은 단위 테스트는 수행 시간도 짧다. 속도 개선을 위해서 테스트 시간이 너무 길어지면 사고 흐름을 놓칠 때까지 멍하니 화면만 응시하고 있거나, 빌드를 걸어놓고 다른 작업을 시작해야 한다. 문제를 발견하고 대응하기 까지의 시간이 늦어질 것...
이 장의 내용 제2의 JVM 언어의 종류 및 특징 그루비로 단위 테스트 작성하기 BDD 도구 맛보기 JVM 언어 혼용의 조건 제2의 JVM 언어들은 자체만의 독자적인 문법과 느낌을 추구하지만, 공통점이 하나 있다. 모두가 한결같이 자바보다 더 간결하고 푠현력도 좋다고 주장한다는 점이다. 이점 자질구레한 문법이 적어 핵심 로직이 자 ㄹ드러난다. ...
제품 코드는 단위 테스트를 쉽고 빠르게 작성할 수 있도록 설계해야 한다. 테스트 가능 설계는 테스트코드에서 클래스를 생성하고, 구현 일부를 대체하고, 다른 시나리오를 시뮬레이션하고, 원하는 실행경로를 선택하는 등의 작업을 쉽게할 수 있도록 해준다. 테스트 용이성이 떨어질 수록 테스트를 작성하는 프로그래머의 부담이 커진다. 모듈러 설계 SOLID 설계 원칙...
코드 주석과 관련된 테스트 냄새 미흡한 기대치 관리로 인한 테스트 냄새 조건부 실행과 관련되 테스트 냄새 신뢰할 수 있는 코드를 만들기 위해서는 테스트 자체도 믿음직 해야 한다. 주석으로 변한 테스트 주석으로 변한 테스트는 한낱 잡음에 불과하다. 개선 방법 이해해 보려 노력하고 검증한다. 이해 된다면 주석을 풀고 파악한 목적이 더 잘 표현되게...
인지부하를 가중시키는 테스트 냄새 유지보수 악몽에 시달리게 하는 테스트 냄새 불규칙한 실패를 초래하는 테스트 냄새 중복 악의 근원 : 어설픈 최적화, 중복 중복이 나쁜 이유 : 개념과 논리를 곳곳에 흩어놓아 코드를 이해하기 어렵고 불투명하게 만든다. 더욱이 코드를 수정하려면 중복된 곳을 모두 찾아 일일이 손봐줘야 한다. 상수 중복 : 지역 변수로 만들어 ...
단언문과 관련된 테스트 냄새 제품 코드에 흩뿌려진 정보와 관련된 테스트 냄새 과하거나 불필요한 세부 정보와 관련된 테스트 냄새 테스트란 코드에 바라는 동작과 가정을 프로그래머식으로 표현한 것, 읽은 프로그래머는 코드가 해야 할 일을 이해하고 실제로 한 일이 무엇인지 말할 수 있어야 한다. 기본타입 단언 단얼하려는 이유나 의도가 의미를 알 수 없는 단어나...
테스트 더블로 할 수 있는 일 테스트 더블의 종류 테스트 더블을 효율적으로 활용하기 위한 지침 스텁 예전의 의미 : 제품 코드가 온전히 준비되기 전까지 사용할 대용품 테스트에서 의미 : 대상 코드를 격리하고, 속도를 개선하고, 예측 불가능한 요소를 제어하고, 특수한 상황을 시뮬레이션하고, 감춰진 정보를 얻어내는 용도 테스트 더블의 위력 테스트 대...
무엇이 좋은 테스트를 만드는가? 테스트를 대하는 태도 신뢰할 수 있는 테스트의 중요성 무엇이 테스트를 좋게 만드는가? 가독성과 유지보수성 소스파일안에서 코드는 적절히 구조화 되었는가? 무엇을 검사하는가? 안정적이고 반복 가능한가? 테스트 더블을 잘 활용하는가? 읽기 쉬운 코드가 유지보수도 쉽다 가독성과 결함 밀도는 반비례 한다는 연구...
단위테스트의 가치 개발자 생산성을 향상하는 테스트 설계 도구로써의 테스트 더 좋은 테스트 테스트를 코딩이 끝나면 다른 사람이 해주는 일 혹은 코딩이 다 끝냈다고 선언하기 전에 자신이 짠 코드를 이리저리 찔러보는 정도로 치부하던 시절. 자동화된 테스트는 개발자가 직접 작성해야 하고, 그중 하나라도 실패하면 빌드 전체가 실패한다라는 인식은 널리 퍼졌다. 테스...
Microservices architecture on Azure Kubernetes Service (AKS) 원문페이지 Architecture Component list Azure Kubernetes Service(AKS), Kubernetes cluster, Virtual network, Ingress, Azure Load Balancer, Ext...
공부는 꾸준히 하고 있으나 오랜만에 글을 올린다. 조금 나태해 지긴 했다. 꾸준히 하긴 했지만, 예전처럼 열심히 하고 있진 않다. 다시 주말이 다가오고 있다. 복습도 하고 마음을 가다듬어 다시 열심히 해봐야겠다. Unit 20, 21 - 수동태 (Passive) 자동사/타동사 Somebody cleans the office every day → The ...
이번주 공부한 강의들 이다. 화요일부터 일요일까지 6일 진행 했고 하루 빼먹고 5일 진행 했다. 책의 진도로 보면 21강 까지다. 연습문제를 모두 풀진 못했지만 꾸준히 했다. 내일 부터는 시간을 더 내서 밀린 연습문제를 풀어나가야지 라고 생각하고 있다. 난이도는 아직 내가 아는 수준의 문법만 나와서 그렇게 어렵진 않다. 하지만 일부는 모르는 내용도 있었...
아이가 늦게 자면서 늦게 공부를 시작했다. 한시간 하는게 고작 이었다. 연습문제 못 푼것도 한꺼번에 모아서 풀어보고 싶었는데 주말에 그것도 못 하게 됐다. 내일은 동생 집들이를 가야 한다. 영어 출첵이야 문제가 없지만, 연습 문제도 못 풀어보는 공부를 계속 해야 하는 상황이 답답하다. 이번주 주말에 연습문제를 풀어보지 못한다면, 주중 아침에 회사에서 라도 ...
세상 어려운게 꾸준히 하는 거다. 목/금 바쁘고 힘들어서 공부를 못 했다. 매일 스쿼트 100개도 지키지 못한 이틀 이었다. 역시 작심 삼일이다. 영어에 더 집중하는 하루하루를 보내보자. 토요일 새벽에 공부한 내용을 올린다. 토요일 오후 공부도 꼭 해서 글을 올렸으면 한다. Unit 11 - 과거 시제 의문문 We Just had dinner : I us...
영어 공부 이틀째. 동영상 강의는 4강, 책은 10강을 넘어가고 있다. 너무 빠른 동영상 강의속도에 책 excercise quiz 를 모두 풀고 있진 못 하고 있다. 하루에 2시간 정도 투자하는게 고작인 나로써는 어쩔수 없는 선택 으로 보인다. 대신 주말에 복습하고 많이 읽어 봄 으로써 부족함을 채워야 한다. 내가 다른걸 잘하지는 못하지만. 그래도 꾸준히 ...