https://youtu.be/nMiW7n-qSEw?si=iQDXNcv1WiPhyhwE

 

분명 휴학했는데 왜 더 바쁠까...

1. 월

세오스 첫 백엔드 활동 날. 스터디 시간은 저녁 7시라 일찍 홍익대학교에 가서 시간을 보냈다. 홍대의 카나에서 시간을 때웠는데 개강 직후라 그런지 무척 사람이 많아서 힘겹게 자리를 잡았다. 그리고 오랜만에 만난 친구한테서 교재 편집 알바도 따냈다! 요즘 돈 버는 것에 집중하고 있다.. 세오스 백엔드 자료도 예습하다가 연세대학교로 이동했다. 스터디 장소가 연세대학교 제 1공학관이었는데, 홍익대학교 4공학관과 비교가 되었다..ㅎㅎ

끝나고 프론트엔드랑 합동 뒤풀이도 했는데 경기도민은 일찍 떠나서 아쉬웠다. 

 

2. 화 

선릉에서 데이트를 했다. 농민백암순대는 신이야

어쨌든 또 서울을 갔다 왔다

 

3. 수 

알바 면접을 봤다. 11시에 면접이었는데 알바 교육을 1시에 바로 받았다. 실화임 알바 교육은 시급의 반 준다더라...

알바 구하기 정말 힘든 세상이다. 지원만 5군데? 가까이 했는데 열람조차 하지 않거나 열람하고 읽씹 당하거나.. 경쟁률이 15대 1이라고 했다.

제주도에 친구랑 놀러갔을 때 알바가 구해지지 않느다고 하소연했더니 친구의 한마디. 알바는 진짜 관상 보고 뽑아. 

내 이력서의 사진을 보더니 29살 같다며 당장 바꾸는 걸 추천했다. 이력서하면 당연히 증명사진이 낫다고 생각했는데 그건 아니었다.  

아무튼 알바 교육을 1시부터 5시까지 받고 바로 서울로 갔다. 세오스 전체 세션이 있는 날이었다. 다시 7시부터 9시까지 동아리 활동을 하고 뒤풀이는 가지 않았다. 바로 다음날에 알바 교육 8시간이 남아있었기 때문이다. 

 

4. 목 

알바 교육 8시간. 무한 노동의 세계

집에 와서는 백엔드 과제를 하고 ICPC Sinchon 인수인계 문서를 작성했다. 노동은 아니었지만 휴식도 아니었다. 

 

5. 금 

남자친구 학교에 놀러갔다. 서울에 간거니까 외출은 외출이다..!

 

6. 토 

강남에서 데이트를 했다. 백엔드 과제를 다 못 끝내서 만나서 카공한게 미안..

 

7. 일 

오전에는 교재 편집 알바, 낮에는 백엔드 코드 리뷰 과제, 저녁에는 인수인계를 하러 신촌으로 갔다. 


금요일에 조금 얇게 입었더니 바로 감기에 걸렸다... 에츄

이번주에 왜 이렇게 피곤하지 생각해봤는데 그냥 일정이 많았다. 

얼마나 많은 일이 있었는지 월요일이 한 달 전처럼 느껴진다... 체감상 알바 구한지 한 달된 것 같았는데 일주일이 채 되지 않았다니.

 

남의 지갑에서 돈 빼내기는 정말 쉽지 않구나를 느끼며 이번 주를 마무리한다... 

 

아니 근데! 막상 바쁘기만 했지 하고 싶었던 건 많이 못한 것 같아서 아쉽다. 물론 물리적으로 불가능한 일정이었지만, 일주일을 더 효율적으로 굴리는 법에 대해 고민해봐야겠다.

 

백엔드&프론트엔드 회식자리에서 나온 계란말이

https://youtu.be/dYNG-HIuOzQ?si=TqdkFKy8QWYq2rqW

요즘 너무너무 빠졌어요... 진심 몇 십번 들은 플리
솔직히 8월 4주차, 9월 1주차 WIL을 쓰지 않은 건 다 이유가 있다.
배운 게 없기 때문....
 
