전체 글

내가 공부하려고 만든 메모장
Project

FrontEnd Prettier/Esprint 오류

🐛 Windows 환경에서 줄바꿈 문자 충돌 오류 Windows에서 프로젝트를 클론하면 Git이 자동으로 줄바꿈 문자를 LF → CRLF로 변환하여 Prettier/ESLint 오류가 발생했음 [plugin:vite-plugin-eslint] src/index.tsx1:64 error Delete `␍` prettier/prettier2:48 error Delete `␍` prettier/prettier // 이런식으로 몇백줄이뜸원인:Mac/Linux 팀원: LF (\n) 사용Windows Git 기본값: core.autocrlf=true로 설정되어 자동 변환줄바꿈 문자 불일치로 코드 스타일 오류 발생 해결 방법:1. Git 전역 설정 변경: 자동으로 CRLF 변환기능을끄고 LF로 설정해..

Project

[Talkpick] 언론사 RSS 뉴스 데이터 수집 시스템 기능 상세

프로젝트 상세 소개 Notion: https://www.notion.so/Talkpick-2031f5b7c2a280388968e53286dc5740TalkPick 프로젝트는 뉴스 기반 서비스를 제공하는 플랫폼입니다. 이에 모든 서비스의 기반이 되는 양질의 뉴스 데이터를 안정적으로 확보하는 기능이 필요하게 되었고, 프로젝트의 요구사항에 따라 다수 언론사의 RSS 피드를 자동으로 수집하고 가공하여 저장하는 시스템이 필요해졌습니다.1. 기능 개요핵심기능RSS 메타 데이터 수집: 국민일보, 동아일보, 경향신문 등 주요 언론사의 RSS 피드에서 뉴스 메타데이터를 자동 수집합니다.시스템이 매 1분마다 자동으로 RSS 피드를 체크하여 최신 뉴스를 실시간으로 수집합니다.뉴스 본문 크롤링: RSS 메타데이터만으로 부족한..

Database

[Elasticsearch] Native Query 와 Index Query

Native QueryNativeQuery는 엘라스틱서치의 네이티브 쿼리 DSL (Domain Specific Language) 을 직접 사용할 수 있도록 설계됬다다양한 검색 옵션을 제공하며, 다음과 같은 강력한 기능들을 활용하여 정교한 검색 조건을 정의 가능하다다양한 쿼리 유형: match, term, range, bool, multi_match, wildcard, fuzzy, geo 쿼리 등 다양한 검색 목적에 맞는 쿼리들을 조합 가능복잡한 조건 조합: bool 쿼리를 사용하여 must (필수 조건), should (선택 조건), must_not (제외 조건), filter (스코어에 영향 없는 필터링) 등 복잡한 논리적 조건을 구성할 수 있다정렬(Sorting): 특정 필드 기준으로 오름차순 또는 ..

Database

Elastic Search란?

엘라스틱 서치를 쉽게이해하면RDBMS가 아닌NoSQL의 성격을지닌 하나의 데이터베이스 이면서동시에 강력한 검색엔진의 성격도 띄고있는 개념이라 생각하면된다. NoSQL로써 당연히 스키마는 없고 (Schemaless)Json의 형태를 띄는 데이터베이스이다. B-Tree 구조가 아닌 역색인(Inverted Index) 방식을 사용하여 단어나 문장을 매우 빠르게 찾음 자연어 처리(NLP) 기능이 내장 - 단어를 쪼개는 토큰화 / 불필요한 단어를 거르는 필터링 / 비슷한 형태로 바꿔주는 정규화가 자동 지원단순 텍스트뿐 아니라, 조건 검색(필터링) 과 정렬까지 가능 대량의 리뷰도 빠르게 검색 가능 검색의 특징 = 빠른 검색 속도 -> 반정형화, ETL 형태로 많이 쓰인다 ElasticSearch의 특..

Project

동적데이터와 정적데이터 분리 필요성

