본문으로 건너뛰기

실험 편집기 ​

실험은 그래프로 쓴 테스트입니다: 보내는 노드(HTTP 요청, OSC 메시지, MQTT 발행…), 응답을 기다리는 노드, 돌아온 것을 검사하는 노드, 상대편 역할을 하거나 신호에 맞춰 네트워크를 끊는 노드가 다음에 무엇이 도는지 말해 주는 연결선으로 이어집니다. 실행은 시작에서 시작해 연결선을 따라가고, 모든 단계가 통과한 채 종료에 도달하면 통과합니다. 실험 화면에서 만들고 그곳에서 실행하며, 같은 파일을 명령줄이나 서버에서 실행할 수도 있습니다.

편집기는 한 번에 실험 하나를 담고, 작업하는 대로 저장합니다. 여러 개를 보관하려면 스냅숏을 내보내거나 다른 파일을 여십시오(저장과 파일 참고).

모든 종류의 노드와 그 필드와 출력은 노드 참조에 있습니다. 값이 노드 사이를 흐르는 방식은 데이터와 템플릿, 병렬 분기, 루프, 재시도, 반복은 흐름에 있습니다.

화면 ​

영역담는 것
도구 모음(위)실험의 이름과 저장 상태, 노드 추가, 매개변수, 프로필, 창, 포커스 모드, 전체 화면, 실행
캔버스 표시줄실행 취소와 다시 실행, 노드 찾기, 자동 정렬, 확대/축소
캔버스그래프: 노드, 연결선, 그 위에 그려지는 실행의 진행 상황
속성 (오른쪽)선택한 노드의 필드, 미리보기, 지금 보내기; 또는 선택한 여러 노드나 선택한 연결선이 허용하는 것
실행 타임라인 (아래)현재 또는 마지막 실행의 단계, 결과, 보고서, 시드

속성 창과 타임라인은 안쪽 가장자리에 손잡이가 있습니다: 끌거나 Tab으로 포커스를 옮기고 화살표 키를 쓰십시오(더 큰 단계는 Shift). 두 번 클릭하거나 Enter를 누르면 창이 기본 크기로 돌아옵니다. 크기는 다음을 위해 유지됩니다. 타임라인은 첫 실행이 열 때까지 접혀 있습니다.

도구 모음 ​

컨트롤하는 일
☰ 실험템플릿, JSON 파일 열기, 내보내기를 엽니다(저장과 파일)
실험 이름실험의 이름. 실행에는 이름이 필요합니다. 실행 보고서가 이름을 기록하고, 비교가 그 이름으로 이전 실행을 찾습니다
저장됨 / 저장 중… / 저장 실패마지막 변경이 디스크에 있는지
⚠ 그래프를 완성하십시오실험이 실행될 수 없는 동안 표시됩니다. 툴팁이 이유를 말하고, 클릭하면 관련 노드가 선택됩니다(검사)
+ 노드 추가추가 메뉴를 엽니다. 선택한 노드가 있으면 그 뒤에(A)
프로필실행, 미리보기, 지금 보내기에 쓰이는 프로필. 실험에 프로필이 있으면 표시됩니다. ⚠는 실행되지 않을 프로필을 표시합니다
{ } 매개변수매개변수, 프로필, 시드, 쿠키, 시크릿(데이터와 템플릿)
☷ 속성속성 창을 표시하거나 숨깁니다
▢ 포커스 모드사이드바, 헤더, 하단 패널을 숨깁니다(포커스 모드와 전체 화면)
⛶ 전체 화면포커스 모드와 함께 창을 전체 화면으로
실험 실행실험을 검사하고, 저장하고, 실행합니다. 실행 중에는 버튼이 중지입니다
▾ 값 지정 실행…실험을 바꾸지 않고 다른 프로필, 다른 매개변수 값, 지정한 시드로 한 번 실행합니다

캔버스에서 이동하기 ​

  • 이동: 빈 캔버스를 끌거나 스크롤합니다.
  • 확대/축소: Ctrl과 마우스 휠은 포인터를 중심으로 확대/축소합니다; 캔버스 표시줄의 −와 +는 10 %씩 움직입니다. 확대/축소는 15 %에서 200 %까지이며, 버튼 사이의 백분율이 현재 위치를 보여 줍니다.
  • 1:1(배율 초기화, Ctrl+1)은 100 %로 돌아갑니다.
  • ⊡ 그래프 맞춤 (Ctrl+0)은 전체 그래프를 최대 100 %로 보여 줍니다.
  • 노드 찾기: 캔버스 표시줄의 노드 (노드 수를 표시합니다) 또는 Ctrl+F. 노드 이름, 요약(URL, 주소, 토픽), id에서 단어를 입력하십시오; ↑ ↓로 고르고, Enter로 노드를 선택해 화면 안으로 가져오며(최소 80 %로 확대), Esc로 닫습니다.

