애드소프트 기술블로그

개발·서버 운영 실무 기록

애드소프트 박재호입니다. IIS·ASP.NET 웹 서비스와 메일서버를 직접 운영하고, Unity 게임과 데스크톱 앱을 만들며 겪은 문제와 해결 과정을 기록합니다.

최신 글

svchost.exe 가 100개 넘게 떠 있는 이유 — 서비스 호스트, 어떤 서비스인지 찾는 법

작업 관리자의 세부 정보 탭에 svchost.exe 가 101개 있었다. 모두 System32 의 같은 파일이고 Microsoft 서명이 유효했다. 서비스 호스트가 무엇인지, 메모리 3.5GB 를 넘는 PC 에서 서비스가 하나씩 따로 뜨는 이유, tasklist /svc 로 어떤 서비스인지 찾는 법과 CPU 를 먹는 svchost 의 범인을 찾는 순서를 정리했다.

에어코리아 미세먼지 등급과 대기질 예보 API — 1시간·24시간 등급, informGrade 파싱 (C# 예제)

같은 날 서울 미세먼지 예보가 05시엔 좋음, 17시엔 보통이었다. 에어코리아 대기질 예보는 하루 네 번 발표되고 한 번 조회에 모두 섞여 온다. 1시간 등급과 24시간 등급 중 무엇을 보여 줄지, '서울 : 보통,제주 : 좋음' 문자열을 시·도에 맞추는 법, 경기·강원처럼 권역이 둘로 나뉜 곳, 출처와 변경금지 조건을 지키며 화면에 붙이는 방법까지 정리했다.

에어코리아 미세먼지 API — 가까운 측정소 찾기와 실시간 PM10·PM2.5 읽기 (C# 예제)

서울시청에서 가장 가까운 측정소 세 곳 중 두 곳이 도로변 측정소였다. 에어코리아 실시간 대기오염 API 를 붙이며 확인한 것들 — 위도가 dmX 에 들어 있는 측정소 목록, 도시대기 측정소만 고르는 이유, ver=1.3 을 빼면 사라지는 PM2.5, '2026-10-26 24:00' 이라는 시각, '-' 와 통신장애까지 C# 코드로 정리했다.

기상청 초단기예보와 체감온도 계산 — 날씨로 메뉴 추천하기 (C# BackgroundService)

기온 12℃ 는 쌀쌀한가? 숫자 하나로는 답이 안 나왔다. 앞으로 6시간을 주는 초단기예보를 단기예보 위에 겹치고, 끼니 시간의 기온과 바람으로 기상청 체감온도를 계산하고, 어제와 비교하고, 계절까지 보정해서 식단서랍이 '국물이 당기는 날'을 고르는 방식을 정리했다. 요청마다 기상청을 부르지 않는 백그라운드 갱신 구조도 함께.

기상청 격자 좌표 nx, ny 변환 — 위경도 C# 코드와 단기예보 응답 파싱

기상청 단기예보는 위도·경도가 아니라 5km 격자 번호 nx, ny 로 묻는다. 활용가이드의 람베르트 정각원추 변환식을 C# 으로 옮겨 시·도 대표 지점으로 검증하고, 사용자 위치를 받지 않기로 한 이유, 944줄짜리 세로 목록을 시각별 날씨로 펼치며 만난 '강수없음'·'1mm 미만' 같은 값까지 정리했다.

기상청 단기예보 API 첫 호출 — 서비스 키 403, base_time, resultCode 정리 (C# 예제)

활용 신청을 마친 키로 기상청 단기예보를 불렀더니 403 SERVICE_KEY_IS_NOT_REGISTERED_ERROR 가 돌아왔다. 키는 맞았고, 한 번 더 인코딩한 것이 문제였다. 서비스 키 인코딩, 발표 시각 base_time 고르기, HTTP 200 안에 숨어 오는 resultCode 10·03 까지, 식단서랍에 날씨를 붙이며 확인한 것들을 C# 코드로 정리했다.

업로드는 끝났고 빈칸이 남았다 — TestFlight 에서 App Store 심사 제출 앞까지

TestFlight 업로드가 성공했다는 메시지를 보고 반은 끝났다고 생각했다. App Store Connect 에는 연령 등급 설문, 앱이 수집하는 개인정보 신고, 6.9형 스크린샷, 빌드 선택이 줄지어 기다리고 있었다. 내부 테스트와 심사의 경계부터 심사 제출 버튼 앞까지 채운 칸들, 그리고 아직 심사 전인 지금의 이야기로 연재를 마친다.

카카오 로그인 옆에 사과 버튼 — 웹 로그인에 Apple 로그인을 넣고 앱 안에서 열기까지

식단서랍 웹에는 이메일 가입과 카카오 로그인이 있다. 그대로 아이폰 앱에 담으면 App Store 가이드라인 4.8 에 걸린다. 서버에 Sign in with Apple 을 넣고, Apple 이 form_post 로 돌아오는 웹 흐름을 WKWebView 안에서 끝까지 이어지게 하고, 내친김에 카카오 쪽에서 연결이 끊길 때의 처리까지 붙였다.

Kings Online Security 를 지운 뒤 남은 것 — KOSSvc.exe 방화벽 규칙 6개와 Local Root CA 정리하기

Kings Online Security(KOSSvc.exe, KOSinj.exe)는 킹스정보통신의 키보드 보안 프로그램이다. 이 PC 에서는 프로그램 폴더도 서비스도 앱 목록 항목도 이미 사라졌는데, 들어오고 나가는 연결을 모두 허용하는 방화벽 규칙 6개와 20년짜리 Local Root CA, 빈 레지스트리 키가 남아 있었다. 무엇이 남는지, 왜 신경 써야 하는지, 직접 정리하는 방법을 적었다.

ExECM.exe 와 ExEcmInstallerService 는 무엇인가 — CoreB2B ExEcm, 설정은 127.0.0.1 인데 0.0.0.0:18181·18281

작업 관리자의 ExECM.exe 는 CoreB2B ExEcm 1.1.5.4 로, 이노가드 서명이 붙은 .NET 프로그램이다. 서비스 ExEcmInstallerService 가 띄우고, 설정 파일에는 host 127.0.0.1 이라고 적혀 있지만 실제로는 0.0.0.0:18181·18281 에서 연결을 받는다. 설정 파일에 드러난 파일 전송 기능, 2023년에 만들어진 ExEcm-Root-CA, 지우는 방법을 정리했다.