<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LiangXu Wang &#187; php</title>
	<atom:link href="http://wlx.westgis.ac.cn/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://wlx.westgis.ac.cn</link>
	<description>technology backup/share</description>
	<lastBuildDate>Sat, 14 Jan 2012 03:56:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>odtphp: A nice library to output openoffice odt file</title>
		<link>http://wlx.westgis.ac.cn/711/</link>
		<comments>http://wlx.westgis.ac.cn/711/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 02:33:32 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[libreoffice]]></category>
		<category><![CDATA[odt]]></category>
		<category><![CDATA[odtphp]]></category>
		<category><![CDATA[openoffice]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/?p=711</guid>
		<description><![CDATA[Recently, I want to add a function in our data center website(Which is only Chinese version now, an English version is preparing): “output the geographic metadata to openoffice odt format”. So, the odtphp project came into my sight. After download &#8230; <a href="http://wlx.westgis.ac.cn/711/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently, I want to add  a function in our <a href="http://westdc.westgis.ac.cn" target="_blank">data center website</a>(Which is only Chinese version now, an English version is preparing): “output the geographic metadata to openoffice odt format”. So, the <a href="http://www.odtphp.com" target="_blank">odtphp project</a> came into my sight.</p>
<p>After download the 1.0.1 version, and try some tests in its code. There is no problem in the text replacing, but if I insert into the odt file an image, the OpenOffice (What I use is LibreOffice) always tell me this file need repair, although the repair result nice. Dig into another search, find this problem and<a href="http://vikasmahajan.wordpress.com/2010/12/09/odtphp-bug-solved/" target="_blank"> solution in the author&#8217;s blog</a>.</p>
<p>Use the latest version (1.3) in the author&#8217;s blog, this bug is disappeared. </p>
<p>There is another requirement in my site yet, maybe it is not a problem: The image file which is dynamic produced has not a extension in the url, So the code in odtphp: setImage must change its behavior here.</p>
<p>So I patched the code, and released it here (it&#8217;s GPL license):</p>
<blockquote><p><code>wlx@wlxpc:~$ diff odf.php odtphp-1.0.1_modified_files/odf.php<br />
111a112,113<br />
&gt;         $filename = strtok(strrchr($value, '/'), '/.');<br />
&gt;         $file = substr(strrchr($value, '/'), 1);<br />
116,118d117<br />
&lt;         $filename=md5($value);;<br />
&lt;         $imgext=array('.gif','.jpg','.png','.swf','.psd','.bmp','.tif','.tif','.jpc','.jp2','.jpx','.jb2','.swc','.iff','.wbmp','.xbm','.ico');<br />
&lt;         $file=$filename.$imgext[$size[2]];<br />
287,289c286<br />
&lt;             //$this-&gt;file-&gt;addFile($imageKey, 'Pictures/' . $imageValue);<br />
&lt;             $this-&gt;file-&gt;addFromString('Pictures/' . $imageValue,file_get_contents($imageKey));<br />
&lt;<br />
---<br />
&gt;             $this-&gt;file-&gt;addFile($imageKey, 'Pictures/' . $imageValue);</code></p></blockquote>
<p>In short, what I do: change the filenmae to a hash string (md5(source)), and save it with file_get_contents function (which could parse the url).</p>
<p>And, a big Thanks to you and your odtphp project: <a href="http://vikasmahajan.wordpress.com" target="_blank">Vikas Mahajan</a>.<br />
Download patch file: <a href='http://wlx.westgis.ac.cn/uploads/2011/11/odf.php_.patch_.zip'>odf.php.patch</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/711/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>推荐：PHPFetion，飞信的PHP类实现</title>
		<link>http://wlx.westgis.ac.cn/706/</link>
		<comments>http://wlx.westgis.ac.cn/706/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 08:23:40 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpfetion]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/?p=706</guid>
		<description><![CDATA[PHPFetion: http://code.google.com/p/php-fetion/ 作者BLOG：http://blog.quanhz.com 实现原理 用PHP的socket函数发送HTTP请求，模拟登录WAP版的飞信，并模拟发送飞信。 具体实现细节可查看此文：用PHP模拟登录WAP飞信实现飞信发送，不过原文中是用curl来实现的，道理相同。 我用此类，在服务器上又可以实现天气预报的定时发送，还能发送服务器重启信息给自己。]]></description>
			<content:encoded><![CDATA[<p>PHPFetion: http://code.google.com/p/php-fetion/<br />
作者BLOG：http://blog.quanhz.com</p>
<blockquote><p>实现原理</p>
<p>用PHP的socket函数发送HTTP请求，模拟登录WAP版的飞信，并模拟发送飞信。<br />
具体实现细节可查看此文：用PHP模拟登录WAP飞信实现飞信发送，不过原文中是用curl来实现的，道理相同。</p></blockquote>
<p>我用此类，在服务器上又可以实现天气预报的定时发送，还能发送服务器重启信息给自己。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/706/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用PHP处理中文PDF</title>
		<link>http://wlx.westgis.ac.cn/556/</link>
		<comments>http://wlx.westgis.ac.cn/556/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 11:58:40 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[fpdf]]></category>
		<category><![CDATA[fpdi]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[中文]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/?p=556</guid>
		<description><![CDATA[因项目需要，现在想在服务器端动态生成PDF文件，已一个PDF为模板，然后把所需的数据动态填入。 本来在使用zend framework，因此很直接的就使用zend_pdf类来进行测试，代码实现如下： $pdf = Zend_Pdf::load($this-&#62;view-&#62;config-&#62;offline-&#62;template); $pdf-&#62;pages = array_reverse($pdf-&#62;pages); $style = new Zend_Pdf_Style(); $font = Zend_Pdf_Font::fontWithPath($this-&#62;view-&#62;config-&#62;offline-&#62;font, ( Zend_Pdf_Font::EMBED_DONT_SUBSET)); $pdf-&#62;pages[0]-&#62;setFont($font, 10); $pdf-&#62;pages[0]-&#62;saveGS(); //datalist $pdf-&#62;pages[0]-&#62;drawText(str_replace(";","\n",$datalist), 100, 570,"UTF-8"); //project $pdf-&#62;pages[0]-&#62;drawText($formData['project'], 100, 430,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['realname'], 100, 78,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['realname'], 130, 590,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['unit'], 95, 58,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['address'], 285, &#8230; <a href="http://wlx.westgis.ac.cn/556/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>因项目需要，现在想在服务器端动态生成PDF文件，已一个PDF为模板，然后把所需的数据动态填入。<br />
本来在使用zend framework，因此很直接的就使用zend_pdf类来进行测试，代码实现如下：</p>
<blockquote><p><code>			$pdf = Zend_Pdf::load($this-&gt;view-&gt;config-&gt;offline-&gt;template);<br />
			$pdf-&gt;pages = array_reverse($pdf-&gt;pages);<br />
			$style = new Zend_Pdf_Style();<br />
			$font = Zend_Pdf_Font::fontWithPath($this-&gt;view-&gt;config-&gt;offline-&gt;font, ( Zend_Pdf_Font::EMBED_DONT_SUBSET));<br />
			$pdf-&gt;pages[0]-&gt;setFont($font, 10);<br />
			$pdf-&gt;pages[0]-&gt;saveGS();<br />
			//datalist<br />
			$pdf-&gt;pages[0]-&gt;drawText(str_replace(";","\n",$datalist), 100, 570,"UTF-8");<br />
			//project<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['project'], 100, 430,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['realname'], 100, 78,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['realname'], 130, 590,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['unit'], 95, 58,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['address'], 285, 58,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['postcode'], 470, 58,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['email'], 95, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['phone'], 295, 40,"UTF-8");<br />
			$t=getdate();<br />
			$pdf-&gt;pages[0]-&gt;drawText($t['year'], 465, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($t['mon'], 500, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($t['mday'], 525, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;restoreGS();<br />
			$fn=$formData['realname'].date('YmdHis').".pdf";<br />
			$pdf-&gt;save($this-&gt;view-&gt;config-&gt;offline-&gt;savepath."/".$fn);</code></p></blockquote>
<p>这样，的确能完成要求，但是令人恼火的是，其把中文字体内嵌到PDF文件中去，因此导致PDF文件过大，而且导致PHP所需内存也增大（64M）。<br />
因此，就开始尝试别的办法，开始锁定fpdf，PHP能完美支持，而且也能支持中文（所要单独下载chinese.php和chinese-unicode.php）。<br />
但是，FPDF不支持打开已有的PDF文件作为模板，因此还需要使用fpdi进行模板的支持，还要修改fpdi，使其父类为PDF-UNICODE。</p>
<p>然后就可以这样使用：</p>
<blockquote><p><code>		$pagecount = $this-&gt;setSourceFile($this-&gt;template);<br />
		$tplidx = $this-&gt;importPage(1, '/MediaBox');<br />
		$this-&gt;addPage();<br />
		$this-&gt;useTemplate($tplidx);<br />
		$this-&gt;AddUniGBhwFont('ugb','AdobeSongStd-Light-Acro');</p>
<p>		$this-&gt;SetFont('ugb','',$this-&gt;fontsize);<br />
		$this-&gt;setXY(45,65);<br />
		$this-&gt;Write($this-&gt;fontsize,$this-&gt;data['realname']);</code></p></blockquote>
<p>其中，字形由默认的AdobeSongStd-Light改成AdobeSongStd-Light-Acro，是为了防止英文字体变宽和变窄，格式才会整齐，英文字不会挤在一起。(参考： http://bbs.erp100.com/thread-18424-1-1.html)</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/556/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ubuntu hardy下使用zend framework</title>
		<link>http://wlx.westgis.ac.cn/503/</link>
		<comments>http://wlx.westgis.ac.cn/503/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 08:12:10 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[hardy]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/?p=503</guid>
		<description><![CDATA[安装： sudo aptitude install zend-framework 补充操作： 1 添加Zend符号连接 sudo ln -s /usr/share/php/libzend-framework-php/Zend /usr/share/php/Zend 2 修补中文EMAIL的subject乱码 参考http://framework.zend.com/issues/browse/ZF-2532]]></description>
			<content:encoded><![CDATA[<p>安装：</p>
<blockquote><p>sudo aptitude install zend-framework</p></blockquote>
<p>补充操作：<br />
1 添加Zend符号连接<br />
sudo ln -s /usr/share/php/libzend-framework-php/Zend /usr/share/php/Zend<br />
2 修补中文EMAIL的subject乱码<br />
参考http://framework.zend.com/issues/browse/ZF-2532</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/503/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>use bcspamblock in zend form</title>
		<link>http://wlx.westgis.ac.cn/500/</link>
		<comments>http://wlx.westgis.ac.cn/500/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 06:26:23 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[bcspamblock]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/?p=500</guid>
		<description><![CDATA[I want to integrate the bcspamblock and zend form, so first to do: 为了能自动防止机器人攻击，打算把bcspamblock整合到zend_form中。 1 创建element_bcSpamBlock.php文件， &#60;?php class element_bcSpamBlock extends Zend_Form_Element_Xhtml{ /** * Default form view helper to use for rendering * @var string */ public $helper = 'bcSpamBlock'; } &#8230; <a href="http://wlx.westgis.ac.cn/500/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I want to integrate the bcspamblock and zend form, so first to do:<br />
为了能自动防止机器人攻击，打算把bcspamblock整合到zend_form中。<br />
1 创建element_bcSpamBlock.php文件，</p>
<blockquote><p><code>&lt;?php<br />
class element_bcSpamBlock extends Zend_Form_Element_Xhtml{<br />
    /**<br />
     * Default form view helper to use for rendering<br />
     * @var string<br />
     */<br />
    public $helper = 'bcSpamBlock';<br />
}</code></p></blockquote>
<p>2 创建helper文件：BcSpamBlock.php</p>
<blockquote><p><code>&lt;?php<br />
include_once("bcspamblock.php");<br />
class Zend_View_Helper_BcSpamBlock extends Zend_View_Helper_FormElement{</p>
<p>    public function bcSpamBlock($name, $value='', $attribs = null){</p>
<p>        $xhtml = bcspamblock_generate(true);<br />
        return $xhtml;<br />
    }<br />
}</code></p></blockquote>
<p>3 创建validator，但奇怪的是，这一步经测试，没发生实际作用，不知道是什么原因。</p>
<blockquote><p><code>&lt;?php<br />
include_once("bcspamblock.php");<br />
class Validator_SpamBlock extends Zend_Validate_Abstract {<br />
    const NOT_MATCH = '机器人阻止';//'spam blocked!';</p>
<p>    protected $_messageTemplates = array(<br />
        self::NOT_MATCH =&gt; '机器人阻止'<br />
    );</p>
<p>    public function isValid($value) {<br />
    	$result=bcspamblock_verify();<br />
      return $result;<br />
    }<br />
}</code></p></blockquote>
<p>4 创建自定义的form</p>
<blockquote><p><code>&lt;?php</p>
<p>class ContactForm extends Zend_Form<br />
{<br />
    public function __construct($options = null)<br />
    {<br />
        parent::__construct($options);<br />
        $this-&gt;setName('Contact');</p>
<p>        $username = new Zend_Form_Element_Text('username');<br />
        $username-&gt;setLabel('用户名')-&gt;setRequired(true)<br />
        -&gt;addFilter('StripTags') -&gt;addFilter('StringTrim')<br />
        -&gt;addValidator('StringLength',false,array(3,50));</p>
<p>        $email=new Zend_Form_Element_Text('email');<br />
        $email-&gt;setLabel('E-Mail')<br />
        			-&gt;setRequired(true)<br />
        			-&gt;addFilter('StringTrim')<br />
        			-&gt;addValidator('NotEmpty')<br />
        			-&gt;addValidator('EmailAddress');</p>
<p>		  $subject=new Zend_Form_Element_Text('subject');<br />
		  $subject-&gt;setLabel('主题')-&gt;setRequired(true);</p>
<p>		  $body=new Zend_Form_Element_Textarea('body');<br />
		  $body-&gt;setLabel('内容')-&gt;setRequired(true)-&gt;setAttrib('rows',4);</p>
<p>        $id = new Zend_Form_Element_Hidden('id');</p>
<p>        $submit = new Zend_Form_Element_Submit('submit');<br />
        $submit-&gt;setAttrib('id', 'submitbutton')-&gt;setLabel('发送');</p>
<p>        $spam=new element_bcSpamBlock('spam');<br />
        $spam-&gt;addPrefixPath('Validator','validator/','validate')<br />
        		 -&gt;addValidator('SpamBlock');</p>
<p>        $this-&gt;addElements(array($id, $spam,$username,$email,$subject,$body,$submit));<br />
    }<br />
}</code></p></blockquote>
<p>5 在action中调用此form</p>
<blockquote><p><code>    function contactAction()<br />
    {<br />
    	$form=new ContactForm();<br />
    	$this-&gt;view-&gt;form=$form;<br />
    	$this-&gt;view-&gt;addHelperPath('helper','Zend_View_Helper_');<br />
    	if ($this-&gt;_request-&gt;isPost()) {<br />
    		//发送邮件<br />
    		$formData=$this-&gt;_request-&gt;getPost();<br />
    		include_once("bcspamblock.php");<br />
    		if (bcspamblock_verify() &amp;&amp; $form-&gt;isValid($formData)) {<br />
    			$mail=new Zend_Mail('utf-8');<br />
....</code></p></blockquote>
<p>因为第3步中的validator自动调用不成功，因此在此进行了手工的判断。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/500/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>生成UUID/GUID</title>
		<link>http://wlx.westgis.ac.cn/469/</link>
		<comments>http://wlx.westgis.ac.cn/469/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 04:07:03 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[guid]]></category>
		<category><![CDATA[libuuid1]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[uuid]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/469/</guid>
		<description><![CDATA[php的生成办法： &#60;?php class System { function currentTimeMillis() { list($usec, $sec) = explode(" ",microtime()); return $sec.substr($usec, 2, 3); } } class NetAddress { var $Name = 'localhost'; var $IP = '127.0.0.1'; function getLocalHost() // static { $address = new NetAddress(); $address-&#62;Name &#8230; <a href="http://wlx.westgis.ac.cn/469/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>php的生成办法：</p>
<blockquote><p><code>&lt;?php<br />
   class System<br />
{<br />
        function currentTimeMillis()<br />
        {<br />
                list($usec, $sec) = explode(" ",microtime());<br />
                return $sec.substr($usec, 2, 3);<br />
        }</p>
<p>}</p>
<p>class NetAddress<br />
{</p>
<p>        var $Name = 'localhost';<br />
        var $IP = '127.0.0.1';</p>
<p>        function getLocalHost() // static<br />
        {<br />
                $address = new NetAddress();<br />
                $address-&gt;Name = $_ENV["COMPUTERNAME"];<br />
                $address-&gt;IP = $_SERVER["SERVER_ADDR"];</p>
<p>                return $address;<br />
        }</p>
<p>        function toString()<br />
        {<br />
                return strtolower($this-&gt;Name.'/'.$this-&gt;IP);<br />
        }</p>
<p>}</p>
<p>class Random<br />
{<br />
        function nextLong()<br />
        {<br />
                $tmp = rand(0,1)?'-':'';<br />
                return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);<br />
        }<br />
}</p>
<p>// 三段<br />
// 一段是微秒 一段是地址 一段是随机数<br />
class Guid<br />
{</p>
<p>        var $valueBeforeMD5;<br />
        var $valueAfterMD5;</p>
<p>        function Guid()<br />
        {<br />
                $this-&gt;getGuid();<br />
        }<br />
//<br />
        function getGuid()<br />
        {<br />
                $address = NetAddress::getLocalHost();<br />
                $this-&gt;valueBeforeMD5 = $address-&gt;toString().':'.System::currentTimeMillis().':'.Random::nextLong();<br />
                $this-&gt;valueAfterMD5 = md5($this-&gt;valueBeforeMD5);<br />
        }</p>
<p>        function newGuid()<br />
        {<br />
                $Guid = new Guid();<br />
                return $Guid;<br />
        }</p>
<p>        function toString()<br />
        {<br />
                $raw = strtoupper($this-&gt;valueAfterMD5);<br />
                return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);<br />
        }</p>
<p>}<br />
?&gt;<br />
</code></p></blockquote>
<p>然后就可以这样调用：</p>
<blockquote><p><code>   1.  &lt;?php<br />
   2. require_once("guid.class.php");<br />
   3. $Guid = new Guid();<br />
   4. print $Guid-&gt;toString();<br />
   5. ?&gt;   </code></p></blockquote>
<p>linux下可以用uuidgen命令来生成UUID，也可以在c/c++程序里调用：</p>
<blockquote><p><code>/* clear.c */<br />
void uuid_clear(uuid_t uu);</p>
<p>/* compare.c */<br />
int uuid_compare(const uuid_t uu1, const uuid_t uu2);</p>
<p>/* copy.c */<br />
void uuid_copy(uuid_t dst, const uuid_t src);</p>
<p>/* gen_uuid.c */<br />
void uuid_generate(uuid_t out);<br />
void uuid_generate_random(uuid_t out);<br />
void uuid_generate_time(uuid_t out);</p>
<p>/* isnull.c */<br />
int uuid_is_null(const uuid_t uu);</p>
<p>/* parse.c */<br />
int uuid_parse(const char *in, uuid_t uu);</p>
<p>/* unparse.c */<br />
void uuid_unparse(const uuid_t uu, char *out);</p>
<p>/* uuid_time.c */<br />
time_t uuid_time(const uuid_t uu, struct timeval *ret_tv);<br />
int uuid_type(const uuid_t uu);<br />
int uuid_variant(const uuid_t uu);</code></p></blockquote>
<p>在ubuntu下，需要确认已经安装对应的库：</p>
<blockquote><p>sudo aptitude install libuuid1 uuid-dev</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/469/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP的Framework</title>
		<link>http://wlx.westgis.ac.cn/303/</link>
		<comments>http://wlx.westgis.ac.cn/303/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 14:50:54 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[seagull]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/303/</guid>
		<description><![CDATA[很长时间没有关注PHP，今天无意中点到javaeye.com，发现其已经改版，使用了ruby on rails框架技术，做得很好，然后又看到了还有php相关的框架，最近最近一段时间在PHP的世界里也出现了很多框架。作为php的发行公司，Zend自己也推出了一个框架，简称为ZF，目前最新的稳定版本还是0.2。觉得php的动作有点慢了，应该在php5推出后，要是能紧跟就推出几个框架系统，那对于php世界应该有非常大的推动！不过，虽然动作慢了一些，但是已经有了很多的php框架发展起来了。粗粗阅读了zf的文档后，发现框架的功能还是蛮丰富的，但是ZF目前还是有相当多的进步空间的，就是说，目前还是有一些缺点的。 一些framework的比较： http://www.mustap.com/phpzone_post_73_top-10-php-mvc-frameworks http://www.phpit.net/article/ten-different-php-frameworks/ http://www.5itag.com/viewtopic.php/177 seagull感觉像是一个大的CMS系统 ZF感觉像是一个库，或者就是pear 最后看了symfony的manual，感觉symfony相当好，不过也有缺陷，就是配置太麻烦了。 在symfony中，用Propel实现了OR映射，支持多种数据库，包括mysql,sqlserver,pgsql,sqlite,oracle。 感觉这套框架和zend framework有很大不同，对我来说，symfony要好于zf。 还支持schema, or map, paging, multitype databases, &#8230; Conclusion: 首选symfony，其次cakephp，最后再考虑zf。当然还可以考虑seagull。]]></description>
			<content:encoded><![CDATA[<p>很长时间没有关注PHP，今天无意中点到<a href="http://javaeye.com">javaeye.com</a>，发现其已经改版，使用了ruby on rails框架技术，做得很好，然后又看到了还有php相关的框架，最近最近一段时间在PHP的世界里也出现了很多框架。作为php的发行公司，Zend自己也推出了<a href="http://framework.zend.com/">一个框架</a>，简称为ZF，目前最新的稳定版本还是0.2。觉得php的动作有点慢了，应该在php5推出后，要是能紧跟就推出几个框架系统，那对于php世界应该有非常大的推动！不过，虽然动作慢了一些，但是已经有了很多的php框架发展起来了。粗粗阅读了zf的文档后，发现框架的功能还是蛮丰富的，但是ZF目前还是有相当多的进步空间的，就是说，目前还是有一些缺点的。</p>
<p>一些framework的比较：</p>
<p>http://www.mustap.com/phpzone_post_73_top-10-php-mvc-frameworks</p>
<p>http://www.phpit.net/article/ten-different-php-frameworks/</p>
<p>http://www.5itag.com/viewtopic.php/177</p>
<p>seagull感觉像是一个大的CMS系统<br />
ZF感觉像是一个库，或者就是pear<br />
最后看了symfony的manual，感觉symfony相当好，不过也有缺陷，就是配置太麻烦了。<br />
在symfony中，用Propel实现了OR映射，支持多种数据库，包括mysql,sqlserver,pgsql,sqlite,oracle。<br />
感觉这套框架和zend framework有很大不同，对我来说，symfony要好于zf。<br />
还支持schema, or map, paging, multitype databases, &#8230;</p>
<p>Conclusion: 首选symfony，其次cakephp，最后再考虑zf。当然还可以考虑seagull。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/303/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php4+mysql 4.1的问题</title>
		<link>http://wlx.westgis.ac.cn/108/</link>
		<comments>http://wlx.westgis.ac.cn/108/#comments</comments>
		<pubDate>Wed, 31 Aug 2005 05:17:40 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[eLearn]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.mygis.org/108/</guid>
		<description><![CDATA[php4+mysql 4.1的问题 以前的一个考试系统，在PHP4+MYSQL 3的环境下进行开发的。 今天转到XP的APACHE 2 ＋ PHP 4＋ MYSQL 4.1环境下居然无法使用。提示PHP4无法连接数据库。 经过GOOGLE才发现是MYSQL 4.1修改了加密算法，需要处理一下才可以： 进入mysql 然后执行， SET PASSWORD FOR &#8216;some_user&#8217;@'some_host&#8217; = OLD_PASSWORD(&#8216;newpwd&#8217;); 另外还有一个中文乱码问题： 本来用的是GB2312编码，为了扩大系统的应用范围，想改成UTF8编码。程序改好后，发现从MYSQL提出来的数据都是GB2312编码，然后mysqldump在iconv -f gb2312 -t utf8，但有的数据无法转换，经检查是图像在数据库中的存贮部分，就把那个表单独给dump出来，然后在转换剩下的部分，大功告成。]]></description>
			<content:encoded><![CDATA[<p>php4+mysql 4.1的问题<br />
以前的一个考试系统，在PHP4+MYSQL 3的环境下进行开发的。<br />
今天转到XP的APACHE 2 ＋ PHP 4＋ MYSQL 4.1环境下居然无法使用。提示PHP4无法连接数据库。<br />
经过GOOGLE才发现是MYSQL 4.1修改了加密算法，需要处理一下才可以：<br />
进入mysql<br />
然后执行，<br />
SET PASSWORD FOR &#8216;some_user&#8217;@'some_host&#8217; = OLD_PASSWORD(&#8216;newpwd&#8217;); </p>
<p>另外还有一个中文乱码问题：<br />
本来用的是GB2312编码，为了扩大系统的应用范围，想改成UTF8编码。程序改好后，发现从MYSQL提出来的数据都是GB2312编码，然后mysqldump在iconv -f gb2312 -t utf8，但有的数据无法转换，经检查是图像在数据库中的存贮部分，就把那个表单独给dump出来，然后在转换剩下的部分，大功告成。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/108/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>php mapscript msGetLabelSize() 错误</title>
		<link>http://wlx.westgis.ac.cn/57/</link>
		<comments>http://wlx.westgis.ac.cn/57/#comments</comments>
		<pubDate>Tue, 15 Mar 2005 01:54:56 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[MapServer]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[shp2img]]></category>

		<guid isPermaLink="false">http://blog.mygis.org/57/</guid>
		<description><![CDATA[当出现这种错误时,而直接使用shp2img可以生成图象时,请检查你的PHP中的&#8211;with-gd参数后面是否指定了具体的gd路径. Warning: MapServer Error in msGetLabelSize(): libgd was not built with FreeType font support in]]></description>
			<content:encoded><![CDATA[<p>当出现这种错误时,而直接使用shp2img可以生成图象时,请检查你的PHP中的&#8211;with-gd参数后面是否指定了具体的gd路径.<br />
 Warning: MapServer Error in msGetLabelSize(): libgd was not built with FreeType font support in</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/57/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>debian sarge的PHP4的编译参数</title>
		<link>http://wlx.westgis.ac.cn/39/</link>
		<comments>http://wlx.westgis.ac.cn/39/#comments</comments>
		<pubDate>Fri, 25 Feb 2005 13:05:14 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sarge]]></category>

		<guid isPermaLink="false">http://blog.mygis.org/39/</guid>
		<description><![CDATA[debian中默认的PHP4编译参数，太长了，导致MAPSERVER的MAPSCRIPT无法编译。 './configure' '--prefix=/usr' '--with-apxs2=/usr/bin/apxs2' '--with-regex=system' '--with-config-file-path=/etc/php4/apache2' '--disable-rpath' '--enable-memory-limit' '--disable-debug' '--with-layout=GNU' '--with-pear=/usr/share/php' '--enable-calendar' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-bcmath' '--with-bz2' '--enable-ctype' '--with-db4' '--with-iconv' '--enable-exif' '--enable-filepro' '--enable-ftp' '--with-gettext' '--enable-mbstring' '--with-pcre-regex=/usr' '--enable-shmop' '--enable-sockets' '--enable-wddx' '--disable-xml' '--with-expat-dir=/usr' '--with-xmlrpc' '--enable-yp' '--with-zlib' '--with-pgsql' '--with-kerberos=/usr' '--with-openssl=/usr' '--enable-dbx' &#8230; <a href="http://wlx.westgis.ac.cn/39/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>debian中默认的PHP4编译参数，太长了，导致MAPSERVER的MAPSCRIPT无法编译。</p>
<blockquote><p><code>'./configure' '--prefix=/usr' '--with-apxs2=/usr/bin/apxs2' '--with-regex=system' '--with-config-file-path=/etc/php4/apache2' '--disable-rpath' '--enable-memory-limit' '--disable-debug' '--with-layout=GNU' '--with-pear=/usr/share/php' '--enable-calendar' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-bcmath' '--with-bz2' '--enable-ctype' '--with-db4' '--with-iconv' '--enable-exif' '--enable-filepro' '--enable-ftp' '--with-gettext' '--enable-mbstring' '--with-pcre-regex=/usr' '--enable-shmop' '--enable-sockets' '--enable-wddx' '--disable-xml' '--with-expat-dir=/usr' '--with-xmlrpc' '--enable-yp' '--with-zlib' '--with-pgsql' '--with-kerberos=/usr' '--with-openssl=/usr' '--enable-dbx' '--with-mime-magic=/usr/share/misc/file/magic.mime' '--with-exec-dir=/usr/lib/php4/libexec' '--disable-static' '--with-curl=shared,/usr' '--with-dom=shared,/usr' '--with-dom-xslt=shared,/usr' '--with-dom-exslt=shared,/usr' '--with-zlib-dir=/usr' '--with-gd=shared,/usr' '--enable-gd-native-ttf' '--with-jpeg-dir=shared,/usr' '--with-xpm-dir=shared,/usr/X11R6' '--with-png-dir=shared,/usr' '--with-freetype-dir=shared,/usr' '--with-imap=shared,/usr' '--with-imap-ssl' '--with-ldap=shared,/usr' '--with-mcal=shared,/usr' '--with-mhash=shared,/usr' '--without-mm' '--with-mysql=shared,/usr' '--with-unixODBC=shared,/usr' '--with-recode=shared,/usr' '--enable-xslt=shared' '--with-xslt-sablot=shared,/usr' '--with-snmp=shared,/usr' '--with-ttf=shared,/usr' '--with-t1lib=shared,/usr' '--with-gd=shared,/usr' '--with-mysql=shared,/usr'</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/39/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

