Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Crystalはいいぞ

 Crystalはいいぞ

#nitgclt 2021.03.27 登壇

eniehack

March 27, 2021
Tweet

More Decks by eniehack

Other Decks in Technology

Transcript

  1. 自己紹介 • Nakaya です • 4E • Web 系やってます •

    好きな言語は Ruby • 好きなエディタは vim と emacs 2
  2. 自己紹介 • Nakaya です • 4E • Web 系やってます •

    好きな言語は Ruby • 好きなエディタは vim と emacs • 最近は Crystal 言語、Lisp、ShellScript にお熱 2
  3. C っぽさもある • Pointer • StaticArray • immutable な Array

    • Bytes Slice(UInt8) • C のライブラリをバインディングが簡単に書ける 5
  4. 並列処理 • Golang の Goroutine に影響を受けた Channel channel = Channel(Nil).new

    spawn do puts "Before send" channel.send(nil) puts "After send" end puts "Before receive" channel.receive puts "After receive" 6
  5. マクロが強い • コンパイル前にソースコードからソースコードを生成 する macro encoding_test(no, payload) it "vector_test.json -

    encoding test No.{{no}}" do data = json["testGroups"][0]["tests"][{{no}}] config = TestConfiguration.new key: data["key"].as_ config.nonce = data["nonce"].as_s.hexbytes branca = Branca::Token.new branca.timestamp = data["timestamp"].as_i64.to_u64 token = branca.encode {{payload}}, config 7
  6. ライブラリがそこそこある • Discord Bot • Web Framework Web Framework Kemal

    • Ruby の Sinatra っぽく書ける require "kemal" get "/" do "Hello Kemal!" end Kemal.run 11
  7. 何が作れるの? Web Application • invidious - プライバシーを考慮した YouTube フロント エンド

    言語 • Mint - Web Frontend 系関数型言語 GUI や Game まで • SFML - マルチメディアが簡単に扱えるライブラリ • OpenGL 系 12
  8. 何が作れるの? Web Application • invidious - プライバシーを考慮した YouTube フロント エンド

    言語 • Mint - Web Frontend 系関数型言語 GUI や Game まで • SFML - マルチメディアが簡単に扱えるライブラリ • OpenGL 系 OS もある • lilith - POSIX 準拠 OS 12