<?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-1694019977296749526</id><updated>2011-12-02T11:10:40.705+01:00</updated><category term='lguest'/><category term='flash'/><category term='udp'/><category term='&quot;Inversion of Control&quot;'/><category term='postgres'/><category term='Java NIO'/><category term='FAQ'/><category term='Desktop'/><category term='tools'/><category term='ajaxmp'/><category term='news'/><category term='bug'/><category term='cool tool'/><category term='isoinfo'/><category term='java web frameworks'/><category term='maven'/><category term='Linux STandard Base'/><category term='conversion'/><category term='hosting'/><category term='selenium'/><category term='privacy'/><category term='Windows'/><category term='NAS'/><category term='applet'/><category term='add-on'/><category term='time management'/><category term='service'/><category term='quality management'/><category term='IBM FileNet'/><category term='Read copy update'/><category term='API change'/><category term='quick testing'/><category term='pixma ip1700'/><category term='Spanning Tree Protocol'/><category term='runlevel'/><category term='powershell'/><category term='git'/><category term='configuration'/><category term='kernel programming'/><category term='printer'/><category term='extension'/><category term='icybox'/><category term='spam'/><category term='rails'/><category term='JAXB'/><category term='Translation lookaside buffer'/><category term='UIMA'/><category term='LSB'/><category term='SwingUtilities'/><category term='makefile'/><category term='jta'/><category term='unicode'/><category term='busybox'/><category term='IBM lotus notes'/><category term='atftpd'/><category term='crisp'/><category term='code generation'/><category term='scripting'/><category term='facebook'/><category term='SCM'/><category term='TLB'/><category term='system'/><category term='java'/><category term='return of J'/><category term='Subversion'/><category term='fedora 11'/><category term='intro'/><category term='information'/><category term='move ext3'/><category term='Gnome'/><category term='aspect'/><category term='Versioning'/><category term='dojo'/><category term='problems'/><category term='build'/><category term='groovy'/><category term='newgrp'/><category term='java frameworks'/><category term='User Mode Linux (UML)'/><category term='ubuntu'/><category term='j2ee'/><category term='blogging'/><category term='AOP aspectJ &quot;aspect oriented&quot;'/><category term='faad'/><category term='google'/><category term='ruby'/><category term='qwt'/><category term='AOP'/><category term='virtualization'/><category term='mail'/><category term='introduction'/><category term='StAX'/><category term='enterprise know how'/><category term='scrapbook'/><category term='livna'/><category term='model combination'/><category term='.Net'/><category term='Martin Fowler'/><category term='project management tools'/><category term='tomcat'/><category term='wine'/><category term='interesting web site'/><category term='software issues'/><category term='Parallel processing'/><category term='data sources'/><category term='init.d scripts'/><category term='config files'/><category term='decision making'/><category term='Scala'/><category term='gradle'/><category term='content-type'/><category term='test driven development'/><category term='&quot;O/R Mapping&quot;'/><category term='messagebus'/><category term='repository'/><category term='standard  libraries'/><category term='driver'/><category term='prototype.js'/><category term='Weka'/><category term='Code Kata'/><category term='boot'/><category term='software skills'/><category term='haldaemon'/><category term='howto'/><category term='zen coding'/><category term='strategies'/><category term='music'/><category term='modules'/><category term='automated'/><category term='NUMA'/><category term='question'/><category term='JDBC'/><category term='databases'/><category term='jquery'/><category term='clone'/><category term='oprofile'/><category term='jquery plugins'/><category term='file systems'/><category term='KDD'/><category term='kernel'/><category term='Creational patterns'/><category term='libxcb'/><category term='myllyn'/><category term='linux tools'/><category term='problem'/><category term='install'/><category term='mocks'/><category term='computer basics'/><category term='installation'/><category term='urlrewrite'/><category term='documentation'/><category term='memory management'/><category term='Visualisation'/><category term='chkconfig'/><category term='C'/><category term='autotest'/><category term='RAID'/><category term='Hibernate'/><category term='firebug'/><category term='wtf'/><category term='maintainers'/><category term='LWN'/><category term='patches'/><category term='apache tika'/><category term='firefox'/><category term='Buffers'/><category term='test'/><category term='RAP'/><category term='smart gwt'/><category term='PXE'/><category term='Network toplogies'/><category term='software engineering'/><category term='shortcuts'/><category term='top'/><category term='alsa'/><category term='firmware'/><category term='performance'/><category term='Mono'/><category term='libstdc++.so.5'/><category term='eclipse'/><category term='Linux Networking'/><category term='qmail'/><category term='Ideas'/><category term='NetworkManager'/><category term='recordmydesktop'/><category term='MPI'/><category term='lame'/><category term='software patent'/><category term='inc'/><category term='/dev/null'/><category term='CRM'/><category term='httpd'/><category term='java language component'/><category term='XML'/><category term='workqueue API'/><category term='links'/><category term='flex'/><category term='bisection'/><category term='awt'/><category term='axiom'/><category term='pair programming'/><category term='rule'/><category term='m4a'/><category term='tutorials'/><category term='JMX'/><category term='persistence'/><category term='&quot;Knowledge Discovery&quot;'/><category term='html'/><category term='easyb'/><category term='errors'/><category term='personal projects'/><category term='agile methods'/><category term='testing'/><category term='customer orientation'/><category term='webapps'/><category term='structural design patterns'/><category term='invokeLater'/><category term='locking'/><category term='screencast'/><category term='UNIX'/><category term='qooxdoo'/><category term='wiki'/><category term='GWT'/><category term='roo'/><category term='javascript'/><category term='useful'/><category term='rpmfusion'/><category term='AJAX'/><category term='fedora'/><category term='ketchup'/><category term='dojo toolkit'/><category term='user model linux'/><category term='rpm'/><category term='C++'/><category term='ext.js'/><category term='transactions'/><category term='python'/><category term='rapid development'/><category term='cut'/><category term='mpd'/><category term='linux kernel'/><category term='MBeans'/><category term='javascript framework'/><category term='JUnit'/><category term='Spring'/><category term='mockito'/><category term='Design Patterns'/><category term='apache'/><category term='linux'/><category term='processors'/><category term='snippet'/><category term='JBoss'/><category term='commandline'/><category term='OSGi'/><category term='Versions'/><category term='table of content'/><category term='tool'/><category term='php'/><category term='diskless install'/><category term='programming'/><category term='tutorial'/><category term='&quot;phillips cdrom&quot;'/><category term='jsp'/><category term='Behavioral Patterns'/><category term='syntax highlighting'/><category term='monitoring'/><category term='Caching'/><category term='SMP'/><category term='book'/><category term='C#'/><category term='broadcast'/><category term='namei'/><category term='Remoting'/><category term='learning strategies'/><category term='antipatterns'/><category term='compiling'/><category term='&quot;Data Mining&quot;'/><category term='FishEye'/><title type='text'>Des Profundis...</title><subtitle type='html'>A personal technical blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default?start-index=101&amp;max-results=100'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>170</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7927163700343562140</id><published>2011-11-03T20:35:00.001+01:00</published><updated>2011-11-03T20:37:03.761+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Windows Power Shell</title><content type='html'>&lt;p&gt;As a linux user, I had always been frustrated that I must use a stupid command line to perform  some task under windows. Or even worse, there were a lot of tasks I could even perform like that, because the commandline did not have any grep, find, and similar utilities.&lt;/p&gt;&lt;p&gt;This is until I discovered the powershell. Since I have to use windows at work and sometimes I do not even have the possibilty to use cygwin with suitable tools. I really got frustrated. But now that I looked into many of the power shell language, I must admit that it is quite impressive, what one can do with it. I also find it great that the powershell  understands both pipes and objects...&lt;/p&gt;&lt;p&gt;I will probably add here many of the useful features I discovered. In someway I think Microsoft understood that they had to become more competitive in order to keep their customers.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7927163700343562140?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7927163700343562140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7927163700343562140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7927163700343562140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7927163700343562140'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2011/11/windows-power-shell.html' title='Windows Power Shell'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7866834609047325078</id><published>2011-11-03T20:28:00.001+01:00</published><updated>2011-11-03T20:28:18.330+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><category scheme='http://www.blogger.com/atom/ns#' term='smart gwt'/><title type='text'>GWT, SmartGWT and Testing</title><content type='html'>&lt;p&gt;Automated testing is very useful, and would be even more useful, if it was much more easy. It seems though that the testing frameworks for web application as still not yet part of the tool box of web application developpers.&lt;/p&gt;&lt;p&gt;I hope this will help me to implement automated testing of web application.&lt;/p&gt;&lt;p&gt;I did some research on testing of GWT. It seems that it is possible to use selenium for GWT and for smart gwt. I must really get to this quickly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7866834609047325078?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7866834609047325078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7866834609047325078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7866834609047325078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7866834609047325078'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2011/11/gwt-smartgwt-and-testing.html' title='GWT, SmartGWT and Testing'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1041173575990975914</id><published>2011-11-03T20:27:00.000+01:00</published><updated>2011-11-03T20:27:02.336+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='crisp'/><title type='text'>CRISP Builds</title><content type='html'>&lt;p&gt;For build architectures, it is useful to use a CRISP build:&lt;/P&gt;&lt;ul&gt;&lt;li&gt; Complete (recipe lists all ingredients)&lt;/li&gt;
&lt;li&gt; Repeatable (version control time machine)&lt;/li&gt;
&lt;li&gt; Informative (radiate valuable information)&lt;/li&gt;
&lt;li&gt; Schedulable (complete and repeatable)&lt;/li&gt;
&lt;li&gt; Portable (machine-independent)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In the latest project for which I worked we use a continuous integration system. &lt;br /&gt;
At some point, it can be annoying because we do receive a lot of uninteresting mails. &lt;br /&gt;
But once configured it is really good to insure quality and reproducable results.&lt;/p&gt;&lt;p&gt;As a developer, I know how easy it is to deploy something on the server, &lt;br /&gt;
which is not exactly what is on the server.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1041173575990975914?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1041173575990975914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1041173575990975914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1041173575990975914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1041173575990975914'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2011/11/crisp-builds.html' title='CRISP Builds'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-9138384450151418816</id><published>2011-11-03T20:23:00.002+01:00</published><updated>2011-11-03T20:23:16.942+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Performance in Java</title><content type='html'>&lt;p&gt;For diverse purposes I wanted to take a look at performance benchmarks for diverse implementations of collections.&lt;/p&gt;&lt;p&gt;I came to the following free book: &lt;a href="http://java.sun.com/docs/books/performance/"&gt;Java Performace Book&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Moreover, for a project for which I am working we will be do performance measures in order to choose the best infrastructure&lt;br /&gt;
for our project. We will do some profiling using JETM or using JProfiler depending on which gives the best infrastructure for our goal.&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-9138384450151418816?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/9138384450151418816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=9138384450151418816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/9138384450151418816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/9138384450151418816'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2011/11/performance-in-java.html' title='Performance in Java'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6504598782618373882</id><published>2011-03-04T00:14:00.008+01:00</published><updated>2011-03-04T00:29:48.839+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><title type='text'>Code Generation</title><content type='html'>&lt;p&gt;Since my last project, I gained much interest in code generation. The application we were supposed to reimplement using GWT consisted of around 60 entities and had as many dialogs to be implemented. Moreover, the database schema we had was in german. Since we did not want our code to be a mix of English and German, we needed to create a lot of typical classes for this: entities, DAOs, business logic, service layer, controller as well as more or less straight forward dialogs.&lt;/p&gt;
&lt;p&gt;Since I did not have any of my usual tools, I decided to create my own generator, which could generate simple (still to be edited!!!) versions of the diverse classes we needed. This went quite well except that I needed to write java code to perform these actions. So the first generation was somewhat of a procedural code generator. This was a tedious task which made it quite difficult to maintain the code in the always evolvin software infrastructure we had.&lt;/p&gt;
&lt;p&gt;A more useful approach is template generation. However for templates to be adapted for such a task you need a template language capable of looping over fields and methods of the code model.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6504598782618373882?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6504598782618373882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6504598782618373882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6504598782618373882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6504598782618373882'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2011/03/code-generation.html' title='Code Generation'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1727658568080409346</id><published>2011-03-04T00:07:00.005+01:00</published><updated>2011-03-04T00:13:49.611+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software skills'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Kata'/><title type='text'>Interesting Topics  for Code Katas</title><content type='html'>&lt;p&gt;Since I discovered about Code Katas (?here link me please?), I played with the question as to know which code kata would be appropriate for me. The following is an extensible list of topics which should be covered by these Katas.&lt;/p&gt;

&lt;h3&gt;Code katas:&lt;/h3&gt;
- algorithmic katas&lt;br/&gt;
- architecture patterns&lt;br/&gt;
 + View architecture pattern&lt;br/&gt;
  - MVC (Model view controller)&lt;br/&gt;
  - MVP (Model view presenter)&lt;br/&gt;
 
- Formular Web page&lt;br/&gt;
 + JSF&lt;br/&gt;
 + GWT&lt;br/&gt;
  - MVC&lt;br/&gt;
  - Web Service and Gui library choice&lt;br/&gt;
 + RAP&lt;br/&gt;
 
javacript libraries&lt;br/&gt;
+ jquery&lt;br/&gt;
+ ext.js&lt;br/&gt;
+ dojo&lt;br/&gt;

Jpa and hibernate&lt;br/&gt;
- jpa -&gt; schema&lt;br/&gt;
- schema -&gt; jpa&lt;br/&gt;
- query jpa&lt;br/&gt;
- query plsql&lt;br/&gt;
- query criteria&lt;br/&gt;

Aspects&lt;br/&gt;
- logging&lt;br/&gt;
- security&lt;br/&gt;

Testing&lt;br/&gt;
- Unit Tests&lt;br/&gt;
- GUI Testing&lt;br/&gt;
- test coverage&lt;br/&gt;


Build framework&lt;br/&gt;
- ant&lt;br/&gt;
- maven&lt;br/&gt;
- gradle&lt;br/&gt;

frameworks&lt;br/&gt;
- spring&lt;br/&gt;
 - AOP&lt;br/&gt;
 - MVC&lt;br/&gt;
 - Web Flow&lt;br/&gt;
 - Security&lt;br/&gt;

- hibernate&lt;br/&gt;
- OSGi&lt;br/&gt;
- roo&lt;br/&gt;
- flex&lt;br/&gt;


scm&lt;br/&gt;
- git&lt;br/&gt;
 - server&lt;br/&gt;
- svn&lt;br/&gt;

&lt;p&gt;Please do not pay attention to the formatting this should be improved soon.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1727658568080409346?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1727658568080409346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1727658568080409346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1727658568080409346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1727658568080409346'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2011/03/interesting-topics-for-code-katas.html' title='Interesting Topics  for Code Katas'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6646470121506771655</id><published>2010-09-02T21:17:00.003+02:00</published><updated>2011-03-04T00:30:27.293+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='question'/><category scheme='http://www.blogger.com/atom/ns#' term='repository'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Maven Repository in PHP or Virutal machine for Maven Repository</title><content type='html'>&lt;p&gt;Since I would like to put my software in a maven repository, and since it is difficult to find Java/JSP enabled providers in Europe. I was wondering whether I should not try to reimplement the archiva project directory with PHP or perhaps Ruby.&lt;/p&gt;

&lt;p&gt; After having a look, it does seem quite a lot of dirty work. But it is probably not too complex to perform. But is it worth it ?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6646470121506771655?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6646470121506771655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6646470121506771655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6646470121506771655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6646470121506771655'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/09/maven-repository-in-php-or-virutal.html' title='Maven Repository in PHP or Virutal machine for Maven Repository'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5884872569643256266</id><published>2010-08-30T18:44:00.005+02:00</published><updated>2010-08-30T21:03:37.147+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='information'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>Hosting and Server types</title><content type='html'>&lt;p&gt;I have been searching for diverse information lately on Servers and possible hosting of my own stuff. I found the web page: &lt;a href="http://www.hostsuche.de"&gt;Hotsuche.de&lt;/a&gt;. It is a typical site to look for the currently available offers in the hosting and servers.&lt;/p&gt;
&lt;p&gt;They present the offers according to the following category, and quite extensive search formular to define the kind of offers one might prefer.&lt;p&gt;
&lt;p&gt; I give here a summary of these categories:&lt;ul&gt;&lt;li&gt;domains&lt;/li&gt;&lt;li&gt;Web hosting&lt;/li&gt;&lt;li&gt;dedicated server&lt;/li&gt;&lt;li&gt;server housing&lt;/li&gt;&lt;li&gt;Buy Server&lt;/li&gt;&lt;li&gt;Virtual server&lt;/li&gt; &lt;li&gt;Game server&lt;/li&gt;&lt;li&gt;Internet access&lt;/li&gt;&lt;li&gt;Shops&lt;/li&gt;&lt;li&gt;SSL Certificates&lt;/li&gt; &lt;li&gt;Test accounts&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;I discovered the possibility of server housing, i.e you buy a server and you have some company keep it in its computer center. I have to take a look at the prices. But I suppose that this is not cheaper as using a server from the company. You can also have Game servers or buy servers. This sounds also interesting.&lt;/p&gt;

&lt;p&gt; Where do I get a cheap Java/JSP Server ?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5884872569643256266?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5884872569643256266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5884872569643256266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5884872569643256266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5884872569643256266'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/08/hosting-and-server-types.html' title='Hosting and Server types'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-141692603782310269</id><published>2010-06-10T17:06:00.001+02:00</published><updated>2010-06-10T17:08:29.272+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='commandline'/><title type='text'>ac - user connect time</title><content type='html'>&lt;p&gt;I just discovered a new command that I did not know: ac. It gives the connect times of users.
This may prove useful.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-141692603782310269?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/141692603782310269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=141692603782310269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/141692603782310269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/141692603782310269'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/06/ac-user-connect-time.html' title='ac - user connect time'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-160194181694255975</id><published>2010-06-10T14:45:00.002+02:00</published><updated>2010-06-10T14:48:45.925+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software issues'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise know how'/><title type='text'>Vendor Lock-In</title><content type='html'>&lt;p&gt;Here is an interesting &lt;a href="http://community.zenoss.org/blogs/zenossblog/2010/06/09/three-cloud-lock-in-considerations"&gt;blog entry&lt;/a&gt; on vendor lock-in.&lt;/p&gt;
&lt;p&gt;It lists three types of vendor lock-ins each based on some component of the application: platform, data or tools.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-160194181694255975?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/160194181694255975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=160194181694255975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/160194181694255975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/160194181694255975'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/06/vendor-lock-in.html' title='Vendor Lock-In'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6517558524560004138</id><published>2010-06-10T14:19:00.003+02:00</published><updated>2010-06-10T14:42:07.693+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting web site'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><title type='text'>Postgresql Info Website</title><content type='html'>&lt;p&gt;I just discovered this postgresql info website: &lt;a href="http://www.postgresonline.com/"&gt;http://www.postgresonline.com/&lt;/a&gt;. I guess I will learn quite a lot from this website.&lt;/p&gt;

&lt;p&gt;I learnt that the new version of postgres is nearly out, since the version beta 2 is out. It
should not be long before the 9.0  comes out.&lt;/p&gt;

&lt;p&gt;It might also be good to follow: &lt;a href="http://www.planetpostgresql.org/"&gt;http://www.planetpostgresql.org/&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6517558524560004138?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6517558524560004138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6517558524560004138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6517558524560004138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6517558524560004138'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/06/postgresql-info-website.html' title='Postgresql Info Website'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-865279224384582651</id><published>2010-05-20T18:34:00.002+02:00</published><updated>2010-05-20T18:40:43.655+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software patent'/><title type='text'>Quo Vadis with Software Patent</title><content type='html'>&lt;p&gt;After I read this news, I had to sit:
&lt;a href="http://fosspatents.blogspot.com/2010/04/fatal-patent-ruling-in-germany.html"&gt;German High court ruled in favor of software patents.&lt;/a&gt;. Unfortunately, this is not an April joke. However, the strange thing is that it does seem like there is already a patent for the technology provided, and that even if it should be obvious that the technology described in the patent existed already at the time of the patent submission.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-865279224384582651?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/865279224384582651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=865279224384582651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/865279224384582651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/865279224384582651'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/quo-vadis-with-software-patent.html' title='Quo Vadis with Software Patent'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3234327828705878848</id><published>2010-05-20T10:32:00.004+02:00</published><updated>2010-05-20T10:39:05.849+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><title type='text'>Privacy on Facebook</title><content type='html'>&lt;p&gt;Thanks to a friend, I heard about the site:&lt;a href=" http://www.reclaimprivacy.org"&gt; http://www.reclaimprivacy.org&lt;/a&gt;. It contains certain useful information on privacy settings onf Facebook. For instance, there is an interesting &lt;a href="http://www.nytimes.com/interactive/2010/05/12/business/facebook-privacy.html"&gt;page on the privacy on facebook&lt;/a&gt; (hosted by the New York Times).&lt;/p&gt;

&lt;p&gt;In order to check your own privacy on Facebook, you can follow the instructions on the website:

&lt;blockquote&gt;
&lt;p&gt;This website provides an independent and open tool for scanning your Facebook privacy settings. The source code and its development will always remain open and transparent.&lt;/p&gt;

&lt;p&gt;Note: we are still working on privacy scans for your photos and status updates. The tool does not check these yet, so stay tuned for updates!&lt;/p&gt;

   &lt;ol&gt;&lt;li&gt;1. Drag this link to your web browser bookmarks bar: Scan for Privacy&lt;/li&gt;
   &lt;li&gt;2. Go to your Facebook privacy settings and then click that bookmark once you are on Facebook.&lt;/li&gt;
   &lt;li&gt;3. You will see a series of privacy scans that inspect your privacy settings and warn you about settings that might be unexpectedly public.&lt;/li&gt;
   &lt;li&gt;4. Follow us on Facebook to hear about the latest updates.&lt;/li&gt;&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3234327828705878848?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3234327828705878848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3234327828705878848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3234327828705878848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3234327828705878848'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/privacy-on-facebook.html' title='Privacy on Facebook'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2730298494390352199</id><published>2010-05-10T15:26:00.002+02:00</published><updated>2010-05-10T15:30:09.816+02:00</updated><title type='text'>New Advances in Neural Networks</title><content type='html'>&lt;p&gt;There is a great google talk about recent advances in pattern recognition in Neural Network. It is given by Goeff Hinton. The title of the talk is &lt;a href="http://www.youtube.com/user/GoogleTechTalks#p/u/16/VdIURAu1-aU" &gt;Recent Developments in Deep Learning&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2730298494390352199?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2730298494390352199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2730298494390352199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2730298494390352199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2730298494390352199'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/new-advances-in-neural-networks.html' title='New Advances in Neural Networks'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1499817949884324184</id><published>2010-05-06T22:42:00.002+02:00</published><updated>2010-05-06T22:48:30.361+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='axiom'/><title type='text'>AXIOM - an Apache Stax Parser</title><content type='html'>&lt;p&gt;I will have to take a look at Axiom which provides a Stax implementation to access XML info sets. It was developed for Axis 2. But it can be used independantly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1499817949884324184?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1499817949884324184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1499817949884324184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1499817949884324184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1499817949884324184'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/axiom-apache-stax-parser.html' title='AXIOM - an Apache Stax Parser'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-798921941376181896</id><published>2010-05-06T15:15:00.003+02:00</published><updated>2010-05-06T15:30:17.476+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='apache tika'/><title type='text'>Apache Tika - Content and Metadata Extraction in Java</title><content type='html'>&lt;p&gt;Apache Tika is an useful tool to extract text and metadata from a number of formats.&lt;/p&gt;

&lt;p&gt;For example, you have a document pdf, doc,... on the web from which you wish to extract some part. Then you can use tika to extract some part. For this you can use tika:
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;curl http:urltodoc/.../document.pdf | java -jar  tika-app/target/tika-app-0.7.jar --text&lt;/span&gt;&lt;/blockquote&gt;
 produces the text of the document. Other options exist to return an html, an xhtml or only the metadata of the document.&lt;/p&gt;

&lt;h3&gt;Maven Integration&lt;/h3&gt;
&lt;p&gt;As for other maven projects, you can specify the dependency in the pom. Note however, that depending on your needs, you might want to specify one of these ( mostly quoted from this &lt;a href="http://lucene.apache.org/tika/0.7/gettingstarted.html"&gt;page&lt;/a&gt;):
&lt;ul&gt;&lt;li&gt;
tika-core/target/tika-core-0.7.jar
    Tika core library. Contains the core interfaces and classes of Tika, but none of the parser implementations. Depends only on Java 5.&lt;/li&gt;
&lt;li&gt;tika-parsers/target/tika-parsers-0.7.jar
    Tika parsers. Collection of classes that implement the Tika Parser interface based on various external parser libraries.&lt;/li&gt;
&lt;li&gt;tika-app/target/tika-app-0.7.jar
    Tika application. Combines the above libraries and all the external parser libraries into a single runnable jar with a GUI and a command line interface.&lt;/li&gt;
