<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿权的书房]]></title> 
<link>http://www.aslibra.com/blog/index.php</link> 
<description><![CDATA[技术经验分享，资料收集，偶尔晾几张相片，感言生活]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿权的书房]]></copyright>
<item>
<link>http://www.aslibra.com/blog/read.php/1559.htm</link>
<title><![CDATA[正则表达式需要转义的特殊字符]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[技术分享]]></category>
<pubDate>Tue, 31 Aug 2010 06:28:36 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/read.php/1559.htm</guid> 
<description>
<![CDATA[ 
	注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性，那么 $ 还匹配 &#92;n 或 &#92;r 前面的位置。若要匹配 $ 字符本身，请使用 &#92;$。<br/><br/>( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符，请使用 &#92;( 和 &#92;)。<br/><br/>* 零次或多次匹配前面的字符或子表达式。若要匹配 * 字符，请使用 &#92;*。<br/><br/>+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符，请使用 &#92;+。<br/><br/>. 匹配除换行符 &#92;n 之外的任何单个字符。若要匹配 .，请使用 &#92;。 [ ] 标记中括号表达式的开始。若要匹配这些字符，请使用 &#92;[ 和 &#92;]。<br/><br/>? 零次或一次匹配前面的字符或子表达式，或指示“非贪心”限定符。若要匹配 ? 字符，请使用 &#92;?。<br/><br/>&#92; 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如，字符 n 匹配字符 n。&#92;n 匹配换行符。序列 &#92;&#92; 匹配 &#92;，序列 &#92;( 匹配 (。<br/><br/>/ 表示文本正则表达式的开始或结束。若要匹配 / 字符，请使用 &#92;/。<br/><br/>^ 匹配输入字符串开始处的位置，但在中括号表达式中使用的情况除外，在那种情况下它对字符集求反。若要匹配 ^ 字符本身，请使用 &#92;^。<br/><br/>&#123; &#125; 标记限定符表达式的开始。若要匹配这些字符，请使用 &#92;&#123; 和 &#92;&#125;。<br/><br/>&#124; 指出在两个项之间进行选择。若要匹配 &#124; ，请使用 &#92;&#124;
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/website_move_nots.php</link>
<title><![CDATA[网站搬迁小笔记]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[技术分享]]></category>
<pubDate>Wed, 24 Mar 2010 13:57:27 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/website_move_nots.php</guid> 
<description>
<![CDATA[ 
	这几天倒腾机器了，搬弄网站到另外的机器，小笔记一下。<br/><br/><strong>弄清楚你现在开放的服务</strong><br/><br/><div class="code">netstat -nlp</div><br/>这可以看到现在在跑的服务，为了确保安全，一个一个的停，并且确保服务都妥善处理好。<br/><br/><strong>弄清楚现在都有哪些网络数据</strong><br/><br/><div class="code">iftop -i eth1</div><br/>iftop工具很好用，可以看到现在有没有流量，在访问什么端口，在和什么ip交流什么样的数据，是web数据还是memcache请求还是ftp？你都可以清楚的知道。比如转移服务后，也许你会发现还有流量，可能是某个地方参数配置写的IP连接，比较麻烦，但能发现就是好事，解决它。<br/>最后发现没有流量了，那就一定程度上表明转移干净了。<br/><br/><strong>检查忘记的某些字符</strong><br/><br/><div class="code">find www.aslibra.com -name &quot;*.php&quot;&#124;xargs grep 192.168.1.90</div><br/>比如上面是查找所有的php文件，哪些是有这个ip的，比如连接数据库用ip了，那就最好是改成hostname形式，统一在/etc/hosts文件里定义，方便转移。<br/><br/><strong>修改文件所有者</strong><br/><br/><div class="code">find www.aslibra.com/ -user 502 &#124; xargs chown hqlulu</div><br/>文件到了另外一个服务器，用户可能没有，可以批量查找相应的用户，修改为另外一个用户所有<br/><br/><strong>记录日志检查web剩余流量</strong><br/><br/>平时没有给web服务器添加日志，那这时候就需要了，可以知道现在还有什么人访问什么页面，从哪里来的。那可能就是域名没有修改，也可能是被忽略的域名，可以发现一些遗忘的问题。<br/><br/><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/iftop/" rel="tag">iftop</a> , <a href="http://www.aslibra.com/blog/go.php/tags/netstat/" rel="tag">netstat</a> , <a href="http://www.aslibra.com/blog/go.php/tags/find/" rel="tag">find</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/read.php/1468.htm</link>
<title><![CDATA[开心网的评论方式]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[技术分享]]></category>
<pubDate>Sun, 21 Mar 2010 12:10:01 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/read.php/1468.htm</guid> 
<description>
<![CDATA[ 
	<a href="http://www.aslibra.com/blog/attachment.php?fid=155" target="_blank"><img src="http://www.aslibra.com/blog/attachment.php?fid=155" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>这些天，发现开心网上对转帖内容的评论方式改成了上面的形式。<br/>好久之前，我构想的评论也正是类似这样的，评论就类似投票，找到共同的类似的评论，自己也发表一下就好，如果实在没有你喜欢的，那自己再表述自己的，很人性化。<br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/%25E6%258A%2595%25E7%25A5%25A8/" rel="tag">投票</a> , <a href="http://www.aslibra.com/blog/go.php/tags/%25E8%25AF%2584%25E8%25AE%25BA/" rel="tag">评论</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/http_header_detail.php</link>
<title><![CDATA[转：HTTP协议header头域]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[技术分享]]></category>
<pubDate>Thu, 18 Mar 2010 13:58:27 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/http_header_detail.php</guid> 
<description>
<![CDATA[ 
	引言 >><br/>今天碰到断点续传的问题，同事需要支持断点续传，发送的请求头为：<br/><div class="code">Connection: Keep-Alive<br/>Proxy-Connection: Keep-Alive<br/>Range: 1742-2073</div><br/>求证了一下，发现应该是 Range: bytes=1742-2073<br/>我还以为是nginx或者lighttpd的问题，原来不是的。curl可以测试验证的。<br/><br/>以下为http协议的header的参考内容：<br/><br/>　　HTTP（HyperTextTransferProtocol）是超文本传输协议的缩写，它用于传送WWW方式的数据，关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求，请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应，相应的内容包括消息协议的版本，成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。<br/>　　通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行，一个或者多个头域，一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头，请求头，响应头和实体头四个部分。每个头域由一个域名，冒号（:）和域值三部分组成。域名是大小写无关的，域值前可以添加任何数量的空格符，头域可以被扩展为多行，在每行开始处，使用至少一个空格或制表符。<br/><br/>　　<strong>通用头域</strong><br/>　　通用头域包含请求和响应消息都支持的头域，通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展，如果存在不支持的通用头域，一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。<br/><br/>　　<strong>Cache-Control头域</strong><br/>　　Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached，响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下：<br/>　　Public指示响应可被任何缓存区缓存。<br/>　　Private指示对于单个用户的整个或部分响应消息，不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息，此响应消息对于其他用户的请求无效。<br/>　　no-cache指示请求或响应消息不能缓存<br/>　　no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。<br/>　　max-age指示客户机可以接收生存期不大于指定时间（以秒为单位）的响应。<br/>　　min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。<br/>　　max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值，那么客户机可以接收超出超时期指定值之内的响应消息。<br/><br/>　　<strong>Date头域</strong><br/>　　Date头域表示消息发送的时间，时间的描述格式由rfc822定义。例如，Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时，换算成本地时间，需要知道用户所在的时区。<br/><br/>　　<strong>Pragma头域</strong><br/>　　Pragma头域用来包含实现特定的指令，最常用的是Pragma:no-cache。在HTTP/1.1协议中，它的含义和Cache-Control:no-cache相同。<br/><br/>　　<strong>请求消息</strong><br/>　　请求消息的第一行为下面的格式：<br/>　　MethodSPRequest-URISPHTTP-VersionCRLFMethod表示对于Request-URI完成的方法，这个字段是大小写敏感的，包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持，其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息，只是可以在响应时，不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息，可以用于提交表单，向新闻组、BBS、邮件群组和数据库发送消息。<br/>　　SP表示空格。Request-URI遵循URI格式，在此字段为星号（*）时，说明请求并不用于某个特定的资源地址，而是用于服务器本身。HTTP-Version表示支持的HTTP版本，例如为HTTP/1.1。CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持，如果存在不支持的请求头域，一般将会作为实体头域处理。<br/><br/>　　典型的请求消息：<br/>　　GEThttp://class/download.microtool.de:80/somedata.exe<br/>　　Host:download.microtool.de<br/>　　Accept:*/*<br/>　　Pragma:no-cache<br/>　　Cache-Control:no-cache<br/>　　Referer:http://class/download.microtool.de/<br/>　　User-Agent:Mozilla/4.04[en](Win95;I;Nav)<br/>　　Range:bytes=554554-<br/>　　上例第一行表示HTTP客户端（可能是浏览器、下载程序）通过GET方法获得指定URL下的文件。棕色的部分表示请求头域的信息，绿色的部分表示通用头部分。<br/><br/>　　<strong>Host头域</strong><br/>　　Host头域指定请求资源的Intenet主机和端口号，必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域，否则系统会以400状态码返回。<br/><br/>　　<strong>Referer头域</strong><br/>　　Referer头域允许客户端指定请求uri的源资源地址，这可以允许服务器生成回退链表，可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址，Referer不能被发送。如果指定的是部分uri地址，则此地址应该是一个相对地址。<br/><br/>　　<strong>Range头域</strong><br/>　　Range头域可以请求实体的一个或者多个子范围。例如，<br/>　　表示头500个字节：bytes=0-499<br/>　　表示第二个500字节：bytes=500-999<br/>　　表示最后500个字节：bytes=-500<br/>　　表示500字节以后的范围：bytes=500-<br/>　　第一个和最后一个字节：bytes=0-0,-1<br/>　　同时指定几个范围：bytes=500-600,601-999<br/>　　但是服务器可以忽略此请求头，如果无条件GET包含Range请求头，响应会以状态码206（PartialContent）返回而不是以200（OK）。<br/><br/>　　<strong>User-Agent头域</strong><br/>　　User-Agent头域的内容包含发出请求的用户信息。<br/><br/>　　响应消息<br/>　　响应消息的第一行为下面的格式：<br/>　　HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF<br/>　　HTTP-Version表示支持的HTTP版本，例如为HTTP/1.1。Status-Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别，Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别，后两个数字没有分类的作用。第一个数字可能取5个不同的值：<br/>　　1xx:信息响应类，表示接收到请求并且继续处理<br/>　　2xx:处理成功响应类，表示动作被成功接收、理解和接受<br/>　　3xx:重定向响应类，为了完成指定的动作，必须接受进一步处理<br/>　　4xx:客户端错误，客户请求包含语法错误或者是不能正确执行<br/>　　5xx:服务端错误，服务器不能正确执行一个正确的请求<br/>　　响应头域允许服务器传递不能放在状态行的附加信息，这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持，如果存在不支持的响应头域，一般将会作为实体头域处理。<br/><br/>　　典型的响应消息：<br/>　　HTTP/1.0200OK<br/>　　Date:Mon,31Dec200104:25:57GMT<br/>　　Server:Apache/1.3.14(Unix)<br/>　　Content-type:text/html<br/>　　Last-modified:Tue,17Apr200106:46:28GMT<br/>　　Etag:"a030f020ac7c01:1e9f"<br/>　　Content-length:39725426<br/>　　Content-range:bytes554554-40279979/40279980<br/>　　上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息，绿色的部分表示通用头部分，红色的部分表示实体头域的信息。<br/>　　Location响应头<br/>　　Location响应头用于重定向接收者到一个新URI地址。<br/>　　Server响应头<br/>　　Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释，产品标识一般按照重要性排序。<br/><br/>　　<strong>实体</strong><br/>　　请求消息和响应消息都可以包含实体信息，实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息，实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头，但是这些域可能无法未接受方识别。实体可以是一个经过编码的字节流，它的编码方式由Content-Encoding或Content-Type定义，它的长度由Content-Length或Content-Range定义。<br/>　　Content-Type实体头<br/>　　用于向接收方指示实体的介质类型，指定HEAD方法送到接收方的实体介质类型，或GET方法发送的请求介质类型Content-Range实体头<br/>　　Content-Range实体头<br/>　　用于指定整个实体中的一部分的插入位置，他也指示了整个实体的长度。在服务器向客户返回一个部分响应，它必须描述响应覆盖的范围和整个实体长度。一般格式：<br/>　　Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth<br/>　　例如，传送头500个字节次字段的形式：Content-Range:bytes0-499/1234如果一个http消息包含此节（例如，对范围请求的响应或对一系列范围的重叠请求），Content-Range表示传送的范围，Content-Length表示实际传送的字节数。<br/>　　Last-modified实体头<br/>　　指定服务器上保存内容的最后修订时间。<br/><br/>参考自： http://www.iwms.net/n2030c40.aspx<br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/http/" rel="tag">http</a> , <a href="http://www.aslibra.com/blog/go.php/tags/header/" rel="tag">header</a>
]]>
</description>
</item><item>
<link>http://www.aslibra.com/blog/post/10MinuteMail.php</link>
<title><![CDATA[有创意的“10 Minute Mail”]]></title> 
<author>hqlulu &lt;hqlulu@163.com&gt;</author>
<category><![CDATA[技术分享]]></category>
<pubDate>Tue, 22 Dec 2009 13:11:03 +0000</pubDate> 
<guid>http://www.aslibra.com/blog/post/10MinuteMail.php</guid> 
<description>
<![CDATA[ 
	今天听群里说起邮件验证，提到“10 Minute Mail”，看了网站才知道，这个真的挺有创意的，原来邮件也可以玩十分钟热度！作者也说这是一个创意，真的很有意思，挺欣赏的。<br/><br/>下面是网站的介绍，部分文字粗体标注一下，话说的还挺好：<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">点击下面的连接，您将获得一个临时邮件地址。发往这个邮件地址的邮 件将自动显示在页面上。您可以阅读、点击其中的连接、甚至回复它们。<strong>这个邮件 地址将在 10 分钟后过期</strong>。 <br/><br/>您问这有什么用?也许您经常遇到在某网站注册的过程中需要您提供邮 件地址 来接收验证邮件,也许<strong>您不想泄露您的真实邮件地址以免收到大量垃圾邮 件</strong>。那么这里 是个不错的选择并且过期就作废。当然它是免费的,请尽情享用吧! <br/><br/>当 10minutemail.com 投入使用的时候,<strong>很多论坛管理员都在诋毁我的创意</strong>。他 们尖叫着说这会导致论坛里产生大量垃圾ID,而<strong>他们再也无法出售电子邮件 地址列表给垃 圾邮件发送者</strong> ...... <br/><br/>回顾一下过去这一个月的情况。我的服务器以前大约每天收到 200-300 封邮件。 但是过去一个星期每天平均收到 60,000-70,000 封。事实上所有这些邮件都 是发往过期的 10minutemail.com 邮件地址的,也就是说都是垃圾邮件。 <br/><br/>每天 70,000 封!?这证明了<strong>一般情况下您不能轻易在网站或者论坛中透露您的 真实邮件地址</strong>。这世界上还有没有值得我们相信的网站?当然有!是不是每个网络用户都 分辨出某个网站会不会出售他们的邮件地址甚至本身就直接发送垃 圾邮件呢?很不幸 ——不能。 <br/><br/><strong>这证明了临时邮箱存在的必要性。</strong> <br/><br/>为了防止我的服务器被垃圾邮件冲垮,我把邮箱的域名换成了 fificorp.com, 并且会有计划的更换邮箱域名。主要是出于两个目的。一个是防止 我的服务器被垃圾邮 件洪水淹死。第二个是因为有的网站管理员会每个月屏蔽一些 域名。 </div></div><br/><br/>体验了一下，但发现的确能够收到邮件，但都过10多分钟才能收到邮件，所以你得按一下“我需要更多时间, 请 再给我10分钟! ”，求他们给你更多的时间玩。。。<br/><br/><a href="http://www.10minutemail.com/10MinuteMail/" target="_blank">点击这里体验一下 10 Minute Mail</a><br/>Tags - <a href="http://www.aslibra.com/blog/go.php/tags/mail/" rel="tag">mail</a> , <a href="http://www.aslibra.com/blog/go.php/tags/%25E9%2582%25AE%25E4%25BB%25B6/" rel="tag">邮件</a>
]]>
</description>
</item>
</channel>
</rss>