<?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>The Developer Day &#187; Tools</title>
	<atom:link href="http://www.thedeveloperday.com/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thedeveloperday.com</link>
	<description>Staying Curious</description>
	<lastBuildDate>Tue, 27 Jul 2010 17:33:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>PyDumpy &#8211; Partial sorted MySQL database dumps</title>
		<link>http://www.thedeveloperday.com/pydumpy-partial-sorted-mysql-database-dumps/</link>
		<comments>http://www.thedeveloperday.com/pydumpy-partial-sorted-mysql-database-dumps/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 17:37:28 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[partial]]></category>
		<category><![CDATA[pydumpy]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/?p=210</guid>
		<description><![CDATA[PyDumpy is a simple Python utility that might be helpful for developers struggling to get fast and partial database snapshots from production databases. It does it&#8217;s job by checking the database information schema to find out the approximate rows count available in each table and limits the table if needed to avoid dumping too much [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/pydumpy/">PyDumpy</a> is a simple <strong>Python</strong> utility that might be helpful for developers struggling to get fast and <strong>partial database snapshots</strong> from production databases. It does it&#8217;s job by checking the database <strong>information schema</strong> to find out the <strong>approximate rows count</strong> available in each table and limits the table if needed to avoid dumping too much data as some databases may have hundreds of gigabytes of data. It then passes all the limits information it gathers to <strong>mysqldump</strong> a tool created by MySQL to do the actual dumping.</p>
<p>Python does not have a built in package to connect to MySQL as for example PHP does and therefore PyDumpy relies on <a href="http://sourceforge.net/projects/mysql-python/">MySQL for Python</a> package to work. PyDumpy also relies on mysqladmin to do the actual dumping.</p>
<p>PyDumpy is very simple to use. For example to dump a maximum of 50 000 rows from each table type:</p>
<p><strong>./pydumpy.py -H host -u user -p pass -n dbname -limit=50000</strong></p>
<p>PyDumpy also allows to <strong>specify row limits</strong> and sorting preferences for each table specifically:</p>
<p><strong>./pydumpy.py -H host -u user -p pass -n dbname -limit=50000 &#8211;ask-to-limit &#8211;ask-to-sort</strong></p>
<p>If you find this tool useful please feel free to provide feedback by leaving a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/pydumpy-partial-sorted-mysql-database-dumps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP XML formatter tool rewrite</title>
		<link>http://www.thedeveloperday.com/php-xml-formatter-tool-rewrite/</link>
		<comments>http://www.thedeveloperday.com/php-xml-formatter-tool-rewrite/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 16:40:32 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[beautifier]]></category>
		<category><![CDATA[formatter]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/?p=89</guid>
		<description><![CDATA[A while ago I blogged about an XML Beautifier Tool which is able to tokenize an XML string and output it in human readable format. Strangely enough I noticed that I get quite a few pageviews from people searching for such a tool. Though this tool may be useful to a lot of people I think [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago I blogged about an <a title="xml beutifier tool" href="http://www.thedeveloperday.com/xml-beautifier-tool/">XML Beautifier Tool</a> which is able to tokenize an XML string and output it in human readable format. Strangely enough I noticed that I get quite a few pageviews from people searching for such a tool. Though this tool may be useful to a lot of people I think it is flawed and has serious issues with formatting, speed and memory consumption.</p>
<p>This inspired me to write a new version of XML formatter. It&#8217;s based on a SAX parser which is kind of &#8220;ugly&#8221; to implement and build around but because of it&#8217;s event based nature it&#8217;s super fast and has a very low memory footprint. The new version of the formatter shouldn&#8217;t peak higher in memory than 200 &#8211; 300kb even when the XML files start to weight over a megabyte. It also should not have any problems with indentation because it no longer tries to tokenize the XML itself and uses libxml to do the job. I also tried to make the tool documented and extendable.</p>
<p>It&#8217;s usage is really simple. All you have to do is initialize an object of XML_Formatter by passing an xml input stream, xml output stream and an array of options and call the format method. You might wonder why it requests input and output streams instead of a file name or a string. It does that to avoid high memory consumption. Here&#8217;s an example of how one might use XML_Formatter:</p>
<pre name="code" class="php:nogutter">require('XMLFormatter.php');

$input = fopen("input.xml", "r");
$output = fopen("output.xml", "w+");

try {
    $formatter = new XML_Formatter($input, $output);
    $formatter-&gt;format();
    echo "Success!";
} catch (Exception $e) {
    echo $e-&gt;getMessage(), "\n";
}</pre>
<p>Nevertheless this tool is quite powerful in what it can do  (I was able to format other website&#8217;s XHTML or tidied HTML sources) it also has some problems which are not actually related to the formatter but may seem odd to the user. The PHP xml parser does not understand such entities as &amp;nbsp; or unsescaped ampersands like in ?x=1&amp;y=1. So it&#8217;s the user&#8217;s responsibility to provide &#8220;correct&#8221; XMLs to the formatter.</p>
<p>Other than that I hope it will prove useful to someone. <a title="XML Formatter" href="http://www.thedeveloperday.com/uploads/XMLFormatter-0.3.0.tar.gz">Download the latest version of the XML_Formatter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/php-xml-formatter-tool-rewrite/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Building Drizzle on Cygwin or getting as far as possible</title>
		<link>http://www.thedeveloperday.com/building-drizzle-on-cygwin-or-getting-as-far-as-possible/</link>
		<comments>http://www.thedeveloperday.com/building-drizzle-on-cygwin-or-getting-as-far-as-possible/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 17:52:19 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[drizzle]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/?p=83</guid>
		<description><![CDATA[It&#8217;s been quite a while i have this sort of desire to offer my help for some opensource project i like. One of my most favorite candidates is Drizzle. I should say my knowledge of C is really poor and there&#8217;s a whole crazy world out there full of C applications and build tools. Nevertheless [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been quite a while i have this sort of desire to offer my help for some opensource project i like. One of my most favorite candidates is <a title="Drizzle" href="https://launchpad.net/drizzle">Drizzle</a>. I should say my knowledge of C is really poor and there&#8217;s a whole crazy world out there full of C applications and build tools.</p>
<p>Nevertheless i decided to atleast try and see if i would be able to build it and maybe change something, run some tests. As I am a Windows user i found out the only way for me to build Drizzle is through <a title="cygwin" href="http://www.cygwin.com/">Cygwin</a>. I started with installing the latest stable version of Cygwin 1.5.25-15. I must say that their installer is really nice but i would offer to add a package search feature. Might help when you want to install numerous packages.</p>
<p>So what&#8217;s next? I found this wiki page about <a title="Compiling drizzle" href="http://drizzle.org/wiki/Compiling">building drizzle</a> and figured first thing i should do is get <a href="http://bazaar-vcs.org/">Bazaar</a>. I installed the following packages using Cygwin installer:</p>
<ul>
<li>bison</li>
<li>bzr</li>
<li>gettext</li>
<li>readline</li>
<li>libpcre0</li>
<li>pcre</li>
<li>pcre-devel</li>
<li>libtoolize</li>
<li>gperf</li>
<li>e2fsprogs</li>
</ul>
<p>And then went on to get the Drizzle sources:</p>
<blockquote><p>mkdir ~/bzrwork<br />
bzr init-repo ~/bzrwork<br />
cd ~/bzrwork<br />
bzr branch lp:drizzle</p></blockquote>
<p>Now onto building. Here&#8217;s where all the fun begins.</p>
<p>Drizzle requires a tool named libevent which is not available through Cygwin installer and you must build it yourself. And still you can&#8217;t build libevent with the latest version of Cygwin because it lacks certain functionality. After some googling i found a patched <a title="ipv6 cygwin" href="http://monkeymail.org/archives/libevent-users/2009-January/001488.html">IPV6 version of Cygwin</a> that fixes these issues. Added the #define EAI_SYSTEM 11 to http.c and finally were able to ./configure &amp;&amp; make &amp;&amp; make install libevent.</p>
<p>You also need <a title="protobuf" href="http://code.google.com/p/protobuf/">protobuf</a> installed. And there&#8217;s no package for that either. Actually this protobuf is quite nice stuff. Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats.</p>
<p>Now that we seem to have all the packages installed we can start building drizzle. It should be as easy as this:</p>
<blockquote><p>cd drizzle<br />
./config/autorun.sh<br />
./configure<br />
make<br />
make install</p></blockquote>
<p><strong>It is not.</strong> First to be able to compile Drizzle you need to have gcc4. And even if you do, ./configure must need to know where it is. So we need to use additional flags CC and CXX. Then you need to show ./configure where libevent is installed by adding a flag &#8211;with-libevent-prefix=/usr/local or any other place you have it in. I also found a really ugly problem with warnings. I wasn&#8217;t able to compile drizzle because it stopped somwhere in gnulib complaining about some warnings that were treated as errors. Funny enough there is a sarcastic option to disable these warnings: &#8211;disable-pedantic-warnings. You also probably want to install Drizzle somwhere else than usual by using:  &#8211;prefix=/some/deploy/dir.</p>
<p>In the end you come up with something like this: </p>
<p>./configure CC=gcc-4 CXX=g++-4 &#8211;with-libevent-prefix=/usr/local &#8211;disable-pedantic-warnings &#8211;prefix=/some/deploy/dir</p>
<p>That&#8217;s how far i&#8217;ve got with it. Though i&#8217;m still not able to compile it.  I get an error somwhere in mystrings library that is related to some datatype casting issues. Hopefully i&#8217;ll be able to hack through this <img src='http://www.thedeveloperday.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/building-drizzle-on-cygwin-or-getting-as-far-as-possible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using pre commit hooks to integrate SVN with project management tools</title>
		<link>http://www.thedeveloperday.com/using-pre-commit-hooks-to-integrate-svn-with-project-management-tools/</link>
		<comments>http://www.thedeveloperday.com/using-pre-commit-hooks-to-integrate-svn-with-project-management-tools/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 14:15:16 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[post-commit]]></category>
		<category><![CDATA[pre-commit]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/using-pre-commit-hooks-to-integrate-svn-with-project-management-tools/</guid>
		<description><![CDATA[Most developer teams work with version control tools like SVN or Git. Most of those teams use certain project management tools like Basecamp or Fogbugz in our case. We came up with an idea to require developers to write down SVN revision numbers in commit messages. This helps to relate code changes to actual tasks if [...]]]></description>
			<content:encoded><![CDATA[<p>Most developer teams work with version control tools like <a title="subversion" href="http://subversion.tigris.org/">SVN</a> or <a title="git fast version control" href="http://git-scm.com/">Git</a>. Most of those teams use certain project management tools like <a title="basecamp project management tool" href="http://www.basecamphq.com/">Basecamp</a> or <a title="fogbugz project management" href="http://www.fogcreek.com/FogBUGZ/">Fogbugz</a> in our case.</p>
<p>We came up with an idea to require developers to write down SVN revision numbers in commit messages. This helps to relate code changes to actual tasks if such a need arises. To do that we&#8217;ve created a pre commit hook that requires developers to insert internal project management tool task number to the SVN commit comment field.</p>
<p>A pre commit hook can be a simple bash script. In our case it was this script:</p>
<pre name="code" class="bash:nogutter">#!/bin/sh
REPOS="$1"
TXN="$2
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK info -t "$TXN" "$REPOS" | grep -P 'FB:\s*\d{3,6}' &gt; /dev/null
if [ $? -ne 0 ]; then
echo -e "FogBugz case number is missing in the comment.\n" 1&gt;&amp;2
echo -e "Please add text 'FB: CASE_NUMBER' to your comment." 1&gt;&amp;2
exit 1
fi
exit 0</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/using-pre-commit-hooks-to-integrate-svn-with-project-management-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making your life easier with FirePHP</title>
		<link>http://www.thedeveloperday.com/making-your-life-easier-with-firephp/</link>
		<comments>http://www.thedeveloperday.com/making-your-life-easier-with-firephp/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 13:01:54 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firephp]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/making-your-life-easier-with-firephp/</guid>
		<description><![CDATA[I have been a user of FireBug for quite a long time and it saved me a lot of hours of pain debugging AJAX applications. When I see developers trying to figure out why their AJAX applications are not working without using FireBug it sometimes looks like an inexperienced woman trying to park a car [...]]]></description>
			<content:encoded><![CDATA[<p>I have been a user of <a href="http://getfirebug.com/" title="get firebug">FireBug</a> for quite a long time and it saved me a lot of hours of pain debugging AJAX applications. When I see developers trying to figure out why their AJAX applications are not working without using FireBug it sometimes looks like an inexperienced woman trying to park a car without any luck whatsoever.</p>
<p>And then recently i found <a href="http://www.firephp.org/" title="get firephp">FirePHP</a> while reading php|architect and it seems to me a such a nice tool it&#8217;s well worth to blog about it. If you want to debug ajax applications with FireBug you must do your own variable dumps which break the output. While FirePHP is capable of sending all this data through http headers without breaking the response of your json, xml, image responses. It also provides a very nice library for logging various stuff.</p>
<p>One of the things I really liked is the ability to easily view backtraces through FirePHP. Though it seems to me it can only view backtraces of your own defined local php function calls. It would be nice to see FirePHP integrated with <a href="http://www.xdebug.org/" title="xdebug php profiler and debugger">Xdebug.</a> Then it could do a full stack trace with all the parameters involved and even memory usage.</p>
<p>I also love the fact that there is a <a href="http://framework.zend.com/manual/en/zend.log.writers.html#zend.log.writers.firebug" title="zend log writer firebug">Zend_Log_Writer for Firebug</a>. It also can send information to firebug console. But it&#8217;s not as &#8220;sweet &amp; cute&#8221; like FirePHP.</p>
<p>I believe that FireBug, FirePHP, Xdebug are the must have tools for every php web developer. It saves more than a reasonable amount of time spent debugging.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/making-your-life-easier-with-firephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FogBugz Time Tracking Reports</title>
		<link>http://www.thedeveloperday.com/fogbugz-time-tracking-reports/</link>
		<comments>http://www.thedeveloperday.com/fogbugz-time-tracking-reports/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 13:10:49 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[fogbugz]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[tracking]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/fogbugz-time-tracking-reports/</guid>
		<description><![CDATA[We&#8217;re using FogBugz 6 for our daily project management needs. It&#8217;s a great tool in many ways and I think it will get only better on the way. But FogBugz lacks one quite important feature. There is no way to easily get a report how much time each of your developers spent on their tasks during [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re using FogBugz 6 for our daily project management needs. It&#8217;s a great tool in many ways and I think it will get only better on the way. But FogBugz lacks one quite important feature. There is no way to easily get a report how much time each of your developers spent on their tasks during the day or to see on what are they currently working. You might wonder why is that.</p>
<p>Well it&#8217;s quite funny but the company behind FogBugz doesn&#8217;t really want to provide this kind of functionality. Because they believe this would make people provide bad estimate data to FogBugz. You can <a href="http://www.joelonsoftware.com/items/2008/12/10.html" title="joel on software fogbugz time tracking">read more about it on Joel on Software blog post about amnesia</a>. They might be true about the bad data thing. But in my opinion they aren&#8217;t the ones who should decide how people should to use their tools. If people want to shoot themselves in foot &#8211; explain to them that it&#8217;s wrong and what will happen if they won&#8217;t listen and then <strong>let them</strong> shoot themselves in the foot.</p>
<p>We for example need to know on what tasks our developers were working during the day and what are they doing at any moment of time. And ofcourse seeing that a certain task took too long or that a developer was doing something without a task for 4 hours is very valuable. In other words if people know for what reason this tracking data is gathered they might as well not lie and provide good data. Don&#8217;t force your developers to have 8 hours long reports. You should know they spend atleast 2 hours doing whatever they like.</p>
<p>I tried to look for 3rd party solutions that would in some way allow us to have time tracking reports, but I didn&#8217;t like any of them and of course they are all commercial solutions. I got really excited to find out that FogBugz has an API that allows to do various actions. One of those actions allows to get a user time sheet report for a certain time interval. So I quickly developed a small php application that would login to the system with all the users we have and aggregate their time sheets. The application itself is no piece of art but I think it&#8217;s simple and it gets the basic job done. You are welcome to <a href="http://www.thedeveloperday.com/uploads/TimeReports.zip">try y fogbugz time tracking application</a> out yourself. It has a dependency to ZendFramework&#8217;s HTTP client. You can easily replace it with anything you like. To install the application you need to configure the index.php by providing the api url, fogbugz users list, current timezone, and<a href="http://www.thedeveloperday.com/wp-content/uploads/2009/01/fogbugz.jpg" title="fogbugz time tracking report"></a> path to the zend framework. If you have any problems or requests please feel free to contact me.</p>
<p>I&#8217;m also adding a screenshot if you care how the reports look:</p>
<p><a href="http://www.thedeveloperday.com/wp-content/uploads/2009/01/fogbugz.jpg" title="fogbugz time tracking report"><img src="http://www.thedeveloperday.com/wp-content/uploads/2009/01/fogbugz.thumbnail.jpg" alt="fogbugz time tracking report" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/fogbugz-time-tracking-reports/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web Applications on Mobile Phones using PHP</title>
		<link>http://www.thedeveloperday.com/php-tools-mobile-web-applications/</link>
		<comments>http://www.thedeveloperday.com/php-tools-mobile-web-applications/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 21:20:30 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/php-tools-mobile-web-applications/</guid>
		<description><![CDATA[I&#8217;m a subscriber to a PHP magazine php&#124;architect. I still haven&#8217;t finished reading the july edition. In the past I didn&#8217;t have to do much with web applications and mobile phones. Recently though we had to make a certain part of a bigger application we made to be available on blackberry. The problem of course we faced [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a subscriber to a PHP magazine <a href="http://www.phparch.com/" title="php architect magazine">php|architect</a>. I still haven&#8217;t finished reading the july edition. In the past I didn&#8217;t have to do much with web applications and mobile phones. Recently though we had to make a certain part of a bigger application we made to be available on <a href="http://www.blackberry.com/" title="blackberry mobile phone">blackberry</a>. The problem of course we faced is of course how to identify if the current agent is a mobile phone. And that&#8217;s how we found <a href="http://wurfl.sourceforge.net/" title="Device description repository">WURFL</a>.WURFL aka Wireless Universal Resource File is a device description repository or to make it simple it&#8217;s a big library of various mobile phones abilities and attributes mapped to user agents.</p>
<p>What does this have to do with php|architect? Well in the<a href="http://www.phparch.com/c/magazine/issue/78" title="2008 july edition php architect"> 2008 july edition of php|architect</a> there is a really lovely article about web application tools for mobile phones. I found there are two more PHP tools that a mobile web applications developer should know of. It&#8217;s <a href="http://www.tera-wurfl.com/" title="mysql database of wurfl">Tera-WURFL</a> and <a href="http://hawhaw.de/" title="HTML and WML hybrid adapted Webserver">HAWHAW</a>. And again to make it simple Tera-WURFL is a mysql database for WURFL to make WURFL super fast and HAWHAW is a object oriented toolkit to create mobile web applications. Basicly with HAWHAW you can construct pages using objects and then HAWHAW renders them to apropriate formats such as WML, XHTML MP, XHTML using the data it gets from Tera-WURFL. According to the php architect article Wikipedia is using HAWHAW.</p>
<p>I don&#8217;t have to do much with mobile web applications I think it&#8217;s great that these kind of tools are available because I know it is easy to develop these kinds of applications if I or others have to.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/php-tools-mobile-web-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google PageRank PHP check on Linux</title>
		<link>http://www.thedeveloperday.com/google-page-rank-check-php/</link>
		<comments>http://www.thedeveloperday.com/google-page-rank-check-php/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:44:35 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[pagerank]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/google-page-rank-check-php/</guid>
		<description><![CDATA[In my previous blog post I wrote that me and my friend probably developed a first working google page rank check php implementation on linux. Seems I was wrong. Jan Bogutzki has an implementation on his functions-online.com website that also works on linux. He sent me his version of implementation and I must admit it looks cleaner [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous blog post I wrote that me and my friend probably developed a first working google page rank check php implementation on linux. Seems I was wrong. <a href="http://www.functions-online.com/en/" title="PHP functions online">Jan Bogutzki</a> has an implementation on his functions-online.com website that also works on linux. He sent me his version of implementation and I must admit it looks cleaner and more simple than ours. You can <a href="http://www.thedeveloperday.com/uploads/gprcheck.rar" title="google page rank check php implementation">download the copy</a> he sent me if you are after a better approach.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/google-page-rank-check-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Google Page Rank Class Working on Linux</title>
		<link>http://www.thedeveloperday.com/php-google-pagerank-class-implementation/</link>
		<comments>http://www.thedeveloperday.com/php-google-pagerank-class-implementation/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 14:48:45 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[pagerank]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/php-google-pagerank-class-implementation/</guid>
		<description><![CDATA[If you found this blog post on google while searching for a php google page rank class implementation that works on non windows machines then it is your lucky day! You found it! Congratulations! To my knowledge this is the first available php google page rank retrieval implementation that works on any platform. We have [...]]]></description>
			<content:encoded><![CDATA[<p>If you found this blog post on <a href="http://www.google.com" title="Google search engine">google</a> while searching for a php google <a href="http://en.wikipedia.org/wiki/PageRank" title="PageRank">page rank</a> class implementation that works on non windows machines then it is your lucky day! You found it! Congratulations!</p>
<p>To my knowledge this is the first available php google page rank retrieval implementation that works on any platform. We have spent hours searching for such a thing online but we couldn&#8217;t find it. There are some php google pagerank tools online, they all work, but they are all limited to windows machines.</p>
<p>Why is so you might ask? Well originally the google pagerank retrieval algorigthm is not public. But google made a browser plugin that was able to calculate the google pagerank for any website you visit. So some freaky geeks dissasembled that plugin and got their hands on the google page rank calculation implementation.  Then this implementation was ported to various languages such as Javascript, PHP. The google page rank implementation is sort of protected by calculating a &#8220;unique&#8221; hash of the given URL. And here the MAGIC begins.</p>
<p>To calculate this hash the algorithm overflows 32bit integers on XOR operations. Aaaand.. 32bit XOR overflows work quite differently on windows and linux in PHP! If you overflow a 32bit integer on windows it just truncates the result to 32 left most bits and returns a new integer. SMART! And on linux XOR overflow just returns the MAX INTEGER value. What did we do? Oh.. We created a simple class to simulate windows 32bit XOR operations overflow using the PHP gmp extension. Tadam! We have also cleaned up the code, documented and made it look shiny <img src='http://www.thedeveloperday.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>You can download <a href="http://www.thedeveloperday.com/uploads/GooglePageRank.php.zip" title="PHP Google Page Rank Class Implementation">PHP Google Pagerank Class</a> and use it at your own will. I hope this will help you. If it did just leave a comment and say thanks because we are such nice guys to help you out <img src='http://www.thedeveloperday.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>To use the class try:</p>
<p><code>require_once("GooglePageRank.php");<br />
echo GooglePageRank::get("http://www.yahoo.com");<br />
</code></p>
<p>Happy Programmers Day!</p>
<p>p.s  <strong>Google™ search engine</strong> and <strong>PageRank™ algorithm</strong> are the <strong>trademarks of Google Inc.</strong></p>
<p><strong>Update:</strong> PageRank class relies on the GMP extension which is not always enabled by default. On Linux Ubuntu it comes as a separate package php5-gmp.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/php-google-pagerank-class-implementation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux like terminal on Windows!</title>
		<link>http://www.thedeveloperday.com/linux-like-terminal-windows/</link>
		<comments>http://www.thedeveloperday.com/linux-like-terminal-windows/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 18:30:26 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/linux-like-terminal-windows/</guid>
		<description><![CDATA[Have you ever wanted to make your CMD window fullscreen? You did? And it didn&#8217;t work? Too bad. Have you ever wanted to search something in your files using grep, awk, less, sort? Have you ever tried to mass rename your files ? You did? And it didn&#8217;t work? Too bad.Be worried no more! First you [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left">Have you ever wanted to make your CMD window fullscreen? You did? And it didn&#8217;t work? Too bad. Have you ever wanted to search something in your files using grep, awk, less, sort? Have you ever tried to mass rename your files ? You did? And it didn&#8217;t work? Too bad.Be worried no more! First you need <a href="http://www.cygwin.com/" title="Cygwin homepage">Cygwin</a>. Cygwin is a Linux-like environment for Windows. It also provides you a lot of tools which provide linux look and feel. Install cygwin while changing none of the default settings. Now you can do something like this:</p>
<p><a href="http://www.thedeveloperday.com/wp-content/uploads/2008/09/cygwin_terminal.jpg" title="Cygwin Terminal"><img src="http://www.thedeveloperday.com/wp-content/uploads/2008/09/cygwin_terminal.thumbnail.jpg" alt="Cygwin Terminal" title="Cygwin Terminal" /></a> 
<p style="text-align: left">Notice that this is a simple CMD like window but it now has some nice colors and new shiny tools.Now in order to make it even more cool you need a tool named <a href="http://code.google.com/p/puttycyg/" title="putty cygwin terminal">PuTTYcyg</a>. PuTTYcyg is a patched version of PuTTY that, in addition to telnet, rlogin, ssh, and serial connections, can also be used as a local Cygwin terminal instead of the Windows console. Download the package and unzip it somwhere. I put it in C:\Program Files\puttycyg. Now double click on a file named putty.exe. Now fill everything as in the image bellow and press save.</p>
<p> <a href="http://www.thedeveloperday.com/wp-content/uploads/2008/09/local.jpg" title="cygwin putty configuration"><img src="http://www.thedeveloperday.com/wp-content/uploads/2008/09/local.thumbnail.jpg" alt="cygwin putty configuration" /></a> 
<p style="text-align: left">Now make a shortcut of this putty.exe on your Desktop. And change it&#8217;s properties like this:</p>
<p><a href="http://www.thedeveloperday.com/wp-content/uploads/2008/09/terminal.jpg" title="cygwin putty terminal shortcut"><img src="http://www.thedeveloperday.com/wp-content/uploads/2008/09/terminal.thumbnail.jpg" alt="cygwin putty terminal shortcut" /></a>  
<p style="text-align: left">Click apply and you are ready to go myfriend! Double click on the shortcut and you should be able to do thins like this including full screen resize yay!</p>
<p><a href="http://www.thedeveloperday.com/wp-content/uploads/2008/09/terminal2.jpg" title="putty cygwin terminal"><img src="http://www.thedeveloperday.com/wp-content/uploads/2008/09/terminal2.thumbnail.jpg" alt="putty cygwin terminal" /></a> 
<p style="text-align: left">Now .. Begone CMD!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/linux-like-terminal-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
