본문 바로가기

📚 전체글176

[일일 회고] 22.02.10~11 - 웹클라이언트, 소켓 프로그래밍 📚TIL 웹브라우저와 동일하게 작동하는 간단한 웹 클라이언트를 구현했다. DNS Lookup으로 URI에서 IP 주소를 알아내고 간단한 Socket 프로그래밍을 통해 서버와 HTTP 통신을 하였다. socket()과 입출력 스트림을 제외하고 HTTP 표준 라이브러리 없이 직접 구현했다. ✅ 구현해보니 디자인 패턴이었다? 처음 Client와 Request, Response 객체를 설계했다. 특히 Request 객체 생성 시 많은 매개변수를 넣어 한 번에 생성하고 싶었다. (uri, get, header 들) 처음엔 매개변수 별 생성자를 많이 만들었다. 하지만 header의 개수가 정해진 것이 아니었기 때문에 문제가 있었다. 그래서 처음에 빈 객체를 리턴하고 이를 세터 메서드로 초기화했다. 그렇게 구현하던 .. 2022. 2. 11.
생성자에 매개변수가 많다면 빌더 패턴을 써볼까?! (HTTPClient와 lombok @Builder) 🧰 이 글은 책 이펙티브 자바 3판 Item 2와 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 목차 1. 점층적 생성자 패턴(Telescoping Constructor pattern) 2. 자바빈즈 패턴(JavaBeans pattern) 3. 빌더 패턴(Builder pattern) - 빌더 패턴 사용 예 : java.net +a) lombok의 @Builder를 사용한 빌더 패턴 사용 +a) 다른 언어의 빌더 패턴 한 줄 요약 : 생성자에 매개변수가 많다면 빌더 패턴(Builder pattern)을 써보자. 이전 글 객체 생성할 때 '생성자' 대신 '정적 팩토리 메서드'를 써볼까? 🏭 에서 생성자 대신 정적 팩토리 메서드를 사용하면 좋은 이유를 알아봤다. 그렇다면 생.. 2022. 2. 11.
[일일 회고] 22.02.09 - 커뮤니케이션과 짝 프로그래밍 📚TIL 오늘은 JK의 소개로 pair programming(짝 프로그래밍)을 했다. 짝 프로그래밍을 한다는 이야기를 듣고 커뮤니케이션을 잘해야겠구나란 생각에 스치듯 봤던 “커뮤니케이션이란 무엇인가? 어떻게 해야 효과적으로 협업을 할 수 있는가? (한빛 미디어 의장 박태웅)” 영상을 봤다. 영상 내용 중 두 가지가 기억에 남았다. 원활한 커뮤니케이션을 위해서는 1. 상대방을 짐작하지 말고 2. 텍스트가 아니라 컨텍스트(문맥)을 주고받아야 한다는 것이다. 상대방을 짐작하지 않기 : 예를 들어 A란 사람이 내 어깨를 치고 뛰어갔다. 저 사람은 왜 내 어깨를 치고 가지? 안 좋은 인상이 남을 수 있다. 하지만 A란 사람은 화장실이 너무 급해 어깨를 친 상황조차 인식하지 못할 수 있다. 텍스트가 아닌 컨텍스트를.. 2022. 2. 9.
[일일 회고] 22.02.07~08 - 도커 컴포즈, DB, JDBC 🐳 📚개발 일지 어제오늘 프로젝트는 도커를 활용해 mysql:5.7 컨테이너 올리고 100만 개의 더미 데이터를 생성한다. Java에서 간단한 사용자 입력 콘솔 프로그램을 만들어 JDBC를 가지고 CRUD 작업을 했다. 내용에 앞서 과연 도커 컨테이너를 통해 데이터베이스를 운영하는게 좋은 방법일까? 테스트 용도의 DB는 상관 없겠지만 실제 프로덕션 DB는 안전해야하기 때문에 도커보다 로컬이나 클라우드가 제공하는 DB는 어떨까? ✅ 도커컴포즈 활용 도커 명령어를 활용한 컨테이너 실행은 환경 변수나 데이터 복사 붙여 넣기가 불편했다. mysql root 비밀번호 노출도 있었다. # 도커 명령어 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -.. 2022. 2. 8.
Design by Contract(계약에 의한 설계)와 테스트 코드 그리고 예제📝 * 이 글은 책 소프트웨어의 품격 5장과 하단 reference를 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 Design by Contract(계약에 의한 설계, DbC)란 무엇인가? 사전 조건, 사후 조건, 페널티, 불변 조건 세 가지 계약 검사 계약 검사 예제(BoundedSet) DbC와 Test Code Design by Contract(계약에 의한 설계)란 무엇인가? Design by Contract(이하 DbC) 개념은 1980년대 버트란드 마이어가 처음 제시했다. 아이디어는 일상에서의 계약 개념과 동일하다. 예를 들어 통신사-고객 사이의 통신 계약을 맺었다. 통신사는 고객에게 정상적인 시스템을 제공해야 하고 고객은 요금을 내는 의무를 가진다. 이를 소프트웨어 시스템 중 메서.. 2022. 2. 7.