<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Alan's RamblingsWork</title>
    <link>http://bleaklow.com:80/categories/work/</link>
    <description>My opinions may be incorrect, but they are my own</description>
    <language>en</language>
    <copyright>Alan Burlison</copyright>
    <pubDate>Fri, 29 Mar 2013 18:22:00 GMT</pubDate>
    <dc:creator>Alan Burlison</dc:creator>
    <dc:date>2013-03-29T18:22:00Z</dc:date>
    <dc:language>en</dc:language>
    <dc:rights>Alan Burlison</dc:rights>
    <image>
      <title>Alan's RamblingsWork</title>
      <url>http://bleaklow.com:80/categories/work/</url>
    </image>
    <item>
      <title>Stephen, I wonder if you recognise this?</title>
      <link>http://bleaklow.com:80/2010/05/22/stephen_i_wonder_if_you_recognise_this.html</link>
      <content:encoded>&lt;p&gt;
&lt;a href="images/2010/s8_beta_hat.jpeg" onclick="window.open('images/2010/s8_beta_hat.jpeg','popup','width=660,height=660,toolbar=no,directories=no,location=no,menubar=no,status=no'); return false" class="thumbnailLink"&gt;&lt;img src="images/2010/thumbnails/s8_beta_hat.jpeg" alt="" class="thumbnailImage"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I was reminiscing with Stephen about work yesterday, It's very faded after much use, but I wonder if he'll recognise the hat :-)
&lt;/p&gt;</content:encoded>
      <category domain="http://bleaklow.com:80/categories/tech/solaris/">Solaris</category>
      <category domain="http://bleaklow.com:80/categories/personal/friends/">Friends</category>
      <category domain="http://bleaklow.com:80/categories/work/">Work</category>
      <category domain="http://bleaklow.com:80/tags/friends/">friends</category>
      <category domain="http://bleaklow.com:80/tags/personal/">personal</category>
      <category domain="http://bleaklow.com:80/tags/solaris/">solaris</category>
      <category domain="http://bleaklow.com:80/tags/tech/">tech</category>
      <category domain="http://bleaklow.com:80/tags/work/">work</category>
      <pubDate>Sat, 22 May 2010 18:39:00 GMT</pubDate>
      <guid isPermaLink="false">tag:bleaklow.com,2010-05-22:default/1274553540000</guid>
      <dc:date>2010-05-22T18:39:00Z</dc:date>
    </item>
    <item>
      <title>Upgrading from Nevada to OpenSolaris the easy way</title>
      <link>http://bleaklow.com:80/2009/10/21/upgrading_from_nevada_to_opensolaris_the_easy_way.html</link>
      <content:encoded>&lt;p&gt;
