山寨与中国

话说今天和一印度同学约好在Postgraduate Lounge聊技术问题,结果我们从JAVA聊到了.NET,从Oracle聊到了IBM,最好竟然聊到了山寨这个话题,我非常佩服我们的吹水和跳跃思维能力。

在 我向这位同学解释啥叫山寨的时候,有意思的事情来了,因为我不知道山寨到底怎么解释。如果我说Shanzhai吧,是拼音,他听不懂;如果我说山寨是 Fake stuff吧,这不符合山寨精神的含义。于是,我告诉他:啥叫山寨?山寨就是Chinese-version Facebook, Chinese-version Twitter, Chinese-version Nokia还有Chinese-version Superstars……

只听见他沉思了一下,然后大喊一声awesome,然后来了句比较冷的话:早说嘛,我们全家都是中国山寨手机的消费者,便宜还好用……

然后我给他展示了一个NB的山寨作品,那就是校内网;他还问我校内的意思是什么……看来已经对中国的山寨文化感上了兴趣。

”管中窥豹,可见一斑“。看来山寨文化已经从中国蔓延到国际了,他们或许不知道lenovo在中国被称为联想,本是一家中国公司;但他们绝对知道自己手上的水货手机的原产地是中国。

我不知道这是一件值得高兴还是一件悲哀的事情,或者兼而有之。

但 至少,中国的产品文化已经向前迈进了一步,从中国产品1.0的Made in China,迈向了famous-brand-like products from China的2.0时代,啥时候去掉这里的like一词,啥时候中国就真正强大了,也就是3.0时代了,也就是传说中的Product of China.

Tags: 山寨

实例分析setTimeout和setInterval的区别

理解编程中某个对象、方法和属性的最好方法,莫过于通过不同实例对其进行验证。

在JavaScript中,setTimeoutsetInterval是window对象的两个不同方法;我们通常利用这两个方法来重复执行某个代码段或者function,以实现网页上的一些“动态”效果。

有意思的是,它们的用法几乎完全一样,都是:

setTimeOut(expression, timespan)

setInterval(expression, timespan)

第一个参数expression是需要调用的function;第二个参数timespan是指定延迟(等待)多少秒才调用参数一中的表达式,单位是微秒milliseconds。

既然这两个方法都是延迟一段时间后执行某个表达式,那么,它们的功能不就一样了吗?用我们的膝盖想想都应该知道,如果这两个方法的功能完全一样, ECMAScript开发组何不将他们合并成一个方法?

»阅读全文

Tags: javascript

五星红旗与美国白宫

很久没写博了,因此最近在忙着做一个最新的项目,相信过不了多久就可以和大家见面了。

据说,今年中国60年华诞前夕将有一面五星红旗在白宫广场升起,很好很强大。中国,再也不是那个60年前的中国了。

值得思考的是,天-安-门是否有气度照耀自由女神像的光辉呢?如果有,在何时?

Relationship between WebServices and Business Processes

What is the relationship between WebServices and business processes?

WebServices can be used as a implementations of activities within a business process.

Business processes in turn can be externalized as WebServices.

Web服务与商业流程的关系是什么?

简单来说,Web服务就是一个商业流程的具体实现,而反过来讲,商业流程是Web服务的抽象。

Tags: web service

绿坝花季护航的安全漏洞与有关部门的责任心

国外媒体(纽约时报华尔街日报)已经开始热烈的关注国内政府发布的这款信息监控软件了。于是,一个月前还名不见经传的一款软件,绿坝-花季护航,瞬时成为国内外媒体关注的焦点,也体验了一把如芙蓉姐姐式的一夜成名。

我这篇文章不想谈国家颁布这个政策的是与非,也不谈论这款软件的公关能力,只想谈一下这款软件的安全漏洞与“有关部门”的责任心问题。

美国密西根大学的研究者与昨天公布了一份对绿坝-花季护航的研究报告,原文可以在这里可以查看

绿坝花季护航的安全漏洞与流氓行径

密歇根大学的研究报告(以下简称“报告”)明确指出了当前版本的绿坝-花季护航存在的两个危险安全漏洞,这两个漏洞均可能导致安装此软件的电脑被恶意的控制

*部分内容翻译自这一报告,版权归原作者所有。

1. 网页过滤漏洞

