Archive

Posts Tagged ‘programing’

Sikuli介绍

August 26th, 2010 李新阳 No comments

Sikuli(在墨西哥维乔印第安人的语言里是”上帝之眼”的意思)是由美国麻省理工学院开发的一种最新编程技术,使得编程人员可以使用截图替代代码,从而简化代码的编写流程。从它研究方向上看,是一种编程技术,但是该技术还可以用于进行大规模的程序测试,脚本程序编写使用的是python语言。

上面是对Sikuli一种比较官方的介绍,上周末我下载下来玩儿了一下,直接上图应该可以说明Sikuli有什么功能。(图中是我写的一个Sikuli程序,可以在我的网站里找到搜索框,输入Sikuli,然后点击搜索按钮)

相关网址:

它能干什么实际工作啊?我也说不清。也许可以做下面几个事情吧:

  • 自动测试
  • 自动下载/网页访问脚本
  • 恶作剧

Related posts

Categories: IT技术 Tags:

Python VS Ruby

August 23rd, 2010 李新阳 No comments

中午和三火兄饭后百步走的时候聊到Python和Ruby,发现Python的作者是荷兰的,Ruby的作者是日本的。联想起前些日子南非世界杯上日本和荷兰比赛时候的段子:

一个嫖娼业最发达的国家战胜了一个AV业最发达的国家,这个故事告诉我们,实践是检验真理的唯一标准。

Related posts

Categories: 八卦八卦 Tags: , ,

支持OpenID的网站

July 4th, 2010 李新阳 No comments

之所以整理这个表格,是因为各家号称支持OpenID的站点常有这样那样的问题,不是一句两句的事情。这不是一个完整表格,只是我感兴趣的和调研了的的一些。可以看到国内对OpenID支持的很不怎么样,如果QQ开发QQ号作为OpenID就好了。

