내일배움캠프 74

Spring 본캠프 Day 073 - 6단계, 7단계, 8단계 일정 관리 앱 Develop 완료! 이제 남은 과제는 문서 더미에서 빠져나오기!

어제 도전 과제 6단계를 해내길 정말 잘했다! 왜냐하면 아침부터 추가로 구현해야 하는 부분이 생겼기 때문이다! 바로 소프트 딜리트(Soft Delete), 일명 논리 삭제였다! 논리 삭제는 이름에서 알 수 있듯이 클라이언트(client)에게는 삭제되었다고 보여주고, 데이터베이스에는 그 정보가 그대로 있는, 말 그대로 '삭제된 척하는 삭제'였다.필수 과제 2단계부터 @ManyToOne 어노테이션(annotation)을 써서 단방향 연관관계를 설정해야 했는데, 그 상태에서 하드 딜리트(hard delete)를, 일명 물리 삭제를 하려고 하면 오류 메시지를 마주했다. 이 상태에서 정보를 진짜로 지우고 싶다면 cascade 옵션을 설정해야 하는데, 잠시 고민했다가 논리 삭제를 골랐다. 일단 정보 자체가 소중한 ..

Spring 본캠프 Day 072 - 4단계 및 5단계 일정 관리 앱 Develop 완료, 5단계 진행 중, 첫 쿠키(🍪) 생성 및 예외 처리

아주 예전에 '두 번 구운 과자'를 의미하는 이탈리아 전통 간식 비스코티(Biscotti)와 마카롱을 구운 뒤로 쿠키(🍪) 구울 일이 없을 줄 알았는데, 오늘 아주 원 없이 구웠다. 반환을 이상하게 해서 'redirect: /' 문자열이 그대로 출력되긴 했지만, 아무튼 굽긴 잘 구웠다. 정확히는 세션(session)을 생성했지만. 그 과정에서 수많은 문제를 일으키긴 했지만.개발 분야를 공부하는 지금은 모든 순간이 전부 새롭지만, 오늘은 그토록 시도하고 싶었으나 엄두조차 내지 못한 '예외 처리'를 해낸 날이라서 다양한 오류를 내고 캡처하길 반복했다. 매일 여백을 용납할 수 없다는 듯이 줄글로 나열된 오류 메시지가 깔끔하게 두 줄로 정리되니 속이 다 시원했다.'401 Unauthorized' 오류는 작성해..

Spring 본캠프 Day 071 - 2단계 및 3단계 일정 관리 앱 Develop 완료, 4단계 진행 중

🥇 @transactional 어노테이션(annotation) 복습하기 ▶ 내용 교차 검증 완료, 트러블슈팅(troubleshooting)에 기록 예정 🥈 '일정 목록이나 단건을 조회할 때 사용자의 Id도 같이 보여주면 어떨까?' 고민 해결하기 ▶ 사용자의 Id뿐만 아니라 비밀번호를 제외한 정보까지 응답으로 전달할 수 있도록 코드 수정 완료 🥉 "Query did not return a unique result" 오류 제대로 해결했는지 튜터님께 검사받기 ▶ 사용자의 이름 대신 Id로 정보를 조회하여 동명이인 문제 해결 완료 4️⃣ ERD(Entity Relationship Diagram) 작성 시 참조하는 객체는 어떻게 명시해야 하는지 알아 오기 ▶ 외래 키(Foreign Key)를 ERD 안에 적..

Spring 본캠프 Day 070 - 2단계 일정 관리 앱 Develop 진행 중

내용 정리를 틀리게 할 수 없어서 비공개로 돌린 트러블슈팅(troubleshooting)만 벌써 두 개째다. 아직 오류가 발생할 때면 '이번엔 또 뭘 잘못 입력했을까?' 온갖 생각이 들곤 하지만, 확실히 오류를 다양하게 내고 나니 비슷하거나 동일한 오류가 발생하면 금방 해결했다. 마치 오답 노트에 정리한 수학 문제를 다시 풀면 맞출 수 있듯이. 모든 오류의 원인과 해결 방법을 머릿속에 차곡차곡 정리해 두면 정말 좋겠지만, 기억 용량에는 한계가 있기 마련이므로 문제 해결 과정 기록에정성을 쏟았다. 그래, 오류의 가호도 제대로 받았겠다.  난생처음 보는 오류를 많이 내야겠다. 몸이 평일 내내 부족한 잠을 주말 동안 보충할 생각이었는지 오늘도 한낮에 일어났다. 내일부터 다시 아침 8시 전에 일어나고 싶은지라..

Spring 본캠프 Day 069 - 1단계 일정 관리 앱 Develop 완료, 2단계 진행 중

어제 새벽에 데이터베이스(database)를 직접 생성하다가 오류가 나서 딱따구리가 나무를 쪼듯이 챗GPT에 엄청나게 물어보고 나서야 해결했다. 데이터베이스가 제대로 삭제되지 않아서 생긴 문제였다. 혹시라도 비슷한 오류를 겪는 사람이 있을 수도 있고, 미래의 내가 또 같은 문제를 겪을 수 있으므로 문제 해결용 코드를 적어놓으련다. (1) MySQL 버전: 9.1.0(2) 윈도우/맥북: 맥북(3) 터미널에서 사용하지 않는 데이터베이스 삭제하기 ⓐ 위치 이동▼cd /usr/local/mysql/binⓑ MySQL 접속▼./mysql -u root -pⓒ 비밀번호 입력▼ ⓓ 데이터베이스 확인▼show databases;ⓔ 데이터베이스 삭제▼drop database 데이터베이스이름;오늘 오후에 느지막이 일어나 ..

