Featured Posts

Raw POST Data PHP 获取 HTTP 原始 body 部分的数据 通常做网站开发时,POST 数据都是从页面 form 表单中提交到服务器,POST Data 都是 key_1=value_1&key_2=value_2 这样的形式。这样的字符串,PHP 会自动解析到 $_POST...

Readmore

Google 无法访问 最新解决方法 2009-06-25 Google 被天朝局域网挡在了墙外,在诅咒某些流氓之余,不得不想办法穿墙。 根据目前的现象,有的人可以访问,有的人不能访问,推测出这回是 DNS 屏蔽,没有封...

Readmore

经济危机与新型投资 这是自从博客挂了以来,在线写的第一篇blog,还不知道能不能发出去。 10 min 之后。 唉,又挂了……,点击插入图片的按钮后,Firefox 3 崩溃……。 关了...

Readmore

Smarty 定界符 花括号 大括号 函数定义 转义 使用 Smarty 模板的时候,通常都是用 '{' 和 '}' 作为定界符(delimiter)。 有时,我们需要在 html 代码里输出大括号,如果在模板里直接写出来,会被 Smarty...

Readmore

  • Prev
  • Next

Google 无法访问 最新解决方法 2009-06-25

Posted on : 25-06-2009 | By : leakon | In : Google

1

Google 被天朝局域网挡在了墙外,在诅咒某些流氓之余,不得不想办法穿墙。

根据目前的现象,有的人可以访问,有的人不能访问,推测出这回是 DNS 屏蔽,没有封 IP。

找到一个解决问题的帖子,具体办法就是换下 DNS 服务器,原文在此:

http://www.williamlong.info/archives/1841.html

部分引用:

手工设置 DNS

在“设置”-“网络连接”中找到宽带上网的连接,打开网络连接属性,选择Interner协议(TCP/IP)的属性页里,不要选择自动获取DNS,而要选择“使用下面的DNS服务器地址”,首选DNS服务器和备用DNS服务器分别设置为208.67.222.222和208.67.220.220,如下图所示,完成后重新连接上网,就可以摆脱服务商对我们的DNS劫持。

1101_1

1101_2

记得要重新连接才可以,浏览器通常都有 DNS 缓存,关闭所有浏览器,再试,Google 服务全都好啦!!

关键词:DNS 劫持,Google 被封,Google 色情门,Google 被墙,Google 穿墙,Google IP,Google DNS,如何访问 Google,为什么 Google 打不开,Google 无法访问,Google Docs,Google Reader,Google 文档,Google 阅读器。

唉,万恶的天朝 ZF!

回想起绿坝的:华为24嘴交换机,真是没话说了。

TMD 一帮 SB,文明用语你们的母亲们!

Raw POST Data PHP 获取 HTTP 原始 body 部分的数据

Posted on : 16-06-2009 | By : leakon | In : Web开发

1

通常做网站开发时,POST 数据都是从页面 form 表单中提交到服务器,POST Data 都是 key_1=value_1&key_2=value_2 这样的形式。这样的字符串,PHP 会自动解析到 $_POST 数组中。

有另外一种应用场景,在开发基于 HTTP 协议的接口时,客户端把一段 XML 文本直接作为 POST Data 提交到服务器,这时 $_POST 是空数组。大家可以试试,用 Curl 实现 POST 请求,BODY 字段直接写上一段文本。

通过 WireShark Network Analyzer 这样的软件抓包,可以看到 HTTP 的 Header 之后,有 0d 0a 0d 0a 共 4 个字符,也就是 \r\n\r\n,代表 2 个 Windows 平台的换行符。这是 HTTP Header 与 Body 之间的分割标志。在这之后,Body 的内容可以提交给服务器,但 $_POST 变量为空。

发现问题后立刻头大,这可怎麽办啊!!

在 Google 用 ‘php post raw’ 这个关键词搜了一下,立刻找到答案,原来解决方法是如此的简单:

$strRawData = file_get_contents(”php://input”);

php://input 是一个资源标识,用 file_get_contents 从这个资源中获取的内容,就是原始的 Raw POST Data。

记录一下,留作日后备查。

测试驱动开发 Test-Driven Development

Posted on : 09-06-2009 | By : leakon | In : 默认分类

0

Programming to an interface instead of programming to an implementation:

While you are writing the test you are thinking about the interface of the object you are testing:

What does this object look like from the outside.

When you go to make the test really work, you are thinking about pure implementation.

经济危机与新型投资

Posted on : 08-06-2009 | By : leakon | In : 默认分类

2

这是自从博客挂了以来,在线写的第一篇blog,还不知道能不能发出去。

10 min 之后。

唉,又挂了……,点击插入图片的按钮后,Firefox 3 崩溃……。

关了 Firebug 没用,不知道是哪儿的问题,还是第一次遇见 Firefox Crash。

说正事儿,前些日子刚加入了“投行”,呵呵,不是 VC,是 B2C,开始研究彩票。

试着买了 3 次,居然中了 2 次,你说这中奖率高不高,有图为证:

lott

彩票网站有一个功能叫合买,是非常好的一种购彩方式,大家一起出力,一起承担风险,一起获得收益,充分发挥了互联网的优势:没有时间、地域限制,方便、快捷。

人们总是把彩票和500万的大奖联系到一起,这是传统的概念。现在有了一种新的模式,让你可以经常中个小奖,像我这样。其实这第3注,是我给我老娘演示网站功能时随意跟的一个方案,结果就中了,呵呵……

别在股市天天看绿盘了,快来彩市发点小财吧~~

难以抚平的悔恨

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

0

2009-5-10,对我来说是个灾难一样的日子。在 host-monster.com 买的虚拟主机,因为服务器故障,主机商清空了所有用户的所有数据库和文件。

而主机商提供的备份服务,也因我占用的磁盘空间超过4G,而拒绝备份,只保留了几天前的少数数据库的备份。

幸运的是,我的 www.leakon.com 数据库得以保全,这是我 2 年多积攒的全部心血。

遗憾的是,我 GF 的 www.xyoyou.com 的数据大部分已经无法恢复。

这里多亏了抓虾,在他那里保存了 yoyo 的全部日志的标题,摘要和日期。

然后我用 google 的 site:xyoyou.com + 标题 的方式,一篇一篇从快照中找回了全部原文。当然也要感谢 Baidu,Google 搜不到的,恰好 Baidu 可以找到~

其实这也怪不得别人,是我没有把数据备份好,我以为美国的付费主机的服务是可以信赖的,事实证明没有任何服务是可信赖的。

近一年看了一些历史方面的书,得到一个被验证了无数次的理论:问题总是出现在没有问题的时候。

一个人有一个计划要实施,其中有 10 个重要环节,这里面有 9 个在他看来是会遇到麻烦的,有 1 个在他看来是 100% 没有问题的。

而结果往往是这个人失败,调查原因的时候,又发现就是那最不可能出现问题的环节出了大问题,另外 9 个环节顺利执行。

现实点的例子,吴敬中最信任的人是余则成,对李涯总是不冷不热。事实呢,保密局最大的间谍就是那个最受信任的余则成。我非常为李涯感到惋惜,他忠心耿耿,真可谓是鞠躬尽瘁,死而后已。

现在我能做的,就是尽可能挽回损失,减少损失。不再信任任何标榜为“可靠”的服务。

计划做 3 台服务器互为热备,在家用一台服务器每日备份 3 台线上服务器所有数据,每周刻多分 DVD 保存,并把 DVD 邮寄至不同住处。

目前能做的也就这些了,希望我的教训给朋友们一个警示,自己保证数据安全,不要相信任何人。

残酷的现实,让我很不情愿地接受一个新的态度:

这个世界上,唯一能让我信赖的,就是我自己。

特别的日子

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

1

结束了杭州5日游,结束了上一份值得回味的工作,休息了几天,回到自己久别的家。

在路上,突然想到今天是个特别的日子。不是今天特别,而是今天加上6个月,我就27了。

很早以前,我有个计划,给自己6个月的时间,从零开始,专心做一个网站。

现在我已经放下了所有的事,从今天开始,执行我的计划。

就算鸣志吧,6个月后看结果!

[童话] 河蟹 蜘蛛 墙

Posted on : 10-04-2009 | By : leakon | In : 愤青, 转载

0

一只河蟹在路上走,抬头一看,一只蜘蛛正在墙角织网。

河蟹:你这网备案了吗?
蜘蛛:啥,我织个网还要备案啊?
河蟹:当然要备案了,将来要是出个啥事,也能查到这是谁的网啊!
蜘蛛:……
河蟹:赶紧停下去备案,没有备案你的网就不能织,织好我也得给你剪断。

河蟹晃了晃他的两个大钳子,蜘蛛慌了神,赶紧屁颠屁颠跑去备案。蜘蛛还是第一次去这个部门,他发现该部门是一群蜗牛在负责。

好多天过去了,蜘蛛的备案还没拿到,去蜗牛那里问了好几次,都说正在处理。蜘蛛太饿了,于是偷偷织好了自己的网。

有一天早上起来,蜘蛛伸了个懒腰,去吃早餐,结果发现自己的网不见了。邻居们告诉他,河蟹二话不说,直接就把网给剪了。

蜘蛛很生气,真想找河蟹去拼命,可是想想河蟹的大钳子,还是作罢了。

好心的草泥ma偷偷告诉蜘蛛,墙外边织网是不需要备案的。蜘蛛很高兴,虽然墙很高很高,他还是努力爬了过去。果然,墙外风和日丽,景色无限,重要的是没有可恶的河蟹来烦人。

可是时间长了,蜘蛛又开始有点怀念了,墙里面有些虫子美味又弱智,想起来就流口水。可惜这墙太高了,这些弱智的虫子不知道怎么飞出来。

于是蜘蛛翻过墙回来,果然不出他所料,蜗牛们已经审议通过了他的备案。蜘蛛迅速在老地方织了一张新网,墙内的虫子们真是又傻又美味啊!

有一天中午,蜘蛛突然感觉到他的网剧烈颤动,睁眼一看,一对正在xxoo的苍蝇不小心撞到了网上。蜘蛛已经吃饱了,正好正午骄阳似火烤得受不了,他笑着骂了一声“傻X”,就躲回洞里睡午觉去了。

迷糊中突然听见有人喊,蜘蛛揉着眼出来一看,原来是河蟹。

河蟹在下面指着那一对苍蝇,歇斯底里地朝他嚷:“你看看,你看看!多低俗!多色情!你有没有社会公德心啊?!你这多损害青少年身心健康你知道吗?”

说完,河蟹挥动自己的钳子,把蜘蛛的网剪了个粉碎。

蜘蛛心疼地看着被剪碎的网,心想:“我纳税养着你,你怎么能这么没人性呢。”可是他又对河蟹无可奈何,一番思索之后,他和草泥ma依依惜别,爬到了墙外。

蜘蛛从此过上了幸福的生活。

[注] 一般人都认为蜘蛛就一直待在蛛网的中间,本童话中蜘蛛钻进洞里休息的部分有悖科学事实。实际上,蜘蛛也在进化,蛛网也在发展,现在已经进入 Web 2.0 时代了,大量蜘蛛在织网时都会因地制宜织一个洞。欲了解更多 Web 2.0 知识,请参考这里

转自:http://qingbo.org/archives/586.html

FCKeditor 2.6 安装 配置 问题 图片上传

Posted on : 09-04-2009 | By : leakon | In : Symfony, Web开发

0

今天给使用 Symfony 的项目装了 FCKeditor 编辑器,配了图片上传。

遇到一些问题,总结下。

安装时,为了简单,最好把解压的 fckeditor 文件夹放在 web/ 目录下。

在模板中加入编辑器很简单:

$webDir = sfConfig::get(’sf_web_dir’); // DocumentRoot 的服务端路径
$editorInclude = $webDir . “fckeditor/fckeditor.php”;
require_once($editorInclude);

$oFCKeditor = new FCKeditor(’detail’) ; // form 表单字段名称是 detail
$oFCKeditor->BasePath = ‘/fckeditor/’ ; // 客户端访问编辑器资源文件的路径
$oFCKeditor->Width = ‘100%’; // 宽
$oFCKeditor->Height = ‘100%’; // 高
$oFCKeditor->Value = $articleItem->detail; // $articleItem 是 ORM 对象,直接引用 detail 字段
$oFCKeditor->Config = array(
        ’AutoDetectLanguage’ => false, // 关闭浏览器语言自动检测
        ’DefaultLanguage’ => ‘zh-cn’ // 设置简体中文
);
$oFCKeditor->Create() ;

设置完了,刷新页面,直接可用!很简单。

已经检查的问题,可以很好地处理 XSS 问题,在编辑器里填写 <script>alert(123)</script> 这样的字符串,都会转义成纯字符,不会被浏览器解析为 HTML 代码。这在编辑器和最终页面都可以正常显示,需要注意的是输出的时候都要加 htmlspecialchars 转义,这是必须养成的习惯!

图片上传的问题。

默认是关闭的,修改 fckeditor/editor/filemanager/connectors/php/config.php 为:

$Config['Enabled'] = true;

$Config['UserFilesPath'] = ‘/uploads/’; // 这是 Symfony 自动生成的目录。

现在可以上传了,不过会遇到 2 个问题。

问题 1:点击“发送到服务器上”按钮,浏览器 alert 一个错误,显示“Error creating folder “redirect:/index.php” (Can’t create redirect: directory)”。参考了“在symfony中使用FCKeditor上传图片附件” 这篇文章,得到了很好的解决。是 .htaccess 造成的。最简单的办法是在 uploads 目录下再放置一个 .htaccess,关闭 rewrite 即可,内容如下:

Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
  RewriteEngine Off
</IfModule>

问题 2:上传文件后修改文件名。fckeditor 默认是保留原有文件名。英文名的文件还勉强能用,如果是中文文件名就麻烦了。最好是统一按照自己的命名规则修改文件名。这时编辑 fckeditor/editor/filemanager/connectors/php/io.php,修改一个函数:

function SanitizeFileName( $sNewFileName ) {
  $arr = explode(’.', $sNewFileName);
  $ext = array_pop($arr);
  $filename = date(’Ymd_His_’) . rand(1000, 9999) . ‘.’ . $ext;
  return $filename;

把原函数改名作为备份。这函数就是保留了扩展名,把主文件名按照日期编码。呃,为了更好地保存文件,其实还应该把扩展名统一大小写,我记得有一个 pathinfo 函数,返回值有一个 extension 字段就是扩展名。其实过程都差不多,您自选吧。

总的说来,fckeditor 给我的感觉是安装简单,功能强大,代码逻辑清晰,便于修改。

赞一个~~

另:推荐一个 Blog

4’s symfony blog

这兄弟很深入地了解 Symfony 框架,我已订阅了他的 RSS,每天学习中……

睡了,晚安……

软件架构师应该读上两遍的十篇论文

Posted on : 29-03-2009 | By : leakon | In : Book

0

看到别人写的标题是:所有程序员都应该至少读上两遍的十篇论文。

我看了下英文原版地址:

10 Papers Every Software Architect Should Read (At Least Twice)

我觉得应该翻译成软件架构师~~

原文引用如下:

Earlier today I read a post by Michael Feathers Called “10 Papers Every Developer Should Read (At  Least Twice). I knew some of the articles mentioned there and learnt about few interesting ones.I liked it so much,  I thought I’d compile a similar list for software architects - based on stuff I read over the years.

1. The Byzantine Generals Problem (1982) by Leslie Lamport, Robert Shostak and Marshall Pease - The problem with distributed consensus
2. Go To statements considered harmfull (1968) - by Edsger W. Dijkstra - Didn’t you always want to know why ? :)
3. A Note on Distributed Computing (1994) - by Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant - Also on Michael’s list but it is one of the foundation papers on distributed computing
4. Big Ball of Mud (1999) - Brian Foote and Joseph Yoder - patterns or anti-patterns?
5. No Silver Bullet Essence and Accidents of Software Engineering (1987) - Frederick P. Brooks - On the limitations of Technology and Technological innovations.
6. The Open Closed Principle (1996) - Robert C. Martin (Uncle Bob) - The first in a series of articles on Object Oriented Principles (you remember the debate on SOLID...)
7. IEEE1471-2000 A recommended practice for architectural description of software intensive systems (2000) various- It is a standard and not a paper but it is the best foundation for describing a software architecture I know.
8. Harvest, Yield, and Scalable Tolerant Systems (1999) Armando Fox, Eric A. Brewer - That’s where the CAP theorem was first defined
9. An Introduction to Software Architecture (1993) - David Garlan and Mary Shaw - one of the foundation articles of software architecture field (although based on earlier work by the two)
10. Who Needs an Architect? (2003) Martin Fowler - Do we or don’t we?

I could come up with quite a few more articles not to mention books that aren’t in this list. However these are definitely some of the most influential papers I read.

我得好好读读~~

Apache ReWrite QUERY_STRING 问号 ?

Posted on : 28-03-2009 | By : leakon | In : Web开发

0

看一条应用中简单的 rewrite 规则:
将请求:
http://www.leakon.com/soft/install?ver=2.0
rewrite 为:
http://www. leakon.com/my/soft/install.php

配置文件 httpd.conf 加上如下配置:

RewriteCond %{QUERY_STRING} ^ver\=([0-9]+\.[0-9]+)?$ [NC]
RewriteRule ^/soft/install$ http://www. leakon.com/my/soft/install.php?[L]

请注意配置中的两个问号。

请求时,从 QUERY_STRING 取得 url 的查询字符串,这里只获取了 ver 的值,而且限定是带浮点的数字,ver 之后的查询字符都被忽略。实际上是用到 ? 来终结。

官方文档解释为:
注意:查询字符串
Pattern 不会按照查询字符串进行匹配。为了达到这个目的,你必须使用一个带有 %{QUERY_STRING} 变量的 RewriteCond 指令。

当 然,你也可以在替换字符串中创建包含查询字符串的 url:在替换字符串中使用问号,以标明其后的部分应该被重新注入到QUERY_STRING中。

而要删除一个已有的请求串,则可以用问号来终结替换字符串。为了联合新旧查询字符串,请使用[QSA]标志。

Advertise Here