개강하자마자 약속이 월화수목금토,월화수목금토..... 그냥 매일매일 사람을 만나!!!!!!!!!날 내버려둬...
 
그리고 포스트유니브 활동이 겹치고 겹쳐서 너무너무 바빴다... 회의 텀이 이틀?수준이라 그냥 매일매일 회의 준비...
백준도 그냥저냥... 브론즈로 채우고!.....ㅠ

매일매일 약속 나가느라 처참한 성취 기록.... 사람 만나는 것도 일이라고..!
더욱 처참한 공부 스케쥴러...

1. 알고리즘

11049번: 행렬 곱셈 순서 (acmicpc.net) (골3)
32226번: 진한주식회사는 어느 도시에 있을까? (acmicpc.net) (플4)
7869번: 두 원 (acmicpc.net) (골2)
28067번: 기하가 너무 좋아 (acmicpc.net) (골4)
11758번: CCW (acmicpc.net) (골5)
 
이번 주에는 그래도 브론즈 말고도 많이 풀었다! 사실 첫번째 빼고 대부분 기하문제다....
근데 풀어보면서 기하의 매력이 느꼈달까...! 뭔가 복잡한 알고리즘이 필요한 것이 아니라 수능 수학문제를 푼다는 느낌이 강했다. 그래서 오히려 재밌었다. 아는 알고리즘이 많이 없어서.... 차라리 쉬웠다. 
 
그래서 기하문제를 풀며 내가 배운 것...
 

1.1 원하는 소수점 자리만큼 출력하기

cout << fixed; 		// 소수점 자릿수만 고정
cout.precision(3);	// 10^(-3)까지 출력된다

[C++] 소숫점 반올림 고정출력 cout << fixed; cout.precision(); (velog.io)

[C++] 소숫점 반올림 고정출력 cout << fixed; cout.precision();

소숫점을 고정시켜서 출력해야 할 때 사용하면 됩니다.기본적으로 반올림이 포함됩니다. BOJ 10984 (B3) 내 학점을 구해줘

velog.io

잘 정리된 글도 가져왔다!
 
주의할 점
: 자동적으로 반올림이 된다. 
: 만약 fixed를 쓰지 않으면 정수부를 포함해서 전체 길이가 고정된다.
 

1.2 삼각함수 쓰기

#include <cmath>

res += 0.5 * r2 * r2 * (b - sin(b));

1. 헤더파일 <cmath>가 필요하다
2. 삼각함수 안에 무조건 라디안을 쓴다!
예를 들어, 60도에 대한 사인값을 구하고 싶다면 sin(60)이 아니라 sin(60*PI/180)으로 써야한다. 
단위에 주의할 것!!~~
 
생각보다 삼각함수 쓰기 쉬웠다.
 

1.3 역삼각함수의 nan문제

#include <cmath>

double a = 2 * acos((r1 * r1 + l * l - r2 * r2) / (2 * r1 * l));
double b = 2 * acos((r2 * r2 + l * l - r1 * r1) / (2 * r2 * l));

1. 헤더파일 <cmath>가 필요하다
2. 역삼각함수 안에 (-1) ~ 1 값을 넣어야한다.
 
역삼각함수 그래프를 생각해보쟈

애초에 sin함수와 cos함수의 치역은 [-1, 1]이므로 역삼각함수의 정의역이 [-1, 1]인 것은 당연...하다...
그래서 백준 문제를 풀면서 역삼각함수 안에 [-1, 1]범위의 값을 넣지 않아서 nan값이 많이 나왔다....
 

1.4 부동소수점 오차 문제

진짜 미치도록 짜증났던....
아무리 생각해도 로직이 맞는데 왜 틀렸지?!!의 반복이었다. 28067번...

if (sqrt(l3) + 1e-6 >= (sqrt(l1) + sqrt(l2))) {
					flag = false;
				}

문제는 sqrt였다.. 사실 sqrt말고도 pow도 부동소수점 문제가 크게 생길 수 있다. 
 
백준에도 관련 글이 올라와 있다.
부동소숫점 오류 (acmicpc.net)
 

요약하자면

