Play Framework 2.1(Scala) 调用 WebService 返回 Response

在 Play Framework 2.1 中用 Scala 编程进行 WebService 调用想返回 Response,或 xml, json 结果时,初入可能会费些功夫,因为无论是 WS.url.get,或 post, put 方法返回的都是个 Future[Response] 对象,也就是如何从 Future[Response] 如何分离出 Response 对象的问题。

这里我们 map, 或 match/case 也可以取出其中 response 对象来,如果要作为结果返回还要用到 Await.result() 方法。

为了不把代码出现在摘在页面中,这里插点内容,像是拖延时间的战术。

如果你在使用 Play Framework 2 with Scala 时碰到这个错误:

Error: Cannot find an implicit ExecutionContext, either require one yourself or import ExecutionContext.Implicits.global

依照 899 号 Issue, 解决办法是你必须加上这个引入语句:

import play.api.libs.concurrent.execution.Implicits._

因为里面有我们需要用到的隐式的 global 吧。

下面是我用来请求 WebService 返回 Response 的代码: 阅读全文 >>

抢鲜设置 JDK8 的编程环境,印象

和 JDK7 还没有热和,却开始关注 JDK8 起来了,JDK8 已进行到了 M8 开发预览版了,其中包含了一个千呼万唤的功能,即 Lambda 闭包的支持。在当前有对闭包特性的诉求,而 Java 本身不提供时,我们不得不转而求助于 JVM 上的其他的语言, 像 Scala, Groovy, JRuby 等。

不得不说 Scala 给我们带来了不少的快感,以致于想以更多的精力投入到 Scala 编程中去,不过还正在换取项目实践的机会。JDK8 引入 Lambda 后同样也是能更好的解决多核计算的问题,从程序员的角度来看,只要觉得 Lambda 能给我们带来无与伦比的灵活与便利性就足够了,水很深。

JDK8 还有增加的功能就是 JEP(JDK Enhancement-Proposal) 中的了。

来这里 http://openjdk.java.net/projects/jdk8/ 看看 JDK8 的里程碑

2012/04/26     M1     
2012/06/14     M2     
2012/08/02     M3     
2012/09/13     M4     
2012/11/29     M5     
2013/01/31     M6     
2013/06/13     M7     Feature Complete
2013/09/05     M8     Developer Preview 阅读全文 >>

35 个最好的 Ajax jQuery 自动完成插件,带例子

In this article,We are providing the best tutorials of Autocomplete in jQuery , ajax autocomplete and autosuggest with examples. jQuery Autocomplete an input field to enable users quickly finding and selecting some value, leveraging searching and filtering.In these days every body want fast and instant search,for this reason many popular search engines like google are using this feature ajax autocomplete.Combination of Php,ajax and jQuery autocomplete gives some extra feature to autosuggest.

1. Ajax AutoComplete for jQuery

Ajax Autocomplete for jQuery allows you to easily create autocomplete/autosuggest boxes for text input fields. Built with focus on performance – results for every query are cached and pulled from …
Ajax AutoComplete for jQuery

Read More Demo 阅读全文 >>

Varnish 的安装使用,及简单配置

Varnish 是一个开源的反向代理软件,所以可做缓存服务器进行 Web 加速,类似的有 Squid, Nginx, 和  HAProxy。但 Varnish 与其他三个相比性能更优,例如 Squid 的成名是它可作为上网代理服务器, Nginx 是一个优秀 Web 服务器,这两都非专业的 Web 加速器,而 HAProxy 与  Varnish 有的一比。

实际上 Varnish 的表现如何了,网上找来找去都讲这么一个实证:挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。并且要知道 Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,牛人一个。

Varnish 有什么特点呢?

VCL 进行配置,正则表达式条件判定进行规则设置
支持负载均衡和健康检查,多种条件请求分分
支持 ESI( Edge Side Include),即页面局部组件的缓存
URL 地址重写,响应头改写 阅读全文 >>

由 TextMate 2 重回 TextMate 1.5.11, 附注册方法

我最爱在 Mac 下用 TextMate 了,2.0 后 TextMate 可免费使用了。在 http://macromates.com/download 上目前提供有 1.5.10, 1.5.11 和 2.o alpha。而且还开源了,见 https://github.com/textmate/textmate。但 2.0 之前的版本要用的话仍是需要注册,TextMate 2.0 还是自动更新的,可在 http://macromates.com/download,也可在 https://github.com/textmate/textmate/downloads 下载。

本来可以用  TextMate 2.0 挺好的,可是在 2.0 安装 Scala 的 Bundle 后,即使为它设置了 SCALA_HOME 仍是无法在 TextMate 中运行 Scala 程序,于是不得已为这个还得用 TextMate 1.5.11 了。

