What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?스크립팅에 문제가 생기면 어떻게 해야 합니까? 돌아온 것을 환영합니다!
방금 우리와 함께하셨다면 JMP 스크립팅 언어 사용을 시작하는 것을 목표로 하는 시리즈의 한가운데에 바로 참여하신 것입니다. 이전 항목과 달리 시리즈 , 아마도 이 항목이 이해되기 위해 다른 항목을 읽을 필요는 없을 것입니다. 그러나 함께 플레이하고 다른 항목의 숙제를 하고 싶다면 여기에 링크가 있습니다.
또한 Christian Stopp( @christianstopp ) 시리즈에서 이 항목을 제안해 주셔서 감사합니다.
시리즈의 이 부분은 독립형 항목입니다. 그러나 상황의 흐름에 따르면 이는 아마도 일부 코드를 사용하기 시작한 지점이고 오류 메시지가 한두 개 표시되었을 수 있습니다. 따라서 심각한 코드 논쟁을 시작하기 전에 상황이 잘못되었을 때 어떻게 해야 하는지부터 살펴보겠습니다.
JSL에서 가장 흔한 실수
저스틴 칠튼( @Justin_Chilton ) 및 웬디 머프리( @Wendy_Murphrey )는 최고의 스크립터 중 하나입니다. JMP . 2020년 미주 JMP Discovery Summit에서 그들은 "가장 일반적인 JSL 실수와 이를 피하는 방법"이라는 제목의 논문을 (가상으로) 발표했습니다. 해당 프레젠테이션의 PowerPoint 파일을 찾을 수 있습니다. 여기 커뮤니티에서.
새로운 스크립터에게 이것은 14페이지의 순금입니다. 이 시리즈에서 수행하는 작업의 맥락에서 일부 내용은 범위를 벗어나지만 스크립팅 여정의 다음 단계에 매우 중요합니다. 간단한 작업을 하고 PDF를 다운로드한 후 잊지 못할 곳에 보관하고 커뮤니티 페이지에서 해당 논문에 엄지손가락을 치켜세우세요.
Mike의 가장 일반적인 JSL 실수
Justin과 Wendy의 작업에 대한 약간의 설명으로 그들의 목록에 몇 가지를 추가하고 싶습니다. 이것들은 매우 기본적이며 일반적으로 스크립트가 실행되기도 전에 충돌을 일으킵니다(이것이 Discovery Summit 논문에 나타나지 않는 이유입니다).
접착제
누락된 Glue 연산자는 아마도 가장 일반적인 JSL 실수일 것입니다. 앞서 언급한 것처럼 Glue Operator는 JSL의 모든 명령 끝에 표시되는 세미콜론(";")입니다. 빨간색 삼각형 메뉴를 사용하여 스크립트 창에 스크립트를 저장하는 경우(참조 이전 게시물 ), JMP는 필요한 곳에 접착제를 추가합니다. 코드를 수동으로 작성하는 경우 어딘가에 코드를 잊어버리지 않았는지 확인하는 데 사용할 수 있는 방법이 있습니다. 스크립트 편집기를 마우스 오른쪽 버튼으로 클릭하고 재포맷 스크립트 .

이 트릭은 실제로 스크립트에서 기본 구문 관련 오류를 많이 잡아냅니다. 스크립트 편집기에 있을 때 키보드 단축키도 있습니다(그러나 "스크립트 편집기 상자"에서는 작동하지 않습니다). 나는 키보드 단축키를 선호합니다. Windows의 경우 CTRL+M . MacOS의 경우 명령+M .
이제 오류가 있을 때 Reformat Script가 알려주는 내용을 압축 해제하는 방법을 보여주기 전에 나를 미치게 만드는 다른 오류를 보여드리겠습니다. 두 가지 모두 유사한 디버깅 작업 흐름을 사용하므로 잠시 후에 이해가 될 것이라고 약속합니다.
괄호
괄호(괄호, 중괄호 등)를 제자리에서 벗어나게 하는(또는 누락된) 것은 아마도 추적하기 가장 교활한 버그일 것입니다. 그리고 내 말은 그것이 특별한 좀 실망스럽네요. JMP에는 일치하지 않는 괄호 쌍을 추적하는 데 도움이 되는 도구가 하나 있습니다. 커서를 괄호 바깥쪽에 놓으면 스크립트 편집기는 해당 괄호(및 일치한다고 생각하는 항목)를 파란색으로 강조 표시합니다.

스크립트 편집기가 혼란스럽거나 일치하는 항목을 찾을 수 없는 경우 괄호가 빨간색으로 강조 표시됩니다.

