여러분들은 컴퓨터를 사용하면서 어떤 작업을 가장 많이 하시나요? 저는 개인적으로 생각하기에 복사 붙여넣기라고 생각을 합니다. 그래서 복사 붙여넣기를 잘 하는 것만으로도 컴퓨터 사용의 효율성은 분명히 올라간다고 생각합니다. 그래서 저는 아래 포스팅에서 소개를 했던 ditto 라는 복사 붙여넣기 툴과 Windows 10 에 들어있는 복사 붙여넣기 기능들을 적극적으로 사용하는 편입니다. 아래는 제가 지금까지 복사 붙여넣기와 관련된 포스팅을 한 것들인데 위에서 얘기했던 ditto 이외에도 Clipjump 와 같은 Autohotkey 로 만들어진 툴에 대해서도 소개를 하니 한번쯤 읽어 보시기 바랍니다.

https://iamaman.tistory.com/737

https://iamaman.tistory.com/2693

https://iamaman.tistory.com/1026

https://iamaman.tistory.com/948

https://iamaman.tistory.com/2566

오늘은 Autohotkey 를 사용하여 복사 붙여넣기를 하는 3 가지 방법에 대해서 소개를 하려고 합니다.

일단 Autohotkey 를 사용하는 대부분의 분들이 아시겠지만 send 명령을 사용하여 복사 붙여넣기를 할 수가 있습니다. 실험 결과로 부터 원하는 계산을 한 후에 결과를 메모장에 붙여넣기하는 경우 아래와 같이 단축키를 만들어서 메모장에 자동으로 붙여넣기 할 수가 있습니다.

1. send 명령을 사용하는 방법

#!v:: ; shortcut Win + Alt + v

WinActivate, 제목 없음 - 메모장 ahk_class Notepad,

Send, ^v{Enter}

return

위 단축키는 Win + Alt + v 를 눌렀을 때 “제목 없음 - 메모장” 타이틀을 가진 메모장 프로그램에 ctrl + v 를 누르고 Enter 를 눌러서 줄 바꿈을 해주는 단축키입니다. 보시는 바와 같이 굉장히 간단하게 메모장에 붙여넣기를 할 수가 있습니다.

2. controlsend 를 사용하는 방법

#!c:: ; shortcut Win + Alt + c

