<?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;AkUFQ3c4fSp7ImA9WhRaE0o.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584</id><updated>2012-02-16T08:43:32.935+01:00</updated><category term="Dojo" /><category term="Browser" /><category term="MySQL" /><category term="Linux" /><category term="Eclipse" /><category term="Links" /><category term="Scrum" /><category term="Dell Hell" /><category term="Grails" /><category term="About" /><category term="Security" /><category term="JavaScript" /><category term="Apache2" /><category term="Blogging" /><title>MosBase</title><subtitle type="html">My home base for thoughts about software development, internet stories and more</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.mosbase.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.mosbase.com/" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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/MosBase" /><feedburner:info uri="mosbase" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0YMRX08cCp7ImA9WhdWGUw.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-3852613240817080850</id><published>2011-09-13T15:01:00.002+02:00</published><updated>2011-09-13T15:06:24.378+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-13T15:06:24.378+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title>Grails Logging &amp; New Website launched</title><content type="html">This month I’ve got special news. We just launched our new family site  &lt;a href="http://scheelethek.de/"&gt;http://scheelethek.de&lt;/a&gt;.  :)  &lt;br/&gt;
It’s developed in Grails and shows once more that Grails is the right application framework for fast, fun and reliable web-development.    &lt;br/&gt;
Ok, it took some time to launch it. But that wasn’t Grails’ fault. There was just no time besides my professional and family life. I coded up to one hour every several weeks only.   &lt;br/&gt;
But Grails makes it easy to stay connected without the need to read up on the previous development again and again. &lt;br/&gt;
 &lt;br/&gt;
This month I decided to post the logging configuration of this application. This is a part of Grails that isn’t very intuitive. &lt;br/&gt;
I think the logging requirements of my application are sophisticated but still very common: &lt;br/&gt;
 &lt;br/&gt;
&lt;ul&gt;
&lt;li&gt; In Development and Test-Mode logging should be done to the console (“&lt;b&gt;Stdout&lt;/b&gt;”) &lt;/li&gt;
&lt;li&gt;In Production-Mode logging should go to a file (and “Stdout” should be deactivated)  &lt;/li&gt;
&lt;li&gt;The file should be recreated on size-threshold or time  (“&lt;b&gt;rollingFile&lt;/b&gt;”)  &lt;/li&gt;
&lt;li&gt;In Development and Test-Mode logging should be done on “&lt;b&gt;Debug-Level&lt;/b&gt;”; for Production it should be the “&lt;b&gt;Info-Level&lt;/b&gt;” &lt;/li&gt;
&lt;li&gt;The Logging should &lt;b&gt;include the name of the logged in user&lt;/b&gt;  (or session-id if not logged in). The format is as follows:   &lt;br/&gt;
       &lt;i&gt; 2011-09-11 17:19:02,290 [http-8080-5] (0646291FBCC5F8E95BE6E10C4AB9DFBE) INFO  user.RegistrationController - User 'Hans Wurst' has registered. Sending email to: hans_wurst@sdfds.de   &lt;/i&gt; &lt;/li&gt;
&lt;li&gt;When Warnings or &lt;b&gt;Errors&lt;/b&gt; are logged, an &lt;b&gt;eMail should be sent&lt;/b&gt; directly into my mailbox; including the message &lt;/li&gt;
&lt;li&gt;Of course:  All components of my  application should have logging activated &lt;/li&gt;
&lt;/ul&gt;
 &lt;br/&gt;

My configuration for &lt;i&gt;Grails 1.3.7&lt;/i&gt; in the&lt;i&gt; Config.groovy&lt;/i&gt; looks like this:

&lt;pre class="brush: groovy"&gt;
def logPattern = '%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] (%X{user}) %p %c{2} - %m%n'
log4j = {
    
	appenders {
   	 
      	console name:'stdout', layout:pattern(conversionPattern: logPattern)
      	'null' name:'stacktrace'
     	 
      	environments {
          	production {
               // rolling file per size
              	rollingFile name:'fileAppender', maxFileSize:'2MB', file: "/opt/mypath/myLog.log", layout:pattern(conversionPattern: logPattern)
                // rolling file per date
                //appender new DailyRollingFileAppender(name: 'file', datePattern: "'.'yyyy-MM-dd", fileName: "/opt/mypath/myLog.log",layout: pattern(conversionPattern: logPattern))
              	'null' name:'stdout'
              	// mail appender
              	appender new org.apache.log4j.net.SMTPAppender(
                  	name: 'mail',
                  	to: 'myemail@mysdfwhatever.de',
                  	from: 'noreply@mysdfwhatever.de',
                  	threshold: org.apache.log4j.Level.WARN,
                  	bufferSize: 1,
                  	subject: "Error on ScheeleThek",
                  	layout: pattern(conversionPattern: logPattern),
                  	//SMTPDebug: true,
                  	SMTPHost: 'localhost'
              	)
          	}
      	}
	}
    
	root {
    	     error 'stdout', 'fileAppender', 'mail'
	}

	error  'org.codehaus.groovy.grails.web.servlet',   
       	'org.codehaus.groovy.grails.web.pages',  
       	'org.codehaus.groovy.grails.web.sitemesh',  
       	'org.codehaus.groovy.grails.web.mapping.filter',  
       	'org.codehaus.groovy.grails.web.mapping',  
       	'org.codehaus.groovy.grails.commons',  
       	'org.codehaus.groovy.grails.plugins',  
       	'org.codehaus.groovy.grails.orm.hibernate',  
       	'org.springframework',
       	'org.hibernate',
       	'net.sf.ehcache.hibernate'

	warn   'org.mortbay.log'
    
	debug  'de.scheelethek',
        	'grails.app'
	 
	environments {
   	   production {
        	  info	'de.scheelethek',
        	    	'grails.app'
   	    }
	}
  	 
}
&lt;/pre&gt; 


As described above the logging outputs the name or session-id of the current user. This is very useful when all activities of a user should be collected later on. 
To make this work you need a Grails filter like this:  &lt;br/&gt;

