전체 글 14

공공API: SERVICE KEY IS NOT REGISTERED ERROR 에러 자바로 해결하기

1. 문제상황공공데이터 포탈 API를 사용하는 과정에서 약간의 어려움을 겪었다. 포스트맨을 이용하여 호출시 정상 응답을 받았지만, 자바 애플리케이션에서 호출하니 'SERVICE_KEY_IS_NOT_REGISTERED_ERROR' 라는 응답을 받았다. 보통 API 키를 헤더에 넣어서 전송하지만 공공데이터 포탈 API를 사용할때는 쿼리 파라미터로 전송해야한다. 이 때문에 발생한 인코딩 문제의 원인을 파악하는 과정과 해결하는 방법을 이번 포스트에서 다뤄보고자 한다.2. 문제 원인 분석 내가 겪은 문제는 인코딩된 API 키로 요청했음에도 'SERVICE_KEY_IS_NOT_REGISTERED_ERROR' 응답을 받는 것이었다. 공공데이터 포탈에 올라와있는 Q&A에서도 API Key 값을 쿼리 파라미터로 전송시 ..

트러블슈팅 2025.01.06

OS 파일 시스템: 파일 테이블과 I/O 성능 개선 기법

1. 서론시스템 프로그래밍 시간에 학습한 내용을 바탕으로 OS가 파일을 관리하는 방법에 대해서 정리하고자 한다. 응용프로그래밍에서 파일을 열면 운영체제가 이를 어떻게 관리하는지 간단하게 살펴보도록 하자. 또한, 운영체제가 어떻게 디스크와 같은 저장장치를 추상화 하는지, inode를 활용하여 파일의 데이터 블럭을 찾는 과정 등의 내용은 다음 포스트에서 살펴보겠다.2. OS가 파일을 관리하는 방법2.1 File TableFile Table은 각 프로세스가 오픈한 파일의 정보를 저장하고 있는 리스트이다. 프로세스는 파일에 대해서 읽기 쓰기 작업을 진행하기 전에 파일을 open한 후 이 프로세스가 그 파일에 대해 해당 작업을 할 수 있는 권한을 인증한 후에 작업을 수행한다. 이 리스트의 각 Entry의 인덱스는..

CS 2024.12.30

스레드 기본 개념

1. 서론스프링부트의 WAS는 각 요청을 스레드를 할당해서 처리한다. 이때 일반적으로 스레드 풀 방식을 사용한다. 그리고 각각의 스레드는 스택에 할당된다. 그렇기 때문에 스레드에서 함수호출이 가능하다. 한편, JPA의 영속성 컨텍스트는 스레드 단위로 할당된다. 그렇기에 Lost update 문제가 발생할 수 있으며, 이는 비관적, 낙관적 락 등으로 해결할 수 있다. 이처럼 스레드는 백엔드 개발에 아주 기본적인 개념이라고 할 수 있다. 이번 글에서는 시스템 프로그래밍 시간에 배운 스레드 내용 중 중요하다고 생각한 부분을 정리해보려고 한다.2. 스레드 (Threads)2.1 스레드 기본 개념 및 특징스레드는 프로세스에 포함된 실행단위이다.이 실행 단위는 독립적으로 CPU 자원을 할당받고 실행되는 별도의 컨텍..

CS 2024.12.23