Featured Posts

纠结与释怀 这几天的纠结让我度日如年,伴随我的是焦虑和失眠。好久没有这样的感觉了。 我总是患得患失,这是一种心理问题,在做选择的时候,反复对比各方的优劣,放不下东,也舍不得西。 自己不知道怎么选择,然后反复问家人和朋友,即使问到答案,也不能让自己安心顺从。 幸运的是,在反复纠结之后,我逐渐想明白了一些道理。 选择,就要付出代价,必定有所得有所失,我应该勇敢承担起责任,坦然面对自己的选择带来的变化和影响。 纠结的时候,我感觉自己是个懦弱的人,害怕犯错,害怕不好的结果。 现在,我鼓起勇气,自己做出选择,不管对错,我接受,不后悔。 我要感谢猛哥,花费很多时间和精力,前后沟通,给我提供了非常难得的机会,在我最终没有选择这个机会的时候,仍然支持我的选择,并告诉我他这里的大门永远向我敞开。 此时,时间像突然停止了一样,飞快打字的手,也一下停住了,我反复看着这句话,感觉到眼眶周围热热的,滑滑的…… 我想我的勇气,多半来自于猛哥对我的关照。 我只求将来有机会能够报答猛哥的知遇之恩。 是时候为自己的选择努力工作了,大家一起加油!

Readmore

CentOS: cannot restore segment prot after reloc 最近在研究CentOS,用xampp装一套集成的LAMP环境,结果在启动Apache的时候报错: cannot restore segment prot after reloc: Permission denied 原因是 modules/mod_perl.so 不能加载。 查了一下可能是SELINUX的问题,有一个解决方法: 用 chcon...

Readmore

PHP 文件下载 IE 无法打开页面 IE 又有一个弱得不行的问题让我发现! 有个项目,要限制文件的下载权限,只有注册用户才可以下载,用户登录后,点击下载链接,弹出保存附件的提示。 我用...

Readmore

Subversion neon 诡异配置 一波三折 今天发现前几天装的 subversion 居然没法通过 http 协议访问版本库! Subversion 出现 svn: Unrecognized URL scheme for 'http://.....'  这样的错误提示。 检查 svn 客户端是否支持...

Readmore

  • Prev
  • Next

我好想逃离这张网 Fucking GFW

Posted on : 06-12-2009 | By : leakon | In : GFW

15

最近由于项目需求,要调研一些国外最流行的网站,稍微想想,列出了几个:

facebook.com,twitter.com,youtube.com,blogspot.com,唉,等等吧,脑子有点乱,一时间想不了那么全。

逐一访问,一个都 TM 打不开!

我突然有一种与世隔绝的感受!为什么世界上最流行的东西,我们中国人就是没有权利去看一下用一下呢?

以前想玩游戏机,PS3,XBOX360,WII,这些东西都不让卖,幸好有水货改机,但想玩个 XBOX Live 的使命召唤,又没戏了。

现在想上上网,学习学习人家先进的设计理念,这都不行了。

也许有的人,每天看着天朝规定的那些东西就觉得很知足很满足了吧。

也许有的人,每天上上开心网,偷个菜就很开心了吧。

也许有的人,每天看看新闻联播,就觉得国家很好很强大,生活很顺很安心了吧。

也许,99.99999999% 的中国人都喜欢这种状态吧。

我觉得我就是一个异类,一个希望自由获取信息的人,注定要成为这个神圣国家中的异类。

我不是没事想着发牢骚,我是真的要看一看外面的世界,学一学先进的技术。

我现在就在尝试打开一个国外很流行的网站,不过 GFW 实在够 NB,我用了美国 VPN 都没法打开,这样的例子还有 facebook 和 twitter。

各位看到本文的兄弟姐妹们,如果你们有办法在天朝打开 facebook,请您给我指点一下吧,我真是没招儿了!!!

IE IFrame Transparent 透明

Posted on : 02-12-2009 | By : leakon | In : Browser, Html, JavaScript, 原创

0

用 Javascript 插入 IFrame 标签,在 Firefox、Chrome 等浏览器上,默认都是透明的,但 IE 有默认的白色背景。

本来,在 html 中写入 IFrame 标签,并加上 allowTransparent="true" 这样的属性,IE 也一样可以透明,但今天的问题是必须用 Javascript 插入。

