내가 쓰려고 만든 맥OS 한글 자소분리 현상 자동변환 프로그램 (NFD -> NFC)
협업하면서 소소하지만 치명적이게 불편한 점이 있었습니다.
배경
동업자는 윈도우만 사용하고, 윈도우에 익숙하신 분입니다. 하지만 개발을 하려면 어쩔 수 없이 mac 과 친해야 하죠.
그래서 mac 을 쓰는 제가 Windows 를 사용하는 동업자와 겪게 되는 문제가 있습니다. 바로 자소분리 현상입니다.
Apple 에서는 유니코드 인코딩을 NFD 방식을 채택하고 있습니다.
NFD (Normalize Form D)
NFD는 모든 음절을 Canonical Decomposition(정준 분해)하여 한글 자모 코드를 이용하여 저장하는 방식이다. 즉,
각을ㄱ+ㅏ+ㄱ로 저장하는 방식이다. 이 방식은 현대 한글과 옛 한글을 동일한 방식으로 저장한다는 장점이 있지만 NFC 방식과 비교하여 텍스트의 크기가 커진다는 문제가 있다.
그리고 대부분의 소프트웨어들과 MS 에서는 NFC 를 채택했죠.
NFC (Normalize Form C)
NFC는 모든 음절을 Canonical Decomposition(정준 분해) 후 Canonical Composition(정준 결합) 하는 방식이다. 즉,
각을각이라는 하나의 문자로 저장하는 방식이다. 이 방식을 사용하면 NFD 방식보다 텍스트의 사이즈는 작아지게 된다. 하지만, 옛 한글 자모의 결합으로 이루어진 한글 음절 코드가 없으므로 이 음절은 Canonical Composition 하지 못하므로 자소가 분리된 체로 저장하게 된다. 이로 인해, 현대 한글과 옛 한글이 다른 방식으로 저장되므로 텍스트를 처리할 때 유의해야 한다.
NFD는 음절을 분리해서 저장하다 보니 한글을 작성하게 되면
이렇게 됩니다. 라고 쓴 것을
이것을 NFC 만 지원하는 윈도우에서 읽었을 때
ㅇㅣㄹㅓㅎㄱㅔㄷㅗㅣㅂㄴㅣㄷㅏ.
때문에 웹하드 또는 같은폴더 내에서 작업한다면 겪는 꽤나 골치 아픈 문제입니다.
이 쯤되면 Apple 이던 MS 던 해결해주지 않을까 싶지만 10년이 넘은 유서깊은 버그입니다. 자존심 싸움이 아닐까 싶을 정도로 해결해주지 않아요.
기존 솔루션
그래서 유저들이 울며 겨자먹기로 어떻게든 해결하고 있는데

김남호님의 Contact 를 활용해서 해결하거나 반디네이머를 활용하여 해결합니다.
기존 솔루션의 문제점
하지만 문제가 있어요. 귀찮습니다.
mac 에서 작업을 하면 자연스럽게 계속해서 NFD 파일들이 생겨나는데 이것을 OneDrive 나 Google Drive 와 같은 서비스를 통해 윈도우 사용자와 같은 폴더를 공유하게 되면 문제가 생깁니다.
윈도우에서는 계속해서 깨진 파일명을 보게 되고 NFC 로 고쳐서 올리더라도 mac 에서 수정하거나 파일을 추가하면 mac이 다시 NFD 로 바꿔놓습니다.
매번 바꾸는 작업을 진행하는 것은 너~무도 귀찮은 일이기 때문에
해결책

Release 0.0.1 · hsol/jaso
그래서 만들었습니다.
폴더를 한번 지정해 놓으면 해당 폴더에서 자소분리가 일어나지 않도록 NFC 를 유지해주는 자동변환 앱입니다.
스토어를 통해 배포하는게 아닌 이런식으로 공유하는 이유는, 배포 가능한 형태로 mac OSX 앱을 만들지 않았기 때문입니다.
저야 그냥 빌드해서 사용하면 되는데 비개발자 분들이 사용하기는 어려울 것 같아요(물론 mac 을 쓰는데 비개발자인 분이 많을까 싶긴 합니다)
하지만 저는 이미 목적을 이뤘고, 더 이상 여기에 직접적인 시간은 쓰지 않으려 합니다.
그래서 이 뒤는 오픈소스 커뮤니티에 맡겨봅니다. 이 서비스가 필요하다면 쓰시면서 개선해 주시겠죠 😀
mac 폴더/파일명 자소분리 자동 방지 솔루션
댓글
로그인 후 댓글을 남길 수 있습니다.
오! 매번 스크립트로 실행하는 방식 매우 불편해서 그냥 깨진 채로 살았는데 🤣 다운로드 폴더에만 설정해놔도 유용할 것 같네요. 좋아요!!
저도 개발자로 일할 때는 그냥 깨진 채로 살았는데 🤣 창업하고 공기관 문서 쓰거나 윈도우 사용자와 협업하는 경우들이 많이 생기더라고요~ 댓글 감사합니다!
너무 유용합니다 ... 혹시 제가 풀리퀘스트 올려봐도 괜찮을까요? 많은 사용자에게 실제로 도움될 수 있는 서비스에 오픈소스로 기여하는 경험을 해보고 싶어 여쭤봅니다 🙌
당연히 가능하고, 오히려 두손들어 환영입니다!! 감사합니다ㅎㅎㅎ
https://www.inflearn.com/projects/1396185 혹시 함께하시겠어요...?
한솔님 메이커로그가 디스콰이엇 뉴스레터에 소개되었어요 :) https://stib.ee/NluC
https://www.inflearn.com/projects/1396185 잊고 있었는데 부활시켜봅니다
어디선가 본적이있는 프로젝트이던데, 프로젝트리더가 여기계셨었군요~ 화이팅!!
혹시 패키징 비용에 대해 펀딩 해보시는 것은 어떨까요? 구글 드라이브로 맥과 윈도우를 오가며 문서 작업을 하다보니, 앱 배포를 간절히 기다리고 있습니다 😃
비용이 없어서라기보단 맥OS 유틸리티 개발자가 귀해서그런것 같습니다ㅋㅋㅋ https://disquiet.io/log/%EB%A7%A5%EC%97%90%EC%84%9C-%EC%9E%90%EC%9D%8C-%EB%AA%A8%EC%9D%8C-%EC%AA%BC%EA%B0%9C%EC%A7%80%EB%8A%94%EA%B2%83-%ED%95%B4%EA%B2%B0%ED%95%98%EB%8A%94-%EC%9C%A0%ED%8B%B8-%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85-%EC%84%9C%EB%A5%98%EC%93%B0%EB%8B%A4%EA%B0%80-%ED%99%94%EA%B0%80%EB%82%98%EC%84%9C-%EB%8B%A4%EC%8B%9C-%EC%BC%9C%EA%B3%A0-%EC%86%90%EC%A2%80 업데이트 있으니 한번 확인해보셔요~ 이번에도 배포는 못했지만 이번 버전은 비개발자 분들도 한번 트라이해볼 수 있지 않을까 싶습니다ㅎㅎ
convmv -r -f utf-8 -t utf-8 --nfc --notest .