<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~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:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>drapeko</title>
	
	<link>http://wp.drapeko.com</link>
	<description>@author drapeko</description>
	<pubDate>Mon, 22 Jun 2009 09:05:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Drapeko" /><feedburner:info uri="drapeko" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>PHP, Create filesystem hierarchical array</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/Qu1f-KmVSm4/</link>
		<comments>http://wp.drapeko.com/?p=715#comments</comments>
		<pubDate>Sun, 24 May 2009 00:53:26 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[Posts]]></category>

		<category><![CDATA[arrays]]></category>

		<category><![CDATA[filesystem]]></category>

		<category><![CDATA[hierarchy]]></category>

		<category><![CDATA[paths]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://wp.drapeko.com/?p=715</guid>
		<description><![CDATA[ You have a straightforward list of directories. Your task is to create an hierarchical array of these directories. How can you do it? The simplest way is presented below.
You have an array of directories (straightforward list of directories):



	 $array = array(
		 &#039;/home/drapeko/var&#039;,
		 &#039;/home/drapeko/var/y&#039;,
		 &#039;/home/drapeko&#039;,
		 &#039;/home&#039;,
		 &#039;/var/libexec&#039;
	 );


And you would like to transform this array [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=715&amp;t=PHP%2C+Create+filesystem+hierarchical+array&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div><p>You have a straightforward list of directories. Your task is to create an hierarchical array of these directories. How can you do it? The simplest way is presented below.</p>
<p>You have an array of directories (straightforward list of directories):</p>
<pre>
<pre name="code" class="php">

	 $array = array(
		 &#039;/home/drapeko/var&#039;,
		 &#039;/home/drapeko/var/y&#039;,
		 &#039;/home/drapeko&#039;,
		 &#039;/home&#039;,
		 &#039;/var/libexec&#039;
	 );
</pre>
</pre>
<p>And you would like to transform this array to hierarchy of directories:</p>
<pre>
<pre name="code" class="php">

 $array = array (
     &#039;home&#039; =&gt; array (
         &#039;drapeko&#039; =&gt; array (
             &#039;var&#039; =&gt; array (
                 &#039;y&#039; =&gt; array()
             )
         )
     ),
     &#039;var&#039; =&gt; array(
         &#039;libexec&#039; =&gt; array()
     )
 );
</pre>
</pre>
<p>How can you do it?</p>
<p>First of all the below function will help us.</p>
<pre>
<pre name="code" class="php">

/**
 * This function converts real filesystem path to the string array representation.
 *
 * for example,
 * &#039;/home/drapeko/var/y   will be converted to  [&#039;home&#039;][&#039;drapeko&#039;][&#039;var&#039;][&#039;y&#039;]
 *
 *
 * @param $path 		realpath of the directory
 * @return string		string array representation of the path
 */
