2013年 十月 17日 周四 | tags: selenium, python, java, webdriver, test, code, -- (permalink)

前段时间我们头在搞一个分布式测试,使用的就是 Selenium 可以坑太多,最后应该是放弃了,因为我没见到回音,说实话这东西是bug挺多,而且在firefox上的版本兼容也有很大的问题,不过这不是我们讨论的问题,我们这里要讨论的是使用它来做简单的web测试。


2013年 六月 18日 周二 | tags: java, maven, css, -- (permalink)

这个问题是我的一个失误造成的,这是上一片文章的后续,我在使用正则做文本替换的时候没有注意到,这个正则在主干上是正常的,但是在分支上执行的时候使一行css少了一个引号,这个问题在浏览器中是暴露不出来的,之后在maven打包的时候对文件做压缩的时候才会出现,下面我们来看看是什么样的问题。

我们项目使用的是 yuicompressor-maven-plugin 做js和css的压缩,在压缩的过程中出现了下面的错误:

---------------------------------------------------
constituent[0]: file:/E:/opensource/apache/maven-2.2.1.RELEASE/lib/aether-api-1.13.1.jar
constituent[1]: file:/E:/opensource/apache/maven-2.2.1.RELEASE/lib/aether-connector-wagon-1.13.1.jar
constituent[2]: file:/E:/opensource/apache/maven-2.2 ...

2013年 六月 11日 周二 | tags: lesscss, maven, java, -- (permalink)

这其实是一个很简单的问题,本来并不打算写成一片文章的,因为这个文件和另外一个问题是一起的,就是我们在nginx上做css和js文件合并时遇到的,不过在这之前我还遇到了另外一个问题,就是我们开发环境是windows7,而nginx下有个静态文件合并的模块: http_concat_module ,是淘宝开源的,这个模块并不是nginx标准模块,所以要使用它需要自己重新编译nginx,具体如何编译我需要一段一点时间整理一下,在之后的文章中会写出来。

至于为什么要使用less是因为使用了 http_concat_module 之后css中文件的一些路径出现了错误,需要为css文件设置一些变量,其实使用maven的插件也可以进行变量替换,但是这样只能在maven打包的时候才能起作用,对于开发来说就不行,因为开发必须要求在编译的时候就生效。所以就需要使用maven的另一个插件lesscss-maven-plugin,这个插件的作用就是在编译的时候就能把less转换成css,这样做对我们最大的好处就是需要修改的地方是最少的,而且能一劳永逸的解决这个问题。

现在我们来说说这个插件如何配置:

添加插件

<plugin>
    <groupId>org.lesscss</groupId>
    <artifactId>lesscss-maven-plugin</artifactId>
    <version>1.3.3</version>
</plugin>

插件添加好后,就能在 pom.xml ...


2013年 五月 29日 周三 | tags: java, jdk8, -- (permalink)

5月23号,Oracle 发布了 jdk8 M7 版,这是一个Feature Complete,就是说它已经把所有特性和功能都加入。在翻看 M7 的文档时发现了 Locale.Builder ,在jdk7的时候加入过一个类似的:Locale.Builder, 下面我们来看看 Calendar.Builder

允许单语句设置

允许使用 set(int, int) 方法,为指定的Field设置值,如下:

import java.util.Calendar;
import java.text.SimpleDateFormat;
import static java.util.Calendar.*;

