JMP 추가 기능은 JMP 핵심 기능에 대한 훌륭한 추가 기능이며 때로는 JSL로 추가 기능 생성을 자동화해야 할 수도 있습니다. 저는 JMP 추가 기능을 구축할 때 자동 추가 기능 생성 작업을 했습니다. JMP to R 맞춤형 추가 기능 빌더 . 다음은 애드인 자동 생성을 위한 멋진 JSL 트릭입니다.
이 튜토리얼의 코드는 @Justin_Chilton , 누가 만들었는지 사용자 정의 애드인 빌더 .
JMP 추가 기능(.jmpaddin)은 Zip 파일(.zip)입니다. JMP 추가 기능의 세 가지 최소 구성 요소는 addin.def 및 addin.jmpcust 파일과 추가 기능이 사용 중일 때 실행되는 JSL 스크립트입니다. 예를 들어 다른 JSL 스크립트, JMP 테이블, PDF 또는 Word 문서(문서에 일반적으로 사용됨) 및 사진(추가 기능 축소판에 자주 사용됨)과 같이 원하는 대로 추가 파일을 추가할 수 있습니다.
다음 스크립트 발췌에서 사용자 지정 가능한 모든 항목은 대문자로 표시됩니다(예: YOUR_ADDIN_NAME).
먼저 addin.def 파일에서 사용되는 문자열을 만듭니다. 추가 기능 이름과 ID가 필요합니다. 이름은 추가 기능 메뉴에 표시되는 항목이고 ID는 일반적으로 com.companyname.username.addinname 형식으로 표시되는 추가 기능의 고유 식별자입니다.
//create string for addin.def file
addinDefString = "id=com.YOUR_COMPANY.YOUR_ID.YOUR_ADDIN_NAME
name=YOUR ADDIN NAME
supportJmpSE=0";
추가 기능이 각각 Windows 또는 Mac에서만 지원된다는 것을 알고 있는 경우 이 문자열 끝에 다음 중 하나를 사용하여 줄을 추가해야 합니다.
"host=Win"
또는
“host=Mac”
다음으로 addin.jmpcust 파일의 문자열을 만듭니다.
addinjmpcustString = "\[<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>Add-Ins</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>YOUR ADDIN NAME</NAME>
Your Addin Name
<ACTION type="path">$ADDIN_HOME(com.YOUR_COMPANY.YOUR_ID.YOUR_ADDIN_NAME)\YOUR_SCRIPT.jsl</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>]\";
그런 다음 JSL 스크립트를 파일로 패키징하려면 먼저 텍스트 파일로 로드합니다.
addinScript = Load Text File("$SOME_PATH\YOUR_ADDIN_NAME.jsl");
그런 다음 모든 파일을 zip 아카이브에 씁니다.
//create a ZipArchive to write files to
za = Open("$DOCUMENTS\YOUR_ADDIN_NAME.jmpaddin", zip);
//write all necessary files to ZipArchive (which can also be binary blobs)
za << write("addin.def", addinDefString);
za << write("addin.jmpcust", addinjmpcustString);
za << write("YOUR_ADDIN_NAME.jsl", addinScript);
마지막으로 파일을 저장한 폴더로 이동하여 두 번 클릭하면 설치할 수 있는 추가 기능을 볼 수 있습니다.
또한 추가 기능 생성을 자동화하려는 경우(여러 개를 만들어야 하고 추가 기능 이름, 파일, 디렉토리 등), 아래에 있습니다.
스크립트에 사용된 두 개의 변수 이름은 addinName과 dir이며 다음과 같이 정의됩니다.
추가 이름 : 문자열로 된 추가 기능 이름, 추가 기능 메뉴에 표시하려는 공백 및 제목 대문자 포함(예: "JMP to R 추가 기능 빌더")
디렉토리 : 추가 기능을 저장할 디렉토리
addinDefStr = "id=com.YOUR_COMPANY.YOUR_ID" || addinName || "\!n name=" || addinName || "\!n supportJmpSE=0";
addinjmpcustStr = "\[<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>Add-Ins</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>]\" || uppercase(addinName) || "\[</NAME>
]\" || addinName || "\[
<ACTION type="path">$ADDIN_HOME(com.jmp.]\" || lowercase(regex(addinName, "\s", "", globalreplace)) || "\[)\]\" || addinName || "\[.jsl</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>]\";
addinScript = Load Text File("$SOME_PATH\YOUR_ADDIN_NAME.jsl");
//create a ZipArchive to write files to
za = Open(dir || "/" || addinName || ".jmpaddin", zip);
//write all necessary files to ZipArchive (which can also be binary blobs)
za << write("addin.def", addinDefStr);
za << write("addin.jmpcust", addinjmpcustStr);
za << write(addinName || ".jsl", addinScript);
이 스크립트가 추가 기능 생성 프로젝트를 원활하게 만드는 데 도움이 되기를 바랍니다.
스크립트에서 편집->암호화를 시도할 수 있습니다. 몇 가지 테스트를 수행하고 일부 JSL을 재작업할 준비를 하십시오. 약간의 비밀 코드만 있는 경우 자체 포함 파일로 이동하고 암호화하는 것을 고려하십시오. 나머지 코드는 정상적으로 실행됩니다.
암호화된 스크립트는 자체를 살펴보기가 어렵습니다. 식 조작을 사용하거나 식을 문자열로 변환하는 경우 다시 작성해야 합니다. 사용 전역 표시(); 누수 가능성이 있는 항목에 대한 아이디어를 얻기 위해 스크립트를 실행한 후.
일반 텍스트 버전을 안전한 곳에 보관하십시오!
JMP 추가 기능(.jmpaddin)은 Zip 파일(.zip)입니다. JMP 추가 기능의 세 가지 최소 구성 요소는 addin.def 및 addin.jmpcust 파일과 추가 기능이 사용 중일 때 실행되는 JSL 스크립트입니다.
공급업체에 추가 기능을 제공하고 싶지만 관련 코드를 비밀로 유지하고 싶습니다. 위의 설명은 코드를 볼 수 있음을 나타냅니다. (쉽게) 리버스 엔지니어링이 불가능하도록 바이너리 형식으로 추가 기능을 만드는 방법이 있습니까?
@vince_faller , "supportJmpSE"의 "SE"는 "Student Edition"을 의미하므로 추가 기능이 JMP Student Edition에서 작동해야 하는 경우에만 1로 설정하면 됩니다.
함께 만들어 주셔서 감사합니다, Julia!
addin.def 파일에 추가할 수 있는 몇 가지 옵션을 추가하고 싶었습니다.
- addinVersion - 보기 > 추가 기능... 대화 상자에 나타나는 버전 번호입니다.
- minJmpVersion - 추가 기능을 설치할 수 있는 JMP의 최소 버전입니다.
- maxJmpVersion - JMP의 최대 버전 추가 기능을 설치할 수 있습니다.
addinVersion=1.3
minJmpVersion=12
maxJmpVersion=13
추가 기능의 메뉴 항목에 대해 JMP의 기본 제공 아이콘 중 하나를 사용하는 데 관심이 있다면 내 내장 JMP 아이콘 아이콘 이름에 추가 기능을 추가하고 addin.jmpcust 파일에서 아래 형식을 사용합니다.
<jm:icon type="builtin">JMPProSmall</jm:icon>