&lt;li&gt;tika-bundle/target/tika-bundle-0.7.jar Tika bundle. An OSGi bundle that includes everything you need to use all Tika functionality in an OSGi environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;blockquote class='cCode'&gt;
&lt;span style="font-style:italic;"&gt;  &amp;lt;dependency&gt;     &lt;br /&gt;
  &amp;nbsp;  &amp;lt;groupId&gt;org.apache.tika&amp;lt;/groupId&gt;    &lt;br /&gt;
  &amp;nbsp;    &amp;lt;artifactId&gt;tika-core&amp;lt;/artifactId&gt;    &lt;br /&gt;
  &amp;nbsp;    &amp;lt;version&gt;0.7&amp;lt;/version&gt;    &lt;br /&gt;
  &amp;lt;/dependency&gt;
&lt;/span&gt;&lt;/blockquote&gt;
If you want to use Tika to parse documents (instead of simply detecting document types, etc.), you'll want to depend on tika-parsers instead:


&lt;blockquote class='cCode'&gt;
&lt;span style="font-style:italic;"&gt;   &amp;lt;dependency&gt;    &lt;br /&gt;
  &amp;nbsp;    &amp;lt;groupId&gt;org.apache.tika&amp;lt;/groupId&gt;    &lt;br /&gt;
  &amp;nbsp;    &amp;lt;artifactId&gt;tika-parsers&amp;lt;/artifactId&gt;    &lt;br /&gt;
  &amp;nbsp;    &amp;lt;version&gt;0.7&amp;lt;/version&gt;    &lt;br /&gt;
  &amp;lt;/dependency&gt;
&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-798921941376181896?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/798921941376181896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=798921941376181896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/798921941376181896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/798921941376181896'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/apache-tika-content-and-metadata.html' title='Apache Tika - Content and Metadata Extraction in Java'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-129625598231178809</id><published>2010-05-05T00:23:00.025+02:00</published><updated>2010-05-06T10:24:29.093+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM FileNet'/><category scheme='http://www.blogger.com/atom/ns#' term='intro'/><title type='text'>IBM FileNet P8 Platform</title><content type='html'>&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Disclaimer&lt;/span&gt;: This entry is not complete and will be probably be finished later, since some information needs to be checked. The goal is to have a short summary of the documentation I found.&lt;/p&gt;

&lt;p&gt;The IBM FileNet P8 Platform is a platform providing enterprise content management. Documentation can be found on the IBM website at this &lt;a href="http://www-01.ibm.com/support/docview.wss?rs=3278&amp;uid=swg27010422"&gt;place&lt;/a&gt;. A FileNet P8 System Overview  can be found there. The source of most of the information for this entry comes from this &lt;a href="ftp://ftp.software.ibm.com/software/data/cm/filenet/docs/p8doc/451/system_overview.pdf"&gt;document&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;content management&lt;/li&gt;
&lt;li&gt;business objects&lt;/li&gt;
&lt;li&gt;Lifecycles&lt;/li&gt;
&lt;li&gt;Properties&lt;/li&gt;
&lt;li&gt;Events and subscription&lt;/li&gt;
&lt;li&gt;classification&lt;/li&gt;
&lt;li&gt;entry templates&lt;/li&gt;
&lt;li&gt;publishing&lt;/li&gt;
&lt;li&gt;content storage&lt;/li&gt;
&lt;li&gt;content caching&lt;/li&gt;
&lt;li&gt;import and export&lt;/li&gt;
&lt;li&gt;search&lt;/li&gt;
&lt;li&gt;versioning&lt;/li&gt;
&lt;li&gt;process management&lt;/li&gt;
&lt;li&gt;extern application integration&lt;/li&gt;
&lt;li&gt;form management&lt;/li&gt;
&lt;li&gt;record Management (Email management)&lt;/li&gt;
&lt;li&gt;system management&lt;/li&gt;
&lt;li&gt;application development and deployment&lt;/li&gt;
&lt;li&gt;scalability&lt;/li&gt;
&lt;li&gt;high availability&lt;/li&gt;
&lt;li&gt;disaster recovery&lt;/li&gt;
&lt;li&gt;accessability&lt;/li&gt;
&lt;li&gt;security&lt;/li&gt;
&lt;li&gt;internationalization (i18n)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;FileNet uses  XML and Java2 Platform, Enterprise Edition (J2EE), as well as mainly the following protocols: Lightweight Direct Access Protocol (LDAP), Hypertext Transport Protocol (HTTP), and SOAP.&lt;/p&gt;

&lt;h3&gt;Content Management&lt;/h3&gt;
&lt;h3&gt;Business Objects&lt;/h3&gt;
&lt;h3&gt;Lifecycles&lt;/h3&gt;
&lt;h3&gt;Properties&lt;/h3&gt;
&lt;h3&gt;Events and subscription&lt;/h3&gt;
&lt;p&gt;The platform provides an event framework so as to push to subscribers the given event of the system.&lt;/p&gt;
&lt;h3&gt;Classification&lt;/h3&gt;
&lt;p&gt;The FileNet platform provides the infrastructure for different kind of classification of the resources. This classification can either be performed manually but also automatically using specific tools.&lt;/p&gt;
&lt;h3&gt;Entry Templates&lt;/h3&gt;
&lt;p&gt;Entry templates provides means of creating objects in a more uniform manner.&lt;/p&gt;
&lt;h3&gt;Publishing&lt;/h3&gt;
&lt;p&gt;The platform also provides means of publishing the content stored.&lt;/p&gt;
&lt;h3&gt;Content Storage&lt;/h3&gt;
&lt;h3&gt;Content Caching&lt;/h3&gt;
&lt;h3&gt;Import and Export&lt;/h3&gt;
&lt;h3&gt;Search&lt;/h3&gt;
&lt;h3&gt;Versioning&lt;/h3&gt;
&lt;p&gt;The FileNet application provides the tools to perform a versioning of the resource stored in the system.&lt;/p&gt;
&lt;h3&gt;Process Management&lt;/h3&gt;
&lt;h3&gt;Extern Application Integration&lt;/h3&gt;
&lt;p&gt;The platform can be integrated in other existing applications such as: Microsoft Office and SAP R/3 and Sharepoint.&lt;/p&gt;
&lt;h3&gt;Form Management&lt;/h3&gt;
&lt;p&gt;The documentation of FileNet says that the application provides powerful form creation and management tools. &lt;/p&gt;
&lt;h3&gt;Record Management (Email management)&lt;/h3&gt;
&lt;h3&gt;System management&lt;/h3&gt;
&lt;h3&gt;Application Development and Deployment&lt;/h3&gt;

&lt;h3&gt;Scalability&lt;/h3&gt;
&lt;p&gt;One  interesting aspect of the FileNet P8 Platform is that it seems to be designed considering scalability issues and techniques. It provides for diverse components horizontal scalability solutions (like computer farms) or vertically (i.e multiple instances of an application can be run in parallel.&lt;/p&gt;

&lt;h3&gt;Accessability&lt;/h3&gt;

&lt;p&gt;Accessability is an issuse for enterprise software in order to make sure that every one can use the software. The software is tested according to the &lt;span style="font-style:italic;"&gt;      Section 508 Compliance based on Electronic and Information Technology Accessibility Standards, published by the U.S. Access Board on December 21, 2000, at 36 CFR Part 1194.&lt;/span&gt;. This includes for example key traversal and access.&lt;/p&gt;

&lt;h2&gt;Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-nQmY5Z-Pgw/S-Cyens9ZXI/AAAAAAAAAAM/zJdTkS6N5E4/s1600/filenetarchitecture.jpeg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand; width=634px; height=271px" src="http://2.bp.blogspot.com/_-nQmY5Z-Pgw/S-Cyens9ZXI/AAAAAAAAAAM/zJdTkS6N5E4/s320/filenetarchitecture.jpeg" border="0" alt="FileNet Architecture Overview" id="BLOGGER_PHOTO_ID_5467566186751157618"  /&gt;&lt;/a&gt;
The preceding picture  shows the architecture of FileNet, it is taken from the document cited earlier. In addition to this overall picture it should be noted that FileNet provides both a Java and .Net API, although the java API seems to be the one providing the most functionality.&lt;/p&gt;

&lt;h3&gt;Content Engine&lt;/h3&gt;
&lt;p&gt; The content engine is the component taking care of the management of the content. It provides all the necessary functionalities, for example secure access, caching, indexing (also full text), search, classification, versioning, life cycles....&lt;/p&gt;
&lt;p&gt;The access is either provides through a Java or .Net API or using the Content Engine Web Services. A particular mode when using Java is to use the EJB Means of transport.&lt;/p&gt;
&lt;h3&gt;Process Engine&lt;/h3&gt;
&lt;p&gt;The process engine provides a number of components. 
&lt;ul&gt;
&lt;li&gt;Process Analyzer (which is a OLAP component)&lt;/li&gt;
&lt;li&gt;Process Simulator to test scenarios&lt;/li&gt;
&lt;li&gt;Business Process Framework&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;Application Engine&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Workspace XT - The Graphical Interface&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Rendition Engine&lt;/h3&gt;
&lt;p&gt;Rendition Engine  can be used to convert documents to various formats, for example the usual Office formats (Word, Excel, PowerPoint) as well as  to PDF or HTML. Multiple Rendition Engines can also be used in order to scale the document conversion process.&lt;/p&gt;

&lt;h3&gt;Administrative Components&lt;/h3&gt;
&lt;p&gt;The platform provides a number of adminstrative components: the dashboard, the system usage reporter, the system monitor&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-129625598231178809?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/129625598231178809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=129625598231178809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/129625598231178809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/129625598231178809'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/ibm-filenet-p8-platform.html' title='IBM FileNet P8 Platform'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-nQmY5Z-Pgw/S-Cyens9ZXI/AAAAAAAAAAM/zJdTkS6N5E4/s72-c/filenetarchitecture.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3934974430421727089</id><published>2010-05-04T23:42:00.007+02:00</published><updated>2010-05-05T01:01:51.255+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIMA'/><category scheme='http://www.blogger.com/atom/ns#' term='intro'/><title type='text'>UIMA - Unstructured Information Management Architecture</title><content type='html'>&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Disclaimer&lt;/span&gt;: This entry is not complete and will be finished later, since some information needs to be checked.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://uima.apache.org/index.html"&gt;UIMA (Unstructured Information Management  Architecture)&lt;/a&gt; is a project which was first created by IBM, but which is now one of the top-level project of the Apache Software Foundation. It provides an architecture to annotate a unstructured information with the help of a set of &lt;a href="http://uima.apache.org/downloads/releaseDocs/2.3.0-incubating/docs/html/overview_and_setup/overview_and_setup.html#ugr.glossary.annotator"&gt;annotators&lt;/a&gt; and &lt;a href="http://uima.apache.org/downloads/releaseDocs/2.3.0-incubating/docs/html/overview_and_setup/overview_and_setup.html#ugr.glossary.analysis_engine"&gt;analysis engines&lt;/a&gt; which can be combined and aggregated.&lt;/p&gt;

&lt;p&gt;In the following sections, I will introduce the main elements which allow the understanding of the UIMA infrastructure.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://http://uima.apache.org/downloads/releaseDocs/2.3.0-incubating/docs/html/overview_and_setup/overview_and_setup.html#ugr.glossary.cas"&gt;CAS - Common Analysis Structure&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The main structure in the  UIMA architecture is the CAS (aka. Common Analysis Structure). Note that I had some difficulties finding what it means, but I finally found it in the &lt;a href="http://uima.apache.org/downloads/releaseDocs/2.3.0-incubating/docs/html/overview_and_setup/overview_and_setup.html#ugr.glossary"&gt;glossary&lt;/a&gt;, which should be read at first because I even in the overview there was no explanation as to what a CAS is.&lt;/p&gt;

&lt;p&gt;A CAS is the structure manipulated by the annotators and annotation engines. &lt;/p&gt;

&lt;h3&gt;&lt;a href="http://uima.apache.org/downloads/releaseDocs/2.3.0-incubating/docs/html/overview_and_setup/overview_and_setup.html#ugr.glossary.analysis_engine"&gt;Analysis Engines&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The UIMA architecture provides the idea of analysis engines which take a CAS View (i.e some annotation structure representing a view of the data) and return a . &lt;/p&gt;


&lt;h3&gt;&lt;a href="http://uima.apache.org/downloads/releaseDocs/2.3.0-incubating/docs/html/overview_and_setup/overview_and_setup.html#ugr.glossary.annotator"&gt;Annotators&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The glossary of the UIMA documentation defines annotators as: &lt;blockquote&gt;A software component that implements the UIMA annotator interface. Annotators are implemented to produce and record annotations over regions of an artifact (e.g., text document, audio, and video).&lt;/blockquote&gt;
They represent the starting point for the analysis engine.
&lt;/p&gt;

&lt;h3&gt;Indexing&lt;/h3&gt;
&lt;p&gt;One of the main interest of the UIMA architecture is that it provides a standard interface
to define the indexing of the CAS and their views. However, I still need to clear things up here. &lt;/p&gt;

&lt;h3&gt;&lt;a href="http://uima.apache.org/downloads/releaseDocs/2.3.0-incubating/docs/html/overview_and_setup/overview_and_setup.html#ugr.glossary.pear"&gt;PEAR&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A PEAR is an archive file packaging the code, descriptor files and other resources required to install and run a UIMA component in another environments. The UIMA SDK provides tools to create such PEAR. Note that the PEAR acronym is not defined in the documentation either.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3934974430421727089?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3934974430421727089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3934974430421727089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3934974430421727089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3934974430421727089'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/uima-unstructured-information.html' title='UIMA - Unstructured Information Management Architecture'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7227734207419431412</id><published>2010-05-04T22:03:00.005+02:00</published><updated>2010-05-06T17:02:14.001+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>New Top Level Apache Projects</title><content type='html'>&lt;p&gt;In an announcement per mail, the Apache Software Foundation announced a number of new top level projects.&lt;/p&gt;


&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Apache Traffic Server&lt;/span&gt; is a richly-featured, fast, scalable, and extensible HTTP/1.1 compliant caching proxy server. &lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Apache Mahout&lt;/span&gt; provides scalable implementations of machine learning algorithms on top of Apache Hadoop and other technologies. &lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://desprofundis.blogspot.com/2010/05/apache-tika-content-and-metadata.html"&gt;Apache Tika&lt;/a&gt;&lt;/span&gt; is an embeddable, lightweight toolkit for content detection, and analysis.&lt;/p&gt;

&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Apache Nutch&lt;/span&gt; is a highly-modular, Web searching engine based on Lucene Java with added Web-specifics, such as a crawler, a link-graph database, and parsers for HTML and other document formats.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Apache Avro&lt;/span&gt; is a fast data serialization system that includes rich and dynamic schemas in all its processing.&lt;/p&gt;

&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Apache HBase&lt;/span&gt; is a distributed database modeled after Google's Bigtable.&lt;/p&gt;

&lt;p&gt; &lt;span style="font-weight:bold;"&gt;&lt;a href="http://desprofundis.blogspot.com/2010/05/uima-unstructured-information.html"&gt;Apache UIMA&lt;/a&gt;&lt;/span&gt; (Unstructured Information Management Architecture) is a framework for analyzing unstructured information, such as natural language text.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Apache Cassandra&lt;/span&gt; ( an advanced, second-generation “NoSQL” distributed data store that has a shared-nothing architecture)&lt;/p&gt;

&lt;p&gt; &lt;span style="font-weight:bold;"&gt;Apache Subversion&lt;/span&gt; a source code management system very often used in enterprise and open source projects.&lt;/p&gt;

&lt;p&gt; &lt;span style="font-weight:bold;"&gt;Apache Click&lt;/span&gt; is a modern Java EE Web application framework that provides a natural, rich client style programming model.&lt;/p&gt;

&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Apache Shindig&lt;/span&gt; is an OpenSocial container and helps you to start hosting OpenSocial apps quickly by providing the code to render gadgets, proxy requests, and handle REST and RPC requests.&lt;/p&gt;

&lt;p&gt;I believe I am becoming somewhat an apache fan boy ;-).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7227734207419431412?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7227734207419431412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7227734207419431412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7227734207419431412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7227734207419431412'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/new-top-level-apache-projects.html' title='New Top Level Apache Projects'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-298560840947927306</id><published>2010-05-03T15:44:00.007+02:00</published><updated>2010-05-04T01:43:39.405+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='intro'/><title type='text'>OSGi</title><content type='html'>&lt;p&gt;OSGi (used to be "Open Services Gateway initiative") is a standard to define a software platform infrastructure for java. The goal is to have the infrastructure to deploy modularised applications and services with a comnponent model (called Bundles or services). The components can be managed using a service registry. They can be loaded, started and stopped.&lt;/p&gt;


&lt;p&gt;The OSGi standard uses metadata found in the Jar file Manifests, in order to load the bundles. In particular, the manifests specifies the classes exported and imported by the bundle. In that way, it is possible to use, or hide conflicting classes in a bundle and not export it. Other bundles may use the classes exported by other bundles.&lt;/p&gt;

&lt;h3&gt;Bundles&lt;/h3&gt;
&lt;p&gt;Bundles are jar files with a corresponding entries in the manifest. The following example shows the manifest of a bundle requiring the package org.eclipse.ui.&lt;/p&gt;
&lt;blockquote class='cCode'&gt;
Manifest-Version: 1.0      &lt;br /&gt;
Bundle-ManifestVersion: 2      &lt;br /&gt;
Bundle-Name: My Yellow World Example      &lt;br /&gt;
Bundle-SymbolicName: de.desprofundis.example; singleton:=true      &lt;br /&gt;
Bundle-Version: 1.0.0      &lt;br /&gt;
Bundle-Activator: de.desprofundis.example.Activator      &lt;br /&gt;
Require-Bundle: org.eclipse.ui,      &lt;br /&gt;
&amp;nbsp; org.eclipse.core.runtime      &lt;br /&gt;
Bundle-ActivationPolicy: lazy      &lt;br /&gt;
Bundle-RequiredExecutionEnvironment: JavaSE-1.6      &lt;br /&gt;
&lt;/blockquote&gt;