1. 문제를 풀 때 float보다는 double
: double의 상대 오차는 약 10^(-15)이다.
: 다시 말하면 그 이하로는 오차가 발생할 수 있다는 것이다...
2. 정수가 들어있는 실수형 변수를 정수로 바로 캐스팅(대입?)하면 안된다. 
: 보통의 경우  1e-6 ~ 1e-9 정도를 더한다..
3. 비교 연산을 할 때 등호를 사용하면 안된다. 
: 어느정도의 오차가 있기 때문에 == 을 쓰면 원하는 결과가 나오지 않을 수 있다.
 

해결책

1. 실수를 쓰지 않는다!
: 무조건 식을 정수형으로 바꾼다. 제곱하고 제곱하기...
2. 1e-6 ~ 1e-9값을 통해 오차를 보정?한다.
 
++ 정수간의 연산에서도 오차가 생길 수 있다..
: int형끼리 나눗셈을 해도 오차가 발생한다....
 
혹시 내 로직은 완벽한데 계속 틀렸습니다가 뜬다면?실수형을 사용한 부분을 살펴보쟈..
 

1.5 CCW

: Counter Clock Wise
[알고리즘] CCW(Counter Clock Wise) (tistory.com)

[알고리즘] CCW(Counter Clock Wise)

알고리즘 개요 및 소개 CCW( Counter Clock Wise) 알고리즘은 3개의 점 A, B, C가 있을 때 이 점 3개를 이은 직선의 방향을 알고자 할 때 유용한 기하 알고리즘이다. 경우의 수는 총 3가지가 있으며 시계,

snowfleur.tistory.com

 
처음에 11758번을 CCW를 이용하지 않고 풀었었다. 
대충 p1, p2를 잇는 직선을 기준으로 영역을 나눈 다음 어느 영역에 속하는지에 따라 시계, 반시계방향을 결정하는 풀이였는데...
 
틀렸다!
http://boj.kr/98489122d495441e81b7d164da38ceac
이건 틀린 코드..
 