미니맵은 없습니다: 그래프 맞춤과 찾기가 그 일을 합니다.

노드와 연결선 ​

노드는 그 종류, 무엇을 하는지에 대한 한 줄 요약, 설정의 배지를 보여 줍니다: 재시도에는 ↻와 숫자, 반복에는 ×와 횟수(또는 시간), 부하에는 ⚡입니다. 입력은 왼쪽에 있고 — 시작를 뺀 모든 노드에 하나씩 있습니다 — 출력은 오른쪽에 있습니다:

출력있는 곳따르는 때
출력대부분의 노드단계가 통과했을 때
예 / 아니요상태 분기, 값 분기비교가 참 / 거짓이었을 때
분기 1 / 분기 2병렬 분기항상, 둘 다 동시에
일치 / 시간 초과기다리기일치하는 메시지가 도착 / 제때 오지 않음
본문 / 완료 / 한도루프또 한 번 반복 / 루프가 끝남 / 반복 횟수가 다함

한 출력에는 여러 연결선이 있을 수 있습니다. 첫 연결선은 분기를 이어가고, 그 뒤의 각 연결선은 그 시점에 알려진 변수의 복사본을 가진 병렬 분기를 시작합니다. 분기 합류 노드는 그리로 들어오는 모든 연결선을 기다립니다. 자세한 내용은 흐름에 있습니다.

시간 초과과 한도은 선택 사항입니다: 연결하지 않으면 시간 초과나 반복 횟수 소진이 단계를 실패시킵니다. 그 밖의 모든 출력은 실험이 실행되기 전에 연결선이 있어야 합니다.

루프의 본문에서 그리로 돌아오는 연결선은 본문 위의 호로 그려집니다. 뒤로 갈 수 있는 유일한 연결선입니다.

노드 추가하기 ​

추가 메뉴 ​

추가 메뉴는 모든 종류의 노드를 그룹별로 나열합니다 — 동작, 대기, 에뮬레이션, 장애 주입, 데이터, 검사, 흐름 — 그다음 저장된 신호: 노드가 될 수 있는 라이브러리의 신호(OSC, 텍스트 페이로드를 가진 UDP, MQTT)이며, 필드가 채워진 상태로 나옵니다.

검색 필드에는 열릴 때 포커스가 있습니다. 몇 글자 입력하십시오: 모든 단어가 노드의 이름, 설명, 종류(http, wait_osc)에 나타나야 합니다. 신호는 이름, 폴더, 전송 방식, 대상으로 찾습니다. ↑ ↓로 고르고, Enter로 추가하고, Esc로 닫습니다. 맨 위 줄은 노드가 어디로 가는지 말합니다: 어떤 노드 뒤에, 또는 어떤 노드와 병렬로.

새 노드가 선택되고, 속성 창이 열리며, 주 필드 — URL, 주소, 토픽, 지연 — 에 포커스가 가고 텍스트가 선택되어 바로 입력할 수 있습니다. 필드에서 Esc를 누르면 캔버스의 노드로 돌아가 다음 A를 받을 준비가 됩니다.

선택한 노드 뒤에 ​

A, 도구 모음의 + 노드 추가, 속성 창의 + 다음에 추가는 선택한 노드 뒤에 다음 단계를 추가합니다:

  • 아직 연결선이 없는 노드의 첫 번째 출력(예를 들어 상태 분기의 비어 있는 아니요)에 붙거나, 아니면 첫 번째 출력에 붙습니다.
  • 그 출력에 이미 연결선이 있으면 새 노드가 그 연결선에 끼워집니다(여러 개면 첫 번째에). 연결선이 이제 새 노드를 지나가고, 그 뒤의 모든 것이 자리를 만들기 위해 오른쪽으로 밀립니다.
  • 종료가 선택되어 있으면, 연결선 하나가 그리로 이어질 때 노드가 그 앞에 갑니다.
  • 아무것도 선택하지 않았으면 노드가 연결선 없이 보기의 가운데에 놓입니다.

