<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DE8ASHY_cCp7ImA9WhRaFE8.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604</id><updated>2012-02-16T22:14:09.848+01:00</updated><category term="ruby" /><category term="programowanie funkcyjne" /><category term="programowanie współbieżne" /><category term="english" /><category term="erlang" /><category term="jakość" /><category term="revactor" /><category term="programming" /><category term="stuff" /><category term="ruby 1.9" /><category term="pl/sql" /><category term="github" /><category term="mass" /><category term="version" /><category term="dbms" /><category term="upgrade" /><category term="fiber" /><category term="query" /><category term="programowanie" /><category term="mapreduce" /><category term="różne" /><category term="oracle" /><category term="concurrent" /><category term="rulang" /><category term="sql" /><category term="git" /><category term="dml" /><category term="actor model" /><category term="start" /><category term="rbridge" /><category term="cohi" /><category term="parallel" /><category term="maintenance" /><category term="quality" /><category term="performance" /><category term="ddl" /><category term="update" /><category term="mnesia" /><title>Pi0tr's Weblog</title><subtitle type="html">Ruby, Erlang &amp;amp; other IT stuff...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.pk-systems.pl/" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Pi0trsWeblog" /><feedburner:info uri="pi0trsweblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0UMRXkyeyp7ImA9WhRTGEs.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-4752109649059399122</id><published>2011-11-09T16:48:00.005+01:00</published><updated>2011-11-09T18:54:44.793+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-09T18:54:44.793+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="query" /><category scheme="http://www.blogger.com/atom/ns#" term="dml" /><category scheme="http://www.blogger.com/atom/ns#" term="maintenance" /><category scheme="http://www.blogger.com/atom/ns#" term="pl/sql" /><category scheme="http://www.blogger.com/atom/ns#" term="upgrade" /><category scheme="http://www.blogger.com/atom/ns#" term="dbms" /><category scheme="http://www.blogger.com/atom/ns#" term="ddl" /><category scheme="http://www.blogger.com/atom/ns#" term="mass" /><category scheme="http://www.blogger.com/atom/ns#" term="update" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><category scheme="http://www.blogger.com/atom/ns#" term="concurrent" /><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="quality" /><category scheme="http://www.blogger.com/atom/ns#" term="version" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>Oracle mass updates - doing it faster (and in a right way)</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/4752109649059399122/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=4752109649059399122" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/4752109649059399122?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/4752109649059399122?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/5u3gEnqC55I/oracle-mass-updates-doing-it-faster-and.html" title="Oracle mass updates - doing it faster (and in a right way)" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Change is inevitable in the IT world - applications or services are upgraded to newer versions on regular basis.
Business logic changes often have an impact on structure or semantics of information stored in the application database, so a new client-side software most likely comes along with a need to perform mass data updates, to ensure that the database conforms with those changes. Frequently 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6zK8QeAgGjGhgaSk0hxn5WBWxo8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6zK8QeAgGjGhgaSk0hxn5WBWxo8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6zK8QeAgGjGhgaSk0hxn5WBWxo8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6zK8QeAgGjGhgaSk0hxn5WBWxo8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/5u3gEnqC55I" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2011/11/oracle-mass-updates-doing-it-faster-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGR3w7fCp7ImA9WhZXEUw.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-7632674859764333550</id><published>2011-04-29T22:53:00.000+02:00</published><updated>2011-04-29T22:53:46.204+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-29T22:53:46.204+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="różne" /><category scheme="http://www.blogger.com/atom/ns#" term="jakość" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><category scheme="http://www.blogger.com/atom/ns#" term="stuff" /><title>Prawdy objawione</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/7632674859764333550/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=7632674859764333550" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/7632674859764333550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/7632674859764333550?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/ByBbcQvNQ7w/prawdy-objawione.html" title="Prawdy objawione" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Po długiej przerwie, spowodowanej przyczynami obiektywnymi ;) postanowiłem napisać coś z zupełnie innej beczki - historię z życia wziętą.

