<?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>J.et wong's stuff &#187; J.et wong</title>
	<atom:link href="http://j.etwong.com/blog-author/jet-wong/feed" rel="self" type="application/rss+xml" />
	<link>http://j.etwong.com</link>
	<description>{}</description>
	<lastBuildDate>Mon, 23 Aug 2010 03:04:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>。。。。。。</title>
		<link>http://j.etwong.com/blog-124</link>
		<comments>http://j.etwong.com/blog-124#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:53:50 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[杂杂杂]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=124</guid>
		<description><![CDATA[亲爱的
你有太多的我不了解
亲爱的
我要从今天起读你
亲爱的
。。。。。
]]></description>
			<content:encoded><![CDATA[<p>亲爱的<br />
你有太多的我不了解<br />
亲爱的<br />
我要从今天起读你<br />
亲爱的<br />
。。。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-124/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>双输入对话框CAknMultiLineDataQueryDialog</title>
		<link>http://j.etwong.com/blog-122</link>
		<comments>http://j.etwong.com/blog-122#comments</comments>
		<pubDate>Sat, 23 Jan 2010 13:48:05 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=122</guid>
		<description><![CDATA[CAknMultiLineDataQueryDialog  是个很奇怪的方式
如果在模拟器运行正常，但在真机上无法出现的时候，请注意在mmp加上stacksize的选项
如果还是不行，请注意make clean 原来的项目！
]]></description>
			<content:encoded><![CDATA[<p>CAknMultiLineDataQueryDialog  是个很奇怪的方式</p>
<p>如果在模拟器运行正常，但在真机上无法出现的时候，请注意在mmp加上stacksize的选项</p>
<p>如果还是不行，请注意make clean 原来的项目！</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-122/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebGame开发笔记</title>
		<link>http://j.etwong.com/blog-120</link>
		<comments>http://j.etwong.com/blog-120#comments</comments>
		<pubDate>Fri, 22 Jan 2010 10:21:57 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=120</guid>
		<description><![CDATA[辞掉之前养老的MMORPG的运营工作，开始了新的webgame研发之旅。
由于平时不是太玩游戏，这对我是一次挑战
时间只有两个月，要出一个alpha版本。
1.开发准备
2.开发小组人员配备说明
3.开发思路说明
a)、想直接走霸王硬上弓的线路，即按自己思路搭好架构，参照代码进行DB设计和library开发
发现对小组成员要求太高，
走b)路线
b)全盘阅读代码，笔记下所有疑点，是否成功，有待观察
]]></description>
			<content:encoded><![CDATA[<p>辞掉之前养老的MMORPG的运营工作，开始了新的webgame研发之旅。<br />
由于平时不是太玩游戏，这对我是一次挑战<br />
时间只有两个月，要出一个alpha版本。</p>
<p>1.开发准备<br />
2.开发小组人员配备说明<br />
3.开发思路说明<br />
a)、想直接走霸王硬上弓的线路，即按自己思路搭好架构，参照代码进行DB设计和library开发<br />
发现对小组成员要求太高，<br />
走b)路线<br />
b)全盘阅读代码，笔记下所有疑点，是否成功，有待观察</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-120/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Container中加入切换View视图功能</title>
		<link>http://j.etwong.com/blog-118</link>
		<comments>http://j.etwong.com/blog-118#comments</comments>
		<pubDate>Wed, 20 Jan 2010 15:39:40 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=118</guid>
		<description><![CDATA[在目前情况下，自带的MultiView例子中
可以轻松做到切到view1切换到view2，
但是有时我们需要在container中加一些itemlist，切换到 view2的功能，那要怎么做呢？


其实不是太复杂
我们可以在container里的构造函数里加入view的引用，就可以了

可以参考：fepexample的例子，他里面有就一个iFep aFep的引用例子

值得注意的是一个报错：

illegal use of incomplete struct/union/class 

这个可能是由于没有 container没有include view的头文件导致的，
尽管Carbide c++ 提示 iView能够调用 View库的函数，切记切记]]></description>
			<content:encoded><![CDATA[<p>在目前情况下，自带的MultiView例子中<br />
可以轻松做到切到view1切换到view2，<br />
但是有时我们需要在container中加一些itemlist，切换到 view2的功能，那要怎么做呢？</p>
<p>其实不是太复杂<br />
我们可以在container里的构造函数里加入view的引用，就可以了</p>
<p>可以参考：fepexample的例子，他里面有就一个iFep aFep的引用例子</p>
<p>值得注意的是一个报错：</p>
<p>illegal use of incomplete struct/union/class </p>
<p>这个可能是由于没有 container没有include view的头文件导致的，<br />
尽管Carbide c++ 提示 iView能够调用 View库的函数，切记切记</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-118/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP加载OPEN SSL功能</title>
		<link>http://j.etwong.com/blog-116</link>
		<comments>http://j.etwong.com/blog-116#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:28:36 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>
		<category><![CDATA[openssl  Apache curl post]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=116</guid>
		<description><![CDATA[ＭＳ是个很麻烦的问题，不简单是从php.ini中去掉
;extension=php_openssl.dll
和把dll复制到c:\windows\system32目录中
你会发现在PHPinfo里，还是看不到openssl的信息。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-一条分隔线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
看这里的文档：
http://www.php.net/manual/en/openssl.installation.php
大意是说：
在Apache加载PHP模式下，加载这两个dll是有顺序，先去Apache的bin下的dll加载，一看真是两个文件名一模一样，就是大小不一样，
换上新的文件，phpinfo又出现OpenSSL了
但是http  request 还是得不到他的信息，真郁闷，最后还是用Curl来解决这个问题
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, &#8216;https://XXXXX/xxx.xxx&#8217;);
//ＳＳＬ验证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  //如果需要验证的话，设成false
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 1); //如果为１，会打印出来header的
// 设置cURL 参数，要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL，请求网页
$data = curl_exec($curl);
// 关闭URL请求
curl_close($curl);
// 显示获得的数据
var_dump($data);
]]></description>
			<content:encoded><![CDATA[<p>ＭＳ是个很麻烦的问题，不简单是从php.ini中去掉</p>
<p>;extension=php_openssl.dll</p>
<p>和把dll复制到c:\windows\system32目录中</p>
<p>你会发现在PHPinfo里，还是看不到openssl的信息。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-一条分隔线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>看这里的文档：</p>
<p><a href="http://www.php.net/manual/en/openssl.installation.php">http://www.php.net/manual/en/openssl.installation.php</a></p>
<p>大意是说：</p>
<p>在Apache加载PHP模式下，加载这两个dll是有顺序，先去Apache的bin下的dll加载，一看真是两个文件名一模一样，就是大小不一样，</p>
<p>换上新的文件，phpinfo又出现OpenSSL了</p>
<p>但是http  request 还是得不到他的信息，真郁闷，最后还是用Curl来解决这个问题</p>
<p>// 初始化一个 cURL 对象<br />
$curl = curl_init();</p>
<p>// 设置你需要抓取的URL<br />
curl_setopt($curl, CURLOPT_URL, &#8216;https://XXXXX/xxx.xxx&#8217;);</p>
<p>//ＳＳＬ验证<br />
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);<br />
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  //如果需要验证的话，设成false<br />
// 设置header<br />
curl_setopt($curl, CURLOPT_HEADER, 1); //如果为１，会打印出来header的</p>
<p>// 设置cURL 参数，要求结果保存到字符串中还是输出到屏幕上。<br />
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);</p>
<p>// 运行cURL，请求网页<br />
$data = curl_exec($curl);</p>
<p>// 关闭URL请求<br />
curl_close($curl);</p>
<p>// 显示获得的数据<br />
var_dump($data);</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-116/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Lightwindow图片大小的ＢＵＧ</title>
		<link>http://j.etwong.com/blog-113</link>
		<comments>http://j.etwong.com/blog-113#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:09:48 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=113</guid>
		<description><![CDATA[Lightwindow 是个不错的图片浏览库，但有个情况就是在ＩＥ下，会出现在图片没有载入完全时，会出现很小一个框的ＢＵＧ，看不清图片

现在有个解决方案：
老外提供的》》
主要是ＩＥ引起的，具体原因要研究一下，但注意不要ＣＯＰＹ他的代码
要用原版的：&#62;&#62;&#62;
同样，你也可以下载我这里的：
Lightwindow.js    1217-1239:
// We have to  do this instead of .onload
this.checkImage[i] = new  PeriodicalExecuter(function(i) {
if (!(typeof  $('lightwindow_image_'+i).naturalWidth != "undefined" &#38;&#38;  $('lightwindow_image_'+i).naturalWidth == 0))  {
this.checkImage[i].stop();
var imageHeight =  $('lightwindow_image_'+i).getHeight();
if (imageHeight &#62;  this.resizeTo.height) {
this.resizeTo.height =  imageHeight;
}
this.resizeTo.width +=  $('lightwindow_image_'+i).getWidth();
this.imageCount--;
$('lightwindow_image_'+i).setStyle({
height:  '100%', width: '100%'
});
if (this.imageCount == 0)  {
this._processWindow();
}
}
}.bind(this, i), [...]]]></description>
			<content:encoded><![CDATA[<p>Lightwindow 是个不错的图片浏览库，但有个情况就是在ＩＥ下，会出现在图片没有载入完全时，会出现很小一个框的ＢＵＧ，看不清图片</p>
<p><img class="alignnone size-full wp-image-114" src="http://j.etwong.com/wp-content/uploads/2009/10/lightwindow.jpg" alt="lightwindow" width="583" height="498" /></p>
<p>现在有个解决方案：</p>
<p><a href="http://www.rtraction.com/blog/devit/lightwindow-image-sizing-bug-in-ie6-on-first-click-of-gallery.html" target="_blank">老外提供的》》</a></p>
<p>主要是ＩＥ引起的，具体原因要研究一下，但注意不要ＣＯＰＹ他的代码</p>
<p><a href="http://www.trilodge.de/blog/2007/11/07/lightwindow-image-load-failure-fixed/" target="_blank">要用原版的：&gt;&gt;&gt;</a></p>
<p>同样，你也可以下载我这里的：</p>
<p>Lightwindow.js    <strong>1217-1239</strong>:<br />
<code>// We have to  do this instead of .onload<br />
this.checkImage[i] = new  PeriodicalExecuter(function(i) {<br />
if (!(typeof  $('lightwindow_image_'+i).naturalWidth != "undefined" &amp;&amp;  $('lightwindow_image_'+i).naturalWidth == 0))  {<br />
this.checkImage[i].stop();<br />
var imageHeight =  $('lightwindow_image_'+i).getHeight();<br />
if (imageHeight &gt;  this.resizeTo.height) {<br />
this.resizeTo.height =  imageHeight;<br />
}<br />
this.resizeTo.width +=  $('lightwindow_image_'+i).getWidth();<br />
this.imageCount--;<br />
$('lightwindow_image_'+i).setStyle({<br />
height:  '100%', width: '100%'<br />
});<br />
if (this.imageCount == 0)  {<br />
this._processWindow();<br />
}<br />
}<br />
}.bind(this, i), 1);</code></p>
<p><strong>换成如下代码:</strong></p>
<p><code>// We have to do this instead of .onload<br />
var ie =  (document.all)?1:0;<br />
this.checkImage[i] = new PeriodicalExecuter(function(i)  {<br />
if(ie){ //THE BROWSER IS IE<br />
if ( $('lightwindow_image_'+i).complete  &amp;&amp; !(typeof $('lightwindow_image_'+i).naturalWidth != "undefined"  &amp;&amp; $('lightwindow_image_'+i).naturalWidth == 0))  {<br />
this.checkImage[i].stop();<br />
var imageHeight =  $('lightwindow_image_'+i).getHeight();<br />
if (imageHeight &gt;  this.resizeTo.height) {<br />
this.resizeTo.height =  imageHeight;<br />
}<br />
this.resizeTo.width +=  $('lightwindow_image_'+i).getWidth();<br />
this.imageCount--;<br />
$('lightwindow_image_'+i).setStyle({<br />
height:  '100%', width: '100%'<br />
});<br />
if (this.imageCount == 0)  {<br />
this._processWindow();<br />
}<br />
//alert('IE has been  detected')<br />
}<br />
}<br />
else<br />
{//NOT IE, PROBABLY FF, OPERA, OTHER<br />
//this  line works for all other browsers<br />
if ($('lightwindow_image_'+i).complete  &amp;&amp; !(typeof $('lightwindow_image_'+i).naturalWidth != "undefined"  &amp;&amp; $('lightwindow_image_'+i).naturalWidth == 0))  {<br />
this.checkImage[i].stop();<br />
var imageHeight =  $('lightwindow_image_'+i).getHeight();<br />
if (imageHeight &gt;  this.resizeTo.height) {<br />
this.resizeTo.height =  imageHeight;<br />
}<br />
this.resizeTo.width +=  $('lightwindow_image_'+i).getWidth();<br />
this.imageCount--;<br />
$('lightwindow_image_'+i).setStyle({<br />
height:  '100%', width: '100%'<br />
});<br />
if (this.imageCount == 0)  {<br />
this._processWindow();<br />
}<br />
}<br />
}<br />
}.bind(this, i), 1);</code></p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-113/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>symbian应用程序Uid</title>
		<link>http://j.etwong.com/blog-108</link>
		<comments>http://j.etwong.com/blog-108#comments</comments>
		<pubDate>Tue, 29 Sep 2009 14:41:45 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=108</guid>
		<description><![CDATA[RWsSession&#38; ws = iEikonEnv-&#62;WsSession();
TInt wgid = ws.GetFocusWindowGroup();
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);
TUid aCurAppUid = gn-&#62;AppUid();
CleanupStack::PopAndDestroy(gn);

需要从Uid转为十六进制。。。


const TUid KUidIdleApp5 = {0&#215;10005901};
]]></description>
			<content:encoded><![CDATA[<p>RWsSession&amp; ws = iEikonEnv-&gt;WsSession();<br />
TInt wgid = ws.GetFocusWindowGroup();<br />
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);<br />
TUid aCurAppUid = gn-&gt;AppUid();<br />
CleanupStack::PopAndDestroy(gn);</p>
<p><img class="alignnone size-full wp-image-110" src="http://j.etwong.com/wp-content/uploads/2009/09/0002.jpg" alt="0002" width="560" height="254" /></p>
<p>需要从Uid转为十六进制。。。</p>
<p><img class="alignnone size-full wp-image-111" src="http://j.etwong.com/wp-content/uploads/2009/09/0003.jpg" alt="0003" width="550" height="54" /></p>
<p><img class="alignnone size-full wp-image-109" src="http://j.etwong.com/wp-content/uploads/2009/09/0001.jpg" alt="0001" width="521" height="115" /></p>
<p>const TUid KUidIdleApp5 = {0&#215;10005901};</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-108/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress 的移植出现的问题</title>
		<link>http://j.etwong.com/blog-106</link>
		<comments>http://j.etwong.com/blog-106#comments</comments>
		<pubDate>Sun, 30 Aug 2009 08:23:49 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=106</guid>
		<description><![CDATA[有时wordpress系统需要COPY+PASTE一份新的，
解决办法 是：复制整个目录，修改wp-config.php
修改SQL，改成新的目录，尤其注意的是有serialize的数据中，更换一下数据
常见问题1：
You do not have sufficient permissions to access this page.
可能的问题是 $_usermeta这个数据表中的数据问题：需要改成新的：老外解决方案
如果还有问题：修改表$prefix_options
记录$prefox_user_roles，这个是否换成新的了
]]></description>
			<content:encoded><![CDATA[<p>有时wordpress系统需要COPY+PASTE一份新的，</p>
<p>解决办法 是：复制整个目录，修改wp-config.php</p>
<p>修改SQL，改成新的目录，尤其注意的是有serialize的数据中，更换一下数据</p>
<p>常见问题1：</p>
<p>You do not have sufficient permissions to access this page.</p>
<p>可能的问题是 $_<code>usermeta这个数据表中的数据问题：需要改成新的：<a href="http://beconfused.com/2007/08/28/how-to-solve-you-do-not-have-sufficient-permissions-to-access-this-page-in-wordpress/" target="_blank">老外解决方案</a></code></p>
<p>如果还有问题：修改表<span class="item">$prefix_options</span></p>
<p>记录$prefox_user_roles，这个是否换成新的了</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-106/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>symbian调试工具-hooklogger</title>
		<link>http://j.etwong.com/blog-104</link>
		<comments>http://j.etwong.com/blog-104#comments</comments>
		<pubDate>Tue, 11 Aug 2009 03:52:20 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=104</guid>
		<description><![CDATA[在使用Symbian进行开发时经常会忘记释放我们曾经使用过的内存或指针，从而导致我们在模拟器中最后退出软件时会爆出提示，而检验遗漏的内存是程序员的天职所在，所以我们要想做好Symbian的开发，就必须熟悉如何查找内存，而Symbian SDK中提供了一个很好的工具HookLogger用来检验我们的内存操作。
下面所提到的是2008年5月1日版（0.423 rc版）（对应的SDK是9.1/S60_3rd的）
下载：
http://developer.symbian.com/main/downloads/files/HookLogger.msi这个是官方的链接地址。
安装：
至于安装并没有像很多文章中所说的那么复杂，我只是安装在默认的目录，而官方的视频教程（后面会提到，也给过链接吧）也是一个象征性的地址。
使用：
我也就不多说了，官方的视频教程（http://developer.symbian.com /main/tools_and_sdks/developer_tools/supported/hook_logger/intro.htt）说的很清楚。如果有些地方因为网速不能打开，那我就做个小的介绍。
1、安装完毕后启动HookLogger的应用程序，这是可以启动模拟器，一般会有一个提示说是你的HookLogger和模拟器没有Hook上，你就直接点击确定并关闭模拟器（不要急着把HookLogger也关了）。
2、设置系统环境变量，新建一个环境变量，名称为epocroot，变量值为C:\Symbian\9.2\S60_3rd_FP1  （一般为你自己的安装目录）。重新启动操作系统。
3、打开Windows的命令控制台（开始菜单中单击运行， 输入cmd然后就按下回车），跳转到你所安装的HookLogger的目录（如默认的 C:\Program Files\HookLogger，这里要在控制台中输入 cd C:\Program Files\HookLogger然后回车），输入命令SetupHooks，回车；会弹出一些提示信息，接着输入SetupHooks epocroot， 回车。
3.1可以看到如下：

C:\Program Files\HookLogger&#62;SetupHooks
** usage:
SetupHooks &#60;DEVICE&#62; [--remove&#124;r] [--platform=&#60;PLATFORM&#62;] [--build=&#60;BUILD&#62;]
** where:
&#60;DEVICE&#62; specifies the device name to attach hooks to (as listed by &#8216;devices&#8217;),
or DEFAULT for the default device, or EPOCROOT to attach to %EPOCROOT%\epoc32
(as used by legacy Symbian tools)
&#60;PLATFORM&#62; defaults to WINSCW
&#60;BUILD&#62; defaults to UDEB
&#8211;remove detaches [...]]]></description>
			<content:encoded><![CDATA[<p>在使用<span class="t_tag">Symbian</span>进行<span class="t_tag">开发</span>时经常会忘记释放我们曾经使用过的<span class="t_tag">内存</span>或指针，从而导致我们在<span class="t_tag">模拟</span>器中最后退出<span class="t_tag">软件</span>时会爆出提示，而检验遗漏的内存是<span class="t_tag">程序</span>员的天职所在，所以我们要想做好Symbian的开发，就必须熟悉如何查找内存，而Symbian <span class="t_tag">SDK</span>中提供了一个很好的<span class="t_tag">工具</span>HookLogger用来检验我们的内存操作。<br />
下面所提到的是2008年5月1日版（0.423 rc版）（对应的SDK是9.1/S60_3rd的）<br />
<span class="t_tag">下载</span>：<br />
<a href="http://developer.symbian.com/main/downloads/files/HookLogger.msi" target="_blank">http://developer.symbian.com/main/downloads/files/HookLogger.msi</a>这个是官方的链接地址。<br />
安装：<br />
至于安装并没有像很多文章中所说的那么复杂，我只是安装在默认的目录，而官方的<span class="t_tag">视频</span><span class="t_tag">教程</span>（后面会提到，也给过链接吧）也是一个象征性的地址。<br />
使用：<br />
我也就不多说了，官方的视频教程（<a href="http://developer.symbian.com/" target="_blank">http://developer.symbian.com</a> /main/tools_and_sdks/developer_tools/supported/hook_logger/intro.htt）说的很清楚。如果有些地方因为网速不能打开，那我就做个小的介绍。<br />
1、安装完毕后启动HookLogger的<span class="t_tag">应用程序</span>，这是可以启动模拟器，一般会有一个提示说是你的HookLogger和模拟器没有Hook上，你就直接点击确定并关闭模拟器（不要急着把HookLogger也关了）。<br />
2、<span class="t_tag">设置</span><span class="t_tag">系统</span><span class="t_tag">环境</span>变量，新建一个环境变量，名称为epocroot，变量值为C:\Symbian\9.2\S60_3rd_FP1  （一般为你自己的安装目录）。重新启动操作系统。<br />
3、打开Windows的命令控制台（开始<span class="t_tag">菜单</span>中单击<span class="t_tag">运行</span>， 输入cmd然后就按下回车），跳转到你所安装的HookLogger的目录（如默认的 C:\Program Files\HookLogger，这里要在控制台中输入 cd C:\Program Files\HookLogger然后回车），输入命令SetupHooks，回车；会弹出一些提示信息，接着输入SetupHooks epocroot， 回车。</p>
<p>3.1可以看到如下：<br />
<strong></strong></p>
<p><strong><strong>C:\Program Files\HookLogger&gt;SetupHooks<br />
** usage:<br />
SetupHooks &lt;DEVICE&gt; [--remove|r] [--platform=&lt;PLATFORM&gt;] [--build=&lt;BUILD&gt;]<br />
** where:<br />
&lt;DEVICE&gt; specifies the device name to attach hooks to (as listed by &#8216;devices&#8217;),<br />
or DEFAULT for the default device, or EPOCROOT to attach to %EPOCROOT%\epoc32<br />
(as used by legacy Symbian tools)<br />
&lt;PLATFORM&gt; defaults to WINSCW<br />
&lt;BUILD&gt; defaults to UDEB<br />
&#8211;remove detaches the hooks, restoring the original EUSER.DLL</strong></strong></p>
<p><strong><strong>C:\Program Files\HookLogger&gt;SetupHooks epocroot<br />
Setting up hooks in &#8220;C:\Symbian\9.2\S60_3rd_FP1\epoc32\release\WINSCW\UDEB&#8221;<br />
已复制         1 个文件。<br />
Setup euser.dll to load EUserParasite_EKA2.dll, original preserved as euser.orig<br />
.dll.<br />
Run SetupHooks with &#8211;r to restore it</strong></strong></p>
<p><strong><strong>C:\Program Files\HookLogger&gt;</strong></strong><br />
4、设置完成，在HookLogger的Filters的Tab页面中，左侧的下拉菜单中选择Include only checked，在下面的Browse for EXE的按钮中选中你要进行<span class="t_tag">调试</span>的那个<span class="t_tag">工程</span>的模拟器对应的<span class="t_tag">exe</span>程序，一般在C:\Symbian\9.1\s60_3rd\epoc32\release\winscw\udeb\中，而<span class="t_tag">文件</span>名一般是你的工程名。<br />
5、设置完毕后启动模拟器，在模拟器中运行你要调试的那个程序，直到退出时爆出 Alloc ********（16位的地址），这时在HookLogger的Heap的Tab，单击第三个按钮（List all alloc），你会发现该页面中有一列Ptr，在这一列中找到你的那个对应的地址（Alloc中的********），然后用鼠标选中这一行，单击下面的 第四个按钮（Alloc details）这时会弹出一个<span class="t_tag">对话框</span>，找到第一个有关你的类名及<span class="t_tag">函数</span>名的位置（这里就是根源所在），在#后的数字就是你的内存泄露所在的位置。<br />
6、跳到你的源文件中步骤4的位置，找出你的内存泄露出现在哪里，这样你就可以进行下一步调试了。</p>
<p><strong>以上方法本人初步研究可以很好的运行，有问题大家在相互交流。</strong></p>
<p><strong>以上大部分内容来自：<em>鬼人王 &gt;&gt; </em></strong></p>
<p><strong><em>http://www.devdiv.net/thread-7886-1-3.html<br />
</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-104/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP发送邮件导致页面无法显示</title>
		<link>http://j.etwong.com/blog-99</link>
		<comments>http://j.etwong.com/blog-99#comments</comments>
		<pubDate>Wed, 29 Jul 2009 09:20:46 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=99</guid>
		<description><![CDATA[有一天，一台HK的服务器报告
PHP发送邮件的功能导致页面无法显示，症状是：进度条一直在 走，到最后超出了IE最大时长，显示“该页无法显示”
网管确定下来，原来是他们弄了个无效的DNS服务器在那（估计就不能解析域名的不知道什么服务器），改为正确的DNS器，OK了，是记
]]></description>
			<content:encoded><![CDATA[<p>有一天，一台HK的服务器报告</p>
<p>PHP发送邮件的功能导致页面无法显示，症状是：进度条一直在 走，到最后超出了IE最大时长，显示“该页无法显示”</p>
<p>网管确定下来，原来是他们弄了个无效的DNS服务器在那（估计就不能解析域名的不知道什么服务器），改为正确的DNS器，OK了，是记</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-99/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
