전체 글579 Builder 패턴 Builder 패턴 Builder 패턴은 객체 생성에 관련된 디자인 패턴으로, 객체를 생성하는 방법과 표현하는 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 합니다. DTO에 Builder를 사용하는 주요 이유는 다음과 같습니다: 1. 가독성 향상 객체 생성시에 원하는 매개변수를 선택적으로 입력하고 가독성 좋은 코드를 작성할 수 있습니다. 생성자에 많은 수의 매개변수가 있는 경우, 어떤 값이 어떤 변수에 할당되는지 이해하기 어렵습니다. 반면, Builder 패턴을 사용하면 각 변수에 어떤 값이 설정되는지 명확하게 파악할 수 있습니다. // Without Builder Product product = new Product(1, "Book", 1500, "Good book", ".. Computer Science/디자인패턴 2023. 7. 5. 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 - 고려사항 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 - 고려사항 요구사항 전체 API 주소 설계 API 요구사항 반영 API 명세를 위해 고민한 것들 Mock API Controller 구현 Spring Boot 컨트롤러 작성 완성된 소스코드 제출 1. 전체 상품 목록 조회 - Method : Get - Local URL : http://localhost:8080/products - Param : page={number} 구현 사항 findAll(@RequestParam(defaultValue = "0") int page) 전체 상품 목록 조회 API는 Parmeter를 통해 페이지네이션을 고려하고 있습니다 default value를 주어 페이지별 상품 조회도 가능하도록 하였습니다 Controller @GetMa.. 프로젝트/카카오 테크 캠퍼스 2023. 7. 5. Cloud Cloud 클라우드는 언제 어디서든 원하는 만큼 네트워크를 통해 접근 할 수 있는 서비스를 의미합니다. 핵심 특징 On-Demand Self Service 사용자가 필요에 따라 컴퓨팅 자원을 자동으로 제공받을 수 있는 서비스입니다. Broad Network Access 다양한 표준 장치를 통해 네트워크에 접근이 가능합니다. Resource Pooling 사용자에게 동적으로 할당되며 다시 재할당 될 수 있는 공유 풀을 이용하는 서비스입니다. Rapid Elasticity 요구에 따라 신속하게 및 유연하게 자원을 할당하거나 회수하는 기능입니다. Measured Service 사용된 자원이 모니터링, 제어, 보고될 수 있는 기능으로 서비스는 이용한 만큼만 비용을 지불하는 방식을 따릅니다. 서비스 모델 SaaS.. Computer Science/네트워크 2023. 7. 4. 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 - 예외처리 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 - 예외처리 1. 전체 상품 목록 조회 Method : Get Local URL : http://localhost:8080/products Param : page= @GetMapping("/products") public ResponseEntity findAll(@RequestParam(defaultValue = "0") int page) { List responseDTO = new ArrayList(); // 상품 하나씩 집어넣기 responseDTO.add(new ProductRespFindAllDTO( 1, "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전", "", "/images/1.jpg", 1000 )); responseDT.. 프로젝트/카카오 테크 캠퍼스 2023. 7. 4. Spring Security Spring Security Spring Security는 Spring 기반의 애플리케이션의 보안(인증 및 권한, 인가 등)을 담당하는 프레임워크입니다. 웹 보안 및 메소드 보안, CSRF(Cross Site Request Forgery) 방지, 세션 관리 등 다양한 보안 기능을 제공합니다. 의존성 설치 방법은 build.gradle에 아래 한 줄을 추가하면 된다 implementation 'org.springframework.boot:spring-boot-starter-security' // 스프링 시큐리티 제공 Spring Security의 주요 특징 Comprehensive and extensible support: 인증, 인가, 세션 관리, 비밀번호 인코딩 등 다양한 보안 기능을 지원하며, 이를 .. DEV/Java 2023. 7. 4. 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 과제 분석 요구사항 🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 최종 설계에서 제공 받은 API 명세와 똑같은 응답 반환하는 Controller 구현 Data는 Dummy를 임의로 만들어서 구현 필수 제출 사항 API 주소 설계 소스 코드 API 구현 1. 전체 상품 목록 조회 Method : Get Local URL : http://localhost:8080/products Param : page= @GetMapping("/products") public ResponseEntity findAll(@RequestParam(defaultValue = "0") int page) { List responseDTO = new ArrayList(); // 상품 하나.. 프로젝트/카카오 테크 캠퍼스 2023. 7. 3. Tistory Toc 추가하는 방법 Tistory Toc 추가하는 방법 종강도 했겠다 블로그를 조금 꾸며보고 싶어서 TOC를 추가하기로 했다 tistory-table-of-contents를 참고해서 만들었는데 메뉴얼도 잘되어 있고, 적용하기 찹 쉽다 내 메인 테마가 Tistory의 #1 테마인데 TOC 기준이 되는 테마가 딱 #1이어서 매우 굳이었다 내 입맛에 맞도록 수정해보자 처음 TOC를 설정하면, TOC가 왼쪽 상단에 적용 된 것을 볼 수 있다 일단 TOC를 오른쪽 상단에 위치시키고, 글씨 색도 Blue 계열로 바꾸고 싶었다 내 요구사항은 CSS만 변경하면 쉽게 적용 할 수 있는 것들이었다 TOC 위치 변경방법 /* custom card style */ .toc-app-common { display: inline-block; padd.. ETC 2023. 7. 1. 🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 최종 설계 🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 최종 설계 - 부족한 기능에 대한 요구사항을 미리 예상할 수 있는가? - (예를 들면 상품등록 api가 기존 요구사항에는 없는데 추후 필요하지는 않을지, 이런 부분들을 생각하였는지) - 요구사항에 맞는 API를 분석하고 사용자 시나리오를 설계하였는가? - (예를 들어 배포된 서버와 화면 설계를 제시해줄 예정인데, 특정 버튼을 클릭했을 때 어떤 API가 호출되어야 할지를 아는지) - 응답되는 데이터가 프론트앤드 화면에 모두 반영될 수 있는지를 체크하였는가? - (예를 들어 배송관련 비용이 있는데, 이런것들이 API에는 없는데 이런 부분을 캐치할 수 있는지) - 테이블 설계가 모든 API를 만족할 수 있게 나왔는가? - (테이블이 효율적으로 나왔는가 보다는 .. 프로젝트/카카오 테크 캠퍼스 2023. 6. 29. 🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 세부 설계 🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 세부 설계 🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 기본 설계에서는 API 요청 응답에 따라 테이블을 예측해서 작성해 보았습니다 오늘은 화면 설계서와 기본 설계 과정에서 만들었던 테이블을 최적화하는 시간을 가졌습니다. User(사용자) Request Body를 보면 유저 이름, 이메일, 비밀번호가 필요하다 { "username" : "meta", "email" : "meta@nate.com", "password" : "meta1234!" } - id : PK - userName : 유저 이름 - email : 이메일 - password : 비밀번호 - createDate : 생성 날짜 - updateDate : 수정 날짜 Product(상품) .. 프로젝트/카카오 테크 캠퍼스 2023. 6. 28. TypeORM의 Entity 참조는 어떻게 일어나는가? TypeORM의 Entity 참조는 어떻게 일어나는가? 🐥 카카오테크캠퍼스 - 2단계 1주차 기본 Entity 설계를 하는데, 평소에 TypeORM의 Entity 참조는 어떻게 일어나나 궁금해졌다. Entity 설계를 하니 FK 설정에 대해서 자연스럽게 고민하는데, 자동으로 Entity를 참조하고, 필요한 필드만 가져와 뿌리던 그 편리함은 어디서 왔지? 싶었다 Code 분석 위의 코드는 캡스톤 할 때 만든, User 테이블이다. 조금 손봐서, UserMeta 테이블을 Entity로 참조하도록 변경했다 TypeORM의 코드를 까보자 그렇다면, 예시로 0neToOne 어노테이션을 확인했다 export declare function OneToOne( typeFunctionOrTarget: string | ((.. DEV/Backend 2023. 6. 27. 조회 vs Join 무엇이 더 효율적인가 조회 Vs Join 무엇이 더 효율적인가 🐥 카카오테크캠퍼스 - 2단계 1주차 과제 분석을 하고 있는데, 자연스럽게 조회와 Join 중 무엇이 효율적인가 고민하게 되었습니다 사실 그냥 만드는거라면, 쓱쓱 만들면 되는데 그런게 아니라 대용량 처리나 잦은 조회 등의 문제도 생각해보고 싶었습니다 일단 조회(DB Lookup)와 조인 연산은 관계형 데이터베이스에서 수행하는 일반적인 작업입니다. 둘 다 데이터베이스로부터 정보를 검색하는 방법이지만, 특정 시나리오에 따라 성능에 다른 영향을 미칠 수 있습니다. 1. 데이터베이스 조회 (DB Lookup) DB Lookup은 특정 데이터를 찾기 위해 데이터베이스의 단일 테이블을 쿼리하는 것을 포함합니다. 예를 들어, Customers 테이블이 있고, ID로 고객의 세.. DEV/Backend 2023. 6. 27. 🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 기본 설계 🐥 카카오테크캠퍼스 - 2단계 1주차 기본 Entity 설계 User(사용자) - id : PK - userName : 유저 이름 - email : 이메일 - password : 비밀번호 - createDate : 생성 날짜 - updateDate : 수정 날짜 Product(상품) 상품 상세보기 - id : PK - productName : 제품 명 - description : 제품 설명 - image : 제품 사진 - price : 제품 가격 - starCount : 별점 - createDate : 생성 날짜 - updateDate : 수정 날짜 Option(옵션) - id : PK - productId : FK->Product.id - optionName : 옵션 이름 - price : 옵션 가격.. 프로젝트/카카오 테크 캠퍼스 2023. 6. 27. 이전 1 ··· 17 18 19 20 21 22 23 ··· 49 다음