<?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>W3C工作室</title>
	<atom:link href="http://www.w3cstudio.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.w3cstudio.com</link>
	<description>生活、工作、分享</description>
	<lastBuildDate>Sun, 19 Feb 2012 08:50:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>vim设置TAB为四个空格</title>
		<link>http://www.w3cstudio.com/2012/02/19/vimtabspaces/</link>
		<comments>http://www.w3cstudio.com/2012/02/19/vimtabspaces/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 08:50:05 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=508</guid>
		<description><![CDATA[1 shiftwidth 这个是用于程序中自动缩进所使用的空白长度指示的。一般来说为了保持程序的美观，和下面的参数最好一致。同时它也是符号移位长度的制定者。 2 tabstop 定义tab所等同的空格长度，一般来说最好设置成8，因为如果是其它值的话，可能引起文件在打印之类的场合中看起来很别扭。除非你设置了 expandtab模式，也就是把tabs转换成空格，这样的话就不会一起混淆，不过毕竟制表符为8是最常用最普遍的设置，所以一般还是不要改。 3 softtabstop 如果我们希望改变程序中的缩进怎么办？shiftwidth和tabstop不一样的话，你会发现程序比较难看的。这时候，softtabstop就起作用了。可以从vim的说明中看到，一旦设置了softtabstop的值时，你按下tab键，插入的是空格和tab制表符的混合，具体如何混合取决于你设定的softtabstop，举个例子，如果设定softtabstop=8, 那么按下tab键，插入的就是正常的一个制表符;如果设定 softtabstop=16,那么插入的就是两个制表符；如果softtabstop=12,那么插入的就是一个制表符加上4个空格；如果 softtabstop=4呢？那么一开始，插入的就是4个空格，此时一旦你再按下一次tab，这次的四个空格就会和上次的四个空格组合起来变成一个制表符。换句话说，softtabstop是“逢8空格进1制表符”,前提是你tabstop=8。 4 关于expandtab 举个例子，在多人一起开发项目时，为了使代码风格尽量保持一致，一般不允许在代码使用TAB符，而以4个空格代之。我们可以编辑一个文件，包含下面的内容： set shiftwidth=4 set expandtab 然后把下面的命令加入到.vimrc中： autocmd FileType c,cpp set shiftwidth=4 &#124; set expandtab]]></description>
			<content:encoded><![CDATA[<h2>1 shiftwidth</h2>
<p>这个是用于程序中自动缩进所使用的空白长度指示的。一般来说为了保持程序的美观，和下面的参数最好一致。同时它也是符号移位长度的制定者。</p>
<h2>2 tabstop</h2>
<p>定义tab所等同的空格长度，一般来说最好设置成8，因为如果是其它值的话，可能引起文件在打印之类的场合中看起来很别扭。除非你设置了 <code>expandtab</code>模式，也就是把tabs转换成空格，这样的话就不会一起混淆，不过毕竟制表符为8是最常用最普遍的设置，所以一般还是不要改。</p>
<h2>3 softtabstop</h2>
<p>如果我们希望改变程序中的缩进怎么办？<code>shiftwidth</code>和<code>tabstop</code>不一样的话，你会发现程序比较难看的。这时候，<code>softtabstop</code>就起作用了。可以从vim的说明中看到，一旦设置了<code>softtabstop</code>的值时，你按下tab键，插入的是空格和tab制表符的混合，具体如何混合取决于你设定的<code>softtabstop</code>，举个例子，如果设定softtabstop=8, 那么按下tab键，插入的就是正常的一个制表符;如果设定 softtabstop=16,那么插入的就是两个制表符；如果softtabstop=12,那么插入的就是一个制表符加上4个空格；如果 <code>softtabstop</code>=4呢？那么一开始，插入的就是4个空格，此时一旦你再按下一次tab，这次的四个空格就会和上次的四个空格组合起来变成一个制表符。换句话说，<code>softtabstop</code>是“逢8空格进1制表符”,前提是你<code>tabstop=8</code>。</p>
<h2>4 关于expandtab</h2>
<p>举个例子，在多人一起开发项目时，为了使代码风格尽量保持一致，一般不允许在代码使用TAB符，而以4个空格代之。我们可以编辑一个文件，包含下面的内容：<br />
set shiftwidth=4<br />
set expandtab</p>
<p>然后把下面的命令加入到.vimrc中：<br />
<code>autocmd FileType c,cpp set shiftwidth=4 | set expandtab</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/02/19/vimtabspaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vim设置TAB为4个空格</title>
		<link>http://www.w3cstudio.com/2012/02/15/vim%e8%ae%be%e7%bd%aetab%e4%b8%ba4%e4%b8%aa%e7%a9%ba%e6%a0%bc/</link>
		<comments>http://www.w3cstudio.com/2012/02/15/vim%e8%ae%be%e7%bd%aetab%e4%b8%ba4%e4%b8%aa%e7%a9%ba%e6%a0%bc/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 14:36:29 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[os]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=505</guid>
		<description><![CDATA[:set tabstop=4 :set shiftwidth=4 :set expandtab]]></description>
			<content:encoded><![CDATA[<p>:set tabstop=4<br />
:set shiftwidth=4<br />
:set expandtab</p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/02/15/vim%e8%ae%be%e7%bd%aetab%e4%b8%ba4%e4%b8%aa%e7%a9%ba%e6%a0%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>how to define a variable</title>
		<link>http://www.w3cstudio.com/2012/01/29/how-to-define-a-variable/</link>
		<comments>http://www.w3cstudio.com/2012/01/29/how-to-define-a-variable/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 06:28:23 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=502</guid>
		<description><![CDATA[一、匈牙利命名法【Hungarian】： 广泛应用于象Microsoft Windows这样的环境中。 Windows 编程中用到的变量（还包括宏）的命名规则匈牙利命名法，这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀，标识出变量的作用域，类型等。这些符号可以多个同时使用，顺序是先m_（成员变量），再指针，再简单数据类型，再其他。例如：m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。 匈牙利命名法关键是：标识符的名字以一个或者多个小写字母开头作为前缀；前缀之后的是首字母大写的一个单词或多个单词组合，该单词要指明变量的用途。 匈牙利命名法中常用的小写字母的前缀： 前缀类型 a               数组 (Array) b               布尔值 (Boolean) by             字节 (Byte) c              有符号字符 (Char) cb            无符号字符 (Char Byte，没有多少人用) cr             颜色参考值 (ColorRef) cx,cy         坐标差（长度 ShortInt） dw           Double Word fn              &#8230; <a href="http://www.w3cstudio.com/2012/01/29/how-to-define-a-variable/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div id="blog_text">
<p>一、匈牙利命名法【Hungarian】：</p>
<p>广泛应用于象Microsoft Windows这样的环境中。</p>
<p>Windows 编程中用到的变量（还包括宏）的命名规则匈牙利命名法，这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles  Simonyi) 提出的。</p>
<p>匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀，标识出变量的作用域，类型等。这些符号可以多个同时使用，顺序是先m_（成员变量），再指针，再简单数据类型，再其他。例如：m_lpszStr,  表示指向一个以0字符结尾的字符串的长指针成员变量。</p>
<p>匈牙利命名法关键是：标识符的名字以一个或者多个小写字母开头作为前缀；前缀之后的是首字母大写的一个单词或多个单词组合，该单词要指明变量的用途。</p>
<p>匈牙利命名法中常用的小写字母的前缀：</p>
<p>前缀类型<br />
a               数组 (Array)<br />
b               布尔值 (Boolean)<br />
by             字节 (Byte)<br />
c              有符号字符 (Char)<br />
cb             无符号字符 (Char Byte，没有多少人用)<br />
cr             颜色参考值 (ColorRef)<br />
cx,cy          坐标差（长度 ShortInt）<br />
dw           Double Word<br />
fn              函数<br />
h                Handle（句柄）<br />
i                整型<br />
l              长整型  (Long Int)<br />
lp             Long Pointer<br />
m_          类的成员<br />
n             短整型 (Short Int)<br />
np          Near Pointer<br />
p            Pointer<br />
s           字符串型<br />
sz         以null做结尾的字符串型 (String with Zero End)<br />
w        Word</p>
<p>二、骆驼命名法【camelCase】:</p>
<p>骆驼式命令法，正如它的名称所表示的那样，是指混合使用大小写字母来构成变量和函数的名字。例如，下面是分别用骆驼式命名法和下划线法命名的同一个函数：</p>
<p>printEmployeePaychecks()；</p>
<p>print_employee_paychecks()；</p>
<p>第一个函数名使用了骆驼式命名法——函数名中的每一个逻辑断点都有一个大写字母来标记；第二个函数名使用了下划线法&#8212;-函数名中的每一个逻辑断点都有一个下划线来标记。</p>
<p>骆驼式命名法近年来越来越流行了，在许多新的函数库和Microsoft<br />
Windows这样的环境中，它使用得当相多。另一方面，下划线法是c出现后开始流行起来的，在许多旧的程序和UNIX这样的环境中，它的使用非常普遍。</p>
<p>三、帕斯卡命名法【PascalCase】：</p>
<p>与骆驼命名法类似。只不过骆驼命名法是首字母小写，而帕斯卡命名法是首字母大写</p>
<p>如：public  void<br />
DisplayInfo();<br />
string  UserName;<br />
二者都是采用了帕斯卡命名法.</p>
<p>【在C#中，以帕斯卡命名法和骆驼命名法居多。<br />
在C#中,简单的变量一般用camelCase规则,而比较高级的命名使用PascalCase。<br />
如.net  Framework的公共字段及公共属性。】</p>
<p>简单说</p>
<p>MyData是一個帕斯卡命名的示例。<br />
myData是一個骆驼命名法。<br />
iMyData是一個匈牙利命名法,小些说明了变量的类型或者用途。</p>
</div>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/01/29/how-to-define-a-variable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>behaviro:#default#userData</title>
		<link>http://www.w3cstudio.com/2012/01/29/behavirodefaultuserdata/</link>
		<comments>http://www.w3cstudio.com/2012/01/29/behavirodefaultuserdata/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 01:50:44 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=493</guid>
		<description><![CDATA[DHTML提供了很多默认的behavior对象。 而#default#userData就是用来代替cookie的一个方案 函数解释： load(str)读取记录信息，str是一个记录的集合的名字 save(str)抱存记录信息，str是一个记录的集合的名字 setAttribute(strAttrib,strValue) 设置一个值,strAttrib为名称，strValue为数据值 getAttribute(strAttrib) 取得一个值,strAttrib为名称，返回数据值 常规用法： 一：内定义 二：用sd.load(&#8220;AStringYouLike&#8221;)来读取一批数据 三：用sd.getAttribute(&#8220;DataName&#8221;)来取得一个数据值 四：用sd.setAttribute(&#8220;DataName&#8221;,&#8221;Value&#8221;)来设置一个数据值 五：用sd.save(&#8220;AStringYouLike&#8221;)来保存setAttribute的设置 strKey=&#8221;AStringYouLike&#8221;; strEntry=&#8221;taValue&#8221;; function load() { sd.load(strKey); ta.value=sd.getAttribute(strEntry); } window.attachEvent(&#8220;onload&#8221;,load); function save() { sd.setAttribute(strEntry,ta.value); sd.save(strKey); } strKey=&#8221;SaveYourLoginTime&#8221;; strEntry=&#8221;strTime&#8221;; function load() { sd.load(strKey); time=sd.getAttribute(strEntry); if(!time)msgTime.innerHTML=&#8221;你没有来过这个网站&#8221;; else msgTime.innerHTML=&#8221;你上次打开这个网站的时间是:&#8221;+time; &#8230; <a href="http://www.w3cstudio.com/2012/01/29/behavirodefaultuserdata/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>DHTML提供了很多默认的behavior对象。</p>
<p>而#default#userData就是用来代替cookie的一个方案 </p>
<p>函数解释：</p>
<p>load(str)读取记录信息，str是一个记录的集合的名字</p>
<p>save(str)抱存记录信息，str是一个记录的集合的名字</p>
<p>setAttribute(strAttrib,strValue)</p>
<p>设置一个值,strAttrib为名称，strValue为数据值</p>
<p>getAttribute(strAttrib)</p>
<p>取得一个值,strAttrib为名称，返回数据值 </p>
<p>常规用法：</p>
<p>一：<body>内定义</p>
<p><span id=sd style="behavior:url(#default#userData)"></span></p>
<p>二：用sd.load(&#8220;AStringYouLike&#8221;)来读取一批数据</p>
<p>三：用sd.getAttribute(&#8220;DataName&#8221;)来取得一个数据值</p>
<p>四：用sd.setAttribute(&#8220;DataName&#8221;,&#8221;Value&#8221;)来设置一个数据值</p>
<p>五：用sd.save(&#8220;AStringYouLike&#8221;)来保存setAttribute的设置 </p>
<p>strKey=&#8221;AStringYouLike&#8221;;<br />
strEntry=&#8221;taValue&#8221;;<br />
function load()<br />
{<br />
sd.load(strKey);<br />
ta.value=sd.getAttribute(strEntry);<br />
}<br />
window.attachEvent(&#8220;onload&#8221;,load);<br />
function save()<br />
{<br />
sd.setAttribute(strEntry,ta.value);<br />
sd.save(strKey);<br />
}<br />
strKey=&#8221;SaveYourLoginTime&#8221;;<br />
strEntry=&#8221;strTime&#8221;;<br />
function load()<br />
{<br />
sd.load(strKey);<br />
time=sd.getAttribute(strEntry);<br />
if(!time)msgTime.innerHTML=&#8221;你没有来过这个网站&#8221;;<br />
else msgTime.innerHTML=&#8221;你上次打开这个网站的时间是:&#8221;+time;<br />
}<br />
window.attachEvent(&#8220;onload&#8221;,load);<br />
function save()<br />
{<br />
now=new Date();<br />
time=now.getYear()+&#8221;年&#8221;;<br />
time+=now.getMonth()+&#8221;月&#8221;;<br />
time+=now.getDay()+&#8221;日&#8221;;<br />
time+=now.getHours()+&#8221;时&#8221;;<br />
time+=now.getMinutes()+&#8221;分&#8221;;<br />
time+=now.getSeconds()+&#8221;秒&#8221;;<br />
sd.setAttribute(strEntry,time);<br />
sd.save(strKey);<br />
}<br />
window.attachEvent(&#8220;onunload&#8221;,save);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/01/29/behavirodefaultuserdata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP的多进程互斥和锁定机制讨论</title>
		<link>http://www.w3cstudio.com/2012/01/12/php%e7%9a%84%e5%a4%9a%e8%bf%9b%e7%a8%8b%e4%ba%92%e6%96%a5%e5%92%8c%e9%94%81%e5%ae%9a%e6%9c%ba%e5%88%b6%e8%ae%a8%e8%ae%ba/</link>
		<comments>http://www.w3cstudio.com/2012/01/12/php%e7%9a%84%e5%a4%9a%e8%bf%9b%e7%a8%8b%e4%ba%92%e6%96%a5%e5%92%8c%e9%94%81%e5%ae%9a%e6%9c%ba%e5%88%b6%e8%ae%a8%e8%ae%ba/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 07:47:07 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=491</guid>
		<description><![CDATA[据说目前PHP并没有完善的线程支持，甚至部署到基于线程模型的httpd服务器都会产生一些问题，但即使是多进程模型下的PHP，也难免出现多进程共同访问同一资源的情况。比如整个程序共享的数据缓存，或者因为资源受限而必须对特定处理过程进行排队，以及针对每个用户生成唯一的某种标识的情形。PHP语言自身没有提供进程互斥和锁定机制，因而使得在这些情况下的编程遇到了困难，目前了解到的可选的办法有以下这些： 利用MySQL的锁定机制来实现互斥。缺点是增大了数据库服务器的连接负担，并且使得程序依赖于数据库服务才能正常工作。 利用文件锁机制。也就是利用flock函数通过文件实现锁定和互斥机制，来模拟通用编程模型下的锁定原语的工作方式。这种方式在以前以纯文本文件为存储引擎的时代成为保护数据完整性的必备元素，现在在使用文本文件作为缓存媒介的场合也相当常见。PmWiki应该也是使用了这个机制来对多人同时编辑一个页面的情形进行提醒。不过文件锁机制多少会调用到宿主操作系统上的文件锁特性，因此在使用时一定要检查服务器操作系统是否为PHP环境提供了完善可靠的文件锁机制。 利用共享内存空间计数。PHP可以利用shmop_open函数开辟一块内存空间，在服务进程之间共享数据，为了保证共享数据的互斥安全访问，可以使用sem_get、sem_acquire和sem_release这组函数实现共享计数锁定机制。这种办法在后台实际是调用了系统的ipc服务来实现。]]></description>
			<content:encoded><![CDATA[<p>据说目前PHP并没有完善的线程支持，甚至部署到基于线程模型的httpd服务器都会产生一些问题，但即使是多进程模型下的PHP，也难免出现多进程共同访问同一资源的情况。比如整个程序共享的数据缓存，或者因为资源受限而必须对特定处理过程进行排队，以及针对每个用户生成唯一的某种标识的情形。PHP语言自身没有提供进程互斥和锁定机制，因而使得在这些情况下的编程遇到了困难，目前了解到的可选的办法有以下这些：</p>
<p>    利用MySQL的锁定机制来实现互斥。缺点是增大了数据库服务器的连接负担，并且使得程序依赖于数据库服务才能正常工作。<br />
    利用文件锁机制。也就是利用flock函数通过文件实现锁定和互斥机制，来模拟通用编程模型下的锁定原语的工作方式。这种方式在以前以纯文本文件为存储引擎的时代成为保护数据完整性的必备元素，现在在使用文本文件作为缓存媒介的场合也相当常见。PmWiki应该也是使用了这个机制来对多人同时编辑一个页面的情形进行提醒。不过文件锁机制多少会调用到宿主操作系统上的文件锁特性，因此在使用时一定要检查服务器操作系统是否为PHP环境提供了完善可靠的文件锁机制。<br />
    利用共享内存空间计数。PHP可以利用shmop_open函数开辟一块内存空间，在服务进程之间共享数据，为了保证共享数据的互斥安全访问，可以使用sem_get、sem_acquire和sem_release这组函数实现共享计数锁定机制。这种办法在后台实际是调用了系统的ipc服务来实现。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/01/12/php%e7%9a%84%e5%a4%9a%e8%bf%9b%e7%a8%8b%e4%ba%92%e6%96%a5%e5%92%8c%e9%94%81%e5%ae%9a%e6%9c%ba%e5%88%b6%e8%ae%a8%e8%ae%ba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php Safe_mode影响参数</title>
		<link>http://www.w3cstudio.com/2012/01/11/php-safe_mode/</link>
		<comments>http://www.w3cstudio.com/2012/01/11/php-safe_mode/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 07:50:10 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=489</guid>
		<description><![CDATA[函数名 限制 dbmopen() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 dbase_open() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 filepro() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 filepro_rowcount() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 filepro_retrieve() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 ifx_* sql_safe_mode 限制, (!= safe mode) ingres_* sql_safe_mode 限制, (!= safe mode) mysql_* sql_safe_mode 限制, (!= safe mode) pg_loimport() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 posix_mkfifo() 检查被操作的目录是否与正在执行的脚本有相同的 &#8230; <a href="http://www.w3cstudio.com/2012/01/11/php-safe_mode/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>函数名 限制</p>
<p>dbmopen() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
dbase_open() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。</p>
<p>filepro() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
filepro_rowcount() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
filepro_retrieve() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。</p>
<p>ifx_* sql_safe_mode 限制, (!= safe mode)<br />
ingres_* sql_safe_mode 限制, (!= safe mode)<br />
mysql_* sql_safe_mode 限制, (!= safe mode)<br />
pg_loimport() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
posix_mkfifo() 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。</p>
<p>putenv() 遵循 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文档。<br />
move_uploaded_file() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。</p>
<p>chdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
dl() 本函数在安全模式下被禁用。<br />
backtick operator 本函数在安全模式下被禁用。<br />
shell_exec()（在功能上和 backticks 函数相同） 本函数在安全模式下被禁用。<br />
exec() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。<br />
system() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。<br />
passthru() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。<br />
popen() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。<br />
fopen() 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
mkdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
rmdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
rename() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。</p>
<p>unlink() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
copy() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。 (on source and target )<br />
chgrp() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
chown() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
chmod() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 另外，不能设置 SUID、SGID 和 sticky bits<br />
touch() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。<br />
symlink() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。 （注意：仅测试 target）<br />
link() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。 （注意：仅测试 target）</p>
<p>apache_request_headers() 在安全模式下，以“authorization”（区分大小写）开头的标头将不会被返回。<br />
header() 在安全模式下，如果设置了 WWW-Authenticate，当前脚本的 uid 将被添加到该标头的 realm 部分。<br />
PHP_AUTH 变量 在安全模式下，变量 PHP_AUTH_USER、PHP_AUTH_PW 和 PHP_AUTH_TYPE 在 $_SERVER 中不可用。但无论如何，您仍然可以使用 REMOTE_USER 来获取用户名称（USER）。（注意：仅 PHP 4.3.0 以后有效） </p>
<p>highlight_file(), show_source()  检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。 （注意，仅在 4.2.1 版本后有效）<br />
parse_ini_file()  检查被操作的文件或目录是否与正在执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与正在执行的脚本有相同的 UID（所有者）。 （注意，仅在 4.2.1 版本后有效） </p>
<p>set_time_limit()  在安全模式下不起作用。<br />
max_execution_time  在安全模式下不起作用。<br />
mail()  在安全模式下，第五个参数被屏蔽。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/01/11/php-safe_mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NPAPI简介</title>
		<link>http://www.w3cstudio.com/2012/01/05/npapi%e7%ae%80%e4%bb%8b/</link>
		<comments>http://www.w3cstudio.com/2012/01/05/npapi%e7%ae%80%e4%bb%8b/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 07:53:18 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=487</guid>
		<description><![CDATA[Mozilla Firefox的插件是采用的是NPAPI技术。 NPAPI是Netscape Plugin Application Programming Interface的缩写，不难看出这项技术始创于Netscape（也就是Mozilla的前身），但是目前这项技术不仅限于Mozilla而成为了一个通用的标准。 事实上，除了IE使用微软自己的ActiveX技术以外，其他所有浏览器都采用NPAPI作为插件接口，也就是说只要符合NPAPI接口开发的插件，不但可以在Mozilla Firefox上使用，也可以在google Chrome、Apple Safari、Opera等浏览器上使用，我们常用的Flash播放器 、支付宝安全控件都是用NPAPI技术开发的。这些控件让我们可以使用不同的浏览器来播放flash动画和在线支付。]]></description>
			<content:encoded><![CDATA[<p>Mozilla Firefox的插件是采用的是NPAPI技术。</p>
<p>NPAPI是Netscape Plugin Application Programming Interface的缩写，不难看出这项技术始创于Netscape（也就是Mozilla的前身），但是目前这项技术不仅限于Mozilla而成为了一个通用的标准。</p>
<p>事实上，除了IE使用微软自己的ActiveX技术以外，其他所有浏览器都采用NPAPI作为插件接口，也就是说只要符合NPAPI接口开发的插件，不但可以在Mozilla Firefox上使用，也可以在google Chrome、Apple Safari、Opera等浏览器上使用，我们常用的Flash播放器 、支付宝安全控件都是用NPAPI技术开发的。这些控件让我们可以使用不同的浏览器来播放flash动画和在线支付。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/01/05/npapi%e7%ae%80%e4%bb%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>360安全浏览器应用开发</title>
		<link>http://www.w3cstudio.com/2012/01/05/360browserappdevelopment/</link>
		<comments>http://www.w3cstudio.com/2012/01/05/360browserappdevelopment/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 06:09:01 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=485</guid>
		<description><![CDATA[360浏览器现在主要分为两大部分：安全浏览器（IE）和极速浏览器（CHROME）。 其中安全浏览器的应用开发其实只是使用了浏览器内置的创建POPUP功能，并嵌入设置的网页来完成。 1、首先第一步去360应用开发平台申请WEBAPP的APIKEY 2、之后可以使用360的应用开发本地工具360WEBAPPTOOL，填入申请的KEY，然后选择好相应的设置（这里主要是图片的要求），之后就会生成对应KEY的文件夹，可以将这个文件夹提交了就可以。]]></description>
			<content:encoded><![CDATA[<p>360浏览器现在主要分为两大部分：安全浏览器（IE）和极速浏览器（CHROME）。<br />
其中安全浏览器的应用开发其实只是使用了浏览器内置的创建POPUP功能，并嵌入设置的网页来完成。<br />
1、首先第一步去360应用开发平台申请WEBAPP的APIKEY<br />
2、之后可以使用360的应用开发本地工具360WEBAPPTOOL，填入申请的KEY，然后选择好相应的设置（这里主要是图片的要求），之后就会生成对应KEY的文件夹，可以将这个文件夹提交了就可以。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2012/01/05/360browserappdevelopment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ascii码表</title>
		<link>http://www.w3cstudio.com/2011/12/23/ascii%e7%a0%81%e8%a1%a8/</link>
		<comments>http://www.w3cstudio.com/2011/12/23/ascii%e7%a0%81%e8%a1%a8/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 13:10:51 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=483</guid>
		<description><![CDATA[代码 字符 代码 字符 代码 字符 代码 字符 0   32 [空格] 64 @ 96 ` 1   33 ! 65 A 97 a 2   34 &#8220; 66 B 98 b 3   35 # 67 C 99 c &#8230; <a href="http://www.w3cstudio.com/2011/12/23/ascii%e7%a0%81%e8%a1%a8/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top" bgcolor="#cccccc">
<th width="12%">代码</th>
<th width="11%">字符</th>
<th width="12%">代码</th>
<th width="17%">字符</th>
<th width="12%">代码</th>
<th width="12%">字符</th>
<th width="12%">代码</th>
<th width="12%">字符</th>
</tr>
<tr valign="top">
<td width="12%">0</td>
<td width="11%"> </td>
<td width="12%">32</td>
<td width="17%">[空格]</td>
<td width="12%">64</td>
<td width="12%">@</td>
<td width="12%">96</td>
<td width="12%">`</td>
</tr>
<tr valign="top">
<td width="12%">1</td>
<td width="11%"> </td>
<td width="12%">33</td>
<td width="17%">!</td>
<td width="12%">65</td>
<td width="12%">A</td>
<td width="12%">97</td>
<td width="12%">a</td>
</tr>
<tr valign="top">
<td width="12%">2</td>
<td width="11%"> </td>
<td width="12%">34</td>
<td width="17%">&#8220;</td>
<td width="12%">66</td>
<td width="12%">B</td>
<td width="12%">98</td>
<td width="12%">b</td>
</tr>
<tr valign="top">
<td width="12%">3</td>
<td width="11%"> </td>
<td width="12%">35</td>
<td width="17%">#</td>
<td width="12%">67</td>
<td width="12%">C</td>
<td width="12%">99</td>
<td width="12%">c</td>
</tr>
<tr valign="top">
<td width="12%">4</td>
<td width="11%"> </td>
<td width="12%">36</td>
<td width="17%">$</td>
<td width="12%">68</td>
<td width="12%">D</td>
<td width="12%">100</td>
<td width="12%">d</td>
</tr>
<tr valign="top">
<td width="12%">5</td>
<td width="11%"> </td>
<td width="12%">37</td>
<td width="17%">%</td>
<td width="12%">69</td>
<td width="12%">E</td>
<td width="12%">101</td>
<td width="12%">e</td>
</tr>
<tr valign="top">
<td width="12%">6</td>
<td width="11%"> </td>
<td width="12%">38</td>
<td width="17%">&amp;</td>
<td width="12%">70</td>
<td width="12%">F</td>
<td width="12%">102</td>
<td width="12%">f</td>
</tr>
<tr valign="top">
<td width="12%">7</td>
<td width="11%"> </td>
<td width="12%">39</td>
<td width="17%">&#8216;</td>
<td width="12%">71</td>
<td width="12%">G</td>
<td width="12%">103</td>
<td width="12%">g</td>
</tr>
<tr valign="top">
<td width="12%">8</td>
<td width="11%">**</td>
<td width="12%">40</td>
<td width="17%">(</td>
<td width="12%">72</td>
<td width="12%">H</td>
<td width="12%">104</td>
<td width="12%">h</td>
</tr>
<tr valign="top">
<td width="12%">9</td>
<td width="11%">**</td>
<td width="12%">41</td>
<td width="17%">)</td>
<td width="12%">73</td>
<td width="12%">I</td>
<td width="12%">105</td>
<td width="12%">i</td>
</tr>
<tr valign="top">
<td width="12%">10</td>
<td width="11%">**</td>
<td width="12%">42</td>
<td width="17%">*</td>
<td width="12%">74</td>
<td width="12%">J</td>
<td width="12%">106</td>
<td width="12%">j</td>
</tr>
<tr valign="top">
<td width="12%">11</td>
<td width="11%"> </td>
<td width="12%">43</td>
<td width="17%">+</td>
<td width="12%">75</td>
<td width="12%">K</td>
<td width="12%">107</td>
<td width="12%">k</td>
</tr>
<tr valign="top">
<td width="12%">12</td>
<td width="11%"> </td>
<td width="12%">44</td>
<td width="17%">,</td>
<td width="12%">76</td>
<td width="12%">L</td>
<td width="12%">108</td>
<td width="12%">l</td>
</tr>
<tr valign="top">
<td width="12%">13</td>
<td width="11%">**</td>
<td width="12%">45</td>
<td width="17%">-</td>
<td width="12%">77</td>
<td width="12%">M</td>
<td width="12%">109</td>
<td width="12%">m</td>
</tr>
<tr valign="top">
<td width="12%">14</td>
<td width="11%"> </td>
<td width="12%">46</td>
<td width="17%">.</td>
<td width="12%">78</td>
<td width="12%">N</td>
<td width="12%">110</td>
<td width="12%">n</td>
</tr>
<tr valign="top">
<td width="12%">15</td>
<td width="11%"></td>
<td width="12%">47</td>
<td width="17%">/</td>
<td width="12%">79</td>
<td width="12%">O</td>
<td width="12%">111</td>
<td width="12%">o</td>
</tr>
<tr valign="top">
<td width="12%">16</td>
<td width="11%"></td>
<td width="12%">48</td>
<td width="17%">0</td>
<td width="12%">80</td>
<td width="12%">P</td>
<td width="12%">112</td>
<td width="12%">p</td>
</tr>
<tr valign="top">
<td width="12%">17</td>
<td width="11%"></td>
<td width="12%">49</td>
<td width="17%">1</td>
<td width="12%">81</td>
<td width="12%">Q</td>
<td width="12%">113</td>
<td width="12%">q</td>
</tr>
<tr valign="top">
<td width="12%">18</td>
<td width="11%"></td>
<td width="12%">50</td>
<td width="17%">2</td>
<td width="12%">82</td>
<td width="12%">R</td>
<td width="12%">114</td>
<td width="12%">r</td>
</tr>
<tr valign="top">
<td width="12%">19</td>
<td width="11%"></td>
<td width="12%">51</td>
<td width="17%">3</td>
<td width="12%">83</td>
<td width="12%">S</td>
<td width="12%">115</td>
<td width="12%">s</td>
</tr>
<tr valign="top">
<td width="12%">20</td>
<td width="11%"></td>
<td width="12%">52</td>
<td width="17%">4</td>
<td width="12%">84</td>
<td width="12%">T</td>
<td width="12%">116</td>
<td width="12%">t</td>
</tr>
<tr valign="top">
<td width="12%">21</td>
<td width="11%"></td>
<td width="12%">53</td>
<td width="17%">5</td>
<td width="12%">85</td>
<td width="12%">U</td>
<td width="12%">117</td>
<td width="12%">u</td>
</tr>
<tr valign="top">
<td width="12%">22</td>
<td width="11%"></td>
<td width="12%">54</td>
<td width="17%">6</td>
<td width="12%">86</td>
<td width="12%">V</td>
<td width="12%">118</td>
<td width="12%">v</td>
</tr>
<tr valign="top">
<td width="12%">23</td>
<td width="11%"></td>
<td width="12%">55</td>
<td width="17%">7</td>
<td width="12%">87</td>
<td width="12%">W</td>
<td width="12%">119</td>
<td width="12%">w</td>
</tr>
<tr valign="top">
<td width="12%">24</td>
<td width="11%"></td>
<td width="12%">56</td>
<td width="17%">8</td>
<td width="12%">88</td>
<td width="12%">X</td>
<td width="12%">120</td>
<td width="12%">x</td>
</tr>
<tr valign="top">
<td width="12%">25</td>
<td width="11%"></td>
<td width="12%">57</td>
<td width="17%">9</td>
<td width="12%">89</td>
<td width="12%">Y</td>
<td width="12%">121</td>
<td width="12%">y</td>
</tr>
<tr valign="top">
<td width="12%">26</td>
<td width="11%"></td>
<td width="12%">58</td>
<td width="17%">:</td>
<td width="12%">90</td>
<td width="12%">Z</td>
<td width="12%">122</td>
<td width="12%">z</td>
</tr>
<tr valign="top">
<td width="12%">27</td>
<td width="11%"></td>
<td width="12%">59</td>
<td width="17%">;</td>
<td width="12%">91</td>
<td width="12%">[</td>
<td width="12%">123</td>
<td width="12%">{</td>
</tr>
<tr valign="top">
<td width="12%">28</td>
<td width="11%"></td>
<td width="12%">60</td>
<td width="17%">&lt;</td>
<td width="12%">92</td>
<td width="12%">\</td>
<td width="12%">124</td>
<td width="12%">|</td>
</tr>
<tr valign="top">
<td width="12%">29</td>
<td width="11%"></td>
<td width="12%">61</td>
<td width="17%">=</td>
<td width="12%">93</td>
<td width="12%">]</td>
<td width="12%">125</td>
<td width="12%">}</td>
</tr>
<tr valign="top">
<td width="12%">30</td>
<td width="11%">-</td>
<td width="12%">62</td>
<td width="17%">&gt;</td>
<td width="12%">94</td>
<td width="12%">^</td>
<td width="12%">126</td>
<td width="12%">~</td>
</tr>
<tr valign="top">
<td width="12%">31</td>
<td width="11%"> </td>
<td width="12%">63</td>
<td width="17%">?</td>
<td width="12%">95</td>
<td width="12%">_</td>
<td width="12%">127</td>
<td width="12%"></td>
</tr>
</tbody>
</table>
<p>下表列出了字符集中的 128 &#8211; 255。</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top" bgcolor="#cccccc">
<th width="12%">代码</th>
<th width="12%">字符</th>
<th width="11%">代码</th>
<th width="17%">字符</th>
<th width="12%">代码</th>
<th width="12%">字符</th>
<th width="11%">代码</th>
<th width="13%">字符</th>
</tr>
<tr valign="top">
<td width="12%">128</td>
<td width="12%">€</td>
<td width="11%">160</td>
<td width="17%">[空格]</td>
<td width="12%">192</td>
<td width="12%">À</td>
<td width="11%">224</td>
<td width="13%">à</td>
</tr>
<tr valign="top">
<td width="12%">129</td>
<td width="12%"></td>
<td width="11%">161</td>
<td width="17%">¡</td>
<td width="12%">193</td>
<td width="12%">Á</td>
<td width="11%">225</td>
<td width="13%">á</td>
</tr>
<tr valign="top">
<td width="12%">130</td>
<td width="12%">‚</td>
<td width="11%">162</td>
<td width="17%">¢</td>
<td width="12%">194</td>
<td width="12%">Â</td>
<td width="11%">226</td>
<td width="13%">â</td>
</tr>
<tr valign="top">
<td width="12%">131</td>
<td width="12%">ƒ</td>
<td width="11%">163</td>
<td width="17%">£</td>
<td width="12%">195</td>
<td width="12%">Ã</td>
<td width="11%">227</td>
<td width="13%">ã</td>
</tr>
<tr valign="top">
<td width="12%">132</td>
<td width="12%">„</td>
<td width="11%">164</td>
<td width="17%">¤</td>
<td width="12%">196</td>
<td width="12%">Ä</td>
<td width="11%">228</td>
<td width="13%">ä</td>
</tr>
<tr valign="top">
<td width="12%">133</td>
<td width="12%">…</td>
<td width="11%">165</td>
<td width="17%">¥</td>
<td width="12%">197</td>
<td width="12%">Å</td>
<td width="11%">229</td>
<td width="13%">å</td>
</tr>
<tr valign="top">
<td width="12%">134</td>
<td width="12%">†</td>
<td width="11%">166</td>
<td width="17%">¦</td>
<td width="12%">198</td>
<td width="12%">Æ</td>
<td width="11%">230</td>
<td width="13%">æ</td>
</tr>
<tr valign="top">
<td width="12%">135</td>
<td width="12%">‡</td>
<td width="11%">167</td>
<td width="17%">§</td>
<td width="12%">199</td>
<td width="12%">Ç</td>
<td width="11%">231</td>
<td width="13%">ç</td>
</tr>
<tr valign="top">
<td width="12%">136</td>
<td width="12%">ˆ</td>
<td width="11%">168</td>
<td width="17%">¨</td>
<td width="12%">200</td>
<td width="12%">È</td>
<td width="11%">231</td>
<td width="13%">ç</td>
</tr>
<tr valign="top">
<td width="12%">137</td>
<td width="12%">‰</td>
<td width="11%">169</td>
<td width="17%">©</td>
<td width="12%">201</td>
<td width="12%">É</td>
<td width="11%">232</td>
<td width="13%">è</td>
</tr>
<tr valign="top">
<td width="12%">138</td>
<td width="12%">Š</td>
<td width="11%">170</td>
<td width="17%">ª</td>
<td width="12%">202</td>
<td width="12%">Ê</td>
<td width="11%">233</td>
<td width="13%">é</td>
</tr>
<tr valign="top">
<td width="12%">139</td>
<td width="12%">‹</td>
<td width="11%">171</td>
<td width="17%">«</td>
<td width="12%">203</td>
<td width="12%">Ë</td>
<td width="11%">234</td>
<td width="13%">ê</td>
</tr>
<tr valign="top">
<td width="12%">140</td>
<td width="12%">Œ</td>
<td width="11%">172</td>
<td width="17%">¬</td>
<td width="12%">204</td>
<td width="12%">Ì</td>
<td width="11%">235</td>
<td width="13%">ë</td>
</tr>
<tr valign="top">
<td width="12%">141</td>
<td width="12%"></td>
<td width="11%">173</td>
<td width="17%">­</td>
<td width="12%">205</td>
<td width="12%">Í</td>
<td width="11%">236</td>
<td width="13%">ì</td>
</tr>
<tr valign="top">
<td width="12%">142</td>
<td width="12%">Ž</td>
<td width="11%">174</td>
<td width="17%">®</td>
<td width="12%">206</td>
<td width="12%">Î</td>
<td width="11%">237</td>
<td width="13%">í</td>
</tr>
<tr valign="top">
<td width="12%">143</td>
<td width="12%"></td>
<td width="11%">175</td>
<td width="17%">¯</td>
<td width="12%">207</td>
<td width="12%">Ï</td>
<td width="11%">238</td>
<td width="13%">î</td>
</tr>
<tr valign="top">
<td width="12%">144</td>
<td width="12%"></td>
<td width="11%">176</td>
<td width="17%">°</td>
<td width="12%">208</td>
<td width="12%">Ð</td>
<td width="11%">239</td>
<td width="13%">ï</td>
</tr>
<tr valign="top">
<td width="12%">145</td>
<td width="12%">‘</td>
<td width="11%">177</td>
<td width="17%">±</td>
<td width="12%">209</td>
<td width="12%">Ñ</td>
<td width="11%">240</td>
<td width="13%">ð</td>
</tr>
<tr valign="top">
<td width="12%">146</td>
<td width="12%">’</td>
<td width="11%">178</td>
<td width="17%">²</td>
<td width="12%">210</td>
<td width="12%">Ò</td>
<td width="11%">241</td>
<td width="13%">ñ</td>
</tr>
<tr valign="top">
<td width="12%">147</td>
<td width="12%">“</td>
<td width="11%">179</td>
<td width="17%">³</td>
<td width="12%">211</td>
<td width="12%">Ó</td>
<td width="11%">242</td>
<td width="13%">ò</td>
</tr>
<tr valign="top">
<td width="12%">148</td>
<td width="12%">”</td>
<td width="11%">180</td>
<td width="17%">´</td>
<td width="12%">212</td>
<td width="12%">Ô</td>
<td width="11%">243</td>
<td width="13%">ó</td>
</tr>
<tr valign="top">
<td width="12%">149</td>
<td width="12%">•</td>
<td width="11%">181</td>
<td width="17%">µ</td>
<td width="12%">213</td>
<td width="12%">Õ</td>
<td width="11%">244</td>
<td width="13%">ô</td>
</tr>
<tr valign="top">
<td width="12%">150</td>
<td width="12%">–</td>
<td width="11%">182</td>
<td width="17%">¶</td>
<td width="12%">214</td>
<td width="12%">Ö</td>
<td width="11%">245</td>
<td width="13%">õ</td>
</tr>
<tr valign="top">
<td width="12%">151</td>
<td width="12%">—</td>
<td width="11%">183</td>
<td width="17%">·</td>
<td width="12%">215</td>
<td width="12%">×</td>
<td width="11%">246</td>
<td width="13%">ö</td>
</tr>
<tr valign="top">
<td width="12%">152</td>
<td width="12%">˜</td>
<td width="11%">184</td>
<td width="17%">¸</td>
<td width="12%">216</td>
<td width="12%">Ø</td>
<td width="11%">247</td>
<td width="13%">÷</td>
</tr>
<tr valign="top">
<td width="12%">153</td>
<td width="12%">™</td>
<td width="11%">185</td>
<td width="17%">¹</td>
<td width="12%">217</td>
<td width="12%">Ù</td>
<td width="11%">248</td>
<td width="13%">ø</td>
</tr>
<tr valign="top">
<td width="12%">154</td>
<td width="12%">š</td>
<td width="11%">186</td>
<td width="17%">º</td>
<td width="12%">218</td>
<td width="12%">Ú</td>
<td width="11%">249</td>
<td width="13%">ù</td>
</tr>
<tr valign="top">
<td width="12%">155</td>
<td width="12%">›</td>
<td width="11%">187</td>
<td width="17%">»</td>
<td width="12%">219</td>
<td width="12%">Û</td>
<td width="11%">250</td>
<td width="13%">ú</td>
</tr>
<tr valign="top">
<td width="12%">156</td>
<td width="12%">œ</td>
<td width="11%">188</td>
<td width="17%">¼</td>
<td width="12%">220</td>
<td width="12%">Ü</td>
<td width="11%">251</td>
<td width="13%">û</td>
</tr>
<tr valign="top">
<td width="12%">157</td>
<td width="12%"></td>
<td width="11%">189</td>
<td width="17%">½</td>
<td width="12%">221</td>
<td width="12%">Ý</td>
<td width="11%">252</td>
<td width="13%">ü</td>
</tr>
<tr valign="top">
<td width="12%">158</td>
<td width="12%">ž</td>
<td width="11%">190</td>
<td width="17%">¾</td>
<td width="12%">222</td>
<td width="12%">Þ</td>
<td width="11%">253</td>
<td width="13%">ý</td>
</tr>
<tr valign="top">
<td width="12%">159</td>
<td width="12%">Ÿ</td>
<td width="11%">191</td>
<td width="17%">¿</td>
<td width="12%">223</td>
<td width="12%">ß</td>
<td width="11%">254</td>
<td width="13%">þ</td>
</tr>
</tbody>
</table>
<p> </p>
<p>** 数值 8、9、10 和 13 可以分别转换为退格符、制表符、换行符和回车符。这些字符都没有图形表示，但是对于不同的应用程序，这些字符可能会影响文本的显示效果。</p>
<p>&#8220;空&#8221; 表示在当前平台上不支持的字符。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2011/12/23/ascii%e7%a0%81%e8%a1%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vc++入门第一篇，如何使用C++生成windows窗口程序</title>
		<link>http://www.w3cstudio.com/2011/12/23/vcwindowstutorial/</link>
		<comments>http://www.w3cstudio.com/2011/12/23/vcwindowstutorial/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 10:12:56 +0000</pubDate>
		<dc:creator>jason.tangjs</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.w3cstudio.com/?p=479</guid>
		<description><![CDATA[1、首先打开VS2010，新建项目，选择VC++，选择WIN32项目，注意勾选空项目，点击完成即可 2、在源文件文件夹下新建一个CPP文件，拷入一下代码： // GT_HelloWorldWin32.cpp // compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c #include &#60;windows.h&#62; #include &#60;stdlib.h&#62; #include &#60;string.h&#62; #include &#60;tchar.h&#62; // Global variables // The main window class name. static TCHAR szWindowClass[] = _T(&#8220;win32app&#8221;); // The string that appears in &#8230; <a href="http://www.w3cstudio.com/2011/12/23/vcwindowstutorial/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>1、首先打开VS2010，新建项目，选择VC++，选择WIN32项目，注意勾选空项目，点击完成即可</p>
<p>2、在源文件文件夹下新建一个CPP文件，拷入一下代码：</p>
<p>// GT_HelloWorldWin32.cpp<br />
// compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c</p>
<p>#include &lt;windows.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;string.h&gt;<br />
#include &lt;tchar.h&gt;</p>
<p>// Global variables</p>
<p>// The main window class name.<br />
static TCHAR szWindowClass[] = _T(&#8220;win32app&#8221;);</p>
<p>// The string that appears in the application&#8217;s title bar.<br />
static TCHAR szTitle[] = _T(&#8220;Win32 Guided Tour Application&#8221;);</p>
<p>HINSTANCE hInst;</p>
<p>// Forward declarations of functions included in this code module:<br />
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);</p>
<p>int WINAPI WinMain(HINSTANCE hInstance,<br />
HINSTANCE hPrevInstance,<br />
LPSTR lpCmdLine,<br />
int nCmdShow)<br />
{<br />
WNDCLASSEX wcex;</p>
<p>wcex.cbSize = sizeof(WNDCLASSEX);<br />
wcex.style          = CS_HREDRAW | CS_VREDRAW;<br />
wcex.lpfnWndProc    = WndProc;<br />
wcex.cbClsExtra     = 0;<br />
wcex.cbWndExtra     = 0;<br />
wcex.hInstance      = hInstance;<br />
wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));<br />
wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);<br />
wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);<br />
wcex.lpszMenuName   = NULL;<br />
wcex.lpszClassName  = szWindowClass;<br />
wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));</p>
<p>if (!RegisterClassEx(&amp;wcex))<br />
{<br />
MessageBox(NULL,<br />
_T(&#8220;Call to RegisterClassEx failed!&#8221;),<br />
_T(&#8220;Win32 Guided Tour&#8221;),<br />
NULL);</p>
<p>return 1;<br />
}</p>
<p>hInst = hInstance; // Store instance handle in our global variable</p>
<p>// The parameters to CreateWindow explained:<br />
// szWindowClass: the name of the application<br />
// szTitle: the text that appears in the title bar<br />
// WS_OVERLAPPEDWINDOW: the type of window to create<br />
// CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)<br />
// 500, 100: initial size (width, length)<br />
// NULL: the parent of this window<br />
// NULL: this application does not have a menu bar<br />
// hInstance: the first parameter from WinMain<br />
// NULL: not used in this application<br />
HWND hWnd = CreateWindow(<br />
szWindowClass,<br />
szTitle,<br />
WS_OVERLAPPEDWINDOW,<br />
CW_USEDEFAULT, CW_USEDEFAULT,<br />
500, 100,<br />
NULL,<br />
NULL,<br />
hInstance,<br />
NULL<br />
);</p>
<p>if (!hWnd)<br />
{<br />
MessageBox(NULL,<br />
_T(&#8220;Call to CreateWindow failed!&#8221;),<br />
_T(&#8220;Win32 Guided Tour&#8221;),<br />
NULL);</p>
<p>return 1;<br />
}</p>
<p>// The parameters to ShowWindow explained:<br />
// hWnd: the value returned from CreateWindow<br />
// nCmdShow: the fourth parameter from WinMain<br />
ShowWindow(hWnd,<br />
nCmdShow);<br />
UpdateWindow(hWnd);</p>
<p>// Main message loop:<br />
MSG msg;<br />
while (GetMessage(&amp;msg, NULL, 0, 0))<br />
{<br />
TranslateMessage(&amp;msg);<br />
DispatchMessage(&amp;msg);<br />
}</p>
<p>return (int) msg.wParam;<br />
}</p>
<p>//<br />
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)<br />
//<br />
//  PURPOSE:  Processes messages for the main window.<br />
//<br />
//  WM_PAINT    &#8211; Paint the main window<br />
//  WM_DESTROY  &#8211; post a quit message and return<br />
//<br />
//<br />
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)<br />
{<br />
PAINTSTRUCT ps;<br />
HDC hdc;<br />
TCHAR greeting[] = _T(&#8220;Hello, World!&#8221;);</p>
<p>switch (message)<br />
{<br />
case WM_PAINT:<br />
hdc = BeginPaint(hWnd, &amp;ps);</p>
<p>// Here your application is laid out.<br />
// For this introduction, we just print out &#8220;Hello, World!&#8221;<br />
// in the top left corner.<br />
TextOut(hdc,<br />
5, 5,<br />
greeting, _tcslen(greeting));<br />
// End application-specific layout section.</p>
<p>EndPaint(hWnd, &amp;ps);<br />
break;<br />
case WM_DESTROY:<br />
PostQuitMessage(0);<br />
break;<br />
default:<br />
return DefWindowProc(hWnd, message, wParam, lParam);<br />
break;<br />
}</p>
<p>return 0;<br />
}</p>
<p>3、程序代码结构</p>
<p>（1）首先定义winmain函数，作为进程的入口函数</p>
<p>（2）定义窗口类wcex</p>
<p>(3) 注册窗口类</p>
<p>（4）创建窗口，并生成窗口句柄</p>
<p>（5）显示窗口</p>
<p>（6）循环处理窗口接受消息，获取消息，解析消息，分配消息，其中消息处理是由之前构造的窗口类中的lpfnWndProc属性决定。在这里就是WndProc函数，WndProc根据传来消息的编号，进行不同处理。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.w3cstudio.com/2011/12/23/vcwindowstutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

