<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2824904371081005940</id><updated>2011-12-01T12:52:22.942-08:00</updated><category term='VisualStudio varargs macro va_args'/><category term='Convert long int to byte array'/><category term='Mac OSX VMWare Fusion hgfs ln hard link'/><category term='Ubuntu VNC Leopard Remote Desktop'/><category term='fence_vmware'/><category term='PHP server cache lite caching Cache_Lite pear'/><category term='vmware'/><category term='mysql network my.cnf'/><category term='ubuntu v505bx wireless wifi'/><category term='ubuntu slideshow screensaver glslideshow settings preferences'/><category term='RedHat Cluster'/><category term='Motorola GPS OSX Leopard Google Earth i335 cell phone cellphone'/><category term='ubuntu panasonic fn keys function brightness volume'/><category term='fencing'/><category term='ssh'/><category term='VirtualBox iTunes High CPU Utilization XP WINXP'/><category term='ubuntu parallels parallels-config'/><category term='OSX Terminal color xterm xterm-color'/><category term='MySQL y.tab.c build compile Ubuntu'/><category term='root'/><category term='Ubuntu Remote Desktop Resolution'/><category term='Ubuntu Sound Juicer MP3 Feisty'/><category term='fence'/><category term='osx wget curl'/><title type='text'>Bits 'n Pieces</title><subtitle type='html'>From the Desk of Roger C. Clermont</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-5487834754428805667</id><published>2011-11-04T11:37:00.000-07:00</published><updated>2011-11-04T12:27:38.554-07:00</updated><title type='text'>Using Google's CoreDumper library</title><content type='html'>The Google team has published a library called &lt;a href="http://code.google.com/p/google-coredumper/"&gt;CoreDumper&lt;/a&gt; for generating process core dumps programatically.  This can be useful for post-analysis in environments where core files are not or cannot be generated/saved by the system (ulimit restrictions, etc).&lt;br /&gt;&lt;br /&gt;At my work we've incorporated the CoreDumper library into our Production code, and are using it in conjunction with our exception handling to generate core files when conditions warrant.&lt;br /&gt;&lt;br /&gt;One nice feature of this library is the ability to generate a compressed core file, thus significantly reducing disk space consumed by the core.&lt;br /&gt;&lt;br /&gt;An example of using this feature follows.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#include &amp;lt;limits&amp;gt;&lt;br /&gt;#include "google/coredumper.h"&lt;br /&gt;&lt;br /&gt;void generateCore( const std::string &amp;p_filenameFullPath )&lt;br /&gt;{&lt;br /&gt;  // Be sure to use a mutex for concurrency (not shown).&lt;br /&gt;  // Reasons are discussed here:&lt;br /&gt;  //   http://code.google.com/p/google-coredumper/wiki/WriteCoreDump#ERRORS&lt;br /&gt;&lt;br /&gt;  // The following will create a core file using the specified filename&lt;br /&gt;  // and compressed with the gzip compression algorithm.&lt;br /&gt;  // Here we're not enforcing limits on the core file size, so if using C++,&lt;br /&gt;  // get the limit of size_t as specified. Else replace with SIZE_MAX.&lt;br /&gt;  const int iResult = &lt;br /&gt;    WriteCompressedCoreDump( p_filenameFullPath.c_str(),&lt;br /&gt;                             std::numeric_limits&amp;lt;std::size_t&amp;gt;::max(),&lt;br /&gt;                             COREDUMPER_GZIP_COMPRESSED,&lt;br /&gt;                             NULL&lt;br /&gt;                           );&lt;br /&gt;&lt;br /&gt;  if( 0 == iResult )&lt;br /&gt;  {&lt;br /&gt;    // replace this call to std::out with a call to your logging system.&lt;br /&gt;    std::cout &lt;&lt; "generated core: " &lt;br /&gt;              &lt;&lt; p_filenameFullPath.c_str()&lt;br /&gt;              &lt;&lt; COREDUMPER_GZIP_COMPRESSED-&amp;gt;suffix &lt;br /&gt;              &lt;&lt; std::endl;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;    const unsigned int errLen = 128;&lt;br /&gt;    char error[ errLen ] = { '\0' };&lt;br /&gt;    strerror_r( errno, error, errLen );&lt;br /&gt;        &lt;br /&gt;    // replace this call to std::cerr with a call to your logging system.&lt;br /&gt;    std::cerr &lt;&lt; "failed to generate core: " &lt;br /&gt;              &lt;&lt; error &lt;br /&gt;              &lt;&lt; std::endl;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-5487834754428805667?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/5487834754428805667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=5487834754428805667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5487834754428805667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5487834754428805667'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2011/11/using-googles-coredumper-library.html' title='Using Google&apos;s CoreDumper library'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-6755285464017240763</id><published>2010-07-23T13:28:00.000-07:00</published><updated>2010-07-23T15:01:46.509-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox iTunes High CPU Utilization XP WINXP'/><title type='text'>VirtualBox WinXP iTunes High CPU Utilization</title><content type='html'>I recently deployed an instance of VirtualBox 3.2 on my home server (Ubuntu 8.04) with WinXP as a guest.  My intent was to run an instance of iTunes within that VirtualBox instance to serve the mp3's residing on my fileserver (with the added benefit of Home Sharing &amp; iTunesRemote/AirportExpress).&lt;br /&gt;&lt;br /&gt;Everything is running great, however I noticed that even when idle VirtualBox was using close to 100% CPU even when the XP guest was idle but running iTunes.  Strange enough VirtualBox's high cpu utilization would drop to reasonable levels (&lt; 10%) when I quit iTunes but continued to run the XP guest.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To solve, I first updated the XP guest to not use ACPI as described &lt;a href="http://forums.virtualbox.org/viewtopic.php?t=7552"&gt;here&lt;/a&gt; in the last post by kyboren .  After making the modifications I shut down the XP guest and restarted VirtualBox.  After the XP guest finished loading, the VirtualBox CPU load was reduced by roughly half, though it was still consuming nearly 50% CPU while the XP guest sat idle but running iTunes.  Better, but still not ideal.&lt;br /&gt;&lt;br /&gt;Next, I disabled Virtual Memory within the XP guest, and restarted only the XP guest.  This time, VirtualBox is only using 15% of CPU while the XP guest sits idle but running iTunes.  Much better; to me, 15% CPU utilization is an acceptable amount, and is far lower than the 95+% experienced earlier.&lt;br /&gt;&lt;br /&gt;I suspect that it was the XP guest restart (and not changing of the virtual memory) that brought VirtualBox's CPU use down to 15%.  Upon starting VirtualBox fresh I see that it again hits 50% CPU utilization with the XP guest idle but running iTunes.  However restarting the XP guest (via Start --&gt; Turn Off Computer --&gt; Restart) seems to knock the VirtualBox CPU utilization down to an acceptable 15% with the XP guest idle but running iTunes.&lt;br /&gt;&lt;br /&gt;So for now my 'fix' is to start VirtualBox, let my XP guest fully boot, then restart my XP guest.  Kludgy, but it meets my needs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-6755285464017240763?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/6755285464017240763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=6755285464017240763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/6755285464017240763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/6755285464017240763'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2010/07/virtualbox-winxp-itunes-high-cpu.html' title='VirtualBox WinXP iTunes High CPU Utilization'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-4332548095871963300</id><published>2010-02-23T16:52:00.000-08:00</published><updated>2010-03-01T16:56:32.220-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Convert long int to byte array'/><title type='text'>Convert long to byte array in C++ or C</title><content type='html'>This post explains how to convert an unsigned long int into a byte array in C/C++.  This post assumes that the datatype &lt;span style="font-weight: bold;"&gt;unsigned long int&lt;/span&gt; uses 4 bytes of internal storage; however the examples can easily be adapted to other built-in datatypes (unsigned short int, unsigned long long int, etc).&lt;br /&gt;&lt;br /&gt;The code to convert a 4-byte unsigned long int into a 4-byte array:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; unsigned long int longInt = 1234567890;&lt;br /&gt; unsigned char byteArray[4];&lt;br /&gt;              &lt;br /&gt; // convert from an unsigned long int to a 4-byte array&lt;br /&gt; byteArray[0] = (int)((longInt &gt;&gt; 24) &amp;amp; 0xFF) ;&lt;br /&gt; byteArray[1] = (int)((longInt &gt;&gt; 16) &amp;amp; 0xFF) ;&lt;br /&gt; byteArray[2] = (int)((longInt &gt;&gt; 8) &amp;amp; 0XFF);&lt;br /&gt; byteArray[3] = (int)((longInt &amp;amp; 0XFF));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So what's happening in the above code?  We're basically using a combination of bit shifting and bit masking in order to chop up the unsigned long into 4 pieces.  Each of these pieces ends up being a value small enough to be stored in the unsigned char array (remember an unsigned char is 1 byte, and capable of holding values 0-255).&lt;br /&gt;&lt;br /&gt;The bit shifting "drops" the right-most bytes, and the bit masking serves to convert the "new" right-most byte into a hex value between 0-255.  &lt;br /&gt;&lt;br /&gt;Note that in the last line of code we didn't need to do any bit shifting; here we're converting the right-most byte of the unsigned long, and therefore don't want to throw it away.&lt;br /&gt;&lt;br /&gt;An alternate solution would be to first apply the mask, and then shift:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  byteArray[0] = (int)((longInt &amp; 0xFF000000) &gt;&gt; 24 );&lt;br /&gt;  byteArray[1] = (int)((longInt &amp; 0x00FF0000) &gt;&gt; 16 );&lt;br /&gt;  byteArray[2] = (int)((longInt &amp; 0x0000FF00) &gt;&gt; 8 );&lt;br /&gt;  byteArray[3] = (int)((longInt &amp; 0X000000FF));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next, let's convert the 4-byte array back into an unsigned long int:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  unsigned long int anotherLongInt;&lt;br /&gt;&lt;br /&gt;  anotherLongInt = ( (byteArray[0] &lt;&lt; 24) &lt;br /&gt;                   + (byteArray[1] &lt;&lt; 16) &lt;br /&gt;                   + (byteArray[2] &lt;&lt; 8) &lt;br /&gt;                   + (byteArray[3] ) );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here we're taking each piece of the byte array, but now shifting the bits to the left, and adding the results.  In essence this is taking each value between 0-255 and depending on the position padding the right-side with an appropriate number of zeroes in order to replicate the significance of the individual values before they are summed.&lt;br /&gt;&lt;br /&gt;And an alternate solution to accomplish the same:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  anotherLongInt  = ((unsigned int) byteArray[0]) &lt;&lt; 24;&lt;br /&gt;  anotherLongInt |= ((unsigned int) byteArray[1]) &lt;&lt; 16;&lt;br /&gt;  anotherLongInt |= ((unsigned int) byteArray[2]) &lt;&lt; 8;&lt;br /&gt;  anotherLongInt |= ((unsigned int) byteArray[3]);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And that's it!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note that additional fortifications are required when these operations are required in portable code.  In that case you won't want to make assumptions on the size of the data types and should instead use additional logic to automatically detect the data type sizes at runtime for the platform on which you're running.  Otherwise, the above should be fine if you have a homogeneous and controlled environment in which your code will run.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-4332548095871963300?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/4332548095871963300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=4332548095871963300' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/4332548095871963300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/4332548095871963300'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2010/02/convert-long-into-byte-array-in-cc.html' title='Convert long to byte array in C++ or C'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-5150879299572856877</id><published>2010-02-16T10:25:00.000-08:00</published><updated>2010-02-16T11:12:45.667-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP server cache lite caching Cache_Lite pear'/><title type='text'>Use Cache_Lite without Pear</title><content type='html'>This post explains how to use &lt;a href="http://pear.php.net/package/Cache_Lite"&gt;Cache_Lite&lt;/a&gt; without using &lt;a href="http://pear.php.net/"&gt;Pear&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sometimes it may be impractical to install Pear packages on the server -- perhaps Pear isn't installed, perhaps you lack administrative rights, etc.  Regardless, the steps below should assist you in using Cache_Lite under these circumstances.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the &lt;a href="http://pear.php.net/package/Cache_Lite/download"&gt;'manual installation' version of Cache_Lite&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Extract this to some location on your local disk.  Open a shell and navigate to this location; next we're going to adjust up the extracted files to better mimic the Pear installation.&lt;/li&gt;&lt;li&gt;Rename the top-level directory from &lt;span style="font-weight: bold;"&gt;Cache_Lite-X.Y.Z&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;Cache&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Optional -- you are free to remove the &lt;span style="font-weight: bold;"&gt;docs&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;test&lt;/span&gt; sub-directories if you wish; this will save on disk space.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now take the Cache directory and all its contents and place them in someplace accessible from your php include path; in my case I chose the quick and dirty approach and put it in $_SERVER['DOCUMENT_ROOT']/include:&lt;/li&gt;&lt;blockquote&gt;[user@localhost:/var/www/web/include/Cache]$ ls -A1&lt;br /&gt;LICENSE&lt;br /&gt;Lite&lt;br /&gt;Lite.php&lt;br /&gt;TODO&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;li&gt;Incorporate Cache_Lite into your PHP pages as described in the &lt;a href="http://pear.php.net/manual/en/package.caching.cache-lite.intro.php"&gt;documentation&lt;/a&gt;, but with the changes listed below.  These will insure that Cache_Lite functions adequately in the absence of Pear.&lt;/li&gt;&lt;br /&gt;&lt;pre&gt;require_once( 'include/Cache/Lite.php' );&lt;br /&gt;&lt;br /&gt;$cache_lifetime = 30; // in seconds&lt;br /&gt;$cache_id = '1234';&lt;br /&gt;$cache_options = array( 'cacheDir'  =&gt; '/tmp/',&lt;br /&gt;   'lifeTime'  =&gt; $cache_lifetime,&lt;br /&gt;   'pearErrorMode' =&gt; CACHE_LITE_ERROR_DIE&lt;br /&gt;  );&lt;br /&gt;&lt;br /&gt;$Cache_Lite = new Cache_Lite( $cache_options );&lt;br /&gt;&lt;br /&gt;if( $data = $Cache_Lite-&gt;get( $cache_id ) )&lt;br /&gt;{ &lt;br /&gt; // data is the JSON connection string&lt;br /&gt; $returnValue = $data;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt; // value is an array of database values (not shown)&lt;br /&gt;&lt;br /&gt; $data = json_encode( $value );&lt;br /&gt;&lt;br /&gt; // cache the JSON-encoded connection string&lt;br /&gt; $Cache_Lite-&gt;save( $data, $cache_id );&lt;br /&gt;&lt;br /&gt; $returnValue = $data;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Notice that we've set the options for Cache_Lite to not use Pear error mode; this line is important as it will otherwise attempt to use the Pear error handler, which can result in a failure to load since it will attempt to include PEAR.php.&lt;/li&gt;&lt;li&gt;Also note the use of the caching mechanism; here we're caching a JSON string created from database entries.  Successive loads of this page first check the cache validity, and if valid, returns the existing cached JSON string.  If the cache is out of date, the system will then query the database, create the JSON string, then cache it before returning it back to the caller.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-5150879299572856877?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/5150879299572856877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=5150879299572856877' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5150879299572856877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5150879299572856877'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2010/02/use-cachelite-without-pear.html' title='Use Cache_Lite without Pear'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-1270236208110399726</id><published>2009-12-30T22:05:00.000-08:00</published><updated>2009-12-31T11:17:06.071-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fencing'/><category scheme='http://www.blogger.com/atom/ns#' term='RedHat Cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='fence_vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='root'/><category scheme='http://www.blogger.com/atom/ns#' term='fence'/><title type='text'>fence_vmware and the root user</title><content type='html'>When using the fence_vmware agent to manage a VMware guest via VMWare ESX, be aware that the root user cannot be used for the ssh session to the ESX node (the '-l' argument for fence_vmware).  A separate user should be created on the ESX node for the purpose of allowing ssh access for the fence_vmware agent.     &lt;span style="font-style: italic;"&gt;(Note though that it is safe to use the root user for within the VMware Service console -- the '-L' argument for fence_vmware).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Though may possible to manually launch an ssh session to the ESX node from the command-line, the fence_vmware agent isn't able to do so due to programmatic restriction in the fencing framework.  (The reason is that the fencing framework expects a particular format for the shell prompt following login, which the root user's shell does not use.)&lt;br /&gt;&lt;br /&gt;One may argue that remotely logging in as the root user is not a good idea to begin with; as such the fencing framework may have been intentionally designed with this restriction in mind.  However there may be cases where practicality prevails, such as when setting up a closed test environment.&lt;br /&gt;&lt;br /&gt;I did not find this restriction documented anywhere, and only discovered it after debugging the python scripts contained in the fencing framework.  It is briefly mentioned &lt;a href="http://sources.redhat.com/cluster/wiki/VMware_FencingConfig"&gt;here&lt;/a&gt; that &lt;span style="font-style: italic;"&gt;"ssh is not allowed for user root"&lt;/span&gt;; however this is misleading in that it does not explain that the limitation is within the fencing framework and not with ssh itself.  (Those of you familiar with ssh server administration may be aware that there is an item in the ssh config file to allow/deny remote access to the root user.)&lt;br /&gt;&lt;br /&gt;While on the subject, kudos to the people behind this &lt;a href="http://sources.redhat.com/cluster/wiki/VMware_FencingConfig"&gt;VMWare fencing documentation&lt;/a&gt;.   Though I make a small clarification to their work in the previous paragraph, this guide is quite helpful in explaining the methods by which to fence a VMware guest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-1270236208110399726?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/1270236208110399726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=1270236208110399726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1270236208110399726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1270236208110399726'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2009/12/fencevmware-and-root-user.html' title='fence_vmware and the root user'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-7171564765677293539</id><published>2009-03-06T11:25:00.000-08:00</published><updated>2009-03-06T11:37:01.668-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX Terminal color xterm xterm-color'/><title type='text'>OSX Terminal colors</title><content type='html'>The OSX Terminal application can support font/highlighting colors when connecting to a remote system that supports this. However depending on your choice of Terminal's background color some of the colors can be difficult to read.&lt;br /&gt;&lt;br /&gt;For example, I tend to prefer Terminal's "Pro" color scheme, where the background is black.  But when I log into a linux box, some of the text colors are difficult to read against the black background.&lt;br /&gt;&lt;br /&gt;I looked for a way to adjust the font colors used, but found a much simpler way to adjust this. Turns out there is an option in Terminal's Preferences titled "&lt;span style="font-weight:bold;"&gt;Use bright colors for bold text&lt;/span&gt;".  This option can be found under &lt;span style="font-weight:bold;"&gt;Terminal -&gt; Preferences -&gt; Settings -&gt; Text&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Enabling this option has yielded the text much easier to read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-7171564765677293539?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/7171564765677293539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=7171564765677293539' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/7171564765677293539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/7171564765677293539'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2009/03/osx-terminal-colors.html' title='OSX Terminal colors'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-5616313343526755507</id><published>2009-03-05T11:39:00.000-08:00</published><updated>2009-03-05T16:10:31.573-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Motorola GPS OSX Leopard Google Earth i335 cell phone cellphone'/><title type='text'>Real-time Navigation on OSX using Motorola i335 Cell Phone</title><content type='html'>This post explains  real-time navigation using the GPS from a Motorola i335 cell phone with Google Earth a Mac OSX laptop.  (Note: for the best experience, be sure to read up on &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=google+earth+offline+use&amp;amp;btnG=Google+Search&amp;amp;aq=1&amp;amp;oq=google+earth+offline"&gt;using Google Earth in offline mode&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;There are some problems when allowing Google Earth to auto-detect the GPS for tracking.  Basically Google Earth auto-probes the serial devices which it thinks might be a GPS; this is problematic in that it can sometimes select the wrong device.  For example, in this case Google Earth is auto-selecting the BlueTooth dial-up adapter of my phone instead of using the USB serial connection.  Since I have not found a way to force Google Earth to use a specific device, I came up with another method of getting the real-time GPS information into Google Earth.&lt;br /&gt;&lt;br /&gt;IMPORTANT: Whatever you do, DON'T use the Google Earth GPS stuff (&lt;span style="font-weight: bold;"&gt;Tools-&gt;GPS&lt;/span&gt;); if you've already tried it, reboot your Mac before you proceed with this guide.  As I mentioned above, Google Earth trips-up when trying to auto-detect the GPS, and creates a bunch of gpsbabel processes that cannot be killed and which conflict with the steps I provide below.&lt;br /&gt;&lt;br /&gt;Connect Motorola i335 phone via usb cable.&lt;br /&gt;&lt;br /&gt;Look for the device on the OSX the filesystem:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:12px;"&gt;ls /dev/tty.*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mine shows up as &lt;span style=";font-family:courier new;font-size:12px;"  &gt;/dev/tty.usbmodem3d11&lt;/span&gt;&lt;br /&gt;(Yes, this is the same serial interface as for the modem.  I don't yet know if they are mutually exclusive, meaning either GPS or modem.)&lt;br /&gt;&lt;br /&gt;On Moto phone, navigate to the GPS menu.  Select &lt;span style="font-weight: bold;"&gt;Interface&lt;/span&gt;.  Select &lt;span style="font-weight: bold;"&gt;NMEA Out&lt;/span&gt;, and set to &lt;span style="font-weight: bold;"&gt;ON&lt;/span&gt;.  (Important: be sure to set NMEA Out back to 'Off' when you are done; else this will continue to run and considerably impact the phone's battery charge after unplugging the USB cable.)&lt;br /&gt;&lt;br /&gt;After switching &lt;span style="font-weight: bold;"&gt;NMEA Out&lt;/span&gt; to "&lt;span style="font-weight: bold;"&gt;On&lt;/span&gt;", you should see a new icon on the phone that represents the GPS running.  If you don't see the icon, something might not be functioning properly (see my troubleshooting section below).&lt;br /&gt;&lt;br /&gt;Launch GPS babel; Google Earth already includes a version of it, so we'll use it rather than downloading another copy.&lt;br /&gt;&lt;br /&gt;In a Terminal window enter:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:12px"  &gt;&lt;br /&gt;cd /Applications/Google\ Earth.app/Contents/MacOS/&lt;br /&gt;./gpsbabel -T -i nmea -f /dev/tty.usbmodem3d11 -o kml,points=0,line_color=640000ff,max_position_points=10 -F /tmp/nmea.kml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This continuously reads the real-time NMEA coordinates from the Motorola i335 and writes them to a file in the KML format that Google Earth uses.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now launch Google Earth.  We'll need to create a Network Link by which to get Google Earth to read the coordinates that the i335/gpsbabel are putting out.&lt;br /&gt;&lt;br /&gt;From the menu bar, Click &lt;span style="font-weight: bold;"&gt;Add -&gt; Network Link&lt;/span&gt;.&lt;br /&gt;In the Name field, enter &lt;span style="font-weight: bold;"&gt;Motorola i335 GPS&lt;/span&gt;&lt;br /&gt;In the Link field, enter &lt;span style="font-weight: bold;"&gt;/tmp/nmea.kml&lt;/span&gt;&lt;br /&gt;Click on the &lt;span style="font-weight: bold;"&gt;Refresh&lt;/span&gt; tab.  Change &lt;span style="font-weight: bold;"&gt;Time-Based Refresh&lt;/span&gt; from &lt;span style="font-weight: bold;"&gt;Once&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;Periodically&lt;/span&gt;.  Check &lt;span style="font-weight: bold;"&gt;Fly to View on Refresh&lt;/span&gt;&lt;br /&gt;Click &lt;span style="font-weight: bold;"&gt;OK&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now on the left-hand side of the Google Earth in the Places window you should see a folder titled "&lt;span style="font-weight: bold;"&gt;Motorola i335 GPS&lt;/span&gt;", and under that folder you'll see either "&lt;span style="font-weight: bold;"&gt;ESTIMATED Position&lt;/span&gt;" or "&lt;span style="font-weight: bold;"&gt;Position&lt;/span&gt;", depending on whether or not the GPS has locked onto your coordinates.  Make sure that the "&lt;span style="font-weight: bold;"&gt;Motorola i335 GPS&lt;/span&gt;" and "&lt;span style="font-weight: bold;"&gt;Position&lt;/span&gt;" folders have check marks in their boxes; this is needed in order for Google Earth to use the GPS data.&lt;br /&gt;&lt;br /&gt;Once the coordinates are found, Google Earth should pan and zoom to your location.&lt;br /&gt;&lt;br /&gt;If you've made it this far, congratulations and have fun.  I encourage you to read up on &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=google+earth+offline+use&amp;amp;btnG=Google+Search&amp;amp;aq=1&amp;amp;oq=google+earth+offline"&gt;using Google Earth in offline mode&lt;/a&gt; for the best experience with this setup.&lt;br /&gt;&lt;br /&gt;Troubleshooting:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Motorola phone not putting out coordinates (is USB connected? NMEA out enabled? Can phone acquire GPS information?)&lt;/li&gt;&lt;li&gt;GPSbabel not properly reading from Motorola GPS (are command line options correct?)&lt;/li&gt;&lt;li&gt;GPSbabel not properly writing kml (are command line options correct?)&lt;/li&gt;&lt;li&gt;Google Earth is not reading the proper kml file (are the file paths correct?)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;If you don't see the GPS icon on the phone after enabling NMEA Out, you might want to disconnect the phone and power cycle it, as well as rebooting the Mac and starting this guide again from the beginning.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Don't know if this is possible yet with BlueTooth; there is a serial device that appears under the BT profile, though I haven't spent the time to see if it can output the GPS NMEA information.  An additional reason for using the USB cord is that the NMEA out will eat up the battery much faster than when set to off, and when using the USB cord you're effectively using USB power instead of the phone's battery.&lt;br /&gt;&lt;br /&gt;DISCLAIMER:  Be smart when using this while operating a vehicle.  Don't be distracted; if you need to reference the map or use the computer in any way, pull over or have a passenger do it.  I'm not responsible for any mishaps.&lt;br /&gt;&lt;br /&gt;Cites: Thanks to &lt;a href="http://tjworld.net/wiki/Linux/Ubuntu/GoogleEarthPlusRealTimeGPS"&gt;these guys&lt;/a&gt; for the ideas behind this solution, who did something similar on Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-5616313343526755507?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/5616313343526755507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=5616313343526755507' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5616313343526755507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5616313343526755507'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2009/03/real-time-navigation-on-osx-using.html' title='Real-time Navigation on OSX using Motorola i335 Cell Phone'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-3299249777806836560</id><published>2008-09-17T08:19:00.000-07:00</published><updated>2008-09-17T08:20:23.493-07:00</updated><title type='text'>Launching OSX apps from the command-line</title><content type='html'>Use the following to open apps from the command line in osX:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;open /path/to/your.app&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-3299249777806836560?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/3299249777806836560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=3299249777806836560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/3299249777806836560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/3299249777806836560'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/09/launching-osx-apps-from-command-line.html' title='Launching OSX apps from the command-line'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-4453971848450192529</id><published>2008-09-17T08:18:00.000-07:00</published><updated>2008-09-17T08:19:16.791-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osx wget curl'/><title type='text'>Mac OS X wget alternative</title><content type='html'>WGet is not a native part of OSX; try curl instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-4453971848450192529?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/4453971848450192529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=4453971848450192529' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/4453971848450192529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/4453971848450192529'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/09/mac-os-x-wget-alternative.html' title='Mac OS X wget alternative'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-5076517836488700321</id><published>2008-05-21T20:35:00.000-07:00</published><updated>2008-05-21T21:13:31.630-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql network my.cnf'/><title type='text'>Configuring MySQL for Network access</title><content type='html'>The typical default install of MySQL server only permits connections from localhost (127.0.0.1); this is presumably for reasons of security.  While this is certainly secure, in some cases it is undesirable.  This post explains how to permit network access to a MySQL server from remote clients.&lt;br /&gt;&lt;br /&gt;Locate the my.cnf file, which is the master configuration file for MySQL server.  (On a Ubuntu system this file may be located in /etc/mysql.)&lt;br /&gt;&lt;br /&gt;Open this file in your favorite editor and look for the following entry:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;bind-address = 127.0.0.1&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This limits the MySQL server to listening to connections on the localhost address, as explained earlier.  &lt;br /&gt;&lt;br /&gt;To instead make the MySQL server listen on all interfaces, edit this entry to the following:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;bind-address = 0.0.0.0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Save the file, then restart the MySQL server:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo /etc/init.d/mysql restart&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Your MySQL server should now be network accessible.  To verify that it's listening on all interfaces, issue the following command:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;netstat -anp | grep 3306&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you see the following, then your configuration is complete:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     -&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You'll want to be certain your database users are permitted to connect via the network.  This I'll leave to you to work out, though I will recommend the &lt;a href="http://www.mysql.com/products/tools/administrator/"&gt;MySQL Admin tool&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;(Conversely this tool can also be used to enable networking of MySQL, though this setting is somewhat buried within the myriad of options, and is more easily accomplished via the method described above.)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-5076517836488700321?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/5076517836488700321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=5076517836488700321' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5076517836488700321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5076517836488700321'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/05/configuring-mysql-for-network-access.html' title='Configuring MySQL for Network access'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-8305549811302103687</id><published>2008-05-20T22:20:00.000-07:00</published><updated>2008-05-20T23:35:05.774-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio varargs macro va_args'/><title type='text'>Macros and Variable Arguments in VisualStudio 2003</title><content type='html'>The preprocessor in Microsoft VisualStudio 2003 (VC++ 7.1) does not support variable argument lists in macros; instead it spews syntax errors when compiling.  However, there is a way to get around this limitation and indeed gain this ability.&lt;br /&gt;&lt;br /&gt;In a project I'm working on, we use macros to construct portions of our logging system.  A typical declaration looks as such:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;#define LOG_TRACE(...)  log_routine(__FILE__, __LINE__, __VA_ARGS__)&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However this fails to compile on VisualStudio.Net 2003, because as stated before, its preprocessor does not support variable argument lists.&lt;br /&gt;&lt;br /&gt;A workaround is to instead use a class to handle the semantics of the variable argument list; observe:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;pre&gt;class tracing_output_va&lt;br /&gt;{&lt;br /&gt;private:&lt;br /&gt;    const char* m_file;&lt;br /&gt;    int m_line;&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;    tracing_output_va(&lt;br /&gt;        const char* p_File,&lt;br /&gt;        const int p_Line) :&lt;br /&gt;        m_file( p_File ),&lt;br /&gt;        m_line( p_Line )&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    void operator()( const char* p_Format, ... )&lt;br /&gt;    {&lt;br /&gt;        va_list marker ;&lt;br /&gt;        va_start( marker, p_Format ) ;&lt;br /&gt;        LoggingOutVa(&lt;br /&gt;            m_file,&lt;br /&gt;            m_line,&lt;br /&gt;            p_Format,&lt;br /&gt;            marker ) ;&lt;br /&gt;&lt;br /&gt;        va_end( marker );&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;};&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And then redefine the macro as such:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;#define LOG_TRACE_APPLIB  (tracing_output_va(__FILE__, __LINE__) )&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will indeed compile and perform as expected in VC++ 7.1&lt;br /&gt;&lt;br /&gt;The elegance to this solution is that one need only modify the declaration of this macro, and that existing calls to this macro need not change.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;For what it's worth the routine &lt;span style="font-size:85%;"&gt;&lt;code&gt;LoggingOutVa( )&lt;/code&gt;&lt;/span&gt; wraps the actual magic of formatting and file output.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Cite: &lt;a href="http://www.codeproject.com/KB/debug/location_trace.aspx"&gt;http://www.codeproject.com/KB/debug/location_trace.aspx&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-8305549811302103687?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/8305549811302103687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=8305549811302103687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/8305549811302103687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/8305549811302103687'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/05/macros-and-variable-arguments-in.html' title='Macros and Variable Arguments in VisualStudio 2003'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-1284539921468512537</id><published>2008-05-15T14:09:00.000-07:00</published><updated>2008-05-15T14:31:55.941-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX VMWare Fusion hgfs ln hard link'/><title type='text'>VMWare Fusion -- No Hard Links in Shared Folders</title><content type='html'>VMWare Fusion allows one to use folders on the OSX filesystem from within the guest OS via Shared Folders.&lt;br /&gt;&lt;br /&gt;This is useful if you need to access files from both the host OS (OSX) or the guest OS running in VMWare Fusion.&lt;br /&gt;&lt;br /&gt;However I have found limitations with this arrangement when the guest OS is a Linux-based system -- it seems that VMWare's driver for Shared Folders does not support all of the linux filesystem operations (most specifically hard links).&lt;br /&gt;&lt;br /&gt;Observe (/mnt/hgfs/wa points to a shared folder residing on the OSX filesystem) :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;clermontr@synergy:/mnt/hgfs/wa/test$ touch tree&lt;br /&gt;clermontr@synergy:/mnt/hgfs/wa/test$ ln tree shrub&lt;br /&gt;ln: creating hard link `shrub' to `tree': Operation not permitted&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Operation not permitted?!  How about symbolic links:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;clermontr@synergy:/mnt/hgfs/wa/test$ ln -s tree shrub&lt;br /&gt;clermontr@synergy:/mnt/hgfs/wa/test$ ll&lt;br /&gt;total 1&lt;br /&gt;lrwxr-xr-x 1 clermontr ccm_root 4 2008-05-15 14:17 shrub -&gt; tree&lt;br /&gt;-rw-r--r-- 1 clermontr ccm_root 0 2008-05-15 14:16 tree&lt;br /&gt;clermontr@synergy:/mnt/hgfs/wa/test$ &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Well it looks like symbolic links are permitted, but no chance for hard links.  For what it's worth I also attempted to hard-link as sudo but to no avail. &lt;br /&gt;&lt;br /&gt;Switching to the OSX filesystem I was able to create hard-links without issue.  So then it would appear that this is indeed a limitation of the VMWare Fusion Shared Folders driver (vmhgfs).&lt;br /&gt;&lt;br /&gt;I am interested in hearing if others have experienced this issue, and also if anyone has found a workaround.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-1284539921468512537?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/1284539921468512537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=1284539921468512537' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1284539921468512537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1284539921468512537'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/05/vmware-fusion-no-hard-links-in-shared.html' title='VMWare Fusion -- No Hard Links in Shared Folders'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-2617673665292086359</id><published>2008-03-14T15:20:00.000-07:00</published><updated>2008-05-15T14:30:38.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL y.tab.c build compile Ubuntu'/><title type='text'>Compiling MySQL 5 in Ubuntu</title><content type='html'>If when compiling MySQL5 you get an error similar to the following:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;sed: can't read y.tab.c: No such file or directory&lt;br /&gt;make[2]: *** [sql_yacc.cc] Error 2&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Then you're probably missing the bison package. &lt;br /&gt;&lt;br /&gt;To remedy, first install bison:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;sudo apt-get install bison&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Then start the mysql build again with a fresh start:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;make distclean; ./configure; make&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Your troubles should be over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-2617673665292086359?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/2617673665292086359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=2617673665292086359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/2617673665292086359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/2617673665292086359'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/03/compiling-mysql5-in-ubuntu.html' title='Compiling MySQL 5 in Ubuntu'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-5881634482998917112</id><published>2008-01-29T09:48:00.000-08:00</published><updated>2008-02-11T14:16:35.382-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu VNC Leopard Remote Desktop'/><title type='text'>Using a Ubuntu VNC client to connect to a Leopard Remote Desktop</title><content type='html'>This post explains how to connect to a Leopard Remote Desktop session from a Ubuntu client machine using VNC.  It is assumed that Remote Desktop is enabled on their Mac (you should also read &lt;a href="http://lifehacker.com/software/how-to/remote-control-leopard-with-tightvnc-319528.php"&gt;this&lt;/a&gt; regarding a password on your Leopard Remote Desktop server).&lt;br /&gt;&lt;br /&gt;The Leopard Remote Desktop speaks a flavor of vnc, albeit one which common vnc clients seem to have difficulty with.  I tried both Ubuntu's default vnc client in addition to a realVNC client, both without success.  However I did find that the tightvncviewer successfully connects.&lt;br /&gt;&lt;br /&gt;To get xtightvncviewer, install this package:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo apt-get install xtightvncviewer&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When you want to initiate a Leopard Remote Desktop session, open a terminal and start up xtightvncviewer:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;xtightvncviewer ip.of.your.mac&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You should be prompted with your password (you did set a password on your Leopard Remote Desktop, correct?), and following that you should then see the desktop of your Mac in the vnc window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-5881634482998917112?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/5881634482998917112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=5881634482998917112' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5881634482998917112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5881634482998917112'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/01/using-ubuntu-vnc-client-to-connect-to.html' title='Using a Ubuntu VNC client to connect to a Leopard Remote Desktop'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-7977471941872114177</id><published>2008-01-11T13:36:00.000-08:00</published><updated>2008-02-11T09:49:17.919-08:00</updated><title type='text'>Quicktime video in Firefox on Ubuntu</title><content type='html'>Quicktime doesn't seem to work by default in Firefox on Ubuntu.&lt;br /&gt;&lt;br /&gt;To get it working, you'll need to check/install plugins which Firefox uses to play video.&lt;br /&gt;&lt;br /&gt;First, remove any other firefox plugins related to video; on my system these included:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo apt-get remove mozilla-mplayer&lt;br /&gt;sudo apt-get remove mozilla-plugin-vlc&lt;/pre&gt;(I had previously installed these in attempts to get Quicktime working.)&lt;br /&gt;&lt;br /&gt;Next install an additional plugin for gstreamer:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo apt-get install gstreamer0.10-gl&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now point your browser to some quicktime content &lt;span style="font-size:85%;"&gt;(&lt;a href="http://www.apple.com/trailers/"&gt;http://www.apple.com/trailers/&lt;/a&gt;)&lt;/span&gt; and enjoy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note: I was previously using the mozilla-mplayer package with some success, though Firefox would periodically crash for some unknown reason when viewing Quicktime content .&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-7977471941872114177?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/7977471941872114177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=7977471941872114177' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/7977471941872114177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/7977471941872114177'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2008/01/quicktime-video-in-firefox-on-ubuntu.html' title='Quicktime video in Firefox on Ubuntu'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-6595982703206447391</id><published>2007-10-30T11:37:00.000-07:00</published><updated>2007-11-05T09:32:00.101-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu panasonic fn keys function brightness volume'/><title type='text'>Panasonic Fn Keys in Ubuntu</title><content type='html'>I lost the functionality of the Fn keys to control brightness and volume after upgrading my Panasonic Toughbook Cf-74 from Ubuntu 7.04 Feisty to 7.10 Gutsy. Turns out that for whatever reason the kernel module which controls the Fn keys is not loading automatically.&lt;br /&gt;&lt;br /&gt;To get it working, type the following into a terminal:&lt;br /&gt;&lt;pre&gt;sudo modprobe pcc_acpi&lt;/pre&gt;&lt;br /&gt;That will load the Panasonic acpi driver.  And that's it -- your Fn keys should now be working. &lt;br /&gt;&lt;br /&gt;To insure that this module loads automatically at next boot, add the above command to /etc/rc.local&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-6595982703206447391?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/6595982703206447391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=6595982703206447391' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/6595982703206447391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/6595982703206447391'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2007/10/panasonic-fn-keys-in-ubuntu.html' title='Panasonic Fn Keys in Ubuntu'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-6101112178682428197</id><published>2007-09-17T18:24:00.000-07:00</published><updated>2007-09-17T18:53:46.086-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu Sound Juicer MP3 Feisty'/><title type='text'>Encode MP3s in Ubuntu</title><content type='html'>The default Ubuntu install includes an application called Sound Juicer for use in encoding cd audio.   However by default Sound Juicer cannot encode in MP3 format; this post explains how (at least for Feisty).&lt;br /&gt;&lt;br /&gt;First, install this package:&lt;br /&gt;&lt;pre&gt;gstreamer0.10-plugins-ugly-multiverse&lt;/pre&gt;&lt;br /&gt;If this package is not found, be sure you have enabled the Multiverse and Restricted software repositories and try again.&lt;br /&gt;&lt;br /&gt;Next, after installing the above package, launch Sound Juicer.  Click &lt;span style="font-weight: bold;"&gt;Edit -&gt; Preferences&lt;/span&gt;.  Next, click on the &lt;span style="font-weight: bold;"&gt;Edit Profiles&lt;/span&gt; button.&lt;br /&gt;&lt;br /&gt;Click &lt;span style="font-weight: bold;"&gt;New&lt;/span&gt;.  A new window will appear.  (Note that on my system none of the fields in this new window can be edited until the &lt;span style="font-weight: bold;"&gt;Edit Profiles&lt;/span&gt; window is closed.  So if this is the case for you go back to the &lt;span style="font-weight: bold;"&gt;Edit Profiles&lt;/span&gt; window and click &lt;span style="font-weight: bold;"&gt;Close&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;Add this text to the following fields:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Profile name: MP3&lt;br /&gt;Profile desc: Encode to mp3 format.&lt;br /&gt;GStreamer pipeline: audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=0 vbr=0 bitrate=256 ! id3v2mux&lt;br /&gt;File extension: mp3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This will encode audio files to mp3 format at a constant bitrate of 256; change this number to what suits your needs.&lt;br /&gt;&lt;br /&gt;Next, check the &lt;span style="font-weight: bold;"&gt;Active&lt;/span&gt; button, then click &lt;span style="font-weight: bold;"&gt;Close&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now back in the Preferences window you should see the MP3 profile in the &lt;span style="font-weight: bold;"&gt;Output Format&lt;/span&gt; dropdown.&lt;br /&gt;&lt;br /&gt;Happy encoding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-6101112178682428197?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/6101112178682428197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=6101112178682428197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/6101112178682428197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/6101112178682428197'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2007/09/encode-mp3s-in-ubuntu.html' title='Encode MP3s in Ubuntu'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-5048898131655919202</id><published>2007-09-16T00:57:00.000-07:00</published><updated>2007-09-17T21:16:30.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu Remote Desktop Resolution'/><title type='text'>Video Resolutions under Ubuntu Remote Desktop</title><content type='html'>This post explains how to increase/expand the desktop size to match the working resolution of the remote client even if this resolution is higher than that of the server's video hardware.   &lt;br /&gt;&lt;br /&gt;The setup is Ubuntu Feisty 7.04 with Gnome Remote Desktop enabled, running on a Panasonic Toughbook (max LCD resolution of 1024x768), accessed by a desktop system operating at a resolution of 1280x1024.   (UPDATE: this worked for me with xserver-xorg-core-1.2; this no longer works for me after upgrading to xserver-xorg-core-1.3.)&lt;br /&gt;&lt;br /&gt;(FYI: The default Remote Desktop software in Ubuntu 7.04 is Vino, which is running with the xrandr extension.  Remote Desktop is enabled via &lt;span style="font-weight: bold;"&gt;System -&gt; Preferences -&gt; Remote Desktop&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;X Windows has provisions for allowing desktop resolutions beyond which the server's hardware can support.  These resolutions are called &lt;span style="font-weight: bold;"&gt;Virtual Resolutions&lt;/span&gt;, as rather than they being true hardware resolutions are instead represented in a simulated sense within the software.&lt;br /&gt;&lt;br /&gt;On the Remote Desktop server, edit the &lt;span style="font-weight: bold;"&gt;xorg.conf&lt;/span&gt; file and locate the &lt;span style="font-weight: bold;"&gt;Display&lt;/span&gt; subsection matching that which the &lt;span style="font-weight: bold;"&gt;Defaultdepth&lt;/span&gt; is set to.  Add the following line after Modes:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;               Virtual 1280 1024&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Where the numbers represent the resolution which you want to use when connecting via Remote Desktop.  (Note the absence of an 'x' between the numbers, this is intentional; adding an 'x' will result in the failure of X-Windows to launch.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This section should now read something similar to the following:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       SubSection "Display"&lt;br /&gt;               Depth   24&lt;br /&gt;               Modes   "1024x768"     "800x600"       "640x480"&lt;br /&gt;               Virtual 1280 1024&lt;br /&gt;       EndSubSection&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Restart X Windows.  Check for the new virtual resolution in the list at &lt;span style="font-weight: bold;"&gt;System -&gt; Preferences -&gt; Screen Resolution&lt;/span&gt;.  Select the new virtual resolution; the desktop will now be larger than the monitor can display, though the entire desktop can be panned by moving the mouse in the appropriate direction.&lt;br /&gt;&lt;br /&gt;Next connect to the Remote Desktop server.  The resulting display on the client should be the entire desktop shown at the full virtual resolution.  (Note that the screen resolution of the server can also be updated from within the Remote Desktop session.)&lt;br /&gt;&lt;br /&gt;My main development system is the laptop described above.  I mainly use it in a docked configuration, though I also take advantage of the portability and work offsite.  Lacking a dock at home, I instead use Remote Desktop to connect to the laptop.  The above solution allows me to run the Remote Desktop session to take advantage of the full resolution of my desktop computer and not be limited to that of the laptop's video hardware.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-5048898131655919202?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/5048898131655919202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=5048898131655919202' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5048898131655919202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/5048898131655919202'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2007/09/video-resolutions-under-ubuntu-remote.html' title='Video Resolutions under Ubuntu Remote Desktop'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-1749986750888928888</id><published>2007-02-28T13:26:00.000-08:00</published><updated>2007-03-08T15:34:07.085-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu parallels parallels-config'/><title type='text'>Installing Parallels 2.2 on Ubuntu 6.10 (Edgy)</title><content type='html'>Installing &lt;a href="http://www.parallels.com/en/products/workstation/"&gt;Parallels Workstation&lt;/a&gt; on Ubuntu can be a bit of a challenge.  There are a few minor (yet fatal) issues encountered whether using the Debian package or the install script which prevent Parallels Workstation from running.  This article shall explain how to overcome these issues.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Overview&lt;/span&gt;&lt;br /&gt;The biggest challenge between Parallels Workstation &amp; Ubuntu is &lt;span style="font-weight: bold;"&gt;/bin/sh&lt;/span&gt; .  If you open a shell in Ubuntu and type '&lt;span style="font-style: italic; font-weight: bold;"&gt;ll /bin/sh&lt;/span&gt;' you'll see the following:&lt;br /&gt;&lt;pre&gt;lrwxrwxrwx 1 root root 4 2007-01-29 10:19 /bin/sh -&gt; dash&lt;/pre&gt;What this means is that &lt;span style="font-weight: bold;"&gt;sh&lt;/span&gt; is a symbolic link to &lt;span style="font-weight: bold;"&gt;dash&lt;/span&gt;.  What's dash?  Its a replacement shell for bash (a popular shell environment) which includes various enhancements over bash.  However the scripts packaged with Parallels have compatibility issues with dash, and as a result encounter errors which prevent Parallels from running.&lt;br /&gt;&lt;br /&gt;So to sort out this mess we'll make some minor edits to a few of the Parallels script files which will allow Parallels to successfully run.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Dependencies&lt;/span&gt;&lt;br /&gt;In addition to the script issues discussed above, there are undocumented package dependencies.  These dependencies are due to the manner in which Parallels configures its kernel modules -- running the command &lt;span style="font-weight: bold;"&gt;parallels-config&lt;/span&gt; essentially builds these modules specific to your environment.&lt;br /&gt;&lt;br /&gt;So to complete the software build environment in preparation for building the Parallels Workstation kernel modules, these packages should be installed on your system:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo apt-get install build-essential&lt;br /&gt;sudo apt-get install kernel-package&lt;/pre&gt;&lt;br /&gt;Install these before installing Parallels Workstation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;(Note that you are free to install Parallels Workstation first if you wish; however Parallels does not run a dependency check and will not alert you if these packages are missing.  The first clue that you will see is that parallels-config will fail to build the modules due to missing header files.  So it is simply best to just install these dependencies beforehand.)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;For clarity, we shall assume installation using the Parallels Debian package. However the principles described here remain the same for those using the Parallels install script.&lt;br /&gt;&lt;br /&gt;First step is to obtain and install the Parallels Workstation Debian package.  This can be found on the Downloads page of the Parallels website.&lt;br /&gt;&lt;br /&gt;If the package installed successfully, you likely received a message indicating that &lt;span style="font-weight: bold;"&gt;parallels-config&lt;/span&gt; must be run prior to running &lt;span style="font-weight: bold;"&gt;parallels&lt;/span&gt;.  Don't do it just yet, as some changes must be made beforehand.&lt;br /&gt;&lt;br /&gt;Exercise your sudo powers and edit these Parallels scripts&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;/usr/bin/parallels-config&lt;br /&gt;/usr/lib/parallels/autostart/drivers_start&lt;br /&gt;/usr/lib/parallels/autostart/drivers_stop&lt;br /&gt;/usr/lib/parallels/autostart/iscripts&lt;br /&gt;/usr/lib/parallels/autostart/parallels&lt;br /&gt;/usr/lib/parallels/tools/mimelink&lt;br /&gt;/usr/lib/parallels/tools/network.sh&lt;/pre&gt;&lt;br /&gt;In each of these files, do a search &amp; replace for all instances of &lt;span style="font-weight: bold;"&gt;/bin/sh&lt;/span&gt; replacing it with &lt;span style="font-weight: bold;"&gt;/bin/bash&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;(Keep in mind there may be multiple instances of &lt;span style="font-weight: bold;"&gt;/bin/sh&lt;/span&gt; in each file.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once the above files have been updated and saved, launch the &lt;span style="font-weight: bold;"&gt;parallels-config&lt;/span&gt; command:&lt;br /&gt;&lt;pre&gt;sudo parallels-config&lt;/pre&gt;This should successfully build the kernel modules.  If it doesn't complete successfully, double-check that you captured every step above.&lt;br /&gt;&lt;br /&gt;Otherwise if &lt;span style="font-weight: bold;"&gt;parallels-config&lt;/span&gt; successfully completes, launch Parallels Workstation and enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-1749986750888928888?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/1749986750888928888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=1749986750888928888' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1749986750888928888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1749986750888928888'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2007/02/installing-parallels-22-on-ubuntu-610.html' title='Installing Parallels 2.2 on Ubuntu 6.10 (Edgy)'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-1435735115252798088</id><published>2007-02-28T09:39:00.001-08:00</published><updated>2008-04-07T16:11:07.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu slideshow screensaver glslideshow settings preferences'/><title type='text'>Modifying the GLSlideshow Screensaver settings in Ubuntu</title><content type='html'>UPDATE: This has been verified to work for 7.10 (Gutsy) as well as 7.04 (Feisty).&lt;br /&gt;&lt;br /&gt;For whatever reason in Ubuntu the GLSlideshow screensaver settings are not accessible through the screensaver control panel.  We're talking the basics here, like changing the filesystem path to the pictures to display, displaying more than one image (in true slideshow fashion), the duration to display a picture for, etc.  So then how does one  adjust these properties?  This post answers that question.&lt;br /&gt;&lt;br /&gt;GLSlideshow gets its settings from two files. The first is &lt;span style="font-weight: bold;"&gt;.xscreensaver&lt;/span&gt;, and the second is &lt;span style="font-weight: bold;"&gt;glslideshow.desktop&lt;/span&gt;.  We'll tackle these one at a time.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Starting with &lt;span style="font-weight: bold;"&gt;.xscreensaver&lt;/span&gt;, this file should exist in your home directory; if it doesn't already exist go ahead and create it there.  Add the following line to &lt;span style="font-weight: bold;"&gt;.xscreensaver&lt;/span&gt;, where the path represents the folder containing the images you wish to display (adjust the path appropriately for your environment):&lt;br /&gt;&lt;pre&gt;imageDirectory: /home/username/Photos&lt;/pre&gt;&lt;br /&gt;Save this file and close it.&lt;br /&gt;&lt;br /&gt;Next modify the settings in &lt;span style="font-weight: bold;"&gt;glslideshow.desktop&lt;/span&gt; to get GLSlideshow to perform as we would like.  In Ubuntu this file is typically found here:&lt;br /&gt;&lt;pre&gt;/usr/share/applications/screensavers/glslideshow.desktop&lt;/pre&gt;&lt;br /&gt;If this path isn't appropriate for your system, issue this command to locate this file:&lt;br /&gt;&lt;pre&gt;slocate glslideshow.desktop&lt;/pre&gt;&lt;br /&gt;Edit &lt;span style="font-weight: bold;"&gt;gslideshow.desktop&lt;/span&gt; and look for the following entry:&lt;br /&gt;&lt;pre&gt;Exec=glslideshow -root&lt;/pre&gt;&lt;br /&gt;Modify this line to instead read:&lt;br /&gt;&lt;pre&gt;Exec=glslideshow -root -duration 15 -pan 15 -fade 5&lt;/pre&gt;&lt;br /&gt;Where:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;duration&lt;/span&gt; represents the amount of time (in seconds) to display an image for&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;pan&lt;/span&gt; represents the amount of time (in seconds) to run the pan effect on this image&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;fade&lt;/span&gt; represents the transition time (in seconds) to fade between images&lt;/li&gt;&lt;/ul&gt;You are free to add additional options if you wish; see the manpage for glslideshow for more options.&lt;br /&gt;&lt;br /&gt;Save this file, then activate the screensaver.  GLSlideshow should now present a slideshow of images from the specified directory.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Cites&lt;br /&gt;&lt;a href="http://ubuntuforums.org/archive/index.php/t-212512.html"&gt;http://ubuntuforums.org/archive/index.php/t-212512.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-1435735115252798088?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/1435735115252798088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=1435735115252798088' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1435735115252798088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/1435735115252798088'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2007/02/modifying-glslideshow-settings-in_28.html' title='Modifying the GLSlideshow Screensaver settings in Ubuntu'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2824904371081005940.post-2456443172420069498</id><published>2007-02-12T19:13:00.000-08:00</published><updated>2007-02-28T13:26:21.935-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu v505bx wireless wifi'/><title type='text'>Ubuntu &amp; wireless on a Vaio V505BX</title><content type='html'>I recently installed Ubuntu 6.10 (Edgy) on my Sony Vaio V505BX.  The install went smooth and was done in less than an hour -- almost everything worked 'out-of-the-box' including the function keys for volume and brightness.   However wifi/wireless wasn't working by default and required some digging.   This post details how I was able to get it running.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What Didn't Work&lt;/span&gt;&lt;br /&gt;Ubuntu recognizes the built-in card as an Intersil Prism 2.5 chipset; these details were found by using the  &lt;span style="font-style: italic; font-weight: bold;"&gt;lspci&lt;/span&gt; command.&lt;br /&gt;&lt;br /&gt;Ubuntu ships with the hostap driver, the ornioco driver, and the prism2 driver, all of which should theoretically be capable of operating this card -- though despite my best efforts I could get none to work.  The modules would all successfully load and the card could see access points; however association with an access point would either fail or be short-lived before the connection was dropped.&lt;br /&gt;&lt;br /&gt;Something seemed amiss with these kernel drivers (hostap, prism2, orinoco), and some time spent web searching revealed others with similar Vaios were also having problems when running Ubuntu 6.10.  The most common 'fix' appeared to be blacklisting the prism2 modules, which I also tried but without success.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Workaround&lt;/span&gt;&lt;br /&gt;I managed to get wireless working by instead using the ndiswrapper kernel module in conjunction with the WinXP drivers:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;1.)&lt;/span&gt; Add these modules to the modules blacklist file (&lt;span style="font-weight: bold;"&gt;/etc/modprobe.d/blacklist&lt;/span&gt;):&lt;br /&gt;&lt;ul&gt;&lt;li style="font-weight: bold;"&gt;hostap&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;hostap_pci&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;prism2_pci&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;orinoco&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;orinoco_pci&lt;/li&gt;&lt;/ul&gt;This will insure that none of the default modules will load and interfere with the workaround.  Reboot to clear any of the above modules which may be currently loaded.  (You could also try &lt;span style="font-style: italic; font-weight: bold;"&gt;modprobe -r&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;modulename&lt;/span&gt; though rebooting is just easier.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;2.)&lt;/span&gt; Locate the WinXP drivers.&lt;br /&gt;&lt;br /&gt;When I installed Ubuntu, I already had WinXP installed and so I configured it as a dual-boot system.  I booted into WinXP and checked the device manager to see the wireless card's details as well as the driver it uses.&lt;br /&gt;&lt;br /&gt;XP lists the card as an Ambit LANExpress ieee802.11b miniPCI adapter. I noted the location of the drivers it uses (c:\Program Files\Ambit\...) and then rebooted into Ubuntu.  Write down this location or copy the files to a thumb drive as you'll need access to them from within Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;(Caveat - Sony provides the V505BX wireless drivers here:&lt;br /&gt;&lt;a href="http://esupport.sony.com/US/perl/swu-download.pl?mdl=PCGV505BX&amp;upd_id=1091&amp;amp;os_id=7"&gt;http://esupport.sony.com/US/perl/swu-download.pl?mdl=PCGV505BX&amp;upd_id=1091&amp;amp;os_id=7&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;However (!) these drivers are packaged into a Windows installer which won't extract under Wine as it fails to detect an XP system.   So if you don't have an Ubuntu/WinXP dual-boot you'll need to find a WinXP system on which run the installer and copy the installed drivers or another method by which to extract the necessary files.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;3.)&lt;/span&gt; Install the &lt;span style="font-weight: bold;"&gt;ndiswrapper-utils&lt;/span&gt; package:&lt;blockquote style="font-weight: bold;"&gt;&lt;pre&gt;sudo apt-get install ndiswrapper-utils&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;4.)&lt;/span&gt; &lt;/span&gt;Load the WinXP drivers as well as the ndiswrapper module.&lt;br /&gt;&lt;br /&gt;This guide covers these steps quite well:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation#Install_Windows_driver"&gt;http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation#Install_Windows_driver&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;When loading the WinXP drivers, reference the location of the Ambit drivers found previously.  (On my system I mounted the WinXP partition and loaded the XP drivers (inf, sys) directly from the NTFS drive.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;5.)&lt;/span&gt; You should now be able to associate with an access point using &lt;span style="font-weight: bold;"&gt;iwconfig&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Test everything out.  If its not working, retrace the above steps to insure everything was followed correctly.  If/when it's working, continue to the next step.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;6.)&lt;/span&gt; &lt;span style="font-size:100%;"&gt;Once wireless is operating satisfactorily, you will need to make the ndiswrapper modules load during startup so that your wireless card is automatically enabled (rather than follow the steps here every time you reboot).&lt;br /&gt;&lt;br /&gt;The following command stores the current configuration of the ndiswrapper modules into a config file so that the WinXP drivers will be loaded automatically when the ndiswrapper kernel module is loaded:&lt;br /&gt;&lt;/span&gt;&lt;pre&gt; &lt;span style="font-weight: bold;"&gt;sudo ndiswrapper -m&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Next you will need to insure that the ndiswrapper kernel module gets loaded during boot.  I added the following line at the end of &lt;span style="font-weight: bold;"&gt;/etc/rc.local&lt;/span&gt; to accomplish this:&lt;br /&gt;&lt;pre&gt; &lt;span style="font-weight: bold;"&gt;modprobe ndiswrapper&lt;/span&gt;&lt;/pre&gt; Ndiswrapper should now load the WinXP drivers the next time you reboot, enabling your wireless card automatically.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;7.)&lt;/span&gt; I highly recommend following this guide to get Gnome network manager  up-and-running as it makes using wireless much more convenient:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.debianadmin.com/enable-wpa-wireless-access-point-in-ubuntu-linux.html"&gt;http://www.debianadmin.com/enable-wpa-wireless-access-point-in-ubuntu-linux.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2824904371081005940-2456443172420069498?l=rclermont.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rclermont.blogspot.com/feeds/2456443172420069498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2824904371081005940&amp;postID=2456443172420069498' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/2456443172420069498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2824904371081005940/posts/default/2456443172420069498'/><link rel='alternate' type='text/html' href='http://rclermont.blogspot.com/2007/02/enabling-wireless-on-vaio-v505bx-under.html' title='Ubuntu &amp; wireless on a Vaio V505BX'/><author><name>rcc</name><uri>http://www.blogger.com/profile/01775358747020772279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