이번에 뉴스 프로젝트를 하게되면서뉴스 개별페이지 조회시 엔드포인트 하나에정적인 데이터인 뉴스와 관련 뉴스내용그리고 동적인데이터로 처리된 조회수 (조회수기반 실시간 인기 뉴스 추출을 위해 redis기반 동적으로구현함)을 하나의 응답객체 DTO로 묶어서 처리했다.이러니 문제가생겼는데뉴스 본문 데이터를 redis를 캐싱하자니 뉴스내용이 너무길어 비효율적이라 판단CDN캐싱을 진행하려하니 동적인 데이터인 조회수가 묶여있어서제대로된 캐싱을 할수가 없던것!...[CDN 캐싱] (이단계에서 데이터를돌려줌)클라이언트요청 ------> CDN서버 -------> 백엔드서버처음부터 제대로설계좀 할껄.. 왜 하나로묶었지? 라는 후회와 함께리팩토링을 진행했다.조회..

Project

커스텀 어노테이션을 사용한 프로젝트 시나리오별 성능 테스트

📋 테스트 개요실험 대상: 인기뉴스 API (/public/news/top-viewed/politics)실험 기간: 2025년 5월 28일실험 횟수: 총 30회 (3개 시나리오 × 10회씩)측정 도구: @TimeTracker AOP 어노테이션1차 JVM 캐싱엔 caffeine을 사용함가장 빠름벤치마킹 비교:https://medium.com/naverfinancial/%EB%8B%88%EB%93%A4%EC%9D%B4-caffeine-%EB%A7%9B%EC%9D%84-%EC%95%8C%EC%95%84-f02f868a61921️⃣ 테스트 필요🚨 기존 시스템의 성능 문제점캐싱 시스템 부재로 인한 성능 저하매 요청마다 DB 직접 조회 발생실험 결과 캐시 없는 순수 DB 조회 시간: 평균 0.667초동일한 데이..

Project

Spring Cache AOP 문제 트러블슈팅 노트

Spring Cache AOP 문제 트러블슈팅 노트🚨 문제 상황발생한 문제Spring Cache (@Cacheable)가 전혀 작동하지 않음해시값이 동일한데도 매번 getTopNewsByCategory() 메서드가 실행됨캐시 HIT이 한 번도 발생하지 않고 항상 MISS 상태문제 증상1차 API 호출: ✅ 해시 동일 → 📋 Spring 캐시 MISS (정상)2차 API 호출: ✅ 해시 동일 → 📋 Spring 캐시 MISS (비정상!) 3차 API 호출: ✅ 해시 동일 → 📋 Spring 캐시 MISS (비정상!)정상적이라면:1차 API 호출: ✅ 해시 동일 → 📋 Spring 캐시 MISS2차 API 호출: ✅ 해시 동일 → 🚀 Spring 캐시 HIT ← 이게 나와야 함!3차 API 호출..

기타

Github 디스코드에 웹훅 알림 추가하기 (Github Action)

최근 팀작업을 하면서 깃허브에 discussion이나 issue가 새로올라오거나 댓글이달리거나PR요청이오고 내 PR에 코멘트가달려도 깃허브알림을 볼때까지 모르고있거나 하는 일이 잦아서알림기능이 있는 디스코드에 웹훅으로 연결해서 알림을 받고자 시작하게되었다하지만 문제는 나는 내 팀 repo에서 admin이 아니라 contributor라는점github의 웹훅기능은 admin이여야 가능하다!물론 admin권한을달라해도 되지만 그러면 내가 올리는 PR들은 PR규칙에 걸리지않게되고컨벤션도 자동으로 관리가 안되게 되서 (어드민 권한일시에만)Github Action을 통해서 구현을 하기로 했다주기적으로 체킹하고~ 디스코드 웹훅에 알림을 주는식이다먼저 Github Action용 개인 repo를 하나 만들었다이름은 gi..

Atriel
Atriel