워드프레스 자동 발행 글이 스팸 필터에 걸리는 이유와 점검법

이 글에서는 워드프레스 자동 발행 글이 어떤 조건에서 스팸으로 분류되는지, 그리고 발행 전에 이 패턴을 코드로 걸러내는 방법까지 확인할 수 있습니다. 핵심만 먼저 말씀드리면, 워드프레스 자체에 글을 막는 스팸 필터가 있는 경우는 드물고, 대부분은 구글이 색인 단계에서 돌리는 스팸 판별 시스템이 반복되는 템플릿 구조를 잡아내는 상황입니다. 제목 패턴, 문단 길이, 키워드 배치가 글마다 똑같이 반복되면 … Read more

서버 디스크가 로그로 가득 찰 때, logrotate 실전 설정

결론부터 말씀드리면, 서버 디스크가 로그로 가득 차는 문제는 대부분 로테이션 설정이 아예 없거나 잘못돼서 생깁니다. logrotate로 오래된 로그를 주기적으로 압축·삭제하도록 설정만 제대로 해두면 대부분 해결되고, 이미 꽉 찬 경우에도 원인 파일을 찾아 강제로 로테이션을 돌리면 당장의 급한 불은 끌 수 있습니다. 이 글에서는 /etc/logrotate.d에 실제로 넣을 수 있는 설정 예시와, 설정을 바꿔도 디스크 용량이 안 … Read more

LLM 응답에 링크를 인용하라고 했더니 죽은 URL만 나올 때 — 검증 후처리 파이프라인

LLM 응답에 링크를 인용하라고 요청하면 겉보기엔 그럴듯한 주소가 나오지만, 검증 스크립트에 그 URL 10개를 넣고 돌려보면 절반 가까이가 404나 연결 실패로 떨어지는 경우가 흔합니다. GPT 계열이든 Claude 계열이든 실시간 브라우징 기능 없이 순수 생성만 하는 모드에서는, URL도 결국 다음 글자를 예측해서 만든 문자열이기 때문입니다. 이 글에서는 그렇게 만들어진 죽은 링크를 사람이 일일이 클릭해보지 않고 걸러내는 … Read more

파이썬 dataclass와 pydantic, 실무에서는 이렇게 나눠 쓰세요

파이썬 dataclass와 pydantic 중 무엇을 쓸지는 “이 데이터가 외부에서 들어오는가”로 갈립니다. 내 코드 안에서만 도는 값을 담는 그릇이라면 dataclass로 충분하고, API 요청이나 설정 파일처럼 신뢰할 수 없는 입력을 받는다면 pydantic이 훨씬 안전합니다. 두 라이브러리는 클래스 정의 문법이 비슷해서 자주 헷갈리지만, 실제로 하는 일은 상당히 다릅니다. dataclass와 pydantic, 겉모습은 닮았지만 하는 일이 다릅니다 dataclass는 파이썬 3.7부터 … Read more

자동 등록 봇이 캡차에 막힐 때, 우회 대신 써야 할 대응 전략

자동 등록 봇이 캡차에 막히면 우회 스크립트를 붙이는 쪽보다 캡차가 뜨는 빈도 자체를 줄이고, 막혔을 때 사람이 바로 개입할 수 있는 구조를 만드는 쪽이 훨씬 오래갑니다. 우회 도구는 당장은 통과하는 것처럼 보여도 탐지 로직이 업데이트되면 다시 막히고, 계정 정지까지 이어지는 경우가 적지 않습니다. 이 글에서는 우회를 시도하지 않으면서 자동 등록 프로세스를 안정적으로 운영하는 방법을 실제 … Read more

LLM API 키가 유출됐을 때, 로테이션과 사용량 이상 탐지부터 챙기세요

LLM API 키가 유출됐을 때 뭐부터 해야 하는지 궁금해서 검색하셨다면, 순서는 이렇습니다. 노출된 키를 공급자 대시보드에서 즉시 폐기하고, 새 키를 발급해 서비스에 반영한 다음, 유출됐을 것으로 추정되는 시점 이후의 사용량 로그를 훑어 이상 호출이 있었는지 확인하는 순서입니다. 이 글은 OpenAI, Anthropic, Google Gemini(Google Cloud)처럼 REST API 키 방식을 쓰는 클라우드 LLM 서비스를 기준으로 설명합니다. vLLM이나 … Read more

Nginx에서 413 Request Entity Too Large 뜰 때, 어디를 얼마나 올려야 할까요

Nginx 기본 설정값인 client_max_body_size는 딱 1m로 잡혀 있습니다. 그래서 1MB를 살짝 넘는 이미지 파일 하나만 올려도 Nginx에서 413 Request Entity Too Large가 그대로 뜹니다. 결론부터 정리하면, 이 값은 http, server, location 세 곳 중 아무 데나 넣는다고 되는 게 아니라 업로드가 실제로 필요한 범위에 맞춰 넣어야 하고, 값도 무작정 키우기보다 실제 최대 업로드 용량보다 살짝 … Read more

파이썬 데코레이터로 재시도 로직 짜는 법, tenacity 실전 설정

결론부터 말씀드리면, 파이썬 데코레이터로 재시도 로직을 직접 만들기보다 tenacity 라이브러리를 쓰는 편이 훨씬 안전합니다. 지수 백오프, 예외 필터링, 재시도 로깅까지 옵션 몇 줄로 끝나고, 직접 짠 재시도 로직에서 흔히 나는 버그(무한 루프, 예외 삼킴, 스레드 폭주)를 피할 수 있기 때문입니다. 이 글에서는 @retry 데코레이터를 실전에 쓸 때 꼭 챙겨야 할 설정과, 반대로 재시도를 걸면 안 … Read more

LLM 프롬프트에 few-shot 예시를 넣을수록 느려지는 이유와 손익 계산

결론부터 말씀드리면, LLM 프롬프트에 few-shot 예시를 넣을수록 느려지는 이유는 간단합니다. 예시 하나하나가 모델이 실제로 읽어야 하는 입력 토큰으로 그대로 쌓이기 때문입니다. 예시를 넣을수록 형식 준수율과 답변 일관성은 좋아지지만, 그만큼 입력 시퀀스가 길어지면서 처리 시간과 비용이 함께 늘어납니다. 이 글은 OpenAI Chat Completions API(gpt-4, gpt-3.5-turbo 계열, cl100k_base 토크나이저 기준)와 Anthropic Claude API의 프롬프트 캐싱 기능을 기준으로 … Read more

크롤러가 같은 페이지를 중복 수집할 때 — URL 정규화로 막기

이 글에서는 크롤러가 같은 페이지를 반복해서 긁어오는 원인을 짚어보고, 파이썬 표준 라이브러리만으로 URL을 정규화해 중복 수집을 막는 코드를 실제로 확인하실 수 있어요. 핵심은 간단합니다. urllib.parse로 URL을 쪼갠 뒤 대소문자·포트·트레일링 슬래시·쿼리 파라미터 순서를 하나의 기준으로 통일하고, 그 결과 문자열을 집합(set)에 저장해서 이미 방문한 URL인지 검사하면 됩니다. 다만 쿼리 파라미터가 실제로 다른 콘텐츠를 구분하는 경우엔 이 규칙을 … Read more