<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dawid pisze... &#187; Ruby</title>
	<atom:link href="http://dawidpisze.federowicz.net/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://dawidpisze.federowicz.net</link>
	<description>moim (nie)skromnym zdaniem</description>
	<lastBuildDate>Tue, 29 Jun 2010 08:08:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ROzważania o RoR, PHP&#8230;</title>
		<link>http://dawidpisze.federowicz.net/2009/03/rozwazania_ror_ruby_php/</link>
		<comments>http://dawidpisze.federowicz.net/2009/03/rozwazania_ror_ruby_php/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 13:01:48 +0000</pubDate>
		<dc:creator>Dawid</dc:creator>
				<category><![CDATA[Komentarz]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://dawidpisze.federowicz.net/?p=44</guid>
		<description><![CDATA[Kilka miesięcy temu (gdzieś koło roku nawet, więc wypadałoby napisać &#8211; kilkanaście&#8230;) zetknąłem się z językiem Ruby, i oczywiście z frameworkiem Ruby On Rails. Jako że jestem programuję głównie dla sieci, ale też nie bezmyślnie, od dawna dostrzegam pewnie nazwijmy to niedostatki języka PHP. Dlatego właśnie wyczytałem w sieci wszystko, co się da na temat [...]]]></description>
			<content:encoded><![CDATA[<p>Kilka miesięcy temu (gdzieś koło roku nawet, więc wypadałoby napisać &#8211; kilkanaście&#8230;) zetknąłem się z językiem Ruby, i oczywiście z frameworkiem Ruby On Rails. Jako że jestem programuję głównie dla sieci, ale też nie bezmyślnie, od dawna dostrzegam pewnie nazwijmy to niedostatki języka PHP. Dlatego właśnie wyczytałem w sieci wszystko, co się da na temat tej wówczas dla mnie nowości, mocno się zainteresowałem, przyrzekłem sobie, że będę się tego &#8222;czegoś&#8221; uczyć w wolnych chwilach, aby nie tylko podnieść własne kwalifikacje, ale po prostu &#8211; aby poznać nowe trendy, jak to się ładnie nazywa&#8230;<br />
Niestety, smutna rzeczywistość zgotowała dla mnie coś zupełnie innego, bowiem w ciągu ostatnich kilku miesięcy tak byłem zawalony robotą, że początkowe &#8222;mocne postanowienia&#8221; musiałem, chcąc-niechcąc, odłożyć w kąt i skupić się na dotychczasowym klepaniu kodu.<br />
Teraz, po lekturze http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html zastanawiam się, czy właściwie nie zrobiłem dobrze? Czy Railsy nadal, mimo że upłynęło przecież kilka miesięcy, są w powijakach? Myślę, że tak, mimo wszystko nadal jest to technologia bardzo niszowa, z której przyswojeniem można jeszcze spokojnie poczekać.<br />
Póki co, w naszym zresztą mocno zacofanym kraju wciąż niepodzielnie rządzi &#8222;cowboy-codding&#8221; w postaci zgraj licealistów, którzy za pół darmo piszą serwisy i-netowe (czy zresztą mocno wkurzają &#8222;prawdziwych&#8221; programistów; można o tym przeczytać na niemal każdym forum poświęconym językowi PHP).<br />
Czy to źle, że Railsy tak kiepsko sobie radzą? Z mojej perspektywy &#8211; wcale nie. Mogę chociażby dzisiaj zasiąść do zgłębiania tego frameworka, i powiedzmy za miesiąc mieć go jako-tako opanowanego, a i tak pewnie byłbym jednym z pierwszych kilkudziesięciu zapaleńców, którym w ogóle chciało się to robić. <img src='http://dawidpisze.federowicz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />
Z drugiej jednak strony, czy warto? Powiem szczerze: mocno mnie ten język pociąga, jego konstrukcja jest wręcz bajeczna, ale&#8230; no właśnie, zapytam po raz kolejny: <strong>czy warto uczyć się Ruby, Ruby On Rails</strong>???</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-1512785452250400";
google_ad_slot = "1428346834";
google_ad_width = 728;
google_ad_height = 90;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://dawidpisze.federowicz.net/2009/03/rozwazania_ror_ruby_php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails, vol. 3 &#8211; podstawy Ruby</title>
		<link>http://dawidpisze.federowicz.net/2008/11/ruby-on-rails-vol-3-podstawy-ruby/</link>
		<comments>http://dawidpisze.federowicz.net/2008/11/ruby-on-rails-vol-3-podstawy-ruby/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 18:57:14 +0000</pubDate>
		<dc:creator>Dawid</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://dawidpisze.federowicz.net/?p=28</guid>
		<description><![CDATA[Skoro instalację języka Ruby i frameworka Rails mamy już za sobą, warto byłoby poświęcić trochę czasu na bliższe zapoznanie się zarówno z samym językiem, jak i podstawami frameworka. Zaznaczam, że w tym miejscu podaję podstawy tego języka, które w żadnym razie nie wyczerpują tematu, a czasami są tylko szczytem góry lodowej. Jeśli Twoja ciekawość, Drogi [...]]]></description>
			<content:encoded><![CDATA[<p>Skoro instalację języka Ruby i frameworka Rails mamy już za sobą, warto byłoby poświęcić trochę czasu na bliższe zapoznanie się zarówno z samym językiem, jak i podstawami frameworka.<br />
Zaznaczam, że w tym miejscu podaję podstawy tego języka, które w żadnym razie nie wyczerpują tematu, a czasami są tylko szczytem góry lodowej. Jeśli Twoja ciekawość, Drogi Czytelniku, w którymś momencie jest niezaspokojona, pod koniec tego wpisu podaję kilka przydatnych linków, pod którymi znaleźć powinieneś odpowiedzi na interesujące Cię pytania. Zapraszam oczywiście również do komentowania wpisu &#8211; wszelkie uczestnictwo jest jak najbardziej mile widziane!<br />
No, ale zacznijmy już w końcu, prawda?</p>
<p><strong>Nieco historii&#8230;</strong><br />
Jak każdy tutorial, czy opis technologii, tak i tutaj zacznę od pewnego rysu historycznego, który pozwoli Ci nieco przychylniej spojrzeć na język Ruby i Railsy.</p>
<p>Zacznijmy od samego języka Ruby. Jest to stosunkowo młody język, bo jego historia zaczęła się w roku 1995, kiedy to <a href="http://pl.wikipedia.org/wiki/Yukihiro_Matsumoto" onclick="javascript:urchinTracker ('/outbound/article/pl.wikipedia.org');">Yukihiro Matsumoto</a> (pseudonim <em>Matz</em>) stworzył interpretowany, w pełni obiektowy i dynamicznie typowany język programowania, który nazwał Ruby (z angielskiego &#8211; <em>rubin</em>).<br />
Aby zdobyć sobie popularność, trzeba było tylko 8. lat &#8211; wtedy to, w 2008 roku, na rynku pojawił się framework Ruby on Rails. Od tego czasu (darujmy sobie szczegóły historii i ewolucji Ruby&#8217;iego i Railsów) masowo zdobywa sobie popularność.<br />
Co jest przyczyną aż takiej &#8222;kariery&#8221; Railsów (umówmy się: kiedy używam słowa Rails, to w kontekście połączenia Ruby&#8217;iego i frameworka Rails; kiedy natomiast wskazuję wyraźnie &#8222;ruby&#8221; &#8211; piszę o samym języku programowania)? Praktycy podawać tutaj będą dużo przyczyn, ale najczęściej wymienianymi są: prostota, szybkość pisania kodu (trudno właściwie mówić tutaj o pisaniu&#8230; ale nie uprzedzajmy wydarzeń), intuicyjność&#8230; Te zachwyty można by mnożyć, jednak wróćmy do głównego wywodu.<br />
Co jeszcze nas w tym miejscu powinno interesować? Acha, licencjonowanie. Oczywiście Ruby i framework są otwartym oprogramowaniem, licencjonowanym na zasadach GPL. Czyli &#8211; w zasadzie dowolność.</p>
<p>Teraz przejdźmy dalej, do rzeczy bardziej interesujących&#8230;</p>
<p><strong>Podstawowe typy danych</strong><br />
Ruby wspiera wszystkie typy danych znane programistom. Są to więc stringi, integery, floaty, itd. Nieco inaczej się nazywają, ale &#8211; jak napisano wyżej &#8211; jest to jeden z języków typowanych dynamicznie, w związku z czym nie musimy jawnie deklarować używanego typu danych, jak to ma miejsce chociażby w języku C. Tutaj wystarczy napisać:</p>
<p><code>puts 1+2</code><br />
w odpowiednim miejscu, żeby &#8222;na wyjściu&#8221; otrzymać wynik z dodawania 1 + 2.</p>
<p>Ach, ale jeszcze nie wspomnieliśmy o najpopularniejszych sposobach pracy z Rubym!<br />
Już nadrabiam&#8230;</p>
<p>Jeśli tak się nieszczęśliwie składa, że naszym środowiskiem roboczym jest jedynie słuszny Windows, nie rozpaczajmy! Mamy tutaj do dyspozycji &#8222;okienkowego&#8221; (a jakże&#8230;) <code>fxri</code>. Wyglądem przypomina komunikator w rodzaju GG, w swojej przed-betowej wersji. Ta całkiem niepozornie wyglądająca aplikacyjka może być całkiem przydatnym narzędziem, szczególnie teraz, kiedy stawiamy dopiero pierwsze kroki&#8230; Zwróćmy chociażby uwagę na lewą, dość długą listę klas i metod. Wystarczy jedno kliknięcie, by dowiedzieć się składni wybranej klasy, czy metody. Taki podręczny help na pewno nam nie zaszkodzi. Ale wróćmy teraz do głównego wywodu.</p>
<p>Wpiszmy więc do naszego fxri <code>puts 1+2</code>. Po zatwierdzeniu Enterem otrzymamy poniżej coś takiego:</p>
<p><code>3<br />
=> nil</code></p>
<p>Trójka &#8211; to oczywiście wynik naszego dodawania, bo właśnie takie polecenie wydaliśmy (1+2). Komenda <code>puts</code> była zwykłym poleceniem wyświetlenia ciągu tekstowego na domyślnym wyjściu. A ponieważ jako ciąg tekstowy wpisaliśmy <code>1+2</code>, interpreter policzył wynik tego dodawania i po prostu nam go wypisał.<br />
Zmodyfikujmy teraz nieco nasze polecenie; napiszmy</p>
<p><code>puts "1+2"</code></p>
<p>No, tym razem rzeczywiście zażyczyliśmy sobie na wyjściu stringa składającego się z trzech znaków! (1, 2, oraz znaku +). Na wyjściu otrzymaliśmy</p>
<p><code>1+2<br />
=> nil</code></p>
<p>Aby zachować w tym miejscu pewną dokładność, przyznać należy, że polecenie <code>puts</code> dokłada na końcu ciągu znak nowej linii, dlatego też <code>=> nil</code> pojawia się niżej.<br />
Z kolei => nil oznacza zakończenie działania naszego &#8222;programu&#8221; (mówiąc w wielkim skrócie, ale o tym kiedy indziej&#8230;).<br />
Aby karetka nie przechodziła nam do kolejnej linii, wystarczy nieco zmodyfikować nasz program:</p>
<p>print &#8222;1+2&#8243;</p>
<p>Teraz na wyjściu otrzymamy</p>
<p>1+2<br />
=> nil</p>
<p>W ten właśnie sposób doszliśmy do miejsca, w którym zaczyna się każdy podręcznik programowania, jaki tylko wzięlibyśmy do ręki: czas na napisanie &#8222;<strong>Hello world!</strong>&#8222;.</p>
<p>Jeśli nie jesteś na tyle bystry, by zrobić to samemu, masz dwa wyjścia: przewinąć nieco stronę i raz jeszcze przeczytać ten wpis, albo skorzystać z &#8222;gotowca&#8221;, który wygląda następująco:</p>
<p>puts &#8222;Hello world&#8221;</p>
<p>Prostsze, niż budowa cepa, prawda?</p>
<p><strong>Wejście-wyjście</strong><br />
Poznaliśmy już dwie metody wyprowadzenia ciągu znaków na standardowe wyjście, jakim jest ekran konsoli. Są to:<br />
<code>puts</code> &#8211; wyprowadzenie ciągu znaków na ekran i dodanie na koniec &#8222;ukrytego&#8221; znaku nowej linii, oraz<br />
<code>print</code> &#8211; jak wyżej, tylko bez dodawania nowej linii.<br />
Jest jeszcze <code>printf</code>, który działa identycznie, jak analogiczna funkcja znana z języka C (więcej informacji znajdziecie <a href="http://pl.wikibooks.org/wiki/C/printf" target="_blank" onclick="javascript:urchinTracker ('/outbound/article/pl.wikibooks.org');">tutaj</a>).<br />
Czas bliżej poznać polecenie <code>open</code> &#8211; najprostsze z serii poleceń operujących na plikach.<br />
Przeanalizujmy prosty przykład:<br />
<code>plik = open "C:\\dowolny_plik.txt"<br />
puts plik.gets</code><br />
a teraz porównajmy go z nieco dłuższym zapisem:<br />
<code>open "C:\\dowolny_plik.txt" do |plik|<br />
  puts plik.gets<br />
end</code><br />
Skutek działania tych dwóch zapisów jest w zasadzie ten sam: oba otwierają dowolny_plik.txt, pobierają z niego pierwszą linię, po czym wypisują ją (stosując znane nam już <code>puts</code>) na ekranie.<br />
Odczytu danych z dowolnego w zasadzie pliku możemy dokonać na dwa sposoby: klasycznie, lub w sposób blokowy. Zarknijmy na dwa przykłady:<br />
<code>plik = File.open "C:\\dowolny_plik.txt"<br />
while ln = plik.gets do puts ln end<br />
plik.close</code><br />
i drugi:<br />
<code>File.open "C:\\dowolny_plik.txt" do |plik|<br />
  while ln = plik.gets do puts ln end<br />
end</code><br />
Przewaga tego drugiego sposobu widoczna jest wtedy, kiedy przyjdzie nam śledzić wyjątki. W pierwszym przykładzie, jeśli wystąpi błąd proces może pominąć zamknięcie pliku, czego oczywiście byśmy nie chcieli. W drugim przykładzie plik zostanie zawsze zamknięty, nawet w przypadku wystąpienia błędu. Dlatego oczywiście zalecany jest ten drugi, jak można się domyślić&#8230; <img src='http://dawidpisze.federowicz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Na tym zakończymy &#8222;podstawy podstaw&#8221; Ruby&#8217;ego. W następnym odcinku zajmiemy się sterowaniem programem. <img src='http://dawidpisze.federowicz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-1512785452250400";
google_ad_slot = "1428346834";
google_ad_width = 728;
google_ad_height = 90;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://dawidpisze.federowicz.net/2008/11/ruby-on-rails-vol-3-podstawy-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
