본문 바로가기
아래아한글 자동화/python+hwp 중급

[hwpx 분석하기] HDMI 시리즈를 시작하며

by 일코 2022. 12. 7.

잠시 과거회상

업무자동화 공부를 시작한지도 벌써 6년이 넘었습니다.

사실 업무 중에 가장 많은 시간을 썼던 코드는 아래아한글이 아니라

파이썬-셀레늄으로 브라우저(회사 그룹웨어) 작업을 자동화하는 거였어요.

이게 나름 해킹하는 느낌의 재미가 있어서 파고들게 되었습니다.

해킹이라는 표현은 좀 오바 같지만,

공기업의 그룹웨어가 이렇게 취약점이 많을 줄은 몰랐거든요.

재직 당시 보안팀에 제보했던 수십 개의 취약점 중에 굵직한 걸 꼽으라면

그룹웨어 로그인 비밀번호 입력 무력화,

로그인할 때 휴대폰 2차인증 패스,

다른 사우 사번으로 그룹웨어 및 메신저 로그인하기,

타 부서 기록물, 비공개문서 열람하기,

비밀번호 "1"로 바꾸기  등등

서비스 대부분이 주로 클라이언트 측에서 자바스크립트로 이뤄지는 구조라서

소스코드만 읽다 보면 취약점이 쉽게 발견된다는 점도 있었지만,

당시에는 셀레늄의 편리한 인터페이스에 매료돼서

저도 거의 미쳐 있었던 것 같습니다.

그 당시 회사업무 외의 결과물 중에도

네이버 블로그 자동작성, 티스토리 블로그 자동작성,

쿠팡파트너스 자동 포스팅 및 게시글 수 제한 없이 링크 생성

유료 동영상 강의 다운받기, 휴넷 등 인터넷 강의 자동완강,

캠핑장, 골프장 자동부킹, 다운로드 차단된 공공자료 다운받기,

인터넷익스플로러로 크롬처럼 다운받기 등

나름 유용한 툴도 많이 만들었습니다.

(지금은 대부분 막혔겠지요.)

 

서론이 너무 길었네요. 지금은..

지금은 어디에 집중하고 있냐면,

아래아한글 문서작성 자동화에 아주 푹 빠져 있어요.

돈 한 푼 안 되는 공부라서

당장이라도 그만두고 다른 걸 공부해야겠다는 마음은 드는데

어느 정도 수준을 넘게 되니까..

있잖아요. 테트리스 고인물은 2022년에도 테트리스만 하는 것처럼요.

저도 한/글 자동화에 어느 정도는 중독(?)된 것 같다는 느낌이 들 때도 있어요.

문제가 해결되는 시점의 즐거움이 너무 커서 그간의 고통을 다 보상받는 기분이거든요.

이거 괜찮은 걸까요?ㅜ

 

그리고 최근에

최근에는 한/글에서 제공하는 API만으로는 풀 수 없는 문제들을 몇 개 만났어요.

가장 최근 만난 문제 중 하나가 (아직도 진행중인) 스타일 매칭하기예요.

스타일 템플릿 문서A와 스타일이 임의로 변경된 B문서를 파이썬에 넣고

B의 스타일을 A에 맞춰 수정하고 싶은데

한/글에서 제공하는 스타일 내보내기나,

A의 스타일을 B에 덮어씌우는 스크립트로는 이게 해결되지 않는 거예요..

그 이유가 각 스타일들의 이름이 미묘하게 다른데,

스타일 순서(번호)도 제각각이어서

결국 스타일 이름이 가장 유사한 애들끼리 매칭해서 교정해야 했어요.

(B문서들은 각각 200여 페이지로, 수작업으로는 진행이 어려운 상황이고요.)

 

삽질을 조금 해보다가 이런 생각이 들기 시작했어요.

① 이런 작업이라면, 어느 정도 손으로 B문서들 스타일이름만 조금 손보고 나서 매크로 돌리면 참 쉽겠다?

② 그냥 스타일 다 무시하고, 정규식 조금 써서 글머리 기준으로 서식 맞추면 더 쉽겠다?

③ ...근데 내가 지금 뭐 하고 있는 거지? 여긴 ㅇ.. 나는 ㄴ..

 

근데 갑자기 해결방안이 하나 떠올랐어요!

hwpx로 변환해서 헤더나 세팅 같은 xml을 열어보면

스타일정보 같은 게 고스란히 기록돼 있는 공간이 있지 않을까?

그리고 그 생각이 맞았어요. header.xml 안에 있더라고요.

괜히 hwpx 포맷이 machine-readable이 아니구나!

 

하지만 아무리 업무자동화를 배우고 싶은 사람이라도

요즘은 파이썬 입문자인 회사원들을 대상으로 하는 업무자동화 콘텐츠를 짜고 있는데,

초심자 입장을 자주 생각해야 하는 입장이 되어보니

보통의 회사원이라면, 작은 업무 하나를 자동화하기 위해

정규식이나 xml 파싱 같은 걸 배우고 싶어할 가능성은 거의 없겠다는 생각이 들어요.

반대로 직업이 프로그래머인 사람들이라면, 굳이 내 글을 읽지 않아도

저런 잡기술 같은 건 다들 할 줄 알 테니까...... (혹은 금방 배워버릴테니까)

공유해도 관심갖는 사람이 거의 없겠구나!?

그래서 가벼운 마음으로 새로운 포스팅 시리즈를 시작합니다.

제목은 뭘로 할까?

hwpx 파싱으로 문서 조작하기? Hangul Document Manipulation and Information

이름하여 HDMI!

몇 회나 연재하게 될지는 아직 정하지 않았지만

한글과컴퓨터의 주가 폭등을 간절히 바라는 작은 동학개미로서,

또, machine-readable hwpx의 대유행을 바라는 한컴의 팬으로서, 

self-hypnotized 사명감을 갖고 시작해 보려고 합니다.

많관부!

댓글