전체 글
션의 개발일기장
-
😆 Keep - 현재 만족하고 있는 부분코드 컨벤션과 깃허브 룰스, 이슈 및 PR 템플릿을 미리 정하고 지켜서 사용함PR시 리뷰 작성하여 코드 개선 및 확인규칙성 있는 주석 작성Git issue랑 project를 사용해서 개발 진행과정을 보는데 좋았다.구체적인 예외처리규칙성 있는 패키지 구조 구성TimeStamp에 @PrePersist를 의도에 맞게 잘 사용함entity에 제약조건과 같은 구체적인 ddl 설정을 잘했고 테이블명도 _table로 일관성있게 잘 만들었으며, 적절한 fetchType 지정일관성 있는 Controller의 구현팀원 간의 원활한 소통과 협업🙂주말에도 코딩하는 열정적인 모습욕심내서 최대한 많은 기능을 구현해보고자 하는 것잘하는 팀원들을 보고 동기부여를 받을 수 있어서 좋았다.🫠..
[TIL] 230625 <Spring> 팀프로젝트 14조 - '일'과 함께 '사'라지다 KPT 회고😆 Keep - 현재 만족하고 있는 부분코드 컨벤션과 깃허브 룰스, 이슈 및 PR 템플릿을 미리 정하고 지켜서 사용함PR시 리뷰 작성하여 코드 개선 및 확인규칙성 있는 주석 작성Git issue랑 project를 사용해서 개발 진행과정을 보는데 좋았다.구체적인 예외처리규칙성 있는 패키지 구조 구성TimeStamp에 @PrePersist를 의도에 맞게 잘 사용함entity에 제약조건과 같은 구체적인 ddl 설정을 잘했고 테이블명도 _table로 일관성있게 잘 만들었으며, 적절한 fetchType 지정일관성 있는 Controller의 구현팀원 간의 원활한 소통과 협업🙂주말에도 코딩하는 열정적인 모습욕심내서 최대한 많은 기능을 구현해보고자 하는 것잘하는 팀원들을 보고 동기부여를 받을 수 있어서 좋았다.🫠..
2024.06.25 -
https://velog.io/@nefertiri/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-OAuth2-%EC%86%8C%EC%85%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-01 스프링 부트 OAuth2 소셜 로그인 구현하기이 포스트에서는 스프링 부트로 소셜 로그인을 구현해보겠습니다. 스프링 시큐리티와 스프링 OAuth2 클라이언트 라이브러리를 사용하여 구글, 네이버, 카카오 서비스와 연동하여 로그인, 회원 탈velog.io https://chb2005.tistory.com/182 [Spring Boot] OAuth 2.0 로그인 (구글 로그인)OAuth 로그인이란? 요즘 대부분의 ..
[TIL] 230621 <Spring> 소셜 로그인https://velog.io/@nefertiri/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-OAuth2-%EC%86%8C%EC%85%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-01 스프링 부트 OAuth2 소셜 로그인 구현하기이 포스트에서는 스프링 부트로 소셜 로그인을 구현해보겠습니다. 스프링 시큐리티와 스프링 OAuth2 클라이언트 라이브러리를 사용하여 구글, 네이버, 카카오 서비스와 연동하여 로그인, 회원 탈velog.io https://chb2005.tistory.com/182 [Spring Boot] OAuth 2.0 로그인 (구글 로그인)OAuth 로그인이란? 요즘 대부분의 ..
2024.06.21 -
문제 상황Organization의 repository에 git push를 시도하였는데 아래와 같은 오류가 발생remote: Permission to GreedyPeople/GreedyPeople.git denied to sihyun615. unable to access 'https://github.com/GreedyPeople/GreedyPeople.git/': The requested URL returned error: 403 해결 방법1. Github에서 personal access token을 생성하는데 이 때 repo를 꼭! 체크하여 생성해야함github page > profile > settings > Developer setting > personal access token > token(c..
[TIL] 230620 <트러블슈팅> remote: Permission to ... denied to 사용자. unable to access '...': The requested URL returned error: 403문제 상황Organization의 repository에 git push를 시도하였는데 아래와 같은 오류가 발생remote: Permission to GreedyPeople/GreedyPeople.git denied to sihyun615. unable to access 'https://github.com/GreedyPeople/GreedyPeople.git/': The requested URL returned error: 403 해결 방법1. Github에서 personal access token을 생성하는데 이 때 repo를 꼭! 체크하여 생성해야함github page > profile > settings > Developer setting > personal access token > token(c..
2024.06.20 -
계층형 vs 도메인형 계층형 아키텍처 (Layered Architecture) 소프트웨어 시스템을 기능별로 계층화하여 구성하는 방식각 계층은 특정한 책임을 가짐 com.example.project├── controller (Presentation Layer)├── service (Application Layer)├── domain (Domain Layer)└── repository (Infrastructure Layer) Presentation Layer (표현 계층): 사용자 인터페이스와 관련된 모든 요소를 포함 → controllerApplication Layer (애플리케이션 계층): 비즈니스 로직을 수행하고, Presentation Layer와 Domain Layer 간의 인..
[TIL] 230619 <Spring> 소프트웨어 아키텍처에서의 패키지 구조 설계 방식계층형 vs 도메인형 계층형 아키텍처 (Layered Architecture) 소프트웨어 시스템을 기능별로 계층화하여 구성하는 방식각 계층은 특정한 책임을 가짐 com.example.project├── controller (Presentation Layer)├── service (Application Layer)├── domain (Domain Layer)└── repository (Infrastructure Layer) Presentation Layer (표현 계층): 사용자 인터페이스와 관련된 모든 요소를 포함 → controllerApplication Layer (애플리케이션 계층): 비즈니스 로직을 수행하고, Presentation Layer와 Domain Layer 간의 인..
2024.06.19 -
🧩 Jakarta Validation API를 사용하여 객체의 유효성 검증하기 Jakarta Validation API는 Java Bean Validation의 최신 버전으로, 객체의 필드에 설정된 제약 조건(Constraints)을 검사하고, 유효하지 않은 경우에는 해당 오류를 보고.→ Java 애플리케이션에서 데이터의 일관성과 유효성을 보장하는 데 필수적인 도구Jakarta Validation API 개요1. ValidatorFactory 생성ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - 'Validation.buildDefaultValidatorFactory()' 메서드 : 기본 구성을 사용하여 `Validato..
[TIL] 230618 <Spring> Jakarta Validation API🧩 Jakarta Validation API를 사용하여 객체의 유효성 검증하기 Jakarta Validation API는 Java Bean Validation의 최신 버전으로, 객체의 필드에 설정된 제약 조건(Constraints)을 검사하고, 유효하지 않은 경우에는 해당 오류를 보고.→ Java 애플리케이션에서 데이터의 일관성과 유효성을 보장하는 데 필수적인 도구Jakarta Validation API 개요1. ValidatorFactory 생성ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - 'Validation.buildDefaultValidatorFactory()' 메서드 : 기본 구성을 사용하여 `Validato..
2024.06.18 -
[update와 delete 메서드에서의 @Transactional 사용 유무]updateSchedule 메서드와 deleteSchedule 메서드는 데이터베이스 작업의 성격과 관련하여 다른 요구사항을 갖고 있습니다. 1. updateSchedule 메서드데이터 무결성 유지 : updateSchedule 메서드는 일정을 업데이트하는 작업을 수행함. 이 작업은 데이터베이스의 무결성을 유지해야 함. ex) 두 번 이상의 사용자가 동시에 동일한 일정을 수정하려고 시도할 경우, 각각의 변경 내용이 충돌 없이 적절히 반영되어야 함!!! ㄴ 트랜잭션의 원자성과 일관성이 보장되어야 함 ㄴ 일정을 업데이트하는 동안 다른 사용자가 해당 일정을 조회하는 경우, 일관된 데이터를 반환해야 함복수 작업의 원..
[TIL] 230617 <Spring> @Transactional, @ResponseStatus, HTTP 상태 코드[update와 delete 메서드에서의 @Transactional 사용 유무]updateSchedule 메서드와 deleteSchedule 메서드는 데이터베이스 작업의 성격과 관련하여 다른 요구사항을 갖고 있습니다. 1. updateSchedule 메서드데이터 무결성 유지 : updateSchedule 메서드는 일정을 업데이트하는 작업을 수행함. 이 작업은 데이터베이스의 무결성을 유지해야 함. ex) 두 번 이상의 사용자가 동시에 동일한 일정을 수정하려고 시도할 경우, 각각의 변경 내용이 충돌 없이 적절히 반영되어야 함!!! ㄴ 트랜잭션의 원자성과 일관성이 보장되어야 함 ㄴ 일정을 업데이트하는 동안 다른 사용자가 해당 일정을 조회하는 경우, 일관된 데이터를 반환해야 함복수 작업의 원..
2024.06.17 -
https://www.acmicpc.net/problem/1753import java.io.*;import java.util.*;class Node implements Comparable { int idx; int cost; // 생성자 Node(int idx, int cost) { this.idx = idx; this.cost = cost; } @Override public int compareTo(Node other) { return Integer.compare(this.cost, other.cost); }}public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B..
[백준] #1753. 최단경로 (골드 4)https://www.acmicpc.net/problem/1753import java.io.*;import java.util.*;class Node implements Comparable { int idx; int cost; // 생성자 Node(int idx, int cost) { this.idx = idx; this.cost = cost; } @Override public int compareTo(Node other) { return Integer.compare(this.cost, other.cost); }}public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B..
2024.06.16 -
https://www.acmicpc.net/problem/17396import java.io.*;import java.util.*;class Node implements Comparable { int idx; long cost; // 생성자 Node(int idx, long cost) { this.idx = idx; this.cost = cost; } @Override public int compareTo(Node other) { return Long.compare(this.cost, other.cost); }}public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B..
[백준] #17396. 백도어 (골드 5)https://www.acmicpc.net/problem/17396import java.io.*;import java.util.*;class Node implements Comparable { int idx; long cost; // 생성자 Node(int idx, long cost) { this.idx = idx; this.cost = cost; } @Override public int compareTo(Node other) { return Long.compare(this.cost, other.cost); }}public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B..
2024.06.16