&lt;p&gt;Note the "Require-Bundle", entry which lists the packages which are required by this bundle. The OSGi container is responsible for checking whether the dependencies are satisfied. Another important information is also here the Bundle-Activator, which is the class in charge of the activation of the bundle (as well as its shutting down when needed.&lt;/p&gt;

&lt;h3&gt;Services&lt;/h3&gt;
&lt;p&gt;In addition to the dependency management and version hiding, the OSGi framework provides also a registry for services. Moreover, services can be injected in to some other bundle.
A &lt;a href="http://www.vogella.de/articles/OSGi/article.html"&gt;tutorial&lt;/a&gt; by Lars Vogel presents their use succintly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-298560840947927306?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/298560840947927306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=298560840947927306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/298560840947927306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/298560840947927306'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/osgi.html' title='OSGi'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4000271859124033920</id><published>2010-05-03T10:52:00.004+02:00</published><updated>2010-05-03T10:54:48.343+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='zen coding'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Zen Coding</title><content type='html'>&lt;p&gt;&lt;a href="http://code.google.com/p/zen-coding/"&gt;Zen Coding&lt;/a&gt; is an utility to generate simple HTML skeleton structures using a path like expression with some syntactic enhancement. From the demos, it is really quite impressive, because in this way one can generate quite quickly complex HTML structures. &lt;/p&gt;

&lt;p&gt;I read the entry on slashdot.org and then followed the link to this &lt;a href="http://www.downloadsquad.com/2010/04/30/if-you-code-html-zen-coding-will-change-your-life/"&gt;blog&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;Though I still need to try it. I am amazed. I have to make it work in eclipse and emacs (aswell as perhaps vi). &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4000271859124033920?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4000271859124033920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4000271859124033920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4000271859124033920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4000271859124033920'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/05/zen-coding.html' title='Zen Coding'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7943399171812333129</id><published>2010-04-29T12:23:00.008+02:00</published><updated>2010-05-04T02:32:52.840+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Javascript Performance Talk</title><content type='html'>&lt;p&gt;I watched the javascript performance talk from Nicholas C. Zakas at Google Tech Talks: &lt;a href="http://googlecode.blogspot.com/2009/06/nicholas-c-zakas-speed-up-your.html"&gt;Nicholas C. Zakas: Speed Up Your JavaScript&lt;/a&gt;.&lt;/p&gt;


&lt;ul&gt;&lt;li&gt;Scope Management&lt;/li&gt;&lt;li&gt;Loop optimization&lt;/li&gt;&lt;li&gt;About HTMLCollection Live objects&lt;/li&gt;&lt;li&gt;Document Fragments - postponing reflow&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Scope Management&lt;/h3&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;p&gt;The tip given to improve efficiency is to use local variables, because
variables which are in the local scope are accessed first. Every time a global or 
a variable from a prototype or a dot object variable is accessed twice. Use a local variable.&lt;/p&gt;
&lt;p&gt;Another issue related to the scope aspect is that using functions and closures comes with a certain cost.&lt;/p&gt;


&lt;h3&gt;Loops Optimization&lt;/h3&gt;
&lt;p&gt;Loops can be optimized in different ways, when avoiding unnecessary work. 

&lt;/p&gt;

&lt;h3&gt;About HTMLCollection Live objects&lt;/h3&gt;
&lt;p&gt;The presentation explains that the collection returned by methods such as:
.getElementsByTagName, ... return HTMLCollection objects which remain 'live', that is
they get updated. A typical example is the following loop:
&lt;blockquote class='cCode'&gt;&lt;span style="font-style:italic;"&gt;var divs = document.getElementsByTagName('div');          &lt;br /&gt;
          &lt;br /&gt;
for (var i = 0; i&lt; divs.length; i++){          &lt;br /&gt;
  var div = document.createElement('div');          &lt;br /&gt;
  document.body.append(div);          &lt;br /&gt;
}&lt;/span&gt;&lt;/blockquote&gt;
The collection in divs is an HTMLCollection. The body of the loops goes over the loops and adds a
div for every object in the collection. But since new objects are added to the loop every time one goes through the loops, the loops never ends !!!!!

&lt;h3&gt;DocumentFragment - postponing reflow&lt;/h3&gt;
&lt;p&gt;Reflow occurs when the the size of the elements on the page are recalculated. To improve performance it is useful to minimize the number of reflows.&lt;/p&gt;
&lt;p&gt;In general, Nicholas C. Zakas explained that reflow happens at five particular moments in browsers:
&lt;ul&gt;&lt;li&gt;Page load&lt;/li&gt;&lt;li&gt;browser window resize&lt;/li&gt;&lt;li&gt;adding and removing elements&lt;/li&gt;&lt;li&gt;setting style attribute of elements&lt;/li&gt;&lt;li&gt;(sometimes) accessing the style elements of the nodes&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;To prevent useless reflows, one can use a document fragment in order to create a quite complete element as a document fragment and then add it to the DOM. In this way, reflow is only performed when the element is added to the page.&lt;/p&gt;
&lt;p&gt;To minimize the access to the style attributes of elements, a better way to perform that is to change the class of the element, i.e: use .className instead of .style. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7943399171812333129?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7943399171812333129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7943399171812333129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7943399171812333129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7943399171812333129'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/javascript-performance-talk.html' title='Javascript Performance Talk'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5525953106266526012</id><published>2010-04-28T14:05:00.008+02:00</published><updated>2010-04-28T16:17:27.047+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test driven development'/><category scheme='http://www.blogger.com/atom/ns#' term='easyb'/><title type='text'>Behavior Driven Development (aka. BDD) using EasyB</title><content type='html'>&lt;p&gt;One more term for "test driven development", behaviour driven development. The idea behind the change in term is to highlight, that the principle underlying behind this style of development is more a design methodology as a test methodology.&lt;/p&gt;

&lt;p&gt;To illustrate the purpose, and methodology, I will present it here using &lt;a href="http://easyb.org/"&gt;easyb&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The main idea is to write the specification as text, and then to replace the text using groovy code. Easyb provides two types of tests: specifications and stories.&lt;/p&gt;

&lt;p&gt;I first describe the specification by giving an example.&lt;/p&gt;

&lt;blockquote class='cCode'&gt;
before "initialize the queue for each spec", {         &lt;br /&gt;
&amp;nbsp; queue = new Queue()            &lt;br /&gt;
}         &lt;br /&gt;
          &lt;br /&gt;
it "should dequeue gives item just enqueued", {         &lt;br /&gt;
&amp;nbsp; queue.enqueue(2)         &lt;br /&gt;
&amp;nbsp; queue.dequeue().shouldBe(2)         &lt;br /&gt;
}         &lt;br /&gt;

it "should throw an exception when null is enqueued", {         &lt;br /&gt;
&amp;nbsp; ensureThrows(RuntimeException){         &lt;br /&gt;
&amp;nbsp;&amp;nbsp;  queue.enqueue(null)         &lt;br /&gt;
&amp;nbsp; }         &lt;br /&gt;
}
&lt;/blockquote&gt;

&lt;p&gt;easyb uses a number of keywords and methods. First of all, the keyword &lt;span style="font-style:italic;"&gt;before&lt;/span&gt; for the code to be used when setting the test environment at the beginning. In this case a queue is created. The next important keyword is "&lt;span style="font-style:italic;"&gt;it&lt;/span&gt;" at the beginning of certain lines. It indicates that this is a specification. It is followed by a text describing the specification. Finally, after the description some groovy code is included between &lt;span style="font-style:italic;"&gt;"{"&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;"}"&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Different methods belong to the easyb specification language: &lt;span style="font-style:italic;"&gt;"shouldBe"&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;"ensureThrows"&lt;/span&gt;. The first one checks that the result of the emthod to which it is applied returns a given value, whereas the second one verifyies that an exception as been thrown.&lt;/p&gt;

&lt;h3&gt;Maven Configuration&lt;/h3&gt;
&lt;p&gt;As usual, I find very useful to have a template of what I need in a maven pom to use somekind of framework. I haven't tested that yet. I still find that useful:
&lt;blockquote class='cCode'&gt;
 &amp;lt;project&gt;        &lt;br /&gt;
&amp;nbsp;  ...        &lt;br /&gt;
&amp;nbsp;  &amp;lt;repositories&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    &amp;lt;repository&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      &amp;lt;id&gt;easyb&amp;lt;/id&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      &amp;lt;url&gt;http://www.easyb.org/maven2/&amp;lt;/url&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;/repository&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;  &amp;lt;/repositories&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;  &amp;lt;pluginRepositories&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;pluginRepository&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      &amp;lt;id&gt;easyb&amp;lt;/id&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      &amp;lt;url&gt;http://www.easyb.org/maven2/&amp;lt;/url&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;/pluginRepository&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;  &amp;lt;/pluginRepositories&gt;        &lt;br /&gt;
&amp;nbsp;&amp;nbsp;  ...        &lt;br /&gt;
&amp;nbsp;  &amp;lt;/project&gt;        &lt;br /&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;h3&gt;Easyb clone for javascript&lt;/h3&gt;
&lt;p&gt;I also found the following code to perform bdd in javascript: &lt;a href="http://www.malethan.com/article/javascript_bdd_framework_in_less_than_200_lines.html"&gt;JavaScript BDD framework in less than 200 lines&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5525953106266526012?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5525953106266526012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5525953106266526012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5525953106266526012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5525953106266526012'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/behavorial-driven-development-using.html' title='Behavior Driven Development (aka. BDD) using EasyB'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4822102165636031590</id><published>2010-04-27T02:21:00.001+02:00</published><updated>2010-04-27T02:23:41.269+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><title type='text'>A site for Javascript library</title><content type='html'>&lt;p&gt; As I was looking for a Java based implementation of javascript. I fell upon the following site: &lt;a href="http://javascriptlibraries.com/"&gt;http://javascriptlibraries.com/&lt;/a&gt; which will probably be useful.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4822102165636031590?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4822102165636031590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4822102165636031590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4822102165636031590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4822102165636031590'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/site-for-javascript-library.html' title='A site for Javascript library'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4439456466720903167</id><published>2010-04-27T02:12:00.009+02:00</published><updated>2010-04-27T22:28:55.671+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Learning Python 3.0</title><content type='html'>&lt;p&gt;I am learning python 3.0. There are a few reasons for this. For instance, there is a suggestion from the 'Pragmatic Programmer' book I bought lately. This other thing is that it would make it easier to cooperate with my brother and to perform more useful stuff for and with him. I am also using Mark Lutz: Learning Python (Fourth Edition  from Oreilly).&lt;p&gt;

&lt;p&gt;So I installed pyhton 3.0 on my machine.&lt;/p&gt;

&lt;p&gt;&lt;blockquote  class='cCode'&gt;&lt;span style="font-style:italic;"&gt;$&gt; ./configure       &lt;br /&gt;
$&gt; su       &lt;br /&gt;
$&gt; make altinstall      &lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;

And here it is:
&lt;blockquote class='cCode'&gt;&lt;span style="font-style:italic;"&gt;$ /usr/local/bin/python3.0    &lt;br /&gt;
Python 3.0 (r30:67503, Apr 27 2010, 01:32:05)     &lt;br /&gt;
[GCC 4.4.3 20100127 (Red Hat 4.4.3-4)] on linux2    &lt;br /&gt;
Type "help", "copyright", "credits" or "license" for more information.    &lt;br /&gt;
&gt;&gt;&gt; 
&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;


&lt;p&gt;I will probably need to make a few tests that everything works.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4439456466720903167?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4439456466720903167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4439456466720903167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4439456466720903167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4439456466720903167'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/learning-python-30.html' title='Learning Python 3.0'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1863614189541788291</id><published>2010-04-23T18:33:00.013+02:00</published><updated>2010-04-24T01:11:45.373+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mocks'/><category scheme='http://www.blogger.com/atom/ns#' term='java frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='mockito'/><title type='text'>Mockito - basics</title><content type='html'>&lt;p&gt;This entry gives simple methods on how to use &lt;a href="http://mockito.org/"&gt;mockito&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Maven configuration&lt;/h3&gt;
&lt;p&gt;To add mockito-core to your configuration, update your dependencies with:&lt;/p&gt;

&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;  
&amp;lt;!-- needs extra dependencies: objenesis &amp; hamcrest --&gt;      &lt;br /&gt;
  &amp;lt;groupId&gt;org.mockito&amp;lt;/groupId&gt;          &lt;br /&gt;
  &amp;lt;artifactId&gt;mockito-core&amp;lt;/artifactId&gt;      &lt;br /&gt;
  &amp;lt;version&gt;1.8.1&amp;lt;/version&gt;       &lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;
&lt;/p&gt;
&lt;p&gt; In order to add the complete mockito framework, i.e. mockito-all, update your dependencies with
 &lt;blockquote&gt;&lt;span style="font-style:italic;"&gt; &amp;lt;groupId&gt;org.mockito&amp;lt;/groupId&gt;      &lt;br /&gt;
  &amp;lt;artifactId&gt;mockito-all&amp;lt;/artifactId&gt;      &lt;br /&gt;
  &amp;lt;version&gt;1.8.1&amp;lt;/version&gt; &lt;/span&gt;&lt;/blockquote&gt;
&lt;/p&gt;
&lt;p&gt;Of course if the mock code is only found in unit tests, then you might want to add:
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&amp;lt;scope&gt;test&amp;lt;scope&gt;&lt;/span&gt;&lt;/blockquote&gt;
to your pom.xml&lt;/p&gt;

&lt;h3&gt;Use of Mocks to verify interaction (Spying)&lt;/h3&gt;
&lt;p&gt; The following example is adapted from the &lt;a href="http://mockito.googlecode.com/svn/tags/latest/javadoc/org/mockito/Mockito.html"&gt;mockito documentation&lt;/a&gt;
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;
// the staic import allows the direct use of the help methods: mock and verify     &lt;br /&gt;
 import static org.mockito.Mockito.*;     &lt;br /&gt;
      &lt;br /&gt;
 // create a mock of a map     &lt;br /&gt;
 List mockedMap = mock(Map.class);     &lt;br /&gt;
     &lt;br /&gt;
 //using mock object     &lt;br /&gt;
 mockedMap.put("key", "value");     &lt;br /&gt;
 mockedMap.clear();     &lt;br /&gt;

 //verification     &lt;br /&gt;
 verify(mockedMap).put("key","value");     &lt;br /&gt;
 verify(mockedMap).clear();     &lt;br /&gt;
&lt;/span&gt; &lt;/blockquote&gt;
&lt;/p&gt;

&lt;h3&gt;Stubbing - Or Have your objects mock others&lt;/h3&gt;
&lt;p&gt;While the previous section was used to verify that some operation did occur on a specific object. In some cases, you may not wish to initialize completely a complex object. In such a case, you can use mockito to perform stubbing, i.e. mockito provides an interface, so that
the object returns a specific value, when a call to a method is performed. &lt;/p&gt;
&lt;p&gt;For instance, it is possible to use the mocking framework to return a given result for certain parameters:
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt; when(mockedMap.get("key")).thenReturn("first");     &lt;br /&gt;
 when(mockedList.get(5)).thenThrow(new RuntimeException());     &lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;




&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1863614189541788291?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1863614189541788291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1863614189541788291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1863614189541788291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1863614189541788291'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/mockito.html' title='Mockito - basics'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5478367164577662401</id><published>2010-04-23T16:26:00.003+02:00</published><updated>2010-04-23T16:31:11.126+02:00</updated><title type='text'>Content delivery network</title><content type='html'>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Content_Delivery_Network"&gt;Content delivery network &lt;/a&gt;are a cool thing though I am not sure how secure is such an approach. I will have to take a closer look.&lt;/p&gt;
&lt;p&gt;In particular in the case of using dojo, a few issues have to be taken into account.&lt;/p&gt;

&lt;p&gt;Interesting seems that google provides an api for asynchonuous loading. &lt;/p&gt;

&lt;h3&gt;Browser based javascript library loading &lt;/h3&gt;
&lt;p&gt;Wouldn't it be interesting to have browser taking care of the javascript frameworks library loading such as dojo, ext, ... in the version corresponding to some specification in the HTML file.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5478367164577662401?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5478367164577662401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5478367164577662401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5478367164577662401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5478367164577662401'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/content-delivery-network.html' title='Content delivery network'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-8158728852452679498</id><published>2010-04-23T16:20:00.015+02:00</published><updated>2010-04-23T17:28:23.249+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Dojo Toolkit - Basics</title><content type='html'>&lt;p&gt;This is a high level overview of the dojo toolkit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Function called on load&lt;/li&gt;
&lt;li&gt;package framework&lt;/li&gt;
&lt;li&gt;a DOM element retrieval mechanism&lt;/li&gt;
&lt;li&gt;a number of Widgets&lt;/li&gt;
&lt;li&gt;Helper Methods&lt;/li&gt;
&lt;li&gt;Dojo Array Methods&lt;/li&gt;
&lt;li&gt;dojo.connect - Event mechanism&lt;/li&gt;
&lt;li&gt;Parsing, formatting and validation of numbers and dates&lt;/li&gt;
&lt;li&gt;Ajax request tools&lt;/li&gt;
&lt;li&gt;An history and bookmarking mechanism &lt;/li&gt;
&lt;li&gt;Event System tools&lt;/li&gt;
&lt;li&gt;Animation tools&lt;/li&gt;
&lt;li&gt;I18n tools (Internationalization)&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;Loading the dojo code&lt;/h3&gt;
&lt;p&gt; The code of dojo can be loaded from &lt;a href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js"&gt;http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js&lt;/a&gt;. I would like to try loading it from the web server.

&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&lt;script type="text/javascript"
    src="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js"&gt;
&lt;/script&gt;
&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;


&lt;h3&gt;Function called on load&lt;/h3&gt;
&lt;p &gt; As for other web frameworks, you can have different function called on load:
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;dojo.addOnLoad(funtion(
 // code to perform on load
));&lt;/span&gt;&lt;/blockquote&gt;
&lt;/p&gt;

&lt;h3&gt;package framework&lt;/h3&gt;
&lt;p&gt;
The dojo toolkit provides a package mechanism, the code is used in the following way:
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;dojo.require('dojo.fx');&lt;/span&gt;&lt;/blockquote&gt;
loads the dojo.fx package.
&lt;/p&gt;

&lt;h3&gt;a DOM element retrieval mechanism&lt;/h3&gt;
&lt;p&gt;Dojo provides a number of methods to retrieve elements of the DOM document. For instance, 
&lt;span style="font-style:italic;"&gt;dojo.byId('myId');&lt;/span&gt; retrieves the element with the id 'myId' just as &lt;span style="font-style:italic;"&gt;document.getElementById&lt;/span&gt; would.&lt;/p&gt;
&lt;p&gt;Just as other frameworks dojo provides also a query mechanism.&lt;/p&gt;
&lt;p&gt;From the dojo documentation: 
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;
// all &amp;lt;h3&gt; elements       &lt;br /&gt;
dojo.query('h3')       &lt;br /&gt;
// all &amp;lt;h3&gt; elements which are first-child of their parent node       &lt;br /&gt;
dojo.query('h3:first-child')       &lt;br /&gt;
// a node with id="main"       &lt;br /&gt;
dojo.query('#main')       &lt;br /&gt;
// all &amp;lt;h3&gt; elements within a node with id="main"       &lt;br /&gt;
dojo.query('#main h3')       &lt;br /&gt;
// a &amp;lt;div&gt; with an id="main"       &lt;br /&gt;
dojo.query('div#main')       &lt;br /&gt;
// all &amp;lt;h3&gt; elements within a div with id="main"       &lt;br /&gt;
dojo.query('div#main h3')       &lt;br /&gt;
// all &amp;lt;h3&gt; elements that are immediate children of a &amp;lt;div&gt;, within node with id="main"       &lt;br /&gt;
dojo.query('#main div &gt; h3')       &lt;br /&gt;
// all nodes with class="foo"       &lt;br /&gt;
dojo.query('.foo')       &lt;br /&gt;
// all nodes with classes "foo" and "bar"       &lt;br /&gt;
dojo.query('.foo.bar')       &lt;br /&gt;
// all &amp;lt;h3&gt; elements that are immediate children of a node with id="main"       &lt;br /&gt;
dojo.query('#main &gt; h3')&lt;/span&gt;
&lt;/blockquote&gt;

&lt;h3&gt;A number of Widgets&lt;/h3&gt;
&lt;p&gt;The dojo toolkit provides a number of widgets. These can be retrieved by the &lt;span style="font-style:italic;"&gt;dijit.byId()&lt;/span&gt; method.&lt;/p&gt;

&lt;h3&gt;Dojo Array Methods&lt;/h3&gt;
&lt;p&gt;Dojo provides some other useful methods for example: &lt;span style="font-style:italic;"&gt;dojo.forEach()&lt;/span&gt;. A similar method can be used on the resuklt of a dojo.query().&lt;/p&gt;
&lt;p&gt;Dojo also provides filter and map functions. filters an array and returns all the elements verifying a given property. The map function applies some function on all the elements of an array and returns a new array of new values.&lt;/p&gt;
&lt;p&gt;The functions dojo.some() and dojo.every() checking that some property is true for some, respectively all the elements of the array&lt;/p&gt;

&lt;h3&gt;dojo.connect - Event mechanism&lt;/h3&gt;
&lt;p&gt;The dojo toolkit provides the dojo.connect methods which allows to connect some event to 
a given event.&lt;/p&gt;

&lt;h3&gt;Parsing, formatting and validation of numbers and dates&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Ajax request tools&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;An history and bookmarking mechanism &lt;/h3&gt;

&lt;h3&gt;Event System tools&lt;/h3&gt;

&lt;h3&gt;Animation tools&lt;/h3&gt;

&lt;h3&gt;I18n tools (Internationalization)&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-8158728852452679498?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/8158728852452679498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=8158728852452679498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8158728852452679498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8158728852452679498'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/dojo-toolkit-basics.html' title='Dojo Toolkit - Basics'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6119794045766269498</id><published>2010-04-23T15:48:00.004+02:00</published><updated>2010-04-24T01:13:30.350+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java web frameworks'/><title type='text'>Java Web Framework Comparison</title><content type='html'>&lt;p&gt;Here is an useful &lt;a href="https://appfuse-light.dev.java.net/framework-comparison/"&gt;link&lt;/a&gt; for comparing the different existing Java web frameworks.&lt;/p&gt;

&lt;p&gt;In particular, "&lt;a href="https://appfuse-light.dev.java.net/framework-comparison/JavaWebFrameworkSweetSpots.pdf"&gt;java Web Frameworks sweet spots&lt;/a&gt;" is quite interesting. &lt;/p&gt;

&lt;p&gt;I learnt about a framework I yet had never heard of: &lt;a href="http://rifers.org/"&gt;RIFE&lt;/a&gt;. The developer, who was asked in the article, seems to be a little too subjective for my taste.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6119794045766269498?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6119794045766269498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6119794045766269498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6119794045766269498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6119794045766269498'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/java-web-framewor-comparison.html' title='Java Web Framework Comparison'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6846446247716017516</id><published>2010-04-22T02:08:00.014+02:00</published><updated>2010-04-23T15:28:32.077+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Flex - generating Flex on Java Project</title><content type='html'>&lt;p&gt;I collected the following from &lt;a href="http://www.manning.com/allmon/"&gt;The Flex On Java Book&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;$workspace &gt; mvn archetype:create -DarchetypeGroupId=org.foj     -DarchetypeArtifactId=flex-mojos-archetype     -DarchetypeVersion=1.0-SNAPSHOT     -DgroupId=org.foj     -DartifactId=flex-bugs-ria  -DremoteRepositories=http://flexonjava.googlecode.com/svn/repository&lt;/blockquote&gt;
&lt;p&gt;
However, I still need to solve some dependency problems. In particular  I needed to install the following packages: 
&lt;ul&gt;&lt;li&gt;com.adobe.flex.compiler:asdoc:zip:template:3.2.0.3958&lt;/li&gt;&lt;li&gt;org.graniteds:granite-generator:jar:1.1.0&lt;/li&gt;&lt;li&gt;com.adobe.flex:compiler:pom:4.0.0.7219&lt;/li&gt;&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;But this is solved by using the correct repository by adding       &lt;br /&gt;
&lt;verbatim&gt;&amp;lt;repositories&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;repository&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              &amp;lt;id&gt;flexcompiler-repo&amp;lt;/id&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              &amp;lt;url&gt;http://repository.sonatype.org/content/groups/flexgroup/&amp;lt;/url&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;/repository&gt;      &lt;br /&gt;
&amp;lt;/repositories&gt;&lt;br /&gt;&lt;/verbatim&gt;
&lt;/p&gt;
&lt;p&gt;However, after running: 
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;$flex-bugs-ria &gt;mvn package&lt;/span&gt;&lt;/blockquote&gt;
it runs quite a while with an error. It seems it just could not start the flash player.
So it may be all good ;-).&lt;/p&gt;

&lt;p&gt;It returns successful and the generated swf can be displayed in the browser
 &lt;blockquote&gt;$flex-bugs-ria &gt;mvn package-Dmaven.test.skip=true&lt;/blockquote&gt;
&lt;/p&gt;
&lt;p&gt;Next step: do a more complex flex example.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6846446247716017516?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6846446247716017516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6846446247716017516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6846446247716017516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6846446247716017516'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/flex-generating-flex-on-java-project.html' title='Flex - generating Flex on Java Project'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7345621652270385503</id><published>2010-04-22T01:05:00.011+02:00</published><updated>2010-04-23T19:29:57.808+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mocks'/><category scheme='http://www.blogger.com/atom/ns#' term='java frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Mock Frameworks</title><content type='html'>&lt;p&gt;In this entry, I present a summary of the features of mock frameworks. In particular, I looked at two different mock frameworks: &lt;a href="http://easymock.org/"&gt;easyMock&lt;/a&gt; (MIT Licence), &lt;a href="http://mockito.org/"&gt;Mockito&lt;/a&gt; (Apache Licence) and &lt;a href="http://www.jmock.org/"&gt;JMock&lt;/a&gt; (probably equivalent to BSD, MIT or Apache but I am not completely sure). The Mockito framework seems to be trying to extend even more the features of the easy mock.&lt;/p&gt;
&lt;h3&gt;Usual Use Cases of Mock Objects&lt;/h3&gt;
&lt;p&gt;I adapted the following list from a wikipedia entry. It shows the cases where it a good practice to use mocks.&lt;ul&gt;&lt;li&gt;results of method do not follow a very deterministic pattern&lt;/li&gt;
&lt;li&gt;The mock can simulate a complex object or an object difficult to obtain, e.g a given state in a GUI&lt;/li&gt;&lt;li&gt; A state of a system which is expensive to create, resource, processing, power...  &lt;/li&gt;
&lt;li&gt;The  object has not yet been provided, perhaps by an other team&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;Here are some useful posts on mocks:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://xunitpatterns.com/Mocks,%20Fakes,%20Stubs%20and%20Dummies.html"&gt;Mocks, Fakes, Stubs and Dummies &lt;/a&gt;, Gerard Meszaros explaining the different type of test doubles.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://monkeyisland.pl/2008/03/21/lets-spy"&gt;Let's Spy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hamletdarcy.blogspot.com/2007/10/mocks-and-stubs-arent-spies.html"&gt;Mocks and Stubs aren't Spies&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;I notice this post is not at all too clean. It needs to explain the purpose of spying and the difference there is with mock objects which are only dummy object or fake object. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7345621652270385503?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7345621652270385503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7345621652270385503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7345621652270385503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7345621652270385503'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/mock-frameworks.html' title='Mock Frameworks'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-728480333746203762</id><published>2010-04-22T00:33:00.008+02:00</published><updated>2010-04-22T14:46:01.830+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><category scheme='http://www.blogger.com/atom/ns#' term='ext.js'/><title type='text'>Ext JS Feature Overview</title><content type='html'>&lt;p&gt;After implementing a whole application with Ext JS, and after presenting also in this blog basic overview of the &lt;a href="http://desprofundis.blogspot.com/2010/04/prototype-javascript-api-features.html"&gt;prototype&lt;/a&gt; and &lt;a href="http://desprofundis.blogspot.com/2010/04/jquery-basics.html"&gt;jquery&lt;/a&gt; javascript frameworks and given a small idea of the functionalities of &lt;a href="http://desprofundis.blogspot.com/2010/04/trying-qooxdoo.html"&gt;qooxdoo&lt;/a&gt; (and a little overview of &lt;a href="http://desprofundis.blogspot.com/2010/04/installing-qwt-qooxdoo-windowing.html"&gt;QWT&lt;/a&gt;), I want to give a more or less thorough view of all the features of this quality framework. In a later entry, I will give a thorough presentation of the relations between GWT and Ext JS.&lt;/p&gt;
&lt;p&gt;It is important to notice, that unlike other frameworks the extJS framework does not have a licence mechanism which is very suitable for enterprise application which need to be kept closed source, unless you are ready to pay licence fees to the company owning the code of extJS. However, the core of ext JS is proposed under an LGPL licence, so it can still be used in closed source development.&lt;/p&gt;
&lt;p&gt;I first list the main features of extJS, then I go in a little more details for each of these points:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Namespace functionalities&lt;/li&gt;&lt;li&gt;DOM elements manipulation Utilities&lt;/li&gt;&lt;li&gt;Data Manipulation Utilities&lt;/li&gt;&lt;li&gt;Data Store functionalities&lt;/li&gt;&lt;li&gt;Ajax request functionalities&lt;/li&gt;&lt;li&gt;an extended set of application widgets: trees, tables form, charts&lt;/li&gt;&lt;li&gt;a complete RIA framework, with menus, drag and drop,....&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Namespace functionalities&lt;/h3&gt;
&lt;p&gt;This is presented in this &lt;a href="http://desprofundis.blogspot.com/2010/04/ext-js-tutorial-namespaces.html"&gt;entry&lt;/a&gt;. Namespaces makes it easy it construct more modular applications. &lt;/p&gt;
&lt;h3&gt;DOM elements manipulation Utilities&lt;/h3&gt;
&lt;p&gt;This is presented in another entry: &lt;/p&gt;
&lt;h3&gt;Data Manipulation Utilities&lt;/h3&gt;
&lt;p&gt;This is presented in another entry: &lt;/p&gt;
&lt;h3&gt;Data Store functionalities&lt;/h3&gt;
&lt;p&gt;This is presented in another entry: &lt;/p&gt;
&lt;h3&gt;Ajax request functionalities&lt;/h3&gt;
&lt;p&gt;This is presented in another entry: &lt;/p&gt;
&lt;h3&gt;an extended set of application widgets: trees, tables form, charts&lt;/h3&gt;
&lt;p&gt;This is presented in another entry: &lt;/p&gt;
&lt;h3&gt;a complete RIA framework, with menus, drag and drop,....&lt;/h3&gt;
&lt;p&gt;This is presented in another entry: &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-728480333746203762?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/728480333746203762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=728480333746203762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/728480333746203762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/728480333746203762'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/ext-js-feature-overview.html' title='Ext JS Feature Overview'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2694900550502610255</id><published>2010-04-22T00:22:00.002+02:00</published><updated>2010-04-22T00:32:54.653+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><category scheme='http://www.blogger.com/atom/ns#' term='ext.js'/><title type='text'>Ext JS Tutorial - Namespaces</title><content type='html'>&lt;p&gt;In this entry I will give a tutorial on using Ext JS Namespaces.&lt;/p&gt;
&lt;p&gt;Namespaces are a very useful functionality in extJS. You can define a namespace using:&lt;/p&gt;
&lt;blockquote&gt;var myNamespaceNS = new ext.Ext.NS('my.namespaces.mymodules');&lt;/blockquote&gt;
&lt;p&gt;Then you can add objects, or functions to the namespaces as easily as if they were normal variables:&lt;/p&gt;
&lt;p&gt;&lt;blockquote&gt;myNamespaceNS.myObject = {title:'my title',author:'me'};&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;In other pieces of the code, you can get the hold of the namespace using its name or a variable.
&lt;blockquote&gt;
var myNamespaceNS = new ext.Ext.NS('my.namespaces.mymodules');
alert(myNamespaceNS.myObject.title + " "+my.namespaces.mymodules.myObject.author);&lt;/blockquote&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2694900550502610255?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2694900550502610255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2694900550502610255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2694900550502610255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2694900550502610255'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/ext-js-tutorial-namespaces.html' title='Ext JS Tutorial - Namespaces'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-8366338363924087944</id><published>2010-04-22T00:17:00.002+02:00</published><updated>2010-04-22T00:20:47.909+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><title type='text'>JQuery - Plugins</title><content type='html'>&lt;p&gt;JQuery is a framework designed with extensions or plugins in mind. There is a large number of plugins which can be found at the &lt;a href="http://plugins.jquery.com/"&gt;plugin page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this entry, I will try to select and explain some of the main useful plugins.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-8366338363924087944?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/8366338363924087944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=8366338363924087944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8366338363924087944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8366338363924087944'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/jquery-plugins.html' title='JQuery - Plugins'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-8308158488519665834</id><published>2010-04-21T23:42:00.020+02:00</published><updated>2010-04-23T12:18:33.416+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><title type='text'>JQuery - Basics</title><content type='html'>&lt;p&gt;After the post on prototype I thought I might just present the features of jQuery. Just as for prototype I first summarize the features of JQuery, then I describe in a little more details these features. The informations from this entry come from the &lt;a href="http://api.jquery.com"&gt;jQuery API&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;simple on load execution mechanism&lt;/li&gt;&lt;li&gt;simple query mechanism using selectors and syntactic sugar $()&lt;/li&gt;&lt;li&gt;Simple Ajax functions and Helpers&lt;/li&gt;&lt;li&gt;Manipulation of the DOM elements&lt;/li&gt;&lt;li&gt;visualization effects&lt;/li&gt;&lt;li&gt;Dimensions Utilities&lt;/li&gt;&lt;li&gt;Data Storage and manipulation utilities&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;simple on load execution mechanism&lt;/h3&gt;
&lt;p&gt;JQuery provides a way to load code directly on load, by using the .ready() function. In that way, it is possible to initialize a certain number of elements once the web page is ready.
&lt;blockquote&gt;$(document).ready(function() {     &lt;br /&gt;
&amp;nbsp;  // Handler for .ready() called.     &lt;br /&gt;
});&lt;/blockquote&gt;&lt;/p&gt;
&lt;h3&gt;Simple Query Mechanism using Selectors and Syntactic Sugar $()&lt;/h3&gt;
&lt;p&gt;As prototype and other frameworks provide, jquery provides the means of selecting elements using css selectors. The function to use for this is the &lt;span style="font-style:italic;"&gt;jQuery()&lt;/span&gt; function ( or its equivalent syntactic sugar: &lt;span style="font-style:italic;"&gt;$()&lt;/span&gt;).&lt;/p&gt;
&lt;h3&gt;Simple Ajax functions and Helpers&lt;/h3&gt;
&lt;p&gt;jQuery provides a simple framework to perform Ajax Queries of the sort:
&lt;blockquote&gt;$.ajax({ url: "urltocall",     &lt;br /&gt;
&amp;nbsp; context: document.body,      &lt;br /&gt;
&amp;nbsp; success: function(){     &lt;br /&gt;
&amp;nbsp;  // code to perform when the ajax query has been a success      &lt;br /&gt;
      }}     &lt;br /&gt;
);&lt;/blockquote&gt; Some callback functions can be given as parameters, in order to act depending on the result of the call. In the previous example, the function success is a callback function used when the Ajax request was successful. Other possibility is for example error. But also the request parameters can be changed before the HttpRequest is sent to the server.&lt;/p&gt;
&lt;h3&gt;Manipulation of the DOM Elements&lt;/h3&gt;
&lt;p&gt;jQuery provides a great number of utility methods to interact with DOM elements retrieved for instance with the CSS selectors mentioned earlier. For instance, you can add a title ( here an h2 element )  to all elements of the class container. 
&lt;blockquote&gt;$('.container').append($('h2'));&lt;/blockquote&gt; Other possibilities is to prepend, the content to an element. &lt;/p&gt;&lt;p&gt;Two other methods can be useful: &lt;span style="font-style:italic;"&gt;html()&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;text()&lt;/span&gt; which return respectively the HTML content or the text content of the element or its child elements.&lt;/p&gt;
&lt;h3&gt;Visualization Effects&lt;/h3&gt;
&lt;p&gt;JQuery provides the possibility to animate the elements of the page. For example, if the user clics on an elements a small animation can be displayed to inform the user that something  actually occurs.
&lt;blockquote&gt;jQuery('#elementToClick').click(function() {     &lt;br /&gt;
&amp;nbsp;  $('#elementToAnimate').animate({     &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    opacity: 0.35,     &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    left: '+=20',     &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    height: 'toggle'     &lt;br /&gt;
&amp;nbsp;  }, 5000, function() {     &lt;br /&gt;
&amp;nbsp;    // the code called once the animation is finished     &lt;br /&gt;
&amp;nbsp;  });     &lt;br /&gt;
});&lt;/blockquote&gt;&lt;/p&gt;
&lt;h3&gt;Dimensions Utilities&lt;/h3&gt;
&lt;p&gt;JQuery provides a number of useful methods to determinate the dimensions of objects.
See for example: 
&lt;blockquote&gt;$(window).height();   // returns height of browser viewport      &lt;br /&gt;
$(document).height(); // returns height of HTML document&lt;/blockquote&gt;


