<?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/"
	>

<channel>
	<title>64 Bit Jungle</title>
	<atom:link href="http://www.64bitjungle.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.64bitjungle.com</link>
	<description>Linux and Programming Tips and Tutorials, Technology and Rants from the Jungle</description>
	<lastBuildDate>Tue, 24 Apr 2012 03:46:02 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.4.15</generator>
	<item>
		<title>Strange Clocks</title>
		<link>http://www.64bitjungle.com/android/strange-clocks/</link>
		<comments>http://www.64bitjungle.com/android/strange-clocks/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 03:46:02 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=673</guid>
		<description><![CDATA[I started playing around developing Android applications &#8211; it&#8217;s a pretty cool platform to develop on. The result so far is my first application, called &#8220;Strange Clocks&#8220;. Strange Clocks is a set of Home Screen Widgets, each of which calculate and display time in an unusual way: 1. Binary Clock &#8211; Displays the time in [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I started playing around developing Android applications &#8211; it&#8217;s a pretty cool platform to develop on. The result so far is my first application, called &#8220;<a title="Strange Clocks Android Application and Widgets" href="https://play.google.com/store/apps/details?id=com.sixtyfourbitjungle.strangeclocks" target="_blank">Strange Clocks</a>&#8220;.</p>
<p>Strange Clocks is a set of Home Screen Widgets, each of which calculate and display time in an unusual way:</p>
<p>1. Binary Clock &#8211; Displays the time in Binary, by converting H:M:S into &#8220;Binary&#8221; values. (3&#215;3 Widget)<br />
2. Decimal/Metric Clock &#8211; Displays the time using a Decimal clock &#8211; the day is split into 10 hours, which have 100 minutes. Each Centiminute has 100 seconds. (3&#215;1 Widget)<br />
3. Hexadecimal Clock &#8211; displays the time in Hex (base-16) format. (3&#215;1 Widget<br />
4. Octal Clock &#8211; Displays the time in Octal (base-8) format. (3&#215;1 Widget<br />
5. Percent Clock &#8211; Displays the percentage of the day passed. (3&#215;1 Widget<br />
6. Reverse Percent Clock &#8211; Displays the percentage of the day left. (3&#215;1 Widget<br />
7. Backwards Analog &#8211; A standard Analog clock, in reverse. (3&#215;3 Widget)</p>
<p>There&#8217;s a <a title="Strange Clocks free" href="https://play.google.com/store/apps/details?id=com.sixtyfourbitjungle.strangeclocksfree" target="_blank">Free</a> version and a <a title="Strange Clocks Donate" href="https://play.google.com/store/apps/details?id=com.sixtyfourbitjungle.strangeclocks" target="_blank">Donate</a> version (50p / 99c). Both are fully functional, but the Donate version contains several skins to change the colour of the LCD (Blue, Green, Dark Green and Red) and Text/Foreground (White, Black and Green).</p>

<a href='http://www.64bitjungle.com/android/strange-clocks/attachment/sample-screenshot/'><img width="150" height="150" src="http://www.64bitjungle.com/wp-content/uploads/2012/04/Sample-screenshot-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Sample-screenshot" /></a>
<a href='http://www.64bitjungle.com/android/strange-clocks/attachment/decimal-screenshot/'><img width="150" height="150" src="http://www.64bitjungle.com/wp-content/uploads/2012/04/Decimal-screenshot-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Decimal-screenshot" /></a>
<a href='http://www.64bitjungle.com/android/strange-clocks/attachment/binary-screenshot/'><img width="150" height="150" src="http://www.64bitjungle.com/wp-content/uploads/2012/04/Binary-screenshot-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Binary-screenshot" /></a>
<a href='http://www.64bitjungle.com/android/strange-clocks/attachment/reverse_analog-screenshot/'><img width="150" height="150" src="http://www.64bitjungle.com/wp-content/uploads/2012/04/Reverse_Analog-screenshot-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Reverse_Analog-screenshot" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/android/strange-clocks/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Restore/Reload/Recover Crashed Gnome 3 Shell From tty1</title>
		<link>http://www.64bitjungle.com/linux/restore-reloadrecover-crashed-gnome-3-shell-from-tty1/</link>
		<comments>http://www.64bitjungle.com/linux/restore-reloadrecover-crashed-gnome-3-shell-from-tty1/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 07:54:06 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gnome 3]]></category>
		<category><![CDATA[Gnome Shell]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=664</guid>
		<description><![CDATA[I switched over to Linux Mint &#8211; a very nice Ubuntu derivative &#8211; a few releases back, and have just updated to &#8220;Lisa&#8221;, aka Linux Mint 12. The latest release uses Gnome 3, which is vastly different from Gnome 2 in pretty much every way. As much as I loved Gnome 2, I have to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I switched over to <a title="Linux Mint" href="http://www.linuxmint.com/" target="_blank">Linux Mint</a> &#8211; a very nice Ubuntu derivative &#8211; a few releases back, and have just updated to &#8220;Lisa&#8221;, aka Linux Mint 12. The latest release uses Gnome 3, which is vastly different from Gnome 2 in pretty much every way. As much as I loved Gnome 2, I have to say, I don&#8217;t hate Gnome 3. In fact, I rather like it, despite its quirks, and my unfamiliarity concerning customising and tweaking. Besides, learning is half the fun of a new system.</p>
<p>One annoyance I have found to be somewhat of a show-stopper is that the Shell seems to crash on a fairly regular basis. I&#8217;m still trying to work out what is causing the crash &#8211; it could be one of the few <a title="Gnome Extensions" href="https://extensions.gnome.org/" target="_blank">extensions</a> I have installed and modified to get the system looking and feeling the way I want, or some other bug related to the Shell, ATI Graphics driver, Xserver&#8230;</p>
<p>Unfortunately, when the shell crashes, the application windows remain, but all the panels and shell related stuff vanishes. It&#8217;s also not possible to use Alt-F2 to bring up the Run command widget, from which it&#8217;s possible to simply run &#8220;r&#8221; to reload the shell. Instead, I have had to find a couple of alternative methods to reload the shell. One is particularly drastic, and involves killing the whole Gnome session &#8211; not good if you have work to save etc. The other just replaces the shell.</p>
<p><strong>The &#8220;Nice&#8221; Method</strong></p>
<p>This method will replace the Gnome shell using tty1. As a result, all output from the gnome-shell command will be output to standard output on tty1, although this can be redirected to /dev/null or somewhere else if desired. To use this method, press Ctrl-Alt-F1 to change the display to tty1, and login if necessary. Then run:</p>
<p><code>DISPLAY=:0 gnome-shell --replace</code></p>
<p>This effectively tells the system to redirect the gnome-shell &#8211;replace command to tty7, i.e. the Xserver.</p>
<p>Once done, press Ctrl-Alt-F7 to return to Gnome.</p>
<p><strong>The more aggressive method</strong></p>
<p>This method will completely restart the Gnome session, killing any open applications in the process. This really is a last resort, and rather horrible method. Once again, press Ctrl-Alt-F1 to change the display to tty1. Once there, run:</p>
<p><code>ps aux | grep 'gnome-session'</code></p>
<p>You should see a few lines of output. What you&#8217;re looking for is (most likely the first line) the line similar to this:</p>
<p><code>username    4321  0.0  0.1 00000 00000 ?        Ssl  09:48   0:00 /usr/bin/gnome-session --session=gnome</code></p>
<p>Where &#8220;username&#8221; is your username. Look specifically for &#8220;/usr/bin/gnome-session &#8211;session=gnome&#8221;. The number in the second column (after the username) is the value we&#8217;re after &#8211; in this case &#8220;4321&#8221;. This is the PID (Process ID) for gnome-session, and the value required to kill the session:</p>
<p><code>sudo kill -9 4321</code></p>
<p>This should kill the crashed Gnome Shell session, and start a new one. The display should also be returned to tty7, and the Login screen (if not, press Ctrl-Alt-F7).</p>
<p>If anyone else has any alternative, or better methods, please feel free to comment below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/linux/restore-reloadrecover-crashed-gnome-3-shell-from-tty1/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Quickly archive multiple directories into separate archive files</title>
		<link>http://www.64bitjungle.com/ubuntu/quickly-archive-multiple-directories-into-separate-archive-files/</link>
		<comments>http://www.64bitjungle.com/ubuntu/quickly-archive-multiple-directories-into-separate-archive-files/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 12:36:10 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=606</guid>
		<description><![CDATA[I recently needed to quickly archive several hundred directories, and their contents into separate, compressed files named after the directories. The horribly slow way to do this would be to either right-click each directory and select &#8220;create archive&#8221; via the File Manager, or, via the command line, to manually run tar several hundred times &#8211; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I recently needed to quickly archive several hundred directories, and their contents into separate, compressed files named after the directories. The horribly slow way to do this would be to either right-click each directory and select &#8220;create archive&#8221; via the File Manager, or, via the command line, to manually run tar several hundred times &#8211; once for each directory. Neither option is pleasant, or viable. However, with a simple shell for loop, combined with ls and the relevant archiver command, the task becomes quick and painless:</p>
<p><code>for dir in `ls`;do cd $dir; tar -cvzf $dir.tar.gz *;mv $dir.tar.gz ..; cd ..;done</code></p>
<p>This will run an ls command, and temporarily save the output for use in the For loop. The code loops through each part of the ls output, moves into the current directory (assuming it is a directory), creates the archive and moves the archive file to the parent directory, before moving itself to the parent directory to begin again with the next part of the ls output.</p>
<p>So, for example, if you have the following directory structure:</p>
<p><code>/home<br />
--username<br />
----stuff_to_archive<br />
------dir-to-archive1<br />
------dir-to-archive2<br />
------dir-to-archive3<br />
------dir-to-archive4<br />
------dir-to-archive5</code></p>
<p>and you wish to archive dir-to-archive1 through dir-to-archive5, and all the contents therein, you would run:</p>
<p><code>cd /home/username/stuff_to_archive<br />
for dir in `ls`;do cd $dir; tar -cvzf $dir.tar.gz *;mv $dir.tar.gz ..; cd ..;done</code></p>
<p>The code will loop through each directory and archive its contents into a file named after the directory (e.g. dir-to-archive1.tar.gz), leaving you with:</p>
<p><code>/home<br />
--username<br />
----stuff_to_archive<br />
------dir-to-archive1<br />
------dir-to-archive1.tar.gz<br />
------dir-to-archive2<br />
------dir-to-archive2.tar.gz<br />
------dir-to-archive3<br />
------dir-to-archive3.tar.gz<br />
------dir-to-archive4<br />
------dir-to-archive4.tar.gz<br />
------dir-to-archive5<br />
------dir-to-archive5.tar.gz</code></p>
<p>If you want to use ZIP instead, then run:</p>
<p><code>for dir in `ls`;do cd $dir; zip $dir *;mv $dir.zip ..; cd ..;done</code></p>
<p>or replace the archiver command with whatever you want to use to compress the directory contents.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/ubuntu/quickly-archive-multiple-directories-into-separate-archive-files/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>64 Bit Jungle Forums now open!</title>
		<link>http://www.64bitjungle.com/linux/64-bit-jungle-forums-now-open/</link>
		<comments>http://www.64bitjungle.com/linux/64-bit-jungle-forums-now-open/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 16:22:41 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=594</guid>
		<description><![CDATA[I&#8217;ve decided to create a forum community for 64 Bit Jungle users, and anyone else who would like to join. I guess the forums are an extension to post comments, allow discussion of topics not (yet) covered in any articles or posts on the site, and will hopefully encourage discussion and debate within the community! [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve decided to create a <a href="http://www.64bitjungle.com/forums">forum community</a> for 64 Bit Jungle users, and anyone else who would like to join. I guess the forums are an extension to post comments, allow discussion of topics not (yet) covered in any articles or posts on the site, and will hopefully encourage discussion and debate within the community! Whilst I don&#8217;t anticipate they will be as active or comprehensive as the well established <a href="http://ubuntuforums.org" target="_blank">Ubuntu forums</a>, I do hope they will be successful, and most of all helpful and fun.</p>
<p>You&#8217;ll need to <a href="http://www.64bitjungle.com/wp-login.php?action=register">register</a> to post, but anyone can read them. I&#8217;ll eventually be on the look out for moderators, and the forums may possibly even lead to enlisting future guest writers for 64 Bit Jungle too.</p>
<p>They&#8217;re obviously looking a little sparse at the moment, since they&#8217;ve only just opened, but please don&#8217;t let that put you off registering and posting to kick things off.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/linux/64-bit-jungle-forums-now-open/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Webgrind: Cross-platform Xdebug Profiling Web Frontend</title>
		<link>http://www.64bitjungle.com/programming/webgrind-cross-platform-xdebug-profiling-web-frontend/</link>
		<comments>http://www.64bitjungle.com/programming/webgrind-cross-platform-xdebug-profiling-web-frontend/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 04:53:30 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Xdebug]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=512</guid>
		<description><![CDATA[I&#8217;m using Xdebug as my primary PHP debugger. I have it integrated into my Eclipse PDT IDE, and have also been using its profiling capabilities. Until recently, I&#8217;ve been using KCachegrind &#8211; which has a wonderfully diverse feature set &#8211; as my primary profile data visualisation tool. However, as a Gnome user, KCachegrind requires a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-517" title="webgrind-title" src="http://www.64bitjungle.com/wp-content/uploads/2009/04/webgrind-title.jpg" alt="webgrind-title" width="163" height="62" align="left" />I&#8217;m using <a href="http://www.xdebug.org" target="_blank">Xdebug</a> as my primary PHP debugger. I have it integrated into my <a href="http://www.64bitjungle.com/tech/debugging-php-applications-with-xdebug-and-eclipse-pdt/">Eclipse PDT IDE</a>, and have also been using its profiling capabilities. Until recently, I&#8217;ve been using <a href="http://kcachegrind.sourceforge.net/cgi-bin/show.cgi" target="_blank">KCachegrind</a> &#8211; which has a wonderfully diverse feature set &#8211; as my primary profile data visualisation tool. However, as a Gnome user, KCachegrind requires a lot of KDE libraries to be installed in order to run. KCachegrind can be installed easily on Debian based systems by running:</p>
<p><code>sudo apt-get install kcachegrind</code></p>
<p>Anyone who has installed KCachegrind on a Gnome system before, or who has just run the above command, can see that it takes approximately 250Mb (after installation &#8211; about 80Mb worth of archives to download) of additional libraries and packages in order to install. I still have it installed, and use it for more detailed analysis of profile data, but I recently stumbled across a fantastic alternative called <a href="http://code.google.com/p/webgrind/" target="_blank">Webgrind</a>.</p>
<p><strong>Installing Webgrind</strong></p>
<p>Webgrind implements a subset of the KCachegrind features, and is great for a quick preview, or simple analysis of profile data. It&#8217;s written in PHP5, and as such leaves a very small footprint, and can be installed on any platform. To install, <a href="http://webgrind.googlecode.com/files/webgrind-release-1.0.zip" target="_blank">download the latest package</a> (1.0 at the time of writing) &#8211; as usual I downloaded to my cluttered Desktop, which by now is brimming with things I&#8217;ve forgotten about, and whose purpose I no longer have any idea&#8230; Once downloaded, the package needs unpacking, and moving to the root web directory (/var/www in my case)</p>
<p><code>cd ~/Desktop<br />
unzip webgrind-release-1.0.zip<br />
sudo mv webgrind /var/www</code></p>
<p>Once installed, Webgrind can be accessed by pointing your web browser to http://localhost/webgrind</p>
<p><strong>Profiling</strong></p>
<p>In order to profile an application, the Xdebug profiler needs switching on. This can be done by editing either the php.ini file, or in my case, a separate ini file specifically for Xdebug. Either way, the following line needs adding, so open up the ini file in a text editor, and add:</p>
<p><code>xdebug.profiler_enable = 1</code></p>
<p>Save the file and restart Apache:</p>
<p><code>sudo /etc/init.d/apache2 restart</code></p>
<p>Your PHP web application will now be profiled by Xdebug. By default, profile data will be saved in /tmp/cachegrind.out.%p (where %p is the pid). This can be changed by editing php.ini and adding the following directives:</p>
<p><code>xdebug.profiler_output_dir = /desired/output/directory/path<br />
xdebug.profiler_output_name = desired.name.specifier</code></p>
<p>(See <a href="http://www.xdebug.org/docs/all_settings#trace_output_name" target="_blank">http://www.xdebug.org/docs/all_settings#trace_output_name</a> for possible specifiers). To switch profiling off, simply edit the php.ini file, set  xdebug.profiler_enable to 0 and restart Apache.</p>
<p><strong>Viewing Profile Data</strong></p>
<p>Once profile data is available, Webgrind will automatically detect the latest profile, and give the option to display it. Point your web browser to http://localhost/webgrind. At the top are three pull down menus &#8211; the centre menu allowing us to select which profile data file to view. By default, it will automatically select the latest file, but others can be manually selected based not only on Xdebug&#8217;s default filename, but also by the actual PHP file profiled. Clicking the Update button will begin the analysis process (which may take some time depending on the size and complexity of the profile data) resulting in data being displayed in tabular format, which allows for drill down and sorting:</p>
<p style="text-align: center;"><img class="size-full wp-image-515 aligncenter" title="webgrind-screenshot" src="http://www.64bitjungle.com/wp-content/uploads/2009/04/webgrind-screenshot.jpg" alt="webgrind-screenshot" width="600" height="274" srcset="http://www.64bitjungle.com/wp-content/uploads/2009/04/webgrind-screenshot-300x137.jpg 300w, http://www.64bitjungle.com/wp-content/uploads/2009/04/webgrind-screenshot.jpg 600w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p style="text-align: left;">KCachegrind can be used for more detailed analysis, but for a quick view of potential bottlenecks in code, and considering its size, Webgrind is a fantastic starting point, which for me, picks out the most relevant data I need to analyse, which is sufficient 90% of the time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/programming/webgrind-cross-platform-xdebug-profiling-web-frontend/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>On the Edge: PHP IDE With Eclipse Galileo (3.5 M6) and PDT 2.1 M6</title>
		<link>http://www.64bitjungle.com/eclipse/on-the-edge-php-ide-with-eclipse-galileo-35-and-pdt-21-m6/</link>
		<comments>http://www.64bitjungle.com/eclipse/on-the-edge-php-ide-with-eclipse-galileo-35-and-pdt-21-m6/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 08:15:19 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[PDT]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=499</guid>
		<description><![CDATA[Eclipse 3.5 AKA Galileo is scheduled for release on the 24th June 2009, with PDT 2.1 shortly after on the 26th. Not being one to wait, and also getting some obscure pleasure from testing pre-release software, I decided to download and install the current stable Milestone, M6, of both Eclipse Galileo and PDT 2.1. The [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.64bitjungle.com/wp-content/uploads/2009/04/galileo-splash.png"><img class="alignleft size-full wp-image-501" title="galileo-splash" src="http://www.64bitjungle.com/wp-content/uploads/2009/04/galileo-splash.png" alt="galileo-splash" width="300" height="195" align="left" /></a>Eclipse 3.5 AKA Galileo is scheduled for release on the 24th June 2009, with PDT 2.1 shortly after on the 26th. Not being one to wait, and also getting some obscure pleasure from testing pre-release software, I decided to download and install the current stable Milestone, M6, of both Eclipse Galileo and PDT 2.1. The whole process is fairly simple, and even more so for <a href="http://www.eclipse.org/downloads/download.php?file=/tools/pdt/downloads/drops/2.1.0/S200903221625/pdt-all-in-one-linux-gtk-2.1.0M6.tar.gz" target="_blank">32 bit users</a>, who have an All-In-One package available, which can be downloaded, extracted and run easily.</p>
<p>64 Bit users have a little more work to do, but the process is not too difficult. First, we have to download the relevant packages, and all the dependencies:</p>
<ul>
<li><a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M6-200903130100/download.php?dropFile=eclipse-SDK-3.5M6-linux-gtk-x86_64.tar.gz" target="_blank">Eclipse gtk 3.5M6 200903130100</a> (64 Bit)</li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=/tools/pdt/downloads/drops/2.1.0/S200903221625/pdt-runtime-2.1.0M6.zip" target="_blank">PDT 2.1.0M6 Runtime</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=/modeling/emf/emf/downloads/drops/2.5.0/S200903161215/emf-runtime-2.5.0M6.zip" target="_blank">EMF 2.5.0M6 S200903161215</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=//technology/dltk/downloads/drops/R1.0/S-1.0M6-200903161640/dltk-core-sdk-S-1.0M6-200903161640-incubation.zip" target="_blank">DLTK (Core) R1.0 1.0M6 200903161640</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=//technology/dltk/downloads/drops/R1.0/S-1.0M6-200903161640/dltk-rse-sdk-S-1.0M6-200903161640-incubation.zip" target="_blank">DLTK (RSE) R1.0 1.0M6 200903161640</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=/tools/gef/downloads/drops/3.5.0/S200903161602/GEF-SDK-3.5.0M6.zip" target="_blank">GEF 3.5.0M6 S200903161602</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops/R3.1/S-3.1M6-20090318020101/wtp-wst-sdk-S-3.1M6-20090318020101.zip" target="_blank">WTP (WST) 20090318020101 R3.1 3.1M6</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=/modeling/emf/emf/downloads/drops/2.5.0/S200903161215/xsd-runtime-2.5.0M6.zip" target="_blank">XSD 2.5.0M6 S200903161215</a></li>
</ul>
<p>I downloaded them all to a directory called &#8220;Galileo&#8221; on my Desktop. The rest of the process uses the command line, so open up a Terminal, and navigate to the directory containing the downloaded files:</p>
<p><code>cd ~/Desktop/Galileo</code></p>
<p>The first task is to extract the main Eclipse package, and optionally move it to a new home &#8211; I chose to install it in ~/galileo/eclipse</p>
<p><code>tar -zxvf eclipse-SDK-3.5M6-linux-gtk-x86_64.tar.gz<br />
mkdir /home/[USERNAME]/galileo<br />
mv eclipse /home/[USERNAME]/galileo</code></p>
<p>Eclipse has utilised the <a href="http://wiki.eclipse.org/Equinox_p2_Getting_Started" target="_blank">p2 Installer</a>, and a &#8220;dropins&#8221; directory &#8211; which is scanned by the p2 Installer whenever Eclipse is executed &#8211; since Ganymede 3.4M6. If p2 finds any Features or Plugins, they are installed upon startup. The p2 Installer also allows placing plugins into their <a href="http://wiki.eclipse.org/Equinox_p2_Getting_Started#Supported_dropins_formats" target="_blank">own directory structures</a> within the dropins directory, making installing, organising and testing plugins much easier. Of course, this isn&#8217;t as easy as using the Update Manager, but it&#8217;s very convenient for our purposes of testing pre-release plugins, since they can easily be deleted/upgraded etc. Anyway, I digress &#8211; my original point was that we need to extract, and organise each of the packages downloaded above, then move them into the dropins directory:</p>
<p><strong>DLTK Core:</strong></p>
<p><code>cd ~/Desktop/galileo<br />
unzip dltk-core-sdk-S-1.0M6-200903161640-incubation.zip<br />
mkdir dltk-core &amp; mv eclipse/ dltk-core</code></p>
<p><strong>DLTK RSE:</strong></p>
<p><code>unzip dltk-rse-sdk-S-1.0M6-200903161640-incubation.zip<br />
mkdir dltk-rse &amp; mv eclipse/ dltk-rse</code></p>
<p><strong>EMF:</strong></p>
<p><code>unzip emf-runtime-2.5.0M6.zip<br />
mkdir emf &amp; mv eclipse/ emf</code></p>
<p><strong>GEF:</strong></p>
<p><code>unzip GEF-SDK-3.5.0M6.zip<br />
mkdir gef &amp; mv eclipse/ gef</code></p>
<p><strong>PDT:</strong></p>
<p><code>unzip pdt-runtime-2.1.0M6.zip<br />
mkdir pdt &amp; mv eclipse/ pdt</code></p>
<p><strong>WTP-WST:</strong></p>
<p><code>unzip wtp-wst-sdk-S-3.1M6-20090318020101.zip<br />
mkdir wtp &amp; mv eclipse/ wtp</code></p>
<p><strong>XSD:</strong></p>
<p><code>unzip xsd-runtime-2.5.0M6.zip<br />
mkdir xsd &amp; mv eclipse/ xsd</code></p>
<p>Finally, we need to move all these new directories containing the plugins, to the Eclipse dropins directory:</p>
<p><code>mv dltk-core dltk-rse emf gef pdt wtp xsd /home/[USERNAME]/galileo/eclipse/dropins/</code></p>
<p>That&#8217;s the installation complete. We now just need to run Eclipse with the -clean option. This may take a while as p2 scans the dropind watch directory for the new plugins:</p>
<p><code>cd /home/[USERNAME]/galileo/eclipse<br />
./eclipse -clean</code></p>
<p>Since it&#8217;s the first time we&#8217;re running Eclipse, it&#8217;ll also ask where the Workspace directory is located. I just chose /home/[USERNAME]/galileo/workspace to keep everything together.</p>
<p>Once Eclipse is loaded, click the &#8220;Workbench&#8221; button, then go to the Window -&gt; Open Perspective -&gt; Other menu, and select PHP.</p>
<p>The same method can be used to install and test the Nightly Builds of PDT 2.1 &#8211; just visit <a href="http://www.eclipse.org/pdt/downloads/" target="_blank">http://www.eclipse.org/pdt/downloads</a>, expand the latest link under the 2.1.0 Nightly Builds heading, download the latest build and the required dependencies, and install using the same methods outlined here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/eclipse/on-the-edge-php-ide-with-eclipse-galileo-35-and-pdt-21-m6/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>64 Bit Jungle&#8217;s Traffic Stats look like K2!</title>
		<link>http://www.64bitjungle.com/life/64-bit-jungles-traffic-stats-look-like-k2/</link>
		<comments>http://www.64bitjungle.com/life/64-bit-jungles-traffic-stats-look-like-k2/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 13:35:17 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=492</guid>
		<description><![CDATA[Thanks to StumbleUpon, and its Stumblers, who have sent me some great traffic, 64 Bit Jungle&#8217;s stats for the past couple of weeks bear an uncanny resemblance to the South face of K2! For those who don&#8217;t know, K2 is the second highest mountain on Earth, and located in the Karakoram section of the Himalaya, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Thanks to <a href="http://www.stumbleupon.com/url/www.64bitjungle.com/" target="_blank">StumbleUpon</a>, and its Stumblers, who have sent me some great traffic, 64 Bit Jungle&#8217;s stats for the past couple of weeks bear an uncanny resemblance to the South face of <a href="http://en.wikipedia.org/wiki/K2" target="_blank">K2</a>! For those who don&#8217;t know, K2 is the second highest mountain on Earth, and located in the Karakoram section of the Himalaya, on the border between Pakistan and Tashkurgan Tajik. How cool is that?</p>
<p style="text-align: center;"><img class="size-full wp-image-493 aligncenter" title="k2-stats" src="http://www.64bitjungle.com/wp-content/uploads/2009/04/k2-stats.jpg" alt="k2-stats" width="500" height="250" srcset="http://www.64bitjungle.com/wp-content/uploads/2009/04/k2-stats-300x150.jpg 300w, http://www.64bitjungle.com/wp-content/uploads/2009/04/k2-stats.jpg 500w" sizes="(max-width: 500px) 100vw, 500px" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/life/64-bit-jungles-traffic-stats-look-like-k2/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Merge two images with PHP and GD</title>
		<link>http://www.64bitjungle.com/programming/merge-two-images-with-php-and-gd/</link>
		<comments>http://www.64bitjungle.com/programming/merge-two-images-with-php-and-gd/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 12:09:46 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[GD]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=477</guid>
		<description><![CDATA[One of the things I really wanted to incorporate into the new site design template, was a nice big, I-really-want-people-to-click-on-this-and-Subscribe-to-my-RSS-Feed image/link/button (big [what the hell is] &#8220;Web 2.0&#8221; buttons seem to be the in thing at the moment &#8211; I didn&#8217;t want to feel left out&#8230;), which is located at the top right of the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-484" title="PHP &amp; GD" src="http://www.64bitjungle.com/wp-content/uploads/2009/04/phpgd125.jpg" alt="PHP &amp; GD" width="125" height="125" align="left" />One of the things I really wanted to incorporate into the new site design template, was a nice big, I-really-want-people-to-click-on-this-and-Subscribe-to-my-RSS-Feed image/link/button (big [what the hell is] &#8220;Web 2.0&#8221; buttons seem to be the in thing at the moment &#8211; I didn&#8217;t want to feel left out&#8230;), which is located at the top right of the site header, under the search box (in case you missed it). That&#8217;s easy enough, so what&#8217;s the point of this article? Well, I use <a href="http://feedburner.google.com" target="_blank">FeedBurner</a> to serve my RSS Feeds, and wanted to display the cool little badge they have, which shows the number of subscribers to my Feeds. I decided I wanted to include the FeedBurner stat counter in the new big &#8220;Look! I have a Web 2.0 site too&#8221; Subscribe to my RSS Feed button, since placing it elsewhere on the site&#8217;s layout, such as one of the sidebars, just didn&#8217;t feel right. Now, as with any problem, there are numerous ways this can be done, and no one solution is right. For instance, I could have set the &#8220;No, really, it <em>is</em> a Web 2.0 Site&#8221; Subscribe button as a background image to an (X)HTML &lt;div&gt; element, and then had the FeedBurner Badge ensconced therein, but since I had my <a href="http://www.64bitjungle.com/ubuntu/full-64-bit-or-32-bit-web-development-and-php-mysql-ide-with-eclipse-34-ganymede-and-pdt-2/" target="_self">PHP IDE</a> open at the time, I opted for the following method (which also happens to give me something to write about).</p>
<p>So, on to the code itself, which is actually rather embarrassingly simple:<br />
<code>&lt;?php<br />
//Set the Image source variables<br />
$backgroundSource = "http://www.64bitjungle.com/wp-content/themes/openbook22-en/images/rss-subscribe.jpg";<br />
$feedBurnerStatsSource = "http://feeds2.feedburner.com/~fc/64BitJungle?bg=151515&amp;fg=ffffff&amp;anim=0";<br />
//Create new images<br />
$outputImage = imagecreatefromjpeg($backgroundSource);<br />
$feedBurnerStats = imagecreatefromgif($feedBurnerStatsSource);<br />
//Grab width and height of the FeedBurner image<br />
$feedBurnerStatsX = imagesx($feedBurnerStats);<br />
$feedBurnerStatsY = imagesy($feedBurnerStats);<br />
//Merge the two images<br />
imagecopymerge($outputImage,$feedBurnerStats,156,50,0,0,$feedBurnerStatsX,$feedBurnerStatsY,100);<br />
//Output header<br />
header('Content-type: image/png');<br />
//send new image to browser<br />
imagepng($outputImage);<br />
imagedestroy($outputImage);<br />
?&gt;</code></p>
<p>Now for the breakdown of each line. First, I put the source images into a couple of variables &#8211; the background image, located at <a href="http://www.64bitjungle.com/wp-content/themes/openbook22-en/images/rss-subscribe.jpg" target="_blank">http://www.64bitjungle.com/wp-content/themes/openbook22-en/images/rss-subscribe.jpg</a>:</p>
<p style="text-align: center;"><img class="aligncenter" title="RSS Subscribe Background" src="http://www.64bitjungle.com/wp-content/themes/openbook22-en/images/rss-subscribe.jpg" alt="" width="245" height="70" /></p>
<p>and the FeedBurner badge, located at <a href="http://feeds2.feedburner.com/~fc/64BitJungle?bg=151515&amp;fg=ffffff&amp;anim=0" target="_blank">http://feeds2.feedburner.com/~fc/64BitJungle?bg=151515&amp;fg=ffffff&amp;anim=0</a>:</p>
<p style="text-align: center;"><img class="aligncenter" title="64 Bit Jungle Feedburner Stat Badge" src="http://feeds2.feedburner.com/~fc/64BitJungle?bg=151515&amp;fg=ffffff&amp;anim=0" alt="" width="88" height="26" /></p>
<p><code>$backgroundSource = "http://www.64bitjungle.com/wp-content/themes/openbook22-en/images/rss-subscribe.jpg";<br />
$feedBurnerStatsSource = "http://feeds2.feedburner.com/~fc/64BitJungle?bg=151515&amp;fg=ffffff&amp;anim=0";</code></p>
<p>The next significant lines, tell GD to create two new image link resources from the sources above:</p>
<p><code>$outputImage = imagecreatefromjpeg($backgroundSource);<br />
$feedBurnerStats = imagecreatefromgif($feedBurnerStatsSource);</code></p>
<p>The FeedBurner badge is delivered as a GIF, hence the <a href="http://php.net/imagecreatefromgif" target="_blank">imagecreatefromgif</a> function, and the background image is in jpeg format, so we call the <a href="http://php.net/imagecreatefromjpeg" target="_blank">imagecreatefromjpeg</a> function. Next, we grab the height and width of the FeedBurner image using the <a href="http://php.net/imagesx" target="_blank">imagesx</a> and <a href="http://php.net/imagesy" target="_blank">imagesy</a> functions, and stick the values in a coupe of variables:</p>
<p><code>$feedBurnerStatsX = imagesx($feedBurnerStats);<br />
$feedBurnerStatsY = imagesy($feedBurnerStats);</code></p>
<p>and then run the important function, <a href="http://php.net/imagecopymerge" target="_blank">imagecopymerge</a>, to combine the two images:</p>
<p><code>imagecopymerge($outputImage,$feedBurnerStats,156,50,0,0,$feedBurnerStatsX,$feedBurnerStatsY,100);</code></p>
<p>Finally, the image is output to the browser in PNG format:</p>
<p><code>header('Content-type: image/png');<br />
imagepng($outputImage);<br />
imagedestroy($outputImage);</code></p>
<p>That&#8217;s it &#8211; painfully simple, eh? Now all that&#8217;s required is to include the new image in some (X)HTML Markup &#8211; <strong>note</strong> that the src of the image, points to the PHP file, not to a traditional JPG etc.:</p>
<p><code>&lt;img src="http://www.64bitjungle.com/wp-content/themes/openbook22-en/subscribe-image.php" alt="Subscribe to RSS Feed" /&gt;</code></p>
<p>Et voila:</p>
<p style="text-align: center;"><img class="aligncenter" title="Subscribe to RSS Feed" src="http://www.64bitjungle.com/wp-content/themes/openbook22-en/subscribe-image.php" alt="" width="245" height="70" /></p>
<p>The font, by the way, is &#8220;SF Fedora&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/programming/merge-two-images-with-php-and-gd/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>64 Bit Jungle has a new skin!</title>
		<link>http://www.64bitjungle.com/life/64-bit-jungle-has-a-new-skin/</link>
		<comments>http://www.64bitjungle.com/life/64-bit-jungle-has-a-new-skin/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 16:44:51 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=452</guid>
		<description><![CDATA[Out with the old, in with the new. As mentioned in my last post, I loved the old i3Theme theme, but I got somewhat fidgety over the last week or so, and felt like a change, so made a change or two to the site! The new theme is based on the English version of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-453" title="xinophp" src="http://www.64bitjungle.com/wp-content/uploads/2009/03/xinophp.jpeg" alt="Out with the old" width="320" height="240" align="left" srcset="http://www.64bitjungle.com/wp-content/uploads/2009/03/xinophp-300x225.jpg 300w, http://www.64bitjungle.com/wp-content/uploads/2009/03/xinophp.jpeg 320w" sizes="(max-width: 320px) 100vw, 320px" />Out with the old, in with the new. As mentioned in my last post, I loved the old <a href="http://www.i3theme.com/" target="_blank">i3Theme</a> theme, but I got somewhat fidgety over the last week or so, and felt like a change, so made a change or two to the site!</p>
<p>The new theme is based on the English version of Open Book, developed by <a href="http://www.lyxia.org/" target="_blank">Jean-Baptiste Jung</a> and which in turn is based on <a href="http://www.darrenhoyt.com/2007/08/05/wordpress-magazine-theme-released/" target="_blank">Darren Hoyt&#8217;s Mimbo</a>. I&#8217;ve spent a little time making some modifications to the theme over the past few days, tweaking it to my liking, and I&#8217;ll probably spend more time over the coming weeks cleaning up some code, and tweaking some more. It&#8217;s always the same when you get a new toy.</p>
<p>The site should be easier to navigate. I still need to do a lot of work on streamlining categories, and optimising existing posts, their categories, tags and so on &#8211; although I&#8217;m somewhat reluctant, since I don;t want to damage any inbound links to existing posts!</p>
<p>That&#8217;s pretty much it. I hope you all like the new design, and find it easy to use. For the sake of sentimentality, there&#8217;s a screen shot of the old site design with this post&#8230;</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/life/64-bit-jungle-has-a-new-skin/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Changes are brewing&#8230;</title>
		<link>http://www.64bitjungle.com/life/changes-are-brewing/</link>
		<comments>http://www.64bitjungle.com/life/changes-are-brewing/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 15:07:30 +0000</pubDate>
		<dc:creator><![CDATA[Hodge]]></dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=413</guid>
		<description><![CDATA[Just a quick heads up about some changes I&#8217;m making to 64bitjungle.com &#8211; no, no, content will remain the same, and I&#8217;ll be writing as (in?)frequently as usual, but there will be a major design change possibly within the next couple of days. As much as I love the i3Theme, I&#8217;m getting fidgety, and feel [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Just a quick heads up about some changes I&#8217;m making to 64bitjungle.com &#8211; no, no, content will remain the same, and I&#8217;ll be writing as (in?)frequently as usual, but there will be a major design change possibly within the next couple of days.</p>
<p>As much as I love the <a href="http://www.i3theme.com/" target="_blank">i3Theme</a>, I&#8217;m getting fidgety, and feel like dressing 64bitjungle up in a new outfit. I&#8217;m just making some tweaks and changes to the new theme, trying to get everything the way I want it &#8211; could take a couple of hours, or a couple of days. We&#8217;ll see!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/life/changes-are-brewing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