The OpenSolaris installer is simple and quick to use but it has one significant drawback - it gives you no control of how your disk is laid out.  I needed to upgrade my Toshiba R500 laptop from Nevada to OpenSolaris and I had the disk set up with 3 VTOC slices - 2 ZFS pools, one for the root pool and one for a data pool - home dirs, installed software and so on.  The final slice is a raw swap device. A straightforward install would have overwritten the entire disk, so I wanted to find a way of installing without clobbering everything. &lt;a href="http://blogs.sun.com/edp/entry/moving_from_nevada_and_live"&gt;Ed Pilatowicz&lt;/a&gt; outlined some time back how you could do a hand-crafted OpenSolaris install to work around this, but I wanted to see if there was an easier way of achieving the same result with a more recent build of OpenSolaris.
&lt;/p&gt;
&lt;p&gt;
My first attempt was to use the OpenSolaris 2009.06 livecd to install OpenSolaris onto a 8Gb USB stick so I could boot off that and have a poke around.  That was fairly straightforward, but when I tried importing the existing root pool from the disk I hit a problem - the Nevada build I was running was onnv_124, but 2009.06 was based on 111b and the ZFS format has been rev'd since then so the pool wouldn't import.  I then tried to update my USB image to build 125, but the stick wasn't big enough for the 125 BE and the '&lt;a href="http://opensolaris.org/sc/src/pkg/gate/src/man/pkg.1.txt"&gt;pkg image-update&lt;/a&gt;' failed.  Drat.
&lt;/p&gt;
&lt;p&gt;
Third try was to pull a build 125 livecd image from the internal repo, boot off that and do a fresh install onto the USB stick.  As before that worked fine so I rebooted off the USB stick.  When I originally installed Nevada I had renamed the root pool from 'rpool' to 'solaris', so I typed '&lt;a href="http://docs.sun.com/app/docs/doc/819-2240/zpool-1m"&gt;zpool import solaris&lt;/a&gt;' and my existing boot pool on the drive appeared - looking good so far.  Next thing to try was '&lt;a href="http://dlc.sun.com/osol/docs/content/2008.11/snapupgrade/ggfxy.html"&gt;beadm list&lt;/a&gt;', and not only did my OpenSolaris BE show up, but the Nevada BEs on the drive also appeared.  Ok, so far so good.
&lt;/p&gt;
&lt;p&gt;
Now I needed to try to get an OpenSolaris BE onto the disk root pool.  Worst case I could just blow away the existing root pool on the drive and create an OpenSolaris BE in that, but I wanted to see if I could preserve the existing Nevada BEs if possible.  As Nevada and OpenSolaris are very similar and as I was using Nevada 124 and OpenSolaris 125 I figured there was a reasonable chance that if I could just get an OpenSolaris BE into the existing root pool I'd be able to get it into the grub config so I could boot it, even if that meant some hand-editing of menu.lst.
&lt;/p&gt;
&lt;p&gt;
The easiest way to get an OpenSolaris BE onto the disk was to use 'beadm create'.  Normally that creates the new BE on the same volume as the source BE, but there's a '-p' flag that allows you to specify an alternate pool to do the install into, which in my case was the existing 'solaris' pool on my disk - so, 'beadm create -p solaris on_125'.  That seemed to work OK, so with everything appropriately crossed I typed 'beadm activate on_125' and rebooted.  When Grub appeared, my new OpenSolaris BE was listed along with my existing Nevada ones, and both the OpenSolaris and Nevada BEs work just fine.  Huzzah!
&lt;/p&gt;
&lt;p&gt;
So, to summarise, here are the steps:
&lt;ul&gt;
&lt;li&gt;Make sure you are running a recent Nevada release&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dlc.sun.com/torrents/info/"&gt;Obtain&lt;/a&gt; an OpenSolaris LiveCD image that is close to or the same as your Nevada release&lt;/li&gt;
&lt;li&gt;Install OpenSolaris onto a spare disk - a 8Gb or larger USB memory stick or a USB disk will do fine&lt;/li&gt;
&lt;li&gt;Boot into the OpenSolaris image&lt;/li&gt;
&lt;li&gt;Import your existing root zpool - see below why this many not be as easy for you as it was for me&lt;/li&gt;
&lt;li&gt;Create a new OpenSolaris BE on the imported pool with 'beadm' using the '-p' flag to specify the imported pool&lt;/li&gt;
&lt;li&gt;Activate the new BE&lt;/li&gt;
&lt;li&gt;Reboot, and you should see your existing Nevada BEs along with the OpenSolaris one which will be booted by default&lt;/a&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Some caveats - this is clearly unsupported, don't be surprised if it doesn't work with a different mix of OpenSolaris and Nevada builds and don't blame me if it fries your machine.  Also, this isn't a true upgrade in that you end up with a new OpenSolaris install and you'll have to manually migrate the necessary config from your Nevada BE into the OpenSolaris one - but at least you'll still have your Nevada BE :-) The final thing is I definitely got lucky - When I originally installed I'd renamed my Nevada root pool from 'rpool' to 'solaris'.  That meant I could import it without it conflicting with the name of the root pool on the USB stick.  If I hadn't done so I'd have to have imported it using the pool identifier and a new name.  That would almost certainly have invalidated the contents of the menu.lst on that drive, so unless beadm fixed it up for me I'd have had to do some surgery to fix it up.  If you try this yourself and figure out what's needed, please drop me a comment to let me know what you did :-)
&lt;/p&gt;</content:encoded>
      <category domain="http://bleaklow.com:80/categories/tech/solaris/">Solaris</category>
      <category domain="http://bleaklow.com:80/categories/tech/">Tech</category>
      <category domain="http://bleaklow.com:80/categories/work/">Work</category>
      <category domain="http://bleaklow.com:80/tags/beadm/">beadm</category>
      <category domain="http://bleaklow.com:80/tags/pkg/">pkg</category>
      <category domain="http://bleaklow.com:80/tags/solaris/">solaris</category>
      <category domain="http://bleaklow.com:80/tags/solaris upgrade/">solaris upgrade</category>
      <category domain="http://bleaklow.com:80/tags/tech/">tech</category>
      <category domain="http://bleaklow.com:80/tags/work/">work</category>
      <pubDate>Wed, 21 Oct 2009 11:26:00 GMT</pubDate>
      <guid isPermaLink="false">tag:bleaklow.com,2009-10-21:default/1256124360000</guid>
      <dc:date>2009-10-21T11:26:00Z</dc:date>
    </item>
    <item>
      <title>The new opensolaris.org user management webapp moves into the light</title>
      <link>http://bleaklow.com:80/2007/09/28/the_new_opensolaris_org_user_management_webapp_moves_into_the_light.html</link>
      <content:encoded>&lt;p&gt;