绿坝软件其中一个网页过滤功能的原理是:首先拦截网络数据包,然后分析用户所访问的网站是否在黑名单内,如果是,则做出相应的反应。软件通过socket API引入了一个名叫SurfGd.dll的库文件来实现这一监控功能,当用户访问某个网站时,软件中对应的程序会检查这一网站的网址,并与“黑名单”列表相比较,最后记录这个网站的网址。

报告中指出,绿坝在处理网页请求时存在程序处理错误。由于程序代码在处理网址URLs时采用定长的缓存,一旦出现某个网址URL过长,会导致缓存溢出并中断程序堆栈。简单来说,任何一个恶意网站都可以通过网页重定向的方式将用户引导到非法URL,并控制此用户的电脑

报告中还科学性的给出了一个演示链接:通过网页重定向,将用户引导至一个超长URL,使程序产生上述缓存溢出,最终导致安装有此软件的用户浏览器崩溃。

安装有绿坝软件的朋友,不妨点这里试试。

2.黑名单列表更新漏洞

此漏洞由绿坝程序使用非安全的C String (字符串) 库读取过滤文件所引起。此漏洞可能导致绿坝的制作者,或任何第三方模仿用户行为——在更新黑名单过滤文件列表的同时,在客户机上运行恶意代码或安装非法软件。

用户可以在绿坝的配置选项中,选择自动更新“黑名单列表”的自动更新。

另外这份报告还发现了绿坝-花季护航一个比较流氓的地方:

绿坝允许拥有管理员权限的用户卸载这一软件。我们测试了这一卸载功能,并发现它的主程序部分确很快就被卸载移除,但是,一些日志文件并没有被自动清除,所以,网站访问记录仍然隐藏于用户的操作系统中。

从以上两点漏洞和一点流氓行径,我觉得或许可以得出以下几个结论:

有关部门的责任心

很难想象这么一款不负责任不成熟的软件将被安装在号称拥有网民世界第一的中国的千家万户的电脑上。

中国网民电脑的安全和隐私何在?一个“暴风影音门”就已经导致了几个省的网络中断,我相信如果出现大规模漏洞恶意攻击,这款软件也好不到哪去!

连那些非软件编程的非专业人士都能看得懂的漏洞都会出现,有关部门的责任心被谁吃了?被绿坝-花季护航吗?

在此我呼吁,如果你想保护你的电脑,希望你的隐私不被侵犯,请不要在电脑上安装绿坝-花季护航这款软件,至少现在这个版本不要安装。

Tags: 绿爸

使用PHP编程获取Page Rank (PR)值

衡量一个网站和某个网页权重的两个非常重要的指标,分别是:Google Page Rank (简称PR值)和Alexa排名。虽然它们不是衡量一个网站好坏的绝对标准,但可以从一定程度上说明网站的受欢迎程度,访问流量等基本信息。

与Alexa提供第三方开发者API接口不同,Google本身并不提供API接口让程序员编写查询程序,所以要直截了当的从官方获取一个网站的PR值,唯一的方法可能就是Google工具条了。

现在问题来了,像我们经常查PR值的ChinaZ,123Cha这样的第三方网站的PR信息是从哪获取的?莫非他们与Google有“一腿”,Google单独为他们提供了接口?

事实上没那么神秘。正所谓“魔高一尺,道高一丈”,既然Google Toolbar提供PR值的显示,那么就从工具条上入手吧。事实上,很多先行者很早之前就已经为我们找到了关于这个问题的解决方案。

这个Page Rank Code网站提供的代码就是非常典型的通过破解Google工具栏获取PR值的一例。这个网站上已经提供了很详细的PHP执行PR值查询的函数以及具体使用办法,我这里就不贴了。

具体源代码和演示代码请点击这里查看。

需要特别注意的是:作者在下载页面中特别指出,某些服务器IP(比如我现在博客所在的服务器)如果被Google封掉的话,是查不到正确的PR值的

讲到这里,上面那个问题就自然而然的解决了,第三方查询PR值的核心思想都是破解Google工具条,可能区别就在平台和语言不同罢了。

AJAX Sudoku: 网页版的超炫数独游戏

喜欢玩智力游戏的同学对数独这个游戏一定不陌生,但大多数情况下,大家玩得都是手机版、单机版和Flash版,很少有非Flash网页版的数独游戏。

今天在网上闲逛找项目灵感时,发现了一个基于AJAX的网页版数独游戏AJAX Sudoku

