<?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-3076320245988403835</id><updated>2011-10-14T07:00:24.722-07:00</updated><category term='JQuery'/><category term='Ubuntu'/><category term='testing'/><category term='peoplesoft'/><category term='jmeter'/><title type='text'>ArrayLust - My geek side</title><subtitle type='html'>General tech stuff that would bore my wife, so I waffle randomly to the web at large instead.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3076320245988403835.post-6825521196759619682</id><published>2011-10-14T06:54:00.000-07:00</published><updated>2011-10-14T07:00:24.749-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Awesome JQuery from Ubuntu</title><content type='html'>&lt;div style="text-align: left;"&gt;Ubuntu 11.1 has an online demo, which is made up from a load of Javascript, but looks like a real UI.  The virtual Firefox app has history states and lets you open other websites - including the demo site...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's an awesome bit of coding with massive potential.  They're not far away from making a web based UI layer that would allow users to manage virtual servers over port 80...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.ubuntu.com/tour/#"&gt;http://www.ubuntu.com/tour/#&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-iddfvGq1HHc/TphAYZo8e8I/AAAAAAAAABY/nvWyaJG_Lpg/s1600/ubuntu11.1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://4.bp.blogspot.com/-iddfvGq1HHc/TphAYZo8e8I/AAAAAAAAABY/nvWyaJG_Lpg/s400/ubuntu11.1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5663347319362059202" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 235px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/3076320245988403835-6825521196759619682?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/6825521196759619682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2011/10/awesome-jquery-from-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/6825521196759619682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/6825521196759619682'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2011/10/awesome-jquery-from-ubuntu.html' title='Awesome JQuery from Ubuntu'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-iddfvGq1HHc/TphAYZo8e8I/AAAAAAAAABY/nvWyaJG_Lpg/s72-c/ubuntu11.1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3076320245988403835.post-6283385354994123715</id><published>2011-08-09T06:45:00.000-07:00</published><updated>2011-08-09T09:12:12.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='peoplesoft'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter'/><title type='text'>My experiences with JMeter and PeopleSoft</title><content type='html'>Over the past few months, I've carried out more performance testing than I'd have chosen to, mostly against PeopleSoft in different environments.  There are a number of sites that gave me useful tips to get through the process, and I thought I'd share them here.&lt;br /&gt;&lt;br /&gt;It's also useful to know what breaks :)&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" &gt;About JMeter&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;JMeter is an extensible Java based tool to conduct various different types of testing, including functional, regression, load, soak and stress testing.  Tests are controlled either from a graphical user interface or from the command line, and the ‘master’ host can control several ‘injectors’.&lt;br /&gt;&lt;br /&gt;JMeter is an open source package from the Apache Software Foundation.  For this project, it carries several advantages:&lt;br /&gt;&lt;br /&gt;1.	It carries no license fee&lt;br /&gt;2.	It can be extended&lt;br /&gt;3.	It has a fairly simple user interface&lt;br /&gt;4.	It supports multiple test injectors, required to push the system to its limits&lt;br /&gt;&lt;br /&gt;JMeter is not a perfect tool, and has some disadvantages too, such as a slightly buggy user interface and slightly sparse reporting capabilities.  Despite this, it is the best of the crop of open sourced options.  Utilizing third party plugins can mitigate the sparse reporting.&lt;br /&gt;&lt;br /&gt;My PeopleSoft test plans generally follow this structure:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 245px; height: 400px;" src="http://2.bp.blogspot.com/-oqKd4PbYCJw/TkE8AR-lWII/AAAAAAAAABQ/sZeqQYvzMBI/s400/peoplesofttestplan.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5638854183968135298" /&gt;&lt;br /&gt;Basically, this test will just perform a login.  It includes a bunch of required elements for any PeopleSoft test - it extracts a session variable using  a regular expression, ICSID, which you can use in other test elements further down, it includes a cookie manager (set to 'compatibility mode' - default setting will not work), and it includes a sampler to 'grab test data' - this accesses a simple web service I wrote that provides a row of test data in XML format - this adds next to no additional time to the test, but is really useful because when testing using multiple test injectors, it means that I don't need to copy data across to each server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recording the test is reasonably straightforward, but there are some gotchas.  Firstly, you want to add an HTTP proxy element to the 'workspace' element, and set that up to use HTTP Client for the HTTP samplers.  You also want to add some variables to a config element, including the PeopleSoft environment name, host, port, and protocol.  For example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) PsEnv=DMO&lt;/div&gt;&lt;div&gt;2) host=localhost&lt;/div&gt;&lt;div&gt;3) port=80&lt;/div&gt;&lt;div&gt;4) protocol=http&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you do this, then when the proxy is recording test elements, it'll automatically replace DMO with ${PsEnv}, etc., saving an awful lot of time processing your test afterwards.  You'll also find that most processes in PeopleSoft actually entail multiple GET and POST requests to the same URL.  When you run your test, these will get grouped in the results.  You can tell JMeter to prefix each sampler name with a counter by editing the JMeter.properties file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An article on how to configure the ICSID parameter is here: http://www.erpassociates.com/peoplesoft-corner-weblog/utilities/using-jmeter-for-peoplesoft-performance-testing.html&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the ICStateNum parameter, if you leave it in your tests, you'll get the login page all the time.  It seems to be OK to simply remove it from tests.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you're looking at results, always add a 'View Results Tree' element while you're developing the test - this will allow you to see individual HTTP requests and responses (rendered as HTML!).  This is incredibly useful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you decide to add 'user wait time' to your test, so you can pad out a transaction to take about as long as a real user would take, be aware of the scope of timers in JMeter.  If you have a sampler followed by a timer, followed by two more samplers, then each sampler will get the same delay added.  This is probably not what you want. Instead, add timers as child nodes for a sampler you want to have a delay after.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also found the following useful:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;http://javaworks.wordpress.com/2010/06/15/functions-in-jmeter-bean-shell/&lt;/li&gt;&lt;li&gt;http://www.javaworld.com/javaworld/jw-07-2005/jw-0711-jmeter.html?page=1&lt;/li&gt;&lt;li&gt;http://code.google.com/p/jmeter-plugins/downloads/detail?name=JMeterPlugins-0.4.1.zip&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Especially the last item - JMeter plugins has some very useful charts, including threads over time - if your test uses many injectors, this is a useful way to see when your test is ramped up, and if there are problems with the injectors failing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, it's a good idea to run JConsole against your injector JVMs.  This will give you a feel for how much load you can push through from a single host.  In our tests, with user wait times, we found we were able to push through 800 to 1000 users (threads), each with user wait time.  All this took was to tweak the JVM heap size in the jmeter.bat file, since the servers we were using as injectors each had plenty of CPU power and memory.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;        &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-6283385354994123715?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/6283385354994123715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2011/08/my-experiences-with-jmeter-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/6283385354994123715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/6283385354994123715'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2011/08/my-experiences-with-jmeter-and.html' title='My experiences with JMeter and PeopleSoft'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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/-oqKd4PbYCJw/TkE8AR-lWII/AAAAAAAAABQ/sZeqQYvzMBI/s72-c/peoplesofttestplan.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3076320245988403835.post-265450938732462538</id><published>2010-08-26T03:32:00.000-07:00</published><updated>2010-08-26T06:02:27.998-07:00</updated><title type='text'>Java just isn't being friendly today</title><content type='html'>Is it just me?  Shouldn't Java app servers be more consistent?&lt;br /&gt;&lt;br /&gt;I'm developing a commercial web application.  This app must work in a variety of application servers, on a variety of databases, with minimal configuration of the kind that doesn't require users to understand Java.&lt;br /&gt;&lt;br /&gt;So, I'm using Hibernate, and after a lot of faffing, have got Hibernate to work using a SequenceStyleGenerator (very nice) so it can handle different id generation schemes (sequences vs auto-increment). &lt;br /&gt;&lt;br /&gt;I'm also using Spring, for dependency injection, transactions, and a bunch of other things like MVC, annotations and security.  Spring is very nice for all of these things, but is a bit of a pain when it comes to changing anything without opening up the WAR / EAR.&lt;br /&gt;&lt;br /&gt;My datasource, defined in Spring config, gets DB connections from a JNDI lookup.  I define that JNDI lookup in the application server, but of course every application server exposes JNDI in a different way, so unless I want to maintain different WAR file builds for different application servers, I need a way to change the properties on startup. &lt;br /&gt;&lt;br /&gt;Recently, I started using Spring's PropertyPlaceholderConfigurer, which takes a properties file as an argument: in my case 'classpath:my.properties'.  This allows me to externalise the properties for the key things that need to be changed, like the datasource. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt;&lt;br /&gt; &amp;lt;property name="location"&gt;&lt;br /&gt;  &amp;lt;value&gt;classpath:my.properties&amp;lt;/value&gt;&lt;br /&gt; &amp;lt;/property&gt;&lt;br /&gt;&amp;lt;/bean&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So now my datasource bean declaration is&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;jee:jndi-lookup id="dataSource" name="${myDatasource}" /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;All well and good.  In most app servers, you then just drop the properties file on the classpath.  In Weblogic (on Windows in this case), however, try as I might, I just couldn't get the thing to recognise the properties file, and since the datasource is pretty central to the app, it just didn't start.  It's apparently not enough to just put it in the lib directory that Weblogic happily loads JAR files from.&lt;br /&gt;&lt;br /&gt;The solution, which was simple, took a long time as I tried different things.  It involves editing %WL_HOME%/user_projects/domains/base_domain/bin/setDomainEnv.cmd and adding the following line near the top:&lt;br /&gt;&lt;br /&gt;set CLASSPATH=.;%CLASSPATH%&lt;br /&gt;&lt;br /&gt;All this does is add the current directory to the classpath.  Then, just drop the properties file into %WL_HOME%/user_projects/domains/base_domain and you're good to go.&lt;br /&gt;&lt;br /&gt;Next problem!  JNDI woes.  I'd done this before in Weblogic and thought I had it sussed, so was disappointed when it suddenly stopped.  I'd created my datasource with a JNDI name of jdbc/myDS, and I was looking up that same name from my Spring config (no need to prepend java:comp/env/ in Weblogic).  But it didn't work.  The solution, again simple when you know, is to make sure that you don't click 'Finish' prematurely when creating the datasource, but click 'Next' straight to the final screen, where you choose the 'targets'.  If you're using a default install, that target will be 'AdminServer'.  Then it will work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-265450938732462538?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/265450938732462538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2010/08/java-just-isnt-being-friendly-today.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/265450938732462538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/265450938732462538'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2010/08/java-just-isnt-being-friendly-today.html' title='Java just isn&apos;t being friendly today'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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-3076320245988403835.post-1943200578660051817</id><published>2009-12-09T14:37:00.000-08:00</published><updated>2009-12-09T14:38:44.575-08:00</updated><title type='text'>Nice slides about negative corporate environments</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_2670992"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/akhella/corporate-design-vs-startup-design-a-love-story" title="Corporate Design vs Startup Design - A Love Story"&gt;Corporate Design vs Startup Design - A Love Story&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=corporatedesigntostartupdesign-alovestory-091207215126-phpapp02&amp;stripped_title=corporate-design-vs-startup-design-a-love-story" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=corporatedesigntostartupdesign-alovestory-091207215126-phpapp02&amp;stripped_title=corporate-design-vs-startup-design-a-love-story" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/akhella"&gt;Amir Khella&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-1943200578660051817?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/1943200578660051817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2009/12/nice-slides-about-negative-corporate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/1943200578660051817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/1943200578660051817'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2009/12/nice-slides-about-negative-corporate.html' title='Nice slides about negative corporate environments'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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-3076320245988403835.post-3322874673255244821</id><published>2009-11-26T08:59:00.001-08:00</published><updated>2009-11-26T09:04:53.082-08:00</updated><title type='text'>Sequences not allowed here</title><content type='html'>OK, this was just annoying, but since I couldn't find anything on the web when I looked, here's what my problem was:&lt;br /&gt;&lt;br /&gt;I was modifying some hibernate code to use the SequenceStyleGenerator annotation, so it will work cross-DB.  I'd initially developed using MySQL, and had a MySQL hibernate dialect specified in my config files.  I exported the schema to an Oracle XE instance using hbm2ddl in Eclipse, and started using an Oracle driver in my datasource.  &lt;br /&gt;&lt;br /&gt;Every time I tried to insert anything, I got an oracle error - Sequence not allowed here.  Ultimately, just removing the dialect entirely from the config files worked, since Hibernate can auto-detect the dialect most of the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-3322874673255244821?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/3322874673255244821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2009/11/sequences-not-allowed-here.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/3322874673255244821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/3322874673255244821'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2009/11/sequences-not-allowed-here.html' title='Sequences not allowed here'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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-3076320245988403835.post-3878543996293324643</id><published>2009-11-26T08:52:00.000-08:00</published><updated>2009-11-26T08:58:01.170-08:00</updated><title type='text'>Hibernate / Spring WAR issues in Weblogic 10 - antlr</title><content type='html'>I had an issue today deploying a straightforward WAR file to WLS 10.  The classloader hierarchy was preventing Hibernate from using the correct version of the antlr jar that was bundled in my webapp.&lt;br /&gt;&lt;br /&gt;For my particular situation, the solution had to be simple.  In the end, I created a new Eclipse project to bundle the WAR into an EAR, and then added a file called weblogic-application.xml in the META-INF folder of that EAR with the following content:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;weblogic-application&amp;gt;&lt;br /&gt;   &amp;lt;prefer-application-packages&amp;gt;&lt;br /&gt;       &amp;lt;package-name&amp;gt;antlr.*&amp;lt;/package-name&amp;gt;&lt;br /&gt;   &amp;lt;/prefer-application-packages&amp;gt;&lt;br /&gt;&amp;lt;/weblogic-application&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;..which solves the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-3878543996293324643?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/3878543996293324643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2009/11/hibernate-spring-war-issues-in-weblogic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/3878543996293324643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/3878543996293324643'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2009/11/hibernate-spring-war-issues-in-weblogic.html' title='Hibernate / Spring WAR issues in Weblogic 10 - antlr'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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-3076320245988403835.post-1600293490953042730</id><published>2009-11-11T08:06:00.001-08:00</published><updated>2009-11-11T08:06:43.918-08:00</updated><title type='text'>The future of computing</title><content type='html'>&lt;object width="400" height="265"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7395079&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7395079&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/7395079"&gt;Trillions&lt;/a&gt; from &lt;a href="http://vimeo.com/mayanmaya"&gt;MAYAnMAYA&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-1600293490953042730?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/1600293490953042730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2009/11/future-of-computing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/1600293490953042730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/1600293490953042730'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2009/11/future-of-computing.html' title='The future of computing'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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-3076320245988403835.post-1788488541273225496</id><published>2009-10-28T12:10:00.000-07:00</published><updated>2009-10-28T12:33:19.802-07:00</updated><title type='text'>UTF-8 hell</title><content type='html'>Localisation is a common requirement. So why is it so nightmarish to actually get it all working?  I'm developing an app with Spring MVC and MySQL via Hibernate.  You'd think that this should be quite straightforward, right?  Think again.  I've not got time to lay this all out nicely (as usual), but here's a quick list of things you need to do:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;First, make sure your tables are created with UTF-8 encoding.  e.g.&lt;br /&gt;&lt;pre&gt;CREATE TABLE `aTable` (&lt;br /&gt;`id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;`name` varchar(100) DEFAULT NULL,&lt;br /&gt;`value` varchar(255) DEFAULT NULL,&lt;br /&gt;`category` varchar(45) DEFAULT NULL,&lt;br /&gt;`description` text,&lt;br /&gt;PRIMARY KEY (`id`),&lt;br /&gt;UNIQUE KEY `ind_setting_key` (`name`)&lt;br /&gt;) ENGINE=InnoDB  DEFAULT CHARSET=utf8&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Ensure your web pages are served as UTF-8&lt;br /&gt;&lt;pre id="line1"&gt;&amp;lt;&lt;span class="start-tag"&gt;meta&lt;/span&gt;&lt;span class="attribute-name"&gt; http-equiv&lt;/span&gt;=&lt;span class="attribute-value"&gt;"Content-Type" &lt;/span&gt;&lt;span class="attribute-name"&gt;content&lt;/span&gt;=&lt;span class="attribute-value"&gt;"text/html;&lt;br /&gt;charset=UTF-8" &lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Set content type in JSPs:&lt;br /&gt;&lt;pre&gt;&amp;lt;%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add servlet filter to web.xml to set character encoding of request:&lt;br /&gt;&lt;pre&gt;  &amp;lt;filter&amp;gt;&lt;br /&gt;      &amp;lt;filter-name&amp;gt;charsetFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;      &amp;lt;filter-class&amp;gt;org.springframework.web.filter.CharacterEncodingFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;      &amp;lt;init-param&amp;gt;&lt;br /&gt;          &amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;          &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;      &amp;lt;/init-param&amp;gt;&lt;br /&gt;  &amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;      &amp;lt;filter-name&amp;gt;charsetFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;      &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;  &amp;lt;/filter-mapping&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Ensure your forms submit UTF-8:&lt;br /&gt;&lt;pre id="line185"&gt;&amp;lt;&lt;span class="start-tag"&gt;form&lt;/span&gt;&lt;span class="attribute-name"&gt; action&lt;/span&gt;=&lt;span class="attribute-value"&gt;"targetpage.html" &lt;/span&gt;&lt;span class="attribute-name"&gt;method&lt;/span&gt;=&lt;span class="attribute-value"&gt;"post" &lt;/span&gt;&lt;span class="attribute-name"&gt;&lt;br /&gt;enctype&lt;/span&gt;=&lt;span class="attribute-value"&gt;"application/x-www-form-urlencoded" &lt;/span&gt;&lt;span class="attribute-name"&gt;accept-charset&lt;/span&gt;=&lt;span class="attribute-value"&gt;"UTF-8"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Set JDBC connection character set:&lt;br /&gt;jdbc:mysql://localhost:3306/db?characterEncoding=utf8&lt;/li&gt;&lt;li&gt;When you read from the DB, issue SET NAMES 'utf8'; or you'll see garbled characters.&lt;/li&gt;&lt;/ol&gt;I think that's it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-1788488541273225496?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/1788488541273225496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2009/10/utf-8-hell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/1788488541273225496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/1788488541273225496'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2009/10/utf-8-hell.html' title='UTF-8 hell'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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-3076320245988403835.post-6192297155778673648</id><published>2009-10-21T03:44:00.000-07:00</published><updated>2009-10-21T04:05:41.634-07:00</updated><title type='text'>Edited Blogspot template</title><content type='html'>Some regular blog readers may notice that this blog has a flexible width but still has rounded corners.  The template I chose was a fixed width template using images for corners, which I generally dislike, having used them in the past without too much cross-browser success.&lt;br /&gt;&lt;br /&gt;For this template, I make a 5-minute edit to remove the CSS for any corners and then just added a couple of JQuery includes and a few lines of Javascript:&lt;br /&gt;&lt;br /&gt;&lt;pre class="textmate-source mac_classic"&gt;&lt;span class="source source_js"&gt;&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;lt;&lt;/span&gt;script src&lt;span class="keyword keyword_operator keyword_operator_js"&gt;=&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt; type&lt;span class="keyword keyword_operator keyword_operator_js"&gt;=&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;text/javascript&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;gt;&amp;lt;&lt;/span&gt;/script&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;lt;&lt;/span&gt;script src&lt;span class="keyword keyword_operator keyword_operator_js"&gt;=&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;http://malsup.com/jquery/corner/jquery.corner.js&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt; type&lt;span class="keyword keyword_operator keyword_operator_js"&gt;=&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;text/javascript&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;gt;&amp;lt;&lt;/span&gt;/script&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;lt;&lt;/span&gt;script type&lt;span class="keyword keyword_operator keyword_operator_js"&gt;=&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;text/javascript&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword keyword_operator keyword_operator_js"&gt;$&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;(&lt;/span&gt;&lt;span class="support support_class support_class_js"&gt;document&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;)&lt;/span&gt;&lt;span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js"&gt;.&lt;/span&gt;ready&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;(&lt;/span&gt;&lt;span class="storage storage_type storage_type_js"&gt;function&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;()&lt;/span&gt; &lt;span class="meta meta_brace meta_brace_curly meta_brace_curly_js"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword keyword_operator keyword_operator_js"&gt;$&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;(&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;#header-wrapper&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;)&lt;/span&gt;&lt;span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js"&gt;.&lt;/span&gt;corner&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;()&lt;/span&gt;&lt;span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword keyword_operator keyword_operator_js"&gt;$&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;(&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;#main-wrap1&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;)&lt;/span&gt;&lt;span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js"&gt;.&lt;/span&gt;corner&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;()&lt;/span&gt;&lt;span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword keyword_operator keyword_operator_js"&gt;$&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;(&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;#sidebartop-wrap&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;)&lt;/span&gt;&lt;span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js"&gt;.&lt;/span&gt;corner&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;()&lt;/span&gt;&lt;span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword keyword_operator keyword_operator_js"&gt;$&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;(&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;#sidebarbottom-wrap1&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;)&lt;/span&gt;&lt;span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js"&gt;.&lt;/span&gt;corner&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;()&lt;/span&gt;&lt;span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword keyword_operator keyword_operator_js"&gt;$&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;(&lt;/span&gt;&lt;span class="string string_quoted string_quoted_single string_quoted_single_js"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js"&gt;'&lt;/span&gt;#footer-wrap1&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;)&lt;/span&gt;&lt;span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js"&gt;.&lt;/span&gt;corner&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;()&lt;/span&gt;&lt;span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class="meta meta_brace meta_brace_curly meta_brace_curly_js"&gt;}&lt;/span&gt;&lt;span class="meta meta_brace meta_brace_round meta_brace_round_js"&gt;)&lt;/span&gt;&lt;span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;lt;&lt;/span&gt;/script&lt;span class="keyword keyword_operator keyword_operator_js"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;JQuery is so cool.  I could have gone further and simplifed the HTML, but I couldn't be bothered.  However, I have to say, I'm a recent convert to JQuery, having tried Dojo as well.  JQuery is just brilliant!  I may post more on that later, since I recently created a nice little linked list mechanism, to move items from one list to another (useful for multiple item selection).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-6192297155778673648?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/6192297155778673648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2009/10/edited-blogspot-template.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/6192297155778673648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/6192297155778673648'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2009/10/edited-blogspot-template.html' title='Edited Blogspot template'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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-3076320245988403835.post-358949988142674392</id><published>2009-10-21T03:13:00.000-07:00</published><updated>2009-10-21T03:18:50.794-07:00</updated><title type='text'>Typos</title><content type='html'>OK, so maybe it's just me, but I keep typing new ArrayLust(); instead of ArrayList().  It's an honest mistake, but I thought it was a moderately cool name for a blog, and I fancied blogging again. It's been a while since I last blogged (http://nanoitx.blogspot.com).&lt;br /&gt;&lt;br /&gt;These days, I generally develop Java apps, although that could change.  So, expect to see Spring and Hibernate stuff for a while, and possibly some Google Android notes as I get into that.  I've also been having fun with UTF-8 in MySQL recently, so I'll probably dump my thoughts on that here later on as a starter, in case it helps someone out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3076320245988403835-358949988142674392?l=arraylust.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arraylust.blogspot.com/feeds/358949988142674392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://arraylust.blogspot.com/2009/10/typos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/358949988142674392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3076320245988403835/posts/default/358949988142674392'/><link rel='alternate' type='text/html' href='http://arraylust.blogspot.com/2009/10/typos.html' title='Typos'/><author><name>ArrayLust</name><uri>http://www.blogger.com/profile/08447702133255815841</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>
