<?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>Mocna Kawa &#187; java</title>
	<atom:link href="http://blog.mocna-kawa.com/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mocna-kawa.com</link>
	<description>radosny blog o nowych technologiach</description>
	<lastBuildDate>Tue, 24 Aug 2010 08:47:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Javarsovia : Lekcja Stylu : Slajdy</title>
		<link>http://blog.mocna-kawa.com/2010/06/javarsovia-lekcja-stylu-slajdy/</link>
		<comments>http://blog.mocna-kawa.com/2010/06/javarsovia-lekcja-stylu-slajdy/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 19:09:22 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=294</guid>
		<description><![CDATA[Podczas tegorocznej Javarsovii dałem prezentację &#8220;Lekcja Stylu&#8221;. Dużo osób było zainteresowane slajdami. Oto one.

Abstrakt:

Lekcja Stylu &#8211; czy w Javie można jeszcze dostrzec piękno?
Przeglądając listy prezentacji na konferencjach związanych z Javą z ostatnich lat można dostrzec pewien wzorzec. Przedstawia się coraz to bardziej wyrafinowane zręby aplikacji, wskazówki integracyjne dla kolejnych JBusinessComponents oraz zręby aplikacji webowych, gdzie [...]]]></description>
			<content:encoded><![CDATA[<p>Podczas tegorocznej Javarsovii dałem prezentację &#8220;Lekcja Stylu&#8221;. Dużo osób było zainteresowane slajdami. Oto one.</p>
<div id="__ss_4651066" style="width: 425px;"><object id="__sse4651066" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lekcjastylu2-100630085220-phpapp01&amp;stripped_title=lekcja-stylu-4651066" /><param name="name" value="__sse4651066" /><param name="allowfullscreen" value="true" /><embed id="__sse4651066" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lekcjastylu2-100630085220-phpapp01&amp;stripped_title=lekcja-stylu-4651066" name="__sse4651066" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">Abstrakt:</div>
</div>
<p><em>Lekcja Stylu &#8211; czy w Javie można jeszcze dostrzec piękno?</em></p>
<p>Przeglądając listy prezentacji na konferencjach związanych z Javą z ostatnich lat można dostrzec pewien wzorzec. Przedstawia się coraz to bardziej wyrafinowane zręby aplikacji, wskazówki integracyjne dla kolejnych JBusinessComponents oraz zręby aplikacji webowych, gdzie wypisanie &#8220;Hello World&#8221; zajmuje trzy linijki zamiast pięciu. Czyżby zapomniano już o samym języku Java? Czyżby wszyscy już przesiedli się na Scalę, Groovy lub JRuby?</p>
<p>Swoją prezentacją chcę wrócić do korzeni, do samego języka Java. Będę pokazywał dobre przykłady, jak należy programować, aby czytanie kodu było miłym doświadczeniem. Nie będzie jednak to wykład o wzorcach projektowych, ale o codzienności programisty, który właśnie po wypiciu porannej kawy i otwarciu edytora, pisze pierwszą tego dnia instrukcję warunkową.</p>
<p>Będzie to hołd książce &#8220;Implementation Patterns&#8221; Kenta Becka. W prezentacji zostaną przedstawione także ułatwiające życie biblioteki takie jak Google Guava, Google Guice oraz Mockito.</p>
<p><strong>Wersja w PDF</strong>: <a href="http://blog.mocna-kawa.com/wp-content/uploads/2010/06/lekcja-stylu.pdf">lekcja-stylu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2010/06/javarsovia-lekcja-stylu-slajdy/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>JDD&#8217;08 &#8211; najlepsze cytaty</title>
		<link>http://blog.mocna-kawa.com/2008/11/jdd07-najlepsze-cytaty/</link>
		<comments>http://blog.mocna-kawa.com/2008/11/jdd07-najlepsze-cytaty/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 20:34:35 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[ciekawostki]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=102</guid>
		<description><![CDATA[
Porządkując swoje rzeczy po przeprowadzce znalazłem swój notatnik z Java Developer Day 2008, która odbyła się w październiku w Krakowie. Najmocniejszymi jej punktami były prezentacje Teda Newarda i Neala Forda oraz afterparty  .


Ted Neward powiedział, że nie ma sensu dzielić metodyk zarządzania na kaskadowe czy na lekkie vel zwinne. Czemu? I tak wszyscy stosują [...]]]></description>
			<content:encoded><![CDATA[<p>
Porządkując swoje rzeczy po przeprowadzce znalazłem swój notatnik z <a href="http://08.jdd.org.pl/">Java Developer Day 2008</a>, która odbyła się w październiku w Krakowie. Najmocniejszymi jej punktami były prezentacje Teda Newarda i Neala Forda oraz afterparty <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .
</p>
<p>
Ted Neward powiedział, że nie ma sensu dzielić metodyk zarządzania na <a href="http://en.wikipedia.org/wiki/Waterfall_model">kaskadowe</a> czy na <a href="http://en.wikipedia.org/wiki/Agile_software_development">lekkie vel zwinne.</a> Czemu? <strong>I tak wszyscy stosują metodologię WHISKY</strong> &#8211; <strong>W</strong>hy the <strong>H</strong>ell <strong>I</strong>sn&#8217;t <strong>S</strong>omebody <strong>K</strong>oding <strong>Y</strong>et? No cóż&#8230; <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
<p>
Drugi równie dobry tekst opowiedział Ted Neward o tym, jak koduje Bóg:</p>
<pre>
person = Person.new( but we don't know the constructor arguments )

so... <strong>we are using factory method instead <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong>
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/11/jdd07-najlepsze-cytaty/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JRuby #03 &#8211; Czas pobawić się z Ruby on Rails</title>
		<link>http://blog.mocna-kawa.com/2008/10/jruby-03-czas-pobawic-sie-z-ruby-on-rails/</link>
		<comments>http://blog.mocna-kawa.com/2008/10/jruby-03-czas-pobawic-sie-z-ruby-on-rails/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 23:21:31 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=95</guid>
		<description><![CDATA[
W poprzednich dwóch artykułach pokazałem jak zainstalować JRubiego oraz jak może Ruby z Javą rozmawiać. Czas rozpocząć przygodę z JRuby on Rails.
W tym artykule pokażę: 

jak stworzyć prostą aplikację typu CRUD w Ruby on Rails, która będzie korzystać z bazy danych MySQL,
jak wdrożyć tą aplikację na serwerze Tomcat przy użyciu narzędzia Warbler.

Wymagania. Zakładam, że masz [...]]]></description>
			<content:encoded><![CDATA[<p class="center"><img class="alignnone size-full wp-image-96" title="jruby-03-jruby-on-rails" src="http://wiktorgworek.com/blogtest/wp-content/uploads/2008/10/jruby-03-jruby-on-rails.png" alt="JRuby on Rails" width="500" height="125" /></p>
<p>W poprzednich dwóch artykułach pokazałem jak <a href="http://blog.mocna-kawa.com/2008/04/29/jruby-01-jak-zainstalowac-zeby-sie-pobawic/">zainstalować JRubiego</a> oraz <a href="http://blog.mocna-kawa.com/2008/05/09/jruby-02-ruby-rozmawia-z-java-java-rozmawia-z-rubyim/">jak może Ruby z Javą rozmawiać</a>. Czas rozpocząć przygodę z JRuby on Rails.</p>
<p>W tym artykule pokażę: </p>
<ul>
<li>jak stworzyć prostą aplikację typu <a href="http://pl.wikipedia.org/wiki/CRUD">CRUD</a> w Ruby on Rails, która będzie korzystać z bazy danych MySQL,</li>
<li>jak wdrożyć tą aplikację na serwerze <a href="http://tomcat.apache.org">Tomcat</a> przy użyciu narzędzia <a href="http://caldersphere.rubyforge.org/warbler/">Warbler</a>.</li>
</ul>
<p><em>Wymagania.</em> Zakładam, że masz już zainstalowaną bazę danych MySQL 5.0.x. Potrzebny będzie także serwer Tomcat, który można <a href="http://tomcat.apache.org/download-60.cgi">stąd</a> pobrać (w chwili pisania korzystałem z najnowszej wersji 6.0.18). Jeśli nie masz jeszcze zainstalowanego Ruby on Rails to wykonaj następujące polecenie:</p>

<div class="wp_codebox"><table><tr id="p953"><td class="code" id="p95code3"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Na wszelki wypadek Ruby on Rails przyda się :)</span>
$ jruby <span style="color: #660033;">-S</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails warbler jruby-openssl <span style="color: #660033;">--no-ri</span> <span style="color: #660033;">--no-rdoc</span></pre></td></tr></table></div>

<h4>Stworzenie prostej aplikacji</h4>
<p>Czas napisać prostą aplikację. Jej funkcjonalność ograniczy się do dodawania, edytowania i usuwania wiadomości (dużo powiedziane, bo wiadomość będzie się składać tylko z łańcucha znaków <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Zaczynamy.</p>

<div class="wp_codebox"><table><tr id="p954"><td class="code" id="p95code4"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Stworzenie szkieletu aplikacji</span>
$ jruby <span style="color: #660033;">-S</span> rails rails_app
$ <span style="color: #7a0874; font-weight: bold;">cd</span> rails_app<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Stworzenie modelu wiadomości oraz operacji CRUD dla niego</span>
$ jruby <span style="color: #660033;">-S</span> script<span style="color: #000000; font-weight: bold;">/</span>generate scaffold message content:string
&nbsp;
<span style="color: #666666; font-style: italic;"># i pozostaje konfiguracja dostępu do bazy danych - tego Rails jeszcze nie potrafią same zrobić :)</span>
$ <span style="color: #c20cb9; font-weight: bold;">vim</span> config<span style="color: #000000; font-weight: bold;">/</span>database.yml</pre></td></tr></table></div>

<p>Moją konfigurację można zobaczyć poniżej. Nie należy zapomnieć stworzyć bazy danych w MySQLu (wystarczy tylko <code>railsapp_development</code>).</p>
<pre>defaults: &amp;defaults
    adapter: mysql
    username: root
    password:
    host: localhost
    encoding: utf8

development:
  database: railsapp_development
  &lt;&lt;: *defaults

test:
  database: railsapp_test
  &lt;&lt;: *defaults

production:
  database: railsapp_production
  &lt;&lt;: *defaults</pre>
<p>Aplikacja już napisana, baza danych skonfigurowana. Zostało jeszcze utworzenie odpowiednich tabelek w bazie danych i można już bawić się aplikacją.</p>
<p>[Bash]<br />
# Jeśli nie było żadnego błędu po drodze to poniższa operacja powinna wykonać poprawnie<br />
$ jruby -S rake db:migrate<br />
(in /Users/wiktor/jruby/rails_app)<br />
== 20081028224846 CreateMessages: migrating ===================================<br />
&#8211; create_table(:messages)<br />
-&gt; 0.0049s<br />
== 20081028224846 CreateMessages: migrated (0.0058s) ==========================<br />
[/Bash]</p>
<p>Aplikację można już uruchomić poleceniem <code>jruby -S script/server</code>. Po wejściu na stronę <a href="http://localhost:3000">http://localhost:3000</a> można zobaczyć środowisko uruchomienia aplikacji, a pod adresem <a href="http://localhost:3000/messages">http://localhost:3000/messages</a> znajduje się przed chwilą stworzona, bardzo wyrafinowana aplikacja.</p>
<p class="center"><img class="alignnone size-medium wp-image-97" title="rails-on-java" src="http://blog.mocna-kawa.com/wp-content/uploads/2008/10/rails-on-java-300x264.png" alt="Rails on Java" width="300" height="264" /></p>
<h4>Wdrożenie Ruby on Rails na Tomcata</h4>
<p>Żeby przygotować aplikacje Ruby on Rails do wdrożenia ją na Tomcata, należy użyć biblioteki Warbler. Została ona już zainstalowana poleceniem <code>jruby -S gem install ... </code> na samym początku artykułu.</p>
<p>Przez dłuższy czas obserwowałem rozwój Warblera. Kiedy projekt stawiał pierwsze kroki, przygotowanie aplikacji Ruby on Rails wiązało się ze starannym przygotowaniem pliku konfiguracyjnego, zadbaniem o odpowiednie sterowniki JDBC do bazy danych. Nie było to miłe zajęcie. Z tego powodu warto docenić, że obecnie przygotowanie aplikacji do wdrożenia na Tomcacie jest banalnie proste.</p>
<p>[Bash]<br />
# Stworzenie pliku config/warble.rb.<br />
$ jruby -S warble config</p>
<p># Teraz należy w pliku config/warble.rb zamienić linijkę<br />
#   z   # config.webxml.rails.env = ENV['RAILS_ENV'] || &#8216;production&#8217;<br />
#   na  config.webxml.rails.env = &#8216;development&#8217;</p>
<p># Przygotowanie aplikacji w postaci WAR.<br />
$ jruby -S warble war<br />
jar cf rails_app.war -C tmp/war .</p>
<p># Gotowe?<br />
$ ls -l rails_app.war<br />
-rw-r&#8211;r&#8211;  1 wiktor  wiktor  9800493 Oct 29 23:28 rails_app.war</p>
<p># Mając już Tomcata uruchomionego możemy wdrożyć aplikację.<br />
$ cp rails_app.war ../apache-tomcat-6.0.18/webapps/<br />
[/Bash]</p>
<p>Aplikacja będzie dostępna pod adresem <a href="http://localhost:8080/rails_app">http://localhost:8080/rails_app</a>, a bawić wiadomościami można się tutaj: <a href="http://localhost:8080/rails_app/messages">http://localhost:8080/rails_app/messages</a>.</p>
<p>Parę słów wyjaśnienia. Standardowo Warbler uruchamia aplikację w trybie produkcji. Jednym ze skutków jest to, że aplikacja będzie korzystać z bazy <code>railsapp_production</code>, a nie z <code>railsapp_development</code>, której do tej pory używaliśmy. Zmiana podyktowana była jedynie moją leniwością.</p>
<p>Warto też zauważyć, że cała aplikacja <code>rails_app.war</code> waży niecałe 10 MB. Co się tam znajduje? Otóż cała dystrybucja JRubiego, a także wszystkie zależności Ruby on Rails. Takie życie <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Zachęcam także do przestudiowania pliku <code>config/warble.rb</code>, poprzez który można konfigurować zachowanie aplikacji na serwerze Javowym.</p>
<p>Smacznego <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/10/jruby-03-czas-pobawic-sie-z-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Papa Windows, nie będę płakał</title>
		<link>http://blog.mocna-kawa.com/2008/06/papa-windows-nie-bede-plakal/</link>
		<comments>http://blog.mocna-kawa.com/2008/06/papa-windows-nie-bede-plakal/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 18:49:46 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[Różne]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ciekawostki]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=90</guid>
		<description><![CDATA[
W ostatnie wakacje z dobrze skonfigurowanego Windowsa XP przerzuciłem się na Maka. Nigdy za bardzo nie narzekałem na Windowsa. U mnie działał, co nie było chyba częstym zjawiskiem. Od jakiegoś czasu wzbiera się we mnie frustracja, kiedy patrzę wstecz na moje poprzednie życie  . Ponieważ obecnie jestem w trakcie pisania magisterki to posiadam nieskończone [...]]]></description>
			<content:encoded><![CDATA[<p>
W ostatnie wakacje z dobrze skonfigurowanego Windowsa XP przerzuciłem się na Maka. Nigdy za bardzo nie narzekałem na Windowsa. U mnie działał, co nie było chyba częstym zjawiskiem. Od jakiegoś czasu wzbiera się we mnie frustracja, kiedy patrzę wstecz na moje poprzednie życie <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Ponieważ obecnie jestem w trakcie pisania magisterki to posiadam nieskończone pokłady wolnego czasu. Najwyższy czas z siebie wszystko wyrzucić.
</p>
<p class="center">
<img src="http://blog.mocna-kawa.com/wp-content/uploads/2008/08/windows-xp-ala-mac.jpg" alt="windows-xp-ala-mac" title="windows-xp-ala-mac"  class="aligncenter size-medium wp-image-91" />
</p>
<p>
Rzut oka na wygląd mojego Windowsa, żeby się przekonać, że Maki już mi wcześniej chodziły po głowie. Nie będę wspominał o ilości pracy, którą trzeba poświęcić, żeby z Windows XP zrobić sensowne środowisko programistyczne, co widać na obrazku wyżej.
</p>
<h4>Środowisko programistyczne</h4>
<p>
Kiedy programista siada do czystej kopii Windowsa, nieważne czy XP czy Vista, to pierwszym odruchem jest (a przynajmniej powinno być) zainstalowanie <a href="http://www.cygwin.com/">Cygwina</a>. Czynność wręcz obowiązkowa i nikt nie mnie przekona, że ponieważ mamy cudowne <a href="http://pl.wikipedia.org/wiki/Zintegrowane_%C5%9Brodowisko_programistyczne">IDE</a> to już nic nam nie potrzeba. <strong>Naprawdę samo IDE wystarcza?</strong> Naprawdę, naprawdę?
</p>
<p>
W takim razie prosty test: <strong>Jak policzyć liczbę linijek kodu w projekcie?</strong> (najlepiej na konsolce oczywiście) Pamiętam, że podczas pisania Zespołowego Projektu Programistycznego (można patrzeć na to, jak na licencjat) na UW ciągle z kolegami sprawdzaliśmy, ile już linijek kodu mamy. No bo 20 tysięcy to był dopiero porządny wynik <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .
</p>
<p>
Wracając do Cygwina. Mimo że sprawuje się on znakomicie to jednak estetyką nie powalał.</p>
<p class="center">
<img src="http://wiktorgworek.com/blogtest/wp-content/uploads/2008/06/cygwin.jpg" alt="cygwin" title="cygwin" width="500" height="119" />
</p>
<p>
Jest po prostu brzydki i zawsze będzie tylko imitacją konsolki unikowej. Tym samym przechodzę do kolejnej rzeczy, z jaką chce się rozprawić.
</p>
<h4>Natywne aplikacje</h4>
<p>
Aż nie wiem, od czego zacząć. OK, pokopię leżącego, czyli Vista. Nie będę się przecież czepiał, że okienka z edycją zmiennej środowiskowej nadal nie można rozciągnąć, co doprowadza do szału. O masowej adopcji <a href="http://pl.wikipedia.org/wiki/WPF">WPF</a> także nie będę wspominał. Przytoczę tylko kawałek postu pt. <a href="http://stuffthathappens.com/blog/2008/06/18/where-are-the-native-vista-apps/">Where are the native Vista apps?</a>, gdzie Eric Burke pisze:</p>
<blockquote><p>
Vista supports hardware-accelerated graphics. WPF seems to support really cool things like vector-based UIs. [...]</p>
<p>How can Microsoft expect third parties to develop Vista-specific apps if the bundled utilities <em>(chodzi o Paint i Notepad)</em> don’t even take advantage of Vista features? This is incredibly hard to understand.</p>
<p>Good luck, Microsoft. I’m typing this on my new MacBook Pro, and it looks like I have plenty of native Cocoa apps from which to choose.
</p></blockquote>
<p>Wcześniej brak w pełni natywnych aplikacji mi nie przeszkadzał. Ale odkąd przesiadłem się na Maka dostrzegłem ich urok. Spójność wyglądu systemu operacyjnego i aplikacji jest bardzo miła dla oka oraz nie rozprasza. Dopiero teraz zrozumiałem istotę i potrzebę stworzenia <a href="http://pl.wikipedia.org/wiki/SWT_(biblioteka)">biblioteki SWT</a>, na którym oparty jest Eclipse. Aplikacje oparte na SWT będą lepiej prezentować się niż konkurencyjne napisane w Swingu. Sam pisałem aplikacje Swingowe (np. <a href="http://code.google.com/p/uj-petri-net-simulator/">Symulator Sieci Petriego</a>). Dlatego wiem, ile energii i pracy trzeba włożyć, żeby aplikacja napisana w oparciu o Swinga ładnie wyglądała. A tak poważnie to czy aplikacje desktopowe przeznaczone dla zwykłego użytkownika powstają w Javie, w Swingu? Poważnie? <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
<h4>Przyjazny system dla programisty</h4>
<p>
W <a href="http://pl.wikipedia.org/wiki/Cupertino">Cupertino</a> udało się stworzyć system, który nie ssie. Globalny, systemowy słownik dostępny w każdej aplikacji (tak, tak, jest to bardzo ważne), ujednolicony system notyfikacji poprzez aplikację <a href="http://growl.info/">Growl</a>, czy innowacyjne pomysły na interakcje z użytkownikiem jak <a href="http://en.wikipedia.org/wiki/Quicksilver_(software)">Quicksilver</a> to tylko kilka przykładów małych rzeczy, które cieszą na Maku. Przy okazji to jeśli ktoś jest zainteresowany, czym jest Quicksilver to skromnie polecam swoją <a href="http://www.slideshare.net/wiktor/quicksilver">prezentację o Quicksilverze</a>.
</p>
<p>
Powszechne w Polsce skojarzenie dotyczące Maków jest tragiczne <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , ale mimo to trzeba robić <a href="http://pl.wikipedia.org/wiki/Coming_out">coming out</a> i łamać te stereotypy <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Więc czas na głupiutkie argumenty. Zacznijmy od konferencji i dużych firm. Nie ważne, czy spojrzy się na zdjęcia z RailsConf czy z JavaOne, to zawsze Maki tam przeważają. W Google&#8217;u <a href="http://tech.slashdot.org/article.pl?sid=08/06/07/1521244&#038;from=rss">6 tysięcy na 20 tysięcy pracowników wybiera Maka</a>. Jeszcze nie przekonany? <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
<p>
Papa Windows!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/06/papa-windows-nie-bede-plakal/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>JAVArsovia 2008 &#8211; II edycja Konferencji Java grupy Warszawa JUG</title>
		<link>http://blog.mocna-kawa.com/2008/05/javarsovia-2008-ii-edycja-konferencji-java-grupy-warszawa-jug/</link>
		<comments>http://blog.mocna-kawa.com/2008/05/javarsovia-2008-ii-edycja-konferencji-java-grupy-warszawa-jug/#comments</comments>
		<pubDate>Fri, 23 May 2008 21:36:48 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=88</guid>
		<description><![CDATA[
31 maja 2008 w godzinach 9:00 &#8211; 19:00 w budynku Wydziału Biologii Uniwersytetu Warszawskiego przy ul. Miecznikowa 1 Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG) oraz osoby zaprzyjaźnione (PJUG, Szczecin JUG, Trójmiasto JUG, Poznań JUG, Wrocław JUG) zapraszają na najciekawszą konferencję javową w Polsce &#8211; JAVArsovia 2008.
Motto konferencji: Miłośnicy Java dla miłośników Java aka Ciekawie [...]]]></description>
			<content:encoded><![CDATA[<p class="center"><img src="http://wiktorgworek.com/blogtest/wp-content/uploads/2008/05/javarsovia08img.jpg" alt="" title="Javarsovia 2008 logo" width="163" height="132" class="alignnone size-medium wp-image-89" /></p>
<p><b>31 maja 2008</b> w godzinach <b>9:00 &#8211; 19:00</b> w budynku <a href="http://www.biol.uw.edu.pl/www/_php/index_base.php?Screen_Option=1&#038;Page_ID=151&#038;Owner_Page_ID=101">Wydziału Biologii Uniwersytetu Warszawskiego</a> przy <b>ul. Miecznikowa 1</b> <a href="http://www.warszawa.jug.pl/">Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG)</a> oraz osoby zaprzyjaźnione (PJUG, Szczecin JUG, Trójmiasto JUG, Poznań JUG, Wrocław JUG) zapraszają na najciekawszą konferencję javową w Polsce &#8211; <a href="http://www.javarsovia.pl">JAVArsovia 2008</a>.</p>
<p>Motto konferencji: <b>Miłośnicy Java dla miłośników Java</b> aka <b>Ciekawie o Javie</b>.</p>
<p>Podczas 1-dniowej <b>sobotniej</b> konferencji zaprezentowanych zostanie wiele różnych technologii javowych i szkieletów aplikacyjnych. Z 4 panelami, każdy z 3-4 prezentacjami pragniemy, aby konferencja była ciekawa technologicznie oraz odzwierciedlała nasze własne, lokalne doświadczenia z Javą. JAVArsovia 2008 to idealne miejsce, aby spotkać się z innymi praktykami technologii, nawiązać kontakty, porozmawiać o bieżących problemach (technologicznych) i poznać nowe narzędzia, które usprawnią Twoje projekty. Sądzimy, że udział w konferencji JAVArsovia 2008 pozwoli każdemu popróbować się z nowościami technologicznymi lub zgłębić już poznane.</p>
<p>Wstęp wolny! Dobra zabawa gwarantowana!</p>
<p><a href="http://javarsovia.mocna-kawa.com/index.php?option=com_facileforms&#038;Itemid=54">Rejestracja</a> na konferencję jest bezpłatna acz obowiązkowa i trwa do <b>29 maja</b>! Na zakończenie konferencji zaplanowane jest spotkanie podsumowujące JAVArsovię na Polach Mokotowskich. Liczba miejsc ograniczona, więc czym wcześniej się zarejestrujesz, tym większa szansa na udział w niej.</p>
<p>Poprzednia edycja <a href="http://groups.google.com/group/warszawa-jug/web/javarsovia">JAVArsovia 2007</a> była prawdziwym hitem czerwca 2007 w Polsce i teraz na pewno również nim będzie. Mamy nadzieję zorganizować największą i najbardziej huczną konferencję Java w Polsce w 2008. Bądź jej częścią! Miłośnicy Java już czekają na Ciebie&#8230; </p>
<p>Zapraszam w imieniu Kapituły JAVArsovii 2008 i grupy Warszawa JUG!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/05/javarsovia-2008-ii-edycja-konferencji-java-grupy-warszawa-jug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JRuby #02 &#8211; Ruby rozmawia z Javą, Java rozmawia z Ruby&#8217;im</title>
		<link>http://blog.mocna-kawa.com/2008/05/jruby-02-ruby-rozmawia-z-java-java-rozmawia-z-rubyim/</link>
		<comments>http://blog.mocna-kawa.com/2008/05/jruby-02-ruby-rozmawia-z-java-java-rozmawia-z-rubyim/#comments</comments>
		<pubDate>Fri, 09 May 2008 16:44:55 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=80</guid>
		<description><![CDATA[



W poprzednim poście opisywałem proces instalacji JRuby&#8217;iego tak, żeby korzystanie z niego było proste. Czas wziąć na warsztat integrację Ruby&#8217;iego z Javą i odwrotnie.

Ruby rozumie Javę

Kiedy JRuby interpretuje skrypt Ruby&#8217;iego to mogą tam być używane wszystkie klasy Javowe. Chcemy, żeby skrypt korzystał z naszej wcześniej utworzonej biblioteki w Javie? Nie ma problemu, dołączamy ją do [...]]]></description>
			<content:encoded><![CDATA[<p class="center">
<img src="http://blog.mocna-kawa.com/wp-content/uploads/2008/05/jruby-02-integracja-300x81.png" alt="Krok drugi: integracja" title="jruby-02-integracja" width="300" height="81" class="alignnone size-medium wp-image-79" />
</p>
<p>
<a href="http://blog.mocna-kawa.com/2008/04/29/jruby-01-jak-zainstalowac-zeby-sie-pobawic/">W poprzednim poście</a> opisywałem proces instalacji JRuby&#8217;iego tak, żeby korzystanie z niego było proste. Czas wziąć na warsztat integrację Ruby&#8217;iego z Javą i odwrotnie.
</p>
<h4>Ruby rozumie Javę</h4>
<p>
Kiedy JRuby interpretuje skrypt Ruby&#8217;iego to mogą tam być używane wszystkie klasy Javowe. Chcemy, żeby skrypt korzystał z naszej wcześniej utworzonej biblioteki w Javie? Nie ma problemu, dołączamy ją do <code>CLASSPATH</code> i możemy z poziomu Ruby&#8217;iego z niej korzystać. Integracja została przedstawiona na poniższych przykładach. Dołożyłem wszelkich starań, aby komentarze były wyczerpujące.
</p>
<p>Uruchommy interakcyjną konsolę JRuby&#8217;iego: <code>jruby -S jirb</code> i następnie pobawmy się kodem:</p>
<p>[Ruby]<br />
# Znane z Javy importowanie wygląda standardowo.<br />
# Niestety importowanie z gwiazdką nie działa, więc import javax.swing.* poczęstuje nas błędem.<br />
import javax.swing.JFrame<br />
import javax.swing.JButton</p>
<p># Składnia Ruby&#8217;iego została zachowana dla obiektów Javowych, widać to w tworzeniu nowego egzemplarza JFrame<br />
# Warto zauważyć, że nawiasy są nieobowiązkowe. Poniższe wywołanie jest równoznaczne z JFrame.new(&#8220;&#8230;&#8221;)<br />
frame = JFrame.new &#8220;Ruby swinguje z Java&#8221;</p>
<p># Styl kodowania Ruby&#8217;iego zostaje zachowany także dla metod. W Javie lubimyTakPisać, a w Ruby&#8217;im trochę_inaczej.<br />
# Poniższe wywołanie jest równoważne z frame.setSize(300, 300), które także byłoby poprawne.<br />
frame.set_size 300, 300</p>
<p># Gettery i settery Javowe są dostępne także w odmianie Ruby&#8217;iego.<br />
# Poniższa linijka jest równoważna z frame.setAlwaysOnTop(true), które także byłoby poprawne.<br />
frame.always_on_top = true</p>
<p>button = JButton.new &#8220;Nacisnij mnie&#8221;</p>
<p># Blok kodu zostanie w locie przekształcony w klasę implementującą interfejs ActionListener. Niezłe!<br />
# Jest to domyślne zachowanie JRuby&#8217;iego, jeśli parametrem jest interfejs z jedną metodą.<br />
# Standardowo w Ruby&#8217;im używa się wcięć z 2 spacjami.<br />
button.add_action_listener do |event|<br />
  # Przykład getterów ala Ruby. Równoznaczne z event.getSource().setText(&#8220;&#8230;&#8221;), które także jest OK.<br />
  event.source.text = &#8220;Nie naciskaj mnie ponownie!&#8221;<br />
  event.source.enabled = false<br />
end</p>
<p>frame.add(button)<br />
frame.show<br />
[/Ruby]</p>
<p>
Czas poczęstować Ciebie czytelniku jakimś smakołykiem. Oto on:
</p>
<p>[Ruby]<br />
# Rozszerzenie klasy Javowej String o mechanizm missing_method, czyli<br />
# ta metoda zostanie wywołana, jeśli na obiekcie zostanie wywołana metoda, która<br />
# nie została zdeklarowana.<br />
JavaUtilities.extend_proxy &#8220;java.lang.String&#8221; do<br />
  def method_missing(symbol, *args)<br />
    puts &#8220;Kogo wolasz?&#8221;<br />
  end<br />
end</p>
<p>txt = java.lang.String.new &#8220;Ala ma kota&#8221;</p>
<p>txt.hmmmm_jak_brzmiala_nazwa_tej_metody?()  # => &#8220;Kogo wolasz?&#8221;<br />
[/Ruby]</p>
<h4>Java rozumie Ruby&#8217;iego</h4>
<p>
Ruby może zostać wpleciony w kod Javy na 3 sposoby:</p>
<ul>
<li>poprzez Scripting API (wprowadzone z Javą 6, JSR 223, unifikacja silników skryptowych używanych w Javie), szczegóły: <a href="https://scripting.dev.java.net/">https://scripting.dev.java.net</a>,</li>
<li>poprzez Beans Scripting Framework (standard wprowadzany przez Apache Jakarta), szczegóły: <a href="http://jakarta.apache.org/bsf/">http://jakarta.apache.org/bsf</a>,</li>
<li>bezpośrednio odwołując się do interpretera JRuby&#8217;iego.</li>
</ul>
<p>
Zajmiemy się tylko pierwszą opcją. Będziemy do tego potrzebowali opakowania silnika JRuby&#8217;iego dla <code>javax.script</code>, które znajdziemy <a href="https://scripting.dev.java.net/servlets/ProjectDocumentList?folderID=8848&#038;expandFolder=8848&#038;folderID=0">tutaj</a> (najlepiej wersję 1.1.3).</p>
<p class="center">
<img src="http://wiktorgworek.com/blogtest/wp-content/uploads/2008/05/jruby-scripting-api.png" alt="jruby-scripting-api" title="jruby-scripting-api" width="500" height="233" class="alignnone size-full wp-image-78" /></p>
<p>
Powyższa grafika przedstawia zależności w Java Scripting API. Z naszego kodu będziemy odwoływać się wyłącznie do klas <code>javax.script.*</code>, żądać silnika JRuby&#8217;iego (<code>jruby-engine.jar</code>), który z kolei sam już będzie odpowiednio wywoływał interpreter JRuby&#8217;iego.
</p>
<p>
Czas podwinąć rękawy i trochę pokodować.
</p>
<p>[Java]<br />
import org.jruby.RubyHash;<br />
import javax.script.*;<br />
import java.util.List;<br />
import java.util.ArrayList;<br />
import java.util.Map;<br />
import static java.lang.System.*;</p>
<p>public class RubyInJava {</p>
<p>    public static void main(String[] args) {<br />
        // Od Java Scripting API żądamy silnik JRuby&#8217;iego<br />
        ScriptEngine rubyEngine = new ScriptEngineManager().getEngineByName(&#8220;jruby&#8221;);<br />
        ScriptContext context = rubyEngine.getContext();</p>
<p>        List<integer> list = new ArrayList<integer>() {{<br />
            add(1); add(2); add(3); add(4);<br />
        }};</p>
<p>        // Do środowiska JRuby&#8217;iego dodajemy globalną zmienną list<br />
        rubyEngine.put(&#8220;list&#8221;, list);</p>
<p>        // Skrypt Ruby&#8217;iego, który będziemy wykonywać<br />
        StringBuilder script = new StringBuilder();<br />
        script.append(&#8220;puts &#8216;&#8212; Ruby &#8212;&#8217;                                  &#8220;).append(&#8220;\n&#8221;)<br />
              .append(&#8220;puts $list.inspect                                   &#8220;).append(&#8220;\n&#8221;)<br />
              // JRuby do kolekcji Javowych dodaje typowe metody Ruby&#8217;iego dla kolekcji<br />
              .append(&#8221; $list.each { |item|                                 &#8220;)<br />
              .append(&#8221;   puts \&#8221;Element #{item}\&#8221;                          &#8220;)<br />
              .append(&#8221; }                                                   &#8220;).append(&#8220;\n&#8221;)<br />
              .append(&#8221; puts \&#8221;Suma: #{$list.inject { |sum, i| sum + i }}\&#8221; &#8220;).append(&#8220;\n&#8221;)<br />
              .append(&#8220;\n&#8221;)<br />
              .append(&#8221; $hash = { :ala => :ma, :co => :kota }               &#8220;).append(&#8220;\n&#8221;);</p>
<p>        // Wykonanie skryptu<br />
        try {<br />
            rubyEngine.eval(script.toString(), context);<br />
        } catch (ScriptException e) {<br />
            e.printStackTrace();<br />
            return;<br />
        }</p>
<p>        out.println(&#8220;&#8212; Java &#8212;&#8221;);</p>
<p>        // Pobranie zmiennej globalnej po wykonaniu skryptu<br />
        Object hashAsObject = rubyEngine.get(&#8220;hash&#8221;);<br />
        out.println(&#8220;Klasa: &#8221; + hashAsObject.getClass());</p>
<p>        RubyHash hash = (RubyHash) hashAsObject;<br />
        for (Object o : hash.entrySet()) {<br />
            Map.Entry entry = (Map.Entry) o;<br />
            System.out.println(entry.getKey() + &#8221; => &#8221; + entry.getValue());<br />
        }<br />
    }<br />
}<br />
[/Java]</p>
<p>
Aby uruchomić powyższy kawałek kodu trzeba mieć w <code>CLASSPATH</code>: <code>jruby.jar</code> oraz <code>jruby-engine.jar</code>.
</p>
<p>
Powyższe przykłady ilustrują, że ludzie pracujący nad JRuby&#8217;im wykonali kawał dobrej roboty, żeby łączenie Javy z Ruby&#8217;im było bezstresowe dla developerów. Takie połączenie dwóch światów daje nam nowe możliwości: tworzenie <a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language">mini-języków</a> dla aplikacji Javowych, aplikacje Swingowe w Ruby&#8217;im, nie wspominając o Ruby on Rails, a dla Ruby&#8217;istów dostępny jest cały ekosystem Javy <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/05/jruby-02-ruby-rozmawia-z-java-java-rozmawia-z-rubyim/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JRuby #01 &#8211; Jak zainstalować, żeby się pobawić?</title>
		<link>http://blog.mocna-kawa.com/2008/04/jruby-01-jak-zainstalowac-zeby-sie-pobawic/</link>
		<comments>http://blog.mocna-kawa.com/2008/04/jruby-01-jak-zainstalowac-zeby-sie-pobawic/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 20:27:13 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=75</guid>
		<description><![CDATA[



Ten post otwiera serię artykułów poświęconych JRuby&#8217;iemu, czyli implementacji Ruby&#8217;iego na platformę Javy. Nikomu raczej nie trzeba przedstawiać nikogo z tej pary  . Na warsztat weźmiemy JRuby 1.1.1.


Zacznijmy od instalacji. Wszystkie poniższe komendy shella można bez problemu wykonać na MacOSie lub Linuksie/Uniksie. Jeśli ktoś pracuje pod Windowsem to polecam zainstalowanie Cygwina. Zatem do dzieła!


Uwaga: [...]]]></description>
			<content:encoded><![CDATA[<p class="center">
<a href='http://wiktorgworek.com/blogtest/wp-content/uploads/2008/04/jruby-01-instalacja.png'><img src="http://blog.mocna-kawa.com/wp-content/uploads/2008/04/jruby-01-instalacja-300x81.png" alt="JRuby #01 - Instalacja" title="jruby-01-instalacja" width="300" height="81" class="alignnone size-medium wp-image-76" /></a>
</p>
<p>
Ten post otwiera serię artykułów poświęconych <a href="http://jruby.codehaus.org/">JRuby&#8217;iemu</a>, czyli implementacji Ruby&#8217;iego na platformę Javy. Nikomu raczej nie trzeba przedstawiać nikogo z tej pary <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Na warsztat weźmiemy <strong>JRuby 1.1.1</strong>.
</p>
<p>
Zacznijmy od instalacji. Wszystkie poniższe komendy shella można bez problemu wykonać na MacOSie lub Linuksie/Uniksie. Jeśli ktoś pracuje pod Windowsem to polecam zainstalowanie <a href="http://www.cygwin.com/">Cygwina</a>. Zatem do dzieła!
</p>
<p>
<i>Uwaga: </i> dystrybucja JRuby&#8217;iego zostanie zainstalowana w <code>~/jruby</code>.
</p>
<p>[Bash]<br />
# Upewnienie się, że jesteśmy w katalogu domowym<br />
cd</p>
<p># Tworzymy katalog jruby/<br />
mkdir jruby<br />
cd jruby</p>
<p># Pobieramy dystrybucję JRuby&#8217;iego 1.1.1<br />
wget http://dist.codehaus.org/jruby/jruby-bin-1.1.1.zip<br />
unzip jruby-bin-1.1.1.zip<br />
rm jruby-bin-1.1.1.zip</p>
<p># Tworzymy jeszcze alias do skryptu uruchamiającego JRuby, który dodajemy do pliku .bashrc<br />
echo &#8220;export JRUBY_HOME=\&#8221;$HOME/jruby/jruby-1.1.1\&#8221;" >> ~/.bashrc<br />
source ~/.bashrc<br />
echo &#8220;alias jruby=\&#8221;$JRUBY_HOME/bin/jruby\&#8221;" >> ~/.bashrc<br />
source ~/.bashrc</p>
<p># Przyda się jeszcze Ruby on Rails <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
jruby -S gem install rails &#8211;no-ri &#8211;no-rdoc<br />
[/Bash]</p>
<p>
Ponieważ JRuby może się kłócić z obecną na komputerze dystrybucją Ruby&#8217;iego (u mnie tak było) to zaleca się poprzedzanie wywoływania programów w ten sposób: <code>jruby -S nazwa_polecenia</code>, np. <code>jruby -S gem list</code> &#8211; wtedy nie kłóci się nam z poleceniem <code>gem</code> z standardowej dystrybucji Ruby&#8217;iego.
</p>
<p>
Dla mnie ciągłe poprzedzanie poleceń poprzez <code>jruby -S ...</code> jest żmudne wolałem skorzystać z <a href="http://wiki.jruby.org/wiki/Main_Page">wiki projektu JRuby</a>, gdzie przedstawili ciekawy trick.<br />
[Bash]<br />
# Do dodania do .bashrc lub .bash_login &#8211; co kto lubi <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>for f in $JRUBY_HOME/bin/*; do<br />
     f=$(basename $f)<br />
     case $f in jruby*|jirb*|*.bat|*.rb|_*) continue ;; esac<br />
     eval &#8220;alias j$f=&#8217;jruby -S $f&#8217;&#8221;<br />
done<br />
[/Bash]<br />
Powyższy skrypt tworzy aliasy dla wszystkich poleceń np. <code>gem</code>, <code>rails</code> w postaci <code>jgem</code>, <code>jrails</code>. Prefiks <code>j</code> jednoznacznie mówi, o co chodzi.
</p>
<p>
Teraz czas na chwilkę zabawy.</p>
<pre>
<em># Zobaczmy, jaką wersję mamy</em>
<strong>$</strong> jruby -v
ruby 1.8.6 (2008-04-22 rev 6555) [i386-jruby1.1.1]

<em># Zabawy z konsolą jirb</em>
<strong>$</strong> jruby -S jirb
<strong>irb(main):001:0></strong> out = java.lang.System.out
=> #&lt;Java::JavaIo::PrintStream:0xe33255 @java_object=java.io.PrintStream@7dcc23&gt;
<strong>irb(main):002:0></strong> out.println "Hello World!"
Hello World!
=> nil
</pre>
</p>
<p>
Tak zaopatrzeni możemy spokojnie wyruszyć na przygodę z JRuby&#8217;im. Niedługo kolejne artykuły poświęcone JRuby&#8217;iemu.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/04/jruby-01-jak-zainstalowac-zeby-sie-pobawic/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Prezentacja JRuby on Rails na bis w Krakowie</title>
		<link>http://blog.mocna-kawa.com/2008/04/prezentacja-jruby-on-rails-na-bis-w-krakowie/</link>
		<comments>http://blog.mocna-kawa.com/2008/04/prezentacja-jruby-on-rails-na-bis-w-krakowie/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 14:13:22 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[jug]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/?p=74</guid>
		<description><![CDATA[
Już w najbliższy czwartek będę w Krakowie dawał prezentację o JRuby&#8217;im w ramach PJUG. Szczegóły wydarzenia tutaj. Gdzie, o której?


24 kwietnia 2008 (czwartek), godz. 19:00 &#8211; 20:30
Akademia Górniczo-Hutnicza
Al. Mickiewicza 30, sala 429 C2


Czego można się spodziewać? Będzie to odświeżona wersja mojego show o JRuby&#8217;im (prezentacja i prawdziwe kodowanie na żywo), które debiutowało podczas WarsJava&#8217;07. Przez [...]]]></description>
			<content:encoded><![CDATA[<p>
Już w najbliższy czwartek będę w Krakowie dawał prezentację o JRuby&#8217;im w ramach <a href="http://java.pl">PJUG</a>. Szczegóły wydarzenia <a href="http://www.java.pl/?p=48">tutaj</a>. Gdzie, o której?
</p>
<blockquote><p>
<strong>24 kwietnia 2008 (czwartek), godz. 19:00 &#8211; 20:30</strong><br />
Akademia Górniczo-Hutnicza<br />
Al. Mickiewicza 30, sala 429 C2
</p></blockquote>
<p>
<strong>Czego można się spodziewać?</strong> Będzie to odświeżona wersja mojego <a href="http://blog.mocna-kawa.com/2007/11/18/notatki-z-warsztatu-jruby-on-rails/">show o JRuby&#8217;im</a> (prezentacja i prawdziwe kodowanie na żywo), które debiutowało podczas <a href="http://warsjava.pl">WarsJava&#8217;07</a>. Przez ostatnie pół roku się dużo zmieniło i będzie to odzwierciedlone na mojej prezentacji:</p>
<ul>
<li>będzie użyta najnowsza wersja Ruby on Rails 2.0,</li>
<li>architektura REST, czyli architektura zorientowana na zasoby,</li>
<li>ilość zmian w aplikacji RoR, żeby uruchomić pod JRuby dramatycznie zmalała,</li>
<li>sposób wdrażania aplikacji RoR na serwery aplikacyjne został uproszczony,</li>
<li>i oczywiście nie zabraknie AJAXa <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
</ul>
<p>Zapraszam!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/04/prezentacja-jruby-on-rails-na-bis-w-krakowie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A czy Ty potrafisz dobrze kodować?</title>
		<link>http://blog.mocna-kawa.com/2008/02/a-czy-ty-potrafisz-dobrze-kodowac/</link>
		<comments>http://blog.mocna-kawa.com/2008/02/a-czy-ty-potrafisz-dobrze-kodowac/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 14:48:34 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[ciekawostki]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/2008/02/29/a-czy-ty-potrafisz-dobrze-kodowac/</guid>
		<description><![CDATA[Myślałem, że zejdę, jak to zobaczyłem podesłany przez kolegę post na grupie pl.comp.lang.java:

Musze poprawic czyjs kod i pozmianach ktorych dokonalem zaczal mi leciec
dziwny wyjatek:
Config.PROFILERR[DO_INSERT[articleList]][Pocz±tek] Start.
14:49:11,245 INFO  [STDOUT] java.sql.SQLException: NotImplemented
14:49:11,247 INFO  [STDOUT]     at pl.eo.core.sql.Connection.prepareStatement(Connection.java:134)
14:49:11,247 INFO  [STDOUT]     at pl.eo.apps.cms.sql.CommonSQL.Article_loadCategoriesForArticleAndVersion(CommonSQL.java:769)
14:49:11,247 INFO  [STDOUT]     [...]]]></description>
			<content:encoded><![CDATA[<p>Myślałem, że zejdę, jak to zobaczyłem podesłany przez kolegę <a href="http://groups.google.com/group/pl.comp.lang.java/browse_thread/thread/2e549ecf6db0c3d3/a0d3fd6c6d758b9d?lnk=st&#038;q=%22pl.eo%22+java#a0d3fd6c6d758b9d">post</a> na grupie pl.comp.lang.java:</p>
<blockquote><p>
Musze poprawic czyjs kod i pozmianach ktorych dokonalem zaczal mi leciec<br />
dziwny wyjatek:</p>
<p>Config.PROFILERR[DO_INSERT[articleList]][Pocz±tek] Start.<br />
14:49:11,245 INFO  [STDOUT] java.sql.SQLException: NotImplemented<br />
14:49:11,247 INFO  [STDOUT]     at pl.eo.core.sql.Connection.prepareStatement(Connection.java:134)<br />
14:49:11,247 INFO  [STDOUT]     at pl.eo.apps.cms.sql.CommonSQL.Article_loadCategoriesForArticleAndVersion(CommonSQL.java:769)<br />
14:49:11,247 INFO  [STDOUT]     at pl.eo.apps.cms.Article.loadByResultSet(Article.java:845)<br />
14:49:11,247 INFO  [STDOUT]     at pl.eo.apps.cms.Article.loadByResultSet(Article.java:742)</p>
<p>poszperalem i znalazlem zrodlo wyjatku:</p>
<p>public PreparedStatement prepareStatement(String sql,int AutoGeneratedKeys)<br />
        throws SQLException {<br />
                throw new SQLException(&#8220;NotImplemented&#8221;);<br />
}</p>
<p>zamienilem to na:</p>
<p>public PreparedStatement prepareStatement(String sql,int AutoGeneratedKeys)<br />
        throws SQLException {<br />
                throw new SQLException(&#8220;Implemented&#8221;);<br />
}</p>
<p>ale nie pomoglo, dalej nie dziala. Ma ktos pomysl dlaczego?
</p></blockquote>
<p>Jest to lepsze niż motyw wstawiania nowych rekordów do bazy danych&#8230; poprzez dodawanie nowych kolumn (autentyk!).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/02/a-czy-ty-potrafisz-dobrze-kodowac/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Garść linków do debaty o językach dynamicznych i Scali</title>
		<link>http://blog.mocna-kawa.com/2008/01/garsc-linkow-do-debaty-o-jezykach-dynamicznych-i-scali/</link>
		<comments>http://blog.mocna-kawa.com/2008/01/garsc-linkow-do-debaty-o-jezykach-dynamicznych-i-scali/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 20:28:19 +0000</pubDate>
		<dc:creator>wiktor</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://blog.mocna-kawa.com/2008/01/24/garsc-linkow-do-debaty-o-jezykach-dynamicznych-i-scali/</guid>
		<description><![CDATA[
Dziś dość króciutko. Tylko linki, ale za to bardzo smakowite.

Can Dynamic Languages Scale?
Notka na TheServerSide dotycząca niepowodzenia projektu Chandler wywołała bardzo ciekawą dyskusję. Treść niusa nie jest istotna, tylko komentarze. Znajdziemy tam wszystko: obrzucanie się błotem, argumenty ad personam, tezy niczym nie podparte, czyli genialną i kulturalną dyskusję  . Uwaga! Występują tam celebryci ze [...]]]></description>
			<content:encoded><![CDATA[<p>
Dziś dość króciutko. Tylko linki, ale za to bardzo smakowite.</p>
<ul>
<li><a href="http://www.theserverside.com/news/thread.tss?thread_id=48180">Can Dynamic Languages Scale?</a><br />
Notka na TheServerSide dotycząca niepowodzenia projektu Chandler wywołała bardzo ciekawą dyskusję. Treść niusa nie jest istotna, tylko komentarze. Znajdziemy tam wszystko: obrzucanie się błotem, argumenty ad personam, tezy niczym nie podparte, czyli genialną i kulturalną dyskusję <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Uwaga! Występują tam celebryci ze światka developerskiego: Bill Burke i Cedric Beust. Nieprawdaż, że brakuje serwisu pudelek.developers.com? <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</li>
<li><a href="http://www.hacknot.info/hacknot/action/showEntry?eid=93">Invasion Of The Dynamic Language Weenies</a><br />
Dość dobra rozprawa o językach dynamicznych o bardzo prowokacyjnym tytule. Dobra lektura &#8211; tylko troszeczkę stronnicza <img src='http://blog.mocna-kawa.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Warto poświęcić trochę czasu na poczytanie odnośników z linkografii do wpisu.
</li>
<li><a href="http://www.ibm.com/developerworks/java/library/j-scala01228.html">The busy Java developer&#8217;s guide to Scala</a><br />
Tytuł mówi sam za siebie. Ted Neward, znany gawędziarz na wielu konferencjach, barwnym językiem opisuje pierwsze kroki ze Scalą. Miła czytanka.
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mocna-kawa.com/2008/01/garsc-linkow-do-debaty-o-jezykach-dynamicznych-i-scali/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
