분류 전체보기 81

[Spring_4기 본캠프] 일정관리 앱 과제 (Develop ver.) KPT 회고 | Day 46

◆ 일정관리 앱 (Develop version) KPT 회고 [ Keep ] :1. 해보기 전부터 겁먹지 않고 도전 기능 구현을 시도해 봄2. 검색을 하거나 챗GPT를 사용할 때 얻은 정보가 틀린 정보가 아닌지 의심해보고 사용하면서 올바르게 정보를 받아들이기 위해 노력함3. 기능을 하나 구현할 때마다 유지보수나 확장성면에서 가치가 있게 작성되었는지 생각하고 검사하는 시간을 가짐4. 프로그램 작성을 하다가 방향성을 잃을 때 주변 동료와 튜터님들께 여러 번 조언을 듣고 나에게 맞는 점을 골라 최선의 방향을 찾기 위해 노력함5. 프로그램의 정상 작동 여부를 여러 번 확인하는 작업을 거쳐 기능끼리의 충돌이 없는지 확인함 [ Problem ] :1. 에러가 발생했을 때 바로 기록하지 않아 캡쳐한 화면을 보고 어떤..

[Spring_4기 본캠프] Spring 숙련 - 과제 트러블 슈팅 | Day 45

1. 에러명 : PropertyValueException 에러   회원을 생성하는 API 로직을 작성하고 첫 테스트 실행 시 PostMan에서 500 internal server 에러와 함께 생성이 되지 않는 문제가 발생했다.로그창에 PropertyValueException 에러가 뜬 것을 확인하고 검색을 해보니 요청에 맞는 Java 객체가 매핑이 되지 않아 일어나는 문제라고 했다. 코드의 객체명과 테이블의 컬럼이름을 살펴봤다.데이터베이스로 사용중인 MySQL에서는 스네이크 표기법에 따라 username 으로 유저명을 설정해놨는데 코드에는 userName이라고 해놓은 것을 발견했다.컬럼명에 맞게 변수의 이름을 모두 username으로 수정해주고 재실행을 했더니 정상적으로 작동되는 것을 확인했다. 2. 에..

[Spring_4기 본캠프] Spring 숙련 - 일정관리 앱 Develop | Day 44

1. 일정관리 앱 유저 삭제 에러 개발자 인생에서 딱 25번만 허락된다는 갓핑거. 내가 알지도 못하는 로직들을 신들린듯 쓰고 API 테스트도 정상으로 순조롭게 넘어가며 과제를 진행하고 있었는데 첫 에러가 났다.  에러명 : Cannot delete or update a parent row: a foreign key constraint fails (`develop_todo`.`todos`, CONSTRAINT `FK3ju26rdbtvey9t2vm08idphxx` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)) 부모키를 참조하고 있는 외래 키가 있어서 삭제가 되질 않는다는 것 같았다.검색을 해보니 내가 생각한 것이 맞았다. 일정 기능을 구현하기 전까진 문제가 없었는데..

[Spring_4기 본캠프] Spring 숙련 - 2주차 - 예외처리 | Day 43

◆ 예외처리에 대한 고찰  강의를 들으면서 프로그래밍 실습을 하다가 '예외처리는 어느 계층에서 하는 것이 맞을까?' 라는 궁금증이 생겼다.특정 id로 회원을 조회하는 기능을 구현한다고 했을 때, 사용자가 존재하지 않는 id를 입력한다면 이에 대한 예외처리는 어느 계층에서 처리하는 것이 맞는걸까 하는 것이었다.이 의문증에 답을 하기 위해선 각 계층의 역할에 대한 완벽한 개념 분리가 필요해보였다. ▶ 서비스 계층에서의 예외 처리1) 서비스 계층의 역할- 비즈니스 로직을 담당한다.- 데이터 검증, 처리, 계산 등을 수행한다. 2) 예외 처리의 목적- 비즈니스 로직과 관련된 예외를 처리한다.- 데이터 처리 중 문제가 생겼을 때 예외를 발생시켜 컨트롤러에 알린다. 3) 어떤 예외를 처리해야 하나- 비즈니스 규칙 ..

[Spring_4기 본캠프] Spring 숙련 - 1주차 - 다양한 인증방식 | Day 42

◆ 인증과 인가- 인증 (Authentication) : 사용자가 누구인지 확인하는 과정- 인가 (Authorization) : 사용자가 어떤 권한을 가지고 있는지 결정하는 과정으로 반드시 인증이 선행되어야 한다. (ex. 회원만 조회 가능) 1. 쿠키 인증방식: 쿠키란 브라우저의 저장공간으로, 브라우저의 상태를 유지하기 위해 사용한다. (로그인과 같이 상태를 유지해야 하는 경우 등등)- 클라이언트 측에 저장되며, 서버에 요청을 보낼 때마다 포함되어 전송된다.- 클라이언트가 재요청 시 서버는 이전 요청에 대한 정보를 기억하지 못한다.- 전화번호와 같은 개인 정보가 저장되어있을 수도 있으니 타인에게 노출하지 않도록 하자.- 만료 날짜를 설정할 수 있으며 세션 쿠키(브라우저 종료 시 삭제)와 영속 쿠키(지정..

[Spring_4기 본캠프] Spring 숙련 - 1주차 - Validation | Day 41

◆ Bean Validation - Bean Validation 검증기는 선언된 제약 조건에 따라 해당 클래스의 인스턴스를 검증한다.- 예제 코드 ↓public class PersonForm {@NotNull@Size(max=64)private String name;@Min(0)private int age;}  ◆ Validator- Spring Boot는 validation 라이브러리를 설정하면 자동으로 Bean Validator를 Spring에 통합되도록 설정해준다.- Global Validator가 Defualt로 적용되어 있어 @Valid, @Validated 애너테이션을 달아 사용해주면 된다.- Bean Validation Annotation 종류 예시1) @NotBlank -> 가장 많은 제약..

[Spring_4기 본캠프] 일정관리 앱 회고, Develop 과제 발제 | Day 40

◆ 일정관리 앱 KPT 회고 [Keep] :1. DTO 클래스를 세분화 해 클라이언트에 필요한 데이터만을 전송함2. 깃 커밋 컨벤션을 정해 구체적인 커밋을 하려고 노력함3. 불필요한 코드를 줄이고 깔끔한 코드로 만들기 위해 노력함4. 깃 브랜치를 dev, main 으로 나눠 작업을 하는 연습을 함 [Problem] :1. POSTMAN 으로 API 를 테스트 실행 해볼 때 반환 내용을 제대로 살피지 않아 문제가 있다는 것을 늦게 알아냄2. 문제상황이 발생했을 때 대처에만 몰두해 트러블슈팅을 제대로 하지 못함3. 프로그램의 정상 작동 여부를 세세하게 확인하지 않고 main 브랜치로 병합함4. 도전 기능은 당연히 어려울 것이라고 생각하고 시작도 해보지 않음 [ Try ] :1. 테스트를 실행한 후 정상 작동..

[SQL] 프로그래머스 문제 풀이 - 여러 기준으로 정렬하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.  SELECT ANIMAL_ID, NAME, DATETIMEFROM ANIMAL_INSORDER BY NAME ASC, DATETIME D..

[SQL] 프로그래머스 문제 풀이 - 어린 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. 동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.  SELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE INTAKE_CONDITION != 'AGED'ORDER BY ANIMAL_ID ASC