728x90

분류 전체보기 343

04. 06 TIL : 인터넷/ 전송 계층(IP, TCP, UDP)

IP 프로토콜- 지정한 IP 주소에 데이터를 패킷 단위로 전달한다 IP 프로토콜의 단점- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송할 수 있다- 패킷이 중간에 사라져도 송신 클라이언트에서 그 손실 여부를 확인할 방법이 없다- 패킷을 보낸 순서를 보장하지 않는다(데이터의 순서가 보장되지 않는다)- 같은 IP를 사용하는 서버 내 애플리케이션에 대한 구분이 어렵다 IP 프로토콜의 단점을 보완한 프로토콜 : TCP/UDP*cf) TCP/IP 프로토콜 (OSI 7계층과 비교 가능)데이터를 주고받기 위한 규칙과 절차를 정희하며, TCP/IP 프로토콜을 중심으로 설계되었다.1) 응용 계층사용자와 직접 상호작용하는 계층으로 데이터 형식 변환, 암호화 사용자 인터페이스 등 제공 : HTTP, FTP, ..

TIL, WIL/TIL📘 2025.04.06

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

스레드 로컬은 스레드 별로 할당되어 해당 스레드만 접근할 수 있는 저장소를 의미한다 싱글턴 인스턴스의 경우 스레드 별로 데이터를 구분하지 않아 다른 스레드가 접근할 경우 기존 스레드가 저장한 데이터를 덮어 쓰게 된다 이 경우에 스레드 로컬을 사용해 각 스레드 별 데이터를 유지할 수 있다 ** 스레드 로컬은 사용 후 꼭 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) ..

728x90