기상청 초단기예보와 체감온도 계산 — 날씨로 메뉴 추천하기 (C# BackgroundService)
기온 12℃ 는 쌀쌀한가? 숫자 하나로는 답이 안 나왔다. 앞으로 6시간을 주는 초단기예보를 단기예보 위에 겹치고, 끼니 시간의 기온과 바람으로 기상청 체감온도를 계산하고, 어제와 비교하고, 계절까지 보정해서 식단서랍이 '국물이 당기는 날'을 고르는 방식을 정리했다. 요청마다 기상청을 부르지 않는 백그라운드 갱신 구조도 함께.
애드소프트 기술블로그
애드소프트 박재호입니다. IIS·ASP.NET 웹 서비스와 메일서버를 직접 운영하고, Unity 게임과 데스크톱 앱을 만들며 겪은 문제와 해결 과정을 기록합니다.
기온 12℃ 는 쌀쌀한가? 숫자 하나로는 답이 안 나왔다. 앞으로 6시간을 주는 초단기예보를 단기예보 위에 겹치고, 끼니 시간의 기온과 바람으로 기상청 체감온도를 계산하고, 어제와 비교하고, 계절까지 보정해서 식단서랍이 '국물이 당기는 날'을 고르는 방식을 정리했다. 요청마다 기상청을 부르지 않는 백그라운드 갱신 구조도 함께.
기상청 단기예보는 위도·경도가 아니라 5km 격자 번호 nx, ny 로 묻는다. 활용가이드의 람베르트 정각원추 변환식을 C# 으로 옮겨 시·도 대표 지점으로 검증하고, 사용자 위치를 받지 않기로 한 이유, 944줄짜리 세로 목록을 시각별 날씨로 펼치며 만난 '강수없음'·'1mm 미만' 같은 값까지 정리했다.
활용 신청을 마친 키로 기상청 단기예보를 불렀더니 403 SERVICE_KEY_IS_NOT_REGISTERED_ERROR 가 돌아왔다. 키는 맞았고, 한 번 더 인코딩한 것이 문제였다. 서비스 키 인코딩, 발표 시각 base_time 고르기, HTTP 200 안에 숨어 오는 resultCode 10·03 까지, 식단서랍에 날씨를 붙이며 확인한 것들을 C# 코드로 정리했다.
TestFlight 업로드가 성공했다는 메시지를 보고 반은 끝났다고 생각했다. App Store Connect 에는 연령 등급 설문, 앱이 수집하는 개인정보 신고, 6.9형 스크린샷, 빌드 선택이 줄지어 기다리고 있었다. 내부 테스트와 심사의 경계부터 심사 제출 버튼 앞까지 채운 칸들, 그리고 아직 심사 전인 지금의 이야기로 연재를 마친다.
식단서랍 웹에는 이메일 가입과 카카오 로그인이 있다. 그대로 아이폰 앱에 담으면 App Store 가이드라인 4.8 에 걸린다. 서버에 Sign in with Apple 을 넣고, Apple 이 form_post 로 돌아오는 웹 흐름을 WKWebView 안에서 끝까지 이어지게 하고, 내친김에 카카오 쪽에서 연결이 끊길 때의 처리까지 붙였다.
Kings Online Security(KOSSvc.exe, KOSinj.exe)는 킹스정보통신의 키보드 보안 프로그램이다. 이 PC 에서는 프로그램 폴더도 서비스도 앱 목록 항목도 이미 사라졌는데, 들어오고 나가는 연결을 모두 허용하는 방화벽 규칙 6개와 20년짜리 Local Root CA, 빈 레지스트리 키가 남아 있었다. 무엇이 남는지, 왜 신경 써야 하는지, 직접 정리하는 방법을 적었다.
작업 관리자의 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, 지우는 방법을 정리했다.
작업 관리자의 UniCRSLocalServer.exe 와 CCDaemon.exe 는 한국전자인증(CrossCert)의 "CROSSCERT UniCRSV3" 다. 서비스 없이 Run 키 세 개로 뜨고, CCDaemon 이 로컬 서버를 띄우며, 0.0.0.0:15018 에서 연결을 받고 방화벽 허용 규칙도 있다. 폴더 안의 OpenSSL 1.0.2a, 그대로 남은 설치 파일, 지우는 방법을 정리했다.
작업 관리자의 kpmcnt.exe 와 kpmsvc.exe 는 한국정보인증(KICA)의 프로그램이고, 설치된 앱 목록에서는 SecuKit NXS 라는 다른 이름으로 보인다. 서비스 KicaPMSvc 가 kpmcnt.exe 를 띄우고 다시 살리는 구조, 127.0.0.1:14315, 2016년에 만들어진 KICA NXS Root CA, 이름이 세 갈래라 지울 때 헷갈리는 점을 정리했다.
작업 관리자의 SKCertService.exe 와 SignKoreaWD.exe 는 코스콤의 "SignKorea NA Certification Toolkit" 이다. 증권사 사이트가 공동인증서 서명용으로 설치를 요구하는 프로그램으로, 서비스가 프로세스를 지켜보며 띄우고 127.0.0.1:14098 에서 https 로 답한다. 실제 PC 에서 본 구조, 1년짜리 루트 인증서, 알려진 취약점과 지우는 방법을 정리했다.