&lt;pre class="brush: groovy"&gt;
      class UtilityFilters {
    
	SpringSecurityService springSecurityService
    
	def filters = {
   	 
   	 
    	/**
     	* Used for setting the log4j diagnostic context:  Username if available; otherwise the session-id
     	*/
    	logContext (controller: "*", action: "*") {
       	 
        	before = {
            	if (springSecurityService.isLoggedIn()) {
                	MDC.put('user',"${springSecurityService.principal?.username}")
            	} else {
                	if (RequestContextHolder.getRequestAttributes()!=null) {   	// if we have a valid web-request
                    	MDC.put('user',"${session.id}")
                	}
            	}
        	}
       	 
        	afterView = {
            	MDC.remove 'user'
         	}
       	 
    	}
   	 
	}

}
&lt;/pre&gt; 
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-3852613240817080850?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/iX9iEoGyTJw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/3852613240817080850/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2011/09/grails-logging-new-website-launched.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3852613240817080850?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3852613240817080850?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/iX9iEoGyTJw/grails-logging-new-website-launched.html" title="Grails Logging &amp; New Website launched" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2011/09/grails-logging-new-website-launched.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4GQng5eCp7ImA9WhdRF0Q.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-3266517597082221625</id><published>2011-08-01T11:05:00.004+02:00</published><updated>2011-08-08T12:22:03.620+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-08T12:22:03.620+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title>Grails Security - XSS Prevention using Html-Codecs</title><content type="html">There are so many applications out there that don’t care about Cross-site scripting (XSS) attacks. Try some of your favourite sites. Just type something like&lt;br /&gt;
&lt;pre class="simpleCode"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;alert(&amp;quot;attack&amp;quot;)&amp;lt;/script&amp;gt;&lt;/pre&gt;into an input field and check if you get such a message: &lt;br /&gt;
&lt;br /&gt;
&lt;img border="0"  src="http://4.bp.blogspot.com/-XN8yQKmdqN8/TjZqPGunNRI/AAAAAAAAACQ/OHG-68GV99s/s1600/xss_attack.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
Grails has a nice feature for fixing this basic XSS issue.&lt;br /&gt;
All you need to do is set the default-codec to html in your &lt;i&gt;Config.groovy&lt;/i&gt;:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;grails.views.default.codec = "html"&lt;/pre&gt;Now every expression inside the ${...} syntax gets encoded in your GSPs:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;${'&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;alert(&amp;quot;attack&amp;quot;)&amp;lt;/script&amp;gt;'}&lt;/pre&gt;would become &lt;br /&gt;
&lt;pre class="simpleCode"&gt;&amp;amp;lt;script type=&amp;amp;quot;text/javascript&amp;amp;quot;&amp;amp;gt;alert(&amp;amp;quot;attack&amp;amp;quot;)&amp;amp;lt;/script&amp;amp;gt;&lt;/pre&gt;&lt;br /&gt;
Beyond that you need to be careful with Tags (e.g. &lt;i&gt;&amp;lt;g:message...&amp;gt;&lt;/i&gt;).  Output from those Tags are not encoded by the default-codec. It’s up to the Tag’s implementation.&lt;br /&gt;
&lt;br /&gt;
But what’s with the exception of the rule? What if you have some Html output which should not be encoded, but printed like it is? Or what if you have an email-template which is sent as plain text where variables are not allowed to be encoded?&lt;br /&gt;
You can do the following to avoid encoding in special cases :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Use  the syntax &lt;i&gt;&amp;lt;%=expression%&amp;gt;&lt;/i&gt;  (instead of &lt;i&gt;${expression}&lt;/i&gt;)&lt;/li&gt;
&lt;li&gt;Put&lt;i&gt; &amp;lt;%@page defaultCodec="none"%&amp;gt;&lt;/i&gt; on the top of your template. All &lt;i&gt;${expression}&lt;/i&gt; inside this GSP are not encoded&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
There is still one &lt;b&gt;small criticism&lt;/b&gt; regarding the default codec in Grails:&lt;br /&gt;
&lt;br /&gt;
If you generate a new Grails project the default codec is ‘none’.  I saw so many projects in my Grails consulting that didn’t change this (because they did not know or just forgot it). To change this afterwards is a pain and leads to increased effort.&lt;br /&gt;
&lt;b&gt;I hope in Grails Version 2.0 the default-codec will change to ‘html’.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-3266517597082221625?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/0zId1uAdono" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/3266517597082221625/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2011/08/grails-security-xss-prevention-using.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3266517597082221625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3266517597082221625?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/0zId1uAdono/grails-security-xss-prevention-using.html" title="Grails Security - XSS Prevention using Html-Codecs" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XN8yQKmdqN8/TjZqPGunNRI/AAAAAAAAACQ/OHG-68GV99s/s72-c/xss_attack.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.mosbase.com/2011/08/grails-security-xss-prevention-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAAQnw5fSp7ImA9WhdTEEo.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-1674296306920865285</id><published>2011-07-07T23:05:00.001+02:00</published><updated>2011-07-07T23:05:43.225+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-07T23:05:43.225+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title>Grails - Accessing the Http-Session from Services</title><content type="html">Holy Cow.  I didn’t make it the last six months to write a post here. Too much stuff is going on in private and business life.  But I promise improvement by writing an article at least once a month.  &lt;br /&gt;
As I’m currently working most of the time on Grails projects, I restart the Blog with a little Grails series. Starting with the question: Is it useful to access a http-session in a Grails Service.&lt;br /&gt;
&lt;br /&gt;
In general it isn't a very good idea to access the web session from within Services. &lt;br /&gt;
First of all you never know if the web session is available: Think about calling the service method from a job or JMS call (instead of a controller). There wouldn't be any http-request associated with the current thread.&lt;br /&gt;
Second, it's a common and good design pattern to separate the service logic from client specific stuff. &lt;br /&gt;
&lt;br /&gt;
But there are circumstances where it may be adequate to access the session within a service.&lt;br /&gt;
One way to do it would be to use a method parameter for transferring the session object.&lt;br /&gt;
However, that could clutter method signatures which isn't a nice design also.&lt;br /&gt;
Another way could be to use Spring's session scope beans. This seems to be right for&lt;br /&gt;
many cases, but could be a little too much overhead for simple use cases.&lt;br /&gt;
&lt;br /&gt;
A pretty alternative is to implement a small service that encapsulates the access to&lt;br /&gt;
the http-session in a safe manner.&lt;br /&gt;
&lt;br /&gt;
This service could look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: groovy"&gt; class WebUtilService {

    void withSession (Closure closure) {
        try {
            GrailsWebRequest request = RequestContextHolder.currentRequestAttributes()
            GrailsHttpSession session = request.session
            closure.call(session)
        }
        catch (IllegalStateException ise) {
            log.warn ("No WebRequest available!")
        }
    }
    
}
&lt;/pre&gt;
&lt;br /&gt;
It's used like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: groovy"&gt;class MyService {
    
    WebUtilService webUtilService
    
    void doSomething() {
        webUtilService.withSession { HttpSession session -&amp;gt;
            log.info ( session.myValue )
            session.newValue = 'Possible, but should be exceptional'
        }
    }

}
&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-1674296306920865285?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/NXX3grs6Ej8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/1674296306920865285/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2011/07/grails-accessing-http-session-from.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/1674296306920865285?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/1674296306920865285?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/NXX3grs6Ej8/grails-accessing-http-session-from.html" title="Grails - Accessing the Http-Session from Services" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2011/07/grails-accessing-http-session-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMNQ3o4eSp7ImA9Wx9RGUs.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-3780290550559203786</id><published>2010-12-20T23:37:00.003+01:00</published><updated>2010-12-21T21:14:52.431+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-21T21:14:52.431+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title>Set a fixed Locale in Grails</title><content type="html">Grails has a nice feature that resolves the application's locale based on factors like request-header information, the request-parameter 'lang=xx' and the default locale of the VM.&lt;br /&gt;
But some projects don't need such flexibility. Rather they want to make sure that a specific locale is used always.&lt;br /&gt;
&lt;br /&gt;
All you need to do is adding Spring's &lt;i&gt;FixedLocaleResolver&lt;/i&gt; and set the VM's default locale. Add the following code to your &lt;i&gt;resources.groovy&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: groovy"&gt;localeResolver (FixedLocaleResolver, Locale.GERMANY) {
   Locale.setDefault (Locale.GERMANY)
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-3780290550559203786?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/lTOYcfNnwHM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/3780290550559203786/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/12/set-fixed-locale-in-grails.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3780290550559203786?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3780290550559203786?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/lTOYcfNnwHM/set-fixed-locale-in-grails.html" title="Set a fixed Locale in Grails" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/12/set-fixed-locale-in-grails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IAQ3k9cSp7ImA9Wx5bEU0.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-8570541744522059587</id><published>2010-10-26T15:59:00.000+02:00</published><updated>2010-10-26T15:59:02.769+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-26T15:59:02.769+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Apache2" /><title>Password Protection for entire Website with Apache</title><content type="html">Just a little note, because this one is often used for a quick (and dirty) password protection of a Website served with an Apache frontend:&lt;br /&gt;
&lt;br /&gt;
1. Create a password file with &lt;i&gt;htpasswd&lt;/i&gt; (or &lt;i&gt;httpasswd2&lt;/i&gt;):&lt;br /&gt;
&lt;pre class="simpleCode"&gt;htpasswd2 -c -m /etc/apache2/apache-passwds your_login_name
&lt;/pre&gt;&lt;br /&gt;
2. Extend your Apache config with something like this:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;  &amp;lt;LocationMatch "/.*"&amp;gt;
        AuthType Basic
        AuthName "Password required"
        AuthUserFile /etc/apache2/apache-passwds
        Require valid-user
  &amp;lt;/LocationMatch&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-8570541744522059587?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/DpPT3NvfZtw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/8570541744522059587/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/10/password-protection-for-entire-website.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8570541744522059587?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8570541744522059587?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/DpPT3NvfZtw/password-protection-for-entire-website.html" title="Password Protection for entire Website with Apache" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/10/password-protection-for-entire-website.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEBQns_fCp7ImA9Wx5UGUw.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-6548233934481497865</id><published>2010-10-24T12:04:00.000+02:00</published><updated>2010-10-24T12:04:13.544+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-24T12:04:13.544+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title>Memory Consumption of the Grails Command Tool</title><content type="html">Yesterday, I decided to reuse a Virtual Server with 1 GByte RAM as an continuous integration server for my Grails development.&lt;br /&gt;
