728x90

플러그인(사용자가 원하는 기능을 추가하고 생성하여 쓸 수 있는  프로그램)

 

플러그인은 자바스크립트, html,css로 만들어졌지만 차이가 있다

플러그인 시스템은 보안을 신경써야하기 때문에 

브라우저 api의 접근을 다르게 할 필요가 있었다

 

그래서 

1. 피그마 파일 콘텐츠에 어떻게 접근하는거야?

2. 내 플러그인을 위한 유저인터페이스 어떻게 만드는 거야?

3. 어떻게 네트워크 요청을 할 수 있는거야?

 

sandbox 샌드박스

(브라우저 api(주고 받을 수 있는 통신이라 이해하면됨)를 노출하고 

있지 않은 작은 자바스크립트 환경 )

 

성능을 위해 플러그인 코드가 샌드박스의 메인 스레드에서 실행되는

모델로 사용하기로 했어

물론 여기에도 작은 콘솔 api는 있지만 

xmlHttprequest(서버와 상호작용할 때 사용하는 객체,서버로부터 xml 데이터 가져올 때 쓰임) 그리고 과 같은 것들은 샌드박스에서 직접 하지 못하게 했어

 

ui를 보여주거나 네트워크를 접근하기 위한 브라우저 api를 

사용하려면 너는 요런 태그(<script>

안에 있는 <iframe>

)를 사용해야돼

간단히 보면 이 함수를 이용해서 작동되고 있어

이 <iframe>안에서 너는 html, 자바스크립트 그리고 브라우저 api 에도 

접근할 수 있는겨. 

 

메인 스레드(메인 실행구조, 동작구조)는 피그마의 "scene 씬"에 접근할 수 있어

(뭐뭐뭔소리야? -피그마 문서를 구성하는 계층의 계층이래. 옥히~) 하지만 브라우저 api는

접근할 수 없어 

반대로 iframe 그 태그는 브라우저api에 접근할 수 있는데 

피그마 씬에는 접근 못해 

 

대신 이 둘, 메인 스레드와 iframe은 메세지를 주고 받으면서 소통할 수 있어

 

플러그인이 일 다 마쳤을 때 

figma.closePlugin() 함수를 불러서 피그마한테 끝냈다고 말해줘. 

 

그렇지 않으면 사용자는 너의 플러그인이 동작중이다~ 를 계속 보게 

될거니까. 

그리고 사용자는 플러그인이 동작하는 동안에 

피그마가 나타내는 ui를 사용해서 언제든지 플러그인을 취소할 수 있어

이렇게 되면 피그마는 그 자체로 figma.closePlugin()함수 불러서 끝내겠지

 

출처 :  https://www.figma.com/plugin-docs/how-plugins-run/

 

728x90
728x90

이더리움 P2P(peer to peer) 네트워크는 두가지 요소로 구성되어 있다. 

  • 이더리움 클라이언트 (런타임 시 작동하며 네 가지 요소를 포함한다.)

-이더리움 가상머신 EVM ethereum virtual machine

-메모리 풀

노드가 수신한 거래내역을 네트워크에 전파하기 전에 저장한다. 투표 앱에서는 사용자가 제출한 투표 내역을 저장한다.

-클라이언트 프로세스

수신된 메시지 및 거래내역을 적절하게 EVM에 보내거나 거래내역을 메모리 풀에 저장하고 검색한다. 또한 피어 노드에서 받은 블록을 처리하고 블록체인 데이터베이스의 로컬 복사본에 추가한다.

-JSON-RPC API 

다른 노드나 외부에서 클라이언트의 기능을 사용할 수 있게 한다.

 

  • 블록체인 데이터베이스

유권자가 제출한 투표와 같은 거래 내역 외에도 블록체인은 네트워크 상에 배포된 모든 스마트 컨트랙트의 EVM 바이트 코드 복사본과 상태를 저장하고 있다. 채굴노드는 15초마다 정기적으로 새로운 블록을 불록체인에 추가한다.

 

설명 출처: <이더리움 디앱 개발>, 로베르토 인판테 지음, p70

728x90

+ Recent posts