요즘 같은 시대에 컴퓨터 활용 능력은 아무리 강조해도 부족하지 않을 것 같습니다. 최근에는 많은 아이들이 코딩 교육을 받고 있고 점점 소프트웨어 교육이 의무화 되고 있습니다. 4차 산업 혁명이라는 말은 이제 들어 본지 꽤 오래된 것 같고 아직까지는 생활 속에서 4차 산업 혁명으로 인한 변화가 그리 크지 않아 보이지만 어느 순간이 되면 급격하게 세상이 달라질 거라고 생각합니다. 개인적으로는 4차 산업혁명 시대에는 극단적인 생산성 향상이 일어나는 시대가 될 거라고 생각합니다. 이런 시대에 기계와 대화를 하는 기술인 소프트웨어를 모른다면 경쟁력이 떨어지는 것은 불 보듯 뻔하다고 생각합니다.

드루킹 사건이나 최근에는 한나라당 매크로 사용 뉴스 등으로 인하여 요즘 많은 분들이 매크로에 대해서 많이들 들어 보셨을텐데 매크로란 일련의 작업을 자동화하는 소프트웨어 이고 좋은 의도로 사용한다면 굉장히 크게 자신의 업무 효율을 높일 수가 있습니다. 윈도우에서 사용가능한 대표적인 매크로 프로그램으로는 Autohotkey 나 AutoIt 과 같은 프로그램들이 있습니다.

저는 Autohotkey 를 굉장히 많이 사용하는 편인데 Autohotkey 는 단순히 매크로로만 치부하기에는 너무나 다재 다능한 컴퓨터 언어라고 볼 수 있을 것 같습니다. Autohotkey 를 사용하기 위한 공부는 다른 컴퓨터 언어에 비해서 비교적 쉬운 편이지만 그래도 아무것도 모르는 상태에서 공부를 하는 경우 시간이 꽤 걸릴 거라고 생각합니다. 이런 경우에는 프로그래밍을 조금 더 쉽게 해주는 도구들을 사용하는 것도 좋을 것 같네요.

그중에서 Autohotkey 를 조금 더 쉽게 사용할 수 있게 해주는 도구로써 Pulover's Macro Creator 를 추천드립니다. Autohotkey 를 처음 사용하는 경우 아래 주소의 AutoHotkey Beginner Tutorial 을 따라해 보는 것을 추천드리고

https://autohotkey.com/docs/Tutorial.htm

Autohotkey 의 기본 사용법을 공부한 이후에 Pulover's Macro Creator 를 사용해 보라고 권해 드리고 싶습니다. Pulover's Macro Creator 는 다음과 같이 생겼습니다. 처음에 보면 조금 복잡해 보이지만 시간의 여유를 가지고 조금씩 습득해 보신다면 어떤 프로그램 보다도 생산성 향상에 큰 도움이 될 것입니다.

저는 아래 포스팅에서 이미지서치 와 관련된 내용에 대해서 소개를 했었는데 이미지의 중간 지점을 클릭 하기 위한 함수인 CenterImgSrchCoords() 함수를 Pulover's Macro Creator 를 사용하면서 알게 되었습니다.

http://iamaman.tistory.com/2111

Pulover's Macro Creator 의 홈페이지는 아래 주소와 같고 download 페이지에서 Pulover's Macro Creator 프로그램을 다운로드할 수 있습니다.

http://www.macrocreator.com/

http://www.macrocreator.com/download/

그리고 위의 홈페이지에서 Help & Tutorials 메뉴를 클릭 해서 보시면 Pulover's Macro Creator 의 사용 방법에 대한 개발자의 동영상 강좌를 보실 수가 있습니다.

http://www.macrocreator.com/help/

