목록전체 글 (138)
나의 개발일지(김지헌)
레이어드 아키텍쳐로 코드를 다 수정을 하고 테스트 코드를 작성할려고 합니다. 테스트 코드란? 더보기 우리가 작성한 코드를 의도한대로 동작을 하는지 작성하는 코드 입니다. 테스트 코드를 작성하는 목적은 "내 코드가 멀쩡하다!" 라고 증명하기 위한게 아니고, "내 코드가 멀쩡하다면 이렇게 결과가 나와야 한다!" 라고 생각하면 된다고 합니다. 테스트 코드의 종류 더보기 단위 테스트 (Unit Test): 가장 작은 규모의 기능을 테스트합니다. 통합 테스트 (Integration Test): 여러가지 기능을 합쳤을때 생기는 문제를 방지하기 위한 테스트입니다. E2E 테스트 (End-to-end Test): 끝에서 끝(종단 간)을 의미하는 End to end 테스트입니다. 쉽게 말하면 백엔드부터 시작해서 최종적으..
저장소 더보기 저장소 계층(Repository Layer) 이란? 저장소 계층(Repository Layer)이란 데이터 엑세스 계층(Data Access Layer)이라고도 불리는데요 대표적으로 Database와 관련된 작업을 수행하는 계층입니다. 모든 데이터가 Memory상에 존재하는 것처럼가정해 데이터 접근과 관련된 세부 사항을 감춥니다 대표적인 저장소 계층의 메소드 add(): 새 원소를 저장소에 추가합니다. get(): 이전에 추가한 원소를 저장소에서 가져옵니다. 저장소 계층을 구현했을 때 데이터를 저장하는 방법을 더 쉽게 변경할 수 있고, 테스트 코드 작성시 가짜 저장소(Mock Repository)를 제공하기가 더 쉬워집니다. 어플리케이션의 다른 계층에서는 저장소의 세부 사항이 어떤 방식으로..
컨트롤러 더보기 컨트롤러(Controller)란 클라이언트의 요청을 처리 한 후 서버에서 처리된 결과를 반환해주는 역할을 합니다. 컨트롤러(Controller)는 추가적으로 아래의 역할을 가지고 있습니다. 클라이언트의 요청(Request)을 수신합니다. 요청(Request)에 들어온 데이터 및 내용을 검증합니다. 서버에서 수행된 결과를 클라이언트에게 반환(Response)합니다. 프레젠테이션 계층(Presentation Layer) 이란? 3계층 아키텍처 패턴에서는 프레젠테이션 계층(Presentation Layer)이라고 표현되며, 대표적으로는 컨트롤러(Controller)로 사용됩니다. 사용자(클라이언트)가 서버에 요청(Request)를 하게되면 가장 먼저 만나게 되는 계층입니다. 하위 계층(서비스 ..
Layered Architecture Pattern 더보기 소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대를 제시합니다. 각각의 시스텀들과 그 역할이 정의 되어 있고, 여러 시스템 사이의 관계과 규칙등이 포함 되어 있습니다. 대표적으로 5가지 정도가 있는데 저장소 패턴 (Repository pattern) 영속적인 저장소에 대한 추상화 서비스 계층 패턴 (Service layer pattern) 유스 케이스(Usecase)의 시작과 끝을 명확하게 정의하기 위한 패턴 작업 단위 패턴 (Unit of work pattern) 원자적 연산을 제공합니다. 애그리게이트 패턴 (Aggregate pattern) 데이터 정합성을 강화하기 위한 패턴 3계층 아키텍처 (3-Layered Architecture) 더..
어제 카카오톡 자체가 아예 안되서 지금 올립니다. 객체 지향 설계 5원칙 더보기 객체 지향 프로그래밍 및 설계의 다섯가지 기본원칙을 SOLID라는 것으로 불리고 있습니다. SOLID는 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙의 맨 앞단어를 하나씩 가져와 만든 것 입니다. SOLID는 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 사용합니다. SOLID의 종류 단일 책임의 원칙 (Single Responsibility Principle, SRP) 개방-폐쇄 원칙 (Open-Closed Principle, OCP) 리스코프 치환 원칙 (Liskov substitution principle, LSP) 인터페이스 분리 원칙 (Interface segregation pr..
오늘부터 심화 주차에 들어갔다 soket io , 객체지향, Layered Architecture Pattern, 테스트 코드 정도 배우는거 같다. 1. 객체 지향이란? 더보기 객체 지향은 소프트웨어의 핵심을 기능이 아닌 객체로 삼으며 “누가 어떠한 일을 할 것인가?”에 초점을 맞춥니다. 즉, 객체를 도출하고 각각의 역할을 정의하는 것에 초점을 맞춥니다. 책임과 권한을 가진 객체들이 서로 메시지를 주고받으며 협력해서 필요한 기능을 수행하도록 시스템을 개발하는 것을 객체 지향이라고 합니다. 크고 복잡한 시스템을 효과적으로 분해하고 구성할 수 있고, 손쉽게 이해하고 효율적으로 다룰 수 있게 도와주는 방법으로 인정받아 많은 프로그래밍 언어에 적용되어 왔고 지금은 가장 인기 있는 프로그래밍 패러다임으로 자리 잡..
오늘은 숙련주차 시험이 있었다. 1번 . 모든 API들이 연결되지 않는다 더보기 router.route() 함수는 선택적인 미들웨어로 HTTP 동사를 처리하는데 사용할 수 있는 단일 경로의 인스턴스를 반환합니다. router.route() 함수를 사용하여 중복 경로 이름 지정 및 입력 오류를 방지할 수도 있습니다 즉 라우터를 넣어주지 않으면 미들웨어의 역할을 할 수가 없고 클라이언트의 요청을 받을수 없어서 API들이 연결이 되지 않습니다. router.get('/',async (req, res) => {}) api앞에 ' / ' 경로를 넣어줬습니다 index.js에 라우터를 만들어줘서 API들을 연결 시켜줍니다 const commentsRouter = require('./comments') const p..
숙련주차 과제 좋아요와 좋아요 게시물 조회까지 작성 했다. router.put('/posts/:postId/like',authMiddleware,async(req,res)=>{ try{ const {userId} = res.locals.user //유저를 기준으로 아이디값을 가져옴 const {postId} = req.params const likes =await Like.findOne({ where :{postId,userId}}) //좋아요한 게시물의 포스트 아이디 값과 유저 아이디를 가져옴 if (!likes){ //좋아요가 없을시 await Post.increment({ //put같은거 increment 증가 해주는 함수 likes : 1}, { where : {postId : postId} })..