ControlSend, Edit1, %Clipboard%`n, 제목 없음 - 메모장 ahk_class Notepad,

return

위 단축키는 Win + Alt + c 를 눌렀을 때 “제목 없음 - 메모장” 타이틀을 가진 메모장 프로그램의 Edit1 Control 에 클립보드의 내용과 줄바꿈을 넣는 단축키입니다.

3. PostMessage / SendMessage를 사용하는 방법

#!p:: ; shortcut Win + Alt + p

postmessage, 0x302, 1, 0, Edit1, 제목 없음 - 메모장 ahk_class Notepad,

return

마지막으로 설명드릴 내용은 PostMessage / SendMessage 를 사용하는 방법입니다. 윈도우 메시지를 전달하는 방법인데 위에서 소개했던 ControlSend 명령이나 PostMessage / SendMessage 명령은 비활성창에도 명령을 실행시킬 수 있기 때문에 send 명령보다 조금 더 편리할 수 있습니다. 하지만 그만큼 조금 더 공부할 거리들이 있는 것은 사실입니다. 어쨌든 위에서 소개한 스크립트는 Win + Alt + p 단축키를 누르면 마찬가지로 클립보드의 내용을 메모장에 붙여넣기하는 스크립트입니다.

추가로 PostMessage / SendMessage 를 사용하여 잘라내기와 복사하기를 하는 명령어는 아래와 같으니 참조하시기 바랍니다.

잘라내기 : postmessage, 0x300, 1, 0, Edit1, 제목 없음 - 메모장

복사 : postmessage, 0x301, 1, 0, Edit1, 제목 없음 - 메모장

오늘은 Autohotkey 를 사용하여 복사 / 붙여넣기를 하는 세 가지 방법에 대해서 소개를 했습니다. 서두에서 말씀드린 바와 같이 복사 / 붙여넣기만 잘 해도 정말 큰 업무 효율 향상을 볼 수가 있다고 생각합니다. 요즘은 4차 산업 혁명 시대라고 합니다. 저는 개인적으로 4차 산업 혁명 시대에는 극단적 효율성 향상의 시대이기 때문에 그 어느 때보다 효율성이 중요시 되는 시대라고 생각합니다. Autohotkey 와 함께 Windows PC 사용의 극단적 효율성 향상을 맛 보시기 바랍니다.

그리고 마지막으로 제가 최근에 찾은 블로그 중 아래 포스팅에서도 소개를 했던~

https://iamaman.tistory.com/2021

아래 블로그에도 한번 방문해 보시기 바랍니다. Autohotkey 구루라고 하시는데~ 정말 좋은 코드들을 많이 볼 수가 있고~

http://the-automator.com/

요즘에는 유튜브에서 방송도 하시더군요. Autohotkey 에 관심 있으신 분들은 Joe Glines 님의 유튜브 채널도 한번 구독해 보시기 바랍니다. 세계의 다양한 Autohotkey 유저분들과 인터뷰 도 하는데 배울 점이 많이 있는 것 같습니다.

https://www.youtube.com/channel/UCR0Hs-Bgz1SgGCq_0kbzjjg

저도 Autohotkey 는 어느 정도 사용한다고 생각을 했었는데~ 정말 세상에는 많은 실력자들이 있는 거 같네요. 지금보다 더 열심히 공부해 봐야 되겠습니다.

그럼 즐거운 Autohotkey 코딩하시고~ 굿 밤 되시기 바랍니다 ^^



Autohotkey 를 사용하다보면 한글 키보드에만 있는 특수키들을 사용하여 단축키를 만들고 싶은 경우가 있습니다. 이러한 경우엔 당연히 특수키에 대한 키코드를 알아야 됩니다. 그래서 오늘은 키코드 확인 하는 방법에 대해서 소개해 보려 합니다.

요즘에는 한자를 사용할 일이 그렇게 많이 없다 보니 스페이스바 왼쪽 옆에 있는 한자키를 거의 사용을 하지 않습니다. 그래서 저는 한자키를 다른 키와 조합해서 Autohotkey 로 단축키를 만들어서 사용하곤 합니다. 키코드를 알기 위해서는 Autohotkey KeyHistory 를 보면 되는데 KeyHistory 는 두가지 방법으로 접근 가능합니다.

1. 코드를 사용한 접근 방법

아래의 Autohotkey 코드를 실행 시킨후에 한자 키를 몇 번 누르고 h 버튼을 누릅니다.

h:: ; KeyHistory 실행 단축키 : h

KeyHistory

return

esc::exitapp ; 종료 : esc

그러면 다음과 같이 KeyHistory 창이 나타나게 됩니다. 저는 위 코드를 실행 하고~ 한자키를 3 번 누른 후에 h 버튼을 눌러서 KeyHistory 창을 나타나게 했습니다. 아래 그림에서 확인할 수 있는 바와 같이 제가 사용하는 키보드에 한자키의 키코드는 VK 19, SC1F1 입니다. 이 중에서 SC1F1 을 단축키로 설정 하면 되는 것입니다.

아래는 한자키와 그 옆에 있는 Alt 키를 사용하여 단축키를 설정해 본 것입니다. 아래 Autohotkey 코드를 실행 한 후에 왼쪽 Alt 키와 한자키를 동시에 누르면 메모장이 실행 되는 것을 확인할 수 있습니다.

~LAlt & sc1F1::

run notepad.exe

return

2. 윈도우 작업바에서 현재 실행되고 있는 오토핫키 아이콘에서 오른쪽 클릭을 하고 나오는 메뉴에서 Open 을 클릭합니다.


그럼 다음과 같은 창이 나타나는데 위에 메뉴 중에 View -> Key History And Script Info 를 클릭하거나 Ctrl + K 를 눌러서 KeyHistory 창을 실행 시킬 수 있습니다.

키코드를 알아내고자 하는 키를 몇 번 누른 후에 F5 키를 눌러서 새로고침을 하면 1 번에서의 결과와 마찬가지로 키코드를 알아낼 수 있습니다.



Simulink 는 많은 경우 MATLAB script 를 사용하여 자동화를 할 수가 있습니다. 


당연히 MATLAB 코딩을 잘해야 Simulink를 자유자재로 다룰 수 있을 겁니다.


물론 그냥 노가다로 Simulink를 구현 할 수도 있지만 이렇게 하면 무수한 클릭질에 Simulink 설계가 정말 싫어 질 겁니다.


암튼 오늘은 Simulink 블록의 존재 유무를 MATLAB Command Window 에서 확인 하는 방법에 대해 소개 하려 합니다. 


Simulink 블록의 존재 유무를 확인하기 위해서는  getSimulinkBlockHandle() 함수를 사용하면 됩니다.


함수의 이름을 보면 알겠지만 Simulink 블록의 handle 을 구하는 함수 입니다.


getSimulinkBlockHandle() 함수에 대한 메뉴얼은 아래 주소에서 확인 할 수 있고~ 


https://kr.mathworks.com/help/simulink/slref/getsimulinkblockhandle.html


getSimulinkBlockHandle()을 사용하는 경우 블록이 존재하면 블록의 handle 을 return 하고, 존재하지 않으면 -1 을 return 합니다. 


따라서 아래와 같이 사용 할 수 있을 겁니다.


if (getSimulinkBlockHandle('modelname/sysname') == -1)

 % block does not exist

else

 % block exists

end


블록의 path 를 확인하는 방법은 블록을 클릭하고 MATLAB command window 에 gcb 라고 타이핑 하면 됩니다. 


아래와 같은 모델(NewModel.slx)에서 Scope 를 선택한 후에 MATLAB command window 에 gcb 라고 타이핑 하면~ 다음과 같이 path 가 나옵니다.

NewModel/Scope 

위 path 에 대해 getSimulinkBlockHandle() 함수를 사용해 보면~ 아래와 같이 handle 값이 나오는 것을 확인 할 수 있습니다.

>> getSimulinkBlockHandle('NewModel/Scope')

ans =

   1.6290e+03

  

그럼 위 모델에 없는 블록 이름을 하나 테스트 해 보죠~ 아래 결과를 보면 위 설명대로 -1 이 나오는 것을 확인 할 수 있습니다.

>> getSimulinkBlockHandle('NewModel/Scope 1')

ans =

    -1



컴퓨터를 사용시 텍스트를 검색할 때 주로 grep 와 같은 툴을 사용 합니다.

 

물론 grep 말고도 아래 주소에서 소개한 Ack, The Platinum Searcher 와 같은 툴들도 있습니다.

 

http://iamaman.tistory.com/1310


http://iamaman.tistory.com/1572


 

그런데 MATLAB 에서 grep와 같은 기능이 없을까 해서 찾다 보니 아래 주소의 MATLAB File Exchange 에 grep 가 있더군요.

 

http://www.mathworks.com/matlabcentral/fileexchange/9647-grep--a-pedestrian--very-fast-grep-utility/content/grep.m

 

 

다운로드를 클릭해서 다운로드 받은 후에 압축을 풀면 grepdemo.m, grep.m 파일이 나타납니다.

 

이 중에 grep.m 파일을 사용자의 라이브러리 폴더 등에 넣어 놓고 사용하면 됩니다.

 

Help grep 라고 타이핑 하면 다음과 같이 옵션이 나오고 적절한 옵션으로 사용하면 되겠네요.


 

영어가 짧아서 옵션 내용이 잘 이해가 안 된다 하시는 분들은 grepdemo.m 파일을 한번 돌려 보면 좀더 쉽게 이해가 될 듯 합니다.

 

데모파일의 내용 중 아래 명령을 보면~ 간단하게는 –i 는 case insensitive 이고~ -n 은 line number 를 출력하는 옵션 입니다.

 

grep -i -n Version grep.m

 

grep.m 파일로부터 Version 이라는 글자를 찾는 예입니다.

 

다음과 같이 줄 수와 함께 Version 이라는 글자가 들어 있는 줄을 출력하는 것을 확인 할 수 있습니다.


 

 

리눅스 터미널과 같이 파이프 라이닝을 해서 찾을 수 있다면 좀더 편리할 것 같긴 하지만 그래도 나름 쓸 만은 하네요.

 

Grep 명령은 다음과 같이 함수의 형태로도 사용 할 수 있더군요. 함수의 형태로 사용 한 경우에는 아래 결과와 같이 파일의 full path 가 return 됩니다.



다양한 Python package 들 중에 Pyzo 라는 것을 발견 했습니다. 아래 포스팅에서 소개했던 spyder 와 비스므리한 package 같더군요.



2013/11/13 - [유틸] - 과학 분석에 사용되는 Python IDE Spyder


 

아래 공식 홈페이지의 소개를 보니 data-centric 프로그래밍을 위한 툴을 만드는 게 목표라 하는데~ IEP 라는 IDE 가 같이 들어 있어서 사용하기 좋더군요.

 

http://www.pyzo.org/

 

Pyzo 에는 아래 소개와 같이 다양한 packages 들이 같이 들어 있습니다. Numpy, scipy, matplotlib 와 같은 익숙한 package들도 있었지만 pandas, sympy, nose 와 같이 생소하지만 알아보고 싶은 package 들도 있더군요.

 

http://www.pyzo.org/packages.html#packages

 

저는 아래 포스팅에서 소개한 바와 같이 Eclipse 환경에서 Pydev 를 사용해서 코딩하곤 했는데~ 별다른 불편함 없이 잘 쓰고 있었습니다.

 

http://iamaman.tistory.com/1442

 

그런데 위 에서 소개한 Eclipse 환경에서는 에디터 환경에서 코드의 일부만 실행시키고 싶다거나 할 때는 그리 좋지 않더군요. 혹시 eclipse 에서 pydev 를 사용할 때 코드의 일부를 실행하는 방법이 따로 있다면 소개 좀……

 

코드의 일부만 실행한다는 것은 아래 MATLAB Editor 의 셀 기능과 같이 코드를 분리해서 실행하고 싶다는 것입니다.


2011/02/23 - [programming language/MATLAB] - Matlab Script coding tips, cell mode


 

Python 과 같이 인터프리터가 있는 환경에서는 코드를 분리해서 실행시키고 하는 과정들이 좋을 때가 있더군요.

 

이러한 기능들은 디버그를 한다거나 할 때 매우 편리합니다.

 

첫 줄에 소개한 Pyzo는 아래 주소에서 다운로드 가능합니다.

 

http://www.pyzo.org/downloads.html

 

아래 그림과 같이 각자의 OS 버전에 맞는 Pyzo 버전을 다운로드 합니다. 저는 현재 windows 64 비트라 pyzo_distro-2014a.win64.zip (64 bit zip) 를 다운로드 받았습니다. 다운로드 받은 Zip 파일을 압축해제 하고 pyzo.exe 를 실행하면 됩니다.

 

 

실행하면 다음과 같은 IEP IDE 가 뜨게 됩니다.


 

위에서 에디터 부분을 보면 ##으로 시작하는 줄들이 있는데~ 이게 바로 MATLAB 에서도 소개했던 cell 단위 입니다. IEP 에서 이 셀 단위로 실행 할 수 있습니다.

 

아래 그림에서 각 단위 실행에 대해 단축키들이 있는데 Return 은 Enter 키를 의미 합니다.




+ Recent posts