<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6716639114580525780</atom:id><lastBuildDate>Mon, 07 Oct 2024 04:47:12 +0000</lastBuildDate><category>java</category><category>offtopic</category><category>english</category><category>how-to</category><category>konferencje</category><category>książki</category><category>wicket</category><category>SCWCD</category><category>efektywny programista</category><category>Java Developers&#39; Day</category><category>Eclipse</category><category>IDE</category><category>Mercurial</category><category>NetBeans</category><category>SCJP</category><category>SDJ</category><category>magisterka</category><category>Apache Commons Net</category><category>Atlassian</category><category>Bitbucket</category><category>DBCP</category><category>Hibernate</category><category>JDBC</category><category>JMeter</category><category>JPA</category><category>Mockito</category><category>NNTP</category><category>Programatico</category><category>Spring</category><category>SyntaxHighlighter</category><category>TDD</category><category>conferences</category><category>firma</category><category>jak zacząć</category><category>javarsovia</category><category>kenai</category><category>krótkie</category><category>oracle</category><category>refaktoryzacja</category><category>sun</category><title>Code Hard Go Pro</title><description>&lt;a href=&quot;http://codehardgopro.blogspot.com&quot;&gt;moje potyczki z Javą, JEE, programowaniem, prowadzeniem firmy i życiem ogólnie&lt;/a&gt;</description><link>http://codehardgopro.blogspot.com/</link><managingEditor>noreply@blogger.com (Tomasz Dziurko)</managingEditor><generator>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-5632637799228868601</guid><pubDate>Fri, 31 Dec 2010 12:09:00 +0000</pubDate><atom:updated>2011-01-07T09:57:13.948+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">english</category><category domain="http://www.blogger.com/atom/ns#">how-to</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">wicket</category><title>Custom PagingNavigator with changing items per page in Wicket</title><description>As I am migrating my blog to my own domain, a few posts in the future will be published in both places to allow You, reader, to change address and rss smoothly :)&lt;br /&gt;&lt;br /&gt;New blog address: &lt;a href=&quot;http://tomaszdziurko.pl&quot;&gt;http://tomaszdziurko.pl&lt;/a&gt; &lt;br /&gt;New RSS link: &lt;a href=&quot;http://www.tomaszdziurko.pl/feed&quot;&gt;http://www.tomaszdziurko.pl/feed&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This post can be found at &lt;a href=&quot;http://tomaszdziurko.pl/2010/12/custom-pagingnavigator-with-changing-items-per-page-in-wicket/&quot;&gt;&lt;br /&gt;http://tomaszdziurko.pl/2010/12/custom-pagingnavigator-with-changing-items-per-page-in-wicket/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In one of my recent projects I had to create Wicket pagination component with one additional functionality allowing user to dynamically change maximum number of items presented on each page.&lt;br /&gt;&lt;br /&gt;Finished component will look like below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://tomaszdziurko.pl/wp-content/uploads/2010/12/customPaginator.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 414px; height: 165px;&quot; src=&quot;http://tomaszdziurko.pl/wp-content/uploads/2010/12/customPaginator.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course I was not going to implement this from the scratch, because most of work had been already done by Wicket authors and commiters in component &lt;a href=&quot;http://wicket.apache.org/apidocs/1.4/org/apache/wicket/markup/html/navigation/paging/PagingNavigator.html&quot;&gt;PagingNavigator&lt;/a&gt;. Source of this component as a reference to changes I made can be found &lt;a href=&quot;http://pastebin.com/kwzBG9mH&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The first steps in creating our component:&lt;/strong&gt;&lt;br /&gt; - add List &lt;em&gt;itemsPerPageValues&lt;/em&gt; holding numbers for &#39;items per page&#39; which will be shown to the user allowing him to click and change this value.&lt;br /&gt; - provide default List &lt;em&gt;DEFAULT_ITEMS_PER_PAGE_VALUES&lt;/em&gt;, which will be used (what a surprise!) as a default :) &lt;br /&gt; - give our component reference to the &lt;em&gt;DataView&lt;/em&gt; object on which we will execute change items per page method.&lt;br /&gt;&lt;br /&gt;Below we can see changes in class fields and constructors:&lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;&lt;br /&gt;public class CustomPagingNavigator extends Panel {&lt;br /&gt;&lt;br /&gt; public static final String NAVIGATION_ID = &quot;navigation&quot;;&lt;br /&gt; public static final List&amp;lt;Integer&amp;gt; DEFAULT_ITEMS_PER_PAGE_VALUES = Arrays.asList(5, 10, 50);&lt;br /&gt;&lt;br /&gt; private PagingNavigation pagingNavigation;&lt;br /&gt; private final DataView&amp;lt;?&amp;gt; dataView;&lt;br /&gt; private final IPagingLabelProvider labelProvider;&lt;br /&gt; private final List&amp;lt;Integer&amp;gt; itemsPerPageValues;&lt;br /&gt; private WebMarkupContainer pagingLinksContainer;&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView) {&lt;br /&gt;  this(id, dataView, null, DEFAULT_ITEMS_PER_PAGE_VALUES);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView, List&amp;lt;Integer&amp;gt; itemsPerPageValues) {&lt;br /&gt;  this(id, dataView, null, itemsPerPageValues);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView, final IPagingLabelProvider labelProvider) {&lt;br /&gt;  this(id, dataView, labelProvider, DEFAULT_ITEMS_PER_PAGE_VALUES);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView, final IPagingLabelProvider labelProvider,&lt;br /&gt;   List&amp;lt;Integer&amp;gt; itemsPerPageValues) {&lt;br /&gt;  super(id);&lt;br /&gt;  this.dataView = dataView;&lt;br /&gt;  this.labelProvider = labelProvider;&lt;br /&gt;  this.itemsPerPageValues = itemsPerPageValues;&lt;br /&gt;&lt;br /&gt;        // these methods will be described later in this post&lt;br /&gt;  addContainerWithPagingLinks();&lt;br /&gt;  addLinksChangingItemsPerPageNumber();&lt;br /&gt; }&lt;br /&gt;    (...)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;First new method is &lt;em&gt;addContainerWithPagingLinks&lt;/em&gt; based mainly of &lt;em&gt;onBeforeRender&lt;/em&gt; from &lt;a href=&quot;http://pastebin.com/kwzBG9mH&quot;&gt;PagingNavigator&lt;/a&gt;. This method adds paging links to the component to allow user to change number of viewed page. One small addition is an overriden &lt;em&gt;isVisible&lt;/em&gt; which will hide paging fragment when there is only one page to show. &lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;&lt;br /&gt;private void addContainerWithPagingLinks() {&lt;br /&gt;&lt;br /&gt;  pagingLinksContainer = new WebMarkupContainer(&quot;pagingLinksContainer&quot;) {&lt;br /&gt;   @Override&lt;br /&gt;   public boolean isVisible() {&lt;br /&gt;    return dataView.getPageCount() &amp;gt; 1;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  pagingNavigation = newNavigation(dataView, labelProvider);&lt;br /&gt;  pagingLinksContainer.add(pagingNavigation);&lt;br /&gt;&lt;br /&gt;  // Add additional page links&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationLink(&quot;first&quot;, dataView, 0).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.first&quot;)));&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationIncrementLink(&quot;prev&quot;, dataView, -1).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.previous&quot;)));&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationIncrementLink(&quot;next&quot;, dataView, 1).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.next&quot;)));&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationLink(&quot;last&quot;, dataView, -1).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.last&quot;)));&lt;br /&gt;&lt;br /&gt;  add(pagingLinksContainer);&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Next step is to override &lt;em&gt;isVisible&lt;/em&gt; method in our component which will hide it completely when DataView has no items to render:&lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;&lt;br /&gt; @Override&lt;br /&gt; public boolean isVisible() {&lt;br /&gt;  return dataView.getItemCount() &amp;gt; 0;&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And now it&#39;s time to create the core of our component: a place where items per page can be changed. This is done in method:&lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;&lt;br /&gt; private void addLinksChangingItemsPerPageNumber() {&lt;br /&gt;  ListView&amp;lt;Integer&amp;gt; itemsPerPageList = new ListView&amp;lt;Integer&amp;gt;(&quot;itemsPerPage&quot;, itemsPerPageValues) {&lt;br /&gt;   @Override&lt;br /&gt;   protected void populateItem(ListItem&amp;lt;Integer&amp;gt; item) {&lt;br /&gt;    Link&amp;lt;Void&amp;gt; itemPerPageLink = new ItemPerPageLink&amp;lt;Void&amp;gt;(&quot;itemPerPageLink&quot;, dataView,&lt;br /&gt;      pagingLinksContainer, item.getModelObject());&lt;br /&gt;    itemPerPageLink.add(new Label(&quot;itemsValue&quot;, item.getModel()));&lt;br /&gt;    item.add(itemPerPageLink);&lt;br /&gt;   }&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;  add(itemsPerPageList);&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the above method we create ListView for Integers from &lt;em&gt;itemsPerPageValues&lt;/em&gt; and for each number we add link (new class &lt;em&gt;ItemPerPageLink&lt;/em&gt; explained below) which will change &lt;em&gt;DataView&lt;/em&gt; itemsPerPage property. Except reference to DataView we also give to our link reference to pagingLinksContainer to hide it after user changes itemsPerPage and there will be only one page to show.&lt;br /&gt;&lt;br /&gt;Complete class ItemPerPageLink source code:&lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;&lt;br /&gt;public class ItemPerPageLink&amp;lt;T&amp;gt; extends Link&amp;lt;T&amp;gt; {&lt;br /&gt;&lt;br /&gt; private final int itemsPerPage;&lt;br /&gt; private final DataView&amp;lt;?&amp;gt; dataView;&lt;br /&gt; private final WebMarkupContainer pagingLinksContainer;&lt;br /&gt;&lt;br /&gt; public ItemPerPageLink(final String id, final DataView&amp;lt;?&amp;gt; dataView, WebMarkupContainer pagingLinksContainer, int itemsPerPageValue) {&lt;br /&gt;  super(id);&lt;br /&gt;  this.dataView = dataView;&lt;br /&gt;  this.pagingLinksContainer = pagingLinksContainer;&lt;br /&gt;  this.itemsPerPage = itemsPerPageValue;&lt;br /&gt;  setEnabled(itemsPerPageValue != dataView.getItemsPerPage());&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void onClick() {&lt;br /&gt;  dataView.setItemsPerPage(itemsPerPage);&lt;br /&gt;  pagingLinksContainer.setVisible(dataView.getPageCount() &amp;gt; 1);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Override&lt;br /&gt; protected void onComponentTag(ComponentTag tag) {&lt;br /&gt;  super.onComponentTag(tag);&lt;br /&gt;  tag.put(&quot;title&quot;, itemsPerPage);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this class we:&lt;br /&gt;1. Disable link for number which is current dataView.itemsPerPage value.&lt;br /&gt;2. Hide pagingLinksContainer when there is only one page.&lt;br /&gt;3. Change itemsPerPage property in onClick method.&lt;br /&gt;4. Set link title to the value of items per page.&lt;br /&gt;&lt;br /&gt;And that&#39;s all. For those who want complete solution in one place there is complete source of the class CustomPagingNavigator with its markup:&lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.apache.wicket.Component;&lt;br /&gt;import org.apache.wicket.behavior.AbstractBehavior;&lt;br /&gt;import org.apache.wicket.markup.ComponentTag;&lt;br /&gt;import org.apache.wicket.markup.html.WebMarkupContainer;&lt;br /&gt;import org.apache.wicket.markup.html.basic.Label;&lt;br /&gt;import org.apache.wicket.markup.html.link.AbstractLink;&lt;br /&gt;import org.apache.wicket.markup.html.link.Link;&lt;br /&gt;import org.apache.wicket.markup.html.list.ListItem;&lt;br /&gt;import org.apache.wicket.markup.html.list.ListView;&lt;br /&gt;import org.apache.wicket.markup.html.navigation.paging.IPageable;&lt;br /&gt;import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;&lt;br /&gt;import org.apache.wicket.markup.html.navigation.paging.PagingNavigation;&lt;br /&gt;import org.apache.wicket.markup.html.navigation.paging.PagingNavigationIncrementLink;&lt;br /&gt;import org.apache.wicket.markup.html.navigation.paging.PagingNavigationLink;&lt;br /&gt;import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;&lt;br /&gt;import org.apache.wicket.markup.html.panel.Panel;&lt;br /&gt;import org.apache.wicket.markup.repeater.data.DataView;&lt;br /&gt;&lt;br /&gt;public class CustomPagingNavigator extends Panel {&lt;br /&gt;&lt;br /&gt; public static final String NAVIGATION_ID = &quot;navigation&quot;;&lt;br /&gt; public static final List&amp;lt;Integer&amp;gt; DEFAULT_ITEMS_PER_PAGE_VALUES = Arrays.asList(5, 25, 50);&lt;br /&gt;&lt;br /&gt; private PagingNavigation pagingNavigation;&lt;br /&gt; private final DataView&amp;lt;?&amp;gt; dataView;&lt;br /&gt; private final IPagingLabelProvider labelProvider;&lt;br /&gt; private final List&amp;lt;Integer&amp;gt; itemsPerPageValues;&lt;br /&gt; private WebMarkupContainer pagingLinksContainer;&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView) {&lt;br /&gt;  this(id, dataView, null, DEFAULT_ITEMS_PER_PAGE_VALUES);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView, List&amp;lt;Integer&amp;gt; itemsPerPageValues) {&lt;br /&gt;  this(id, dataView, null, itemsPerPageValues);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView, final IPagingLabelProvider labelProvider) {&lt;br /&gt;  this(id, dataView, labelProvider, DEFAULT_ITEMS_PER_PAGE_VALUES);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public CustomPagingNavigator(final String id, final DataView&amp;lt;?&amp;gt; dataView, final IPagingLabelProvider labelProvider,&lt;br /&gt;   List&amp;lt;Integer&amp;gt; itemsPerPageValues) {&lt;br /&gt;  super(id);&lt;br /&gt;  this.dataView = dataView;&lt;br /&gt;  this.labelProvider = labelProvider;&lt;br /&gt;  this.itemsPerPageValues = itemsPerPageValues;&lt;br /&gt;&lt;br /&gt;  addContainerWithPagingLinks();&lt;br /&gt;  addLinksChangingItemsPerPageNumber();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Override&lt;br /&gt; public boolean isVisible() {&lt;br /&gt;  return dataView.getItemCount() &amp;gt; 0;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void addContainerWithPagingLinks() {&lt;br /&gt;&lt;br /&gt;  pagingLinksContainer = new WebMarkupContainer(&quot;pagingLinksContainer&quot;) {&lt;br /&gt;   @Override&lt;br /&gt;   public boolean isVisible() {&lt;br /&gt;    return dataView.getPageCount() &amp;gt; 1;&lt;br /&gt;   }&lt;br /&gt;  };&lt;br /&gt;  &lt;br /&gt;  pagingNavigation = newNavigation(dataView, labelProvider);&lt;br /&gt;  pagingLinksContainer.add(pagingNavigation);&lt;br /&gt;&lt;br /&gt;  // Add additional page links&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationLink(&quot;first&quot;, dataView, 0).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.first&quot;)));&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationIncrementLink(&quot;prev&quot;, dataView, -1).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.previous&quot;)));&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationIncrementLink(&quot;next&quot;, dataView, 1).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.next&quot;)));&lt;br /&gt;  pagingLinksContainer.add(newPagingNavigationLink(&quot;last&quot;, dataView, -1).add(&lt;br /&gt;    new TitleAppender(&quot;PagingNavigator.last&quot;)));&lt;br /&gt;&lt;br /&gt;  add(pagingLinksContainer);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected PagingNavigation newNavigation(final IPageable pageable, final IPagingLabelProvider labelProvider) {&lt;br /&gt;  return new PagingNavigation(NAVIGATION_ID, pageable, labelProvider);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected AbstractLink newPagingNavigationIncrementLink(String id, IPageable pageable, int increment) {&lt;br /&gt;  return new PagingNavigationIncrementLink&amp;lt;Void&amp;gt;(id, pageable, increment);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected AbstractLink newPagingNavigationLink(String id, IPageable pageable, int pageNumber) {&lt;br /&gt;  return new PagingNavigationLink&amp;lt;Void&amp;gt;(id, pageable, pageNumber);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void addLinksChangingItemsPerPageNumber() {&lt;br /&gt;  ListView&amp;lt;Integer&amp;gt; itemsPerPageList = new ListView&amp;lt;Integer&amp;gt;(&quot;itemsPerPage&quot;, itemsPerPageValues) {&lt;br /&gt;   @Override&lt;br /&gt;   protected void populateItem(ListItem&amp;lt;Integer&amp;gt; item) {&lt;br /&gt;    Link&amp;lt;Void&amp;gt; itemPerPageLink = new ItemPerPageLink&amp;lt;Void&amp;gt;(&quot;itemPerPageLink&quot;, dataView,&lt;br /&gt;      pagingLinksContainer, item.getModelObject());&lt;br /&gt;    itemPerPageLink.add(new Label(&quot;itemsValue&quot;, item.getModel()));&lt;br /&gt;    item.add(itemPerPageLink);&lt;br /&gt;   }&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;  add(itemsPerPageList);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public final PagingNavigation getPagingNavigation() {&lt;br /&gt;  return pagingNavigation;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private final class TitleAppender extends AbstractBehavior {&lt;br /&gt;  private static final long serialVersionUID = 1L;&lt;br /&gt;&lt;br /&gt;  private final String resourceKey;&lt;br /&gt;&lt;br /&gt;  public TitleAppender(String resourceKey) {&lt;br /&gt;   this.resourceKey = resourceKey;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public void onComponentTag(Component component, ComponentTag tag) {&lt;br /&gt;   tag.put(&quot;title&quot;, CustomPagingNavigator.this.getString(resourceKey));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And its markup:&lt;br /&gt;&lt;pre class=&quot;brush: html&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;&lt;br /&gt;&amp;lt;html xmlns:wicket&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;wicket:panel&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;div&amp;gt;&lt;br /&gt;        &amp;lt;div&amp;gt;&lt;br /&gt;            Items per page:&lt;br /&gt;        &amp;lt;span wicket:id=&quot;itemsPerPage&quot;&amp;gt;&lt;br /&gt;            &amp;lt;a wicket:id=&quot;itemPerPageLink&quot;&amp;gt;&amp;lt;span wicket:id=&quot;itemsValue&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;        &amp;lt;/span&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div wicket:id=&quot;pagingLinksContainer&quot;&amp;gt;&lt;br /&gt;            &amp;lt;table&amp;gt;&lt;br /&gt;&lt;br /&gt;                &amp;lt;tbody&amp;gt;&lt;br /&gt;                &amp;lt;tr valign=&quot;top&quot;&amp;gt;&lt;br /&gt;                    &amp;lt;td&amp;gt;&lt;br /&gt;                        &amp;lt;a wicket:id=&quot;first&quot; href=&quot;&quot;&amp;gt;&lt;br /&gt;                            &amp;lt;span&amp;gt;First&amp;lt;/span&amp;gt;&lt;br /&gt;                        &amp;lt;/a&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td&amp;gt;&lt;br /&gt;                        &amp;lt;a wicket:id=&quot;prev&quot;  href=&quot;&quot;&amp;gt;&lt;br /&gt;                            &amp;lt;span&amp;gt;Previous&amp;lt;/span&amp;gt;&lt;br /&gt;                        &amp;lt;/a&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td wicket:id=&quot;navigation&quot;&amp;gt;&lt;br /&gt;                        &amp;lt;a wicket:id=&quot;pageLink&quot;&amp;gt;&amp;lt;span&lt;br /&gt;                                wicket:id=&quot;pageNumber&quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;                    &amp;lt;td&amp;gt;&lt;br /&gt;                        &amp;lt;a wicket:id=&quot;next&quot; href=&quot;#&quot;&amp;gt;&lt;br /&gt;                            &amp;lt;span&amp;gt;Next&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td&amp;gt;&lt;br /&gt;                        &amp;lt;a wicket:id=&quot;last&quot; href=&quot;#&quot;&amp;gt;&lt;br /&gt;                            &amp;lt;span&amp;gt;Last&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;/tr&amp;gt;&lt;br /&gt;                &amp;lt;/tbody&amp;gt;&lt;br /&gt;            &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/wicket:panel&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Usage of the component&lt;/h3&gt;Our newly created component can be used in a very similar way to the standard Wicket PagingNavigator:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;&lt;br /&gt;public class DataViewPanel extends Panel {&lt;br /&gt; &lt;br /&gt; public DataViewPanel(String id) {&lt;br /&gt;  super(id);&lt;br /&gt;  DataView dataView = new DataView(&quot;dataView&quot;, new CustomDataProvider());&lt;br /&gt;  dataView.setItemsPerPage(5);&lt;br /&gt;  add(dataView);&lt;br /&gt;&lt;br /&gt;  CustomPagingNavigator customPagingNavigator = new CustomPagingNavigator(&quot;paginator&quot;, dataView);&lt;br /&gt;  add(customPagingNavigator);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;</description><link>http://codehardgopro.blogspot.com/2010/12/custom-pagingnavigator-with-changing.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-7968959143472155072</guid><pubDate>Sun, 19 Dec 2010 22:18:00 +0000</pubDate><atom:updated>2010-12-19T23:22:39.648+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">english</category><category domain="http://www.blogger.com/atom/ns#">offtopic</category><title>What would you do if your boss give you one week for self-education?</title><description>Let’s suppose following scenario:&lt;br /&gt;&lt;br /&gt;You are somewhat experienced Java Developer working on a very sophisticated project in the science sector. You create very, very complicated module using very, very time-consuming algorithm which can not be multithreaded. And when you are ready, tests with small data portions went fine, your boss comes to your desk and clicks big, red button on your monitor to proudly start the whole process. Of course nothing bad happens, you just can observe growing CPU and memory usage. Your team expect that those calculation will take about one week to finish and give you results which are indispensable for you next tasks. It’s JIRA blocker status and until it finishes, you had nothing to do. Your boss asks you to visit him in his room and sais:&lt;br /&gt;&lt;br /&gt;- Tom, you did a great job with this module. Everything seems to run smoothly and I can not wait to see the results! We must wait one week and it’s a spare time which &lt;span style=&quot;font-weight:bold;&quot;&gt;I would like you to use for you self-education and self-development&lt;/span&gt;. What you are going to do and learn?&lt;br /&gt;&lt;br /&gt;Of course we don’t know whether this boss is going to pay Tom for this time or not :) But it’s not the case. Tom now has a problem: 40 hours of free time which he can spend on any technology/methodology/language/etc he wants to learn and this opportunity comes to him so unexpectedly that he can not make up his mind.&lt;br /&gt;&lt;br /&gt;Please help him! What would &lt;span style=&quot;font-weight:bold;&quot;&gt;YOU&lt;/span&gt; do with these &lt;span style=&quot;font-weight:bold;&quot;&gt;40 hours&lt;/span&gt;? :) &lt;br /&gt;&lt;br /&gt;PS: As I am migrating my blog to my own domain, a few posts in the future will be published in both places to allow You, reader, to change address and rss smoothly :)&lt;br /&gt;&lt;br /&gt;New blog address: &lt;a href=&quot;http://tomaszdziurko.pl&quot;&gt;http://tomaszdziurko.pl&lt;/a&gt; &lt;br /&gt;New RSS link: &lt;a href=&quot;http://www.tomaszdziurko.pl/feed&quot;&gt;http://www.tomaszdziurko.pl/feed&lt;/a&gt;</description><link>http://codehardgopro.blogspot.com/2010/12/what-would-you-do-if-your-boss-give-you.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-7802234621808640422</guid><pubDate>Thu, 16 Dec 2010 20:44:00 +0000</pubDate><atom:updated>2010-12-17T08:25:32.262+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">offtopic</category><title>Zmiana silnika bloga i przenosiny na własną domenę</title><description>Drodzy czytelnicy.&lt;br /&gt;&lt;br /&gt;Zdecydowałem się przenieść bloga na silnik Wordpressa, który daje dużo większe możliwości i znacznie większą elastyczność w dostosowaniu strony do moich wymagań. A skoro powiedziałem A to trzeba było powiedzieć i B, więc blog w nowej postaci jest dostępny na mojej własnej, brandowanej moim nazwiskiem domenie :)&lt;br /&gt;&lt;br /&gt;Zapraszam serdecznie do odwiedzania bloga pod nowym adresem &lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a href=&quot;http://tomaszdziurko.pl&quot;&gt;http://tomaszdziurko.pl&lt;/a&gt;&lt;/span&gt;, a korzystających z RSS&#39;ów proszę o przepięcie się na &lt;a href=&quot;http://tomaszdziurko.pl/feed/&quot;&gt;http://www.tomaszdziurko.pl/feed&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Oczywiście będę wdzięczny za wszelkie uwagi odnośnie wyglądu i działania nowego bloga.&lt;br /&gt;&lt;br /&gt;Do zobaczenia w nowej lokalizacji :)</description><link>http://codehardgopro.blogspot.com/2010/12/zmiana-adresu-bloga-i-przenosiny-na.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-5756582067457399562</guid><pubDate>Tue, 19 Oct 2010 10:07:00 +0000</pubDate><atom:updated>2010-10-24T15:51:36.134+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">english</category><category domain="http://www.blogger.com/atom/ns#">Java Developers&#39; Day</category><title>Slides from JDD 2010 available</title><description>This post has been moved to my new blog and can be found at &lt;a href=&quot;http://tomaszdziurko.pl/2010/10/slides-from-jdd-2010-available/&quot;&gt;here&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/10/slides-from-jdd-2010-available.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-3931077354518326304</guid><pubDate>Sun, 10 Oct 2010 08:52:00 +0000</pubDate><atom:updated>2010-10-24T15:52:33.555+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conferences</category><category domain="http://www.blogger.com/atom/ns#">Java Developers&#39; Day</category><title>JDD 2010 from my perspective</title><description>This post has been moved to my new blog and can be found at &lt;a href=&quot;http://tomaszdziurko.pl/2010/10/jdd-2010-from-my-perspective/&quot;&gt;here&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/10/jdd-2010-from-my-perspective.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-1635476037503196581</guid><pubDate>Sat, 02 Oct 2010 10:38:00 +0000</pubDate><atom:updated>2010-10-02T12:57:46.087+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">krótkie</category><category domain="http://www.blogger.com/atom/ns#">książki</category><title>Anglojęzyczne książki z darmową przesyłką, repost</title><description>Ostatnio podczas dyskusji na GoldenLine na temat pogłębiania wiedzy z książek anglojęzycznych w kontekście ebooków oraz kosztów wysyłki z Amazon.com pojawiło się pytanie o polecane sklepy. Okazało się, że nie wszyscy wiedzą, że istnieje księgarnia, która wysyła książki anglojęzyczne za darmo również do Polski.&lt;br /&gt;Księgarnia nazywa się &lt;a href=&quot;http://www.bookdepository.co.uk/&quot;&gt;The Book Depository&lt;/a&gt;, a osobą, dzięki której się o niej dowiedziałem jest &lt;a href=&quot;http://www.margiel.eu/&quot;&gt;Michała Margiel&lt;/a&gt; (dzięki!), który napisał &lt;a href=&quot;http://groups.google.pl/group/warszawa-jug/browse_thread/thread/c7f393dbc9f6b449/e2012f715b167428?q=#e2012f715b167428&quot;&gt;tego&lt;/a&gt; posta na forum dyskusyjnym warszawskiego JUG-a. Ale ponieważ nie wszyscy czytają na bieżąco dyskusje na JUG-ach, a wiedza o tej księgarni może okazać się dla wielu osób przydatna, robię repost.</description><link>http://codehardgopro.blogspot.com/2010/10/anglojezyczne-ksiazki-z-darmowa.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-8690120005184479133</guid><pubDate>Wed, 29 Sep 2010 06:26:00 +0000</pubDate><atom:updated>2010-09-29T08:57:48.932+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Atlassian</category><category domain="http://www.blogger.com/atom/ns#">Bitbucket</category><category domain="http://www.blogger.com/atom/ns#">Mercurial</category><title>Lepsze darmowe repozytorium Mercuriala za darmo, czyli Bitbucket łączy się z Atlassian</title><description>Dotychczas dla osób chcących używać Mercuriala do prywatnych projektów oraz w niewielkich zespołach programistycznych spory problem stanowiło znalezienie dobrego darmowego miejsca na hostowanie kodu źródłowego. &lt;a href=&quot;http://bitbucket.org/&quot;&gt;Bitbucket&lt;/a&gt;, jeden z najciekawszych serwisów tego typu, oferujący w dodatku bardzo przejrzysty interfejs webowy miał ograniczenie na 1 prywatny projekt. Pozostałe musiały być niestety publiczne. I gdy już planowałem na weekend przenoszenie kodu na &lt;a href=&quot;https://www.dropbox.com/home&quot;&gt;Dropboxa&lt;/a&gt;, tak jak jest to opisane w &lt;a href=&quot;http://www.h4ck3r.net/2010/05/11/mercurial-hg-with-dropbox/&quot;&gt;tym poście&lt;/a&gt;, dzisiaj rano dostałem na skrzynkę informację o połączeniu BitBucketa z &lt;a href=&quot;http://www.atlassian.com/&quot;&gt;Atlassian&lt;/a&gt;. Nie byłoby w tym nic ciekawego, ot jedna firma została wchłonięta przez drugą, gdyby nie fakt, że z tej okazji Bitbucket zmienił możliwości darmowego konta.&lt;br /&gt;&lt;br /&gt;Otóż od dzisiaj za darmo mamy nieograniczoną liczbę prywatnych i publicznych repozytoriów o nieograniczonym rozmiarze. Jedynym limitem jest możliwość udostępnienia każdego projektu maksymalnie pięciu osobom, wliczając nas, właścicieli, ale dla małych projektów i naszych prywatnych zbiorów to nie jest uciążliwe ograniczenie. Dodatkowo do 3 października można wybrać abonament z limitem do 10 użytkowników, który przez dwanaście miesięcy będzie również za darmo. Dobre rozwiązanie dla osób, które planują w najbliższym czasie jakiś większy projekt :)&lt;br /&gt;&lt;br /&gt;Więcej o promocji i samym połączeniu można przeczytać &lt;a href=&quot;http://blog.bitbucket.org/2010/09/29/bitbucket-joins-atlassian/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/09/lepsze-darmowe-repozytorium-mercuriala.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-8829841365105448983</guid><pubDate>Mon, 20 Sep 2010 19:23:00 +0000</pubDate><atom:updated>2010-09-20T21:33:15.966+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">offtopic</category><title>Pana Fowlera niemiłe wspomnienia z Polski</title><description>Przeglądając dzisiaj mojego RSS-a natrafiłem na &lt;a href=&quot;http://www.chadfowler.com/2010/9/10/23-travel-tips-to-make-long-trips-more-enjoyable&quot;&gt;post Chada Fowlera&lt;/a&gt;, autora między innymi książki &lt;a href=&quot;http://www.pragprog.com/titles/cfcar2/the-passionate-programmer/&quot;&gt;&quot;The Passionate Programmer&quot;&lt;/a&gt;.  Pan Fowler zbiera w nim kilkanaście porad jak dobrze przygotować się do podróży, aby uniknąć niemiłych niespodzianek. W całym poście nie byłoby nic specjalnego i wartego wspomnienia, gdyby nie to, że w jednej z tych porad możemy przeczytać:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Always keep a spare set of clothes in your carry-on luggage if you’re checking bags. I don’t do this one, but I should. I spent several days freezing in the winter in Poland a couple of years ago because not only did I not have extra clothes in my carry-on but I checked my coat to avoid having to lug it around on the flights. Big mistake. Polish Air lost my suitcase and didn’t get it to me until nearly the end of the trip.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;:-)</description><link>http://codehardgopro.blogspot.com/2010/09/pana-fowlera-niemie-wspomnienia-z.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-7283799648241111856</guid><pubDate>Sun, 19 Sep 2010 15:30:00 +0000</pubDate><atom:updated>2010-09-19T17:48:01.986+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">how-to</category><category domain="http://www.blogger.com/atom/ns#">Mercurial</category><title>Mercurial - garść linków dla poznających to narzędzie</title><description>Garść linków, publikacji i porad dla osób, które, jak ja w tej chwili, będą wdrażały się w używanie &lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercuriala&lt;/a&gt;, czyli trochę innego narzędzia do zarządzania kodem niż najpopularniejsze CVS czy SVN.&lt;br /&gt;&lt;br /&gt;1. &lt;a href=&quot;http://hginit.com/top/&quot;&gt;http://hginit.com/top/&lt;/a&gt; - Krótki, ale bardzo treściwy i napisany fajnym językiem tutorial autorstwa Joela Spolskyego, &lt;a href=&quot;http://www.joelonsoftware.com/&quot;&gt;tego&lt;/a&gt; Joela :) Warto od niego zacząć, jeśli chcemy szybko rozpocząć zabawę z Mercurialem.&lt;br /&gt;2. &lt;a href=&quot;http://tortoisehg.bitbucket.org/&quot;&gt;TortoiseHg&lt;/a&gt; - znana aplikacja do pracy z SVN/CVS w wersji dla Mercuriala&lt;br /&gt;3. &lt;a href=&quot;http://www.h4ck3r.net/2010/05/11/mercurial-hg-with-dropbox/&quot;&gt;Zdalne repozytorium za darmo z użyciem serwisu Dropbox&lt;/a&gt; - Tutorial opisujący jak można połączyć Mercuriala z &lt;a href=&quot;https://www.dropbox.com/home&quot;&gt;Dropbox&lt;/a&gt; i mieć automatycznie backupujące się repozytorium za darmo.&lt;br /&gt;4. &lt;a href=&quot;http://javaforge.com/project/HGE&quot;&gt;MercurialEclipse&lt;/a&gt; - Wtyczka do Eclipse umożliwiająca pracę z Mercurialem bezpośrednio z tego IDE.&lt;br /&gt;5. &lt;a href=&quot;http://hgbook.red-bean.com/&quot;&gt;Mercurial - the Definitive Guide&lt;/a&gt; - Książka dokładnie opisująca Mercuriala&lt;br /&gt;6. &lt;a href=&quot;http://www.jemander.se/MercurialByExample.pdf&quot;&gt;Mercurial by Example (PDF)&lt;/a&gt; - Mini publikacja prezentująca sposób korzystania z Mercuriala na przykładach.&lt;br /&gt;7. &lt;a href=&quot;http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/&quot;&gt;Branch i merge w Mercurial&lt;/a&gt; - Poradnik jak tworzyć nowe gałęzie i potem je łączyć, żeby wszystko szło gładko.&lt;br /&gt;&lt;br /&gt;A zawsze najbardziej aktualną listę publikacji i tutoriali można znaleźć na stronie Wiki projektu - &lt;a href=&quot;http://mercurial.selenic.com/wiki&quot;&gt;http://mercurial.selenic.com/wiki&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/09/mercurial-garsc-linkow-dla-poznajacych.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-4525155042589104352</guid><pubDate>Sun, 22 Aug 2010 18:23:00 +0000</pubDate><atom:updated>2010-11-01T20:42:18.411+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">english</category><category domain="http://www.blogger.com/atom/ns#">JMeter</category><title>Submitting SSL and no-SSL html forms using JMeter</title><description>This post has been moved to my new blog and can be found at &lt;a href=&quot;http://tomaszdziurko.pl/2010/08/submitting-ssl-and-no-ssl-html-forms-using-jmeter/&quot;&gt;here&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/08/submitting-ssl-and-no-ssl-html-forms.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-4714960517703467960</guid><pubDate>Fri, 20 Aug 2010 07:48:00 +0000</pubDate><atom:updated>2010-11-01T20:31:21.118+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">książki</category><category domain="http://www.blogger.com/atom/ns#">offtopic</category><title>Książka Czysty kod (Clean code) w promocji o 30% taniej tylko dziś w Helionie</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/08/ksiazka-czysty-kod-clean-code-w-promocji-o-30-taniej-tylko-dzis-w-helionie/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/08/ksiazka-czysty-kod-clean-code-w.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-689660793151289946</guid><pubDate>Thu, 15 Jul 2010 17:39:00 +0000</pubDate><atom:updated>2010-11-01T20:30:28.643+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">firma</category><category domain="http://www.blogger.com/atom/ns#">Programatico</category><title>Programista i własna firma, czyli dotacja z Urzędu Pracy na założenie działalności gospodarczej</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/07/programista-i-wlasna-firma-czyli-dotacja-z-urzedu-pracy-na-zalozenie-dzialalnosci-gospodarczej/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/07/programista-i-wasna-firma-czyli-dotacja.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>11</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-3187114672505221412</guid><pubDate>Mon, 28 Jun 2010 14:06:00 +0000</pubDate><atom:updated>2010-11-01T20:41:48.996+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DBCP</category><category domain="http://www.blogger.com/atom/ns#">english</category><category domain="http://www.blogger.com/atom/ns#">JDBC</category><category domain="http://www.blogger.com/atom/ns#">Spring</category><title>Solving com.mysql.jdbc.exceptions.jdbc4.CommunicationsException in Spring JDBC based application</title><description>This post has been moved to my new blog and can be found at &lt;a href=&quot;http://tomaszdziurko.pl/2010/06/solving-com-mysql-jdbc-exceptions-jdbc4-communicationsexception-in-spring-jdbc-based-application/ossl_html_forms_using_jmeter.html&quot;&gt;here&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/06/solving-commysqljdbcexceptionsjdbc4comm.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-5625338175253753976</guid><pubDate>Tue, 15 Jun 2010 09:00:00 +0000</pubDate><atom:updated>2010-11-03T18:08:44.958+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">wicket</category><title>Szybka informacja o błędzie w aplikacjach napisanych w Wicket</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/06/simple-notification-about-errors-in-wicket-based-application/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/06/szybka-informacja-o-bedzie-w.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-4061355664737438679</guid><pubDate>Wed, 05 May 2010 09:36:00 +0000</pubDate><atom:updated>2010-11-02T09:24:33.982+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SDJ</category><title>Od teraz Software Developers&#39; Journal za darmo i w formacie pdf</title><description>Ten post został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/05/od-teraz-software-developers-journal-za-darmo-i-w-formacie-pdf/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/05/od-teraz-software-developers-journal-za.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-9172839840087574742</guid><pubDate>Tue, 27 Apr 2010 09:39:00 +0000</pubDate><atom:updated>2010-12-16T21:29:49.787+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">offtopic</category><title>Gdzie Java nie tylko w polskiej trawie piszczy?</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/04/where-we-can-find-java-under-the-hood/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/04/gdzie-java-nie-tylko-w-polskiej-trawie.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-934072776483793835</guid><pubDate>Fri, 23 Apr 2010 18:50:00 +0000</pubDate><atom:updated>2010-11-04T21:19:19.732+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">Mockito</category><category domain="http://www.blogger.com/atom/ns#">NetBeans</category><category domain="http://www.blogger.com/atom/ns#">TDD</category><title>Moje pierwsze TDD, czyli dlaczego NetBeans wymięka</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/04/my-first-tdd-or-why-netbeans-sucks//&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/04/moje-pierwsze-tdd-czyli-dlaczego.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-6745772608404682920</guid><pubDate>Fri, 23 Apr 2010 08:09:00 +0000</pubDate><atom:updated>2010-11-04T21:24:06.840+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">offtopic</category><title>Światowy Dzień Książki i promocja Helionu</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/04/swiatowy-dzien-ksiazki-i-promocja-helionu/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/04/swiatowy-dzien-ksiazki-i-promocja.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-4725448021559651659</guid><pubDate>Fri, 09 Apr 2010 17:05:00 +0000</pubDate><atom:updated>2010-11-08T21:03:48.990+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">offtopic</category><title>SCJP to certyfikowany programista Java, a SCJD?</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/04/scjp-to-certyfikowany-programista-java-a-scjd/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/04/scjp-to-certyfikowany-programista-java.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-8339637111768030450</guid><pubDate>Sun, 28 Mar 2010 13:14:00 +0000</pubDate><atom:updated>2010-11-08T21:13:58.241+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">konferencje</category><title>Konferencja z koziołkami w tle, czyli 4Developers w Poznaniu</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/03/konferencja-z-koziolkami-w-tle-czyli-4developers-w-poznaniu/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/03/konferencja-z-koziokami-w-tle-czyli.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-573620643926941632</guid><pubDate>Thu, 18 Mar 2010 07:00:00 +0000</pubDate><atom:updated>2010-11-09T07:54:43.069+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">książki</category><title>Clean Code po polsku już jest</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/03/clean-code-po-polsku-juz-jest/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/03/clean-code-po-polsku-juz-jest.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-1820804805539025307</guid><pubDate>Sun, 14 Feb 2010 21:20:00 +0000</pubDate><atom:updated>2010-11-08T22:26:35.596+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">how-to</category><category domain="http://www.blogger.com/atom/ns#">wicket</category><title>Wicket  - przydatne materiały</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/02/wicket-useful-links/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/02/wicket-przydatne-materiay.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-7676573056880984012</guid><pubDate>Tue, 09 Feb 2010 11:25:00 +0000</pubDate><atom:updated>2010-11-05T09:54:53.364+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">english</category><category domain="http://www.blogger.com/atom/ns#">how-to</category><category domain="http://www.blogger.com/atom/ns#">wicket</category><title>Wicket Ajax Modal &#39;Are you sure?&#39; window</title><description>This post has been moved to my new blog and can be found at &lt;a href=&quot;http://tomaszdziurko.pl/2010/11/wicket-ajax-modal-are-you-sure-window/&quot;&gt;here&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/02/wicket-ajax-modal-are-you-sure-window.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-7816233293063648382</guid><pubDate>Tue, 02 Feb 2010 15:43:00 +0000</pubDate><atom:updated>2010-02-08T11:56:16.415+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">kenai</category><category domain="http://www.blogger.com/atom/ns#">oracle</category><category domain="http://www.blogger.com/atom/ns#">sun</category><title>[Updated] Oracle zamyka Kenai i koncentruje się na java.net</title><description>&lt;blockquote&gt;It&#39;s with a sad heart that we have to announce that the Kenai.com domain will be shutdown as part of the consolidation of project hosting sites now that Sun is a wholly owned subsidiary of Oracle.&lt;/blockquote&gt;Tak zaczyna się e-mail, który dostałem przed chwilą jako jeden z wielu osób, które trzymają swoje projekty na serwerach &lt;a href=&quot;http://kenai.com/&quot;&gt;Kenai&lt;/a&gt;. Jak widać po wydaniu sporej kasy na fuzję (pewnie także i premie dla zarządu Sun&#39;a za zaklepanie umowy :) ) przyszedł czas na optymalizację kosztów i przedsięwzięcia, które generują tylko straty będą stopniowo zamykane.&lt;br /&gt;
Wygląda na to, że osoby, które w związku z przejęciem przez Oracle wyrażały swój niepokój o przyszłość platformy Java i wszystkich projektów Sun&#39;a miały trochę racji i przyszłość nie będzie rysowała się wyłącznie w jasnych barwach.&lt;br /&gt;
Koniec Kenai można przeboleć, bo jednak to dość niszowy projekt, ale mam nadzieję, że najbardziej popularne i przydatne produkty Suna nie zostaną wycofane, bo komuś na górze w sprawozdaniach finansowych przestaną się zgadzać cyferki po prawej i lewej stronie.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[Update]&lt;/b&gt;&lt;br /&gt;
Okazało się, że sytuacja nie jest taka zła jak mogło się wydawać po pierwszym komunikacie Oracle&#39;a na temat przyszłości projektu Kenai. Nowi właściciele Sun&#39;a ujawnili, co mieli na myśli pisząc wcześniej o zamknięciu tego projektu.&lt;br /&gt;
&lt;br /&gt;
Otóż (całość &lt;a href=&quot;http://blogs.sun.com/projectkenai/entry/the_future_of_kenai_com&quot;&gt;tutaj&lt;/a&gt;):&lt;br /&gt;
&lt;blockquote&gt;Our plan is to shut down kenai.com and focus our efforts on java.net as the hosted development community. We are in the process of migrating java.net to the kenai technology&lt;/blockquote&gt;&lt;br /&gt;
Nie miałem wcześniej styczności z java.net, ale po zamknięciu Kenai trzeba będzie pomyśleć nad miejscem, gdzie można za free trzymać bezpiecznie swoje małe projekty.</description><link>http://codehardgopro.blogspot.com/2010/02/oracle-zamyka-kenai.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6716639114580525780.post-579419584350673850</guid><pubDate>Sat, 23 Jan 2010 10:20:00 +0000</pubDate><atom:updated>2010-11-09T08:11:23.601+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SCWCD</category><title>Spóźnione SCWCD wreszcie jest</title><description>Ten postał został przeniesiony na mojego nowego bloga i można go znaleźć &lt;a href=&quot;http://tomaszdziurko.pl/2010/01/finally-my-scwcd-mission-completed/&quot;&gt;tutaj&lt;/a&gt;.</description><link>http://codehardgopro.blogspot.com/2010/01/spoznione-scwcd-wreszcie-jest.html</link><author>noreply@blogger.com (Tomasz Dziurko)</author><thr:total>9</thr:total></item></channel></rss>