Erlang Central

Difference between revisions of "Main Page"

From ErlangCentral Wiki

(Welcome to trapexit's wiki site!)
m
(48 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= Welcome to trapexit's wiki site! =
+
__NOTOC__  __NOEDITSECTION__
 +
<table cellspacing="0" cellpadding="0" style="margin-left: 0px;">
 +
<tr>
 +
<td valign="top">
  
On this wiki you can find endless of information about Erlang/OTP.
+
= Your Erlang Community Site =
 +
Welcome to trapexit.org, the Erlang community site where you can read news and weblogs related to Erlang/OTP, discuss projects, issues and ideas with other Erlang developers, and read and publish articles and HowTos related to Erlang/OTP.
 +
 
 +
=== Trapexit News ===
 +
{| style="margin-left: 0px; margin-top: 15px; background:#fcfcfc; border:1px solid #860404; cell-padding:0 white-space:nowrap; overflow: hidden"
 +
|style="color:#000; font-size:85%; margin-top:20"|
 +
<irss max=1 news=true>http://forum.trapexit.org/rss_mod.php?f=19&t=1</irss>
 +
|}
 +
 
 +
=== What is Erlang and OTP? ===
 +
Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance. Originally developed at Ericsson, it was released as open source in 1998.
 +
 
 +
OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems. It includes its own distributed database, applications to interface towards other languages, debugging and release handling tools. These tools and applications distributed by Ericsson are complemented by numerous other open source projects.
 +
 
 +
====Here is an example of Erlang code:====
 +
 
 +
<pre style="margin-top: 20px">
 +
-module(beersong).
 +
-author('BillClementson').
 +
-export([sing/0]).
 +
-define(TEMPLATE_0, "~s of beer on the wall, ~s of beer.~n"
 +
                    "Go to the store and buy some more,"
 +
                    "99 bottles of beer on the wall.~n").
 +
-define(TEMPLATE_N, "~s of beer on the wall, ~s of beer.~n"
 +
                    "Take one down and pass it around, ~s"
 +
                    " of beer on the wall.~n~n").
 +
 
 +
create_verse(0)      ->
 +
    {0, io_lib:format(?TEMPLATE_0, phrase(0))};
 +
create_verse(Bottle) ->
 +
    {Bottle, io_lib:format(?TEMPLATE_N, phrase(Bottle))}.
 +
 
 +
phrase(0)      -> ["No more bottles", "no more bottles"];
 +
phrase(1)      -> ["1 bottle", "1 bottle", "no more bottles"];
 +
phrase(2)      -> ["2 bottles", "2 bottles", "1 bottle"];
 +
phrase(Bottle) ->
 +
    lists:duplicate(2,integer_to_list(Bottle) ++ " bottles") ++
 +
                    [integer_to_list(Bottle-1) ++ " bottles"].
 +
bottles() -> lists:reverse(lists:seq(0,99)).
 +
sing() ->
 +
    lists:foreach(fun spawn_singer/1, bottles()),
 +
    sing_verse(99).
 +
spawn_singer(Bottle) ->
 +
    Pid = self(),
 +
    spawn(fun() -> Pid ! create_verse(Bottle) end).
 +
sing_verse(Bottle) ->
 +
    receive
 +
{_, Verse} when Bottle == 0 ->
 +
    io:format(Verse);
 +
{N, Verse} when Bottle == N ->
 +
    io:format(Verse),
 +
    sing_verse(Bottle-1)
 +
    after
 +
3000 ->
 +
    io:format("Verse not received after 3 seconds"
 +
                      " - re-starting singer~n"),
 +
    spawn_singer(Bottle),
 +
    sing_verse(Bottle)
 +
    end.
 +
</pre>
  
  
 
==Starter==
 
==Starter==
  
Good places to start on trapexits wiki:
+
Good places to start on trapexit.org
 +
 
 +
[[:Category:HowTo|HowTo documents]] - Tutorials and Guides for Erlang developers<br/>
 +
[[:Category:CookBook|Erlang Cookbook]] - A collection of Erlang solutions to specific problems<br/>
 +
[[:Category:Concepts|Erlang Concepts]] - Articles dealing with specific Erlang aspects<br/>
 +
[[:Category:Best Practices|Erlang Best Practices]] - Articles dealing with best practices in Erlang<br/>
 +
[[:Category:Articles|Erlang Articles]] - Articles of interest to Erlang developers and testers<br/>
 +
[[ErlangJobs]] - Erlang and Erlang related Jobs<br/>
 +
[[:Category:Links|Links]] to Erlang related sites outside Trapexit<br>
 +
[http://planet.trapexit.org RSS Feeds] related to Erlang, including blogs and software development
  
*[[:Category:HowTo|How To documents]]
+
</td>
*[[:Category:CookBook|Erlang Cookbook]]
+
<td valign="top">
*[[:Category:Concepts|Erlang Concepts]] - Articles dealing with specific Erlang aspects
+
*[[:Category:Best Practices|Erlang Best Practices]] - Articles dealing with best practices in Erlang
+
*[[:Category:Articles|Erlang Articles]]
+
*[[:Category:Interfacing Erlang|Interfacing]] with the real world
+
*[[:Category:Erlang and Other Languages|Erlang and Other Languages]] - How Erlang compares with other Languages
+
*[[:Category:Testing|Testing Erlang]] - How to test your code in Erlang
+
  
*[[ErlangJobs]] - Erlang and Erlang related Jobs
+
{| style="margin-top:1em; width: 200px; background:#fcfcfc; border:1px solid #860404; cell-padding:0 white-space:nowrap; overflow: hidden"
 +
|style="color:#000; font-size:85%; margin-top:0; "|
 +
<h2 class="#bodyContent">Latest Forum Posts</h2>
 +
<irss max=2>http://forum.trapexit.org/rss_mod.php?f=23</irss>
 +
<br/><irss max=2>http://forum.trapexit.org/rss_mod.php?f=7</irss>
 +
<br/><irss max=2>http://forum.trapexit.org/rss_mod.php?f=14</irss>
 +
<br/><irss max=1>http://forum.trapexit.org/rss_mod.php?f=28</irss>
 +
<br/><irss max=1>http://forum.trapexit.org/rss_mod.php?f=20</irss>
 +
<br/><irss max=1>http://forum.trapexit.org/rss_mod.php?f=5</irss>
 +
|}
  
==Links==
+
{| style="margin-top:1em; width: 200px; background:#fcfcfc; border:1px solid #860404; cell-padding:0 white-space:nowrap; overflow: hidden"
*[[:Category:Links|Links]]
+
|style="color:#000; font-size:85%; margin-top:0; "|
*[[Current events|Events]] - What is happening in the Erlang World
+
<h2 class="#bodyContent">Latest Planet Entries</h2>
*[[:Category:RSSFeeds|Check out our RSS Feeds]]
+
<rss_planet max=5>http://planet.trapexit.org/rss20.xml</rss_planet>
 +
|}
  
== Help with wiki ==
+
{| style="margin-top:1em; width: 200px; background:#fcfcfc; border:1px solid #860404; cell-padding:0 white-space:nowrap; overflow: hidden"
 +
|style="color:#000; font-size:85%; margin-top:0; "|
 +
<h2 class="#bodyContent">Latest Wiki Changes</h2>
 +
<rss_recent max=3>http://www.trapexit.org/index.php?title=Special:Recentchanges&hideminor=0&days=30&feed=rss</rss_recent>
 +
|}
  
If you need help with using a wiki please read trough the mediawiki help pages.
+
{| style="margin-top:1em; width: 200px; background:#fcfcfc; border:1px solid #860404; cell-padding:0 white-space:nowrap; overflow: hidden"
 +
|style="color:#000; font-size:85%; margin-top:0; "|
 +
<h2 class="#bodyContent">Mailing Lists Posts</h2>
 +
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=2</irss><br/>
 +
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=11</irss><br/>
 +
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=27</irss><br/>
 +
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=12</irss><br/>
 +
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=25</irss>
 +
|}
 +
  
You can find them either on the menu to the left or [http://meta.wikimedia.org/wiki/Help:Contents here]
+
</td></tr></table>

Revision as of 16:11, 19 November 2009

Your Erlang Community Site

Welcome to trapexit.org, the Erlang community site where you can read news and weblogs related to Erlang/OTP, discuss projects, issues and ideas with other Erlang developers, and read and publish articles and HowTos related to Erlang/OTP.

Trapexit News

<irss max=1 news=true>http://forum.trapexit.org/rss_mod.php?f=19&t=1</irss>

What is Erlang and OTP?

Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance. Originally developed at Ericsson, it was released as open source in 1998.

OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems. It includes its own distributed database, applications to interface towards other languages, debugging and release handling tools. These tools and applications distributed by Ericsson are complemented by numerous other open source projects.

Here is an example of Erlang code:

-module(beersong).
-author('BillClementson').
-export([sing/0]).
-define(TEMPLATE_0, "~s of beer on the wall, ~s of beer.~n"
                    "Go to the store and buy some more," 
                    "99 bottles of beer on the wall.~n").
-define(TEMPLATE_N, "~s of beer on the wall, ~s of beer.~n"
                    "Take one down and pass it around, ~s"
                    " of beer on the wall.~n~n").

create_verse(0)      -> 
    {0, io_lib:format(?TEMPLATE_0, phrase(0))};
create_verse(Bottle) -> 
    {Bottle, io_lib:format(?TEMPLATE_N, phrase(Bottle))}.

phrase(0)      -> ["No more bottles", "no more bottles"];
phrase(1)      -> ["1 bottle", "1 bottle", "no more bottles"];
phrase(2)      -> ["2 bottles", "2 bottles", "1 bottle"];
phrase(Bottle) -> 
     lists:duplicate(2,integer_to_list(Bottle) ++ " bottles") ++ 
                     [integer_to_list(Bottle-1) ++ " bottles"].
bottles() -> lists:reverse(lists:seq(0,99)).
sing() ->
    lists:foreach(fun spawn_singer/1, bottles()),
    sing_verse(99).
spawn_singer(Bottle) ->
    Pid = self(), 
    spawn(fun() -> Pid ! create_verse(Bottle) end).
sing_verse(Bottle) ->
    receive
	{_, Verse} when Bottle == 0 ->
	    io:format(Verse);
	{N, Verse} when Bottle == N ->
	    io:format(Verse),
	    sing_verse(Bottle-1)
    after 
	3000 ->
	    io:format("Verse not received after 3 seconds"
                      " - re-starting singer~n"),
	    spawn_singer(Bottle),
	    sing_verse(Bottle)
    end.


Starter

Good places to start on trapexit.org

HowTo documents - Tutorials and Guides for Erlang developers
Erlang Cookbook - A collection of Erlang solutions to specific problems
Erlang Concepts - Articles dealing with specific Erlang aspects
Erlang Best Practices - Articles dealing with best practices in Erlang
Erlang Articles - Articles of interest to Erlang developers and testers
ErlangJobs - Erlang and Erlang related Jobs
Links to Erlang related sites outside Trapexit
RSS Feeds related to Erlang, including blogs and software development

Latest Forum Posts

<irss max=2>http://forum.trapexit.org/rss_mod.php?f=23</irss>
<irss max=2>http://forum.trapexit.org/rss_mod.php?f=7</irss>
<irss max=2>http://forum.trapexit.org/rss_mod.php?f=14</irss>
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=28</irss>
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=20</irss>
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=5</irss>

Latest Planet Entries

<rss_planet max=5>http://planet.trapexit.org/rss20.xml</rss_planet>

Latest Wiki Changes

<rss_recent max=3>http://www.trapexit.org/index.php?title=Special:Recentchanges&hideminor=0&days=30&feed=rss</rss_recent>

Mailing Lists Posts

<irss max=1>http://forum.trapexit.org/rss_mod.php?f=2</irss>
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=11</irss>
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=27</irss>
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=12</irss>
<irss max=1>http://forum.trapexit.org/rss_mod.php?f=25</irss>