추천 점수 하나를 안전하게 저장하기 위해 어디까지 검증해야 할까?
·
카테고리 없음
여행방 추천 기능을 구현하면서 추천 점수를 계산하는 로직을 만들었다.요구사항은 단순했다.사용자의 여행 성향과 호스트의 여행 성향을 비교해 0~100 사이의 적합도 점수를 계산한다.처음에는 이 요구사항이 크게 복잡해 보이지 않았다.성향 점수는 4개 축으로 구성되어 있었고, 각 축은 0~10 범위의 값을 가진다.여행 리듬활동 에너지소비 성향의사결정 방식각 축의 차이를 유사도로 바꾼 뒤 가중합을 계산하면 됐다.axisSimilarity = 1 - (abs(applicantScore - hostScore) / 10) 최종 점수는 아래처럼 계산했다.matchPercentage = round(weightedSimilarity * 100) 정상적인 입력만 들어온다면 문제는 없다.각 축 점수가 0~10 범위라면 axi..
@EntityGraph vs Projection: 실제 SQL과 선택 기준
·
프로젝트
N+1을 제거하는 방법은 하나가 아니다. 같은 문제라도 @EntityGraph로 풀 수도 있고, projection으로 풀 수도 있다. 둘 다 정답이 될 수 있지만, 실행되는 SQL과 조회 목적을 보면 선택 기준이 달라진다.문제 상황: LAZY 연관 접근으로 인한 N+1기존 코드는 사용자 선호 여행지 목록을 먼저 조회한 뒤, CITY 타입일 때 destination.id에 접근했다.List preferences = repository.findAllByUser_Id(userId);preferences.stream() .filter(preference -> preference.getPreferenceType() == CITY) .map(preference -> prefe..
[트러블슈팅] SSLHandshakeException과 ERR_CERT_DATE_INVALID: 만료된 SSL 인증서 갱신하기
·
트러블슈팅
1. 문제 상황운영 서버에서 HTTPS 요청이 정상적으로 처리되지 않는 문제가 발생했다.처음에는 서버 로그에서 SSLHandshakeException이 발생했고, 브라우저로 직접 API 도메인에 접속했을 때는 다음과 같은 경고가 표시됐다.연결이 비공개로 설정되어 있지 않습니다.net::ERR_CERT_DATE_INVALID 대상 서버는 Docker Compose 기반으로 운영 중이었고, 구조는 대략 다음과 같았다.Client → HTTPS → Nginx Docker Container → Spring Boot Application ContainerChrome에서는 HSTS가 적용된 사이트라서 “고급 → 계속 진행” 같은 우회 접속도 불가능했다.즉, 브라우저 입장에서는 이 서버의 인증서를 신뢰할 수 없..
[IntelliJ] 인텔리제이 설치 후 설정한 것들
·
카테고리 없음
1. Plugin 설치하기아래는 Dark Purple Theme + Atom Material Icons의 설정 후 IntelliJ화면2. 줌인 줌아웃을 마우스 휠로Settings로 가서 설정 ON3. Intellij 처음 시작할 때 화면 설정프로젝트가 하나 열리면 그 프로젝트가 build되기 때문에 괜히 쓰지도 않은 파일 실행한 느낌이 들어서 아예 프로젝트 목록을 보고 골라서 실행시키는 설정 [intelliJ] intellij 처음 들어갈 때 화면intelliJ를 킬 때마다 항상 마지막으로 사용했던 프로젝트가 열리는 게 조금 불편했다. 내가 원하는 프로젝트가 아닐 가능성도 있고 프로젝트를 새로 생성하고 싶을 경우도 있기 때문이다. 프로cinining.tistory.com4. 자동 import해주는 설정I..
Velog, 요즘 IT 크롤링 하기(2) - Jsoup 사용법
·
카테고리 없음
지난 글에서는 웹 크롤링의 개념과 작동원리, 크롤링할 웹 페이지를 정했다면 가장 먼저 확인해야하는 사항에 대해서 설명했습니다. 이번에는 간단한 예시들을 중심으로 Jsoup을 활용하여 크롤링하는 방식에 대해서 가볍게 다뤄보도록 하겠습니다.  Velog, 요즘 IT 크롤링 하기(1) - crawlin, Robots.txt, Jsoup, SSR, CSR🤗간단한 프로젝트 소개현재 하고 있는 프로젝트는 매일 IT 관련 블로그나 뉴스를 3개씩 이메일(or 문자) 발송해주는 서비스입니다. 이를 위해서 매일 정해진 시간마다 관련 블로그나 뉴스 사이cinining.tistory.com Jsoup이란Jsoup에 대해서 한번 더 정리해보자면, Jsoup은 Java로 작성된 HTML 파싱 및 웹 크롤링을 위한 라이브러리입니..
Velog, 요즘 IT 크롤링 하기(1) - crawling, Robots.txt, Jsoup, SSR, CSR
·
카테고리 없음
🤗간단한 프로젝트 소개현재 하고 있는 프로젝트는 매일 IT 관련 블로그나 뉴스를 3개씩 이메일(or 문자) 발송해주는 서비스입니다. 이를 위해서 매일 정해진 시간마다 관련 블로그나 뉴스 사이트를 크롤링해와야했습니다. 저는 블로그 크롤링을 맡아 진행했고, 블로그 플랫폼들의 최신 트렌드 블로그들을 조회하여 각각의 블로그 URL, 제목, 발행일, 블로그 내용 등의 데이터를 수집하였습니다.  이 글에서는 웹 크롤링할 때 주의할 점이라던가, 어떤 식으로 진행되어야 하는지, 크롤링 시 어떤 것을 확인해야 하는지(중요⭐)에 대해서 다루고 다음 포스트에서 코드 짠 것들을 소개하도록 하겠습니다. 💁블로그 플랫폼 선정 이유(feat. robots.txt 윤리)프로젝트에서 'Velog', '요즘 IT' 두 가지의 블로그..