整个游戏基于jQuery+PHP+qqwing制作,不过这个游戏将IE浏览器彻底鄙视了一回:IE浏览器用户使用时将会出现很多问题,所以,要获得最佳游戏体验,最好使用Firefox,Opera,Safari或者Chrome中的一款

网页AJAX版数独游戏截图

游戏方法非常简单:

选定一个方格之后,按照数独游戏规则,通过电脑键盘输入一个数字即可。

游戏网址:http://deepliquid.com/projects/sudoku/

Dirty Markup:一个在线精简修复网页文件的工具

Dirty Markup 是一个abeautifulsite推出的在线修复、整理网页文件的工具。

它能够自动修正一个网页文件中潜在的错误HTML或XHTML写法,同时规范化网页源文件布局;使其尽可能符合W3C规范,让一个网页文件最大限度的兼容多浏览器。

用一个例子来说明Dirty Markup的用法。

首先,我写了一个很简单的错误的HTML布局代码。

<div id=h> 
<font color=red><p>www.cnSaturn.com</p>
</font> 

以上HTML代码至少有两处错误:

  1. div标签未闭合
  2. 块级元素p被font标签所包含

以上HTML代码还至少有两处安全隐患会导致它在不同浏览器中表现不同:

  1. 不是一个完整的HTML文件
  2. 标签的属性对应的值未使用双引号

»阅读全文

Tags: html

给博客添加了“阅读分享”Bookmark功能

之前一直是在Java或.NET环境下编写Web Service客户端,今天编写了第一个在PHP下的WS客户端,而且应用在了这个博客程序上:本地调用Delicious的API服务,获取里面指定帐号的书签文章信息。

由于美味书签提供的是RESTful类型的WEB服务,所以客户端的编写与在Java下思想上没有差别,可能就是工具的不同:

组合出一个HTTP请求-->发出这个请求-->得到请求内容-->解析(解组)请求内容-->显示有用的信息。

具体来说,对于这个PHP调用Delicious API的实例上,上面的流程就变成了:

  • 使用CURL组合一个带用户验证的HTTPS请求
  • 得到响应内容信息,可以是XML或JSON其中之一
  • 使用PHP 5内置的SimpleXML来解析响应信息
  • 显示出来

经过大约1个小时的编写和调试,本博客的“分享阅读”(Bookmark)新功能就算测试成功了!

稍后我会写一篇文章完整介绍PHP下编写Delicious API客户端的思路,并且会提供实现代码。

关于Delicious

Delicious原名del.icio.us,是免费的社群性网络服务,用于交流网页书签网摘。它在2003年底上线,由约舒亚·沙科特(Joshua Schachter)开发。

Delicious不同于我的最爱或其他书签网站,主要用于和别人分享和交流书签,使用者亦可以在Delicious储存或管理私人书签(但需记得勾选"do not share")。

File:Delicious.pngDelicious的图示由四个不同色而同大小的正方形拼成一个较大的正方形,左上角为白色,右上角蓝色,左下角黑色,右下角透明。

Delicious已于2005年12月9日被Yahoo!所收购,但仍然会独立运作。在2008年中,网站推出2.0版本。新网站运行在新平台中,提高了页面的加载速度。亦使用了全新的搜寻引擎,令使用者更易找到所需。主域名亦会改为Delicious.com。

关于Delicious API

Delicious APIDelicious提供给第三方开发者的一个RESTful Web Service应用。通过这个Web服务,开发者可以按需获取Delicious提供的信息,比如书签信息和书签标签等,并将其显示在博客,其他网站或第三方应用程序上。

在PHP中进行3DES的加密和解密

PHP内置的mcrypt库支持多种块状加密算法,包括DES,3DES和Blowfish(默认算法)等。由于是块状加密(Block Ciper),mcrypt支持以下模式对输入字符串进行操作:CBC, OFB, CFB和ECB。

在这里,我写了一小段代码来测试PHP中的3DES加密和解密的实现过程。

以下示例所涉及到的参数如下:

  • 采用ECB模式
  • 192位Key (即24字节长度Key对超过Block Size的加密字符进行对应Mode操作)
  • ASCII Key 字节内容:ABCDEFGHIJKLMNOPQRSTUVWX
  • 需要加密字符串ASCII:www.cnSaturn.com

»阅读全文