<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>潘魏增</title>
	<link>http://panweizeng.com</link>
	<description>活在回忆里,细数时间下过的蛋.</description>
	<lastBuildDate>Wed, 03 Mar 2010 11:46:30 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.0-alpha" -->

	<item>
		<title>php手册阅读</title>
		<description><![CDATA[php提供的库函要比Javascript丰富，于是容易对php手册产生畏惧心里。虽然手册非常庞杂，如果坚持下来，浏览一遍难度并不是太大。 
整理一下我觉得比较重要的知识点，供阅读参考。
内置函数组：
date/time
string
array的各种操作
加密相关
数据库相关
文件系统
邮件
session
其他：
curl库
xcache
memcache
]]></description>
		<link>http://panweizeng.com/archives/868</link>
			</item>
	<item>
		<title>春节回家记</title>
		<description><![CDATA[回家前和小权去三元桥附近的售票点通宵排队博票，感谢小权把第一个的位置让给我，让我顺利买到了回家的卧铺票。来北方七年多，第一次不用坐着回家。
1月10日下午6点45分坐T189回柳州，11日晚上9:30左右到达柳州，然后和老邓吃了螺蛳粉，在他家过夜。12日早晨7:30坐直达快班回家。
回家前，给老邓、妹妹和表妹各买了一盒费列罗巧克力，给爸爸买了吉列突破系列的刮胡刀，给妈妈和外婆各买了一个谭木匠的檀木梳子。后来发现在家这边的超市，巧克力和刮胡刀都有卖的，太失败了。这几样东西家里都觉得不好，太浪费钱，明年我也不会买了，再说这里的超市东西也很全。
13日，除夕，因为妹妹作手机销售的兼职，今年只有我和妈妈回外婆家吃年夜饭。二叔三叔两家在一起吃饭，人很多，其乐融融。表妹今年瞒着父母去湖南娄底的男友家，当大叔知道后非常生气却也无可奈何。妈的，这小混蛋还没让我们见过面，就这样把我表妹拐走了。农村没什么变化，在北京呆久了，在外婆家觉得这里特别亲切。南方的春天特别早，一眼望去，已经全部是绿色。南方也许是没有冬天的，只有一个季节比较冷。
14日，初一，凌晨时分，家家户户在放鞭炮，特别热闹。
15日，初二，按照风俗，今天是回娘家的日子，姑姑阿姨都来外婆家。吃过午饭后，就回了自己的家。
16日，初三，无聊去逛街，看看家乡的变化。和其他小城镇一样，现在家这边的房地产也在不断的开发。红河时代广场、岭南榕园和翠鸣苑看起来都还不错，不过岭南榕园有栋楼建得太高，貌似因为地基较次等问题没人敢买，目前都快成烂尾楼了。在街上买了两张电影盘，以前没看过《疯狂的赛车》和《机器战警3》，放假正好有时间补回来。
17日，初四，买了去柳州的汽车票，买了火车上吃的东西。
18日，初五，下午2点半坐直达快班到柳州。晚上11:50坐上了K158列车，开始了又一个炼狱之旅。上车后要做的第一件事情就是把自己催眠成一只猪。
19日，初六，在K158列车上。在拥挤的车厢中，拥抱孤独，无助，以及渺小感。
20日，初七，凌晨，几近崩溃。这最后的几个小时总是最难熬，总是在不断冲击人体忍耐的极限。全身酸痛，感觉自己要开始变成小怪兽。列车终于在早上10点抵达北京，晚点了3个小时，这次炼狱一共经历了34个小时。炼狱的过程让人痛苦，但是结果还是比较满意的，毕竟相比飞机，能省1500人民币呢。明年估计不能这么熬，身体越来越经不起折腾。
总结这次回家的经验：
1. 火车站博票买除夕前三天的火车票，需要去得非常早。即使预售前一天晚上11点去，各个窗口都排了十来号人。售票点排队可以凌晨三点左右去，但需要保证排在第10个以前。排队博票需要两个人以上轮流站岗，否则将会成为你痛苦的回忆。火车站博票带好凳子即可，售票点则注意防寒；
2. 这次下车后立即购买了返程车票，但还是只能买到慢车的座票。所以应该提前让柳州的同学帮买会比较好，不知道北京能不能买柳州的返程票；
3. 坐火车要带上眼罩和眼睛盒，休息的时候很有帮助；
4. 在火车吃的食物最好带些水果、方便面。水果补充水分，并充当一部分食物，橘子和苹果都不错。方便面补充体力，因为是热的，对胃也好不少。
]]></description>
		<link>http://panweizeng.com/archives/864</link>
			</item>
	<item>
		<title>在python的urllib2中使用socks代理</title>
		<description><![CDATA[python2.5中的urllib2支持http代理，不支持socks代理。假如代码库或者编码时使用了urllib2，同时又要使用socks，就需要第三方的库来实现。幸运的是，已经有人造好了轮子。
SocksiPy是一个socks module。它提供了一个类socket的接口，支持socks4、socks5和http proxy。下载后在代码中引用socks.py即可，也可以写个setup.py文件安装到python的site-packages目录中。
使用时，将下面的代码放在调用urllib2的代码之前即可：
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, &#34;127.0.0.1&#34;, 8080)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://panweizeng.com').read()
如果是自己写的程序，也可以尝试使用pycurl这个库。ubuntu使用sudo apt-get install python-pycurl python-pycurl-dbg安装。
示例代码
import pycurl
c = pycurl.Curl()
c.setopt(pycurl.URL, 'http://panweizeng.com')
c.setopt(pycurl.PROXY, '127.0.0.1')
c.setopt(pycurl.PROXYPORT, 8080)
c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
c.perform()
如果在程序外部使用socks，推荐使用tsocks。ubuntu中直接使用sudo apt-get install tsocks安装。安装完毕以后需要修改/etc/tsocks.conf。
配置样例如下
# 默认代理服务器
server = 127.0.0.1 
# 代理服务器类型&#160; 
server_type = 5 
# 代理服务器端口
server_port = 8080
使用时，在命令行输入tsocks 程序名即可。例如ubuntu下的epiphany浏览器没有代理设置，如果想使用socks代理，输入tsocks epiphany-browser即可（注意先关闭其他的epiphany实例）。
]]></description>
		<link>http://panweizeng.com/archives/855</link>
			</item>
	<item>
		<title>如何使用ssh tunnel获取优秀的网络信息</title>
		<description><![CDATA[由于众所周知的原因，学会获取优秀网络信息已经成为程序员的一个必备技能，甚至在面试中成为甄别优秀程序员的辅助判断。尝试若干方法后，发现使用ssh tunnel最简单高效。具体可以man一下ssh，寻找-D的选项说明。整个过程(包括解析dns)都是经过加密的，安全可靠。
建立tunnel后，还需要作的事情：
1. ssh自动登录
2. crontab防止掉线
3. 选择浏览器插件
以上方法有效的大前提是远程主机没有沦陷。
]]></description>
		<link>http://panweizeng.com/archives/842</link>
			</item>
	<item>
		<title>CURL基于cookie的自动登录脚本</title>
		<description><![CDATA[放在crontab中自动执行登录，有时候挺有用的。
#!/bin/bash
&#160;
# cookie 临时文件
COOKIEFILE=cookie_tmp.txt
&#160;
# 登录
curl $LOGINURL -d&#34;username=$USERNAME&#38;password=$PASSWORD&#38;autologin=1&#34; -c $COOKIEFILE -s
&#160;
RESPONSE=`curl $UPDATEURL -s -b $COOKIEFILE &#124;grep $USERNAME`
TIME=`date +'%Y-%m-%d %H:%M:%S'`
echo &#34;$TIME &#124; $RESPONSE&#34; &#62;&#62; $LOGFILE
完整注释和代码见 http://github.com/panweizeng/home/blob/master/code/shell/curl_login
]]></description>
		<link>http://panweizeng.com/archives/665</link>
			</item>
	<item>
		<title>收到贤安的赠书一本</title>
		<description><![CDATA[是贤安同学(realazy)新的译作《重构HTML:改善Web 应用的设计》。该书已经上架一月多，各计算机书店均有售，网上购书可以到china-pub.com。贤安同学前端基本功和英语翻译都非常好，向大家推荐之。
]]></description>
		<link>http://panweizeng.com/archives/662</link>
			</item>
	<item>
		<title>ipod touch破解后可以作的事情</title>
		<description><![CDATA[自从入手Nokia e71，touch曾一度失宠。破解之后，它又重新恢复了青春。
1. 安装海量别人共享的APP，详见http://weiphone.com/forum-36-1.html
2. 通过wifi作移动硬盘（注：windows用户可以直接使用91手机助手）
3. 安装软件，例如lighttpd/vim/wget/curl/python。非常简单。
$su root
$apt-get install sudo
$apt-get install wget
$apt-get install vim
$apt-get install python
$apt-get install curl
$apt-get install lighttpd
参考破解教程地址：http://www.weiphone.com/viewthread.php?tid=337294&#8230;
]]></description>
		<link>http://panweizeng.com/archives/649</link>
			</item>
	<item>
		<title>重装ubuntu</title>
		<description><![CDATA[工作机前几天出现一个.xsession-errors的错误，无法登录桌面环境。google了很多文章均不能解决，无奈下只能重装系统。刻了一张ubuntu 8.10 live cd，然后进入光盘系统。
首先需要备份数据，先查看硬盘分区情况。我的分区是swap 2GB，/根20GB，剩下都作/home, 大概130GB。
$ sudo fdisk -l&#160;
Disk /dev/sda: 160.0&#160;GB, 160041885696 bytes
255&#160;heads, 63 sectors/track, 19457 cylinders
Units = cylinders&#160;of 16065 * 512 = 8225280 bytes
Disk&#160;identifier: 0xd10cd10c
&#160;
Device&#160;Boot&#160; &#160; &#160; Start&#160; &#160; &#160; &#160;&#160; End&#160; &#160; &#160; Blocks&#160;&#160; Id&#160; System
/dev/sda1&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 1&#160; &#160; &#160; &#160;&#160; 243&#160; &#160;&#160; 1951866&#160;&#160; 82&#160; Linux&#160;swap / Solaris&#160; [...]]]></description>
		<link>http://panweizeng.com/archives/640</link>
			</item>
	<item>
		<title>javascript获取正则中的子匹配</title>
		<description><![CDATA[昨天帮朋友处理一段文本正好用到了这个，记录一下。
var str = '&#60;a href=&#34;http://google.com&#34; target=&#34;_blank&#34;&#62;google&#60;/a&#62;123&#60;a title=&#34;百度&#34; href=&#34;http://baidu.com&#34;&#62;baidu&#60;/a&#62;abce&#60;a href=&#34;http://msn.com&#34; class=&#34;msn&#34;&#62;msn&#60;/a&#62;kkk';
var&#160;reg = /&#60;a.*?href=&#34;([^&#34;]*)&#34;[^&#62;]*&#62;([^&#60;]*)&#60;/a&#62;/i; // *? 非贪婪匹配
var arr = [];
while(reg.exec(str)){
&#160; &#160; arr.push({'link':RegExp.$1 , 'text':RegExp.$2});
&#160; &#160; str = RegExp.rightContext;//将str截断
&#160; &#160; reg.lastIndex = 0;//重置下次匹配开始的位置
}
console.info(arr);
另外两种正则表达式语法有一些不同，比如说转义。
#正则表达式语法 1
re = /pattern/[flags]
#正则表达式语法 2
re = new&#160;RegExp(&#34;pattern&#34;,[&#34;flags&#34;])
&#160;
#比如说要匹配&#34;潘魏增(panweizeng)&#34;，同时获取其中的子匹配panweizeng，对应的写法如下
var&#160;reg = /[^(]+(([^)]+))/g;
#这里需要对括号使用两个转义符号
var&#160;reg = new RegExp(&#34;[^\(]+\(([^\)]+)\)&#34;, &#34;g&#34;);
var&#160;submatch;
if(reg.exec(str)){
&#160;&#160; submatch = RegExp.$1;
&#160;&#160; reg.lastIndex = 0;
}
console.info(submatch);
]]></description>
		<link>http://panweizeng.com/archives/592</link>
			</item>
	<item>
		<title>买了件犀牛文化衫</title>
		<description><![CDATA[从china-pub.com买了一件犀牛T恤，准备迎接夏天。

]]></description>
		<link>http://panweizeng.com/archives/576</link>
			</item>
</channel>
</rss>