Other methods are for example &lt;span style="font-style:italic;"&gt;width()&lt;/span&gt;, &lt;span style="font-style:italic;"&gt;innerHeight()&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;innerWidth()&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Data Storage and manipulation Utilities&lt;/h3&gt;
&lt;p&gt;&lt;blockquote&gt; // code to add data to an element elementToStoreData&lt;br /&gt;
$('elementToStoreData').data('age', 52);&lt;br /&gt;
$('elementToStoreData').data('nameInfo', { firstName: 'Mark', lastName: 'MacGuire });&lt;br /&gt;
// code to remove the data from the element elementToStoreData&lt;br /&gt;
$('elementToStoreData').removeData('age');&lt;br /&gt;
$('elementToStoreData').removeData('nameInfo');&lt;br /&gt;
$('elementToStoreData').removeData(); // removes all entries stored in this Element&lt;br /&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;Visit the &lt;a href="http://api.jquery.com/"&gt;API page&lt;/a&gt; for more informations.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-8308158488519665834?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/8308158488519665834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=8308158488519665834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8308158488519665834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8308158488519665834'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/jquery-basics.html' title='JQuery - Basics'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4374576636847830248</id><published>2010-04-21T20:15:00.025+02:00</published><updated>2010-04-24T01:19:07.182+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prototype.js'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><title type='text'>prototype javascript - API features</title><content type='html'>&lt;p&gt;Prototype is a minimalistic javascript Ajax and Dom manipulation framework.&lt;/p&gt;
&lt;p&gt;By taking a look at the &lt;a href="http://api.prototypejs.org/"&gt;API&lt;/a&gt;, I decided to sum up the interesting features of prototype (version 1.6). Here are the following useful features of prototype&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Ajax Requests&lt;/li&gt;&lt;li&gt;syntactic sugar&lt;/li&gt;&lt;li&gt;CSS selector manipulation&lt;/li&gt;&lt;li&gt;enumeration&lt;/li&gt;&lt;li&gt;String manipulation and Template mechanism&lt;/li&gt;&lt;li&gt;periodical workers&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Ajax Requests&lt;/h3&gt;
&lt;p&gt;The prototype API provides a simple browser independant API to perform Ajax requests:
&lt;blockquote&gt;new Ajax.Request('/theserverURLpath', {     &lt;br /&gt;
&amp;nbsp;  onSuccess: function(response) {     &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    // Handle the response content...     &lt;br /&gt;
&amp;nbsp;  }     &lt;br /&gt;
});&lt;/blockquote&gt;
Just as in other javascript frameworks to perform Ajax requests you can set callback depending
on the type of response you obtain from the server. The code might look like this:
&lt;blockquote&gt;new Ajax.Request('/theserverURLpath', {     &lt;br /&gt;
&amp;nbsp;  onSuccess: function(response) {     &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    alert('The call was successful');     &lt;br /&gt;
&amp;nbsp;  },     &lt;br /&gt;
&amp;nbsp;  onFailure: function(response) {     &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    alert('The call has failed');     &lt;br /&gt;
&amp;nbsp;  }     &lt;br /&gt;
});&lt;/blockquote&gt;&lt;/p&gt;
&lt;h3&gt;Syntactic Sugar and Element Manipulation&lt;/h3&gt;
&lt;p&gt;Prototype provides a certain number of shortcuts to obtain elements more easily. For example, you can directly obtain elements when you know their id (for example for an element with id: 'myid', you can get the element using the call to &lt;span style="font-style:italic;"&gt;$('myid')&lt;/span&gt;)&lt;/p&gt;&lt;p&gt;Other example of syntactic sugar are $F (returns the value of a form element), $A return an array from an iterable element, $H (returns a Hash map), $R (returns an object range), $w (returns the array from the splitted string given as argument).&lt;/p&gt;
&lt;h3&gt;CSS selector manipulation&lt;/h3&gt;
&lt;p&gt;CSS Selectors provides a powerful means of selecting elements of a web page either using their tags, or their ids, or their css class... prototype provides a selector class and two syntactic sugar constructs to perform easy queries using selectors.&lt;/p&gt;
&lt;h3&gt;Enumerations&lt;/h3&gt;
&lt;p&gt;Prototype provides a mixin in order to create enumerable classes more easily. The following example illustrate the definition and the use of the mixin.
&lt;blockquote&gt; var theEnumerableClass = Class.create(Enumerable, {     &lt;br /&gt;
&amp;nbsp;  initialize: function() {      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    // the constructor code     &lt;br /&gt;
&amp;nbsp;  },     &lt;br /&gt;
&amp;nbsp;   _each: function(iterator) {     &lt;br /&gt;
&amp;nbsp;    // Your iteration code, invoking iterator at every turn     &lt;br /&gt;
&amp;nbsp;  },     &lt;br /&gt;
&amp;nbsp;   // Your other methods here, including Enumerable overrides     &lt;br /&gt;
});
 var enumerableInstance = new theEnumbarableClass({});
&lt;/blockquote&gt; 
After having defined the enumerable class and instance, prototype provides a number of 
methods from the Enumerable mixin in order to perform actions on the enumerable aspect of the instance, for instance using the &lt;span style="font-style:italic;"&gt;each()&lt;/span&gt; function.
&lt;/p&gt;
&lt;h3&gt;String manipulation and Template mechanism&lt;/h3&gt;
&lt;p&gt;Prototype provides a number of string manipulations extensions of the string class as well as a regular expression framework.&lt;/p&gt;
&lt;p&gt;It also provides the usual template mechanism which allows the  passing of arguments to a given string. 
&lt;blockquote&gt;var myTemplate = new Template('Dear #{title} #{firstname} #{lastname}.');    &lt;br /&gt;
var personInfo = {   &lt;br /&gt;
&amp;nbsp;  title: 'Dr',   &lt;br /&gt;
&amp;nbsp;  firstname: 'Homer',   &lt;br /&gt;
&amp;nbsp;  lastname: 'Simpson'   &lt;br /&gt;
};   &lt;br /&gt;
// let's format our data   &lt;br /&gt;
myTemplate.evaluate(personInfo);   &lt;br /&gt;
&lt;/blockquote&gt;&lt;/p&gt;
&lt;h3&gt;periodical workers&lt;/h3&gt;
&lt;p&gt;Like many other javascript frameworks, prototype has also a mechanism to perform some tasks periodically. The code is clear in itself.
&lt;blockquote&gt;new PeriodicalExecuter(function (pe) {
  // the code to be performed every five seconds !!!
}, 5);&lt;/blockquote&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4374576636847830248?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4374576636847830248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4374576636847830248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4374576636847830248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4374576636847830248'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/prototype-javascript-api-features.html' title='prototype javascript - API features'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6798355685100039465</id><published>2010-04-21T18:27:00.005+02:00</published><updated>2010-04-22T15:12:52.128+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='useful'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='clone'/><title type='text'>git trick - shallow cloning</title><content type='html'>&lt;p&gt;I am reading Oreilly's kurz &amp;amp; gut Git book. And I discovered, that it is possible to clone with a very shallow level by using the "--depth=" option. For example, if you want only to clone the repository with only the three latest commit, you may use:&lt;br/&gt;
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;$mygitworkingdirectory&gt; git clone --depth=3 git:path/repository&lt;/span&gt;&lt;/blockquote&gt; &lt;br/&gt;Isn't that great.&lt;/p&gt;

Git rocks !!! ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6798355685100039465?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6798355685100039465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6798355685100039465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6798355685100039465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6798355685100039465'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/git-trick-shallow-cloning.html' title='git trick - shallow cloning'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3184603843883432663</id><published>2010-04-21T17:44:00.016+02:00</published><updated>2010-04-24T01:24:20.384+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qooxdoo'/><category scheme='http://www.blogger.com/atom/ns#' term='quick testing'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='qwt'/><title type='text'>Installing qwt (Qooxdoo Windowing Toolkit)</title><content type='html'>&lt;p&gt;After trying qooxdoo, I natually tried QWT, which is a simple implementation of the windowing toolkit with java. The default project generated for qwt is basicall the same as the one provided by qooxdoo. However, the main idea is to use java as programming language. The javascript components are then generated I suppose.&lt;/p&gt; 
&lt;h3&gt;Getting QWT to run with maven without the installed Maven&lt;/h3&gt;
&lt;p&gt;The QWT install package contains a maven instance. However, I already have two instances of maven installed on my computer, therefore I prefered using my own maven instance. This worked quite well after I installed the qooxdoo files as well as some eclipse base package in my local repository. Moreover I need the following setting:&lt;/p&gt;
&lt;verbatim&gt;&amp;lt;settings&gt;    &lt;br /&gt;
&amp;nbsp;  &amp;lt;pluginGroups&gt;   &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    &amp;lt;pluginGroup&gt;org.qooxdoo.toolkit&amp;lt;/pluginGroup&gt;   &lt;br /&gt;
&amp;nbsp;  &amp;lt;/pluginGroups&gt;   &lt;br /&gt;
&amp;lt;/settings&gt;&lt;/verbatim&gt;
&lt;p&gt;Then I could use the qwt project generator:
&lt;span style="font-style:italic;"&gt;$qwt-workplace&gt; mvn-jul qx:new -Dpackage=de.deprofundis.exampleqwt -Dorg.apache.maven.global-settings=`pwd`/../qwt-0.2.0/bin/settings.xml&lt;/span&gt;&lt;br/&gt;
and then I could change in the directory "exampleqwt", where there is a src directory as well as a
pom.xml.&lt;/p&gt;
&lt;p&gt;Installing the project in my repository was easy:&lt;br/&gt;
&lt;span style="font-style:italic;"&gt;$exampleqwt&gt; mvn package -Dorg.apache.maven.global-settings=`pwd`/../qwt-0.2.0/bin/settings.xml&lt;/span&gt;&lt;br/&gt;
Then using qx:run task from the qwt maven plugin:&lt;br/&gt;&lt;span style="font-style:italic;"&gt;$exampleqwt&gt; mvn qx:run -Dorg.apache.maven.global-settings=`pwd`/../qwt-0.2.0/bin/settings.xml&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This started an instance of tomcat on port 8080. Therefore I could then test the application.&lt;/p&gt;
&lt;h3&gt;First Comments&lt;/h3&gt;
&lt;p&gt;The generated code is an index.html (or index.html.gz for browser/servers supporting gz I suppose. This is a huge html file containing the core content of the javascript for running qwt. I wonder why the programmers have not put this generated code in a javascript file and loaded this file.&lt;/p&gt;
&lt;p&gt;The directory layout of a qwt project is described in a wiki page: &lt;a href="http://qooxdoo.org/contrib/project/qwt/0.2.0/usage/directory_layout"&gt;directory_layout&lt;/a&gt;. Note that, there is a logging mechanism. Though I have not yet looked at what it really does. There is also a list of the modules to be loaded and the index.html which has been created.&lt;/p&gt;
&lt;p&gt;From all this, it is not yet clear to me how to have a more modular approach, so that the qooxdoo code does not need to be loaded every time I need a qooxdoo component. I suppose this might be solved in a later version of the code.&lt;/p&gt;
&lt;h3&gt;Caveats&lt;/h3&gt;
&lt;p&gt;According to the following &lt;a href="http://qooxdoo.org/contrib/project/qwt/0.2.0/usage/distribution"&gt;page&lt;/a&gt; of the documentation, QWT only works in a Tomcat 6 Servlet instance:
&lt;blockquote&gt;In order to distribute your QWT application, simply run mvn clean package to generate a target/yourapp-version.war file. Your application should run in any Tomcat 6 servlet container.

QWT applications follow Sun’s servlet specification 2.5. Unfortunately, the servlet specification has currently no support for “reverse Ajax” (sometimes called “Comet”). QWT uses Tomcat 6 features to work-around this limitation. As a consequence, you cannot deploy in other servlet containers. &lt;/blockquote&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3184603843883432663?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3184603843883432663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3184603843883432663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3184603843883432663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3184603843883432663'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/installing-qwt-qooxdoo-windowing.html' title='Installing qwt (Qooxdoo Windowing Toolkit)'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3095397584077358673</id><published>2010-04-21T16:18:00.006+02:00</published><updated>2010-04-22T17:47:32.993+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qooxdoo'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><title type='text'>Trying qooxdoo</title><content type='html'>I have been trying qooxdoo?

And I do not find it very easy to use. But I am not really clear about every commands:

So here is what I did:

&lt;ol&gt;
&lt;li&gt;checked  the qooxdoo sdk and generated a project using&lt;br/&gt; /qooxdoo-1.0.1/tools/bin/create-application.py --name mytest &lt;br/&gt; in the directory where the project should be generated.&lt;/li&gt;
&lt;li&gt; this created the template of the demo project but it took some time&lt;/li&gt;
&lt;li&gt; to see the default I used: ./generate.py source-all as suggested in the documentation and this took also along time&lt;/li&gt;
&lt;li&gt;once done I looked at the result in the browser ( without a webserver!) &lt;/li&gt;
&lt;li&gt;I added code for a tree, and reused &lt;br/&gt;./generate.py source-all &lt;br/&gt; (maybe I should have used ./generate.py source &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One of the disadvantage of course is the use of python. I have to take a look at what RAP exactly does with the code. It probably does not need to use any python or generation since the application components are already generated. But I should check.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3095397584077358673?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3095397584077358673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3095397584077358673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3095397584077358673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3095397584077358673'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/trying-qooxdoo.html' title='Trying qooxdoo'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4175697740493090922</id><published>2010-04-21T11:19:00.011+02:00</published><updated>2010-04-21T11:43:41.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='quick testing'/><category scheme='http://www.blogger.com/atom/ns#' term='firebug'/><title type='text'>Use  JQuery in firebug with jQueryfy</title><content type='html'>&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=JB6MIV_lHI0&amp;feature=related"&gt;Here&lt;/a&gt; is a great presentation on how to use &lt;a href="https://addons.mozilla.org/de/firefox/addon/1843"&gt;firebug&lt;/a&gt; to test interactively &lt;a href="http://jquery.com/"&gt;jquery&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet"&gt;JQueryfy&lt;/a&gt; is a bookmarklet to load jquery in any web page easily.&lt;/p&gt;&lt;p&gt;So all you have to do is:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;go to some web page.&lt;/li&gt;&lt;li&gt;Load Jquery with jQueryfy&lt;/li&gt;&lt;li&gt; then start firebug&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Then go to the console of firebug, and type jQuery(). This should return &lt;br/&gt; "function()".&lt;/p&gt;&lt;p&gt;In order to have all the images disappear for example, you can use:&lt;br/&gt; jQuery('img').hide()&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Of course you need to use a correct &lt;a href="http://api.jquery.com/category/selectors/"&gt;selector&lt;/a&gt; for your queries. But isn't that just great ?&lt;/p&gt;&lt;p&gt;Note: I had to update my version of firebug to have all this working.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4175697740493090922?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4175697740493090922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4175697740493090922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4175697740493090922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4175697740493090922'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/use-jquery-in-firebug-with-jqueryfy.html' title='Use  JQuery in firebug with jQueryfy'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7108385318646964840</id><published>2010-04-18T16:48:00.006+02:00</published><updated>2010-04-18T17:34:57.732+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pair programming'/><category scheme='http://www.blogger.com/atom/ns#' term='agile methods'/><title type='text'>Agile Methods - Pair Programming</title><content type='html'>&lt;p&gt;I had a job interview the week before and I enjoyed the possibility of participating in a mock job day last week. This day was really interesting for me. I could learn a lot about agile methods. In particular I noticed how difficult it was for me to interact in pair programming work.&lt;/p&gt;&lt;p&gt;After that I looked more into agile methods to try to see what I was missing and what I could have done better. The following article: &lt;a href="http://collaboration.csc.ncsu.edu/laurie/Papers/Kindergarten.PDF"&gt;All I Really Need to Know about Pair Programming I Learned In Kindergarten&lt;/a&gt; gives some tips on how to work with pair programming. It also states that pair programming needs a little adaptation&lt;/p&gt;&lt;p&gt;I summed up in the following paragraphs the positive and negative aspects of pair programming.&lt;/p&gt;

&lt;h3&gt;Positive Aspects&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;More structured: Pairs usually choose to code at more appropriate positions and have shorter breaks.&lt;/li&gt;
    &lt;li&gt; Better Code: during pair programming, programmers come less into dead ends and achieve a better quality.&lt;/li&gt;
    &lt;li&gt; Better distributed Flow: Pair programming has another kind of Flow: a programmer can choose to communicate to his partner the current state and let the partner resume coding at that place. Stops in the coding can be thus better minimized.&lt;/li&gt;
    &lt;/li&gt; Fun Working: Pair programming is often more thrilling and interesting as lone development.&lt;/li&gt;
    &lt;li&gt; Distribution of Project Knowledge: When  Pair programming is used, and partners are changed frequently, programmers obtain a better knowledge of the whole code base. Preventing the loss of knowledge assets when programmers go.&lt;/li&gt;
    &lt;li&gt; Mentoring: Every one has knowledge that others do not. Pair programmierung distributes knowledge and skills.&lt;/li&gt;
    &lt;li&gt; Team consolidation: people learn to know each other better, which improves the collaboration in the team.&lt;/li&gt;
    &lt;li&gt; Less Break: Pairs are less frequently disturbed as people working alone.&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Disadvantages&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; Cost: Advantages such as better quality and efficience need a number of iterations to be able to work correctly, therefore the cost in early phases are higher.&lt;/li&gt;
    &lt;li&gt; Finding Team Elements : not every programmer can be used together and getting used to pair programming may need some time &lt;/li&gt;
    &lt;li&gt; Autority problem: Who decides the solution to use when the solution are contradicting each others?&lt;/li&gt;
    &lt;li&gt; Time pressure: programmers may require more time because of mentoring tasks or to adapt to different code styles and strategies&lt;/li&gt;
    &lt;li&gt; Code copyright: it is not always clear who is the real owner of the code.&lt;/li&gt;
    &lt;li&gt; accountability: when mistake or copyright violations occur, it may be difficult to decide who is accountable.&lt;/li&gt;
    &lt;li&gt; Team size: it is more difficult for larger teams to decide what and how the code should be solved, therefore pair programming is more efficient for smaller teams&lt;/li&gt;
    &lt;li&gt; Knowledge requirements: if different types of tasks need to be performed, programmers need to know more.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7108385318646964840?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7108385318646964840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7108385318646964840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7108385318646964840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7108385318646964840'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/04/agile-methods-pair-programming.html' title='Agile Methods - Pair Programming'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4520531225542958432</id><published>2010-03-18T09:00:00.008+01:00</published><updated>2010-04-21T11:37:45.295+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>Virtualization architectures</title><content type='html'>&lt;p&gt;The linux technical review  presented an overview of the different type of virtualizations architectures. I recopied the table as a reminder.&lt;p&gt;&lt;p&gt;From the Linux Magazine 01/2010 Linux Technical Review:&lt;TABLE border="2" style="border-width:2px;"&gt;
&lt;tr&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;Gleiche ISA&lt;/td&gt; &lt;td&gt;   Verschiedene ISA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="4"&gt;System VMs &lt;/td&gt;&lt;td&gt;Classic Hypervisors &lt;/td&gt;&lt;td&gt;   System Emulators &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;z.B.: Xen, VMware ESX   &lt;/td&gt;&lt;td&gt; z.B.: Bochs, Qemu &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hosted VMs &lt;/td&gt;&lt;td&gt;                Co-Designed VMs &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;z.B.: VMware Workstation   &lt;/td&gt;&lt;td&gt;          z.B. AS/40&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td rowspan="4"&gt; Prozess VMs&lt;/td&gt;&lt;td&gt;      Multiprogramming                   &lt;/td&gt; &lt;td&gt;              Dynamic Translation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;   z.B.: Linux, Windows       &lt;/td&gt; &lt;td&gt;       z.B. FX!32, Transmeta  &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;  Binary Recoding             &lt;/td&gt; &lt;td&gt;      HLL VMs&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;z.B.: Valgrind &lt;/td&gt; &lt;td&gt; z.B. Java VM&lt;/td&gt;&lt;/tr&gt;&lt;/tr&gt;&lt;/TABLE&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4520531225542958432?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4520531225542958432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4520531225542958432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4520531225542958432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4520531225542958432'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/03/virtualization-architectures.html' title='Virtualization architectures'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2564898867899847355</id><published>2010-03-16T16:24:00.003+01:00</published><updated>2010-04-18T18:29:25.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='applet'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><title type='text'>jsp:plugin</title><content type='html'>Rereading the Java EE 5 Tutorial I learnt there is the possibility to use the &lt;a href="http://java.sun.com/products/jsp/tags/syntaxref.fm12.html"&gt;jsp:plugin&lt;/a&gt; to embed java applet into a page without having to take care of which browser is behind it. I still have to test this but this sounds really good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2564898867899847355?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2564898867899847355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2564898867899847355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2564898867899847355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2564898867899847355'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/03/jspplugin.html' title='jsp:plugin'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2261757859348697161</id><published>2010-03-08T04:32:00.005+01:00</published><updated>2010-04-22T17:45:29.004+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='commandline'/><title type='text'>commandlinefu</title><content type='html'>&lt;p&gt;I bought a number of linux magazine during my week holiday and discovered a number of new interesting, useful things:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://one.ubuntu.com"&gt;Ubuntu One&lt;/a&gt;, a way to store data on some ubuntu servers to share it with other ubuntu users (I must check that) &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.writerscafe.co.uk/ "&gt;Writer's Cafe&lt;/a&gt;, a tool helping creative writing&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.cs.hmc.edu/~keller/jazz/improvisor/"&gt;impro-visor&lt;/a&gt;, some GPL software working with lead sheets.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;And one thing I really found useful is: &lt;a href="http://www.commandlinefu.com/"&gt;commandlinefu (http://www.commandlinefu.com/)&lt;/a&gt;. This site provides a way for people to advertise useful commandline tricks. I should probably follow them, I will learn a lot. And it already started.&lt;/p&gt;

&lt;p&gt;I already learnt a new useful command: youtube-dl. Say you have some google URL:&lt;/p&gt;

&lt;span style="font-style:italic;"&gt;http://www.youtube.com/watch?v=1504cSBhWG0&lt;/span&gt;

&lt;p&gt;And you want to get the url of the file being downloaded, then you can use (-b for best quality and -g for just getting the url):
&lt;span style="font-style:italic;"&gt;$&gt; youtube-dl -b -g http://www.youtube.com/watch?v=1504cSBhWG0&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Of course this command has a certain number of options.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2261757859348697161?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2261757859348697161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2261757859348697161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2261757859348697161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2261757859348697161'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/03/commandlinefu.html' title='commandlinefu'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3083038197373775222</id><published>2010-02-18T14:10:00.004+01:00</published><updated>2010-04-21T11:38:38.061+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='recordmydesktop'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='screencast'/><title type='text'>Desktop recording Suse</title><content type='html'>I have just tried a desktop recording software under OpenSuse 11.2: recordmydesktop. It really worked as a charm for the video part even with thesound.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3083038197373775222?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3083038197373775222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3083038197373775222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3083038197373775222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3083038197373775222'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/02/desktop-recording-suse.html' title='Desktop recording Suse'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-8095855486954681653</id><published>2010-02-18T13:37:00.012+01:00</published><updated>2010-02-18T13:53:03.395+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><title type='text'>Eclipse 3.5 Windows and Unicode and Subversion</title><content type='html'>&lt;h3&gt;File.encoding in Eclipse and strange encoding problem in JavaSource UTF-8 files&lt;/h3&gt;
&lt;p&gt;While trying to deploy the package I have been deploying, a few  problem arised yesterday.&lt;/p&gt;
&lt;p&gt;We first had checked out a Web application. &lt;/p&gt;
&lt;p&gt;Afterwards we set the default encoding to UTF-8 for a few files in the Window &gt; Preferences &gt; General &gt; Content-Type &gt; Text &gt; JSP .&lt;/p&gt;
&lt;p&gt;We also changed the encoding in the eclipse.ini file, adding the following line to the java command
-Dfile.encoding=UTF-8 in the eclipse.ini
&lt;/p&gt;
&lt;p&gt;
We had strange text where umlauts had been destroyed. The text was in UTF-8 in UTF-8 files in the JavaSource directory. By Debugging, we discovered that they were also called by UTF-8 JSP or UTF-8 Java Files. &lt;/p&gt;
&lt;p&gt;The solution has been to check the Application again. Afterwards the text was displayed correctly&lt;/p&gt;
&lt;h3&gt;Subversion problem while checking files with same names with different Case&lt;/h3&gt;
&lt;p&gt;The other problem we had, was caused by two files having the same names but with different case: file.jsp and File.jsp. This caused some kind of conflict when checking the file out with subclipse.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-8095855486954681653?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/8095855486954681653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=8095855486954681653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8095855486954681653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8095855486954681653'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/02/eclipse-35-windows-and-unicode-and.html' title='Eclipse 3.5 Windows and Unicode and Subversion'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3904608540464009463</id><published>2010-02-15T17:11:00.004+01:00</published><updated>2010-02-15T17:15:55.328+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='content-type'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='inc'/><title type='text'>Adding .inc as content Type under eclipse</title><content type='html'>After spending much time looking for the place of the configuration for adding .inc as possible types for files in eclipse, I had to ask a friend again. 

So here is the place where you do it in Galileo:

Window &gt; Preferences &gt; General &gt; Content Types 

Choose Text &gt; JSP &gt; JSP Fragment

And add *.inc to the list of files. You probably also should set the Default encoding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3904608540464009463?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3904608540464009463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3904608540464009463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3904608540464009463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3904608540464009463'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/02/adding-inc-as-content-type-under.html' title='Adding .inc as content Type under eclipse'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-9155685944353480373</id><published>2010-01-21T18:27:00.003+01:00</published><updated>2010-04-23T11:16:04.374+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gradle'/><category scheme='http://www.blogger.com/atom/ns#' term='project management tools'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Gradle - a groovy Make</title><content type='html'>&lt;p&gt;So in my search for some maven solution. I fell on YAPMT (Yet Another Project Management Tool).  I am not sure it does the same things as Maven. It uses Maven and looks much more like a script mechanism. So I will have to see whether it is suitable. While Maven is quite useful since it has a lot of plugins and a really well organized workflow. I would say that gradle seems to be like a groovy shell with a certain number of plugins for project management.&lt;/p&gt;

&lt;p&gt;I will have to keep an eye on it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-9155685944353480373?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/9155685944353480373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=9155685944353480373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/9155685944353480373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/9155685944353480373'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/gradle-groovy-make.html' title='Gradle - a groovy Make'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4001399058115289025</id><published>2010-01-17T21:21:00.006+01:00</published><updated>2010-01-17T21:30:54.755+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript framework'/><title type='text'>Dojo Toolkit - Yet another javascript toolkit</title><content type='html'>After looking at roo, I noticed that they used the &lt;a href="http://www.dojotoolkit.org/"&gt;Dojo Toolkit&lt;/a&gt; for their default implementation of the web toolkit of the page. I Have not yet done a real comparison of the two frameworks. It seems to have more or less the same functionality as &lt;a href="http://www.extjs.com/"&gt;ext-js&lt;/a&gt;. I will have to keep an eye on both systems.

At least from the licence point of view is Dojo more appropriate for companies, since it uses a BSD/Apache licence, where as ext-js under GPL ( I do not think that it has also a LGPL version apart from the core).


Dojo seems to be composed of three parts:
&lt;ul&gt;&lt;li&gt;Dojo core&lt;/li&gt;&lt;li&gt;dijit&lt;/li&gt;&lt;li&gt;dojox&lt;/li&gt;&lt;/ul&gt;

Dojo core contains a number of utility methods for querying web pages content and perform operations on it. Dijit is a widget mechanism. Dojox are extensions based on dijit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4001399058115289025?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4001399058115289025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4001399058115289025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4001399058115289025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4001399058115289025'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/dojo-toolkit-yet-another-javascript.html' title='Dojo Toolkit - Yet another javascript toolkit'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6562953759414103148</id><published>2010-01-16T01:14:00.006+01:00</published><updated>2010-04-18T18:30:29.377+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='urlrewrite'/><title type='text'>URL Rewriting Code in Java</title><content type='html'>Some time ago, I had to take a look and have something work with URL rewriting. My colleague told me there was an URL rewriting tool called URLRewrite. I will later introduce it here: &lt;a href="http://tuckey.org/urlrewrite/"&gt;http://tuckey.org/urlrewrite/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6562953759414103148?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6562953759414103148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6562953759414103148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6562953759414103148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6562953759414103148'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/url-rewriting-code-in-java.html' title='URL Rewriting Code in Java'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3402616450110316944</id><published>2010-01-16T00:58:00.008+01:00</published><updated>2010-05-04T11:52:04.477+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='system'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>On Top of the Monitoring</title><content type='html'>&lt;p&gt;So the new trend in naming of projects is to top every thing, in order to imply that these tools are similar to the top command. So the idea is to have a console (text-based) tool indicating what process or activity are currently at the top of their category (e.g memory consumption, processor last)...&lt;/p&gt;
&lt;p&gt;So here are the few project I just discovered:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;htop&lt;/li&gt;&lt;li&gt;innotop&lt;/li&gt;&lt;li&gt;ApacheTop&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;And I suppose there are many others.&lt;/p&gt;
&lt;h3&gt;htop&lt;/h3&gt;&lt;p&gt;htop is the closest to (the ;-) ) top, since it is a kind of enhanced top. I tried it. And it was quite nice.&lt;/p&gt;
&lt;h3&gt;innotop&lt;/h3&gt;&lt;p&gt;The name of this one comes from innoDB which is one of the possible backend to a mysql database. I have not tried this tool but I suppose it is like top but just for a mysql database.&lt;/p&gt;
&lt;h3&gt;ApacheTop&lt;/h3&gt;&lt;p&gt;A kind of top for apache request. I think I should take a look, because it might be useful for debugging purposes of our applications.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3402616450110316944?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3402616450110316944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3402616450110316944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3402616450110316944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3402616450110316944'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/on-top-of-monitoring.html' title='On Top of the Monitoring'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-8651094907783247726</id><published>2010-01-14T14:09:00.011+01:00</published><updated>2010-04-23T11:15:32.173+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcuts'/><title type='text'>Coole Eclipse Shortcuts</title><content type='html'>&lt;p&gt;I found this link on http://viralpatel.net/blogs/2009/07/20-very-useful-eclipse-ide-shortcuts-for-developers.html.&lt;/p&gt;

&lt;p&gt;I found the following shortcuts really great:
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;# Alt + Shift + L : Extract to Local Variable&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;Say you have the following method:
&lt;blockquote&gt;
&lt;span style="font-style:italic;"&gt;public void myTest(){

    String finalVariable = "first part" + "second part"+ "third part";

}
&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;if you select "first part" + "second part" and use the short cut : 
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt; Alt + Shift + L : Extract to Local Variable&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;Then eclipse ask for the name of the new local variable, e.g firstTwoParts, and the method looks like: 


&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;public void myTest(){&lt;br /&gt;
&amp;nbsp;    String firstTwoParts = "first part" + "second part";&lt;br /&gt;
&amp;nbsp;    String finalVariable =  firstTwoParts + "third part";&lt;br /&gt;
}&lt;/blockquote&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;
&lt;span style="font-style:italic;"&gt;# Alt + Shift + M : Extract to Method&lt;/span&gt;&lt;/blockquote&gt;

&lt;p&gt;The same also works with methods. Say you have the following method:
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;
public final static void main(String[] args){&lt;br /&gt;
&amp;nbsp;      if (args.length &gt;2){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;           System.out.println(args[0]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;           System.out.println(args[1]);&lt;br /&gt;
&amp;nbsp;      }&lt;br /&gt;
}&lt;/span&gt;&lt;/blockquote&gt;

if you select the whole if statement up to the }, and use the shortcut: Alt + Shift + M eclipse prompts for the name of the method and creates the parameter, for args.&lt;/p&gt;


&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;
# Alt + Shift + W : show the class in the package view.&lt;/span&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well I did not know that. But this is very useful, because I often need it.
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;
# Ctrl+Q : Last edit&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;There is also a button to find this. But a short cut is even better.
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;
# Alt + Left or Alt + Right : Navigate Left and Right&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;I knew this one but this is also very useful, since it is much quicker than using the mouse every time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-8651094907783247726?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/8651094907783247726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=8651094907783247726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8651094907783247726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8651094907783247726'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/coole-eclipse-shortcuts.html' title='Coole Eclipse Shortcuts'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1757106192759741285</id><published>2010-01-14T13:22:00.002+01:00</published><updated>2010-04-22T17:43:29.660+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snippet'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='scrapbook'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Java scrapbook page</title><content type='html'>I discovered the java scrapbook page. Which allows you to try simple snippets of code very easily. I should try that. It is really cool.

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1757106192759741285?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1757106192759741285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1757106192759741285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1757106192759741285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1757106192759741285'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/java-scrapbook-page.html' title='Java scrapbook page'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6626479120161505416</id><published>2010-01-14T13:20:00.005+01:00</published><updated>2010-04-23T15:27:49.946+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='myllyn'/><title type='text'>Myllyn WikiText - Edit documentation easily for different formats</title><content type='html'>&lt;p&gt;I just discovered that there is in the Eclipse Galileo a very easy and simple way to edit documentation called Wikitext. Documentation for this can be found in the eclipse documentation. Try it. It is just great.&lt;/p&gt;

&lt;p&gt;It is in that way possible to use a WikiText format (out of a choice of 3 or 4 different one to write documentation. This Wikitext cabn be then used to generate html or docbook format. This is therefore very useful to create documentation.&lt;/p&gt;

&lt;p&gt;See more at &lt;a href="http://help.eclipse.org/galileo/topic/org.eclipse.mylyn.wikitext.help.ui/help/Mylyn%20WikiText%20User%20Guide.html"&gt;http://help.eclipse.org/galileo/topic/org.eclipse.mylyn.wikitext.help.ui/help/Mylyn%20WikiText%20User%20Guide.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6626479120161505416?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6626479120161505416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6626479120161505416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6626479120161505416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6626479120161505416'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/myllyn-wikitext-edit-documentation.html' title='Myllyn WikiText - Edit documentation easily for different formats'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1315100410220868934</id><published>2010-01-14T13:18:00.010+01:00</published><updated>2010-01-15T22:50:42.410+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rapid development'/><category scheme='http://www.blogger.com/atom/ns#' term='roo'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>ROO - a spring and Maven based rapid development framework</title><content type='html'>I just discovered ROO. I tried it. But I had some problems running it under fedora with java 1.6 and maven 2.0.8. It seems that it need maven 2.0.9. 

The idea behind roo is to have a command line based system to develop. It is somewhat similar to Ruby on Rails. You issue commands and create and edit the entities that way. 

I give here an example of script:

&lt;blockquote&gt;
project --topLevelPackage org.myexample
persistence setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT
database properties list
database properties set --key database.url --value jdbc:hsqldb:${user.home}/tmp/datasources/my-example
database properties list
&lt;/blockquote&gt;

This first part of the script creates a project pom.xml (for maven) and sets the necessary properties for working with hibernate using an in memory database.

&lt;blockquote&gt;
entity --class ~.domain.MyExample
field string code --notNull --sizeMin 32 --sizeMax 32
field string firstName --sizeMax 65
field string lastName --sizeMax 65
field string email --sizeMax 65
field number age --type java.lang.Integer
field date confirmed --type java.util.Date


&lt;/blockquote&gt;

This second party from the script  creates an entity: MyExample.
It also creates a number of fields: code, firstName, lastName, email.

The next part of the script takes care of creating controllers and tests.
The line:
&lt;blockquote&gt; controller scaffold ~.web.MyExampleController &lt;/blockquote&gt;

creates a controller for CRUD operations.

It also performs the tests to make sure it works correctly.
Finally, it sets up the logging framework as well as the security framework.

&lt;blockquote&gt;
test integration
controller scaffold ~.web.MyExampleController
selenium test --controller ~.web.MyExampleController

perform test

// (OPTION: quit, mvn tomcat:run, localhost:8080/myexample, mvn selenium:selenese)

logging setup --level DEBUG --package WEB
security setup

&lt;/blockquote&gt;

The next section creates a new controller class called: 
org.myexample.web.My2ndExampleController.  It lists the finders 
and adds the finder to the class.

&lt;blockquote&gt;
controller class --class ~.web.My2ndExampleController
finder list --class ~.domain.MyExample --filter code,equ
finder add --finderName findMyExamplesByCodeEquals

perform eclipse
&lt;/blockquote&gt;

At the end the perform eclipse sets the system for using the system under eclipse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1315100410220868934?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1315100410220868934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1315100410220868934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1315100410220868934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1315100410220868934'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/roo-spring-and-maven-based-rapid.html' title='ROO - a spring and Maven based rapid development framework'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6546615528515989573</id><published>2010-01-13T00:28:00.004+01:00</published><updated>2010-04-24T01:22:20.917+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='useful'/><category scheme='http://www.blogger.com/atom/ns#' term='webapps'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Interesting Loading Properties or files in Servlet Context</title><content type='html'>&lt;p&gt;I was reading the documentation on tomcat in the web to be sure not to miss important information. And I found this at this &lt;a href="http://wiki.apache.org/tomcat/HowTo#How_do_call_tomcat_ant_tasks_to_deploy_webapps.3F"&gt;wiki FAQ&lt;/a&gt;:&lt;/p&gt;


&lt;p&gt;How do I load a properties file? Here are the two most popular ways:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;p&gt; Use a ResourceBundle. See the Java docs for the specifics of how the ResourceBundle class works. Using this method, the properties file must go into the WEB-INF/classes directory or in a jar file contained in the WEB-INF/lib directory.&lt;/p&gt;&lt;/li&gt;
    &lt;li&gt;&lt;p&gt; Another way is to use the method getResourceAsStream() from the ServletContext class. This allows you update the file without having to reload the webapp as required by the first method. Here is an example code snippet, without any error trapping: &lt;/p&gt;
&lt;blockquote&gt;
// Assuming you are in a Servlet extending HttpServlet         &lt;br /&gt;
// This will look for a file called "/more/cowbell.properties" relative        &lt;br /&gt;
// to your servlet Root Context        &lt;br /&gt;
InputStream is = getServletContext().getResourceAsStream("/more/cowbell.properties");        &lt;br /&gt;
Properties  p  = new Properties();        &lt;br /&gt;
p.load(is);        &lt;br /&gt;
is.close();        &lt;br /&gt;
&lt;/blockquote&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6546615528515989573?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6546615528515989573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6546615528515989573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6546615528515989573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6546615528515989573'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/interesting-loading-properties-or-files.html' title='Interesting Loading Properties or files in Servlet Context'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6190415705470370172</id><published>2010-01-07T03:16:00.004+01:00</published><updated>2010-04-23T11:59:16.753+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>The long way to a maveniozed Eclipse: M2Eclipse</title><content type='html'>&lt;p&gt;I had some trouble installing everything for M2Eclipse. One part of the problem was that the fedora installation from eclipse did not really allow the installation of the correct packages. 
I used the description found in the free online book documenting M2: &lt;a href="http://www.sonatype.com/products/m2eclipse/documentation"&gt;Developing with Eclipse and Maven&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Therefore, I downloaded the new eclipse from the web site and then I could install subclipse, AJDT and WST as needed. Though WST should have been there since it was the JEE version of eclipse. &lt;/p&gt;

&lt;p&gt;Then I could install M2 from the &lt;a href="http://m2eclipse.sonatype.org/update/"&gt;http://m2eclipse.sonatype.org/update/&lt;/a&gt; site.&lt;/p&gt;

&lt;p&gt;It is interesting to have the poms. But since the poms are a little complex, I generate them from a more simple xml file. And these XML files can be generated using an even more simple XML file (though this is not yet finished). The goal is to help the bootstrapping of projects. In a simple manner.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6190415705470370172?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6190415705470370172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6190415705470370172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6190415705470370172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6190415705470370172'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2010/01/long-way-to-maveniozed-eclipse.html' title='The long way to a maveniozed Eclipse: M2Eclipse'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6383013474938170614</id><published>2009-09-29T11:40:00.007+02:00</published><updated>2010-04-23T11:04:44.262+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='/dev/null'/><category scheme='http://www.blogger.com/atom/ns#' term='qmail'/><title type='text'>mail to /dev/null</title><content type='html'>&lt;p&gt;At work we has one or two cases where it would be useful to send mails to /dev/null.&lt;/p&gt;

&lt;p&gt;Looking in google for a solution lead to the following solution (presented in &lt;br /&gt;

&lt;a href="http://stackoverflow.com/questions/120587/what-is-the-best-way-to-forward-a-single-qmail-alias-to-dev-null"&gt;http://stackoverflow.com/questions/120587/what-is-the-best-way-to-forward-a-single-qmail-alias-to-dev-null&lt;/a&gt;)

either create an alias with only a comment and no delivery instructions:

&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;$&gt; echo "# drop all messages on the floor" &gt; ~alias/.qmail-devnull&lt;/span&gt;&lt;/blockquote&gt;
(note the # indicating a comment) or with 

&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;$&gt; echo -e '|cat &gt;/dev/null' "\n" &gt;  ~alias/.qmail-devnull&lt;/span&gt;
&lt;/blockquote&gt;
note however that the first seems nicer to me.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6383013474938170614?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6383013474938170614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6383013474938170614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6383013474938170614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6383013474938170614'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/mail-to-devnull.html' title='mail to /dev/null'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7494581795296272562</id><published>2009-09-27T23:57:00.003+02:00</published><updated>2010-04-23T11:05:41.076+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='commandline'/><category scheme='http://www.blogger.com/atom/ns#' term='newgrp'/><title type='text'>newgrp - (su for groups)</title><content type='html'>&lt;p&gt;Well reading an old linux magazine I learnt some thing about the command: newgrp and groups in general.&lt;/p&gt;

&lt;p&gt;First of all, the difference between primary and secondary groups in UNIX was not completely clear to me. &lt;/p&gt;

&lt;p&gt;First of all, a primary or secondary group is the role played by a group for specific user. There is one and only one primary group per user, where as there may be a number of secondary groups (as then defined in /etc/groups.&lt;/p&gt;

&lt;p&gt;Moreover, I learnt you could use the command: newgrp to login and perform all operation with the other group identity. It can be seen as a kind of su. Also groups may have passwords which can be  set and used by their users.&lt;/p&gt;

&lt;p&gt;I also learnt there are also sticky bits and setguid for files and that they correspond to  the same functionality that setuid and the sticky bits for files.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7494581795296272562?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7494581795296272562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7494581795296272562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7494581795296272562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7494581795296272562'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/newgrp-su-for-groups.html' title='newgrp - (su for groups)'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3941884537572960232</id><published>2009-09-27T15:13:00.003+02:00</published><updated>2010-04-28T16:26:56.576+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='m4a'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='lame'/><category scheme='http://www.blogger.com/atom/ns#' term='faad'/><title type='text'>Conversion m4a to MP3</title><content type='html'>&lt;p&gt;I needed to convert a few m4a files to mp3. After looking in Internet. I found a nice way working with fedora (see this &lt;a href="https://www.linuxquestions.org/questions/linux-software-2/m4p-to-mp3-conversion-666171/"&gt;thread&lt;/a&gt;):&lt;/p&gt;

&lt;blockquote class='cCode'&gt;&lt;span style="font-style:italic;"&gt;$&gt; faad -o songfile.wav songfile.m4a &lt;br /&gt;
$&gt; lame songfile.wav songfile.mp3 &lt;br /&gt;
$&gt; rm songfile.wav &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;

&lt;p&gt;Note that the command faad differs a little from the one given in the thread, but man faad did not seem to offer the way given in the thread.&lt;/p&gt;

&lt;p&gt;So I performed a  small bash command script:&lt;/p&gt;

&lt;p&gt;&lt;blockquote class='cCode'&gt;&lt;span style="font-style:italic;"&gt;$&gt; for a in m4a-files/*.m4a ; do filename=`basename "$a"`; faad -o ess.wav "$filename" ; lame ess.wav `basename "$filename" .m4a `.mp3; done ; rm ess.wav&lt;/span&gt; &lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;if faad2 and lame are not on your system, they can be installed from rpmfusion using: &lt;/p&gt;
&lt;blockquote class='cCode'&gt;
&lt;span style="font-style:italic;"&gt;root $&gt; yum -y install lame faad2&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3941884537572960232?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3941884537572960232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3941884537572960232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3941884537572960232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3941884537572960232'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/conversion-m4a-to-mp3.html' title='Conversion m4a to MP3'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6647448022628454062</id><published>2009-09-20T16:49:00.008+02:00</published><updated>2010-04-23T11:18:08.205+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fedora 11'/><category scheme='http://www.blogger.com/atom/ns#' term='rpmfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='livna'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><title type='text'>Fedora 11 installed</title><content type='html'>&lt;p&gt;I installed Fedora 11. I still need to see what the differences are and see which software I need to install this time. The advantage of only updating (which did not really work for me from version 9 to 10). &lt;/p&gt;


&lt;p&gt;The main new things seems to be that livna has more or less been replaced by rpmfusion. So I still have to see whether I can still install all the software I need for my own pleasure. &lt;/p&gt;

&lt;p&gt;I will probably comment in this entry.&lt;/p&gt;

&lt;p&gt;To install linux I used the CD from PCWELT Linux 5/2009.&lt;/p&gt;

&lt;h3&gt;LVM and partitioning&lt;/h3&gt;

&lt;p&gt;My computer is partitioned in the way that the /boot partition is under ext3 outside the lvm. But the '/' partition is under an lvm partition. In that way I can easily resize and create new partition. I used a new partition so that I should be able to come back to my older linux version, though  I have not tested that yet.&lt;/p&gt;

&lt;p&gt;One of the important change in fedora 11 (and perhaps fed 10) is the use of ext4. &lt;/p&gt;

&lt;p&gt;One of my colleague is somewhat sceptical of the use of partitioning though I must say with lvm it is a real pleasure, but OMMV (our mileage may vary).&lt;/p&gt;

&lt;h3&gt;Ctrl+ Alt+ Backspace&lt;/h3&gt;
&lt;p&gt;In the new version of Xorg, the default configuration does not allow you to kill the X server with the keys: Ctrl+ Alt+ Backspace. Whether I find that good or not. Well I ain't so sure.&lt;/p&gt;


&lt;h3&gt;Desktop background&lt;/h3&gt;
&lt;p&gt;I really like the new background for the desktop. I suppose I might keep it some time. I really like the birds. Though searching with google there seems to be a lot of cool backgrounds: e.g &lt;a href="http://www.wallpaperlinux.com/v/Fedora/Fedora+11+Linxu+Wallpaper+Fedora+11+Desktop+Background.jpg.html"&gt;http://www.wallpaperlinux.com/v/Fedora/Fedora+11+Linxu+Wallpaper+Fedora+11+Desktop+Background.jpg.html&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;CD automount&lt;/h3&gt;
&lt;p&gt;I have a  small problem withe the auto mount for CDs. It does not seem to be working. I am not sure of the reason.&lt;/p&gt;


&lt;h3&gt;Installing RPM fusion&lt;/h3&gt;
&lt;p&gt;See: &lt;a href="http://rpmfusion.org/Configuration/"&gt;http://rpmfusion.org/Configuration/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At least using RPM fusion I can install: mplayer and vlc. I will have to see whether I can also play wmv, mpeg and avis just as I wish. It seems to be the case. &lt;/p&gt;


&lt;h3&gt;Updating would have been better?&lt;/h3&gt;

&lt;p&gt;With these things you never know. But I wonder whether I would not have rather updated the distribution instead of installing a new version. I am still not finished.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6647448022628454062?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6647448022628454062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6647448022628454062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6647448022628454062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6647448022628454062'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/fedora-11-installed.html' title='Fedora 11 installed'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-8372445418852753854</id><published>2009-09-19T16:33:00.004+02:00</published><updated>2010-04-22T17:48:43.177+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ext.js'/><title type='text'>Ext.js experience</title><content type='html'>&lt;p&gt;After learning &lt;a href="http://www.extjs.com/"&gt;ext.js&lt;/a&gt; to work for a company which did not employ me because of some difference of opinions or personal reasons, I had to admit that I had been quite pleased at the framework, its power and its ease of use. &lt;/p&gt;

&lt;p&gt;Now, for my current company, I have to create a prototype of an other application I had developed using RAP, but which proved to be more of a disaster than anything.&lt;/p&gt;

&lt;p&gt;So here I am again, programming my examples in ext.js.&lt;/p&gt;

&lt;p&gt;The Ext.js framework can be used as &lt;a href="http://www.extjs.com/products/license.php"&gt;a GPL v3.0 framework or with licence costs&lt;/a&gt;. This seems to be O.K for my boss. So I am fine with it.&lt;/p&gt;

&lt;p&gt;Though I still have some difficulties especially because I do not find the debugging very easy, but maybe there is a good way to work with it. I will have to see. &lt;/p&gt;

&lt;p&gt;So I could create a tree and a table easily. For the application I must develop I am supposed to create, I more or less only need trees, tables and forms  of different forms. Though I also need to embed a rich HTML editor, the &lt;a href="http://ckeditor.com/"&gt;FCKeditor&lt;/a&gt; (note that the name seems to have been change, WTF? ;-) ).&lt;/p&gt;

&lt;p&gt;So as I had said about RAP ( but did not happen), expect infos and tutorial about the subject.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-8372445418852753854?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/8372445418852753854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=8372445418852753854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8372445418852753854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8372445418852753854'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/blog-post.html' title='Ext.js experience'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2704747286229029621</id><published>2009-09-19T16:06:00.006+02:00</published><updated>2009-09-19T16:30:47.866+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='RAP'/><title type='text'>Eclipse RAP or Rich Ajax Problems</title><content type='html'>I have been trying to work with &lt;a href="http://www.eclipse.org/rap/"&gt;RAP&lt;/a&gt;. The experiment we did for my work with this infrastructure is somewhat unsuccessful. It has been a pain in the ass at many points.


I will write here a summary of my problems with this infrastructure:

&lt;ul&gt;
&lt;li&gt;RAP platform configuration&lt;/li&gt; 
&lt;li&gt;Layout difficulties&lt;/li&gt; 
&lt;li&gt;Deployment difficulties&lt;/li&gt;
&lt;li&gt;lost sessions&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;RAP platform configuration&lt;/h3&gt;

One problem with RAP, which may be corrected later on, is that the SWT and RWT cannot be there 
both at the same time. This means that to use RAP you must configure the eclipse IDE to work with
RAP instead of SWT. This proved to be tricky once or twice, especially when switching versions. 
RAP is no real solutions where you can just get the libraries and just start programming, and this is in my opinion one of the main drawback.

&lt;h3&gt;Layout difficulties&lt;/h3&gt; 

Maybe I am not much of a GUI person, and maybe I do not understand the GUI documentation. But
I had a very hard time building the interface. I had to try many things. in many cases, I had to
use the same tricks over and over not really understanding what the reasons for the failed layout were. This proved to be very annoying, especially when you think this should be simple and basic.
Note that I am not sure this is a RAP problem. But rather an eclipse SWT problem.


&lt;h3&gt;Deployment difficulties&lt;/h3&gt;

At some points I tried to use the RAP deployment mechanism. But when I tried to create the 
WAR files, the RAP application could not be loaded. The problem is that the use of the embedded
equinox server did not give much information about which happened. This may be a question of know how and knowledge of the right tools to use. But it took me a long time to find solutions or reasons for the errors. In many cases, I still do not know why it did not work. This makes the deployment process unsecure and very time consuming.

&lt;h3&gt;lost sessions&lt;/h3&gt;

We developed a tool based on RAP for a client. Apart from the hibernate problems I had, RAP was the main difficulty in the project. The last one, and the most annoying one, is that the RAP installation did not work correctly under Apache. It seemed that it would always loose its sessions. This made it very annoying and in particular the client could not see anything appear on its site.

&lt;h3&gt;No RAP bashing, just a RAP rant&lt;/h3&gt;

Though I had lots of difficulties with RAP. I would not say it sucks. But anyone using this as basis  for some tool must be aware of the difficulties behind it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2704747286229029621?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2704747286229029621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2704747286229029621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2704747286229029621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2704747286229029621'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/eclipse-rap-or-rich-ajax-problems.html' title='Eclipse RAP or Rich Ajax Problems'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1794744479355564527</id><published>2009-09-19T15:31:00.008+02:00</published><updated>2010-04-22T17:51:07.251+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool tool'/><category scheme='http://www.blogger.com/atom/ns#' term='cut'/><title type='text'>What the Cut?</title><content type='html'>&lt;p&gt;Well I just learnt about a cool command: cut. Under UNIX, cut allows you to cut some portion of
lines of a file. This is really cool. &lt;/p&gt;

&lt;p&gt;Some examples:
&lt;p&gt;for a file (with fields separated with \t):
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;$-&gt; cat file&lt;/span&gt;&lt;/blockquote&gt;
line 1 FIELD 2 FIELD 3 FIELD 4 FIELD 5 FIELD 6 FIELD 7&lt;br /&gt;
line 2 FIELD 2 FIELD 3 FIELD 4 FIELD 5 FIELD 6 FIELD 7&lt;br /&gt;
line 3 FIELD 2 FIELD 3 FIELD 4 FIELD 5 FIELD 6 FIELD 7&lt;br /&gt;
line 4 FIELD 2 FIELD 3 FIELD 4 FIELD 5 FIELD 6 FIELD 7&lt;br /&gt;
line 5 FIELD 2 FIELD 3 FIELD 4 FIELD 5 FIELD 6 FIELD 7&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;$-&gt;  cat file|cut -c '2-4'&lt;/span&gt;&lt;/blockquote&gt; 
FIELD 2 FIELD 3 FIELD 4&lt;br /&gt;
FIELD 2 FIELD 3 FIELD 4&lt;br /&gt;
FIELD 2 FIELD 3 FIELD 4&lt;br /&gt;
FIELD 2 FIELD 3 FIELD 4&lt;br /&gt;
FIELD 2 FIELD 3 FIELD 4&lt;br /&gt;

and you can stick a file back together using paste. 



Isn't the unix philosophy cool? Or am I a geek?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1794744479355564527?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1794744479355564527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1794744479355564527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1794744479355564527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1794744479355564527'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/what-cut.html' title='What the Cut?'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4662307803493860608</id><published>2009-09-19T15:15:00.012+02:00</published><updated>2010-04-18T18:32:48.359+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>Useful Git Tutorial</title><content type='html'>I found this very useful Git link:

&lt;a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/"&gt;http://www-cs-students.stanford.edu/~blynn/gitmagic/&lt;/a&gt;.

I really learnt a lot about it. Another useful link is: 

&lt;a href="http://progit.org/book/"&gt;http://progit.org/book/&lt;/a&gt;. 

Here are a few things I learnt from these links:

&lt;ul&gt;&lt;li&gt;&lt;a href="http://progit.org/book/ch1-3.html"&gt;"Snapshots, Not Differences"&lt;/a&gt; 

git does not store differences but new versions of files which changed and links to the unchanged one.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/ch05.html"&gt;reordering of commits&lt;/a&gt;

Using Git, you can commit code to your repository and then reorganize the order of your commits.
This makes it much more simpler to group changes in a meaningful way.
&lt;/li&gt;

&lt;li&gt;branching is easy&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4662307803493860608?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4662307803493860608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4662307803493860608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4662307803493860608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4662307803493860608'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/useful-git-tutorial.html' title='Useful Git Tutorial'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-8281901855136666300</id><published>2009-09-19T14:51:00.008+02:00</published><updated>2009-09-19T15:15:21.573+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='intro'/><title type='text'>Quote the Maven: Evermore!</title><content type='html'>Well sorry about that my dear Poe!

I really like &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; a lot. 

It is a really good programming management tool. It is a step up from &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt;, yet it simplifies a lot of aspects. And moreover it has a very useful set of plugins and software repositories.


The main properties of Maven:

&lt;ul&gt;
&lt;li&gt;Workflow and tasks based&lt;/li&gt;
&lt;li&gt;modular&lt;/li&gt;
&lt;li&gt;dependency management&lt;/li&gt;
&lt;li&gt;extensible&lt;/li&gt;
&lt;li&gt;platform adaptable&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Workflow and tasks based&lt;/h3&gt;

Maven is based on a controlled workflow of tasks performed, sequentially.
You can call some particular task. Maven will make sure the tasks required
before this task will be performed if needed. 

For example, if you wish to package a certain jar. Maven will take care of
the compilation and the signing. 

&lt;h3&gt;Modular&lt;/h3&gt;

Maven is capable of working with different modules. The modules required by a given module 
will be then built if needed.


&lt;h3&gt;dependency management&lt;/h3&gt;

At the heart of maven, there is a dependency management framework: &lt;a href="http://ant.apache.org/ivy/"&gt;Ivy&lt;/a&gt;. This allows to ensure that the packages used and constructed have a compatible version with the code needed.

&lt;h3&gt;extensible&lt;/h3&gt;

Maven is based on a set of multiple plugins, which can be easily extended or retrieved from a repository on the Internet. Each of this plugin performs a specific task. The tasks to be performed are configured in the pom.xml, which is the configuration file for a module in maven.


&lt;h3&gt;platform adaptable&lt;/h3&gt;

Using maven, you can build different binaries or packages depending on the target platform. 
You need to describe a given profile.


This introduction did not present any example or code. This will be done in the next step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-8281901855136666300?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/8281901855136666300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=8281901855136666300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8281901855136666300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/8281901855136666300'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/quote-maven-evermore.html' title='Quote the Maven: Evermore!'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1185768910902382636</id><published>2009-09-19T14:47:00.002+02:00</published><updated>2009-09-19T14:49:39.301+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='return of J'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Back to Blog</title><content type='html'>Well it's been a long time without posting. And I've learned a lot about diverse technologies. But I had not much time to spend blogging. But blogging about technical subject helped me a lot. So now I am back. Let's see  what comes about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1185768910902382636?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1185768910902382636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1185768910902382636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1185768910902382636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1185768910902382636'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2009/09/back-to-blog.html' title='Back to Blog'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-894207823857633153</id><published>2008-12-05T00:53:00.005+01:00</published><updated>2010-04-22T17:29:22.454+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM lotus notes'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Lotus Notes</title><content type='html'>&lt;p&gt;Well I have been learning to use lotus notes at work... And I am not so sure how good it is.
There are many things that would need to be improved. It is used as a platform for some software which thus provides as a whole an interesting CRM solution. But I believe there is much room for improvement there.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-894207823857633153?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/894207823857633153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=894207823857633153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/894207823857633153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/894207823857633153'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/12/lotus-notes.html' title='Lotus Notes'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3556222126041248700</id><published>2008-12-05T00:47:00.004+01:00</published><updated>2010-04-22T17:29:56.420+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><title type='text'>Subversion and unicode</title><content type='html'>&lt;p&gt;I was having some difficulty at work with documents which were not saved as unicode in the subversion repository. This caused problems with eclipse which has not been able to open it.&lt;/p&gt;

&lt;p&gt;What I did to solve my problem was to use the command: &lt;span style="font-style:italic;font-weight:bold;"&gt;file&lt;/span&gt; to determine the encoding, and use pconv to reencode the documents.&lt;/p&gt;

&lt;p&gt;I am planning to do a small perl script (though some java program one would be also OK) which downloads files, checks the type and then reload and then performs a commit on the documents.
However, I must make sure there is no problem with different encodings of the document for the history.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3556222126041248700?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3556222126041248700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3556222126041248700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3556222126041248700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3556222126041248700'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/12/subversion-and-unicode.html' title='Subversion and unicode'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5555857910922284598</id><published>2008-12-05T00:42:00.006+01:00</published><updated>2010-04-22T17:30:31.080+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='RAP'/><title type='text'>RAP</title><content type='html'>&lt;p&gt;Well I learnt some things about RAP these days and I recalled a few things about eclipse I had forgotten as well I learnt new ones.&lt;/p&gt;

&lt;p&gt;Part of the interesting things are targets in eclipse, which allow you to choose exactly the plugins available to the eclipse platform. This is particularly helpful when some packages conflict with each other. &lt;/p&gt;

&lt;p&gt;In the case of RAP, the RCP and RAP plugins seems to have difficulty working together. I must admit though that I do not know what is the issue there.&lt;/p&gt;

&lt;p&gt;So expect a RAP intro tutorial and perhaps other issues.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5555857910922284598?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5555857910922284598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5555857910922284598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5555857910922284598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5555857910922284598'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/12/rap.html' title='RAP'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4426993930061796685</id><published>2008-11-18T13:46:00.001+01:00</published><updated>2008-11-18T13:48:27.032+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><title type='text'>Common Errors in C</title><content type='html'>A nice &lt;a href="http://drpaulcarter.com/cs/common-c-errors.php"&gt;link&lt;/a&gt; I had wished to see earlier about programming in C. The author has also a &lt;a href="http://drpaulcarter.com/pcasm/"&gt;tutorial on assembler&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4426993930061796685?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4426993930061796685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4426993930061796685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4426993930061796685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4426993930061796685'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/11/common-errors-in-c.html' title='Common Errors in C'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4298556773750749120</id><published>2008-11-02T02:55:00.034+01:00</published><updated>2008-11-02T03:55:27.984+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='workqueue API'/><title type='text'>Java Workqueue API</title><content type='html'>As I explained in a previouse entry, since java 1.5 there are new classes and interfaces to help the implementation of parallel systems. These structures are found in the &lt;span style="font-style: italic;"&gt;java.util.concurrent&lt;/span&gt; package. But how are these structures to be used.

The package description recalls the main types of interfaces and classes in this package:&lt;ul&gt;&lt;li&gt;executors&lt;/li&gt;&lt;li&gt;queues&lt;/li&gt;&lt;li&gt;concurrent collections&lt;/li&gt;&lt;li&gt;synchronizers&lt;/li&gt;&lt;li&gt;atomic (in package: &lt;span style="font-style: italic;"&gt;java.util.concurrent.atomic&lt;/span&gt; )&lt;/li&gt;&lt;li&gt;locks (in package: &lt;span style="font-style: italic;"&gt;java.util.concurrent.locks&lt;/span&gt; )&lt;/li&gt;&lt;/ul&gt;


Of course, the  structures discussed in this package have somewhat similar to the one found in typical kernel discussions: work queues and semaphores...

Let us now take a look at the different parts.
&lt;h3&gt;Executors&lt;/h3&gt;
Executors are containers taking care of the execution of tasks, just as SwingUtilities used to do it. Different kinds of executors are imaginable: &lt;ul&gt;&lt;li&gt;DirectExecutor (performing the task but not asynchronously)&lt;/li&gt;&lt;li&gt;ThreadPerTaskExecutor (one thread is created for each task to be performed)&lt;/li&gt;&lt;li&gt;SerialExecutor (each task is performed sequentially)&lt;/li&gt;&lt;li&gt;ThreadPoolExecutor (executor performing using a pool of threads)&lt;/li&gt;&lt;li&gt;ScheduledThreadPoolExecutor (executor performing using a pool of threads at certain specified moments or periodically)&lt;/li&gt;&lt;/ul&gt;

The implentations of the &lt;span style="font-style: italic;"&gt;java.util.concurrent&lt;/span&gt;  package implement the ExecutorService interface which provides a number of supplementary methods.
&lt;h3&gt;Queues&lt;/h3&gt;
Another useful data structure for performing task in parallel and asynchronously are queues (also known as FIFO data structures). The &lt;span style="font-style: italic;"&gt;java.util.concurrent&lt;/span&gt;  package provides a number of  data structures for this purpose too. One particular kind of FIFO are blocking queues, for which  five different versions exist:

&lt;ul&gt;&lt;li&gt;LinkedBlockingQueue&lt;/li&gt;&lt;li&gt;ArrayBlockingQueue&lt;/li&gt;&lt;li&gt;SynchronousQueue&lt;/li&gt;&lt;li&gt;PriorityBlockingQueue&lt;/li&gt;&lt;li&gt;DelayQueue&lt;/li&gt;&lt;/ul&gt;
The first two are queue data structure backed by a linked list, respectively an array. The synchronous queue is special in the way that the queue accept elements only if at the same times elements are removed from the queue on the other end (though I must admit I still need to look at how this actually performed).

The priority blocking queue is a FIFO with priority to use the same ordering as a PriorityQueue.
Finally, the delay queue is a blocking queue only providing elements when a certain delay as passed for the element to be retrieved.
&lt;h3&gt;Synchronizers&lt;/h3&gt;
A number of possible techniques can be used to synchronize threads. Among these are semaphores which we discussed in the linux kernel context. Other types provided by the &lt;span style="font-style: italic;"&gt;java.util.concurrent&lt;/span&gt;  package, such as the CountDownLatch, used to block some actions until a number of events or elements have been counted, the CyclicBarrier, which is a resettable multiway synchronization mechanism, an exchanger to allow threads to exchange objects at some definite point and the already mentioned locks.
&lt;h3&gt;Concurrent Collections&lt;/h3&gt;
The java.util Collection Framework already contained a number of snychronized or synchronizable classes. However, the  &lt;span style="font-style: italic;"&gt;java.util.concurrent&lt;/span&gt;  package introduces new structures useful in a multithreaded context:
&lt;ul&gt;&lt;li&gt; ConcurrentHashMap, &lt;/li&gt;&lt;li&gt; ConcurrentSkipListMap, &lt;/li&gt;&lt;li&gt; ConcurrentSkipListSet,  &lt;/li&gt;&lt;li&gt;CopyOnWriteArrayList, and &lt;/li&gt;&lt;li&gt;CopyOnWriteArraySet&lt;/li&gt;&lt;/ul&gt;

The synchronization approach of the usual synchonized  classes came with a drawback for the scalability, because they imposed a strong check on the serializability of the action performed on the data structure. The Concurrent implementations are on contrary not as restrcited. It remains in the job of the developper to know when to prefer which implementation.

&lt;h3&gt;Timing Units&lt;/h3&gt;
The &lt;span style="font-style: italic;"&gt;java.util.concurrent&lt;/span&gt;  package also introduces a new class &lt;span style="font-style:italic;"&gt;TimingUnit&lt;/span&gt; to provide different kind of granularity as to which unit of interval for time measurements should be used. Here again, it would be useful to take a look at the implementation of the kernel and compare.

&lt;h3&gt;Atomic and Locks&lt;/h3&gt;

Since atomic variables and locks are in other packages, I will describe them in other entries.
However, it is again interesting to note that the same topics were already  discussed in other entries of this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4298556773750749120?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4298556773750749120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4298556773750749120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4298556773750749120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4298556773750749120'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/11/java-workqueue-api.html' title='Java Workqueue API'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-432546057883725162</id><published>2008-11-02T02:25:00.008+01:00</published><updated>2010-04-22T17:31:37.866+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Flash with Flex</title><content type='html'>&lt;p&gt;So I tried a few things with Flash now that I more or less know the basics of flex (and only the basics).&lt;/p&gt;

&lt;p&gt;So I wrote my first little movie in flash and compiled it using flex's compiler.&lt;/p&gt;

&lt;p&gt;I can not really do an introduction yet to flash and flex. I still need to get use to too many things. For example, I am not really happy not knowing which data structures are available in action script. Maybe I have been spoiled by java using the java.util collections. Yet I think it sensible to expect the existence of a number of standard libraries one can use to prevent the inventingthewheelitis.&lt;/p&gt;

&lt;p&gt;One thing I found at least im internet is from a developer from Mannheim who wrote some &lt;a href="http://lab.polygonal.de/ds/"&gt;data structures for games&lt;/a&gt; in action script.  I will have to take a look at it. It sure sounds really interesting.&lt;/p&gt;

&lt;p&gt;I have also been  interested in what is the best way to create small movies for fun. So I just thought of the general object oriented structure of my character creations. Actually I already had some project of the sort in java. But I had not that much because other priorities popped up as they always do.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-432546057883725162?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/432546057883725162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=432546057883725162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/432546057883725162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/432546057883725162'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/11/flash-with-flex.html' title='Flash with Flex'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1744527215748167699</id><published>2008-11-02T02:06:00.014+01:00</published><updated>2010-04-22T17:32:28.343+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='oprofile'/><title type='text'>Oprofile - What are thou ?</title><content type='html'>&lt;p&gt;O.K Apart from doing stupid references to films I actually have not really liked. What am I doing?&lt;/p&gt;

&lt;p&gt;After reading a few mails from the Linux Kernel Mailing list, I found the following tool which seems useful: &lt;a href="http://oprofile.sourceforge.net/"&gt;oprofile&lt;/a&gt;. I must admit I still do not have a clear idea of all the possibilities that this tool offers.&lt;/p&gt;

&lt;p&gt;The first thing to know it is a profiler and it is a profiler capable of giving  a number of information on a program with quite a low overhead. But what is a profiler?&lt;/p&gt;

&lt;p&gt;A profiler collects information on running processes of a computer to analyze the performance of a program (see the wikipedia article on &lt;a href="http://en.wikipedia.org/wiki/Performance_analysis"&gt;performance analysis&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;It gives the possibility to look at the following aspects of a system:&lt;ul&gt;
&lt;li&gt;Call-graphs (i.e it looks at the graph of the  functions calls of programs) &lt;/li&gt;&lt;li&gt;libraries used by a program&lt;/li&gt;&lt;li&gt;instruction level information collections (also on assembly code level)&lt;/li&gt;&lt;/ul&gt;
I will probably continue to take a few look at the possibilities of this tool in the next few weeks.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1744527215748167699?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1744527215748167699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1744527215748167699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1744527215748167699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1744527215748167699'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/11/oprofile-what-are-thou.html' title='Oprofile - What are thou ?'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-9072753131701260596</id><published>2008-10-25T02:15:00.003+02:00</published><updated>2008-10-27T12:56:01.969+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='udp'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='broadcast'/><title type='text'>Interesting Week</title><content type='html'>A lot happened during the last week. 

I learnt flash, flex, action script 3. I don't know everything... But I did get a good glimpse of the whole. It was a lot of fun trying to solve my brother's problem, which consisted in trying to command some light software using a flash or flex interface.

It is not completely solved yet. But we are getting close to it. 

I will also write a few important things I noted while looking for solutions for the problem.
There are two types of problems:&lt;ul&gt;&lt;li&gt; network problems with TCP/UDP broadcast &lt;/li&gt;&lt;li&gt; flash/flex sandbox security issues&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-9072753131701260596?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/9072753131701260596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=9072753131701260596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/9072753131701260596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/9072753131701260596'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/10/interesting-week.html' title='Interesting Week'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1296443933833857386</id><published>2008-10-06T11:26:00.010+02:00</published><updated>2008-10-06T12:02:49.472+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='Martin Fowler'/><title type='text'>Performance according to Martin Fowler</title><content type='html'>Martin Fowler is well known for his work on refactoring and software engineering. 
In his very good book:
&lt;a href="http://www.amazon.com/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420"&gt;
Martin Fowler: patterns of enterprise application architecture. Addison Wesley 2003&lt;/a&gt;.

he has some discussion of performance which usually cover the following issues:
&lt;ul&gt;&lt;li&gt;response  time&lt;/li&gt;&lt;li&gt;responsiveness&lt;/li&gt;&lt;li&gt;latency&lt;/li&gt;&lt;li&gt;throughput&lt;/li&gt;&lt;/ul&gt;
A number of measures of a system are good indicators for the performance of a system regarding these issues:&lt;ul&gt;&lt;li&gt;the load&lt;/li&gt;&lt;li&gt;load sensitivity&lt;/li&gt;&lt;li&gt;efficiency&lt;/li&gt;&lt;li&gt;capacity&lt;/li&gt;&lt;/ul&gt;

To make these notions clear, it is important to have some definition:
&lt;dl&gt;&lt;dt&gt;response time&lt;/dt&gt;&lt;dd&gt;the time  it take to a system to process a request&lt;/dd&gt;&lt;dt&gt;responsiveness&lt;/dt&gt;&lt;dd&gt;the time that the system takes to acknowledge a request&lt;/dd&gt;&lt;dt&gt;latency&lt;/dt&gt;&lt;dd&gt;the minimum time that the system needs to perform any task even if the task  has nothing to be done&lt;/dd&gt;&lt;dt&gt;throughput&lt;/dt&gt;&lt;dd&gt;how much work can be done in a given amount of time&lt;/dd&gt;&lt;/dl&gt;

We define the measures presented above:
&lt;dl&gt;&lt;dt&gt;load&lt;/dt&gt;&lt;dd&gt;how much strain are put on the resources (for example how many users ( or processes ) are logged on (or running)&lt;/dd&gt;&lt;dt&gt;load sensitivity&lt;/dt&gt;&lt;dd&gt;an indicator of the variation in the response time depending on the load&lt;/dd&gt;&lt;dt&gt;efficiency&lt;/dt&gt;&lt;dd&gt;the efficiency is the performance (i.e, either throughput or response time) divided by resources &lt;/dd&gt;&lt;dt&gt;capacity&lt;/dt&gt;&lt;dd&gt;indicate the maximum effective throughput or load for the system&lt;/dd&gt;&lt;/dl&gt;

In order to discuss performance, he also describe two kind of processing power scalability, i.e how good a system reacts when the size of the system grows in processing power. Adding more processing power to a server is an example of &lt;span style="font-style:italic;"&gt;vertical scalability&lt;/span&gt; (or the system is scaled up), where as adding more servers is an example of &lt;span style="font-style:italic;"&gt;horizontal scalability&lt;/span&gt; (or the system scales out).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1296443933833857386?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1296443933833857386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1296443933833857386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1296443933833857386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1296443933833857386'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/10/performance-according-to-martin-fowler.html' title='Performance according to Martin Fowler'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3584270102096806690</id><published>2008-10-02T16:11:00.006+02:00</published><updated>2010-04-23T18:27:34.665+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux tools'/><title type='text'>What's the ack is that ?</title><content type='html'>&lt;p&gt;Well! as I was looking at the programs I was updating on my fedora 9 box. I fell upon the program ack. I had no idea what it was so I ran rpm -qi ack... And it told me that it was a kind of grep replacement. It seems to be faster than grep in most cases. Some people &lt;a href="http://blog.i-no.de/archives/2008/05/06/index.html"&gt;tried it out&lt;/a&gt; it seems. Though some other seem to &lt;a href="http://groups.google.com/group/ack-users/browse_thread/thread/59fbd76d5bc9b11e"&gt;disagree&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;One of the advantage of ack is that it allows to select more easily the type of files to be checked.
So I guess I will have to take a look at it....&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3584270102096806690?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3584270102096806690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3584270102096806690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3584270102096806690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3584270102096806690'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/10/whats-ack-is-that.html' title='What&apos;s the ack is that ?'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5087926610875084264</id><published>2008-09-29T02:10:00.017+02:00</published><updated>2010-04-18T18:34:30.474+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='Desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='Gnome'/><title type='text'>Some Ideas for Desktop Improvements</title><content type='html'>I have few ideas to improve the desktop presentation to support better my needs. Basically a few things that I find important:
&lt;h3&gt;To Do List&lt;/h3&gt;I want a to do list which is more or less always present when the desktop is on.

&lt;ul&gt;&lt;li&gt;classification by priorities
&lt;ul&gt;
&lt;li&gt;important and urgent&lt;/li&gt;&lt;li&gt;not important but urgent&lt;/li&gt;&lt;li&gt;important and not urgent&lt;/li&gt;&lt;li&gt;not important and not urgent&lt;/li&gt;&lt;li&gt;not classified&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;classification by subject &lt;ul&gt;&lt;li&gt;work&lt;/li&gt;&lt;li&gt;administrativ&lt;/li&gt;&lt;li&gt;Hobby&lt;/li&gt;&lt;li&gt;Family&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;Style of the task and Icons&lt;ul&gt;
&lt;li&gt;Position of Tasks as Desktop Icons&lt;/li&gt;
&lt;li&gt;Size of Desktop Icons&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;
&lt;/li&gt;&lt;/ul&gt;
I had seen a few months ago a presentation by Mozilla Labs (if I recall well) as well as others on how to improve the display of the desktop. I find this really good. This might not be that complex to implement. But before starting the implementation, I only need to know where the different parts are stored, as well as the process used for making the changes. I am not completely sure whether the information remains in memory or is stored on file. For instance, the position of the different icons is found in the following  file:

&lt;span style="font-style: italic;"&gt;~/.nautilus/metafiles/file:%2F%2F%2Fhome%2F&lt;span style="font-weight: bold;"&gt;username&lt;/span&gt;%2FDesktop.xml&lt;/span&gt;

&lt;h3&gt;Organized Important Files&lt;/h3&gt;I want that the files which I have on my desktop are organized in a meaningful way, for example in thematic and time oriented way. From left to right time oriented, top to bottom thematic.

Of course the classification cannot be automatic for the thematic way. Moreover, the time oriented way might not always be relevant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5087926610875084264?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5087926610875084264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5087926610875084264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5087926610875084264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5087926610875084264'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/nautilus-configuration-files.html' title='Some Ideas for Desktop Improvements'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6210481908926881578</id><published>2008-09-26T22:06:00.006+02:00</published><updated>2008-09-26T22:20:52.026+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='add-on'/><title type='text'>Firefox Plugins</title><content type='html'>There are a number of useful firefox add-ons:&lt;dl&gt;&lt;dt&gt;No Script&lt;/dt&gt;&lt;dd&gt;an add on to control easily whether scripts (java, javascript, flash) are allowed to be performed. This is a per domain enabling or not.&lt;/dd&gt;
&lt;dt&gt;Download Them All&lt;/dt&gt;&lt;dd&gt;with this add on, it easier to download many resources from a web page&lt;/dd&gt;
&lt;dt&gt;Download Status Bar&lt;/dt&gt;&lt;dd&gt; adds a status bar which shows the status of downloading of things from firefox.&lt;/dd&gt;
&lt;dt&gt;Greasemonkey&lt;/dt&gt;&lt;dd&gt;using greasemonkey allows to write scripts to be performed on top of
web pages&lt;/dd&gt;
&lt;dt&gt;Firebug&lt;/dt&gt;&lt;dd&gt;This is a utility to help in  developing javascripts.&lt;/dd&gt;
&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6210481908926881578?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6210481908926881578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6210481908926881578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6210481908926881578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6210481908926881578'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/firefox-plugins.html' title='Firefox Plugins'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7489184341421862188</id><published>2008-09-22T00:40:00.004+02:00</published><updated>2010-04-23T12:33:06.794+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='&quot;O/R Mapping&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate</title><content type='html'>Hibernate is an OR-Mappping. Mostly adapted the examples from the chapter 2 of 
&lt;a href="http://www.manning.com/bauer2/"&gt;
Java Persistence with Hibernate      &lt;br /&gt;
Second Edition of Hibernate in Action      &lt;br /&gt;
Christian Bauer and Gavin King      &lt;br /&gt;

November, 2006 | 880 pages      &lt;br /&gt;
ISBN: 1-932394-88-5      &lt;br /&gt;
&lt;/a&gt;


The goal is to map the objects created by a object programming language such as Java to a relational database in order to provide persistent objects, i.e object which can be stored on disk and which do not disappear when the virtual machine shutdowns.

Hibernate performs the mapping using configurations files in xml (or other).

Here is an example of XML file for a mapping called tasks.hbm.xml:
&lt;div style='background-color:grey;'&gt;&lt;span style="font-style:italic;"&gt;&amp;lt;?xml version="1.0"?&gt;       &lt;br /&gt;
&amp;nbsp;&amp;lt;!DOCTYPE hibernate-mapping PUBLIC      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    "-//Hibernate/Hibernate Mapping DTD//EN"      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;      &lt;br /&gt;
&amp;nbsp;&amp;lt;hibernate-mapping&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    &amp;lt;class      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        name="mytasks.Task"      &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;       table="TASKS"&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;id      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            name="id"      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            column="TASK_NAME"&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            &amp;lt;generator class="increment"/&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;/id&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;property      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;           name="name"      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;           column="Task_NAME"/&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;many-to-one       &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            name="nexttask"      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            cascade="all"      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            column="SPOUSE_ID"      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            foreign-key="FK_NEXT_TASK"/&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;    &amp;lt;/class&gt;      &lt;br /&gt;
&amp;lt;/hibernate-mapping&gt;
&lt;/span&gt;
&lt;/div&gt;

a class like:
&lt;div style='background-color:grey;'&gt;&lt;span style="font-style:italic;"&gt;class Task {      &lt;br /&gt;

&amp;nbsp;&amp;nbsp; private String name;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp; private Task nexttask;      &lt;br /&gt;

}&lt;/span&gt;
&lt;/div&gt;

&lt;div style='background-color:grey;'&gt;&lt;span style="font-style:italic;"&gt;package mytasks;
import org.hibernate.*;      &lt;br /&gt;
import persistence.*;      &lt;br /&gt;
import java.util.*;      &lt;br /&gt;

public class TaskExample {      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    public static void main(String[] args) {      &lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;     // First unit of work      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        Session session =      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                  &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HibernateUtil.getSessionFactory().openSession();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        Transaction tx = session.beginTransaction();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        Task firsttask = new Task("Learn Hibernate");      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        Long meberId = (Long) session.save(firsttask);      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        tx.commit();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        session.close();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        // Second unit of work      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        Session newSession =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        HibernateUtil.getSessionFactory().openSession();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        Transaction newTransaction = &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newSession.beginTransaction();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        List tasks =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            newSession.createQuery("from Task m order by m.name asc").list();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        System.out.println( tasks.size() +       " Task(s) found:" );      &lt;br /&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    for ( Iterator iter = members.iterator();  iter.hasNext(); ) {      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tasks      task  = (Task) iter.next();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        System.out.println( task.getName() );      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    }      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    newTransaction.commit();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    newSession.close();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    // Shutting down the application      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    HibernateUtil.shutdown();      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }      &lt;br /&gt;
}&lt;/span&gt;
&lt;/div&gt;
It is possible to set the configuration file for the session factory using 
new Configuration().configure(&amp;lt;locationof config file&gt;);

for example:
&lt;div style='background-color:grey;'&gt;&lt;span style="font-style:italic;"&gt;SessionFactory sessionFactory = new Configuration()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            .configure("/persistence/tasks.cfg.xml")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            .buildSessionFactory();&lt;/span&gt;
&lt;/div&gt;

calling new Configuration().configure(); would look for a file called: hibernate.properties
in the class path directory outside of any package.

the Hibernate Configuration file:
&lt;div style='background-color:grey;'&gt;&lt;span style="font-style:italic;"&gt;&amp;lt;!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;        &lt;br /&gt;
&amp;lt;hibernate-configuration&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;session-factory&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.connection.driver_class"&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        org.postgresql.Driver
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.connection.url"&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        jdbc:postgresqll://localhost       &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.connection.username"&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        sa       &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;/property&gt;      &lt;br /&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.dialect"&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        org.hibernate.dialect.HSQLDialect      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;!-- Use the C3P0 connection pool provider --&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.c3p0.min_size"&gt;5&amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.c3p0.max_size"&gt;20&amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.c3p0.timeout"&gt;300&amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.c3p0.max_statements"&gt;50&amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="hibernate.c3p0.idle_test_period"&gt;3000&amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;!-- Show and print nice SQL on stdout --&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="show_sql"&gt;true&amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;property name="format_sql"&gt;true&amp;lt;/property&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;!-- List of XML mapping files --&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;mapping resource="mytasks/tasks.hbm.xml"/&gt;      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/session-factory&gt;      &lt;br /&gt;
&amp;lt;/hibernate-configuration&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;p&gt;Note the use of a certain number of configuration entries:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt; the Hibernate connection pool provider: here the C3PO-connection-pool-provider
&lt;/li&gt;&lt;li&gt; the hibernate dialect used, here the HSQLDialect 
&lt;/li&gt;&lt;li&gt; the connection information: drivers, url and username
&lt;/li&gt;&lt;li&gt; the mapping file&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;There are a number of other possibilities to configure Hibernate.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7489184341421862188?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7489184341421862188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7489184341421862188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7489184341421862188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7489184341421862188'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/hibernate_22.html' title='Hibernate'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-1159670699989499640</id><published>2008-09-22T00:16:00.006+02:00</published><updated>2008-09-26T18:12:28.504+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='antipatterns'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise know how'/><title type='text'>Antipatterns and Code Problems</title><content type='html'>Here a few resources for antipatterns, which are patterns of behaviour or architecture  which tend to create problems. First of all, there is a well known &lt;a href="http://www.amazon.de/Antipatterns-Refactoring-Software-Architectures-Architecture/dp/0471197130"&gt;book&lt;/a&gt; on the subject.



There is also a web site for the books: &lt;a href="http://www.antipatterns.com/briefing/index.htm"&gt;http://www.antipatterns.com/&lt;/a&gt;.

Here another resource about Antipatterns in the software development:
&lt;a href="http://www.little-idiot.de/teambuilding/AntiPatternSoftwareentwicklung.pdf"&gt;AntiPattern in der Softwareentwicklung&lt;/a&gt; (Note the text is in German).


Also in addition a resource on symptoms which call for refactoring: &lt;a href="http://wiki.java.net/bin/view/People/SmellsToRefactorings"&gt;SmellsToRefactorings&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-1159670699989499640?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/1159670699989499640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=1159670699989499640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1159670699989499640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/1159670699989499640'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/antipatterns-and-code-problems.html' title='Antipatterns and Code Problems'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5398388890651865034</id><published>2008-09-16T12:44:00.005+02:00</published><updated>2010-04-23T12:25:07.667+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='libxcb'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='awt'/><title type='text'>Java AWT bug on linux with XCB</title><content type='html'>&lt;p&gt;When starting my java application on linux, I have the following traceback:&lt;p&gt;

&lt;p style='background-color:grey;'&gt;Locking assertion failure.  Backtrace:     &lt;br /&gt;
#0 /usr/lib/libxcb-xlib.so.0 [0xc3e767]         &lt;br /&gt;
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xc3e831]     &lt;br /&gt;
#2 /usr/lib/libX11.so.6(_XReply+0x244) [0xc89f64]     &lt;br /&gt;
#3 /usr/java/jre1.6.0_03/lib/i386/xawt/libmawt.so [0xb534064e]     &lt;br /&gt;
#4 /usr/java/jre1.6.0_03/lib/i386/xawt/libmawt.so [0xb531ef97]     &lt;br /&gt;
#5 /usr/java/jre1.6.0_03/lib/i386/xawt/libmawt.so [0xb531f248]     &lt;br /&gt;
#6 /usr/java/jre1.6.0_03/lib/i386/xawt/libmawt.so(Java_sun_awt_X11GraphicsEnvironment_initD&lt;/p&gt;

&lt;p&gt;It has already  been discussed in a number of forums and bug reports:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6532373"&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6532373&lt;/a&gt;, or
&lt;a href="https://bugs.launchpad.net/ubuntu/+source/libxcb/+bug/87947"&gt;https://bugs.launchpad.net/ubuntu/+source/libxcb/+bug/87947&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One possible work around seems to be to add the following variable setting when starting the application:&lt;/p&gt;
&lt;p style='background-color:grey;'&gt;export LIBXCB_ALLOW_SLOPPY_LOCK=1&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5398388890651865034?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5398388890651865034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5398388890651865034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5398388890651865034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5398388890651865034'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/java-awt-bug-on-linux-with-xcb.html' title='Java AWT bug on linux with XCB'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6206459213521550682</id><published>2008-09-15T21:05:00.004+02:00</published><updated>2008-09-15T21:14:41.911+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='automated'/><category scheme='http://www.blogger.com/atom/ns#' term='autotest'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Autotest - WOW they did it!!!!</title><content type='html'>Welll I was reading as always a little bit of this automated testing approach. And I was again on this page:

&lt;a href="http://autotest.kernel.org/"&gt;http://autotest.kernel.org/&lt;/a&gt;

Autotest is a software which allows the automated testing of the linux kernel, that is, it is 
an infrastructure to build, boot and ... linux kernels. 

It has quite a lot of features:

&lt;ul&gt;
&lt;li&gt;bisection...&lt;/li&gt;
&lt;li&gt;building&lt;/li&gt;
&lt;li&gt;booting&lt;/li&gt;
&lt;li&gt;filesystem check&lt;/li&gt;
&lt;li&gt;python based library to automate scripts&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;


There is a good presentation on &lt;a href="http://autotest.kernel.org/raw-attachment/wiki/WikiStart/autotest_slides.odp"&gt;autotest presentation&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6206459213521550682?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6206459213521550682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6206459213521550682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6206459213521550682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6206459213521550682'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/autotest-wow-they-did-it.html' title='Autotest - WOW they did it!!!!'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5827365070229417433</id><published>2008-09-15T08:52:00.006+02:00</published><updated>2010-04-27T22:16:42.421+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='icybox'/><category scheme='http://www.blogger.com/atom/ns#' term='atftpd'/><category scheme='http://www.blogger.com/atom/ns#' term='PXE'/><category scheme='http://www.blogger.com/atom/ns#' term='diskless install'/><title type='text'>PXE Problems with NAS 1000</title><content type='html'>&lt;p&gt;A good friend of mine gave me a NAS 1000 so that I could try a few things with it. In particular, I wanted to try PXE and diskless solutions with the installation files or disk data on the NAS server.&lt;/p&gt;

&lt;p&gt;First I had some troubles starting the atftpd daemon because of user and group information which did not work. I should have checked the messages information right away... duh!!! It would have saved me a lot to time.&lt;/p&gt;

&lt;p&gt;But then  as I tried getting the data from my linux box using the fedora tftp client, it did not work. Well actually I am still not sure why it is not. Some routing errors obviously:&lt;/p&gt;

&lt;p style='background-color:grey'&gt;Jan  1 13:36:21 icybox daemon.info atftpd[1951]: Server thread exiting         &lt;br /&gt;
Jan  1 13:36:26 icybox daemon.notice atftpd[1952]: Fetching from 192.168.0.104 to ess
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5827365070229417433?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5827365070229417433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5827365070229417433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5827365070229417433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5827365070229417433'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/pxe-problems-with-nas-1000.html' title='PXE Problems with NAS 1000'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2652453840483575975</id><published>2008-09-13T12:51:00.004+02:00</published><updated>2008-09-13T12:58:26.515+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syntax highlighting'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Syntax highlighting for the Web</title><content type='html'>As I was reading an interesting &lt;a href="http://beust.com/weblog/archives/000493.html"&gt;post&lt;/a&gt; from &lt;a href="http://beust.com/weblog/"&gt;Otaku, Cedric's weblog&lt;/a&gt;, I learned about the existence 
of a web syntax highlighting solution: &lt;a href="http://pastebin.com/"&gt;pastebin&lt;/a&gt;, which is GPL software. It seems to be based on another GPL software: &lt;a href="http://qbnz.com/highlighter"&gt;Genshi&lt;/a&gt;. 

This may prove useful once in a while. Especially if I intend to port my post to another blogging software since I am not completely sure about the user settings of blogger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2652453840483575975?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2652453840483575975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2652453840483575975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2652453840483575975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2652453840483575975'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/syntax-highlighting-for-web.html' title='Syntax highlighting for the Web'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2351682573418617374</id><published>2008-09-12T20:27:00.007+02:00</published><updated>2010-04-27T22:10:22.621+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='SwingUtilities'/><category scheme='http://www.blogger.com/atom/ns#' term='invokeLater'/><title type='text'>Java invokeLater</title><content type='html'>&lt;p&gt;A number of month ago, I took a look at the new features of Java 1.5 and 1.6. And I fell on the new &lt;span style="font-style:italic;"&gt;java.util.concurrent&lt;/span&gt; package. &lt;/p&gt;

&lt;p&gt;Whoever programmed GUI interfaces in Java is certainly aware  of the importance of using thread to run in the background in order to enable the user to perform other tasks and not just wait in front of a screen which is not refreshing. Using nice runnable threads, you could have a much more responsive GUI. A typical example was things of the sort:&lt;/p&gt;

&lt;p style=""&gt;
 Thread t = new Thread(){      &lt;br /&gt;
&amp;nbsp;     public void run(){      &lt;br /&gt;
&amp;nbsp;&amp;nbsp;        // the task to perform which requires a certain amount of time      &lt;br /&gt;
&amp;nbsp;     }      &lt;br /&gt;
  };      &lt;br /&gt;
      &lt;br /&gt;
  SwingUtilities.invokeLater(t);      &lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;This technique is really fundamental to a well programmed graphical interface.&lt;/p&gt;

&lt;p&gt;But since Java 1.5, there are a number of supplementary structures which can be used to perform tasks in parallel. And these are found in the package &lt;span style="font-style:italic;"&gt;java.util.concurrent&lt;/span&gt; which will be the topic of a future entry.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2351682573418617374?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2351682573418617374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2351682573418617374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2351682573418617374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2351682573418617374'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/java-invokelater.html' title='Java invokeLater'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7285941815348594774</id><published>2008-09-12T20:03:00.016+02:00</published><updated>2010-04-22T17:40:42.623+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='introduction'/><category scheme='http://www.blogger.com/atom/ns#' term='project management tools'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Overview of Maven</title><content type='html'>&lt;p&gt;Maven is a tool design to support as many task as possible for the management of a software project.&lt;/p&gt;

&lt;p&gt;Its purpose is to provide a simple tool to achieve the following tasks:
&lt;ul&gt;&lt;li&gt; Builds&lt;/li&gt;
    &lt;li&gt; Documentation&lt;/li&gt;
&lt;li&gt; Reporting&lt;/li&gt;
    &lt;li&gt; Dependencies&lt;/li&gt;
    &lt;li&gt; SCMs&lt;/li&gt;
    &lt;li&gt; Releases&lt;/li&gt;
    &lt;li&gt; Distribution&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;A number of good tutorials can be found on maven's &lt;a href="http://maven.apache.org/guides"&gt;guide page&lt;/a&gt;.&lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;Archetypes:&lt;/span&gt;

&lt;p&gt;In maven there is the possibility to create archetype models of projects. This means that it
is possible to create very easily new projects which have a number of templates to start with.
This is related to the possibilities of RAILS.&lt;/p&gt;

&lt;p&gt;This is performed by issueing the following command:
&lt;blockquote&gt; &lt;span style="font-style:italic;"&gt;$ mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app&lt;/span&gt;&lt;/blockquote&gt;&lt;/p&gt;


&lt;span style="font-weight:bold;"&gt;Project Object Model: POM&lt;/span&gt;

&lt;p&gt;There is a concept of project object model somewhat similar to the ant build files.&lt;/p&gt;

&lt;p&gt;An example from the website (see  this &lt;a href=" http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html"&gt;page&lt;/a&gt;): &lt;/p&gt;
&lt;div style='background-color:grey;'&gt;
&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;modelVersion&gt;4.0.0&amp;lt;/modelVersion&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;groupId&gt;com.mycompany.app&amp;lt;/groupId&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;artifactId&gt;my-app&amp;lt;/artifactId&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;packaging&gt;jar&amp;lt;/packaging&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;version&gt;1.0-SNAPSHOT&amp;lt;/version&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;name&gt;Maven Quick Start Archetype&amp;lt;/name&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;url&gt;http://maven.apache.org&amp;lt;/url&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;dependencies&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;   &amp;lt;dependency&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;groupId&gt;junit&amp;lt;/groupId&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;artifactId&gt;junit&amp;lt;/artifactId&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;version&gt;3.8.1&amp;lt;/version&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;     &amp;lt;scope&gt;test&amp;lt;/scope&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;   &amp;lt;/dependency&gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;/dependencies&gt;&lt;br /&gt;
&amp;lt;/project&gt;
&lt;/div&gt;

&lt;p&gt;This model is quite easy to understand. &lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;Project File and Directory Structure&lt;/span&gt;

&lt;p&gt;The project file and directory structure depends on the archetype chosen to create a new project. There are means of configuring this, see: http://maven.apache.org/guides/mini/guide-creating-archetypes.html.&lt;/p&gt;


&lt;span style="font-weight:bold;"&gt;The build Life cycle&lt;/span&gt;

&lt;p&gt;Each possible tasks (e.g. validate, compile, package)  may require other to be performed first. This means that there are dependencies between the tasks (like in ant).&lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;Common tasks&lt;/span&gt;

&lt;ul&gt;&lt;li&gt; mvn compile (compile the code)&lt;/li&gt;
&lt;li&gt; mvn test (test the functionalities of this project)&lt;/li&gt;
&lt;li&gt; mvn test-compile (compile test classes for this project)&lt;/li&gt;
&lt;li&gt; mvn package (package the code of this project)&lt;/li&gt;
&lt;li&gt; mvn clean (clean the builds and task )&lt;/li&gt;
&lt;li&gt; mvn site (create a template website for the project)&lt;/li&gt;
&lt;li&gt; mvn idea:idea (create an IntelliJ IDEA descriptor for the project)&lt;/li&gt;
&lt;li&gt; mvn eclipse:eclipse (create the  project description files for eclipse)&lt;/li&gt;&lt;/ul&gt;
 
&lt;span style="font-weight:bold;"&gt;Maven Plugins&lt;/span&gt;

&lt;p&gt;There are a number of plugins which can be useful for maven. You can add them to the POM file of the project, see: &lt;a href="http://maven.apache.org/guides/getting-started/index.html#How_do_I_use_plug-ins"&gt;How_do_I_use_plug-ins&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A list of plugins can be found &lt;a href="http://maven.apache.org/plugins/"&gt;there&lt;/a&gt;.&lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;SCM Plugin ( Source Code Management plugin)&lt;/span&gt;

&lt;p&gt;One of the many pluging is the SCM plugin which offers useful tasks/goals for interacting with a SCM&lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;External Dependencies&lt;/span&gt;

&lt;p&gt;There is also the possibility to configure external dependencies.&lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;Deployment&lt;/span&gt;

&lt;p&gt;There are also possibilities of deployment if things are configured. For example, the created distribution can be copied and added to a repository using scp. For this, some information about user names,  keys and/or passwords have to be configured.&lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;Documentation&lt;/span&gt;

&lt;p&gt;There are also some thing to help in the creation of a documentation site using archetypes.
See: &lt;a href="http://maven.apache.org/guides/mini/guide-site.html"&gt;guide-site&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7285941815348594774?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7285941815348594774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7285941815348594774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7285941815348594774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7285941815348594774'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/overview-of-maven.html' title='Overview of Maven'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3419716253917300613</id><published>2008-09-11T19:21:00.007+02:00</published><updated>2008-11-02T04:04:04.169+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Linux Links</title><content type='html'>Some information can be found using:
&lt;a href="http://www.tuxfinder.com/"&gt;http://www.tuxfinder.com/&lt;/a&gt;

There is a guide about kernel development from Jonathan Corbet, well known linux author and editor at LWN.net :
&lt;a href="https://ldn.linuxfoundation.org/article/everything-linux-kernel"&gt;https://ldn.linuxfoundation.org/article/everything-linux-kernel&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3419716253917300613?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3419716253917300613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3419716253917300613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3419716253917300613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3419716253917300613'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/linux-links.html' title='Linux Links'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7872730575329663224</id><published>2008-09-11T19:16:00.003+02:00</published><updated>2008-09-11T19:19:40.318+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='wtf'/><title type='text'>www.google.com/linux and co</title><content type='html'>Well I just discovered an interesting thing while looking through old papers the existence of a certain number of URLs for specific google search engine:

&lt;a href="http://www.google.com/linux"&gt;http://www.google.com/linux&lt;/a&gt;
&lt;a href="http://www.google.com/microsoft"&gt;http://www.google.com/microsoft&lt;/a&gt;

Though I would love to get a number of info on which other possibilities there are... Is there a list somewhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7872730575329663224?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7872730575329663224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7872730575329663224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7872730575329663224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7872730575329663224'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/wwwgooglecomlinux-and-co.html' title='www.google.com/linux and co'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-722844447810166602</id><published>2008-09-10T23:58:00.003+02:00</published><updated>2010-04-18T18:38:44.672+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='busybox'/><category scheme='http://www.blogger.com/atom/ns#' term='NAS'/><category scheme='http://www.blogger.com/atom/ns#' term='PXE'/><title type='text'>Using Busybox for serving linux distributtions</title><content type='html'>I want to use a busybox in order to test the kernel through a PXE installation as well as not requiring the hard disk of my machine which should cut some part of the noise.

For this I would install tftp on the busybox... Though it might also work with an NFS or a samba technique... I should check that.

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-722844447810166602?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/722844447810166602/comments/default' title='Post Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/722844447810166602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/722844447810166602'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4466121926487100717</id><published>2008-09-10T02:14:00.007+02:00</published><updated>2008-09-10T02:27:58.818+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><title type='text'>A central Linux Documentation page</title><content type='html'>As I was looking for a way to submit a patch to the documentation of the kernel about the 
i386 --&gt; x86 as well as x86_64 change, I came on to an &lt;a href="http://www.linux.com/feature/142765"&gt;article&lt;/a&gt; about the linux documentation, which gave a pointer on the work of Rob Landley at &lt;a href="http://kernel.org/doc/"&gt;kernel.org/doc&lt;/a&gt;.

I may take a look at what could be missing tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4466121926487100717?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4466121926487100717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=4466121926487100717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4466121926487100717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4466121926487100717'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/central-linux-documentation-page.html' title='A central Linux Documentation page'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5742402577337965934</id><published>2008-09-09T23:07:00.013+02:00</published><updated>2008-09-10T19:32:34.769+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Useful appendices :-)</title><content type='html'>I have been reading this book, an excellent book on linux: 

Wolfgang Mauerer. Linux Kernelarchitektur Konzepte, Strukturen und Algorithmen von Kernel 2.6, Hanser 2004. ISBN 3-446-22566-8 

Some of the information I write from this blog have been largely adapted or influenced through the reading of the book. 

A very useful thing is also, that the book has a web site, with PDF version of the &lt;a href="http://www.linux-kernel.de/appendix/index.html"&gt;appendices&lt;/a&gt; which are not in the book. It is a bit strange but still extremely useful. The book is in german, therefore it will not be useful for everybody.

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.linux-kernel.de/appendix/ap03.pdf"&gt;remarks on C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linux-kernel.de/appendix/ap04.pdf"&gt;booting of the linux kernel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linux-kernel.de/appendix/ap05.pdf"&gt;ELF binary format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linux-kernel.de/appendix/ap01.pdf"&gt;architectures specific topics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linux-kernel.de/appendix/ap02.pdf"&gt;links on how to work with the source code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

There is also a list of useful Documentation links: &lt;a href="http://www.linux-kernel.de/docs/index.html"&gt;http://www.linux-kernel.de/docs/index.html&lt;/a&gt;. In particular:

&lt;ul&gt;
&lt;li&gt;Online Documents about Kernel&lt;/li&gt;
&lt;li&gt;important RFCs (TCP/IP..., Differentiated Services fields) &lt;/li&gt;
&lt;li&gt;GNU tool information&lt;/li&gt;
&lt;li&gt;ELF format&lt;/li&gt;
&lt;li&gt;important documentation from the kernel&lt;/li&gt;
&lt;/ul&gt;


So I've got to say this is really a wonderful book on linux.
I just happened to learn from the author that he is writing a new, more current version of the &lt;a href="http://www.amazon.com/Professional-Kernel-Architecture-Wolfgang-Mauerer/dp/0470343435/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1221050167&amp;sr=8-1"&gt;book&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5742402577337965934?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5742402577337965934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5742402577337965934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5742402577337965934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5742402577337965934'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/useful-appendices.html' title='Useful appendices :-)'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-2096459199906379196</id><published>2008-09-09T21:50:00.008+02:00</published><updated>2008-09-09T22:00:17.460+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><title type='text'>Have you looked at JBOSS' projects lately ?</title><content type='html'>Did you take a look at JBoss lately... It is quite impressive the amount of technologies they have.
Well I knew already some of them... But There are other technologies, which I was not aware of.

See for example the &lt;a href="http://www.jboss.org/projects/docs/"&gt;projects  doc page&lt;/a&gt;.

They have things on Application servers, extension for Rich clients using JSF, Rule engines, remoting mechanisms, Object relational mappings.... You na... No perhaps not... But it is really impressive. So I am going to attack a JBOSS technology serie in this blog.

So except blog entries on: 
&lt;ul&gt;
&lt;li&gt;JBoss application server &lt;/li&gt;
&lt;li&gt;rich faces &lt;/li&gt;
&lt;li&gt;JBoss Remoting&lt;/li&gt;
&lt;li&gt;hibernate (though there was already one or two entries)&lt;/li&gt;
&lt;li&gt;JRUNIT a JUNIT extension to test client/server applications &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-2096459199906379196?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/2096459199906379196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=2096459199906379196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2096459199906379196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/2096459199906379196'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/have-you-looked-at-jboss-projects.html' title='Have you looked at JBOSS&apos; projects lately ?'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-4599134400245417850</id><published>2008-09-09T21:46:00.003+02:00</published><updated>2010-04-18T18:38:44.678+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Remoting'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><title type='text'>JBoss Remoting</title><content type='html'>An interesting framework JBoss remoting.

There is a demo at: &lt;a href="http://docs.jboss.org/jbossas/remoting/demo/JBossRemoting_demo.htm"&gt;http://docs.jboss.org/jbossas/remoting/demo/JBossRemoting_demo.htm&lt;/a&gt;

There is also a very good article at: &lt;a href="http://www.onjava.com/pub/a/onjava/2005/02/23/remoting.html"&gt;http://www.onjava.com/pub/a/onjava/2005/02/23/remoting.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-4599134400245417850?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/4599134400245417850/comments/default' title='Post Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4599134400245417850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/4599134400245417850'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-5478992756738487493</id><published>2008-09-09T20:51:00.011+02:00</published><updated>2010-04-23T12:23:35.704+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Translation lookaside buffer'/><category scheme='http://www.blogger.com/atom/ns#' term='memory management'/><category scheme='http://www.blogger.com/atom/ns#' term='TLB'/><title type='text'>Translation Lookaside buffer, aka TLB</title><content type='html'>&lt;p&gt;in a few words from the wikipedia article:
&lt;span style="font-style:italic;"&gt;a CPU cache used  memory management hardware to improve the speed of virtual address translation.&lt;/span&gt;(wikipedia).&lt;/p&gt;

&lt;p&gt;Much information comes from this &lt;a href="http://www.informit.com/articles/article.aspx?p=29961&amp;seqNum=4"&gt;article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The idea is that CPUs keep an associative memory to cache page table entries (PTEs) of virtual pages which were recently accessed.&lt;/p&gt;

&lt;p&gt;When the CPU must access virtual memory, it looks up in the TLB for a number corresponding to the entry to obtain. &lt;/p&gt;

&lt;p&gt;If an entry was found (a &lt;span style="font-style:italic;"&gt;TLB hit&lt;/span&gt;), then the CPU can use the value of of the PTE which accessed and calculate the physical address. &lt;/p&gt;

&lt;p&gt;In case it was not found (&lt;span style="font-style:italic;"&gt;a TLB miss&lt;/span&gt;), then depending on the architecture, the miss is handled:
&lt;ul&gt;
&lt;li&gt; through hardware, then the CPU tries to walk the page table and find the correct PTE. if one is found the TLB is updated, if none is found then the CPU raises a page fault, which is then treated by the operating system.&lt;/li&gt;
&lt;li&gt; through software,  then the CPU raises a TLB miss fault. The operating system intercepts the miss fault and invoke the corresponding handler, which walks the page. if the PTE is found, it is marked present and the TLB is updated. if it not present, the page fault handler is then in charge.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;

&lt;p&gt;Mostly, CISC (IA-32) use hardware, while RISC (alpha) use software. IA-64 uses an hybrid approach because the hardware approach is faster but less flexible as the software one.&lt;/p&gt;

&lt;h3&gt;Replacement policy&lt;/h3&gt;
&lt;p&gt;If the TLB is full, some entries must be replaced. For this depending on the miss handling strategy, different strategies and policy exist:
&lt;ul&gt;&lt;li&gt; Least recently used (aka LRU)&lt;/li&gt;
&lt;li&gt; Not recently used (aka NRU)&lt;/li&gt;&lt;/ul&gt;
though the TLB miss mechanism is implemented in software, the replacement strategy can be implemented using hardware. This is performed by a number of new architectures: IA-64...&lt;p&gt;

&lt;h3&gt;Ensure coherence with page Table&lt;/h3&gt;

&lt;p&gt;Another issue is to keep the TLB coherent with the page table it represents.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-5478992756738487493?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/5478992756738487493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=5478992756738487493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5478992756738487493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/5478992756738487493'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/translation-lookaside-buffer-aka-tlb.html' title='Translation Lookaside buffer, aka TLB'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-6356238274159639221</id><published>2008-09-08T17:49:00.004+02:00</published><updated>2008-09-08T17:55:10.103+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='isoinfo'/><title type='text'>Nice little tool isoinfo</title><content type='html'>I am working on havin a simple ram based distribution to test a few things at a test system.

For this, I learnt from &lt;a href="http://www.byteclub.net/wiki/Gentoo_live"&gt;this page&lt;/a&gt;, that there exists a command to extract directly some files from iso without mounting the filesystem.

This command is isoinfo and is used in the following way:
&lt;p style='background-color:grey;'&gt;&lt;span style="font-style:italic;"&gt;$ isoinfo -i isofilesystem.iso -J -x /filetobeextracted &gt; filereceivingtheextracteddata&lt;/span&gt;
&lt;/p&gt;

Nice!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-6356238274159639221?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/6356238274159639221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=6356238274159639221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6356238274159639221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/6356238274159639221'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/nice-little-tool-isoinfo.html' title='Nice little tool isoinfo'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3651670080258302089</id><published>2008-09-07T12:43:00.006+02:00</published><updated>2008-09-07T12:50:19.807+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAID'/><category scheme='http://www.blogger.com/atom/ns#' term='Network toplogies'/><category scheme='http://www.blogger.com/atom/ns#' term='computer basics'/><category scheme='http://www.blogger.com/atom/ns#' term='processors'/><title type='text'>Kudos to helpwithpcs.com</title><content type='html'>I found a very nice and simple course on the basic knowledge of computer architectures: &lt;a href="http://www.helpwithpcs.com/courses/Course.htm"&gt;helpwithpcs.com&lt;/a&gt;.

I collected very simple reminders of things I already knew... But it is good to take a look at what you might not know or might have missed such as:

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.helpwithpcs.com/courses/raid-levels.htm"&gt;RAID levels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.helpwithpcs.com/courses/processor-basics.htm"&gt;Processor basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.helpwithpcs.com/courses/network-topologies.htm"&gt;Network Topologies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

It is simple and very well explained...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3651670080258302089?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3651670080258302089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3651670080258302089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3651670080258302089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3651670080258302089'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/kudos-to-helpwithpcscom.html' title='Kudos to helpwithpcs.com'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-7840537927310505320</id><published>2008-09-03T13:07:00.013+02:00</published><updated>2010-05-04T02:34:21.674+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='locking'/><category scheme='http://www.blogger.com/atom/ns#' term='Read copy update'/><title type='text'>Read Copy Update</title><content type='html'>&lt;p&gt;Read Copy Update (aka RCU) is another synchronisation mechanism in order to avoid reader writer locks. &lt;/p&gt;

&lt;p&gt;An excellent explanation can be found at the LWN.net in three parts by  Paul McKenney and Jonathan Walpole: 
&lt;ul&gt;&lt;li&gt;&lt;a href="http://lwn.net/Articles/262464/"&gt;What is RCU, Fundamentally?&lt;/a&gt;,&lt;/li&gt;&lt;li&gt; &lt;a href="http://lwn.net/Articles/263130/"&gt;What is RCU? Part 2: Usage&lt;/a&gt;, and&lt;/li&gt;&lt;li&gt;&lt;a href="http://lwn.net/Articles/264090/"&gt; RCU part 3: the RCU API&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;The basic idea behind it is that when a resource is modified, a new updated structure is put in its place and the old structure is not discarded right away, it waits until references to this structure by other processes are dropped. It can be seen as similar to the concept of garbage collection, but as noted in &lt;a href="http://lwn.net/Articles/263130/"&gt;What is RCU? Part 2: usage&lt;/a&gt;, the old structure is not discarded automatically when there are no references any more and the programmer must indicate the critical read portions of the code.&lt;/p&gt;


&lt;p&gt;There is an interesting page on the &lt;a href="http://www.rdrop.com/users/paulmck/RCU/"&gt;RCU&lt;/a&gt; argueing that this technique is used more and more in the kernel as a replacement for the reader writer locks.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-7840537927310505320?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/7840537927310505320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=7840537927310505320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7840537927310505320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/7840537927310505320'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/read-copy-update.html' title='Read Copy Update'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-106767274301137600</id><published>2008-09-02T00:12:00.028+02:00</published><updated>2010-05-04T02:38:32.135+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='locking'/><title type='text'>Kernel Locking mechanisms</title><content type='html'>&lt;p&gt;An important aspect of programming in an environment with threads and processes is to prevent the different processes to interfer with the functionalities of other processes at the wrong time.&lt;/p&gt;

&lt;p&gt;In linux, a number of methods are used to ensure that the data or code section of processes is not disturbed by others. These methods are:
&lt;ul&gt;
&lt;li&gt;atomic operations&lt;/li&gt; 
&lt;li&gt;spinlocks&lt;/li&gt; 
&lt;li&gt;semaphore&lt;/li&gt; 
&lt;li&gt;reader writer locks&lt;/li&gt; 
&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;These locks and mechanisms are in the kernel space. Other methods or locking mechanisms are used in the user space. &lt;/p&gt;

&lt;h3&gt;atomic operations&lt;/h3&gt;
&lt;p&gt;The idea behind atomic operations is to perform very basic changes on variable but 
which cannot be interfered by other processes, because they are so small. For this, 
special data type is used called: &lt;span style="font-weight:bold;"&gt;atomic_t&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;On this data type, a number of atomic operations can be performed:&lt;/p&gt;

&lt;table&gt;&lt;tr&gt;&lt;th style="text-align:center;"&gt;function&lt;/th&gt;&lt;th style="text-align:center;"&gt;description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;atomic_read(atomic_t *v) &lt;/td&gt;&lt;td&gt;read the variable&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_set(atomic_t *v, int i) &lt;/td&gt;&lt;td&gt;set the variable to i&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_add(int i, atomic_t *v)&lt;/td&gt;&lt;td&gt;add i to the variable&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_sub(int i, atomic_t *v) &lt;/td&gt;&lt;td&gt;substract i  to the variable&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_sub_and_test(int i, atomic_t *v) &lt;/td&gt;&lt;td&gt;substract i to the variable, return true value if 0 else return false&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_inc(atomic_t *v) &lt;/td&gt;&lt;td&gt;increment the variable&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_inc_and_test(atomic_t *v)&lt;/td&gt;&lt;td&gt;increment the variable,  return true value if 0 else return false&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_dec(atomic_t *v) &lt;/td&gt;&lt;td&gt;decrement the variable&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_dec_and_test(atomic_t *v)&lt;/td&gt;&lt;td&gt;decrement the variable,  return true value if 0 else return false&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;atomic_add_negative(int i, atomic_t *v)&lt;/td&gt;&lt;td&gt;add i to the variable, and return true if its value is negative else false
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;Note that I discussed in another &lt;a href="http://desprofundis.blogspot.com/2008/06/kernel-knowhow-per-cpu-variables.html"&gt;post&lt;/a&gt; the local variables for CPUs.&lt;/p&gt;

&lt;h3&gt;spinlocks&lt;/h3&gt;
&lt;p&gt;This kind of locking is used the most, above all to protect sections for short periods from access of other  processes.&lt;/p&gt; 

&lt;p&gt;The kernel checks continuously whether a lock can be taken on the data. This is an example of &lt;span style="font-weight:bold;"&gt;busy waiting&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;spinlocks are used in the following way:&lt;/p&gt;

&lt;blockquote class='cCode'&gt;&lt;span style="font-style:italic;"&gt;
spinlock_t lock = SPIN_LOCK_UNLOCKED;       &lt;br /&gt;
...       &lt;br /&gt;
spin_lock(&amp;lock);       &lt;br /&gt;
/** critical operations */       &lt;br /&gt;
spin_unlock(&amp;lock);&lt;/span&gt;
&lt;/blockquote&gt;
&lt;p&gt;Due to the busy waiting, if the lock is not released... the computer may freeze, therefore spinlocks should not be used for long times.&lt;/p&gt;
&lt;h3&gt;semaphores&lt;/h3&gt;


Unlike linux spinlocks, the kernel sleeps while waiting for the 
release of the  semaphore.

Contrary to spinlocks, this kind of structure should only be used for locks which have a certain length, while for short locks using linux spinlocks  is recommended.


&lt;blockquote class='cCode'&gt;&lt;span style="font-style:italic;"&gt;DECLARE_MUTEX(mutex);       &lt;br /&gt;
....       &lt;br /&gt;

down(&amp;mutex);       &lt;br /&gt;
/** critical section*/       &lt;br /&gt;
up(&amp;mutex);&lt;/span&gt;&lt;/blockquote&gt;

&lt;p&gt;The waiting processes then sleep in an uninterruptable state to wait for the release of the lock. The process cannot be woken up using signals during his sleep.&lt;/p&gt;

&lt;/p&gt;There are other alternatives to the down(&amp;mutex) operation:

&lt;ul&gt;&lt;li&gt; down_interruptible(&amp;mutex) : the process can be woken up using signals&lt;/li&gt;
&lt;li&gt; down_trylock(&amp;mutex): if the lock was successful then the process goes on and does not sleep&lt;/li&gt;&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;For the user space, there are also futexes.... But this is another story.&lt;/p&gt;

&lt;h3&gt;reader writer locks&lt;/h3&gt;
&lt;p&gt;Using this kind of locks, processors can read the locked  data structure  but when the structure is to be written the structure can only be manipulated by one processor at a time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-106767274301137600?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/106767274301137600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=106767274301137600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/106767274301137600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/106767274301137600'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/kernel-locking-mechanisms.html' title='Kernel Locking mechanisms'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1694019977296749526.post-3363977743473344257</id><published>2008-09-01T16:31:00.012+02:00</published><updated>2010-05-04T02:39:21.359+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>GIT tutorial</title><content type='html'>I was having a look at the &lt;a href="http://linux.yyz.us/git-howto.html"&gt;git tutorial&lt;/a&gt;.

The important tasks:

1/ download the code of the linux kernel from git:
&lt;p &gt;&gt;git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6&lt;/p&gt;
2/ pulling new code from git:
&lt;p&gt;&gt; git pull&lt;/p&gt;
3/ reverse code changes
&lt;p&gt;&gt; git checkout -f&lt;/p&gt;
4/ commiting the modifications:
&lt;p&gt;&gt; git commit -a&lt;/p&gt;
5/ undo last commits (note it is different from a revert which consists of a patch reverting some other patch)
&lt;p&gt;&gt; git reset HEAD~2&lt;/p&gt;
6/ list branches
&lt;p&gt;&gt; git branch&lt;/p&gt;
7/ create branch
&lt;p&gt;&gt;  git checkout -b my-new-branch-name master&lt;/p&gt;
8/ choose a branch and make it the current one:
&lt;p&gt;&gt;  git checkout branch&lt;/p&gt;
9/ Tell which branch is current
&lt;p&gt;&gt; git status&lt;/p&gt;
10/ merging code into a branch mybranch
&lt;p&gt;&gt; git checkout mybranch&lt;/p&gt;
&lt;p&gt;&gt; git merge anotherbranch&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1694019977296749526-3363977743473344257?l=desprofundis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://desprofundis.blogspot.com/feeds/3363977743473344257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1694019977296749526&amp;postID=3363977743473344257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3363977743473344257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1694019977296749526/posts/default/3363977743473344257'/><link rel='alternate' type='text/html' href='http://desprofundis.blogspot.com/2008/09/git-tutorial.html' title='GIT tutorial'/><author><name>J</name><uri>http://www.blogger.com/profile/12353010372649505213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
