<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5351368126295194882</id><updated>2011-12-17T18:45:32.705+01:00</updated><category term='Tomcat'/><category term='Scala'/><category term='Tomahawk'/><category term='SQL'/><category term='JIRA'/><category term='ICEfaces'/><category term='Agile'/><category term='CSS'/><category term='Ruby'/><category term='Spring BlazeDS'/><category term='Maven'/><category term='BlazeDS'/><category term='Spring Framework'/><category term='Eclipse'/><category term='Startups'/><category term='EMF'/><category term='Hibernate'/><category term='GMF'/><category term='JSF'/><category term='Wzorce Projektowe'/><category term='Java'/><category term='Ogólne'/><category term='Confluence'/><category term='GEF'/><title type='text'>syllepsa blog</title><subtitle type='html'>System.out.println("Hello World!");</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-778897033339278346</id><published>2009-11-13T15:43:00.002+01:00</published><updated>2009-11-13T16:02:58.349+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>M2_REPO</title><content type='html'>Od paru dni używam Eclipse'a Galileo. Po zainstalowaniu nowego środowiska lokalne repozytorium Mavena nie było widoczne przez Eclipse, dlatego należało ustawić zmienną środowiskową M2_REPO, która będzie wskazywała na fizyczną lokalizację repozytorium. W tym celu postanowiłem zmodyfikować plik .bashrc i dodać w nim M2_REPO, aby nie mieć problemów przy instalowaniu nowej wersji IDE. Zrobiłem restart Ubuntu (który okazało się, że nie był konieczny) i uruchomiłem ponownie Eclipse'a. Niestety IDE wciąż nie widziało bibliotek wskazanych w pom.xml czyli wynikało z tego, że zmienna M2_REPO nie jest widoczna. Trochę się zdziwiłem wykonałem w terminalu komendę printenv, która jawnie wskazywała, że zmienna została utworzona. Nie chciałem już więcej się zastanawiać i stworzyłem zmienną M2_REPO pod Eclipse. Wszystko zaczęło działać poprawnie. Nie mam jednak pojęcia dlaczego Eclipse zignorował zmienną z .bashrc? Czyżby plik ten był wyłącznie uruchamiany kiedy odpalam konsolę? To też nie ma dla mnie sensu, bo Eclipse uruchamiam ręcznie z terminala.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-778897033339278346?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/778897033339278346/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=778897033339278346' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/778897033339278346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/778897033339278346'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/11/m2repo.html' title='M2_REPO'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-488599940092738166</id><published>2009-07-17T12:02:00.004+01:00</published><updated>2009-07-17T12:21:54.741+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomcat'/><title type='text'>Tomcat, Maven i problem z aktualizacją CSS</title><content type='html'>Ostatnio zdarzało mi się popełniać krótsze posty. Mam nadzieję, że w niedługim czasie ulegnie to zmianie. Póki co za oknem pada deszcz i trzaskają pioruny. Mam nadzieję, że po tym pogodowym katharsis powietrze będzie rześkie.&lt;br /&gt;No ale wróćmy do tematu... Moją ostatnią aplikację webową deployuję pod Tomcata za pomocą Mavena i ogólnie sobie to chwalę, gdyby jeszcze nie fakt, że deployment w Javie trochę trwa. Przy mojej aplikacji i na moim sprzęcie średnio trwa to około minutę. Zauważyłem też dziwną rzecz. Dwukrotnie zdarzyło mi się, że po redeploymencie (mvn clean tomcat:redeploy) zminay w CSS nie były aktualizowane. Można to było łatwo sprawdzić za pomocą Firebuga i sprawdzenie treści pliku css. Wszelkie próby restartu kontenera servletów nie pomagały. Wiedziałem, że od strony aplikacji wszystko wygląda ok, ale problem wciąż pozostawał. Metodą prób i błędów udało mi się znaleźć pewne rozwiązanie, a wygląda ono następująco:&lt;br /&gt;&lt;br /&gt;1. Uruchom Tomcata&lt;br /&gt;2. Undeployuj aplikację: mvn tomcat:undeploy&lt;br /&gt;3. Zamknij Tomcata&lt;br /&gt;4. Uruchom ponownie Tomcata&lt;br /&gt;5. Ponownie zdeployuj aplikację mvn clean tomcat:deploy&lt;br /&gt;&lt;br /&gt;Teraz powinno wszystko poprawnie działać. Nie wiem czy wina leży tu po stronie Tomcata czy może plugin dla Mavena ma jakiś błąd. W każdym razie ta sekwencja czynności powoduje, że wszystko znowu poprawnie działa.&lt;br /&gt;&lt;br /&gt;To na dzisiaj byłoby tyle. Czeka mnie jeszcze wieczorem podróż do Chojnic. Czas odwiedzić rodzinne strony. Bywajcie ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-488599940092738166?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/488599940092738166/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=488599940092738166' title='Komentarze (5)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/488599940092738166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/488599940092738166'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/07/tomcat-maven-i-problem-z-aktualizacja.html' title='Tomcat, Maven i problem z aktualizacją CSS'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-3912781099205898544</id><published>2009-07-16T10:00:00.000+01:00</published><updated>2009-07-16T10:02:09.234+01:00</updated><title type='text'>Żart branżowy</title><content type='html'>Nie mogłem się powstrzymać: &lt;a href="http://flaker.pl/f/2141007-pali-facet-papierosa-i-wydmuchuje-rozne-ksz"&gt;PATRZEĆ TUTAJ!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-3912781099205898544?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/3912781099205898544/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=3912781099205898544' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/3912781099205898544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/3912781099205898544'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/07/zart-branzowy.html' title='Żart branżowy'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-1404869517603568566</id><published>2009-07-09T18:17:00.002+01:00</published><updated>2009-07-09T18:20:58.435+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='ICEfaces'/><title type='text'>ICEfaces i iframe</title><content type='html'>W celu użycia komponentu iframe wraz z ICEfaces należy w pliku konfiguracyjnym web.xml ustawić właściwość com.icesoft.faces.concurrentDOMViews wartością true.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-1404869517603568566?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/1404869517603568566/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=1404869517603568566' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/1404869517603568566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/1404869517603568566'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/07/icefaces-i-iframe.html' title='ICEfaces i iframe'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-890028267860027424</id><published>2009-06-15T23:45:00.004+01:00</published><updated>2009-06-15T23:53:13.285+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>Filtry, nulle i godziny przed komputerem</title><content type='html'>I żeby nie było niedomówień (tzn., żebym już nie zapomniał). Filtr jest zawsze wywoływany przed Faces Servletem. Dlatego próba wywołania z filtra metody FacesContext.getCurrentInstance(); zwróci nulla.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-890028267860027424?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/890028267860027424/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=890028267860027424' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/890028267860027424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/890028267860027424'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/06/filtry-nulle-i-godziny-przed-komputerem.html' title='Filtry, nulle i godziny przed komputerem'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-1439053413094161195</id><published>2009-06-09T09:54:00.002+01:00</published><updated>2009-06-09T10:03:34.237+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Problem z Modelowaniem Bazy Danych</title><content type='html'>Parę dni temu pobrałem sobie plugin do Eclipse'a UML2 Tools. Niestety narzędzie to nie posiada możliwości modelowania schematu bazy danych, dlatego postanowiłem zrobić to trochę naokoło i wykorzystać diagram klas (moja aplikacja używa Hibernate). Niestety po tygodniowej przerwie po wczytaniu diagramu okazało się, że część danych wyparowała (atrybuty, nazwy klas, etc.) i postanowiłemn zmienić narzędzie. Stąd moje pytanie czy ktoś z Was ma doświadczenie z jakimś darmowym narzędziem pod Linuxa do modelowania schematu bazy danych. Pisząc darmowym, mam tu na myśli zastosowania komercyjne.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-1439053413094161195?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/1439053413094161195/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=1439053413094161195' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/1439053413094161195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/1439053413094161195'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/06/problem-z-modelowaniem-bazy-danych.html' title='Problem z Modelowaniem Bazy Danych'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-8589775384538410367</id><published>2009-05-25T21:41:00.007+01:00</published><updated>2009-05-25T22:32:53.846+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Startups'/><title type='text'>Po Democampie</title><content type='html'>Jak pewnie wiecie w zeszły weekend wybrałem się na Democamp do Poznania. Początkowo planowałem wybrać się na całe dwa dni, ale doszedłem do wniosku, że najciekawsze dla mnie rzeczy będą w niedzielę. Chciałem się dokładnie dowiedzieć jaka jest formuła tego wydarzenia, a dokładniej chodziło mi o  poznanie formy prezentacji poszczególnych startupów. &lt;br /&gt;&lt;br /&gt;W tym roku obsada jury była międzynarodowa. W gronie oceniających pojawili się przedstawiciele firm typu Venture Capitals pragnących ewentualnie zainwestować w jakiś dobrze rokujący projekt.&lt;br /&gt;Prezentacje startupów odbywały się w języku angielskim. Trwały one po 7 minut. Następnie jury zadawało pytania związane z planem biznesowym, aktualną dochodowością projektu i planach jego rozwoju. Możliwość zadawania pytań mieli również widzowie. Odbywało się to za pomocą Flakera. Powinienem również wspomnieć, że festiwal startupów ( ??? ) można było oglądać w czasie rzeczywistym poprzez Internet. Co się tyczy samych startupów, to były one dość zróżnicowane. Jest jednak pewna tendencja do powielania zachodnich pomysłów. BTW czy Polakom brakuje kreatywności? &lt;br /&gt;&lt;br /&gt;Zdaniem jury jak i widzów zwycięzcą został projekt &lt;a href="http://www.erasmuse.pl/"&gt;Erasumuse&lt;/a&gt; zaadresowany do studentów pragnących skorzystać z programu Socrates-Erasmus. W zamierzeniach ma on być jeśli dobrze rozumiem platformą (portalem społecznościowym) umożliwiającą zebranie wszystkich informacji przed planowanym wyjazdem na stypendium. Początkowo sceptycznie podchodziłem do tego pomysłu, ale jak się dłużej zastanowić to jeśli z portalu tego mieliby korzystać studenci z całej Europy to ma on predyspozycje do tego, aby odnieść sukces. Listę pozostałych nagrodzonych można zobaczyć na blogu &lt;a href="http://antyweb.pl/democamp-wyniku-konkursu-startupow/"&gt;Antyweb&lt;/a&gt;. Natomiast realcja w formie video znajduje się na blogu &lt;a href="http://tinyurl.com/o7dady"&gt;Mediafun Cafe&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-8589775384538410367?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/8589775384538410367/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=8589775384538410367' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/8589775384538410367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/8589775384538410367'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/05/po-democampie.html' title='Po Democampie'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-7237087262317906625</id><published>2009-05-17T22:55:00.003+01:00</published><updated>2009-05-17T23:12:49.006+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Startups'/><title type='text'>Jadę na Democamp</title><content type='html'>Właśnie zrobiłem rezerwacje na sobotnio-niedzielny &lt;a href="http://democamp.org/"&gt;Democamp&lt;/a&gt; odbywający się w Poznaniu. Tematyka startupów stała mi się ostatnio dość bliska, gdyż sam aktualnie pracuję nad jednym autorskim projektem. Kto wie, może któregoś dnia sam znajdę się po stronie prezentujących swój pomysł, więc póki co warto zobaczyć jak to robią inni zanim samemu przyjdzie stanąć przed publicznością. Jeśli kogoś ten temat zainteresował to polecam blog &lt;a href="http://antyweb.pl/"&gt;Antyweba&lt;/a&gt; oraz serwis &lt;a href="http://techcrunch.com/"&gt;Techcrunch&lt;/a&gt;. W przypadku, gdy samemu chce się śledzić pojawiające się polskie startupy to zapraszam na &lt;a href="http://startups.pl/startups"&gt;Startups.pl&lt;/a&gt; Informacje na temat prezentowanych witryn biorących udział w Democampie można znaleźć &lt;a href="http://antyweb.pl/znamy-liste-startupow-na-democamp-2009/"&gt;tutaj&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-7237087262317906625?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/7237087262317906625/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=7237087262317906625' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/7237087262317906625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/7237087262317906625'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/05/jade-na-democamp.html' title='Jadę na Democamp'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-5280116859000889750</id><published>2009-05-16T20:56:00.005+01:00</published><updated>2009-05-16T21:42:43.839+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Spring Framework 3.0.0.M3 i Maven</title><content type='html'>Ostatnio zdarza mi się częściej używać &lt;a href="http://maven.apache.org/"&gt;Mavena&lt;/a&gt;, co jest generalnie ciekawym doświadczeniem, aczkolwiek czasami frustrującym. To ostatnie dopadło mnie przy próbie integracji ze &lt;a href="http://www.springsource.org/"&gt;Spring Framework&lt;/a&gt;. Na stronie projektu pokazany jest przykład integracji Springa z &lt;a href="http://maven.apache.org/"&gt;Mavenem&lt;/a&gt;. Repozytoria, z których można pobrać Springa są następujące:&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&lt;br /&gt;  &lt;repository&gt;&lt;br /&gt;   &lt;id&gt;springsource-milestone&lt;/id&gt;&lt;br /&gt;   &lt;url&gt;http://repository.springsource.com/maven/bundles/milestone&lt;/url&gt;&lt;br /&gt;  &lt;/repository&gt;&lt;br /&gt;  &lt;repository&gt;&lt;br /&gt;   &lt;id&gt;springsource-release&lt;/id&gt;&lt;br /&gt;   &lt;url&gt;http://repository.springsource.com/maven/bundles/release&lt;/url&gt;&lt;br /&gt;  &lt;/repository&gt;&lt;br /&gt;  &lt;repository&gt;&lt;br /&gt;   &lt;id&gt;springsource-external&lt;/id&gt;&lt;br /&gt;   &lt;url&gt;http://repository.springsource.com/maven/bundles/snapshot&lt;/url&gt;&lt;br /&gt;  &lt;/repository&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Przeglądać repozytoria można pod &lt;a href="http://s3browse.com/explore/repository.springsource.com/maven/bundles"&gt;tym&lt;/a&gt; adresem. Teraz przyszedł czas, żeby zdefiniować zależności wskazujące na biblioteki jakich chcemy użyć w naszym projekcie. Tutaj mała wzmianka. Nazewnictwo artefaktów uległo zmianie w stosunku do poprzednich wydań Springa, więc migracja ze starszych wersji dla projektów używających &lt;a href="http://maven.apache.org/"&gt;Mavena&lt;/a&gt; może okazać się kłopotliwa. &lt;br /&gt;&lt;pre class="brush: xml;"&gt;&lt;br /&gt;    &lt;dependency&gt;&lt;br /&gt;        &lt;groupId&gt;org.springframework&lt;/groupId&gt;&lt;br /&gt;        &lt;artifactId&gt;org.springframework.core&lt;/artifactId&gt;&lt;br /&gt;        &lt;version&gt;3.0.0.M3&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Wydawać by się mogło, iż to już wystarczy. Niestety nie. Przy próbie ściągnięcia bibliotek okazuje się, że w repozytorium Springa nie ma wszystkich bibliotek, z których korzysta Spring. Prawdę mówiąc na tym etapie utknąłem. Na szczęście, ktoś wcześniej miał podobny problem i zasugerował dodanie repozytorium &lt;a href="http://www.atlassian.com/"&gt;Atlassiana&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&lt;br /&gt;    &lt;repository&gt;&lt;br /&gt;        &lt;id&gt;atlassian-m2-repository&lt;/id&gt;&lt;br /&gt;        &lt;url&gt;https://m2proxy.atlassian.com/repository/public&lt;/url&gt;&lt;br /&gt;    &lt;/repository&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Powyższe przygody sprawiają, że ciśnienie Ci wzrasta. Problem z zależnościami jest częstym przeżyciem dla użytkowników Mavena. Nie wiem do końca z czego to wynika? Czy problem leży po stronie twórców Mavena? Czy może ludzie, którzy umieszczają swoje biblioteki w publicznych repozytoriach nie zawsze dbają w należyty sposób o to, aby pobranie bibliotek odbywało się bezproblemowo?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-5280116859000889750?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/5280116859000889750/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=5280116859000889750' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/5280116859000889750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/5280116859000889750'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/05/spring-framework-300m3-i-maven.html' title='Spring Framework 3.0.0.M3 i Maven'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-7891790776039823020</id><published>2009-05-14T09:54:00.002+01:00</published><updated>2009-05-14T10:02:29.761+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Dołączenie źródeł do Eclipse'a za pomocą Mavena</title><content type='html'>Ciekawą cechą &lt;a href="http://maven.apache.org/guides/mini/guide-ide-eclipse.html"&gt; mavenowego pluginu dla eclipse'a&lt;/a&gt; jest możliwość dołączenia dokumentacji do używanych bibliotek. Odbywa się to w bardzo prosty sposób. Mając stworzony projekt przy użyciu &lt;a href="http://maven.apache.org/"&gt;Mavena&lt;/a&gt; w linii poleceń wpisujemy standardowe polecenie generujące niezbędne pliki potrzebne do rozpoznania naszego projektu przez &lt;a href="http://www.eclipse.org/"&gt;Eclipse'a&lt;/a&gt;, ALE czynność tą popełniamy z dodatkowym parametrem:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;mvn eclipse:eclipse -DdownloadSources=true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Prawie gotowe! Jeśli wcześniej mieliśmy otwarty owy projekt w &lt;a href="http://www.eclipse.org/"&gt;Eclipsie&lt;/a&gt;, to wystarczy w Package Explorerze (czy też w Navigatorze)   kliknąć na katalog z nazwą projektu i wcisnąć &lt;span style="font-style:italic;"&gt;F5&lt;/span&gt; w celu odświeżenia konfiguracji projektu. Od tego momentu cieszymy się możliwością przeglądania dokumentacji używanych bibliotek. Dzieje się tak po najechaniu myszką na nazwę klasy albo metody.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-7891790776039823020?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/7891790776039823020/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=7891790776039823020' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/7891790776039823020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/7891790776039823020'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/05/doaczenie-zrode-do-eclipsea-za-pomoca.html' title='Dołączenie źródeł do Eclipse&apos;a za pomocą Mavena'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-2959776748580010506</id><published>2009-04-24T22:40:00.002+01:00</published><updated>2009-04-24T23:12:24.389+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Confluence'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='JIRA'/><title type='text'>Załapałem się</title><content type='html'>Uff zdążyłem... Na blogu &lt;a href="http://dworld.pl/"&gt;Grzegorza Dudy&lt;/a&gt; dowiedziałem się, że &lt;a href="http://www.atlassian.com/"&gt;Atlassian&lt;/a&gt; zrobił promocję i umożliwił zakup rocznej licencji na &lt;a href="http://www.atlassian.com/software/jira/"&gt;JIRA&lt;/a&gt; i &lt;a href="http://www.atlassian.com/software/confluence/"&gt;Confluence&lt;/a&gt; (po $5.00 za każdy produkt, co przy ASTRONOMICZNYCH cenach tych produktów wydaje się być okazją). Zakup licencji zawiera roczny maintence. Należy również wspomnieć, iż owa licencja obejmuje możliwość użytkowanie oprogramowania przez pięciu użytkowników, co w moim wypadku w zupełności wystarcza. Przy zakupie była opcja przedłużenia licencji na kolejne dwa lata co również uczyniłem. Szczerze mówiąc, jak zobaczyłem, że termin promocji upływa 24 kwietnia nie wgłębiałem się w warunki licencji tylko szybko zabierałem się za rejestrację, gdyż nie byłem pewien w obrębie jakiej strefy czasowej odbywa się owa promocja, a tu należy wspomnieć, że siedzibą &lt;a href="http://www.atlassian.com/"&gt;Atlassiana&lt;/a&gt; jest Australia. W każdym razie udało się. :)&lt;br /&gt;&lt;br /&gt;Pozdrawia szczęśliwy posiadacz &lt;a href="http://www.atlassian.com/software/jira/"&gt;JIRA&lt;/a&gt; i &lt;a href="http://www.atlassian.com/software/confluence/"&gt;Confluence&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-2959776748580010506?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/2959776748580010506/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=2959776748580010506' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/2959776748580010506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/2959776748580010506'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/04/zaapaem-sie.html' title='Załapałem się'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-5092624591979449367</id><published>2009-04-09T01:56:00.013+01:00</published><updated>2009-04-24T22:40:05.870+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomahawk'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomcat'/><category scheme='http://www.blogger.com/atom/ns#' term='ICEfaces'/><title type='text'>Wielożeństwo czyli integracja Mavena z ICEfaces 1.8.0 i Tomahawk 1.1.8</title><content type='html'>Niedawno znalazłem się na zielonej trawce, więc jest trochę więcej czasu na rzeczy na które wcześniej go brakowało. Przy okazji pracy przy swoim prywatnym projekcie chciałbym zaprezentować integrację ICEfaces 1.8.0 z Tomahawk 1.1.8 przy użyciu Mavena. Jako kontenera serwletów użyę Tomcata 6. &lt;br /&gt;&lt;br /&gt;Tak sie składa, że na dniach wyszła stabilna wersja ICEfaces w wersji 1.8.0. Jednakże o ile się nie mylę, to wciąż brakuje w niej gotowych walidatorów (np. e-maila, czy też porównania dwóch haseł przy ekranie z rejestracją). Te dobrodziejstwa są natomiast dostępne w Tomahawk. Niby są to małe rzeczy, ale po co się nadmiernie meczyć? Więc do roboty...&lt;br /&gt;&lt;br /&gt;Ze strony ICEfaces pobieramy specjalną paczkę przeznaczoną dla Mavena i po rozpakowaniu kopiujemy ją do katalogu naszego lokalnego repozytorium. W moim Ubuntu jest to katalog .m2, który znajduje się w moim katalogu domowym natomiast dla systemu Windows będzie to  C:\Documents and Settings\twójlogin\.m2\repository&lt;br /&gt;&lt;br /&gt;Teraz esencja czyli pom.xml. Plik ten został stworzony na podstawie jednego z tutorialowych przykładów ICEfaces. Niestety nie może być zbyt pieknie. Owy pom trzeba w niektórych miejscach przeedytować, aby wszystko razem zgodnie współpracowało. Odpuszczę sobie zbędne gadulstwo, tylko zamieszczę poniżej końcową jego wersję:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;project xmlns=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt; xsi:schemaLocation=&amp;quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt; &amp;lt;groupId&amp;gt;pl.syllepsa&amp;lt;/groupId&amp;gt;&lt;br /&gt; &amp;lt;artifactId&amp;gt;myapp&amp;lt;/artifactId&amp;gt;&lt;br /&gt; &amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;&lt;br /&gt; &amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt; &amp;lt;name&amp;gt;myapp Maven Webapp&amp;lt;/name&amp;gt;&lt;br /&gt; &amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt; &amp;lt;build&amp;gt;&lt;br /&gt;  &amp;lt;finalName&amp;gt;myapp&amp;lt;/finalName&amp;gt;&lt;br /&gt;  &amp;lt;plugins&amp;gt;  &lt;br /&gt;   &amp;lt;plugin&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;tomcat-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;configuration&amp;gt;&lt;br /&gt;     &amp;lt;server&amp;gt;tomcat6&amp;lt;/server&amp;gt;&lt;br /&gt;    &amp;lt;/configuration&amp;gt;&lt;br /&gt;   &amp;lt;/plugin&amp;gt;&lt;br /&gt;  &amp;lt;/plugins&amp;gt;&lt;br /&gt; &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;repositories&amp;gt;&lt;br /&gt;  &amp;lt;repository&amp;gt;&lt;br /&gt;   &amp;lt;id&amp;gt;jboss-maven-repository&amp;lt;/id&amp;gt;&lt;br /&gt;   &amp;lt;url&amp;gt;http://repository.jboss.com/maven2&amp;lt;/url&amp;gt;&lt;br /&gt;  &amp;lt;/repository&amp;gt;&lt;br /&gt; &amp;lt;/repositories&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;dependencies&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;   &amp;lt;groupId&amp;gt;org.apache.myfaces.tomahawk&amp;lt;/groupId&amp;gt;&lt;br /&gt;   &amp;lt;artifactId&amp;gt;tomahawk&amp;lt;/artifactId&amp;gt;&lt;br /&gt;   &amp;lt;version&amp;gt;1.1.8&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;   &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;   &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;   &amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;   &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;   &amp;lt;groupId&amp;gt;org.icefaces&amp;lt;/groupId&amp;gt;&lt;br /&gt;   &amp;lt;artifactId&amp;gt;icefaces-comps&amp;lt;/artifactId&amp;gt;&lt;br /&gt;   &amp;lt;version&amp;gt;1.8.0&amp;lt;/version&amp;gt;&lt;br /&gt;   &amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;   &amp;lt;exclusions&amp;gt;&lt;br /&gt;    &amp;lt;exclusion&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.el&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;el-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;/exclusion&amp;gt;&lt;br /&gt;   &amp;lt;/exclusions&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;   &amp;lt;groupId&amp;gt;org.icefaces&amp;lt;/groupId&amp;gt;&lt;br /&gt;   &amp;lt;artifactId&amp;gt;icefaces-facelets&amp;lt;/artifactId&amp;gt;&lt;br /&gt;   &amp;lt;version&amp;gt;1.8.0&amp;lt;/version&amp;gt;&lt;br /&gt;   &amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;   &amp;lt;exclusions&amp;gt;&lt;br /&gt;    &amp;lt;exclusion&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.el&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;el-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;/exclusion&amp;gt;&lt;br /&gt;   &amp;lt;/exclusions&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;   &amp;lt;groupId&amp;gt;org.icefaces&amp;lt;/groupId&amp;gt;&lt;br /&gt;   &amp;lt;artifactId&amp;gt;icefaces&amp;lt;/artifactId&amp;gt;&lt;br /&gt;   &amp;lt;version&amp;gt;1.8.0&amp;lt;/version&amp;gt;&lt;br /&gt;   &amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;   &amp;lt;exclusions&amp;gt;&lt;br /&gt;    &amp;lt;exclusion&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.el&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;el-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;/exclusion&amp;gt;&lt;br /&gt;    &amp;lt;exclusion&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;commons-logging-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;commons-logging&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;/exclusion&amp;gt;&lt;br /&gt;   &amp;lt;/exclusions&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt; &amp;lt;/dependencies&amp;gt;&lt;br /&gt; &amp;lt;profiles&amp;gt;&lt;br /&gt;  &amp;lt;profile&amp;gt;&lt;br /&gt;   &amp;lt;id&amp;gt;tomcat6&amp;lt;/id&amp;gt;&lt;br /&gt;   &amp;lt;activation&amp;gt;&lt;br /&gt;    &amp;lt;activeByDefault&amp;gt;true&amp;lt;/activeByDefault&amp;gt;&lt;br /&gt;   &amp;lt;/activation&amp;gt;&lt;br /&gt;   &amp;lt;dependencies&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;servlet-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;2.5&amp;lt;/version&amp;gt;&lt;br /&gt;     &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.servlet.jsp&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;jsp-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;2.1&amp;lt;/version&amp;gt;&lt;br /&gt;     &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.faces&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;jsf-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;${jsf-version}&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.faces&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;jsf-impl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;${jsf-version}&amp;lt;/version&amp;gt;&lt;br /&gt;     &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.el&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;el-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;     &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;commons-el&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;commons-el&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;     &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;commons-discovery&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;commons-discovery&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;0.4&amp;lt;/version&amp;gt;&lt;br /&gt;     &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;     &amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt;&lt;br /&gt;     &amp;lt;artifactId&amp;gt;jstl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;     &amp;lt;version&amp;gt;1.1.2&amp;lt;/version&amp;gt;&lt;br /&gt;     &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;   &amp;lt;/dependencies&amp;gt;&lt;br /&gt;  &amp;lt;/profile&amp;gt;&lt;br /&gt; &amp;lt;/profiles&amp;gt;&lt;br /&gt; &amp;lt;properties&amp;gt;&lt;br /&gt;  &amp;lt;!--&lt;br /&gt;   since no more versions of jsf1.1 are being developed, just&lt;br /&gt;   jsf-version property for jsf1.2&lt;br /&gt;  --&amp;gt;&lt;br /&gt;  &amp;lt;!--  &amp;lt;jsf-version&amp;gt;1.2-b19&amp;lt;/jsf-version&amp;gt;--&amp;gt;&lt;br /&gt;  &amp;lt;jsf-version&amp;gt;1.2_12&amp;lt;/jsf-version&amp;gt;&lt;br /&gt; &amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;W przykładzie Timezone7 z tutoriala ICEfaces prezentujacego integrację z Mavenem (przykład jest na miejscowym forum) wszystko wygląda pięknie, ale nie działa. Należy jeszcze poddać edycji plik web.xml i ustawić na wartość false parametry:&lt;br /&gt;&lt;br /&gt;1. com.sun.faces.validateXml&lt;br /&gt;2. com.sun.faces.verifyObjects&lt;br /&gt;&lt;br /&gt;Na koniec w konsoli wpisujemy: &lt;span style="font-style:italic;"&gt;mvn tomcat:deploy&lt;/span&gt; Przy założeniu, że macie stworzony jakiś przykładowy widok. Zakładam również, że skonfigurowany jest dostę do tomcata z poziomu mavena. Niejaki Pan &lt;a href="http://koziolekweb.pl/"&gt;Koziołek&lt;/a&gt; opisał to kiedyś &lt;a href="http://4programmers.net/Java/Maven"&gt;dokładnie&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To chyba tyle. Powinno śmigać. &lt;br /&gt;&lt;br /&gt;Korzystając z okazji życzę Wam owocnego przeżywania Świąt Wielkiej Nocy, a po Świętach uczestnictwa w wielu ciekawych projektach. &lt;br /&gt;&lt;br /&gt;Mariusz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-5092624591979449367?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/5092624591979449367/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=5092624591979449367' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/5092624591979449367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/5092624591979449367'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/04/witam-wszystkich-niedawno-znalazem-sie.html' title='Wielożeństwo czyli integracja Mavena z ICEfaces 1.8.0 i Tomahawk 1.1.8'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-8736068028960686284</id><published>2009-01-29T21:58:00.001+01:00</published><updated>2009-01-29T22:04:00.985+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring BlazeDS'/><category scheme='http://www.blogger.com/atom/ns#' term='BlazeDS'/><title type='text'>Spring BlazeDS</title><content type='html'>Wczoraj niezmiernie ucieszyła mnie informacja na InfoQ o tym, że SpringSource połaczył swe siły z Adobe w projekcie Spring BlazeDS. Na początku powinienem wspomnieć coś na temat samego projektu BlazeDS. &lt;br /&gt; Otóż BlazeDS jest technologią uruchamianą po stronie serwera umożliwiającą komunikację pomiędzy Javą a technologią Adobe Flex i Adobe AIR, które pełnią funkcję widoku. Komunikacja odbywa się za pomocą protokołu AMF lub SOAP. Jakiś rok temu testowałem przykładowy kod korzystając zarówno z AMF jak i SOAP i pewnie nikogo to nie zdziwi, ale komunikacja przez AMF postępowała bardziej chyżo.&lt;br /&gt; Co natomiast daje nam Spring BlazeDS ? Ano to, że mamy teraz dostęp do BlazeDS MessageBrokera jako do beana Springa. Dokładniej mówiąc oddzielnie trzymana jest (raczej niezmienna) konfiguracja BlazeDS, która zawiera definicję właściwości kanału AMF i oddzielnie konfigurowane jest źródło danych znane powszechnie z aplikacji Springowych. &lt;br /&gt;&lt;br /&gt;Wydaje mi się, że wciąż konieczne jest używanie skrypletów w Action Scripcie dla akcji wysyłających dane do serwera. Może kiedyś będzie to rozwiązane przez projekt opakowujący komponenty Flexa w JSF. Wiem, że takowy już istnieje, ale go już dawno nie śledziłem.  &lt;br /&gt;&lt;br /&gt;Odnośniki:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/news/2009/01/spring-adobe-blazeds"&gt;http://www.infoq.com/news/2009/01/spring-adobe-blazeds&lt;/a&gt;&lt;br /&gt;&lt;a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"&gt;http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.springsource.com/2008/12/17/using-spring-blazeds-integration-m1/"&gt;http://blog.springsource.com/2008/12/17/using-spring-blazeds-integration-m1/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-8736068028960686284?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/8736068028960686284/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=8736068028960686284' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/8736068028960686284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/8736068028960686284'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/01/spring-blazeds.html' title='Spring BlazeDS'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-215499946166844819</id><published>2009-01-26T16:37:00.000+01:00</published><updated>2009-01-29T19:43:42.062+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wzorce Projektowe'/><title type='text'>Dlaczego nie warto trzymać transakcji w metodach klasy DAO</title><content type='html'>Wzorzec Data Access Object zwany w skrócie DAO jest wzorcem projektowym związanym z warstwą integracji. Klasa DAO zawiera metody odwołujące się do tzw. data storage, którym jest zazwyczaj baza danych. Wyobraźmy sobie sytuację, że musimy dokonać podmiany danych użytkownika, gdyż zmienił się jego adres zamieszkania. Procedura działania jest następująca:&lt;br /&gt;1. Odszukanie użytkownika na podstawie jakiegoś identyfikatora&lt;br /&gt;2. Pobranie adresu użytkownika&lt;br /&gt;3. Ustawienie nowego adresu i zapisanie zmian do bazy danych&lt;br /&gt;Każdy z tych punktów możemy traktować jako wywołanie pojedynczej metody obiektu (lub tez obiektów DAO). W standardowych przypadkach byłoby nierozsądnym otwieranie i zamykanie transakcji dla każdej z tych metod z osobna, gdyż niepotrzebnie zwiększałoby to wykorzystanie zasobów. Dodatkowo niepowodzenie jednego z trzech punktów powinno spowodować powrót bazy do stanu przed rozpoczęciem  procesu uaktualniania adresu użytkownika. Rozwiązaniem nowej klasy zawierającej metodę w ramach, której wywoływane są poszczególne metody obiektu DAO. Dopiero tutaj, na początku tejże nowej metody otwieramy transakcję, która zamykana jest po wywołaniu ostatniej metody obiektu DAO. Czyli metody zapisującej nowy adres do bazy danych. W ten oto sposób popełniliśmy niechcąco wzorzec Application Service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-215499946166844819?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/215499946166844819/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=215499946166844819' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/215499946166844819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/215499946166844819'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/01/dlaczego-nie-warto-trzyma-transakcji-w.html' title='Dlaczego nie warto trzymać transakcji w metodach klasy DAO'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-2122282796599181746</id><published>2009-01-23T08:21:00.002+01:00</published><updated>2009-01-29T19:43:15.197+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Moje prywatne żale</title><content type='html'>Dzisiaj nie będę oryginalny. Takie lamenty przewijają się co jakiś czas na forach internetowych związanych z Javą... &lt;br /&gt;&lt;br /&gt;Od dłuższego czasu zabieram się za poznanie języka Ruby. W tym celu nabyłem nawet stosowną książkę, a tu się nagle okazuje, że jest coś takiego jak Scala, że niby to jest lepsze i z Javą powiązane. To ja się pytam kiedy na to wszystko znaleźć czas?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-2122282796599181746?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/2122282796599181746/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=2122282796599181746' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/2122282796599181746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/2122282796599181746'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/01/moje-prywatne-ale.html' title='Moje prywatne żale'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-2595381736119600090</id><published>2009-01-22T11:34:00.001+01:00</published><updated>2009-01-29T19:42:32.499+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GMF'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='GEF'/><title type='text'>Moje wrażenia podczas obcowania z EMF, GMF, GEF</title><content type='html'>Ostatnio jestem zaangażowany w projekt zbudowany z  niezależnych pluginów Eclipse’a. Taki system pozwalający na tworzenie modeli w oparciu o zdefiniowany, własny DSL. Dla osób nie siedzących w tym temacie dodam, iż wygląda to trochę jak  edytor UML. Technologie użyte przy budowie systemu to EMF, GMF, GEF. Muszę przyznać, że czas wejścia w te technologie jest stosunkowo długi (przynajmniej jak dla mnie). Jednak, gdy już posiądzie się „tajemną” wiedzę tworzenie kompleksowych aplikacji staje się dużo prostsze. Kontakt ze stosunkowo prostą aplikacją zbudowaną o wspomniane frameworki powoduje, iż użytkownik końcowy ma wrażenie, że jest ona graficznie i funkcjonalnie dopieszczona. Nie trzeba zajmować się wieloma aspektami wymaganymi przy tworzeniu standardowych aplikacji takimi jak np. standardowe menu, integracja z repozytorium, przechwytywanie zmian w modelu od ostatniego zapisu, lokalizacja itp. Dużo rzeczy programowana jest poprzez model deklaratywny na podstawie, którego automatycznie generowany jest kod. W temacie EMF, GMF, GEF wciąż raczkuję. Może dlatego, iż rdzeń aplikacji tworzony jest przez mojego przełożonego, który dość długo siedzi w tym temacie, a moja rola ogranicza się głównie do poprawy zgłaszanych błędów. Jednakże jest to ciekawe dla mnie doświadczenie, gdyż sam widzę jak w przeciągu ostatnich dziesięciu lat zmienia się sposób pisania kodu i tworzenia systemów informatycznych.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-2595381736119600090?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/2595381736119600090/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=2595381736119600090' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/2595381736119600090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/2595381736119600090'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/01/moje-wraenia-podczas-obcowania-z-emf.html' title='Moje wrażenia podczas obcowania z EMF, GMF, GEF'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-4841929277392898000</id><published>2009-01-21T09:23:00.002+01:00</published><updated>2009-01-29T19:40:52.308+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Pętle i etykiety</title><content type='html'>&lt;span style="font-family: arial;"&gt;Witam po dłuższej przerwie, ale do rzeczy. Czasami zdarza się (szczególnie w pracy), iż ktoś zagląda na mój kod. Często w takich momentach widzę zdziwienie na twarzy podglądacza, gdy zauważa, że używam etykiet dla zagnieżdżonych pętli. Wydaje mi się, że często pomija się to dobrodziejstwo, a szkoda.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;loop&lt;/span&gt;: for (Connection connection : outcomingConnections) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-4841929277392898000?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/4841929277392898000/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=4841929277392898000' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/4841929277392898000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/4841929277392898000'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2009/01/ptle-i-etykiety.html' title='Pętle i etykiety'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-6500169283960616094</id><published>2007-04-21T23:31:00.000+01:00</published><updated>2007-04-22T01:30:42.658+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Struktura drzewiasta i funkcja connectby (PostgreSQL)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Prędzej czy później większość z nas stanie przed koniecznością przechowywania danych w strukturze drzewiastej. W sieci istnieje wiele przykładów obrazujących to zagadnienie.     Poniższy opis ma na celu pokazanie jednego ze sposobów „wyciagania” danych przechowywanych w tejże strukturze za pomocą funkcji &lt;span style="font-style: italic;"&gt;connectby&lt;/span&gt;. Przykładem struktury drzewiastej jest tzw. &lt;span style="font-style: italic;"&gt;adjacency list model&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;CREATE TABLE wypowiedz_tab (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    id_wypowiedzi bigint NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    temat character varying(255),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    tresc character varying(255),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    id_ojca_wypowiedzi bigint&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ALTER TABLE ONLY wypowiedz_tab&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    ADD CONSTRAINT wypowiedz_tab_pkey PRIMARY KEY (id_wypowiedzi);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ALTER TABLE ONLY wypowiedz_tab&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    ADD CONSTRAINT &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;wypowiedz_tab_fkey&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; FOREIGN KEY (id_ojca_wypowiedzi) REFERENCES wypowiedz_tab(id_wypowiedzi);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;Powyższa tabela zawiera wypowiedzi umieszczane na grupie dyskusyjnej. Jeśli  &lt;span style="font-style: italic;"&gt;id_ojca_wypowiedzi &lt;/span&gt;posiada wartość różną od &lt;span style="font-style: italic;"&gt;null&lt;/span&gt; znaczy to, iż wypowiedź ta jest odpowiedzią . W innym wypadku mamy do czynienia z wypowiedzią rozpoczynającą nową dyskusję.&lt;br /&gt;&lt;br /&gt;Po zapełnieniu tabeli danymi chcielibyśmy w łatwy sposób pobierać dane bez względu na jakim znajdujemy sie poziomie w hierarchii naszego drzewa. Serwer baz danych &lt;span style="font-style: italic;"&gt;PostgreSQL&lt;/span&gt; oferuje do tego zadania gotową funkcję &lt;span style="font-style: italic;"&gt;connectby&lt;/span&gt;, znajdującą się w pliku &lt;span style="font-style: italic;"&gt;share\contrib\tablefunc.sql&lt;/span&gt;. Składnia funkcji jest nastepująca:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;connectby('nazwa_tabeli','nazwa_pola_PK','nazwa_pola_FK', 'wartość_pola_PK' , głębokość) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;gdzie &lt;span style="font-style: italic;"&gt;głębokość&lt;/span&gt; oznacza głębokość przeszukiwania.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;W przypadku gdy argument '&lt;span style="font-style: italic;"&gt;głębokość'&lt;/span&gt; ma wartość 0, oznacza to, iż zostanie zwrócony rekord od którego rozpoczęto przeszukiwanie oraz wszystkie względem niego rekordy potomne.&lt;br /&gt;&lt;br /&gt;Przed przejściem do następnego etapu należy utworzyć funkcję:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RETURNS setof record&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AS '$libdir/tablefunc','connectby_text'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LANGUAGE C STABLE STRICT;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Przykład zapytania realizującego pobieranie danych za pomocą funkcji &lt;span style="font-style: italic;"&gt;connectby&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SELECT * FROM connectby('wypowiedz_tab','id_wypowiedzi','id_ojca_wypowiedzi', '2',0) AS t(keyid bigint, parent_keyid bigint, level int);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Należy zaznaczyć, iż typy &lt;span style="font-style: italic;"&gt;keyid&lt;/span&gt; i &lt;span style="font-style: italic;"&gt;parent_keyid&lt;/span&gt; nie mogą się różnić. W powyższym przypadku jest to &lt;span style="font-style: italic;"&gt;bigint&lt;/span&gt;. Dla tabeli, gdzie wartości klucza głwównego i klucza obcego byłyby tekstem zapytanie wyglądałoby następująco:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SELECT * FROM connectby('wypowiedz_tab','id_wypowiedzi','id_ojca_wypowiedzi', '2',0) AS t(keyid text, parent_keyid text, level int);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jeśli interesuje nas zwrócenie w wyniku wszystkich kolumn naszej tabeli należy użyć złączenia:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SELECT tt.* FROM connectby('wypowiedz_tab','id_wypowiedzi','id_ojca_wypowiedzi', '2',0) AS t(keyid text, parent_keyid text, level int), wypowiedz_tab as tt where t.keyid=tt.id_wypowiedzi;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;W katalogu &lt;span style="font-style: italic;"&gt;doc\contrib\README.tablefunc&lt;/span&gt; serwera &lt;span style="font-style: italic;"&gt;PostgreSQL&lt;/span&gt; znajduje się dokładniejszy opis funkcji &lt;span style="font-style: italic;"&gt;connectby&lt;/span&gt; uwzględniający uzyskanie dodatkowej funkcjonalności, takiej jak np. sortowanie rekordów potomnych.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-6500169283960616094?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/6500169283960616094/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=6500169283960616094' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/6500169283960616094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/6500169283960616094'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2007/04/connectby.html' title='Struktura drzewiasta i funkcja connectby (PostgreSQL)'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-1257211414758899370</id><published>2007-03-23T22:46:00.000+01:00</published><updated>2007-03-23T23:10:18.672+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>I love Hibernate...</title><content type='html'>&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;Mówić w tym wypadku o miłości to trochę za szybko, ale z pewnością jest to zauroczenie. Po zapoznaniu się z tym szkieletem zastanawiam się jak to było możliwe, że przez tak długi czas pisałem aplikacje używając gołego JDBC?  Widocznie wcześniej musiałem doświadczyć EJB 2.1, żeby teraz jeszcze bardziej docenić ten framework. Jak to mój kolega ujął: „&lt;a href="http://hibernate.org/"&gt;Hibernate&lt;/a&gt; powinien być obowiązkowym wykładem obok fizyki i matematyki”. [no chyba trochę przesadził ;]&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-1257211414758899370?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/1257211414758899370/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=1257211414758899370' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/1257211414758899370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/1257211414758899370'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2007/03/i-love-hibernate.html' title='I love Hibernate...'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-9082973671934150697</id><published>2007-03-12T23:36:00.000+01:00</published><updated>2007-03-23T23:16:18.051+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>W życiu nie może być za łatwo</title><content type='html'>&lt;div style="text-align: justify;"&gt;    Po bojach z &lt;a href="http://www.hibernate.org/hib_docs/v3/reference/en/html/"&gt;dokumentacją Hibernate'a&lt;/a&gt; przyszedł czas na konfigurację IDE ( w moim wypadku &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;).  Procedura w tym wypadku jest standardowa:&lt;ol&gt;&lt;li&gt;Znajdź odpowiedni plugin.&lt;/li&gt;&lt;li&gt;Zainstaluj go.&lt;/li&gt;&lt;li&gt;Znajdź przyczynę dlaczego plugin nie działa.&lt;/li&gt;&lt;/ol&gt;    Tak też było i tym razem. Pełen entuzjazmu zasiadłem do swojej maszyny, aby zassać &lt;a href="http://www.hibernate.org/255.html"&gt;Hibernate Tools&lt;/a&gt;. Po pomyślnej instalacji zrestartowałem środowisko w celu sprawdzenia   poprawności instalacji. Na pierwszy rzut oka wszystko wyglądało poprawnie. Skuszony perspektywą dalszego ułatwienia sobie życia przeszedłem do bojów ze &lt;a href="http://springide.org/"&gt;SpringIDE&lt;/a&gt;. Po skończonej czyności ponownie odpaliłem Eclipse. W menu kontekstowym pojawiła się nowa magiczna opcja: "&lt;span style="font-style: italic;"&gt;Add Spring Project Nature&lt;/span&gt;". Zadowolony z odniesionych rezultatów postanowiłem rozpocząć  testowanie pierwszego pluginu. I co się okazało? Plugin Hibernate Tools wyparował... Logi Eclipse zamilkły. Wszelkie próby wystartowania Eclipse z opcją &lt;span style="font-style: italic;"&gt;clean&lt;/span&gt; nie przyniosły oczekiwanego rezultatu. Nie pomogła również ponowna instalacja owego plugina.&lt;br /&gt;Pogooglam jeszcze jutro. Jeśli nie znajdę na sieci jakiegoś workaround to daję sobie spokój z Hibernate Tools. Mam na przyszłość nauczkę, żeby nie ufać pluginom w wersji beta ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-9082973671934150697?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/9082973671934150697/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=9082973671934150697' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/9082973671934150697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/9082973671934150697'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2007/03/w-yciu-nie-moe-by-za-atwo.html' title='W życiu nie może być za łatwo'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-5570757494493224955</id><published>2007-02-28T01:00:00.001+01:00</published><updated>2007-03-13T01:04:34.599+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Blogger biega na Tomcacie</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_COTb0F_0scw/ReTGyFiWz4I/AAAAAAAAAAw/YtCiqJWebfQ/s1600-h/tomcat.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 236px; height: 147px;" src="http://1.bp.blogspot.com/_COTb0F_0scw/ReTGyFiWz4I/AAAAAAAAAAw/YtCiqJWebfQ/s320/tomcat.JPG" alt="" id="BLOGGER_PHOTO_ID_5036368847089094530" border="0" /&gt;&lt;/a&gt;    Prawdę mówiąc to nie planowałem dzisiaj wysyłać kolejnego posta, ale nie mogłem się powstrzymać, gdy podczas zmiany konfiguracji ustawień mojego bloggerowego konta  na ekranie pojawił się pewien znajomy obraz (patrz obok ;-) Nie powiem, trochę się zdziwiłem. Nie przypuszczałem, że Blogger używa   &lt;a href="http://tomcat.apache.org/"&gt;Tomcata&lt;/a&gt; i to jeszcze w wersji 4.1 (obecnie jest już 6). Podobny widok oglądam dosyć często, gdyż klepię moją magisterkę używając wspomnianego serwera, a że technologie  &lt;a href="http://java.sun.com/javaee/javaserverfaces/"&gt;JSF&lt;/a&gt;, &lt;a href="http://www.springframework.org/"&gt;Spring framework&lt;/a&gt; oraz &lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt;, które wybrałem do mojej pracy są w fazie "przyswajania", więc ja i errorPage Tomcata widzimy się prawie codziennie. Po chwilowym zastanowieniu doszedłem do wniosku, że nie powinienem się dziwić faktem, iż Blogger został napisany w Javie, ponieważ technologia   &lt;a href="http://java.sun.com/javaee/technologies/javaee5.jsp"&gt;JEE&lt;/a&gt; jest obecnie szeroko wykorzystywana w systemach informatycznych.&lt;br /&gt;    Zazwyczaj widząc takie obrazki jestem co najmniej nie pocieszony, ale tym razem zrobiło mi się miło ;-)   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-5570757494493224955?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/5570757494493224955/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=5570757494493224955' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/5570757494493224955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/5570757494493224955'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2007/02/mia-niespodzianka.html' title='Blogger biega na Tomcacie'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_COTb0F_0scw/ReTGyFiWz4I/AAAAAAAAAAw/YtCiqJWebfQ/s72-c/tomcat.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5351368126295194882.post-8643269114000523739</id><published>2007-02-27T21:15:00.000+01:00</published><updated>2007-03-13T00:35:01.447+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ogólne'/><title type='text'>Blogowania czas zaczynać</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;p&gt;&lt;/p&gt;    Wiele decyzji w moim życiu podejmowałem pod wpływem impulsu i tak było również w tym wypadku.  Nigdy nie przypuszczałem, że najdzie mnie ochota na blogowanie... A to dlatego, iż sam nigdy nie czytałem blogów (no chyba, że związane były z programowaniem w języku Java). Życie jednak płata figle...&lt;br /&gt;    Leżąc sobie wczorajszej nocy doszedłem do wniosku, że MUSZĘ! Jak pomyślałem, tak też zrobiłem...&lt;div style="text-align: right;"&gt;                                                                                                                                   &lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5351368126295194882-8643269114000523739?l=syllepsa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://syllepsa.blogspot.com/feeds/8643269114000523739/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5351368126295194882&amp;postID=8643269114000523739' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/8643269114000523739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5351368126295194882/posts/default/8643269114000523739'/><link rel='alternate' type='text/html' href='http://syllepsa.blogspot.com/2007/02/startujemy.html' title='Blogowania czas zaczynać'/><author><name>syllepsa</name><uri>http://www.blogger.com/profile/16465840295870760266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_COTb0F_0scw/SXbjINHSWJI/AAAAAAAAAQU/uGpy-2fAvsI/S220/ASC_2685_1.JPG'/></author><thr:total>0</thr:total></entry></feed>
