전체 글 56

스파르타코딩클럽 Spring 7기 본캠프 32일차(트러블 슈팅)

오늘 진행한 학습 요약1. Member 와 Schedule 을 Entity, RequestDto, ResponseDto, service, repository 로 스파르타코딩클럽 구현 과제로 진행하였다. 2. API 명세서 쓰기부터 구현까지 진행하려 했으나 난이도가 너무 높게 느껴져서 제대로 API 명세서 작성과 코드 구현을 제대로 하지 못했다. 학습 정리Member와 Schedule 를 Create 하는 건 완성했지만 CRUD 전체를 완성하지 못했다. 필수 과제인 일정 CRUD, 유저 CRUD, 회원가입, 로그인(인증) 을 완성하지 못했다. 시간배분에 실패했다. 첫 3일 동안 강의를 수강했으나 이해하기가 어려웠다. 원래 계획은 강의를 완전히 다 수강한 다음 구현과제와 JPA를 구현하려 했는데 실패했다. ..

스파르타코딩클럽 Spring 7기 본캠프 31일차

오늘 진행한 학습 요약1. Spring 숙련 - 3주차 JPA1) 객체와 관계형 데이터베이스 : 객체는 클래스를 통해 만들어지며 속성(field)와 기능(method)를 포함하며 관계형 데이터베이스는 데이터를 테이블 형식으로 표현하며 각 테이블은 열(column)과 행(row)으로 구성된다.2) 패러다임 불일치 문제 1 : 객체에서는 상속과 다형성을 통해 객체 관계를 표현할 수 있지만 RDB는 이 개념을 직접 지원하지 않고 별도 매핑이 필요하다. 또한, 객체는 참조로 관계를 표현하고 RDB는 JOIN을 사용하여 관계를 결합한다.3) 패러다임 불일치 문제 2 : 객체 지향 언어에서 데이터와 동작을 함께 캡슐화하는 방식과, RDB가 데이터를 정규화된 테이블에 관계 중심으로 저장하는 방식의 차이에서 발생한다...

스파르타코딩클럽 Spirng 7기 본캠프 30일차

오늘 진행한 학습 요약1. 숙련 Spring 2주차- Cookie- Session- Token- JWT- Filter Cookie, Session, Token을 알아보고 인증/인가에 대해 학습한다.Servlet Filter를 사용하여 공통 관심 사항을 처리한다.   학습 정리- Cookie : 사용자의 웹 브라우저에 저장되는 정보로 사용자의 상태 혹은 세션을 유지하거나 사용자 경험을 개선하기 위해 사용된다. - Session : Cookie를 사용한 방식은 여러가지 보안 문제가 있다. 결국 보안 문제를 해결하려면 중요한 정보는 모두 서버에서 저장해야한다. Client와 서버는 예측이 불가능한 임의의 값으로 연결해야 한다. * 서버에서 중요한 정보를 보관하며 로그인 연결을 유지하는 방법을 Session 이..

스파르타코딩클럽 Spirng 7기 본캠프 29일차

오늘 진행한 학습 요약1. 숙련 Spring 1주차- Spring의 핵심 개념- IOC/DI(제어의 역전, Inversion Of Control)- 싱글톤 패턴- Spring Bean 등록 학습 정리1. Spring의 핵심 개념- Spring으로 구성된 애플리케이션에서 객체(Bean)를 생성, 관리, 소멸하는 역할을 담당한다. 애플리케이션 시작 시, 설정 파일이나 Annotation을 읽어 Bean을 생성하고 주입하는 모든 과정을 컨트롤한다. 2. IOC(제어의 역전, Inversion Of Control)- 객체의 생성과 관리 권한을 개발자가 아닌 Spring 컨테이너가 담당하는 것을 말한다. 기본적으로 개발자가 객체를 직접 생성하고 관리했지만, Spring에서는 컨테이너가 객체 생성, 주입, 소멸을 ..

스파르타코딩클럽 Spirng 7기 본캠프 28일차

오늘 진행한 학습 요약1. CH 3 일정 관리 앱 만들기 해설영상- CURD 코드 작성 복습 학습 정리1. CH 3 일정 관리 앱 만들기 해설영상- CURD 코드 작성 복습해보기 1) 일정 생성 및 조회- 일정 등록 API 구현- 전체 일정 조회 API 구현- 선택 일정 조회 API 구현 - 트러블 슈팅 - 문제 RowMapper 를 왜 이용하는가? 조회 결과를 내가 원하는 객체로 바꾼다. 2. 일정 수정 및 삭제- 선택 일정 수정 API 구현- 선택 일정 삭제 API 구현 -트러블 슈팅 - 문제  - 없음

스파르타코딩클럽 Spirng 7기 본캠프 27일차