따라서 괄호에 대한 파란색 일치 항목이 예상한 위치와 다르거나 괄호가 빨간색으로 강조 표시되면 문제가 있을 수 있습니다.
괄호 누락으로 인해 오류가 발생하면 오류가 사라질 때까지 계속해서 괄호를 추가하고 싶은 유혹을 느낄 수 있습니다. 그것은 나쁜 생각이라고 말하고 이 문제와 접착제 누락 문제에 대한 더 나은 전략으로 넘어가겠습니다. 그리고 둘 다 JMP의 스크립트 편집기 설정을 중심으로 진행됩니다.
성공을 위한 스크립트 편집기 설정(및 사용)
JMP 스크립트 편집기(우리는 이전 게시물 )에는 코드 작업과 디버깅을 더 쉽게 해주는 다양한 기능이 있습니다. 내 기본 설정에는 기본적으로 이 기능이 설정되어 있으며 여러분도 똑같이 하시길 권합니다. JMP 기본 설정 대화 상자에 액세스하려면 다음을 선택합니다. 환경설정 JMP 메뉴(MacOS) 또는 파일 메뉴(PC)에서

스크린샷에서 정말 유용하다고 생각되는 옵션을 강조했습니다. 코드 접기는 더 큰 스크립트에 유용합니다. 현재 논의에서는 줄 번호와 자동 완성 옵션이 더 중요합니다.
로그를 사용하는 방법
이제 스크립트 편집기를 설정했으므로 로그를 사용하는 방법을 알아보겠습니다. 먼저 로그를 열려면 다음으로 이동하세요. 보기 > 로그 ( 창 > 로그 Mac에서는). 그러면 스크립트 편집기와 유사한 창이 열립니다. 스크립트 편집기와는 다릅니다. 산출 스크립트 편집기에서 실행되는 명령의 결과. 입력과 출력을 동일한 창에 유지하려면 스크립트 편집기를 마우스 오른쪽 버튼으로 클릭하고 다음을 선택하여 스크립트 편집기에서 내장 로그를 켤 수 있습니다. 내장된 로그 표시 .

이 스크립트를 사용하여 어떻게 작동하는지 살펴보겠습니다.

스크립트는 매우 간단합니다. 2행과 주석을 제외하고는 다음을 사용하여 생성되었습니다. 스크립트 저장...스크립트 창으로 . 내가 달리면 재포맷 스크립트 (스크립트 창에서 마우스 오른쪽 버튼을 클릭해도 찾을 수 있음) 다음과 같은 오류 메시지가 나타납니다.

로그에 비슷한 내용이 표시됩니다.

회색 영역에서는 입력된 내용을 확인할 수 있습니다. 그 아래에는 예상치 못한 문제에 대한 메시지와 문제가 될 수 있는 사항에 대한 제안이 표시됩니다. 이 경우 JMP는 글루(;)가 누락된 것으로 간주합니다. 또한 줄 번호와 함께 스크립트에서 예상치 못한 입력이 발생한 위치를 알려줍니다. JSL은 위에서 아래로 순차적으로 실행되므로 오류가 5행 위 어딘가에 있음을 의미합니다. 줄 번호가 켜져 있으므로 줄 2에 Glue Operator가 누락되어 있음을 알 수 있습니다. 이는 JMP가 줄 5에서 시작할 새 명령을 기대하지 않고 예상치 못한 상황에 처했다는 의미입니다. 2행 끝에 세미콜론을 추가한 후 실행합니다. 재포맷 스크립트 오류를 반환해서는 안 됩니다.
마찬가지로, 다음과 같이 대괄호 쌍(예: 괄호)의 일부가 누락된 경우(7행 참고):

다음과 같은 오류 메시지가 표시됩니다.

로그 메시지와 함께:

JMP의 메시지는 다소 덜 명확하지만 이를 해석하는 방법은 다음과 같습니다. 첫째, 오류 메시지를 통해 배포판에 문제가 있음을 알 수 있습니다. 로그와 오류 메시지 사이 어딘가에 괄호가 누락되었을 가능성이 높습니다. 로그에는 라인 11에서 예상치 못한 일이 발생했다고 나와 있습니다(“열…”이 때때로 도움이 될 수 있지만 이를 사용하려면 문자 수를 세어야 함). 괄호를 강조 표시하는 색상은 첫 번째 괄호에 해당 쌍이 없음을 나타냅니다(커서를 왼쪽에 놓은 후 5행의 Distribution 옆에 있는 괄호의 빨간색을 참고하세요).

