Downgrade in Ubuntu

有时安装了一些高版本的软件,却又后悔,想回到低版本。其实这个降级过程是比较麻烦的,不过还好,总还是有办法的。

首先,查出安装过的版本号,以firefox为例:apt-get cache firefox,记住你要安装的某个低版本(version)

接着,咱们正式降级:sudo apt-get firefox=<低版本号>

还以firefox为例,它会引用其它好几个package,所以这些引用到的package也要一并降级。

如我今天将 firefox 从 3.62be 降级到 3.6 :sudo apt-get install firefox=3.5.7+nobinonly-0ubuntu0.9.10.1 firefox-3.5-branding=3.5.7+nobinonly-0ubuntu0.9.10.1 firefox-3.5=3.5.7+nobinonly-0ubuntu0.9.10.1

By javafuns on February 6, 2010 at 09:12 · Views: 4 · Permalink · Leave a comment
Categorized in: Uncategorized · Tagged with: 

Differences between WADL and WSDL 2.0 HTTP binding

本文翻译自《Definition Languages for RESTful Web Services: WADL vs. WSDL 2.0》的一部分

先对如下两个名词做一些解释:
WADL:Web Application Description Language
WSDL 2.0:Web Services Description Language

以下翻译取自该文最关键的部分,即两者之间的不同点:

尽管 WADL 和 WSDL 2.0 HTTP binding 在某种程度上非常类似,但它们还是有一些不同点。

Resources vs. Interfaces

WADL 是以资源为中心的描述语言。WADL 文档是由一组资源描述组成。与之相反,WSDL 是以接口为中心的描述语言。.
WSDL 2.0 描述是由一组接口定义构成,这些接口定义则是由操作定义构成。
在 WADL 里,甚至即使是一个复杂的商业应用也被描述为对资源的基本操作。

仅支持 HTTP  vs. 独立于传输协议

WADL 只支持对使用 HTTP 协议的 web 应用进行描述。
因为限定于 HTTP,WADL 要比 WSDL 2.0 更简单,后者设计目标是具有能够使用任何协议来描述服务接口的能力。

消息交换模型(模式)

一些人认为 HTTP 所隐含的唯一消息交换模式只是 request-response (in-out)。尽管事实上 HTTP 天生是 request-response,但它也能用于 one-way 和 solicit-response 消息交换模式。注意,HTTP GET verb 本质上就是 solicit-response,在这个意义上 GET 请求消息只包含资源标识符,用于接收资源表述。HTTP PUT 和 DELETE 事实上就是 one-way 操作,该操作的响应包含的是一个简单的状态消息(200 OK, 404 Not Found, etc.).
WSDL 2.0 定义了很多消息交换模式,例如 one-way (in-only) 和通知 (out-only),还有 request-response。尽管 WSDL 2.0 规范没有指定这样的绑定,但一些传输协议,如 SMTP 和 Message Queuing,本身就支持 one-way 和 notification。期待这些绑定规范将 WSDL 定义的消息交换模式映射到这些协议上。WSDL 2.0 规范的 HTTP 绑定扩展章节详细描述了如何利用 HTTP (状态码为 202 Accepted) 响应消息实现一个 one-way 消息交换模式。同时,基于 HTTP 的通知消息交换模式或许会使用类 comet 技术来实现。
不像 WSDL 2.0 那样谋求传输中立,WADL 只用于描述 HTTP-based web applications。因此,它的消息交换模式 (尽管 WADL 不会定义或使用这样的术语) 会更容易得到 HTTP 的支持。

一些人认为 HTTP 所隐含的唯一消息交换模式只是 request-response (in-out)。尽管事实上 HTTP 天生是 request-response,但它也能用于 one-way 和 solicit-response 消息交换模式。注意,HTTP GET verb 本质上就是 solicit-response,在这个意义上 GET 请求消息只包含资源标识符,用于接收资源表述。HTTP PUT 和 DELETE 事实上就是 one-way 操作,该操作的响应包含的是一个简单的状态消息(200 OK, 404 Not Found, etc.).   WSDL 2.0 定义了很多消息交换模式,例如 one-way (in-only) 和通知 (out-only),还有 request-response。尽管 WSDL 2.0 规范没有指定这样的绑定,但一些传输协议,如 SMTP 和 Message Queuing,本身就支持 one-way 和 notification。期待这些绑定规范将 WSDL 定义的消息交换模式映射到这些协议上。WSDL 2.0 规范的 HTTP 绑定扩展章节详细描述了如何利用 HTTP (状态码为 202 Accepted) 响应消息实现一个 one-way 消息交换模式。同时,基于 HTTP 的通知消息交换模式或许会使用类 comet 技术来实现。  不像 WSDL 2.0 那样谋求传输中立,WADL 只用于描述 HTTP-based web applications。因此,它的消息交换模式 (尽管 WADL 不会定义或使用这样的术语) 会更容易得到 HTTP 的支持。

无状态 vs. 有状态

尽管 REST 架构风格要求是无状态的,仍有人对术语“无状态”(stateless)是什么意思感到迷惑。