많이 사용하시는 마이크로소프트 오피스 제품 중에서 워드나 엑셀에 대한 자동화 등을 배울 수 있고 이미지서치 등을 통해서 웹을 어떻게 자동화 하는지도 배울 수 있습니다. 위 주소에서 나오는 동영상에 나오는 기술들만 제대로 습득 한다면 윈도우 사용 과정에서의 대부분의 것들은 자동화 할수 있을 것이라고 생각합니다.



  1. jetree 2018.09.27 19:58

    좋은 글 잘 보고 있어요. 강좌들 고맙습니다. 그런데, CenterImgSrchCoords 의 경우 Pulover's macro creator외에 사용할 경우 에러가 발생하네요.

    오토핫키 포럼에서 찾아보니
    If you know what's the meaning of "CenterImgSrchCoords()",pls tell us to help you further.라고 하네요.

    macro creator에서만 사용가능한 것인지 궁금합니다.

    • 남성 2018.09.27 21:40 신고

      코드 생성해서 함수를 확인해 보면 일반적인 Autohotkey 코드로 되어 있으므로 툴 디펜던트한 코드는 아닙니다. 저도 macro creator 아닌데서도 잘 사용하고 있구요.

  2. 뚜두 2019.03.26 12:17

    pmc(pulover's macro creator)가 오토핫키 언어로 이루어져있다고하던데 그럼 pmc에서 나오는 소스코드를 오토핫키에 그대로 복사해서 실행하면 실행가능한가요?
    컴파일해서 사용하고싶은데 pmc는 컴파일을 지원하지 않는거같아서요 ㅠㅠ

    • 남성 2019.03.26 13:22 신고

      Pulover's Macro Creator 에 ahk 로 내보내기 해서 사용하면 됩니다.

    • 뚜두 2019.03.26 13:28

      그럼제가 이미지서치 이용하는데 스크린샷은 그대로 두어도 되는건가요?
      ahk로 내보내기 하는 방법도 알려주시면 감사하겠습니다 ㅠㅠ

    • 남성 2019.03.26 21:59 신고

      file 메뉴 보면 export to AHK 라고 있습니다.

Autohotkey에서 DTW(Dynamic Time Warping) 를 사용한 글자 매칭


Autohotkey 는 간단한 단축키 활용에 쓰기 좋지만 복잡한 알고리즘 들도 만들어 사용하기 편리 합니다. 

우리가 프로그래밍 시에 사용하는 웬만한 데이터 타입들은 대부분 제공을 해 주고 Class 등도 만들 수도 있으니

프로그래밍 언어로 사용하지 않을 이유가 없는거죠.


요즘 저는 영어 단어에서 틀린 글자가 있는지 찾는 작업을 하고 있습니다. 


예를 들어 Autohotkey 라는 단어가 맞는 표현인데 Autuhotkey, autohutky 와 같이 잘못 씌여진 경우에 대해 찾아보는 작업 입니다.


Autohotkey, Autoit, Python, Powershell, Ruby 와 같은 단어가 정상적인 단어의 세트라고 할때


위 단어 셋트 중에 Autuhotkey 라고 잘못 쓴 단어가 어떤 단어와 얼마나 유사한지를 확인해 보고 싶은 겁니다.


이를 위해 패턴인식 책에 있는 알고리즘 중 DTW(Dynamic Time Warping)을 적용해 봐야 겠다고 생각 했습니다.


DTW(Dynamic Time Warping) 는 시계열 데이터 즉, 순서가 있는 데이터의 유사성을 측정하는 알고리즘입니다. 


https://en.wikipedia.org/wiki/Dynamic_time_warping


우리가 사용하는 단어도 사실은 순서가 매우 중요하죠. 


Autohotkey 라는 단어와 Atuoohtkey 라는 단어는 글자수나 그 구성된 알파벳은 같지만 엄밀히 다른 단어라고 볼 수 있습니다. Atuoohtkey 는 Autohotkey 를 잘못 타이핑 했을 가능성이 높은 단어인 거죠.


인간이 타이핑을 하다보면 이렇게 오타를 내는 경우는 비일 비재 하고 이런 오타들을 DTW와 같은 알고리즘을 이용해서 찾을 수 있을 거라고 생각 했습니다. 


이 이외에도 언듯 생각할 수 있는 분야는 다운로드 받은 드라마를 폴더 별로 정리한다던지 하는 등의 분류 작업 들입니다.


DTW 에 대한 공부를 위해 아래 웹 페이지들을 참조했고, 


http://www.speech.zone/exercises/dtw-in-python/


https://nipunbatra.github.io/blog/2014/dtw.html


http://www.smallake.kr/?p=17918


https://jeremykun.com/2012/07/25/dynamic-time-warping/


유사한 단어를 찾는 것이므로 dtw 의 Backtracking  과정은 생각 했습니다.


결과적으로 다음과 같은 dtw(ByRef testV) 함수를 만들 수 있었고 코드는 아래와  같습니다. 

reference 로 할 단어의 셋은 아래와 같이 설정했고~ 

refArray := ["Autohotkey", "Autoit", "Python", "Powershell", "Ruby"]


각 단어들을 dtw 알고리즘을 사용하여 어떤 단어와 가장 유사한가를 추천 받을 수 있습니다. 

아래와 같이 실행하면 

dtw("Autuhotkey")

dtw("autohutky")

dtw("Pithon")


각 단어들이 다음과 같이 어떤 reference 단어 셋과 일치하는 지를 확인 할 수 있습니다. 


+ Recent posts