As outlined &lt;a href="http://opensolaris.org/os/project/website/website_restructuring/"&gt;here&lt;/a&gt; I've been working away on providing the infrastructure needed to break up the current monolithic J2EE application used to host &lt;a href="http://opensolaris.org"&gt;opensolaris.org&lt;/a&gt;.  I've &lt;a href="http://blogs.sun.com/alanbur/entry/source_code_for_the_opensolaris"&gt;just released&lt;/a&gt; the source code of the existing portal, a large J2EE application.  As detailed in the restructuring document, the intention is to split the functionality of the current webapp into smaller, more manageable parts.  As I was releasing the portal code, I thought it was a good time to move my development repository outside as well.  Accordingly, you can browse the source at:
&lt;p&gt;
&lt;a href="http://src.opensolaris.org/source/xref/website/auth/trunk/"&gt;http://src.opensolaris.org/source/xref/website/auth/trunk/&lt;/a&gt;
&lt;p&gt;
and the source can be accessed via anonymous SVN at:
&lt;p&gt;
svn+ssh://anon@opensolaris.org/svn/website/auth
&lt;p&gt;
It is *very* rudimentary and is *far* from being finished.  What I've put on opensolaris.org is just a snapshot of my development workspace as of today.  However the database schema is available, along with a small set of dummy data which is used to populate the Derby database currently used by the prototype webapp.If you have any questions, I encourage you to &lt;a href="http://mail.opensolaris.org/mailman/listinfo/website-discuss"&gt;subscribe&lt;/a&gt; to the &lt;a href="http://mail.opensolaris.org/pipermail/website-discuss/"&gt;website-discuss&lt;/a&gt; mailing list and ask them there.
&lt;p&gt;</content:encoded>
      <category domain="http://bleaklow.com:80/categories/tech/solaris/">Solaris</category>
      <category domain="http://bleaklow.com:80/categories/work/">Work</category>
      <category domain="http://bleaklow.com:80/tags/opensolaris/">opensolaris</category>
      <category domain="http://bleaklow.com:80/tags/solaris/">solaris</category>
      <category domain="http://bleaklow.com:80/tags/tech/">tech</category>
      <category domain="http://bleaklow.com:80/tags/work/">work</category>
      <pubDate>Fri, 28 Sep 2007 15:48:25 GMT</pubDate>
      <guid isPermaLink="false">tag:bleaklow.com,2007-09-28:default/1190994505000</guid>
      <dc:date>2007-09-28T15:48:25Z</dc:date>
    </item>
    <item>
      <title>Source code for the opensolaris.org portal released</title>
      <link>http://bleaklow.com:80/2007/09/28/source_code_for_the_opensolaris_org_portal_released.html</link>
      <content:encoded>&lt;p&gt;
