crystal Jupyter에서 Crystal을 움직이는 ICrystal 소개 Jupyter에서 Crystal을 사용할 수있는 커널이 마침내 등장했습니다. 은 2020년에 등장한 새로운 Jupyter kernel입니다. 내부에서는 을 사용하는 것 같습니다. Github 저장소 저자는 이탈리아의 코르시카 섬에 거주하는 것 같습니다. 공식 README와 동일합니다. 2020년 7월 시점에서의 정보를 일본어로도 기재해 둡니다. 의존 Jupyter ZeroMQ ZeroMQ가 ... crystalJupyterJupyterLabJupyter-notebook Brew에서 Crystal REPL ICR 설치 의 REPL Mac에 설치 icr 가 있으면 Ruby irb 또는 pry 와 같이 대화식으로 Crystal을 시도할 수 있습니다. 아래와 같이 색깔도 붙여 주어, 편리하게 사용할 수 있었습니다. 님이 로 icr 당시에는 homebrew의 공식 리포지토리에 icr이 없었던 것 같습니다. 현재는 와 같이 공식적으로 Formula가 있으므로, 위의 커멘드로 인스톨 할 수 있었습니다.... crystalbrewREPL 【Crystal】Crystal 개요와 Hello World에서 HTTP 서버 Ruby처럼 쓰기 쉽고 C처럼 빠른 프로그래밍 언어 Ruby 바람 문법 유형 추론에 의한 변수 및 메소드의 정적 유형 지정 쉽게 기술 가능한 C 언어 바인딩 매크로 및 제네릭으로 컴파일 타임 코드 생성 빠른 네이티브 코드 출력 놀라운 C언어의 수십배에서 수백배 늦어진다고 말해지고 있는 Ruby에 대해서, 거의 같은 쓰는 방법으로 C나 C++,Rust에 필적하는 높은 퍼포먼스! ! 같다! 조금... crystalHTTPHelloWorld 오픈 소스 모험: 에피소드 66: 모자이크 퍼즐용 Crystal Z3 솔버 은 이전 에피소드에서 했던 Minesweeper Puzzle에 정말 가깝습니다. 논리적으로 유일한 차이점은 힌트 셀에 광산도 포함될 수 있다는 것입니다. 그런 이유로 "광산"대신 흑백 세포에 대해 이야기합니다. 우리가 겪게 될 어려움은 솔버가 아니라 출력과 관련될 것입니다. shard.yml 먼저 Z3를 로드해야 합니다. 솔버 솔버는 이전 에피소드에서 했던 Minesweeper의 솔버와 거의... z3crystal `# =>`에서 `#p`로 나는 # => 를 사용하는 몇 가지 코드 예제와 함께 의 다양한 유형 인수가 있는 에 대한 문서를 추가하는 PR을 열었습니다. 즉, 40 + 2 표현식이 있으면 # =>를 사용하여 예상 결과를 표시하는 주석을 추가할 수 있습니다. [...] #puts 는 nil 를 반환합니다. 따라서 다음과 같이 작성할 수 있습니다. 기술적으로 말하면 이것은 #p가 String의 값인 typeof("Hell... rubytodayilearnedcrystal 💎 크리스탈 언어로 된 `eval`! 애니올라이트🟢🔴 대박... Crystal 언어에는 eval가 없습니다. Crystal 언어에서 eval을 사용해야 하는 경우 Crystal 자체를 실행 파일에 포함해야 합니다. Eval은 종종 Ruby 언어에서 나쁜 습관으로 간주됩니다. 하지만 가끔은 Crystal 언어에서 eval을 사용하고 싶을 때가 있습니다. 그러던 중 Crystal 실행 파일에 mruby(또는 CRuby)를 포함시켜 Crystal 언어에서도 e... rubycrystalmrubyanyolite 오픈 소스 모험: 에피소드 65: 지뢰 찾기 퍼즐용 Crystal Z3 솔버 몇 가지 퍼즐 해결사를 작성해 봅시다. Minesweeper 퍼즐은 처음부터 많은 지뢰 힌트가 제공된다는 점에서 Minesweeper 게임과 다릅니다. 이러한 퍼즐에서 매우 중요한 것은 일종의 편리한 일반 텍스트 입력 형식을 갖는 것입니다. 퍼즐 중 일부는 이론상 단순하고 서류상으로는 단순해 보일 수도 있지만 I/O를 처리하는 것만으로도 많은 작업이 필요합니다. 유일한 복잡성은 힌트 없이 빈... crystalz3 오픈 소스 모험: 에피소드 67: 텐트 퍼즐용 Crystal Z3 솔버 모든 행에는 해당 행에 몇 개의 텐트가 있는지에 대한 힌트가 있습니다 모든 열에는 해당 열에 몇 개의 텐트가 있는지 힌트가 있습니다 이 퍼즐을 한 번도 해본 적이 없다면 지금 몇 가지 작고 쉬운 퍼즐을 해보는 것이 좋습니다. 그러면 게시물을 더 쉽게 따라갈 수 있습니다. 대부분의 규칙은 솔버 코드로 변환하기에 매우 간단하지만 마지막 규칙은 약간 까다로울 것입니다. 퍼즐의 일반 텍스트 표현 매... crystalz3 오픈 소스 모험: 에피소드 68: 스위치 퍼즐용 Crystal Z3 솔버 퍼즐은 다음과 같습니다. 여러 개의 전구가 있고 각각 다른 전구 에 선으로 연결되어 있습니다. 각 전구에는 스위치가 있지만 뒤집으면 원하는 전구뿐만 아니라 연결된 모든 전구 목표는 모든 전구를 켜는 것입니다 연결의 모양과 시각적 표현은 게임마다 다릅니다. 때로는 모든 것을 켜고, 때로는 끄고, 때로는 특정 패턴을 형성하기를 원합니다. 원칙적으로 스위치는 전구와 독립적일 수 있고 연결은 일방적... crystalz3 오픈 소스 모험: 에피소드 69: 수족관 퍼즐용 Crystal Z3 솔버 은 다음 규칙이 있는 퍼즐입니다. 다양한 물통 에 속하는 셀 그리드가 있습니다. 각 셀은 물을 포함하거나 포함하지 않을 수 있음 각 컨테이너는 일정 수준까지 채워집니다. 즉, 컨테이너의 셀에 물이 있는 경우 동일한 컨테이너의 동일한 레벨 이하에 있는 모든 셀에도 물이 있습니다 지정된 행 또는 열에서 채워지는 셀 수를 지정하는 행 및 열 힌트가 있습니다 퍼즐에 익숙해지려면 몇 번 플레이하는 것... crystalz3 오픈 소스 모험: 에피소드 70: 노노그램 퍼즐용 Crystal Z3 솔버 은 인기 있는 퍼즐 중 하나입니다. 셀 그리드가 있습니다. 그 중 일부를 채워야 합니다 각 행과 각 열에는 몇 가지 힌트가 있으며 각각은 숫자 목록입니다 "2 5 3"과 같은 힌트는 행(또는 열)에 3개의 채워진 셀 그룹(2개의 채워진 셀 그룹, 5개의 채워진 셀 그룹, 3개의 채워진 셀 그룹)이 있음을 의미합니다. 하나 이상의 빈 셀로 구분된 각 그룹 정규식 ^_*#{2}_+#{5}_+#{... crystalz3 오픈 소스 모험: 에피소드 71: Crystal Z3 조각 개선 Crystal Z3에서 다양한 퍼즐 게임 해결사를 작성하면서 두 가지 큰 문제를 발견했습니다. .reduce/+/*/and의 or 체인이 빈 배열 에 대한 특수한 경우에 자주 필요했습니다. Model#[] 정확한 유형이 정적으로 알려진 경우에도 유형이 지정되지 않은 결과( Expr )를 반환했으므로 모델에서 데이터를 추출하려면 이동해야 합니다#to_s. Z3.구별 사양 없이 이미 존재했습니다... crystalz3 오픈 소스 모험: 에피소드 72: 도미노사 퍼즐용 Crystal Z3 솔버 은 간단한 규칙이 있는 퍼즐입니다. 숫자로 채워진 격자가 있습니다 해당 번호를 도미노 로 페어링해야 합니다. 도미노마다 달라야 함 늘 그렇듯이 퍼즐을 몇 번 플레이하여 좋은 느낌을 받는 것이 좋습니다. 쉽게 따라하실 수 있습니다. 이전 에피소드에서 설명한 대로 업데이트된 Crystal Z3 샤드를 사용하겠습니다. 일반 텍스트 입력 다음은 입력 예입니다. 솔버 우리는 확실히 Z3.add와 적절... crystalz3 오픈 소스 모험: 에피소드 74: 라이트 업 퍼즐용 Crystal Z3 솔버 적어도 지금은 Crystal Z3 솔버의 마지막 에피소드입니다. 이전 에피소드에서 수학으로 Lights Up 퍼즐을 푸는 방법을 보여드렸으니 이제 Crystal Z3 솔버를 작성할 차례입니다. 은 다음 규칙이 있는 간단한 퍼즐입니다. 셀 그리드가 있습니다 일부 세포는 벽세포 귀하의 임무는 일부 셀 에 전구를 배치하는 것입니다. 전구에서 빛이 수평 및 수직으로 퍼지지만 벽을 통과하지는 않습니다... crystalz3 Open Source Adventures: 에피소드 75: Crystal Char 유형 문제 대부분의 현대 언어에는 문자 유형이 없습니다. "foo"[0]는 대부분의 언어에서 a "f" - a String로, 한 문자 길이입니다. 일반적으로 문자 유형이 문제가 되는 이유 주된 이유는 유니코드 세계에서 문자에 대해 직관적으로 작동할 수 있는 많은 작업이 실제로는 작동하지 않기 때문입니다. 다음은 크리스탈입니다. 따라서 별도의 문자 유형이 있는 언어는 선택할 수 있습니다. 문자에 대한 ... crystal 오픈 소스 모험: 에피소드 76: Ameba linter for Crystal Crystal의 VSCode 확장에는 동일한 문제가 있습니다. 이 문제는 .ameba.yml 구성 파일로 해결할 수 있습니다. crystal-z3 및 Lint/UselessAssign 기본 설정에서 한 가지 문제를 찾습니다. --all 및 Lint/ComparisonToBoolean이 있는 crystal-z3 이로 인해 엄청난 수의Lint/ComparisonToBoolean 문제가 발생하며 ... crystal 여기 문서가 있습니다 저번에 을 수정하면서 과 여러 개heredocs 를 메서드의 인수로 사용하는 방법에 대해 배웠습니다. The heredoc starts in the following line and ends with the next line that contains only the heredoc identifier. A heredoc (다른 String 와 마찬가지로)를 변수에 할당할 수 있습니다. 이 예는... todayilearnedopensourcecrystalprogramming 오픈 소스 모험: 에피소드 79: Crystal Regular Expression API 탐색 Ruby 정규 표현식 API를 살펴보았습니다. 몇 가지 언어를 더 시도하고 싶은데 가장 확실한 언어는 Crystal입니다. 많은 솔루션이 Ruby에서와 동일하게 작동하지만 일부 차이점은 흥미롭습니다. 테스트 케이스 Crystal에는 %W , 이 없지만 이 경우 비보간 및 훨씬 덜 멋진 상대%w가 수행됩니다. 테스트 사례는 다음과 같습니다. 그리고 예상 결과: 솔루션 1 가장 간단한 솔루션은 ... regexrubycrystal 오픈 소스 모험: 에피소드 02: Crystal Z3에 대한 낮은 수준의 우려 숨기기 이전 에피소드에서 우리는 Crystal이 Z3와 함께 작업하는 것을 얻었지만 그것은 직접적으로 낮은 수준의 C API를 따르고 있었습니다. 이 에피소드에서 우리는 문제를 계층화할 것입니다: 그런 다음 두 번째 레이어, 낮은 수준의 세부 정보를 많이 숨기는 더 멋진 API가 있습니다. 다음 레이어 다음 계층은 여러 컨텍스트를 지원하는지 여부에 대한 한 가지 결정을 내려야 하며, 일부 합법적인 ... rubycrystalz3 Crystal로 AWS API 두드리기 제가 평소 AWS 인프라를 하는 사람이기 때문에 크리스탈이 AWS를 조작할 수 없는 것 아닌가 싶습니다.역시 현지인의 바이너리 정보를 토해내는 건 도구를 만드는 사람들에게 매력적인... 차라리 새로운 것이 이 분야의 선구자가 될 수 있다!그래서 AWS API 클라이언트를 직접 제작하기로 결정했습니다.아직 클라이언트의'호스트'를 만들지는 못했지만 나는 먼저 클라이언트를 만드는'기초'를 만들었다... crystalAWS
Jupyter에서 Crystal을 움직이는 ICrystal 소개 Jupyter에서 Crystal을 사용할 수있는 커널이 마침내 등장했습니다. 은 2020년에 등장한 새로운 Jupyter kernel입니다. 내부에서는 을 사용하는 것 같습니다. Github 저장소 저자는 이탈리아의 코르시카 섬에 거주하는 것 같습니다. 공식 README와 동일합니다. 2020년 7월 시점에서의 정보를 일본어로도 기재해 둡니다. 의존 Jupyter ZeroMQ ZeroMQ가 ... crystalJupyterJupyterLabJupyter-notebook Brew에서 Crystal REPL ICR 설치 의 REPL Mac에 설치 icr 가 있으면 Ruby irb 또는 pry 와 같이 대화식으로 Crystal을 시도할 수 있습니다. 아래와 같이 색깔도 붙여 주어, 편리하게 사용할 수 있었습니다. 님이 로 icr 당시에는 homebrew의 공식 리포지토리에 icr이 없었던 것 같습니다. 현재는 와 같이 공식적으로 Formula가 있으므로, 위의 커멘드로 인스톨 할 수 있었습니다.... crystalbrewREPL 【Crystal】Crystal 개요와 Hello World에서 HTTP 서버 Ruby처럼 쓰기 쉽고 C처럼 빠른 프로그래밍 언어 Ruby 바람 문법 유형 추론에 의한 변수 및 메소드의 정적 유형 지정 쉽게 기술 가능한 C 언어 바인딩 매크로 및 제네릭으로 컴파일 타임 코드 생성 빠른 네이티브 코드 출력 놀라운 C언어의 수십배에서 수백배 늦어진다고 말해지고 있는 Ruby에 대해서, 거의 같은 쓰는 방법으로 C나 C++,Rust에 필적하는 높은 퍼포먼스! ! 같다! 조금... crystalHTTPHelloWorld 오픈 소스 모험: 에피소드 66: 모자이크 퍼즐용 Crystal Z3 솔버 은 이전 에피소드에서 했던 Minesweeper Puzzle에 정말 가깝습니다. 논리적으로 유일한 차이점은 힌트 셀에 광산도 포함될 수 있다는 것입니다. 그런 이유로 "광산"대신 흑백 세포에 대해 이야기합니다. 우리가 겪게 될 어려움은 솔버가 아니라 출력과 관련될 것입니다. shard.yml 먼저 Z3를 로드해야 합니다. 솔버 솔버는 이전 에피소드에서 했던 Minesweeper의 솔버와 거의... z3crystal `# =>`에서 `#p`로 나는 # => 를 사용하는 몇 가지 코드 예제와 함께 의 다양한 유형 인수가 있는 에 대한 문서를 추가하는 PR을 열었습니다. 즉, 40 + 2 표현식이 있으면 # =>를 사용하여 예상 결과를 표시하는 주석을 추가할 수 있습니다. [...] #puts 는 nil 를 반환합니다. 따라서 다음과 같이 작성할 수 있습니다. 기술적으로 말하면 이것은 #p가 String의 값인 typeof("Hell... rubytodayilearnedcrystal 💎 크리스탈 언어로 된 `eval`! 애니올라이트🟢🔴 대박... Crystal 언어에는 eval가 없습니다. Crystal 언어에서 eval을 사용해야 하는 경우 Crystal 자체를 실행 파일에 포함해야 합니다. Eval은 종종 Ruby 언어에서 나쁜 습관으로 간주됩니다. 하지만 가끔은 Crystal 언어에서 eval을 사용하고 싶을 때가 있습니다. 그러던 중 Crystal 실행 파일에 mruby(또는 CRuby)를 포함시켜 Crystal 언어에서도 e... rubycrystalmrubyanyolite 오픈 소스 모험: 에피소드 65: 지뢰 찾기 퍼즐용 Crystal Z3 솔버 몇 가지 퍼즐 해결사를 작성해 봅시다. Minesweeper 퍼즐은 처음부터 많은 지뢰 힌트가 제공된다는 점에서 Minesweeper 게임과 다릅니다. 이러한 퍼즐에서 매우 중요한 것은 일종의 편리한 일반 텍스트 입력 형식을 갖는 것입니다. 퍼즐 중 일부는 이론상 단순하고 서류상으로는 단순해 보일 수도 있지만 I/O를 처리하는 것만으로도 많은 작업이 필요합니다. 유일한 복잡성은 힌트 없이 빈... crystalz3 오픈 소스 모험: 에피소드 67: 텐트 퍼즐용 Crystal Z3 솔버 모든 행에는 해당 행에 몇 개의 텐트가 있는지에 대한 힌트가 있습니다 모든 열에는 해당 열에 몇 개의 텐트가 있는지 힌트가 있습니다 이 퍼즐을 한 번도 해본 적이 없다면 지금 몇 가지 작고 쉬운 퍼즐을 해보는 것이 좋습니다. 그러면 게시물을 더 쉽게 따라갈 수 있습니다. 대부분의 규칙은 솔버 코드로 변환하기에 매우 간단하지만 마지막 규칙은 약간 까다로울 것입니다. 퍼즐의 일반 텍스트 표현 매... crystalz3 오픈 소스 모험: 에피소드 68: 스위치 퍼즐용 Crystal Z3 솔버 퍼즐은 다음과 같습니다. 여러 개의 전구가 있고 각각 다른 전구 에 선으로 연결되어 있습니다. 각 전구에는 스위치가 있지만 뒤집으면 원하는 전구뿐만 아니라 연결된 모든 전구 목표는 모든 전구를 켜는 것입니다 연결의 모양과 시각적 표현은 게임마다 다릅니다. 때로는 모든 것을 켜고, 때로는 끄고, 때로는 특정 패턴을 형성하기를 원합니다. 원칙적으로 스위치는 전구와 독립적일 수 있고 연결은 일방적... crystalz3 오픈 소스 모험: 에피소드 69: 수족관 퍼즐용 Crystal Z3 솔버 은 다음 규칙이 있는 퍼즐입니다. 다양한 물통 에 속하는 셀 그리드가 있습니다. 각 셀은 물을 포함하거나 포함하지 않을 수 있음 각 컨테이너는 일정 수준까지 채워집니다. 즉, 컨테이너의 셀에 물이 있는 경우 동일한 컨테이너의 동일한 레벨 이하에 있는 모든 셀에도 물이 있습니다 지정된 행 또는 열에서 채워지는 셀 수를 지정하는 행 및 열 힌트가 있습니다 퍼즐에 익숙해지려면 몇 번 플레이하는 것... crystalz3 오픈 소스 모험: 에피소드 70: 노노그램 퍼즐용 Crystal Z3 솔버 은 인기 있는 퍼즐 중 하나입니다. 셀 그리드가 있습니다. 그 중 일부를 채워야 합니다 각 행과 각 열에는 몇 가지 힌트가 있으며 각각은 숫자 목록입니다 "2 5 3"과 같은 힌트는 행(또는 열)에 3개의 채워진 셀 그룹(2개의 채워진 셀 그룹, 5개의 채워진 셀 그룹, 3개의 채워진 셀 그룹)이 있음을 의미합니다. 하나 이상의 빈 셀로 구분된 각 그룹 정규식 ^_*#{2}_+#{5}_+#{... crystalz3 오픈 소스 모험: 에피소드 71: Crystal Z3 조각 개선 Crystal Z3에서 다양한 퍼즐 게임 해결사를 작성하면서 두 가지 큰 문제를 발견했습니다. .reduce/+/*/and의 or 체인이 빈 배열 에 대한 특수한 경우에 자주 필요했습니다. Model#[] 정확한 유형이 정적으로 알려진 경우에도 유형이 지정되지 않은 결과( Expr )를 반환했으므로 모델에서 데이터를 추출하려면 이동해야 합니다#to_s. Z3.구별 사양 없이 이미 존재했습니다... crystalz3 오픈 소스 모험: 에피소드 72: 도미노사 퍼즐용 Crystal Z3 솔버 은 간단한 규칙이 있는 퍼즐입니다. 숫자로 채워진 격자가 있습니다 해당 번호를 도미노 로 페어링해야 합니다. 도미노마다 달라야 함 늘 그렇듯이 퍼즐을 몇 번 플레이하여 좋은 느낌을 받는 것이 좋습니다. 쉽게 따라하실 수 있습니다. 이전 에피소드에서 설명한 대로 업데이트된 Crystal Z3 샤드를 사용하겠습니다. 일반 텍스트 입력 다음은 입력 예입니다. 솔버 우리는 확실히 Z3.add와 적절... crystalz3 오픈 소스 모험: 에피소드 74: 라이트 업 퍼즐용 Crystal Z3 솔버 적어도 지금은 Crystal Z3 솔버의 마지막 에피소드입니다. 이전 에피소드에서 수학으로 Lights Up 퍼즐을 푸는 방법을 보여드렸으니 이제 Crystal Z3 솔버를 작성할 차례입니다. 은 다음 규칙이 있는 간단한 퍼즐입니다. 셀 그리드가 있습니다 일부 세포는 벽세포 귀하의 임무는 일부 셀 에 전구를 배치하는 것입니다. 전구에서 빛이 수평 및 수직으로 퍼지지만 벽을 통과하지는 않습니다... crystalz3 Open Source Adventures: 에피소드 75: Crystal Char 유형 문제 대부분의 현대 언어에는 문자 유형이 없습니다. "foo"[0]는 대부분의 언어에서 a "f" - a String로, 한 문자 길이입니다. 일반적으로 문자 유형이 문제가 되는 이유 주된 이유는 유니코드 세계에서 문자에 대해 직관적으로 작동할 수 있는 많은 작업이 실제로는 작동하지 않기 때문입니다. 다음은 크리스탈입니다. 따라서 별도의 문자 유형이 있는 언어는 선택할 수 있습니다. 문자에 대한 ... crystal 오픈 소스 모험: 에피소드 76: Ameba linter for Crystal Crystal의 VSCode 확장에는 동일한 문제가 있습니다. 이 문제는 .ameba.yml 구성 파일로 해결할 수 있습니다. crystal-z3 및 Lint/UselessAssign 기본 설정에서 한 가지 문제를 찾습니다. --all 및 Lint/ComparisonToBoolean이 있는 crystal-z3 이로 인해 엄청난 수의Lint/ComparisonToBoolean 문제가 발생하며 ... crystal 여기 문서가 있습니다 저번에 을 수정하면서 과 여러 개heredocs 를 메서드의 인수로 사용하는 방법에 대해 배웠습니다. The heredoc starts in the following line and ends with the next line that contains only the heredoc identifier. A heredoc (다른 String 와 마찬가지로)를 변수에 할당할 수 있습니다. 이 예는... todayilearnedopensourcecrystalprogramming 오픈 소스 모험: 에피소드 79: Crystal Regular Expression API 탐색 Ruby 정규 표현식 API를 살펴보았습니다. 몇 가지 언어를 더 시도하고 싶은데 가장 확실한 언어는 Crystal입니다. 많은 솔루션이 Ruby에서와 동일하게 작동하지만 일부 차이점은 흥미롭습니다. 테스트 케이스 Crystal에는 %W , 이 없지만 이 경우 비보간 및 훨씬 덜 멋진 상대%w가 수행됩니다. 테스트 사례는 다음과 같습니다. 그리고 예상 결과: 솔루션 1 가장 간단한 솔루션은 ... regexrubycrystal 오픈 소스 모험: 에피소드 02: Crystal Z3에 대한 낮은 수준의 우려 숨기기 이전 에피소드에서 우리는 Crystal이 Z3와 함께 작업하는 것을 얻었지만 그것은 직접적으로 낮은 수준의 C API를 따르고 있었습니다. 이 에피소드에서 우리는 문제를 계층화할 것입니다: 그런 다음 두 번째 레이어, 낮은 수준의 세부 정보를 많이 숨기는 더 멋진 API가 있습니다. 다음 레이어 다음 계층은 여러 컨텍스트를 지원하는지 여부에 대한 한 가지 결정을 내려야 하며, 일부 합법적인 ... rubycrystalz3 Crystal로 AWS API 두드리기 제가 평소 AWS 인프라를 하는 사람이기 때문에 크리스탈이 AWS를 조작할 수 없는 것 아닌가 싶습니다.역시 현지인의 바이너리 정보를 토해내는 건 도구를 만드는 사람들에게 매력적인... 차라리 새로운 것이 이 분야의 선구자가 될 수 있다!그래서 AWS API 클라이언트를 직접 제작하기로 결정했습니다.아직 클라이언트의'호스트'를 만들지는 못했지만 나는 먼저 클라이언트를 만드는'기초'를 만들었다... crystalAWS