Node.js에서 .cmd 실행이 EINVAL로 죽을 때 (윈도우)

윈도우에서 Node.js 스크립트로 npm이나 npx를 호출하다가 node spawn EINVAL 에러를 만나면 대부분 당황합니다. 코드를 한 줄도 고치지 않았는데, Node 버전을 올린 다음부터 갑자기 죽기 때문입니다. 저도 자동 발행 스크립트에서 이걸 만나 30분 넘게 오타를 찾았습니다. 원인은 오타가 아니라 Node 자체의 보안 패치였습니다. 이 글에서는 왜 이런 일이 생기는지, 그리고 상황별로 어떤 해결책을 골라야 하는지 정리합니다. … 더 읽기

작업 스케줄러는 “성공”인데 아무 일도 안 일어났을 때

작업 스케줄러는 “성공”인데 아무 일도 안 일어났을 때

윈도우 작업 스케줄러를 열어 보면 마지막 실행 결과: 0x0 (작업이 완료되었습니다)라고 적혀 있습니다. 그런데 만들어졌어야 할 파일이 없습니다. 보내졌어야 할 메일이 없습니다. 심지어 스크립트가 제일 먼저 만드는 로그 폴더조차 생기지 않았습니다. 작업 스케줄러가 성공이라는데 실행이 안 된 것처럼 보이는, 가장 짜증나는 종류의 고장입니다. 저도 매일 아침 9시에 도는 자동화에서 이걸 겪었습니다. 스케줄러 기록에는 8월 14일 … 더 읽기

SSL 인증서 오류(CERTIFICATE_VERIFY_FAILED) 해결 총정리 — verify=False가 답이 아닌 이유

SSL 인증서 오류(CERTIFICATE_VERIFY_FAILED) 해결 총정리 — verify=False가 답이 아닌 이유

어제까지 잘 돌던 수집 스크립트가 오늘 아침에만 CERTIFICATE_VERIFY_FAILED를 뱉고 멈춰 있습니다. 브라우저로 같은 주소를 열어보면 자물쇠 아이콘까지 멀쩡한데, 파이썬에서만 안 됩니다. 이 SSL 인증서 오류는 검색하면 verify=False 한 줄이 제일 먼저 나오고, 실제로 그걸 붙이면 당장은 돌아갑니다. 그래서 대부분 거기서 끝내는데, 그 한 줄이 나중에 어떤 비용으로 돌아오는지는 잘 안 알려져 있습니다. 이번 글에서는 이 … 더 읽기

파일 경로 오류(FileNotFoundError) 해결 총정리 — 상대경로·공백·백슬래시

분명 파일은 그 자리에 있는데 스크립트는 없다고 합니다. 파일 경로 오류는 입문자가 가장 자주 만나는 오류이면서, 동시에 경력이 쌓여도 환경이 바뀔 때마다 다시 만나는 오류입니다. 어제까지 잘 돌던 스크립트가 작업 스케줄러에 등록하자마자 FileNotFoundError를 뱉는 상황이 대표적입니다. 한 번 막히면 보통 20~30분은 날아가는데, 원인은 대부분 네댓 가지 중 하나입니다. 이 글에서는 그 원인을 증상별로 갈라내는 법과, … 더 읽기

포트 충돌(이미 사용 중인 포트) 오류 해결하기

포트 충돌(이미 사용 중인 포트) 오류 해결하기

서버를 띄우려는데 EADDRINUSE 한 줄과 함께 프로세스가 죽습니다. 어제까지 잘 되던 3000번 포트가 오늘은 이미 쓰이고 있다고 합니다. 포트 충돌 해결은 대부분 3분이면 끝나는 일인데, 방법을 모르면 컴퓨터를 재부팅하는 것으로 마무리하게 됩니다. 하루에 한두 번씩 개발 서버를 재시작하는 사람이라면 이 재부팅 습관만으로 한 달에 두세 시간이 사라집니다. 이 글에서는 어떤 프로세스가 포트를 물고 있는지 찾는 … 더 읽기

