pinterest中国版poyy.com横空出世

哈哈,绝对的中国版pinterest,不信就去看看吧! http://poyy.com

终于取消了烦人的10658222彩信

网上查到有发送 QXTY 到10658222,结果收到回复说不是连连发体验业务的订阅者,不能取消,后来打客服电话和搜索资料,多方努力终于搞定,解决办法: 发送 QXCXJLB 到10658222 就可以了,收到的回复是移动彩信俱乐部的免费彩信,真是垃圾!

用Chrome的调试工具改善网站整体访问性能

Chrome浏览器的Developer Tools里面有个Audits工具,可以很方便的帮我们发现网站存在的一些常见问题,比如缓存时间设置问题,header里面是否有CacheControl Public问题,Gzip是否打开等等,建议做系统管理的可以尝试一下。

另外,在IE下有个HttpWatch Professional的插件,这个工具也提供很全面的网站访问改进建议!

准备运行Audits

查看Audits结果

PHP 正则里面的两个重要技巧

正则用了好些年,有两个东西总结出来是在web开发中非常有用的,尤其在抓取、代码分析中经常用到。

1. .* 的贪吃性

我们用 /\*.*\*/ 去和字符串 /* first comment */ not comment /* second comment */ 匹配会失败,因为由于 .* 项目的贪吃性,会匹配成整个字符串,于是就会匹配失败,不过,如果在后面加一个问号数量符,则会停止贪吃性,而变成匹配尽可能少的数目,因此模式 /\*.*?\*/ 就会正确匹配。各种数量符的含义并没有改变,只是优先的匹配数目。不要将问号的此用法和其自己作为数量符的使用混淆。因为有两种用法,有时可以两个一起出现,例如 \d??\d 会优先匹配一个数字,但如别无选择也可以匹配两个以使剩余模式匹配。

如果设定了 PCRE_UNGREEDY 选项(此选项 Perl 中没有)则数量符默认不是贪吃型的,但是在个别模式后加上一个问号可以将其变成贪吃型的。换句话说,这可以反转默认的行为。

后面跟上一个 + 的数量符是“占有性”(possessive)的。它会匹配尽可能多的字符而不管剩余的模式。因此 .*abc 可以匹配 “aabc” 但是 .*+abc 就不会,因为 .*+ 已经匹配了整个字符串。自 PHP 4.3.3 起可以用占有性数量符可以来加快处理过程。

2. ()子模式的不捕获

如果将字符串 “the red king” 来和模式 the ((red|white) (king|queen))
进行匹配,捕获的子串为 “red king”,”red” 以及 “king”,并被计为 1,2 和 3。

简单的括号实现两种功能的事实不总是有帮助的。经常有需要一组子模式但不需要捕获的时候。如果左括号后面跟着 “?:”,子模式不做任何捕获,并且在计算任何之后捕获的子模式时也不算在内。例如,如果用字符串 “the white queen” 去和模式 the ((?:red|white) (king|queen)) 匹配,捕获的子串是 “white queen” 和 “queen”,并被计为 1 和 2。

因此,最完美的匹配网页中图片 src 部分的正则表达式处理如下:

$str='<p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><img border="0" src="upfiles/2009/07/1246430143_4.jpg" alt=""/></p><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><img border="0" src=\'upfiles/2009/07/1246430143_3.jpg\' alt=""/></p><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><img border="0" src="upfiles/2009/07/1246430143_1.jpg" alt=""/><img width="280" height="187" alt="" class="imgloading" original="http://s.yoututuan.com/team/2011/1206/13231497847660.jpg" src="http://s.yoututuan.com/team/2011/1206/13231497847660.jpg" style="display: block; ">';
 
$pattern="/<img.*?src=['|\"](.*?(?:\.(?:gif|jpg)))['|\"].*?[\/]?>/i";
preg_match_all($pattern,$str,$match);
 
print_r($match);

以上代码将输出如下内容:

Array
(
    [0] => Array
        (
            [0] => <img border="0" src="upfiles/2009/07/1246430143_4.jpg" alt=""/>
            [1] => <img border="0" src='upfiles/2009/07/1246430143_3.jpg' alt=""/>
            [2] => <img border="0" src="upfiles/2009/07/1246430143_1.jpg" alt=""/>
            [3] => <img width="280" height="187" alt="" class="imgloading" original="http://s.yoututuan.com/team/2011/1206/13231497847660.jpg" src="http://s.yoututuan.com/team/2011/1206/13231497847660.jpg" style="display: block; ">
        )

    [1] => Array
        (
            [0] => upfiles/2009/07/1246430143_4.jpg
            [1] => upfiles/2009/07/1246430143_3.jpg
            [2] => upfiles/2009/07/1246430143_1.jpg
            [3] => http://s.yoututuan.com/team/2011/1206/13231497847660.jpg
        )

)

PHP正则匹配字符串中的标签

如果标签里面有中文、英文、数字等混排,则需要对汉字进行特殊处理,由于PCRE不支持\U \P \L之类的perl字符串处理转义,使用16进制或者Unicode进行处理,范例如下:

$str = "之二宽阔的甘家口东#标签1#标签2 #标签3。#标签4,都发$1234 ¥xc,cvm , ¥12,dflksjf如何#标签5.x #tag6.cvxcv“";
preg_match_all('/#([a-zA-Z0-9\x7f-\xff]+)/', $str, $mat);
print_r($mat);
 
preg_match("/[\x{00a5}\x{ffe5}](\d+)/u", $str, $mat);
print_r($mat);

得到的结果如下:


Array
(
[0] => Array
(
[0] => #标签1
[1] => #标签2
[2] => #标签3。
[3] => #标签4
[4] => #标签5
[5] => #tag6
)

[1] => Array
(
[0] => 标签1
[1] => 标签2
[2] => 标签3。
[3] => 标签4
[4] => 标签5
[5] => tag6
)

)
Array
(
[0] => ¥12
[1] => 12
)

补充说明:

双字节字符编码范围

1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文 gb2312
x80-xff 中文 gbk

2. UTF-8 (Unicode)

u4e00-u9fa5 (中文)
x3130-x318F (韩文
xAC00-xD7A3 (韩文)
u0800-u4e00 (日文)

cherokee

估计是喜欢开cherokee,最近新上线的服务器我也懒得配置Nginx,直接用cherokee了,配置起来很方便,对于当前访问量不大的站点,其实用那个都行,简单就好,简单就好!

 

牛逼的GMP数学运算库

搞了一晚上,搞定了一个需要使用无限长度数字运算的产品功能开发,实现权限模块的处理,使用了gmp库来完成,效果一级棒,性能好不好还不知道,不过好在不是用在高性能要求的部分,好久木有今晚这样的为了搞定一个问题而钻研的劲头了。

顺便记录一下,如果要在BSD系统下的PHP中使用GMP库,不要安装最新的5.0.x版本的GMP库,4.2.4以下的版本最好,要不编译不过去的!

当前功能中实际使用到的最大数字是 18446744073709107172 ,二进制的结果是如此惊人的长度: 1111111111111111111111111111111111111111111110010011011111100100

又一年过去,得失几何?

这一年,失去了什么? 太多,太多!失去了已很难找回!

这一年,得到了什么? 几乎是一无所获! 如此真贵的岁月,又被我SB的蹉跎。。。

曾经那个有活力、有梦想的年轻人,如今面对镜子中那张沧桑疲惫的脸,很难再淡定轻松的微笑一回!

亲情、爱情、友情、事业,对一个男人来说,哪一样失败都不是成功,镜子中的我,败得一塌糊涂。。。

 

来年,路在何方?

把FreeBSD下的硬件RAID去掉

几年前的一台服务器,intel s3000ah的板子,自带Intel Matrix Storage和LSI的raid,不过这个板子的raid对freebsd不支持,当初勉强使用Intel Matrix Storage的模式设置了raid 1 安装了BSD的7.2, 事实上并不是真正的好使,raid经常掉,bsd下的raid管理工具atacontrol也不能进行detach和attach的,勉强认为freebsd能认识设备ar0而已。

机器前几天终于挂了,出现的情况是raid1的两个磁盘都显示了offline,用过Intel Matrix Storage的就知道,CTRL+I进去后,其实是啥也干不了的,这个板子如果在windows下,或者用板子自带引导盘也是可以干点啥的,在bsd下,Intel Matrix Storage就是狗屎一坨。

按照过去的经验,通常这样的情况都是重装系统完事,但是因为人不在现场,David帮我跑去机房看看情况,于是乎抱着试试看的态度,尝试看看是否可以从硬件和软件下把raid禁用了,用一块盘当作普通sata来运行原理的系统,省得重装系统,配置和恢复数据麻烦,没想到一试居然成功了,下面把大致的经过分享给大家,希望对大家有参考作用。

首先,到bios里面,把raid禁用了,然后重启机器,正常的话能看到freebsd的引导了,但是这会儿是不能正常进入系统的,半道儿上就会停住,告知ar0…啥的设备问题。

在freebsd引导菜单中选择进入单用户模式

进到单用户模式的shell环境下后,因为/usr /var 啥的分区都没能挂载,而使用mount -a 啥的肯定不行,因为分区指向的都是ar0…的raid设备名, 于是我们要想办法修改fstab,这会儿矛盾的问题是,既然/usr无法挂载,/usr/bin/vi自然就没法运行了,如何能修改fstab文件呢?

琢磨了会儿,找到了办法,先umount /usr 试试, 然后再运行 mount -u /dev/ad4s1f /usr ,这里的ad4s1f其实是我raid1第一块硬盘在系统中的设备名,这个名称你可以大致的看看/dev/目录下有啥ad开头的文件,再对比一下当前fstab文件里面的分区,就能找到对应的块设备名称了。

通过上面的操作,vi就可以使用了, 运行 /usr/bin/vi /etc/fstab,把该文件里面原来ar0…的都改成ad4… ,保存退出,成功了一大半了。(这里漏掉了一步关键的,/etc/fstab文件应该是只读的文件系统,需要先运行 mount -fw / )

接下来需要做的事情是要从系统里面删除掉原来的raid设备,这个比较简单 运行/usr/bin/atacontrol detach ad4 和/usr/bin/atacontrol detach ad6 ,然后运行/usr/bin/atacontrol delete ar0 (你的系统里面也有可能是ar1,自己看fstab来决定)

然后最好执行一下fsck -y ,抽颗烟等结束后reboot,基本上就好了!

这会儿应该能进到系统了,再df看看磁盘分区情况,系统回到了普通的单硬盘模式了,多出来的那块ad6还没有使用,可以再自己分区单独使用。

Category: Linux / BSD  Tags: , , ,  6 Comments

将食,涨,如厕,陷而卒

今天看到一则古代帝王最“雷人”的死法,把轻松分享一下!

 

春秋时期,晋景公有天刚要吃饭,突然肚子不舒服,去了趟茅房。侍从左等右等,饭都凉了,还不见回来,到茅房去找,发现君王掉进茅坑,淹死了。以文笔简洁有力著称的《左传》,仅用一句话描写此事:“将食,涨,如厕,陷而卒”。

Category: 心情 / 生活  Tags:  3 Comments