public static String testSingleStatement() {
    Calendar cal = new Calendar ...

2013年 五月 08日 周三 | tags: nginx, cas, ssl, java, https, -- (permalink)

公司准备对登录服务采用https,而登录服务采用的是cas,前段的是用nginx代理, 所以就有了之后的几个问题。

主要碰到了下面3个问题

  1. nginx中配置ssl
  2. cas中开启ssl
  3. java中导入证书

首先是生成我们的证书,我使用的是openssl:

  1. 首先是生成私钥: openssl genrsa -out server.key
  2. 接下来要生成CSR文件: openssl req -new -key server.key -out server.csr
  3. 最后就是生成证书文件: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

这里有我一个笔记是openssl的简单教程:openssl简单教程


生成证书后,就可以配置nginx了,打开nginx.conf,加入以下几行:

listen                 443 ...

2013年 三月 13日 周三 | tags: openssl, java, aes, arithmetic, -- (permalink)

开篇第一句话我想说, OpenSSL不支持与Java的对接 ,这是多么蛋疼的一句话,不过确实是这样,原因是在c中的填充方式和Java中的填充方式不一样,Java不支持c中的/0的填充方式。

具体信息请查看:OpenSSL和JAVA AES算法的问题总结

至于我为什么会写这篇文章呢,是我们的项目中有部分在网络传输的内容需要加密,所以就选用了AES的,服务端使用的是openresty 这是淘宝的一个大牛写的,他里面集成了LuaJit, 加密的部分使用的是resty.aes,而resty使用的是OpenSSL的C代码实现的加密解密。为了和OpenSSL实现对接,我就蛋疼的去简单的链接了下OpenSSL,在上面的文章中才指导OpenSSL并不支持Java,查了无数人的文章,很多人都对这个问题很苦恼,最后在 stackoverflow 里找到了一个大牛给出了一个解码的实现 stackoverflow 我根据这位大牛的代码简单的修改了一下,就做成了我需要的代码:

最后我想吐槽一下lua5.1居然不支持位运算,要5.2才支持,好吧,openresty集成的就是5.1所以我在实现lua的16位编码解码果然蛋疼了一下。


2012年 十二月 29日 周六 | tags: ftp, port, pasv, fxp, java, -- (permalink)

这是最近一礼拜遇到的一个很头疼的问题,由于我们的系统需要需要用到ftp的fxp进行两个ftp服务器之间进行数据传输。 但是就是在这上出现了让我很郁闷的问题,连着几天,一个坑接一个坑,连续解决了5,6个问题,到今天下午才算是把所有问题解决。

在讲述我遇到的问题之前我们先了解下几个概念:

首先是PORT模式和PASV模式,也就是FTP的主动模式和被动模式:


2012年 十二月 15日 周六 | tags: java, jrebel, -- (permalink)

首先我先承认我标题党了,其实完全算不上简述,只是我这两天使用JRebel的一点心得吧。 当然我用的是盗版啦,谁让我有一个高富帅的心却是一个吊丝的命呢。 至于如何破解什么的请自己到网上搜索。

进入正题,我使用的是 eclipse 4.2+RunJettyRun(jetty当然是8喽)+JRebel5.1 ,不过我用的破解的JRebel是5.0的, 直接覆盖,完全没问题。

首先说一下如何在通过RunJettyRun使用JRebel,其实很简单,只需要在启动的配置的 Arguments > VM Arguments 中加入 “${jrebel_args}”就可以了, 这样在启动的时候就能看到JRebel启动:

[2012-12-15 22:32:17]
[2012-12-15 22:32:17] #############################################################
[2012-12-15 22:32:17]
[2012-12-15 22:32:17]  JRebel 5.0.0 (201206080930 ...

2012年 二月 24日 周五 | tags: java, sprint, annotation, -- (permalink)

前几天在做一个异步的模块,简单点说就是上传文件后,后台异步解析,前台定时请求解析的日志,并显示,算是一个实时的给用户看到解析的情况和日志,很简单的一个工作,但是我却遇到了一个让我郁闷了2天的问题。

问题的起因是在我做完所有工作后发现异步没有执行,也就是说文件的解析方法是同步运行的,也就是说先解析文件,解析完毕后在返回页面,页面才能请求到解析的日志,但是这会已经解析完了文件,没有达打到之前的需求。

这 里先简单的说下Spring异步的用法,Spring异步的用法很简单,在需要异步的方法加上annotation @Async 声明自方法是异步调用的,同时还要在方法所在类上加上annotation @Service@Component 在Spring在加载的时候可以扫描到这个类,然后需要在配置文件中加入<task:annotation-driven />,这样就可以在Spring启动的时候,将异步处理器加入全局中,并在调用到有@Async的时候,异步调用。

上面简单说了下如何配置Spring异步,现在我说下我的问题,问题很简单就是配置类Spring 异步,并且确定配置正确,但是异步配置没有起效!问什么呢?我百思不得其解,没有办法,那就debug跟踪Spring的源代码。

在 debug的了几次之后,见到那的了解了Spring配置文件加载的方式,很简单,先加载application-context ...


2012年 二月 14日 周二 | tags: java, lambda, closure, code, -- (permalink)

这是我上个礼拜相对较闲的时候自己做的简单测试,应为那天正好在oschina上看到jdk1.8发布了开发者预览版,正好左右没事,就去下了一个,实验了一下java 的闭包。

java 闭包,也就是Lambda表达式,和python中的lambda是一样的,语法也挺相似:

String result = (String name) -> "Hello, " + name + "!";

下面我们来看个具体的例子:

首先定义一个接口:

interface Lamb {
    String str(String name);
}

之后我们就能在main方法中写下面的代码,编译并运行:

Lamb str = (String name) -> "Hello, " + name;
System.out.println(str.str("aaa"));

运行结果: Hello, aaa 上面是最简单的hello world!

在看一个多参数的例子:

interface MathLamb {
    int add ...

Page 1 / 2 »