출력이 하나뿐인 노드를 루프의 빈 본문에 놓으면 — 이 방식이든 새 연결선으로든 — 그리로 되돌아가는 연결선도 생겨 본문이 한 번에 완성됩니다.

연결선 안으로 ​

모든 연결선 가운데에는 +(노드 삽입)가 있습니다. 이것이 추가 메뉴를 열고, 고른 노드가 그 연결선에 끼워집니다. 이렇게 끼워 넣은 루프은 완료을 통해 흐름을 이어갑니다.

새 연결선으로 ​

출력에서 연결선을 끌어 빈 캔버스에서 놓으십시오: 거기서 추가 메뉴가 열리고, 새 노드가 그 출력의 새 연결선에 — 이미 있는 연결선들 옆에 — 놓여 그들과 병렬로 돕니다. 출력을 클릭한 다음 빈 캔버스를 클릭하거나, 출력을 두 번 클릭해도 마찬가지입니다.

어디에나 ​

빈 캔버스를 두 번 클릭하면 그 자리에 연결선 없이 노드가 추가됩니다.

다른 화면에서 ​

  • OSC와 HTTP 화면의 실험에 추가는 방금 시도한 것을 다음 단계로 추가하고 — 연결선 하나가 종료로 이어질 때는 바로 그 앞에 — 편집기로 전환합니다.
  • OSC 모니터의 메시지 옆에 있는 이 메시지 대기는 그것을 알아보는 OSC 대기를 추가합니다: 주소와 텍스트, 정수와 참/거짓 인수입니다(실수는 변하는 측정값이라 빠집니다). 실행 전에 모니터를 멈추십시오: 실행이 그 포트에서 직접 수신합니다.
  • MQTT 트리의 토픽에 있는 이 메시지 대기는 그 브로커의 그 토픽에 MQTT 대기를 추가합니다.

실행이 도는 동안에는 노드를 추가할 수 없습니다. 콘솔이 그렇게 말합니다.

노드 연결하기 ​

  • 끌기: 출력에서 노드 위로 끕니다. 노드 24픽셀 안에서 놓으면 됩니다.
  • 클릭: 출력을 클릭합니다(또는 포커스를 두고 Enter나 Space를 누릅니다). 캔버스 표시줄이 입력 포트 선택이라고 말합니다. 노드나 그 입력을 클릭하면 연결되고, 빈 캔버스를 클릭하면 새 연결선으로 노드를 추가하며, 취소나 Esc는 포기합니다.

연결선은 순환을 만들 때(루프의 되돌아가는 길 외에), 시작로 들어가거나 종료에서 나갈 때, 또는 노드를 자기 자신에 연결할 때 거부됩니다. 편집기가 그렇게 말합니다. 이미 있는 연결선을 그려도 아무것도 바뀌지 않습니다.

연결선을 제거하려면 그것을 클릭하고 — 속성 창이 무엇을 연결하는지 보여 줍니다 — Delete를 누르거나 거기서 연결 제거를 쓰십시오. 연결선에 포인터를 올리면 + 위에 ×도 나타납니다. 노드의 속성은 나가는 연결선을 나열하며, 각각 ×(연결 해제)가 있습니다.

여러 노드 선택하기 ​

하려면이렇게
노드 선택클릭하거나 Tab으로 이동
선택에 노드를 더하거나 빼기Shift 또는 Ctrl과 클릭
프레임으로 선택빈 캔버스에서 Shift를 누르고 끌기: 프레임이 닿는 모든 노드가 선택에 들어갑니다
모든 노드 선택Ctrl+A
선택 해제빈 캔버스를 클릭; 여러 개가 선택된 상태에서 Esc
이동하나를 끌면 모두 움직입니다
조금씩 이동노드에 포커스가 있을 때 화살표 키가 선택을 5픽셀, Shift와 함께면 20픽셀 움직입니다

속성 창은 마지막으로 고른 노드를 보여 줍니다. 여러 개가 선택되면 몇 개인지와 복사, 복제, 노드 삭제를 보여 줍니다.

복사, 잘라내기, 붙여넣기 ​

