본문 바로가기

프로그래밍27

[Error] javax.mail.MessagingException 해결 사이트 프로젝트 진행 중 서버에서 메일이 추가로 안나가는 오류가 있었다. 2023-10-17 14:10:49.102 ERROR 11572 --- [nio-8080-exec-2] c.p.u.email.service.EmailService : Mail server connection failed; nested exception is javax.mail.MessagingException: Could not convert socket to TLS; nested exception is: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unab.. 2023. 10. 18.
중고마켓 기획에 이미지 검색 구현 후기(2) 기획(이전글) : https://lets-do-the-odessey.tistory.com/49 목차 서버 구상도 DB 테이블을 어떻게 할 것인가? 예제 코틀린 코드 추가로 주의할 점 이전글에서는 중고마켓 기획에 어떻게 이미지 검색을 적용시킬건지 개요를 작성했다. 오늘은 실제 코드와 서버 구상도에 대해 얘기하고자 한다. 서버 구상도 이전 개요글에선 Google VisionAPI에 데이터셋을 저장하고 검색 api를 호출하면 요청을 받는 것을 확인했다. 그렇다면 이걸 api서버와 어떻게 결합하면 좋을까? api서버에서 구글 open api server로 요청을 날리고 미리 DB와 매핑해놨던 key값이 도착하면 이를 처음 요청한 client에게 데이터와 함께 제공하면된다. 간단하게 순서를 말하자면 client가.. 2023. 10. 12.
중고마켓 기획에 이미지 검색 구현 후기(1) 이번에 항해 해커톤을 참여한 후기 및 신경써서 구현해보았던 기획에 대해 작성하고자 한다. 과제는 여러 기업의 과제 중 하나를 선택할 수 있었는데 우리는 육아 의류 플랫폼인 '룩키즈'의 개선 프로젝트였다. 👉 원더윅스 컴퍼니 주제 : 더이상 유지보수를 진행하지 않는 프로젝트인 ‘룩키즈’ 서비스 개선 서비스 소개 페이지[링크] 앱스토어[링크] 플레이스토어[링크] 키즈 패션 공유하기 & 키즈 패션 상품 구매 & 중고거래 원래 자사 서비스인 ‘맘맘’ 에서 디자인을 일부 수정하여 제작하였고, 3개월 가량 기능 추가를 하며 개선하였으나 크게 반응이 없어 일시중지 상태. → 룩키즈를 만드는 팀에 배정되었다고 가정하고, ‘룩키즈’를 사용해본 뒤에 ‘룩키즈’ 서비스를 소생시키려면 어떻게 해야할지 고민해보고, 해커톤 기간.. 2023. 10. 5.
[DDD/Kotlin] DTO와 Command DTO라는건 뭘까? 개발을 전혀 모르는 사람을 기준으로 설명하자면, 데이터베이스에 데이터가 저장되기 전까지 클라이언트로부터 받은 데이터를 저장하고, 서비스로직을 수행한 뒤 Entity(테이블)에 매핑해줄때까지 해당 데이터를 가지고 있는 역할을 수행하는 객체이다. 그래서 나는 컨트롤러에서(맨처음 데이터를 받아주는 계층) 데이터를 DTO에 저장한 뒤 Entity로 매핑한 뒤 바로 저장해주었으나 최근 사이드 프로젝트를 개발하면서 command라는 개념을 처음 접하게 되었다. command 객체란 컨트롤러에서 데이터를 dto로 받아준 뒤 그 다음 계층으로 갈때 데이터를 매핑해주는 객체를 한 단계 더 생성하여 역할을 분리한다. 예제코드로 설명하자면 DTO 클래스 data class UserDTO(val id: L.. 2023. 9. 21.
[Spring/Redis] spring에서 redisTemplate을 쓰는 것과 CRUDRepository를 상속받아 사용하는 것은 어떤 차이가 있을까? Spring에서 redis에 데이터를 저장하는 방법 중 두가지와 두가지를 섞어쓰면서 내가 겪은 상황도 같이 설명하고자 한다. 일단 redisTemplate이란 뭘까? redisTemplate은 Spring에서 따로 관리하지 않고 직접 Redis명령어를 사용한다고 보면된다. 예를 들어 우리가 아는 Redis의 CRUD 명령어나 key값을 조회하는 명령어등을 Spring에서 제공하는 메소드를 통해 직접 요청을 날린다고 보면 된다. SQL로 따지면 mybatis로 쿼리를 직접 작성하는것과 비슷하다고 볼 수 있다. CRUDRepository를 사용하는 것은 Spring에서 제공하는 JPA를 활용해 우리가 아는 익숙한 JpaRepository를 활용하는 것과 비슷하다 다만 SQL, 테이블의 형식을 갖지 않은 DB.. 2023. 9. 14.
[프로그래밍 언어론]구문법 구문법 문맥 자유 문법(CFG) 1. 터미널 심볼의 집합 T -> 자체로 기초 심볼, 이후로 작성법 정의X, 문법 규칙의 왼쪽에는 위치 불가능 2. 넌터미널 심볼의 집합 N -> 스트링들의 작성법이 문법 규칙에 의해 정의, 문법 규칙의 왼쪽에 위치 가능 3. 시작 심볼 S 4. 생성 규칙의 집합 유도 - 입력된 문장이나 프로그램이 문법에 맞는지 검사하는 것 - 어떤 스트링이 문법으로부터 유도 가능하면 문법에 맞는 스트링 - 컴파일러가 하나의 문장을 해석하기 위해 특정 규칙을 가지고 있어야 함 유도 방법 - 시작 심볼 S부터 시작한다. - 넌터미널 심볼 X를 생성규칙을 적용하여 Y1~Yn으로 대치한다 - 넌터미널 심볼이 없을때까지 반복 - 터미널 심볼의 경우 대치할 규칙이 없으므로 일단 생성되면 끝이며, .. 2023. 4. 4.