본문 바로가기
공지사항

에너지 체크 매크로 만들기.

by 업무자동화 2021. 5. 23.
반응형

원문보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech&wr_id=341 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 에디터에는 여러가지 수학 함수와 통계 함수를 제공하고 있습니다. 이외에도 좌표, 가각형 영역을 쉽게 계산할 수 있는 사칙 연산도 제공합니다. 엑셀이나 기타 통계 관련 프로그램에서 제공하는 대부분의 함수를 제공하고 있습니다. 다만~ 연산이라는게 연속적인 작업이라서 단순한 계산 용도가 아니라면 스크립트로 복잡하게 구현하는건 상당히 귀찮은 작업입니다. 그래서, 엔지엠 매크로는 사용자가 직접 커스텀 모듈을 만들어서 추가할 수 있는 기능이 포함되어 있습니다. 연산의 중간 과정은 직접 구현하고, 결과만 매크로에 적용시킬 수 있습니다.

 

 

오늘 알아볼 중앙값은 통계쪽에 있습니다. 평균(Mean)과 중앙값(Median, 중간값)은 다릅니다.

 

 

[ 디자이너 프레임워크 ]를 참고해서 개발 환경을 구축하세요. 이미 Visual Studio(비주얼 스튜디오)를 가지고 있다면 바로 아래와 같이 진행하면 됩니다. 콘솔 프로젝트를 추가하고, 아래 코드를 붙여넣기 하세요. 코드에 주석은 모두 달아두었습니다. 이 글은 개발자분들을 대상으로 작성하고 있기 때문에 일반인분들이 보시기엔 다소 어려운 부분이 있을겁니다. 기본적인 내용은 알고 있다는 가정하에 진행합니다.

using System; using System.Windows.Forms; namespace ConsoleTest { class Program { static void Main(string[] args) { // 매크로 엔진에서 가상으로 실행할 스크립트 뷰를 생성합니다. // isBackground 파라메터를 false로 명시하지 않으면 뷰를 생성하지 않고 백그라운드로 실행됩니다. var sv = new Designer.Component.ScriptView(new Designer.ComponentDefault.MainView(), "/Dummy.ngs"); TreeNode tn = sv.TreeView.Nodes.Add("A", "Analysis"); var median = new NGM.Models.StatisticsFunc.MedianModel() { FunctionKey = NGM.Definition.FunctionKey.STATISTICS_FUNCTION_MEDIAN, DirectInputData = "1,2,3,4,5,6,7,8,9" }; // 액션 목록을 관리하는 노드에 액션을 추가합니다. tn.Tag = median; // 스크립트를 실행합니다. sv.Play(); // 엔지엠 매크로, 플레이어, 프레임워크는 모두 비동기로 동작합니다. // 작업자 스레드가 매크로 엔진보다 먼저 수행될수도 있습니다. // 작업을 동기적으로 처리하기 위해 매크로 엔진이 완료 되었는지 확인해야 합니다. while (sv.State == NGM.Definition.MacroState.Run) System.Threading.Thread.Sleep(1); // 중앙값의 결과를 콘솔창에 표시합니다. Console.WriteLine(median.ResultData); // 프로세스가 종료되서 프로그램이 중지되는걸 방지합니다. Console.ReadLine(); } } }

 

실행(F5) 후 결과를 확인 해보세요.

 

 

프레임워크의 클래스, 메소드, 열거형등등... 도움말을 확인하면서 코딩할 수 있습니다.

 

 

메뉴얼을 모두 작성한건 아니지만, 코딩에서 참고할만한 내용을 지속적으로 업데이트하려고 노력하고 있습니다.

 

 

가급적이면 질문은 홈페이지를 이용해주세요~ 그래야 다른 사용자도 참고할만한 자료가 누적되서 나중에는 큰 자산이 됩니다. 1~9까지 인자로 사용하는 데이터는 중앙값과 평균값이 동일합니다. 평균값을 구할 수 있도록 아래와 같이 코드를 변경하고, 실행 해보세요.

using System; using System.Windows.Forms; namespace ConsoleTest { class Program { static void Main(string[] args) { // 매크로 엔진에서 가상으로 실행할 스크립트 뷰를 생성합니다. // isBackground 파라메터를 false로 명시하지 않으면 뷰를 생성하지 않고 백그라운드로 실행됩니다. var sv = new Designer.Component.ScriptView(new Designer.ComponentDefault.MainView(), "/Dummy.ngs"); TreeNode tn = sv.TreeView.Nodes.Add("A", "Analysis"); var median = new NGM.Models.StatisticsFunc.MeanModel() { FunctionKey = NGM.Definition.FunctionKey.STATISTICS_FUNCTION_MEAN, DirectInputData = "1,2,3,4,5,6,7,8,9" };

 

결과는 중앙값과 동일하게 5가 표시됩니다. 산술평균의 경우 모든 관측치의 값을 반영하므로 지나치게 작거나 큰 값들의 영향을 많이 받게 됩니다. 중앙값은 그 값보다 크거나 작은 관측치는 전혀 고려하지 않으므로 영향을 받지 않습니다. 그래서 통계의 오류를 수정하기 위해 중앙값을 사용하기도 합니다. 수율 관련쪽 일을 하다보니 기초 통계를 사용할일이 많았는데요. 이젠~ 주로 프로젝트 매니저를하고 있어서 대부분 다 까먹었습니다. 코딩도 안한지가 오래대서 개발도 서툴구요ㅠㅠ; 요즘 개발자들 보면 정말 천재인가 싶을정도로 아키텍트랑 코딩이 예술이더라구요. 점점 머리가 안따라가서 적응이 힘들어집니다.

 

개발자에게 후원하기

 

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

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

감사합니다~

반응형

댓글