REST 环境中的资源,它的内部和它本身并不是无状态的。REST 的无状态与 URI 标识的资源之间的交互使用的协议有关。这意味着所有对满足一个请求所必需的信息都要在请求消息中携带。

资源本身(经常) 天生就是有状态的。一个银行账户余额资源显然是有状态的。我们可以给这个资源指定一个 URI。对该资源 URI 执行 HTTP GET 会随着时间的推移返回不同值,反映出因账户余额增加和减少导致的该资源的状态变化。
然而,如果 GET 是真正无状态的 (e.g. 不滥用 cookie),那么任何用户对该资源 URI 进行任何 HTTP get 操作,都总是返回该资源且只是该资源的一个表述。协议交互的无状态使得 REST 架构风格的缓存特性可用。缓存代理可以介于客户端和服务器之间,缓存 HTTP GET 的响应,随后将这个资源的缓存版本作为响应返回给其它 HTTP GET,只要初始服务器已经在初始响应消息里指定了恰当的 cache pragmas,指明何时缓存应当失效,等等。
从 RESTful 角度来看,HTTP 协议有一方面容易被滥用,因而违反了 REST 架构风格中的无状态约束:HTTP cookies. Roy Fielding,REST 论文作者,曾称 HTTP cookies 应该废弃,他说过如果让他再次设计,他不会把它们引入到 HTTP 协议中。尽管 cookies 可以按 RESTful 方式使用,但它们经常被滥用(从 REST 观点) 作关联会话状态(没有这种会话状态交互变得无意义)的一个途径。
举个例子,如果一个 cookie 被用来与某些会话状态相关联,如用户的邮编(随后会用于定义对天气服务的搜索),当使用不同邮编的其他人使用 HTTP GET 访问该资源 URI,URI 必然不会标识相同的资源 (用户邮编区域的当前天气)。在这种情形下,RESTful 对 cookie 的用法可能是用于追踪用户的交互,而使用 cookie 将请求与一些预先建立的会话状态进行关联显然是非 RESTful 的。
尽管 WADL 规范不要求 web 应用 (或与 WADL 所描述的资源的交互) 无状态,规范也没有提供任何 HTTP 的状态特性,例如 cookies。与之相反,WSDL 2.0 HTTP binding 特别提供了对 HTTP cookies 的用法和描述(See, WSDL 2.0 Part 2 Section 6.10).

认证

典型情况下, HTTP 认证会被自动处理,因为 HTTP 协议提供了当服务器在客户端没有为请求提供所要求 credentials 时而返回的标准的状态响应。客户端可以利用这些状态响应(e.g. 401 Unauthorized)触发对 credentials 的收集。
WSDL 2.0 支持 HTTP 认证,而 WADL 不支持。

URL 编码数据

许多 web 应用程序利用 URL 编码数据 (media type: “application/xwww-form-urlencoded”) 作为对资源基于参数化标准构建 URI 的途径,例如从一个 web form 中收集到的信息。
当前,尽管有许多用于定义一个 URI 模板语言的提案,但其中存在一些用于描述 URL 编码数据的不标准语言。

URI template

WADL 和 WSDL 2.0 HTTP binding 使用 URI 模板形式指定查询字符串参数。WADL 引用一个名叫 “URI template” 的草案(该草案作者同时也是 WADL 作者)。与之相反,WSDL 2.0 在 WSDL 2.0 HTTP binding 扩展规范中独自定义了一个 URI 模板。

Percent encoding in URL encoded data

WADL 没有提及 URL 编码数据的字符编码。WSDL 2.0 HTTP binding 明确说明怎样处理非 ASCII 字符。

用于描述消息内容的模式语言

WADL 和 WSDL 都提供了一种途径,通过这种途径,可以使用 schema 语言来描述要交换消息的内容。

WADL 更提供了包含 W3C XML Schema 和 RelaxNG [18] schema 文档的能力。

WSDL 2.0 只说明在描述中如何包含 W3C XML Schema 文档。

结论

每种规范都有其优缺点。WADL 简单,适用范围有限。WADL 局限于描述 HTTP 应用,不解决诸如安全等特性。与之相对,WSDL HTTP Binding 特性丰富,但复杂性随之增加,且仍缺乏对真正的以资源为中心的模型支持。

By javafuns on February 1, 2010 at 23:11 · Views: 21 · Permalink · Leave a comment
Categorized in: SOA · Tagged with: ,

Mockups For Desktop

这个工具可以用来模拟创建界面,非开源,但也有免费版,只是功能要少一些。

By javafuns on January 28, 2010 at 11:37 · Views: 20 · Permalink · Leave a comment
Categorized in: Java

应该使用 char[] 保存 Java 密码

以下内容引用《Java安全性, 第一部分: 密码学基础》:

存储/删除密码。如果密码是存储在 Java String 对象中的,则直到对它进行垃圾收集或进程终止之前,密码会一直驻留在内存中。即使进行了垃圾收集,它仍会存在于空闲内存堆中,直到重用该内存空间为止。密码 String 在内存中驻留得越久,遭到窃听的危险性就越大。

