[내일배움캠프] CH 3 일정 관리 앱 Develop 리팩토링
·
TIL/TIL(Today I Learned)
[내일배움캠프] CH 3 일정 관리 앱 Develop 리팩토링이번 글에서는 Spring Comment Calendar 프로젝트를 통해 RESTful 애플리케이션의 개발 및 리팩토링 과정을 공유하고자 합니다. 이 프로젝트는 Spring Boot와 JWT 기반 인증을 활용하여 사용자별 일정과 댓글을 관리하는 애플리케이션입니다. 특히 JWT 토큰을 쿠키에 저장해 보안성과 접근성을 높였으며, 각 기능을 모듈화하여 유지 보수성을 강화했습니다.주요 기능회원가입 및 로그인 기능 - 사용자 가입 후 JWT 인증을 통해 로그인 및 일정 관리를 가능하게 합니다.JWT 기반 인증 및 권한 관리 - 인증 토큰을 쿠키에 저장하고 사용자의 역할(Role)에 따라 일정 및 댓글 접근 권한을 부여합니다.일정 및 댓글 관리 - 사용자..
[내일배움캠프] 본캠프 코드카타 19번 문제
·
TIL/코딩테스트 연습문제
알고리즘 문제: 어떤 양의 정수가 제곱수인지 확인하기이번 문제는 임의의 양의 정수 n이 양의 정수 x의 제곱인지 확인하는 것입니다. n이 양의 정수 x의 제곱이라면 (x + 1)^2을 반환하고, 그렇지 않다면 -1을 반환해야 합니다.문제 분석n이 어떤 양의 정수 x의 제곱이라면, n은 x * x 형태로 표현됩니다. 예를 들어, n = 121이라면, 이는 11 * 11 형태이므로 x = 11입니다.n이 x * x 형태가 아니면 -1을 반환합니다.접근 방법주어진 수 n에 대해 Math.sqrt(n)을 사용하여 n의 제곱근을 구합니다.제곱근이 정수라면, (제곱근 + 1)의 제곱을 반환하고, 정수가 아니라면 -1을 반환합니다.제약 사항n은 1 이상, 50조 이하의 양의 정수입니다. 따라서 이 범위에서 효율적으로..
스파르타코딩 Spring 기초 프로젝트 회고록
·
프로젝트/스파르타코딩
SNS 백엔드 프로젝트 마무리 회고 GitHub - 5trillion500million/newsfeedContribute to 5trillion500million/newsfeed development by creating an account on GitHub.github.com 이번 SNS 백엔드 프로젝트에서는 스프링 시큐리티와 JWT를 사용한 인증 절차, 외부 API를 이용한 국가 정보 관리, Soft Delete 전략, 그리고 깃 브랜치 전략을 중심으로 개발을 진행했습니다. 이번 글에서는 각각의 주요 기능에 대한 개발 배경과 경험을 공유하고자 합니다.1. 인증 절차스프링 시큐리티를 기반으로 JWT 인증을 추가해 HTTP의 비연결성과 무상태성을 활용했습니다. 기존의 세션 방식을 비활성화하고 JWT를 사..
[내일배움캠프] CH 3 일정 관리 앱 Develop
·
TIL/TIL(Today I Learned)
요번에 주어진 프로젝트에 대해 분석해보았습니다, 요번 개인 프로젝트는 일정 관리 시스템을 개발하는 것입니다. 주요 요구사항과 기능은 크게 API 명세서 작성, ERD 설계, 일정 및 댓글 CRUD, 유저 관리, 페이징 처리, JWT 인증/인가 및 예외처리로 나눌 수 있습니다. 각 기능에 대한 세부 분석은 다음과 같습니다.1. 공통 조건3 Layer Architecture: 프로젝트는 Presentation, Service, Persistence의 세 레이어로 나눠서 개발해야 합니다. 즉, 각 레이어에 맞는 역할을 수행하도록 코드를 분리해야 합니다.JPA 사용: 데이터베이스와의 통신을 JPA로 처리합니다. 모든 CRUD 기능에서 JPA를 통해 데이터를 처리해야 하며, 연관관계는 양방향으로 설정합니다.JWT..
Spring의 IoC(제어의 역전)와 DI(의존성 주입) 이해하기
·
TIL/TIL(Today I Learned)
Spring의 IoC(제어의 역전)와 DI(의존성 주입) 이해하기Spring 프레임워크에서 가장 중요한 개념 중 하나는 IoC(제어의 역전, Inversion of Control)와 DI(의존성 주입, Dependency Injection)입니다. 이 두 가지 개념은 Spring이 객체들 간의 의존성을 관리하는 방식에 대해 설명하며, 객체지향 프로그래밍의 중요한 원칙 중 하나인 유연한 코드 구조를 만들기 위해 사용됩니다.1. IoC (제어의 역전)IoC는 제어 흐름을 개발자가 아닌 프레임워크가 담당하는 것을 의미합니다. 전통적인 애플리케이션에서는 객체를 개발자가 직접 생성하고, 객체 간의 의존성을 개발자가 직접 관리합니다. 하지만 IoC를 도입하면 객체의 생성과 관리, 의존성 주입 등을 개발자가 아닌 컨..
[내일배움캠프] Spring 1차 숙제 (튜터님께 받은 피드백)
·
TIL/TIL(Today I Learned)
튜터님께 받은 피드백1. 로그인 후 인증 흐름 개선 (세션 인증 vs 토큰 인증)문제: 현재 로그인 후 인증 흐름이 자연스러워 보이지만, 사용자가 직접 http://localhost:8080/calendar.html에 접근하면 로그인 없이 캘린더를 사용할 수 있습니다.해결책: 세션 인증 방식 또는 토큰 인증 방식을 도입하여 인증된 사용자만 캘린더 페이지에 접근할 수 있도록 해야 합니다. 특히 JWT (JSON Web Token) 기반의 인증 방식을 사용하는 것이 RESTful API와 함께 가장 많이 사용되는 방식입니다.블로그 주제: "Spring Boot에서 JWT 기반 인증 구현하기" 또는 "세션 기반 인증과 토큰 기반 인증의 차이점 및 구현 방법"2. Request Parameter로 패스워드 전송..
왜 게임에서 상대방이 나를 먼저 발견하게 되는가?
·
네트워크/네트워크 관련지식
OR 왜 게임에서 상대방을 먼저 발견하게 되는가?서버 통신 속도가 중요한 이유 온라인 게임을 플레이하다 보면 가끔 "왜 상대방이 나보다 먼저 날 봤지?"라는 생각을 하게 될 때가 있습니다. 이 현상은 게임 내에서 중요한 요소로 작용하며, 서버와의 통신 속도(네트워크 레이턴시)와 깊은 관련이 있습니다. 오늘은 왜 이런 현상이 발생하는지, 그리고 서버 통신 속도가 게임 플레이에 어떤 영향을 미치는지에 대해 설명하겠습니다.1. 네트워크 레이턴시(Latency)란?네트워크 레이턴시란 사용자가 자신의 행동을 서버에 전달하고, 그 결과를 다시 화면에 표시할 때까지 걸리는 시간을 의미합니다. 쉽게 말해, 내가 키보드를 눌렀을 때 그 명령이 서버에 도달하고, 서버가 처리한 결과를 다시 화면에서 볼 때까지의 지연 시간이..
[내일배움캠프] Spring 1차 숙제
·
TIL/내일배움캠프 숙제
스케줄 관리 API 명세서Base URLhttp://localhost:8080/1. 모든 일정 조회EndpointGET /api/schedules설명모든 일정을 조회합니다.RequestMethod: GETHeaders:Content-Type: application/jsonResponseStatus: 200 OKContent-Type: application/jsonResponse Body Example[ { "id": 1, "date": "2024-10-01", "title": "회의" }, { "id": 2, "date": "2024-10-02", "title": "프로젝트 마감" }]2. 특정 날짜의 일정 조회EndpointGET /api/schedules/{da..
[내일배움캠프] 본캠프 TIL Spring 입문(3)
·
TIL/TIL(Today I Learned)
Spring에서 클라이언트와 서버 간에 데이터를 전송할 때, 주로 JSON 형태로 데이터를 주고받는 방식이 많이 사용됩니다. 이는 RESTful 웹 서비스 구현에서 가장 흔한 데이터 교환 형식이기 때문입니다. 클라이언트와 서버 사이에서 Spring이 데이터를 어떻게 처리하고 전송하는지 살펴보겠습니다.1. Spring에서 데이터 전송 흐름Spring에서는 클라이언트와 서버 간의 데이터 전송을 처리할 때, 다음과 같은 단계를 거칩니다:1.1. 클라이언트 요청 (Request)클라이언트는 서버에 HTTP 요청을 보냅니다. 이 요청은 주로 GET, POST, PUT, DELETE와 같은 HTTP 메서드를 사용합니다.요청 데이터는 쿼리 파라미터, URL 경로 변수, HTTP 요청 본문(주로 JSON 형식)으로 전..
[내일배움캠프] 본캠프 TIL Spring 입문(2)
·
TIL/TIL(Today I Learned)
Spring에서 정적 페이지와 동적 페이지는 각각 다른 방식으로 다뤄지며, 역할도 명확히 구분됩니다. 이 두 가지를 나누어 관리하는 이유는 서버 자원의 효율적 사용과 응답 속도 향상 그리고 개발 및 유지보수의 용이성 때문입니다.1. 정적 페이지 (Static Page)1) 정의정적 페이지는 미리 만들어진 HTML, CSS, JavaScript 파일을 그대로 제공하는 웹 페이지입니다. 서버는 이 파일들을 단순히 클라이언트에게 전송하기만 하고, 서버에서 별도의 데이터 처리나 로직 실행 없이 요청한 파일 그대로 응답됩니다.2) Spring에서 정적 페이지 처리 방법Spring에서는 기본적으로 정적 리소스(static resources)를 처리할 수 있도록 설정되어 있습니다. 이러한 정적 파일들은 프로젝트의 특..