<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Tag erlang</title>
    <link>http://blog.zabiello.com/articles/tag/erlang</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Kto si&#281; zmierzy z Erlangiem? :)</title>
      <description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Erlang_programming_language"&gt;Erlang&lt;/a&gt;, to j&#281;zyk programowania stworzony pierwotnie przez, i na u&#380;ytek, firmy telekomunikacyjnej Ericson do tworzenia wysokowydajnych, odpornych na b&#322;&#281;dy, aplikacji czasu rzeczywistego. Warto wiedzie&#263;, &#380;e og&#243;lne wymagania dla software w telekomunikacji s&#261; poza zasi&#281;giem wi&#281;kszo&#347;ci &amp;#8220;klasycznych&amp;#8221; aplikacji pisanych w C++ czy Javie. Dopuszczalna ilo&#347;&#263; przestoj&#243;w aplikacji erlangowych jest rz&#281;du kilku minut na rok. W Erlangu napisano bardzo wydajny serwer &lt;span class="caps"&gt;HTTP&lt;/span&gt; (&lt;a href="http://yaws.hyber.org/"&gt;&lt;span class="caps"&gt;YAWS&lt;/span&gt;&lt;/a&gt;), Jabbera/XMPP (&lt;a href="http://www.ejabberd.im/"&gt;Ejabberd&lt;/a&gt;), a nawet baz&#281; danych czasu rzeczywistego (&lt;a href="http://www.erlang.org/documentation/doc-5.0.1/lib/mnesia-3.9.2/doc/index.html"&gt;Mnesia&lt;/a&gt;). Istnieje tak&#380;e &lt;a href="http://erlyweb.org/"&gt;EarlyWeb&lt;/a&gt; framework do budowania aplikacji webowych za pomoc&#261; Erlanga.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.erlang.org/images/jaerlang_small.jpg" align="left" /&gt;
Znane (m.in. w ksi&#261;&#380;ek o Ruby i Rails) wydawnictwo Pragmatic Bookshelf wyda&#322;o ksi&#261;&#380;k&#281; o Erlangu &lt;a href="http://www.pragprog.com/titles/jaerlang/index.html"&gt;Programming Erlang: Software for a Concurrent World&lt;/a&gt;. Stabilno&#347;&#263; i wydajno&#347;&#263; &lt;span class="caps"&gt;YAWS&lt;/span&gt; (napisanego w ca&#322;o&#347;ci w Erlangu serwera &lt;span class="caps"&gt;HTTP&lt;/span&gt;) &lt;a href="http://www.sics.se/~joe/apachevsyaws.html"&gt;o&#347;miesza s&#322;ynnego Apache&amp;#8217;a&lt;/a&gt;. Podczas gdy Apache podda&#322; si&#281; przy 4 tys. r&#243;wnoleg&#322;ych po&#322;&#261;cze&#324;, &lt;span class="caps"&gt;YAWS&lt;/span&gt; bez &#380;adnego wysi&#322;ku obs&#322;ugiwa&#322; ich ponad 80 tysi&#281;cy. W sumie to nie by&#322;a mo&#380;e tylko wina Apache ale tak&#380;e i Linuksa, kt&#243;ry po prostu s&#322;abiej wypada na tle lekkich proces&#243;w Erlanga (Erlang nie u&#380;ywa systemowych w&#261;tk&#243;w ani proces&#243;w).&lt;/p&gt;


&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OpYPKBQhSZ4"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/OpYPKBQhSZ4" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

	&lt;p&gt;Zaimplementowany w Erlangu serwer wymiany wiadomo&#347;ci za pomoc&#261; protoko&#322;&#243;w &lt;a href="http://www.jabber.org/"&gt;Jabber&lt;/a&gt; i &lt;a href="http://www.xmpp.org/"&gt;&lt;span class="caps"&gt;XMPP&lt;/span&gt;&lt;/a&gt; ma r&#243;wnie&#380; &#347;wietn&#261; wydajno&#347;&#263; (2 tys. pojedy&#324;czych wiadomo&#347;ci / sekund&#281; dla procesora 1.5 GHz). Bez problemu obs&#322;uguje nawet 7 tys. r&#243;wnoleg&#322;ych u&#380;ytkownik&#243;w. Uchodzi za najbardziej wypasiony i stabilny serwer &lt;span class="caps"&gt;XMPP&lt;/span&gt; (vide &lt;a href="http://www.erlang.se/euc/04/jabber.pdf"&gt;&lt;span class="caps"&gt;PDF&lt;/span&gt;&lt;/a&gt;) Wykorzystuje Mnesi&#281;, kt&#243;ra nawiasem m&#243;wi&#261;c, stosuje zupe&#322;nie &lt;a href="http://www.infoq.com/news/2007/08/mnesia"&gt;inne podej&#347;cie&lt;/a&gt; od relacyjnych baz danych.&lt;/p&gt;


	&lt;p&gt;Debugowanie i wyszukiwanie b&#322;&#281;d&#243;w w Erlangu jest bardzo &#322;atwe, gdy&#380; nie istnieje tam typowe poj&#281;cie zmiennej. I je&#347;li jaki&#347; stan jest utrwalony w danym miejscu to jest to tylko jedno takie miejsce w ca&#322;ym kodzie. Poni&#380;szy film pokazuje przyk&#322;adowe wy&#322;apanie i naprawa b&#322;&#281;du na &#380;ywym systemie.&lt;/p&gt;


&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uKfKtXYLG78"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/uKfKtXYLG78" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

	&lt;h2&gt;Tw&#243;rca Erlanga w Krakowie&lt;/h2&gt;


	&lt;p&gt;&lt;img src="http://www.sfi.org.pl/resource/file/7/armstrong.jpg?1199459736" align="left" hspace="4" /&gt; W najbli&#380;szych dniach w Krakowie odb&#281;dzie si&#281; &lt;a href="http://www.sfi.org.pl/aktualnosci"&gt;Studencki Festiwal Informatyczny&lt;/a&gt; i tam b&#281;dzie mo&#380;na pos&#322;ucha&#263; za darmo i na &#380;ywo &lt;a href="http://armstrongonsoftware.blogspot.com/"&gt;Joe Amstronga&lt;/a&gt;, czo&#322;owego tw&#243;rc&#281; i propagatora j&#281;zyka Erlang. Joe jest te&#380; autorem ksi&#261;&#380;ki &lt;a href="http://www.pragprog.com/titles/jaerlang/index.html"&gt;Programming Erlang: Software for a Concurrent World&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 29 Feb 2008 04:28:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:2054f288-92fc-44cc-9215-750efb5a7fc4</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/02/29/erlang</link>
      <category>erlang</category>
    </item>
  </channel>
</rss>