用 IE Developer ToolBar 测试,在 IFrame 的 src 页面的 body 样式上加上 backgroud:transparent 可以使 IFrame 透明。

但我们要用 Javascript,本域的 Javascript 脚本是没法设置跨域 IFrame 页面的,况且创建 IFrame 的时候还没设置 src,所以这个办法不行。

只能用个土办法,把 src 设置为一个绝对路径的 html 页面,这个页面你自己可以任意编辑,把 body 的样式设成透明即可。

注意,为了性能,只在 IE 浏览器下设置 src,Firefox 和 Chrome 都不用设置。

在这一点上,IE7 跟 IE6 一样弱,比现代浏览器差远了!

DOCTYPE Javascript documentElement

Posted on : 02-12-2009 | By : leakon | In : JavaScript

0

在 Javascript 里面调用一些属性的名称发生了改变,比如得不到 document.body.scrollTop 的值。

使用了 DOCTYPE 之后,滚动条位置必须用 document.documentElement.scrollTop 来调用,类似的还有 scrollLeft 等。

但是,在没有 DOCTYPE 的时候 document.documentElement.scrollTop 也永远为零了。

能否有一个在有或没有 DOCTYPE 定义都可以用的方案呢?

可以这样写:

// 浏览器滚动条位置
function scrollTop() {
var scrollTop = 0;
if (document.documentElement && document.documentElement.scrollTop) {
scrollTop = document.documentElement.scrollTop;
} else if (document.body) {
scrollTop = document.body.scrollTop;
} else if (window.pageYOffset) {
scrollTop = window.pageYOffset;
}
return scrollTop;
}

su 环境变量 小发现

Posted on : 30-11-2009 | By : leakon | In : Linux

1

Linux 下普通用户 su 成 root 后,环境变量以及路径等都还使用原用户的,比如没法直接执行 ifconfig,必须要用 /sbin/ifconfig。

今天受 wangjun 提醒,原来 su - 可以解决问题,直接切换到 root 目录下,环境变量也一并切换。

记录一下,顺便谢谢 wangjun。

VMware CentOS 网络中断

Posted on : 28-11-2009 | By : leakon | In : Linux, Reminder

0

有时候在 VMware 下的 CentOS 无法访问外网,现象是可以 ping 通 IP 地址,但没法 ping 域名,最开始以为 DNS 的问题,实际上没那么复杂。

只要在 Edit -> Virutal Network Editor -> Nat -> Restart 即可。

可能是我这个 6.5 版本的 VMware 的 Nat 有问题吧。

唉,上次就搞了半天没发现问题,重启我的电脑后才好的。这次遇到问题突然忘了怎么解决,运气好,试了下重启 Nat 服务。

记下来备忘。

CUrl 蜘蛛 优化 CURLOPT_HEADERFUNCTION

Posted on : 27-11-2009 | By : leakon | In : PHP, 创新, 原创

0

正搞一个小蜘蛛,用 CUrl 写的,遇到一个问题,分析完 url 后,有可能遇到 rar 或 jpg 等资源文件,也是要下载回来分析内容。

这样的做法太笨了,有很多缺点:

  1. 浪费带宽,文件也许很大
  2. 文件无用,下载回来也无法分析文件内容

怎么解决?

看浏览器会发送 Accept 指令,告诉服务器可接受的内容类型,但这不能阻止服务器返回不接受的内容,即哪怕请求的资源不在 Accept 列表中,仍然会把文件返回给客户端。

这方法不行。

想着,有没有办法,在得到服务器 response 的时候先分析 header,如果不是可接受的类型,就断掉连接,不必下载后续内容?

如果用 fsockopen 写的网络通讯接口,这一点很好实现。但 CUrl 怎么控制?

仔细看文档,找到一个选项 CURLOPT_HEADERFUNCTION。

这个选项要给一个回调函数作为参数,回调函数相当于一个触发器,CUrl 会把每一条 response 的 header 指令传给这个函数,由函数来决定如何执行后面的步骤。

回调函数要定义 2 个参数,第 1 个是 CUrl 的资源标识符,第 2 个是单独的一条 header 字符串。

如果想让 CUrl 继续下载后续内容,那么回调函数应该返回 header 字符串的长度:

return strlen($strOneHeader);

如果不想继续下载,直接返回数字 0,那么 CUrl 就会发送 TCP 的终止连接的指令,不会继续下载后续内容了。

