<?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>phoenixheart - portfolio &#38; more &#187; plugin</title> <atom:link href="http://www.phoenixheart.net/tag/plugin/feed/" rel="self" type="application/rss+xml" /><link>http://www.phoenixheart.net</link> <description>phoenixheart - portfolio &#38; more</description> <lastBuildDate>Wed, 25 Aug 2010 03:02:03 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <script type="text/javascript">/*<![CDATA[*/if(typeof Meebo=="undefined"){Meebo=function(){(Meebo._=Meebo._||[]).push(arguments)};(function(q){var args=arguments;if(!document.body){return setTimeout(function(){args.callee.apply(this,args)},100);}var d=document,b=d.body,m=b.insertBefore(d.createElement('div'),b.firstChild);s=d.createElement('script');m.id='meebo';m.style.display='none';m.innerHTML='<iframe id="meebo-iframe"></iframe>';s.src='http'+(q.https?'s':'')+'://'+(q.stage?'stage-':'')+'cim.meebo.com/cim/cim.php?network='+q.network;b.insertBefore(s,b.firstChild);})({network:'phoenixheartnet_bo16we'});}/*]]>*/</script> <item><title>Here we go &#8211; CDN Rewrites</title><link>http://www.phoenixheart.net/2009/09/here-we-go-cdn-rewrites/</link> <comments>http://www.phoenixheart.net/2009/09/here-we-go-cdn-rewrites/#comments</comments> <pubDate>Thu, 24 Sep 2009 10:15:34 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Freebies]]></category> <category><![CDATA[Server stuffs]]></category> <category><![CDATA[cdn-rewrites]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=325</guid> <description><![CDATA[Right after Free CDN was released, I got a request to enhance the plugin to support commercial Content Delivery Networks &#8211; you know, those big guys like Akamai, Limelight, EdgeCast, Velocix etc. The implementation is not too complicated: specify an origin host, and rewrite it into a destination host. That origin is of course usually [...]]]></description> <content:encoded><![CDATA[<p>Right after Free CDN was released, I got a request to enhance the plugin to support commercial Content Delivery Networks &#8211; you know, those big guys like Akamai, Limelight, EdgeCast, Velocix etc. The implementation is not too complicated: specify an origin host, and rewrite it into a destination host. That origin is of course usually http://www.a-busy-site.com, and the destination is something a <a
href="http://www.valuecdn.com" class="qc">Content Delivery Network</a> would provide you with: http://static.a-busy-site.com, or http://images.a-busy-site.com, or http://a-static-host.com etc. This way, all static contents will be served from that CDN host.</p><p>So, instead of developing the enhancement as a new feature for Free CDN, I decided to create a new plugin called CDN Rewrites. <span
id="more-325"></span>The implementation was not really a breeze, but in the end it worked rather smoothly.</p><p>I would like to thank <a
href="http://www.ezsite.us/">Mike Colburn</a> for the idea and being so kind enough to help me with all the documents and testing. Without him this plugin would never see the light.</p><p>Head <a
href="/wp-plugins/cdn-rewrites/">here for the plugin&#8217;s official page</a>.</p> <img
style='display:none' id="post-325-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2009/09/here-we-go-cdn-rewrites/',title:'Here we go &#8211; CDN Rewrites',tweet:'Right after Free CDN was released, I got a request to enhance the plugin to support commercial Conte',description:'Right after Free CDN was released, I got a request to enhance the plugin to support commercial Conte'})"><script type='text/javascript'>document.getElementById("post-325-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2009/09/here-we-go-cdn-rewrites/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>First version of Free CDN WP plugin released!</title><link>http://www.phoenixheart.net/2009/09/free-cdn-first-version-released/</link> <comments>http://www.phoenixheart.net/2009/09/free-cdn-first-version-released/#comments</comments> <pubDate>Sun, 13 Sep 2009 17:03:10 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Freebies]]></category> <category><![CDATA[Server stuffs]]></category> <category><![CDATA[free CDN]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=314</guid> <description><![CDATA[Office life has its advantages and disadvantages. On one hand, it keeps me so exhausted and leaves me so little free time for other hobbies &#8211; I&#8217;m talking about my books, my December Flower guitar self-training, my photographic stuffs etc. On the other hand, it does improve my knowledge and skills with all those working [...]]]></description> <content:encoded><![CDATA[<p>Office life has its advantages and disadvantages. On one hand, it keeps me so exhausted and leaves me so little free time for other hobbies &#8211; I&#8217;m talking about my books, my <a
href="http://www.youtube.com/watch?v=sLPXAcAsLgo">December Flower</a> guitar self-training, my photographic stuffs etc. On the other hand, it does improve my knowledge and skills with all those working requirements.</p><p>I&#8217;m rather lucky to be working as an R&amp;D guy in my current company, thus got a (legal) chance to (legally) spare a lot of time for (sometimes illegal) new and cool stuffs. Among them is <abbr
title="Content Delivery Network">CDN</abbr>, a solution to distribute (mostly static) contents across a network and let end-user access their copies from the cloud instead of the central server itself, thus reduces bottle neck problems during peak hours. To enterprise websites like those of Microsoft, Yahoo, Amazon, eBay etc., this is vital, as the number of concurrent visitors and downloads very frequently exceeds millions. Some of them build their own CDN, when the others rather hire third party services to handle the load to save time and money. Most well known among these 3rd services are properly <a
href="http://www.akamai.com">Akamai</a> and <a
href="http://www.limelightnetworks.com/">Limelight</a>, though there is a vast of them, naturally. For instance, Windows 7 downloads (~2GB each!) were served through Akamai network, when the live internet broadcast of Barrack Obama&#8217;s inaugural speech was done with help from Limelight.<span
id="more-314"></span></p><p>CDN&#8217;s are great as they save websites from heavy loads thus reduces bandwidth and shorten that number on the webmasters&#8217; monthly bills. So why aren&#8217;t they used so popularly? Well, because in general they are expensive, as you can tell. Depending on each CDN&#8217;s price table and the data size, the cost of using a CDN may range from thousands a month, which is unaffordable for like 98% of our blog owners despite of being just a peanut to Yahoo and Microsoft. So unless he is earning millions from selling Photoshop brushes or Google ads on his personal blog, a blog owner would close his eyes and wait for that Digg wave to calm down instead of (dare) using a CDN and survive the typhoon. So the rich keep getting richer and the poor keep remaining poor, life is bitter huh?</p><p>Not really (whoo hoo!). Akamai and Limelight are big, but they are not the only. Aside of those commerical CDN&#8217;s, there are some free ones, like <a
href="http://www.coralcdn.org/">Coral</a>, which provide us with free CDN &#8211; means free bandwidth. Coral CDN uses peer-to-peer technology in its CDN architecture, thus eliminates the need of maintaining a system of expensive server clusters while still offering an CDN solution with acceptable speed and stability. Long story shot, we small blog owners can also have CDN (on pair with Microsoft, yay!).</p><p>It&#8217;s dead simple to get a content (being any of types, but most commonly static contents like images, video clips, music tracks, css, java scripts) served thought Coral. All you have to do is appending <em
style="color:#f00; font-weight:bold">.nyud.net</em> to the host name of that content&#8217;s URL and call it done. Try it <a
href="http://www.phoenixheart.net.nyud.net">here</a>, <a
href="http://www.thica.net.nyud.net">here</a>, and <a
href="http://www.digg.com.nyud.net">here</a> to see it yourself. The first time requested, the content is retrieved from the original server and cached on Coral&#8217;s distributed servers. From the second request on, visitors will get a copy of that content from Coral. If the content weights 100KB in size, you&#8217;ve just saved 100KB bandwidth. If you have 1000 requests, it&#8217;s 100MB of bandwidth saved. Piece of cake.</p><p>So I was very excited getting to know about Coral and free P2P CDN&#8217;s. Then I told myself: ok, it&#8217;s time for another WordPress plugin &#8211; a &#8220;Free CDN&#8221; one which will rewrite all static URLs (being images, css, js etc.) to take advantage of Coral. Easier said than done, but nonetheless, I managed to get it done (thank you very much <a
href="http://omninoggin.com/">Thaya</a>, for the great help on how to capture the whole WordPress HTML stream). Today is the day <a
href="/wp-plugins/free-cdn/">Free CDN WordPress plugin</a> is born, cheers! The concept behind this plugin is simple: it looks for static contents inside a WordPress page and rewrites them into Coral-ready format. For example, <em>http://www.yourblog.com/wp-contents/themes/one-room/images/sprites.png</em> will be rewritten into <em>http://www.yourblog.com<strong>.nyud.net</strong>/wp-contents/themes/one-room/images/sprites.png</em> and gets handled by Coral network.</p><p>If your blog is rather small and you don&#8217;t have to worry about bandwidth fee / peak times, then it may be not worth your time to lay an eye on this plugin. But if you have a big enough blog with tens of thousands of views a day, and the bandwidth fee is giving you some good nightmare, and the bottle necks are causing you some headaches, then why not <a
href="/wp-plugins/free-cdn/">give Free CDN a try</a>?</p> <img
style='display:none' id="post-314-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2009/09/free-cdn-first-version-released/',title:'First version of Free CDN WP plugin released!',tweet:'Office life has its advantages and disadvantages. On one hand, it keeps me so exhausted and leaves m',description:'Office life has its advantages and disadvantages. On one hand, it keeps me so exhausted and leaves m'})"><script type='text/javascript'>document.getElementById("post-314-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2009/09/free-cdn-first-version-released/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>Referrer Detector 4.0 is out!</title><link>http://www.phoenixheart.net/2009/05/referrer-detector-4-is-out/</link> <comments>http://www.phoenixheart.net/2009/05/referrer-detector-4-is-out/#comments</comments> <pubDate>Tue, 12 May 2009 16:51:48 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Freebies]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[Referrer Detector]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=290</guid> <description><![CDATA[Finally I&#8217;ve made it! Referrer Detector version 4.0 is now out! I decided to mark this as a major version increment because of these reasons: The code has been COMPLETELY re-written from scratch. As of the previous versions, it was one big file that handled everything from admin to front-end control. Needless to say how [...]]]></description> <content:encoded><![CDATA[<p>Finally I&#8217;ve made it! Referrer Detector version 4.0 is now out! I decided to mark this as a major version increment because of these reasons:</p><ol><li>The code has been COMPLETELY re-written from scratch. As of the previous versions, it was one big file that handled everything from admin to front-end control. Needless to say how inconvenient this approach had become when bug fixes and new features were added&#8230; too bad that I have decided to throw all away and build a brand new <abbr
title="Object Oriented Programming">OOP</abbr> Referrer Detector. Well, it was a looong and tough way, but I&#8217;ve never looked back!</li><li>The data are now in (ahem) database. I was thinking (and convincing myself) that a JavaScript file is faster, as it reduces the number of database requests. But with time, it becomes too bloat and too hard for me to track bugs as well as to add improvements. So I told myself: hell with this sacrifice, I better obey the power of MySQL.</li><li>The biggest new feature that I&#8217;m really excited of is the ability to add <em>localized messages</em>. In the past, your users were welcomed the the same (English) greetings regardless of which country they were from. Now you can specify a localized message for those from Vietnam, another for Brazilians, Portuguese, and so on. The plugin will try to detect users&#8217; country and decide which message to show. Isn&#8217;t it cool?</li><li>The second new feature is the ability to backup and restore stuffs, including entries, excluded URLs, and options. For restoring, in order to keep the administration panel AJAX&#8217;ed, I go with <a
href="http://www.uploadify.com/">Uploadify</a>, a wonderful jQuery file upload plugin. This plugin uses a bit of Flash, but no worries, it will still works if your browser has no Flash player installed.</li><li>For the Stats panel, there were two problems that caused me much of headache. One is Google TLDs which are hundreds in number thus totally ruined the chart. The other is the chart itself: PHP/SWF Charts library is too darn heavy and often broke my SVN commits. So I wrote some code to group those annoying TLDs into one group, and use <a
href="http://code.google.com/apis/chart/">Google Chart</a> instead.</li><li>In the admin panel, I added a &#8220;Support this plugin!&#8221; tab. Just a bit about myself, like &#8220;Follow me on Twitter&#8221;. Hope you aren&#8217;t pissed of with this change.</li></ol><p>As usual, the plugin is downloadable at <a
href="http://wordpress.org/extend/plugins/referrer-detector/">WordPress Codex</a>. Your comments are always welcome here and in the <a
href="/wp-plugins/referrer-detector/">plugin page</a>. Let me know if you&#8217;re happy with the new version, or about the bugs you encounter!</p> <img
style='display:none' id="post-290-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2009/05/referrer-detector-4-is-out/',title:'Referrer Detector 4.0 is out!',tweet:'Finally I&#8217;ve made it! Referrer Detector version 4.0 is now out! I decided to mark this as a ma',description:'Finally I&#8217;ve made it! Referrer Detector version 4.0 is now out! I decided to mark this as a ma'})"><script type='text/javascript'>document.getElementById("post-290-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2009/05/referrer-detector-4-is-out/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>WP-DBManager&#8217;s vulnerability</title><link>http://www.phoenixheart.net/2009/01/wp-dbmanager-vulnerability/</link> <comments>http://www.phoenixheart.net/2009/01/wp-dbmanager-vulnerability/#comments</comments> <pubDate>Mon, 05 Jan 2009 09:12:56 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Blahblahblah]]></category> <category><![CDATA[Featured]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[vulnerability]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=199</guid> <description><![CDATA[I&#8217;ve been using WP-DBManager for quite a while now, and in short it&#8217;s a very good &#8211; if not the best &#8211; WordPress plugin to help you manage your database &#8211; with just one click, you can backup, restore, repair, optimize, and do other tasks. Essential plugin, really. But today I noticed this DANGEROUS thing, [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;ve been using <a
href="http://lesterchan.net/portfolio/programming/php/">WP-DBManager</a> for quite a while now, and in short it&#8217;s a very good &#8211; if not the best &#8211; WordPress plugin to help you manage your database &#8211; with just one click, you can backup, restore, repair, optimize, and do other tasks. Essential plugin, really.</p><p>But today I noticed this DANGEROUS thing, and I want to announce it so that everybody can fix. By default, sql dumb data are saved into files under a directory named <strong>backup-db</strong> inside <strong>wp-content</strong>. And <em>this directory has absolutely no protection</em>. That means you can freely browse anyone&#8217;s wp-content/backup-db/ content and download the data file.</p><p>Now, I did a search of &#8220;index of /wp-content/backup-db&#8221; on Google. From the popularity of WordPress and this plugin, you can tell how many results I got. Yes, thousands of results were returned, each was a browsable and downloadable backup directory among thousands of different WordPress-powered websites.<span
id="more-199"></span></p><p>Need I stress on how serious this problem is? It&#8217;s about passwords (encrypted or not), email addresses, other private data, even credit card numbers for business blogs. This is serious.</p><h4>The fixes</h4><p>There are many fixes for this problem. You can</p><ul><li>Change the backup directory, or</li><li>Upload a index.html file into backup-db directory to prevent directory browsing, or</li><li>Use .htaccess to prohibit downloading contents from the directory etc.</li></ul><p>For the sake of WordPress users, please spread this. I&#8217;ve also contacted Lester Chan, the author of the plugin, so that he can release a fix.</p><h4>Updates</h4><p>It seems I missed the instruction from the author before installing the plugin <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br
/> But anyway, I believe most of WP users just install the plugins without reading, especially when they just work out of the box. And as the downloadable sql dumps are still out there, I&#8217;m waiting for a more strict fix instead of readme file&#8217;s instruction.</p><p>UPDATE: Starting from version 2.50, the plugin author added a check for a proper .htaccess file in the backup folder for security purpose. Way to go!</p> <img
style='display:none' id="post-199-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2009/01/wp-dbmanager-vulnerability/',title:'WP-DBManager&#8217;s vulnerability',tweet:'I&#8217;ve been using WP-DBManager for quite a while now, and in short it&#8217;s a very good &#8211',description:'I&#8217;ve been using WP-DBManager for quite a while now, and in short it&#8217;s a very good &#8211'})"><script type='text/javascript'>document.getElementById("post-199-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2009/01/wp-dbmanager-vulnerability/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Top 1000 WordPress plugin authors &#8211; I&#8217;m at the bottom :D</title><link>http://www.phoenixheart.net/2008/12/top-1000-wordpress-plugin-authors-im-at-the-bottom/</link> <comments>http://www.phoenixheart.net/2008/12/top-1000-wordpress-plugin-authors-im-at-the-bottom/#comments</comments> <pubDate>Wed, 31 Dec 2008 09:43:07 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Blahblahblah]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=186</guid> <description><![CDATA[White Shadow has recently compiled a list of top 1000 WordPress plugin authors based on number of downloads. There are 2190 authors in total, and I rank at 843th position with 1328 downloads on 3 plugins. Not very impressive right? Nevertheless, I&#8217;ve just taken part in this community for 2 months, so I would consider [...]]]></description> <content:encoded><![CDATA[<p><a
href="">White Shadow</a> has recently compiled a list of <a
href="http://w-shadow.com/blog/2008/12/28/top-10-wordpress-plugin-developers/">top 1000 WordPress plugin authors</a> based on number of downloads. There are 2190 authors in total, and I rank at 843th position with 1328 downloads on 3 plugins. Not very impressive right? <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Nevertheless, I&#8217;ve just taken part in this community for <a
href="http://www.phoenixheart.net/2008/10/digg-this-o-mine/">2 months</a>, so I would consider this a small success.</p><p>And this is a win-win.</p> <img
style='display:none' id="post-186-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2008/12/top-1000-wordpress-plugin-authors-im-at-the-bottom/',title:'Top 1000 WordPress plugin authors &#8211; I&#8217;m at the bottom :D',tweet:'White Shadow has recently compiled a list of top 1000 WordPress plugin authors based on number of do',description:'White Shadow has recently compiled a list of top 1000 WordPress plugin authors based on number of do'})"><script type='text/javascript'>document.getElementById("post-186-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2008/12/top-1000-wordpress-plugin-authors-im-at-the-bottom/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>AJAX Random Posts &#8211; a new WP plugin (of mine)</title><link>http://www.phoenixheart.net/2008/12/ajax-random-posts/</link> <comments>http://www.phoenixheart.net/2008/12/ajax-random-posts/#comments</comments> <pubDate>Mon, 15 Dec 2008 09:46:10 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Freebies]]></category> <category><![CDATA[Server stuffs]]></category> <category><![CDATA[ajax]]></category> <category><![CDATA[php]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=164</guid> <description><![CDATA[Firstly, I&#8217;d like to show off a bit: hey I&#8217;ve caught up with the crowd, now both of my sites (this one and Thica.net) are upgraded to WordPress 2.7 &#8211; well, let&#8217;s hope that it is not prone to new vulnerabilities. The most significant change is the admin section &#8211; for the first time in [...]]]></description> <content:encoded><![CDATA[<p><span
class="drop-cap">F</span>irstly, I&#8217;d like to show off a bit: hey I&#8217;ve caught up with the crowd, now both of my sites (this one and <a
href="http://www.thica.net">Thica.net</a>) are upgraded to WordPress 2.7 &#8211; well, let&#8217;s hope that it is not prone to new vulnerabilities. The most significant change is the admin section &#8211; for the first time in my life I have to admit that it looks even better than the front-end. Is it good, or is it bad (my baby), I don&#8217;t know, but if you are using my plugin(s) and are worried about the compatibility, rest assured: they all work in this new versions. That is, of course, unless you tell me that they&#8217;re not.</p><p>But hey, this post is not about WordPress 2.7! There are hundreds of blogs out there babbling about it already! If you&#8217;re a careful reader (definition: a careful reader is someone who reads something from the title on), you probably know it, I&#8217;ve managed to used some free time to write another WP plugin called <a
href="http://wordpress.org/extend/plugins/ajax-random-posts/">AJAX Random Posts</a>, and this post is more or less its homepage.</p><p>As its name is saying, AJAX Random Posts (AjaxRP) display a list of randomly chosen posts from your WordPress-powered blog. Yeah, it&#8217;s nothing new, such a concept is very popular and has been greatly done by several plugins before. The limitation of those plugins however, is the lack of cache plugins compatibility. For example, you install a random post plugin. Then a visitor comes to post A, and under a post he&#8217;s served with 5 other random ones, let&#8217;s say C, Y, M, K, and J. If you have WP-Super Cache enabled on your blog, the post A is cached for, like, one hour. During that one hour, <em>any</em> visitor that reads post A will be served with its <em>cached</em> version, with C, Y, M, K, and J following. You must agree with me, it&#8217;s not so random anymore <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p><p>So, the only difference my AjaxRP is making is its &#8220;AJAX&#8221; part. With AjaxRP, the random list is NOT generated along with post A. Instead, it makes an AJAX call to the server after the page is loaded (more precisely, after the DOM is ready) and retrieves a list of random posts. This way, it works regardless of whether or not you have a cache plugin installed. That means, each page refresh shows a new random list. And I guess that is what should be called &#8220;random&#8221;.<span
id="more-164"></span></p><h3>FAQ</h3><p>Q: Do you provide a template tag/ post tag?<br
/> A: Absolutely. If you don&#8217;t want the random posts to be display after every post, just set &#8220;Automatically display the random posts in a single post page?&#8221; to &#8220;No&#8221; in the Settings page, and</p><ul><li>Manually put <strong>&lt;!&#8211;ajaxrp&#8211;&gt;</strong> at the end of your post, or</li><li>Place this php code: <strong>&lt;?php if (function_exists(&#8216;ajaxrp&#8217;)) ajaxrp(); ?&gt;</strong><br
/> at a proper place in your template&#8217;s <strong>single.php</strong> page</li></ul><p>Q: Where can I find a demo?<br
/> A: Right here! Take a look at the end of this post.</p><p>Q: How do I support this plugin?<br
/> A: Please link back to this post or blog about it. Also I would appreciate a lot if you can rate this plugin 5 stars in the WordPress repository.</p><h3>History</h3><p>Full history can be found <a
href="http://wordpress.org/extend/plugins/ajax-random-posts/other_notes/">here</a>.</p><h3>Download</h3><p>Head <a
href="http://wordpress.org/extend/plugins/ajax-random-posts/">here</a>.</p> <img
style='display:none' id="post-164-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2008/12/ajax-random-posts/',title:'AJAX Random Posts &#8211; a new WP plugin (of mine)',tweet:'Firstly, I&#8217;d like to show off a bit: hey I&#8217;ve caught up with the crowd, now both of my s',description:'Firstly, I&#8217;d like to show off a bit: hey I&#8217;ve caught up with the crowd, now both of my s'})"><script type='text/javascript'>document.getElementById("post-164-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2008/12/ajax-random-posts/feed/</wfw:commentRss> <slash:comments>56</slash:comments> </item> <item><title>Referrer Detector 2.1.1 and a little bit more</title><link>http://www.phoenixheart.net/2008/12/referrer-detector-211-and-a-little-bit-more/</link> <comments>http://www.phoenixheart.net/2008/12/referrer-detector-211-and-a-little-bit-more/#comments</comments> <pubDate>Tue, 02 Dec 2008 07:20:56 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Freebies]]></category> <category><![CDATA[Server stuffs]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[Referrer Detector]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=158</guid> <description><![CDATA[Hi everyone! It&#8217;s been a while&#8230; yes I know I&#8217;m feeding up your ears (or eyes) with this same old same old greeting, but I&#8217;ve never been a good speaker. So it&#8217;s been a while, and I&#8217;m writing another small plugin for personal purpose. Remember, I have another site dedicated to Vietnamese poetry? Well, I&#8217;m [...]]]></description> <content:encoded><![CDATA[<p>Hi everyone!</p><p>It&#8217;s been a while&#8230; yes I know I&#8217;m feeding up your ears (or eyes) with this same old same old greeting, but I&#8217;ve never been a good speaker.</p><p>So it&#8217;s been a while, and I&#8217;m writing another small plugin for personal purpose. Remember, I have <a
href="http://www.thica.net">another site</a> dedicated to Vietnamese poetry? Well, I&#8217;m trying to enhance it up a bit &#8211; with some plugins I write maybe&#8230;</p><p>However, something today made me (temporarily) pause the work. Something not so happy.</p><p>In case you don&#8217;t know yet, I&#8217;ll stress it again: <strong>I didn&#8217;t invent the [concept of] <a
href="/2008/11/referrer-detector">Referrer Detector plugin</a></strong>. Instead, I first saw a similar plugin in action on my favorite blog <a
href="http://smashingmagazine.com">Smashing Magazine</a>. As Smashing is more or less a commercial blog, I was thinking it was something they made themselves and thus may not be open source, so I decided to write my own. When I found out that it&#8217;s originally a great plugin from <a
href="http://omninoggin.com/">Thaya Kareeson</a>, my Referrer Detector was nearly finished, and I didn&#8217;t want it to be left abandoned. Apart from that, I also thought that my plugin, while still young and lacked of some important features, had some advantages that I personally could make use of (at that moment). So eventually I registered it in WordPress Codex. That&#8217;s the story.</p><p>When Referrer Detector was out, I was very happy to see how welcomed it was. My [G]mail box were full of comment moderation requests, and I was continuously asked for bug fixes, implementations, even some not so relevant stuffs (like how to change theme <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). These comments were the invaluable support that encouraged me to quickly release newer and hopefully better versions of RD, with visible and invisible changes as well. And it&#8217;s always been a joy for me to open my mailbox and see an unread message titled &#8220;[phoenix.heart - portfolio &amp; more] Please moderate: &#8220;Here it is &#8211; Referrer Detector&#8230;&#8221;.<span
id="more-158"></span></p><p>Thaya has noticed about my plugin, as he even left a comment on my blog entry &#8211; I was happy with it too. So it came to me as a surprise when today, I found out that it&#8217;s not that simple. Seems like he&#8217;s thinking I&#8217;m forking his code and is upset with the fact that RD is sharing the &#8220;fame&#8221; with his WP Greet Box. On a <a
href="http://www.dailyblogtips.com/referrer-detector-wordpress-plugin/">blog that promoted my plugin</a> he left this comment:</p><blockquote><p>Honestly, I am quite disappointed that my plugin hasn’t done better in the WordPress community. I am also even more shocked[upset] that Referrer Detector got the word out much quicker than WP Greet Box. I guess it really does matter “who” you knows in the blogging community.</p><p>I don’t want to sound biased, but as of right now (Referrer Detector version 2.1) I believe that WP Greet Box is hands-down better than Referrer Detector:</p><ol><li>Referrer Detector has a security flaw in its administrative AJAX interface. I won’t say more, so hopefully people with Referrer Detector installed won’t get hacked.</li><li>WP Greet Box works with WPMU.</li><li>WP Greet Box has the ability to keep track of visitors, so the visitor referred from google will not keep getting the same greeting message if they have visited within the last X hours.</li><li>Exclusion rules have regular expressions support.</li><li>More solid default CSS.</li></ol><p>The only pros referrer detector has on WP Greet Box are:</p><ol><li>More default greeting messages</li><li>The ability to include WordPress attributes like url, title, author, category etc. into the greetings</li></ol><p>Given the security flaw Referrer Detector, I wouldn’t even try it out on a production site until the fix comes.</p></blockquote><p>And on <a
href="http://omninoggin.com/projects/wordpress-plugins/wp-greet-box-wordpress-plugin/">his official WP Great Box plugin blog</a>, he changed the Upcoming Features to something below:</p><div
class="quote"><p>I have chosen to keep this list hidden to discourage kiddie coders from forking my code. I know some users that have went to the dark side to use a similar plugin, but they always come back to WP Greet Box because of my “awesome” support <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p></div><p>Maybe I&#8217;m a little over-sensitive, but nevertheless, it seems that I&#8217;m just one of those &#8220;kiddie coders&#8221; who&#8217;s &#8220;forking [his] code&#8221;.</p><p>To be fair, he was right about the pros and cons both plugins have &#8211; although still I believe that mine has something more that that. Also, I agree about the possible security flaw (and have fixed it in the latest version of WordPress). More or less, I&#8217;m not a hacker, so I can&#8217;t tell if it&#8217;s really a security flaw and if someone can make use of it, since first, AJAX calls across domains are very limited in terms of usability, and second, the person who may control the plugin and the admin panel, if not yourself, must be someone you totally trust.</p><p>What made me feel weird are:</p><ol><li>He seems to be thinking that all I (and some other plugin developers) have been doing is forking his code. This is not so correct <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> To me, the code I was forking, if any, came from another plugin called <a
href="http://wordpress.org/extend/plugins/share-this/">ShareThis</a>. Actually, this is the plugin I was learning from when I developed <a
href="http://www.phoenixheart.net/2008/10/digg-this-o-mine/">Digg This O&#8217; Mine</a>, and can be seen as my WordPress plugin tutor. Other than this, except for the concept that I learned <em>from Smashing Magazine</em>, I built my Referrer Detector from the scratch, as you can see if you take a look into the source code (of both RD and WPGB).</li><li>He&#8217;s upset just because &#8220;Referrer Detector got the word out much quicker than WP Greet Box&#8221;. If it&#8217;s something really matters, then my answer will be &#8220;Digg&#8221;. I posted a story about RD onto Digg, that&#8217;s why it gets known rather quickly. Moreover, the more people get to know RD, the more they&#8217;re announced about WPGB, since on my official plugin entry and here again, I give all the initial concept credits to Thaya Kareeson. If his plugin is better, it will simply be used more widely. So why he got upset, I honestly don&#8217;t get.</li><li>Seems like from his upset, he called other developers who share the same concept with him &#8220;kiddie coders&#8221;. Of course he is a great developer, as anyone can see from the concept and the way he&#8217;s writing code. But just because he&#8217;s great doesn&#8217;t mean others are bad, yes? And correct me if I&#8217;m wrong, isn&#8217;t writing various softwares with the same concept and purposes something we see everyday in this open source world? If not, then why so much Linux distributions?</li><li>The &#8220;dark side&#8221; <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></li></ol><p>So, as a conclusion, the concept credits go to Thaya, and I&#8217;m sorry if what I do is causing him some inconvenience. And let&#8217;s face it, everyone has his choice, so if my plugin doesn&#8217;t work for you for any reason, I always recommend WP Gree[a]t Box.</p><p>P/S: Have you noticed yet? <a
href="http://wordpress.org/extend/plugins/referrer-detector/">Referrer Detector 2.1.1</a> which includes the security flaw fix is out!</p> <img
style='display:none' id="post-158-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2008/12/referrer-detector-211-and-a-little-bit-more/',title:'Referrer Detector 2.1.1 and a little bit more',tweet:'Hi everyone! It&#8217;s been a while&#8230; yes I know I&#8217;m feeding up your ears (or eyes) with',description:'Hi everyone! It&#8217;s been a while&#8230; yes I know I&#8217;m feeding up your ears (or eyes) with'})"><script type='text/javascript'>document.getElementById("post-158-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2008/12/referrer-detector-211-and-a-little-bit-more/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>Here it is &#8211; Referrer Detector 2.0</title><link>http://www.phoenixheart.net/2008/11/here-it-is-referrer-detector-20/</link> <comments>http://www.phoenixheart.net/2008/11/here-it-is-referrer-detector-20/#comments</comments> <pubDate>Mon, 17 Nov 2008 05:53:03 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Freebies]]></category> <category><![CDATA[Server stuffs]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[Referrer Detector]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=151</guid> <description><![CDATA[As said yesterday, I&#8217;ve managed to update my Referrer Detector plugin to its second major release. During the last week, it was soooo great to see that despite of all the bugs and limitations, my plugin has been warmly welcomed. And never in my (blogging) life have I had to moderate that many of comments. [...]]]></description> <content:encoded><![CDATA[<p>As <a
href="http://www.phoenixheart.net/2008/11/referrer-detector-12-released/">said</a> yesterday, I&#8217;ve managed to update my <a
href="http://wordpress.org/extend/plugins/referrer-detector/">Referrer Detector</a> plugin to its second major release. During the last week, it was soooo great to see that despite of all the bugs and limitations, my plugin has been warmly welcomed. And never in my (blogging) life have I had to moderate that many of comments. Thank you all, for criticisms and compliments alike!</p><p>For, the most significant change compared to previous versions is the admin (aka Options) panel. With the help of the great <a
href="http://ui.jquery.com/">jQuery UI library</a>, all the options are now divided into much much clearer tabs!</p><p><img
class="shot" src="/wp-content/uploads/2008/11/tabs.png" alt="Tabs" width="464" height="297" /></p><p>Then, from the suggestion of <a
rel="external nofollow" href="http://www.italal.com/">iTalal</a>, I&#8217;ve added an option to specify a list of &#8220;excluded&#8221; URLs. If the user is coming from one of these URLs, the greeting box won&#8217;t be shown. This comes handy with, for an example, Google Reader. Please note that the URLs should come in a separated list, each following the same rule with the entry URL &#8211; no &#8220;http://www&#8221; prefix.</p><p><img
class="shot" src="/wp-content/uploads/2008/11/excluded_urls.gif" alt="Excluded URLs Option" width="467" height="353" /><span
id="more-151"></span></p><p>The next visible change is, now it&#8217;s 100% AJAXed &#8211; well, it was not with the Generic Options, but now even that conservative old guy is convinced by the AJAX power <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Now you won&#8217;t need to reload the page &#8211; ever!</p><p><img
class="shot" src="/wp-content/uploads/2008/11/generic_loading.png" alt="Generic Options Saving" width="459" height="153" /></p><p>Then, we have some more improvements under the hood:</p><ul><li>As <a
rel="external nofollow" href="http://studybabes.com/">Study Babes</a> suggested, there should be an option to display the welcome message in the <em>theme</em> itself. Well, not until now &#8211; now you can place this <em>template tag</em> somewhere in the theme files (most likely index.php):<div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'referrer_detector'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> referrer_detector<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><p>In case you ever wonder, there is at most <em>one</em> greeting box each page. With that said, this template tag has the highest priority, when the lower goes to the &#8220;Automatically add to every post blah&#8221; settings, and the least is for the custom tag <span>{</span>referrer-detector} if any in the post.</p><p>There is one drawback with the template tag though. Since in such a case, the greeting box is shown in a page with many different posts at once, the tags such as {author} and {categories} become ambiguous. So, please keep in mind that if you use template tag, only the most common {title} and {url} are available.</li><li>Some of the javascript files are now <a
href="http://dean.edwards.name/packer/">packed</a> to save some bandwidth and loading time.</li></ul><p>That&#8217;s all! And is it redundant to add that you can, as usual, <a
href="http://wordpress.org/extend/plugins/referrer-detector/">grab it</a> at the WordPress Codex?</p> <img
style='display:none' id="post-151-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2008/11/here-it-is-referrer-detector-20/',title:'Here it is &#8211; Referrer Detector 2.0',tweet:'As said yesterday, I&#8217;ve managed to update my Referrer Detector plugin to its second major rele',description:'As said yesterday, I&#8217;ve managed to update my Referrer Detector plugin to its second major rele'})"><script type='text/javascript'>document.getElementById("post-151-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2008/11/here-it-is-referrer-detector-20/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Referrer Detector 1.2 released</title><link>http://www.phoenixheart.net/2008/11/referrer-detector-12-released/</link> <comments>http://www.phoenixheart.net/2008/11/referrer-detector-12-released/#comments</comments> <pubDate>Fri, 14 Nov 2008 06:12:53 +0000</pubDate> <dc:creator>phoenix.heart</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Freebies]]></category> <category><![CDATA[Server stuffs]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[Referrer Detector]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.phoenixheart.net/?p=145</guid> <description><![CDATA[Woa&#8230; again, it&#8217;s been a long time since the first released day of my WordPress plugin Referrer Detector: 3 days! To stop you from laughing at that long long 3 days, I would like to notice that in our Internet, time is measure in microseconds. So, it&#8217;s been 3*24*60*60*1000,000 = 259 200 000 000 microseconds, [...]]]></description> <content:encoded><![CDATA[<p>Woa&#8230; again, it&#8217;s been a long time since the first released day of my WordPress plugin <a
href="http://www.phoenixheart.net/2008/11/referrer-detector/">Referrer Detector</a>: 3 days! To stop you from laughing at that <em>long long</em> 3 days, I would like to notice that in our Internet, time is measure in microseconds. So, it&#8217;s been 3*24*60*60*1000,000 = 259 200 000 000 microseconds, now convinced?</p><p>But, here is another proof to prove that 3 days is such a long long time: I&#8217;ve managed to release 4 versions of Referrer Detector! Huh, shocked? Here you go:</p><h4><a
href="http://www.phoenixheart.net/2008/11/referrer-detector/">1.0 &#8211; Initial version</a></h4><h4>1.0.1</h4><p>A quick fix for caching problem (if cache is enabled and the first user has no referrer, the plugin will fail). This serious bug is found by me.</p><h4>1.1</h4><p>Better support to work with cache plugins. Now the generic options take effect without the need to delete the cache. The reason behind this is now all options are saved into the file data.js, and this file is executed every time a page is loaded, regardless of your blog has a cache enabled or not.</p><p>And today, version 1.2 is released! Basically this version just includes several important fixes and improvements, but I decided to change the minor number to make that look somehow more important <img
src='http://www.phoenixheart.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . <span
id="more-145"></span>Here is the changes:</p><ul><li>Fixed the bug when multiple greet boxes are stupidly shown if the page is filled with multiple full posts (such as homepage). This is a serious bug that was found by <a
href="http://www.hyperborea.org/journal/">Kelson</a> (thanks, Kelson!). I decided that in such a case, no greet box should be shown.</li><li>Fixed the bug in the initial SQL data where the default RSS feed url is set to mine. It&#8217;s so embarrassed to confess that with the old versions, upon installing all the RSS links in the entry would point to *my* FeedBurner url. This was my problem &#8211; I forgot to change the RSS link when publishing the plugin to WordPress Codex.</li><li>Fixed the javascript error when the page has no referrer.</li><li>Update the installation and FAQ section.</li><li>And some little stuffs&#8230;</li></ul><p>If you&#8217;ve installed my plugin, you should have been announced about this version in the Plugins panel. Or you can always grab the latest version <a
href="http://wordpress.org/extend/plugins/referrer-detector">here</a>.</p><p>Update: I&#8217;ve managed to complete <strong>version 2.0</strong> which I&#8217;m going to blog about tomorrow. Stay tuned!</p> <img
style='display:none' id="post-145-blankimage" onload="Meebo('discoverSharable', {element: ((this.parentNode.className.match('post')) ? this.parentNode : this.parentNode.parentNode) ,url:'http://www.phoenixheart.net/2008/11/referrer-detector-12-released/',title:'Referrer Detector 1.2 released',tweet:'Woa&#8230; again, it&#8217;s been a long time since the first released day of my WordPress plugin Re',description:'Woa&#8230; again, it&#8217;s been a long time since the first released day of my WordPress plugin Re'})"><script type='text/javascript'>document.getElementById("post-145-blankimage").onload();</script>]]></content:encoded> <wfw:commentRss>http://www.phoenixheart.net/2008/11/referrer-detector-12-released/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (user agent is rejected)
Database Caching 5/11 queries in 0.041 seconds using disk

Served from: www.phoenixheart.net @ 2010-09-08 08:58:17 -->