TIL, WIL 14

[WIL] week 11

Fact 이번 프로젝트 담당 업무 물품 및 Rating API, 캐싱, 스케줄링 주요 내용 유저 간 등록한 물품을 교환 또는 경매에 등록하여 입찰할 수 있는 서비스 물품교환: 상대방이 등록한 물건을 선택 후, 내 물건을 선택하여 거래요청을 하는 서비스 레이팅: 물품 등록 시 자신의 물건 값어치를 작성하여 다른 유저들이 해당 물품의 가격을 맞추는 유사 게임 시스템 해당 서비스를 통해 경매 하한가를 설정 물품 등록 시 설정한 값어치는 게임의 정답 용도로만 사용 물건 평가가 3개일 시, 평가 받은 평균가가 물건의 가격으로 설정 경매: 경매 기간 만료 시, 입찰받은 물건 중 마음에 드는 물품을 골라 거래하는 서비스 등록하는 유저가 경매기간을 설정할 수 있음. 레이팅 평가가 끝나지 않은 상품은 등록 및 입찰을 할..

TIL, WIL 2023.08.28

[WIL] week 10

Fact 이번주는 멘토님에게 프로젝트 중간 발표회를 진행했다. 아쉽게도 발표 전날 thread starvation or clock leap detected가 발생했다. 아마 AWS 서버가 터진 것 같았다. 이 후, 시간이 흐르고 나니 서버는 정상적으로 돌아갔지만, 이어서 DNS에 문제가 발생하여 많은 시간동안 프론트와 연결되지 못했다. 경매, 입찰, 레이팅 등 백에서는 모든 기능을 구현했다고 생각되지만, 프론트에서 테스트를 할 시간이 부족해져서 아쉬운 결과물을 발표하게 되었다. Feeling 많은 시간을 투자한 작업물이었지만, 결과물이 생각처럼 나오지 못해서 아쉬웠고 자신에게 화도 났다. Finding: 알게된 것 아래는 튜터님의 피드백 및 CS 질문으로 알게된 것들이다. 1. @Transactional..

TIL, WIL 2023.08.21

[WIL] week 9

Fact 이번주도 저번주와 이어 실전 프로젝트를 진행했다. 기존의 물물교환은 CRUD의 확장이며 볼륨이 작다는 튜터님의 피드백이 있었다. 이후 추가적인 회의를 통해 경매 시스템 및 레이팅 시스템을 추가적으로 구현하기로 했다. 나는 물품의 하한가를 결정하기 위한 Rating 시스템 부분을 맡았다. rating 시스템은 유저가 등록한 물품들을 다른 유저가 평가하는 방법으로 구현된다. Feeling 1. 협업 진행 간 브레인스토밍 기법으로 아이디어를 제시하는데, 내가 제시한 의견이 반영됐을 때 뿌듯했다. 2. 볼륨이 작다는걸 초반에 알았다면 좀 더 빠르게 진행할 수 있었을텐데 라는 아쉬움이 남았었다. 3. Rating 시스템 구현 간 queryDSL을 사용했는데, SQL문과 비슷하면서 다른점이 있어서 헷갈렸다..

TIL, WIL 2023.08.14

[WIL] week 8

Fact 이번주는 실전 프로젝트를 진행했다. 우리조는 물물교환 사이트를 만들기로 하였고 그 중에서 나는 게시글을 담당하였다. 프론트와 백 팀원들 간 협업을 진행하면서 재미있었고, 모두들 적극적으로 의견을 제시해주어서 만족스러웠다. Feeling 1. 협업 간 같은 목표로 열심히 나아가는 팀원들이 있어서 소속감을 느꼈고, 지칠 때 큰 의지가 됐다. 2. 모두가 적극적으로 의견을 제시하고, 제시된 의견을 적극적으로 수용하여 작업 간 트러블 없이 즐겁게 진행할 수 있었다. Finding: 알게된 것 1. 협업 간 소통이 얼마나 중요한지 2. 공통 목표를 향해 같이 작업하는 즐거움에 대해 알게되었다. 3. Redis를 사용하여 Caching 하는법 4. Form Data로 전송받은 이미지 데이터를 AWS S3에..

TIL, WIL 2023.08.06

[TIL] S3이미지 업로드 시 게시글이 두번 작성되는 문제

