<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[kakapo's nest]]></title> 
<link>http://www.kakapo.cn/blog/index.php</link> 
<description><![CDATA[My Technical Knowledge Management System]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[kakapo's nest]]></copyright>
<item>
<link>http://www.kakapo.cn/blog/read.php?164</link>
<title><![CDATA[php的assert()是否安全？]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Tue, 20 Jul 2010 06:45:57 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?164</guid> 
<description>
<![CDATA[ 
	assert这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;<br/>例如<br/><div class="code"><br/>&lt;?php<br/>$s = 123;<br/>assert(&quot;is_int($s)&quot;);<br/>?&gt;<br/></div><br/><br/>从这个例子可以看到字符串参数会被执行，这跟eval()类似。不过eval($code_str)只是执行符合php编码规范的$code_str。assert的<br/>用法却更详细一点。assert_option()可以用来对assert()的进行一些约束和控制;<br/><br/>默认值<br/>ASSERT_ACTIVE=1 //Assert函数的开关 <br/>ASSERT_WARNING =1 //当表达式为false时，是否要输出警告性的错误提示,issue a PHP warning for each failed assertion <br/>ASSERT_BAIL= 0 //是否要中止运行；terminate execution on failed assertions <br/>ASSERT_QUIET_EVAL= 0 //是否关闭错误提示，在执行表达式时；disable error_reporting during assertion expression evaluation&nbsp;&nbsp;<br/>ASSERT_CALLBACK= (NULL) // 是否启动回调函数 user function to call on failed assertions<br/><br/>如果按照默认值来，在程序的运行过程中调用assert()来进行判断表达式，遇到false时程序也是会继续执行的，这在生产环境中这样使用是不好的，而在开发调试环境中，却是一种debug的不错的方式。特别是用上callback的方法，可以知道具体的出错信息。例如<br/><div class="code"><br/><br/>&lt;?php<br/>// Active assert and make it quiet<br/>assert_options(ASSERT_ACTIVE, 1);<br/>assert_options(ASSERT_WARNING, 0);<br/>assert_options(ASSERT_QUIET_EVAL, 1);<br/><br/>// Create a handler function<br/>function my_assert_handler($file, $line, $code)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&lt;hr&gt;Assertion Failed:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File &#039;$file&#039;&lt;br /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Line &#039;$line&#039;&lt;br /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code &#039;$code&#039;&lt;br /&gt;&lt;hr /&gt;&quot;;<br/>&#125;<br/><br/>// Set up the callback<br/>assert_options(ASSERT_CALLBACK, &#039;my_assert_handler&#039;);<br/><br/>// Make an assertion that should fail<br/>assert(&#039;mysql_query(&quot;&quot;)&#039;);<br/>?&gt; <br/><br/></div><br/><br/> 所以，php的官方文档里头是建议将assert用来进行debug，我们可以发现还有一个开关ASSERT_ACTIVE可以用来控制是否开启debug。<br/><br/>现在问题就产生了，如果程序员在开发的时候在代码中留下了很多assert()，然后在程序发布的时候关闭执行，设置assert_options(ASSERT_ACTIVE,0);这样做是否可行？有没有安全问题？<br/><br/>我的建议是，既然assert主要作用是debug，就不要在程序发布的时候还留着它。在程序中用assert来对表达进行判断是不明智的，原因上文说了，一个是在生产环境中assert可能被disabled，所以assert不能被完全信任；二是assert()可以被继续执行；而如果在生产环境让ASSERT_ACTIVE=1，那这个表达式字符串可以被执行本身就存在安全隐患。例如<br/><br/><div class="code"><br/>&lt;?php<br/>function fo()&#123;<br/>&nbsp;&nbsp;$fp = fopen(&quot;c:/test.php&quot;,&#039;w&#039;);<br/>&nbsp;&nbsp;fwrite($fp,&quot;123&quot;);<br/>&nbsp;&nbsp;fclose($fp);<br/>&nbsp;&nbsp;return true;<br/>&#125;<br/>assert(&quot;fo()&quot;);<br/>?&gt;<br/></div><br/><br/><br/><br/><br/> <br/><br/><br/>Tags - <a href="http://www.kakapo.cn/blog/tag.php?tag=assert" rel="tag">assert</a>
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?157</link>
<title><![CDATA[kakapo_lightblue]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Tue, 30 Jun 2009 06:25:09 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?157</guid> 
<description>
<![CDATA[ 
	<a href="http://www.kakapo.cn/blog/attachment.php?fid=10" target="_blank"><img src="http://www.kakapo.cn/blog/attachment.php?fid=10" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><br/><a href="http://www.kakapo.cn/blog/attachment.php?fid=11" target="_blank"><img src="http://www.kakapo.cn/blog/attachment.php?fid=11" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?154</link>
<title><![CDATA[在线调查软件收集survey software ]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Thu, 04 Jun 2009 02:04:52 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?154</guid> 
<description>
<![CDATA[ 
	survey software <br/>都是国外开源的免费调查软件<br/><br/>LimeSurvey&nbsp;&nbsp;http://www.limesurvey.org<br/><br/>phpQuestionnaire http://www.chumpsoft.com/products/phpq/<br/>Tags - <a href="http://www.kakapo.cn/blog/tag.php?tag=survey%252Cquestion" rel="tag">survey,question</a>
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?151</link>
<title><![CDATA[基于imagick生成透明gif动画]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Fri, 17 Oct 2008 08:57:41 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?151</guid> 
<description>
<![CDATA[ 
	透明的gif动画效果如下<br/><br/><?php<br/>$new_im = new Imagick();<br/>$new_im->setFormat('gif');<br/>$pics = glob("nv01/*.png");<br/>foreach($pics as $k => $v)<br/>&#123;<br/>&nbsp;&nbsp;$im = new Imagick($v);<br/>&nbsp;&nbsp;$im->trimImage(0);<br/>&nbsp;&nbsp;$new_im->addImage($im);<br/>&nbsp;&nbsp;$new_im->setImageDelay(15);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置每一帧图片是独立的，屏蔽上一帧（关键）<br/>&nbsp;&nbsp;$new_im->setImageDispose(imagick::DISPOSE_PREVIOUS);<br/>&#125;<br/>$new_im->coalesceImages();<br/>$new_im->writeImages('ani.gif',1);<br/>?>
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?146</link>
<title><![CDATA[写点什么呢]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Sun, 06 Jul 2008 08:42:48 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?146</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;连续两个月没有记下点东西了。并不是没东西可些，这段时间实在是太忙了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从5月份开始项目的准备，到6月份疯狂的代码开发，目标很明确在7月1日完成项目的正式上线。当一切都顺利进行到6月24日的时候，投资人初看了我们的产品，发现设计风格和发展方向跟他们的想法不一致，结果令人非常痛苦，一个字“改”。最后当7月1日到来的时候，虽然我们准备好了产品，但是我们的产品需求策划组却在进行第二轮的设计。无赖之下，我们的开发人员选择了休息一周，重新准备开发二次升级版本。过去一周就是在debug中度过的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回顾一下这两个月，从技术角度来讲，我有很多东西可以记录下来。比如模拟登陆采用的curl技术。等项目完成上线之后，我再一一记录下来，积累技术沉淀。
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?140</link>
<title><![CDATA[PHP Soap 基于https安全访问及Basic HTTP authentication认证]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Fri, 11 Apr 2008 11:14:46 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?140</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文分两个段落介绍如何加强 PHP SOAP 的安全性。第一，通过安全的https(即HTTP over SSL)协议，加密http信息，防止在网络传输层的数据包被明文获取。php方面只要支持OpenSSL模块，就可以访问https服务器。第二，为了验证soap client，在soap server端加上一个标准的HTTP认证，防止任何soap客户端都可以连上服务端。那么代码如何实现呢？<br/>如何快读，简单的搭建 php soap webservice 可以先看我以前发表的文章。《<a href="http://www.kakapo.cn/blog/read.php?109" target="_blank">实现 php webservice 之 SOAP Functions 介绍</a>》。<br/><br/>以下是我实现的代码：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、服务端 soap_server.php 代码，关键是加了一段 basic http authentication.<br/><div class="code"><br/><br/>&lt;?php<br/>if (!isset($_SERVER&#91;&#039;PHP_AUTH_USER&#039;&#93;) &#124;&#124; !isset($_SERVER&#91;&#039;PHP_AUTH_PW&#039;&#93;) &#124;&#124;<br/> !($_SERVER&#91;&#039;PHP_AUTH_USER&#039;&#93;==&#039;admin&#039; &amp;&amp; $_SERVER&#91;&#039;PHP_AUTH_PW&#039;&#93;==&#039;123456&#039;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&#039;WWW-Authenticate: Basic realm=&quot;WEBSERVICE&quot;&#039;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;header(&quot;HTTP/1.0 401 Unauthorized&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;You must enter a valid login ID and password to access this resource&#92;n&quot;;<br/>&nbsp;&nbsp;die;<br/>&#125;else&#123;<br/>&nbsp;&nbsp;require &#039;./soap_functions.php&#039;;<br/>&nbsp;&nbsp;ini_set(&quot;soap.wsdl_cache_enabled&quot;, 0); <br/>&nbsp;&nbsp;$server = new SoapServer(&#039;pay.wsdl&#039;,array(&#039;encoding&#039;=&gt;&#039;UTF-8&#039;));<br/>&nbsp;&nbsp;$server-&gt;addFunction(array(&quot;get_user_info&quot;));<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;if(isset($HTTP_RAW_POST_DATA)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $request = $HTTP_RAW_POST_DATA;<br/>&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$request = file_get_contents(&#039;php://input&#039;);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;if ($_SERVER&#91;&quot;REQUEST_METHOD&quot;&#93; == &quot;POST&quot;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$server-&gt;handle($request);<br/>&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;This SOAP server can handle following functions: &quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$functions = $server-&gt;getFunctions();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach($functions as $k=&gt;$func)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $k.&quot;. &quot;.$func . &quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>?&gt;<br/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 2、客户端soap_client.php代码, 注意要加上array('login' => "admin",&nbsp;&nbsp;'password' => "123456")这个参数，否则会显示错误如下:Fatal error: SOAP Fault: (faultcode: HTTP, faultstring: Unauthorized) in ...<br/><div class="code"><br/>&lt;?php<br/>//define(&quot;SSL_PASSWD&quot;, &quot;asdfghjkl&quot;);<br/>//define(&quot;SSL_CERTFILE&quot;, &quot;E:&#92;tz&#92;pay&#92;admincp&#92;webservice&#92;server.pem&quot;);<br/>try&#123;<br/>&nbsp;&nbsp;ini_set(&quot;soap.wsdl_cache_enabled&quot;, 0); <br/>&nbsp;&nbsp;//array(&#039;local_cert&#039;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; SSL_CERTFILE,&#039;passphrase&#039;=&gt;SSL_PASSWD)<br/>&nbsp;&nbsp;$soap = new SoapClient(&#039;pay.wsdl&#039;,array(&#039;login&#039; =&gt; &quot;admin&quot;,&nbsp;&nbsp;&#039;password&#039; =&gt; &quot;123456&quot;));<br/>&nbsp;&nbsp;$result = $soap-&gt;get_user_info(10001);<br/>&nbsp;&nbsp;print_r($result);<br/><br/>&#125;catch (SoapFault&nbsp;&nbsp;$fault)&#123;<br/>&nbsp;&nbsp;trigger_error(&quot;SOAP Fault: (faultcode: &#123;$fault-&gt;faultcode&#125;, faultstring: &#123;$fault-&gt;faultstring&#125;)&quot;, E_USER_ERROR);<br/>&#125;<br/>?&gt;<br/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、 wsdl 文件<br/><div class="code"><br/>&lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039;?&gt;<br/><br/>&lt;!-- WSDL file generated by Zend Studio. --&gt;<br/><br/>&lt;definitions name=&quot;Untitled&quot; targetNamespace=&quot;urn:Untitled&quot; xmlns:typens=&quot;urn:Untitled&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:wsdl=&quot;http://schemas.xmlsoap.org/wsdl/&quot; xmlns=&quot;http://schemas.xmlsoap.org/wsdl/&quot;&gt;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&lt;message name=&quot;get_user_info&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;part name=&quot;user_id&quot; type=&quot;xsd:integer&quot;/&gt;<br/>&nbsp;&nbsp;&lt;/message&gt;<br/>&nbsp;&nbsp;&lt;message name=&quot;get_user_infoResponse&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;part name=&quot;get_user_infoReturn&quot; type=&quot;xsd:anyType&quot;/&gt;<br/>&nbsp;&nbsp;&lt;/message&gt;<br/>&nbsp;&nbsp;&lt;portType name=&quot;soap_functionsPortType&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;operation name=&quot;get_user_info&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;documentation&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获取用户所有信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/documentation&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input message=&quot;typens:get_user_info&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;output message=&quot;typens:get_user_infoResponse&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/operation&gt;<br/>&nbsp;&nbsp;&lt;/portType&gt;<br/>&nbsp;&nbsp;&lt;binding name=&quot;soap_functionsBinding&quot; type=&quot;typens:soap_functionsPortType&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;soap:binding style=&quot;rpc&quot; transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;operation name=&quot;get_user_info&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;soap:operation soapAction=&quot;urn:soap_functionsAction&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;soap:body namespace=&quot;urn:Untitled&quot; use=&quot;encoded&quot; encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/input&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;output&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;soap:body namespace=&quot;urn:Untitled&quot; use=&quot;encoded&quot; encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/output&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/operation&gt;<br/>&nbsp;&nbsp;&lt;/binding&gt;<br/>&nbsp;&nbsp;&lt;service name=&quot;UntitledService&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;port name=&quot;soap_functionsPort&quot; binding=&quot;typens:soap_functionsBinding&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;soap:address location=&quot;https://www.xxx.com/webservice/soap_server.php&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/port&gt;<br/>&nbsp;&nbsp;&lt;/service&gt;<br/>&lt;/definitions&gt;<br/><br/></div><br/><br/>关键主要的地方,location="https://...";告诉soap去访问https的服务端，如果php的OpenSSL没装，那么就会报错；<br/>Fatal error: SOAP Fault: (faultcode: HTTP, faultstring: SSL support is not available in this build) in ...<br/><div class="code"><br/>&lt;service name=&quot;UntitledService&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;port name=&quot;soap_functionsPort&quot; binding=&quot;typens:soap_functionsBinding&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;soap:address location=&quot;https://www.xxx.com/webservice/soap_server.php&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/port&gt;<br/>&nbsp;&nbsp;&lt;/service&gt;<br/></div><br/>Tags - <a href="http://www.kakapo.cn/blog/tag.php?tag=soap%252Chttps%252C" rel="tag">soap,https,</a> , <a href="http://www.kakapo.cn/blog/tag.php?tag=ssl" rel="tag">ssl</a>
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?139</link>
<title><![CDATA[JIRA用户使用指南]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Thu, 06 Mar 2008 02:18:38 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?139</guid> 
<description>
<![CDATA[ 
	最近终于使用上jira项目管理系统。从网上找的一个简化版的使用手册。共享一下。下载地址：右键--另存为<a href="attachment.php?fid=1">点击这里下载文件</a> <br/>Tags - <a href="http://www.kakapo.cn/blog/tag.php?tag=jira" rel="tag">jira</a> , <a href="http://www.kakapo.cn/blog/tag.php?tag=%25E4%25BD%25BF%25E7%2594%25A8%25E6%2589%258B%25E5%2586%258C" rel="tag">使用手册</a>
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?135</link>
<title><![CDATA[Embedded RealPlayer Extended]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Wed, 30 Jan 2008 16:58:50 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?135</guid> 
<description>
<![CDATA[ 
	http://service.real.com/help/library/guides/extend/embed.htm
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?132</link>
<title><![CDATA[mp3 播放器 资源收集]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Mon, 21 Jan 2008 11:02:36 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?132</guid> 
<description>
<![CDATA[ 
	http://blog.5d.cn/user39/riahome/200707/422489.html<br/><br/>http://labs.flexcoders.nl/?p=22<br/><br/>http://lrc.bzmtv.com
]]>
</description>
</item><item>
<link>http://www.kakapo.cn/blog/read.php?126</link>
<title><![CDATA[Imagick 学习]]></title> 
<author>kakapo &lt;kakapowu@gmail.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Mon, 12 Nov 2007 09:49:03 +0000</pubDate> 
<guid>http://www.kakapo.cn/blog/read.php?126</guid> 
<description>
<![CDATA[ 
	Imagick2.0之后PHP 的官方手册上几乎没有举例，学习起来很困难。在互联网上关于IMagick的使用范例也很少。今天在研究Imagick对中文字体的支持时发现了一个国外的blog：<a href="http://valokuva.org/" target="_blank">Mikko’s blog</a>，里面有最新的关于Imagick类的使用范例，实在是太好了！<br/><br/><br/>来源:<br/>http://valokuva.org/?cat=1
]]>
</description>
</item>
</channel>
</rss>