<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUADQ38-eip7ImA9WhRbEU8.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446</id><updated>2012-02-01T21:22:52.152+01:00</updated><category term="Unix" /><category term="SSL" /><category term="Jetty" /><category term="Desktop" /><category term="Java" /><category term="x64" /><title>Max Berger's Technical Goodies</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.max.berger.name/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.max.berger.name/" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MaxBergersTechnicalTidbits" /><feedburner:info uri="maxbergerstechnicaltidbits" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUADQ38-cSp7ImA9WhRbEU8.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-1679306644991652049</id><published>2012-02-01T21:15:00.003+01:00</published><updated>2012-02-01T21:22:52.159+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-01T21:22:52.159+01:00</app:edited><title>LuxFibre 30 - Fraudulent labeling</title><content type="html">I was really excited: &lt;i&gt;"P&amp;amp;TLuxembourg is very pleased to announce that Ultra High Speed internet access will be available in the Grand Duchy in September 2011!&lt;/i&gt;&amp;nbsp;&lt;i&gt;[...]&amp;nbsp;For some years now, P&amp;amp;TLuxembourg has been actively preparing to install fibre optics throughout the country. Many districts are thus already connected and prepared for the commercial launch. The commercial name for the Ultra High Speed connection will be "LuxFibre". It will give Luxembourg households internet access at record speeds of up to 100 Mbit/s for both downloading and sending information, which is much faster than current residential connections.&lt;br /&gt;
&lt;br /&gt;
When the offer is launched in September 2011, around 85% of households will be able to connect at speeds of up to 30 Mbit/s and around 25% for speeds of up to 100 Mbit/s.&lt;/i&gt;&lt;br /&gt;
See the full &lt;a href="http://www.pt.lu/portal/lang/en/Entreprise/pid/4037" target="_blank"&gt;article LuxFibre at P&amp;amp;T&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, in September when LuxFibre started, my address was not eligible.&lt;br /&gt;
&lt;br /&gt;
However in October I checked again, and LuxFibre-30 is available. The promised speed: 30 MBit downstream, 10 MBit upstream. Check out the&amp;nbsp;&lt;a href="http://luxfibre.lu/" target="_blank"&gt;LixFibre Homepage&lt;/a&gt;. Note that the only claim on that page is "&lt;i&gt;Ultra high-speed internet access&lt;/i&gt;". Indeed, except for the name "LuxFibre" there is no promise of Fibre anywhere.&lt;br /&gt;
&lt;br /&gt;
Of course, when you click on "FAQ", there is a special FAQ for "La Fibre Optique", explaining how the optical fiber works, and what appliances are needed. Read again: There is no connection between LuxFibre-30 and the FAQ about fiber optics. There is none. Would there be any obvious connection, then P&amp;amp;T would be falsely advertising. They are not. They are advertising "ultra high speed".&lt;br /&gt;
&lt;br /&gt;
Today ( Feb 1st, about 3 month after I ordered ) I finally got LuxFibre-30. I was excited. Finally, a next-generation fiber-optical Internet? Then why did the technicians not put in a new optical cable? Why is all they added yet another vDSL Splitter? The answer is simple:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;LuxFibre-30 is vDSL!&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Now, as you can see from the links above, it is clearly my fault that I assumed just because it has "Fibre" in the name, that it would have anything to do with Fibre-Optics. It is also my fault, that I assumed, since there is an FAQ on fiber-optics, which claims fiber is soo much better than ADSL, that I would not get just another DSL.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
It is even my fault that I did not see the fine print, where it states that 30/10 is the maximum speed, and since I'm too far away from the next &amp;nbsp;station, I only get 15/5 [at the full price of 30/10!]. By the way: the FAQ states, that with fiber-optics, distance to the next station would not be an issue anymore, unlike with ADSL.....&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-1679306644991652049?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/YI2k3JsTGlw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/1679306644991652049/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2012/02/luxfibre-30-fraudulent-labeling.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1679306644991652049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1679306644991652049?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/YI2k3JsTGlw/luxfibre-30-fraudulent-labeling.html" title="LuxFibre 30 - Fraudulent labeling" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><georss:featurename>Luxemburg</georss:featurename><georss:point>49.815273 6.129583</georss:point><georss:box>49.487429 5.497869000000001 50.143117 6.761297</georss:box><feedburner:origLink>http://blog.max.berger.name/2012/02/luxfibre-30-fraudulent-labeling.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYMQHY-fip7ImA9WhdVE04.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-2670371486068836911</id><published>2011-09-18T11:13:00.000+02:00</published><updated>2011-09-18T11:13:01.856+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T11:13:01.856+02:00</app:edited><title>Melbourne IT killed my email for five days</title><content type="html">&lt;br /&gt;
My main email address ( max AT berger DOT name ) was broken for the&amp;nbsp;last five days. In this entry I will describe how it came to be, why this&amp;nbsp;is the fault of &lt;a href="https://www.melbourneit.com.au/"&gt;Melbourne IT&lt;/a&gt;, and why I would not&amp;nbsp;recommend&amp;nbsp;them as domain name registrar.&lt;br /&gt;
&lt;br /&gt;
If you are a representative of &lt;a href="https://www.melbourneit.com.au/"&gt;Melbourne IT&lt;/a&gt; reading this,&amp;nbsp;please take a look at cases listing below before posting a comment. You&amp;nbsp;had your chance to fix this several times.&lt;br /&gt;
&lt;br /&gt;
If this sounds like I'm changing domain registrars more often then some&amp;nbsp;people change underwear, please note that I've registered my first Dot&amp;nbsp;Name over ten years ago.&lt;br /&gt;
&lt;h3&gt;
Dot Name&lt;/h3&gt;
A long time ago I registered my name with the provider "NetIdentity".&amp;nbsp;They offered a really cool package: You personal name as 3rd-level domain&amp;nbsp;in the form of first.last.name (e.g. max.berger.name), and also a&amp;nbsp;2nd-level email forward in the form of first@last.name (e.g. max AT berger&amp;nbsp;DOT name). This was sold as a single package.&lt;br /&gt;
&lt;h3&gt;
Hover&lt;/h3&gt;
Unfortunately netidentiy went under, and my domain was transferred to&amp;nbsp;&lt;a href="https://www.hover.com/"&gt;Hover&lt;/a&gt;. Although Hover had low domain&amp;nbsp;prices, the charged their full email package for the .name email forward.&amp;nbsp;Since the registrar has zero effort in setting up the forwarding address&amp;nbsp;(it was already set up anyways), I decided change providers. The Hover&amp;nbsp;support was&amp;nbsp;helpful, and they even offered me a discount.&lt;br /&gt;
&lt;dl&gt;
&lt;dt&gt;Hover&lt;/dt&gt;
&lt;dd&gt;-1 for their pricing policy&lt;br /&gt;
+1 for their support&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt;
Dyn.com&lt;/h3&gt;
I transferred my domain to &lt;a href="http://dyn.com/"&gt;dyn.com&lt;/a&gt;. They&amp;nbsp;offer a really great service, providing domain names for people with&amp;nbsp;changing IP addresses. Unfortunately they do not support 2nd-level .name&amp;nbsp;email forwards, but they told me something like this "You can keep your&amp;nbsp;email forward, it will work as before, you just cannot change it". Indeed,&amp;nbsp;there was no interruption in serving both my domain name and my email.&lt;br /&gt;
&lt;dl&gt;
&lt;dt&gt;Dyn.com&lt;/dt&gt;
&lt;dd&gt;+1 for their custom DNS package. It is awesome!&lt;br /&gt;
+1 for their       technical support&lt;br /&gt;
-0 for not supporting 2nd-level .name email       forwards&lt;/dd&gt;&lt;/dl&gt;
&lt;h4&gt;
United Domains&lt;/h4&gt;
My main website runs on an real server now, and I no longer have the&amp;nbsp;need for the full-blown dynamic DNS services which dyn.com offers. I have&amp;nbsp;been using &lt;a href="http://www.united-domains.de/"&gt;United Domains&lt;/a&gt; for&amp;nbsp;another domain. They have a nice interface, and I haven't had any problems&amp;nbsp;with them in the past. So I asked them, if they provide support for&amp;nbsp;2nd-level name forwards, since I wanted to move all my domains to one&amp;nbsp;provider. They do not, but here is the real great thing: I received an&amp;nbsp;answer from United Domains support pointing me to &lt;a href="http://daniel.gnoutcheff.name/dotname/reglist/"&gt;a list of registrars which properly support dot name&lt;/a&gt;! This means they essentially pointed&amp;nbsp;me to their direct competitors! This is superb! Thank you guys! This means&amp;nbsp;I'll keep my account with you, even if it costs a little more than at the&amp;nbsp;other registrar, because that's exactly the kind of support which is&amp;nbsp;extremely helpful! To bad you don't support the dot Name email&amp;nbsp;forwards...&lt;br /&gt;
&lt;dl&gt;
&lt;dt&gt;United Domains&lt;/dt&gt;
&lt;dd&gt;+1 for their domain settings / Web interface&lt;br /&gt;
+100 for their       technical support!&lt;br /&gt;
-0 for not supporting 2nd-level .name email       forwards&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt;
INWX&lt;/h3&gt;
&lt;a href="http://www.inwx.com/"&gt;INWX&lt;/a&gt; is one of the registrars which&amp;nbsp;fully support Dot Name Domains and email forwards. They also have a nice&amp;nbsp;web interface, and domain transfers in and out are pretty easy. It was a&amp;nbsp;breeze to transfer my domain there, and its easy to administrate online.&amp;nbsp;They are comparatively inexpensive, and answered to all my support&amp;nbsp;questions within 24 hours.&lt;br /&gt;
&lt;br /&gt;
However, transferring my Dot Name Email forward initially failed. It turned out&amp;nbsp;that it was never moved from NetIdentity to Dyn.Com, and therefore the&amp;nbsp;auth code was invalid. This was surprising to me, as I&amp;nbsp;suddenly&amp;nbsp;I did not&amp;nbsp;know where my emai forward is registered at. The INWX support did not want&lt;br /&gt;
to answer me that question.&lt;br /&gt;
&lt;dl&gt;
&lt;dt&gt;INWX&lt;/dt&gt;
&lt;dd&gt;+1 for their domain settings / web interface&lt;br /&gt;
+0 for their       support&lt;br /&gt;
+1 for supporting dot name's correctly!&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt;
Verisign&lt;/h3&gt;
&lt;a href="http://www.verisigninc.com/en_US/products-and-services/domain-name-services/registry-services/name-domain-names/index.xhtml"&gt;Verisign&lt;/a&gt;&amp;nbsp;is currently the official "owner" of dot name. I emailed their support,&amp;nbsp;and within one hour (!) I had an answer telling me who my registrar is.&amp;nbsp;Perfect!&lt;br /&gt;
&lt;dl&gt;
&lt;dt&gt;Verisign&lt;/dt&gt;
&lt;dd&gt;+2 for their support&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt;
Melbourne IT&lt;/h3&gt;
For whatever reason, my dot name email forward was registered with&amp;nbsp;Melbourne IT. First, this seems great: They provide a form I can download,&amp;nbsp;sign, email back, and within a few hours I had an account there and the&amp;nbsp;auth code. For some reason my email forward shows up as "cancelled" and&amp;nbsp;cannot be managed or renewed, but that didn't stop me. I emailed their&amp;nbsp;support about it, and never got a reply. So I made the biggest mistake: I&amp;nbsp;initiated the transfer to another provider!&lt;br /&gt;
&lt;br /&gt;
A day later got suspicious because I did not get email anymore. Even&amp;nbsp;spam stopped coming in, so I knew something must be wrong. I emailed&amp;nbsp;myself, and got an error message back, saying that there is no such&lt;br /&gt;
account as abc@def.com. abc@def.com ????&lt;br /&gt;
&lt;br /&gt;
When I did initiate the transfer, for whatever reason that my email&amp;nbsp;forward was modified to forward to abc@def.com. Dear Melboure IT, if you&amp;nbsp;read this (you did not read most of my other contacts): I AM NOT REACHABLE&amp;nbsp;AT abc@def.com! What gave you that idea??? Is that the payback for&amp;nbsp;realizing that I was not paying (which would have if I would have known&amp;nbsp;about it)?&lt;br /&gt;
&lt;br /&gt;
So, of course, I contacted Melbourne IT's support. No answer If someone&amp;nbsp;answered, then they answered to abc@def.com. I sent another email, this&amp;nbsp;time providing an alternate address. No answer either. Wrote another&amp;nbsp;email. And another. And another. All in all, I got one answer, saying "Your transfer will be auto-authorized after 5 days". What does that mean?&amp;nbsp;It means that for 5 days, everyone trying to send me an email, will get an&amp;nbsp;error message, saying that my email is not working. Of course, I asked&amp;nbsp;them if there is anything I can do to accelerate the process, but again,&amp;nbsp;no reply.&lt;br /&gt;
&lt;br /&gt;
If someone from Melbourne IT is reading this, here are my "case&amp;nbsp;numbers". This list is not complete, there are 1 or 2 missing. You only&amp;nbsp;get the case number via email, which is great if your primary email is not&lt;br /&gt;
working!&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;CAS-2782347-VDGT unanswered&lt;/li&gt;
&lt;li&gt;CAS-2781147-2WIS (this is the one where I got the answer about the&amp;nbsp;five days). A follow up by me was not answerd.&lt;/li&gt;
&lt;li&gt;CAS-2780858-DKSH unanswered&lt;/li&gt;
&lt;li&gt;CAS-2778169-X94B (case for recovering my domain key, this one was&lt;br /&gt;
actually answered). A follow up by me was not answered.&lt;/li&gt;
&lt;/ul&gt;
After five days, my transfer was auto-approved, and my new registrar&amp;nbsp;immediately fixed my email forward. My address is now working properly&amp;nbsp;again, and I am able to receive emails.&lt;br /&gt;
&lt;br /&gt;
Dear Registrars:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;If someone has an email forward, and wants to transfer that to&amp;nbsp;another registrar, DO NOT CHANGE THE EMAIL FORWARD! People are paying&amp;nbsp;for this service, and the chances are pretty high that they are actually&amp;nbsp;using it!&lt;/li&gt;
&lt;li&gt;If you only provide a contact form on your webpage, and you're&amp;nbsp;assigning case numbers, give customers a chance to actually enter those&amp;nbsp;case numbers in your form.&lt;/li&gt;
&lt;li&gt;The five days for approval of transfers is a MAXIMUM! You CAN&amp;nbsp;authorize the transfers earlier - especially if customers are asking you&amp;nbsp;about it!&lt;/li&gt;
&lt;li&gt;Not answering to support contacts is really bad. You don't have to&amp;nbsp;answer within 1 hour, people normally expect an answer within 24 hours,&amp;nbsp;but not answering within five (business!) days is unacceptable.&lt;/li&gt;
&lt;/ol&gt;
What can I say about Melbourne IT?&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;If you have any services with Melbourne IT, I suggest transferring&amp;nbsp;them to another provider. Do so at a time, where an outage of five days&amp;nbsp;won't hurt you. If you can't afford a five day outage, good luck!&lt;/li&gt;
&lt;li&gt;If you are considering a registar or provider, do not chose&amp;nbsp;Melbourne IT, unless you can debug and fix your problems without&amp;nbsp;contacting their customer support.&lt;/li&gt;
&lt;/ul&gt;
&lt;dl&gt;
&lt;dt&gt;Melbourne IT&lt;/dt&gt;
&lt;dd&gt;+1 for providing me with the authcode so quickly&lt;br /&gt;
-100 for       changing my email forward to abc@def.com&lt;br /&gt;
-9001 for not answering to       support contacts&lt;/dd&gt;     &lt;/dl&gt;
&lt;h4&gt;
Conclusion&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;United Domains&lt;/dt&gt;
&lt;dd&gt;is my provider of choice. Their support is awesome, the prices are reasonable.&lt;/dd&gt;
&lt;dt&gt;INWX&lt;/dt&gt;
&lt;dd&gt;is my provider of choice for dot name. They are&amp;nbsp;technically&amp;nbsp;fit and their prices are reasonable.&lt;/dd&gt;
&lt;dt&gt;Melbourne IT&lt;/dt&gt;
&lt;dd&gt;should be avoided. Their support is terrible, and they break your services.&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/2740704466690807446-2670371486068836911?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/UTuFxnbvsO4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/2670371486068836911/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2011/09/melbourne-it-killed-my-email-for-five.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/2670371486068836911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/2670371486068836911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/UTuFxnbvsO4/melbourne-it-killed-my-email-for-five.html" title="Melbourne IT killed my email for five days" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2011/09/melbourne-it-killed-my-email-for-five.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UMQ3k5eip7ImA9Wx5bE00.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-7973517214285722590</id><published>2010-10-28T23:28:00.000+02:00</published><updated>2010-10-28T23:28:02.722+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-28T23:28:02.722+02:00</app:edited><title>Ubuntu 10.10 Maverick Meerkat Netbook - fails to impress</title><content type="html">&lt;p&gt;I've recently bought a new netbook, and with the new &lt;a href="http://www.ubuntu.com/netbook"&gt;Ubuntu Netbook edition&lt;/a&gt; coming out, I thought I'd take it for a test. Unfortunately it completely failed to impress me within the first 30 minutes.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Disclaimer:&lt;/i&gt; I've been a big fan of Debian, and now Ubuntu (stability of Debian, but with ease of use) for a while. I believe Ubuntu is a great system, and it is still my Nr.1 Linux distribution of choice. All the problems listed below are no challenge for a technical person, but Ubuntu aims to support the casual user as well.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Disclaimer 2:&lt;/i&gt; The following is my personal definition of a netbook: It is a laptop&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;with a small screen&lt;/li&gt;
&lt;li&gt;and little processing power&lt;/li&gt;
&lt;li&gt;focussing on quick time-to-Internet&lt;/li&gt;
&lt;li&gt;and long battery life&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As my netbook currently runs a proprietary system, I used WUBI to install.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Blocker #1:&lt;/b&gt; WUBI downloaded from the &lt;a href="http://www.wubi-installer.org"&gt;WUBI page&lt;/a&gt; still had only Ubuntu 10.4 (that was on oct.11, where 10.10 was one day old). Only when accessing the &lt;a href="http://www.ubuntu.com/desktop/get-ubuntu/windows-installer"&gt;Ubuntu download page&lt;/a&gt; i got the newest version. The main page now redirects there.&lt;/p&gt;
&lt;p&gt;Ubuntu installed fine, at some time it rebooted and&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Blocker #2:&lt;/b&gt; Windows boots up! The installer can create a boot menu entry, but it cannot set it to Linux to finish the installation?&lt;/p&gt;
&lt;p&gt;Finally Ubuntu booted, I selected the "netbook" session and&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Blocker #3:&lt;/b&gt; failed to start because my card did not support the necessary 3D features! Why does Ubuntu need a 3D graphics card on a Netbook? This collides with long battery life and low processing power. BTW: My Nvidia card is supported just fine, once i could log in the desktop session, install the proprietary driver, etc.... Why wasn't this done at install time?&lt;/p&gt;
&lt;p&gt;As said, I had to log into the desktop session and&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Blocker #4: &lt;/b&gt; got a cryptic error message about missing language packs. It gave me two choices: Either I install them now, or I have to do this later (hidden in some menu you instantly forget). This brings me to two questions: 1) Why wheren't those installed before? I did select my language. 2) Until this point I was never asked for my WiFi credentials, which would have enabled me to do the immediate install. After all, this is my portable, and I expect it to work without wires.&lt;/p&gt;
&lt;p&gt;After setting all these up, I finally rebooted and&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Blocker #5: &lt;/b&gt; was asked for a username and password! While this is fine for laptops and desktops, its a most-people-don't-want-this-on-a-netbook feature. I want to turn it on and surf the web, not wait, enter my password, and then have to wait again for the window manager to load.&lt;/p&gt;
&lt;p&gt;Try finding the setting in the netbook remix window manager, guess what:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Blocker #6: &lt;/b&gt; Settings are only available in the Gnome (desktop) session.&lt;/p&gt;