프로젝트 진행 간 우리 조는 물물교환 사이트를 만들기로 했다. 게시글 등록 시 이미지를 등록할 수 있기에 S3에 이미지를 업로드 후 Repository에 등록을 하던 중에 발생한 문제였다. 분명 게시글 작성을 한번만 했는데 두개가 등록이 됐으며 하나는 이미지를 제외한 모든 값이 null이었고, 하나는 모든 값을 포함하지만 image를 가지지 못하였다. (Goods와 Image는 ManyToOne관계이다.) ServiceCode @Transactional public ApiResponse goodsCreate(GoodsRequestDto requestDto, List images) { List imageUuids = imageHelper.saveImagesToS3AndRepository(images, am..

TIL, WIL 2023.08.03

[TIL] SQLsyntaxerrorexception

이번 프로젝트로 인해 물물교환 사이트를 만들고 있었다. 왜 에러가 발생하는지 모르겠다. 이상한 점이라면 원래 상품테이블, 이미지 테이블이 생성되어야 하는데 이미지 테이블만 생성되었었다. 물물교환의 특성상 중고상품이 많이 나올것이기에 물품의 상태를 표시하기 위해 condition이라는 변수명을 사용했었다. 하지만 condition이 SQL의 예약어라 물품의 테이블이 생성되지 못했던 것이다! 이후 goodsCondition으로 변경하니 잘 진행됐다.

TIL, WIL 2023.08.02

[WIL] week 7

Fact: 학습내용 이번주는 pinterest를 클론코딩 하였다. 저번주 프로젝트에서는 security쪽을 담당했었지만, 관계 부분을 해보고 싶었기에 이번주는 댓글 및 대댓글 CRUD, 좋아요 버튼과 globalException을 구현하였다. Feeling: 느낀 점 1. 관계에 대해 강의를 통해 배웠었지만 실제로 사용해보니 헷갈리는 것도 많고 어려웠다. 2. 대댓글을 구현할 때에 댓글과의 관계를 설정할 때에 힘들었지만 정상적으로 구현되었을 때에 기분이 너무 좋았다. Finding: 알게 된 것 1. OneToMany의 한계점 및 ManyToOne의 장점(https://developerhun.tistory.com/110) 2. customException을 사용하는 이유는 예외명을 직관적으로 만들어 예외..

TIL, WIL 2023.07.30

[WIL] week 6

Fact: 학습내용 이번주는 미니 프로젝트를 진행했다. 로그인 및 회원가입 부분을 담당했으며, RefreshToken을 사용하여 AccessToken을 재발급 하는 기능을 구현했다 Feeling: 느낀 점 1. 처음으로 강의에서 나오지 않은 기능을 찾아보며 직접 만들었기에 무사히 구현됐을 때 성취감이 매우 컸다. 2. 로그인이라는 기능이 이정도로 복잡할 줄은 몰랐다. 3. 기능구현도 쉽지 않았지만, 협업 진행간 크고작은 에러들 때문에 더욱 힘들었다. Finding: 알게 된 것 1. RefreshToken을 통한 AccessToken의 재발급 방법 2. Intellij와 Redis의 연동방법 3. 프로젝트 시작 전 명세의 중요성 3. 팀 프로젝트간 소통과 피드백의 중요성 Future: 알게된 것을 어떻게..

TIL, WIL 2023.07.23

[WIL] week 5

Fact: 학습내용 [Springboot] CORS란? CORS(Cross Origin Resource Sharing): 도메인이 다른 자원에 리소스를 요청할 때 접근 권한을 부여하는 메커니즘 친구의 물건을 쓰려면 친구가 제한하는 규약안에서 사용해야 하듯, 다른 도메인의 자원을 developerhun.tistory.com [Spring] Handler, @ExceptionHandler, @ControllerAdvice Handler 클라이언트로부터의 요청을 처리하고, 해당 요청에 대한 적절한 작업을 수행하는 역할 @Controller와 @RestController를 사용하여 정의한다. 핸들러는 특정 URL에 매핑되고 해당 URL로 요청이 들어 developerhun.tistory.com [Spring] ..

TIL, WIL 2023.07.16

[WIL] Week 4

Fact: 학습내용 1. IoC, Bean, DI [Springboot] IoC, Bean, DI IoC (Inversion of Control): 객체의 제어권한을 개발자가 아닌 외부로 넘김(제어의 역전, 의존성 역전) 객체 지향 프로그래밍(AOP)에서 유연하고 확장 가능한 애플리케이션을 구현하기 위한 원리 개발자 developerhun.tistory.com 2. Filter와 Security [Springboot] Filter와 Spring Security Spring에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Controller로 분배된다. 이때, 각 요청에 대해서 공통적으로 처리해야 할 필요가 있을 때 DispatcherServlet 이전에 단계 d..

TIL, WIL 2023.07.08