NGMsoftware

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

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

    팁 앤 테크

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

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

    스크립트 고급 기술 - 엔지엠 RPA 매크로에서 다른 스크립트의 상태 또는 구간 실행 여부를 알아내는 방법.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 오늘은~ 다른 스크립트의 상태를 체크해서 동작을 제어하는 방법에 대해 알아보겠습니다. 엔지엠 RPA 매크로를 사용중인 고객분께서 질문하셨던 내용인데요. 기본 골격은 고객분이 만드신거고, 구조적으로 에러가 있는 부분만 제가 수정해서 테스트 해봤습니다. 일단, 의도한데로 잘 동작한다고 하니 다행이죠~ 이왕 스크립트를 분석하고 수정해본김에 팁으로 작성해볼께요. 에디터를 실행하고, 첨부되어 있는 스크립트 2개를 열어줍니다.

    aKHFqVw.gif

     

     

    첫번째 스크립트의 구조는 아래 그림과 같이 되어 있습니다.

    kuGZ7jV.png

     

     

    두번째 스크립트입니다.

    V2SaO2U.png

     

     

    스크립트 1과 스크립트 2는 비슷한 구조를 가지고 있습니다. 다른 스크립트의 상태를 확인해서 동작중이면 현재 스크립트는 건너뜁니다. 둘다 동일한 로직이 적용되어 있으니 g1스크립트가 동작중이면 g2는 키보드 입력을 않하고 건너뜁니다. 반대로 g2가 키보드 입력중이면 g1이 건너뛰게 됩니다. 쉽게 풀어서 말하면 g1스크립트가 실행중이면 g2 스크립트는 실행하지 않고, g2가 실행중이면 g1은 스크립트를 실행하지 않습니다. g1과 g2는 키보드 a와 b를 입력합니다. a가 입력중일 때는 b가 입력되면 안되고, b가 입력중일 때는 a가 입력되면 안됩니다.

     

    자 그러면 다른 스크립트의 상태를 어떻게 알아낼 수 있을까요? 스크립트의 상태를 확인하는건 아주~ 간단합니다.

    1. g1 스크립트를 실행합니다.
    2. 스크립트 상태 체크 액션을 새로운 스크립트에 추가하세요.
    3. 상태를 체크할 스크립트의 이름을 선택하세요. 그리고 옵션을 Run으로 선택해줍니다.
    4. 스크립트를 실행하고 결과를 보면 ①에서 실행한 g1의 상태가 Run이므로 비교 결과는 True를 반환합니다.

    gFYfMlp.png

     

     

    잘 동작하죠? 하지만, 우리가 원하는건 이 동작이 아닙니다. 스크립트가 실행중이거나 중지 또는 일시 중지 상태를 알고 싶은게 아니거든요~ 원래 목표는 다른 스크립트의 어느 부분이 동작중인지 판단하는 겁니다. 이른 시나리오를 생각 해볼 수 있습니다. 여러개의 게임 클라이언트가 있고, 각각의 클라이언트는 4개의 캐릭터가 있습니다. 사냥하다가 일정 조건이 만족하면 캐릭터를 바꿔야 해서 로그인이 필요합니다. 그런데 키보드를 입력할 때 다른 게임 클라이언트에서 사냥중인 스크립트 또는 로그인 작업에 영향을 주면 안됩니다. 그러면~ 키보드 입력하는 부분에 간섭이 없도록 해야겠죠? 이 부분에 간섭이 생기면 아이디, 패스워드를 제대로 입력할 수 없으니까요.

     

    이런 루틴을 만드는건 여러가지 방법이 존재합니다. 엔지엠 에디터의 텍스트 쓰기 액션으로 값을 읽고 쓰면서 다른 스크립트의 상태를 체크하는겁니다. 여기에 힌트를 얻어서 엑셀로 작업하시는 분도 있을겁니다. 여러개의 아이디, 비밀번호가 있는 엑셀을 동시 다발적으로 로그인 체크한다면 엑셀이 더 유용할수도 있습니다. 로그인 후 작업이 완료된 캐릭터의 상태 정보를 엑셀에 기입하고, 중복해서 읽지 않도록 할수도 있으니까요. 마지막으로 데이타베이스를 이용하는 방법입니다. 엔지엠 에디터 또는 플레이어는 연결 속성을 저장해두면 실행과 동시에 데이타베이스에 연결해주고, 커넥션을 유지 해줍니다. 데이타베이스의 상태는 에디터와 플레이어의 하단에 표시해줍니다. 직관적으로 확인이 가능하죠~ 물론, 스크립트에서 연결 액션을 통해서 작업해도 됩니다. 같은 작업을 반복해야 하는 상황이라면 글로벌하게 처리해도 됩니다.

     

    자~ 위의 내용들은 스크립트만으로 동작시킬 수 없습니다. 뭔가 부가적인 액션을 사용해야 하죠? 다른 시스템의 도움을 받지 않고, 독립적으로 동작하려면 상태를 체크할 루틴의 시작과 끝에 글로벌 변수에 상태를 업데이트 해줘야 합니다. 여기에서는 g1은 자신의 상태를 1 변수에 업데이트 하고 있습니다. g2에서는 1변수의 값을 가지고 조건 판단합니다. 반대로 g2는 2 변수에 자신의 상태를 업데이트하고, g1은 2변수 값으로 g2의 체크해야 할 루틴이 실행중인지 판단합니다.

    ppGnKXB.png

     

     

    스크립트를 열어보면 아시겠지만, 스크립트간 변수를 공유하려면 [ 글로벌 변수 ]로 설정해줘야 합니다. 글로벌 변수와 로컬 변수의 차이점은 [ 여기 ] 글을 읽어보세요. 로컬 변수는 현재 스크립트에서만 변수 값을 공유할 수 있습니다. 글로벌 변수는 다른 스크립트에서도 변수에 접근하여 데이타를 가져오거나 변경할 수 있습니다. 그렇기 때문에 여러개의 스크립트를 추가해놓고, 모두가 하나의 값을 공유해서 로직을 처리할 수 있습니다. "변수도 어려운데 무슨 글로벌 변수냐?"라고 할수도 있는데요. 단순한 반복 업무에 매크로를 적용하는거라면 이렇게까지 학습할 필요는 없습니다. 이런 기술들을 이용해서 스크립트를 제작해서 판매한다면 가치가 있겠지만요. 꼭 판매가 아니더라도 자신의 업무와 자신의 시간에 가치를 매겨보면 "고난이도 기술에 대해 학습해야 할까?"라는 물음에 좀 더 쉽게 답할 수 있을겁니다.

     

    요즘 개발자들의 몸값이 치솟고 있는데요. 수많은 업체들이 개발자를 구하지 못해서 문제가 되고 있습니다. 일주일에 2번? 많게는 5번 정도 매크로 개발 의뢰를 받곤 합니다. 개발자의 시간 가치를 얼마로 생각할지는 모르겠지만, 제 연봉을 기준으로 생각해보면 좀 더 쉽지 않을까요? 20년차 수석 연구원이 현재 1억 4,500정도입니다. 여기에는 업무에 대한 이해(반도체, 제조, 공정, MES, EES와 같은...)도 필요하고, 개발 기술과 장애 조치에 대한 노하우도 가지고 있어야 합니다. 이외에 정치력(?)도 어느정도 필요합니다. 고객 요구사항을 분석해서 시스템화해야 하고 설계에 오류가 없는지 시스템을 어떻게 구성할지등등... 할게 많죠. 요구 사항이 기술적으로 가능한지도 판단해야 하구요. 아무튼, 이런것들을 개발자가 아닌 일반인이 한다는건 불가능에 가깝습니다. 그렇기에 엔지엠 에디터와 플레이어 같은 도구를 이용해서 업무 자동화를 쉽게 구현하고, 자동화할 수 있죠.

     

    자 이제 엔지엠 에디터가 얼마 정도의 가치가 있을지 생각 해봅시다. 대략 10,000원이라고 생각하고, 100명의 사용자가 1년동안 서비스를 받았다고 생각해봅시다. 그러면 12,000,000원(천이백만원)이죠? 스크립트 하나 만들어서 100명에게 서비스했다면 12,000,000원을 벌게 됩니다. 한번 만들어둔 스크립트는 유지보수가 필요할수도 있지만, 그렇지 않다면 지속적으로 수익을 가져다주는 아주 고마운 존재가 될겁니다. 사용자가 1,000명이면 1년에 1억 2천만원을 벌게 되는겁니다. 단타로 스크립트를 제작 의뢰하는 경우 못해도 천만원의 제작 의뢰 비용이 발생한다고 생각하셔야 합니다. 불특정 다수에게 판매하는게 아니니까요^^; 아니면 사용자를 천명 모아와야겠죠? 사람마다 가치는 다르기 때문에 위 계산이 100프로 맞다고 할수는 없습니다. 

    yU8isK0.jpg

     

     

    기술이나 노력 없이 돈버는 방법은 없습니다. 대부분이 노력없이 스크립트만 구매해서 컴퓨터 30대~50대 돌리는 분들이 많습니다. 두달을 넘기지 못하더라구요^^; 이유는 간단한데요. 직접 스크립트를 수정하고, 튜닝할 수 있어야 하는데 작은 문제에도 대응을 못해서 시간을 낭비하기 때문입니다. 컴마다 시간당 수익이 발생하는 구조라면 더더욱~ 유지보수가 중요해집니다. 아마도, 많은 분들이 공감하시리라 생각하는데요. 왜냐하면 다른 매크로를 사용하다가 오신 분들의 얘기를 들어보면 70프로 정도가 같은 말을 합니다. 개발자가 잠수 타거나 연락 두절이라고요. 프리랜서 개발자도 돈이 안되면 더이상 개발을 할 필요가 없죠. 그리고, 얘기되지 않은 자잘한 기능들을 서비스로 공짜로 요구하다보면 점점 지치게 됩니다. 이건, 개인 의뢰뿐만 아니라 대기업들도 마찬가지입니다. 단가는 깍으려고 하고, 일은 많이 시키려고 하니깐 문제가 되는겁니다.

    juCYZLW.png

     

     

    일반인이 개발자를 볼 때 오해하는 부분이 하나 있습니다. 개발자가 손대면 원하는 기능이 뚝딱 나온다는건데요. 실제로 프로젝트 성공률은 25프로밖에 되지 않습니다. 요즘은~ 개발 도구도 좋아지고 여러가지 안전 장치와 DevOps를 도입함으로써 성공률이 점점 높아지고 있긴합니다. 그렇더라도 사람이 해야 하는 업무는 여전히 문제가 많습니다. 프로젝트 매니저가 이해하는 수준에서 개발자에게 내용이 전달되는데요. 이 부분에서 요구 사항과 분석 내용의 갭이 발생합니다. 더 큰 문제는 고객도 자기가 뭘 원하는지 잘 모른다는겁니다. 그래서 자주 대화하면서 소통해야 합니다. 생각과, 컨센서스를 일치시키는 가장 좋은 방법이니까요.

     

    뭔가 장황하게 많은 내용을 말한거 같긴한데요. 당장 돈을 버는건 아니더라도 엔지엠 에디터를 배워서 뭔가 생산성이 있는 일을 한다면 여러분들도 수익에 많은 도움이 될거라는 겁니다. 잠깐 해보고 포기하기 보다는 자신이 많든 스크립트를 홍보하고, 판매 루트를 개척하면 알아서 돈이 벌리는 구조를 만들 수 있게 될겁니다. 위시캣이나 오투잡, 크몽과 같은 사이트에서 검색해보면 많은 RPA, 매크로 자동화 의뢰들이 존재합니다. 비용이 괜찮은 몇몇 프로젝트는 컨텍해서 진행 해보려했으나 결국은 회사 다니면서 엔지엠소프트웨어까지 운영하면서 진행할수는 없었습니다. 일주일 내내 밤낮없이 일해도 시간이 부족하네요^^;

     

    아~ 가족도... 챙겨야 하죠-_-;

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

     

     

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

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.