본문 바로가기

OS/Windows

한글 자소 교정기 업데이트를 하면서...

제목이 (2) 인 이유는 같은 제목으로 전에 쓴 적이 있기 때문이다.


그 당시 자소 풀림 검출 및 보정하는 알고리즘을 C++로 통째로 만들었다. 사실 그 당시에도 NormalizeString 함수를 지원을 했었다.

다만,  Windows XP를 사용하던 시절에 만들었고, Windows SDK에서 지원하는 최소 스펙이 Windows Vista였기 때문에 (사실 XP에서도 마이그레이션 API와 DLL을 설치하면 되기는 했다. 아래 그림) 별도의 마이그레이션 라이브러리를 설치하는 것은 번거로울 것으로 생각했다.


하지만 XP 종료가 이루어진 지금은 심지어 라이브러리 마이그레이션 링크가 끊어져서 다운로드가 되지 않는다.


2010년 ~ 2011년에 걸쳐 수정했던 프로그램은 내 기억 속에서 잊혀지게 되었다.

내가 더 이상 쓸 일이 없었기 때문이다. 왜냐하면 집에서는 2006년 부터 iMac을 써왔는데 회사에서 풀어지는 현상을 발견했고 불편해서 만들었는데, 윈도우를 쓰는 환경이 더 이상 없어졌기 때문이다.


하지만 시간이 흘러 윈도우 10이 주류(?)를 이루는 시대가 되었고 그 당시 만든 바이너리가 잘 작동하지 않음을 알게 되었다.

그리고 또 다시 이직한 회사에서 윈도우 탐색기에서 풀린 한글을 지나가다가 보게 되었다. (그분은 불편하지 않았을까?)



이전 소스코드 찾기

벌써 8년전 일이라 만들었다라는 기억만 있지 알고리즘이라 던 것은 기억에 저편에 있다.

우선 소스코드를 찾는 일 부터 진행했다. 다행히 데이터 디스크에 있었다.

하지만 윈도우 개발 환경이 되어 있지 않았다. 어느샌가 마이크로 소프트는 Visual Studio Community라는 무료 IDE 툴을 내놓았다. (언제 부터 대인배가 되었지?)

하지만 SDK 버전이 상이했고 C++ 문법도 바뀌었는지 컴파일이 되지 않았다.



닷넷으로 이주

닷넷 프레임워크는 2.0 부터 String 클래스에 Normalize 메서드를 지원하고 있었다.
2010년에는 닷넷 프레임워크가 없는 경우도 다반사여서 닷넷 기반의 데스크탑 애플리케이션을 염두하지 않았다.
그래서 Windows API (SDK) 기반에서 WTL 8.0 기반으로 윈도우 데스크탑 애플리케이션을 만들었다.

이젠 왠만해서 닷넷 프레임워크를 기본적으로 윈도우가 설치해놓고 있기 때문에 별도의 런타임 환경 라이브러리를 설치할 일이 적어졌다고 판단했다.

Windows 10에서 테스트

이전에 자소가 풀어진 샘플을 테스트 해보았는데, 압축 파일이 제대로 작동을 하지 않는지 macOS에서 조차 풀어져서 보였다.

문제가 되는 것은 macOS 에서는 제대로 보이는데 Windows에서만 풀어져 보이는 경우이기 때문이다.


다행히 아직 이 현상은 해결이 되지 않았는지 쉽게 재현이 되었다.

한글이 포함된 폴더를 압축해서 압축 파일을 만들고, Gmail에 첨부하여 윈도우에서 다운을 받는다.


브라우저에서 부터 첨부 파일의 이름이 풀어져 보임을 확인 할 수 있었다.

mac OS Chrome

Windows 10 Edge