브렛 빅터(Bret Victor)의 원칙에 따른 발명은 제가 본 것 중 가장 흥미롭고 충격적인 시연 중 하나입니다. 전직 Apple UI 전문가가 2012년 초에 이 시연을 했음에도 불구하고 그의 영향력은 줄어들지 않았습니다. 프로그램 작성 과정의 모든 변경 사항은 프로그래머가 결과를 볼 수 있도록 직접 피드백을 생성해야 합니다. 즉, 제작자는 실제적인 작업이 필요합니다. 그들이 만든 것에 대한 시간 피드백.
저는 이전에 Python을 사용해 왔으며 IPythonn Notebook을 매우 좋아합니다. IPython Notenook을 사용하면 일부 프로토타입을 빠르게 완료할 수 있어 매우 편리합니다. 이제 프로젝트의 필요로 인해 Go 언어를 사용하려고 합니다. Go를 사용할 수 있는 IPython 환경이 있는지 궁금합니다. Zhihu에도 관련 게시물이 있지만 안타깝게도 유효한 답변을 제공하지 않습니다.
작은 숙제를 했는데 결과가 완벽하지 않아서 여기서 공유하겠습니다.
공식 버전 Go Playground
Go 언어 학습을 시작하는 가장 좋은 리소스는 Go 샘플 프로그램을 학습하는 동시에 실행하여 결과를 직접 얻을 수 있습니다. 원칙에 따른 발명의 개념을 완벽하게 구현합니다.
이 투어에는 Go Playgound가 포함되어 있습니다. 프로젝트 코드는 github에서 확인할 수 있습니다.
본 프로젝트에는 프로그램 운영의 보안을 보장하기 위해 프런트엔드와 컨테이너화된 백엔드 샌드박스가 포함되어 있습니다.
그러나 go Playground에는 몇 가지 제한 사항이 있습니다.
사용자 정의 패키지를 가져올 수 없습니다.
편집기가 약하고 구문 강조가 없으며 프롬프트가 표시되지 않고 실행 취소가 불가능합니다...
Ipython처럼 세분화된 상호작용이 없습니다
XIAM 버전의 Go Playground
XIAM의 바둑 놀이터는 공식 놀이터를 기반으로 합니다. 만들어졌습니다. 포함 사항:
사용자 정의 패키지 지원
안전하지 않은 샌드박스 지원, 사용자가 네트워크, 파일 시스템 등에 액세스할 수 있음
프런트 엔드 컨테이너화
커스텀 패키지를 사용하려면 해당 샌드박스
FROM xiam/go-playground/unsafebox RUN go get github.com/myuser/mypackageRUN go get github.com/otheruser/otherpackage ENTRYPOINT ["/go/bin/sandbox"]
의 Dockerfile을 수정한 후 컨테이너 이미지를 다시 빌드해야 합니다.
사용자 정의 패키지 문제를 해결했지만 편집기는 여전히 너무 약하고 IPython의 분할된 상호 작용이 부족합니다. 더 좋은 게 있나요?
GopherNotes
Jupyter Notebook은 실제로 다양한 언어 코어를 지원할 수 있습니다. GopherNotes 프로젝트는 Jupyter용 Go 언어 코어를 제공합니다.
이 프로젝트는 더 이상 유지 관리되지 않는 Gore(igo 커널 기반)에서 영감을 받았습니다.
위는 Gophernotes를 사용하여 테스트한 내용입니다. 루프를 돌릴 때 [7]에 한 줄로 쓰면 괜찮습니다. 그런데 In[8]이라는 세 줄을 쓰면 올바른 결과가 출력되지 않습니다.
백그라운드에 표시된 오류는 다음과 같습니다.
Error running goimports: /tmp/979860191/func_proxy.go:4:4: expected declaration, found 'for' [I 08:18:56.621 NotebookApp] Saving file at /Untitled.ipynb