Ctrl+C는 선택한 노드와 그 사이의 연결선을 텍스트로 복사합니다; Ctrl+X는 그것들을 제거하기도 하고, Ctrl+V는 붙여넣습니다 — 이 실험에, 나중에 연 다른 실험에, 또는 다른 Signal Lab 창에. 텍스트는 JSON이므로 파일이나 메시지에 보관할 수도 있습니다.

  • 시작와 종료는 하나뿐입니다: 절대 복사되지 않습니다.
  • 복사한 노드와 그래프의 나머지 사이의 연결선은 복사되지 않습니다; 복사본을 직접 연결하십시오.
  • 붙여넣은 모든 노드는 새 id를 받습니다.
  • 다른 노드를 지목하는 노드 — 장애 변경, 에뮬레이터 다운/복구, WebSocket 보내기, WebSocket 대기, WebSocket 닫기 — 는 그 노드도 복사되었으면 복사본을 지목합니다; 아니면 이 실험에 원본이 있으면 원본을, 없으면 여기서 그 종류의 첫 노드를 계속 지목합니다.
  • 붙여넣은 에뮬레이터나 네트워크 장애의 포트를 이 실험이 이미 수신하고 있으면 다음 빈 포트로 옮깁니다. 원본으로 보내는 것은 여전히 그렇게 합니다.
  • 복사본은 원래 있던 곳에서 오른쪽으로 32픽셀, 한 줄 아래에 놓이고, 어떤 노드도 덮지 않을 때까지 더 내려가며, 선택됩니다.

Ctrl+D(복제)는 클립보드 없이 같은 일을 합니다.

삭제 ​

Delete나 Backspace(노드 삭제, 노드 삭제)는 선택한 노드와 그 연결선을 제거합니다. 연결선이 정확히 하나 들어오고 하나 나가던 노드는 그 자리에 앞 노드에서 뒤 노드로 가는 연결선을 남기므로, 사슬이 연결된 채로 남습니다. 시작와 종료는 삭제할 수 없습니다.

실행 취소와 다시 실행 ​

Ctrl+Z는 실행 취소합니다; Ctrl+Shift+Z나 Ctrl+Y는 다시 실행합니다(캔버스 표시줄의 ↶ ↷). 끌기, 화살표 키로 조금씩 움직인 연속, 한 필드에서의 입력은 한 단계입니다. 마지막 100단계가 앱이 열려 있는 동안, 화면 전환을 넘어 유지됩니다; 다른 실험을 여는 것도 한 단계라서 Ctrl+Z가 이전 실험을 되돌립니다. 실행이 도는 동안에는 실행 취소와 다시 실행이 기다립니다.

자동 정렬 ​

자동 정렬는 그래프를 왼쪽에서 오른쪽으로 배치합니다: 각 노드를 그리로 이어지는 마지막 노드 다음 열에, 루프의 본문은 자기 행에 — 그런 다음 보기를 맞춥니다. 이것은 기록의 한 단계입니다. 루프의 것이 아닌 순환이 있는 초안은 그대로 둡니다.

속성 창 ​