강조 표시를 사용하여 누락된 항목이 어디로 가야 하는지 파악합니다(이 경우 7행). 대부분의 경우 로그는 JMP가 생각하는 진행 상황을 보여주는 매우 유용한 창입니다. 그러나 JSL의 오류를 확인하거나 코드를 단계적으로 진행하려는 경우 이를 위한 또 다른 도구가 있습니다.
JSL 디버거를 사용하는 방법
JSL 디버거는 약간 이상한 짐승입니다. 실수로 디버거 버튼을 누른 경우:

아마도 실행 중에 JMP의 기본 인터페이스가 잠긴다는 사실을 이미 알고 계실 것입니다. 제가 스크립팅을 시작했을 때는 실제로 많이 사용하지 않았습니다. 이제 개발팀과 이에 대해 몇 차례 대화를 나눴으니 이제 그 문제를 해결할 수 있을 것 같다고 말할 수 있습니다. 그것에 대해 조금 이야기하고 그것이 무엇을 할 수 있는지 이야기합시다.
첫째, JMP를 잠그는 것과 관련된 내용입니다. 약간 혼란스럽기는 하지만 실제로 수행하는 작업은 디버깅을 실행하기 위한 두 번째 JMP 인스턴스를 생성하는 것입니다. JSL 디버거가 활성화되어 있는 동안 JMP의 기본 인스턴스는 응답하지 않습니다. JSL 디버거를 닫으면 제어권을 다시 얻을 수 있습니다.
JSL 디버거를 실행하면 다른 JMP 인스턴스와 함께 JSL 디버거 창이 표시됩니다. 이 창에는 코드, 다양한 변수 목록, 로그 및 기타 정보가 포함되어 있습니다. 다음과 같이 보입니다.

디버깅할 때 이 창을 통해 JMP에서 스크립트가 수행하는 작업을 눈과 귀로 볼 수 있습니다. 두 번째 화면이 있는 경우 그곳으로 이동하여 항상 볼 수 있도록 하세요(때때로 다른 창 뒤에 묻혀 있을 수도 있음).
이제 JSL 디버거로 수행할 수 있는 모든 작업을 설명하는 데 열중할 수 있지만 설명서에는 찾을 수 있는 훌륭한 장(예제 포함!)이 있습니다. 여기 .
좋은 것도 있다 Melanie Drake의 블로그 게시물 ( @Melanie_J_Drake ) JSL 디버거를 사용하여 수행할 수 있는 몇 가지 멋진 작업을 다룹니다. 그러니 잡초 속으로 조금 들어가고 싶다면 그것들을 살펴보십시오. 우리의 목적을 위해 다음 버튼에 주의를 기울이시기 바랍니다.

처음 두 개는 스크립트를 실행합니다. 첫 번째는 스크립트를 끝까지 실행하거나 중단점(전체 스크립트를 실행하지 않으려는 경우 평가를 중지하려는 지점)이 발생하는 지점까지 실행합니다. JSL 디버거에서 줄 번호 옆을 마우스 오른쪽 버튼으로 클릭하여 코드에 중단점을 설정할 수 있습니다. 해당 줄 옆에 빨간색 점이 나타납니다(중단점은 주석이 아닌 코드 줄에 있어야 합니다!).

첫 번째 스크립트를 사용하여 이 스크립트를 실행하려는 경우 달리다 버튼을 누르면 라인 10까지 실행된 다음 중지됩니다. 두 번째 누르기 달리다 버튼을 누르면 스크립트가 완료됩니다. 두번째 달리다 버튼은 중단점에 주의를 기울이지 않고 전체 스크립트를 실행합니다. 빨간색 정지 버튼 디버거를 종료합니다. 이는 실수로 디버거를 열었거나 디버깅 세션을 마친 경우에 유용합니다. 그만큼 반복하다 버튼은 스크립트를 다시 실행하기 위해 모든 것을 재설정합니다(예: 중단점 위치를 변경한 다음 코드를 다시 실행하려는 경우).
숙제
이번주 숙제는 꽤 가벼워요. 스크립트 편집기를 설정하고, 로그를 찾고, 설명서의 일부 예제 스크립트를 사용하여 JSL 디버거를 사용해 보시기 바랍니다. 디버거 창 왼쪽 하단에 있는 탭에 어떤 변수가 팝업되는지 살펴보세요. 또한 다음을 찾아보세요. 통나무 탭을 탭하세요(그래서 어디에 있는지 알 수 있습니다).
다음 주에는 우리가 다룰 "코딩"의 마지막 부분을 살펴보겠습니다. 이 시리즈 .