흠 역시나 부동소수점 오차에 관한 문제일 수도 있다(짐작
확실히 CCW는 나눗셈 부분 없이 구할 수 있어서 부동소수점 오차는 발생할 일이 없다. 
 
++활용에 관하나 흥미로운 글
CCW (Counter-ClockWise) - (2) (tistory.com)

CCW (Counter-ClockWise) - (2)

CCW (Counter-ClockWise) - (2) 이전 게시글 (CCW (Counter-ClockWise) https://wogud6792.tistory.com/10) 이번 게시글에서는 CCW알고리즘이 어떻게 이용되는지를 알아볼 것이다. 우선 CCW 알고리즘 코드는 다음과 같다. 소

rebro.kr

 

벌써 이만큼이나 왔다! 완성까지 한 2주 남았는데... 완성될 모습이 너무 기대된다. 

2. 기획

지금 사과 광고공모전을 하는 중인데... 어렵다! 
분명 내가 생각할 때까지만 해도 로직이 괜찮았는데, 왜 회의만 하면 구려보이는 걸까..!
 
스스로 분석하기에 내 문제점은... 너무 갈팡질팡한다는 것이다. 그러니까 어떤 것이 중요한 것인지 판단을 제대로 못하는 것 같다. 자꾸 사소하고 이상한 포인트에 꽂혀서 정작 큰 틀을 보지 못한다고 해야할까?
 
자꾸만 길 잃고 헤매는 나의 로직... 너무 작은 부분에 매몰되지 말고 큰 주제!큰 그림을 보려고 의식적으로 노력해야함을 느꼈다..  
 

3. 대학수학 및 전공 공부

...못햇어요~~ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
 
아니 변명 좀 하자면, 업무가 너무 많다보니까 자꾸 미루게 된다. 그냥 하루에 1시간씩만!해도 이득인데... 그것마저도 못해서... 뭔가 한 번 공부를 한다면 3시간씩! 이런 식으로 목표를 너무 높게 설정해서 오히려 안히게 되는 것 같다. 그리고 정신승리 하느라..
 
오늘 한 시간 하는 대신 흐름 끊기지 않게 내일 한번에 3시간해야지! 이런 생각으로 매일매일 미루기...
 

4. 이번 주 피드백

1. 백준에 너무 많은 시간 투자를 했다. 
: 이때까지 밀린 백준을 한 셈이라고 치면 안될까...
 
2. 약속을 너무 많이 나감
: 인정.. 좀 줄여야함. 수업 끝나고 약속을 매일 나갔더니 공부 시간이 부족했다... 일주일에 최대 3번정도로만 잡아야지..
 
사실 다른 모든 문제는 2번이 원인인 것 같다. 
그래... 약속 좀 줄여야지...


썸넬

https://youtu.be/dNcZ8rJ5gLM?si=1C_dfXg6lUnJ0_FX

요즘은 자고 일어나도 개운하지 않아!!.. 오늘도 거지같은 꿈을 꿔서 깼다..


1. GDSC 프로젝트 트랙 : 끝!!!

드디어드디어! GDSC 프로젝트 트랙이 끝났다. 학기 중부터 시작해서 여기까지 오기까지... 꽤나 길었던 듯 짧았던 듯 정신없이 지나간 1학기처럼 방학마저도 순식간에 지나가버렸다.
 
회고록은 따로 쓰겠지만(아마도), 짧게나마 남기자면 스스로 많이 부족함을 느끼는 시간이었다. 간단한 CRUD 기능만 구현한 것과 마찬가지이지만, 그것조차도 많은 오류를 만났었다...
 

1.1 개념의 중요성을 느끼다 : 영속성 컨텍스트

[SpringBoot] 물품 추가 API 구현 (tistory.com)

[SpringBoot] 물품 추가 API 구현

1. 목표🎯특정 카테고리에 물품을 추가하는 기능 구현하기  2. 기능 명세서📜NameMethodURIDomainAuthZ물품 추가POST/itemitemADMIN  3. 1차 코드 작성💻이전에 만들었던 '카테고리 추가' 기능이랑 똑같이

yeonee911.tistory.com

물품(item)을 추가하는 api를 구현했는데, 물품의 상위 항목인 카테고리에 변경사항이 반영되지 않는 문제가 발생했다. 
문제가 발생한 근본적인 원인은 자바에 대한 개념이 부족한 나 자신 때문이었다...
 
해결 방안에 대해서는 해당 게시글에 작성했으나, 야생형 개발자의 부족함을 뼈저리게 느꼈다...
어느 정도 실전을 경험해봤으니 숭숭 구멍난 개념을 메꿀 차례인 것 같다.
 

1.2 웹 계층 구조의 중요성을 느끼다 : 협업과 코드 유지보수가 잘 되려면...

팀원분의 코드를 리뷰하면서 계층 구조의 중요성을 느꼈다.
 
사실 내가 기존에 작성한 코드는 계층 구조를 잘 지켰다고 생각한다. 물론 내가 직접 생각하면서 작성한 건 아니고, 다른 여러 코드를 참고하면서 자연스럽게 패턴을 따라가게 된 것이다. 그래서 그런지 정작 그 필요성을 실감하지는 못했다.
 
하지만 컨트롤러 계층에 비즈니스 로직을 모두 작성하고 텅 빈 서비스 계층을 보면서, 음... 뭔가 잘못됐다! 정도는 느낄 수 있었다.

웹 계층 구조를 지키지 않을 경우
한 곳에 코드가 뭉쳐지고 굉장히 길어져서 그걸 단순히 읽는 것조차 피로도가 굉장히 쌓였다.
유지 보수가 굉장히 힘들어질 것 같았다.. 

 

1.3 웹 계층 구조 vs MVC패턴

이 WIL을 작성하면서 든 의문인데, 그럼 웹 계층 구조와 MVC패턴이랑 뭐가 다른 거지? 같은 건가? 관계가 어떻게 되는 걸까?
호기심에 이리저리 검색해보니 나와 비슷한 의문을 가진 사람이 있었다.
mvc pattern과 웹 애플리케이션 계층 구조 비교에 관해 - 인프런 | 커뮤니티 질문&답변 (inflearn.com)

mvc pattern과 웹 애플리케이션 계층 구조 비교에 관해 - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

이 답변만으로는 조금 이해가 안돼서... 더 찾아봄
 

1.3.1 MVC 패턴이란?

MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN (mozilla.org)

MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고

developer.mozilla.org

Model : 데이터와 비즈니스 로직을 관리합니다.
View : 레이아웃과 화면을 처리합니다.
Controller : 모델과 뷰로 명령을 전달합니다.
 

1.3.2 애플리케이션 아키텍처(AA)

애플리케이션 아키텍처(Application architecture)란? (redhat.com)

애플리케이션 아키텍처(Application architecture)란?

애플리케이션 아키텍처란 소프트웨어 애플리케이션 디자인과 구조를 정의하는 프로세스를 뜻하며, 애플리케이션 구성 요소, 시스템 레이어 및 모듈 등을 정의합니다.

www.redhat.com

또다시 검색결과... 내가 알고 있던 '웹 계층형 구조'는 애플리케이션 아키텍처의 하위 항목이었다!이렇게 또 새로운 사실
 
아키텍처에 크게

- 계층화 또는 N-티어 아키텍처
- 모놀리식 아키텍처
- 마이크로 서비스 아키텍처
- 이벤트 기반 아키텍처
- 서비스 지향 아키텍처 

가 존재하는데, 여기서 '웹 계층형 구조'라고 부르던 것은 '계층화'에 속하는 것 같다
그리고 주로 이걸 계층형 아키텍처 (Layered Architecture)라고 부른다.
 
그리고 애플리케이션 아키텍쳐는 또다시 아키텍처의 하위항목이다...(복잡해!!)

< 아키텍처(Architect) >
1. 솔루션 아키텍처(SA)
2. 데이터 아키텍처(DA)
3. 시스테 아케틱처(SA)
4. 테크니컬 아키텍처(TA)
5. 소프트웨어 아키텍처(SA)
6. 엔터프라이즈 아키텍처(EA)
7. 비즈니스 아키텍처(BA)
8. 애플리케이션 아키텍처(AA)
     8.1 계층형 아키텍처 (Layered Architecture)   => 여기에 속함!!
     8.2 ...
     8.3 ...

 
중간에 조금 돌아왔지만, 어쨌든! 스프링 계층 구조에 다시 알아보자면,

JPA 활용강의 1

Spring Boot Architecture - javatpoint

Spring Boot Architecture - javatpoint

Spring Boot Architecture with Introduction, Features, Project, Starter Project Wizard, CLI, Application, Annotations, DM, Properties, Actuator, Thymeleaf View, JPA, JDBC etc

www.javatpoint.com

영어 읽는 습관 들이기..ㅎㅎ..
 

1.3.3 참고하면 좋을 글

MVC is clearly different from the layered architecture. | by Vijini Mallawaarachchi | Medium

MVC is clearly different from the layered architecture.

In monolithic architecture, the functionalities are defined in a functional manner. This makes the components of the system interwoven and…

vijini.medium.com

이 답변에 대해서도 댓글로 갑론을박..

The main difference between the two patterns is that the Clean Architecture emphasizes a separation of concerns at the business logic level, whereas the MVC pattern separates concerns at the presentation level
그리고 그 댓글들 중 오오.. 끄덕인 문장.

 
[Architecture] Layered Architecture(feat. MVC 패턴) (tistory.com)

[Architecture] Layered Architecture(feat. MVC 패턴)

❓Software Architecture소프트웨어 아키텍처는 모든 소프트웨어 시스템의 기본 구조를 말하며 시스템이 제대로 기능하고 작동하도록 하는 모든 측면을 말한다.소프트웨어 시스템에서의 아키텍처는

gnuoyus.tistory.com

3-tier Layered Architecture와 MVC (velog.io)

3-tier Layered Architecture와 MVC

많이 헷갈려하는 3-tier 계층과 MVC의 관계

velog.io

 
정말 명쾌하게 정리해주심
 

1.3.4 결론!

MVC패턴과 스프링 계층 구조를 완전히 일대일 대응시키기에는 무리가 있다.

출처 : [Architecture] Layered Architecture(feat. MVC 패턴) (tistory.com)

 
알아보다 보니 굉장히 길어졌다... 나도 따로 한 번 정리하면 좋을 듯
 
 

2. 알고리듬 두둠칫

곧 골3 찍을 듯?!
순조로운 하트 만들기. 제 눈에는 벌써 하트가 보여요

저번주는 개발하느라 바빠서 알고리즘 공부는 거의 못했다. 그냥 계속 DP만 풀었다.
이번주는 아마도 그래프만 주구장창 팔 듯! 몇 주 전에 그래프만 팠었는데, 그새 또 까먹은 것 같다.
그 와중에 재밌게 풀었던 문제 추천
10164번: 격자상의 경로 (acmicpc.net)
4883번: 삼각 그래프 (acmicpc.net) -> 이건 진짜 배열 인덱스 잘못 적었다가 계속 틀림ㅇㄴ!!
 
복습 안하면 그냥 바로 까먹어버림.. 금붕어 뻐끔뻐끔🐟🫧
 
그나마 오늘은 이분탐색을 이용한 LIS구하기 문제를 풀었다. 언제쯤 나는 알고리즘 마스터가 될 수 있을까...
매주 알고리즘 분야를 하나 정해서 그것만 파는 것도 꽤 좋은 방법 같다. 그렇게 백준에 아름다움 육각형을 만들어버리기
아니면 신촌 알고리즘 캠프 복습하기?
 

3. 대학수학 공부

그냥 못했어요!! 으악!. 이번주는 선형대수 고유치,고유벡터를 공부할 예정이다.
 

4. 게임 개발...

얘도 못함.... 내가 팀장인데 해야지.. 언제쯤 출시할까??
지난 번에 출시한 '구해줘! 알바생'도 업데이트 해야하는데, 마감 8월 31일까지임..
구해줘! 알바생 - Google Play 앱

구해줘! 알바생 - Google Play 앱

스트레스를 관리하여 3개월 계약 기간을 견디자!

play.google.com

혹시 이 글을 보시면 한번만 구경해주세요. 진짜 제가 만들었지만 재밌어요. 저의 눈물실화 알바 경험이 담긴..
그래픽도 진심 귀여움.
 
진짜 미연시가 만들기 더 힘들다. 이런 캐주얼 게임 개발이 훨씬 쉽긴 한듯..
플레이는 미연시가 훨씬 쉬운데, 대체 왜?!(그래서 만들기 더 쉬운 줄 알았던 과거의 나..
 


 
그 와중에 광고 공모전 동아리, 포스트유니브도 지원했다!! 만약 붙는다면... 정말 흥미로운 경험이 될 듯!
그리고 세오스도 모집 시작했고... 백엔드 지원해보고 싶긴 한데 만약에, 정말 만약에? 포스트유니브에 합격한다면 병행은 아무래도 힘들지 싶다.
.
.
.
힘들겠지..? 하지만 하고 싶다...
 
아마 이번주부터 가능하면 빨리! 코틀린 관련 책도 빌려서 조금씩 개념을 정리해보려고 한다!

유튭 썸넬이자 내 썸넬

https://youtu.be/jJTKX1O5pOw?si=LdKUvJTjiVqnyERC


1. GDSC 프로젝트 트랙 : JAVA & Spring Boot

1.1 POSTMAN, 아프지 말고 건강해야 한다💉

카테고리 전체 조회api까지 만들었으나 도저히 확인할 방법이 없었다. 

requestBody와 responseBody는 대체 어떻게 만드는 거지? 하고 열심히 검색.

POSTMAN을 써야한다고 나왔다! 마침 팀원분이 토큰 발급기능 완성했다고 하셔서 테스트 바로 ㄱㄱ

세상이 날 억까해

도무지 원인을 알 수 없었다. 똑같은 코드를 가지고 대체 왜?

시도해본 것

1.REDIS 설치하기 -> 안하고 있었다! 바로 설치함.
2. POSTMAN의 포트 번호 변경 -> 내 로컬에서 돌아가는 건데 의미가 있나?

 

일단 난 H2 데이터베이스 포트 번호를 8083으로 변경해고 쓰고 있었다.  

h2 데이터베이스 연결시 포트번호 오류 - 인프런 | 커뮤니티 질문&답변 (inflearn.com)

 

h2 데이터베이스 연결시 포트번호 오류 - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

사실 스프링 부트와 H2의 포트번호가 같아야 하는 줄 알고 있었다. 

그래서 내가 변경한 포트 번호가 전체(스프링부트와 H2)를 바꾼 것인 줄 알고 POSTMAN에서도 당연 8083으로 접근했었다.

그래서 혹시나..? 싶은 마음으로 8080으로 접속. 그리고...

드디어!!! 눈물난다. 뭔가 신기함. 진짜 백엔드 하는 것 같다ㅋㅋㅋ

하지만 나의 시련은 이제부터 시작이었으니...

 

1.2 무한참조무한참조무한참조....의 늪

이게 머고....

전체 카테고리를 조회한 순간 내 눈앞에 펼쳐지는 끝이 없는 데이터의 나열.

그 무한함에 눈앞이 아득해지고....

 

근데 지금 코드를 고치다 생각하는 건데, 서버 에러보다 훨씬 낫다 망할.

 

package mango.rentalsystem.domain.category.dto.response;

import java.util.List;

import mango.rentalsystem.domain.category.domain.Category;
import mango.rentalsystem.domain.department.domain.Department;
import mango.rentalsystem.domain.item.domain.Item;

public record CategoryResponse(
	Long categoryId,
	String name,
	String description,
	Department department,
	List<Item> items
) {
	public static CategoryResponse of (Category category) {
		return new CategoryResponse(
			category.getId(),
			category.getName(),
			category.getDescription(),
			category.getDepartment(),
			category.getItems()
		);
	}
}

 

이건 내 기존 코드. 문제는 순환참조였다.

CategoryResponse가 Department객체에 접근하고, 그 Department 객체가 다시 Category객체를 참조하는 구조에서 발생할 수 있습니다.

그렇다고 합니다...

무한참조 문제의 해결책은 크게 몇가지가 있는 듯하다.

 

[JPA] 양방향 순환참조 문제 및 해결방법 (tistory.com)

 

[JPA] 양방향 순환참조 문제 및 해결방법

게시판 프로젝트를 진행하던 중 순환 참조 문제에 마주하였다. ※ 순환 참조(Circular reference)란, 참조하는 대상이 서로 물려 있어 참조할 수 없게 되는 현상을 말한다. JPA에서 양방향으로 연결된 E

dev-coco.tistory.com

주로 dto를 반환하는 방법이 가장 좋다고 하지만, 내가 해결하지 못하고 있는 이유는 이러하다.

 

dto안에 dto를 중첩할 수 있을까? 

아니면 하위 dto를 list로 변환하고, 상위 dto 안에 list를 담아서 반환할 수 있을까?

 

아직 해결은 못했다... 이것에 관해서는 얘기가 너무 길어져서 따로 글을 써야 할 듯.

아니 원래는 api개발할 때마다 글 쓰려고 했는데;; 귀찮아...

 

이 외에도 기본적으로 제공하는 CRUD기능을 통해 delete기능을 구현했다.

이때까지 너무 미뤄둔 느낌이라 정말 집중해서 이것만 해야할 듯. 더 이상 물러날 곳이 없다.

 

2. Algorithm도 rhythm이다 두둠칫

2.1 저랑 같이 ♥️스꾸(스트릭 꾸미기)♥️하실 분!!

나의 야심찬 목표.

내가 생각해도 너무 신박한 아이디어. 혹시 나 천재일지도.

 

핑크핑크 너무 예쁘다

원래 무늬 들어가는 부분을 2문제씩 풀려다가 생각보다 티가 안나서 3문제로 바꿨다. 

아직까지 무늬 모두 채움!! 하트 다음엔 무슨 무늬를 넣어볼까....

 

2.2 인생이 Dynamic하길 바라는 마음으로... DP 풀기

그렇다고 스트릭을 브론즈로만 채운 건 아니다!! 물론 바쁜 날은 브론즈만 3문제 풀기도 했지만....

이번 주에는 주로 DP문제를 풀었다.

2688번: 줄어들지 않아 (acmicpc.net)

11726번: 2×n 타일링 (acmicpc.net)

8394번: 악수 (acmicpc.net) -->>> 이거는 직접 구할 때 잘못 구해서 처음에 계속 삽질함 ㅠㅠ

1699번: 제곱수의 합 (acmicpc.net)

 

쉬운 DP라 다 실버 문제다.

 

지금 티어가 골드4인데 실버 문제만 풀어도 레이팅이 엄청 잘 오른다. 오호라...

이대로 얼른 플래티넘 찍고 싶다.

 

22021번: 자동분무기 (acmicpc.net)

이건 풀다가 실패했다. 분명 맞다고 생각했는데... 반례를 찾아버림

 

3. 대학생도 인강이 필요해요.

진짜 짜증나는게 뭔지 아세요.

지난 학기에 수치해석에서 Trapezoid랑 Simpson공식을 배웠는데, 정말 이해가 단 하나도 되지 않았거든요.

원래 엄청난 강의력으로 유명한 교수님임^^

인강 듣고 10분만에 해당 공식이 나오게 된 경위를 이해했습니다. 진짜 내가 이걸 조금만 더 일찍 알았더라면 학점을 잘 받을 수 있었을까... 무척 현타가 왔어요.

이거 진짜 판서 하나도 안 빼먹고 옮긴 거임
이걸 이렇게 어렵게 받아들일 내용이 아니었는데...

아무튼... 이번주는 정적분만 공부했습니다. 아마도 다음주는 선형대수만 할 것 같아요. 

하루에 최소 4시간씩 투자하려고 노력 중!

 

4. 끝나지 않는 일일일

4.1 미연시 남주 이름은?

현재 개발 중인 Subway-way... 본래 남주와 여주 이름은 '지철' 과 '지하지'였다.

왜냐! 지하철이 컨셉인 미연시에 맞춰서 지었기 때문이다.

'하지'란 이름은 개인적으로 정말 예쁘다고 생각한다. 문제는 남주인공 이름.

팀원들에게 '구리다'라는 평을 얻었고..... 다시 후보를 받고 투표를 했다.

 

그래서? '유지철'로 결정.

왜 다시 지철이냐? 라고 할 수 있는데, 알고보니 성이 '지', 이름이 '철'. 외자가 구리다는 거였다.  

사실 다른 여러 후보('선호', '호선', '일호', '동우')가 나왔지만, 본래 이름을 짓고 캐디를 해서 그런가, 기존 이름이 잘 어울리는 건 어쩔 수 없었다. 이미 이름에 정들었기도 하고...

 

4.2 언제 출시하나요

본래 이번달에는 꼭!꼭! 출시를 하려고했는데 아마 힘들지 않을까... 일단 유니티 안에 스크립트를 넣는 작업이 너무 오래 걸리고, 서브기획쪽에서 1차로 작업하면 내가 피드백을 해야하는데... 나도 시간이 없다!! 저 무한참조🤮부터 고치는 데 한참이다. 16일에 프로젝트 트랙 마감일이니, 그때까지는 거의 작업을 못하지 싶다. 

이때까지 개발을 회피한 업보가 너무 크다.

 

그래도 그래픽/사운드/플밍 피드백도 계속 줘야하고... 신경을 못 쓴다지만 아예 손 놓는 건 아니다.(당연함. 내가 팀장임.) 특히 sfx를 거의 다 채워둬서 한결 마음이 편하다.

 


 

머했다고 7월이 다 갔나요. 왜 벌써 8월 둘째 주인가요. 저의 방학은 어디로 가버렸나요.

그리고 이것은 WIL인가요 저의 일기인가요.

 

생각해보니 요즘 일-공부-일-공부라 일기도 안 썼다. 쓸 게 없어...

 

WIL 썼으니까 다시 무한참조를 고치러... 가보겠습니당

+ Recent posts