Project/Spring Project
[ICT SW 경진대회] 2주차
머신러닝 진행상황 - 기초 강의 수강 완료한 상태 - aws 수강 - docker 수강 - Opency 라이브러리 사용하는데 어떻게 처리해야 하는지 - 오선지 제거 - 음표를 검출해 내기 위해 딥러닝의 과정이 필요한지 백엔드 배포 팀 진행상황 1. 리눅스 명령어 이해(설치, 권한부여, 실행 등) 2. 배포(deploy) 순서 이해 3. 서버재시작, 재배포 하는 법 1. 배포 스크립트 하나로 조금더 용이하게 처리 할 수있는 방법 2. RDS를 이용하여 DB연결(node.js, springMySql) docker을 쓰면 node.js에서 받아오는게 힘들수도 있다고 해서 docker 대신 RDS로 대체해서 사용할 예정 백엔드 팀 진행상황 로그인 -> 악보 업로드 수정 삭제 / 작곡과 이름으로 단건 조회, 악보..
[ICT SW 경진대회] 1주차
주제 악보 pdf 파일을 스캔한 후 영상처리해서 도레미 한글로 바꿔서 출력해주는 웹페이지 만들기 악보를 읽을 줄 모르는 사람들도 쉽게 악보를 이해할 수 있게 하기 위함입니다. 구현 1. 프론트로부터 스프링 서버로 요청을 보냅니다. 2. 스프링 서버에서 JWT 기준으로 인증합니다. 3. 스프링에서 노드 서버로 데이터 그대로 전달. (음표 전환에 관한 요청을 보냄) 4. 노드 서버에서는 인증 없이 텐서플로우로 요청 처리 후 데이터 리턴 5. 스프링 서버에서는 받은 JSON 데이터를 파싱하여 DB에 저장 혹은 프론트로 전달 본래는 노드와 스프링 서버를 따로 두어 둘다 JWT 인증이 가능하게 구현하려 했지만, JWT의 이해도가 부족하고 시간이 없기 때문에 쉽고 간단하게 하기 위해서 임시로 이런 구조를 만들었습니..
학교 동아리 스프링 멘토링 - 프로젝트 마지막 - 팀별 테스트 후 최종리뷰
8월 22일 월요일에 A팀과 B팀의 Postman 테스트 시연을 하고 멘토님의 최종 피드백을 마지막으로 스프링 멘토링이 끝나게 되었습니다. 이때까지 프로젝트를 진행하면서 느꼈던 모든것을 정리해보려고 합니다. 역할 shoppingMall을 만드는 과정에서 저희는 유저, 상품, 리뷰, 장바구니 총 4개를 구현하려고 했습니다. 이중에서 저희 팀은 리뷰를 담당했습니다. 각 상품 1개에 대한 리뷰의 CRUD를 구현했습니다. 코드 리뷰 1. CartController url 체계가 통일성이 없어서 살짝 아쉽다. 2. 빌더로 구현해보고자 한 건 좋지만, 생성자의 장점을 놓친 것 같다. 둘의 차이를 알고 어떨 때에는 빌더를 쓰고, 어떨 때에는 생성자를 쓰는지 차이점을 알면 더 좋을 것 같다. 3. @JsonIgnore..
학교 동아리 스프링 멘토링 - 프로젝트 3주차 - 코드 구현 및 postman 테스트
변경점 refactor: - delete parameter 'user' in ReviewController - update var name in ReviewRequestDto, ResponseDto - delete 'toDto' method in ReviewRequestDto - update var name in ReviewResponseDto - add @Builder pattern in Review - change type Long to id in Review - change type Optional in ReviewRepository - update URL product/{productId}/ feat: - add login session - add Error Handling - add search..
학교 동아리 스프링 멘토링 - 프로젝트 3주차 - REST API, JWT, Error Handling, validation
목표 - 역할과 구현, 책임 분배의 중요성을 알고 분석하기 - REST API 만들기 - 하나하나 이해할 순 없어도 요청과 응답에 따른 데이터의 흐름을 중점으로 보기 - 하나하나 흐름 중간에 신뢰성을 테스트할 수 있는것이 무엇인지 보기 - 코드에서 중복이 없고 간결하게 하기 위해 객체지향적으로 설계하기 - 성능을 향상시키기 위한 기술 이해하고 사용하기 역할과 책임 좋은 객체지향 설계 중에서 - SRP 단일 책임 원칙 : 한 클래스는 하나의 책임만 가져야 합니다. - DIP 의존관계 역전 원칙 : 프로그래머는 구체화에 의존하면 안되고, 추상화에 의존해야합니다. - OCP 개방 폐쇄 원칙 : 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 합니다. 이 3가지를 중점으로 코드 짜려고 노력했습니다...
학교 동아리 스프링 멘토링 - 프로젝트 2주차 - 코드구현
알게된 점 날짜를 받아서 저장하고 반환하는 방식 Spring에서는 게시물 한개마다 id가 자동으로 1,2,3,4 카운팅되어 증가되는 것 처럼 날짜도 Date타입 말고 LocalDate타입으로 Entity에 만들면, 자동으로 날짜가 기록됩니다. 궁금한 점 Controller에서 URL 설계를 어떻게 해야하는지 Dto를 이렇게 설계한 것이 맞는지 밑에 이 그림대로 동작하는 것이 맞는지 예외 처리를 어떤거부터 하면 되는지 전체적인 동작 도식화 임시로 일단 제가 이해한 것까지 데이터가 이동하는걸 그림으로 그려보았습니다. 이 그림대로 동작 안할수도 있습니다. ReviewController package com.studyProjectA.ShoppingMall.controller; import com.studyPro..
학교 동아리 스프링 멘토링 - 프로젝트 2주차
프로젝트에서 역할을 나눠서 조원 2명과 함께 총 3명이서 리뷰 구현을 맡았습니다. 클론 할 홈페이지 분석 저희는 쿠팡 사이트를 클론하여 진행하는 프로젝트인 만큼, 쿠팡 사이트에서 상품 리뷰 페이지를 분석해보았습니다. 이런식으로 일단 어떤 데이터를 저희가 관리하고 넘겨줘야 하는지를 그림으로 표현해보았습니다. 리뷰 단에서는 User와 Product Entity를 조인해서 사용해야 될 것 같았습니다. 이 그림을 참고하여 entity와 repository를 구현했습니다. 기본적인 review CRUD 구현 기본적인 entity, repository, service, controller에 각각 구현하였습니다. CRUD에 필요한 필수 어노테이션 등 코드를 구현했습니다. 그 이후로 어떤 것을 구현해야 되는지... 그..
학교 동아리 스프링 멘토링 - 프로젝트 1주차
기존에 배웠던 게시판 만들기를 바탕으로 앞으로는 팀을 이뤄 팀 프로젝트를 진행할 예정입니다. 총 7명으로 구성되어 있으며, 약 3, 4주 동안 진행합니다. 앞으로 팀원들과 같이 진행하면서 어떤식으로 팀 프로젝트를 완성하는지, 협업은 어떻게 하는지, 어떤 기술을 사용할 것인지를 학습하며 진행할 예정입니다. 처음 해보는 단체 프로젝트라서 미흡한 점이 많겠지만, 현재를 기점으로 단점을 보완하여 개발자의 세계에 계속해서 정진하겠습니다. 첫번째 회의 첫번째는 3가지의 주제를 놓고 회의 하였습니다. 1. 현재까지의 스프링 공부 현황 CRUD 기능을 구현할 수 있을 정도는 다들 했다고 합니다. 2. 프로젝트 선정 블로그, 에타(시간표 및 커뮤니티), 쿠팡(쇼핑몰), 당근마켓(중고거래), 영화 및 맛집 평가 이렇게 5..
학교 동아리 스프링 스터디 - 4주차
지난시간까지 게시판의 전체적인 CRUD API를 설계하는 시간을 가졌습니다. 이번 시간에는 협업을 위한 코드 보완 위주로 배웠습니다. Response 만들기 기존 ResponseEntity에서는 형식을 수정할 수 없어서 타 개발자와 협업 시 불편함을 가질 수 있다고 합니다. 이를 방지하기 위해 직접 우리가 커스텀하여 Response를 만들었습니다. 이렇게 할 경우 프론트엔트 개발자가 데이터를 분류할 필요가 없어 편의성이 보장된다고 합니다. 저는 여기서 ResponseEntity에 대한 지식이 없는 상태였고 단순히 자료형이라는 것만 알고 있었습니다. 이를 알기 위해서는 REST API에 대한 지식이 필요하며 결국 HTTP 기본 지식을 알고 있어야만 합니다. 지금은 JSON 형식으로 전달하기위한 타입이라고만..