<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"> <title>Permeance Technologies</title> <link rel="alternate" href="" /> <subtitle>Permeance Technologies</subtitle> <entry> <title>How to make navigation bars and breadcrumbs accessible</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=153168" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=153168</id> <updated>2010-09-07T01:14:24Z</updated> <published>2010-09-07T01:06:30Z</published> <summary type="html">&lt;p&gt;Navigation bars and breadcrumbs are simply a collection of links. To make these accessible, wrap them in a &lt;code&gt;&amp;lt;map&amp;gt;&lt;/code&gt;. Normally, a &lt;code&gt;&amp;lt;map&amp;gt;&lt;/code&gt; is used for image maps but this is what is recommended by &lt;a href="http://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211/H50"&gt;technique H50&lt;/a&gt; of WCAG 2.0. I tested this with &lt;a href="http://www.powermapper.com/products/sortsite/"&gt;SortSite&lt;/a&gt; and our breadcrumbs now pass the accessibility tests.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt; &amp;lt;map title=&amp;quot;Breadcrumbs&amp;quot;&amp;gt; &amp;lt;a href=&amp;quot;/&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt; &amp;amp;gt; &amp;lt;a href=&amp;quot;/foo&amp;quot;&amp;gt;Foo&amp;lt;/a&amp;gt; &amp;amp;gt; &amp;lt;a href=&amp;quot;/bar&amp;quot;&amp;gt;Bar&amp;lt;/a&amp;gt; ... &amp;lt;/map&amp;gt; &lt;/pre&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In this example, the &lt;code&gt;&amp;lt;map&amp;gt;&lt;/code&gt; does not affect the rendering of the breadcrumbs.&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2010-09-07T01:06:30Z</dc:date> </entry> <entry> <title>How to debug Liferay email</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=146352" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=146352</id> <updated>2010-08-20T09:19:59Z</updated> <published>2010-08-20T09:17:52Z</published> <summary type="html">&lt;p&gt;To turn on logging of Liferay mail and JavaMail, add the following to your Log4j configuration in &lt;code&gt;webapps/ROOT/WEB-INF/class/&lt;/code&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;code&gt;META-INF/portal-log4j-ext.xml&lt;/code&gt; after the last &lt;code&gt;&amp;lt;appender&amp;gt;&lt;/code&gt; entry:&lt;/p&gt; &lt;pre&gt; &amp;lt;logger name=&amp;quot;com.liferay.util.mail&amp;quot;&amp;gt; &amp;lt;level value=&amp;quot;DEBUG&amp;quot;/&amp;gt; &amp;lt;/logger&amp;gt; &lt;/pre&gt; &lt;p&gt;For setting up SMTP using gmail, add the following to &lt;code&gt;webapps/ROOT/WEB-INF/classes/&lt;/code&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;code&gt;portal-ext.properties&lt;/code&gt;:&lt;/p&gt; &lt;pre&gt; mail.session.mail.smtp.&lt;wbr&gt;&lt;/wbr&gt;socketFactory.class=javax.net.&lt;wbr&gt;&lt;/wbr&gt;ssl.SSLSocketFactory mail.session.mail.smtp.host=sm&lt;wbr&gt;&lt;/wbr&gt;tp.gmail.com mail.session.mail.smtp.port=&lt;wbr&gt;&lt;/wbr&gt;465 mail.session.mail.smtp.auth=&lt;wbr&gt;&lt;/wbr&gt;true mail.session.mail.smtp.user=&amp;lt;&lt;wbr&gt;&lt;/wbr&gt;your gmail email address&amp;gt; mail.session.mail.smtp.&lt;wbr&gt;&lt;/wbr&gt;password=&amp;lt;your password&amp;gt;&lt;/pre&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2010-08-20T09:17:52Z</dc:date> </entry> <entry> <title>Using common unit test classes between Maven modules</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=137145" /> <author> <name>Tim Carpenter</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=137145</id> <updated>2010-07-28T03:21:31Z</updated> <published>2010-07-28T03:14:46Z</published> <summary type="html">&lt;p&gt;Here's one that I'd not had to do before.&lt;/p&gt;&lt;p&gt;Suppose that I have module A that has an abstract TestCase class in src/test/java and in module B (that depends on module A) I want create some test cases that extend from the abstract TestCase in module A.&lt;/p&gt;&lt;p&gt;The TestCase class does not appear in the JAR for module A obviously so the regular dependency does not work. And moving the TestCase into src/main/java is not right as I don't want any testing framework JARs in my final build.&lt;/p&gt;&lt;p&gt;So....&lt;/p&gt;&lt;p&gt;In the pom for module A&lt;/p&gt;&lt;p&gt;&lt;pre&gt; &amp;lt;plugin&amp;gt; &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;maven-jar-plugin&amp;lt;/artifactId&amp;gt; &amp;lt;executions&amp;gt; &amp;lt;execution&amp;gt; &amp;lt;goals&amp;gt; &amp;lt;goal&amp;gt;test-jar&amp;lt;/goal&amp;gt; &amp;lt;/goals&amp;gt; &amp;lt;/execution&amp;gt; &amp;lt;/executions&amp;gt; &amp;lt;/plugin&amp;gt; &lt;br type="_moz" /&gt;&lt;/pre&gt;&lt;p&gt;Now when installing module A two JARs are install, A-version.jar and A-version-tests.jar&lt;/p&gt;&lt;p&gt;Now in module B I can add a dependency on the tests from module A&lt;/p&gt;&lt;pre&gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;my.group.id&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;A&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;v&amp;lt;/version&amp;gt; &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt; &amp;lt;classifier&amp;gt;tests&amp;lt;/classifier&amp;gt; &amp;lt;/dependency&amp;gt; &lt;br type="_moz" /&gt;&lt;/pre&gt;&lt;p&gt;And that's it. In my src/test/java for module B I can create unit tests that extend from the TestCase class in module A.&lt;/p&gt;&lt;/p&gt;</summary> <dc:creator>Tim Carpenter</dc:creator> <dc:date>2010-07-28T03:14:46Z</dc:date> </entry> <entry> <title>Spring 3 - New MVC Features</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=111025" /> <author> <name>Tim Carpenter</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=111025</id> <updated>2010-06-17T17:22:16Z</updated> <published>2010-06-17T17:10:27Z</published> <summary type="html">&lt;p&gt;Spring 3 has been out for a little while now but I only recently sat down and looked through the new features.&lt;/p&gt;&lt;p&gt;One that stands out is the @PathVariable annotation.&lt;/p&gt;&lt;p&gt;Using the annotation driven controllers of Spring 2.5 you can map controllers like this&lt;/p&gt;&lt;pre&gt; @RequestMapping(&amp;quot;/bank/myaccounts&amp;quot;)&lt;br /&gt;public class AccountController {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @RequestMapping(&amp;quot;/details&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ModelAndView showAccountDetails(@RequestParam(&amp;quot;accName&amp;quot;) String accountName) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;So the url http://server/application/bank/myaccounts/details?accName=AccountName will be handled by the showAccountDetails method with AccountName as the parameter&lt;/p&gt;&lt;p&gt;With Spring 3.0 you can map a controller like this&lt;/p&gt;&lt;p&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;&lt;/p&gt;&lt;pre&gt; @RequestMapping(&amp;quot;/bank/myaccounts&amp;quot;)&lt;br /&gt;public class AccountController {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @RequestMapping(&amp;quot;/details/{accName}&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ModelAndView showAccountDetails(@PathVariable(&amp;quot;accName&amp;quot;) String accountName) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/pre&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;And I can access the url http://server/application/bank/myaccounts/details/AccountName with AccountName still being the parameter to the method.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Cool stuff.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;The @PathVariable can handle many data types including dates&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;pre&gt; @RequestMapping(&amp;quot;/somepath/{date}&amp;quot;) public ModelAndView someMethod(@PathVariable @DateTimeFormat(format = &amp;quot;yyyyMMdd&amp;quot;) java.util.Date date) { .... }&lt;/pre&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;so my URL of http://...../somepath/20100504 would give me a java.util.Date of the 4th of May 2010 as a parameter to my method.&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;&lt;a href="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/PathVariable.html"&gt;http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/PathVariable.html&lt;/a&gt;&lt;/p&gt;</summary> <dc:creator>Tim Carpenter</dc:creator> <dc:date>2010-06-17T17:10:27Z</dc:date> </entry> <entry> <title>Internet access on the move</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=95559" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=95559</id> <updated>2010-05-11T16:28:38Z</updated> <published>2010-05-11T02:04:20Z</published> <summary type="html">&lt;p&gt;Here is my speed test sitting a &lt;a href="http://www.southwestcoachlines.com.au/"&gt;SouthWest Coach Lines&lt;/a&gt; bus. Not bad!&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.speedtest.net/result/810758153.png" alt="[1.17 Mb/s Download, 0.49 Mb/s Upload, 81ms Ping]" /&gt;&lt;/p&gt;&lt;p&gt;They've just put a Telstra NextG wireless modem in a cupboard at the back of the bus. No external antenna or anything.&lt;/p&gt;&lt;p&gt;They also have a USB charging plug for every seat but it does nothing for my iPhone.&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2010-05-11T02:04:20Z</dc:date> </entry> <entry> <title>Liferay Training - Australia</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=77228" /> <author> <name>Penny Curtis</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=77228</id> <updated>2010-07-27T01:47:29Z</updated> <published>2010-04-23T00:36:46Z</published> <summary type="html">&lt;p&gt;After identifying a growing need in our region for Liferay training, Permeance Technologies secured the first official Australian Liferay Training Partnership in early 2010.&lt;/p&gt;&lt;p&gt;Our experienced training team delivered the first training sessions in April. &amp;nbsp;Tailored on-site training events have taken place in Adelaide and Canberra, with clients who have both Community and Enterprise Editions.&lt;/p&gt;&lt;p&gt;Liferay training is the fastest way to learn best practice in how to successfully deploy Liferay Portal. &amp;nbsp;We offer all standard Liferay Training Topics &lt;em&gt;(Portal Administrator, Developer and System Administrator)&lt;/em&gt;, or a combination approach. &amp;nbsp;We are more than happy to negotiate a best-fit, tailored event for your team.&lt;/p&gt;&lt;p&gt;To accommodate existing need and potential Liferay users and licensees, the Australian training dates are set on both the east and west coast for the 5-day&amp;nbsp;&lt;em&gt;Portal Administrator/Developer&lt;/em&gt; course:&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Sydney&lt;/strong&gt;: Oct 11-15&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.liferay.com/services/training/schedule"&gt;Enrol now&lt;/a&gt;. Early bird discounts do apply.&lt;/p&gt;&lt;p&gt;*If you would like more information about enrolling in an online &lt;i&gt;Portal Administrator&lt;/i&gt; course, contact our training team.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Penny Curtis&lt;/strong&gt; is the Training Delivery Manager.&lt;/p&gt;&lt;p&gt;If you would like to discover more about Liferay Training and how it can support the needs of your organisation, email: &lt;a href="javascript:location.href='mailto:'+String.fromCharCode(116,114,97,105,110,105,110,103,64,112,101,114,109,101,97,110,99,101,46,99,111,109,46,97,117)+'?'"&gt;training@permeance.com.au&lt;/a&gt; OR call +61 8 6262 5432.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</summary> <dc:creator>Penny Curtis</dc:creator> <dc:date>2010-04-23T00:36:46Z</dc:date> </entry> <entry> <title>Liferay and Education</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=65507" /> <author> <name>Shayne Tanner</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=65507</id> <updated>2010-03-30T00:31:05Z</updated> <published>2010-03-25T23:01:36Z</published> <summary type="html">&lt;h1&gt;Liferay and Education, a great fit.&lt;/h1&gt;&lt;p&gt;Many Education departments and institutions across Australia are leveraging the strengths of Liferay. There are many reasons for this, but one is the extensive out-of-the-box collaboration suite Liferay offers. Basically Liferay is a perfect fit for education, students and teachers who need to be able to collaborate. This education focus on Liferay is set to deliver great benefits to all users, and the openness of the solution ensures there will be opportunities to leverage development costs and experiences.&lt;/p&gt;&lt;p&gt;Whilst private enterprise wrestles with:&lt;em&gt;&lt;strong&gt; &lt;/strong&gt;Are collaboration tools counterproductive? &lt;/em&gt;The education sector are rolling up their sleeves and tucking in.&lt;/p&gt;&lt;p&gt;There is no question Liferay has bought enterprise open source software (OSS) into the fray, alongside the proprietary enterprise heavy weights. &lt;a href="http://www.permeance.com.au/web/guest/gartner-visionary"&gt;Gartner&lt;/a&gt; offers their independent view, calling it visionary. And with that Liferay has found a great home in Education, across the globe and especially here in Australia.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Shayne Tanner&lt;/strong&gt; is the General Manager of our Victorian office.&lt;/p&gt;&lt;p&gt;If you would like to discover more about Liferay and how it can help your organisation, email or call.&lt;/p&gt;&lt;p&gt;info@permeance.com.au OR (03) 9412 7628&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: right;"&gt;Ref: Liferay &amp;amp; Education&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</summary> <dc:creator>Shayne Tanner</dc:creator> <dc:date>2010-03-25T23:01:36Z</dc:date> </entry> <entry> <title>Java Decompiler</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=51682" /> <author> <name>Tim Carpenter</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=51682</id> <updated>2010-02-02T17:45:53Z</updated> <published>2010-02-02T17:42:59Z</published> <summary type="html">&lt;p&gt;I recently lost some Java source code but still had the class files as built by Eclipse. So the hunt was on for a decompiler to recover my source.&lt;/p&gt;&lt;p&gt;JAD&amp;nbsp;&lt;a name="JAD"&gt;http://www.varaneckas.com/jad&lt;/a&gt; probably works but not with class file version 50 as my classes were.&lt;/p&gt;&lt;p&gt;JD-GUI &lt;a name="JD-GUI"&gt;http://java.decompiler.free.fr&lt;/a&gt; however is fantastic. There is even a plugin for Eclipse to show contents of class files you don't have the source for.&lt;/p&gt;</summary> <dc:creator>Tim Carpenter</dc:creator> <dc:date>2010-02-02T17:42:59Z</dc:date> </entry> <entry> <title>Given up on Firefox on Fedora</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=47936" /> <author> <name>Tim Carpenter</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=47936</id> <updated>2010-01-26T23:33:30Z</updated> <published>2010-01-26T23:32:16Z</published> <summary type="html">&lt;p&gt;It just doesn't work. Chrome is a million times happier.&lt;/p&gt;&lt;p&gt;Most importantly Flash doesn't randomly die anymore so the IBM SlamTracker for the Australian Open will keep going all day now.&lt;/p&gt;</summary> <dc:creator>Tim Carpenter</dc:creator> <dc:date>2010-01-26T23:32:16Z</dc:date> </entry> <entry> <title>Budding iPhone Devs</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=39384" /> <author> <name>Scott Palmer</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=39384</id> <updated>2010-01-13T23:55:37Z</updated> <published>2010-01-13T23:54:17Z</published> <summary type="html">&lt;p&gt;Winter 2010 Stanford iPhone Application Development Course Now on iTunes U&amp;nbsp;&lt;a href="http://bit.ly/81T3I3"&gt;http://bit.ly/81T3I3&lt;/a&gt;&lt;/p&gt;</summary> <dc:creator>Scott Palmer</dc:creator> <dc:date>2010-01-13T23:54:17Z</dc:date> </entry> <entry> <title>How to check the version of Ubuntu</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=35101" /> <author> <name>Paul R Robinson</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=35101</id> <updated>2010-01-04T00:53:44Z</updated> <published>2010-01-04T00:53:37Z</published> <summary type="html">&lt;p&gt;&amp;nbsp;Nice and simple.&lt;/p&gt;&lt;p&gt;In a terminal window type:&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; line-height: normal; font-size: 12px; "&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: 50px; text-align: left; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt; lsb_release -a&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;</summary> <dc:creator>Paul R Robinson</dc:creator> <dc:date>2010-01-04T00:53:37Z</dc:date> </entry> <entry> <title>Upgrading from ext3 to ext4</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=34483" /> <author> <name>Tim Carpenter</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=34483</id> <updated>2009-12-17T08:06:38Z</updated> <published>2009-12-17T08:06:06Z</published> <summary type="html">&lt;p&gt;Taken from https://fedoraproject.org/wiki/Ext4_in_Fedora_11#How_do_I_migrate_from_Ext3_to_Ext4.3F&lt;/p&gt;&lt;p&gt;If you want to convert a partition to Ext4 post-installation, you can use the following manual process. Do backup your data for safety.&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;umount /dev/sdb2 (where sdb2 is the ext3 partition you are about to convert to ext4)&lt;/li&gt;&lt;li&gt;tune2fs -O extents,uninit_bg,dir_index /dev/sdb2 (converting into Ext4)&lt;/li&gt;&lt;li&gt;fsck -pf /dev/sdb2 (filesystem check for additional safety)&lt;/li&gt;&lt;li&gt;mount -t ext4 /dev/sdb2 /media (to verify conversion)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Seems to have worked....&lt;/p&gt;</summary> <dc:creator>Tim Carpenter</dc:creator> <dc:date>2009-12-17T08:06:06Z</dc:date> </entry> <entry> <title>Two CMIS projects at Apache?</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=34289" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=34289</id> <updated>2009-12-12T13:33:55Z</updated> <published>2009-12-12T13:25:10Z</published> <summary type="html">&lt;p&gt;A second CMIS project has been proposed as an incubator project at Apache:&lt;/p&gt; &lt;p style="margin-left: 40px;"&gt;&lt;a href="http://old.nabble.com/-PROPOSAL--OpenCMIS-incubator-for-Content-Mangement-Interoperability-Services-%28CMIS%29-td26713963.htm"&gt;[PROPOSAL] OpenCMIS incubator for Content Mangement Interoperability Services (CMIS)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This has raised a lot of interest within the existing &lt;a href="http://incubator.apache.org/chemistry/"&gt;Chemistry project&lt;/a&gt; (as shown in the subsequent discussion above) since they are also an incubator project for CMIS!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Chemistry:&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin-left: 40px;"&gt;&lt;em&gt;&amp;quot;Apache Chemistry is an effort to provide a Java (and possibly others, like JavaScript) implementation of the upcoming CMIS specification , consisting of a high-level API for developers wanting to manipulate documents, a low-level SPI close to the CMIS protocol for developers wanting to implement a client or a server, and default implementations for all of the above. Chemistry aims to cover both the AtomPub and SOAP bindings defined by the CMIS specifications.&amp;quot; &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;OpenCMIS:&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin-left: 40px;"&gt;&lt;em&gt;&amp;quot;OpenCMIS provides a Java implementation of the OASIS CMIS specification. This includes a library to connect as a consumer to a CMIS repository, and a library to provide the CMIS protocol handlers on top of an existing repository. All the protocol bindings defined by the CMIS specification will be supported...&lt;br /&gt; &lt;br /&gt; As the APIs are pretty different right now, contributing the OpenCMIS code to Chemistry will be very hard to do - but on a mid-term perspective, we will review our options to merge OpenCMIS with Chemistry...&amp;quot;&lt;/em&gt;&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2009-12-12T13:25:10Z</dc:date> </entry> <entry> <title>How to install the Java Plugin on Firefox with Fedora 12 x86_64</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=34265" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=34265</id> <updated>2009-12-11T02:40:02Z</updated> <published>2009-12-11T02:28:09Z</published> <summary type="html">&lt;p&gt;After much frustration, I finally stumbled on the correct answer about installing Java Plugin on x86_64 on Linux: &lt;a href="http://plugindoc.mozdev.org/linux-amd64.html#java-sun"&gt;plugindoc.mozdev.org/linux-amd64.html#java-sun&lt;/a&gt;. This shows that the correct library to link is called &lt;strong&gt;libnpjp2.so&lt;/strong&gt;. I had tried &lt;em&gt;libjavaplugin_jni.so&lt;/em&gt; which seemed to be the closest match to &lt;em&gt;libjavaplugin_oji.so&lt;/em&gt; which everyone else spoke about. So, in short:&lt;/p&gt; &lt;pre&gt; ln -s /usr/java/jdk1.6.0_16/jre/lib/amd64/libnpjp2.so ~/.mozilla/plugins/libnpjp2.so &lt;/pre&gt; &lt;p&gt;Entering &lt;strong&gt;about:plugins&lt;/strong&gt; in the address bar shows it is registered:&lt;/p&gt; &lt;p&gt;&lt;img width="715" height="360" border="1" src="http://www.permeance.com.au/image/image_gallery?uuid=fe01ee6c-df0b-4c8e-b736-00f0967d05d5&amp;amp;groupId=10553&amp;amp;t=1260499118300" alt="About the java plugin" /&gt;&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2009-12-11T02:28:09Z</dc:date> </entry> <entry> <title>Open source isn't perfect but it's pretty good</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=33838" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=33838</id> <updated>2009-12-08T02:19:23Z</updated> <published>2009-12-07T11:22:27Z</published> <summary type="html">&lt;p&gt;I've recently been working with Eclipse BPEL and Apache ODE and fairly quickly found bugs with both. These bugs were easy enough to fix if you have the inclinition to debug them. In all cases,&amp;nbsp;I was impressed that after contributing the patch to the respective bug tracking tools, it wasn't long before they were tested, reviewed and committed!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Eclipse BPEL&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=296532"&gt;Bug&amp;nbsp;296532&lt;/a&gt; - NPE when process folder contains files without a file extension = &lt;strong&gt;7 days&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=296538"&gt; Bug&amp;nbsp;296538&lt;/a&gt; - Publish to the server does not preserve sub-directories = &lt;span style="font-weight: bold;"&gt;7 days&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Apache ODE&lt;br /&gt; &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="https://issues.apache.org/jira/browse/ODE-725"&gt;ODE-725&lt;/a&gt; - Patch to add support for postgres to dao-jpa-db = &lt;strong&gt;&amp;lt;1 day &lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://issues.apache.org/jira/browse/ODE-731"&gt;ODE-731&lt;/a&gt; - ODE console doesn't work in IE6 = &lt;strong&gt;&amp;lt;1 day&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://issues.apache.org/jira/browse/ODE-732"&gt;ODE-732&lt;/a&gt; - Patch for java.lang.ArrayIndexOutOfBoundsException = &lt;strong&gt;&amp;lt;1 day&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So if you find a bug in an open source product, please fix it and commit a patch!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2009-12-07T11:22:27Z</dc:date> </entry> <entry> <title>How to secure Apache ODE using Liferay users and groups</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=33558" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=33558</id> <updated>2009-12-04T08:07:30Z</updated> <published>2009-12-04T07:44:09Z</published> <summary type="html">&lt;p&gt;Rather than using a separate database (or file) of users and roles, we decided to re-use the security features of Liferay Portal. This follows on from &lt;a href="http://www.permeance.com.au/web/terry.mueller/home/-/blogs/how-to-secure-apache-ode"&gt;How to secure Apache ODE&lt;/a&gt; which you should read first.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Note: The following steps were performed with Apache ODE 2.1 snapshot (trunk), Apache Tomcat 6.0.18, Liferay Portal CE 5.2.3 and PostgreSQL 8.4. They should work with some modifications for other configurations.&lt;/em&gt;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Firstly, we need two database views that comply with&amp;nbsp;Tomcat's &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html#DataSourceRealm"&gt;DataSourceRealm&lt;/a&gt;:&lt;br /&gt; &lt;pre&gt; CREATE USER tomcat PASSWORD 'tomcat'; CREATE SCHEMA tomcat AUTHORIZATION tomcat; GRANT USAGE ON SCHEMA lportal TO tomcat; GRANT REFERENCES ON TABLE lportal.user_, lportal.users_usergroups, lportal.usergroup TO tomcat; GRANT SELECT ON TABLE lportal.user_, lportal.users_usergroups, lportal.usergroup TO tomcat; CREATE VIEW tomcat.users AS SELECT screenname as user_name, password_ as user_pass FROM lportal.user_; CREATE VIEW tomcat.user_roles AS SELECT u.screenname AS user_name, ug.name AS role_name FROM lportal.user_ u, lportal.users_usergroups uug, lportal.usergroup ug WHERE u.userid = uug.userid AND uug.usergroupid = ug.usergroupid; ALTER TABLE tomcat.users OWNER TO tomcat; ALTER TABLE tomcat.user_roles OWNER TO tomcat; &lt;/pre&gt; In this example for PostgreSQL, the Liferay tables are stored in the &lt;code&gt;lportal&lt;/code&gt; schema and the new tomcat views are created in the &lt;code&gt;tomcat&lt;/code&gt; schema. A user called &lt;code&gt;tomcat&lt;/code&gt; is created to own these views.&lt;/li&gt; &lt;li&gt;Next, we add the &lt;code&gt;DataSourceRealm&lt;/code&gt; to &lt;code&gt;$TOMCAT/conf/server.xml&lt;/code&gt;, inside the &lt;code&gt;&amp;lt;GlobalNamingResources&amp;gt;&lt;/code&gt; area:&lt;br /&gt; &lt;pre&gt; &amp;lt;Resource &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name=&amp;quot;jdbc/tomcat&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth=&amp;quot;Container&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type=&amp;quot;javax.sql.DataSource&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxActive=&amp;quot;10&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxIdle=&amp;quot;3&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxWait=&amp;quot;10000&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; username=&amp;quot;tomcat&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; password=&amp;quot;tomcat&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; driverClassName=&amp;quot;org.postgresql.Driver&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url=&amp;quot;jdbc:postgresql://localhost/ncp&amp;quot; /&amp;gt; &lt;/pre&gt;&lt;/li&gt; &lt;li&gt;Finally, we declare the &lt;code&gt;Realm&lt;/code&gt; inside the &lt;code&gt;&amp;lt;Context&amp;gt;&lt;/code&gt;, providing the names of the tables and columns:&lt;/li&gt; &lt;pre&gt; &amp;lt;Realm &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; className=&amp;quot;org.apache.catalina.realm.DataSourceRealm&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug=&amp;quot;99&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSourceName=&amp;quot;jdbc/tomcat&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roleNameCol=&amp;quot;role_name&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userCredCol=&amp;quot;user_pass&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userNameCol=&amp;quot;user_name&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userRoleTable=&amp;quot;tomcat.user_roles&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userTable=&amp;quot;tomcat.users&amp;quot; /&amp;gt; &lt;/pre&gt; &lt;li&gt;In Liferay Portal, create a &lt;strong&gt;User Group&lt;/strong&gt; called &amp;quot;&lt;code&gt;ode-admin&lt;/code&gt;&amp;quot; and assign your users to this group. &lt;p&gt;&lt;img width="740" height="300" border="1" src="http://www.permeance.com.au/image/image_gallery?uuid=50057da4-41d5-4140-b437-0dba7e6ff09c&amp;amp;groupId=10553&amp;amp;t=1259913054097" alt="" /&gt;&lt;/p&gt;&lt;/li&gt; &lt;li&gt;Next, restart Tomcat.&lt;/li&gt; &lt;li&gt;Open the ODE console using &lt;a href="http://localhost:8080/ode/"&gt;http://localhost:8080/ode/&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;When prompted, enter the username and password of a Liferay user in the &lt;code&gt;ode-admin&lt;/code&gt; user group.&lt;/li&gt; &lt;/ol&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2009-12-04T07:44:09Z</dc:date> </entry> <entry> <title>How to secure Apache ODE</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=33549" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=33549</id> <updated>2009-12-04T05:15:20Z</updated> <published>2009-12-04T04:57:58Z</published> <summary type="html">&lt;p&gt;Apache ODE does not have any security when installed out-of-the-box. It is simple to use Tomcat security to protect the ODE admin console.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Add a user and role to &lt;code&gt;$TOMCAT_HOME/conf/tomcat-users.xml&lt;/code&gt;:&lt;br /&gt; &lt;br /&gt; &lt;pre&gt; &amp;lt;role rolename=&amp;quot;ode-admin&amp;quot;/&amp;gt; &amp;lt;user username=&amp;quot;admin&amp;quot; password=&amp;quot;xxxxxxxx&amp;quot; roles=&amp;quot;ode-admin&amp;quot;/&amp;gt; &lt;/pre&gt;&lt;/li&gt; &lt;li&gt;Declare the security constraints in &lt;code&gt;ode/WEB-INF/web.xml&lt;/code&gt;:&lt;br /&gt; &lt;br /&gt; &lt;pre&gt; &amp;lt;web-app&amp;gt; ... &amp;lt;security-role&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;ode-admin&amp;lt;/role-name&amp;gt; &amp;lt;/security-role&amp;gt; &amp;lt;security-constraint&amp;gt; &amp;lt;display-name&amp;gt;Security constraint for the ODE admin console&amp;lt;/display-name&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-resource-collection&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;*.html&amp;lt;/url-pattern&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/processes/InstanceManagement&amp;lt;/url-pattern&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/processes/ProcessManagement&amp;lt;/url-pattern&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/processes/DeploymentService&amp;lt;/url-pattern&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/deployment/*&amp;lt;/url-pattern&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;http-method&amp;gt;GET&amp;lt;/http-method&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;http-method&amp;gt;POST&amp;lt;/http-method&amp;gt; &amp;lt;/web-resource-collection&amp;gt; &amp;lt;auth-constraint&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;ode-admin&amp;lt;/role-name&amp;gt; &amp;lt;/auth-constraint&amp;gt; &amp;lt;user-data-constraint&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;transport-guarantee&amp;gt;NONE&amp;lt;/transport-guarantee&amp;gt; &amp;lt;/user-data-constraint&amp;gt; &amp;lt;/security-constraint&amp;gt; &amp;lt;login-config&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;auth-method&amp;gt;BASIC&amp;lt;/auth-method&amp;gt; &amp;lt;/login-config&amp;gt; &amp;lt;/web-app&amp;gt; &lt;/pre&gt;&lt;/li&gt; &lt;li&gt;Restart Tomcat.&lt;/li&gt; &lt;li&gt;Now, when interacting with the ODE console at &lt;a href="http://localhost:8080/ode/"&gt;http://localhost:8080/ode/&lt;/a&gt;, it will prompt for a username and password.&lt;/li&gt; &lt;li&gt;If you tail the access log, you can confirm that the SOAP admin calls are also protected. The processes themselves are not protected because we'll use WS-Security. In the following example, the remote user is &amp;quot;admin&amp;quot; if protected or &amp;quot;-&amp;quot; if not protected (see third column):&lt;br /&gt; &lt;br /&gt; &lt;pre&gt; [terry@localhost logs]$ tail -f localhost_access_log.2009-12-04.txt 127.0.0.1 - admin [04/Dec/2009:13:00:22 +0800] &amp;quot;POST /ode/processes/InstanceManagement HTTP/1.1&amp;quot; 200 731 127.0.0.1 - admin [04/Dec/2009:13:00:22 +0800] &amp;quot;POST /ode/processes/InstanceManagement HTTP/1.1&amp;quot; 200 731 127.0.0.1 - admin [04/Dec/2009:13:00:37 +0800] &amp;quot;POST /ode/processes/InstanceManagement HTTP/1.1&amp;quot; 200 731 127.0.0.1 - admin [04/Dec/2009:13:00:37 +0800] &amp;quot;POST /ode/processes/InstanceManagement HTTP/1.1&amp;quot; 200 731 127.0.0.1 - admin [04/Dec/2009:13:00:52 +0800] &amp;quot;POST /ode/processes/InstanceManagement HTTP/1.1&amp;quot; 200 731 ... 127.0.0.1 - - [04/Dec/2009:13:13:23 +0800] &amp;quot;POST /ode/processes/HelloWorld HTTP/1.1&amp;quot; 200 255 - ... &lt;/pre&gt;&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2009-12-04T04:57:58Z</dc:date> </entry> <entry> <title>Upgrading to Fedora 12</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=32279" /> <author> <name>Tim Carpenter</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=32279</id> <updated>2009-11-23T01:22:38Z</updated> <published>2009-11-23T01:13:55Z</published> <summary type="html">&lt;p&gt;I upgraded my workstation to Fedora 12 on Friday. Bit of an effort, following the instructions at &lt;a name="Fedora_Upgrade_with_Yum"&gt;http://fedoraproject.org/wiki/YumUpgradeFaq&lt;/a&gt; the command&lt;/p&gt;&lt;pre&gt; yum groupupdate Base &lt;/pre&gt;&lt;p&gt;&lt;br /&gt;Failed with an error about not being able to find the Base group. So I was stuck half way between 12 and 11. Only solution was to change my yum repos to directly point at 12 and run yum update. There were a few conflicts that meant uninstalling the vnc server before libc could be installed but once that was sorted, everything downloaded and installed no problem.&lt;/p&gt;&lt;p&gt;I noticed that trying to run the install from using preupgrade might not work as on reboot it tries to access the internet to download some packages, if you're running cntlm or similar then that might not start before the installer kicks in!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</summary> <dc:creator>Tim Carpenter</dc:creator> <dc:date>2009-11-23T01:13:55Z</dc:date> </entry> <entry> <title>How to run the unit tests of Liferay Portal 5.2.3 CE</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=31966" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=31966</id> <updated>2009-11-21T06:38:56Z</updated> <published>2009-11-20T07:44:04Z</published> <summary type="html">&lt;p&gt;Running the unit tests for Liferay Portal with Linux is straight-forward once you know how.&lt;/p&gt; &lt;h2&gt;Set up the environment&lt;/h2&gt; &lt;ol&gt; &lt;li&gt;&lt;p&gt;Install Ant 1.7+&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;Install MySQL 5.1+&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;Install Java 6.0+&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;Set environment variables:&lt;/p&gt; &lt;pre&gt; export JAVA_OPTS=-Xmx512m -XX:MaxPermSize=256m export COMPUTERNAME=$HOSTNAME&lt;/pre&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt; &lt;/ol&gt; &lt;h2&gt;Create the directory structure&lt;/h2&gt; &lt;p&gt;The following commands:&lt;/p&gt; &lt;pre style="margin-left: 40px;"&gt; cd ~ mkdir liferay wget http://downloads.sourceforge.net/project/lportal/Liferay%20Portal/\ 5.2.3/liferay-portal-src-5.2.3.zip?use_mirror=transact unzip liferay-portal-src-5.2.3.zip mv liferay-portal-src-5.2.3 portal &lt;/pre&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;will create the directory structure:&lt;/p&gt; &lt;pre style="margin-left: 40px;"&gt; liferay/ portal/ &lt;/pre&gt; &lt;h2&gt;Set up the MySQL database for testing&lt;/h2&gt; &lt;ol&gt; &lt;li&gt;&lt;p&gt;Install/start MySQL 5.x (in my case, 5.1.39)&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;&lt;code&gt;mysql -u root&lt;/code&gt; and run:&lt;/p&gt; &lt;pre&gt; create database lportal character set utf8; grant all on lportal.* to ''@'localhost'; &lt;/pre&gt; &lt;i&gt;&lt;br /&gt; (so username/password not required)&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;Create a legacy ZIP (&lt;i&gt;not sure what this was intended for but it is needed)&lt;/i&gt;:&lt;/p&gt; &lt;pre&gt; cd ~/liferay/portal/sql mkdir legacy zip -r legacy.zip legacy cd .. echo &amp;quot;sql.legacy.zip=sql/legacy.zip&amp;quot; &amp;gt; test.$COMPUTERNAME.properties &lt;/pre&gt; &lt;i&gt;&lt;br /&gt; Note: test.&amp;lt;username&amp;gt;.properties gets overridden each run!&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;If using Linux, create &lt;code&gt;sql/test.$COMPUTERNAME.properties&lt;/code&gt; as follows:&lt;/p&gt; &lt;pre&gt; minimal.suffix= mysql.executable=/usr/bin/mysql mysql.arg.line=-u root -e &amp;quot;source create${minimal.suffix}/create${minimal.suffix}-mysql.sql&amp;quot; &lt;/pre&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;If not using subversion &lt;b&gt;and&lt;/b&gt; Windoze, edit &lt;code&gt;build-test.xml&lt;/code&gt; and comment out all &lt;code&gt;&amp;lt;exec&amp;gt;&lt;/code&gt; of &lt;code&gt;cmd.exe&lt;/code&gt; to stop it attempting to revert files using subversion.&lt;/p&gt;&lt;/li&gt; &lt;/ol&gt; &lt;h2&gt;Run the unit tests&lt;/h2&gt; &lt;ol&gt; &lt;li&gt;&lt;p&gt;&lt;code&gt;cd ~/liferay/portal&lt;/code&gt;&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;&lt;code&gt;ant test&lt;/code&gt;&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;Review output for errors, for example:&lt;br /&gt; &lt;i&gt;(there does not appear to be any simple way to create an HTML report)&lt;/i&gt;&lt;/p&gt; &lt;pre&gt; [terry@localhost portal]$ find . -name test-results -exec grep -r errors {} \; | cut -d&amp;quot; &amp;quot; -f2,3,5,6 errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.messaging.jmx.MessageBusManagerTest&amp;quot; tests=&amp;quot;1&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.util.ValidatorTest&amp;quot; tests=&amp;quot;1&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.messaging.jmx.DestinationManagerTest&amp;quot; tests=&amp;quot;1&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.util.RecurrenceMonthlyTest&amp;quot; tests=&amp;quot;26&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.messaging.IteratorDispatcherDestinationTest&amp;quot; tests=&amp;quot;1&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.messaging.ArrayDispatcherDestinationTest&amp;quot; tests=&amp;quot;1&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.util.RecurrenceDailyTest&amp;quot; tests=&amp;quot;26&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.util.RecurrenceWeeklyTest&amp;quot; tests=&amp;quot;26&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.util.RecurrenceYearlyTest&amp;quot; tests=&amp;quot;26&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.messaging.jmx.DestinationStatisticsManagerTest&amp;quot; tests=&amp;quot;1&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.util.UnicodePropertiesTest&amp;quot; tests=&amp;quot;2&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.kernel.util.StringUtilTest&amp;quot; tests=&amp;quot;3&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.util.VersionTest&amp;quot; tests=&amp;quot;5&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.service.ServiceTestSuite&amp;quot; tests=&amp;quot;24&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.util.MiscTestSuite&amp;quot; tests=&amp;quot;5&amp;quot; errors=&amp;quot;0&amp;quot; failures=&amp;quot;0&amp;quot; name=&amp;quot;com.liferay.portal.service.persistence.PersistenceTestSuite&amp;quot; tests=&amp;quot;880&amp;quot; &lt;/pre&gt;&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2009-11-20T07:44:04Z</dc:date> </entry> <entry> <title>How to run Enterprise Architect on 64-bit Fedora 12 Linux using Crossover</title> <link rel="alternate" href="http://www.permeance.com.au/c/blogs/find_entry?entryId=30842" /> <author> <name>Terry Mueller</name> </author> <id>http://www.permeance.com.au/c/blogs/find_entry?entryId=30842</id> <updated>2009-11-18T11:20:36Z</updated> <published>2009-11-18T07:36:27Z</published> <summary type="html">&lt;p&gt;The following steps will enable you to run Enterprise Architect (and other 32-bit Windows applications) inside 64-bit Fedora 12 Linux.&lt;/p&gt;&lt;p&gt;Firstly, we need to install 32-bit versions of many libraries:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;yum install libXi.i686&lt;/li&gt;&lt;li&gt;yum install libz.i686&lt;/li&gt;&lt;li&gt;yum install zlib.i686&lt;/li&gt;&lt;li&gt;yum install libgcc.i686&lt;/li&gt;&lt;li&gt;yum install cups-libs.i686&lt;/li&gt;&lt;li&gt;yum install alsa-lib.i686&lt;/li&gt;&lt;li&gt;yum install openssl.i686&lt;/li&gt;&lt;li&gt;yum install libgphoto2.i686&lt;/li&gt;&lt;li&gt;yum install hal-libs.i686&lt;/li&gt;&lt;li&gt;yum install qt-mt.i686&lt;/li&gt;&lt;li&gt;yum install qt3.i686&lt;/li&gt;&lt;li&gt;yum install sane-backends-libs.i686&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Next, we can install Crossover 8:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;rpm -ivh crossover-standard-demo-8.0.0-1.i386.rpm&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Finally, the &lt;a href="http://www.sparxsystems.com/support/faq/ea_on_linux.html"&gt;EA&amp;nbsp;Install Process via Crossover&lt;/a&gt; should now work as documented...&lt;/p&gt;&lt;p&gt;&lt;img width="400" height="250" alt="Screendump of EA on Fedora 12" src="http://www.permeance.com.au/image/image_gallery?uuid=8e174506-734c-4d9d-881e-2b97b00fe717&amp;amp;groupId=10553&amp;amp;t=1258543129903" /&gt;&lt;/p&gt;</summary> <dc:creator>Terry Mueller</dc:creator> <dc:date>2009-11-18T07:36:27Z</dc:date> </entry> </feed> 