본문 바로가기

분류 전체보기25

Kotlin / Scope Function - 범위 지정 함수 let 함수를 자주 사용하면서, scope 함수를 어느때에 사용하는것이 좋을까에 대한 의문이 생겼다. 아래의 포스트는 의문을 해소하기 위하여 Kotlin Docs를 번역한 것이다. 코틀린 표준 라이브러리는 객체 컨텍스트 내에 코드블럭을 실행하는 것이 유일한 목적인 함수를 포함하고 있다.이 함수들을 람다식을 이용해서 호출하면 일시적인 범위(scope)가 생성되는데, 이 범위 내에서는 이름이 없어도 객체에 접근이 가능하다.이러한 함수들을 ScopeFunction( 범위 지정 함수 )라 부르며, 다음의 5가지가 존재한다.letrunwithapplyalso 장점간편한 코드의 사용가독성빌더 패턴 이용부가적인 후처리 용이Notice같은 용도로 사용해야할 코드에 서로 다름 함수를 사용하거나, 지나친 다중 중첩을 사용.. 2024. 5. 31.
본격적인 프로젝트의 시작 - PetPartner DONEERD를 바탕으로 DB 구현 및 팀원들에게 환경변수 안내Feed CRUD 구현Git Repository 관리 및 팀원들에게 사용 방법 안내 (연습용 레포 확인)팀원 Comment CUD 구현부 페어 프로그래밍좋아요, 조회수 관련 DB 디자인 및 ERD 수정코드리뷰 프로젝트의 본격적인 시작우선 본 프로젝트를 구현하면서 크게 3가지 목표를 잡았다.1. 낙오자는 없어야한다.2. 협업을 중요하게 생각한다.3. git 사용을 조금 더 편하게 할 수 있도록 노력하자. Git Repo : https://github.com/5-SpringSpring/Pet-Partner GitHub - 5-SpringSpring/Pet-PartnerContribute to 5-SpringSpring/Pet-Partner dev.. 2024. 5. 28.
프로젝트 설계 - Pet Partner🐾 프로젝트 이름Pet Partner프로젝트 개발 기간 : 2024.05.27~2024.06.03개발 언어 : Kotlin, Spring개요반려동물을 키우는 사람들을 위한 정보 공유의 장내가 키우는 반려동물과의 일상을 공유하고 정보를 주고 받으며,도움이 필요한 동물을 위한 입양정보도 받아볼 수 있다. [상세한 설명은 추후에 추가할게요~] API 명세서 작성(1차)필수적으로 구현되어야하는 CRUD와 게시글 전체 조회, 그리고 댓글 기능과 관련된 API를 우선적으로 작성하였다. 큰 틀은 여기서 변하지 않을 것 같고, 조회수나 좋아요 기능 등은 어떤식으로 구현해야할지 고민이 된다.CommandMethodAPI PathResponse피드 등록POST/feeds201피드 전체조회GET/feeds200피드 수정PUT/.. 2024. 5. 27.
Authentication (인증) Authentication서버로 요청을 보낼 때, 요청 헤더에 Authorization : 을 담아 보냄.두가지 타입 존재 : Basic, Bearer Basic 인증가장 기본적인 인증 방식.인증 정보로 사용자 ID, 비밀번호를 사용base64로 코딩한 “사용자ID:비밀번호” 문자열을 Basic과 함께 인증헤더에 입력웹표준 RFC 7617Base64는 디코딩이 가능하기 때문에 반드시 HTTS, SSL/TLS로 통신해야 안전하다.https://datatracker.ietf.org/doc/html/rfc7617Authorization: Basic base64({USERNAME}:{PASSWORD}) Basic 인증의 장단점장점간단하다. ( 사용자ID, 비밀번호 외에 로그인페이지나 별도의 인증정보 요구 ㅌ)인.. 2024. 5. 21.
TodoApp 백엔드 서버 만들기 (3) 오늘 포스트에선 간단하게 Todo  전체보기 정렬 기준 및 작성자 기준 필터링. 그리고, Valid를 활용해 글자수를 제한하는 기능을 추가할 것이다.설계 부분은 크게 변동되는점이 없어 별도로 설명은 하지 않겠다. 정렬과 필터링1. 정렬 기준 : 작성시간 기준 오름차순, 내림차순2. 작성자 기준 필터링@GetMappingfun getTodoList( @RequestParam(defaultValue = "desc") order: String, @RequestParam(defaultValue = "") author: String): ResponseEntity> { val todos = if (author.isNotBlank()) todoService.getAllTodos() .fi.. 2024. 5. 17.
TodoApp 백엔드 서버 만들기 (2) 지난 포스트에선 Todo에 관련된 부분만 구현을 했다면, 오늘 포스트에서는 코멘트(댓글) 기능을 추가해 볼 것이다.당연히, API명세서도 추가되고 DB간의 관계도 정의해야한다.  Todo APP 설계요구사항 재정의요구사항설명할일 카드 작성 기능할 일 제목, 할일 내용, 작성일, 작성자 이름을 저장할 수 있다.저장된 할일의 정보를 반환받아 확인할 수 있다.선택한 할 일 조회 기능선택한 할 일의 정보를 조회할 수 있다.반환 받은 할 일 정보에는 할일 제목, 할일 내용, 작성일 ,작성자 이름 정보가 있다.할일 카드 목록 조회 기능등록된 할 일 전체를 조회할 수 있다.조회한 할 일 목록은 작성일 기준 내림차순으로 정렬되어있다.선택한 할일 수정 기능선택한 할일의 할일 제목, 작성자명, 작성 내용을 수정할 수 있다.. 2024. 5. 16.
TodoApp 백엔드 서버 만들기 (1) 투두 앱을 작동시키는데 필요한 백엔드 서버 만들기.투두 앱은 아래와 같이 총 5개의 기본 요구사항을 갖고 있다.TodoApp 설계요구 사항 (필수)요구사항설명할일 카드 작성 기능 할 일 제목, 할일 내용, 작성일, 작성자 이름을 저장할 수 있다.저장된 할일의 정보를 반환받아 확인할 수 있다. 선택한 할 일 조회 기능 선택한 할 일의 정보를 조회할 수 있다.반환 받은 할 일 정보에는 할일 제목, 할일 내용, 작성일 ,작성자 이름 정보가 있다. 할일 카드 목록 조회 기능 등록된 할 일 전체를 조회할 수 있다.조회한 할 일 목록은 작성일 기준 내림차순으로 정렬되어있다. 선택한 할일 수정 기능 선택한 할일의 할일 제목, 작성자명, 작성 내용을 수정할 수 있다.수정된 할 일의 정보를 반환받아 확인 가능. 선.. 2024. 5. 14.
객체지향 프로그래밍 - 캡슐화, 추상화 특강시간에 공부한 것을 바탕으로 내용 정리! ヽ(≧□≦)ノ 개인적으로 개념적인 이해만 하고 있었던 터라, 이런 강의를 여유가 있을 때 듣는것이 얼마나 좋은 일인지… 객체 지향 프로그래밍이란?OOP, Object-Oriented Programming객체지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나. 객체지향 프로그래밍이란, 각자의 책임을 지는 객체들이 서로 협력함으로써 문제를 해결하는 것.* 패러다임 : 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념→ 프로그래밍 패러다임ex) 객체지향 프로그래밍 : 프로그래머들이 프로그램을 상호작용하는 객체들의 집합      함수형 프로그래밍 : 상태값을 지니지 않는.. 2024. 5. 13.
REST API REST?REspresentational State Transfer Resprensentation  State Transfer  표현 상태 전이  REST는 문자 그대로 상태의 전이를 표현하기 위한 HTTP상의 아키텍처 스타일이다.여기서 상태, State는 Resourse의 State를 말한다.Resource는 파일, 문서, 데이터 등을 모두 포함하고 있으며, 이러한 데이터를 응답해주는 역할을 하고, 데이터는 도메인 모델에 대한 데이터이기 때문에 Resource자체가 Domain Model을 칭한다고 해도 무방하다. Resprensentation 구성 요소URL(Resource)URL를 통해 Resource의 이름을 표현한다.e.g. /modelsMethod(Verb)HTTP의 Method를 통.. 2024. 5. 9.
ORPG 프로그램 만들기! - DDD 편 어제 포스트에선 DDD 작성법, 그리고 왜 작성해야하는지에 대해 적었다면..오늘이야말로, 내가 배운것을 진정으로 복습하는 시간!그럼 바로 시작합니다.프로젝트에 대한 간략한 설명간단한 ORPG용 홈페이지. 게임을 진행하기 위한 방을 만들고 그 안에서 게임을 진행할 수 있다.참고 홈페이지 : roll 20 (https://roll20.net/)  순서- Actor- DDD 작성- External System- Data 정의 Actor 정의로그인 사용자(User)GM → 게임방을 만든 사람PL→ 게임방에 참여한 사람비로그인 사용자P → 게임방에 참여한 사람 DDD 작성User Model사용자와 관련된 이벤트들(User, P)로그인 : 로그인됨프로필 수정 : 프로필 입력됨로그아웃 : 로그아웃됨회원가입 : 회원가.. 2024. 5. 8.
DDD: Domain Driven Design 오늘 공부한 것은 많은데,, 정리하는데 시간이 좀 걸리는 것 같다. 일단 DDD부터.- DDD - REST API- SwaggerDomain Driven Design도메인 주도 설계도메인 패턴을 중심에 놓고 설계하는 방식실제 우리가 해결하려는 분야(Domain)의 핵심 문제와 비지니스 요구사항을 이해하고 이를 소프트웨어 모델에 명확히 반영하는 것을 최우선으로 한 소프트웨어 개발 방법론 왜? 써야하지?도메인 모델의 적용 범위를 구현까지 확장하여, 도메인 지식을 구현코드에 반영한다.공통의 언어(유비쿼터스언어)를 사용하여 도메인과 구현을 충분히 만족하는 모델을 만든다.실제 코드로 구현 가능한 현실성이 있는 도메인 모델 분석과 그것을 추상화 하는 설계다. 분류전술적 설계 (Tactical Design)각 영역(.. 2024. 5. 7.
Network - TCP/IP IP패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜패킷 전달 여부를 보장하지 않고, 순서 역시 보장하지 않음 TCP패킷을 안전하게 전달해주는 전송 프로토콜IP위에서 동작, 데이터의 전달 보장, 순서 보장 그렇다면, TCP/IP란?TCP/IPIP + TCP = 인터넷 프로토콜 + 전송 제어 프로토콜TCP를 기반으로 한(신뢰성 통신을 하는) HTTP,FTP,SMTP 등 수 많은 프로토콜들이 IP위에서 동작하기에 묶여서 TCP/IP라고 한다.→ 효율적으로 빠르게(IP) 보내면서 안전하게 (TCP) 전달해주려는 목적현재 인터넷 통신에 있어 가장 기반이 되는 프로토콜이다. 2024. 5. 3.