@Hudi
꾸준히, 의미있는 학습을 기록하기 위한 공간입니다.

달록의 Jacoco 적용기 (feat. Gradle)

August 16, 2022

이 글은 우아한테크코스 4기 달록팀의 기술 블로그에 게시된 글 입니다. 코드 커버리지란? 코드 커버리지란, 테스트 코드가 프로덕션 코드를 얼마나 실행했는지를 백분율로 나타내는 지표입니다. 즉, 테스트 코드가 실제로 프로덕션 코드를 얼마나 몇 퍼센트 검증하고 있는지를 나타냅니다. 코드 커버리지를 통해 현재 작성된 테스트 코드의 수가 충분한것인지 논의할 수 …


코드 커버리지(Code Coverage)란?

August 12, 2022

코드 커버리지(Code Coverage) 코드 커버리지란, 테스트 코드가 프로덕션 코드를 얼마나 실행했는지를 백분율로 나타내는 지표이다. 즉, 테스트 코드가 실제로 프로덕션 코드를 얼마나 몇 퍼센트 검증하고 있는지를 나타낸다. 코드 커버리지를 통해 현재 작성된 테스트 코드의 수가 충분한것인지 논의할 수 있다. 예를 들어 코드 커버리지 측정 기준이 실행된…


정적 분석(Static Analysis)이란?

August 10, 2022

높은 품질의 코드를 작성하기 위한 노력 우리는 높은 품질의 코드를 작성하기 위해 테스트 코드를 작성한다. 이런 코드 분석 방식을 동적 분석(dynamic analysis)라고 한다. 동적 분석은 런타임 환경에서 수행된다. 개발자는 개발자가 예상할 수 있는 모든 케이스에 대해 테스트 코드를 작성하고, 테스트 코드를 실행하여 현재 코드가 테스트를 모두 통과하…


젠킨스 빌드 최적화를 향한 여정

August 09, 2022

이 글은 우아한테크코스 4기 달록팀의 기술 블로그에 게시된 글 입니다. 문제 상황 현재 달록팀 젠킨스 설정상 프론트엔드와 백엔드 배포를 한 인스턴스에서 진행합니다. 브랜치에 소스코드가 병합되면, 이것이 트리거가 되어 프론트엔드와 백엔드 배포 파이프라인 스크립트가 실행됩니다. 아직 별도로 분기처리는 하지 않아 프론트엔드와 백엔드 배포가 동시에 시작됩니다.…


SSH config를 통해 간편하게 SSH 연결하기

August 08, 2022

유닉스 계열 OS에서는 SSH의 Config를 설정하여 마치 Alias를 설정한 것 처럼 간단하게 SSH 접속을 할 수 있다. 지금까지 달록 프로젝트를 하면서 SSH 연결을 위해 쉘 스크립트를 작성하고 사용했는데 바보같은 짓 이었다. ~/.ssh/config 생성 위 명령을 통해 파일을 생성한다. 이미 존재한다면, 존재하는 파일을 편집한다. 여기에 아래…


제 4장. 결과를 전달하는 HTTP 상태 코드

August 08, 2022

이 글은 책 ‘그림으로 배우는 HTTP & Network Basic’ 를 읽고 내용에 필자의 생각과 지식을 덧붙여 정리한 내용이다. 책 내용과 100% 일치하지 않을 수 있으며, 개인적인 견해나 경험이 들어갈 수 있다. 상태 코드는 서버로부터 리퀘스트 결과를 전달한다 클라이언트의 리퀘스트를 서버가 어떻게 처리했는지 알려주는 것이 상태코드이다. 이를 통해 …


제 3장. HTTP 정보는 HTTP 메시지에 있다.

August 07, 2022

이 글은 책 ‘그림으로 배우는 HTTP & Network Basic’ 를 읽고 내용에 필자의 생각과 지식을 덧붙여 정리한 내용이다. 책 내용과 100% 일치하지 않을 수 있으며, 개인적인 견해나 경험이 들어갈 수 있다. HTTP 메시지 HTTP에서 교환하는 데이터는 HTTP 메시지라고 불리며, 클라이언트의 요청 메시지를 리퀘스트 메시지, 서버의 응답 메시…


젠킨스 파이프라인 스크립트 형상 관리

August 07, 2022

이 글은 우아한테크코스 4기 달록팀의 기술 블로그에 게시된 글 입니다. 배경 최근 달록팀의 젠킨스 EC2 인스턴스가 문제가 생겼습니다. 여러 문제가 얽혀서 문제의 원인을 추적하고 해결하는 것 보다 인스턴스를 제거하고 새로 띄워 젠킨스를 다시 설치하는 것이 빠를 것 같았습니다. 다행히 젠킨스 설치 및 초기 세팅에 대한 문서화는 잘 되어 있어서 초기에 젠킨스…


Git 브랜치 전략 (feat. Git Flow, Github Flow)

August 03, 2022

브랜치 우리는 왜 브랜치를 사용할까? 브랜치를 별도로 생성하지 않고 메인 브랜치에서만 작업하면 어떤 일이 벌어질까? 메인 브랜치는 출시되고 배포된 코드를 위한 브랜치이다. 이 곳에 기능을 하나씩 개발하며 커밋을 반영하게 될 것이다. 그런데, 하나의 기능을 개발하기 위해 여러개의 커밋을 했다면? 기능이 완성되기 전 까지 메인 브랜치의 소스코드는 불완전한 상…


로깅을 System.out.println() 로 하면 안되는 이유

August 01, 2022

학습 배경 우테코 레벨3 팀프로젝트 3차 데모데이 요구사항 중 하나는 ‘디버깅할 수 있는 로그 파일 출력’ 이다. 이전까지는 로깅에 대해 전혀 신경쓰지 않고 있었는데, 슬슬 로깅에도 신경써야할 것 같다. 로깅의 목적, SLF4J, Logback, 어디서 어느 수준으로 무엇을 로깅해야하는지 깊게 공부하기 이전에 사람들이 System.out.println()…