Spring 본캠프 Day 068 - 일정 관리 앱 Develop 1단계 진행 중

도전 단계까지 포함하여 총 8단계인 과제 중 1단계만 하는 중인데도 벌써 트러블슈팅(troubleshooting)으로 작성할 오류를 두 개나 냈다. 이번엔 낸 오류는 쉼표와 관련이 없지만 평소 쉼표를 깜빡해서 빨간 줄을 자주 마주하곤 했는데, 오늘부터는 쉼표를 맨 앞으로 옮기기로 했다. 튜터님께서 알려주신 방법인데, 이렇게 하면 쉼표를 빠뜨릴 일이 줄어들 거라고 하셨다. 확실히 앞에 쓰니 쉼표가 눈에 더 잘 들어오기도 하고, 앞에 쓸지 뒤에 쓸지 고민하는 그 몇 초 덕에 '쉼표 쓰기'를 더 잘 의식하게 되었다. 개인 프로젝트를 한 뒤로, 정확히는 스프링(Spring)을 공부한 뒤로 갖가지 오류를 내면서 유입 키워드에 오류의 비중이 커졌다. 트러블슈팅(trooubleshooting)을 작성할 땐 보통 해결..

Spring 본캠프 Day 067 - 숙련 Spring 3주차 완강, "오류의 가호가 있기를!"

package com.example.board.repository;import com.example.board.entity.Member;import org.springframework.data.jpa.repository.JpaRepository;import java.util.Optional;// repository layer의 인터페이스(interface)public interface MemberRepository extends JpaRepository { Optional findById(Long id); /* [수정 전] findByIdInRepository(Long id) [수정 후] findById(Long id) */}어제 본 Error creating bean wit..

Spring 본캠프 Day 066 - 숙련 Spring 2주차 완강, 다 끝내려고 했으나…….

오류가 났다.3주 차 강의를 모두 듣기까지 딱 40여 분 남았을 때, CRUD 중 R 기능을 작업하고 실행을 눌렀을 때, 종료 버튼을 누르지 않았는데도 애플리케이션(application)이 자기 마음대로 꺼졌다. 이 오류는 챗GPT에 물어보면 어찌저찌 해결할 수 있긴 하겠으나, 왠지 어제 받은 과제를 하는 도중에 또 겪을 듯한 직감이 들어서 튜터님께 물어보기로 했다. 유일하게 확신하는 사항은 분명 내 손가락이 또 무언가를 잘못 쳤다는 점! 컴퓨터는 하라는 대로 했을 뿐이라는 사실! 문제는 그 무언가가 뭔지 모르겠다! 오류는 이미 2주 차 강의를 들을 때도 발생했다. 일정 생성인데 POST 메서드(method)가 아니라 GET 메서드를 써서 405 Method Not Allowed 오류 메시지를 아침부터 ..

Spring 본캠프 Day 065 - 일정 관리 앱 만들기 0단계부터 3단계까지 제출, 하루에 리드미(README)를 두 개나 작성하다니!

1. 필수 단계 과제 링크 2. 도전 단계 과제 링크전말은 이러했다. 필수 단계 과제에서 도전 단계 과제로 넘어가면 데이터베이스 구성 자체가 바뀌어서 깃허브(Github)에 브랜치(branch)를 하나 만든 뒤 각 과제를 저장했다. 나중에 필요할 때마다 원하는 결과물을 참고하고 싶어서. 그런 다음 팀원들과 함께 재즈 음악 흐르는 카페 분위기 속에서 각자 과제를 했는데, 그랬는데……. '어라? 잠깐만.' '둘의 구성이 다르면 ERD와 API 명세서도 달라야 맞지 않니?' 의문이 든 시간이 자정이 넘은 시간이었기 때문에 진짜 마른세수를 몇 번이나 했는지 모른다. 어제 새벽 2시 넘어서 리드미(README)를 쓰고, 아침에 잠깐 3단계 리팩토링(refactoring)을 진행하고, 오후 1시까지 속으로 통곡하면..

Spring 본캠프 Day 064 - 도전 단계 과제 첫 도전, 3단계 일정 관리 앱까지 일단 만들긴 했는데…….

역시 직접 짠 코드는 마음에 들지 않았다. 좋아하는 스파게티와 멀어지고 싶을 만큼. 퇴실하기 전 약 20분이 남았을 때, 튜터님이 한컴타자연습 치는 줄 아셨다고 웃음이 빵 터졌을 만큼 부서져라 키보드를 두들겨서 3단계 일정 관리 앱 만들기를 끝냈다. 도전 과제 3단계는 '데이터베이스(database) 구성을 바꾸면 얼마나 고생하는지' 몸소 겪으라는 의미로 내준 과제 같았다. 더도 말고 덜도 말고 표가 딱 하나 늘었을 뿐인데, 고칠 부분은 정말 자비 없이 늘었다.  10배? 아니. 20배.오늘은 점심과 저녁 시간 직전까지 튜터님과 3단계 과제를 붙잡느라 아침에 허리 근력 강화 운동을 하고 점심 먹기 전에만 10분 정도 움직였다. 다행히 오늘 메뉴가 부대찌개이기도 했고, '아무리 바빠도 한국인은 밥심이지!'..