【Crystal】Crystal 개요와 Hello World에서 HTTP 서버

4300 단어 crystalHTTPHelloWorld

Crystal 정보




Ruby처럼 쓰기 쉽고 C처럼 빠른 프로그래밍 언어
DMM INSIDE 기사

디자인 사상


  • Ruby 바람 문법
  • 유형 추론에 의한 변수 및 메소드의 정적 유형 지정
  • 쉽게 기술 가능한 C 언어 바인딩
  • 매크로 및 제네릭으로 컴파일 타임 코드 생성
  • 빠른 네이티브 코드 출력

  • Crystal-JP

    놀라운
    C언어의 수십배에서 수백배 늦어진다고 말해지고 있는 Ruby에 대해서, 거의 같은 쓰는 방법으로 C나 C++,Rust에 필적하는 높은 퍼포먼스! ! 같다! !

    조금 사용해 본

    Crystal으로 Hello World!


  • Crystal : 0.24.2 (2018-03-10)에서 실행

  • Crystal은 프로그램 자체가 메인 루틴이므로

    helloworld.cr
    puts "Hello world"
    

    이것만으로 움직인다! 게다가 class def module include ! 진짜로 Ruby쨩! ! GOD! !

    실행 명령
    $ crystal helloworld.cr
    

    실행 파일 만들기
    $ crystal build helloworld.cr
    $ ./helloworld
    

    계속해서 HTTP 서버를 만들어 봅니다.

    Crystal의 HTTP 서버



    HTTP 서버를 만듭니다.

    http_server.cr
    require "http/server"
    
    server = HTTP::Server.new(8080) do |context|
      context.response.content_type = "text/plain"
      context.response.print "Hello world! The time is #{Time.now}"
    end
    
    puts "Listening on http://0.0.0.0:8080"
    server.listen
    

    이렇게하면 다음 오류가
    Package libssl was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libssl.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libssl' found
    Package libcrypto was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libcrypto.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libcrypto' found
    

    해결책



    Crystal-lang의 이슈 에 해결책이 있습니다.
    $ brew intsall openssl
    
    .zshrc 또는 .bashrc
    export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
    

    htp://0.0.0.0:8080/ 에 접속해 아래와 같은 표시가 나오면 LGTM


    생각한 것


  • 루비를 사용한 적이있는 사람들은 즉시 사용할 수 있습니다
  • Ruby가 속도로 디스되어 있기 때문에, 그것을 대신하는 언어가 된다? ?
  • 기사가 적다 (Error나 발생하면, Issue나 PR읽는 편이 빨리 해결할 수 있을지도)
  • 앞으로도 공부하려고 생각했습니다!

  • 인용·참고



    프로그래밍 언어 Crystal
    DMM INSIDE 기사
    Crystal-JP

    좋은 웹페이지 즐겨찾기