상황 요약운영 중인 Linux 서버에서 웹 애플리케이션(자바 프로세스)이 8080 포트로 떠 있는 것으로 보였지만, 로컬에서는 정상 응답이 오는데 외부 PC에서 curl / telnet으로 접속하면 쿼리는 정상적으로 보내지지만 응답이 없거나 타임아웃이 발생했다. 여기서 의문은 다음과 같았다. "서비스가 떠 있는데(로컬은 정상 응답), 왜 외부에서는 연결/응답이 안 올까?""방화벽이 닫혀 있으면 TCP 3-way handshake도 안 되어야 하는데, 왜 어떤 시도에서는 연결이 된 것처럼 보였을까?"1) 최초 방화벽 상태 확인: iptables는 ‘거의 다 허용’처럼 보임먼저 방화벽 문제인줄 알아서 다음 명령어를 쳐 확인해봤다.iptables -nL 출력:Chain INPUT (policy ACCEPT)t..
전체 글
일상을 써가는 블로그현재 개인 서버를 GCP 프리티어로 사용하여 웹 서비스를 하나 띄우고 있다. 해당 웹 서비스는 종가베팅하기 좋은 종목을 추천해 주는 서비스이다.해당 서비스는 인공지능 모델에게 코스피, 코스닥의 모든 종목들을 차트, 뉴스, 수급량 등을 따져 종가베팅하기 좋은 최적의 종목을 추천해 주는 서비스인데 이 서비스를 띄운 GCP 프리티어가 3월이면 끝난다.이렇게 프리티어를 옮겨다니며 웹 호스팅 환경을 바꾸자니 여간 귀찮은 일이 아닐 수 없다. 그렇다고 한 인스턴스에 서비스를 계속 유지하자니 1년.. 3년.. 비용이 만만치 않았다.. 이렇게 될 바엔 개인 소장용 서버를 한대 두는 것이 좋겠다 생각을 했고, 26년 2월 현 시점에서 가장 저렴하며 로컬 LLM 모델을 돌리기 가장 가성비가 좋은 Mac mini를 고려하게..
1. 멱등성이란 무엇인가?멱등성(idempotency)은 “같은 작업을 여러 번 반복해도 결과가 달라지지 않는 성질”을 말해요.예를 들어 어떤 숫자에 1을 곱하는 연산, 절대값 함수처럼 몇 번을 적용해도 결과가 똑같으면 그 연산은 멱등하다고 부를 수 있어요.API 세계로 가져오면, 멱등한 API는 같은 요청을 두 번, 세 번 보내도 서버의 상태와 응답 결과가 처음 요청 때와 완전히 동일하게 유지되는 API를 의미해요.단순히 응답 JSON만 비슷한 게 아니라, 실제 DB 상태까지 “한 번 처리된 것과 동일하게” 유지되는 게 핵심이에요.2. HTTP 메서드와 멱등성, 그리고 안전성HTTP 메서드에도 멱등성과 안전성이라는 개념이 있어요.멱등한 메서드: GET, PUT, DELETE, HEAD, OPTIONS,..
[BOJ] 백준 1002 터렛 - Java난이도실버3문제출처https://www.acmicpc.net/problem/1002 지문조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다.이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다.조규현의 좌표 (x1,y1)와 백승환의 좌표 (x2,y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각..
GETcurl -X GET "{url}?age=30"POSTcurl -X POST -H 'Content-Type: application/x-www-form-urlencoded' {url} -d "key1=value1&key2=value2"POST(JSON)curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' {url} -d "{key1: value1, key2: value2}"다수 헤더 및 전체 값 출력# 헤더 출력curl -X POST -i-H 'Content-Type: application/x-www-form-urlencoded' {url} -d "{key1: value1, key2: value2}"# 다수 헤더curl -X POST -..
본문프로젝트 도중에 굉장히 무거운 엔진을 API를 통해서 돌려야 하는 미션이 있었다.해당 과정에서 목표 성능 지표는 TPS 40~50이었고, 첫 테스트 결과 20 TPS 미만이 나왔었다. 당연히 성능 테스트는 통과를 하지 못했고 응답속도 또한 9~10초 사이대가 나왔다.원인해결하기 위해 다양한 방법을 동원하여 재시도를 해보았는데 접속 유저를 1, 10, 50명으로 해도 응답속도가 똑같이 5초를 유지하는 이상한 현상을 발견했다. 유저가 줄어들면 당연히 응답속도가 줄어야 한다고 생각을 했는데 몇 명이 들어오든 같은 응답속도를 유지하는 것을 보고 어디선가 병목이 일어난다는 것을 발견할 수 있었다.병목 위치를 찾던 도중 DBA가 이상한 테이블이 조회된다는 것을 알려주었고 확인 결과 조회가 많이 일어나는 테이블에..
CSV 파일로 작성된 파일을 Excel로 열 경우 한글이 깨져 보이는 문제가 발생했다. 이유를 찾아보니 Excel 프로그램은 UTF-8 BOM이 기본 인코딩으로 UTF-8로 인코딩 된 파일은 깨져보이는 문제가 발생한 것이다.프로그램 언어를 통해서 csv를 작성 시에 위 문제를 해결하기 위해 최상단에 UTF-8 BOM (\uFEFF)을 추가했다.하지만 문서를 업로드 시에 UTF-8만 인식하는 프로그램에서는 위 방법이 문제가 됐다.CSV 각 행의 앞단에 BOM이 있으므로 각 행마다 replaceAll(”\uFEFF”, “”)를 통해서 제거해 줌으로 써 해결했다.
회사에서 일을 하다 팀장님이 with 절을 사용하는 것을 봤다. WITH? Oracle 9.0부터 사용할 수 있으며 이름이 부여된 서브쿼리의 일종이다. VIEW와 쓰임새가 같지만 차이점이 존재한다. 차이점 VIEW : 한번 생성해 두면 DROP이 이뤄지기 전까지는 계속 접근하여 사용할 수 있다는 것 WITH : 실행할 쿼리문에 정의되어 있는 경우 한번 실행에 실행되고 사라진다는 것 사용하는 이유 WITH절은 복잡한 SQL에서 동일 블록에 대해 반복적으로 SQL문을 사용하는 경우 그 블록에 이름을 부여하여 재사용 할 수 있게 함으로서 쿼리 성능을 높일 수 있는데 WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만들 수 있다. 자주 실행되는 경우 한번만 Parsing되고 Plan 계획이 수..