NGMsoftware

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

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

    팁 앤 테크

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

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

    스크립트 중복되지 않는 랜덤 문자열 생성하는 방법.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 자동으로 회원 가입할 때 아이디와 비밀번호를 만들어야 한다면, 엔지엠의 [ 랜덤 문자열 조합 ] 액션을 사용하면 쉽게 원하는 결과를 얻을 수 있습니다. 일반적으로 랜덤하게 문자열을 조합하는건 쉬운데요. 문제는 중복되는걸 막을 수 없다는겁니다. 중복되는걸 막기 위해서 한번이라도 출현한 문자열에 대해 저장해야 하고, 조합할 수 있는 경우의 수가 채워질수록 반복해서 다시 조합해야 하는 문제가 발생합니다. 뒤로 갈수록 점점 속도가 느려지겠죠^^;

     

    랜덤한 문자열을 생성하는데 중복이 나와도 문제가 없다면 상관 없습니다. 하지만, 중복이 나오지 않으려면 로직이 복잡해지죠. 엔지엠의 [ 랜덤 문자열 조합 ]을 사용하면 쉽게 해결할 수 있습니다. 아래와 같이 에디터를 실행하고, 새로운 스크립트에 랜덤 문자열 조합을 추가해보세요. 그리고 속성을 변경해줍니다.

    10CjmjD.png

     

     

    아무런 설정 없이 실행 해봅시다. 여러분도 아래와 같은 결과가 나올겁니다. 물론, 랜덤 문자열은 다르겠지만요^^;

    DavoPWz.png

     

     

    이런 결과가 나오는건 기본적으로 설정된 옵션 때문입니다. 아래 내용을 보면, 소문자 포함이 True고, 조합 최대와 최소가 4로 셋팅되어 있습니다. 그렇기에 계속 실행(Ctrl+Alt+F8)을 눌러봐도 4자리의 소문자 조합만 나오게 됩니다.

    q89SUPq.png

     

     

    속성의 몇가지 설정으로 어떻게 동작하는지 쉽게 이해할 수 있을겁니다. 다만, 몇가지 속성들은 복잡하죠~ 우선, 조합 최소를 2로 설정하고 테스트를 해볼까요? 여러분들도 아래 동영상처럼 2~4자리의 조합으로 문자열이 만들어지는 걸 알 수 있습니다.

    WGeIIEH.gif

     

     

    대문자와 숫자 그리고 특수 문자를 포함시켜보세요.

    xYy8R9q.png

     

     

    2~4자리의 대문자, 소문자, 숫자, 특수문자가 포함된 랜덤한 문자열이 만들어집니다.

    EoIjBAb.gif

     

     

    기본적인 내용은 알았으니 좀 더 고차원(?)적인 내용을 테스트 해볼까요? 아래 그림과 같이 조합 텍스트123456789를 입력하세요. 그리고, 바로 아래 조합 텍스트 처리 옵션CharSplit으로 변경하세요. 조합 텍스트에 값이 있으면 다른 옵션들보다 우선권을 가집니다. 대문자, 소문자, 특수문자를 True로 설정했더라도 조합에서 출현하지 않게됩니다.

    yTH2PZs.png

     

     

    테스트 해보면 123456789 숫자들로 2~4자리로 조합하는걸 알 수 있습니다.

    lZoDV8w.gif

     

     

    아래와같이 줄바꿈으로 단어들을 입력해보세요. 이번에는 조합 텍스트를 줄로 입력했으니 조합 텍스트 처리 옵션LineSplit으로 변경해야 합니다.

    fYaYisi.png

     

     

    입력한 라인별로 랜덤하게 문자열이 출력되는걸 알 수 있습니다.

    FivFZgX.gif

     

     

    조합에 대한 옵션을 알아보도록 하겠습니다. 아래 그림을 참고해서 속성을 설정하세요. 그리고, 텍스트 조합 옵션을 퍼뮤테이션(Permutation, 순열)으로 변경하세요. 순차적인 조합을 사용할 때 사용하는 옵션입니다.

    VzyvfIN.png

     

     

    이 상태로 실행하면 계속 ab만 출력되는걸 볼 수 있습니다. 당연한 결과인데요. 조합에 사용되는 소문자부터 2자리 문자를 만들기 때문입니다. 연속성이 없기 때문에 가장 앞에 위치한 ab만 계속해서 출현하게 됩니다. 연속된 환경을 갖추기 위해서는 스크립트가 계속 실행되어야 합니다. 이 기능을 간단하게 테스트하려면 아래와 같이 For 반복 액션을 추가하세요. For 반복 액션의 속성에서 조건10으로 설정하세요.

    R4wEwo2.png

     

     

    ab부터 ak까지 순차적으로 문자열 조합이 만들어진걸 알 수 있죠? 이렇게하면 마지막까지 중복없이 문자열 조합이 만들어집니다. 만약, 조합할 수 있는 최대 수보다 반복이 더 많게되면 어떻게 될까요? 이런 경우에는 더이상 조합을 만들지 않고, 반복이 종료되게 됩니다. 중복을 허용하지 않기 때문에 스크립트를 강제로 종료시키게 됩니다. 이는 중복이 없는 문자열 조합을 처리할 때 무한으로 반복하다가 중복이 발생하여 시스템에 문제가 발생하는걸 방지해줍니다. 문제가 되는것보다 스크립트가 종료되는게 더 안전하다는 판단으로 의도된 동작입니다.

    iERMCI2.gif

     

     

    텍스트 조합 옵션을 RandomPermutation(랜덤 퍼뮤테이션, 무작위 순열)으로 변경하고 실행 해보세요. 아래와 같이 랜덤하게 0~9까지 출력합니다. 동영상보다는 내용을 확인하는게 더 정확하겠네요.

    [[New] Script 1] 스크립트가 시작되었습니다.
    [For 반복] 액션이 시작되었습니다.
    반복한 횟수: 0
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 7
    반복한 횟수: 1
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 6
    반복한 횟수: 2
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 5
    반복한 횟수: 3
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 3
    반복한 횟수: 4
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 4
    반복한 횟수: 5
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 2
    반복한 횟수: 6
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 1
    반복한 횟수: 7
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 0
    반복한 횟수: 8
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 9
    반복한 횟수: 9
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 8
    반복한 횟수: 10
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    윈도우 핸들: 0
    컨트롤 핸들: 0
    창 이름: 
    조합된 텍스트: 
    반복한 횟수: 11
    [랜덤 문자열 조합] 액션이 시작되었습니다.
    [[New] Script 1] 스크립트가 중지되었습니다.
    

     

     

    마지막으로 갱신에 대해 알아볼께요.

    sVOhIfq.png

     

     

    엔지엠에서 제공하는 몇몇 액션은 스크립트가 실행되고 나서 변경이 불가능합니다. 예를 들어서 0~9까지 반복하는 루틴에서 조합이 완료되면 조합 숫자를 2로 증가시키고 싶을 수도 있습니다. 이 때에는 실행중인 상태더라도 변경된 속성 값으로 다시 설정해야 합니다. 변수로 속성을 변경한 경우 다시 순열 조합을 만들 때 사용하는 옵션입니다. 대표적으로 머신러닝이나 딥러닝 액션에서 갱신 옵션을 제공합니다. 이들은 루틴을 재설정 하는건 아니지만, 퍼포먼스 향상을 위해 인스턴스를 재사용하기 위한 용도로 사용됩니다. 하나씩 속성을 변경해가면서 테스트 해보시면 쉽게 이해할 수 있을겁니다^^;

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.