function pathToArrayStr($path) {
     $res_path = str_replace(
          array(&#039;:/&#039;, &#039;:\\&#039;, &#039;/&#039;, &#039;\\&#039;, DIRECTORY_SEPARATOR), &#039;/&#039;, $path
     );
     // if the first or last symbol is &#039;/&#039; delete it (e.g. for linux)
     $res_path = preg_replace(array(&quot;/^\//&quot;, &quot;/\/$/&quot;), &#039;&#039;, $res_path);
     // create string
     $res_path = &#039;[\&#039;&#039;.str_replace(&#039;/&#039;, &#039;\&#039;][\&#039;&#039;, $res_path).&#039;\&#039;]&#039;;

     return $res_path;
}
</pre>
</pre>
<p>It simply converts the real path of the file to array string representation.</p>
<p>How can you use this function? I know it looks a little bit confusing. But it&#8217;s quite simple. Consider the example below:</p>
<pre>
<pre name="code" class="php">

 $result = array();
 $check = array();
 foreach($array as $val) {
 	$str = pathToArrayStr($val);
 	foreach($check as $ck) {
 		if (strpos($ck, $str) !== false) {
 			continue 2;
 		}
 	}
 	$check[] = $str;
 	eval(&#039;$result&#039;.$str.&#039; = array();&#039;);
 }
print_r($result);
</pre>
</pre>
<p>Heh, how do you find it? This approach has helped me very much. I hope you will find it useful. :)</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D715&amp;linkname=PHP%2C%20Create%20filesystem%20hierarchical%20array"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/DipeHrbaoYbCt_DTRNXfc2bKKa8/0/da"><img src="http://feedads.g.doubleclick.net/~a/DipeHrbaoYbCt_DTRNXfc2bKKa8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DipeHrbaoYbCt_DTRNXfc2bKKa8/1/da"><img src="http://feedads.g.doubleclick.net/~a/DipeHrbaoYbCt_DTRNXfc2bKKa8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/Qu1f-KmVSm4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=715</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=715</feedburner:origLink></item>
		<item>
		<title>PHP Intelligencer, tiny autoload framework</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/TAHI_pf7Zr8/</link>
		<comments>http://wp.drapeko.com/?p=709#comments</comments>
		<pubDate>Wed, 20 May 2009 22:37:07 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[Posts]]></category>

		<category><![CDATA[autoload]]></category>

		<category><![CDATA[autoloading]]></category>

		<category><![CDATA[intelligencer]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[__autoload]]></category>

		<guid isPermaLink="false">http://wp.drapeko.com/?p=709</guid>
		<description><![CDATA[ Several months ago I wrote an article that included several interesting examples of __autoload function, some autoloading approaches and a tiny script that is able find interfaces/classes and generate arrays of associations among these classes/interfaces, their locations and extended/included classes/interfaces.
http://wp.drapeko.com/2009/03/28/autoloading-in-php/
I widely use this script and I&#8217;ve found it really convenient.  I don&#8217;t have to [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=709&amp;t=PHP+Intelligencer%2C+tiny+autoload+framework&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div><p>Several months ago I wrote an article that included several interesting examples of __autoload function, some autoloading approaches and a tiny script that is able find interfaces/classes and generate arrays of associations among these classes/interfaces, their locations and extended/included classes/interfaces.</p>
<p><a href="http://wp.drapeko.com/2009/03/28/autoloading-in-php/">http://wp.drapeko.com/2009/03/28/autoloading-in-php/</a></p>
<p>I widely use this script and I&#8217;ve found it really convenient.  I don&#8217;t have to think anymore of how to store my classes, what is the structure of the project etc. All this work is done by this script.</p>
<p>But&#8230; I have to launch it manually.</p>
<p>I&#8217;ve decided to go further and began to create a tiny framework called Intelligencer. This framework will extend functionality of the autoload generator script.</p>
<p>Some Intelligencers features:</p>
<ol>
<li>It is very tiny and does not depend on other frameworks and external libraries. It&#8217;s very easy to integrate it.</li>
<li>It has an ability to store and control inheritance associations and relations between classes/interfaces and their locations.</li>
<li>If something has changed Intelligencer will automatically regenerate (if necessary) lists of associations. It&#8217;s really very useful in the development stage.</li>
<li>Intelligencer has a huge number of config settings. It&#8217;s flexible.</li>
<li>Intelligencer supports environments. You can easily create your custom environments and switch between them.</li>
<li>You can create several Intelligencers that will be responsible for different parts of your application.</li>
<li>You can work with Intelligencer both on config level and API level.</li>
</ol>
<p>If you use it, it will do all work for you. It&#8217;s an open source. Location -  sourceforge.</p>
<p>The first release will come very soon.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D709&amp;linkname=PHP%20Intelligencer%2C%20tiny%20autoload%20framework"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/vRs8KSHFOWIm8DnEtC3rkXqzDy4/0/da"><img src="http://feedads.g.doubleclick.net/~a/vRs8KSHFOWIm8DnEtC3rkXqzDy4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/vRs8KSHFOWIm8DnEtC3rkXqzDy4/1/da"><img src="http://feedads.g.doubleclick.net/~a/vRs8KSHFOWIm8DnEtC3rkXqzDy4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/TAHI_pf7Zr8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=709</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=709</feedburner:origLink></item>
		<item>
		<title>Google Adsense Appeal letter</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/z44XtnkUWKA/</link>
		<comments>http://wp.drapeko.com/?p=668#comments</comments>
		<pubDate>Sat, 16 May 2009 17:46:56 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[Posts]]></category>

		<category><![CDATA[account]]></category>

		<category><![CDATA[adsense]]></category>

		<category><![CDATA[appeal]]></category>

		<category><![CDATA[banned]]></category>

		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://wp.drapeko.com/?p=668</guid>
		<description><![CDATA[ I began to use Google Adsense two months ago. One month ago my account was banned. Unfortunately, the first appeal was unsuccessful and I did not get any explanations.  I don&#8217;t know the exact reason why I was banned. It makes me laugh but the number of &#8216;earned&#8217; money was a little bit more [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=668&amp;t=Google+Adsense+Appeal+letter&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div><p>I began to use Google Adsense two months ago. One month ago my account was banned. Unfortunately, the first appeal was unsuccessful and I did not get any explanations.  I don&#8217;t know the exact reason why I was banned. It makes me laugh but the number of &#8216;earned&#8217; money was a little bit more than 10 dollars. But I&#8217;m really very interested in good relations with Google, that&#8217;s why several days ago I appealed for the second time.</p>
<p>I sent a letter below.</p>
<p style="padding-left: 60px;"><span style="color: #003366;">Dear Sir/Madam Appeal</span></p>
<p style="padding-left: 60px;"><span style="color: #003366;">I am writing for the second time regarding these misunderstanding. Your<br />
previous letter made me very unhappy and I didn’t expect such a decision to<br />
be made. I am indeed very interested in cooperation with Google and I am<br />
convinced that there was a misunderstanding.</span></p>
<p style="padding-left: 60px;"><span style="color: #003366;">I claim that I have followed all the terms and conditions and I have not<br />
broken any rules/ In particular, I have not place any forbidden content, I<br />
didn’t click on the banners and I have not incited anybody to click on<br />
them. What if somebody did it on purpose so as to deprive me? In that case<br />
I have absolutely no protection against somebody’s bad intentions. My<br />
account has been active only for a week. Is the statistics gathered during<br />
such a short period of time sufficient to conclude this is indeed me who<br />
tried to cheat Google?</span></p>
<p style="padding-left: 60px;"><span style="color: #003366;">I’d hate to lose the opportunity to work with Google and with AdSense in<br />
particular. I have no intention to create other accounts under a different<br />
name. I am not interested in illegal actions or unfair profit.  I am ready<br />
to uphold my rights and prove that. I would really want to have my account<br />
annulled so as to start building the long-term and trustworthy relations<br />
with Google.</span></p>
<p style="padding-left: 60px;"><span style="color: #003366;">I appeal to Google to reconsider the matter.</span></p>
<p style="padding-left: 60px;"><span style="color: #003366;">I look forward to hearing from you,</span></p>
<p style="padding-left: 60px;"><span style="color: #003366;">Yours faithfully,<br />
Roman</span></p>
<p>Have you been in a similar situations? What is the result?</p>
<p>P.S. I decided to be independent from one particular adv company. I will try to implement one interesting idea very soon in terms of advertisement. Stay in touch. :)</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D668&amp;linkname=Google%20Adsense%20Appeal%20letter"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/nAX22rfyJvucSqgaXqglcGbTPDI/0/da"><img src="http://feedads.g.doubleclick.net/~a/nAX22rfyJvucSqgaXqglcGbTPDI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nAX22rfyJvucSqgaXqglcGbTPDI/1/da"><img src="http://feedads.g.doubleclick.net/~a/nAX22rfyJvucSqgaXqglcGbTPDI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/z44XtnkUWKA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=668</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=668</feedburner:origLink></item>
		<item>
		<title>Connect remotely to Unix/Linux using SSH with X-Windows support</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/7ssU_HswAUs/</link>
		<comments>http://wp.drapeko.com/?p=635#comments</comments>
		<pubDate>Sat, 16 May 2009 14:31:50 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[Posts]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[putty]]></category>

		<category><![CDATA[remote connection]]></category>

		<category><![CDATA[ssh]]></category>

		<category><![CDATA[unix]]></category>

		<category><![CDATA[windows]]></category>

		<category><![CDATA[x-windows]]></category>

		<category><![CDATA[xming]]></category>

		<guid isPermaLink="false">http://wp.drapeko.com/?p=635</guid>
		<description><![CDATA[ Situation: you would like to connect remotely using SSH protocol to Linux/Unix OS from Windows environment and to run remotely a program that uses X-Windows (e.g. Eclipse) .
How can you do it?

Download SSH client. The most popular is free PuTTY client (http://www.chiark.greenend.org.uk/~sgtatham/putty/)
Secondly download and install X-Windows server for your Windows environment. I suggest to [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=635&amp;t=Connect+remotely+to+Unix%2FLinux+using+SSH+with+X-Windows+support&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div><p>Situation: you would like to connect remotely using SSH protocol to Linux/Unix OS from Windows environment and to run remotely a program that uses X-Windows (e.g. Eclipse) .</p>
<p>How can you do it?</p>
<ol>
<li>Download SSH client. The most popular is free PuTTY client (<a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">http://www.chiark.greenend.org.uk/~sgtatham/putty/</a>)</li>
<li>Secondly download and install X-Windows server for your Windows environment. I suggest to use xming (<a href="http://sourceforge.net/projects/xming">http://sourceforge.net/projects/xmin</a>g). xming installation tips are available here: <a href="http://gears.aset.psu.edu/hpc/guides/xming/">http://gears.aset.psu.edu/hpc/guides/xming/</a></li>
<li>Open Putty, go to Connection-&gt;SSH-&gt;X11 and enable X11 forwarding</li>
<p style="text-align: center;"><img class="aligncenter" src="http://gears.aset.psu.edu/hpc/guides/xming/images/putty-x11.png" alt="" width="328" height="318" /></p>
<li>Connect to the remote host and launch the program</li>
</ol>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D635&amp;linkname=Connect%20remotely%20to%20Unix%2FLinux%20using%20SSH%20with%20X-Windows%20support"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/qtOzjwJwHhWmLB42D_AhXYCSsn8/0/da"><img src="http://feedads.g.doubleclick.net/~a/qtOzjwJwHhWmLB42D_AhXYCSsn8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qtOzjwJwHhWmLB42D_AhXYCSsn8/1/da"><img src="http://feedads.g.doubleclick.net/~a/qtOzjwJwHhWmLB42D_AhXYCSsn8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/7ssU_HswAUs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=635</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=635</feedburner:origLink></item>
		<item>
		<title>Oracle Advanced PL/SQL Developer Certified Professional 1z0-146</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/CdCSyUJxt-w/</link>
		<comments>http://wp.drapeko.com/?p=462#comments</comments>
		<pubDate>Sun, 26 Apr 2009 21:33:01 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[Posts]]></category>

		<category><![CDATA[1z0-146]]></category>

		<category><![CDATA[1z1-146]]></category>

		<category><![CDATA[beta]]></category>

		<category><![CDATA[certification]]></category>

		<category><![CDATA[exam]]></category>

		<category><![CDATA[OCP]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://wp.drapeko.com/?p=462</guid>
		<description><![CDATA[ I took Oracle beta 1z1-146 exam in the end of January, 2009. Several days ago I checked prometric.com and discovered that this exam was passed. Now I&#8217;m one of the first Oracle Advanced PL/SQL Developer Certified Professional          all over the world!!! it&#8217;s my second OCP [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=462&amp;t=Oracle+Advanced+PL%2FSQL+Developer+Certified+Professional+1z0-146&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div><p>I took Oracle beta 1z1-146 exam in the end of January, 2009. Several days ago I checked prometric.com and discovered that this exam was passed. Now I&#8217;m one of the first Oracle Advanced PL/SQL Developer Certified Professional          all over the world!!! it&#8217;s my second OCP :)</p>
<p><img class="alignnone size-full wp-image-464" title="oracle_certprof_clr_rgb" src="http://wp.drapeko.com/wp-content/uploads/2009/04/oracle_certprof_clr_rgb.jpg" alt="oracle_certprof_clr_rgb" width="388" height="159" /></p>
<p>I did not find any dumps, any mock exams or any sample questions, while I was preparing for this exam. I used only these <a href="http://rapidshare.com/files/127182353/D52601GC10_netbks.com.rar">http://rapidshare.com/files/</a><a href="http://rapidshare.com/files/127182353/D52601GC10_netbks.com.rar">127182353/D52601GC10_netbks.</a><a href="http://rapidshare.com/files/127182353/D52601GC10_netbks.com.rar">com.rar</a> official Oracle preparation slides (remember to switch comments - it&#8217;s a book). 1z1-146 exam was really tough. 165 questions in 180 minutes. Production exam requirements: time - 90 min, questions - 68. There is a difference, is not it?</p>
<p>If you are going to take one of Oracle beta exams and you have time and ability to stay calm, you are not interested to economize some money I suggest waiting for a production one. Pluses: 1) You will probably get results two weeks earlier then beta-takers 2) More time, less questions 3) It&#8217;s not so  stressful 4) The probability to pass is much higher.</p>
<p>Do you agree? What is your experience in taking certification exams? :)</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D462&amp;linkname=Oracle%20Advanced%20PL%2FSQL%20Developer%20Certified%20Professional%201z0-146"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/Ad4wNijF-qyPukAyUyEHmpn0MXI/0/da"><img src="http://feedads.g.doubleclick.net/~a/Ad4wNijF-qyPukAyUyEHmpn0MXI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ad4wNijF-qyPukAyUyEHmpn0MXI/1/da"><img src="http://feedads.g.doubleclick.net/~a/Ad4wNijF-qyPukAyUyEHmpn0MXI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/CdCSyUJxt-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=462</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=462</feedburner:origLink></item>
		<item>
		<title>How to install Rational Rose on Windows XP Home Edition</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/XZSjQzvBrzg/</link>
		<comments>http://wp.drapeko.com/?p=282#comments</comments>
		<pubDate>Thu, 23 Apr 2009 10:52:12 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[Posts]]></category>

		<category><![CDATA[ibm]]></category>

		<category><![CDATA[rational rose]]></category>

		<category><![CDATA[windows xp home]]></category>

		<guid isPermaLink="false">http://wp.drapeko.com/?p=282</guid>
		<description><![CDATA[ How to install Rational Rose on Windows XP Home Edition?
If you are trying to do it, you probably get the following message:
&#8220;We are attempting to install on an unsupported operating system. We recommend that you install on a supported operating system. See your Rational product&#8217;s Release Notes for a complete list of supported operating [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=282&amp;t=How+to+install+Rational+Rose+on+Windows+XP+Home+Edition&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div><p>How to install Rational Rose on Windows XP Home Edition?</p>
<p>If you are trying to do it, you probably get the following message:</p>
<blockquote><p>&#8220;We are attempting to install on an unsupported operating system. We recommend that you install on a supported operating system. See your Rational product&#8217;s Release Notes for a complete list of supported operating systems and service packs.&#8221;</p></blockquote>
<p>Fortunately, this restriction is artificial one. You can turn it off.</p>
<ol>
<li>Start -&gt; Run -&gt; cmd</li>
<li>Go to the directory where Rational is installed (example, <strong>cd C:/Program Files/Rational</strong>)</li>
<li>Find Rose.msi file. Usually it&#8217;s located in the SETUP folder. It can be called 1041_Rose.msi or something very similar.</li>
<li>Type <strong>msiexec.exe /l*vx inst.log /i Rose.msi /c DISABLE_PLATFORM_BLOCKS=1</strong></li>
</ol>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D282&amp;linkname=How%20to%20install%20Rational%20Rose%20on%20Windows%20XP%20Home%20Edition"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/xS44VkHSh363sa8eKc-K0ha5FYQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/xS44VkHSh363sa8eKc-K0ha5FYQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xS44VkHSh363sa8eKc-K0ha5FYQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/xS44VkHSh363sa8eKc-K0ha5FYQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/XZSjQzvBrzg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=282</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=282</feedburner:origLink></item>
		<item>
		<title>Looking for a new Job, interesting questions</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/qfItnUHxbu4/</link>
		<comments>http://wp.drapeko.com/?p=244#comments</comments>
		<pubDate>Sat, 04 Apr 2009 17:59:36 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[New job]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[excel]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[interview]]></category>

		<category><![CDATA[job]]></category>

		<category><![CDATA[london]]></category>

		<category><![CDATA[microsoft]]></category>

		<category><![CDATA[oo]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[questions]]></category>

		<category><![CDATA[semantic web]]></category>

		<category><![CDATA[uml]]></category>

		<category><![CDATA[web services]]></category>

		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://wp.drapeko.com/?p=244</guid>
		<description><![CDATA[ A month ago I relocated to London. And now I&#8217;m looking for a job here. The process is quite boring. Agents, sites, applications, cover letters, CVs. And.. unfortunately no visible result yet. But sometimes potential employers ask to do interesting tasks. For example, one of them asked to answer the questions below:



What is your [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=244&amp;t=Looking+for+a+new+Job%2C+interesting+questions&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div>
<p>A month ago I relocated to London. And now I&#8217;m looking for a job here. The process is quite boring. Agents, sites, applications, cover letters, CVs. And.. unfortunately no visible result yet. But sometimes potential employers ask to do interesting tasks. For example, one of them asked to answer the questions below:</p>
<table border="0">
<tbody>
<tr>
<td style="width: 200px;">What is your favourite</td>
<td>What do you *think* of</td>
</tr>
<tr>
<td>
<ul>
<li> programming language</li>
<li>operating system</li>
<li>editor/IDE</li>
<li>version control system</li>
<li>bug tracking system</li>
<li>development tool</li>
<li>web site</li>
<li>movie</li>
<li>record</li>
<li>book?</li>
</ul>
</td>
<td>
<ul>
<li>XML</li>
<li>Web Services</li>
<li>Flash</li>
<li>Excel</li>
<li>AJAX, &#8220;web 2.0&#8243;</li>
<li>the Semantic Web</li>
<li>Agile Development</li>
<li>UML</li>
<li>OO</li>
<li>Microsoft</li>
<li>Google</li>
<li>Apple?</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>My version could be found below.</p>
<p><span id="more-244"></span></p>
<h1>What is your favorite</h1>
<h2>1. programming language</h2>
<p>My experience includes programming in Java, JavaScript, C, C++, Pascal and database inner languages (PL/SQL, SQL PL etc). Still, my favorite language is PHP. It&#8217;s small and fast. It&#8217;s simple and convenient. Have you ever used arrays in PHP? They are divine.</p>
<h2>2. Operating system</h2>
<p>I like to use the most modern software. My computer likes to be up-to-date. My devices like to be identified from the first attempt. Friendliness and usability are the most important things for me. I partook in action called &#8220;A year without Windows, work on Linux&#8221;. It was a prolonged battle but I was responsible and bet on, so I installed Windows on 366 day, not earlier. I choose Windows, but I really like bash in Linux/Unix.</p>
<h2>3. Editor/IDE</h2>
<ul>
<li>Notepad++ is for rapid notes and corrections. Light and powerful.</li>
<li>Netbeans is for Java. I have not seen a better one for Java.</li>
<li>Aqua Data studio is the best one for database development. Works with all possible databases: from H2 to Oracle.</li>
<li>Eclipse is for all other projects. Millions of plugins. Thousands of good plugins.</li>
</ul>
<h2>4. Version control system</h2>
<p>I have recently switched from CVS to SVN and I&#8217;m not thinking about going back. SVN manipulates all file types, works faster and is still alive.</p>
<h2>5. Bug tracking system</h2>
<p>I have used ClearQuest and Jira. I don’t have any specific preferences, but the first one exists in several realisations and could be easily integrated into Eclipse environment.</p>
<h2>6. Development tool</h2>
<p>IBM Rational package is highly professional software. Programs extremely well integrate into each other. You could design even an aircraft within this environment. Mostly I like Rational Rose Data Modeler and its’ forward and reverse engineering abilities.</p>
<h2>7. Web site</h2>
<p>Favorite websites are constantly and dynamically changing. When I’m heavily working within Oracle and PL/SQL environment, the most favorite site is http://ora-code.com/. When I’m working with PHP – http://php.net and Java – http://java.sun.com/javase/6/docs/api/.</p>
<p>I visit regularly bbc.com and economist.com websites to catch last world news.</p>
<h2>8. Movie</h2>
<p>The Green Mile. Emotional. Strong ideas. Great actors.</p>
<h2>9. Record</h2>
<p>I graduated musical school on the saxophone. I love jazz. Check that out <a title="view" href="http://www.youtube.com/watch?v=XPxSSBe8DaU">http://www.youtube.com/watch?v=XPxSSBe8DaU</a>. Is not it wonderful?</p>
<h2>10. Book</h2>
<p>Allen Carr - The Easy Way to Stop Smoking. If you have faced a smoking problem, I highly recommend you this book.</p>
<h1>What do you *think* of</h1>
<h2>1. XML</h2>
<p>XML is very simple and powerful. When I was writing my bachelor’s thesis called XML Data Search in Relational Databases I run into one of the Microsoft executive’s opinion. He thought that XML’s popularity was fabricated and would be short-time frame. He told it in 2002. Was he mistaken? Now XML is everywhere. XML is in your telephone, is a foundation of your favorite feed, in configuration files and it is even a basic format for Microsoft Office documents. Unbelievable, but XQuery is a primary language in DB2 database. Oracle also keeps this realization in plans. SQL/XML is 14th extension of SQL standard.</p>
<p>But history does not remember occasions when the thing becomes universal and is used everywhere. XML has one big minus. The ratio of all information to useful information is approximately 10:1 in the average XML file. Have you heard abou Json, Yaml? I have. And I think the computing world will probably hear about them in the nearest future. What if that executive was right?</p>
<h2>2. Web Services</h2>
<p>What would I choose: remote procedures, messages or resources? I like the last two. I strongly believe that services should “understand” their responsibilities very deeply and “do” their whole job very well. I like to think in abstractions. For me it’s not important at all what realization on the server side is. I need to be convinced that provision of this service is somebody else’s responsibility. I don’t want to depend on remote libraries.</p>
<h2>3. Flash</h2>
<p>As far as traditional plain web application is concerned, XHTML is for a structured data, CSS is for presentation, JavaScript is for actions and effects, Flash is for</p>
<ul>
<li> Applications such as games, webcasts, movies or records. As you know JavaScript cannot work with client files. Sometimes flash applications could be used very efficiently, for example, when you want to create a web application that would resize user pictures. If you use JavaScript you will realize this service on server side, but if you use Flash you can do it on the user side. What is the plus? Traffic.</li>
<li>Advertisements. I presume that flash-movies will be very intensively used as advertisements in the nearest future.</li>
</ul>
<p>But if we speak about the future technologies, I think there is a very huge probability that we will see quite many different visualization technologies in the future. Not only flash. For example, Microsoft stake on its own technology called Silverlight.</p>
<h2>4. Excel</h2>
<p>Special language was designed for excel templates in my previous job. Fragments of the code were integrated into excel comments. An application that dealt with these templates was located on the server side. What was the plus? We had the ability to develop very complex excel reports without using any special environment but excel.</p>
<p>You could think about excel in different ways. J Excel could be really powerful not only in traditional way</p>
<h2>5. AJAX, &#8220;web 2.0&#8243;</h2>
<p>Two years ago one could have claimed that Ajax was the future of the web. Today it appears to be a misbelieve. Ajax is the present, but probably not the future. Why? It’s very efficient.</p>
<p>I would like to say that I constantly use Google Docs. The idea to be independent from the computer device is a good one. I like it very much. Now we can manage and modify our files through the internet, tomorrow we will use Web operating systems to install the programs. Ajax will help us very much.</p>
<h2>6. the Semantic Web</h2>
<p>What is the purpose of the Semantic Web? To have the ability of describing everything. To have the ability to query everything. I think that the semantic web is in a same position that Ajax was in two years ago. Associations between friends in social networks, OpenID, RSS, Yahoo Answers, Google search opportunities are just the first steps in developing one large semantic web.</p>
<h2>7. Agile Development</h2>
<p>I like it.</p>
<h2>8. UML</h2>
<p>UML is a really good layer between the ideas and realization, between the analysts and developers.</p>
<p>I like forward-engineering. Moreover I think that in the nearest future most of the code will be generated by moving different components or objects on the screen. Java will become a low-level language. C will become an underground level language. UML and forward-engineering are just one of the first steps.</p>
<h2>9. OO</h2>
<p>I like to think in abstractions. I programmed in Java, PHP OO, C++ and used Oracle OO capabilities.</p>
<p>UML is just a modeling language, it’s just a tool that helps realize several conceptions. UML helps visually realize the conception of OO paradigm. OO is an excellent layer between the real life and computer.</p>
<h2>10. Microsoft, Google and Apple</h2>
<table border="0">
<tbody>
<tr>
<th></th>
<th>Micrososft</th>
<th>Google</th>
<th>Apple</th>
</tr>
<tr>
<td style="font-style:italic">Synonym to</td>
<td>Personal computer, Software</td>
<td>Search engine, Web</td>
<td>Mobile devices</td>
</tr>
<tr>
<td style="font-style:italic">Age of</td>
<td>Vizualization</td>
<td>Search</td>
<td>Design</td>
</tr>
<tr>
<td style="font-style:italic">Is memorized by</td>
<td>Usability</td>
<td>Minimalism, Courageous ideas</td>
<td>Comfort, Inimitable Design</td>
</tr>
</tbody>
</table>
<p>I think Microsoft will try to overtake Google in Web.<br />
Apple and Google will try to overtake Microsoft in browsers.<br />
Apple will try to overtake Microsoft in Operating system.<br />
Google will release the first web operating system.</p>
<h1>What is your version?</h1>
<p>What do you think? You are welcome!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D244&amp;linkname=Looking%20for%20a%20new%20Job%2C%20interesting%20questions"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/9X39DOUNWS15-NrZS4775W3fmeA/0/da"><img src="http://feedads.g.doubleclick.net/~a/9X39DOUNWS15-NrZS4775W3fmeA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9X39DOUNWS15-NrZS4775W3fmeA/1/da"><img src="http://feedads.g.doubleclick.net/~a/9X39DOUNWS15-NrZS4775W3fmeA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/qfItnUHxbu4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=244</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=244</feedburner:origLink></item>
		<item>
		<title>Autoloading in PHP</title>
		<link>http://feedproxy.google.com/~r/Drapeko/~3/F_YCU43hCdc/</link>
		<comments>http://wp.drapeko.com/?p=1#comments</comments>
		<pubDate>Sat, 28 Mar 2009 06:29:46 +0000</pubDate>
		<dc:creator>rdrapeko</dc:creator>
		
		<category><![CDATA[Articles]]></category>

		<category><![CDATA[autoload]]></category>

		<category><![CDATA[autoloading]]></category>

		<category><![CDATA[generator]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http:/?p=1</guid>
		<description><![CDATA[ Have you ever been faced with autoloading in PHP? Are you a newbie? Do you think you understand the nature of autoloading? This article is for you. This article will take approximately 25-35 min.
This article:

Asks you: what is an autoloading? Do you really understand how __autoload() function works?
Examines several autoloading approches
Suggests a script that [...]]]></description>
			<content:encoded><![CDATA[<!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--><div style='float:left'><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://wp.drapeko.com/?p=1&amp;t=Autoloading+in+PHP&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td></table></div><p><img class="size-medium wp-image-475 alignright" title="computer_main" src="http://wp.drapeko.com/wp-content/uploads/2009/03/computer_main-280x300.jpg" alt="computer_main" width="168" height="180" />Have you ever been faced with autoloading in PHP? Are you a newbie? Do you think you understand the nature of autoloading? This article is for you. This article will take approximately 25-35 min.<br />
This article:</p>
<ol>
<li>Asks you: what is an autoloading? Do you really understand how __autoload() function works?</li>
<li>Examines several autoloading approches</li>
<li>Suggests a script that scans folders for classes and interfaces and generates array of associations between classes and their locations.</li>
</ol>
<p>Autoloading/Dependency generator:<a title="download" href="http://drapeko.com/store/autoload_in_php/autoload_generator_v12.rar" target="_self"> download (4.6 KB) 07 05 2009 →</a>, <a title="description" href="#desc_of_generators" target="_self">description </a><a title="description" href="#desc_of_generators" target="_self">↓</a></p>
<p>Examples for this article: <a title="download" href="http://drapeko.com/store/autoload_in_php/autoload_examples.rar" target="_self">download (4.0 KB) →</a>, <a title="description" href="#desc_of_examples" target="_self">description ↓</a></p>
<p><span id="more-1"></span></p>
<h2>Two problems</h2>
<p>Let&#8217;s start from the conception and the approach PHP offers us.</p>
<p>You have to load a class before an attempt to use it is made, don&#8217;t you? How could you load it? You are likely to face two problems:</p>

<ol>
<li>You don&#8217;t know where the class/interface is located</li>
<li>You cannot identify the moment when the loading is required</li>
</ol>
<p>PHP 5 easily solves the second problem. Below you can see a quote from <a href="http://uk2.php.net/autoload">http://uk2.php.net/autoload</a></p>
<blockquote><p>&#8220;Many developers writing object-oriented applications create one PHP source file per-class definition. One of the biggest annoyances is having to write a long list of needed includes at the beginning of each script (one for each class).</p>
<p>In PHP 5, this is no longer necessary. You may define an __autoload function which is automatically called in case you are trying to use a class/interface which hasn&#8217;t been defined yet. By calling this function the scripting engine is given a last chance to load the class before PHP fails with an error.&#8221;</p></blockquote>
<p>Moreover PHP 5.1 gives a chance to define your own autoload funtion by using <span class="inlinecode"><a href="http://uk.php.net/manual/en/function.spl-autoload-register.php">spl_autoload_register()</a> from <a href="http://uk.php.net/spl/">SPL</a> library. Why do you need it? Imagine the situation when you want to use together two libraries from different vendors that use __autoload function. What might you get? Absolutely right! You have a chance to get an error for redefining an already defined function.</span></p>
<h2>Check yourself</h2>
<p>I have several questions for you. I believe you will cope with them in seconds.</p>
<p>We have the following structure of the folders and files (you can download all examples <a title="download" href="http://wp.drapeko.com/store/php-autoloading-files/">here</a>):</p>
<div class="meta">
<pre>  Project
  ..<em>Classes</em>
  ....<em>Children</em>
  ......A.php                    class A implements I1 {}
  ....B.php                      class B implements I2 {}
  ....Class_C.php                class C extends B implements I1, I3 {}
  ..<em>Interfaces</em>
  ....I1.php                     interface I1 {}
  ....blablabla.php              interface I2 extends I1 {}
  ....I3.php                     interface I3 {}</pre>
</div>
<h3>First question</h3>
<p>On the right side you can see the content of the files.  What result will you get if you invoke the script below?</p>
<pre>
<pre name="code" class="php">

&lt;?php

  /**
  * first question
  */

  function __autoload($className) {
    echo &quot;1, &quot;; require_once &#039;Project/Interfaces/I3.php&#039;;
    echo &quot;2, &quot;; require_once &#039;Project/Classes/B.php&#039;;
    echo &quot;3, &quot;; require_once &#039;Project/Classes/Children/A.php&#039;;
    echo &quot;4, &quot;; require_once &#039;Project/Interfaces/I1.php&#039;;
    echo &quot;5, &quot;; require_once &#039;Project/Interfaces/blablabla.php&#039;;
  }

  $x = new A();
?&gt;
</pre>
</pre>
<p>The answer is 1, 2, 1, 2, 3, 1, 2, 3, 4, 5, 4, 5, 3, 4, 5. Have you got it right? If so, my congratulations. If no, don&#8217;t worry, we will examine this now.</p>
<p><em>An explanation of the first example</em>.</p>
<p>An autoload function is called to load class A.</p>
<ol>
<li>&#8220;1&#8243; is printed. Interface I3 is loaded.</li>
<li>&#8220;2&#8243; is printed. Made attempt to load class B, but B could not be loaded without I2 interface. Another function is called to load I2 interface.
<ol>
<li>&#8220;1&#8243; and &#8220;2&#8243; are printed</li>
<li>&#8220;3&#8243; is printed. Made attempt to load class A. Another function is called to load I1 interface
<ol>
<li>&#8220;1&#8243;, &#8220;2&#8243;, &#8220;3&#8243; are printed.</li>
<li>&#8220;4&#8243; is printed. I1 is loaded, the goal is achieved.</li>
<li>&#8220;5&#8243;  is printed. I2 is loaded. Function finishes the job.</li>
</ol>
</li>
<li>Class C is completely loaded. &#8220;4&#8243; and &#8220;5&#8243; are printed, as all the necessary classes are loaded. Function finishes the job.</li>
</ol>
</li>
<li>Class B is completely loaded. &#8220;3&#8243;, &#8220;4&#8243;, &#8220;5&#8243; are printed. Function finishes the job.</li>
</ol>
<h3>Second question</h3>
<p>Let&#8217;s take the first example and move the third line to the first position, and renew the numeration in echo statements.</p>
<pre>
<pre name="code" class="php">

&lt;?php
  /**
   * second question
   */
  function __autoload($className) {
    echo &quot;1, &quot;; require_once &#039;Project/Classes/Children/A.php&#039;;
    echo &quot;2, &quot;; require_once &#039;Project/Interfaces/I3.php&#039;;
    echo &quot;3, &quot;; require_once &#039;Project/Classes/B.php&#039;;
    echo &quot;4, &quot;; require_once &#039;Project/Interfaces/I1.php&#039;;
    echo &quot;5, &quot;; require_once &#039;Project/Interfaces/blablabla.php&#039;;
  }

  $x = new A();
?&gt;
</pre>
</pre>
<p>The right answer is 1, 1, 2, 3, 1, 2, 3, 4, 5, 4, 5, 2, 3, 4, 5.</p>
<p><em>An explanation of the second example</em>.</p>
<ol>
<li>&#8220;1&#8243; is printed. Made attempt to load class A, but A could not be loaded without I1 interface. Another function is called to load I1 interface.
<ol>
<li>&#8220;1&#8243; is printed.</li>
<li>&#8220;2&#8243; is printed. I3 is loaded.</li>
<li>&#8220;3&#8243; is printed. Made attempt to load class B, but B could not be loaded without I2. Another function is called to load I2 interface.
<ol>
<li>&#8220;1&#8243;, &#8220;2&#8243;, &#8220;3&#8243; are printed</li>
<li>&#8220;4&#8243; is printed. I1 is loaded.</li>
<li>&#8220;5&#8243; is printed. I2 is loaded. Function finishes the job.</li>
</ol>
</li>
<li>B is completely loaded. &#8220;4&#8243; and &#8220;5&#8243; are printed.</li>
</ol>
</li>
<li>A is completely loaded. &#8220;2&#8243;, &#8220;3&#8243;, &#8220;4&#8243; and &#8220;5&#8243; are printed.</li>
</ol>
<h3>Third question</h3>
<p>Ok, be patient. :) The last example. Let&#8217;s take the second example and move the last line to the second position, and renew the numeration in echo statements.</p>
<pre>
<pre name="code" class="php">

&lt;?php

  function __autoload($className) {
    echo &quot;1, &quot;; require_once &#039;Project/Classes/Children/A.php&#039;;
    echo &quot;2, &quot;; require_once &#039;Project/Interfaces/blablabla.php&#039;;
    echo &quot;3, &quot;; require_once &#039;Project/Interfaces/I3.php&#039;;
    echo &quot;4, &quot;; require_once &#039;Project/Classes/B.php&#039;;
    echo &quot;5, &quot;; require_once &#039;Project/Interfaces/I1.php&#039;;
  }

  $x = new A();
?&gt;
</pre>
</pre>
<p>What example have you got? Was it expected? I advise you to invoke this code yourself.</p>
<p><em>An explanation of the third example</em>.</p>
<ol>
<li>&#8220;1&#8243; is printed. Made attempt to load class A, but A could not be loaded without I1 interface. Another function is called to load I1 interface.
<ol>
<li>&#8220;1&#8243; is printed.</li>
<li>&#8220;2&#8243; are printed. Made attempt to load interface I2, but I2 could not be loaded without I1. Another function won&#8217;t be called. We got a fatal error :)</li>
</ol>
</li>
</ol>
<p>The result is very interesting indeed. We found at least one example, when we get the fatal error.The simplest conclusion is that everything depends on ordering of the statements.  Has not anybody been interested how autoload works when one class extends another one? I would like to ask the audience where could I find the comprehensive guide to autoload mechanism logic. Unfortunately my quest has not given me considerable results.</p>
<p>all examples can be downloaded <a title="download" href="http://wp.drapeko.com/store/php-autoloading-files/">here</a>.<a title="download" href="http://wp.drapeko.com/store/php-autoloading-files/"><br />
</a></p>
<h2>Naming standards</h2>
<p>Nowadays there are several popular approaches to solve the first problem, the location problem. First of them is an usage of the specific naming standards.</p>
<h3>Zend approach</h3>
<p>The most popular approach was suggested by Zend. The  location of the file is simply encoded in the name of the class. Below you can see the example which draws an idea of this approach.</p>
<pre>
<pre name="code" class="php">

// Main.class

function __autoload($class_name) {
    $path = str_replace(&#039;_&#039;, DIRECTORY_SEPARATOR, $class_name);
    require_once $path.&#039;.php&#039;;
}
</pre>
</pre>
<pre>
<pre name="code" class="php">

$temp = new Main_Super_Class();
</pre>
</pre>
<p>All &#8220;_&#8221; signs are replaced with the directory separator. For example, this function will look for Main_Super_Class class in Main/Super/Class.php file.</p>
<p>The main drawback is that you have to know the complete structure of folders before the code construction process. All the time you use names of  classes in the code you hardcode locations of these classes. Therefore if the structure of the folders is changed you will have to modify the source code.</p>
<h3>&#8216;Include all&#8217; approach</h3>
<p>If you work in the development environment or a speed just is not the thing you pursue it&#8217;s very convenient to include all class files in specific folders before the execution of the script. A class file could be identified by the fragment of the file&#8217;s name (for example, by &#8216;.class&#8217; prefix before the extension).</p>
<p>Below you can see the example of this realization.</p>
<pre>
<pre name="code" class="php">

&lt;?php
  $arr = array (
    &#039;Project/Classes&#039;,
    &#039;Project/Classes/Children&#039;,
    &#039;Project/Interfaces&#039;
  );

  foreach($arr as $dir) {
    $dir_list = opendir($dir);

    while ($file = readdir($dir_list)) {
      $path = $dir.DIRECTORY_SEPARATOR.$file;
      if(in_array($file, array(&#039;.&#039;, &#039;..&#039;)) || is_dir($path))
        continue;

      if (strpos($file, &quot;.class.php&quot;))
        require_once $path;
    }
  }
?&gt;
</pre>
</pre>
<p>But this approach <strong>does not work</strong>. I&#8217;ve just wanted to check, how attentively you read. I&#8217;m sorry for that. :)</p>
<p>The reason is that PHP requires to follow the order of the including. If class A extends class B,  you must include B before A class including. Now I think it&#8217;s clear why PHP invokes autoload function all the time the class is not loaded. It solves ordering problem. You can try it yourself by invoking the above script. If you want to ask why not to incorporate the above code into autoload function, please examine very carefully the third example once more.</p>
<h2>Associations between files ant their locations</h2>
<p>At last we reached the paragraph for the sake of which this article was written.</p>
<p>Another approach is to store the location of classes somewhere in configuration file. For example,</p>
<pre>
<pre name="code" class="php">

// configuration.php
array_of_associations = array(
  &#039;MainSuperClass&#039; = &#039;C:/Main/Super/Class.php&#039;,
  &#039;MainPoorClass&#039; = &#039;C:/blablabla/gy.php&#039;
);
</pre>
</pre>
<p>I think you understand minuses of this approach. You always have to support the correctness of this array. If the number of classes is tremendous it&#8217;s very difficult to do. But it&#8217;s better than to hardcode locations in the code, is not it? Ok, it&#8217;s philosophical question. It&#8217;s up to you. :)</p>
<p>But I like it very much. Locations are stored in one place and they are not incorporated into the code. You can change  data without modifying the code. You can store the locations in array, xml, yaml, json etc.</p>
<p>The sample realization of autoload function is shown below.</p>
<pre>
<pre name="code" class="php">

&lt;?php
  require &#039;autoload_generated.php&#039;;

  function __autoload($className) {
    global $autoload_list;
    require_once $autoload_list[$className];
  }

  $x = new A();
?&gt;
</pre>
</pre>
<p>But I do not like to watch over such things manually. What we can do in this situation? You probably know the answer.</p>
<h2>Generate association array</h2>
<h3>Generator</h3>
<p>We need a special script for generating this array. I think you will be very glad to hear that I realized it.</p>
<p>This light script scans folders and detects interfaces/classes, their locations and classes/interfaces that are extended/implemented using simple regular expressions. You can download it from the store.</p>
<p>How does it work? Let me give you an example. If you issue this command</p>
<div class="meta">
<pre>E:projectsscriptsautoload_generator&gt;php auto_generator.php Project true autoload_generated.php

parameters number: 4

target path: Project
recursive: true
output: file
result file: autoload_generated.php</pre>
</div>
<p>You will get this result</p>
<pre>
<pre name="code" class="php">

&lt;?php 

$autoload_list = array (
  &#039;classes&#039; =&gt; array (
    &#039;A&#039; =&gt; array (&#039;path&#039; =&gt; &#039;Project/Classes/Children/A.php&#039;,
      &#039;extends&#039; =&gt; array (), &#039;implements&#039; =&gt; array (&#039;I1&#039;)),
    &#039;B&#039; =&gt; array (&#039;path&#039; =&gt; &#039;Project/Classes/B.php&#039;,
      &#039;extends&#039; =&gt; array (), &#039;implements&#039; =&gt; array (&#039;I2&#039;)),
    &#039;C&#039; =&gt; array (&#039;path&#039; =&gt; &#039;Project/Classes/C.php&#039;,
      &#039;extends&#039; =&gt; array (&#039;B&#039;), &#039;implements&#039; =&gt; array (&#039;I1&#039;, &#039;I3&#039;)),
  ),
  &#039;interfaces&#039; =&gt; array (
    &#039;I2&#039; =&gt; array (&#039;path&#039; =&gt; &#039;Project/Interfaces/blablabla.php&#039;, &#039;extends&#039; =&gt; array (&#039;I1&#039;)),
    &#039;I1&#039; =&gt; array (&#039;path&#039; =&gt; &#039;Project/Interfaces/I1.php&#039;, &#039;extends&#039; =&gt; array ()),
    &#039;I3&#039; =&gt; array (&#039;path&#039; =&gt; &#039;Project/Interfaces/I3.php&#039;, &#039;extends&#039; =&gt; array ()),
  ),
);
?&gt;
</pre>
</pre>
<p>Do you like it? You can download this script <a title="download" href="http://wp.drapeko.com/store/php-autoloading-files/">here</a>. But dont&#8217; leave us, you will get something more. :)</p>
<p>What are the incoming parameters?</p>
<table border="0">
<tbody>
<tr>
<th>Position</th>
<th>Type</th>
<th>Default value</th>
<th>Description</th>
</tr>
<tr>
<td>1</td>
<td>string</td>
<td>hardcoded location, root directory</td>
<td>a source dir path (folder where to search for the interfaces and classes)</td>
</tr>
<tr>
<td>2</td>
<td>boolean</td>
<td>false</td>
<td>is the search recursive or not</td>
</tr>
<tr>
<td>3</td>
<td>boolean/string</td>
<td>true</td>
<td>Where the result will be stored.<br />
If false, outputs the result; if true, result is stored in the file, default destination is used.<br />
If string, result is stored in this file.</td>
</tr>
<tr>
<td>4</td>
<td>string</td>
<td>hardcoded name (&#8221;generated_array&#8221;)</td>
<td>a name of the generated array</td>
</tr>
</tbody>
</table>
<p>For more information regarding this script please visit the store [link].</p>
<p>Example of the autoload function is shown below.</p>
<pre>
<pre name="code" class="php">

&lt;?php

require &#039;autoload_generated.php&#039;;

function __autoload($className) {

  global $autoload_list;

  if (array_key_exists($className, $autoload_list[&quot;classes&quot;])) {
    require_once $autoload_list[&quot;classes&quot;][$className][&#039;path&#039;];

  } elseif (array_key_exists($className, $autoload_list[&quot;interfaces&quot;])) {
    require_once $autoload_list[&quot;interfaces&quot;][$className][&#039;path&#039;];

  } else {
    throw new Exception(&quot;Error&quot;);
  }
}

$x = new A();
?&gt;
</pre>
</pre>
<h3>Extended generator</h3>
<p>It&#8217;s very easy to create extended generator on the above described basis. For example, in the code shown below I added scanning in several independent folders feature.</p>
<pre>
<pre name="code" class="php">

$v_dirs = array (
   array(
      &#039;path&#039; =&gt; &#039;D:/from_computer/rom_projects/dialogue&#039;,
      &#039;recursive&#039; =&gt; true
   ),array(
      &#039;path&#039; =&gt; &#039;D:/from_computer/dangaus/app&#039;,
      &#039;recursive&#039; =&gt; true
   )
);

$arr = array(&#039;classes&#039; =&gt; array(), &#039;interfaces&#039; =&gt; array());
foreach ($v_dirs as $dir) {

   unset($output);
   exec(
      &quot;php auto_generator.php&quot;
      .&quot; &quot;{$dir[&#039;path&#039;]}&quot;&quot;                       // 1st arg (target location)
      .($dir[&#039;recursive&#039;] ? &quot; true&quot; : &quot; false&quot;)    // 2nd arg (recursive)
      .&quot; false&quot;                                     // 3rd arg (save destination)s
      .&quot; temp_array&quot;
      , $output
   );
}
</pre>
</pre>
<p>Full code can be downloaded below.<a title="download" href="http://wp.drapeko.com/store/php-autoloading-files/"><br />
</a></p>
<h2>Conclusion</h2>
<p>We have deepened into autoload function behavior, considered several solutions of the location problem and in the end of this article I offered several scripts for automatic construction of the assocations between classes and their locations. Operation of associative array construction is a rough one. That&#8217;s why I don&#8217;t recommend using these scripts or their analogues in the autoload function with the exception of working in other than the development environment. These scripts are designed to be a pre-condition for invoking your programs.</p>
<p>I hope this article has been helpful for you. I understand that it&#8217;s far from perfect one. But together could make it a little bit better. If you have faced with problems or if you have any comments you are greatly welcome.</p>
<p>Read the bellow paragraph to download all examples and scripts mentioned in this article.</p>
<h2>Necessary Files</h2>
<p>Simple and extended generators:<a title="download" href="http://drapeko.com/store/autoload_in_php/autoload_generator_v12.rar" target="_self"> download (4.6 KB) 07 05 2009 →</a>, <a title="description" href="#desc_of_generators" target="_self">description </a><a title="description" href="#desc_of_generators" target="_self">↓</a></p>
<p>Examples for article: <a title="download" href="http://drapeko.com/store/autoload_in_php/autoload_examples.rar" target="_self">download (4.0 KB) →</a>, <a title="description" href="#desc_of_examples" target="_self">description ↓<!--more--></a></p>
<div id="desc_of_generators">
<h2>Generators</h2>
</div>
<p>autoload_generator.rar, <a title="download" href="http://drapeko.com/store/autoload_in_php/autoload_generator_v12.rar" target="_self"> download (4.6 KB) →</a></p>
<p>Archive contains two files: auto_generator.php (version 1.2) (<a title="description" href="#auto_generator_desc" target="_self">description </a><a title="description" href="#desc_of_generators" target="_self">↓</a>) and auto_ext_generator.php (version 1.1) (<a title="description" href="#auto_ext_generator_desc" target="_self">description </a><a title="description" href="#desc_of_generators" target="_self">↓</a>)</p>
<div id="auto_generator_desc">
<h3>auto_generator.php</h3>
</div>
<p>This script is specially designed to scan folders and identify locations of the classes by using regular expressions. The result produced by the script is an associative array of classes/interfaces, their locations and extended/implemented classes/interfaces. The sample result is shown below:</p>
<pre>
<pre name="code" class="php">

&lt;?php 

$autoload_list = array (
  &#039;classes&#039; =&gt; array (
    &#039;A&#039; =&gt; array (&#039;path&#039; =&gt; &#039;ProjectClassesChildrenA.php&#039;,
      &#039;extends&#039; =&gt; array (), &#039;implements&#039; =&gt; array (&#039;I1&#039;)),
    &#039;B&#039; =&gt; array (&#039;path&#039; =&gt; &#039;ProjectClassesB.php&#039;,
      &#039;extends&#039; =&gt; array (), &#039;implements&#039; =&gt; array (&#039;I2&#039;)),
    &#039;C&#039; =&gt; array (&#039;path&#039; =&gt; &#039;ProjectClassesC.php&#039;,
      &#039;extends&#039; =&gt; array (&#039;B&#039;), &#039;implements&#039; =&gt; array (&#039;I1&#039;, &#039;I3&#039;)),
  ),
  &#039;interfaces&#039; =&gt; array (
    &#039;I2&#039; =&gt; array (&#039;path&#039; =&gt; &#039;ProjectInterfacesblablabla.php&#039;, &#039;extends&#039; =&gt; array (&#039;I1&#039;)),
    &#039;I1&#039; =&gt; array (&#039;path&#039; =&gt; &#039;ProjectInterfacesI1.php&#039;, &#039;extends&#039; =&gt; array ()),
    &#039;I3&#039; =&gt; array (&#039;path&#039; =&gt; &#039;ProjectInterfacesI3.php&#039;, &#039;extends&#039; =&gt; array ()),
  ),
);
?&gt;
</pre>
</pre>
<h5>Requirements</h5>
<p>What do you need to use it? You have to have installed PHP server and ability to use command line tool. :) Script was written using PHP 5.2 version but probably it would work with all 5th versions. If you check on lower that 5.2 versions, please give a feedback.</p>
<h5>Incoming parameters</h5>
<p>What are the incoming parameters?</p>
<table style="text-align: left;" border="0">
<tbody>
<tr>
<th>Position</th>
<th>Type</th>
<th>Default value</th>
<th>Description</th>
</tr>
<tr>
<td style="text-align: center;">1</td>
<td>string</td>
<td>hardcoded location, root directory</td>
<td>a source dir path (folder where to search for the interfaces and classes)</td>
</tr>
<tr>
<td style="text-align: center;">2</td>
<td>boolean</td>
<td>false</td>
<td>is the search recursive or not</td>
</tr>
<tr>
<td style="text-align: center;">3</td>
<td>boolean/string</td>
<td style="text-align: left;">true</td>
<td>Where the result will be stored.<br />
If false, outputs the result; if true, result is stored in the file, default destination is used.<br />
If string, result is stored in this file.</td>
</tr>
<tr>
<td style="text-align: center;">4</td>
<td>string</td>
<td>hardcoded name (&#8221;generated_array&#8221;)</td>
<td>a name of the generated array</td>
</tr>
</tbody>
</table>
<h5>Default behavior</h5>
<p>If you want to change the default behavior of the script, you could change values of the variables that are marked // CHANGABLE</p>
<pre>
<pre name="code" class="php">

  // CHANGEABLE. Default location of the target folder (if you don&#039;t use first parameter).
  $target = dirname(__FILE__);

  // CHANGEABLE. Are results passed to the file? (if you don&#039;t use third parameter)
  $v_save_to_file = true;

  // CHANGEABLE. Default result file. (if you don&#039;t use third parameter)
  $v_save = $target.DIRECTORY_SEPARATOR.&quot;autoload_generated.php&quot;;

  // CHANGEABLE. Is search recursive? Default value. (if you don&#039;t use 2nd parameter)
  $v_recursive = true;

  // CHANGEABLE. Name of the generated array.
  $v_array_name = &#039;autoload_list&#039;;
</pre>
</pre>
<h5>Example of usage</h5>
<div class="meta">
<pre>E:projectsscriptsautoload_generator&gt;php auto_generator.php Project true autoload_generated.php
parameters number: 4

target path: Project
recursive: true
output: file
result file: autoload_generated.php</pre>
</div>
<h5>TODO list</h5>
<ol>
<li>Found bug in 132-133 lines of 1.1 version. Some useful source code was erased while deleting the code. Bug was fixed in 1.2 version on 07 May 2009. <span style="color: #339966;">FIXED</span></li>
</ol>
<h5>Comments</h5>
<p>Please notice that the current version of the script does not transform relative paths into absolute. If you use a relative path as the target point parameter, you will get an array where locations of the classes/interfaces are also relative. To avoid errors please use absolute path as the first parameter.</p>
<div id="auto_ext_generator_desc">
<h3>auto_ext_generator.php</h3>
</div>
<p>This script extends the functionality of auto_generator.php. It adds new feature to scan in several folders. It&#8217;s not designed to have incoming parameters.</p>
<p>If you have new autoloading taks, you should copy auto_ext_generator.php and change values of variables as you want.</p>
<h5>Requirements</h5>
<p>See auto_generator.php</p>
<h5>Variables</h5>
<pre>
<pre name="code" class="php">

  // CHANGEABLE. The list of directories to be processed.
  $v_dirs = array (
    // array(&#039;location&#039;, &#039;is_recursive&#039;)
    array(
    	&#039;path&#039; =&gt; &#039;D:from_computerrom_projectsdialogue&#039;,
    	&#039;recursive&#039; =&gt; true
    ),
    array(
    	&#039;path&#039; =&gt; &#039;D:from_computerdangausapp&#039;,
    	&#039;recursive&#039; =&gt; true
    ),
    array(
    	&#039;path&#039; =&gt; &#039;D:from_computerrom_projectsdialogue&#039;,
    	&#039;recursive&#039; =&gt; true
    ),
  );

  // CHANGEABLE. The result file.
  $v_save = &#039;E:projectsscriptsautoload_generatorautoload_generated.php&#039;;

  // CHANGEABLE. The name of the generated array;
  $v_array_name = &#039;autoload_list&#039;;
</pre>
</pre>
<h5>Comments</h5>
<p>Please notice that this script depends on auto_generator.php. It won&#8217;t work without it.</p>
<div id="desc_of_examples">
<h2>Description of examples</h2>
</div>
<p>Archive consists of</p>
<ol>
<li>Three questions that are examined in the article:
<ol>
<li>question1.php</li>
<li>question2.php</li>
<li>question3.php</li>
</ol>
</li>
<li>autoload_generated.php - file generated by autoload generator script and is used by autoload_example.php</li>
<li>autoload_example.php - example of autoload realization</li>
<li>Project directory - data for tests
<div class="meta">
<pre>  Project
  ..<em>Classes</em>
  ....<em>Children</em>
  ......A.php                    class A implements I1 {}
  ....B.php                      class B implements I2 {}
  ....Class_C.php                class C extends B implements I1, I3 {}
  ..<em>Interfaces</em>
  ....I1.php                     interface I1 {}
  ....blablabla.php              interface I2 extends I1 {}
  ....I3.php                     interface I3 {}</pre>
</div>
</li>
</ol>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fwp.drapeko.com%2F%3Fp%3D1&amp;linkname=Autoloading%20in%20PHP"><img src="http://wp.drapeko.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/qdX_129OGktnRzYzzYT_H2MDf2o/0/da"><img src="http://feedads.g.doubleclick.net/~a/qdX_129OGktnRzYzzYT_H2MDf2o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qdX_129OGktnRzYzzYT_H2MDf2o/1/da"><img src="http://feedads.g.doubleclick.net/~a/qdX_129OGktnRzYzzYT_H2MDf2o/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Drapeko/~4/F_YCU43hCdc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://wp.drapeko.com/?feed=rss2&amp;p=1</wfw:commentRss>
		<feedburner:origLink>http://wp.drapeko.com/?p=1</feedburner:origLink></item>
	</channel>
</rss>
