<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10414345</id><updated>2011-12-15T03:41:05.060+01:00</updated><title type='text'>Lee's Software Press-on Tips</title><subtitle type='html'>Thoughts and tips about technology.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10414345.post-3664326863480266166</id><published>2011-12-01T15:36:00.000+01:00</published><updated>2011-12-01T15:36:20.016+01:00</updated><title type='text'>Show Internet Explorer auto-detected proxy settings</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;How to view Internet Explorer auto-detected proxy settings?&lt;br /&gt;Was at a customer site and needed to update eclipse, maven, etc. &amp;nbsp;And the client just said use "auto-detected proxy" in IE, firefox, etc. &amp;nbsp;To find out the proxy used just&amp;nbsp;open a browser and go to the url&lt;br /&gt;&lt;br /&gt;http://wpad/wpad.dat&lt;br /&gt;&lt;br /&gt;download the file and the contents should show you the proxy being used.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-3664326863480266166?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/3664326863480266166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=3664326863480266166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/3664326863480266166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/3664326863480266166'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2011/12/show-internet-explorer-auto-detected.html' title='Show Internet Explorer auto-detected proxy settings'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-3844841770193542776</id><published>2011-04-15T10:31:00.005+02:00</published><updated>2011-04-15T11:13:54.410+02:00</updated><title type='text'>Ubuntu 10.04 on dell inspiron 8100</title><content type='html'>Now installing ubuntu 10.04 after 9 became unusable.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1.  Once again had to use floppy to then boot to usb.&lt;/div&gt;&lt;div&gt;2.  Tried installing with 10.10 but kept coming up with a weird black and white lined screen.  Looked through forums and tried different things but eventually gave up.&lt;/div&gt;&lt;div&gt;3.  Went back to installing 9.10 from usb which worked flawlessly.  Probably because "nomodeset" is by default in the grub file&lt;/div&gt;&lt;div&gt;4. Used upgrade manager to then upgrade installation to 10.04LTS.  This took all night.&lt;/div&gt;&lt;div&gt;5.  Changed the /etc/default/grub&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;div style="margin-right: 20px; margin-bottom: 20px; margin-left: 20px; margin-top: 5px; "&gt;&lt;div class="smallfont" style="color: rgb(0, 0, 0); margin-top: 2px; margin-bottom: 2px; "&gt;Code:&lt;/div&gt;&lt;pre class="alt2" dir="ltr" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: inset; border-right-style: inset; border-bottom-style: inset; border-left-style: inset; border-color: initial; width: 640px; height: 34px; text-align: left; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;sudo gedit /etc/default/grub&lt;/pre&gt;&lt;/div&gt;add nomodeset as shown below in bold&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-right: 20px; margin-bottom: 20px; margin-left: 20px; margin-top: 5px; "&gt;&lt;div class="smallfont" style="color: rgb(0, 0, 0); margin-top: 2px; margin-bottom: 2px; "&gt;Quote:&lt;/div&gt;&lt;table cellpadding="6" cellspacing="0" border="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ubuntu_quotebackground" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(248, 248, 243); border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 197); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(221, 221, 197); border-left-width: 6px; border-left-style: solid; border-left-color: rgb(221, 221, 197); border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(221, 221, 197); background-position: initial initial; background-repeat: initial initial; "&gt;# If you change this file, run 'update-grub' afterwards to update&lt;br /&gt;# /boot/grub/grub.cfg.&lt;br /&gt;&lt;br /&gt;GRUB_DEFAULT=0&lt;br /&gt;#GRUB_HIDDEN_TIMEOUT=0&lt;br /&gt;GRUB_HIDDEN_TIMEOUT_QUIET=true&lt;br /&gt;GRUB_TIMEOUT=10&lt;br /&gt;GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&lt;br /&gt;GRUB_CMDLINE_LINUX_DEFAULT="quiet splash &lt;b&gt;&lt;span&gt;nomodeset&lt;/span&gt;&lt;/b&gt;"&lt;br /&gt;GRUB_CMDLINE_LINUX=""&lt;br /&gt;&lt;br /&gt;# Uncomment to disable graphical terminal (grub-pc only)&lt;br /&gt;#GRUB_TERMINAL=console&lt;br /&gt;&lt;br /&gt;# The resolution used on graphical terminal&lt;br /&gt;# note that you can use only modes which your graphic card supports via VBE&lt;br /&gt;# you can see them in real GRUB with the command `vbeinfo'&lt;br /&gt;#GRUB_GFXMODE=640x480&lt;br /&gt;&lt;br /&gt;# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux&lt;br /&gt;#GRUB_DISABLE_LINUX_UUID=true&lt;br /&gt;&lt;br /&gt;# Uncomment to disable generation of recovery mode menu entries&lt;br /&gt;#GRUB_DISABLE_LINUX_RECOVERY="true"&lt;br /&gt;&lt;br /&gt;# Uncomment to get a beep at grub start&lt;br /&gt;#GRUB_INIT_TUNE="480 440 1"&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;save the file and type&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-right: 20px; margin-bottom: 20px; margin-left: 20px; margin-top: 5px; "&gt;&lt;div class="smallfont" style="color: rgb(0, 0, 0); margin-top: 2px; margin-bottom: 2px; "&gt;Code:&lt;/div&gt;&lt;pre class="alt2" dir="ltr" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: inset; border-right-style: inset; border-bottom-style: inset; border-left-style: inset; border-color: initial; width: 640px; height: 34px; text-align: left; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;sudo update-grub&lt;/pre&gt;&lt;/div&gt;You should then be able to boot normally without having to edit grub.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "&gt;6.  Installed the nvidia driver&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "&gt;had black screen of death on reboot so then did this:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "&gt;reboot machine with shift button down to get grub.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "&gt;run in recovery mode to get a console&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.6em; padding-right: 0px; padding-bottom: 0.6em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;run the nvidia-xconfig program:&lt;/p&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 1em; padding-right: 1.5em; padding-bottom: 1em; padding-left: 1.5em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); overflow-x: auto; overflow-y: auto; width: 500px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(222, 222, 221); font-size: 1.2em; white-space: pre-wrap; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; line-height: 19px; "&gt;cd /usr/lib/nvidia-96/bin/&lt;/pre&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 1em; padding-right: 1.5em; padding-bottom: 1em; padding-left: 1.5em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); overflow-x: auto; overflow-y: auto; width: 500px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(222, 222, 221); font-size: 1.2em; white-space: pre-wrap; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; line-height: 19px; "&gt;sudo ./nvidia-xconfig&lt;/pre&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.6em; padding-right: 0px; padding-bottom: 0.6em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;Modify the xorg.conf file, and replace the driver name nvidia with nv.&lt;/p&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 1em; padding-right: 1.5em; padding-bottom: 1em; padding-left: 1.5em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); overflow-x: auto; overflow-y: auto; width: 500px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(222, 222, 221); font-size: 1.2em; white-space: pre-wrap; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; line-height: 19px; "&gt;sudo vi /etc/X11/xorg.conf&lt;/pre&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.6em; padding-right: 0px; padding-bottom: 0.6em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;Replace:&lt;/p&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 1em; padding-right: 1.5em; padding-bottom: 1em; padding-left: 1.5em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); overflow-x: auto; overflow-y: auto; width: 500px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(222, 222, 221); font-size: 1.2em; white-space: pre-wrap; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; line-height: 19px; "&gt;Driver         "nvidia"&lt;/pre&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.6em; padding-right: 0px; padding-bottom: 0.6em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;With:&lt;/p&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 1em; padding-right: 1.5em; padding-bottom: 1em; padding-left: 1.5em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); overflow-x: auto; overflow-y: auto; width: 500px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(222, 222, 221); font-size: 1.2em; white-space: pre-wrap; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; line-height: 19px; "&gt;Driver         "nv"&lt;/pre&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;Then just try and start the Xserver again:&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre; "&gt;startx&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); "&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 18px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; white-space: normal; "&gt;Still can't get 1600x1200 resolution but working on it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; white-space: normal; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; white-space: normal; "&gt;7.  Now moving on to Broadcom wirless driver&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: rgb(34, 34, 34); font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; white-space: normal; "&gt;Just installed it activated it and it worked.  Yeah!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-3844841770193542776?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/3844841770193542776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=3844841770193542776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/3844841770193542776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/3844841770193542776'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2011/04/ubuntu-1004-on-dell-inspiron-8100.html' title='Ubuntu 10.04 on dell inspiron 8100'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-5523095247393552134</id><published>2010-02-10T21:55:00.002+01:00</published><updated>2010-02-10T22:05:01.963+01:00</updated><title type='text'>ubuntu 9.10 wireless on old linksys pcmcia card</title><content type='html'>install broadcom drivers connect computer to internet with cable&lt;div&gt;$sudo apt-get install b43-ftcutter&lt;/div&gt;&lt;div&gt;then follow these instructions&lt;/div&gt;&lt;div&gt;&lt;a href="http://caytin.wordpress.com/2009/07/21/how-to-broadcom-wireless-in-ubuntu-jaunty-jackalope/"&gt;http://caytin.wordpress.com/2009/07/21/how-to-broadcom-wireless-in-ubuntu-jaunty-jackalope/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-5523095247393552134?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/5523095247393552134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=5523095247393552134' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/5523095247393552134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/5523095247393552134'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2010/02/ubuntu-910-wireless-on-old-linksys.html' title='ubuntu 9.10 wireless on old linksys pcmcia card'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-2219692142990048503</id><published>2010-02-10T19:56:00.003+01:00</published><updated>2010-02-10T21:49:41.064+01:00</updated><title type='text'>ubuntu 9.10 on dell inspiron 8100</title><content type='html'>Bios doesn't accept boot from usb.  The cdrom laser is fried but the dvd laser works.  Yup read about this that the two are different.  Floppy drive works but barely.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After searching for a few days here's the easiest way that I found to do this.&lt;/div&gt;&lt;div&gt;Use plop boot manager&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.plop.at/en/bootmanager.html"&gt;http://www.plop.at/en/bootmanager.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;write this to a floppy disk as an image using &lt;a href="http://www.chrysocome.net/rawwrite"&gt;rawrite&lt;/a&gt;&lt;/li&gt;&lt;li&gt;boot to floppy and once plop loaks choose usb WITHOUT the usb drive in.  It will say that it hasn't found anything in the usb slot.&lt;/li&gt;&lt;li&gt;insert the usb drive with ubuntu iso on it hit esc and choose boot from usb again and then it should work.  At least it did for me.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&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/10414345-2219692142990048503?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/2219692142990048503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=2219692142990048503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/2219692142990048503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/2219692142990048503'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2010/02/ubuntu-910-on-dell-inspiron-8100.html' title='ubuntu 9.10 on dell inspiron 8100'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-6786486225918879653</id><published>2008-09-01T11:24:00.008+02:00</published><updated>2008-09-01T15:01:39.303+02:00</updated><title type='text'>Using freeproxy</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_SU7n7h1oOKc/SLvA-EgEvsI/AAAAAAAABik/iLohIDdBRDY/s1600-h/networkserver.jpg"&gt;&lt;/a&gt;Just got a new eee pc 901 and needed to hook up to the company network without declaring the computer. Just needed internet access. I'm using freeproxy http://www.handcraftedsoftware.org, a USB to ethernet gadget which costs about $10, and a foot long ethernet cable.&lt;br /&gt;&lt;br /&gt;1. Install freeproxy 3.9&lt;br /&gt;2. configure freeproxy like this&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_SU7n7h1oOKc/SLvAfNfE78I/AAAAAAAABic/hmPF2jEH7Fs/s1600-h/freeproxy.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_SU7n7h1oOKc/SLvAfNfE78I/AAAAAAAABic/hmPF2jEH7Fs/s400/freeproxy.jpg" alt="" id="BLOGGER_PHOTO_ID_5240994233804189634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Create a new Network connection using the USB to Ethernet adapter on the proxy machine and configure it like this&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_SU7n7h1oOKc/SLvA-EgEvsI/AAAAAAAABik/iLohIDdBRDY/s1600-h/networkserver.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_SU7n7h1oOKc/SLvA-EgEvsI/AAAAAAAABik/iLohIDdBRDY/s400/networkserver.jpg" alt="" id="BLOGGER_PHOTO_ID_5240994763968396994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. On the client machine create a new LAN connection using&lt;br /&gt;&lt;ul&gt;&lt;li&gt;static address 192.168.0.1 (for example) &lt;/li&gt;&lt;li&gt;subnet mask 255.255.255.0&lt;/li&gt;&lt;li&gt;getway 192.168.0.100&lt;/li&gt;&lt;/ul&gt;5. Change your navigator to use a proxy on 192.168.0.100 port 8080&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-6786486225918879653?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/6786486225918879653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=6786486225918879653' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/6786486225918879653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/6786486225918879653'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2008/09/using-freeproxy.html' title='Using freeproxy'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_SU7n7h1oOKc/SLvAfNfE78I/AAAAAAAABic/hmPF2jEH7Fs/s72-c/freeproxy.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-7092304149792685651</id><published>2008-05-19T17:06:00.003+02:00</published><updated>2008-05-19T17:17:40.024+02:00</updated><title type='text'>Axis and commons-logging problem</title><content type='html'>Had a weird bug. On our windows development machines our integration tests passed but on our Unix cruisecontrol machine the tests didn't pass.  Both were run using maven command lines and fresh checkouts.  Here's the stacktrace:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Caused by: org.apache.commons.discovery.DiscoveryException?: No implementation defined for org.apache.commons.logging.LogFactory?&lt;br /&gt;&lt;br /&gt;   at org.apache.commons.discovery.tools.DiscoverClass?.find(DiscoverClass?.java:404) at org.apache.commons.discovery.tools.DiscoverClass?.newInstance(DiscoverClass?.java:579) at org.apache.commons.discovery.tools.DiscoverSingleton?.find(DiscoverSingleton?.java:418) at org.apache.commons.discovery.tools.DiscoverSingleton?.find(DiscoverSingleton?.java:378) at org.apache.axis.components.logger.LogFactory?$1.run(LogFactory?.java:45) at java.security.AccessController?.doPrivileged(Native Method) at org.apache.axis.components.logger.LogFactory?.getLogFactory(LogFactory?.java:41) at org.apache.axis.components.logger.LogFactory?.&lt;clinit&gt;(LogFactory?.java:33)&lt;/clinit&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;After searching on the web which didn't have much I finally figured out that in commons-logging 1.1.1 there is no longer org.apache.commons.logging.impl.Log4jFactory.  I don't know why.  But in the version 1.0.4 it exists.  For some reason even though we had the Maven dependancy for Axis 1.3 the maven generated classpath had commons-logging 1.1.1.  Don't ask me why.  The strange thing is that I guess the surefire classloader or some classloader is different under windows and unix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-7092304149792685651?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/7092304149792685651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=7092304149792685651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/7092304149792685651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/7092304149792685651'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2008/05/axis-and-commons-logging-problem.html' title='Axis and commons-logging problem'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-5985934428755898555</id><published>2008-04-29T11:58:00.002+02:00</published><updated>2008-04-29T12:00:30.702+02:00</updated><title type='text'>recursivly delete svn directories</title><content type='html'>How to recursively delete .svn directories in *nix&lt;br /&gt;&lt;blockquote&gt;$ find . -name .svn -exec rm -rf {} \;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-5985934428755898555?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/5985934428755898555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=5985934428755898555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/5985934428755898555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/5985934428755898555'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2008/04/recursivly-delete-svn-directories.html' title='recursivly delete svn directories'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-8824739376287804030</id><published>2007-10-31T11:47:00.000+01:00</published><updated>2007-10-31T11:50:05.713+01:00</updated><title type='text'>accent problem in Rails and MySQL</title><content type='html'>I was getting the those diamonds with the face for every character with an accent.  Had to just tell the MySQL to use UTF-8 encoding.&lt;br /&gt;&lt;br /&gt;In database.yml&lt;br /&gt;&lt;br /&gt;development:&lt;br /&gt;  adapter: mysql&lt;br /&gt;  database: adatabase&lt;br /&gt;  encoding: utf8&lt;br /&gt;  username: user&lt;br /&gt;  password: password&lt;br /&gt;  host: localhost&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-8824739376287804030?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/8824739376287804030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=8824739376287804030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/8824739376287804030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/8824739376287804030'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2007/10/accent-problem-in-rails-and-mysql.html' title='accent problem in Rails and MySQL'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-7376576574998985876</id><published>2007-04-19T14:41:00.000+02:00</published><updated>2007-04-19T15:27:01.299+02:00</updated><title type='text'>Rethinking the back buton</title><content type='html'>Rethinking the back button problem&lt;br /&gt;&lt;br /&gt;There are a host of problems when dealing with web browsers that implement a corporate intranet application and not just browsing static content or simple applications like blogs.  Here are some typical problems:&lt;br /&gt;&lt;br /&gt;- Double clicking and submitting several times the same form.&lt;br /&gt;- Using the back button once or several times and then the user resubmits the form with a warning from the browser.&lt;br /&gt;- Using the back button and then clicking on a link.  The link relied on information stored in the user session on the server which is no longer there.&lt;br /&gt;- The refresh button or F5 problem.&lt;br /&gt;- The several navigator windows problem.  (Ctrl-n)&lt;br /&gt;&lt;br /&gt;There are different ways of solving these problems some more elegant than others.  For example a typical way of dealing with the back button is by expiring the page.  This works but is not very user friendly.  The user ends up either going back again or forward and gets lost quickly.  &lt;br /&gt;&lt;br /&gt;Another way is to eliminate the back and forward buttons altogether by putting the entire application in another window without the menu items and then providing “internal” back buttons.  Well putting an application in another window is clunky; what do you do with the original window?  Also the user can always use the backspace and F5 buttons.  &lt;br /&gt;&lt;br /&gt;A secure and surefire way of dealing with back, refresh, and double clicks is with a synchronizing token.  Each form has a unique generated token from the server and only a submission with the same token is allowed.  Once a token has been used it cannot be reused.  This works real well, but the user is left with a page saying that operation has already been treated.  Where does the user go now?  It’s not elegant.&lt;br /&gt;&lt;br /&gt;Most of these strategies revolve around suppressing the use of these buttons.  But there is a possibly a better way!  In several of my recent projects instead of restricting things I’ve actually embraced the use of these buttons.  Yes it sounds frightening but in the end the users are happier because the browser behaves like the rest of the web and thus there are less user experience problems.&lt;br /&gt;&lt;br /&gt;Here’s the basic strategy:&lt;br /&gt;&lt;br /&gt;1. Stop double clicks on action buttons with a simple javascript&lt;br /&gt;2. Let users repost if they want to, no token.  This could even be a feature.  Create 10 things really fast. Submit, back, submit, back, etc.&lt;br /&gt;3. All other links (requests) should contain the entire context in the URL.  If context is too big use class serialization and then compression and then post instead of get.  This actually works.&lt;br /&gt;4. Redirect on the client and not on the server after creation, modification, or deletion.  This eliminates the refresh problem.&lt;br /&gt;5. For things that you really don’t want to resubmit use a token.  From a business perspective there might not be that many.&lt;br /&gt;&lt;br /&gt;I can write howtos if anyone is interested.  Just leave me a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-7376576574998985876?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/7376576574998985876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=7376576574998985876' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/7376576574998985876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/7376576574998985876'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2007/04/rethinking-back-buton.html' title='Rethinking the back buton'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-7575860406153499584</id><published>2007-04-02T15:00:00.000+02:00</published><updated>2007-04-02T15:15:37.301+02:00</updated><title type='text'>How to log a class with JBoss and log4j.xml</title><content type='html'>Here's an example of how to log just one class in JBoss.&lt;br /&gt;&lt;br /&gt;First in the Java class you want to log com.mycompany.MyClass.java:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        if(log.isDebugEnabled()){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            log.debug(System.currentTimeMillis());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then in the log4j.xml do not add a threshold parameter to the appenders.  I think it overrides all other categories.  Instead add a priority value in the root logger.&lt;br /&gt;&lt;br /&gt;   &amp;lt;appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"&gt;&lt;br /&gt;      &amp;lt;errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/&gt;&lt;br /&gt;      &amp;lt;param name="Target" value="System.out"/&gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;layout class="org.apache.log4j.PatternLayout"&gt;&lt;br /&gt;         &amp;lt;!-- The default pattern: Date Priority [Category] Message\n --&gt;&lt;br /&gt;         &amp;lt;param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/&gt;&lt;br /&gt;      &amp;lt;/layout&gt;&lt;br /&gt;   &amp;lt;/appender&gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;category name="com.mycompany.MyClass"&gt;&lt;br /&gt;     &amp;lt;appender-ref ref="CONSOLE"/&gt;&lt;br /&gt;     &amp;lt;priority value="DEBUG" /&gt;&lt;br /&gt;   &amp;lt;/category&gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;root&gt;&lt;br /&gt;      &amp;lt;appender-ref ref="CONSOLE"/&gt;&lt;br /&gt;      &amp;lt;appender-ref ref="FILE"/&gt;&lt;br /&gt;      &amp;lt;priority value="INFO" /&gt;&lt;br /&gt;   &amp;lt;/root&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-7575860406153499584?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/7575860406153499584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=7575860406153499584' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/7575860406153499584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/7575860406153499584'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2007/04/how-to-log-class-with-jboss-and.html' title='How to log a class with JBoss and log4j.xml'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-5524941181663346176</id><published>2007-03-29T13:42:00.000+02:00</published><updated>2007-03-29T14:08:24.330+02:00</updated><title type='text'>How to always force a download of a file</title><content type='html'>Here's a way in Java of how to force a file to download instead of opening it up with the associated program.  Firefox is OK, the problem usually shows up in IE.  The main thing is setting the right header Content-Disposition and content type.  Also included is a workaround for a weird bug found in IE if you're in https.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       /* patch for IE SSL mode.  */&lt;br /&gt;      SimpleDateFormat formatter = new SimpleDateFormat ("EEE, dd MMM yyyyHH:mm:ss zzz");&lt;br /&gt;     Calendar objDate = GregorianCalendar.getInstance();&lt;br /&gt;     objDate.add(objDate.MINUTE,1);&lt;br /&gt;     String dateString = formatter.format(objDate.getTime());&lt;br /&gt;&lt;br /&gt;     res.setHeader("Expires", dateString);&lt;br /&gt;     res.setHeader("Cache-Control","store, cache");&lt;br /&gt;     res.setHeader("Pragma","cache");&lt;br /&gt;     /* end patch */&lt;br /&gt;&lt;br /&gt;     res.setContentType("application/octet-stream");&lt;br /&gt;     res.setHeader("Content-Disposition", "attachment;filename="+filename+";");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-5524941181663346176?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/5524941181663346176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=5524941181663346176' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/5524941181663346176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/5524941181663346176'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2007/03/how-to-always-force-download-of-file.html' title='How to always force a download of a file'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-2213358242356469684</id><published>2007-01-16T11:06:00.000+01:00</published><updated>2007-01-17T10:11:14.454+01:00</updated><title type='text'>Why Maven? (continued)</title><content type='html'>...A little more time has passed with Maven2.   Here are more observations.&lt;br /&gt;One of the added values I do see is that Maven2 generates a project site for you with links to the reports of the different goals executed.  It's nice to have all of that in one place instead of having to roll your own.  Perhaps there is a way to integrate just that part from an ant script?&lt;br /&gt;&lt;br /&gt;Oh well, back to limitations that I've found.  We've been integrating Maven2 with CruiseControl.  So one of the first things we do is unit tests.  Great Maven has a goal for that called "test"!  Okay, so the first thing we want to do is do an update on the whole project then we want to create the database.   Well there must be a Maven goal that does that.  Dohhhh!!  There isn't.  Hmm maybe I can sneak it into one of the other  build lifecycle phases via an ant script.  Which one?  not compile, not generate-source,  hmm process-resources?  Yeah but that's gonna launch a whole bunch of other stuff that I don't care about.  I just want to create the database.  And then maybe I want to insert some reference data, and then eventually drop it.  It would be nice to do those independently.  Yikes!  Maven doesn't have these concepts in the build cycle.  I guess it's back to ant for the db.  That sucks I don't like having two build systems.  The developers are already confused enough as it is.  In fact when there's a bug the developers want to import the test data the QA team was using.&lt;br /&gt;&gt;mvn ?&lt;br /&gt;&lt;br /&gt;...darn  ...alright then&lt;br /&gt;&lt;br /&gt;&gt;ant db.import.testdata&lt;br /&gt;&lt;br /&gt;ahhh, that works!!&lt;br /&gt;&lt;br /&gt;The thing I'm getting at is how can a project "pre-define" all the requirements of a software team?  It's risky business since things change.  Now things are test-driven, agile, continuously integrated, etc...  Tomorrow will offer other things.  I don't want to wait for Maven to incorporate those concepts.    I'd rather just take an ant script example and start from there.  In fact Maven kind of feels like the whole heavy J2EE (EJB 1 &amp; 2) where in trying to make something better  (ant builds) they make it way too heavy and impose a way of doing things.  Sounds familiar?  It doesn't feel light and agile.  I'm waiting for the backlash and going back to simple things like  POA (Plain Old Ant).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-2213358242356469684?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/2213358242356469684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=2213358242356469684' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/2213358242356469684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/2213358242356469684'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2007/01/why-i-hate-maven-continued.html' title='Why Maven? (continued)'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-6990091619270397837</id><published>2006-12-22T11:49:00.000+01:00</published><updated>2007-02-01T14:31:16.209+01:00</updated><title type='text'>Why I hate maven2</title><content type='html'>Recently at work I've been assigned to come in as  firefighter to get a J2EE project back on track.   Basically a ton of compile errors before delivery.  I did the sensible thing like getting a cruise control server going and getting the developers to write meaningful unit tests.   I also discovered they were using Maven2 as their build tool.  I hadn't used it before so I was excited to finally have a real project to check it out on.&lt;br /&gt;&lt;br /&gt;Well it's only been a week but I really just don't see the added value of Maven's dependency management.  I've used a similar system Savant in another project and just junked for doing everything with ant and subversion.  The thing that fundamentally bothers me is having &lt;span style="font-weight: bold;"&gt;two &lt;/span&gt;repositories.  One is subversion for all the code, scripts, etc, and one is Maven for all your jars or binary dependencies.    So you can no longer just checkout a project from svn and build it from scratch.  You have to setup a local repository and maybe a remote repository, or connect to the internet.  What happens when you want to build on production servers when there's no connection to the internet? &lt;a href="http://opensource.atlassian.com/projects/spring/browse/SPR-2599?page=all&amp;decorator=printable"&gt;The Spring guys have figured this out as well.&lt;/a&gt;    So far for my projects it's just another layer on top of ant for not much gain.  Just version your jars and check them in subversion!!!  Also when I start seeing all the same ant tasks being replicated in maven you just have to wonder why????  I already get the creeps with ant when I feel like I'm coding Java in xml (for loops, if then, etc).  So I'm definitely going to try to get my next project on something based on Ruby.&lt;br /&gt;&lt;br /&gt;Or maybe I just need a little more time&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-6990091619270397837?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/6990091619270397837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=6990091619270397837' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/6990091619270397837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/6990091619270397837'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/12/why-i-hate-maven2.html' title='Why I hate maven2'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-116211803478031092</id><published>2006-10-29T11:22:00.000+01:00</published><updated>2006-10-29T11:33:54.790+01:00</updated><title type='text'>My wife's website</title><content type='html'>Well last night we launched my wife's website.  It's called &lt;a href="http://www.lamaisonbio.com"&gt;La Maison Bio&lt;/a&gt;.  It's all about fashionable, healthy, organic, and sustainable  lifestyles in this modern world.  For now the target audience is professional French mothers.&lt;br /&gt;&lt;br /&gt;So I'm doing all the technology.  It's done in Joomla 1.0.11, MySql 5.0, PHP5.  It's amazing how much free stuff there is but man it can be a real pain to get it all integrated.  It's a good thing that's what I do at work all day long so I know what to do but if your not a technology oriented person good luck.  So I've spent the last few weeks getting it all ready and learning the world of Joomla.  And now that it's launched I'm entering the world of how to get traffic and page rankings.  What fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-116211803478031092?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.lamaisonbio.com' title='My wife&apos;s website'/><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/116211803478031092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=116211803478031092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/116211803478031092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/116211803478031092'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/10/my-wifes-website.html' title='My wife&apos;s website'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-116093990179532511</id><published>2006-10-15T21:14:00.000+02:00</published><updated>2006-10-15T21:18:21.860+02:00</updated><title type='text'>How to install Joomla 1.0.11 with Mysql 5</title><content type='html'>Started to get installation errors in step 2 inserting data in the db.  Such as:&lt;br /&gt;&lt;br /&gt;SQL=BLOB/TEXT column \'text\' can\'t have a default value SQL=# Table structure for table `jos_poll_data`\n\nCREATE TABLE `jos_poll_data` (\n  `id` int(11) NOT NULL auto_increment,\n  `pollid` int(4) NOT NULL default \'0\',\n  `text` text NOT NULL default \'\',\n  `hits` int(11) NOT NULL default \'0\',\n  PRIMARY KEY  (`id`),\n  KEY `pollid` (`pollid`,`text`(1))\n) TYPE=MyISAM:- - - - - - - - - -# Table structure for table `#__poll_data`CREATE TABLE `#__poll_data` (  `id` int(11) NOT NULL auto_increment,  `pollid` int(4) NOT NULL default '0',  `text` text NOT NULL default '',  `hits` int(11) NOT NULL default '0',  PRIMARY KEY  (`id`),  KEY `pollid` (`pollid`,`text`(1))) TYPE=MyISAM= = = = = = = = = =&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I tried fixing the joomla.sql file like some of the other posts such as &lt;a href="http://forum.joomla.org/index.php/topic,103176.msg522184.html#msg522184"&gt;http://forum.joomla.org/index.php/topic,103176.msg522184.html#msg522184&lt;/a&gt; but kept getting more errors.  So instead to solve the problem I just launched the Mysql instance config wizard and set the database to not be "strict".  The installation worked fine after&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-116093990179532511?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/116093990179532511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=116093990179532511' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/116093990179532511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/116093990179532511'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/10/how-to-install-joomla-1011-with-mysql.html' title='How to install Joomla 1.0.11 with Mysql 5'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-115770246042394509</id><published>2006-09-08T09:43:00.000+02:00</published><updated>2006-09-08T10:01:00.433+02:00</updated><title type='text'>Interpreted languages taking over</title><content type='html'>Sun is getting into interpreted languages and even they are jumping on the Ruby bandwagon.  This just makes sense.  And I believe the fundamental reason is that the act of compilation (on large scale projects especially) does not add enough value.&lt;br /&gt;&lt;br /&gt;With agile requirements goes agile development and compilation doesn't add enough value (rigor, security, etc.) for the lost development gain.  I see this every day on large projects where compile times are over ten minutes.   The development cycle should be as fast as possible and then you compile only for a production environment.&lt;br /&gt;&lt;br /&gt;The other main advantage of interpreted languages is no more xml configuration files.  Bye bye Spring. Hallelujah!!!!  No more java programming in psuedo languages/frameworks.  Bye bye ant.&lt;br /&gt;Back to learning one thing, Ruby, and learning it well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-115770246042394509?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.javalobby.org/java/forums/t78292.html' title='Interpreted languages taking over'/><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/115770246042394509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=115770246042394509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/115770246042394509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/115770246042394509'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/09/interpreted-languages-taking-over.html' title='Interpreted languages taking over'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-115675698966021996</id><published>2006-08-28T11:07:00.000+02:00</published><updated>2006-08-28T11:23:09.670+02:00</updated><title type='text'>switching from http to https to http with Apache 2.2</title><content type='html'>Here's how to do it with just using Apache configuration files.  The application is J2EE struts running on JBoss 4.0.4GA. &lt;br /&gt;&lt;br /&gt;in httpd.conf&lt;br /&gt;make sure the mod_rewrite is activated like this&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;LoadModule rewrite_module modules/mod_rewrite.so&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;then add to the httpd.conf&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteEngine on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;# checks if request is in HTTP and then only rewrites the login pages via a regex&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteCond %{HTTPS} =off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteCond %{THE_REQUEST} login\.do.*action=init [OR]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteCond %{THE_REQUEST} login\.do.*action=submit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;# checks if request is in HTTPS and then rewrites all other pages to http via inverse regex.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;# however do not rewrite static content such as images, css, javascripts or else returned page &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;# will not be 100% HTTPS.  All static content under /staticcontent/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteCond %{HTTPS} =on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteCond %{THE_REQUEST} !login\.do.*action=init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteCond %{THE_REQUEST} !login\.do.*action=submit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteCond %{REQUEST_URI} !/staticcontent/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R,L]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;make sure that J2EE application is sending client-side rewrites and not just server-side forwards for the login pages or else this will not work because Apache will not get the chance to rewrite the URL's.&lt;br /&gt;&lt;br /&gt;That's it!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-115675698966021996?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/115675698966021996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=115675698966021996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/115675698966021996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/115675698966021996'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/08/switching-from-http-to-https-to-http.html' title='switching from http to https to http with Apache 2.2'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-114509503525607778</id><published>2006-04-15T11:21:00.000+02:00</published><updated>2006-04-15T11:57:15.266+02:00</updated><title type='text'>Javascript Databases?</title><content type='html'>You might laugh at first, "like what...huh??  That's the stupidest thing I've ever heard!"  Oracle types, DBA's, and other people generally lacking in imagination have this reaction. &lt;br /&gt;&lt;br /&gt;But there is a value play.  With the web2.0 there will be more and more need to cache things in the browser.  So you think well ok there are cookies.  But no, we're talking more than just storing your username and a couple of preferences.  We're talking about caching data, like structured text and then being able to query it without having to go back to the server.&lt;br /&gt;&lt;br /&gt;For just storage DOJO has a &lt;a href="http://manual.dojotoolkit.org/storage.html"&gt;framework&lt;/a&gt; and there is &lt;a href="http://codinginparadise.org/projects/storage/README.html"&gt;AMASS &lt;/a&gt; based on Flash to get around the cookie size restriction.  But if you want SQL check out TrimPath's &lt;a href="http://trimpath.com/project/wiki/TrimQuery"&gt;TrimQuery&lt;/a&gt;.  It's very cool and can do basic queries, even joins!  But sadly "LIKE" hasn't been implemented yet.  There is even a combo &lt;a href="http://www.sysbotz.com/articles/jsdb/index.htm"&gt;TrimQuery + AMASS&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;At work we're going to use similar mechanisms but we're custom coding since we need "LIKE".  But I'm wondering if there's a way to ditch Flash and do some sort of in-memory thing like a javascript &lt;a href="http://www.prevayler.org/wiki.jsp"&gt;Prevayler &lt;/a&gt;with ajax calls to do the updates?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-114509503525607778?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/114509503525607778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=114509503525607778' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114509503525607778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114509503525607778'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/04/javascript-databases.html' title='Javascript Databases?'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-114509249308129408</id><published>2006-04-15T10:42:00.000+02:00</published><updated>2006-04-15T11:19:38.573+02:00</updated><title type='text'>Google Calendar,Virtual Companies, and Perverted Adsense</title><content type='html'>&lt;strong&gt;Calendar&lt;/strong&gt;&lt;br /&gt;Wow, it finally came out. People have been waiting for it after gmail. And by now we've all come to expect incredible DHTML things from google. It very slick.&lt;br /&gt;&lt;br /&gt;At work I tried to have gmail as a frontend to our email backend but the company won't allow forwarding outside the company's domain. It's a shame because I wouldn't need Outlook or thunderbird anymore.&lt;br /&gt;&lt;br /&gt;Now I'm thinking how a small (or even large) business could use gmail/calendar/groups/talk/writely/etc. to run their business virtually. If google would acquire or develop a file storage mechanism à la xdrive and incorporate it into google groups then it would basically all be there.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Perverted Adsense&lt;/strong&gt;&lt;br /&gt;Now I'm also thinking of a real perverted use of google adsense which a large organisation like my company &lt;a href="http://www.atosorigin.com"&gt;www.atosorigin.com&lt;/a&gt; could use. Companies &lt;em&gt;could&lt;/em&gt; and perhaps &lt;em&gt;&lt;strong&gt;should&lt;/strong&gt;&lt;/em&gt; advertise internally within their web office suite. Everyone is talking about knowlege management and our company has a system but who goes there? There is no real efficient way to get mindshare for new corporate programs, technologies, events, groups, etc. So why not internal advertising using the same auction system that every google ad has. Perhaps google already sells their adsense engine to corporations like their search engine? Or if they don't a startup should build one and sell it to corporations since google adsense works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-114509249308129408?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.google.com/calendar' title='Google Calendar,Virtual Companies, and Perverted Adsense'/><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/114509249308129408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=114509249308129408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114509249308129408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114509249308129408'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/04/google-calendarvirtual-companies-and.html' title='Google Calendar,Virtual Companies, and Perverted Adsense'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-114466531387784504</id><published>2006-04-10T12:26:00.000+02:00</published><updated>2006-04-10T12:35:13.890+02:00</updated><title type='text'>Windows Live Mail</title><content type='html'>Well Microsoft had to respond to Google's gmail.  A lot of the people I know have already switched.  So I tried out windows live mail from my hotmail account.  It's a version of gmail except slower for now.  But it almost is like Outlook.  It finally has a search and you can select multiple mails with shift-click so deleting a lot of spam is easy!&lt;br /&gt;&lt;br /&gt;But when I tried to open it with Firefox what did I get?  The Classic version.  And then this message: &lt;br /&gt;&lt;span style="font-style: italic;"&gt;     • &lt;/span&gt;&lt;b style="font-style: italic;"&gt;If you’re not using Internet Explorer 6.0:&lt;/b&gt;&lt;span style="font-style: italic;"&gt; Using Internet Explorer versions 6.0 and higher will give you the best Windows Live Mail user experience with access to all functionality such as the reading pane and keyboard shortcuts. &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.microsoft.com/windows/ie/downloads/default.asp"&gt;Internet Explorer 6.0&lt;/a&gt;&lt;span style="font-style: italic;"&gt; is available only for computers with certain &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.microsoft.com/windows/ie/evaluation/sysreqs/default.mspx"&gt;system requirements&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I knew MS would do this.  See my last post.  But I think they're making a crucial mistake.  They think that they're Windows Live will keep people on IE and not on Firefox or other future browsers.  It's the same mistake that Apple made with their OS.  In the end it's the apps that count and not the platform.&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-114466531387784504?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/114466531387784504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=114466531387784504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114466531387784504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114466531387784504'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/04/windows-live-mail.html' title='Windows Live Mail'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-114388409067946511</id><published>2006-04-01T10:51:00.000+02:00</published><updated>2006-04-01T11:34:50.693+02:00</updated><title type='text'>The Web is at a new Inflexion Point</title><content type='html'>Wow the world is changing and fast.  We're definately at an inflexion point.  Here's what's going on.  The web 2.0 is taking hold.  The announcement of &lt;a href="http://writely.blogspot.com/"&gt;Google aquiring Writely&lt;/a&gt; just really confirms what is happening.  And as Java was associated with the web 1.0, now Ruby and especially the phenominal momentum of &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails &lt;/a&gt;is associated with the web 2.0.  And it is growing exponentially.  It seems clear to me now that RoR will eat up the J2EE and .Net market from the bottom up given the number of web hosters that offer rails hosting as well.  Within a year rails will be a standard offering like php/mysql and have already made inroads into the j2ee/.net corporate world.  The j2ee and .Net world will try to respond but the fundamental problem lies with the language.  Java is not interpreted.  See my other blog on this "How Rails saves time vs J2EE from an architect's POV"&lt;br /&gt;&lt;br /&gt;Here is my view of the coming changes.  We will go back to a semi-synchronous client / server architecture except this time with only a dhtml web browser and no more applets, activex, flash, etc.  There will be a bunch of  web2.0 applications built and then eventually a lot of commercial (Microsoft included) and free web 2.0 competing frameworks will eventually be winnowed down to one or two dominant opensource ones (like AWT and Swing in the Java world). &lt;br /&gt;&lt;br /&gt;The big battle will be between Google and Microsoft.  Google trying to replace all the MS apps via web2.0 apps (example:  writely).  MS is responing now but will as usual make their web2.0 apps only work with Internet Explorer.  This could strategically be a crucial mistake.  Will we then go back to a "service" business model as what was being hyped during the web1.0 dot com era?  Something tells me not.  I think we'll stay with a mix of paid software products and advertising based revenue streams.&lt;br /&gt;&lt;br /&gt;One thing is clear is that all companies will have to upgrade their sites/apps to be web2.0 or they will loose traffic and customers.  People are making fortunes now just redoing classic apps in web2.0 form.  It truly is the web all over again but with less craziness, more experience, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-114388409067946511?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/114388409067946511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=114388409067946511' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114388409067946511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114388409067946511'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/04/web-is-at-new-inflexion-point.html' title='The Web is at a new Inflexion Point'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-114329666623425495</id><published>2006-03-25T15:12:00.000+01:00</published><updated>2006-10-15T20:07:39.616+02:00</updated><title type='text'>How to install apache2 php5 mysql5</title><content type='html'>This weekend trying to get Joomla 1.0.8 ecommerce edition going.&lt;br /&gt;Already had a mysql 5 installed so I installed php5 (with the automatic installer) and apache2.&lt;br /&gt;All went ok but I got the: "MySQL support Unavailable" when trying to install Joomla.&lt;br /&gt;&lt;br /&gt;After googling and then attempting a manual install of php5 which didn't work I went back to the php5 auto install and then simply did the final two steps:&lt;br /&gt;1. in the c:\WINDOWS\php.ini uncomment the line:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;;extension=php_mysql.dll&lt;/span&gt;&lt;br /&gt;by removing the ";"&lt;br /&gt;&lt;br /&gt;2. in the same file change the&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;extension_dir = "./"&lt;/span&gt;&lt;br /&gt;to&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;extension_dir = "C:\programs\PHP\"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3.dowload the php5 manual installation unzip and copy the files&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;php-5.1.2\libmysql.dll&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;php-5.1.2\ext\php_mysql.dll&lt;/span&gt;&lt;br /&gt;to&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;php\libmysql.dll&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;php\php_mysql.dll&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-114329666623425495?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/114329666623425495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=114329666623425495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114329666623425495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114329666623425495'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/03/how-to-install-apache2-php5-mysql5.html' title='How to install apache2 php5 mysql5'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-114104405684611510</id><published>2006-02-27T13:24:00.000+01:00</published><updated>2006-03-13T14:12:24.996+01:00</updated><title type='text'>How Rails saves time vs J2EE from an architect's POV</title><content type='html'>These are my impressions so far&lt;br /&gt;J2EE so far means Struts + Spring + Hibernate&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Structure:&lt;/span&gt;&lt;br /&gt;In rails the application structure is given. The hierarchy is very clean and simple (controller, model, view, helper). In J2EE there is a WAR structure, a JAR structure, an EAR structure, SAR, etc. All of these different structures take time to setup when you start a project. Also if every you decide to change the structure the refactoring can be a nightmare. Classpath problems, classloading order problems, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interpreted language:&lt;/span&gt;&lt;br /&gt;The fact that the development -&gt; test cycle is so short (like PHP) you can get in so many more development revs. This is huge. Now that projects are test driven anyway I'm wondering what the added value of a compiler is? If the project doesn't compile your tests won't pass anyway. By eliminating the compiler then the whole concept of "continuous integration" is inherant in the language. Why?&lt;br /&gt;&lt;br /&gt;1. Source and deployment are one (ooohhhhmmmm). If there's no compiler then your source tree is your deployment tree. No big ant scripts that clean build directories, make build directories, compile, copy all those wonderfully huge and error prone config files, and then make them into WARs, JARs, EARs deployment structures.&lt;br /&gt;&lt;br /&gt;2. Codetime and development runtime are one (breathe and repeat ooohhhhmmmmm). If the language is interpreted then there's no deployment. Waiting for the container to start or for Spring to lazily inject all of those dependancies the first time you access a service can take a 10, 20,... 40 seconds? No big deal, but when you do this 200 times a day it just gets developers into the habit of working sloooowwwly. In fact there's no need for that wonderful J2EE ointment Spring. Yeah! no seperate environments: one for development and testing without the container and one for the "real production EJB container" integration environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Convention over Configuration:&lt;br /&gt;&lt;/span&gt;This just seems like a good design pattern or common sense to me.   Like ordering a "&lt;span class="subheaderblu"&gt;Caramel Macchiato".  Specifying &lt;/span&gt;&lt;span class="subheaderblu"&gt;&lt;/span&gt;&lt;span class="copytext"&gt;Espresso with vanilla and caramel syrup on the foamed milk&lt;/span&gt; in a grid pattern just takes too long.  And you'll probably screw it up so the "Barrista" will then have to ask you if again and you then have to repeat your order again.  Imagine if everyone in line did this?  The orders would be exact but it would be very confusing, there would be many errors,  and it would take a long time.  There would probably even be "order consultants" to help you speed your way and books written about how to order.  Sounds a lot like J2EE.&lt;br /&gt;&lt;br /&gt;So Rails makes it easy for the majority of people to get what they want fast and then let the few demanding types order custom [insert favorite Starbuck's drink here].  We can do this in Java but we don't.  Why? The ethos is more about being able to customize and control everything and all possible future extendable combinations first then using Java to build applications.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-114104405684611510?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/114104405684611510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=114104405684611510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114104405684611510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/114104405684611510'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2006/02/how-rails-saves-time-vs-j2ee-from.html' title='How Rails saves time vs J2EE from an architect&apos;s POV'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-112678119091921022</id><published>2005-09-15T12:45:00.000+02:00</published><updated>2005-09-15T12:46:30.920+02:00</updated><title type='text'>Open Session In View Pattern</title><content type='html'>So far no success. No good examples on the web but the allure is great because it would eliminate a lot of work build hierarchies and the tearing them down going between the business and presentation layer.  Same problems that others have encountered.  Once I get the solution I'll try to publish a complete example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-112678119091921022?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/112678119091921022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=112678119091921022' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/112678119091921022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/112678119091921022'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2005/09/open-session-in-view-pattern.html' title='Open Session In View Pattern'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-112678063721478575</id><published>2005-09-15T12:30:00.000+02:00</published><updated>2005-09-15T12:39:12.000+02:00</updated><title type='text'>Eliminate IE "You are about to be redirected to a connection that is not secure" message</title><content type='html'>Got this from here:&lt;br /&gt;http://jehiah.com/archive/redirect-to-a-connection-that-is-not-secure&lt;p&gt;&lt;/p&gt; Instead of the 302 redirect, give a 400 responce, and a meta-refresh tag. meta equiv="refresh" content="0;url=http://jehiah.com/"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-112678063721478575?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/112678063721478575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=112678063721478575' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/112678063721478575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/112678063721478575'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2005/09/eliminate-ie-you-are-about-to-be.html' title='Eliminate IE &quot;You are about to be redirected to a connection that is not secure&quot; message'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-111700780619146087</id><published>2005-05-25T09:34:00.000+02:00</published><updated>2005-05-27T10:16:59.430+02:00</updated><title type='text'>Buzzword compliance in my project</title><content type='html'>While reading "J2EE without EJB" I'm just wondering how long it will be before the book "J2EE without Spring" comes out.  Just joking but not totally.  Dealing with all the SpringBean dependancies is almost as much a "meta-data hell" as EJB deployment descriptors.  The advantage of testing out of the container is good but otherwise I see the overall productivity problem as just being moved a little and renamed something else.&lt;br /&gt;&lt;br /&gt;Otherwise here are the ways that the buzzwords are injected and weaved in our current application.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;we're using the Spring WebApplicationContext with Struts to get access to stuff throughout the web app. We can say we are using a "lightweight container"&lt;/li&gt;&lt;li&gt;we're using Spring Beans to initalize a navigation tree via an XML file. We can say we're using "IoC Dependancy Injection"&lt;/li&gt;&lt;li&gt;we're using another Spring bean to have remote access to Session EJB's. For testing we replace them with the Bean classes directly so we don't have to use JBoss thus using a cross-cutting AOP.&lt;/li&gt;&lt;li&gt;... I'm sure there's lots of others that I'm not aware of but I'll try to remember to say "IoC constructor injection" instead of "constructor" until these too are replaced with something else.&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/10414345-111700780619146087?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/111700780619146087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=111700780619146087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/111700780619146087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/111700780619146087'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2005/05/buzzword-compliance-in-my-project.html' title='Buzzword compliance in my project'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-110932431314101637</id><published>2005-02-25T10:38:00.000+01:00</published><updated>2005-03-14T18:16:00.450+01:00</updated><title type='text'>MDA is it worth it? And always write EXTERNAL requirements</title><content type='html'>In short I've found that any potential gains of MDA are done punctually and not globally. Trying to adopt a global MDA approach is too contraining for the architectural choices and will ultimately lead to miscommunication within the team and with the client.&lt;br /&gt;&lt;br /&gt;Two of the major drawbacks of MDA are:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Defining a model&lt;/li&gt;   &lt;li&gt;The problem of regeneration.&lt;/li&gt; &lt;/ol&gt; The project that I'm currently working on is large and complicated. Because of this the assumption was made and sold to the client to embrace a "Model Driven Architecture" approach. We were doing MDA not to have different technology choices but given the sheer volume of code needed to be written. By having a model we could then modify the model and the code would be generated. The technology was already chosen from the begining J2EE.&lt;br /&gt;&lt;br /&gt;We started by modeling the domain objects and getting the client to approve them as requirements. The user interface and data model would then be extrapolated from the 'domain model". This was a huge mistake. This basically cost the project 15 analysts time for a year. Right now we're trying to implement the model and basically most of the time the model is either wrong, really inefficient, or relationships are not in the right direction.&lt;br /&gt;&lt;br /&gt;So I'm now a firm believer in driving the domain model from the outside or the database and the user interface. This is called external requirements. I'm also a firm believer in only specifying and delivering to the client the user interface, data model, and business rules attached preferably to the user interface, datamodel, or messages, etc. Keep all domain object models, internal workings for yourself or else specifications and development will crawl to a halt, getting approval for each internal change. Some clients demand this transparancy but don't give approval, at least if you're on a fixed-bid contract. If you're on a time and materials then do whatever the client asks, the longer a project lasts the more money you make!!&lt;br /&gt;&lt;br /&gt;So my best practice is to:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt; model the database with a good tool like Power Designer and generate the database. Keep the physical model in synch with the actual sql. &lt;/li&gt;   &lt;li&gt;define really well the user interface (web, fat client, messages, etc) and all the business rules associated with the user interface events even though they might not be implemented in the presentation layer. Do a real mock-up of all or most of the screens or template screens.&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt; Then think about generating certain things like:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;once the database is created you can generate persistance objects and &lt;a href="http://www.hibernate.org/"&gt;Hibernate &lt;/a&gt;mappings with &lt;a href="http://boss.bekk.no/boss/middlegen/"&gt;Middlegen&lt;/a&gt;, or cocoabase. &lt;/li&gt;   &lt;li&gt;If you have html mock-ups then you can generate jsps with xslt or presentation objects with xmlc&lt;/li&gt;   &lt;li&gt;using xdoclet for struts is nice and keeps everything in the Action classes.  Not the bullshit struts-config.xml&lt;/li&gt; &lt;/ul&gt; Getting back to the two major problems with MDA, the first being the problem of defining a model. The database model is well specified with entity relationship diagrams. These have been around for a while and most DBA's worth anything speak this language. Page mock-ups are WYSIWYG. No client surprises.&lt;br /&gt;&lt;br /&gt;The other problem is regeneration.  What happens if the model changes?  What happens to your changes?  are they lost?  Most of the time the answer is yes, unless you adopt a full blown round trip engineering tool like Together or Rational XDE.  Personally I favor Together but since they were acquired by Borland the quality has dropped off.  I wouldn't recommend anything from Rational.  Just way too complicated and very unstable.  It will be a while before I'd bet my career on on of their products.  So if you think that you're in for an iterative and shifty requirements based project (which most are) then forget about regeneration and make sure that it won't be a major slowdown in the development cycle to always modify the model, regenerate, then compile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-110932431314101637?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/110932431314101637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=110932431314101637' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/110932431314101637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/110932431314101637'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2005/02/mda-is-it-worth-it-and-always-write.html' title='MDA is it worth it? And always write EXTERNAL requirements'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</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>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-110916198969754840</id><published>2005-02-23T13:22:00.000+01:00</published><updated>2006-04-15T11:16:40.013+02:00</updated><title type='text'>XMLHttp</title><content type='html'>Recently a colleague showed me Goggle's sugget. It's pretty cool and uses xmlHttp. An object that allows you to add to the DOM once in the browser.&lt;br /&gt;&lt;br /&gt;In the past to do things like this I've used frames or iframes. The things I didn't like about frames are that you have to deal with frames, framesets, etc. If you've got a simple UI no problem but a lot of my projects have basically been clients that want a fat client in a browser with&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-110916198969754840?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/110916198969754840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=110916198969754840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/110916198969754840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/110916198969754840'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2005/02/xmlhttp.html' title='XMLHttp'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10414345.post-110675371733951531</id><published>2005-01-26T16:26:00.000+01:00</published><updated>2005-09-15T12:44:58.693+02:00</updated><title type='text'>To DTO or not to DTO ?</title><content type='html'>It seems like everytime on a project the question is asked again, why are we doing this? Why are we creating all these objects that just copy the attributes from Entity EJB's or Hibernate POJO's to a bean that is then sent to the presentation layer and visa versa. And then there are cries that DTO's are evil and I ask the question all over again. So does the team.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusions:&lt;/span&gt;&lt;br /&gt;A DTO provides a way of guaranteeing the scope of what you will send and what you will return between the presentation and business layers. For some domain models this is important for others not at all.&lt;br /&gt;&lt;br /&gt;When you can use the business objects directly:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The business object in question is at the end of the line. In other words there are no many-to-one relationships or dependancies tied to it. I get the object and I don't have to wonder if I have to get the collections attached to them and the collections attached to them, etc.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The business object is just a bean. There are little or no process methods that you don't want to expose to other layers. For example what if there are business methods on the object like reset(), deleteAllStuff(), showBlingBling()&lt;/li&gt;&lt;li&gt;Other cases?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Otherwise it's DTO city. Why? Even with lazy loading you still might not want to expose all of a graph of objects to another layer. And then what happens when you want to save or update? What do you persist? The whole graph? only certain parts? How to do define a boundary of the transaction? Well, DTO's or hierarchies of DTO's are a way of limiting the scope of the transaction at hand.&lt;br /&gt;&lt;br /&gt;I'm going to check into the "Open Session in View" pattern and playing with Spring's OpenSessionInViewFilter and Interceptor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10414345-110675371733951531?l=leespot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leespot.blogspot.com/feeds/110675371733951531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10414345&amp;postID=110675371733951531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/110675371733951531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10414345/posts/default/110675371733951531'/><link rel='alternate' type='text/html' href='http://leespot.blogspot.com/2005/01/to-dto-or-not-to-dto.html' title='To DTO or not to DTO ?'/><author><name>Lee</name><uri>http://www.blogger.com/profile/16971605422584284050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
