실용주의 프로그래머 2
실용주의 접근법 소프트웨어 개발은 좋은 설계에 뿌리를 두고 있다. 시스템에서 중복을 제거하고, 파편화를 경계하라 환경의 변화로부터 프로젝트를 보호해야 한다. 요구사항을 모으고, 설계를 검증하고 코드 구현을 할 수 있는 예광탄 방식을 사용해보라 프로토타입의 사용을 고려해라 추상화된 언어의 사용법을 고민해라 추정을 통해 시간과...
실용주의 접근법 소프트웨어 개발은 좋은 설계에 뿌리를 두고 있다. 시스템에서 중복을 제거하고, 파편화를 경계하라 환경의 변화로부터 프로젝트를 보호해야 한다. 요구사항을 모으고, 설계를 검증하고 코드 구현을 할 수 있는 예광탄 방식을 사용해보라 프로토타입의 사용을 고려해라 추상화된 언어의 사용법을 고민해라 추정을 통해 시간과...
실용주의 철학 실용주의 프로그래머는 직면한 문제 너머를 고려한다. 실용주의 프로그래머는 자신이 하는 모든 일에 책임을 지며, 프로그젝트가 방치된 채로 끝장나는 것을 지켜보지 않는다. 실용주의 프로그래머는 변화를 두려워하지 않는다. 실용주의 프로그래머는 자신이 일하는 맥락을 이해하며, 자신의 소프트웨어를 훌륭하게 만들고자 한다. 실...
데이터베이스 설계 및 구축(11-12장) 논리적 설계를 물리적 설계로 전환하기 물리적 데이터베이스 설계의 입력물은 논리적 ERD 이고 산출물은 물리적 RD 이다. 물리적 데이터베이스 설계의 산출물은 데이터베이스를 구축하는데 이용된다. 엔티티 to 테이블 논리적 ERD 상에서 엔티티라 부르던 것은 테이블이 된다. 속성 to 칼럼 논리적 설계의...
결제 로직 설계 결제 로직을 어떻게 구현할 수 있을지를 고찰해보고자 합니다. 재고 관리 결제가 완료되면 상품의 주문이 완료된 것이고, 결제가 취소되면 상품의 주문이 취소된 것입니다. 모든 상품은 ‘유한’한 개수의 제한이 있기에, 우리는 상품의 재고 관리를 해야만 합니다. 일반적으로, 티케팅을 하는 과정을 생각해봅시다. 상품의 결제 화면에 들어간...
결제 로직 설계1 결제 로직을 어떻게 구현할 수 있을지를 고찰해보고자 합니다. 결제 단계 인터넷에서 상품을 주문하는 과정을 단순화해서 생각해봅시다. 상품을 고르고, 수량을 입력한 후 [주문하기] 버튼을 누릅니다. 결제 팝업이 뜬 후, 결제를 진행합니다. 결제가 완료되면, 완료 창으로 redirect 됩니다. 구매자 입장에서는, ...
데이터베이스 설계 및 구축(8-10장) 정규화 정규화란 ERD 내에서 중복을 찾아 제거해 나가는 과정을 말한다. 동일한 정보는 한 곳에서만 관리해야하기 때문이다. 제 1정규화 제 1정규화란 엔티티에서 하나의 속성이 복수의 값을 갖도록 설계되었을 때, 하나의 속성이 단일 값을 갖도록 하는 것을 말한다. 제 2정규화 제 2정규화는 주식별자가 아...
데이터베이스 설계 및 구축(5-7장) 업무 분석 ‘논덩이 효과’ 라는 용어가 있다. 초기 단계에서의 실수일수록 파급효과가 크다는 말이다. 대상이 되는 업무를 알지 못하면 프로그램을 개발하는 것은 어려운 일이다. 시스템 개발을 의뢰한 회사에 대한 일반 사항을 이해해야 한다. 전체 업무를 분석하기에 적당한 크기로 나눈다. 각 서...
데이터베이스 설계 및 구축(1-3장) 데이터베이스의 역사 초기에는 파일 개념으로 자료를 저장했다. 그러나 이 시스템에는 다음과 같은 문제가 있다. 데이터 종속성 데이터를 사용하는 프로그램의 구조가 데이터 구조(파일 구조)의 영향을 받는다는 것이다. 파일의 정보가 바뀌면, 이용하는 모든 프로그램도 바뀌어야 한다. 데이터 중복성 같은 내용의 데...
JPA에서 엔티티의 영속화(Persistence) 단계 엔티티의 생명주기 JPA에서 엔티티는 총 4가지 상태를 가집니다. New/Transient(비영속): 영속화되지 않은 상태로, 데이터베이스에 저장되지 않은 객체입니다. Persistent/Managed(영속): 영속 컨텍스트에 관리되는 상태로, 데이터베이스에 저장되었거나 저장될 예정...
자동으로 rebase 하는 pipeline 구축하기 모든 opened Merge Request 에 대해서 다른 merge request 로 인해서 target branch 의 변경사항이 생기는 경우, rebase 해주는 작업을 자동화했습니다. 시작점 새로운 기능의 개발을 위해서는 feature-v2 브랜치를 사용하고, 기존 이슈 대응은 maste...