728x90

전체 글 342

스프링 핵심 원리 - 스레드 로컬

스레드 로컬은 스레드 별로 할당되어 해당 스레드만 접근할 수 있는 저장소를 의미한다 싱글턴 인스턴스의 경우 스레드 별로 데이터를 구분하지 않아 다른 스레드가 접근할 경우 기존 스레드가 저장한 데이터를 덮어 쓰게 된다 이 경우에 스레드 로컬을 사용해 각 스레드 별 데이터를 유지할 수 있다 ** 스레드 로컬은 사용 후 꼭 remove() 메서드를 사용해 제거해주어야 한다

03. 14 TIL : 개념 이해로 시작하기 좋은 최고의 프롬프트 엔지니어링 강의

프롬프트 엔지니어링- 핵심 요소1) 답변을 위해 필요한 컨텍스트 제공2) 원하는 결과 추출을 위한 프롬프트 작성3) 결과물 형식 지정 - 프롬프트 엔지니어링 과정1) 프롬프트 결과 설정2) 프롬프트 평가 설계3) 그라운딩 설계 및 평가4) 프롬프트 디자인5) 모니터링 및 개선 프롬프트 프레임워크1) Role : 역할 설정2) Audiendce : 대상3) Knowledge/information :4) Task/Goal : 목표 :5) Policy/Rule, Style, Constaraint6) Format/Structure7) Examples

개발공부 2025.03.19

03. 07 TIL : 카프카 세팅 및 실행, 테스트

스프링 카프카 실행하기 1. 아파치 제공 카프카 다운로드 및 압축풀기 2. 압축 푼 폴더로 이동해 2-1) Zookeeper 실행 ~ 기본포트 : 2181bin>zookeeper-server-start.sh config/zookeeper.properties  2-2) Kafka 서버 실행 ~ 기본포트 : 9092bin>zookeeper-server-start.sh config/server.properties (config/server.properties에서 설정 변경 가능 (예: listeners=PLAINTEXT://localhost:9092) 3. 토픽(데이터 관리 단위) 생성 ex) 채팅시스템용 토픽 : bin/kafka-topics.sh --create --topic chat-messages --..

TIL, WIL/TIL📘 2025.03.07

02. 28 TIL : Statc 상태 값 선언(직접 참조) vs RDB 데이터 쿼리를 통한 조회

요즘 실무 중 해당 트레이드 오프에 대한 고민을 많이 하게 된다 Staic으로 설정하는 경우와 이를 DB에서 관리하는 경우의 트레이드 오프에 대한 간단한 정리 1) Static 장점- DB 호출을 줄일 수 있다- DB 접근 실패할 경우에도 로직에 문제가 생기지 않는다- 코드 직접 참조 방식이 아니기 때문에 개발 간 불편함 발생 가장 핵심이 직접 참조가 불가능하다는 점인 듯 하다.해당 참조 방식을 통해 상태 값에 대해 컴파일 시점에서 값의 타입을 점검할 수 있고,해당 데이터를 DB에서 관리하는 경우, 리팩토링 시 값 조회를 위해 IDE가 아닌 DB 프로그램(별도로 나눠서 실행하고 있는 경우)을 실행해서 조회해야 한다 2) DB 관리장점- 상태 값의 수정 발생 시 서버의 재기동 없이 바로 반영 가능- 개발 ..

TIL, WIL/TIL📘 2025.02.28

02. 26 TIL : Collectors.groupingBy() 외 ~ List<Object> list를 특정 요소로 mapping

list list 안의 요소를 분류할 때 일반적으로 stearm().fileter() 방법을 많이 사용한다 하지만 이 방법으론 필터에 해당하는 요소가 있는 리스트를 발라내는 것밖에 할 수 없다. 특정 요소의 값을 기준으로 전체 리스트를 분류하고 싶은 경우,strream().collect(Collectors.groupingBy(Object:getField)); 를 사용 가능하다 이 방식을 통해 하나의 Field로 분류된 Map> 타입인 map이 생성된다. 이제 리스트 별로 분류된 인스턴스에 서로 다른 작업이 가능해진다 일반적으로 이 방법을 많이 사용하며, GPT가 추천해주는 다른 방법으로는, 1) 리스트가 아닌 다른 자료구조에 분류 Map> groupedSetMap = stream() .collect..

