Category Archives: Erlang

Review: „Building Web Applications with Erlang” By Zachary Kessin, O’Reilly Media

buiding web applications with erlang

Good book to start building your Erlang web applications

Book covers a lot of aspects of web development. First chapters are really good overview of Erlang features, scalability & NoSQL databases; introduction to Yaws: how it works, how to extend it by using appmods. In one of chapters author show how to implement REST to manage simple airports list. Next chapters covers very useful & valuable things: file upload, web sockets, streaming. In one of appendices author mentions about other Erlang web servers and web frameworks.
Book is really good, however there are some things, in my opinion, that need some improvement. I’ve got some experience with Erlang, MochiWeb and Chicago Boss, but I found some Yaws examples not-so-easy to use. It would be much easier if there was more specific information where save all those files in directory tree.

If you want build your web applications with Erlang, this book is really good position to begin with.
My rating:

Product page: http://shop.oreilly.com/product/0636920021452.do

I review for the O'Reilly Blogger Review Program

Uruchamianie poleceń w Erlangu

Polecenia w Erlangu można uruchamiać m.in. za pomocą os:cmd(Command). Niestety dopiero po wykonaniu polecenia zobaczymy rezultat w postaci „stringa”. Szukając bardziej elastycznego rozwiązania, które na bieżąco wyświetlałoby postępy wykonywania polecenia, natrafiłem na drugi sposób z użyciem portów w Erlangu: How to run a system command in Erlang?. Po dostosowaniu kodu do własnych potrzeb wygląda on następująco:

-module(port).
-export([run/1]).

run(Cmd) ->
  Port = erlang:open_port({spawn, Cmd},[use_stdio, exit_status]),
  loop(Port).

loop(Port) ->
  receive
    {Port, {data, Data}} ->
      io:format(Data),
      loop(Port);
    {Port, {exit_status, _}} -> ok
  end.

Chicago Boss wprowadzenie

Chicago Boss to web framework inspirowany przez Ruby on Rails i napisany w Erlangu.

  1. Pobieranie

    Chicago Boss pobieramy ze strony ChicagoBoss.org w sekcji Pliki lub klonując repozytorium z Githuba:

    git clone git://github.com/evanmiller/ChicagoBoss.git

  2. Kompilacja i tworzenie nowego projektu

    Do kompilacji jest potrzebna dystrybucja Erlanga w wersji R13A lub nowsza.

    Wchodzimy do katalogu, kompilujemy Chicago Boss i tworzymy nowy projekt o nazwie myapp

    cd ChicagoBoss
    make
    make app PROJECT=myapp
  3. Hello world

    Przechodzimy do naszej aplikacji:

    cd ../myapp

    W pliku priv/myapp.routes odkomentujemy linijkę:

    {"/", {"hello", "world"}}.

    Pierwszy element krotki jest ścieżką, a wewnętrzna krotka to odpowiednio nazwa kontrolera i nazwa akcji do wykonania.
    Tworzymy plik kontrolera src/controller/myapp_hello_controller.erl:

    -module(myapp_hello_controller, [Req]).
    -compile(export_all).
    
    world('GET', []) ->
      {ok, []}.

    Tworzymy plik widoku src/view/hello/world.html:

    Hello world!

    Kompilujemy make i uruchamiamy naszą aplikację ./start-dev.sh

    Pod adresem http://localhost:8001/ powinniśmy zobaczyć zawartość widoku.

Eshell – polecenia

Przydatne polecenia z konsoli Erlanga:
help(). zwraca shell internal commands oraz commands in module c, a wśród nich znajdują się:

  • q(). wychodzi z konsoli
  • c(plik). kompiluje i ładuje plik źródłowy plik.erl znajdujący się w aktualnym katalogu roboczym
  • cd("ścieżka/do/pliku). zmienia ścieżkę aktualnego katalogu roboczego na wskazaną
  • pwd(). zwraca ścieżkę aktualnego katalogu roboczego
  • rr("rekordy.hrl"). ładuje plik z erlangowymi rekordami
  • rd(student, {id, name}). definiuje rekord student z polami id oraz name</li.
  • f(). czyści wszystkie związane zmienne
  • h(). zwraca historię poleceń

Web development w Erlangu

Lista narzędzi napisanych w Erlangu związanych z tworzeniem stron www:

Serwery:

Frameworki: