/users
/posts
/slides
/apps
/books
mysetting
/users
/posts
/slides
/apps
/books
KIM JUNGHWAN
@NAVER
Seoul
Joined on 2021년 11월 05일
Profile
Post
Like
4:08 5/30
blog.naver.com
4:08
blog.naver.com
나만의공간。
https://blog.naver.com/writer0713/
프로그래밍을 사랑하는, 프로그래밍을 즐기는 사람입니다.
저작도구: naver blog
최종 피드 수집: 2026-08-15 22:45
전체 (412)
1M
[Spring] Testcontainers + Database Rider로 실전 DB 통합 테스트 구축하기
0. 왜 이 조합인가 JPA 리포지토리나 쿼리 로직을 테스트할 때 H2 인메모리 DB를 쓰면 편하긴 하지만, 실제 운영 DB(MySQL)와 방언·타입·함수·제약조건이 달라서 "테스트는 통과했는데 운영에서 터지는" 상황이 생깁니다.
Spring
+ 더보기
0
0
0
읽기모드
1M
2026.07.12 - 커피 끊기 일주일째
커피 끊은지 1주일. 여전히 커피가 엄청 땡긴다. 커피 끊고나서 변화가 꽤 많다. 평소 항상 긴장 상태였었는데 그게 사라졌다. 그러다보니, 자연스레 짜증과 예민함이 사라졌다. 소변 보러 가는 횟수도 줄었다. 밤에 수면의 질이 좋아
2026年
+ 더보기
0
0
0
읽기모드
1M
2026.07.06
평소에 아침 시작하면서 커피 1L, 간혹 오후에도 커피 500ml 정도 마시는 경우가 있었다. 오늘부터 커피끊기를 시작. 일하면서 쪽쪽 빨아먹던 커피가 없으니 입과 손이 심심하긴 하다. 커피끊기 첫날임에도 불구하고 제일 확실히 느
2026年
+ 더보기
0
0
0
읽기모드
1M
2026.07.05
오랜만에 쓰는 일기. 내일부터 조금씩 달라지기 위한 다짐을 적어본다. 매일 입에 달고 살던 커피를 끊어보려 한다. 아무리 육아와 일 때문이라고 해도 항상 피곤한 현재의 몸상태는 정상이 아닌것 같다. 하여 커피를 끊어보려 한다.
일기
+ 더보기
0
0
0
읽기모드
2M
[React.js] tailwindcss 설치 및 prettier 설정
tailwindcss 설치 tailwindcss 설치 자체는 Tailwindcss installation 공식 문서 참고 prettier 설치 및 설정 1) 두가지 의존성 설치 prettier prettier-plugin-tail
React.js
+ 더보기
0
0
0
읽기모드
3M
[파이썬] 테스트 더블
개요 테스트 더블 (Test Double) 은 테스트 시 실제 환경이나 객체를 대체하는 데 사용하는 가짜 객체나 환경을 의미한다. 영화배우를 대신해서 위험한 역할을 대신하는 사람들을 '스턴트 더블' 이라고 하는데에서 비롯되었다고
Python
+ 더보기
0
0
0
읽기모드
3M
[파이썬] uvicorn, starlette, fastapi
Uvicorn : ASGI 서버 Java 의 Tomcat 이 서블릿을 구동하듯, Uvicorn 이 파이썬의 비동기 코드를 실행할 수 있는 환경을 제공 Starlette : ASGI 서버 구현체 Spring Boot 없이 Servl
Python
+ 더보기
0
0
0
읽기모드
6M
[AI] Langchain 의 Runnable 이란?
개요 Langchain 의 Runnable 에 대해 설명한다. 모든 Runnable 컴포넌트는 파이프 연산자를 통해 연결 가능하며 재사용이 용이하다. RunnableSequence : 여러 Runnable 을 순차적으로 실행 Ru
AI
+ 더보기
0
0
1
읽기모드
6M
[AI] LLM 모델 튜닝: 모델 파라미터 설정
개요 Langchain 을 사용할때, LLM Model 의 파라미터가 각각 어떤 역할을 하는지 정리한다. 모델 파라미터 Temperature: 생성된 텍스트의 다양성을 조정. 값이 작으면 예측 가능하고 일관된 출력을 생성하는 반면
AI
+ 더보기
0
0
3
읽기모드
6M
[데브허브] DEVHUB 진행 상황 (삭제 / 비공개 동영상 자동 삭제) - 2026.01.26
제대로 동작하지 않던 '유튜브 영상 AI 요약' 기능을 fix 했습니다. 한동안 바빠서 신경을 쓰지 못했는데 짬을 내어 고쳤습니다. 그리고, 벌써 도메인(dev-hub.dev) 을 구매한지 일년이 지나 다시 재결제가 되었습니다.
개발일지
+ 더보기
0
0
3
읽기모드
7M
[AI] LLM / GPT / 생성형 AI
개요 아래 세가지 용어가 무슨 차이인지 헷갈려서 개인적으로 정리해봄 - LLM (Large Language Model) - GPT (Generative Pre-trained Transformer - 생성형 AI (Generativ
AI
+ 더보기
0
0
4
읽기모드
8M
[kotlin] 동기화 - synchronized
코드설명 BankAccount 구현체에서 구현해야할 메서드들을 가지고 있다. withdraw : amount 만큼 출금을 시도한다. takeBalance : 남은 balance 를 리턴한다. BankAccountV1 동기화 코드가
Kotlin
+ 더보기
0
0
3
읽기모드
8M
2025.11.23
다시 새로운 마음가짐으로 시작.
2025年
+ 더보기
0
0
3
읽기모드
8M
2025.11.21
이제 가끔 사람들 만나서 술 마시는 것도 재미없네. 새로운 무언가가 필요하다. 리프레시 할 수 있는 무언가.
2025年
+ 더보기
0
0
2
읽기모드
8M
[kotlin] volatile - 메모리 가시성
코드설명 MyTask runFlag를 기준으로 while 문을 돌린다. main MyTask 를 별도 thread 로 실행한다. 1초를 쉬고 MyTask 의 runFlag 를 false 로 변경한다. 기대하는 결과는 main 에서
Kotlin
+ 더보기
0
0
1
읽기모드
8M
[kotlin] yield - 양보하기
yield - 양보 Thread.yield() 메서드에 대해 알아보자. 이전 포스팅들에서는 sleep(ms) 를 사용하여 다른 스레드에게 cpu 를 양보하도록 했다. 그럼 yield 는 뭐가 다를까? 아래 예제를 통해 알아보자.
Kotlin
+ 더보기
0
0
4
읽기모드
9M
[kotlin] interrupt (3)
개요 while 문에서 인터럽트를 체크하고 바로 while 문을 벗어나려면 어떻게 해야 할까? 코드 설명 MyTask 기존에 사용하던 sleep(3000) 을 제거했다. while 문에서 Thread.interrupted() 메서
Kotlin
+ 더보기
0
0
2
읽기모드
9M
[kotlin] interrupt (2)
이전 포스팅에서 sleep 중인 thread 를 즉시 interrupt 하는 방법이 있을지 궁금해하며 포스팅을 끝냈다. 이번 포스팅에서 그 방법을 알아보자. 코드 설명 MyTask while 문을 try-catch 로 감싸고 In
Kotlin
+ 더보기
0
0
2
읽기모드
9M
[kotlin] interrupt (1)
코드 설명 MyTask runFlag 를 통해 while 문 실행여부를 결정한다. while 문 내부에서는 "작업 중" 로그를 찍고 3초를 sleep 한다. while 문을 빠져나가면 "자원 정리", "자원 종료" 라는 로그를 찍
Kotlin
+ 더보기
0
0
1
읽기모드
9M
[kotlin] join
Join 아래 코드에서 thread1.join() 과 thread2.join() 을 실행함으로써 main thread 는 thread1과 thread2 가 완료될때까지 대기하게 된다. 좀 더 정확하게는 thread1.join()
Kotlin
+ 더보기
0
0
1
읽기모드
9M
[kotlin] Thread 의 생명주기
Thread 의 생명주기와 상태 Thread 의 생명주기에 대해 알아보자. Thread 는 상황에 따라 '상태' 가 바뀌게 된다. Thread 의 여러 상태 New (새로운 상태): Thread 를 생성했지만 start() 메서드
Kotlin
+ 더보기
0
0
0
읽기모드
9M
[kotlin] Thread 기본 정보
Thread 의 기본정보 Thread 클래스가 제공하는 정보들을 알아보자. Thread 객체 정보 Thread 클래스의 toString() 메서드는 [thread-id, thread-name, priority, threadGrou
Kotlin
+ 더보기
0
0
2
읽기모드
9M
[kotlin] Thread 생성과 실행 (with. thread 메서드)
개요 이전에 Thread 생성 하는 방법 두 가지에 대해 포스팅을 했었다. Thread 상속을 통한 생성 Runnable 구현을 통한 생성 위 두가지 방식은 java 에서 제공하는 방식이다. 하지만, 나는 kotlin 언어를 사용
Kotlin
+ 더보기
0
0
3
읽기모드
9M
[kotlin] Custom Logger
Custom Logger 만들기 이전 코드들에서 println 을 통해 쓰레드명과 메시지를 출력했었다. 매번 이렇게 쓰기가 불편하기도 하고 포맷을 맞춰서 편리하게 사용하기 위해 Custom Logger 를 만들어보자. 물론 일반적
Kotlin
+ 더보기
0
0
2
읽기모드
9M
[kotlin] Thread 생성과 실행 (with. Runnable 인터페이스)
Runnable Interface 구현을 통한 Thread 생성 이전에 Thread Class 상속을 통한 Thread 생성에 대해 포스팅 했었다. Java (kotlin) 에서는 또 다른 방법인 Runnable Interface
Kotlin
+ 더보기
0
0
2
읽기모드
9M
[kotlin] Daemon Thread
Thread 의 종류 Thread 는 user-thread 와 daemon-thread 2가지 종류로 구분할 수 있다. User Thread (non-daemon thread) 프로그램의 주요 작업을 수행한다. thread 의 작
Kotlin
+ 더보기
0
0
2
읽기모드
9M
[kotlin] Thread 생성과 실행 (with. Thread 클래스)
Thread Class 상속을 통한 Thread 생성 아래 코드에서와 같이 Thread 클래스를 상속해서 Thread 를 생성할수 있다. Thread 를 상속하고 run 메서드를 오버라이드 해줘야 한다. 구현 클래스 (HelloT
TIL
+ 더보기
0
0
3
읽기모드
9M
[kotlin] 프로세스와 스레드
Process 프로그램은 실제 실행하기 전에는 그저 파일에 불과하다. OS 상에서 프로그램을 실행하면 Process 가 만들어진다. 즉, OS 상에서 실행중인 프로그램을 Process 라 한다. 각 Process 는 독립적인 메모
TIL
+ 더보기
0
0
2
읽기모드
9M
[kotlin] 멀티태스킹 vs 멀티프로세싱
멀티태스킹 하나의 CPU 코어로 여러개의 프로그램을 매우 빠른속도로 번갈아가며 실행하는 행위이다. 번갈아가며 실행되는 속도가 매우 빨라서 마치 여러개의 프로그램이 동시에 실행되는 것처럼 보인다. 각 프로그램의 실행 시간을 분할해서
TIL
+ 더보기
0
0
2
읽기모드
9M
[kafka] 라운드 로빈 파티셔너 / 스티키 파티셔너
라운드 로빈 파티셔너 kafka 2.3 까지 default partitioner 였다. 프로듀서가 6개의 메시지를 전송하고 파티션이 5개 있는 토픽 라운드 로빈 방식이면 순차적으로 메시지가 분배가 된다. 이 방법은 파티션당 배치가
kafka
+ 더보기
0
0
1
읽기모드
9M
[kafka] Group Coordinator
Group Coordinator 그룹 코디네이터는 컨슈머 그룹이 구독한 토픽의 파티션들과 그룹의 멤버들을 트래킹한다. 그룹 코디네이터는 각 컨슈머 그룹별로 존재하며, 이러한 그룹 코디네이터는 카프카 클러스터 내의 브로커 중 하나에
kafka
+ 더보기
0
0
1
읽기모드
9M
[kafka] 클라이언트 메타데이터와 브로커 통신
클라이언트 메타데이터 kafka client 는 통신하고자 하는 리더 파티션의 위치를 알기 위해 데이터를 주고 받기 전에 메타데이터를 브로커로부터 전달 받는다. 메타데이터는 다음과 같은 옵션을 통해 리프레쉬 된다. kafka pr
kafka
+ 더보기
0
0
1
읽기모드
9M
[kafka] ISR 과 acks 옵션
ISR (In-Sync-Replicas) - 리더 파티션과 팔로워 파티션의 offset 이 동일(sync) 하다. - 리더 파티션과 팔로워 파티션의 offset 이 동일하지 않으면 팔로워 파티션은 ISR 에 포함되지 않는다. IS
kafka
+ 더보기
0
0
1
읽기모드
9M
[kafka] Partitioner (producer)
Partitioner 동작 방식 kafka Producer 는 내부에 Partitioner 를 가지고 있고 이 Partitioner 는 여러가지 파티션 분배 전략을 선택할 수 있다. Partitioner 는 파티션 분배 전략에 따
kafka
+ 더보기
0
0
2
읽기모드
9M
[kafka] 세그먼트
개요 Kafka 의 세그먼트는 파티션의 데이터를 실제로 저장하는 물리적인 파일이다. Kafka 는 데이터 (headers, key, value, offset ,timestamp) 를 파티션에 순차적으로 기록하지만, 이 데이터는 여
kafka
+ 더보기
0
0
2
읽기모드
9M
[kafka] DLT (Dead Letter Topic) 처리 - @DltHandler
@RetryableTopic 을 사용하여 retry 를 했음에도 처리가 실패한 메시지는 'xxx.dlt' 토픽으로 전송된다. dlt 토픽에 쌓인 메시지를 처리하는 방법에 대해 알아보자. 아래 코드는 receiveMessage 에서
kafka
+ 더보기
0
0
2
읽기모드
9M
[kafka] 논블로킹 재시도 - @RetryableTopic
이전 포스팅에서 message 처리가 실패하면 retry (10회) 하는 동안 같은 파티션의 다음 message 들의 처리가 blocking 된다고 설명했다. 그리고, retry 가 모두 실패하면 자동으로 DLT (Dead Let
kafka
+ 더보기
0
0
2
읽기모드
9M
[kafka] message 처리 실패시 blocking
상황설명 상황은 다음과 같다: • Producer가 Topic A의 0번 파티션에 메시지 1번부터 5번까지 쭉 보냈다 • Consumer가 이걸 받아서 처리하고 있는데, 1번과 2번은 잘 처리됐다 • 그런데 3번 메시지에서 갑자기
kafka
+ 더보기
0
0
3
읽기모드
9M
[kafka] 토픽 네이밍 컨벤션 완벽 가이드
카프카(Kafka)를 사용하다 보면 수많은 토픽을 생성하게 된다. 처음에는 몇 개의 토픽으로도 관리가 용이하지만, 프로젝트가 커질수록 토픽의 개수도 늘어나 체계적인 네이밍이 필수적이다. 오늘은 Kafka 토픽의 효율적인 네이밍 컨
kafka
+ 더보기
0
0
0
읽기모드
9M
[kafka] consumerGroup 과 offset
kafka 에서 컨슈머 그룹으로 컨슈머를 묶을수 있다. 컨슈머 그룹은 topic - partiton 에서 어디까지 메시지를 읽었는지 offset 을 metadata로 기록한다. 이 offset 기록과 kafka offset res
kafka
+ 더보기
0
0
1
읽기모드
9M
[kafka] kafka message 의 특징
Kafka Message 특징 다른 메시지큐 (ex. RabbitMQ, SQS) 와 다른 카프카의 특징 중 하나는 consumer 가 message 를 읽어서 처리 (consume) 한 이후에도 메시지가 삭제되지 않고 (설정된 기
kafka
+ 더보기
0
0
1
읽기모드
9M
[kafka] producer / consumer / topic
producer producer 는 여러가지 형태로 존재할수 있다. 어떤 형태이든 producer 의 목적은 같다. producer 는 message (data) 를 kafka 로 전달하는 것이 주요 목표이다. applicatio
kafka
+ 더보기
0
0
4
읽기모드
9M
[kafka] docker-compose 로 confluent kafka 띄우기
Docker-Compose 로컬에서 가볍게 confluent kafka 를 사용해보려고 할 때 docker-compose 를 사용하여 confluent kafka cluster (node 1 + controller 1 + brok
kafka
+ 더보기
0
0
1
읽기모드
9M
[kafka] Apache Kafka vs Confluent Kafka
개요 Confluent 는 실리콘밸리에 있는 빅데이터 회사로 링크드인에서 Apache Kafka 를 최초로 개발한 개발자들이 나와서 설립한 회사이다. Confluent Kafka 는 Apache Kafka 를 기반으로 확장한 다양
kafka
+ 더보기
0
0
3
읽기모드
10M
2025.10.08
드디어 http 관련 강좌를 완강하고 블로그에 정리도 완료했다. 사실 영상을 다 본건 한달전인데 개인적으로 중요하다고 생각되는 부분들을 블로그에 정리 하다보니 시간이 더 오래 걸렸다. 확실히 블로그에 정리하면서 다시 보니 좀 더
2025年
+ 더보기
0
0
0
읽기모드
10M
[HTTP] 기타 캐싱 헤더 - Expires / Vary
1. Expires Expires 는 HTTP/1.0 에서 정의한 헤더다. 서버가 파일의 캐시 만료일을 지정하는 응답 헤더로 cache-control 의 max-age 가 '초' 를 지정한다면, 이 헤더는 날짜와 시간 (만료일)
HTTP
+ 더보기
0
0
0
읽기모드
10M
[HTTP] 캐시 제어 - Cache-Control
1. Cache-Control 일반적으로 캐싱 프로세스는 브라우저가 서버에 요청을 해서 캐싱 관련 헤더를 받은 이후에 동작하게 된다. 하지만, Cache-Control 헤더를 사용하면 좀 더 세밀하게 캐싱을 컨트롤하여 서버에 요청
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] 내용 기반 캐싱 - ETag
1. ETag (Entity Tag) 서버에서 설정하는 ETag 헤더와 클라이언트에서 설정하는 If-None-Match 헤더를 통해 내용 기반 캐싱 (ETag) 을 사용할 수 있다. ETag 는 HTTP/1.1 부터 지원하는 기능
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] 시간 기반 캐싱
1. 시간 기반 캐싱 (Last-Modified / If-Modified-Since) 서버에서 설정하는 Last-Modified 헤더와 클라이언트에서 설정하는 If-Modified-Since 헤더를 통해 시간 기반 캐싱을 사용할
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] 이미지 지연로딩
이미지 지연로딩의 필요성 브라우저는 일반적으로 파싱과정에서 img 태그를 만나면 파싱을 멈추고 이미지를 요청 및 다운로드한다. 만약, 한 페이지에 이미지가 엄청나게 많다면 (ex. 사진첩이나 블로그) 브라우저는 이 모든 이미지들에
HTTP
+ 더보기
0
0
2
읽기모드
10M
[HTTP] Prefetch
Prefetch Prefetch 는 이전 포스팅에서 설명한 Preload 와 비슷한 역할을 한다. Preload 는 이미지, 스크립트, 웹폰트 등의 리소스에 대해 미리 요청을 한다면, Prefetch 는 페이지 자체에 대해 미리
HTTP
+ 더보기
0
0
2
읽기모드
10M
[HTTP] Preload
Preload Preload 란 웹문서에 필요한 자원을 미리 다운로드하는 방법이다. 태그의 async 처럼
태그의 preload 속성을 사용하면 원하는 자원을 io 스레드를 통해 파싱을 멈추지 않으면서 요청을 한다. 예를 들
HTTP
+ 더보기
0
0
2
읽기모드
10M
2025.10.05
내가 알고 있다고 생각하는 것들이 사실은 제대로 알고 있지 않은 경우가 많다.
2025年
+ 더보기
0
0
1
읽기모드
10M
[HTTP] script 태그의 defer 속성
Defer 속성 이전 포스팅에서 Async 속성을 사용하면 script 요청이 IO 쓰레드에서 실행되면서 메인 쓰레드가 실행하는 파싱과 렌더링 과정을 멈춤없이 진행할수 있다고 설명했다. 하지만, 문제는 모든 script 에 사용할
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] script 태그의 Async 속성
Async 속성 렌더링에 영향을 주지 않기 위해서는 '파싱' 이 끊김없이 계속 진행되어야 한다. 이전 포스팅에서 설명했듯이 태그와 같은 요소들은 파싱에 영향을 준다. 태그의 async 속성은 파싱과 파일(javascript)
HTTP
+ 더보기
0
0
4
읽기모드
10M
[HTTP] 렌더링 과정
렌더링 과정 DNS (Domain Name Server) 질의 사용자는 웹브라우저 주소창에 URL 을 입력한다. DNS 를 통해 URL 에 해당하는 IP 를 찾게되고, 해당 IP 로 요청을 보내게 된다. 브라우저는 해당 IP 의
HTTP
+ 더보기
0
0
0
읽기모드
10M
2025.10.03
꾸준함으로 승부하자. 하루 30분씩이라도 공부하자. 눈으로 공부하지 말고, 직접 타이핑하며 공부하자. 백문이불여일타
2025年
+ 더보기
0
0
1
읽기모드
10M
[HTTP] 사전요청 - Preflight Request
1. 사전 요청 (Preflight Request) 이전 포스팅에서 설명한 '단순 요청' 의 조건을 만족하지 못하면 브라우저는 본 요청을 보내기 전에 '사전 요청' 을 보낸다고 설명했다. 브라우저는 '단순 요청' 의 조건을 만족하
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] CORS - 단순요청 (Simple Request)
1. 단순요청 (Simple Request) 의 조건 아래 3가지를 모두 만족하는 경우를 '단순요청' 이라고 한다. '단순요청' 의 경우, 다음 포스팅에서 소개할 'preflight (사전 요청)' 을 하지 않는다. 요청 메서드가
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] CORS 의 동작원리
CORS 이전 포스팅에서 설명한 SOP 정책으로 인해 기본적으로는 '동일 출처' 가 아닌 경우 리소스 요청시 브라우저에 의해 해당 리소스를 사용할수 없게 차단된다. 만약, '동일 출처' 가 아닌 경우에 리소스를 요청하려면 어떻게해
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] SOP (동일 출처 정책)
1. SOP (Same Origin Policy) (CSP 와 SOP. 둘 다 세글자이고 철자도 비슷하게 생겨서 헷갈린다) SOP 는 Same Origin Policy 의 줄임말로 한국어로 하면 '동일 출처 정책' 이라고 한다.
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] CSP (컨텐츠 보안 정책)
1. CSP (Content Security Policy) CSP 를 설정하는 방법에는 두가지가 있다. server 에서 response 할때, header 에 'Content-Security-Policy' 를 추가하는 방법 태
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] CSRF (교차 사이트 요청 위조)
1. CSRF 우선 아래와 같은 가정을 하고 진행하자. attacker.com 이라는 사이트가 있다 cookie 에는 어떠한 directive (예방책) 도 적용되어 있지 않다. attacker.com 에서는 아래와 같이 보이지
HTTP
+ 더보기
0
0
1
읽기모드
10M
[HTTP] 세션 하이재킹
1. 세션 하이재킹 이전 포스팅에서 설명했던 XSS 를 사용하여 '세션 하이재킹' 등의 공격을 실행할 수 있다. '세션 하이재킹' 이란 게시판 등에 '악성 script' 를 심어놓고 다른 client 가 해당 글을 읽을때 '악성
HTTP
+ 더보기
0
0
2
읽기모드
10M
[mysql] user(사용자) 생성, 권한 추가, 변경, 삭제
1. 셸 진입 및 준비 - root 로 mysql 셸 진입 - mysql 사용 - 현재 사용자 리스트 확인 2. User 생성 - localhost (mysql 서버) 에서 셸을 통한 접근만 허용하려면 유저명@localhost 로
MYSQL
+ 더보기
0
0
0
읽기모드
10M
[mysql] 설치 직후 root 계정 비밀번호 변경
1. MySQL 셸 접속 비밀번호 없이 root 사용자로 접속 2. 비밀번호 변경 (5.7 이상) 3. 권한 테이블 새로고침 mysql 사용자 권한 테이블을 새로 고쳐야 변경 사항이 즉시 적용됨 4. mysql 종료 5. 변경된
MYSQL
+ 더보기
0
0
1
읽기모드
10M
[Spring] RestTemplate 제대로 사용하기
이전 포스팅에서 설명했던 ObjectMapper 와는 다르게 RestTemplate 은 springboot 에서 AutoConfiguration 으로 제공되지 않는다. 따라서, @Bean 으로 등록하여 사용해야 하는데 이때 주의해
TIL
+ 더보기
0
0
1
읽기모드
10M
[Spring] ObjectMapper 제대로 사용하기
Springboot 프로젝트에서 ObjectMapper 를 사용할때 기본적으로 제공되는 ObjectMapper 를 사용하지 않고 직접 @Bean 을 만들어서 사용하는 경우가 있다. 문제는 이렇게 직접 @Bean 으로 등록하게 되면
TIL
+ 더보기
0
0
2
읽기모드
10M
[AI] 자주 사용하는 MCP
1. context7-mcp Context7은 LLM과 AI 코드 에디터를 위해 최신의 버전별 문서와 코드 예제를 동적으로 제공하는 MCP 서버입니다. 프롬프트에서 "use context7"을 포함하면, 서버가 현재의 공식 문서를
AI
+ 더보기
0
0
1
읽기모드
10M
[HTTP] 크로스 사이트 스크립팅 (XSS)
1. XSS (Cross-site scripting) 이란? 크로스 사이트 스크립팅 (XSS)은 공격자가 웹사이트에 악성 클라이언트 사이드 코드를 삽입할 수 있도록 하는 보안 취약점 공격입니다. 이 악성 코드는 피해자에 의해 실행
TIL
+ 더보기
0
0
0
읽기모드
11M
[HTTP] SSE (w/ springboot)
SSE (Server Sent Event) 는 server => client 로 데이터를 보내는 단방향 통신이다. 즉, client 는 server 에 커넥션을 연결하고 server 에서 데이터를 보내주는것을 받을수만 있다. SS
TIL
+ 더보기
0
0
5
읽기모드
11M
[HTTP] long-polling
long-polling 은 short-polling 과는 조금 다르다. 역시나 client 에서 일정 시간마다 요청을 하는 방식이지만, '일정 시간' 을 정하는 주체가 서버측이다. short-polling 은 client 측에서
TIL
+ 더보기
0
0
0
읽기모드
11M
[HTTP] (short) Polling
polling 은 일반적으로 우리가 알고있는 주기적인 요청을 통한 데이터 확인이다. 아래와 같은 장단점이 있다. 장점 : 구현이 쉽다. 단점 : 서버에 부담이 갈 수 있다. 쓸모없는 요청/응답으로 인해 쓸모없는 트래픽 (ingre
TIL
+ 더보기
0
0
1
읽기모드
11M
[HTTP] 쿠키
4.1 쿠키 헤더 쿠키는 여러 용도로 사용된다. 여기에서 그 모든 용도에 대해 다루려는건 아니고 쿠키가 클라이언트와 서버 사이에서 어떻게 생성되고 사용되어 지는지, 그리고 쿠키의 옵션(?) 들은 어떤것들이 있는지 보려고 한다. 우
TIL
+ 더보기
0
0
3
읽기모드
11M
[Springboot] @ConfigurationProperties prefix 룰
평소에 별 생각없이 썼던 springboot 의 @ConfigurationProperties 에 대해 정리한다. 아래와 같이 prefix 에 "customProperties" 를 적으면 에러가 발생한다. 아래는 에러 내용 이유는
TIL
+ 더보기
0
0
4
읽기모드
11M
[HTTP] Accept-Language
3.3 언어 Accept-Lanuage 헤더를 사용하여 서버에게 어떤 언어로 컨텐츠를 제공해주길 바라는지 전달할 수 있다. youtube 를 통해 테스트해볼수 있다. 본인의 브라우저 기본 언어는 '한국어'로 되어 있기 때문에 yo
TIL
+ 더보기
0
0
3
읽기모드
11M
[HTTP] 컨텐츠 협상 - Accept-Encoding
3.2 압축 Accept-Encoding 헤더를 사용하면 서버에게 컨텐트를 압축해서 전달하도록 요청할수 있다. 브라우저의 경우, 기본적으로 Accept-Encoding 헤더를 사용하기 때문에 서버측에서 압축 관련 처리를 해놨다면
TIL
+ 더보기
0
0
5
읽기모드
11M
[데브허브] DEVHUB 진행 상황 - 2025.09.02
블로그 개발일지에 적지는 않았지만 시간이 날때마다 틈틈이 업데이트를 진행했습니다. - '기업 테크 블로그' 추가 - top 10 콘텐츠 페이지 - ui / ux 개선 그리고, 오늘 짬을 내어 '이메일로 최신 소식 구독하기' 기능을
개발일지
+ 더보기
0
0
2
읽기모드
11M
[HTTP] 컨텐츠 협상 - Accept / Content-Type
3.1 컨텐트 타입 Accept header 에 따라 server 에서는 전혀 다른 타입의 content 를 response 할 수 있다. Github repository 주소를 사용해 아래와 같이 테스트 해볼 수 있다. requ
TIL
+ 더보기
0
0
0
읽기모드
11M
2025.09.01
24년 언제부터인가.. 블로그에 일기 쓰기와 기술 공부 정리하는 행위를 멈추었다. 아마도 우리 부부에게 아기가 찾아오고 나서부터 인 것 같다. 정신적으로나 육체적으로나 (물론 지금도..) 여유가 사라지다 보니 '정리를 해야겠다'는
2025年
+ 더보기
0
0
2
읽기모드
11M
[Linux] 외부 방화벽 설정하는 법 Firewalld
Firewalld 설치 및 설정
OCI
+ 더보기
0
0
0
읽기모드
1y
[Golang] macbook golang 설치 (w/ asdf)
Golang
+ 더보기
0
0
1
읽기모드
1y
[유튜브 프리미엄] NFXBUS 10% 할인코드
NFXBUS NFXBUS 라는 사이트를 통해 유튜브 프리미엄을 싸게 구독할 수 있다. 본인은 10% 할인코드 적용해서 2년 구독권을 73.79$ 에 구매했다. NFXBUS 와 비슷한 사이트들이 여러개 있는데 비교해보니 NFXBUS
etc
+ 더보기
0
0
0
읽기모드
1y
[Git] Github 에서 gemini 에게 pr review 받기
개요 Github 에서 동료들뿐 아니라 Gemini-code-assist (AI) 에게 무료로 review 를 받을수 있다. 개인 프로젝트라면 사용해서 나쁠게 없어보인다. 방법 1. Github Login 2. 아래 링크에 들어가
GIT
+ 더보기
0
0
3
읽기모드
1y
[docker] rancher desktop / Testcontainers 에러 - ip: can't find device 'vznat'
개요 mac m3 에 rancher desktop + Testcontainers 를 설치한 이후 terminal 에서 아래와 같은 에러가 발생했다. 해결책 아래 명령어를 실행하자.
DOCKER
+ 더보기
0
0
14
읽기모드
1y
[AI] Cline - Plan / Act mode 차이점
개요 개인 프로젝트 진행시 자주 사용하는 VSCode 의 Cline 이라는 툴에서 'plan' 과 'act' 라는 모드가 나뉘어져 있는것을 발견했다. 두 모드의 차이점이 궁금하여 찾아보고 정리한다. 참고 아래 thread 에 동영
AI
+ 더보기
0
0
2
읽기모드
1y
[데브허브] DEVHUB 진행 상황 (인사이트 제공 / player 최적화, etc) - 2025.02.09
개요 마지막으로 포스팅 했던게 24.12.21 이었으니 벌써 두달 가까이 시간이 흘렀다. 연초부터 독감, 식중독, 극심한 허리통증을 차례로 겪으면서도 개발을 손에서 놓지 않았다. 오늘은 근 두달간 업데이트 한 내용들과 앞으로 진행
개발일지
+ 더보기
0
0
2
읽기모드
1y
[데브허브] DEVHUB 진행 상황 ('유튜브에서 보기' 버튼 추가) - 2024.12.21
'유튜브에서 보기' 기능 추가 devhub 는 웹 기반이라서 모바일 화면을 끄면 백그라운드 재생이 안되는 단점이 있음 PC 로 볼때는 크게 불편한 점이 없지만, mobile 에서 볼때는 유튜브앱으로 보는게 좀 더 쾌적한 느낌이 있
개발일지
+ 더보기
0
0
1
읽기모드
1y
[Next.js] Prisma on Next.js 강좌
노마드코더 next.js 강좌를 들으면서 prisma 를 알게되었는데 사이드 프로젝트 할 때 상당히 괜찮은 orm 프레임워크 라고 생각이 들었다. 노마드코더 강좌에서는 간단한 예제만 하다보니 좀 더 실무에 가까운 사용법을 알고 싶
Next.js
+ 더보기
0
0
0
읽기모드
1y
[데브허브] DEVHUB 진행 상황 (AI model 변경) - 2024.01.02
AI 모델 변경: Google AI Studio로의 전환 DEVHUB에서는 동영상 카테고리 분류와 요약에 AI를 활용하고 있는데, 기존에는 Groq의 무료 모델(Google GEMMA)을 사용했습니다. 하지만, 12월 중순부터 스
개발일지
+ 더보기
0
0
2
읽기모드
1y
[데브허브] DEVHUB 진행 상황 (삭제 / 비공개 동영상 자동 삭제) - 2024.12.21
근황 시간이 참 빠르다. 사실 이 기능은 11월 말에 작업을 완료하였는데 최근에 육아와 일이 너무 바빠서 포스팅을 못하고 있었다. 처음 프로젝트를 시작할 때 "사용자가 없어도 그냥 혼자 꾸준히 개발을 해보겠다"라고 다짐했던 것처럼
개발일지
+ 더보기
0
0
3
읽기모드
1y
[2024 마이 블로그 리포트] 데이터로 찾아보는 내 블로그 마을
점점 블로그를 안하게 되는군..
기타
+ 더보기
0
0
1
읽기모드
1y
[데브허브] DEVHUB 진행상황 (AI 요약 기능 추가) - 2024.11.03
AI 요약 기능 개발기 모델 선택 팀 동료가 AI 요약 기능이 있으면 좋겠다는 의견을 주어, 약 2주 동안 'AI 요약' 기능을 개발해보았다. 다양한 모델에 맞춰 프롬프트를 조정하며 수백 번의 테스트를 진행했다. 비용을 들이면 더
개발일지
+ 더보기
0
0
7
읽기모드
1y
[데브허브] DEVHUB 진행상황 (AI 를 사용한 카테고리 분류) - 2024.11.02
카테고리 분류 카테고리 분류 방법 선택 기존에는 모든 동영상을 최신순으로 보여주고 있었다. 사용자들에게 가장 도움이 되는 기능이 무엇일까 고민해보니 수 많은 동영상 중에서 내가 원하는 분야의 동영상만 골라보기가 쉽지 않을거란 생각
개발일지
+ 더보기
0
0
3
읽기모드
1y
[Next.js] Vercel 배포 실패 - (Module not found: Can't resolve)
개요 next.js app 개발을 하는 도중, 파일명 규칙이 중구난방이라 생각되어 통일을 시키기 위해 cacmel case 에서 kebab case 로 파일명들을 수정했다. 그리고, push 후에 vercel 에 배포하자 아래와
Next.js
+ 더보기
0
0
4
읽기모드
1y
[데브허브] DEVHUB 진행상황 (many updates) - 2024.10.12
Github Actions 버그 수정 이전 포스팅에서 BE (springboot) 의 CI 를 Github Actions 로 구축했다고 적었었다. 잘 사용하고 있었는데 간혹 application 을 shutdown 하고나서 다시
개발일지
+ 더보기
0
0
6
읽기모드
About
Badge
Contact
Activity
Terms of service
Privacy Policy