TIL, WIL/TIL📘 2025.02.26

02. 19 TIL : GPT API 도입 간 참고할 점 : 웹 검색에 대해

** GPT API 도입 시 2025년 현재, 어떤 API 모델도 웹 검색 기능을 제공하고 있지 않다. 따라서, 해당 기능이 필요한 경우,  1) 웹 브라우저가 있는 ChatGPT (Pro 사용자용 GPT-4-turbo Browsing 기능)ChatGPT Plus를 사용하면 OpenAI의 웹 브라우징 기능이 활성화되어 URL을 직접 입력하고 뉴스 내용을 요약할 수 있습니다.그러나 API에서는 해당 기능이 제공되지 않습니다2) Python/Java 등의 웹 스크래핑 + GPT API 조합 (추천 ✅)뉴스 기사의 HTML을 크롤링한 후, 해당 텍스트를 GPT API에 전달하여 요약할 수 있습니다.BeautifulSoup (Python) 또는 Jsoup (Java) 같은 라이브러리를 사용하면 웹에서 기사 내용..

TIL, WIL/TIL📘 2025.02.19

이펙티브 자바 읽고 정리해보기 10-1

3 장 : Obejct의 메서드, 모든 객체의 공통 메서드 아이템 10 : equals는 일반 규약을 지켜 재정의하라 equals 메서드는 다음과 같은 상황일 때는 재정의하지 않는 것이 좋다.- 각 인스턴스가 본질적으로 고유하다값을 표현하는 게 아니라 동작하는 개체를 표현하는 클래스들이 그 예시로(Thread), Object 클래스의 equals가 이에 적합하게 구현되어 재정의할 필요가 없다- 인스턴스의 논리적 동치성을 검사할 일이 없다java.util.regex.Pattern 클래스는 equals를 재정의하여 두 Pattern의 인스턴스가 같은 정규표현식을 참조하는지 논리적 동치성을 검증하기 위해 equals 메서드를 재정의했다. 다만 설계자에 따라 이 방식이 불필요하다고 여겨질 경우에는 재정의할 필요..

정수원의 Spring Security Oauth2 (5) : CORS

CORS- Http 헤더를 사용해 한 출처에서 사용 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제- 웹 애플리케이션이 리소스가 자신의 출처와 다를 때 브라우저는 요청 헤더에 Origin 필드에 요청 출처를 함께 담아 교차 출처 Http 요청을 실행한다- 출처 비교 로직은 서버 구현 스펙이 아닌 브라우저에 구현된 스펙 기준으로 처리되며 브라우저는 클라이던트의 요청 헤더와 서버의 응답 헤더를 비교해 최종 응답을 결정한다- 두 개의 출처를 비교하는 방법은 URL의 구성요소 중 Protocol, Host, Port 세 가지가 동일한지를 확인함으로 비교 ex) http://abc.com 에서 XMLHttpRequst, ajax(또는 FetchAPI) ..

정수원의 Spring Security Oauth2 (4) : Http Basic

가장 일반적인 Http의 인증방식은 Basic 인증 방식이다 RFC 7235 표준으로, 인증에 필요한 인증 정보를 Base 64로 인코딩해 서버에 인증을 요청한다(Base 64는 디코딩이 쉽기 때문에 Https와 같은 TLS를 함께 사용해야 한다) 1. HttpBasicConfigurer- Basic 인증 초기화를 진행하며 속성에 대한 기본값 설정- 기본 AuthenticationEntryPoint는 BasicAuthenticationEntryPoint이다- 필터는 BasicAuthenticaionFilter를 사용 2. BasicAuthenticaionFilter기본 인증 서비스 제공, 요청 헤더의 인증정보 유효성을 체크하며 인증정보인 아이디와 패스워드를 추출한다. 인증 결과에 따라 Authentica..

728x90