体验了这些站点后一个基本结论是:It works! 但用户体验真是sucks! 无法投入商业使用。但OpenID的一些竞争者可以商业使用。(这个话题找机会详细开一篇文章说。坑填上了,见:OpenID的用户体验

站点名称 服务 OpenID URL 问题和备注
LiveJournal RP/OP http://username.livejournal.com 发起建立OpenID的人。未测试
Google OP http://www.google.com/profiles/lixinyang

https://www.google.com/accounts/o8/id

只允许Google帐号登录别人,不允许别人帐号登录Google
Facebook RP NA 只允许别人帐号登录Facebook,不允许Facebook帐号登录别人
Yahoo RP/OP https://me.yahoo.com/lixinyang78 用户在登录过程中收到了Yahoo明确的警告
WordPress OP http://lixinyang.wordpress.com 登录过程慢,不知道是不是RP
AOL OP http://openid.aol.com/lixinyang 不知道是不是RP
myspace OP www.myspace.com/username 未测试
人人网 类OP 不是标准的,应该是私有协议,需要继续调研
支付宝 类OP 不是标准的,应该是私有协议,需要继续调研
京东 类RP 它就是一个使用者,别人提供什么协议它就用什么协议接入

Related posts

Categories: IT技术 Tags: , , , ,

OpenID原理和登录过程

July 4th, 2010 李新阳 3 comments

听闻OpenID好久了,但一直没具体看过它的原理,最近在准备一个互联网产品,周末想起来好好看看OpenID是否可以用。现将学习所得记录一下。

OpenID体系中的参与者和角色,OpenID登录过程中有三种角色:

  • User:网站访问者操作的浏览器
  • RP:Relying Party,用户要登录的网站
  • OP:OpenID Provider,提供OpenID帐号的网站,验证用户名密码的一方。
  • 举例:苍井空使用自己的Google帐号登录lixinyang.com。User是苍井空,RP是lixinyang.com,OP是Google.com

OpenID的登录过程,我不细讲了,下面三个图都是来说明的,直接上图。需要说明的是这个登录过程导致的几个问题:

  • User/RP/OP三者间网络两两都需要联通,所以它们一定要在“墙”的同侧。中国特色的问题,谁让别人用的是internet,我们用的是chinternet。
  • 用户登录过程中会看到OP的页面,总的来讲这导致用户很不习惯。也有些许好处 — 通过傍一个NB的大款来增加自己的可信性。(用户在登录lixinyang.com的过程中看到了Google登陆页)
  • 一个登陆过程中User/RP/OP之间有七八次交互,而且经常横跨大洲,所以过程经常很慢。
  • User似乎一定要是浏览器,而不能是自有客户端。(这条需要进一步调研)

Related posts

Categories: IT技术 Tags: , ,

推荐wurfl机型库

July 2nd, 2010 李新阳 No comments

今天查看google统计发现,这篇“告诉你User-Agent的含义 是什么”的博文访问量还是很高的,大家都是搜“user- agent是什么 ”来到这个页面的。

既然大家这么关心user-agent,那我顺别推荐一下最近公司应用的开源机型库 — Wurfl。作为一个机型数据库,wurfl最大的优点是数据全。提供的API也还算清晰方便,Java/PHP API都有,数据结构简单、清晰。各位想写机型库代码的朋友,建议还是以它为基础来做吧,省不少力气。感谢吴晓华的推荐。

BTW:今天Google CEO施密特说“手机已经成为计算技术最热门的领域,最聪明的开发人员在编写应用程序时首先考虑的手机平台,其次才是Windows、Mac 等桌面操作系统”。

Related posts

Categories: IT技术 Tags: , ,

Tomcat7.0新特性

July 1st, 2010 李新阳 No comments

今天看到Apache发布了Tomcat 7.0,心中竟有一丝唏嘘 — 原来赖以谋生、每日厮混的Tomcat现在自己竟然如此不在意了,beta都发布了才想着去看它的新特性。摘录几个Tomcat 7.0的新特性吧:

  • Servlet 3.0:有不少新的有趣的东西,比如我比较感兴趣的:异步处理、Servlet可动态部署、内建文件上传支持。还有我不太感兴趣的:注释替代配置、插件体系。详见这里
  • JSP 2.2、EL 2.2
  • 增加了web application内存泄露的检测和防护。

详见:tomcat 7.0 change log

Related posts

Categories: IT技术 Tags: , ,

推荐一篇介绍Thrift的文章

June 22nd, 2010 李新阳 2 comments

http://jnb.ociweb.com/jnb/jnbJun2009.html

写的非常不错的文章,对体系结构、运行时、性能测试、应用场景都有介绍,而且比较客观。而且其中明确回答了几个问题,例如:

  • Thrift客户端运行时候都需要什么,需要C++那堆东西吗?
  • Thrift生成的代码帮我们解决了哪些问题?它对我们写Service的服务器端提供了哪些帮助?
  • 一个Server可以提供多个Service吗?
  • Thrift支持哪些数据传输格式(Protocol)和传输方式(Transport),什么时候该用哪个。

更多内容请阅读这篇文章吧。

Related posts

Categories: IT技术 Tags: ,

Thrift演示代码-Cache服务器

June 20th, 2010 李新阳 No comments

利用这个周末终于写了个thrift的demo代码:Cache服务器。下面是三部分代码:

thrift文件Java服务器端和客户端代码Python客户端代码

比较简单,就不逐行讲解了。但是这个代码想要跑起来显然也不是很容易的,因为需要配置thrift运行时,没有动手操作过的同学一定会遇到问题。下面是thrif idl文件,为了演示所以接口定义的有些重复:

struct CacheEntry{
1: i32 key
2: string value
}

service CacheService {
string get(1: i32 key),
void put(1: i32 key, 2: string value),
CacheEntry getEntry(1: i32 key),
void putEntry(1: CacheEntry entry)
}

BTW:写这个demo的过程中深切感到脚本语言写代码的快速,即使我没看过几眼python,但python demo依然比java写的快。java编译什么的太麻烦。

Related posts

Categories: IT技术 Tags: ,

各语言的Thrift Runtime

June 20th, 2010 李新阳 No comments

Thrift安装挺麻烦的,但Runtime很容易,防止大家的畏难情绪特别说明一下。

Thrift Java Rumtime: libthrift.jar,slf4j-api-1.6.0.jar,就这么两个jar包。

Thrift Python Runtime,就是/usr/lib/python2.5/site-packages/thrift/目录下一些python lib

这些运行时其实是不需要安装thrift,而只要在THRIFT_DIR/lib/java,THRIFT_DIR/lib/py目录里就可以直接安装相应语言的运行时。

Related posts

Categories: IT技术 Tags: ,

在Redhat上安装Thrift

June 20th, 2010 李新阳 No comments

本来在自己VPS的Ubuntu上安装好了Thrift,但发现那个VPS内存限制太严,用起来不爽,所以还是在公司服务器上安装Thrift吧。公司的机器都是Redhat,所以边装边记录一下安装过程。安装过程参考文档:

  • Thrift依赖的软件:http://wiki.apache.org/thrift/ThriftRequirements
  • 官方安装指南:http://wiki.apache.org/thrift/ThriftInstallation

Step1:安装依赖

  • autoconf版本低需要升级。./configue –prefix /usr, make, make install经典三步搞定
  • libtool版本低需要升级。./configue –prefix /usr, make, make install经典三步搞定
  • zlib版本低需要升级。./configue, make, make install经典三步搞定
  • 安装boost。./bootstrap.sh, ./bjam, ./bjam install
  • 安装ant。
  • 安装SLFJ,把它的jar包放在类路径下就好了。thrift java api运行的时候需要。

Step2:下载和编译Thrift

  • 下载:wget http://apache.etoak.com/incubator/thrift/0.2.0-incubating/thrift-0.2.0-incubating.tar.gz
  • tar -zxvf thrift-0.2.0-incubating.tar.gz
  • cd thrift-0.2.0
  • ./bootstrap.sh
  • ./configure, make, make install

Step3:生成运行时(Runtime)

  • cd ./lib/java
  • ant 生成libthrift.jar(thrift的java运行时)
  • cd ../python
  • python setup.py install(生成python运行时)
  • cd ../php
  • php的运行时我没有生成,因为它没有提供自动脚本,而需要手动操作。

Related posts

Categories: IT技术 Tags: ,