更糟的是,如果实际内存减少,则操作系统会将这个密码 String 换页调度到磁盘的交换空间,因此容易遭受磁盘块窃听攻击。

为了将这种泄密的可能性降至最低(但不是消除),您应该将密码存储在 char 数组中,并在使用后对其置零。(String 是不可变的,所以无法对其置零。)

.

By javafuns on January 28, 2010 at 10:40 · Views: 32 · Permalink · Leave a comment
Categorized in: Java · Tagged with: 

本博客终于又重新启用了

网络审查越来越严格,本博客虽不涉及时事、政治等敏感话题,亦遭受停机之不幸。

为免再次遭受此等不幸,本博客特声明如下:

  1. 坚决拥护党的领导,紧密团结在以胡锦涛同志为总书记的党中央周围 :-)
  2. 不谈政治,不谈时事,不谈社会话题

3. 本博只谈技术,只为混口饭吃

敬请广大网警和五毛们监督!

By javafuns on January 24, 2010 at 09:54 · Views: 35 · Permalink · Leave a comment
Categorized in: My Life · Tagged with: 

SSL协议基础知识(转载)

原文:http://210.40.7.188/NEW/SSL-SET/0_02.htm

第二章    SSL协议基础知识

2.1 SSL协议历史

1994年,网景公司设计了安全套接层(SSL)协议,最初,仅仅是为了在web浏览器和web服务器之间安全地传输私人数据如信用卡卡号,密码等。在1994年底,网景推出了SSL版本2,并第一次载入了一个商业浏览器——Netscape Navigator。1995推出了版本3,在1996年,一个国际标准组织(IETF)接管了SSL的工作,并将SSL协议重命名为安全传输层(TLS),它是建立在SSLV3基础之上的。在1999年,IETF推出TLS的版本1.0 (The TLS Protocol, Version 1.0, RFC 2246)。

2.2 SSL协议简介

安全套接层协议(SSL,Security Socket Layer)是网景(Netscape)公司提出的基于WEB应用的安全协议,它是一种在两台机器之间提供安全通道的协议。它具有保护传输数据以及识别通信机器的功能。安全通道是透明的,意思是说它对传输的数据不加变更。客户与服务器之间的数据是经过加密的,一端写入数据完全是另一端读取的内容。透明性使得几乎所有基于TCP的协议稍加改动就可以在SSL上运行,非常方便。

SSL安全协议主要提供三方面的服务:

(1)  认证用户和服务器, 使得它们能够确信数据将被发送到正确的客户机和服务器上;

(2)  加密数据以隐藏被传送的数据;

(3)  维护数据的完整性, 确保数据在传输过程中不被改变。

在数据传播之前,加密技术通过将数据转变成看起来毫无意义的内容来保护数据不被非法使用。其过程是:数据在一端 (客户端或者服务器端) 被加密,传输,再在另一端解密。

Read more »

By javafuns on December 7, 2009 at 14:24 · Views: 36 · Permalink · Leave a comment
Categorized in: Java · Tagged with: , ,

Java Annotations

原文:http://java.sun.com/javase/6/docs/technotes/guides/language/annotations.html

许多 APIs 需要模板代码. 例如, 为了编写 JAX-RPC web 服务, 你必须提供一对接口和实现. 这种模板代码其实可以由工具自动生成, 如果程序使用了注释进行修饰以指示哪些方法可远程访问.

其它 APIs 需要有与程序一起的额外附属文件. 例如 JavaBeans 需要一个与 bean 一同存在的 BeanInfo 类, 而 Enterprise JavaBeans (EJB) 需要一个 部署描述符. 如果这些文件中的信息随同程序在一块会更加方便, 也会不易出错.

The Java platform 已经有各种特定的 annotation 机制. 例如 transient 修饰符是一个特定 annotation 用于指示一个域应该在序列化时忽略, @deprecated javadoc tag 用于指示该方法不应该再使用了. 到了 Java 5.0, 平台具有常规用途的 annotation (也称之为 metadata) 设施, 允许你定义和使用自己的 annotation types. 该设施提供的语法可声明 annotation types, 对声明进行注释, 读取 annotations 的 APIs, 表示 annotations 的 class 文件, 和一个 annotation processing tool.
Read more »

By javafuns on December 1, 2009 at 22:43 · Views: 53 · Permalink · Leave a comment
Categorized in: Java · Tagged with: ,

外送 10 个 google wave 邀请

可以发 google wave 邀请了,可送10个,要的请排队。。。

By javafuns on November 26, 2009 at 21:28 · Views: 121 · Permalink · 2 Comments
Categorized in: My Life · Tagged with: 
  • Highest Rated

  • My PicasaPhotos

    2aed7a17aa9c1a124a90a720.jpg

    IMG_0666.JPG

    ff2d2ffa4907bb8458ee906b.jpg

  • RSS My del.icio.us

  • My RSS