본문 바로가기

공부

(113)
24.01.10 내일 드디어 담당 튜터님과 피드백 시간이 있다. 우리의 문제점을 잘 적어서 튜터님께 질문하자! 오늘은 어제에 이어 우리 프로젝트에 실제로 코드를 적용시키는데 시간을 썼다. 탑스터 관련 도메인 기능 구현을 했는데 이게 생각보다 시간이 더오래걸린다. 내가 예상했던 것보다 한 3시간씩 더 시간이 더 소요된다. 아무래도 연관관계가 조금 복잡하다보니, save하나 하는데도 로직이 많이 길어지나보다. 아무튼 이제 탑스터 등록/조회/삭제 기능까지 마무리 됐다. 또 어제 다시 구현 했던 maniadb로 쿼리를 날렸던 메소드를 세분화해줬다. 메소드 하나가 갖는 기능이 너무 많아서 그 기능들을 나눠서 분배 해주는 작업을 했다. 이제는 파편화된 도메인들을 묶어주는 시간이다. 또 프론트 개발을 본격적으로 할 것. 경남님과 영..
24.01.09 오늘은 어제 test용으로 팠던 프로젝트를 우리 topster2.0 프로젝트에 이식하는 일을 했다. 이거 근데 생각보다 시간이 오래걸렸다. 물론 로직이 어렵거나 하진 않았다. 우선 새로 Albu, Song 도메인을 셋업을 하고, maniadb에서 온 XML데이터를 JSON으로 파싱하고, 파싱된 JSON 데이터를 Entity로 변환하는 로직을 새로 추가했다. 그리고 어제 문제였던 song이 마지막 트랙이 누락되었던 것도 수정했다. JSONArray Song을 사용하지 않고, tracklist인 String값을 Split해서 나눠서 진행했다. 그렇게 모든 과정이 끝났고, 정상적으로 로직은 돌아갔다. 물론 아직 추가해야할 로직이 많다. (rest api는 최초로만 쿼리를 보내고, 우리 db에 있으면 rest ..
24.01.08 네이버 이메일로 회원가입 기능을 만들 때 참고해야될 것: 네이버 계정이 2단계 인증을 사용한다면 mail을 보낼 때 비밀번호를 따로 생성해서 주어야 함. 스포티파이 open API를 사용하는건 조금 어려움이 있었음. Access token을 발급하는 과정에서 Invalidated Client가 발생해서 이유를 못찾았음. resteTemplate을 사용하는데 문제는 없어 보임. maniaDB를 이용해서 경남님과 나는 원하는 data를 가져오고, 그중 원하는 정보만 필터링 해서 쓰는 것을 확인함.하지만 maniaDB는 속도가 진짜 개느림. -> 우선 maniaDB로 기술을 완성 시키고 시간이 남으면 Spotify로 API를 변경하도록. 오늘의 삽질 결과물! 그래도 원하는 결과를 얻어서 다행이다. 우선 내가 ..
24.01.06 오늘 진짜 좌충우돌 우당탕탕 하루였다. 아침엔 RestTemplate을 이용해 스포티파이 api를 사용할 기초 setup을 하려고 했는데, 이것보다 ci/cd 환경을 조성하는 게 먼저라고 생각이 들었다. 그래서 github action을 이용해 ci를 구성하고자 한다. [CI] CI는 Continuous Integration 한글로는 지속적 통합. 협업을 할 때 같은 소스코드에 여러명이 작업을 할 때가 있다. 이때 머지를 할때 conflict가 정말 많이 나겠지? 그렇다면 이 conflict를 다루려면 어떻게 하면 좋을까? 바로 commit과 push를 아주 잘게 잘게 잘라서 하면 conflict를 더 대응하기 쉬워지겠지? MSA(Micro Service Archietecture) 환경: 작은 기능 단위..
TestSuiteExecutionException 오류(수정) 와! 경남님! 준영님! 구세주다. 테스트를 테스트(?) 하다가 생긴 오류. 내가 진짜 맥을 잘못 짚어서 엉뚱한 것을 찌르고 있었다. 다행히 한시간 정도 고민하고, 동료들에게 질문을 해서 답을 얻었다! 내가 삽질 한 이유는 다른 오류였따. 우선 오류 상황을 보자. 여기 첫줄에 이 오류가 떠있다. 이 오류의 무서운 점은 내가 갖고 있는 프로젝트의 모든 테스트 코드가 똑같은 오류를 갖는 다는 것! 원래 잘 작동하던 기존의 프로젝트도 같은 오류로 인해 테스트가 아예 뜨질 않는 것이였다. 근데.. 나는 맨 윗줄을 보지 않고 아래의 ClassNotFoundException 오류만 계속 공부했다. 첫번째로 https://www.movingjin.com/27 IntelliJ에서 java.lang.ClassNotFoun..
24.01.05 우선 오늘 기술 면접 대비 답변을 적어보자! [RDBMS와 NoSQL의 차이] RDBMS는 관계형 데이터 베이스로서 복잡한 관계의 데이터를 다룰 때 이점이 있다. 또한 정해진 스키마에 맞게 데이터를 넣어야 한다. 반면 NoSQL은 스키마가 고정되어 있지 않다. 따라서 유연하게 데이터를 저장할 수 있다. 따라서 대용량 데이터를 사용하는데 이점이 있다. RDBMS의 특징은 고정된 스키마를 사용하고, 테이블간 조인을 하여 관계를 맺을 수 있다. 또한 트랜잭션을 걸수 있어 데이터의 정합성을 지킬 수 있다. 데이터베이스는 수직적 확장이 쉽다. NoSQL의 특징은 스키마를 동적으로 변할 수 있어 다양한 데이터를 처리하는데 적합하다. 하지만 데이터의 중복이 있을 수 있고, 이때문에 데이터를 수정하려면 모든 컬렉션을 ..
24.01.04 오늘 드디어 최종 프로젝트 시작! 진짜 너무 막막하고 어렵게 느껴진다. 우선 우리 팀의 주제를 얘기하자면 탑스터에 대한 주제다. 팀 주제 : 탑스터2.0 스포티파이 Open API를 이용해 탑스터를 만들고 공유할 수 있는 게시판! 탑스터와 다른점이라면? 탑스터는 앨범 디테일들을 볼 수 없다. 하지만 우리는 스포티파이 Open API를 사용할 것이기 때문에 앨범의 디테일들을 볼 수 있다.(가수, 앨범 발매일, 앨범 이름 ...)또한 트랙곡들의 정보까지 추가할 생각이다. 스포티 파이의 API를 찾아보니 Search Query가 있었다. 이 쿼리를 이용해 가수의 이름을 입력하면? 가수의 앨범들을 조회할 수 있다(조건을 넣어서 쿼리를 날릴 수 있음). 초기 설계는 이렇게 했다. 우리 프로젝트의 ERD이다. AP..
24.01.03 프로젝트를 보내면서 느꼈던 소감 깃을 진짜 잘써야된다. 깃에서 알 수 없는 오류가 생기면 시간을 정말 많이 잡아먹는다. 깃의 이슈를 쓰자! 내가 어떤 기능을 어떤 커밋으로 했는지 한눈에 알아보기 쉽다. 깃 풀을 제때제때 하자. 이거 잘 안하면 정말 돌이킬 수 없는 충돌을 보게 된다. 테스트 코드를 이게 작성할 때가 됐다. 아직 대분의 기능이 repository에서 작동한다. 내가 직접 만든 로직이 적은데 이를 테스트 하는건 좋지 않다고 생각한다. 왜냐하면 jpa는 이미 완성됐기 때문! 하지만 이제 점점 서비스 로직이 많이 증가할 텐데 이때 테스트 코드를 작성하지 않으면 오류가 났을 때 어디서 오류가 났는지 정확히 알기 어려워진다. 따라서 테스트 코드를 잘 작성해보자.
24.01.02 해피뉴이얼~ 새해는 밝았고, 프로젝트는 오늘로 거의 마무리! 내가 맡은 도메인은 댓글 도메인 그리고 팀/멤버 도메인이다. 댓글 도메인은 뭐 익숙하니까 뚝딱하니 끝났다. 하지만 관건은 댓글을 페이징해서 보기! 다행히 팀장님이 기본 소스를 주셨다. 이를 이용해서 약간의 커스텀을 하니 페이징을 쉽게 사용할 수 있었다. 방법은 List처럼 Page도 클래스가 있었다. 이를 Pabable클래스를 이용해 설정을 해서 사용하면 됐다. 한페이지에 몇개읭 값을 담을지를 정하고, 어떤 페이지를 선택해서 조회할지를 선택해주면? 페이징 처리를 완료할 수 있었다. 두번째로는 N:N 관계를 N:1. 1:N으로 풀어주기 위해 중간 엔티티를 만들어 주기! 보드에 팀원이 N:N으로 붙어야 하는데 이를 1:N으로 풀기 위해 멤버 엔티티..
23.12.29 오늘 진짜 많이 했다. 댓글도메인 완료했고, 중요했던 보드와 유저를 이어주는 팀과 멤버도메인을 내가 맡았다. 보드와 유저는 다대다 관계를 맺는다. 하지만 다대다 관계를 그대로 사용하는 것 보다, 다 대다를 풀어서 만들어서 쓰는게 좋다고 한다. 첫번째로 이를 풀기 위해 팀이라는 엔티티를 만들었다. 팀과 보드는 다대 일 관계. 하지만 유저와 팀은? 또 다대 다 관계다! 이를 다시 풀어야 한다. 이를 풀기 위해 member 엔티티를 하나 더 생성했다. 유저가 멤버에 다대일 관계. 그리고 멤버와 팀이 다대일 관계. 이를 통해 다대다 관계를 다대일 관계의 두개로 만들었다. 이 개념을 이해하는게 조금 어려웠지만 그래도 이해하니 쉽다. 예를 들어 빨간옷을 입은 나와 파란옷을 입은 나는 다른 것처럼 인식하는것. 마치 ..