After a long haul, I've finally released the source code of the J2EE web application that runs the &lt;a href="http://opensolaris.org/"&gt;opensolaris.org&lt;/a&gt; website.  If you are interested, the source can be browsed online at:
&lt;/p&gt;&lt;p&gt;
&lt;a href="http://src.opensolaris.org/source/xref/website/portal/trunk/"&gt;http://src.opensolaris.org/source/xref/website/portal/trunk/&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
and the source can be accessed via anonymous SVN at:
&lt;/p&gt;&lt;p&gt;
svn+ssh://anon@opensolaris.org/svn/website/portal
&lt;/p&gt;&lt;p&gt;
If you have any questions, I encourage you to &lt;a href="http://mail.opensolaris.org/mailman/listinfo/website-discuss"&gt;subscribe&lt;/a&gt; to the &lt;a href="http://mail.opensolaris.org/pipermail/website-discuss/"&gt;website-discuss&lt;/a&gt; mailing list and ask them there.
&lt;/p&gt;&lt;p&gt;
Enjoy!
&lt;/p&gt;</content:encoded>
      <category domain="http://bleaklow.com:80/categories/tech/solaris/">Solaris</category>
      <category domain="http://bleaklow.com:80/categories/work/">Work</category>
      <category domain="http://bleaklow.com:80/tags/opensolaris/">opensolaris</category>
      <category domain="http://bleaklow.com:80/tags/solaris/">solaris</category>
      <category domain="http://bleaklow.com:80/tags/tech/">tech</category>
      <category domain="http://bleaklow.com:80/tags/work/">work</category>
      <pubDate>Fri, 28 Sep 2007 15:41:22 GMT</pubDate>
      <guid isPermaLink="false">tag:bleaklow.com,2007-09-28:default/1190994082000</guid>
      <dc:date>2007-09-28T15:41:22Z</dc:date>
    </item>
    <item>
      <title>Why I hate XML configuration files</title>
      <link>http://bleaklow.com:80/2007/04/05/why_i_hate_xml_configuration_files.html</link>
      <content:encoded>&lt;p&gt;I'm working on a reasonably large (1000+ source files) J2EE application that makes extensive (some might say utterly excessive) use of external components - it requires in the order of 50 JAR libraries to run, over and above the standard J2EE ones.&lt;/p&gt;&lt;p&gt;And of course many of those JAR files have their own unique XML files to configure them.&lt;/p&gt;&lt;p&gt;And of course many bits information related to the configuration of the application (URLs, database details etc) have to be repeated in more than one of those XML files.&lt;/p&gt;&lt;p&gt;And there's no global way of doing this.&lt;/p&gt;&lt;p&gt;So the people who originally wrote the application came up with a scheme - they'd store the configuration values in property files.&lt;/p&gt;&lt;p&gt;But that only helped for things that got the values dynamically, for example by using the J2SE &lt;a href="http://java.sun.com/javase/6/docs/api/java/util/Properties.html" target="_blank"&gt;Properties&lt;/a&gt; class. All those external components they'd used didn't know anything about the application's property files, they only knew about their own unique little XML files.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So the people writing the application came up with another scheme - they'd embed tokens in all those little XML files, then use the Ant &lt;a href="http://ant.apache.org/manual/CoreTasks/filter.html" target="_blank"&gt;Filter&lt;/a&gt; task to replace them at build-time with the values from the property files.&lt;/p&gt;&lt;p&gt;&amp;quot;&lt;a href="http://www.urbandictionary.com/define.php?term=jobs+a+good'un" target="_blank"&gt;Job's a good 'un!&lt;/a&gt;&amp;quot; they doubtless exclaimed, flushed with their extreme cleverness.&lt;/p&gt;&lt;p&gt;Then I came along and had to maintain the beast, when I found:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;There are in excess of 50 of these properties, which makes configuring the application more than a little tedious and more than a little error-prone.&lt;/li&gt;&lt;li&gt;The names of the tokens
processed by the Ant Filter task and the names of the properties used to set their values mostly bear very little relationship to each
other.&lt;/li&gt;&lt;li&gt;There is no consistently-applied property naming scheme. There are in fact several inconsistently-applied naming schemes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Some of the properties are just renamed versions of other properties. Sometimes they are inconsistently renamed versions of other properties. Sometimes they don't appear to be used at all.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It isn't clear when reading a property file which properties are only used at compile time by the Ant Filter task, and which properties are only used at run time. It's also unclear which ones are used at both compile &lt;i&gt;and&lt;/i&gt; run time.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The compile-time use of properties is a killer because it means the application can't realistically be reconfigured without recompiling it - because the use of the Ant Filter task means the compile-time property file values end up hard-coded in many different places. It's therefore pretty much impossible to produce a version of the application that can be deployed on more than one machine - for example for development or test purposes.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All this means that there's a whole series of bear traps set for anyone who innocently changes any of the properties files of the application, in the mistaken assumption that the application will actually take any notice of them.&lt;/p&gt;&lt;p&gt;I'm sure I'm not the only person to have been hit by this problem - how to configure multiple external components which all have their own XML configuration files - &lt;i&gt;without&lt;/i&gt; having to hand-edit each of the XML files each time every time something changes, and &lt;i&gt;without&lt;/i&gt; hard-coding the configuration at build time. However I'm damned if I know of a good way of doing it - although I can easily think up several not-very-good ways of doing it.&lt;/p&gt;&lt;p&gt;If &lt;b&gt;you&lt;/b&gt; know, please let &lt;b&gt;me&lt;/b&gt; know!&lt;br /&gt;&lt;/p&gt;</content:encoded>
      <category domain="http://bleaklow.com:80/categories/tech/web/">Web</category>
      <category domain="http://bleaklow.com:80/categories/tech/java/">Java</category>
      <category domain="http://bleaklow.com:80/categories/work/">Work</category>
      <category domain="http://bleaklow.com:80/tags/java/">java</category>
      <category domain="http://bleaklow.com:80/tags/tech/">tech</category>
      <category domain="http://bleaklow.com:80/tags/web/">web</category>
      <category domain="http://bleaklow.com:80/tags/work/">work</category>
      <category domain="http://bleaklow.com:80/tags/xml/">xml</category>
      <pubDate>Thu, 05 Apr 2007 14:38:44 GMT</pubDate>
      <guid isPermaLink="false">tag:bleaklow.com,2007-04-05:default/1175783924000</guid>
      <dc:date>2007-04-05T14:38:44Z</dc:date>
    </item>
  </channel>
</rss>

