<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>W-Shadow.com</title>
	
	<link>http://w-shadow.com</link>
	<description>Slightly Advanced Computer Stuff (and some magic)</description>
	<pubDate>Fri, 21 Nov 2008 21:34:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=| What colour is your cowboy hat?</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/wshadowcom" type="application/rss+xml" /><item>
		<title>Cross-Domain POST With JavaScript</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/459681044/</link>
		<comments>http://w-shadow.com/blog/2008/11/20/cross-domain-post-with-javascript/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 15:08:23 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[blackhat]]></category>

		<category><![CDATA[cross-domain requests]]></category>

		<category><![CDATA[hacks]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[POST method]]></category>

		<category><![CDATA[web browser security]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=524</guid>
		<description><![CDATA[Normally you can&#8217;t send cross-domain requests in JavaScript due to restrictions imposed by the same-origin security policy. There are many clever hacks that circumvent this by using remote script includes (even CSS includes) or proxy scripts, but so far I haven&#8217;t seen anything useful for client-side, cross-domain POST requests. 
However, it turns out you can [...]]]></description>
			<content:encoded><![CDATA[<p>Normally you can&#8217;t send cross-domain requests in JavaScript due to restrictions imposed by the same-origin security policy. There are many clever hacks that circumvent this by using remote script includes (even <a href='http://nb.io/hacks/csshttprequest/'>CSS includes</a>) or proxy scripts, but so far I haven&#8217;t seen anything useful for client-side, cross-domain POST requests. </p>
<p>However, it turns out you can send them very easily <strong>if</strong> you don&#8217;t need to know the response to the request. This might sound useless at first, but there are certain situations where it&#8217;s all you really need. For example, blackhat SEO comes to mind&#8230;</p>
<h3>The Basic Idea</h3>
<p>Forms can use the POST method and JS can submit forms. This means you can dynamically generate a form with the <code>action</code> attribute set to any URL (including pages on other domains) and encode all query parameters as hidden <code>&lt;input&gt;</code> fields, then automatically submit the form. </p>
<p>The problem is this works exactly as if the user had filled out a form and clicked &#8220;Submit&#8221; - the browser will send the request and open a different page. That&#8217;s (usually) bad, so we need to put the form inside an invisible <code>iframe</code> to hide the redirect. Of course, you can&#8217;t get any response data from the frame, so it&#8217;s truly &#8220;fire and forget&#8221;.</p>
<p>As a result, the final script will have two components - a JavaScript function that creates the <code>iframe</code>, and another script that will run inside the frame and generate and submit the form.</p>
<h3>Implementing It</h3>
<p>The first part is the <code>crossDomainPost()</code> JS function. This is the function you will call from your script to initiate a POST request. The function accepts three arguments : </p>
<ul>
<li><b>writer_url</b> - the URL of the script that will generate the form (see below).</li>
<li><b>post_target_url</b> - send the POST request to this URL.</li>
<li><b>params</b> - query parameters for the POST request, formatted like this : <code>{param1 : 'value1', param2 : 'value2', ...}</code></li>
</ul>
<p>And here&#8217;s the source code :</p>

<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">'text/javascript'</span> language<span style="color: #339933;">=</span><span style="color: #3366CC;">'JavaScript'</span><span style="color: #339933;">&gt;</span>
<span style="color: #003366; font-weight: bold;">function</span> crossDomainPost<span style="color: #009900;">&#40;</span>writer_url<span style="color: #339933;">,</span> post_target_url<span style="color: #339933;">,</span> params<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> url_params <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span>;
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> key <span style="color: #000066; font-weight: bold;">in</span> params<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        url_params <span style="color: #339933;">=</span>url_params <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&amp;'</span> <span style="color: #339933;">+</span> key <span style="color: #339933;">+</span> <span style="color: #3366CC;">'='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>params<span style="color: #009900;">&#91;</span>key<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>;
    <span style="color: #009900;">&#125;</span>
    <span style="color: #003366; font-weight: bold;">var</span> url <span style="color: #339933;">=</span> writer_url <span style="color: #339933;">+</span> <span style="color: #3366CC;">'?post_target_url='</span> <span style="color: #339933;">+</span> encodeURIComponent<span style="color: #009900;">&#40;</span>post_target_url<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> url_params;
    <span style="color: #003366; font-weight: bold;">var</span> iframe <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'iframe'</span><span style="color: #009900;">&#41;</span>;
    iframe.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #339933;">,</span> url<span style="color: #009900;">&#41;</span>;
    iframe.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>;
    iframe.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'height'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>;
    iframe.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'style'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'border: none;'</span><span style="color: #009900;">&#41;</span>;
    <span style="color: #003366; font-weight: bold;">var</span> p <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #009900;">&#41;</span>;
    p<span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>iframe<span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>The second component is the script that will generate and submit the form. There are several ways to create a form, but in this case I decided to stick with a mix of HTML &#038; PHP. You <em>can</em> do it purely in JS, but the script would be a bit more complex. Either way, the form is still submitted by JavaScript, so the POST request will be done by the browser, not your server.</p>
<p>This script needs to be placed in a separate file (say, &#8220;form_writer.php&#8221;) because it will be loaded in a frame. Here&#8217;s the source :</p>

<div class="wp_syntax"><div class="code"><pre class="php php" style="font-family:monospace;">&lt;form method='post' action='<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="">'post_target_url'</span><span style="color: #009900;">&#93;</span>; <span style="color: #000000; font-weight: bold;">?&gt;</span>' id='postform'&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> 
    <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="">'post_target_url'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>;
    <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">echo</span> <span style="color: #0000ff;">&quot;&lt;input type='hidden' name='$key' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlentities</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span> ENT_QUOTES<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&gt;&quot;</span>;
    <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;/form&gt;
&lt;script language='JavaScript'&gt;
    document.getElementById('postform').submit();
&lt;/script&gt;</pre></div></div>

<h3>Using The Script</h3>
<p>Lets see a real life example, shall we? Here&#8217;s how you can use the above scripts to send a <a href="http://www.sixapart.com/pronet/docs/trackback_spec" title='Trackback protocol specification'>trackback</a> in JavaScript :</p>

<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;">crossDomainPost<span style="color: #009900;">&#40;</span>
    <span style="color: #3366CC;">'http://mydomain.com/form_writer.php'</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">'http://random-site.com/blog/offtopic/an-example-post/trackback/'</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#123;</span>
        title <span style="color: #339933;">:</span> <span style="color: #3366CC;">'My Cool Post'</span><span style="color: #339933;">,</span>
        excerpt <span style="color: #339933;">:</span> <span style="color: #3366CC;">'...like, totally and such...'</span><span style="color: #339933;">,</span>
        url <span style="color: #339933;">:</span> <span style="color: #3366CC;">'http://mydomain.com/stuff/my-cool-post/'</span><span style="color: #339933;">,</span>
        blog_name <span style="color: #339933;">:</span> <span style="color: #3366CC;">'My Cool Blog'</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span>;</pre></div></div>

<p><em>Eeevil</em>&nbsp; <img src='http://w-shadow.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=V3qsn"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=V3qsn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=5Lq6N"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=5Lq6N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=KTDgN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=KTDgN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/459681044" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/20/cross-domain-post-with-javascript/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F20%2Fcross-domain-post-with-javascript%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/20/cross-domain-post-with-javascript/</feedburner:origLink></item>
		<item>
		<title>Equally Unaware Of Stupidity</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/456580733/</link>
		<comments>http://w-shadow.com/blog/2008/11/18/equally-unaware-of-stupidity/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 23:36:07 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Thoughts]]></category>

		<category><![CDATA[cognitive bias]]></category>

		<category><![CDATA[common sense]]></category>

		<category><![CDATA[competence]]></category>

		<category><![CDATA[popular science]]></category>

		<category><![CDATA[rants]]></category>

		<category><![CDATA[research paper]]></category>

		<category><![CDATA[stupidity]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=512</guid>
		<description><![CDATA[via just.KEver heard of the Dunning-Kruger effect? Even if the name doesn&#8217;t ring any bells you&#8217;re probably familiar with the basic idea : stupid people tend to overestimate their competence and underestimate the competence of others. The effect was famously demonstrated in a series of experiments performed by two researchers (Justin Kruger and David Dunning) [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_517" class="wp-caption alignleft" style="width: 210px"><p class="wp-caption-text">via just.K</p></div>[/caption]Ever heard of the Dunning-Kruger effect? Even if the name doesn&#8217;t ring any bells you&#8217;re probably familiar with the basic idea : stupid people tend to overestimate their competence and underestimate the competence of others. The effect was famously demonstrated in a series of [...] <a href="http://w-shadow.com/blog/2008/11/18/equally-unaware-of-stupidity/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=5FtWn"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=5FtWn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=aUtEN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=aUtEN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=Xc1bN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=Xc1bN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/456580733" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/18/equally-unaware-of-stupidity/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F18%2Fequally-unaware-of-stupidity%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/18/equally-unaware-of-stupidity/</feedburner:origLink></item>
		<item>
		<title>Displaying Recent Posts On a Non-WordPress Page</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/454281223/</link>
		<comments>http://w-shadow.com/blog/2008/11/15/displaying-recent-posts-on-a-non-wordpress-page/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 20:06:51 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Blogging]]></category>

		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[free javascript scripts]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php script]]></category>

		<category><![CDATA[rss feed]]></category>

		<category><![CDATA[rss parser]]></category>

		<category><![CDATA[seo]]></category>

		<category><![CDATA[simplepie]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=504</guid>
		<description><![CDATA[Listing recent posts on a WordPress page is easy - there are various widgets and theme functions available just for that purpose. But what about a non-WP page, or even a different site? That&#8217;s not that hard either - simply grab some posts from the blog&#8217;s RSS feed and [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>Listing recent posts on a WordPress page is easy - there are various widgets and theme functions available just for that purpose. But what about a non-WP page, or even a different site? That&#8217;s not that hard either - simply grab some posts from the blog&#8217;s RSS feed and [...] <a href="http://w-shadow.com/blog/2008/11/15/displaying-recent-posts-on-a-non-wordpress-page/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=BkPnn"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=BkPnn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=3J0jN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=3J0jN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=VTokN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=VTokN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/454281223" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/15/displaying-recent-posts-on-a-non-wordpress-page/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F15%2Fdisplaying-recent-posts-on-a-non-wordpress-page%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/15/displaying-recent-posts-on-a-non-wordpress-page/</feedburner:origLink></item>
		<item>
		<title>WordPress 2.7 (Beta) Mini-Review</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/453539615/</link>
		<comments>http://w-shadow.com/blog/2008/11/14/wordpress-27-review/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 15:56:31 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Blogging]]></category>

		<category><![CDATA[News and Rants]]></category>

		<category><![CDATA[Beta]]></category>

		<category><![CDATA[dashboard]]></category>

		<category><![CDATA[dashboard menu]]></category>

		<category><![CDATA[rants]]></category>

		<category><![CDATA[review]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=498</guid>
		<description><![CDATA[I&#8217;ve been trying to write a review ever since the first beta, but all I could come up can be summarized as &#8220;Meh. It&#8217;s okay.&#8221; WP 2.7 includes a lot of long-awaited features, which is great, but their implementation sometimes inflicts the aforementioned &#8220;meh&#8221; feeling.
For example, there&#8217;s the dashboard [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been trying to write a review ever since the first beta, but all I could come up can be summarized as &#8220;Meh. It&#8217;s okay.&#8221; WP 2.7 includes a lot of long-awaited features, which is great, but their implementation sometimes inflicts the aforementioned &#8220;meh&#8221; feeling.</p>
<p>For example, there&#8217;s the dashboard [...] <a href="http://w-shadow.com/blog/2008/11/14/wordpress-27-review/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=ld3Gn"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=ld3Gn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=FmIvN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=FmIvN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=EeG4N"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=EeG4N" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/453539615" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/14/wordpress-27-review/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F14%2Fwordpress-27-review%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/14/wordpress-27-review/</feedburner:origLink></item>
		<item>
		<title>Parse, Edit And Create Torrent Files With PHP</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/449871713/</link>
		<comments>http://w-shadow.com/blog/2008/11/11/parse-edit-and-create-torrent-files-with-php/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 19:17:55 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[bittorrent]]></category>

		<category><![CDATA[edit torrent]]></category>

		<category><![CDATA[how to]]></category>

		<category><![CDATA[open torrent]]></category>

		<category><![CDATA[parse torrent]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php classes]]></category>

		<category><![CDATA[torrent file]]></category>

		<category><![CDATA[torrent file format]]></category>

		<category><![CDATA[torrent wrapper]]></category>

		<category><![CDATA[torrents]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=493</guid>
		<description><![CDATA[A .torrent file contains assorted metadata that is stored in a &#8220;bencoded dictionary&#8221; format. Bencoding is a relatively simple cross-platform encoding used by BitTorrent and a dictionary is basically an associative array. You can find a high-level overview of the file structure here.
To open or edit a .torrent file [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>A .torrent file contains assorted metadata that is stored in a &#8220;bencoded dictionary&#8221; format. Bencoding is a relatively simple cross-platform encoding used by BitTorrent and a dictionary is basically an associative array. You can find a high-level overview of the file structure here.</p>
<p>To open or edit a .torrent file [...] <a href="http://w-shadow.com/blog/2008/11/11/parse-edit-and-create-torrent-files-with-php/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=ueREn"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=ueREn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=zgU5N"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=zgU5N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=hX9nN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=hX9nN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/449871713" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/11/parse-edit-and-create-torrent-files-with-php/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F11%2Fparse-edit-and-create-torrent-files-with-php%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/11/parse-edit-and-create-torrent-files-with-php/</feedburner:origLink></item>
		<item>
		<title>To All Geeks, Hackers And Sci-fi Enthusiasts : You Get What You Pay For</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/447772442/</link>
		<comments>http://w-shadow.com/blog/2008/11/09/you-get-what-you-pay-for/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 20:17:14 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Thoughts]]></category>

		<category><![CDATA[life extension]]></category>

		<category><![CDATA[molecular nanotechnology]]></category>

		<category><![CDATA[rants]]></category>

		<category><![CDATA[science fiction]]></category>

		<category><![CDATA[singularity]]></category>

		<category><![CDATA[technological progress]]></category>

		<category><![CDATA[the future]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=489</guid>
		<description><![CDATA[In the last few months I&#8217;ve spent about $100 on PC games and about $40 on sci-fi books. In the same period, I&#8217;ve spent exactly $0 on research that could actually bring about the future envisioned by those games and books. What about you?
In a recent article, IO9 paints [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>In the last few months I&#8217;ve spent about $100 on PC games and about $40 on sci-fi books. In the same period, I&#8217;ve spent exactly $0 on research that could actually bring about the future envisioned by those games and books. What about you?</p>
<p>In a recent article, IO9 paints [...] <a href="http://w-shadow.com/blog/2008/11/09/you-get-what-you-pay-for/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=kORLn"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=kORLn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=CvdnN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=CvdnN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=K6dTN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=K6dTN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/447772442" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/09/you-get-what-you-pay-for/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F09%2Fyou-get-what-you-pay-for%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/09/you-get-what-you-pay-for/</feedburner:origLink></item>
		<item>
		<title>Restrict Login By IP - A WordPress Plugin</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/445928965/</link>
		<comments>http://w-shadow.com/blog/2008/11/07/restrict-login-by-ip-a-wordpress-plugin/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 18:54:20 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Applications]]></category>

		<category><![CDATA[Blogging]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[htaccess file]]></category>

		<category><![CDATA[ip addresses]]></category>

		<category><![CDATA[login]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[wordpress plugins]]></category>

		<category><![CDATA[WordPress security]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=480</guid>
		<description><![CDATA[This plugin lets you specify IP addresses or hosts that users are allowed to login from. You can either use full IPs (e.g. &#8220;12.34.56.7&#8243;) or partial IPs (e.g. &#8220;12.34&#8243;), which lets you specify a range of addresses. More advanced configuration is also possible - you can specify allowed subnet(s) [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>This plugin lets you specify IP addresses or hosts that users are allowed to login from. You can either use full IPs (e.g. &#8220;12.34.56.7&#8243;) or partial IPs (e.g. &#8220;12.34&#8243;), which lets you specify a range of addresses. More advanced configuration is also possible - you can specify allowed subnet(s) [...] <a href="http://w-shadow.com/blog/2008/11/07/restrict-login-by-ip-a-wordpress-plugin/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=aS0yn"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=aS0yn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=rF2hN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=rF2hN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=F6YLN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=F6YLN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/445928965" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/07/restrict-login-by-ip-a-wordpress-plugin/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F07%2Frestrict-login-by-ip-a-wordpress-plugin%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/07/restrict-login-by-ip-a-wordpress-plugin/</feedburner:origLink></item>
		<item>
		<title>Digg vs. Reddit - Comment Tag Clouds</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/443096881/</link>
		<comments>http://w-shadow.com/blog/2008/11/05/digg-vs-reddit-comment-tag-clouds/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 22:29:33 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[News and Rants]]></category>

		<category><![CDATA[comments]]></category>

		<category><![CDATA[digg]]></category>

		<category><![CDATA[procrastination]]></category>

		<category><![CDATA[reddit]]></category>

		<category><![CDATA[statistics]]></category>

		<category><![CDATA[tag cloud]]></category>

		<category><![CDATA[wordle]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=470</guid>
		<description><![CDATA[Indeed, my inescapable tendency for invention procrastination has given us yet another piece of useless but potentially amusing statistics. The idea is simple : take 5000 recent comments from both Digg and Reddit and create two tag clouds using Wordle. In theory this should provide a bird&#8217;s-eye overview of [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>Indeed, my inescapable tendency for invention procrastination has given us yet another piece of useless but potentially amusing statistics. The idea is simple : take 5000 recent comments from both Digg and Reddit and create two tag clouds using Wordle. In theory this should provide a bird&#8217;s-eye overview of [...] <a href="http://w-shadow.com/blog/2008/11/05/digg-vs-reddit-comment-tag-clouds/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=zsL6n"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=zsL6n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=AypRN"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=AypRN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=6wa6N"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=6wa6N" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/443096881" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/11/05/digg-vs-reddit-comment-tag-clouds/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F11%2F05%2Fdigg-vs-reddit-comment-tag-clouds%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/11/05/digg-vs-reddit-comment-tag-clouds/</feedburner:origLink></item>
		<item>
		<title>Custom Favorite Actions For WP 2.7 (Beta)</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/438372058/</link>
		<comments>http://w-shadow.com/blog/2008/10/31/custom-favorite-actions-for-wp-27-beta/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 17:24:03 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Applications]]></category>

		<category><![CDATA[Blogging]]></category>

		<category><![CDATA[admin menu]]></category>

		<category><![CDATA[Beta]]></category>

		<category><![CDATA[usability]]></category>

		<category><![CDATA[user interface]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=464</guid>
		<description><![CDATA[The upcoming WordPress 2.7 will include a &#8220;favorite actions&#8221; feature - a dropdown menu that is supposed to contain quick links for easy access to select dashboard pages. The dropdown starts out with a few preset links, and new links can be added by plugins.
Power To The Users
I think [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>The upcoming WordPress 2.7 will include a &#8220;favorite actions&#8221; feature - a dropdown menu that is supposed to contain quick links for easy access to select dashboard pages. The dropdown starts out with a few preset links, and new links can be added by plugins.</p>
<p>Power To The Users<br />
I think [...] <a href="http://w-shadow.com/blog/2008/10/31/custom-favorite-actions-for-wp-27-beta/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=YWsxm"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=YWsxm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=mK20M"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=mK20M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=ACu7M"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=ACu7M" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/438372058" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/10/31/custom-favorite-actions-for-wp-27-beta/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F10%2F31%2Fcustom-favorite-actions-for-wp-27-beta%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/10/31/custom-favorite-actions-for-wp-27-beta/</feedburner:origLink></item>
		<item>
		<title>Always 5 Years In The Future</title>
		<link>http://feeds.feedburner.com/~r/wshadowcom/~3/435211966/</link>
		<comments>http://w-shadow.com/blog/2008/10/28/always-5-years-in-the-future/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 19:23:45 +0000</pubDate>
		<dc:creator>White Shadow</dc:creator>
		
		<category><![CDATA[Thoughts]]></category>

		<category><![CDATA[bias]]></category>

		<category><![CDATA[breakthrough]]></category>

		<category><![CDATA[emerging technologies]]></category>

		<category><![CDATA[hype]]></category>

		<category><![CDATA[popular science]]></category>

		<category><![CDATA[rants]]></category>

		<category><![CDATA[technological progress]]></category>

		<category><![CDATA[the future]]></category>

		<guid isPermaLink="false">http://w-shadow.com/?p=458</guid>
		<description><![CDATA[Browsing popular science/tech news sites often creates an impression that great new advancements and products are just around the corner, but somehow they seem to never actually arrive. Common examples include super-efficient solar cells and cures for cancer or AIDS. If one is to believe the news stories there [...] Continue Reading&#8230;
Copyright &#169; 2008 W-Shadow.com. [...]]]></description>
			<content:encoded><![CDATA[<p>Browsing popular science/tech news sites often creates an impression that great new advancements and products are just around the corner, but somehow they seem to never actually arrive. Common examples include super-efficient solar cells and cures for cancer or AIDS. If one is to believe the news stories there [...] <a href="http://w-shadow.com/blog/2008/10/28/always-5-years-in-the-future/" class="more-link">Continue Reading&#8230;</a></p>
<hr/>Copyright &copy; 2008 <strong><a href="http://w-shadow.com">W-Shadow.com</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@w-shadow.com so we can take legal action immediately.<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wshadowcom?a=7ovRm"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=7ovRm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=cdEJM"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=cdEJM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wshadowcom?a=5jVCM"><img src="http://feeds.feedburner.com/~f/wshadowcom?i=5jVCM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wshadowcom/~4/435211966" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://w-shadow.com/blog/2008/10/28/always-5-years-in-the-future/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=wshadowcom&amp;itemurl=http%3A%2F%2Fw-shadow.com%2Fblog%2F2008%2F10%2F28%2Falways-5-years-in-the-future%2F</feedburner:awareness><feedburner:origLink>http://w-shadow.com/blog/2008/10/28/always-5-years-in-the-future/</feedburner:origLink></item>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=wshadowcom</feedburner:awareness></channel>
</rss><!-- Dynamic Page Served (once) in 0.869 seconds -->
