【Elixir】Phoenix をインストールしてみた
Elixir のWebフレームワーク Phoenix をインストールしてみた。(^^)/~
無事にブラウザで http://localhost:4000 にアクセスして Phenix の画面を見ることができた!
が。データベースの設定をしていないので、それはこれから。MySQL も PostgreSQL もインストールはしているが、ユーザも作ってなかったみたい(汗
【ELM】リアクティブプログラミング?
書店で
[関数型リアクティブプログラミング ](http://amzn.asia/a8yKDTE)
や
[RxJavaリアクティブプログラミング](http://amzn.asia/0tloosC)
を見てなんだか気になったので、ぐぐった。
今どきはやりの React と関係があるのだろうか?
まあ、理解するには触ってみる・動かしてみるしかないだろう。
で、ググっているうちに、ELMという関数型言語があるらしいことに気づいた。
The Elm Architecture · An Introduction to Elm
これも面白そう。触ってみたい。
【Scala】Akkaでアクターモデル
Scala 単独ではアクターモデル(メッセージパッシング)はできないが、Akka というライブラリで実現できるらしい。
[Akka実践バイブル アクターモデルによる並行・分散システムの実現 ](http:// http://amzn.asia/1ZucXbW)
発売当時から知っていたが、お値段が高いので我慢していた。
が。勢いあまって本日購入!
【Rust】なんかすごくよさげ
言語の存在は知っていたが、実はとてもよさげだった。
並列性の機構は軽量タスクとして提供される。これと類似の仕組みはErlang言語などのアクターモデルの言語にも見られるものである。それらのシステムにおいて、複数のタスク同士は直接にデータを共有するのではなく、メッセージ・パッシングによってデータのやり取りを行う。性能上の理由から、データのやり取りには固有の箱[21]を使って行われ、データの複製はされない。それらの箱は所有者が一人であることが保証されたもので、送信タスクから受信タスクに向けて開放することができる
Erlang と同じ、軽量プロセスを持っていたとは!アクターモデルでメッセージパッシングということは軽量プロセスごとにメッセージキューを持っている?
【Elixir】ESpec動いた!
漸く動いた(^^)/~
使い方をググって見つかったコードはこれ。
GitHub - antonmi/espec: Elixir Behaviour Driven Development
defmodule SyntaxExampleSpec do use ESpec it do: expect true |> to(be_true()) it do: expect(1 + 1).to eq(2) it do: (1..3) |> should(have 2) end
悩んだところは次の2点。
- テスト対象の関数呼び出しってどれ?
- テスト対象のモジュールをimport? include? require 等なにかしなくていいの?
mix と ESpec な事例はググっても他に見つからなかった。
ので。Spec系の元祖?な RSpec についてググった。
はじめてのRSpec - まずテスト書いてからコード書くシンプルなチュートリアル - Qiita
使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita
it '13歳以上の場合、漢字で答えること' do user = User.new(name: 'たろう', age: 13) expect(user.greet).to eq '僕はたろうです。' end
この記述から、expect(テスト対象関数) .to eq(期待値)という書式であることが分かった。
一方、spec/sample01_spec.exs から lib/sample01.ex 内に定義されている Sample01 モジュールを利用するための書式はググってもみつからなかった。
なので、当てずっぽうに import キーワードを使ってみたら当たりだった。
defmodule Sample01Spec do
use ESpec
import Sample01# it do: expect true |> to(be_true())
# it do: expect(1 + 1).to eq(2)
# it do: (1..3) |> should(have 2)# it do: expect(ret2).to eq(2)
it do: expect(sumlist([1,2,3])).to eq(6)
it do: expect(sumlist([2,4,6])).to eq(12)
it do: expect(sumlist([1,4])).to eq(5)
end
これで Elixir で BDD できる。
次は Scala で BDD だ!( sbt + Spec2 )