加上这个触发器,经过测试,我的小蜘蛛可以成功地忽略非 text/html 类型的文件,大大加快了抓取速度,避免了很多问题!

小提示,给 CURLOPT_HEADERFUNCTION 设置回调函数的时候,文档上说要一个字符串形式的函数名作为参数。

这不准确。

实际上 PHP 可以指定任意类型的回调函数,可以是纯函数、类的静态方法和对象的方法:

  • 纯函数:$callback = 'my_callback_func';
  • 类常量:$callback = array('NAME_OF_CLASS', 'nameOfMethod');
  • 对象方法:$callback = array($object, 'publicMethod');

完。

黑墙虽高 哥照穿不误

Posted on : 26-11-2009 | By : leakon | In : 愤青

0

SB 衙门不让我用 Google !

哥去淘宝买 VPN!不过直接用 VPN 也有弊端,VPN 要拨号,连通后,本机所有的外网连接都走 VPN,那访问国内的一些网站速度就会慢不少。有没有办法,让我访问国内和谐网站的时候避免使用VPN,访问被屏蔽的网站的时候使用VPN?

答案是有!不过要设置几步,还算简单!

步骤:

  1. 本地运行 VMware,并安装 WindowsXP
  2. 虚拟机 XP 使用物理网络,即跟你的本机使用相同的 DHCP 服务器获取局域网 IP
  3. 虚拟机 XP 安装 CCProxy 代理服务器软件
  4. 给 Firefox 添加 FoxyProxy 扩展
  5. 使用 Firefox 访问被屏蔽的网站

前 3 步就不说了,Google 都有教程。

FoxyProxy 扩展的优点是可以设置域名白名单和黑名单,并且支持通配符,把被屏蔽的域名添加到白名单,FoxyProxy 就会对这些域名使用代理服务器进行连接,其他域名则不是用代理。

在 FoxyProxy 添加一个新的 proxy,给这个 proxy 添加几个 URL Patterns ,比如我是这么添加的:

*google*、*friendfeed*、*twitter*

加入到白名单,这样至少我可以用 https 协议访问我的 google 文档了,这回文档内容不会被人轻易截取到。

但我希望 mail.google.com 不走代理,毕竟从美国绕一圈回来,还是有点慢。

有办法,把 *mail.google* 添加到黑名单。

这下好了,想看哪个网站就看哪个网站。

不过我试了下,还是会有限制,用了 VPN 代理,facebook.com 还是访问不了。我已经确认 VPN 是 SSL 加密的,不知为什么依然能被过滤出来?

反正我不是为了 facebook ,无所谓了。

有压迫就有反抗!

垄断的衙门,总是能创造出新的产业:

域名备案!走流程?等半年吧,半年后告诉你缺资料,然后反复 N 次,最终的结果是,等你儿子上大学了,你的网站备案也下不来。因此有了网站快速备案,30 块钱一个!

网站屏蔽!想恢复?等着吧,等内容改成赞扬 Gong Chan Dang 廉政为民、报道春运期间火车站票源充足、宣传老百姓对物价增长表示不受影响、通告中国足球没有赌球等信息时,自然就恢复访问了。你不改?不改就屏蔽你!因此有了 VPN,恰好也是 30 块钱一个月。

想不明白屏蔽网站的原因,(1)怕敏感信息传播?为什么大陆那么多网站都响应党的号召,宣传台湾国民党民进党这不好那不好,人家台湾人民一样支持人家的政府?(2)怕色情信息传播?为什么全世界那么多国家都不怕,就你 GongChanDang 领导下的中国人民害怕?小日本还有 AV 产业呢,我看人家经济实力、科技实力、军事实力和国民素质一直远远超过中国。

难道影响中国发展的就是这些互联网上的信息吗?

不愤青了,说点实际的,现在 VPN 都是用的境外的服务器,在上面架设 VPN Server。我从淘宝买过几个 VPN,服务都很不稳定,速度慢、经常断线或者根本连不上。我觉得如果是架设在 Linux 上的服务,不应该这么不稳定吧?

如果有一些 Linux 服务器维护经验,再有一些开发能力,完全可以多买几台国外的 VPS,然后通过负载均衡,把来自国内的连接平均分配到不同的 VPS 上,保证每个用户的速度。在通过系统监控程序,实时检查每台 VPS 的状态,如果出现异常,立刻切换到下线状态,同时把这个 VPS 上的连接都无缝地分散到其他正常的 VPS 上,然后用邮件或短信向管理员报警。

