etc/Weekend, I Learned 8

항해99 12주차 WIL(OCR)

OCR 트러블 슈팅 1. S3 to GCS issue 기존 로직 순서: 사용자가 사진을 첨부하면 S3에 Upload ⇒ OCR후 텍스트 추출 // 1. OcrController - 사용자가 이미지파일을 첨부한다. public class OcrController { private final S3Service s3Service; @PostMapping(value = "/ocr/cards") public ResponseDto orcTest(@RequestPart(value = "cardImg", required = false) MultipartFile cardImg) throws IOException { return s3Service.upload(cardImg); } } // 2. S3Service - AWS..

항해99 10주차 WIL(서버 Timezone 설정오류 트러블슈팅)

#서버 Timezone 설정오류 에러내용 보통은 아무것도 설정하지 않고, 스프링 프로젝트를 띄우면, 시스템 타임존설정이 Default값으로 셋팅이 된다. 따라서 한국의 시간인 Asia/Seoul (UTC + 9) 으로 설정이 된다. 따라서 프로젝트를 띄우고 http://localhost:8080을 호출하면, 현재 KST시간이 표시된다. (내 컴퓨터 타임존 환경이 대한 민국 표준시로 설정되어있기 때문이다) 하지만 EC2에 배포 후, RDS에 들어가는 값을보니 UTC시간(9시간 전)으로 시간이 들어가지는 오류를 발견했다. 해결 처음에는 데이터베이스의 시간 설정 문제인 줄 알고, properties에서 dataSource URL 끝에 ?serverTimezone=Asia/Seoul을 붙여서 Timezone 시..

항해99 8주차 WIL(github action & docker 자동배포 트러블슈팅)

자동배포 트러블 슈팅 # 자동 배포 과정 build Error 📌 에러 ) no space left on device : 장치에 남은 용량이 없음을 의미 ssh -i /c/Users/jungi/Desktop/clone.pem ubuntu@도메인 주소 명령어 실행 df -h 명령어 실행 : 사용한 device 용량 확인 3. docker rmi $(docker images -q) 명령어 실행 : Docker의 모든 이미지 제거하기 4.df -h 명령어 실행 : Docker 이미지 제거로 인해 용량의 공간이 확보된 것을 확인할 수 있다.

항해99 7주차 WIL(github action & docker를 이용한 자동 배포)

1. 가장 신경 쓴 부분 - 7주차 클론프로젝트를 진행하면서 가장 신경 쓴 부분은 첫째로 완성도였습니다. 무리하게 기능적으로 스코프를 넓힐게 아니라 FE와 협업을 해서 완성도를 높이는데에 초점을 맞췄습니다. 그러다보니 추가로 자동배포를 집중적으로 학습하고 실행에 옮길 수 있게 되었습니다. 2. 기술에 대한 정리 - github action & docker 를 이용한 자동 배포 Docker file 추가 FROM 명령어 부분 : Docker 버전을 Docker hub 내에서 필요한 자원을 검색해서 가져온다. COPY 부분 : Project 내 build 파일 안의 lib 내에 있는 파일을 복사해서 넣어서 이미지화 시켜준다. Build 확인 후 lib 파일 내에 jar 파일을 Dockfile 내의 jar 파..

항해99 5주차 WIL(CORS)

CORS(Cross-Origin Resource Sharing) 교차(다른) 출처 리소스 공유라고 해석할 수 있다. 출처가 다른 웹 클라이언트와 API 서버 간의 리소스 요청 등의 상황에서 별도의 설정을 하지 않을 시 CORS 정책을 위반했다는 오류가 발생한다. 비신뢰적인 사이트에서 내 컴퓨터의 브라우저에 있는 쿠키 등의 정보를 통해 서버에서 정보를 탈취하는 등 비정상적인 행동을 하는 것을 방지하기 위한 정책 중 하나이다. (다른 하나는 SOP) 출처(Origin) url 중 protocol, hostname, port에 해당 이 3가지가 모두 같으면 동일 출처라고 한다. port는 생략이 가능하다. location.origin을 통해 현재 사이트의 출처를 확인할 수 있다. SOP(Same-Origin-..

항해99 4주차 WIL(ORM, Object Relational Mapping 객체관계매핑)

1. ORM Object Relational Mapping (객체-관계 매핑) 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. - 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. - 객체 모델과 관계형 모델 간에 불일치가 존재한다. - ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. 데이터베이스 데이터 Object 필드 - 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다. Persistant API라고도 할 수 있다. Ex) JPA, Hibernate 등 ORM 장단점 * 장점 - 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다. - 재사용 및 유지보수의 편리..

항해99 3주차 WIL(DI란 무엇인가?)

DI 란 무엇인가? 한줄로 요약하면 외부에서 의존 객체를 생성하여 넘겨주는 것으로 의존성 주입을 말한다. IoC 컨테이너에서 객체를 생성한 후 생성된 객체를 다른 객체에 주입합니다. IoC 컨테이너에서 생성된 객체들을 한번에 관리 할 수 있는 장점이 있다. 첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법이고, 두번째 방법은 외부에서 생성 된 객체를 setter()를 통해 사용하는 방법이다. 이러한 두번째 방식이 의존성 주입의 예시인데, A 객체에서 B, C객체를 사용(의존)할 때 A 객체에서 직접 생성 하는 것이 아니라 외부(IOC컨테이너)에서 생성된 B, C객체를 조립(주입)시켜 setter 혹은 생성자를 통해 사용하는 방식이다. Ioc(Inversion of Contr..

항해99 1주차 WIL(Json Web Token)

JWT(Json Web Token) 1. 설명 - JSON 웹 토큰(JSON Web Token, JWT, "jot”)은 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, 페이로드는 몇몇 클레임(claim) 표명(assert)을 처리하는 JSON을 보관하고 있다. 토큰은 비공개 시크릿 키 또는 공개/비공개 키를 사용하여 서명된다. 이를테면 서버는 "관리자로 로그인됨"이라는 클레임이 있는 토큰을 생성하여 이를 클라이언트에 제공할 수 있다. 그러면 클라이언트는 해당 토큰을 사용하여 관리자로 로그인됨을 증명한다. 이 토큰들은 한쪽 당사자의 비공개 키(일반적으로 서버의 비공개 키)에 의해 서명이 가능하며 이로써 해당 당사자는 최종적으로 토큰이 적법한지를 확인할 수 있다. 일부 적절하..