NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 사용자가 설정한 시간에 매크로가 실행되는 스크립트 만드는 방법. (with 예약 작업 등록)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 사용자가 설정한 시간에 매크로가 실행되게 하려면 여러가지 방법들이 존재합니다. 가장 좋은 방법은 [ 예약 작업 이벤트 ]를 사용하는겁니다. 예약 작업 이벤트 예제를 참고 해보시면 좋을거 같습니다. 이벤트는 현재 스크립트에서 비동기로 실행되고, 백그라운드에서 시간을 감지합니다. 그리고, 액션 이동을 사용하기 때문에 현재 스크립트에서 모든 동작을 처리할 수 있습니다. 예약 작업 이벤트를 사용할 수 없는 환경이라면 [ 예약 작업 등록 ] 액션을 사용해야 합니다. 엔지엠 매크로 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.

    ※ 예제 스크립트가 첨부되어 있으니 다운로드 받아서 열어보세요.

    cnOuw3h.gif

     

     

    아래 그림과 같이 예약 작업 등록 액션을 추가해줍니다. 그리고, 아래로 [ 그룹 ]과 [ 액션 이동 ]을 추가해줬는데요. 그룹과 액션 이동은 매인 스크립트가 종료되지 않도록 무한 반복하는 루틴입니다. 사실 여기에 뭔가 다른 동작을 수행하는 스크립트를 구성해야 합니다. 예약 작업 등록 액션은 서브 1 스크립트를 선택해줬습니다. 서브 1 스크립트는 메세지 박스를 표시하고, 서브 스크립트가 실행되었다는걸 알려주는 단순한 동작만 수행합니다.

    Q5VNyiy.png

     

     

    서브 1을 열어보면 [ 메세지 박스 ] 액션 하나만 들어 있습니다. 옵션을 보면 자동 종료가 5입니다. 5초후에 자동으로 메세지 창을 닫겠다는 의미입니다. 그리고, 메세지 창이 언제 닫힐지 시각적으로 확인하려면 타이머 표시 속성을 True로 변경하세요. 그러면, 메세지 창에서 닫히는 시간을 표시할 수 있습니다.

    2Zm6deR.png

     

     

    크론탭 또는 크론잡이라고 부르는 크론 문법을 사용해서 이 기능을 구현해야 합니다. 크론탭 문법에 대해 좀 더 자세하게 알고 싶다면 아래 글을 참고하세요.

    [ 예약 스케줄러 크론탭 작성 방법 ]

    [ 예약 작업 등록 액션이 실행되지 않는 이유와 해결 방법 ]

     

    이 학습에서 크론탭을 아래와 같이 설정 했습니다. 젤 앞 부분이 초를 나타냅니다. 스케줄러를 등록할 때 보통 Date(년월일)와 Time(시분초)을 설정해야 합니다. 이 때 문제는 날짜 값을 입력해야 하므로 내일이 되면 날짜가 다르기 때문에 더이상 작업을 수행할 수 없게됩니다. 그래서, 시간만 설정해서 사용하는데 이렇게 사용하기 보다는 크론탭을 쓰는게 더 직관적이고 쉽습니다.

    • */10 * * * * *

    Q5VNyiy.png

     

     

    만약, [ 시작 시간 ] 액션을 사용한다면 아래와 같이 설정할 수 있습니다. 이 액션과 예약 작업 등록의 차이점은 현재 스크립트가 실행되면서 서브 스크립트를 실행하는지 여부입니다. 예약 작업 등록과 시작 시간 액션을 모두 비동기로 설정해보세요. 예약 작업 등록은 서브 스크립트가 실행될 시간을 에약 해두었기 때문에 매인 스크립트가 실행됩니다. 하지만, 시작 시간은 사용자가 설정한 시간이 될때까지 멈춰있습니다. 비동기로 설정했으면 이 때부터 매인과 서브 스크립트가 같이 실행됩니다. 미묘한 차이이긴 하지만, 로직을 구성할 때는 다른 동작입니다. 원하는 동작 방식이 어떤거냐에 따라서 사용해야 하는 액션도 달라지기 때문입니다.

    KFgMQT1.png

     

     

    이런 종류의 액션들은 자신을 중지하기 위해 필수로 아이디를 입력해야 합니다. 대부분 에디터 하단의 아웃풋에서 알려주는 내용을 잘 안보는 경향이 있습니다. 이런 종류의 액션들이 동작하지 않는다고 하는 분들의 대부분 문제점은 하단에 알려주는 내용대로 액션을 처리하지 않았기 때문입니다. 만약, 의도한데로 동작하지 않는다면 아웃풋에 나오는 경고 또는 에러 메세지를 확인 해보세요. 대부분 액션 아이디를 설정하지 않아서 발생하는 문제일겁니다^^

     

    자~ 여기까지 테스트가 되었다면 매크로를 실행하고, 특정 시간이 흐른뒤에 중지하는 방법도 직접 만들 수 있을겁니다. 가장 간단한 방법은 시작 시간 또는 예약 작업 등록으로 특정 루틴이 실행되었을 때 [ 종료 시간 ] 액션을 사용하거나 [ 타이머 틱 등록 ] 액션을 등록하는겁니다. 타이머 틱은 설정한 시간이 흐른뒤에 액션이 실행됩니다. 직관적이고 쉬운 방법은 [ 타임 아웃 이벤트 ] 액션을 사용하는겁니다. 이벤트가 다루기가 더 쉽기 때문입니다. 이제 정상적으로 동작하는지 테스트 해볼까요?

     

     

    위 동영상에서 보듯이 크론탭에 의해 매분 10초마다 서브 스크립트가 비동기로 실행됩니다. 그리고, 서브 스크립트는 자신이 실행되었다는걸 알려주기 위해 메세지 박스가 실행되고 5초후에 자동으로 종료됩니다. 그리고 다시 10초 간격(0, 10, 20, 30, 40, 50)으로 서브 스크립트가 실행됩니다. 간단한 내용이지만, 처음 이런 내용을 접하게 되면 이해하는게 많이 힘들겁니다. 사람은 기본적으로 멀티로 생각할 수 없고, 경험해본적도 없기 때문입니다. 개발자는 프로그래밍 세계에 들어오면서 부터 멀티 환경에 지속적으로 노출되다보니 너무나 당연하게 생각하는 동작입니다. 그래서, 이런 부분을 설명하기가 사실 많이 힘듭니다. 이해시키는게 가장 힘든 부분이기도 하죠^^; 현실 세계에서 물리적으로 동시에 실행되는 현상이 없으니까요. 논리적인 개념을 설명한다는게 쉽지 않은 일이기도 합니다.

     

    정말 최선을 다해서 쉽게 설명하려고 해도 어려운 부분은 존재합니다. 그래서, 고객 서비스방에서 질문을 받고 즉각적으로 답변을 드리고 있습니다. 이해가 될때까지 하다보면 언젠가는 개발자가 생각하는 것처럼 물리적인 현상이 아닌 논리적인 현상에 대해 이해하게 되고, 머리속에서 프로세스가 병렬로 어떻게 흘러가는지 그려질겁니다. 이건 저도 마찬가지였습니다. 처음 개발에 입문했을 때 "왜?"라는 질문이 머리속에서 떠나질 않았으니까요. 그런데, 계속해서 보면서 이해하려고 노력하다보니 어느순간 깨달음을 얻은것처럼 이해가 되었고, 그동안 잘 이해하지 못하면서 만들어두었던 코드들과 선배님들이 만든 프로그램의 소스까지 이해가 되고, 어떻게 수정하고 업그레이드 시킬지가 보였습니다. 포기하지 않고 하다보면 어느순간 컴퓨터가 어떻게 동작하는지 이해하는 때가 올겁니다^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.