<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Micks Distractions</title>
	<atom:link href="http://onut.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://onut.net/blog</link>
	<description>Life is too short to be not interested in everything.</description>
	<lastBuildDate>Mon, 05 Oct 2009 12:04:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.5.3" -->
	<copyright>2006-2007 </copyright>
	<managingEditor>website@boutade.net (Micks Distractions)</managingEditor>
	<webMaster>website@boutade.net (Micks Distractions)</webMaster>
	<category>posts</category>
	<image>
		<url>http://onut.net/wp/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Micks Distractions</title>
		<link>http://onut.net/blog</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Just a few......</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &amp; Culture" />
	<itunes:author>Micks Distractions</itunes:author>
	<itunes:owner>
		<itunes:name>Micks Distractions</itunes:name>
		<itunes:email>website@boutade.net</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://onut.net/wp/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Footy finals in Barraba</title>
		<link>http://onut.net/blog/archives/761#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/761#comments</comments>
		<pubDate>Sun, 04 Oct 2009 20:00:34 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Junk]]></category>

		<guid isPermaLink="false">http://onut.net/blog/archives/761</guid>
		<description><![CDATA[The main drag in Barraba on footy finals night. Not much action here. Nor here. Even though a don&#8217;t follow the footy, it would have been good to see the Eels win. No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>The main drag in Barraba on footy finals night. Not much action here.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/10/04/1007.jpg' rel='shadowbox[post-761];player=img;'><img src='http://blogpress.w18.net/photos/09/10/04/s_1007.jpg' border='0' width='281' height='210' style='margin:5px'></a></center></p>
<p>Nor here.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/10/04/1008.jpg' rel='shadowbox[post-761];player=img;'><img src='http://blogpress.w18.net/photos/09/10/04/s_1008.jpg' border='0' width='210' height='281' style='margin:5px'></a></center><br />
Even though a don&#8217;t follow the footy, it would have been good to see the Eels win.</p>
<p></p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/761" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/761/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Half Tonne Ute</title>
		<link>http://onut.net/blog/archives/707#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/707#comments</comments>
		<pubDate>Sun, 20 Sep 2009 10:17:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Junk]]></category>

		<guid isPermaLink="false">http://onut.net/blog/?p=707</guid>
		<description><![CDATA[I found a bunch of old photos of the Half Tonne Ute my brother and I used to troll around in, and scanned them in. These ones were taken after it endured a little bit of creative remodelling. This is what happens when a &#8220;light as a feather backend&#8221; meets a corner with the wrong [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I found a bunch of old photos of the Half Tonne Ute my brother and I used to troll around in, and scanned them in. These ones were taken after it endured a little bit of creative remodelling.<br />
<span id="more-707"></span><br />
This is what happens when a &#8220;light as a feather backend&#8221; meets a corner with the wrong camber in the wet.</p>
<p><img src="/media/HalfTonneUte/slide-25.thumb.png"><BR /><br />
Doesn&#8217;t look too bad from the front, does it!<BR /></p>
<p><img src="/media/HalfTonneUte/slide-26.thumb.png"><BR /><br />
The stretch Ute.<BR /></p>
<p><img src="/media/HalfTonneUte/slide-27.thumb.png"><BR /><br />
No need for a door anymore.<BR /></p>
<p><img src="/media/HalfTonneUte/slide-28.thumb.png"><BR /><br />
Always turns to the right a bit, though.<BR /></p>
<p><img src="/media/HalfTonneUte/slide-29.thumb.png"><BR /><br />
<img src="/media/HalfTonneUte/slide-30.thumb.png"><BR /><br />
Nice and cool on a hot day.<BR /></p>
<p><img src="/media/HalfTonneUte/slide-31.thumb.png"><BR /><br />
The dash was a little bit warped, though. It could have come out better.<BR /></p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/707" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/707/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris 8 brandz getppid hack</title>
		<link>http://onut.net/blog/archives/577#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/577#comments</comments>
		<pubDate>Sat, 12 Sep 2009 08:24:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Sun Microsystems]]></category>

		<guid isPermaLink="false">http://onut.net/blog/?p=577</guid>
		<description><![CDATA[Sun has always said that any application written for Solaris 6 will be forwards compatible with any other version. It&#8217;s a big claim, but as long as the application adheres to the API it&#8217;s possible. Occasionally you bump into things that don&#8217;t adhere to the API, (quite a lot of applications really). This is usually [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Sun has always said that any application written for Solaris 6 will be forwards compatible with any other version. It&#8217;s a big claim, but as long as the application adheres to the API it&#8217;s possible.<br />
Occasionally you bump into things that don&#8217;t adhere to the API, (quite a lot of applications really). This is usually caused by developers thinking that they should do things &#8220;this way&#8221;, because Sun does it oh so wrong all the time. Consequently, you end up with legacy applications that can&#8217;t run on Solaris 10.</p>
<p>Enter Solaris 8 brandz zones. Being able to run legacy applications in a Solaris 8 brandz generally gets you around most of the issues in the remaining apps that do stupid things. However, there&#8217;s a couple of quirks with a zone that can introduce odd behaviour in an application.</p>
<p>Progress for example&#8230;&#8230;. Read On.<br />
<span id="more-577"></span></p>
<h4>The issue</h4>
<p>An old legacy Progress database was sitting on an old legacy server which was so EOL that it would make even Bill cringe&#8230; or laugh&#8230; Running Solaris 6 was not an option, but running anything else, (even Solaris 9), would be adventurous to say the least. Can I say legacy again?</p>
<h4>The solution</h4>
<p>So first try a brandz Solaris 8. Configured, installed, and booted a brand spanking new zone. Copy the data over. Attempt a start of the Progress database.</p>
<pre LANGUAGE="text">
10:03:21 BROKER  0: Multi-user session begin. (333)
10:03:24 BROKER  0: Begin Physical Redo Phase at 13312 . (5326)
10:03:30 BROKER  0: Physical Redo Phase Completed at blk 13743 off 2457 upd 2636. (7161)
10:03:31 BROKER  0: Started for mfglive using TCP, pid 20533. (5644)
10:04:02 BROKER  0: SYSTEM ERROR: Unable to kill parent process, errno= 4. (1680)
10:04:02 BROKER  0: SYSTEM ERROR: The broker is exiting unexpectedly, beginning Abnormal Shutdown. (5292)
10:04:02 BROKER  0: drexit: Initiating Abnormal Shutdown
10:04:02 BROKER  0: ** Save file named core for analysis by Progress Software Corporation. (439)
10:04:02 BROKER  0: Begin ABNORMAL shutdown code 2 (2249)
10:04:04 BROKER   : Removed shared memory with segment_id: 41
10:04:04 BROKER   : Multi-user session end. (334)
</pre>
<p>Nada. Mmmmm. Seems to start up OK, but then crashes in a screaming heap a short while later.</p>
<p>Checking shared libraries seemed to be OK. Nothing missing or odd.</p>
<pre LANGUAGE="text">
root % ldd -r /mfgpro/dlc91c/bin/_mprosrv
        /usr/lib/secure/s8_preload.so.1
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libintl.so.1 =>  /usr/lib/libintl.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libm.so.1 =>     /usr/lib/libm.so.1
        libthread.so.1 =>        /usr/lib/libthread.so.1
        libc.so.1 =>     /usr/lib/libc.so.1
        libmp.so.2 =>    /usr/lib/libmp.so.2
        /usr/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1
</pre>
<p>So, I thought I&#8217;d truss, (the old friend), a few processes to see what was going on. Chucking the below in various scripts, and comparing the working server to the non-working server. (This produces VERY NOISY output, but it&#8217;s great for diagnosing what&#8217;s going on.)</p>
<pre LANGUAGE="text">
truss -feal -vall -xall -rall -wall -sall -mall -o /tmp/logfile exec_process
</pre>
<p>If you look at the appendices to this post, I&#8217;ve added the relevant, sections of the truss. You may notice an interesting thing. The working server roughly follows this process, (in the snippet):<br />
- Bind to 0.0.0.0 port 3500.<br />
- fstat64() filehandles.<br />
- Yadda, yadda, write output to STDOUT.<br />
- getpid() &#8211; find parent process, (24012).<br />
- kill -TERM 24012<br />
- wait()<br />
- Parent &#8211; ALRM signal<br />
- Parent &#8211; die.<br />
- Child &#8211; Context switch.<br />
- getpid() &#8211; find parent process, (1). OK!</p>
<p>Now this is a little odd. It would seem that some developer thought that it&#8217;d be a damn good idea to re-invent the old &#8220;I&#8217;m going to fork a child process in the background&#8221; API calls, and chuck in their own.</p>
<p>They are checking the parent process, killing it, and rechecking to see if it&#8217;s now 1, (which is sysvinit), then it progresses on.</p>
<p>Now, the non-working server.<br />
- Bind to 0.0.0.0 port 3500.<br />
- fstat64() filehandles.<br />
- Yadda, yadda, write output to STDOUT.<br />
- getpid() &#8211; find parent process, (21267).<br />
- kill -TERM 21267<br />
- wait()<br />
- Parent &#8211; ALRM signal <-IMPORTANT<br />
- Parent - no die.<br />
- getpid() - find parent process, (21267).<br />
- kill -TERM 21267<br />
- wait()<br />
- Parent - ALRM signal <-IMPORTANT<br />
- Parent - no die.<br />
Ad naseum.....</p>
<p>A quick process check:</p>
<pre LANGUAGE="text">
     UID   PID  PPID  C    STIME TTY      TIME CMD
    root  2260  1417  0   May 27 ?        0:09 /etc/init
    root  1417  1417  0   May 27 ?        0:00 zsched
    root  2960  1417  0   May 27 ?        0:00 /usr/lib/picl/picld
</pre>
<p>Hey! Of course you're not gonna be able to kill zsched! You see in a Solaris zone the 'root' process is called 'zsched', and it will never ever be 1 at all, and neither will init for that matter. Not only that you're not ever going to be able to kill the zsched process from within the zone as it's protected within the global zone memory space.</p>
<p>Well, it's too late to kick the developer up the bum. So time to hack.</p>
<h4>The hack</h4>
<p>Preloading shared libs has been around since I was a Mars Bar in my Dad's top pocket, (well almost). So it should be a simple case of replacing any getpid() API call with my own. Simple enough, done it before.</p>
<p>See the appendix for the getpidhack.c file that I used. This is a shared lib that replaces both getppid() and getpid(), (for good measure, but not really needed in my case), API calls. It will return the PID 1, when _getppid() returns the same PID as the environment variable PIDHACK.<br />
Note that I call _getppid() which allows me to fetch the REAL PID so I can return it when they don't match.</p>
<p>So, to use it. First build it:</p>
<pre LANGUAGE="bash">
gcc -fPIC -c getpidhack.c
gld getpidhack.o -L/usr/lib -lc -G -assert pure-text -o /usr/local/lib/libgetpidhack.so
</pre>
<p>Set an environment variable called PIDHACK to the currently running zsched process:</p>
<pre LANGUAGE="bash">
HACKPID=`ps -e | awk '/zsched/{print$1}'`
export HACKPID
</pre>
<p>Then set your LD_PRELOAD variable to point to the shared lib:</p>
<pre LANGUAGE="bash">
LD_PRELOAD="/usr/local/lib/libgetpidhack.so"
export LD_PRELOAD
</pre>
<p>After this the Progress database just started. Woot! The DB can now run on hardware that it would never in it's life be able to run on under a brandz zone. Another EOL server to chuck out the computer room window to see what happens.</p>
<p>BTW, if you are having issues with this, you can run a DTrace to see if you're calling the real getpid(), or the getpidhack version. Create the following script, and run it with one argument, (the PID of your zsched). Every time you hit the getppid() API call it'll register - this means that you are not replacing the API call and your shared lib preload isn't working.</p>
<pre LANGUAGE="c">
#!/usr/sbin/dtrace -s

syscall::getpid:return
/ppid == $1/
{
        printf("%d %d", ppid, pid);
}
</pre>
<hr />
<h4>Appendix 1 - getpidhack.c</h4>
<pre LANGUAGE="c">
#include &lt;sys/types.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdio.h&gt;

pid_t getppid(void)
{
        pid_t hackppid;
        pid_t realppid;

        // hackpid - the PID of the zsched process.
        hackppid = atol(getenv("HACKPID"));

        // realppid - the real PID of the parent process.
        realppid = _getppid();

        // If the realppid equals hackppid, then we want to reset it to 1.
        if (realppid == hackppid)
        {
                return((pid_t) 1);
        }

        // Else return whatever PID we were given.
        return(realppid);
}

pid_t getpid(void)
{
        pid_t hackpid;
        pid_t realpid;

        // hackpid - the PID of the zsched process.
        hackpid = atol(getenv("HACKPID"));

        // realpid - the real PID of the parent process.
        realpid = _getpid();

        // If the realpid equals hackpid, then we want to reset it to 1.
        if (realpid == hackpid)
        {
                return((pid_t) 1);
        }

        // Else return whatever PID we were given.
        return(realpid);
}
</pre>
<h4>Appendix 2 - The working server</h4>
<pre LANGUAGE="text">
24013/1:        setsockopt(76, 65535, 4, 0xEFFFF7FC, 4)         = 0
24013/1:        setsockopt(76, 65535, 8, 0xEFFFF7FC, 4)         = 0
24013/1:        bind(76, 0x0015DCA8, 16)                        = 0
24013/1:                name = 0.0.0.0/3500
24013/1:        listen(76, 10)                                  = 0
24013/1:        getpid()                                        = 24013 [24012]
24013/1:        lseek(3, 457164, 0)                             = 457164
24013/1:        read(3, 0xEFFFF66C, 81)                         = 81
24013/1:           % L S t a r t e d   f o r   % s   u s i n g   % s ,   p i d  %
24013/1:           l .   ( 5 6 4 4 )\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0
24013/1:          \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
24013/1:        time()                                          = 1252542477
24013/1:        write(9, 0xEFFFF154, 69)                        = 69
24013/1:           1 0 : 2 7 : 5 7   B R O K E R     0 :   S t a r t e d   f o r
24013/1:           m f g l i v e   u s i n g   T C P ,   p i d   2 4 0 1 3 .   ( 5
24013/1:           6 4 4 )\n
24013/1:        fstat64(0, 0xEFFFF058)                          = 0
24013/1:            d=0x01540000 i=17139 m=0020620 l=1  u=0     g=7     rdev=0x0 0600005
24013/1:                at = Sep 10 10:27:46 EST 2009  [ 1252542466 ]
24013/1:                mt = Sep 10 10:27:56 EST 2009  [ 1252542476 ]
24013/1:                ct = Sep 10 09:39:31 EST 2009  [ 1252539571 ]
24013/1:            bsz=8192  blks=0     fs=ufs
24013/1:        fstat64(1, 0xEFFFF058)                          = 0
24013/1:            d=0x01540000 i=17139 m=0020620 l=1  u=0     g=7     rdev=0x0 0600005
24013/1:                at = Sep 10 10:27:46 EST 2009  [ 1252542466 ]
24013/1:                mt = Sep 10 10:27:56 EST 2009  [ 1252542476 ]
24013/1:                ct = Sep 10 09:39:31 EST 2009  [ 1252539571 ]
24013/1:            bsz=8192  blks=0     fs=ufs
24013/1:        fstat64(2, 0xEFFFF058)                          = 0
24013/1:            d=0x01540000 i=17139 m=0020620 l=1  u=0     g=7     rdev=0x0 0600005
24013/1:                at = Sep 10 10:27:46 EST 2009  [ 1252542466 ]
24013/1:                mt = Sep 10 10:27:56 EST 2009  [ 1252542476 ]
24013/1:                ct = Sep 10 09:39:31 EST 2009  [ 1252539571 ]
24013/1:            bsz=8192  blks=0     fs=ufs
24013/1:        write(1, 0xEFFFF154, 69)                        = 69
24013/1:           1 0 : 2 7 : 5 7   B R O K E R     0 :   S t a r t e d   f o r
24013/1:           m f g l i v e   u s i n g   T C P ,   p i d   2 4 0 1 3 .   ( 5
24013/1:           6 4 4 )\n
24013/1:        pwrite64(7, 0xEFFFF908, 4, 0)                   = 4
24013/1:             0xEFFFF908: "\0\0\002"
24013/1:        close(7)                                        = 0
24013/1:        getpid()                                        = 24013 [24012]
24013/1:        getpid()                                        = 24013 [24012]
24013/1:        kill(24012, 0x0000000F)                         = 0
24012/2:        signotifywait()                                 = 15
24013/1:        lwp_alarm(1)                                    = 0
24012/2:            Incurred fault #11, FLTPAGE  %pc = 0xEF5CDC80  addr = 0xEF67 0F48
24012/2:            Incurred fault #11, FLTPAGE  %pc = 0xEF64A3C8  addr = 0xEF66 FA68
24012/2:        lwp_sigredirect(1, 0x0000000F)                  = 0
24012/1:            Received signal #15, SIGTERM, in wait() [caught]
24012/1:              siginfo: SIGTERM pid=24013 uid=0
24012/1:        wait()                                          Err#4 EINTR
24012/1:        sigprocmask(3, 0xEF667DF8, 0x00000000)          = 0
24012/1:                 set = 0 0 0 0
24012/1:            Incurred fault #11, FLTPAGE  %pc = 0x0004593C  addr = 0x0013 10F4
24012/1:            Incurred fault #11, FLTPAGE  %pc = 0x000459A8  addr = 0x0015 3AEC
24012/1:        _exit(0)
24013/1:            Received signal #14, SIGALRM, in pause() [caught]
24013/1:        pause()                                         Err#4 EINTR
24013/1:            Incurred fault #11, FLTPAGE  %pc = 0xEF5CDCE8  addr = 0xEF5C DCE8
24013/1:        sigprocmask(3, 0xEF667DF8, 0x00000000)          = 0
24013/1:                 set = 0 0 0 0
24013/1:        context(1, 0xEFFFF240)
24013/1:        getpid()                                        = 24013 [1]
24013/1:        close(0)                                        = 0
24013/1:        open(0xEFFFF920, 0)                             = 0
24013/1:             0xEFFFF920: "/qaddb/eblive/mfglive.lg"
24013/1:        close(1)                                        = 0
24013/1:        open(0xEFFFF920, 0)                             = 1
24013/1:             0xEFFFF920: "/qaddb/eblive/mfglive.lg"
24013/1:        close(2)                                        = 0
24013/1:        open(0xEFFFF920, 0)                             = 2
24013/1:             0xEFFFF920: "/qaddb/eblive/mfglive.lg"
24013/1:        lseek(3, 342954, 0)                             = 342954
24013/1:        read(3, 0xEFFFF570, 81)                         = 81
24013/1:           % L P R O G R E S S   V e r s i o n   % s   o n   % s .   ( 4 2
24013/1:           3 4 )\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0
24013/1:          \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
24013/1:        time()                                          = 1252542478
24013/1:        write(9, 0xEFFFF05C, 61)                        = 61
24013/1:           1 0 : 2 7 : 5 8   B R O K E R     0 :   P R O G R E S S   V e r
24013/1:           s i o n   9 . 1 C   o n   S O L A R I S .   ( 4 2 3 4 )\n
24013/1:        fstat64(0, 0xEFFFEF60)                          = 0
24013/1:            d=0x01540002 i=68332 m=0100644 l=1  u=0     g=1     sz=97192 88
24013/1:                at = Sep 10 03:01:28 EST 2009  [ 1252515688 ]
24013/1:                mt = Sep 10 10:27:58 EST 2009  [ 1252542478 ]
24013/1:                ct = Sep 10 10:27:58 EST 2009  [ 1252542478 ]
24013/1:            bsz=8192  blks=19008 fs=ufs
24013/1:        fstat64(1, 0xEFFFEF60)                          = 0
24013/1:            d=0x01540002 i=68332 m=0100644 l=1  u=0     g=1     sz=97192 88
24013/1:                at = Sep 10 03:01:28 EST 2009  [ 1252515688 ]
24013/1:                mt = Sep 10 10:27:58 EST 2009  [ 1252542478 ]
24013/1:                ct = Sep 10 10:27:58 EST 2009  [ 1252542478 ]
24013/1:            bsz=8192  blks=19008 fs=ufs
24013/1:        fstat64(2, 0xEFFFEF60)                          = 0
24013/1:            d=0x01540002 i=68332 m=0100644 l=1  u=0     g=1     sz=97192 88
24013/1:                at = Sep 10 03:01:28 EST 2009  [ 1252515688 ]
24013/1:                mt = Sep 10 10:27:58 EST 2009  [ 1252542478 ]
24013/1:                ct = Sep 10 10:27:58 EST 2009  [ 1252542478 ]
24013/1:            bsz=8192  blks=19008 fs=ufs
24013/1:        write(1, 0xEFFFF05C, 61)                        Err#9 EBADF
24013/1:           1 0 : 2 7 : 5 8   B R O K E R     0 :   P R O G R E S S   V e r
24013/1:           s i o n   9 . 1 C   o n   S O L A R I S .   ( 4 2 3 4 )\n
24013/1:        lseek(3, 346761, 0)                             = 346761
24013/1:        read(3, 0xEFFFF570, 81)                         = 81
24013/1:           % L S e r v e r   s t a r t e d   b y   % s   o n   % s .   ( 4
24013/1:           2 8 1 )\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0
24013/1:          \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
24013/1:        time()                                          = 1252542478
24013/1:        write(9, 0xEFFFF05C, 65)                        = 65
24013/1:           1 0 : 2 7 : 5 8   B R O K E R     0 :   S e r v e r   s t a r t
24013/1:           e d   b y   r o o t   o n   / d e v / p t s / 5 .   ( 4 2 8 1)
24013/1:          \n
</pre>
<h4>Appendix 3 - The non-working server</h4>
<pre LANGUAGE="text">
21268/1:        setsockopt(76, 65535, 4, 0xFFBFF9AC, 4, 1)      = 0
21268/1:        setsockopt(76, 65535, 8, 0xFFBFF9AC, 4, 1)      = 0
21268/1:        bind(76, 0x0015DCA8, 16, 3)                     = 0
21268/1:                AF_INET  name = 0.0.0.0  port = 3500
21268/1:        listen(76, 10, 1)                               = 0
21268/1:        getpid()                                        = 21268 [21267]
21268/1:        lseek(3, 457164, 0)                             = 457164
21268/1:        read(3, 0xFFBFF81C, 81)                         = 81
21268/1:           % L S t a r t e d   f o r   % s   u s i n g   % s ,   p i d   %
21268/1:           l .   ( 5 6 4 4 )\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
21268/1:          \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
21268/1:        time()                                          = 1252542489
21268/1:        write(9, 0xFFBFF304, 69)                        = 69
21268/1:           1 0 : 2 8 : 0 9   B R O K E R     0 :   S t a r t e d   f o r
21268/1:           m f g l i v e   u s i n g   T C P ,   p i d   2 1 2 6 8 .   ( 5
21268/1:           6 4 4 )\n
21268/1:        fstat64(0, 0xFFBFF208)                          = 0
21268/1:            d=0x05980009 i=4426329 m=0020620 l=1  u=0     g=7     rdev=0x00600011
21268/1:                at = Sep 10 10:27:57 EST 2009  [ 1252542477 ]
21268/1:                mt = Sep 10 10:28:09 EST 2009  [ 1252542489 ]
21268/1:                ct = Sep 10 09:44:02 EST 2009  [ 1252539842 ]
21268/1:            bsz=8192  blks=0     fs=lofs
21268/1:        fstat64(1, 0xFFBFF208)                          = 0
21268/1:            d=0x05980009 i=4426329 m=0020620 l=1  u=0     g=7     rdev=0x00600011
21268/1:                at = Sep 10 10:27:57 EST 2009  [ 1252542477 ]
21268/1:                mt = Sep 10 10:28:09 EST 2009  [ 1252542489 ]
21268/1:                ct = Sep 10 09:44:02 EST 2009  [ 1252539842 ]
21268/1:            bsz=8192  blks=0     fs=lofs
21268/1:        fstat64(2, 0xFFBFF208)                          = 0
21268/1:            d=0x05980009 i=4426329 m=0020620 l=1  u=0     g=7     rdev=0x00600011
21268/1:                at = Sep 10 10:27:57 EST 2009  [ 1252542477 ]
21268/1:                mt = Sep 10 10:28:09 EST 2009  [ 1252542489 ]
21268/1:                ct = Sep 10 09:44:02 EST 2009  [ 1252539842 ]
21268/1:            bsz=8192  blks=0     fs=lofs
21268/1:        write(1, 0xFFBFF304, 69)                        = 69
21268/1:           1 0 : 2 8 : 0 9   B R O K E R     0 :   S t a r t e d   f o r
21268/1:           m f g l i v e   u s i n g   T C P ,   p i d   2 1 2 6 8 .   ( 5
21268/1:           6 4 4 )\n
21268/1:        pwrite64(7, 0xFFBFFAB8, 4, 0)                   = 4
21268/1:             0xFFBFFAB8: "\0\0\002"
21268/1:        close(7)                                        = 0
21268/1:        getpid()                                        = 21268 [21267]
21268/1:        kill(21267, 0x0000000F)                         = 0
21267/1:            Received signal #15, SIGTERM, in wait() [caught]
21267/1:              siginfo: SIG#0
21268/1:            Incurred fault #11, FLTPAGE  %pc = 0x000C3048  addr = 0x58900137234
21267/1:        wait()                                          Err#4 EINTR
21268/1:        alarm(1)                                        = 0
21267/1:        lwp_sigtimedwait(0xFFBFF570, 0xFFBFF498, 0x00000010) = 0
21267/1:                sigmask = 0 0 0 0
21267/1:              siginfo: SIG#0
21267/1:        lwp_sigtimedwait(0xFFBFF488, 0xFFBFF570, 0x00000010) = 0
21267/1:                sigmask = 0 0 0 0
21267/1:              siginfo: SIG#0
21267/1:        lwp_sigtimedwait(0xFFBFF484, 0xFFBFF2B8, 0x00000010) = 0
21267/1:                sigmask = 0x00004000 0 0 0
21267/1:              siginfo: SIG#16384
21267/1:        lwp_sigtimedwait(0xFFBFF2A8, 0xFFBFF330, 0x00000010) = 0
21267/1:                sigmask = 0x00004000 0 0 0
21267/1:              siginfo: SIG#16384
21267/1:        sigprocmask(3, 0xFFBFF330, 0x00000000)          = 0
21267/1:                 set = 0x00004000 0 0 0
21267/1:            Incurred fault #11, FLTPAGE  %pc = 0x0004593C  addr = 0x589001310F4
21267/1:            Incurred fault #11, FLTPAGE  %pc = 0x000459A8  addr = 0x58900153AEC
21267/1:        _exit(0)
21268/1:            Received signal #14, SIGALRM, in pause() [caught]
21268/1:              siginfo: SIG#0
21268/1:        pause()                                         Err#4 EINTR
21268/1:        lwp_sigtimedwait(0xFFBFF698, 0xFFBFF5C0, 0x00000010) = 0
21268/1:                sigmask = 0 0 0 0
21268/1:              siginfo: SIG#0
21268/1:        lwp_sigtimedwait(0xFFBFF5B0, 0xFFBFF698, 0x00000010) = 0
21268/1:                sigmask = 0 0 0 0
21268/1:              siginfo: SIG#0
21268/1:        lwp_sigtimedwait(0xFFBFF5AC, 0xFFBFF3E0, 0x00000010) = 0
21268/1:                sigmask = 0x00002000 0 0 0
21268/1:              siginfo: SIG#8192
21268/1:        lwp_sigtimedwait(0xFFBFF3D0, 0xFFBFF458, 0x00000010) = 0
21268/1:                sigmask = 0x00002000 0 0 0
21268/1:              siginfo: SIG#8192
21268/1:        sigprocmask(3, 0xFFBFF458, 0x00000000)          = 0
21268/1:                 set = 0x00002000 0 0 0
21268/1:        lwp_sigtimedwait(0xFF1D7C18, 0xFFBFF1B0, 0x00000010) = 0
21268/1:                sigmask = 0xFFBFFEFF 0x00001FFF 0 0
21268/1:              siginfo: SIG#-4194561
21268/1:        lwp_sigtimedwait(0xFFBFF1A0, 0xFFBFF228, 0x00000010) = 0
21268/1:                sigmask = 0xFFBFFEFF 0x0000FF1F 0 0
21268/1:              siginfo: SIG#-4194561
21268/1:        sigprocmask(3, 0xFFBFF228, 0xFFBFF238)          = 0
21268/1:                 set = 0xFFBFFEFF 0x0000FF1F 0 0
21268/1:                oset = 0x00002000 0 0 0
21268/1:        lwp_sigtimedwait(0xFFBFF238, 0xFFBFF1B0, 0x00000010) = 0
21268/1:                sigmask = 0x00002000 0 0 0
21268/1:              siginfo: SIG#8192
21268/1:        lwp_sigtimedwait(0xFFBFF1A0, 0xFFBFF360, 0x00000010) = 0
21268/1:                sigmask = 0x00002000 0 0 0
21268/1:              siginfo: SIG#8192
21268/1:        lwp_park(1, 1, 1)                               = 0
21268/1:        lwp_sigtimedwait(0xFFBFF370, 0xFFBFF088, 0x000001C0) = 0
21268/1:                sigmask = 0x0000082F 0 0 0
21268/1:              siginfo: SIG#2095
21268/1:        lwp_sigtimedwait(0xFFBFF090, 0xFFBFEFF8, 0x00000010) = 0
21268/1:                sigmask = 0 0 0 0
21268/1:              siginfo: SIG#0
21268/1:        lwp_sigtimedwait(0xFFBFEFE8, 0xFFBFF090, 0x00000010) = 0
21268/1:                sigmask = 0 0 0 0
21268/1:              siginfo: SIG#0
21268/1:        context(1, 0xFFBFF088)
21268/1:        getpid()                                        = 21268 [1417]
21268/1:        kill(1417, 0x0000000F)                          = 0
21268/1:        alarm(1)                                        = 0
21268/1:            Received signal #14, SIGALRM, in pause() [caught]
21268/1:              siginfo: SIG#0
21268/1:        pause()                                         Err#4 EINTR
</pre>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/577" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/577/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protected: Movie night at the school</title>
		<link>http://onut.net/blog/archives/570#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/570#comments</comments>
		<pubDate>Fri, 11 Sep 2009 08:12:04 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Photos]]></category>

		<guid isPermaLink="false">http://onut.net/blog/archives/570</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.