노드 하나가 선택되면 창은 위에서 아래로 이렇게 보여 줍니다:

  1. 노드의 이름(툴팁이 무엇을 하는지 말합니다)과, 이 노드 때문에 실험이 실행될 수 없을 때 무엇이 잘못되었는지.
  2. 필드. 템플릿을 받는 필드는 {{를 입력할 때나 Ctrl+Space로 매개변수, 변수, 시크릿, 생성기를 제안합니다.
  3. 설정: HTTP 요청의 부하 전송, 보내는 노드의 반복 전송, 보내거나 수신 대기하는 노드의 실패 시 재시도, OSC와 UDP 메시지의 회신 대기 (노드 설정 참고). 부하는 켜져 있는 동안 반복과 재시도를 대체합니다.
  4. 부하로 실행된 HTTP 노드에서 마지막 실행의 부하 결과.
  5. 미리보기 — 보낼 내용, 기다릴 대상, 비교할 내용 — 노드에 템플릿이 있을 때: 현재 매개변수와 지금까지 알려진 값으로 채워진, 보낼 내용, 기다릴 대상, 비교할 내용(지금 보내기와 미리보기 참고).
  6. 지금 보내기나 지금 수신 대기, 그리고 마지막으로 한 일.
  7. 나가는 연결선, 각각 ×와 함께.
  8. OSC나 UDP 메시지의 ⚡ 네트워크 장애 경유: 네트워크 장애가 노드 앞에 놓이고 — 9010부터 올라가는 빈 루프백 포트에서 수신하며 노드의 대상으로 전달합니다 — 노드가 그것을 가리키게 되어, 다음 실행이 보내는 것을 열화시킵니다(장애 주입 참고).
  9. + 다음에 추가, 복사, 복제 및 노드 삭제.

노드를 두 번 클릭하면 커서가 주 필드에 있는 채로 창이 열립니다. 여러 노드가 선택되면 창은 모두에게 할 수 있는 일을, 연결선이 선택되면 무엇을 연결하는지와 연결 제거를 보여 줍니다. 실행이 도는 동안에는 필드가 잠깁니다.

지금 보내기와 미리보기 ​

지금 보내기 (Ctrl+Enter, 노드의 필드 안에서도)는 실험을 실행하지 않고 선택한 노드를 실행이 쓰는 것과 같은 코드로 혼자 보냅니다. HTTP 요청, TCP 메시지, OSC 메시지, UDP 데이터그램, MQTT 발행, WebSocket 연결, WebSocket 보내기에서 제공됩니다. 기다리기에서는 지금 수신 대기입니다: 기다리기는 지금부터 메시지가 일치하거나 시간 초과가 끝날 때까지 수신합니다.

  • 노드는 활성 프로필, 저장된 시크릿, 지금까지 알려진 변수 값 — 마지막 실행과 이전 지금 보내기 결과에서 — 을 씁니다. 아직 아무도 설정하지 않은 값을 템플릿이 지목하면 아무것도 보내지 않고 그 이름들을 나열합니다.
  • 한 번만 보냅니다: 재시도, 반복, 부하는 적용되지 않고, 쿠키도 보관하지 않으며, 실험의 에뮬레이터와 릴레이는 시작되지 않습니다.
  • WebSocket 보내기나 WebSocket 대기는 그 한 번의 테스트를 위해 WebSocket 연결가 설명하는 연결을 엽니다.
  • HTTP 요청에서는 응답이 표시됩니다 — 상태, 시간, 크기, 그리고 JSON 형식의 본문. 요청 뒤의 값 추출 노드가 가져갈 값이 즉시 채워집니다. JSON 응답의 값을 클릭하면 요청 바로 뒤에 그 값을 위한 값 추출 노드가 추가되고, 변수 이름이 지정되며 값이 알려집니다. 모의 응답 만들기는 응답을 에뮬레이터의 라우트로 바꿉니다.
  • 결과는 콘솔에도 기록됩니다.

미리보기도 엔진이 채우며, 변경 후 약 4분의 1초 뒤입니다. 시크릿 값은 거기서도, 어디서도 절대 표시되지 않습니다.

검사 ​

편집기는 편집하는 동안 실험을 검사하고, 실험 실행을 누를 때 한 번 더 검사합니다:

  • 아직 연결선이 필요한 출력은 호박색으로 맥동합니다.
  • 시작에서 오는 연결선이 닿지 않는 노드는 점선으로 그려집니다; 툴팁이 그렇게 말합니다.
  • 문제가 있는 노드에는 윤곽이 그려지고, 문제가 그 필드 위에 쓰입니다.
  • 도구 모음의 ⚠ 그래프를 완성하십시오가 문제를 말합니다; 클릭하면 그 노드가 선택됩니다.

실험은 여러 조건 중에서도 다음을 만족할 때 실행됩니다:

  • 이름이 있고, 시작와 종료가 정확히 하나씩 있으며, 노드가 최대 64개입니다;
  • 모든 노드가 시작에서 닿을 수 있고 모든 필수 출력에 연결선이 있습니다;
  • 유일한 순환은 루프 노드의 본문이 그리로 되돌아가는 것입니다;
  • 모든 검사와 값 추출가 모든 경로에서 그 앞에 HTTP 요청을 가집니다(부하 상태의 요청은 세지 않습니다: 응답을 남기지 않습니다);
  • WebSocket 보내기, WebSocket 대기, WebSocket 닫기가 그것이 쓰는 WebSocket 연결 뒤에 옵니다;
  • 모든 필드가 채워지고 범위 안에 있으며, 모든 템플릿이 그 시점에 알려진 무언가를 지목합니다.

미완성 초안도 똑같이 저장됩니다. 필요한 시크릿이 저장되어 있지 않으면 어떤 트래픽도 보내기 전에 실행이 거부됩니다. 모든 메시지는 오류 참조에 나열됩니다.

실행 ​

실험 실행은 실험을 검사하고, 저장하고, 시작합니다. 실행할 수 없으면 문제가 표시되고 그 노드가 선택됩니다. 그러지 않으면 타임라인이 열리고 실행이 노드에 닿을 때마다 노드가 켜집니다: ● 실행 중, ✓ 통과, ✕ 실패, ↻ 재시도 중, ⟳ 반복 중, ⚡ 부하 중; 흐름을 실어 나른 연결선에도 색이 입혀집니다.

  • 기다리기, 에뮬레이터, 장애 릴레이는 첫 단계 전에 포트를 열므로, 일찍 도착한 것을 놓치지 않습니다. 열 수 없는 포트(예를 들어 다른 프로그램이 쓰고 있는 경우)는 실행이 시작되지 않게 하고, 그것을 필요로 하는 노드가 표시됩니다.
  • 중지은 실행을 즉시 끝냅니다: 일시 정지, 기다리기, 부하까지 포함합니다. 실행은 콘솔의 작업 표시줄에 작업으로도 나타나며, 거기서도 멈출 수 있습니다.
  • 300초보다 오래 걸리는 실행은 중지되고 실패합니다.
  • 실행이 도는 동안에는 실험을 편집할 수 없습니다; 이동, 확대/축소, 선택은 여전히 됩니다.

버튼 옆의 ▾ 값 지정 실행…는 다른 프로필, 다른 매개변수 값, 지정한 시드로 한 번 실행합니다; 실험 자체는 바뀌지 않고, 양식은 앱이 닫힐 때까지 입력한 것을 유지합니다(데이터와 템플릿).

실행 타임라인 ​

실행 타임라인은 단계마다 한 행을 나열합니다: 시각, 노드, 일어난 일 — 통과, 실패와 이유, 재시도, 반복의 진행, 1초에 한 번의 부하 수치. 행을 클릭하면 캔버스에서 그 노드가 선택됩니다.

제목 줄에는 다음이 담깁니다:

  • 결과: 통과, 이유와 함께 실패, 또는 중지됨;
  • 보고서 저장됨 — 실행의 보고서 파일(서버에서는 다운로드);
  • 비교 — 이 실행을 같은 실험의 이전 실행 옆에;
  • 실행이 쓴 프로필과 바뀐 값(있었을 때);
  • 실행의 시드, 그리고 다음 실행이 같은 임의 값을 뽑도록 실험에 고정하는 고정, 고정된 뒤에는 고정 해제.

인스펙터가 캡처 중이었을 때, 일치한 기다리기(또는 회신 대기)는 일치한 프레임으로 연결됩니다; 클릭하면 인스펙터에서 열립니다. 보고서, 시드, 실행 비교는 실행과 보고서에 있습니다.

포커스 모드와 전체 화면 ​

▢ 포커스 모드는 사이드바, 헤더, 하단 패널(콘솔과 인스펙터)을 숨겨 화면을 편집기에 내줍니다. ⛶ 전체 화면은 창을 전체 화면으로 하고 포커스 모드를 켭니다; 전체 화면을 나가면 포커스 모드가 원래대로 돌아갑니다. 다른 화면으로 전환하면 포커스 모드가 풀립니다.

캔버스에서 Esc는 닫을 것이 없을 때 전체 화면을 나가고, 그다음 포커스 모드를 나갑니다.

저장과 파일 ​

실험은 변경 후 잠시 뒤 데이터 폴더(데스크톱에서는 Documents/SignalLab, 서버에는 따로 있습니다 — 파일과 폴더 참고)의 experiment.json에 스스로 저장됩니다. 아직 실행할 수 없는 초안도 저장됩니다. 실행은 먼저 저장하므로, 실행된 것이 디스크에 있는 것입니다.

그 파일을 읽을 수 없으면 — 예를 들어 손으로 편집해 JSON을 망가뜨린 경우 — 편집기가 어느 파일인지와 이유를 말하고 그 파일을 그대로 둡니다. 그러고 나서 ☰ 실험에서 다른 실험을 열면 다음 저장 때 그것을 대체합니다.

☰ 실험는 실험 대화 상자를 엽니다:

  • 템플릿: 하나를 고르고 실험 열기를 누릅니다. 모두 루프백 주소를 씁니다.
  • JSON 열기…은 실험 파일 — 이 버전의 Signal Lab이나 이전 버전이 쓴, 최대 4 MiB — 을 읽고 열기 전에 그 이름과 노드와 연결 수를 보여 줍니다. 이전 버전의 파일은 열 때 최신으로 맞춰집니다. 파싱되지 않거나 유효한 실험이 아닌 파일은 이유와 함께 거부되고, 현재 실험은 그대로 남습니다.
  • 현재 JSON 내보내기은 현재 실험의 스냅숏 — 노드, 연결선, 위치, 매개변수, 프로필, 결코 시크릿 값이 아닌 — 을 데이터 폴더의 exports에 새 파일로 쓰고 그 경로를 보여 줍니다; 서버에서는 다운로드 링크와 함께.
  • 실험 열기는 현재 실험을 템플릿이나 파일로 대체합니다. 실행하지 않으며, Ctrl+Z가 이전 것을 되돌립니다.
템플릿하는 일
빈 실험직접 흐름을 만들 수 있는 시작와 종료
HTTP 검사http://127.0.0.1:8080/로 GET 요청을 보내고 상태 200을 검사 — 처음 시작하는 실험
HTTP에서 OSC로같은 요청; 200이면 127.0.0.1:9000으로 OSC 메시지, 아니면 500 ms 지연
병렬 흐름한 번에 두 분기 — 요청과 로그 줄 — 가 종료 앞에서 합쳐짐
OSC ping → 회신실행의 id를 담아 127.0.0.1:9000으로 /ping을 보내고, 127.0.0.1:9001에서 그것을 돌려주는 /pong을 기다림
준비될 때까지 폴링장치에 ready라고 응답할 때까지 0.3 s마다 /status를 물음, 최대 열 번
불안정한 API 재시도응답하기 전에 두 번 실패하는 에뮬레이션된 API와, 응답할 때까지 묻는 루프
장애 구간병렬 분기가 네트워크를 정상, 손실, 오프라인, 다시 정상으로 전환하는 동안 장애 릴레이를 거쳐 에뮬레이션된 장치로 데이터그램을 보냄
의존 서비스 중단병렬 분기가 에뮬레이션된 API를 2초 동안 다운시키고, 클라이언트는 다시 응답할 때까지 계속 물음
WebSocket 에코ws://127.0.0.1:9001/echo의 에코 서비스에 연결해 JSON ping을 보내고, 그대로 돌아오는지 확인한 뒤 연결을 닫음

같은 파일은 편집기 없이도 실행됩니다: signallab run experiment.json — 명령줄 참고.

키보드 단축키 ​

단일 키는 캔버스에서 동작하며, 필드에 입력하는 동안에는 그대로 둡니다. Mac의 브라우저에서는 Ctrl이라고 쓰인 곳에서 Cmd가 동작합니다.

키동작
A선택한 노드 뒤에 노드를 추가, 아무것도 선택하지 않았으면 보기 가운데에
Ctrl+Enter선택한 노드에 지금 보내기 또는 지금 수신 대기
Ctrl+Z실행 취소
Ctrl+Shift+Z, Ctrl+Y다시 실행
Ctrl+A모든 노드 선택
Ctrl+C / Ctrl+X / Ctrl+V선택한 노드와 그 사이의 연결선을 복사 / 잘라내기 / 붙여넣기
Ctrl+D선택한 노드 복제
Delete, Backspace선택한 연결선 또는 선택한 노드 제거
화살표 키(노드에 포커스)선택한 노드를 5픽셀 이동; Shift와 함께면 20픽셀
Ctrl+F노드 찾기
Ctrl+0그래프 맞춤
Ctrl+1100 %로 확대
Ctrl + 마우스 휠포인터를 중심으로 확대/축소
Shift + 클릭, Ctrl + 클릭선택에 노드를 더하거나 빼기
빈 캔버스에서 Shift + 끌기프레임으로 선택
노드 두 번 클릭필드 편집
빈 캔버스 두 번 클릭그 자리에 노드 추가
포커스된 출력에서 Enter, Space그 출력에서 연결선 시작
필드에서 {{ 또는 Ctrl+Space매개변수, 변수, 시크릿, 생성기 제안
필드에서 Esc캔버스의 노드로 돌아가기
캔버스에서 Esc추가 메뉴 닫기; 아니면 그리는 중인 연결선 취소; 아니면 선택한 연결선 놓기; 아니면 여러 개 선택 해제; 아니면 전체 화면 나가기; 아니면 포커스 모드 나가기

추가 메뉴와 찾기에서는 ↑ ↓로 고르고, Enter가 선택을 받아들이고 Esc가 닫습니다. 앱의 모든 단축키는 키보드 단축키에 있습니다.