Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translation in Korea #42

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
33 changes: 33 additions & 0 deletions 00-DeveloperEnvironment/README_KR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# 개발 환경 설정

이 튜토리얼에서 rholang snippet을 실행하려면, 당신은 어떤 종류의 개발 환경이 필요합니다. 이것은 rholang 개발 도구나 스택에 대한 완벽한 지침은 아닙니다. 오히려, 그것은 여러분을 시작하기 위한 몇 가지 일반적인 기본 개발 환경을 보여줍니다.

## RChain 클라우드
RChain 커뮤니티의 구성원들은 공개 웹 기반 [온라인 rholang transver] (http://rchain.cloud) ([mmir]) (https://rchain cloud)을 제공합니다. inblock.io)). 이 도구는 시작하는 가장 쉬운 방법이며 소프트웨어를 설치할 필요가 없습니다.

## Cryptofex IDE
Pyrofex는 [cryptofex](https://cryptofex.io/).이라 불리는 유망한 통합 개발 환경을 개발하고 있습니다. Cryptofex는 기본적으로 창, Mac 및 리눅스/에서 실행됩니다. 그것은 rholang 구문 강조를 제공하며 rholang 코드를 내부적으로 또는 실행 중인 RNode로 평가할 수 있습니다. IDE는 또한 외래 개발을 지원합니다.

경고: 2018년 10월 현재 Cryptofex는 구문 오류가 발생할 때 올바른 라인 번호를 보고하지 않습니다. 이것은 꽤 절망적일 수 있습니다.

## 로컬 노드
rholang 코드를 실행하기 위해 시도하고 참된 방법은 당신의 지역 RNode를 시작하고 그것의 rholang 통역기를 사용하는 것입니다. 먼저, 플랫폼에 대해 [ RNode](https://rchain.atlassian.net/wiki/spaces/CORE/pages/428376065/User+guide+for+running+RNode)을(를) 설치해야 합니다.

초보 학습자의 경우 [AWS](https://blog.rchain.coop/running-rnode-0-5-3-on-amazon-ec2/) 또는 [Docker](https://blog.rchain.coop/running-rnodev-0-6-x-with-docker/).을 사용하여 노드를 설정하는 단계별 가이드를 참조하세요.

RNode가 설치되면 기본 독립 실행형 노드를 실행할 수 있습니다
```
$rnode run -s -n
```

별도의 터미널에서 RNode의 eval 모드를 사용하여 코드를 평가할 수 있다.

```
$rnode eval intersection.rho.
Result for intersection.rho:
Deployment cost: CostAccount(39,Cost(1132))
Storage Contents:
@{Unforgeable(0xb19519ab773d1ec4ce96f1b71b748552e4a084dfc9942371717f5cb87e818879)}!(@{"name"}!(Nil)) | @{Unforgeable(0xb19519ab773d1ec4ce96f1b71b748552e4a084dfc9942371717f5cb87e818879)}!(@{"age"}!(Nil)) | @{"world"}!("hello") | for( x0, x1 <= @{Unforgeable(0x01)} ) { Nil } | for( x0, x1, x2, x3 <= @{"secp256k1Verify"} ) { Nil } | for( x0, x1 <= @{"sha256Hash"} ) { Nil } | for( @{{@{"name"}!(_) | _ /\ @{"age"}!(_) | _}} <= @{Unforgeable(0xb19519ab773d1ec4ce96f1b71b748552e4a084dfc9942371717f5cb87e818879)} ) { @{Unforgeable(0x00)}!("Both name and age were in the data") } | for( x0, x1 <= @{Unforgeable(0x03)} ) { Nil } | for( x0, x1, x2, x3 <= @{"ed25519Verify"} ) { Nil } | for( x0, x1 <= @{"blake2b256Hash"} ) { Nil } | for( x0 <= @{Unforgeable(0x02)} ) { Nil } | for( x0 <= @{Unforgeable(0x00)} ) { Nil } | for( x0, x1 <= @{"keccak256Hash"} ) { Nil }
```

RNode의 출력 중 일부는 코드를 실행하는 동일한 터미널에 표시됩니다. 그러나 다른 출력은 노드(첫 번째 단자)에서 직접 나옵니다. 따라서 표시되는 출력에 익숙해질 때까지 두 위치를 모두 확인하세요.
94 changes: 94 additions & 0 deletions 01-SendingAndStandardOut/README_KR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Sending 및 StandardOut

# Say Hello

!["Person Wawaying hello." (HelloWorld.pn)


프로그래밍에는 당신의 첫 프로그램이 "Hello World"라고 말해야 하는 오랜 전통이 있습니다. 여기 화면에 그 텍스트를 올릴 수 있는 가장 간단한 rholang 코드가 있습니다.

[hello.rho] (hello.rho)

### Exercise
프로그램을 "Hello World" 대신에 "Rholang rockes!"라고 인쇄하십시오.


##WTH가 stdout인가?

![채널은 메시지 보내기 우편함과 같다](mailbox.png)

Rholang의 중심부는 채널로 의사소통하고 있습니다. 채널은 메시지를 보내고 받는 데 사용하는 통신 라인입니다. 채널을 통해 메시지를 보내려면 문자를 사용하십시오.

![이 도표 다시 쓰세요!](sendSyntax.png)

프로그램 첫 줄에 새로운 stdout으로 stdout 채널을 만들었습니다. 당신은 당신이 rholang을 배우면서 많은 채널을 만들 것입니다. (rho:io:stdout)을 포함하여 채널에도 특별한 힘을 주었습니다. 나중에 더 자세히 말하자면, 지금은 그 부분이 화면에 실제로 나타나도록 하기 위해 괄호 안에 있어야 한다는 것을 알고 있습니다.


##다른 채널 사용

여기서 "메시지 삭제"... JK, '튜플스페이스'라고 하는 우편함에서 메시지가 수신되기를 기다린다.png)

스투(stdout)뿐만 아니라 많은 채널에 메시지를 보낼 수 있다. 그러나 "stdout"과 달리 그들은 화면에 나타나지 않을 것이다. 왜냐하면 우리가 그들에게 특별한 힘을 가하지 않기 때문이다.

[TupleSpace.rho](TupleSpace.rho)

그럼 다른 채널들은 어디로 갈까? 아무데도! 아직은 아니다, 어차피. 메시지들은 그저 누군가(또는 어떤 과정) 그것들을 받을 수 있기를 기다리며 그곳에 앉아 있다. 우리는 다음 수업에서 메시지를 받는 방법을 배울 것이다. 그동안 메시지가 담겨있던 곳을 "튜플스페이스"라고 부른다.

메시지가 투플스페이스에 있는지 확인하십시오. 사용하는 개발자 환경에 따라 이와 같은 텍스트를 봐야 한다.

```
저장소 내용:
@{"RandoChannel"}!("화면에 나타나지 않음)" | for (x0, x1 @{unforgeable(0x01) { Nil } | for (x0, x1, x2, x3 @{"secp256k1verify"}) ) {nil} |(x1 @{"256"} @(x1).feet(0x02)} ) { Nil } |(x0 @{Unforgeable(0x00)} ) { Nil } |(x0, x1 @{"keccak256Hash"} ) ) { Nil }
```



##한 번에 두 가지 작업 수행
순서만 따져도 모든 재료가 동시에 첨가된다png)

Rholang에서 우리는 컴퓨터에 한 가지, 다른 것, 그리고 세 번째 것을 하라고 말하지 않는다. 우리가 해야 할 모든 것을 말하고, 그것은 "현재" 혹은 모든 것을 동시에 한다.

[parallel.rho] (병렬).rho)

| 는 짧게 "병렬" 또는 "par"로 발음된다.


### 운동
피자 가게라는 채널에 "1큰 페퍼로니 주세요"라는 메시지를 보내세요.

### 운동
"엄마" 채널에서 "엄마"를 전송하십시오.

### 운동
화면에 한 프로그램에서 "Rick"과 "Morty"라는 두 개의 메시지를 인쇄하십시오.



## 퀴즈

무엇이 '떨어질' 것인가!("프로그래밍!") 화면에 인쇄?
- [x] 프로그래밍!
- [ ] stdout!
- [ ] 없음


무슨 채널이야!("위로") 메시지를 보내시겠습니까?
- [ ] '업'
- [x] '무엇'
- [ ] '무엇'
- [ ] 'stdout'


Rholang이 먼저 하는 일은
```
stdout!("Dogs")
|
stdout!("캣츠")
```
- [ ] "개" 인쇄
- [ ] "캣츠" 인쇄
- [x] 둘 다. 그들은 동시적이다.


### 운동
Rho:io:stderr라는 특별 채널도 있다. 당신이 그것을 보낼 때 무슨 일이 일어나는지 살펴봐라. 차이가 뭐야? ](https://en.wikipedia.org/wiki/Standard_streams))
98 changes: 98 additions & 0 deletions 02-Receiving/README_KR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Receiving

## 메시지 확인

![//] 미래의 자기, 열쇠를 냉동실에 넣어 두는 이유는...](Keys.png)

우리는 지난 번에 어떻게 메시지를 보내는지를 배웠다. 이제 메시지를 받는 법을 배울 시간이다. 일반적인 구문:

(메시지<- 채널)용{
// 여기서 작업 수행
}`

어떤 메시지가 채널로 나오면 수신을 하고 메시지라고 부른다. 곱슬곱슬한 교정기 안의 코드인 {}은(는) "계속"이라고 불리고 메시지를 받으면 실행된다.

BTW, '//'로 시작하는 줄을 '코멘트'라고 한다. 그들은 단지 인간 코더들을 위해 그곳에 있고 프로그램이 실행되는 방식에 전혀 영향을 미치지 않는다. 그것들은 좋은 생각이고, 너는 그것을 사용해야 해! 당신의 코드를 읽는 사람은 누구나 그것들을 감상할 것이다.


## Comm 이벤트

![피자샵은 그 채널에서 메세지를 수신할 수 있다](피자.png)

다음 코드는 피자 가게의 채널에 메시지를 보내고 피자 가게에서는 그것을 받는다. 이 피자 가게는 스투아웃에 인쇄로 메시지를 받았다는 것을 인정한다.

[피자주문](피자주문).rho)

### 운동
코프숍과 같은 다른 채널로 메시지를 보내라. 인정서가 인쇄되었는가? 투플스페이스에 남은 거 있어?

![커피 숍에 들어가자].(커피).png)

### 운동
기억하라, 어떤 특정한 순서로 일어난 것이 아니라, 그것들은 동시에 일어난다는 것을. 우리가 피자 가게 코드를 먼저 넣으면 잘 될 것이다. 한번 해 봐!


# 보내기 전에 받기

![메시지가 먼저 나타나는데, 그 다음 누군가가 그것을 받고 있는데, 밥이 먼저 받으려 하고 있다]. 누군가 그에게 통신 이벤트를 할 수 있도록 메시지를 보내기를 바란다.....(lookingForMessages).png)

송신과 수신이 한 채널에서 합쳐지면, 그것은 통신 이벤트 또는 짧게 "공통 이벤트"라고 불린다.

메시지를 받아야 하는 일반 우편과 달리, 두 우편은 순서에 상관없이 혹은 동시에 홀랑에서 발생할 수 있다. 메시지를 받은 후에 보내는 것도 똑같이 받아들여진다. 송신과 수신이 함께 올 때마다, 통신 행사가 열린다.


## 계약

[그 불쌍한 주방장은 너무 바빠서 피자주문도 받을 수 없다.]

우리의 피자 가게의 예는 comm 이벤트를 잘 설명하지만, 들어오는 주문이 tuplespace에서 그들의 것을 소비할 때마다 피자 가게가 수동으로 새로운 수신을 할 것이라고 기대하는 것은 그리 현실적이지 않다.

다행히도 코드를 한 번 배치하는 것이 가능하고, 메시지를 받을 때마다 코드를 실행하도록 하는 것이 가능하다. 이런 종류의 것을 "스마트 계약"이라고 한다. 피자 가게보다 훨씬 우수한 커피숍의 코드를 좀 살펴봅시다.

[커피쇼프.rho](커피쇼프.rho)


### 운동
커피숍에서 더 많은 음료 주문

### 운동
주문을 받을 때 커피숍에서 인쇄하는 승인 메시지를 변경하십시오.

일반적으로 어떤 것이 가장 먼저 되어야 하는가?
- [ ] 보통 우편이 그렇게 작동하기 때문에 발송한다.
- [ ] 코드를 그렇게 빨리 실행할 수 있기 때문에 수신.
- [x] 송신 또는 수신이 먼저거나, 또는 함께 올 수 있다.
- [ ] - rholang이 동시에 있으므로 수신
- 둘 다. 그냥 직접 통신 이벤트를 해.

### 운동
그 채널의 이름은 커피샵이다. 당신이 선택한 특정한 커피숍의 이름을 따서 바꾸시오.


# 영구적
실제로 이 지속적인 행동을 달성하기 위해 rholang에는 두 가지 다른 스타일의 구문이 있다. 우리는 계약이라는 것에 대해 막 배웠는데, 다른 사람은 보통 받는 사람 같아 보인다. 다음의 작은 조각들은 동등하다.

"홀랑
커피에 손을 대다Shop(주문) = {
```

"홀랑
(주문 <= cof coffee) {
```
단 하나의 화살표가 아닌 양방향 화살표가 있기 때문에 이는 일반적인 용도와는 다르다는 점에 주목하라. 끈질긴 용도와 계약 사이의 유일한 차이점은 우리가 블록체인들에 대해 이야기하기 시작할 때 있다. 지금으로서는 그들을 같은 것으로 생각할 수 있다.

### 운동
그 피자 가게는 커피숍에서 했던 것과 같은 계약을 사용할 수 있었다. 계약서 대신 영구히 쓰자. 구문을 더 잘 기억할 수 있도록 처음부터 전부 쓰도록 노력해라.
<!-- 해결책은 영구적 피자쇼프.rho이다.
[영구적인 피자숍.rho](영구적인 피자숍.rho) -->


이 중 어느 것이 다른 것과 같지 않은가?
- [x] '(a <- b){}'
- [ ] '계약 b(a) = {}'
- [ ] (a <= b){}"용

(메시지<- 할머니스냅샷)을 위한 common 이벤트를 생성할 것{닐}?
- (할마스냅샷)"안녕 할머니"
- [x] 할머니스냅챗!"할머니를 찰싹찰싹 때리는구나"
- [ ] for ("여기 네 g'ma를 위해 잠깐 쉬어" <- 할머니스냅챗)".
134 changes: 134 additions & 0 deletions 03-TelephoneNamesAndProcesses/README_KR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# 전화, 이름 및 프로세스

## 메시지 릴레이


![전화 게임은 Rholang의 메시지 전달을 흉내내는 데 완벽하다.(전화).png)


우리는 전에 할머니나 피자 가게에 메시지를 보내는 방법을 배웠다. 그러나 지금까지 수령자들은 표준 출력물에 인쇄함으로써 메시지를 승인했다.

이제 아이들의 전화 게임처럼 메시지를 전달함으로써 그들이 좀 더 흥미로운 일을 하도록 합시다.

[전화3.rho][전화3].rho)

메시지가 말하듯이, 당신은 실험을 할 때 가장 많이 배운다. 그러니 당신이 적합하다고 생각하는 대로 반드시 사물을 바꾸도록 하라.

### 운동

그 전화 게임은 재미있었지만, 더 많은 선수들을 보유하는 것이 항상 더 좋다. 먼저 찰리라는 세 번째 선수를 추가하십시오. 아웃에 인쇄하는 대신, 봅은 찰리에게 메시지를 전달할 것이다. 그리고 나서 찰리는 그것을 화면에 프린트할 것이다. 더 많은 메리어!



![전화가 제대로 전달되지 않는 것 같다]. 나는 Bob을 탓한다.](전화 교환 메시지.png)



### 운동
만약 여러분이 실제로 전화를 해본 적이 있다면, 여러분은 그 메시지가 재치 있게 도착하는 일이 거의 없다는 것을 알고 있을 것이다. 프로그램을 변경하여 밥이 받는 것에 상관없이 다른 메시지를 전달하도록 하라.


##저것이 '*'인가?

![반대] .png)

bobb의 *를 보셨나요?(*메시지)'? Rholang에는 두 가지 종류의 "채널"과 "프로세스"가 있다. 두 가지 사이를 전환할 수 있는 방법도 있다.

<!-- TODO: *와 @라는 화살표가 있는 것이 더 좋을까? -->

"프로세스"는 우리의 전화 게임이나 피자 가게 주문 프로그램과 같은 어떤 Rholang 코드 조각이다. 프로세스는 수백 개의 대형 온라인 프로그램 또는 소규모 온라인 프로그램일 수 있다. 그것들은 심지어 단지 가치일 수 있는 작은 코드 조각일 수도 있다. 여기 몇 가지 예제 과정이 있다.

- 'stdout'!("Sup Rholang?")"일반적으로 보내는 편지
- 'Nil' 가장 작은 과정. 그것은 문자 그대로 "아무것도 하지 말라"는 뜻이다.
- (msg <- 전화){Nil}' 메시지가 도착할 때 아무 것도 하지 않는 일반적인 수신.
헬로 월드(Hello World)도 별 효과가 없는 작은 과정이다. 이것들은 "지상 조건"이라고 불린다.


채널("이름")은 메시지를 보낼 수 있는 것이다. Rholang에서는 @ 기호를 공정 앞에 붙여서 따옴표에서 따온 이름이다. 여기 몇가지 예명이 있다.

헬로 월드라는 기본 용어를 인용해 만든 @(@)헬로월드.
- @Nil이 가장 작은 이름. 가능한 한 가장 작은 프로세스를 인용하여 만든다.
@(알리스)!("Rholang, transfer on.")"전화게임의 과정을 인용하여 만든



# 그럼*이란 무엇인가?


![저 이름은 뭐니!] 너희 부모님께서 방금 컴퓨터 코드 이름을 지어주셨니?](myNameIs.png)

"@" 기호로 이름 짓기 과정을 일괄 처리할 수 있다. 우리는 또한 '*' 기호로 이름을 'unquant'함으로써 다시 과정으로 바꿀 수 있다.

기억해야 할 중요한 것은 Rholang에서 **프로세스와 이름**을(를) 받는 것이다. 그게 중요하니까 다시 말할게. 당신은 항상 **프로세스**를 보내고, 반대로 당신은 **이름**을(를) 받는다.

앨리스가 포어(메시지 <- 앨리스>)로 메시지를 받으면 메시는 이름이 된다. 나중에 밥에게 보낼 때, 그녀는 '*'를 사용하여 '메시지'를 다시 '밥'으로 바꾼다.(*메시지)'



## 퀴즈

뭐 보낼까?
- [x] 프로세스
- [ ] 이름



뭘 받나?
- [ ] 프로세스
- [x] 이름



{의 새 등록 코드에서 등록이란?}`
- [ ] 공정
- [x] 이름
- [ ] 구문이 잘못됨




닐이란 무엇인가?
- [x] 공정
- [ ]명
- [ ] 구문이 잘못됨



@Nil이란 무엇인가?
- [ ] 공정
- [x] 이름
- [ ] 구문이 잘못됨




@Nil이란 무엇인가?
- [ ] 공정
- [ ]명
- [x] 잘못된 구문



*중요데이터는 과정이다. 그렇다면 '중요데이터'란 무엇인가?
- [ ] 공정
- [x] 이름
- [ ] 구문이 잘못됨



다음 중 'BobsPhone'과 맞먹는 것은?
- [x] '*@'BobsPhone'
- [ ] @"BobsPhone".
- [ ] '*"BobsPhone""
- [ ] @*"BobsPhone"
- [ ] 'stdout!("BobsPhone")"



### 운동

![이 전화 게임에는 포크가 있다]

각 플레이어가 다음 사람에게 메시지를 전달하는 선형 전화 게임 대신, 게임에 분점을 추가해 봅시다. 그래서 이제 밥은 예전처럼 찰리에게 보낼 것이다. 그러나 밥도 던에게 보낼 것이다.

나뭇가지마다 원하는 만큼 길 수 있지만, 나뭇가지 끝에 메시지를 출력해 버린다.
Loading