2017년 8월 18일 금요일

VulcanJS 특징 번역

http://docs.vulcanjs.org/features.html 의 내용입니다.

VulcanJS 특징

GraphQL 스키마 생성

Vulcan은 SimpleSchema JSON 스키마를 기반으로 컬렉션의 GraphQL 스키마를 자동으로 생성합니다.
이렇게하면 두 가지 형식으로 스키마를 두 번 지정할 필요가 없습니다. 이 기능은 완전히 선택적이며 필요에 따라 수동으로 스키마를 지정할 수도 있습니다.

자동 생성 폼

Vulcan은 스키마를 사용하여 클라이언트 측 폼을 생성하고 적절한 Apollo Mutation을 통해 제출을 처리합니다.
예를 들어 하나의 동영상을 편집하기위한 양식을 표시하는 방법은 다음과 같습니다.
<VulcanForm
  collection={Movies}
  documentId={props.documentId}
  queryName="moviesListQuery"
  showRemove={true}
/>
queryName 옵션은 작업이 완료되면 자동으로 업데이트되는 쿼리를 VulcanForm에 통지하는 한편, showRemove 옵션은 "Delete Movie' 버튼을 폼에 추가합니다.
VulcanForm 클라이언트 저장소에 아직 로드되지 않은 경우 수정할 문서를 읽어오기도 합니다.

쉬운 데이터 적재

Vulcan에는 Apollo 데이터를 쉽게 로드할 수 있도록 데이터 로딩 헬퍼 세트로 withList (복수 문서용)와 withDocument (단일 문서용)를 제공합니다.
예를 들어, withList를 사용하여 MoviesList 구성 요소에 모든 동영상을 포함하는 결과를 prop에 전달하는 방법은 다음과 같습니다.
const listOptions = {
  collection: Movies,
  queryName: 'moviesListQuery',
  fragment: fragment,
};
export default withList(listOptions)(MoviesList);
Fragment를 전달하여 각 문서에 로드되는 데이터를 제어할 수 있습니다.

Schema 기반 보안과 검증

Vulcan 보안 및 검증은 모든 컬렉션의 스키마를 기반으로합니다.  스키마의 각 필드는 다음의 함수를 정의할 수 있습니다.

  • viewableBy
  • insertableBy
  • editableBy

이들은 모두 현재 사용자를 인자(선택적으로 영향을 받는 문서)로 사용하고  사용자가 주어진 작업을 수행 할 수 있는지 확인합니다.

그룹과 허가

Vulcan에는 사용자 그룹과 권한을 다루는 간단한 시스템이 있습니다. 아래의 예를 들면, 모든 사용자는 새로운 동영상을 만들고 스스로 편집/삭제할 수 있지만, 관리자만이 다른 사용자의 동영상을 편집하거나 삭제할 수 있습니다.
const defaultActions = [
  "movies.new",
  "movies.edit.own",
  "movies.remove.own",
];
Users.groups.default.can(defaultActions);
const adminActions = [
  "movies.edit.all",
  "movies.remove.all"
];
Users.groups.admins.can(adminActions);
그런 다음 mutation 검사에서 이러한 작업을 참조 할 수 있습니다.

그외 특징들

Vulcan에는 다음과 같이 즉시 사용할 수 있으며 시간 절약할 수 있는 많은 기능이 있습니다.

  • 국제화
  • 서버 측 렌더링
  • 테마를 만들거나 컴포넌트를 확장하는 도구들
  • 이메일과 이메일 템플릿 기능
  • 미리 만들어 놓은 mutation들

물론 Vulcan을 사용하면 vulcan 코어 뿐만 아니라 vulcan:posts나 vulcan:comments, vulcan:newsletter, vulcan:search 등에도 접근 가능합니다.

2017년 8월 4일 금요일

Rinkeby Test Network에 접근하는 간단한 방법.

dApp 개발 시 실제 계정으로 트랜젝션을 보내면 너무나 비싸므로
Rinkeby나 Ropsten 같은 테스트 네트워크에 연결하여 마이닝 없이 faucet을 통해 ether를 받고
그걸로 트랜젝션 테스트를 하면 편리하다.

보통 https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor#create-your-%C3%90app 문서를 보고 시작하는데
geth --rpc --rpccorsdomain "http://localhost:3000"
이렇게 하면 마이닝부터 해야하니 귀찮다.
https://infura.io/#how-to 를 보고 계정을 신청하자. 이런 것도 호스팅이 되다니 좋은 세상이네.
간단한 개인 정보 몇가지를 입력하고 나면 Access Token이 나온다.

가입 후  https://infura.io/register.html 화면

Access Token이 있는 네트워크 주소로 geth를 연결한다.
geth --rpc --rpccorsdomain "https://rinkeby.infura.io/<YOUR_ACCESS_TOKEN>"
이러면 오케이.

meteor project를 만들고
meteor add ethereum:web3
추가한 다음 console에서
web3.eth.getBalance(web3.eth.coinbase, (error,result)=>console.log(
  error, result.toFormat()
));
자신의 coinbase의 잔액을 구해보자.
6eth가 최소단위인 wei로 보면 6,000,000,000,000,000,000 정도.
https://faucet.rinkeby.io/ 여기에서 받아온 (무료로/마이닝없이) ether가 잘 나온다.
여기서부터 시작하는게 좋아보인다.