No related posts.]]></description>
			<content:encoded><![CDATA[<form action="http://onut.net/blog/wp-pass.php" method="post">
<p>This post is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-570">Password:<br />
<input name="post_password" id="pwbox-570" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/570" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/570/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prowl &#8211; the &#8220;anything&#8221; push to your iPhone</title>
		<link>http://onut.net/blog/archives/565#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/565#comments</comments>
		<pubDate>Thu, 10 Sep 2009 22:53:49 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Mobiles]]></category>

		<guid isPermaLink="false">http://onut.net/blog/archives/565</guid>
		<description><![CDATA[I came across this cool little iPhone app in my recent adventures into the world of distractedness. A growl client for the iPhone. What Prowl does is send &#8220;push&#8221; events to your iPhone from virtually anything. Install the app, register on the Prowl website, generate an API key, and you&#8217;re home and hosed for some [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I came across this cool little iPhone app in my recent adventures into the world of distractedness. A growl client for the iPhone.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/10/506.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/10/s_506.jpg' border='0' width='187' height='281' style='margin:5px'></a></center><br />
<span id="more-565"></span></p>
<p>What Prowl does is send &#8220;push&#8221; events to your iPhone from virtually anything.<br />
Install the app, register on the Prowl website, generate an API key, and you&#8217;re home and hosed for some good hacking.</p>
<p>This means that any application that wants to push a notification to your iPhone contacts the Prowl servers, which then sends the notification on to your iPhone. So far it&#8217;s reliable enough, but even they say not to trust it for critical or emergency applications.</p>
<p>There is an API, and it is fairly complete, supporting all your language preferences, (Java, perl, PHP, etc, etc &#8211; sorry no COBOL).</p>
<p>Of course, there&#8217;s even a plugin for WordPress, (which I have to say is <b>so much easier</b> than Joomla). It will send push alerts for new posts, comments, and other things.</p>
<h4>WordPress post alert</h4>
<p>Looks like someone has posted another blog entry.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/10/692.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/10/s_692.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<p>Viewing the notification brings you here:</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/10/693.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/10/s_693.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<h4>Alerts</h4>
<p>Alerts can be adjusted, the nice feature is being able to silence them for a given time.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/11/5.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/11/s_5.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<p>And adjust what sounds are played and when, although the default sounds are too quiet I find.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/11/6.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/11/s_6.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<h4>Redirects</h4>
<p>Redirects allow a specified application to start when a particular event comes in. Trouble is that there&#8217;s no way of selecting anything else but the given set of applications. Maybe in the next release.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/11/7.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/11/s_7.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/11/8.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/11/s_8.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/11/9.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/11/s_9.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/11/10.jpg' rel='shadowbox[post-565];player=img;'><img src='http://blogpress.w18.net/photos/09/09/11/s_10.jpg' border='0' width='187' height='281' style='margin:5px'></a></center><br />
&#8211; Posted from my iPhone<br /></p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/565" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/565/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress + iPhone + BlogPress</title>
		<link>http://onut.net/blog/archives/525#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/525#comments</comments>
		<pubDate>Wed, 09 Sep 2009 12:34:50 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Mobiles]]></category>

		<guid isPermaLink="false">http://onut.net/blog/archives/525</guid>
		<description><![CDATA[I recently moved my blog away from Joomla and over to WordPress. This was for several reasons: 1. Joomla is a pain in the bum for blogging. Its too complex for a blog and I keep forgetting the differences between a &#8220;com&#8221;, &#8220;module&#8221; and a &#8220;plugin&#8221;. 2. Upgrading is a pain in the bum. I [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I recently moved my blog away from Joomla and over to WordPress. </p>
<p>This was for several reasons:<br />
1. Joomla is a pain in the bum for blogging. Its too complex for a blog and I keep forgetting the differences between a &#8220;com&#8221;, &#8220;module&#8221; and a &#8220;plugin&#8221;.<br />
2. Upgrading is a pain in the bum. I just recently noticed that half my content went missing as part of a recent upgrade.<br />
3. I had bought an iPhone and wanted to be able to post while out and about. Getting this going in Joomla was a pain in the bum, (although I discovered after switching to WordPress that it wasn&#8217;t really Joomla&#8217;s fault).<br />
4. My old TreeCam blog was running on an old version of s9y, and I wanted to combine it all.<br />
<span id="more-525"></span><br />
Not that Joomla is all bad, it&#8217;s a great CMS app, but just not for blogging. It has a fantastic plugin, (module or whatever the heck you call it), for eCommerce, (virtuemart), and even a blog thingy. I always found it to be a struggle. One of those things. It&#8217;s not designed for blogging.</p>
<p>It was a good decision to move. WordPress is infinitely easier than Joomla. None of the learning curve. So far there seems to be the same number of plugins for both, but it looks like Joomla is getting a little &#8220;stale&#8221;. Installing plugins for WordPress is damn easy. Almost a &#8220;one click&#8221; install or upgrade for all plugins and templates.</p>
<p>Since the switch I&#8217;ve discovered all sorts of goodies. EG out of the box weblog API, RPC calls, blog pings, dead link monitoring.</p>
<p>Nice. Really polished app.</p>
<p>Even better is the fact that I didn&#8217;t need to do anything for my iPhone to start posting to my blog. Just install BlogPress, (and the free WordPress app), from the Apple app store, enter in my site, and start blogging. I even used it to migrate from Joomla to WordPress, as you can post to multiple sites in one hit.</p>
<h3>BlogPress&#8217; settings page</h3>
<p>You can post piccies and videos to Picasa and YouTube. Specify multiple blogs to post to.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/148.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_148.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<h3>Pulling down posts</h3>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/149.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_149.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<h3>Posting a story</h3>
<p>Is dead easy, although may be a problem for those who don&#8217;t know their HTML.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/150.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_150.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<h3>Inserting images</h3>
<p>Just click on the camera icon top right, and you can insert photos directly into the post.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/151.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_151.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<h3>Save or post?</h3>
<p>You can post it, or save it as a draft for later.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/152.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_152.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/154.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_154.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<h3>Posting an entry</h3>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/157.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_157.jpg' border='0' width='187' height='281' style='margin:5px'></a></center></p>
<p>You&#8217;re also given the option of viewing it in Safari, which is a minor annoyance for me. It&#8217;d be good to be able to turn it off.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/158.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_158.jpg' border='0' width='187' height='281' style='margin:5px'></a></center><br />
Which ends up looking like the following of you have installed the iPhone WordPress plugin.</p>
<p><center><a href='http://blogpress.w18.net/photos/09/09/09/160.jpg' rel='shadowbox[post-525];player=img;'><img src='http://blogpress.w18.net/photos/09/09/09/s_160.jpg' border='0' width='187' height='281' style='margin:5px'></a></center><br />This is all cool stuff, and it just all works the way you&#8217;d expect it to.</p>
<p>&#8211; Posted from my iPhone<br /><!--more--></p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/525" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/525/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun Java Web Console</title>
		<link>http://onut.net/blog/archives/61#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/61#comments</comments>
		<pubDate>Thu, 09 Jul 2009 10:22:31 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Sun Microsystems]]></category>

		<guid isPermaLink="false">http://onut.net/wp/archives/61</guid>
		<description><![CDATA[This is a little rant from several angles.

Sun's Java Web Console is a nice little toy. Great for those people who prefer the less extreme learning curve of a CLI, and great for manager types who like pictures.

I've used it several times before, but thought I'd try it in on x86 Solaris10u6 box I have here. Bloody Sun. You think a <strong>released version</strong> implies that it's stable, and working.



No related posts.]]></description>
			<content:encoded><![CDATA[<p>This is a little rant from several angles.</p>
<p>Sun&#8217;s Java Web Console is a nice little toy. Great for those people who prefer the less extreme learning curve of a CLI, and great for manager types who like pictures.</p>
<p>I&#8217;ve used it several times before, but thought I&#8217;d try it in on x86 Solaris10u6 box I have here. Bloody Sun. You think a <strong>released version</strong> implies that it&#8217;s stable, and working.<br />
<span id="more-61"></span><br />
For me the issue was that when I originally installed the server, I used a temporary hostname, and DHCP for network because I couldn&#8217;t be bothered to change my local DNS and figure out a spare IP. I then changed to fixed IP and hostname later.</p>
<p>The ramifications of this is that my hostname ended up being assigned to localhost, (aka 127.0.0.1). This means that when the WebConsole was initially installed and configured it used 127.0.0.1 throughout it&#8217;s hardcoded, (stupid Tomcat &#8211; hate it with a vengence), config files.</p>
<p>This is something that annoys the heck out of me: I understand developers making &#8216;packages&#8217; that they can &#8216;deploy&#8217; to a web server, (Tomcat). It&#8217;s nice to be able to &#8216;deploy&#8217; a package. But for heck&#8217;s sake, why shove hostname/IP/port definitions in not just one file, but 50 stupid files that are zipped up along with shared libs and binaries? Why? Haven&#8217;t they heard of /etc/hosts, or even putting these definitions into somewhere common? Why do they have to have these definitions in multiple places?</p>
<p>Another great example of letting the developer take the lead in systems management.</p>
<p>Anyway, digging around the net trying to resolve my issue showed up a lot of similar complaints, but nothing really to sort it out. &#8216;wcadmin&#8217;  refused to start the &#8216;deployed&#8217; packages, because they couldn&#8217;t connect to the Tomcat server running on my old hostname.</p>
<pre>root@somewhere % wcadmin list

Deployed web applications (application name, context name, status):

console  ROOT            [stopped]
console  com_sun_web_ui  [stopped]
console  console         [stopped]
console  manager         [stopped]
console  zfs             [stopped]

Registered jar files (application name, identifier, path):

console  audit_jar     /usr/lib/audit/Audit.jar
console  console_jars  /usr/share/webconsole/lib/*.jar
console  jato_jar      /usr/share/lib/jato/jato.jar
console  javahelp_jar  /usr/jdk/packages/javax.help-2.0/lib/*.jar
console  shared_jars   /usr/share/webconsole/private/container/shared/lib/*.jar

Registered login modules (application name, service name, identifier):

console  ConsoleLogin  userlogin
console  ConsoleLogin  rolelogin

Persistent Jvm options:

-server
-Xmx128m
-XX:+UseParallelGC
-XX:ParallelGCThreads=4</pre>
<p>I tried using wcadmin ro &#8216;undeploy&#8217; and &#8216;deploy&#8217; packages, and even the brut force method of</p>
<pre class="code">root@somewhere % find /var/webconsole /usr/share/webconsole /etc/webconsole /usr/lib/webconsole -type f | xargs egrep -l '127.0.0.1|localhost'</pre>
<p>and manually modifying any config files found.</p>
<p>In the end I did a pkgrm/remove configs/pkgadd cycle:</p>
<p>1. Remove WebConsole packages.</p>
<pre>system      SUNWasac  Sun Java System Application Server Admin Client
application SUNWmcon  Sun Java(TM) Web Console 3.0.2 (Core)
system      SUNWmconr Sun Java(TM) Web Console 3.0.2 (Root)
application SUNWmcos  Implementation of Sun Java(TM) Web Console (3.0.2) services
application SUNWmcosx Implementation of Sun Java(TM) Web Console (3.0.2) services
application SUNWmctag Sun Java(TM) Web Console 3.0.2 (Tags &amp; Components)
application SUNWzfsgr ZFS Administration for Sun Java(TM) Web Console (Root)
application SUNWzfsgu ZFS Administration for Sun Java(TM) Web Console (usr)</pre>
<p>The usual removal:</p>
<pre>root@somewhere % pkgrm SUNWzfsgu SUNWmcosx SUNWmcos SUNWasac SUNWmcon SUNWzfsgr SUNWmconr SUNWmctag</pre>
<p>Then remove all the config files:</p>
<pre class="code">root@somwehere % rm -rf /var/webconsole /usr/share/webconsole /etc/webconsole /usr/lib/webconsole</pre>
<p>Or tarball up and then remove:</p>
<pre>root@somewhere % tar cvf /tmp/webconsole.tar /var/webconsole /usr/share/webconsole /etc/webconsole /usr/lib/webconsole
root@somewhere % rm -rf /var/webconsole /usr/share/webconsole /etc/webconsole /usr/lib/webconsole</pre>
<p>2. Re-install the WebConsole packages:<br />
If you have your original install DVD/CD handy, then just chuck it in, and install the packages from the Product directory:</p>
<pre>root@somewhere % pkgadd -d /cdrom/cdrom0/s2/Solaris_10/Product SUNWzfsgu SUNWmcosx SUNWmcos SUNWasac SUNWmcon SUNWzfsgr SUNWmconr SUNWmctag
The following packages are available:
 1  SUNWasac      Sun Java System Application Server Admin Client
 (i386) 8.2,REV=2006.08.16.08.46
 2  SUNWmcon      Sun Java(TM) Web Console 3.0.2 (Core)
 (i386) 3.0.2,REV=2006.12.08.20.48
 3  SUNWmconr     Sun Java(TM) Web Console 3.0.2 (Root)
 (i386) 3.0.2,REV=2006.12.08.23.39
 4  SUNWmcos      Implementation of Sun Java(TM) Web Console (3.0.2) services
 (i386) 3.0.2,REV=2006.12.08.23.39
 5  SUNWmcosx     Implementation of Sun Java(TM) Web Console (3.0.2) services
 (i386) 3.0.2,REV=2006.12.08.23.39
 6  SUNWmctag     Sun Java(TM) Web Console 3.0.2 (Tags &amp; Components)
 (i386) 3.0.2,REV=2006.12.08.20.48
 7  SUNWzfsgr     ZFS Administration for Sun Java(TM) Web Console (Root)
 (i386) 1.0,REV=2006.10.24.20.44
 8  SUNWzfsgu     ZFS Administration for Sun Java(TM) Web Console (usr)
 (i386) 1.0,REV=2006.10.24.20.44</pre>
<p>Even though you are installing version 3.1 of the Java Web Console, it actually appears as 3.0.2 for some stupid reason.</p>
<p>Everything will startup as expected using the new hostname defined.</p>
<pre>root@somewhere % wcadmin list

Deployed web applications (application name, context name, status):

console  ROOT            [running]
console  com_sun_web_ui  [running]
console  console         [running]
console  manager         [running]
console  zfs             [running]

Registered jar files (application name, identifier, path):

console  audit_jar     /usr/lib/audit/Audit.jar
console  console_jars  /usr/share/webconsole/lib/*.jar
console  jato_jar      /usr/share/lib/jato/jato.jar
console  javahelp_jar  /usr/jdk/packages/javax.help-2.0/lib/*.jar
console  shared_jars   /usr/share/webconsole/private/container/shared/lib/*.jar

Registered login modules (application name, service name, identifier):

console  ConsoleLogin  userlogin
console  ConsoleLogin  rolelogin

Persistent Jvm options:

-server
-Xmx128m
-XX:+UseParallelGC
-XX:ParallelGCThreads=4</pre>
<p></p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/61" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/61/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mobwars ROI calculator</title>
		<link>http://onut.net/blog/archives/60#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/60#comments</comments>
		<pubDate>Thu, 07 May 2009 07:59:57 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Junk]]></category>

		<guid isPermaLink="false">http://onut.net/wp/archives/60</guid>
		<description><![CDATA[If you play facebook&#8217;s MobWars then you may have noticed that you can now purchase land in other cities. I&#8217;ve updated my MobWars ROI calculator to include all the new cities, (the ones of come across so far). If you run across any moer cities, then please leave a comment below, and I&#8217;ll add them [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>If you play <a href="http://apps.facebook.com/mobwars/">facebook&#8217;s MobWars</a> then you may have noticed that you can now purchase land in other cities.<br />
I&#8217;ve updated my <a href="/blog/mobwars-roi-calculator#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">MobWars ROI calculator</a> to include all the new cities, (the ones of come across so far). If you run across any moer cities, then please leave a comment below, and I&#8217;ll add them in.<br />
If you don&#8217;t like my fancy website wrapper, then the direct link to the calculator is <a href="/tools/mobwars/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">here</a>.<br /></p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/60" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/60/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rant &#8211; Solaris vs Linux Part I</title>
		<link>http://onut.net/blog/archives/59#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/59#comments</comments>
		<pubDate>Thu, 13 Nov 2008 13:37:42 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sun Microsystems]]></category>

		<guid isPermaLink="false">http://onut.net/wp/archives/59</guid>
		<description><![CDATA[A rant about the state of play with Sun, and what I&#8217;d like to see Sun do to improve Solaris. I was midly amused when Sun made claims some time back that Solaris is a better Linux than Linux itself. I&#8217;ve been a Linux user since the early 0.9 kernel days, and nothing beats it. [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>A rant about the state of play with Sun, and what I&#8217;d like to see Sun do to improve Solaris.<br />
<span id="more-59"></span><br />
I was midly amused when Sun made claims some time back that Solaris is a better Linux than Linux itself. I&#8217;ve been a Linux user since the early 0.9 kernel days, and nothing beats it. Sure there are issues that crop up from time to time, but overall. It&#8217;s a pretty pleasant experience. I must admit I was a little offended by that Sun comment.<br />
<br />
I have been an admin of Solaris and HP systems for many years, both commercial versions of UNIX have goodness and badness to them.<br />
<br />
But, then along came ZFS. I usually balk at companies&#8217; gargantuan claims of their products meeting all requirements, providing easy administration, seamless integration, and making sure your cat is out for the night. But I suspect that Sun&#8217;s ZFS may be just that&#8230; It&#8217;s fantastic. No longer having to worry about slices, disks with different geometries, having to fsck disks after a crash, waiting 3 hours for a 500G FS to be created, then having to redo it all again &#8217;cause you got the sizes slightly wrong.<br />
<br />
It is/was Sun&#8217;s saviour, (along with dtrace, zones, and performance)&#8230; couldn&#8217;t have come at a better time.<br />
<br />
But, now, finally we have <a href="http://www.sun.com/aboutsun/pr/2008-10/sunflash.20081031.1.xml" target="_self">ZFS booting</a> . Woohoo! We can BOOT ZFS now. No more UFS. Damn fantastic that is.<br />
<br />
This is just one more nail in Linux&#8217;s coffin, (unfortunately), for me. These days, on the server side, I run Solaris exclusively, the desktop side still Linux, but I&#8217;d switch like I change my light bulbs if only Sun would address the very last&#8230; nagging&#8230;..horrible&#8230; frustrating aspect of Solaris, (OK, there&#8217;s more, but this is one that has frustrated me for YEARS).<br />
<br />
Sun&#8217;s package management<br />
<br />
It&#8217;s a HORRIBLE hack. I detest it with a vengeance. IMO the best package management system is HPUX&#8217;s Software Distributor. A close second is Debian&#8217;s apt-get/dpkg. You can install via network, tape, disk, CD. You can install and rollback. You can checksum verify package contents. You can see what it actually installs, and what it has installed. You can do a dry-run. Has all the pre/post script execution goodness.<br />
<br />
If only Sun came out with something similar. Maybe even a combination of apt-get, (or yum), and SDUX. That&#8217;d be gold. I really expect this to happen. If Sun is heading down the command/admin simplification path. I look forward to being able to type:</p>
<pre>
% pkg install gnome
</pre>
<p>Or</p>
<pre>
% pkg remove hugin
</pre>
<p>Or</p>
<pre>
% pkg verify firefox
</pre>
<p>Or</p>
<pre>
% pkg list
</pre>
<p>I mean&#8230;. Why not Sun?<br />
<br />
(And what about my cat?)</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/59" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/59/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO &#8211; Opera Mini + Linux</title>
		<link>http://onut.net/blog/archives/58#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://onut.net/blog/archives/58#comments</comments>
		<pubDate>Thu, 11 Sep 2008 02:45:25 +0000</pubDate>
		<dc:creator>Mick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mobiles]]></category>

		<guid isPermaLink="false">http://onut.net/wp/archives/58</guid>
		<description><![CDATA[I&#8217;ve been a user of Opera Mini for a long time. On my mobile it&#8217;s great. However, there&#8217;s times when I need to view the web in a bigger than 240&#215;320 format. I spend a fair amount of time on the train, and I have a laptop with bluetooth, and a phone with GPRS and [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a user of <a href="http://www.operamini.com/" target="_self">Opera Mini</a>  for a long time. On my mobile it&#8217;s great. However, there&#8217;s times when I need to view the web in a bigger than 240&#215;320 format. I spend a fair amount of time on the train, and I have a laptop with bluetooth, and a phone with GPRS and bluetooth&#8230;. but GPRS is slow and running firefox over it is a pain&#8230; even with images turned off.</p>
<p>So, this howto shows you how to run Opera Mini on Linux in glorious 1440&#215;900&#8230;. and take advantage of the speed increase.<br />
<span id="more-58"></span></p>
<h4>Requirements</h4>
<p>The Linux distribution I run is Debian, but this HOWTO will apply to any distribution really. In fact it should work on Windows as well. All you need initially is a running version of Java. However the complete list is:<br />
<a href="http://www.java.com/en/download/index.jsp" target="_self">Java 6</a><br />
<a href="http://www.microemu.org/" target="_self">Micro Emulator</a><br />
<a href="http://www.operamini.com/" target="_self">Opera Mini</a></p>
<h4>Installing Java</h4>
<p>On Debian I just do the usual installation process:</p>
<pre>root@localhost % apt-get install sun-java6-bin sun-java6-jre</pre>
<p>That&#8217;s it for java.</p>
<h4>Installing MicroEmulator</h4>
<p>Now for MicroEmulator. Fetch whatever the <a href="http://sourceforge.net/project/showfiles.php?group_id=30014" target="_self">latest release is</a> . I used 2.0.2 for this setup.</p>
<p>Extract the tarball to somewhere. Doesn&#8217;t matter where. I put it under $HOME/lib</p>
<pre>mick@localhost [~/lib] # tar zxvf microemulator-2.0.2.tar.gz</pre>
<p>I put in a symlink so that I can reference different version if need be. But you can skip this step if you want.</p>
<pre>mick@localhost [~/lib] # ln -s microemulator-2.0.2 microemulator</pre>
<p>Now, fire up java and point it to the microemulator jar file.</p>
<pre>mick@localhost [~/lib] # java -jar $HOME/lib/microemulator/microemulator.jar</pre>
<p>This window will now pop-up.<br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-1.png" /></p>
<p>Now Click on &#8216;Options&#8217;, and then &#8216;Select device&#8217;. There&#8217;s nothing stopping you from running Opera in this virtual device. But remember you want to run it in a big window, right!<br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-2.png" /></p>
<p>The window below will pop-up.<br />
<img src="/media/howto-operamini/Screenshot-Select_device-1.png" /></p>
<p>Click on Add&#8230; You want to traverse to your {directory where you installed the microemulator}/devices/, and select the microemu-device-resizable.jar file.<br />
<img src="/media/howto-operamini/Screenshot-Open.png" /></p>
<p>It will now appear in your virtual devices list. Click on &#8216;Set as default&#8217; to use it every time you start it up.<br />
<img src="/media/howto-operamini/Screenshot-Select_device-2.png" /><br />
<img src="/media/howto-operamini/Screenshot-Select_device-3.png" /></p>
<p>The MicroEmulator window will change to a &#8216;not as snazzy&#8217; window like this:<br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-2b.png" /></p>
<p>That&#8217;s it for the microemulator.</p>
<h4>Installing Opera Mini</h4>
<p>Installing Opera Mini is easy too. There&#8217;s two ways to do it.<br />
Click <a href="http://mini.opera.com/download-4/opera-mini-latest-advanced-int.jad" target="_self" class="broken_link">here</a> , and <a href="http://mini.opera.com/download-4/opera-mini-latest-advanced-int.jar" target="_self" class="broken_link">here</a>  and save somewhere.</p>
<p>Or follow these instructions, (I&#8217;ve put them here, because, as you know, links change on the internet, and I hate 404s).</p>
<p>Just fetch the <a href="http://www.operamini.com/download/" target="_self">latest version</a>  from Opera. There&#8217;s 4 steps to download:<br />
1. Select &#8216;Download to PC&#8217;.<br />
2. Select &#8216;Generic version&#8217;.<br />
3. Select &#8216;Advanced MIDP 2&#8242;<br />
4. Select you preferred language, and download the JAD and JAR files.</p>
<p>I placed these two files under $HOME/lib/opera. You will have to create a symlink so that the version you have downloaded will be used properly.</p>
<pre>mick@localhost [~/lib/opera] # ln -s opera-mini-latest-advanced-int.jar opera-mini-4.1.11355-advanced-int.jar</pre>
<p>Your version may/will vary. You&#8217;ll need to symlink, (or rename), the file for it to work, though.</p>
<p>Now you want to open the Opera Mini JAD file you just downloaded.<br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-3.png" /></p>
<p>Find it and open it.<br />
<img src="/media/howto-operamini/Screenshot-Open_JAD_File.png" /></p>
<p>Now you will see it in the list of applications that can be launched by Micro Emulator.<br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-4.png" /></p>
<p>Now just double click on it.<br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-5.png" /></p>
<p>Hooley Dooley Batman! It works! Cool!<br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-6.png" /><br />
<img src="/media/howto-operamini/Screenshot-MicroEmulator-last.png" /></p>
<p>
Either use your mouse and click, or you can use up/down/left/right keys and enter to traverse web pages.
</p>
<h4>One last thing</h4>
<p>I created the following script to make it easier for me to startup, and called it &#8216;operamini&#8217;.</p>
<pre>
#!/bin/bash

exec >&#038; /tmp/operamini.log

java -jar $HOME/lib/microemulator/microemulator.jar $HOME/lib/opera/opera-mini-latest-advanced-int.jad
</pre>
<p>Now I have my super fast GPRS internet connection. Also, a side benefit is that all my bookmarks are synced up to my phone.</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://onut.net/blog/archives/58" /></p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://onut.net/blog/archives/58/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->