在此附上 Scala 和 Play2 的 Bundle 的下载安装方法:

$  git clone git://github.com/mads379/scala.tmbundle.git; open scala.tmbundle
$  git clone git://github.com/drewhjava/Play2.tmbundle.git; open Play2.tmbundle

使用 TextMate 是必须注册的,否则只能试用 30 天,从网上找来注册方法: 阅读全文 >>

XSLT 调用 Java 的类方法 -- Tomcat 环境

很早很久以前写过一篇 在 xslt 调用 java 方法的日志 XSLT 调用 Java 的类方法, 其中介绍是使用 org.apache.xalan.processor.TransformerFactoryImpl 实现的例子,JDK 本身就是用这个的。但是在 Tomcat 环境下,它有它自己的 XSLT 默认实现是 net.sf.saxon.TransformerFactoryImpl,这时候 XSLT 中的内容略有不同,而且显示更简便一些。

这么说吧, xalan 支持以下两种调用 java 方法的方式,而 saxon 只认得第二种

1. 声明到包,调用时带上类名

阅读全文 >>

Using Network Link Conditioner in iOS 6

来到芝加哥后好久没写博客了,有些文章本想翻译后介绍给大家,可如今越发没先前那翻译的意愿了,所以不妨直接贴出原文如下:

I previously covered using Network Link Conditioner to test how your app does in less-than-ideal network scenarios. One of the inconveniences of using it is in order to test your app on a device, you have to take the extra steps to configure a proxy on your computer that your device can connect to over a wi-fi connection. Well, not anymore. With iOS 6, Apple has given us Network Link Conditioner right on the device.

To get started with Network Link Conditioner, first your device must be set up as a developer device. If you haven’t done this yet, you’ll need to go to Xcode, open Organizer (Shift-Command-2), select your device, and click the button that says Use for Development to add the device your developer account. Once you’ve done that, you should be able to open Settings on your device and see a Developer menu near the bottom, just above the apps list. Tapping on that reveals some helpful settings, Network Link Conditioner Status obviously being the one relevant to our interests here. 阅读全文 >>

扩展 JUnit 4,使用定制的 Runner

JUnit 的测试用例总是由 Runner 去执行,JUnit 提供了 @RunWith 这个测试类的 Annotation, 可来指定自定义的 Runner。如果未指定特别的  Runner,那么会采用默认的 Runner,可能不同的环境,如 Eclipse,控制台下会有不同的默认 Runner。

如果不清楚 Runner 是什么,那么可能见过 @RunWith(SpringJUnit4ClassRunner.class) 这个东西,它有助你加载 Spring 的配置文件,及与 Spring 相关的事物。

那么自定义的 Runner 有什么用呢?它可以截获到 @BeforeClass, @AfterClass, @Before, @After 这些事件,也就是能在测试类开始和结束执行前后,每个测试方法的执行前后处理点事情。

比如说从外部读取内容进行初始化测试数据,而且 JUnit 本身就提供了 @RunWith(Parameterized.class)  这个参数化 Runner,用了为带参数测试方法循环填充数据进行测试。JUnit 的参数化测试比 C# 还是要笨拙一些,C# 直接用方法注解一行行设置参数,我想 JUnit 稍加定制的话也行的。 阅读全文 >>

使用 JDK 5 后的线程并发,Callable, Future, ExecutorServie ...

被问及 Java 多线程,多会想到 Thread, Runnable,更通常是用 new Thread(){public void run(){...}}.start() 来启动一个线程。那都是 JDK 1.5 之前的年代了,现在还这么回答就 Out 了。用用  JDK 1.5 给我们带来的  java.util.concurrent 吧,更酷了。这里不涉及它的并发集合类,同步互斥机制,只说线程及线程池的应用举例。

1. 新的启动线程的方式:

阅读全文 >>

正则表达式之环视(Lookaround)[转]

1       环视基础

环视只进行子表达式的匹配,不占有字符,匹配到的内容不保存到最终的匹配结果,是零宽度的。环视匹配的最终结果就是一个位置。

环视的作用相当于对所在位置加了一个附加条件,只有满足这个条件,环视子表达式才能匹配成功。

环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视。顺序环视相当于在当前位置右侧附加一个条件,而逆序环视相当于在当前位置左侧附加一个条件。

表达式

说明

(?<=Expression)

逆序肯定环视,表示所在位置左侧能够匹配Expression

(?<!Expression)

逆序否定环视,表示所在位置左侧不能匹配Expression

(?=Expression)

顺序肯定环视,表示所在位置右侧能够匹配Expression

(?!Expression)

顺序否定环视,表示所在位置右侧不能匹配Expression

  阅读全文 >>