전체 글

TDD(Test-Driven Development) 정의 TDD는 소프트웨어 개발 프로세스에서 테스트가 개발을 주도하는 방식입니다. 개발자는 코드를 작성하기 전에 실패하는 테스트 케이스를 먼저 작성합니다. 그 후, 테스트를 통과할 수 있는 최소한의 코드를 작성합니다. 마지막으로, 코드를 리팩토링하여 요구 사항을 만족시키는 동시에 코드의 품질을 향상시킵니다. 중요성 품질 보증: TDD는 버그를 사전에 찾아내어 소프트웨어의 품질을 높이는 데 도움이 됩니다. 설계 개선: 테스트를 먼저 작성하면 더 깨끗하고 유지 관리가 용이한 코드를 설계하도록 강제합니다. 문서화의 역할: 테스트 케이스는 기능의 사용 방법과 요구 사항을 문서화하는 역할을 합니다. 리팩토링 용이성: 이미 작성된 테스트 케이스가 있기 때문에 코드를..
AD(Active Directory)란? AD는 마이크로소프트가 윈도우 환경에서 사용하기 위해 개발한 ※LDAP, ※디렉토리 서비스의 기능이다. 사용자가 공유된 자원의 위치와 해당 서버의 로컬 사용자 계정 정보를 모두 알고 있지 않는다 하여도, 중앙에서 Admin이 사용자 인증-권한 부여 처리가 가능하도록 만들어, 기업 내의 자원 및 권한 관리에 용이하다. ※LDAP : TCP/IP 상위에서 디렉토리 서비스를 조회, 수정하는 응용 프로그램 ※디렉토리 서비스 : 분산된 여러 자원에 대한 정보를 중앙의 저장소에 통합, 조직관리를 진행하는 응용 소프트웨어 AD의 구성 요소 도메인(Domain) AD에서의 가장 기본이 되는 관리 대상 단위 (AD가 설치된 윈도우 서버) 하나의 도메인 트리 / 포레스트 도메인의 ..
Docker란? 도커는 리눅스의 App들의 프로세스를 격리하여 컨테이너로 실행하고 관리하는 오픈소스 프로젝트입니다. 막상 사용해보면 VM과 같은 내 컴퓨터에 독립된 리눅스 운영체제 환경이라고 생각할 수 있습니다. 틀리진 않은 설명입니다. VM은 아니지만 VM같은 무언가가 설치되기는 하거든요. 그리고 무엇보다 매우 가볍습니다. VM을 돌려보신분들 이라면, VM을 하나 키면 잡아먹는 리소스가 상당히 거대하다는 걸 알 수 있습니다. 어떻게 이렇게 가볍냐고 하면, 여러 VM은 Linux Kernel이 따로 존재하는 반면에 도커는 여러개의 컨테이너가 하나의 Linux Kernel을 공유합니다. 하나의 머신에 여러 이미지를 사용할 수 있게 만들었습니다. 개발환경이나 특정 프로그램을 도커에 설치하는 이유는 간단합니다..
웹에서 로그인을 어떻게 판별할까? HTTP의 특성중에는 무연결, 무상태성이 존재합니다. 즉, 해당 특성들로 인해서 연결의 정보를 잊어버립니다. 그래서 요청할 때마다 새로 연결을 해주어야 합니다. 이 말인 즉슨, 매 페이지마다 로그인이 되어있는 상태인지를 확인하는 로그인 인증 방식이 필요합니다. Sessoin이란 유저가 웹 서비스에 접속해 있는 상태를, 하나의 단위로 취급하고 그 자체가 session 이라 칭한다. 이 각 단위(session) 마다 id를 부여하고 브라우저에서 구별한다. 이 브라우저가 닫히거나, 관련 쿠키가 삭제되면 해당 session이 제거된다. 1. 브라우저에서 로그인을 위한 정보를 서버에 전송합니다. 2. 서버는 메모리에 사용자를 저장합니다, 그 후 세션 아이디를 Cookie로 전달합..
웹 사이트를 제작하다가 보면, 현재 로그인한 유저 정보를 한번, 두번, 수십번씩 끌여다 쓰게 된다. 내 정보를 불러올때, 내 주문 정보를 불러올때 등등, 대부분이 " 현재 로그인한 유저 정보 " 를 수집하게 된다. React를 사용하고 있는 현재로써, 내가 했던 코드들은 아래처럼 props 를 보내서 선언하고 지정하고를 반복했다. function MyInfo() { const token = getAuthToken(); const decodedToken = tokenUserInfo(token); const memberUid = decodedToken.UID; const [selectedTab, setSelectedTab] = useState('profile'); // 기본값 설정 const ProfileS..
· SpringBoot
Spring 관련 글들을 찾아보면 가끔 controller에 반환형에 responseEntity가 있는것을 볼 수 있다. 아래와 같은 코드들을 보면 반환 형과 을 선언한 것을 알 수 있다. @GetMapping("/{memberUid}") public ResponseEntity getAddressesByMemberUid(@PathVariable String memberUid) { List addresses = addressService.getAddressesByMemberUid(memberUid); return ResponseEntity.ok(addresses); } // 주소를 등록하는 엔드포인트 @PostMapping("/add") public ResponseEntity addAddress(@Requ..
만들고 있는 사이트에 쿠폰기능이 필요하다. 관리자가 사용 가능한 일자를 등록한 후 완료하면 기간동안 유저들에게 배포된 쿠폰이 유효기간 동안 지정한 할인율 만큼 적용할 수 있어야 한다. 결제페이지에 넘어와서 완전히 결제완료가 반환되기 전까진 사용처리가 되면 안된다. 쿠폰 상세 정보: 관리자가 쿠폰을 생성할 때 입력해야 하는 정보는 다음과 같습니다: 쿠폰 이름 할인율 발행 개수 적용 카테고리 발행 시작일 발행 종료일 사용 시작일 사용 종료일 유저 정보와는 위와 같이 매칭된다. 작성해 놓았던 ERD를 기준으로 해당 테이블들을 JPA 로 작성한다. 존재해야 하는 기능들을 정리해보면 아래와 같다. 1. 전체조회가 가능해야 한다 2. 발급 일자별 조회가 가능해야 한다. 3. 쿠폰 상태별 조회가 가능해야 한다. 4...
이전 포스트에서 요구사항을 정의하던 것을 마무리하고, ERCLOUD를 이용해 설계까지 진행했다. 스타일이 조금씩 다르지만, 설계단계에서 충분히 합의하고 진행할 수 있는 부분이기 때문에 세부적인 부분까지 통일하진 않았다. 어느정도 필요한 필드들과 테이블을 빼 설계해보니 아래와 같은 ERD 설계도가 나왔다. JPA를 사용하여 설계할것이기 떄문에 직접 rdbms를 켜서 테이블을 생성하진 않지만, entity를 구성하고 알맞은 참조관계를 적용시키기 위한 erd 설계는 한눈에 알아볼 수 있는 관계도라는 것이 메리트가 크다고 생각한다. 물론 각 rdbms 툴마다 테이블들을 가시화해주는 기능들이 생기지만 무거워서 잘 안써봤다. 또한, 생성 된 후 관계를 보는것과 생성하기 위한 관계를 보는 것은 많이 다르기 때문에 d..
함형우
03.23 시작