본문 바로가기

일상+자잘한 일/개발일지-unsolved.hgu

[Unsolved.ac/백엔드-1] 1번째 개발일지

개발 내용 3줄 요약

1. 비공식 APIs와 solved.ac APIs 엔드포인트 확인

2. Spring 프로젝트 기초 공사 및 DB 연동

3. DB 설계

개발 소감

생각보다 진도를 나가지 못했다. 코드 작성은 하지 못하고 이것저것 확인만 하다 하루가 흘러버렸다.

테이블을 결국 리팩터링 하는 순간은 오겠지만, 최대한 갈아엎는 순간을 피하기 위해 필요한 절차였다고 믿어야겠다.

 

과거 인턴시절 흘려들었던 api호출을 확인하는 부분이 이렇게 쓰일 줄 몰랐다!

리버스 엔지니어링(역공학)은 처음 해보는 일이었는데, 새로운 방법을 고려한 좋은 시도였다.

 

ISSUE

  • MySQL8 버전을 쓰면서 다른 버전 세팅을 사용하여 에러 발생
    (ex: com.mysql.cj.jdbc.Driver 과 com.mysql.jdbc.Driver)
    (ex: jpa 설정 시 org.hibernate.dialect.MySQL8Dialect)

배운 내용

  • 개발자도구를 통한 소스코드 리버스 엔지니어링
  • Spring과 MySQL 연동하는 방법

Check APIs


 

우선 API document를 들여다보며 나의 DB를 어떻게 설계할 것인지 생각해 보았다.

사실 과거에 기억을 토대로 틈날 때 대략적으로 구상했지만, 혹시나 다른 문제가 생기거나 세부적인 보충이 필요할 것 같아 API를 뜯어보며 확인해 보았다.

 

그러다 비공식 solved.ac API document를 저장한 GitHub에서 아래 문구를 발견하였다.

 

설명 문구

 

혹시 소스 코드를 역으로 뜯어보면 API 호출 횟수를 늘리거나, item 개수를 늘려서 가져올 수 있지 않을까?라는 생각을 하게 되었고 소스 코드를 뜯어보았다.

 

개발자 도구를 통한 코드 역추적
윗 사진 확대본

개발자 도구에서 페이지를 불러오는 순간을 캡처해 api 엔드포인트를 찾아냈다.

아쉽게도 이것저것 확인해 보았지만 item은 50개로 제한되어 더 많이 가져오는 방법은 없는 것 같았다.

 


2. Entity, Repo 코드 작성


api를 통해 DB를 설계하고 작성하였다. 데이터를 가져오기 전 spring과 db연결, spring, GitHub 세팅 등을 하였고 repository코드와 entity코드를 작성하였다.

아래는 유저 정보 entity를 작성한 코드이다.


3. DB 설계본


최종 테이블

 

대충 구상한 테이블

최종 구상과 크게 다르지 않은데, problem에 들어갈 tag를 위해 tag 테이블과 problem-tag 테이블이 추가되었다.