한글 깨짐 오류 해결 총정리 — CP949와 UTF-8, BOM까지

한글 깨짐 오류 해결 총정리 — CP949와 UTF-8, BOM까지

분명히 잘 저장한 파일인데 열어 보면 占쏙옙이나 ¾È³çÇϼ¼¿ä 같은 글자가 늘어서 있습니다. 파이썬을 돌리면 UnicodeDecodeError가 나고, 엑셀로 CSV를 열면 이름 칸이 통째로 외계어가 됩니다. 윈도우에서 개발하는 국내 사용자라면 한 번쯤은 겪는 한글 깨짐 인코딩 오류입니다. 짜증나는 건 매번 다른 증상으로 나타나서, 지난번에 통했던 방법이 이번엔 안 듣는다는 점입니다. 이 글에서는 증상만 보고 원인을 역추적하는 방법과, … 더 읽기

웹사이트 크롤링 시 403 Forbidden 오류 해결법

웹사이트 크롤링 시 403 Forbidden 오류 해결법

브라우저 주소창에 붙여 넣으면 멀쩡히 열리는 페이지가, 파이썬으로 요청하면 403 Forbidden을 뱉습니다. 코드는 다섯 줄뿐이라 틀릴 데도 없어 보이는데 말이죠. 이 지점에서 검색만 반복하다 두세 시간을 날리는 경우가 많습니다. 크롤링 403 오류 해결이 어려운 이유는 원인이 하나가 아니라 다섯 가지쯤 되는데, 서버는 그중 무엇이 문제인지 알려주지 않기 때문입니다. 이 글에서는 원인을 좁히는 순서와, 단계별로 그대로 … 더 읽기

pip install 오류 해결 총정리 (권한/버전 충돌 등)

pip install 오류 해결 총정리 (권한/버전 충돌 등)

파이썬으로 자동화 스크립트를 하나 돌려보려다가 pip install 한 줄에서 30분을 날려본 적 있으실 겁니다. 권한 거부, 버전 충돌, 빌드 실패, SSL 오류까지 메시지는 매번 다른데 검색해서 나오는 답은 “관리자 권한으로 실행하세요” 같은 위험한 조언인 경우가 많습니다. 이 글에서는 pip install 오류 해결을 유형별로 정리합니다. 에러 메시지를 보고 어느 갈래인지 3초 안에 판단해서, 그에 맞는 명령 … 더 읽기

API 요청 시 자주 만나는 오류코드(401/403/429) 정리

API 요청 시 자주 만나는 오류코드(401/403/429) 정리

어제까지 잘 돌던 스크립트가 오늘 아침에 갑자기 멈춰 있습니다. 로그를 열어보면 401 Unauthorized 한 줄이 전부입니다. 토큰을 새로 발급받아 넣어봐도 그대로고, 검색해보면 “인증 정보를 확인하세요”라는 하나 마나 한 답변만 나옵니다. API 오류코드 정리가 필요한 이유가 여기 있습니다. 세 자리 숫자는 생각보다 많은 정보를 담고 있고, 그 의미를 정확히 알면 확인해야 할 범위가 절반 이하로 줄어듭니다. … 더 읽기

크론잡/스케줄러가 실행되지 않을 때 체크리스트

크론잡/스케줄러가 실행되지 않을 때 체크리스트

터미널에서 직접 실행하면 멀쩡히 돌아가는 스크립트가, 크론탭에 등록만 하면 아무 일도 일어나지 않습니다. 에러 메시지도 없고 로그도 안 남습니다. 크론잡 실행 안됨 문제가 특히 골치 아픈 이유는 실패가 조용하기 때문입니다. 백업이 사흘째 안 돌고 있었다는 걸 정작 복구가 필요한 날에야 알게 되는 식이죠. 이 글에서는 리눅스 크론과 윈도우 작업 스케줄러 양쪽에서, 원인을 좁혀 나가는 순서를 … 더 읽기