这样,速度和稳定性都有保证。等业务扩大了,随时买新的 VPS ,然后把程序自动部署好,再自动添加到上线运行状态,即可实现横向扩展。口碑会逐渐传播下去,到时候又是一个新的业务领域。

VPN 可利用的领域太多了,像我这样需要穿墙的,也有需要玩国外网络游戏的,有需要防止MSN信息被公司截取的,甚至还有要访问 XX 网站的……

算算价格?国外 VPN 一般每个月 30 美元,速度都很快,一台保守估计可以供 10 - 15 个人同时使用,如果在国内卖 30 块钱一个月,那么有 7 个人来买,就能保证不亏,10 个人买就赚 30 * 3 = 90。

有多少人需要 VPN 呢?上淘宝看看那些卖 VPN 的成交记录就知道了,牛人一个月卖几百个!

关键这是一个一次性成本,稍作开发,则基本一劳永逸,我看行!

Google SpreadSheets 无法访问 墙封

Posted on : 26-11-2009 | By : leakon | In : 默认分类

11

从前几天开始,spreadsheets.google.com 又无法访问了!!!

我每天要用 Google 文档的表格记录一些工作情况,就连这么点可怜的需求,都要遭到天朝衙门无情的封杀!

除了 Cao Ni Ma 我真不知道说什么!

类常量 字符串 对比 性能测试

Posted on : 26-11-2009 | By : leakon | In : PHP, 原创

1

写一个处理 url 的 PHP 工具类,需要用到很多字符串相关的函数,比如 preg_match、preg_replace、strpos 之类的。

正则表达式和查找的 needle 字符,都是用字符加引号直接作为参数传递给上述函数,比如:

preg_match("#^http[s]?://#i", $strUrl);

用以匹配是否是 http 开头的 url。

记得以前看过过类常量与普通常量的性能对比,类常量快得多,在这个例子上,把字符串传给函数,是不是每次调用都是先把字符串转换成内部变量呢?如果预先定义类常量,然后以常量为参数传给函数,是不是能快一点?像下面这样:

const PREG_HTTP_URL = '#^http[s]?://#i';

preg_match(self::PREG_HTTP_URL, $strUrl);

两种方式,性能肯定不一样,那种更快呢?

...

...

...

揭晓结果:

运行外层方法 50 万次各 3 次,取平均值
字符串:[31284.85]q/s    [15.98]seconds
类常量:[29175.49]q/s    [17.14]seconds

可以看到,用类常量的方式,性能不升反降!!

现在还不太理解为什么会这样。

xdebug xampp profiler 真是背到家了

Posted on : 18-11-2009 | By : leakon | In : PHP

0

我在Windows环境开发PHP,用XAMPP套件,今天追查程序,看源码搞不定,求助xdebug。

想来很简单,不就在php.ini开启几个选项么,奶奶的,折腾半天没搞定!

问题是:不管怎么设置,开启,就是不输出 profiler 文件!

在网上看人家配置xdebug咋就那么顺利呢,我咋就这么费劲呢?

用中文关键字搜不到,试试英文的吧。

然后找到这个:

http://www.apachefriends.org/f/viewtopic.php?f=16&t=37137

这个天杀的 Wiedmann 估计是 ApacheFriends 的开发人员,把跟我一样可怜的 th1alb 兄弟害得够惨,2 个小时啊!!!

一切的根源居然是 Wiedmann 这怂儿把错误的配置参数包含到了 php.ini ,并打包到 xampp-1.7.2 的版本中!!!

我只能问候你母亲文明用语了!!!

给出问题解决方法,简单得要死:

xdebug.profiler_output_name = "xdebug_profile.%R::%u"

替换为

xdebug.profiler_output_name = "cachegrind.out.%p"

其实跟文件名前面的部分没关系,关键是那个"::",Windows 不允许文件名中出现 ":",在Linux下居然可以用这个字符当文件名,怎一个强字了得!

我测了下,Windows下"%R"这个占位符无效,所以,我是这么改的:

xdebug.profiler_output_name = "xdebug_profile.%u"

哦了,但愿后来的同学们能早点搜到,别再浪费宝贵的时间了!