본문 바로가기

전체 글172

[일일 회고] 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.
표준 예외를 사용하자 이 글은 책 이펙티브 자바 3판 Item72과 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 결론 자바 언어가 제공하는 표준 예외는 충분히 많다. 직접 만들지 말고 현재 상황에 맞는 표준 예외를 찾아 사용하자 이전 글 표준 라이브러리를 익히고 사용하자 에서 표준 라이브러리를 써야 하는 이유에 대해 알아봤다. 예외를 던질때도 마찬가지이다. 표준 예외를 사용하자. 왜? 읽기 쉬워진다. 메모리 사용량 감소, 클래스 적재 시간 감소, 예외도 직렬화에 포함되기 때문에 표준 사용이 좋다 자주 쓰이는 예외 예외 쓰임 예 IllegalArgumentException 허용하지 않는 값이 인수로 건네졌을 때 (null일 때 써도 되지만 따로) 나이를 나타내는 매개변수에 음수가 들어올 .. 2022. 2. 6.
자바에서 객체 복사는 clone()이 아닌 복사 생성자, 팩토리를 사용하자 이 글은 책 이펙티브 자바 3판 Item 13과 하단 Reference를 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 결론 객체를 복사할 때 특별한 경우(이미 Cloneable로 구현한 클래스로 사용하고 있을 때)를 제외하고 복사 생성자와 복사 팩토리를 사용하자 자바에서 객체를 복사할 때 어떻게 할까? 방법은 보통 2가지가 있다. 1. Object 객체의 clone() 메서드 + Cloneable 인터페이스 사용 2. 복사 생성자 또는 복사 팩토리 사용 1번의 경우 Object.clone() 메서드가 있다. 복사가 필요한 클래스에서 이를 오버 라이딩하여 사용한다. 이때 Cloneable 인터페이스를 받아 구현한다. Cloneable를 받지 않으면 clone()는 예외를 던지게 설계되어있기.. 2022. 2. 5.
[주간 회고] 22.01. 4주차 👫🕹 일기 형태로 작성되었습니다. 월, 화요일 멀티 프로세스, 스레드 스케줄링하는 프로젝트를 했다. 스케줄링에 라운드 로빈을 적용했다. 자바에서 처음으로 스레드 생성을 했다. 자세한 내용은 일일 회고로 대체한다. [일일 회고] 22.01.24~25 - 자바의 동시성 프로그래밍과 몇 개의 아이템 적용 JK의 그룹 리뷰 시간도 유익했다. 인간과 인공지능의 차이점은 인간은 '모르는 것'을 바로 모른다고 할 수 있다. 하지만 기계는 모른다고 대답하기 위해 기계가 알고 있는 모든 정보를 검색, 계산하고 마지막에 모른다고 한다. 모르는 것을 아는 것, 비판적 사고와 메타인지를 높이는 것은 배움에 중요한 요소다. 또한 이미 안다고 하는 것을 점검할 필요가 있다. 사실 모르는 것인데 해당 지식을 자주 접하면 친숙하게 느껴져.. 2022. 1. 30.