Setting up Tomcat, Hudson and Artifactory was quickly done.  To ensure safety, I checked the memory:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# free -m
                 total       used       free     
   Mem:          1024        661        362 
&lt;/pre&gt;&lt;br /&gt;
Ok, up to 360 MBytes left. That should be sufficient for the Grails Command Tool.&lt;br /&gt;
I installed Grails 1.3.5 and run a grails help.  Oops, the following exception was thrown: &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="simpleCode"&gt;.......
Base Directory: /root
Resolving dependencies...
Dependencies resolved in 2084ms.
java.io.IOException: Cannot run program "/usr/bin/env": java.io.IOException: error=12, Cannot allocate memory
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
        at java.lang.Runtime.exec(Runtime.java:593)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
.......
       Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory
        at java.lang.UNIXProcess.&lt;init&gt;(UNIXProcess.java:148)
.........
&lt;/pre&gt;&lt;br /&gt;
I was wondering why Grails would need more then 360 MByte for a simple help-command. Looking around I recognized that Grails reserves 512MByte MaxHeap-Memory and another 192MByte for the PermSize per default.&lt;br /&gt;
It can be adjusted by setting the GRAILS_OPT environment variable. For me it works by adding the following line to the &lt;i&gt;.bashrc&lt;/i&gt; (or &lt;i&gt;/etc/environment &lt;/i&gt; if needed globally):&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="simpleCode"&gt;GRAILS_OPTS="-server -Xmx200M -XX:MaxPermSize=128m -Dfile.encoding=UTF-8"
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-6548233934481497865?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/pNB9m6nM4DQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/6548233934481497865/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/10/memory-consumption-of-grails-command.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6548233934481497865?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6548233934481497865?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/pNB9m6nM4DQ/memory-consumption-of-grails-command.html" title="Memory Consumption of the Grails Command Tool" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/10/memory-consumption-of-grails-command.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCR34_cSp7ImA9Wx9aF0s.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-3214151934430794431</id><published>2010-10-14T21:36:00.006+02:00</published><updated>2011-03-10T13:51:06.049+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-10T13:51:06.049+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dell Hell" /><title>Faulty Dell Precision Notebook &amp; Poor Dell Services</title><content type="html">This is such an unbelievable and annoying story; thus, I decided to make it public.  &lt;br /&gt;
&lt;br /&gt;
For the last five years I’ve been a happy Dell customer. I owned several Dell notebooks and one desktop-box and they worked mostly very well. Little problems, like a broken DVD drive, were handled fast by the Dell service.&lt;br /&gt;
Hence, I decided last June to invest in the high-end, powerful and expensive Notebook Precision M6500.  I ordered a 1920x1600 White-LED screen, which seems to be perfect for my work as a software developer (especially during creation of Web-Application with nice designs).&lt;br /&gt;
&lt;br /&gt;
The notebook arrived after three weeks and I was happy so far. The first impression was not too bad: A real power machine. Ok, it is quite heavy, the power supply is huge and the fan works like crazy. But that’s ok for such a powerful notebook.&lt;br /&gt;
&lt;br /&gt;
The problem started while looking at the screen. Especially when comparing it to my old notebook display or to the duplicated screen on an external monitor.  The display of the Precision had an extreme bluish cast (“Blaustich” in German). Things that should be grey were extreme blue. It had nothing to do with the Windows 7 adjustments, because the blue cast appears also on the Bios screen. It was a “hardware issue”.&lt;br /&gt;
&lt;br /&gt;
To make a long story short: Today, three months and about 20 Dell service calls later, I still have no flawless Dell notebook. In between I spent many hours in the phone waiting loop, three on-site repairs were done and at the end the notebook has been replaced by a swap model.&lt;br /&gt;
&lt;br /&gt;
The swapped Precision made me full of hope. And yes, as it arrived no bluish cast anymore. That proves the defect of my first Precision M6500.&lt;br /&gt;
&lt;br /&gt;
But then … I can’t believe … what do I see:  Blue text on white background had a grey blur (“Grauschleier” in German). This had nothing do to with the bluish problem from my original Precision, but again it’s a defect on the screen. It looked for me like a driver issue. Therefore I reinstalled the operation system from the Dell DVD (which comes without any drivers): The problem disappears.  This proves me that the grey-blur-issue is a problem with the drivers in combination with the Dell hardware.&lt;br /&gt;
&lt;br /&gt;
Groundhog Day:  Again calling the Dell support, explaining them the problem and deciding to send my Precision to the Dell repair service. I advised the Dell service to restore my system to the Dell Factory Image so that they could reproduce the grey-blur-issue. The partition with the “Dell Factory Image Restore” was still available on the hard-disk. To play it safe, I enclosed a letter with an explanation for the people which would do the job.&lt;br /&gt;
&lt;br /&gt;
One week later I received the Precision back. I couldn’t believe my eyes: They changed the hard-disk, therefore destroying the “Dell Factory Image Restore” partition. I had no problem with the hard-disk, it worked fine! They installed a naked Windows 7 without any drivers.  Thank you, Dell!  &lt;br /&gt;
&lt;br /&gt;
In my despair I visited the Dell website, entered my service-tag to get a list of all needed drivers (&lt;a href="http://support.dell.com/support/downloads/index.aspx?s=dhs&amp;cs=19"&gt;http://support.dell.com/support/downloads/index.aspx?s=dhs&amp;cs=19&lt;/a&gt;). I thought if Dell is not able to deliver a working pre-installed system, I would do it on my own.  But again Dell sucks: My service tag could not be recognized: “Your service tag was not recognized. Please check your service tag and try again”&lt;br /&gt;
&lt;br /&gt;
And again: Calling the Dell support, updating them and asking for help. Their answer (in short):  “Sorry, we can’t do anything about it. It’s a software problem.” &lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
That was the straw that breaks the camel’s back. Sorry Dell. I spent hours on this issue. All I expect is a faultless and full-functional Dell notebook. I’m not willing to spend more time on this issue. Please send me a working full-featured Precision M6500 with a Factory Image or refund! &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Dear readers, I will keep you posted how the story will end. I’ve got a lot more detailed, weird and “funny” anecdotes to tell about this. Besides, I’m very interested in the “Dell experience” of other people.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update from November 2010 (Hard-Disk crashed)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The following days/weeks I’ve received no feedback from Dell. The only communication was with a lady from Dell who asked me to send back my original notebook. But since my swapped notebook didn’t work either, I refused this.&lt;br /&gt;
So I decided to make a fresh installation of Windows 7 by myself. The installation of drivers was the annoying part:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Tried the “Dell Client System Update” Software which promised to install all missing drivers. --&gt; Didn’t work at all. It just recommended three drivers; and just one of it could be installed without an error&lt;/li&gt;
&lt;li&gt;Next try:  Dell Website which allows to enter my service-tag.  No success either - my service-tag is still not recognized&lt;/li&gt;
&lt;li&gt;Next try:  Dell CD with drivers that has been shipped with the my original notebook (The swapped model had none included).  Failed again, because some drivers (for example WLAN) failed with errors&lt;/li&gt;
&lt;li&gt;So I did it the manual way:  Checked the Hardware-Identifications and downloaded some of the drivers from the original hardware producer&lt;/li&gt;
&lt;/ul&gt;Finally I’ve got the system running including all drivers. I was pleased so far.&lt;br /&gt;
&lt;br /&gt;
But then two weeks later ... my hard-drive makes some unusual noise ... and ... crashes. Dead. No way to access it anymore. &lt;br /&gt;
Remember:  &lt;i&gt;That was the hard-disk Dell changed without any reasons some weeks before. Unbelievable!&lt;/i&gt;&lt;br /&gt;
Luckily I had a backup from three days before. Anyhow three days of work were lost. Thanks again for this, Dell!&lt;br /&gt;
&lt;br /&gt;
I called Dell to make sure I would get a new hard-disk the next day. It was Friday around 6 p.m. No chance.  Dell-Service was already on weekend. That means: A new hard-disk would have arrived 4 days later earliest. Four more days without the possibility to work on my computer. That was inacceptable. &lt;br /&gt;
Hence, I drove to the city and bought a hard-disk on my own. On Monday morning I called the Dell Service. It took two more days that their new hard-disk arrived (although they promised 24h during the week).&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Conclusion&lt;/i&gt;:  The Dell Service/Support is extremely bad (at least in my case). I even wrote a fax to the escalation department of Dell, but didn’t get any response or excuse regarding my case.&lt;br /&gt;
Now I know what the &lt;i&gt;Dell Hell&lt;/i&gt; feels like --  endless calls, bad service, improper reparations and in the end you need to help yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update from February 2011  (Memory crashed)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I was full of hope that after the hard-disk-crash my Dell-Hell would be over. But, unfortunately, this was a false conclusion:  First, every two weeks my notebook crashed with a famous blue-screen. As time goes by the frequency increased to two times the week.&lt;br /&gt;
Very annoying and again I’ve lost some work results in consequence of several crashes.&lt;br /&gt;
The blue-screens showed most of time something like “BUGCODE_USB_DRIVER; STOP 0x000000DE (...)". Sometimes there wasn’t even a blue-screen, instead Windows 7 just froze. &lt;br /&gt;
&lt;br /&gt;
As usual I called Dell after doing some googling before.  It turned out that Dell assembled some defect memory (RAM) into my notebook. Dell did already know that the manufacturing of those specific RAM production type was faulty. &lt;br /&gt;
&lt;i&gt;Thanks again Dell. Why don’t you inform your customers proactive and offer some replacements?&lt;br /&gt;
&lt;br /&gt;
All in all, this was a very bad experience with the Dell-Support and Dell’s product quality. The trouble continues for more than half a year. It costs me many working hours. I missed  serious help from Dell. At least I would have expected some kind of an apology. &lt;br /&gt;
&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-3214151934430794431?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/uKT7OSvriGI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/3214151934430794431/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/10/faulty-dell-precision-notebook-poor.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3214151934430794431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/3214151934430794431?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/uKT7OSvriGI/faulty-dell-precision-notebook-poor.html" title="Faulty Dell Precision Notebook &amp; Poor Dell Services" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/10/faulty-dell-precision-notebook-poor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEER3Y-fip7ImA9Wx5VF0w.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-6652427146454567540</id><published>2010-10-10T13:33:00.002+02:00</published><updated>2010-10-10T14:43:26.856+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-10T14:43:26.856+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title>Weird Grails Scaffold Exception</title><content type="html">Using the dynamic scaffolding feature (in Grails V1.3.4) like&lt;br /&gt;
&lt;pre class="brush: groovy"&gt;package de.scheelethek.backoffice.crud
class CommentController {
    def scaffold = true
}
&lt;/pre&gt;I've got a runtime exception like&lt;br /&gt;
&lt;pre class="simpleCode"&gt;2010-10-10 13:11:44,417 [http-8080-1] ERROR errors.GrailsExceptionResolver  - java.lang.Boolean cannot be cast to groovy.lang.Closure
java.lang.ClassCastException: java.lang.Boolean cannot be cast to groovy.lang.Closure
 at java.lang.Thread.run(Thread.java:619)
&lt;/pre&gt;&lt;br /&gt;
It looks like Grails is trying to interpret the &lt;i&gt;scaffold&lt;/i&gt;-definition as an action.&lt;br /&gt;
The explanation was not far to seek:&lt;br /&gt;
&lt;br /&gt;
The referenced &lt;i&gt;domain class&lt;/i&gt; is defined in the package "de.scheelethek.backoffice". The controller uses another package definition.  &lt;i&gt;scaffold=true&lt;/i&gt; is searching just in the same package for a corresponding domain definition. If not found "def scaffold", it is interpreted as an action.&lt;br /&gt;
&lt;br /&gt;
The solution is obvious. Do an explicit definition of the domain class that should be used:&lt;br /&gt;
&lt;pre class="brush: groovy"&gt;package de.scheelethek.backoffice.crud
import de.scheelethek.content.*
class CommentController {
    def scaffold = Comment
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-6652427146454567540?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/gplNhuQtIqo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/6652427146454567540/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/10/weird-grails-scaffold-exception.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6652427146454567540?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6652427146454567540?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/gplNhuQtIqo/weird-grails-scaffold-exception.html" title="Weird Grails Scaffold Exception" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/10/weird-grails-scaffold-exception.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIGSXYzfip7ImA9WxFbGEo.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-6967583635746524271</id><published>2010-07-11T13:03:00.003+02:00</published><updated>2010-07-11T21:28:48.886+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-11T21:28:48.886+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Scrum" /><category scheme="http://www.blogger.com/atom/ns#" term="Links" /><title>Scrum Compact</title><content type="html">For the last five years I've had the pleasure to run all my IT-projects within the &lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;SCRUM&lt;/a&gt; process framework. Depending on my various employers I was lucky enough to be in the Product Owner, Developer(Team) or mostly in the Scrum Master role.&lt;br /&gt;
I'm convinced that Scrum is one of the best methods to control the software developing process for new functionalities.  If used correctly, it makes customers and developers happy.&lt;br /&gt;
Ok, when doing bug fixes or software support it isn't perfect, but that's another story.&lt;br /&gt;
&lt;br /&gt;
Last week I recognized a very educational site about Scrum. I can recommend it as a good documentation for all German speaking people.&lt;br /&gt;
&lt;br /&gt;
Please note: &lt;i&gt;It's in German&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://www.scrum-kompakt.de/"&gt;http://www.scrum-kompakt.de/&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-6967583635746524271?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/u5GXuV_XdQ4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/6967583635746524271/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/07/scrum-compact.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6967583635746524271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6967583635746524271?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/u5GXuV_XdQ4/scrum-compact.html" title="Scrum Compact" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/07/scrum-compact.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMCSX0zeSp7ImA9WxFVFkQ.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-2082358757401266145</id><published>2010-06-16T13:17:00.005+02:00</published><updated>2010-06-16T16:11:08.381+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-16T16:11:08.381+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Dojo" /><title>Disable Repositioning of a Dojo Dialog</title><content type="html">The JavaScript toolkit &lt;a href="http://www.dojotoolkit.org/"&gt;Dojo&lt;/a&gt; provides a nice modal dialog. It's great! One of its features is the repositioning in the center of its parent window. The alignment is always recalculated if the parent's scrollbar is used.&lt;br /&gt;
&lt;br /&gt;
This could lead to a problem if the user's screen resolution is low and in consequence the upper and lower part of the dialog is always out of the viewport. Imagine a dialog where the submit button is at the bottom of the dialog page:&lt;br /&gt;
&lt;br /&gt;
&lt;img border="0" height="286" src="http://4.bp.blogspot.com/_c-ObcXE1ffA/TBisAJ8qdbI/AAAAAAAAABw/4kGQgnVcTxQ/s320/dojo_dialog.png" width="320" /&gt;&lt;br /&gt;
&lt;br /&gt;
In this case it could be possible that certain users never see the button and therefore never could submit the dialog.&lt;br /&gt;
&lt;br /&gt;
A solution would be to deactivate the repositioning if the scrollbar of the main window is used. Unfortunately, Dojo's Dialog has no configuration option for this.&lt;br /&gt;
&lt;br /&gt;
Digging in the source of Dojo I end up with disabling the event that is fired on usage of the scrollbar. Tested with Dojo Version 1.4:  &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:javascript;highlight:[6];"&gt;&amp;lt;div dojoType="dijit.Dialog" id="myDialog"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;script type="text/javascript"&amp;gt;
       &amp;lt;!--
         dojo.addOnLoad( function() {
             dijit.byId('myDialog').show(); 
             dojo.disconnect(dijit.byId('myDialog')._modalconnects[0]);
         });
        //--&amp;gt;
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-2082358757401266145?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/wjzD509dsD0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/2082358757401266145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/06/disable-repositioning-of-dojo-dialog.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/2082358757401266145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/2082358757401266145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/wjzD509dsD0/disable-repositioning-of-dojo-dialog.html" title="Disable Repositioning of a Dojo Dialog" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_c-ObcXE1ffA/TBisAJ8qdbI/AAAAAAAAABw/4kGQgnVcTxQ/s72-c/dojo_dialog.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.mosbase.com/2010/06/disable-repositioning-of-dojo-dialog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QCSH48cSp7ImA9WxFVFUU.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-6011806940162460820</id><published>2010-06-15T09:56:00.002+02:00</published><updated>2010-06-15T10:09:29.079+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-15T10:09:29.079+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><category scheme="http://www.blogger.com/atom/ns#" term="Links" /><title>Web Application Exploits and Defenses</title><content type="html">Cool stuff. Wanna learn about and test some security issues? Check out Google's Jarlsberg application:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://jarlsberg.appspot.com/"&gt;http://jarlsberg.appspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-6011806940162460820?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/YwHEeX2BmPk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/6011806940162460820/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/06/web-application-exploits-and-defenses.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6011806940162460820?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/6011806940162460820?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/YwHEeX2BmPk/web-application-exploits-and-defenses.html" title="Web Application Exploits and Defenses" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/06/web-application-exploits-and-defenses.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkICRnc8fip7ImA9WxFWEkk.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-5629013351030516958</id><published>2010-05-30T19:15:00.006+02:00</published><updated>2010-05-30T20:36:07.976+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-30T20:36:07.976+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Simple Backup for Spare-Time-Projects</title><content type="html">In my spare time -- the remainder of the time my child, wife and job don't demand ;) -- I do some programming for private projects.&lt;br /&gt;
&lt;br /&gt;
I was searching a very simple backup solution considering that I add new stuff just once in a while. The requirements: &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Check once a day if I added new stuff  &lt;/li&gt;
&lt;li&gt; Just in case new or changed files are detected do the backup &lt;/li&gt;
&lt;li&gt; Store the last 12 files locally on the development server &lt;/li&gt;
&lt;li&gt; All backups should be stored on a remote FTP server &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Finally, I wrote the following shell-script that does the job:&lt;br /&gt;
(If you like to use it just change the variable at the beginning and the FTP commands below):&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: shell"&gt;#!/bin/bash

# Adjust those parameters to your needs
 
REPO_PATH="/var/myproject/"
BACKUP_PATH="/mybackup/myproject/"
BACKUP_FILE_NAME="myproject_backup"
TIME_FILE="${BACKUP_PATH}last_backup_time"
NR_OF_BACKUPS=12
BACKUP_EXCLUDES="/log/"


BACKUP_FILE="${BACKUP_PATH}${BACKUP_FILE_NAME}"

if [ ! -f "$TIME_FILE" ]
then
  echo "No $TIME_FILE found. Create one!"
  touch -d 731211 $TIME_FILE
fi

CHANGED_FILES=`find $REPO_PATH -newer $TIME_FILE | grep -v "$BACKUP_EXCLUDES" | wc -l`

echo "Found $CHANGED_FILES files in backup folder!"

if [ "$CHANGED_FILES" -gt "0" ]
then
  # do the backup
  tar -cjf "${BACKUP_FILE}_$(date +%F_%H%M%S).tar.bz2" -C $REPO_PATH . &amp;&amp; touch $TIME_FILE &amp;&amp; echo "Backup succeeded!" || echo "Backup FAILED !!!" 
  # put tar on FTP-Backup
  echo Putting backup-tar on FTP-Server
  cd $BACKUP_PATH
  TAR_FILE=`ls -tr1 *.tar* | tail -1`
  ftp -n -i my-ftp-server.hosteurope.de &amp;lt;&amp;lt;EOF
user ftpuser ftppasswd
cd remoteDir
put $TAR_FILE
quit
EOF
  # should old ones be removed ?
  COUNT_BACKUPS=`ls -l ${BACKUP_FILE}* | wc -l`
  if [ "$COUNT_BACKUPS" -gt "$NR_OF_BACKUPS" ]
  then
    echo Found more then $NR_OF_BACKUPS backups. Delete the oldest one.
    ls -t1 ${BACKUP_FILE}* | tail -1 | xargs rm
  fi
fi
&lt;/pre&gt;&lt;br /&gt;
Then add the script to your cronjobs. For example:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="simpleCode"&gt;15      4       *       *       *       /usr/local/bin/mybackup &gt;/mybackup/myproject/backup.log 2&gt;&gt;/mybackup/myproject/error_backup.log&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;One final note&lt;/b&gt;: &lt;br /&gt;
If you do backups of "transactional" databases or version-control-systems, don't use the simple tar-backup-command inside the script. Instead use a "transaction-safe" application specific tool. For example in case of doing a &lt;i&gt;Subversion&lt;/i&gt; backup use something like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="simpleCode"&gt;hot-backup.py --archive-type=bz2 --num-backups=12 $REPO_PATH $BACKUP_PATH &amp;&amp; touch $TIME_FILE &amp;&amp; echo "Backup succeeded!" || echo "Backup FAILED !!!"&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-5629013351030516958?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/6ijXYLYJN7s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/5629013351030516958/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/05/simple-backup-for-spare-time-projects.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/5629013351030516958?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/5629013351030516958?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/6ijXYLYJN7s/simple-backup-for-spare-time-projects.html" title="Simple Backup for Spare-Time-Projects" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/05/simple-backup-for-spare-time-projects.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQGSHk-eyp7ImA9WxFQGU8.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-5439062022190776745</id><published>2010-05-15T14:47:00.001+02:00</published><updated>2010-05-15T14:58:49.753+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-15T14:58:49.753+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Increase your Bash History Size</title><content type="html">Working with the linux bash shell, the command history could be one of your best friends.&lt;br /&gt;
Using the &lt;i&gt;history&lt;/i&gt; command (for example joined with a &lt;i&gt;grep&lt;/i&gt;) lets you relax your brain and fingers.  Sure, even more relaxed is the usage of the reverse-search-history function (&lt;i&gt;Ctrl-R&lt;/i&gt;). &lt;br /&gt;
&lt;br /&gt;
To make sure the history's brain isn't to small, you should increase its size. The following lines need to be added to your &lt;i&gt;~/.bashrc&lt;/i&gt; file. It increases the history to the last 10.000 commands, erases previous duplicates and makes sure that the commands are appended (and do no override) on shell exit:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: shell"&gt;export HISTSIZE=10000
export HISTCONTROL=erasedups
shopt -s histappend
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-5439062022190776745?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/d3VdcMDT-ak" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/5439062022190776745/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/05/increase-your-bash-history-size.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/5439062022190776745?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/5439062022190776745?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/d3VdcMDT-ak/increase-your-bash-history-size.html" title="Increase your Bash History Size" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/05/increase-your-bash-history-size.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8NSH06fyp7ImA9WxFXEks.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-8534409563056802756</id><published>2010-05-07T22:23:00.001+02:00</published><updated>2010-05-19T13:34:59.317+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-19T13:34:59.317+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Links" /><title>Online Web-Developer Tools</title><content type="html">This is a small collection of tools that could be very useful in the daily job of a web-developer.  I'll try to keep this one up-to-date:&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tr&gt; &lt;th&gt; Where? &lt;/th&gt; &lt;th&gt; What? &lt;/th&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt; &lt;a href="http://www.generateit.net/"&gt;www.generateit.net&lt;/a&gt; &lt;/td&gt; &lt;td&gt; A lot of useful generators. For example colors, Lorem Impsum, Cron Jobs and CSS stuff. &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt; &lt;a href="http://tools.web-max.ca/"&gt;tools.web-max.ca&lt;/a&gt; &lt;/td&gt; &lt;td&gt; Misc tools for encodings (MD5, Sha-1, URL, Base64...), IP stuff and others &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt; &lt;a href="http://hogehoge.tk/tool-i/"&gt;hogehoge.tk/tool-i&lt;/a&gt; &lt;/td&gt; &lt;td&gt; De- and encodings for character-sets, URL, MD5, SHA-1, Hex &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt; &lt;a href="http://kuler.adobe.com/"&gt;kuler.adobe.com&lt;/a&gt; &lt;/td&gt; &lt;td&gt; Let you generate a nice and harmonious color-scheme &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt; &lt;a href="http://www.typetester.org/"&gt;www.typetester.org&lt;/a&gt; &lt;/td&gt; &lt;td&gt; Test and review fonts and screen types&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-8534409563056802756?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/hz7klotK8hU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/8534409563056802756/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/05/online-web-developer-tools.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8534409563056802756?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8534409563056802756?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/hz7klotK8hU/online-web-developer-tools.html" title="Online Web-Developer Tools" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/05/online-web-developer-tools.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEICRno5fCp7ImA9WxFRGE8.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-504376992881458120</id><published>2010-05-02T18:22:00.005+02:00</published><updated>2010-05-02T19:49:27.424+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-02T19:49:27.424+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Install latest Version of MySQL on Ubuntu</title><content type="html">Some days ago I &lt;a href="/2010/03/install-latest-version-of-subversion-on.html"&gt;installed the latest Subversion Version to Ubuntu 8.04&lt;/a&gt; (Hardy). It wasn't quite easy, so I was afraid that installing the up-to-date version of MySQL would be a similar trouble.&lt;br /&gt;
&lt;br /&gt;
Luckily, it turns out that it's easy to do. Here we go:&lt;br /&gt;
&lt;br /&gt;
First check the version that is available currently:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# apt-cache madison mysql-server
mysql-server | 5.0.51a-3ubuntu5.5 | http://archive.ubuntu.com hardy-updates/main Packages
&lt;/pre&gt;&lt;br /&gt;
Ok, this one too old. We need at least version 5.1.45. Fortunately we just need to add the Lenny debian repository:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~#vi /etc/apt/sources.list
add --&gt; deb http://packages.dotdeb.org lenny all
root@dev:~# apt-get update
.....
Fetched 2380kB in 1s (2140kB/s)
Reading package lists... Done
root@dev:~# apt-cache madison mysql-server
mysql-server | 5.1.45-0.dotdeb.0 | http://packages.dotdeb.org lenny/all Packages
mysql-server | 5.0.51a-3ubuntu5.5 | http://archive.ubuntu.com hardy-updates/main Packages
&lt;/pre&gt;&lt;br /&gt;
Install the new version of MySQL server (it removes an old MySQL version automatically):&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# apt-get install mysql-server-5.1
&lt;/pre&gt;&lt;b&gt;Importan&lt;/b&gt;t: Select always 'y' on questions during the installation process. This includes the question to override the /etc/mysql/my.cnf. Otherwise you need to adjust it manually, because the "skip-bdb" option doesn't work with version 5.1. &lt;br /&gt;
&lt;br /&gt;
Finally check:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# mysql --version
mysql  Ver 14.14 Distrib 5.1.45, for debian-linux-gnu (x86_64) using readline 5.2
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Finishing basic MySQL setup&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
Now you need to configure your DB-system as described in the MySQL manual:  &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/unix-post-installation.html" target="_blank"&gt;http://dev.mysql.com/doc/refman/5.1/en/unix-post-installation.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Problem:&lt;/i&gt;&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# mysql_install_db --user=mysql
Installing MySQL system tables...
ERROR: 1136  Column count doesn't match value count at row 1
100502 13:26:07 [ERROR] Aborting
100502 13:26:07 [Note] /usr/sbin/mysqld: Shutdown complete
Installation of system tables failed!  Examine the logs in
/var/lib/mysql for more information.
&lt;/pre&gt;&lt;br /&gt;
Ok, there are databases in the old 5.0.x format, let's upgrade them:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# /etc/init.d/mysql stop
root@dev:~# /usr/sbin/mysqld --skip-grant &amp;
root@dev:~# mysql_upgrade
root@dev:~# mysql_install_db --user=mysql
&lt;/pre&gt;&lt;br /&gt;
Alternativly, delete the stuff in your mysql-data folder (in case you setup a fresh DB):&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# /etc/init.d/mysql stop
root@dev:~# rm -R /var/lib/mysql/*
root@dev:~# mysql_install_db --user=mysql
&lt;/pre&gt;&lt;br /&gt;
Now follow the MySQL documentation:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# mysqld_safe --user=mysql &amp;
root@dev:~# mysqladmin version
mysqladmin  Ver 8.42 Distrib 5.1.45, for debian-linux-gnu on x86_64
root@dev:~# mysql -e "SELECT * FROM user" mysql
root@dev:~# mysql -e "select version();" mysql
&lt;/pre&gt;&lt;br /&gt;
And secure and setup some accounts:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;root@dev:~# mysql -u root
mysql&gt; SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypasswd');
mysql&gt; SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('mypasswd');
mysql&gt; CREATE USER 'debian-sys-maint'@'localhost' IDENTIFIED BY 'wze0EguNSaU52jCH';
mysql&gt; GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' WITH GRANT OPTION;
&lt;/pre&gt;&lt;br /&gt;
If you need external access to your MySQL (instead of just allowing it from localhost) do something like this:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;mysql&gt; CREATE USER 'root'@'%' IDENTIFIED BY 'mypasswd';
mysql&gt; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
root@dev:~# vi /etc/mysql/my.cnf
           --&gt; Change:  "bind-address" to "0.0.0.0"
root@dev:~# /etc/init.d/mysql restart
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-504376992881458120?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/H6ONcEcS_7s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/504376992881458120/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/05/install-latest-version-of-mysql-on.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/504376992881458120?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/504376992881458120?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/H6ONcEcS_7s/install-latest-version-of-mysql-on.html" title="Install latest Version of MySQL on Ubuntu" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/05/install-latest-version-of-mysql-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQCR3s7fyp7ImA9WxFTGUQ.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-8685740190044883384</id><published>2010-04-11T16:11:00.006+02:00</published><updated>2010-04-11T17:06:06.507+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-11T17:06:06.507+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Browser" /><category scheme="http://www.blogger.com/atom/ns#" term="Links" /><title>Old Browser Warning for your Website</title><content type="html">Wouldn't it be great, if old browsers like the Internet Explorer 6 would vanish in your server's logs?&lt;br /&gt;
Every website owner can and in my opinion should encourage people to update their out-of-date browsers. All they have to do, is adding a little warning to their site in the moment a legacy browser is detected.&lt;br /&gt;
&lt;br /&gt;
I'm sure a few months ahead this won't be an issue at all. Browsers, like today Chrome, will automatically update and therefore forcing updates. &lt;br /&gt;
But till then the website owners are in charge to enlighten their users.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;For example&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
Just add the unobtrusive script from &lt;a href="http://www.browser-update.org/"&gt;browser-update.org&lt;/a&gt; to your pages  (direct before the &amp;lt;/body&amp;gt; tag):&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: jscript"&gt;&amp;lt;script type="text/javascript"&amp;gt;
  var $buoop = {} 
  $buoop.ol = window.onload; 
  window.onload=function(){ 
    if ($buoop.ol) $buoop.ol(); 
    var e = document.createElement("script"); 
    e.setAttribute("type", "text/javascript"); 
    e.setAttribute("src", "http://browser-update.org/update.js"); 
    document.body.appendChild(e); 
  } 
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Then users with an old browser would see a non-intrusive warning at the top of the page:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_c-ObcXE1ffA/S8HY76uB-HI/AAAAAAAAABo/dOKZOnqT_oE/s1600/100411_browser_warning.png" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-8685740190044883384?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/b03Gd9J68CU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/8685740190044883384/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/04/old-browser-warning-for-websites.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8685740190044883384?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8685740190044883384?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/b03Gd9J68CU/old-browser-warning-for-websites.html" title="Old Browser Warning for your Website" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_c-ObcXE1ffA/S8HY76uB-HI/AAAAAAAAABo/dOKZOnqT_oE/s72-c/100411_browser_warning.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.mosbase.com/2010/04/old-browser-warning-for-websites.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EGQ304eip7ImA9WxFTEEk.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-8424371827487522746</id><published>2010-03-31T15:19:00.002+02:00</published><updated>2010-03-31T15:20:22.332+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-31T15:20:22.332+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Set time on Linux</title><content type="html">Simple use &lt;br /&gt;
&lt;pre&gt;date MMDDhhmm[YYYY]&lt;/pre&gt;&lt;pre class="simpleCode"&gt;# date 033115082010
# date
Wed Mar 31 15:08:02 CEST 2010
&lt;/pre&gt;&lt;i&gt;Better&lt;/i&gt;: &lt;br /&gt;
Never use it but configure &lt;a href="http://linuxreviews.org/howtos/ntp/"&gt;NTP&lt;/a&gt; instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-8424371827487522746?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/MJN6oTCiRrw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/8424371827487522746/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/03/set-time-on-linux.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8424371827487522746?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/8424371827487522746?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/MJN6oTCiRrw/set-time-on-linux.html" title="Set time on Linux" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/03/set-time-on-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYBQ3s9eip7ImA9WxBaGEo.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-9173402784911261965</id><published>2010-03-29T15:09:00.002+02:00</published><updated>2010-03-29T15:42:32.562+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-29T15:42:32.562+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Apache2" /><title>Simple Apache Rewrite:  Add a folder to subdomain's root</title><content type="html">Make sure you have activated the &lt;i&gt;rewrite&lt;/i&gt; module. For example: Add the module to the APACHE_MODULES in &lt;i&gt;/etc/sysconfig/apache2&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
To redirect all &lt;i&gt;http://mysub.mosbase.com/&lt;/i&gt; to &lt;i&gt;http://mysub.mosbase.com/start/&lt;/i&gt; add this to your configuration (e.g., in your &lt;i&gt;vhost&lt;/i&gt; declaration):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="simpleCode"&gt;RewriteEngine on&lt;br /&gt;
RewriteCond %{HTTP_HOST} ^mysub\.mosbase\.com$&lt;br /&gt;
RewriteRule ^/$  /start/ [PT,L]&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-9173402784911261965?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/v8llKo0Nsbs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/9173402784911261965/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/03/simple-apache-rewrite-add-folder-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/9173402784911261965?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/9173402784911261965?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/v8llKo0Nsbs/simple-apache-rewrite-add-folder-to.html" title="Simple Apache Rewrite:  Add a folder to subdomain's root" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/03/simple-apache-rewrite-add-folder-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAHQng4fSp7ImA9WxBaF0Q.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-1139601130228285939</id><published>2010-03-28T18:16:00.003+02:00</published><updated>2010-03-28T18:28:53.635+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-28T18:28:53.635+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Install latest Version of Subversion on Ubuntu</title><content type="html">I thought it would be as simple as "&lt;i&gt;apt-get install subversion&lt;/i&gt;" to install an updated version of Subversion. But I was mislead. Using Ubuntu 8.04 (Hardy) only the ageing SVN version 1.4.6 was available in the official repository. &lt;br /&gt;
&lt;br /&gt;
First try: &lt;br /&gt;
Adding Hardy's Backport-Repository (&lt;i&gt;deb http://de.archive.ubuntu.com/ubuntu hardy-backports main&lt;/i&gt;) into the &lt;i&gt;/etc/apt/sources.list&lt;/i&gt;. Slightly better but far away from perfect:  Version 1.5.1 was installed.&lt;br /&gt;
&lt;br /&gt;
I was wondering: Is there a way to install the latest version of SVN without compiling the source distribution? Ubuntu is very widespread and SVN likewise. There needs to be a binary version of SVN 1.6.9 out there... So I googled but failed. Instead I found some up-to-date RPM packages.&lt;br /&gt;
&lt;br /&gt;
At the end I decided to take those RPM packages and convert them into DEB packages.&lt;br /&gt;
This worked fine for me:&lt;br /&gt;
&lt;br /&gt;
* Download Red Hat packages at: http://www.collab.net/downloads/subversion/redhat.html&lt;br /&gt;
* Installation as follows:&lt;br /&gt;
&lt;pre class="simpleCode"&gt;apt-get install alien
root@dev:/install/subversion# alien --version
alien version 8.69
alien CollabNetSubversion-client-1.6.9-1.x86_64.rpm
alien CollabNetSubversion-server-1.6.9-1.x86_64.rpm
dpkg -i collabnetsubversion-client_1.6.9-2_amd64.deb
dpkg -i collabnetsubversion-server_1.6.9-2_amd64.deb

vi /etc/environment
root@dev:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/opt/CollabNet_Subversion/bin/:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@dev:~# svn --version
svn, version 1.6.9 (r901367)
   compiled Jan 24 2010, 16:38:33
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-1139601130228285939?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/KUx2sBS9mgA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/1139601130228285939/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/03/install-latest-version-of-subversion-on.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/1139601130228285939?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/1139601130228285939?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/KUx2sBS9mgA/install-latest-version-of-subversion-on.html" title="Install latest Version of Subversion on Ubuntu" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/03/install-latest-version-of-subversion-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUDQ389eip7ImA9Wx5QFk0.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-2844433969988806431</id><published>2010-03-23T22:39:00.005+01:00</published><updated>2010-09-04T15:17:52.162+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-04T15:17:52.162+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><title>Common Eclipse Startup Arguments</title><content type="html">Working with more than one workspace, the following runtime parameters make life easier:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="simpleCode"&gt;eclipse.exe  -vm \software\jdk1.6.0_21\bin\javaw -data \workspaces\project1_space -showlocation -vmargs -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;b&gt;-vm&lt;/b&gt;:  Explicitly specify which Java VM to use when running Eclipse &lt;/li&gt;
&lt;li&gt; &lt;b&gt;-data&lt;/b&gt;:  Location of the workspace. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;-showlocation&lt;/b&gt;: Displays the location of the workspace in the window title bar. Very useful if you have more than one workspace opened.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;-vmargs X... &lt;/b&gt;: Used to increase memory (the example above is for Sun's/Oracle's JVM).  Use the "&lt;i&gt;jconsole&lt;/i&gt;" command to verify your needs for a specific workspace. &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
The argument "&lt;b&gt;-clean&lt;/b&gt;" is handy if you face some configuration problems or need to restart Eclipse in consequence of a crash.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Note&lt;/i&gt;: You can also specify those parameters in the &lt;i&gt;eclipse.ini&lt;/i&gt;. But then you are not able to apply them for each workspace individually.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-2844433969988806431?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/7TSvYEHGpKo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/2844433969988806431/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/03/common-eclipse-startup-arguments.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/2844433969988806431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/2844433969988806431?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/7TSvYEHGpKo/common-eclipse-startup-arguments.html" title="Common Eclipse Startup Arguments" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/03/common-eclipse-startup-arguments.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNRXY4eyp7ImA9WxBaEUQ.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-231188182759855569</id><published>2010-03-21T16:52:00.003+01:00</published><updated>2010-03-21T19:51:34.833+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T19:51:34.833+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title>Grails Tutorial, Book &amp; Interview</title><content type="html">I'm an excited user of the &lt;a href="http://grails.org/"&gt;Grails&lt;/a&gt; framework. In the past I was lucky enough to get some payed Grails projects. This enabled me to work full-time with Grails and getting a deep understanding of the technology.&lt;br /&gt;
&lt;br /&gt;
To give something back, I decided to publish some Grails stuff. If you are interested in Grails you may look at one of the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://jaxenter.com/interview-with-grails-project-lead-graeme-rocher-about-status-and-the-future-of-grails-10098.html"&gt;&lt;b&gt;Interview&lt;/b&gt; with Grails Project Lead Graeme Rocher&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.moscon.de/grailstutorial/"&gt;A three part &lt;b&gt;Grails Tutorial&lt;/b&gt; &amp;nbsp; (in German)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.de/Grails-1-2-produktive-Web-Framework-Java-Plattform/dp/3826650948"&gt;Accountancy adjustments and updates of the &lt;b&gt;book Grails 1.2&lt;/b&gt; &amp;nbsp;(in German)&lt;/a&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/5311296341664117584-231188182759855569?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/K8jRZ5Ps5rU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/231188182759855569/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/03/grails-tutorial-book-interview.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/231188182759855569?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/231188182759855569?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/K8jRZ5Ps5rU/grails-tutorial-book-interview.html" title="Grails Tutorial, Book &amp; Interview" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/03/grails-tutorial-book-interview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEHRX0_cCp7ImA9WxFRGEw.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-5247576746115417058</id><published>2010-03-21T14:45:00.014+01:00</published><updated>2010-05-02T18:10:34.348+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-02T18:10:34.348+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Blogging" /><title>Creating &amp; Customizing a Blogger Blog</title><content type="html">Since &lt;a href="http://www.blogger.com/"&gt;Blogger&lt;/a&gt; is very easy to setup and still allows great individual customization, I decided creating my Blog this way.&lt;br /&gt;
Here is a short summary what I did for customization:&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;What?  &lt;/th&gt; &lt;th&gt;How?  &lt;/th&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;b&gt;Create the Blog&lt;/b&gt;  &lt;/td&gt; &lt;td&gt;Just register to Blogger, choose a subdomain and assign a layout to your Blog. &lt;br /&gt;
Personally I prefer a template with fluid width (like &lt;i&gt;Denim&lt;/i&gt;). It's very annoying if you own a great screen with 1920x1200 and the website just shows the content in a fixed width of 800px for example .&lt;br /&gt;
In addition use the ordinary Blogger functions (e.g. Gadgets) for creating your basic page elements&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;b&gt;Remove Blogger's NavBar&lt;/b&gt;   &lt;/td&gt; &lt;td&gt;The NavBar at the top of the page takes too much space and is not necessary. Anyway it has one useful feature: The search field which implements a full-text search on your Blog.  So I decided to hide the NavBar per default and make it visible if you move the mouse on the top of the page. Check the following post for a how-to (doesn't work for IE): &lt;a href="http://bloggerstop.net/2009/06/toggle-hideshow-navbar-for.html"&gt;Toggle NavBar&lt;/a&gt; &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;     &lt;td&gt;&lt;b&gt;Customize HTML/CSS &lt;/b&gt;&lt;/td&gt;     &lt;td&gt;My next step was customizing the HTML/CSS to achieve a custom look &amp;amp; feel. Blogger allows you to change and extend every part of the HTML/CSS of your blog. You only need to have some basic understanding of CSS.  ;)&lt;br /&gt;
In specific I changed the header, some colors, margins, background, list-elements.  &lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;     &lt;td&gt;&lt;b&gt;Block Paragraphs&lt;/b&gt; &lt;/td&gt;     &lt;td&gt;I defined a new CSS class for presenting block paragraphs:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="simpleCode"&gt;&amp;lt;pre class="simpleCode"&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;     &lt;td&gt;&lt;b&gt;Tables&lt;/b&gt; &lt;/td&gt;     &lt;td&gt;The chosen Blogger layout doesn't have any table styling. I did it on my own. While editing you need to create a HTML table as follows and you see a table like the one around.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="simpleCode"&gt;&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; ... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; ... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; ... &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; ... &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;b&gt;Source Code&lt;/b&gt; &lt;/td&gt; &lt;td&gt;For sure there will be some source-code on this blog. I decided to integrate the &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;SyntaxHighlighter&lt;/a&gt; to allow code formatting like this:&lt;br /&gt;
&lt;pre class="brush: groovy"&gt;// some Groovy list operations
List myList = ['a','b','c','d','e']
if (myList.size()&amp;lt;6) {
    myList &amp;lt;&amp;lt; 'f'
}
assert ['A','B','C','D','E','F'] == myList*.toUpperCase()
&lt;/pre&gt;It's easy to integrate this into your Blogger's HTML/CSS definition (check the installation documentation at SyntaxHighlighter). Finally all you have to do is specifing a tag like: &lt;br /&gt;
&lt;br /&gt;
&lt;div class="simpleCode"&gt;&amp;lt;pre class="brush: groovy"&amp;gt; &lt;br /&gt;
...   &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-5247576746115417058?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/isZX5-Io330" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/5247576746115417058/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/03/creating-customizing-blogger-blog.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/5247576746115417058?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/5247576746115417058?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/isZX5-Io330/creating-customizing-blogger-blog.html" title="Creating &amp; Customizing a Blogger Blog" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</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://www.mosbase.com/2010/03/creating-customizing-blogger-blog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8ASXo7fip7ImA9WxBaE0o.&quot;"><id>tag:blogger.com,1999:blog-5311296341664117584.post-7927427107919756640</id><published>2010-03-21T13:52:00.013+01:00</published><updated>2010-03-23T22:14:08.406+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-23T22:14:08.406+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="About" /><title>Starting Blogging on MosBase</title><content type="html">No Blog, no Twitter, no Facebook, just a business WebSite at&amp;nbsp;&lt;a href="http://www.moscon.de/"&gt;www.moscon.de&lt;/a&gt; and a humble profile on Xing. Till today that's all I've done for the "publicity" about my person on the Net.&lt;br /&gt;
There are two good reasons for that:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;There is a lack of time for twittering, blogging or facebooking steadily about my person. (There may be a lack of interest also.)&lt;/li&gt;
&lt;li&gt;In this regard I'm a little old-school: &amp;nbsp; My private things should stay private and therefore are only accessible in non-public areas on the Net. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;
&lt;i&gt;Nevertheless&lt;/i&gt;: &amp;nbsp;I'm a programmer and technical project-manager in professional life. Even in my spare-time I spend a significant time on exploring technical issues or interesting business ideas around the Internet.&lt;/div&gt;&lt;div&gt;So I decided some months ago to publish a kind of knowledge-base that collects some experience, tips, ideas and insides of mine. I had a specific idea and planned to write a software for this which possibly would become open source. And yes, MosBase should be the place for this.&lt;/div&gt;&lt;div&gt;But as time went by, my priorities changed:&lt;/div&gt;&lt;div&gt;First of all my lovely little son arrived.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img border="0" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em;" src="http://3.bp.blogspot.com/_c-ObcXE1ffA/S6YR9SQdNRI/AAAAAAAAABQ/byVNaJZ75Lc/s320/my_son.jpg" /&gt;&lt;/div&gt;&lt;div&gt;As you expect certainly, a big part of my spare-time is now about him. In addition I currently develop a new version of &lt;a href="http://www.scheelethek.de"&gt;www.ScheeleThek.de&lt;/a&gt;, which will become a kind of "Videothek" (video-store) for my family. Sure, it's non public.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style="clear: both;"&gt;&lt;br /&gt;
Second a nice idea for a new social-web-site popped into my head. I plan to start the realization at the end of this year. So hoping this website will see the light of day in 2011. In future more about this new project here .....&lt;br /&gt;
&lt;br /&gt;
Thus I decided to make MosBase a classic Blog. This should replace my knowledge-base initially.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5311296341664117584-7927427107919756640?l=www.mosbase.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MosBase/~4/h870GLjSNsA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.mosbase.com/feeds/7927427107919756640/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.mosbase.com/2010/03/starting-blogging-on-mosbase.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/7927427107919756640?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5311296341664117584/posts/default/7927427107919756640?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MosBase/~3/h870GLjSNsA/starting-blogging-on-mosbase.html" title="Starting Blogging on MosBase" /><author><name>Mos</name><uri>http://www.blogger.com/profile/08888181148899437967</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_c-ObcXE1ffA/S6YR9SQdNRI/AAAAAAAAABQ/byVNaJZ75Lc/s72-c/my_son.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.mosbase.com/2010/03/starting-blogging-on-mosbase.html</feedburner:origLink></entry></feed>