Niedawno przedstawiono mi wyniki audytu kodu pewnego systemu, którym mam przyjemność(?) się zajmować, przygotowanego przy pomocy Automatycznego Narzędzia Weryfikującego Jakość Kodu.

Oprócz skądinąd słusznych uwag dotyczących formy czy złożoności kodu (metryki
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KYZsnvemEHUwai37RvkXnOXF3kw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KYZsnvemEHUwai37RvkXnOXF3kw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KYZsnvemEHUwai37RvkXnOXF3kw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KYZsnvemEHUwai37RvkXnOXF3kw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/ByBbcQvNQ7w" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2011/04/prawdy-objawione.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cMQX4-cCp7ImA9WxVTGE4.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-1412445164366978091</id><published>2009-01-01T14:31:00.005+01:00</published><updated>2009-01-01T19:38:00.058+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-01T19:38:00.058+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie współbieżne" /><category scheme="http://www.blogger.com/atom/ns#" term="fiber" /><category scheme="http://www.blogger.com/atom/ns#" term="erlang" /><category scheme="http://www.blogger.com/atom/ns#" term="revactor" /><category scheme="http://www.blogger.com/atom/ns#" term="mapreduce" /><category scheme="http://www.blogger.com/atom/ns#" term="ruby 1.9" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><category scheme="http://www.blogger.com/atom/ns#" term="actor model" /><title>Revactor - współbieżność bez wątków</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/1412445164366978091/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=1412445164366978091" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/1412445164366978091?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/1412445164366978091?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/7yXx6BCogQI/revactor-wspbieno-bez-wtkw.html" title="Revactor - współbieżność bez wątków" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><content type="html">Nie od dziś wiadomo, że implementacja wątków (green threads) w Rubym 1.8 nie pozwala tak naprawdę na osiągnięcie szczególnie spektakularnych efektów, jeśli chodzi o wydajność programów wielowątkowych (napisano już na ten temat wiele, np. tu i nie zamierzam się nad tym rozwodzić).Dość powiedzieć, że najwydajniejsze serwery sieciowe pisane w Rubym, są oparte o tzw. pętlę zdarzeń (event loop) oraz 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-IQ2SJ7hspqjOKYg41qBi4CZz7c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-IQ2SJ7hspqjOKYg41qBi4CZz7c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-IQ2SJ7hspqjOKYg41qBi4CZz7c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-IQ2SJ7hspqjOKYg41qBi4CZz7c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/7yXx6BCogQI" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2008/12/revactor-wspbieno-bez-wtkw.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMEQHw9eyp7ImA9WxRaGEs.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-1409349716914761188</id><published>2008-12-21T14:47:00.001+01:00</published><updated>2008-12-21T14:50:01.263+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-21T14:50:01.263+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="github" /><title>GitHub</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/1409349716914761188/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=1409349716914761188" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/1409349716914761188?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/1409349716914761188?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/FBIkrppNvEA/github.html" title="GitHub" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><content type="html">Wszystkie przykłady z tego bloga są teraz dostępne na GitHub'ie.http://github.com/pi0tr
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eOcnirZ9qywUmWeb8SoJxf75z18/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eOcnirZ9qywUmWeb8SoJxf75z18/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eOcnirZ9qywUmWeb8SoJxf75z18/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eOcnirZ9qywUmWeb8SoJxf75z18/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/FBIkrppNvEA" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2008/12/github.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4DRH45eCp7ImA9WxdbGUQ.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-5836116176310616046</id><published>2008-08-04T12:17:00.020+02:00</published><updated>2008-08-17T20:32:55.020+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-17T20:32:55.020+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="erlang" /><category scheme="http://www.blogger.com/atom/ns#" term="mnesia" /><category scheme="http://www.blogger.com/atom/ns#" term="dbms" /><title>Mnesia, cz. 2</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/5836116176310616046/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=5836116176310616046" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/5836116176310616046?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/5836116176310616046?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/73KeTGEmveE/mnesia-cz-2.html" title="Mnesia, cz. 2" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">W tej części posta napiszę nieco więcej na temat transakcji i manipulowania danymi.Poprzednio utworzyłem przykładowy schemat z kilkoma tabelami, dzisiaj trochę go rozbuduję, tak by powstał prosty "sklep internetowy" z płytami i możliwością składania zamówień. W tym celu dodamy dwie nowe tabelki: store i order, a także rekord reprezentujący pozycję zamówienia (item)-record(store,              {
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-g07uyFK-JRpuilDy8VpGkcILHE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-g07uyFK-JRpuilDy8VpGkcILHE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-g07uyFK-JRpuilDy8VpGkcILHE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-g07uyFK-JRpuilDy8VpGkcILHE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/73KeTGEmveE" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2008/08/mnesia-cz-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IDQHkyeSp7ImA9WxZaFUo.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-7916184379889928168</id><published>2008-04-30T19:25:00.033+02:00</published><updated>2008-04-30T20:19:31.791+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-30T20:19:31.791+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="erlang" /><category scheme="http://www.blogger.com/atom/ns#" term="mnesia" /><category scheme="http://www.blogger.com/atom/ns#" term="dbms" /><title>Mnesia</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/7916184379889928168/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=7916184379889928168" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/7916184379889928168?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/7916184379889928168?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/5Yqm3WQndRg/mnesia.html" title="Mnesia" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Mnesia to rozproszony DBMS, charakteryzujący się paroma ciekawymi cechami, do których należą m.in.:bardzo szybkie wyszukiwanie wartości typu para-klucz,możliwość tworzenia tabel przechowujących dane tylko w pamięci RAM,duża odporność na awarie dzięki automatycznej replikacji danych pomiędzy węzłami,obsługa transakcji lokalnych i rozproszonych,możliwość zrezygnowania z transakcyjności na rzecz 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4mUxwpb_ItesdifJhjrsFVI-8UQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4mUxwpb_ItesdifJhjrsFVI-8UQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4mUxwpb_ItesdifJhjrsFVI-8UQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4mUxwpb_ItesdifJhjrsFVI-8UQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/5Yqm3WQndRg" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2008/04/mnesia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAARHoyeyp7ImA9WB9aGEs.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-807979463240158281</id><published>2008-01-08T21:37:00.000+01:00</published><updated>2008-01-09T08:45:45.493+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-09T08:45:45.493+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="rbridge" /><category scheme="http://www.blogger.com/atom/ns#" term="erlang" /><category scheme="http://www.blogger.com/atom/ns#" term="rulang" /><title>Rulang/RBridge</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/807979463240158281/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=807979463240158281" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/807979463240158281?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/807979463240158281?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/swJ5Fd3dPh8/rulangrbridge.html" title="Rulang/RBridge" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><content type="html">Jeśli ktoś chce wywoływać kod Erlang'a z poziomu programów w Ruby, może użyć do tego celu gem'a rbridge (alias Rulang). Po zainstalowaniu gem'a mamy do dyspozycji moduł Erlang'a o nazwierulang oraz klasę RBridge, stanowiącą interfejs pomiędzy Rubym a VM Erlang'a.Komunikacja odbywa się poprzez socket'y - żeby wystartować serwer rulang, odpalamy konsolę Erlang'a i funkcję rulang:start_server/1, 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1vDYbN6Tw4eqdA047K1_5XiHI2k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1vDYbN6Tw4eqdA047K1_5XiHI2k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1vDYbN6Tw4eqdA047K1_5XiHI2k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1vDYbN6Tw4eqdA047K1_5XiHI2k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/swJ5Fd3dPh8" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2008/01/rulangrbridge.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYMRX46cSp7ImA9WB9bF0o.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-4485196393136825826</id><published>2007-12-24T15:31:00.000+01:00</published><updated>2007-12-27T18:39:44.019+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-27T18:39:44.019+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie funkcyjne" /><category scheme="http://www.blogger.com/atom/ns#" term="erlang" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><category scheme="http://www.blogger.com/atom/ns#" term="cohi" /><title>Programowanie funkcyjne w Rubym, cz. 1</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/4485196393136825826/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=4485196393136825826" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/4485196393136825826?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/4485196393136825826?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/4Eg2CyBAXdA/programowanie-funkcyjne-w-rubym-cz-1.html" title="Programowanie funkcyjne w Rubym, cz. 1" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">W swoim pierwszym poście wspominałem, że Ruby pozwala na programowanie funkcyjne, "w ograniczonym zakresie". Mam zamiar rozwinąć nieco ten temat.Ruby posiada kilka cech, które umożliwiają programowanie w stylu funkcyjnym, a mianowicie:- (prawie) każde wyrażenie posiada wartość (nawet np. if czy case),- wartością zwracaną z metody jest wartość ostatnio obliczanego wyrażenia (co pozwala na 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pSPbyJGAdLbicohCbkpFctAvYLo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pSPbyJGAdLbicohCbkpFctAvYLo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pSPbyJGAdLbicohCbkpFctAvYLo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pSPbyJGAdLbicohCbkpFctAvYLo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/4Eg2CyBAXdA" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2007/12/programowanie-funkcyjne-w-rubym-cz-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIGQnY7eip7ImA9WB9UFko.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-8979413965518447541</id><published>2007-12-12T20:58:00.000+01:00</published><updated>2007-12-14T23:48:43.802+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T23:48:43.802+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="erlang" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><title>Zgadula w Erlangu</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/8979413965518447541/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=8979413965518447541" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/8979413965518447541?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/8979413965518447541?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/UtqAPGNePdA/zgadula-w-erlangu.html" title="Zgadula w Erlangu" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Miałem napisać kilka słów o Erlangu, wypada więc dotrzymać słowa.Język Erlang został opracowany przez Ericcsona i jest z powodzeniem stosowany w projektach wymagających wysokiej skalowalności i odporności na awarie. Jest to język funkcyjny, dynamiczny, o ścisłym typowaniu, w którym główny nacisk położono na współbieżność oraz możliwości przetwarzania rozproszonego. Maszyna wirtualna (programy, 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h2oEi-chWf9_3pNAJp9Pmg3KZe4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h2oEi-chWf9_3pNAJp9Pmg3KZe4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h2oEi-chWf9_3pNAJp9Pmg3KZe4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h2oEi-chWf9_3pNAJp9Pmg3KZe4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/UtqAPGNePdA" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2007/12/zgadula-w-erlangu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUBQX48fCp7ImA9WB9UFko.&quot;"><id>tag:blogger.com,1999:blog-6267882375479124604.post-7999376342650245472</id><published>2007-12-09T22:10:00.001+01:00</published><updated>2007-12-14T23:44:10.074+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T23:44:10.074+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="start" /><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><title>Start!</title><link rel="replies" type="application/atom+xml" href="http://blog.pk-systems.pl/feeds/7999376342650245472/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6267882375479124604&amp;postID=7999376342650245472" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/7999376342650245472?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6267882375479124604/posts/default/7999376342650245472?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pi0trsWeblog/~3/FhoRNI6dmio/start.html" title="Start!" /><author><name>Pi0tr</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Na każdym blogu jest taka sytuacja, że ktoś musi zacząć pierwszy...Witam wszystkich zainteresowanych (niezainteresowanych również) na moim blogu. Długo zastanawiałem się, czy w zalewie blogów różnej maści jest miejsce dla jeszcze-jednego-blogu-o-rubym-i-erlangu (Yet Another... itd.) Ale pomyślałem sobie - dlaczego nie? W końcu każdy ma prawo pisać o tym, co mu się żywnie podoba. A ponieważ tak 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FdKg1pV67TNfD68zkItdVyzvjZ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FdKg1pV67TNfD68zkItdVyzvjZ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FdKg1pV67TNfD68zkItdVyzvjZ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FdKg1pV67TNfD68zkItdVyzvjZ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pi0trsWeblog/~4/FhoRNI6dmio" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.pk-systems.pl/2007/12/start.html</feedburner:origLink></entry></feed>