오늘은 과제 제출일이었다. 나는 일치감치 일정 관리 앱 필수 구현까지 끝냈다. 그리고 강의 5주차와 6주차를 복습했다. 왜 도전 과제를 진행하지 않았느냐는 말에는 기존 필수과제를 완전히 이해하지 못했기 때문에 강의를 보면서 이해도를 높이려고 했다고 할 수 밖에 없다. 그리고 실제로 어노테이션 사용하는 부분이 많이 약했는데 오늘 강의 5주차와 6주차를 다시 복습한 덕분에 이해도가 조금 높아졌다. 그러나 아직 완전히 이해한 것도 아니고 완전히 암기한 것도 아니다. 그래도 5주차와 6주차 강의를 복습하면서 안보이던 것들이 조금 씩 보였다. 어노테이션 사용법이라던가 HTTP 요청와 응답에 대한 이해가 높아진 것이다. 클라이언트와 서버와의 관계도 다시보이기 시작했고 400 Bad Request, 404 Not F..

스파르타코딩클럽 Spirng 7기 본캠프 26일차(트러블 슈팅)

오늘 일정 관리 앱 백엔드 과제를 완성했다. Lv2 까지 하고 강의를 들었다. 트러블 슈팅을 하자면 비밀번호 일치 여부 확인 문제가 가장 어려웠고 이태현 튜터님의 도움을 받았다. 문제를 명확히하자면 요청값에 비밀번호를 넣고, 데이터베이스에 저장된 비밀번호를 꺼내어 둘을 비교하여 같지 않으면 400 Bad request 에러를 내도록 해놓았다. 요청 값에 비밀번호를 넣는 부분은 어렵지 않았는데, MySQL 에서 저장된 비밀번호를 꺼내는 부분이 가장 어려웠다. JDBC 템플릿에 있는 queryForObject 쿼리를 사용하여 문제를 해결했는데 값을 String 형식으로 리턴하도록 해서 내가 원하는 비밀번호가 id 값에 의해 MySQL에서 검색되어 String 으로 가져왔다. 그리고 password(요청 값)..

스파르타코딩클럽 Spirng 7기 본캠프 25일차

오늘은 '일정 관리 앱' 백엔드 코딩 작업을 하는데 오전 시간을 썼다. 그런데 6주차 강의를 듣고 코딩을 했었어야 했다는 생각이 든다. 왜냐하면 DB 다루는 방법을 6주차 강의 때 실습으로 황원욱 튜터님이 가르쳐 줬기 때문이다. 아무튼 지금까지 작업한 부분을 많이 바꿔야 한다. '일정 관리 앱' 과제 제출일자는 금요일 오후 2시까지다. 시간 내에 다 할 수 있을지 모르겠지만 포기하지 않고 최선을 다해야겠다.

스파르타코딩클럽 Spirng 7기 본캠프 24일차

오늘은 코딩을 많이했다. 오전에는 스프링 입문 5주차 강의를 들으면서 실습까지 했다. 그리고 실습한 걸 바탕으로 오후에는 백엔드 일정 관리 앱 만들기를 했다. 크게 어렵지는 않았는데 한 가지 문제가 있었고 해결한 방법을 이야기해보고자 한다.문제는 요청으로 데이터를 줬는데 응답으로 데이터가 나오지 않는 문제였다. 이 문제는 응답 코드를 잘못 짜서 생긴 문제로 30분 정도 걸려서 해결했다.  프로젝트 규모가 작았기 때문에 쉽게 수정을 했지만 프로젝트 규모가 크다면 많이 헤메었을 것이라는 생각이 든다. 이번 프로젝트에서 디버거도 써봤는데 데이터는 똑바로 들어오는데 schedule 엔티티로 값이 들어가지 않는 문제였다. ScheduleResponseDto 에 Schedule 객체를 파라미터로 갖는 코드를 추가하..

스파르타코딩클럽 Spirng 7기 본캠프 23일차

API 명세서 작성을 완료했다. 박성원 튜터님께 함격 판정을 받았다. 오전 내내 작업한 보람이 있었다. 요구사항(스파르타코딩클럽 과제 내용) 을 API 명세서로 만드는 단계는 설계 이후 직접 구현(코딩)하는 단계 전에 완료되어야 하는 단계로 시간을 많이 들여야 한다. 내가 만든 API 명세서는 개선할 점이 많지만 설계와 이후 구현에 있어서 선행자료로는 문제가 없는 것 같다. API 명세서는 핵심적인 내용만 정리하면 설계와 구현할 API 를 문서화하고 그에 대한 스펙을 적는 정도이다. 스펙이란 요청과 응답에서 어떤 값을 받느냐 정의하는 것인데 백엔드 과정이다보니 프론트엔드는 있다고 생각하고 API 를 명세서에 작성하는 정도 였다. 김순철 튜터님에게 어제 자주가서 몇 시간 동안 과외를 받다시피 했는데 그 과..