<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Kadejaké všeličo</title>
	<atom:link href="http://mije.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mije.wordpress.com</link>
	<description>Zážitky :: Myšlienky :: Chvála :: Kritika :: Nápady :: Návrhy</description>
	<lastBuildDate>Wed, 31 Dec 2008 02:20:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mije.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Kadejaké všeličo</title>
		<link>http://mije.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mije.wordpress.com/osd.xml" title="Kadejaké všeličo" />
	<atom:link rel='hub' href='http://mije.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Ako vyzera vyucba podla mojho gusta?</title>
		<link>http://mije.wordpress.com/2008/12/31/ako-vyzera-vyucba-podla-mojho-gusta/</link>
		<comments>http://mije.wordpress.com/2008/12/31/ako-vyzera-vyucba-podla-mojho-gusta/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 02:20:03 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mije.wordpress.com/?p=55</guid>
		<description><![CDATA[Kiez by si niektore zo slovenskych technickych univerzit zobrali priklad a zaradili do svojich osnov aj podobny kurz aky mali moznost absolvovat studenti  Bowling Green State University. Kurz mal za ulohu oboznamit studentov s agilnym pristupom k vyvoju softveru, ale nie formou nudnej nicnehovoriacej teorie, ale takpovediac &#8220;na ostro&#8221;. Studenti pocas 16-tyzdnoveho semestra presli kompletnym [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=55&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Kiez by si niektore zo slovenskych technickych univerzit zobrali priklad a zaradili do svojich osnov aj podobny kurz aky mali moznost absolvovat studenti  <a href="http://www.bgsu.edu/">Bowling Green State University</a>. Kurz mal za ulohu oboznamit studentov s agilnym pristupom k vyvoju softveru, ale nie formou nudnej nicnehovoriacej teorie, ale takpovediac &#8220;na ostro&#8221;. Studenti pocas 16-tyzdnoveho semestra presli kompletnym cyklom vyvoja softveru a boli pomerne uspesny. 5 zo 6 klientov ohodnotili vysledok projektu uspesne. Takto si predstavujem skolu podla mojho gusta. A co vy? Viac info najdete <a href="http://agile.bgsu.edu/">tu</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=55&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/12/31/ako-vyzera-vyucba-podla-mojho-gusta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
		<item>
		<title>Kam sa ubera enterprise Java?</title>
		<link>http://mije.wordpress.com/2008/12/24/kam-sa-ubera-enterprise-java/</link>
		<comments>http://mije.wordpress.com/2008/12/24/kam-sa-ubera-enterprise-java/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 01:07:17 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Standardization]]></category>

		<guid isPermaLink="false">http://mije.wordpress.com/?p=52</guid>
		<description><![CDATA[Viete kam kraca a kam by mala kracat enterprise Java a ako podporovat inovacie? Ak nie, je viac ako vhodne zhliadnut prezentaciu Roda Johnsona. Vela myslienok a podnetov sa da uplatnit aj na urovni firmy!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=52&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Viete kam kraca a kam by mala kracat enterprise Java a ako podporovat inovacie? Ak nie, je viac ako vhodne zhliadnut <a href="http://tinyurl.com/7sqvnd">prezentaciu</a> Roda Johnsona. Vela myslienok a podnetov sa da uplatnit aj na urovni firmy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=52&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/12/24/kam-sa-ubera-enterprise-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
		<item>
		<title>Ako na transakcie</title>
		<link>http://mije.wordpress.com/2008/12/24/ako-na-transakcie/</link>
		<comments>http://mije.wordpress.com/2008/12/24/ako-na-transakcie/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 00:55:58 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[JTA]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://mije.wordpress.com/?p=49</guid>
		<description><![CDATA[Vyborna prezentacia Juergena Hoellera o transakcnosti vo vseobecnosti a najma vo frameworku Spring. Prejednava lokalne transakcie ako XA protokol a JTA.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=49&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;">Vyborna <a href="http://tinyurl.com/77azmw">prezentacia</a> Juergena Hoellera o transakcnosti vo vseobecnosti a najma vo frameworku Spring. Prejednava lokalne transakcie ako XA protokol a JTA.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=49&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/12/24/ako-na-transakcie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
		<item>
		<title>File encoding &#8211; pohodlne, elegantne a efektívne</title>
		<link>http://mije.wordpress.com/2008/12/12/file-encoding-pohodlne-elegantne-a-efektivne-s-iconv/</link>
		<comments>http://mije.wordpress.com/2008/12/12/file-encoding-pohodlne-elegantne-a-efektivne-s-iconv/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 00:08:58 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://mije.wordpress.com/?p=41</guid>
		<description><![CDATA[Prečasom som potreboval zmeniť encoding súboru tituliek. Encoding súborov bol pre mňa vždy takmer až nočná mora, avšak tentokrát to vypálilo úplne opačne. Keďže už niaky čas používam Ubuntu Linux, rozhodol som sa poobzerať sa po niakom &#8220;tooliku&#8221; vo vodách deb balíčkov. A nemusel som hladať dlho&#8230; Utilitka iconv (už defaultne nainštalovaná) ma veľmi príjemne [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=41&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Prečasom som potreboval zmeniť encoding súboru tituliek. Encoding súborov bol pre mňa vždy takmer až nočná mora, avšak tentokrát to vypálilo úplne opačne.</p>
<p>Keďže už niaky čas používam Ubuntu Linux, rozhodol som sa poobzerať sa po niakom &#8220;tooliku&#8221; vo vodách deb balíčkov. A nemusel som hladať dlho&#8230; Utilitka iconv (už defaultne nainštalovaná) ma veľmi príjemne prekvapila. Po peripetiách, ktoré som každokrát zažíval pri zmene encodingu pod Windows, predstavuje iconv viac ako vítanú zmenu. Takže encodujte s iconv:</p>
<p><code>iconv --from-code=ISO-8859-1 --to-code=UTF-8 iso.txt &gt; utf.txt</code></p>
<p>A navyše iconv podporuje nespočetné množstvo formátov:</p>
<p><code>iconv --list</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=41&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/12/12/file-encoding-pohodlne-elegantne-a-efektivne-s-iconv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
		<item>
		<title>Teleinterface</title>
		<link>http://mije.wordpress.com/2008/10/14/teleinterface/</link>
		<comments>http://mije.wordpress.com/2008/10/14/teleinterface/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 03:22:57 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://mije.wordpress.com/?p=23</guid>
		<description><![CDATA[Asi pred týždňom sa mi dostala do rúk kniha Practical API Design, ktorú napísal zakladateľ a dlhoročný vedúci architekt projektu NetBeans Jaroslav Tulach. Kedže knihu nemám ešte prečítanú celú, nebudem ju hodnotiť, ale nedá mi nepodeliť sa o jeden zaujímavý princíp. Tento sa snaží riešiť problematiku obmedzenia resp. umožnenia prístupu k zvolenej časti kódu. Autor [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=23&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Asi pred týždňom sa mi dostala do rúk kniha <a href="http://www.apress.com/book/view/1430209739">Practical API Design</a>, ktorú napísal zakladateľ a dlhoročný vedúci architekt projektu <a href="http://www.netbeans.org/">NetBeans</a> Jaroslav Tulach. Kedže knihu nemám ešte prečítanú celú, nebudem ju hodnotiť, ale nedá mi nepodeliť sa o jeden zaujímavý princíp.</p>
<p>Tento sa snaží riešiť problematiku obmedzenia resp. umožnenia prístupu k zvolenej časti kódu. Autor nastolil problém, v ktorom chceme umožniť prístup k danej časti kódu iba určitému, tzv. &#8220;spriatelenému&#8221; kódu, ktorý sa nachádza v inom java balíčku. Tradičný prístup využívajúci prístupové modifikátory, ktoré poskytuje Java (public, protected, package private, private) nepostačuje. Ako to teda môžme zariadiť?</p>
<p><span id="more-23"></span></p>
<p>Trieda <code>Item</code>, ktorá je súčasťou API a ktorej zvolené metódy chceme umožniť volať iba priateľskému kódu sa nachádza v balíčku apipkg. Cheme umožniť volať tieto metódy z balíčku implpkg, ktorý obsahuje implementáciu daného API, a zo žiadneho iného miesta. Ako to teda spravíme? Pozrime sa na Tulachovo riešenie:</p>
<p>Trieda <code>Item</code> je súčasťou balíčku, ktorý reprezentuje naše API:</p>
<pre><span style="color:#800000;">package</span> apipkg;

<span style="color:#800000;">import</span> implpkg.Accessor;
<span style="color:#800000;">import</span> javax.swing.event.ChangeEvent;
<span style="color:#800000;">import</span> javax.swing.event.ChangeListener;

<span style="color:#3366ff;">/**
* Class in API that everyone can use.
* @author Jaroslav Tulach
*/</span>
<span style="color:#800000;">public</span> <span style="color:#800000;">final</span> <span style="color:#800000;">class</span> Item {
<span style="color:#800000;">    private</span> <span style="color:#800000;">int</span> value;
<span style="color:#800000;">    private</span> ChangeListener listener;

<span style="color:#3366ff;"> </span> <span style="color:#3366ff;">  </span><span style="color:#800000;">static</span> {
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> </span>    Accessor.setDefault(new AccessorImpl());
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span> }

<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> /**
</span> <span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> * Only friends can create instances.
</span> <span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> */</span>
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span> Item() {
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span> }

  <span style="color:#3366ff;">  /**
</span><span style="color:#3366ff;">    </span><span style="color:#3366ff;"> * Anyone can change value of the item.
</span> <span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> */</span>
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span> <span style="color:#800000;">public</span> <span style="color:#800000;">void</span> setValue(<span style="color:#800000;">int</span> newValue) {
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span>  value = newValue;
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span>  ChangeListener l = listener;
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span> <span style="color:#800000;"> if</span> (l != null) {
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> </span>     l.stateChanged(new ChangeEvent(this));
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span><span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span>  }
<span style="color:#3366ff;"> </span> <span style="color:#3366ff;"> </span> }

<span style="color:#3366ff;">    /**
</span><span style="color:#3366ff;">     * Anyone can get the value of the item.
</span> <span style="color:#3366ff;">    */</span>
    <span style="color:#800000;">public</span> <span style="color:#800000;">int</span> getValue() {
<span style="color:#800000;">        return</span> value;
    }

<span style="color:#3366ff;">   /**
</span> <span style="color:#3366ff;">   * Only friends can listen to changes.
</span> <span style="color:#3366ff;">   */ </span>
   <span style="color:#800000;"> void</span> addChangeListener(ChangeListener l) {
<span style="color:#800000;">        assert</span> listener == null;
        listener = l;
    }
}</pre>
<p>Rovnako je súčasťou API balíčku trieda <code>AccessorImpl</code>:</p>
<pre><span style="color:#800000;">package</span> apipkg;

<span style="color:#800000;">import</span> implpkg.Accessor;
<span style="color:#800000;">import</span> javax.swing.event.ChangeListener;

<span style="color:#3366ff;">/**
* The bridge between api and impl package.
* @author Jaroslav Tulach
*/</span>
<span style="color:#800000;">final</span> <span style="color:#800000;">class</span> AccessorImpl <span style="color:#800000;">extends</span> Accessor {
<span style="color:#800000;">    protected</span> Item newItem() {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span style="color:#800000;">return</span> <span style="color:#800000;">new</span> Item();
<span><span style="color:#800000;">    </span></span>}

<span><span style="color:#800000;">    </span></span><span style="color:#800000;">protected</span> <span style="color:#800000;">void</span> addChangeListener(Item item, ChangeListener l) {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>item.addChangeListener(l);
<span><span style="color:#800000;">    </span></span>}
}</pre>
<p>A na záver trieda <code>Accessor</code>, ktorá je súčasťou implementácie:</p>
<pre><span style="color:#800000;">package</span> implpkg;

<span style="color:#800000;">import</span> apipkg.Item;
<span style="color:#800000;">import</span> javax.swing.event.ChangeListener;

<span style="color:#3366ff;">/**
* @author Jaroslav Tulach
*/</span>
<span style="color:#800000;">public</span> <span style="color:#800000;">abstract</span> <span style="color:#800000;">class</span> Accessor {

<span><span style="color:#800000;">    </span></span><span style="color:#800000;">private static volatile</span> Accessor DEFAULT;

<span><span style="color:#800000;">    </span></span><span style="color:#800000;">public</span> Accessor() {
<span><span style="color:#800000;">    </span></span>}

<span><span style="color:#800000;">    </span></span><span style="color:#800000;">public static</span> Accessor getDefault() {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>Accessor a = DEFAULT;
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span style="color:#800000;">if</span> (a != null) {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span style="color:#800000;">return</span> a;
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>}

<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span style="color:#800000;">try</span> {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>Class.forName(Item.class.getName(), true, Item.class.getClassLoader());
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>} <span style="color:#800000;">catch</span> (Exception ex) {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>ex.printStackTrace();
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>}

<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span style="color:#800000;">return</span> DEFAULT;
<span><span style="color:#800000;">    </span></span>}

<span><span style="color:#800000;">    </span></span><span style="color:#800000;">public static void</span> setDefault(Accessor accessor) {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>if (DEFAULT != <span style="color:#800000;">null</span>) {
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span><span style="color:#800000;">throw new</span> IllegalStateException();
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>}
<span><span style="color:#800000;">    </span></span><span><span style="color:#800000;">    </span></span>DEFAULT = accessor;
<span><span style="color:#800000;">    </span></span>}

<span><span style="color:#800000;">    </span></span><span style="color:#800000;">protected abstract</span> Item newItem();

<span><span style="color:#800000;">    </span></span><span style="color:#800000;">protected abstract void</span> addChangeListener(Item item, ChangeListener l);
}</pre>
<p>Týmto spôsobom umožníme volať zvolené metódy triedy <code>Item</code> prostredníctvom abstraktnej triedy <code>Accessor</code> aj v iných balíčkoch. Vytvoríme takto akýsi &#8220;teleinterface&#8221;:</p>
<pre>    Item item = Accessor.getDefault().newItem();
    Accessor.getDefault().addChangeListener(item, this);</pre>
<p>Hotovo! Komplikované? Nepochopili ste? Ak nie, nič si z toho nerobte, ja som to potreboval čítať dvakrát, aby som pochopil ako tento kúsok kódu funguje. Čo sme vlastne dosiahli? Umožnili sme každému, kto má prístup k implementačnému balíčku a triede <code>Accessor</code>, volať metódu API triedy <code>Item</code>, ktorá bola pôvodne iba package private. Zaujímavé? Možno!</p>
<p>Čo sa mi nepozdáva je závislosť, ktorá vznikla medzi implementáciou a API, t.j. medzi apikkg a implpkg. Pozorní si isto všimli, ze je cyklická! Problém je hlavne v tom, že trieda <code>Item</code> závisí na triede <code>Accessor</code>. Ak by sme chceli byť dôsledný, čo isto všetci chceme byť, oddelíme API od implementácie aj na úrovni nasaditeľných artefaktov (jar, war, atď.) a získame problém, ktorý nám môže veľmi znepríjemniť život. Druhý problém je komplexita tohto riešenia, nie je veľmi rukolapné! Osobne by som asi dvakrát zauvažoval či použiť takýto prístup, nazývaný aj friendly accessor alebo len jednoducho urobil metódu <code>addChangeListener</code> public, ponechal všetky dôsledky na používateľov API a stavil na ich um a zručnosť.</p>
<p>Všetky <a href="http://sources.apidesign.org">zdrojáky</a> uvedené v tomto blogu sú verejné prístupné na sprievodných <a href="http://apidesign.org">stránkach knihy</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=23&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/10/14/teleinterface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
		<item>
		<title>Subversive s JavaHL pod Ubuntu</title>
		<link>http://mije.wordpress.com/2008/09/21/subversive-s-javahl-pod-ubuntu/</link>
		<comments>http://mije.wordpress.com/2008/09/21/subversive-s-javahl-pod-ubuntu/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 11:15:29 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://mije.wordpress.com/?p=14</guid>
		<description><![CDATA[Už je tomu niaky čas, čo som nahradil Eclipse Europu Ganymedou, ale až pred pár dňami som potreboval nainštalovať SVN clienta. Napriek tomu, že doteraz som bez problémov používal Subclipse, nedalo mi to a rozhodol som sa tentokrát vyskúšať Subversive. V Eclipse Ganymeda release je Subversive plugin implicitne zaradený v kategórií Collaboration Tools ako SVN [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=14&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Už je tomu niaky čas, čo som nahradil Eclipse Europu Ganymedou, ale až pred pár dňami som potreboval nainštalovať <a href="http://subversion.tigris.org/">SVN</a> clienta. Napriek tomu, že doteraz som bez problémov používal <a href="http://subclipse.tigris.org/">Subclipse</a>, nedalo mi to a rozhodol som sa tentokrát vyskúšať <a href="http://www.eclipse.org/subversive/">Subversive</a>.</p>
<p>V Eclipse Ganymeda release je Subversive plugin implicitne zaradený v kategórií <em>Collaboration Tools</em> ako <em>SVN Team Provider (Incubation)</em>, okrem toho je potrebné stiahnuť <em>Subversive SVN Connectors</em>, ktoré sú prístupné z update stránky Polarionu (<a href="http://www.polarion.com/products/svn/subversive.php?src=eclipseproject">zoznam update stránok</a>). Celý postup inštalácie je dostatočne prehľadne popísaný <a href="http://www.eclipse.org/subversive/documentation/gettingStarted/aboutSubversive/install.php">tu</a>.</p>
<p>Menší problém nastane, ak sme na non-Windows platforme a chceme z ľubovolných dôvodov používať JavaHL (JNI wrapper nad C kódom SVN) namiesto <a href="http://svnkit.com/">SVNkitu</a> (pure Java toolkit pre prácu s SVN). Polarion v rámci svojej update stránky poskytuje iba binárky pre Windows. Riešenie je jednoduché. Potrebujeme manuálne nainštalovať JavaHL knižnice a povedať Eclipse kde ich má hladať. Podrobnejší postup ako na to v Ubuntu, je možné nájsť <a href="http://lorand.somogyi.name/2008/08/subversive-with-javahl-under-ubuntu/">tu</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=14&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/09/21/subversive-s-javahl-pod-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
		<item>
		<title>GWT extrémne</title>
		<link>http://mije.wordpress.com/2008/09/21/gwt-extremne/</link>
		<comments>http://mije.wordpress.com/2008/09/21/gwt-extremne/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 07:10:31 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://mije.wordpress.com/?p=7</guid>
		<description><![CDATA[Naďabil som na veľmi zaujímavú prezentáciu Raya Cromwella, ktorú odprednášal v máji na Google I/O. Ray v prezentácii naznačuje aké mocné GWT dokáže byť, najmä ako efektívne  dokáže GWT kompilátor optimalizovať výsledný JS kód. Prezentácia má 3 časti. V prvej časti Ray prezentuje ako efektívne a zároveň elegantne dokáže pracovať GwtQuery. V druhej časti sa [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=7&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Naďabil som na veľmi zaujímavú <a href="http://timepedia.blogspot.com/2008/06/google-io-gwt-extreme-presentation.html">prezentáciu</a> Raya Cromwella, ktorú odprednášal v máji na <a href="http://code.google.com/events/io/">Google I/O</a>. Ray v prezentácii naznačuje aké mocné <a href="http://code.google.com/webtoolkit/">GWT</a> dokáže byť, najmä ako efektívne  dokáže GWT kompilátor optimalizovať výsledný JS kód. Prezentácia má 3 časti. V prvej časti Ray prezentuje ako efektívne a zároveň elegantne dokáže pracovať <a href="http://gwtquery.com">GwtQuery</a>. V druhej časti sa venuje grafike v prehliadači a najmä knižnici <a href="http://timepedia.org/chronoscope/">Chronoscope Chart</a>. Veľmi pútavé je demo (mimochodom demo si vyslúžilo mohutný potlesk obecenstva), v ktorom Ray prezentuje graf obsahujúci 1 milión dátových bodov a pritom stále umožňuje interaktívne zoomovať a to bez jediného lagu. Posledná časť je venovaná integrácii GWT s Androidom, Flashom a Google Gears.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=7&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/09/21/gwt-extremne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://mije.wordpress.com/2008/08/27/hello-world/</link>
		<comments>http://mije.wordpress.com/2008/08/27/hello-world/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 12:29:31 +0000</pubDate>
		<dc:creator>Michal Jemala</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[10..9..8..7..6..5..4..3..2..1..štart: Ahojte všetci známi (aj neznámi), všetkých Vás zdravím a vítam na mojom novom blogu. Dúfam, že si každý z Vás nájde niečo čo ho zaujme a poteší.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=1&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>10..9..8..7..6..5..4..3..2..1..štart:</p>
<p>Ahojte všetci známi (aj neznámi), všetkých Vás zdravím a vítam na mojom novom blogu. Dúfam, že si každý z Vás nájde niečo čo ho zaujme a poteší.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mije.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mije.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mije.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mije.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mije.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mije.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mije.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mije.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mije.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mije.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mije.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mije.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mije.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mije.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mije.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mije.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mije.wordpress.com&amp;blog=4634411&amp;post=1&amp;subd=mije&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mije.wordpress.com/2008/08/27/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a18e0b6c58eb2509b49653687ce2848?s=96&#38;d=identicon" medium="image">
			<media:title type="html">mije</media:title>
		</media:content>
	</item>
	</channel>
</rss>