&lt;p&gt;Conclusion: Ubuntu still has ways to go before they can close &lt;a href="https://launchpad.net/ubuntu/+bug/1"&gt;Ubuntu Bug #1&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/2740704466690807446-7973517214285722590?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/kAykdMsfY_M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/7973517214285722590/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/10/ubuntu-1010-maverick-meerkat-netbook.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7973517214285722590?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7973517214285722590?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/kAykdMsfY_M/ubuntu-1010-maverick-meerkat-netbook.html" title="Ubuntu 10.10 Maverick Meerkat Netbook - fails to impress" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>1</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/10/ubuntu-1010-maverick-meerkat-netbook.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UMQn05fSp7ImA9WxFaFE0.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-4910271374280731592</id><published>2010-07-18T00:21:00.000+02:00</published><updated>2010-07-18T00:21:23.325+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-18T00:21:23.325+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title>Eclipse Helios - New Apply Patch Features</title><content type="html">&lt;p&gt;Eclipse Helios has a few nice new features for applying patches. In this post I would like to point some of the out&lt;/p&gt;
&lt;h4&gt;Apply Patch using URL&lt;/h4&gt;
&lt;p&gt;The Apply Patch wizard now accepts URLs. This is great when you a working with open source projects where patches are frequently added as attachment to bug reports. Previousely, I had to download the patch, find it again (which is difficult when all patches are named patch, and therefore end up being downloaded as patch, patch (1), patch (2), ... ), an then apply. Now I just click on "copy link" and it is automagically pasted into the apply-patch box. Nice one!&lt;/p&gt;
&lt;h4&gt;Apply Patch in Synchronize View&lt;/h4&gt;
&lt;p&gt;Even nicer is applying patches in synchronize view - the option is, however, hidden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Switch to the synchronized perspective&lt;/li&gt;
&lt;li&gt;In the synchronize view, click on the arrow next to the synchronize icon (the first one from the left&lt;/li&gt;
&lt;li&gt;Select synchronize...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now you can finally partially apply patches! What makes this feature even better is that it also accepts URLs, so it can be directly used with patches attached to bug reports!&lt;/p&gt;
&lt;p&gt;And to bring this all together, there is now the&lt;/p&gt;
&lt;h4&gt;Apply patch in Synchronize view preference&lt;/h4&gt;
&lt;p&gt;Hidden in the preferences under "Team", you can check "Apply patch in Synchronize view" to always get this behavior. Now this is one of the most useful settings - unfortunately it is off by default.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-4910271374280731592?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/tIXiopgCiW4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/4910271374280731592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/07/eclipse-helios-new-apply-patch-features.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/4910271374280731592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/4910271374280731592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/tIXiopgCiW4/eclipse-helios-new-apply-patch-features.html" title="Eclipse Helios - New Apply Patch Features" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>1</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/07/eclipse-helios-new-apply-patch-features.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04AQH88fip7ImA9Wx5TE0U.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-4855636816159365937</id><published>2010-07-17T23:54:00.001+02:00</published><updated>2010-07-29T09:52:21.176+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-29T09:52:21.176+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="x64" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title>Eclipse Helios and Java 1.6u21 deadlocks</title><content type="html">&lt;p&gt;I wanted to write a post about the new &lt;a href="http://eclipse.org/helios/"&gt;Eclipse Helios&lt;/a&gt;, which was just released to participate in the &lt;a href="http://www.eclipse.org/helios/blogathon/guidelines.php"&gt;Helios Blogathon&lt;/a&gt;. So, on my personal machine, I installed the newest JDK (1.6u21), the new eclipse, started it up, tried to work with it and after a few seconds.... It just hangs!&lt;/p&gt;
&lt;p&gt;But whait - it worked nicely on my work machine, so what's the deal? Did I install the wrong plug-ins? Tried to open up the wrong editor? I had the same problem on my work machine (Windows 7 x64 with the newest Java 64 bit (1.6u21)). On this machine I fixed it using the 32 bit Java version instead (which just happend to be 1.6u20).&lt;/p&gt;
&lt;p&gt;After spending several hours with several 32 and 64 bit versions of Eclipse and Java, I found the deadly combination. It is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 7 x64 (may be unrelated to the problem)&lt;/li&gt;
&lt;li&gt;Java 1.6 u 21&lt;/li&gt;
&lt;li&gt;Eclipse Helios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The fix? Get an older Java Version - which is not simple - if you try to get an older version of Java, Oracle asks you to register and wants your email address. They don't tell you that there is a public &lt;a href="http://java.sun.com/products/archive/"&gt;archive of older Java versions&lt;/a&gt;. Why should they? You always want the latest version, right? Even if this means your Eclipse Helios session is limited to 5 seconds.&lt;/p&gt;
&lt;p&gt;
Helios now runs fine on an Jdk 1.5, with a separate JDK 1.6 installed to actually run my apps.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Update: 11 days after my post Slashdot has some more information: &lt;a href="http://it.slashdot.org/story/10/07/28/2121259/Oracles-Java-Company-Change-Breaks-Eclipse"&gt;Oracles Java Company Change Breaks Eclipse&lt;/a&gt;. Also, there is &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6969236"&gt;Bug 6969236&lt;/a&gt;.&lt;/p&gt;
&lt;hr/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-4855636816159365937?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/ZmozvA9HkFs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/4855636816159365937/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/07/eclipse-helios-and-java-16u21-deadlocks.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/4855636816159365937?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/4855636816159365937?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/ZmozvA9HkFs/eclipse-helios-and-java-16u21-deadlocks.html" title="Eclipse Helios and Java 1.6u21 deadlocks" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>2</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/07/eclipse-helios-and-java-16u21-deadlocks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08DR3g_eip7ImA9WxFTFkk.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-5219676473411384007</id><published>2010-04-01T15:57:00.001+02:00</published><updated>2010-04-07T16:17:56.642+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-07T16:17:56.642+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><title>DataSource in Jetty through JNDI</title><content type="html">&lt;p&gt;Prerequesite: Please ensure JNDI is configured properly and you can &lt;a href="http://blog.max.berger.name/2010/04/passing-parameters-to-jetty-7-via-jndi.html"&gt;pass parameters to Jetty via JNDI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First, you need to add the used libraries to Jettys classpath. In my case, I wanted &lt;a href="http://commons.apache.org/dbcp/"&gt;commons-dbcp&lt;/a&gt; (alternative: &lt;a href="http://sourceforge.net/projects/c3p0/"&gt;c3p0&lt;/a&gt;) over an &lt;a href="http://www.h2database.com/"&gt;H2 database&lt;/a&gt;, so I added the following to my &lt;tt&gt;pom.xml&lt;/tt&gt;
&lt;hr /&gt;
&lt;pre&gt;      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.mortbay.jetty&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;jetty-maven-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;7.0.1.v20091125&amp;lt;/version&amp;gt;
        &amp;lt;dependencies&amp;gt;
          &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;commons-dbcp&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;commons-dbcp&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;
          &amp;lt;/dependency&amp;gt;
          &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;com.h2database&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;h2&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;1.2.131&amp;lt;/version&amp;gt;
          &amp;lt;/dependency&amp;gt;
        &amp;lt;/dependencies&amp;gt;
      &amp;lt;/plugin&amp;gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;On Jetty standalone, I copied the libraries to the &lt;tt&gt;lib/ext&lt;/tt&gt; directory and added &lt;tt&gt;ext&lt;/tt&gt; to the options in &lt;tt&gt;start.ini&lt;/tt&gt;. Please note that commons-dbcp also requires &lt;a href="http://commons.apache.org/pool/"&gt;commons-pool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next, add the configuration of your DataSource to &lt;tt&gt;jetty-env.xml&lt;/tt&gt;:
&lt;hr /&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"&amp;gt;
&amp;lt;Configure id="thisfile" class="org.eclipse.jetty.webapp.WebAppContext"&amp;gt;
  &amp;lt;New class="org.eclipse.jetty.plus.jndi.Resource"&amp;gt;
    &amp;lt;Arg&amp;gt;&amp;lt;Ref id="thisfile"/&amp;gt;&amp;lt;/Arg&amp;gt;
    &amp;lt;Arg&amp;gt;jdbc/nameOfMyDatabase&amp;lt;/Arg&amp;gt;
    &amp;lt;Arg&amp;gt;
      &amp;lt;New class="org.apache.commons.dbcp.BasicDataSource"&amp;gt;
        &amp;lt;Set name="url"&amp;gt;jdbc:h2:/path/to/your/DataBase&amp;lt;/Set&amp;gt;
      &amp;lt;/New&amp;gt;
    &amp;lt;/Arg&amp;gt;
  &amp;lt;/New&amp;gt;
&amp;lt;/Configure&amp;gt;
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;To actually have access to the datasource, you also need modify &lt;tt&gt;web.xml&lt;/tt&gt; to declare that you want a resource unter this name:
&lt;hr /&gt;
&lt;pre&gt;  &amp;lt;resource-ref&amp;gt;
    &amp;lt;res-ref-name&amp;gt;jdbc/nameOfMyDatabase&amp;lt;/res-ref-name&amp;gt;
    &amp;lt;res-type&amp;gt;javax.sql.DataSource&amp;lt;/res-type&amp;gt;
    &amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;
  &amp;lt;/resource-ref&amp;gt;
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;The database is now available as &lt;tt&gt;DataSource&lt;/tt&gt; at &lt;tt&gt;java:/comp/env/jdbc/nameOfMyDatabase&lt;/tt&gt; and can be used directly in tools such as hibernate by setting &lt;tt&gt;hibernate.connection.datasource&lt;/tt&gt; to this value.&lt;/p&gt;
&lt;p&gt;Background: Hibernate did not properly release the database connection when the WebApp shut down. This resulted in Exceptions when trying to undeploy and deploy the webapp without killing Jetty, as the embedded database existed both in the old and the new context. By moving the connection out of the WebApp, and into Jetty's responsibility, the embedded database driver now only exists in Jetty's context. Adding the connection pool is just decoration.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-5219676473411384007?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/ll77cfE5sFM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/5219676473411384007/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/04/datasource-in-jetty-through-jndi.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/5219676473411384007?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/5219676473411384007?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/ll77cfE5sFM/datasource-in-jetty-through-jndi.html" title="DataSource in Jetty through JNDI" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/04/datasource-in-jetty-through-jndi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDR3c_cSp7ImA9WxFTEU8.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-2070187507455492150</id><published>2010-04-01T15:03:00.001+02:00</published><updated>2010-04-01T15:04:36.949+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-01T15:04:36.949+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><title>Passing parameters to Jetty 7 via JNDI</title><content type="html">&lt;p&gt;If you have the jetty-maven-plugin properly configured in the &lt;tt&gt;pom.xml&lt;/tt&gt;, then everything is already set up.&lt;/p&gt;
&lt;p&gt;For Jetty Standalone, please see my other post about &lt;a href="http://blog.max.berger.name/2010/04/configuring-jetty-7-standalone-for-jndi.html"&gt;configuring JNDI in jetty standalone&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Passing parameters through JNDI proved to be very simple. In &lt;tt&gt;src/main/webapp/WEB-INF&lt;/tt&gt; create a file &lt;tt&gt;jetty-env.xml&lt;/tt&gt;, with the following contents:&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"&amp;gt;
&amp;lt;Configure id="thisfile" class="&lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/index.html?org/eclipse/jetty/webapp/WebAppContext.html"&gt;org.eclipse.jetty.webapp.WebAppContext&lt;/a&gt;"&amp;gt;
  &amp;lt;New class="&lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/plus/jndi/EnvEntry.html"&gt;org.eclipse.jetty.plus.jndi.EnvEntry&lt;/a&gt;"&amp;gt;
    &amp;lt;Arg&amp;gt;&amp;lt;Ref id="thisfile"/&amp;gt;&amp;lt;/Arg&amp;gt;
    &amp;lt;Arg&amp;gt;paramname&amp;lt;/Arg&amp;gt;
    &amp;lt;Arg type="java.lang.String"&amp;gt;A sample parameter value&amp;lt;/Arg&amp;gt;
    &amp;lt;Arg type="boolean"&amp;gt;false&amp;lt;/Arg&amp;gt;
  &amp;lt;/New&amp;gt;
&amp;lt;/Configure&amp;gt;
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;You can then load your parameter through the standard naming context:&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;import javax.naming.Context;
import javax.naming.InitialContext;
...
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
String param = (String) envCtx.lookup("paramname");
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Of course, you can add other parameters, rename &lt;em&gt;paramname&lt;/em&gt; to something that makes more sense, or use other data types. Please note: Jetty supports more datatypes than required by the J2EE standard.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-2070187507455492150?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/CqCKk93H28w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/2070187507455492150/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/04/passing-parameters-to-jetty-7-via-jndi.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/2070187507455492150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/2070187507455492150?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/CqCKk93H28w/passing-parameters-to-jetty-7-via-jndi.html" title="Passing parameters to Jetty 7 via JNDI" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/04/passing-parameters-to-jetty-7-via-jndi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEANQ3g5eCp7ImA9WxFTEU8.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-6946301747412280983</id><published>2010-04-01T14:59:00.000+02:00</published><updated>2010-04-01T14:59:52.620+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-01T14:59:52.620+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><title>Configuring Jetty 7 standalone for JNDI</title><content type="html">&lt;p&gt;Configuring Jetty 7 for JNDI can be a bit tricky. If you miss any of these points, you may end up passing JNDI parameters, but they will not be available in your webapp.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ensure the plus libraries are loaded. You can to this by adding the option &lt;tt&gt;plus&lt;/tt&gt; in Jetty's &lt;tt&gt;start.ini&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Ensure jetty is configured to use the plus configuration classes. You can do this by adding the following inside the context, or the &lt;tt&gt;jetty-env.xml&lt;/tt&gt;:
&lt;hr /&gt;
&lt;pre&gt;  &amp;lt;Set name="ConfigurationClasses"&amp;gt;
    &amp;lt;Array id="plusConfig" type="java.lang.String"&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.webapp.WebInfConfiguration&amp;lt;/Item&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.webapp.WebXmlConfiguration&amp;lt;/Item&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.webapp.MetaInfConfiguration&amp;lt;/Item&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.webapp.FragmentConfiguration&amp;lt;/Item&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.plus.webapp.EnvConfiguration&amp;lt;/Item&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.plus.webapp.Configuration&amp;lt;/Item&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.webapp.JettyWebXmlConfiguration&amp;lt;/Item&amp;gt;
      &amp;lt;Item&amp;gt;org.eclipse.jetty.webapp.TagLibConfiguration&amp;lt;/Item&amp;gt;
    &amp;lt;/Array&amp;gt;
  &amp;lt;/Set&amp;gt;
&lt;/pre&gt;
&lt;hr /&gt;
The documentation suggests adding &lt;tt&gt;etc/jetty-plus.xml&lt;/tt&gt; to the startup, which would make this configuration available as &lt;tt&gt;plusConfig&lt;/tt&gt; to refer to. This did not work on my machine.
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can now continue with &lt;a href=""&gt;Passing parameters to Jetty 7 via JNDI&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/2740704466690807446-6946301747412280983?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/0_Dg2YsZyLw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/6946301747412280983/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/04/configuring-jetty-7-standalone-for-jndi.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/6946301747412280983?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/6946301747412280983?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/0_Dg2YsZyLw/configuring-jetty-7-standalone-for-jndi.html" title="Configuring Jetty 7 standalone for JNDI" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/04/configuring-jetty-7-standalone-for-jndi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYDQXs9fip7ImA9WxBVE08.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-1926995447312088860</id><published>2010-02-10T13:14:00.001+01:00</published><updated>2010-02-16T12:36:10.566+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-16T12:36:10.566+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Jetty 7 maven plugin authentication realms</title><content type="html">&lt;p&gt;The configuration directive &lt;tt&gt;UserRealm&lt;/tt&gt; seems to no longer work with the jetty 7 maven plugin (&lt;tt&gt;jetty-maven-plugin&lt;/tt&gt;). I received the following error:&lt;/p&gt;
&lt;p style='text-align: left;'&gt;&lt;tt&gt;java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.security.authentication.BasicAuthenticator@4095c5ec in ConstraintSecurityHandler@28f52a14@&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Fixing this involved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating a jetty configuration file, such as the following:&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="ISO-8859-1"?&amp;gt;
&amp;lt;!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"&amp;gt;
&amp;lt;Configure class="org.eclipse.jetty.webapp.WebAppContext"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;Get name="securityHandler"&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;Set name="loginService"&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;New class="org.eclipse.jetty.security.HashLoginService"&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Set name="name"&amp;gt;YourSecurityRealmHere&amp;lt;/Set&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Set name="config"&amp;gt;src/test/resources/jetty-realm.properties&amp;lt;/Set&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Call name="start"/&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/New&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/Set&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;Set name="checkWelcomeFiles"&amp;gt;true&amp;lt;/Set&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/Get&amp;gt;
&amp;lt;/Configure&amp;gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;To be saved as &lt;tt&gt;src/test/resources/jetty-test.xml&lt;/tt&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;tt&gt;src/test/resources/jetty-realm.properties&lt;/tt&gt; with your &lt;a href="http://blog.max.berger.name/2010/01/jettys-missing-passwdsh.html"&gt;Jetty 7 password&lt;/a&gt; file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updating the jetty configuration in my &lt;tt&gt;pom.xml&lt;/tt&gt;:&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.mortbay.jetty&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;jetty-maven-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;7.0.1.v20091125&amp;lt;/version&amp;gt;
        &amp;lt;configuration&amp;gt;
          &amp;lt;webAppXml&amp;gt;src/test/resources/jetty-test.xml&amp;lt;/webAppXml&amp;gt;
        &amp;lt;/configuration&amp;gt;
        &amp;lt;dependencies&amp;gt;
          &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;org.eclipse.jetty&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;jetty-servlets&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;7.0.1.v20091125&amp;lt;/version&amp;gt;
          &amp;lt;/dependency&amp;gt;
        &amp;lt;/dependencies&amp;gt;
      &amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;The important entry is &lt;tt&gt;webAppXML&lt;/tt&gt;. The extra dependency to &lt;tt&gt;jetty-servlets&lt;/tt&gt; was added to support &lt;a href="http://blog.max.berger.name/2010/01/jetty-7-gzip-filter.html"&gt;GZip in Jetty 7&lt;/a&gt;.&lt;/p&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/2740704466690807446-1926995447312088860?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/sbSjsUocPnc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/1926995447312088860/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/02/jetty-7-maven-plugin-authentication.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1926995447312088860?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1926995447312088860?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/sbSjsUocPnc/jetty-7-maven-plugin-authentication.html" title="Jetty 7 maven plugin authentication realms" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>2</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/02/jetty-7-maven-plugin-authentication.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcMRn04cCp7ImA9WxBWGE0.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-335846727677125106</id><published>2010-02-10T11:13:00.000+01:00</published><updated>2010-02-10T13:14:47.338+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-10T13:14:47.338+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Jetty seems to ignore webdefault.xml</title><content type="html">&lt;p&gt;If just tried to edit &lt;tt&gt;webdefaults.xml&lt;/tt&gt; to disable directory views, and the change was not reflected in my webapp. The reason: &lt;tt&gt;webdefaults.xml&lt;/tt&gt; is &lt;em&gt;not&lt;/em&gt; read by default, but must be explicitly added to the context of the webapp:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;
&amp;nbsp;&amp;lt;Set name="defaultsDescriptor"&amp;gt;&amp;lt;SystemProperty name="jetty.home" default="."/&amp;gt;/etc/webdefault.xml&amp;lt;/Set&amp;gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;And suddenly all changes in &lt;tt&gt;webdefaults.xml&lt;/tt&gt; are applied.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-335846727677125106?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/vzAQcb87pmk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/335846727677125106/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/02/jetty-seems-to-ignore-webdefaultxml.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/335846727677125106?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/335846727677125106?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/vzAQcb87pmk/jetty-seems-to-ignore-webdefaultxml.html" title="Jetty seems to ignore webdefault.xml" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>2</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/02/jetty-seems-to-ignore-webdefaultxml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQHRXo4fip7ImA9WxBXFk0.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-3780579689277255664</id><published>2010-01-27T16:30:00.000+01:00</published><updated>2010-01-27T16:32:14.436+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T16:32:14.436+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Enabling JSP support in Jetty 7</title><content type="html">&lt;p&gt;As Jetty 6 failed to use the port inherited from xinetd, I have to use Jetty 7. Unfortunately Jetty is missing the JSP support by default. Here is how to enable it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the Jetty 6 distribution.&lt;/li&gt;
&lt;li&gt;Copy the &lt;tt&gt;jsp-2.1&lt;/tt&gt; folder to the Jetty 7 &lt;tt&gt;lib/&lt;/tt&gt; folder.&lt;/li&gt;
&lt;li&gt;You can check if it works by running &lt;tt&gt;java -jar start.jar --list-options&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Edit &lt;tt&gt;start.ini&lt;/tt&gt; to include &lt;tt&gt;jsp-2.1&lt;/tt&gt; in the &lt;tt&gt;OPTIONS&lt;/tt&gt; line.&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-3780579689277255664?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/D9MX2iota5M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/3780579689277255664/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/enabling-jsp-support-in-jetty-7.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/3780579689277255664?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/3780579689277255664?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/D9MX2iota5M/enabling-jsp-support-in-jetty-7.html" title="Enabling JSP support in Jetty 7" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>3</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/01/enabling-jsp-support-in-jetty-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUGRnwzeip7ImA9WxBWF0Q.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-463980840304384981</id><published>2010-01-27T16:25:00.001+01:00</published><updated>2010-02-10T11:20:27.282+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-10T11:20:27.282+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Jetty 6 vs. Jetty 7</title><content type="html">&lt;p&gt;There are several differences between Jetty 6 and Jetty 7:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Most classes have been renamed from &lt;tt&gt;org.mortbay&lt;/tt&gt; to &lt;tt&gt;org.eclipse&lt;/tt&gt; and sometimes moved to a different path. Find the new class names in the &lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/"&gt;Jetty 7 JavaDoc&lt;/a&gt;. This applies to most settings in &lt;tt&gt;jetty.xml&lt;/tt&gt; and &lt;tt&gt;web.xml&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Jetty 7 comes with fewer plugins. Important extras such as JSP support are missing from the standard distribution.&lt;/li&gt;
&lt;li&gt;Jetty 7 includes several bugfixes. Example: Taking a port from xinetd did not work with Jetty 6 on my machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More information is at the &lt;a href="http://wiki.eclipse.org/Jetty/Starting/Porting_to_Jetty_7"&gt;Porting to Jetty 7&lt;/a&gt; page.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-463980840304384981?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/4OQdLCqHOdI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/463980840304384981/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/jetty-6-vs-jetty-7.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/463980840304384981?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/463980840304384981?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/4OQdLCqHOdI/jetty-6-vs-jetty-7.html" title="Jetty 6 vs. Jetty 7" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>1</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/01/jetty-6-vs-jetty-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BSHY_eip7ImA9WxBXFk0.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-7285543998849204702</id><published>2010-01-27T15:34:00.000+01:00</published><updated>2010-01-27T15:34:19.842+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T15:34:19.842+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Jetty 7 gzip Filter</title><content type="html">&lt;p&gt;Jetty includes a gzip-filter for dynamic compression of contents, thus saving bandwidth and enabling your site to load faster (especially important if you have a lot of javascript).&lt;/p&gt;
&lt;p&gt;To configure it, add the follwing filter definition to your &lt;tt&gt;web.xml&lt;/tt&gt;:&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;  &amp;lt;filter&amp;gt;
    &amp;lt;filter-name&amp;gt;GzipFilter&amp;lt;/filter-name&amp;gt;
    &amp;lt;filter-class&amp;gt;org.eclipse.jetty.servlets.GzipFilter&amp;lt;/filter-class&amp;gt;
    &amp;lt;init-param&amp;gt;
      &amp;lt;param-name&amp;gt;mimeTypes&amp;lt;/param-name&amp;gt;
      &amp;lt;param-value&amp;gt;text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml&amp;lt;/param-value&amp;gt;
    &amp;lt;/init-param&amp;gt;
  &amp;lt;/filter&amp;gt;
  &amp;lt;filter-mapping&amp;gt;
    &amp;lt;filter-name&amp;gt;GzipFilter&amp;lt;/filter-name&amp;gt;
    &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;
  &amp;lt;/filter-mapping&amp;gt; 
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Please note: This configuration is for Jetty 7. For Jetty 6 change the filter to &lt;tt&gt;org.mortbay.servlet.GzipFilter&lt;/tt&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-7285543998849204702?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/aE7EiVaOe98" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/7285543998849204702/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/jetty-7-gzip-filter.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7285543998849204702?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7285543998849204702?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/aE7EiVaOe98/jetty-7-gzip-filter.html" title="Jetty 7 gzip Filter" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>3</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/01/jetty-7-gzip-filter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BSHY_eyp7ImA9WxBXFk0.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-7856895171665867911</id><published>2010-01-27T14:40:00.001+01:00</published><updated>2010-01-27T15:34:19.843+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T15:34:19.843+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Jettys missing passwd.sh</title><content type="html">&lt;p&gt;Jetty comes with a very nice Password encrypting command. Unfortunately, there is no &lt;tt&gt;passwd.sh&lt;/tt&gt; to call it, and you have to manually find out where it is defined. Also, the documentation is for Jetty 6 only, and the names of the classes and libraries have changed in Jetty 7.&lt;/p&gt;
&lt;p&gt;Here is the missing &lt;tt&gt;passwd.sh&lt;/tt&gt; for Jetty 7:&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;#!/bin/bash

# look for JETTY_HOME
if [ -z "$JETTY_HOME" ] 
then
  cd $(dirname "$0")
  JETTY_HOME_1=$(pwd)
  cd - &gt; /dev/null
  JETTY_HOME_1=$(dirname "$JETTY_HOME_1")
  JETTY_HOME=${JETTY_HOME_1} 
fi

java -cp $JETTY_HOME/lib/jetty-http-7.0.1.v20091125.jar:\
$JETTY_HOME/lib/jetty-util-7.0.1.v20091125.jar \
org.eclipse.jetty.http.security.Password $*
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Please note that the &lt;tt&gt;JETTY_HOME&lt;/tt&gt; detection is also changed from the original jetty shell scripts to be more sane.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-7856895171665867911?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/g7253GrrRpY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/7856895171665867911/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/jettys-missing-passwdsh.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7856895171665867911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7856895171665867911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/g7253GrrRpY/jettys-missing-passwdsh.html" title="Jettys missing passwd.sh" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/jettys-missing-passwdsh.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BSHY_eyp7ImA9WxBXFk0.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-698217692889637183</id><published>2010-01-26T10:16:00.000+01:00</published><updated>2010-01-27T15:34:19.843+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T15:34:19.843+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Jetty vs. Tomcat</title><content type="html">When setting up a new webserver, I decided to evaluate Jetty as an alternative to Tomcat. I have previousely used Tomcat, and was content with it. Here is what I've found:&lt;br /&gt;
Both:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Implement recent JSP and Servlet standards&lt;/li&gt;
&lt;li&gt;Can easily run .WAR files&lt;/li&gt;
&lt;li&gt;Are pretty fast when serving content (speed comparisons on the web show only minor differences)&lt;/li&gt;
&lt;/ul&gt;
Pro Jetty:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Jetty uses less memory&lt;/li&gt;
&lt;li&gt;Jetty seams more "lightweight"&lt;/li&gt;
&lt;/ul&gt;
Pro Tomcat:&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Tomcat is very well documented - Jetty Documentation is sparse and targeted towards Java developers. The Jetty config file is (intentionally) like coding&lt;/li&gt;
&lt;li&gt;I know Tomcat by now&lt;/li&gt;
&lt;/ul&gt;
As the machine I am using now is low on memory, I decided to give Jetty a try. However, installing it was not easy. But that's a topic for the next post.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-698217692889637183?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/3w7lFk1xd9I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/698217692889637183/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/jetty-vs-tomcat.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/698217692889637183?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/698217692889637183?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/3w7lFk1xd9I/jetty-vs-tomcat.html" title="Jetty vs. Tomcat" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/jetty-vs-tomcat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04DRXYyeSp7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-1481072960993520556</id><published>2010-01-25T11:39:00.000+01:00</published><updated>2010-01-25T11:39:34.891+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:39:34.891+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Useful PNG commands</title><content type="html">&lt;p&gt;Useful command for handling PNG files.&lt;/p&gt;&lt;p&gt;Prerequisites: ImageMagick, Pngcrush&lt;/p&gt;&lt;h3&gt; Resizing &lt;/h3&gt;&lt;p&gt;Resize to a given maximum size&lt;/p&gt;&lt;pre&gt;for i in *png ; do convert $i -geometry 16x16 x/$i; done
&lt;/pre&gt;&lt;p&gt;Resize exactly to given size, adding transparent borders&lt;/p&gt;&lt;pre&gt;for f in $(for i in x/* ; do file $i | grep -v '16 x 16' | cut -d: -f1; done) ; 
  do convert $f -type TrueColorMatte -compose Src -gravity center -extent 16x16 y/$f ; 
done
&lt;/pre&gt;&lt;h3&gt; Optimizing &lt;/h3&gt;&lt;p&gt;Trying different PNG compression settings, removing extra PNG contents (such as comments)&lt;/p&gt;&lt;pre&gt;for i in y/*png ; do pngcrush  -rem alla -reduce -brute "$i" z/"$i"; done
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-1481072960993520556?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/nqNBYgncOYI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/1481072960993520556/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/useful-png-commands.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1481072960993520556?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1481072960993520556?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/nqNBYgncOYI/useful-png-commands.html" title="Useful PNG commands" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/useful-png-commands.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04FSX8ycCp7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-7727713997644030321</id><published>2010-01-25T11:38:00.000+01:00</published><updated>2010-01-25T11:38:38.198+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:38:38.198+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="x64" /><title>Why (not) 64 bit</title><content type="html">&lt;h3&gt; Why 64 Bit Windows &lt;/h3&gt;&lt;p&gt;Most chosen actual reason:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Because you payed a lot of money for that new 64 bit processor and feel cheated if you don't use it&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Technical Reasons&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You really have an Applications which needs more than 4 GB of memory. (In most cases: You don't, unless you run a large database or huge self-written scientific applications). Use the system profiler to find out how much memory you &lt;i&gt;actually&lt;/i&gt; need.)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Your System has &lt;i&gt;more&lt;/i&gt; than 3,5 GB of memory (3 GB for Windows XP) &lt;i&gt;and&lt;/i&gt; you actually need it.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt; Why not 64 Bit Windows &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Because you don't need it (see above)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Drivers support is incomplete&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Some applications don't work&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Many programs are installed twice: in the 32bit and 64bit versions, and some plugins work in one, but not the other. Notable Examples: Internet Explorer, Firefox, Explorer&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt; Biggest Myth &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;a 64 bit OS is &lt;i&gt;not&lt;/i&gt; faster than a 32 bit OS!&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Please note: Most of this is also true for 64 bit Linux.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-7727713997644030321?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/gMYy0BsxlfI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/7727713997644030321/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/why-not-64-bit.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7727713997644030321?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7727713997644030321?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/gMYy0BsxlfI/why-not-64-bit.html" title="Why (not) 64 bit" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/why-not-64-bit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08EQHs-cCp7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-1187926955922199731</id><published>2010-01-25T11:36:00.002+01:00</published><updated>2010-01-25T11:36:41.558+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:36:41.558+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desktop" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Desktop file format</title><content type="html">Confused about all the &lt;tt&gt;.desktop&lt;/tt&gt; files in Gnome / KDE?
 
There is an official spec at: &lt;a href="http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/"&gt;www.freedesktop.org/wiki/Specifications/desktop-entry-spec&lt;/a&gt;.
 
&lt;h3&gt;Where are they?&lt;/h3&gt; 
 
All User files are in &lt;tt&gt;/usr/share/applications&lt;/tt&gt; 
&lt;br /&gt; 
Personal files are in &lt;tt&gt;$HOME/.local/share/applications&lt;/tt&gt; 
 
&lt;h3&gt;Gnome additions: / Autostart&lt;/h3&gt; 
 
&lt;pre&gt; 
X-GNOME-Autostart-enabled=true
&lt;/pre&gt; &lt;br /&gt; 
should be set for files in &lt;tt&gt;$HOME/.config/autostart&lt;/tt&gt;. This describes autostart applications.
 
More info on autostart: &lt;a href="http://bugs.kde.org/show_bug.cgi?id=170817#c6"&gt;KDE Bug #170817&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-1187926955922199731?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/w76nC6Wi3iw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/1187926955922199731/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/desktop-file-format.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1187926955922199731?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1187926955922199731?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/w76nC6Wi3iw/desktop-file-format.html" title="Desktop file format" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/desktop-file-format.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EMQXw7eCp7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-758179031404107040</id><published>2010-01-25T11:34:00.001+01:00</published><updated>2010-01-25T11:34:40.200+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:34:40.200+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>PEM from/to P12</title><content type="html">&lt;p&gt;I commonly need to convert between PEM and p12&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;dl&gt; 
&lt;dt&gt;PEM&lt;/dt&gt; 
&lt;dd&gt;Is an ASCII format and can be opened with a text editor. It is used by most SSL-based tools. Key and certificate are two separate files.&lt;/dd&gt; 
&lt;dt&gt;p12&lt;/dt&gt; 
&lt;dd&gt;Acutally: Pkcs12 is used by most browsers. Key and certificate are in one file.&lt;/dd&gt; 
&lt;/dl&gt;&lt;/p&gt;&lt;p&gt;&lt;h3&gt;PEM to P12&lt;/h3&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;You need both the key and the certificate:&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt; 
openssl pkcs12 -export -in usercert.pem -inkey userkey.pem -out bundle.p12
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;h3&gt;P12 to PEM&lt;/h3&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt; 
openssl pkcs12 -in bundle.p12 -out userkey.pem -nodes -clcerts
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;The resulting file contains both the key and certificate. Use a text editor to split into two files again.&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/2740704466690807446-758179031404107040?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/if1mnHuy5pg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/758179031404107040/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/pem-fromto-p12.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/758179031404107040?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/758179031404107040?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/if1mnHuy5pg/pem-fromto-p12.html" title="PEM from/to P12" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/pem-fromto-p12.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ICQXc8eip7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-1519091108950484062</id><published>2010-01-25T11:32:00.002+01:00</published><updated>2010-01-25T11:32:40.972+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:32:40.972+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title>Singleton Pattern in Java</title><content type="html">&lt;p&gt;The &lt;strong&gt;singleton&lt;/strong&gt; pattern ensures that there is exactly one instance of a class.&lt;/p&gt; 
&lt;p&gt;There are multiple ways to implement the Singleton Pattern in Java, here is my personal favorite:&lt;/p&gt; 
&lt;hr /&gt;&lt;pre&gt; 
public final class SomeClass {
 
  private static final class SingletonHolder {
    private static final SomeClass INSTANCE = new SomeClass();
    private SingletonHolder() {}
  }
 
  private SomeClass() {
    // Add code if needed
  }
 
  /**
    * @return the Singleton Instance.
    */
  public static SomeClass getInstance() {
    return SomeClass.SingletonHolder.INSTANCE;
  }
 
  // add other methods
 
}&lt;/pre&gt;&lt;hr /&gt; 
&lt;p&gt;Notes:
&lt;ul&gt; 
&lt;li&gt;Replace &lt;em&gt;SomeClass&lt;/em&gt; with the class name, keep all other names exactly as given.&lt;/li&gt; 
&lt;li&gt;Class is &lt;strong&gt;final&lt;/strong&gt; to ensure its constructor cannot be made public by subclassing.&lt;/li&gt; 
&lt;li&gt;The SingletonHolder nested class enables lazy loading and ensures synchronization without performance loss.&lt;/li&gt; 
&lt;li&gt;Constructor must be made private.&lt;/li&gt; 
&lt;li&gt;getInstance returns the singleton instance of this class.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-1519091108950484062?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/kVvu0bAhO0M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/1519091108950484062/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/singleton-pattern-in-java.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1519091108950484062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/1519091108950484062?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/kVvu0bAhO0M/singleton-pattern-in-java.html" title="Singleton Pattern in Java" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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>3</thr:total><feedburner:origLink>http://blog.max.berger.name/2010/01/singleton-pattern-in-java.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AFRX05fip7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-5877544146824210032</id><published>2010-01-25T11:31:00.004+01:00</published><updated>2010-01-25T11:35:14.326+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:35:14.326+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desktop" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Find mime-type for a file</title><content type="html">&lt;p&gt;Here is how to determine the mime-type for a given file on the command line.&lt;/p&gt;&lt;h3&gt; OS X &lt;/h3&gt;&lt;pre&gt;file --mime '''filename''
&lt;/pre&gt;&lt;h3&gt; Linux &lt;/h3&gt;&lt;pre&gt;xdg-mime query filetype '''filename'''
gvfs-info -a standard::content-type '''filename''' | grep content | cut -d: -f4 | cut -d\  -f2-
gnomevfs-info '''filename''' | grep MIME | cut -d\: -f2- | cut -d\  -f2-
file --mime '''filename''' | cut -d\: -f2- | cut -d\  -f2
&lt;/pre&gt;&lt;h3&gt; Everywhere &lt;/h3&gt;&lt;p&gt;Update: We can modify the conditional alias to support mime types as well:&lt;/p&gt;&lt;pre&gt;conditional_alias2 () {
  UNSET=false
  alias $1 &gt; /dev/null 2&gt;&amp;amp;1 || UNSET=true
  [ $UNSET = true ] &amp;amp;&amp;amp; which $2 &gt; /dev/null 2&gt;&amp;amp;1 &amp;amp;&amp;amp; alias $1=$3
}
&lt;/pre&gt;&lt;pre&gt;mime_gvfs() {
  gvfs-info -a standard::content-type $1 | grep content | cut -d: -f4 | cut -d\  -f2-
}
mime_xdg() {
 xdg-mime query filetype $1
}
mime_gnomevfs() {
 gnomevfs-info file://$PWD/$1 | grep MIME | cut -d\: -f2- | cut -d\  -f2-
}
conditional_alias2 mime gvfs-info mime_gvfs
conditional_alias2 mime xdg-mime mime_xdg
conditional_alias2 mime gnomevfs-info mime_gnomevfs
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-5877544146824210032?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/ep8LqrOWlKA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/5877544146824210032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/find-mime-type-for-file.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/5877544146824210032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/5877544146824210032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/ep8LqrOWlKA/find-mime-type-for-file.html" title="Find mime-type for a file" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/find-mime-type-for-file.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EMQXw7eCp7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-7383876980971988654</id><published>2010-01-25T11:31:00.003+01:00</published><updated>2010-01-25T11:34:40.200+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:34:40.200+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Command Line SSL</title><content type="html">&lt;p&gt;Finally found out how to connect to an SSL server over the command line:
&lt;/p&gt; 
&lt;p&gt; 
&lt;tt&gt;openssl s_client -connect www.example.com:443&lt;/tt&gt; 
&lt;/p&gt; 
&lt;p&gt;What a great &lt;tt&gt;netcat&lt;/tt&gt; replacement!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-7383876980971988654?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/2lhSFVyd9Lo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/7383876980971988654/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/command-line-ssl.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7383876980971988654?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/7383876980971988654?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/2lhSFVyd9Lo/command-line-ssl.html" title="Command Line SSL" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/command-line-ssl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AFRX05fip7ImA9WxBXFEw.&quot;"><id>tag:blogger.com,1999:blog-2740704466690807446.post-6134040864437510487</id><published>2010-01-25T11:29:00.001+01:00</published><updated>2010-01-25T11:35:14.326+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-25T11:35:14.326+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desktop" /><category scheme="http://www.blogger.com/atom/ns#" term="Unix" /><title>Command Line Open in UNIX</title><content type="html">&lt;p&gt;On OS X I can just &amp;quot;open&amp;quot; any file. On Windows, I can use &amp;quot;start&amp;quot;. And on Linux? On modern installations, the &amp;quot;xdg-open&amp;quot; command works just fine. Unfortunately - this is not always the case. And I don't want to remember different commands for different machines. So here is the ultimate open alias setting for bash, for all systems that I use (it can be easily extended for other environments).&lt;/p&gt;&lt;hr /&gt; 
&lt;pre&gt; 
conditional_alias() {
  UNSET=false
  alias $1 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 || UNSET=true
  [ x$UNSET = xtrue ] &amp;amp;&amp;amp; which $2 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;amp; alias $1=$2
}
 
conditional_alias open gvfs-open
conditional_alias open xdg-open
conditional_alias open gnome-open
conditional_alias open exo-open
uname | grep MINGW &gt; /dev/null 2&gt;&amp;1 &amp;&amp; alias open=start
&lt;/pre&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2740704466690807446-6134040864437510487?l=blog.max.berger.name' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MaxBergersTechnicalTidbits/~4/c01Q-9eb0hI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.max.berger.name/feeds/6134040864437510487/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.max.berger.name/2010/01/command-line-open-in-unix.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/6134040864437510487?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2740704466690807446/posts/default/6134040864437510487?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaxBergersTechnicalTidbits/~3/c01Q-9eb0hI/command-line-open-in-unix.html" title="Command Line Open in UNIX" /><author><name>Max</name><uri>http://www.blogger.com/profile/07574300047047721099</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><feedburner:origLink>http://blog.max.berger.name/2010/01/command-line-open-in-unix.html</feedburner:origLink></entry></feed>

