随笔-46  评论-54  文章-0  trackbacks-0
  2009年12月29日
在 Windows 上离线安装 Chrome
https://support.google.com/chrome/answer/126299?hl=zh-Hans
这里链接默认是32位的。
针对所有用户安装版64位完整链接为:
https://www.google.com/chrome/browser/desktop/index.html?system=true&standalone=1&platform=win64

Chorome快捷方式+SwitchyOmega

/Files/rox/chrome.7z
posted @ 2016-05-21 20:52 rox 阅读(383) | 评论 (0)编辑 收藏
参加了国内某知名快递公司的面试,一面就放弃了
自己公司的一个HR经理也曾经教过要换位思考,现在简单的介绍一下面试过程中的一些感想。
1. HR打电话的时候,问周六有没有空?
问题:虽然是专场,但这是很多HR应该规避的,应该尽量说明这是公司的安排,这种周六加班不是企业文化。
建议:曾经遇到过的几个HR都非常注意这一点,特别说明晚上和周末一般都不加班,虽然说HR多半都是骗子,呵呵!
2. 回答都有空,便安排在早晨的第二个时间段
问题:实际上安排了将近50人在早晨面试,可想而知,是面不完的。
      现场有点貌似华为面试,只不过不是在食堂:D
      11点左右HR一面,20分钟,到了12点钟,组织方开始发餐票,到隔壁快餐店用餐。
      没拿餐票,直接回家了。
建议:组织安排上,还算OK,但稍微比较有经验和有能力的HR,应该不会做这样的安排。
      即使是新项目启动,采取这样方式海招,风险比较大,应该是一个相对长期的过程,可以把招聘过程安排的相对宽松点。
      在公司,自己也做技术面试,一般都会面半个小时到一个小时左右,连续面了两个以上,精力和质量就会下降的很厉害。
3. 一面HR的内容,2分钟介绍自己,同时看表,增加面试着的压力。再问了工作和生活上的问题,还有技术问题!
问题:技术问题,比较有意思。
      HR问,最近一年,业界都有那些新技术,回答了Android和iPhone,猜他是想问云计算(面试前调研过,该公司有一直想进电商行业)。
      然后,HR再问Java方面有啥新技术,特意回答没啥新的啊。这个后来被自己朋友批,不知道反问他么!
      这时,HR就做出了一个重大的决定,准备开始对我的职位进行降级。问有没有意向,直接否掉。
      然后就说,各个公司的职位要求不一样,该公司要求更高点,就结束谈话,等待下一轮面试。
      40分钟后,开始发餐票。自己什么都没说就走了,这个其实也是特意做的,后面会有解释。
建议:面试20多分钟,都是HR对面试者进行提问和定位,不留给对方了解相关项目的机会,这个很少见。
      另外,很多初级HR只对项目里面说需要技术单词比较敏感,往往会在面试的时候,就急于问,好进行准确定位。
      但又怕问了以后会让面试者对后面的技术面试有所准备,技巧啊,技巧啊!
另外:解释一下自己没领餐票直接走人,其实想看一下组织方会有哪些动作。
      1. 发餐票的HR妹妹,啥也没问,直接放走。一个已经等了将近三个小时面试者,却不愿意再多等一个小时,没有任何疑问。这种情况发生在自己公司,会被HR经理骂的。呵呵!
      2. 负责一面的HR,大约在一个小时后的确给电话了,你在哪?自己说回家了,然后HR就说那下次有机会再联系吧,就挂了。看来他真的很忙。呵呵!
也参与过自己公司的很多面试,接触HR比较多,从HR经理那里也学到了不少东西,包括压力测试(其实,面试者也可以多给HR一些压力测试)。
感觉这个非常有意思,比和搞技术的打交道有意思。
把自己面试时的一些想法和技巧列出来。
可能还是太片面,而且带着搞技术的那种“坏味道”。
只是希望能为大家提供一点点参考。
posted @ 2013-07-28 11:53 rox 阅读(207) | 评论 (0)编辑 收藏
前一家公司经理的思想是,设计好的系统是绝对不会出错的。需要容错,绝对是没设计好。
这个似乎有道理,但完全不考虑,真正实际环境,是涉及到三方交易结算的的东西啊,真替他捏把汗。

现在的项目,一堆Oracle、腾讯、华为、证券摸爬滚打出来的技术精英,还包括一个纯servlet+jdbc开源项目的作者凑一堆。
不懂Tomcat下为什么要配置filter转码,把这个和虚拟机编码机制混为一谈,最后感慨一句weblogic就没这问题。
也有不懂啥是乐观锁的。
面试的时候,对集合类型及操作考的头头是道,但项目里,一个都没用到。
项目中遇到问题,往往就是解决、解决+解决,不究其原理。
感觉自己像在做硬件拼装的富士康。

牢骚两句。
posted @ 2013-07-21 23:19 rox 阅读(275) | 评论 (0)编辑 收藏
安装64位Ubuntu,方法其实解决方案很简单,不用下载任何的ISO,只要去下载最新的64位包,见下面资源。
拷贝wubi.exe和下载好的ubuntu-12.04-wubi-amd64.tar.xz都拷贝到C盘根目录下,然后执行下面命令即可。

1 wubi.exe --dimagepath=c:\ubuntu-12.04-wubi-amd64.tar.xz

资源:
What is ubuntu-11.10-wubi-amd64.tar.xz ? 

wubi安装Ubuntu11.**正确方法及无限等待下载amd64.tar.xz解决方法

http://cdimage.ubuntu.com/wubi/current/amd64.tar.xz

http://releases.ubuntu.com/12.04/ubuntu-12.04-wubi-amd64.tar.xz
posted @ 2012-07-12 13:26 rox 阅读(6527) | 评论 (4)编辑 收藏
 

参考了这篇the script is not working for any mvc frameworkuri的回复,结合当前Uploadifyv2.1.4版,netbean 6.9.1下编写调试。

        新建grails工程,名为test,并把Uploadify-v2.1.4.zip解压到web-app\uploadify目录下。

        新建grails控制器PictureController,代码如下

package com.test

 

class PictureController {

 

    def index = { redirect(action: "upload") }

 

    def upload = { }

 

    def savePicture = {

       def files = request.getFileMap();

       def path = "c:/test/" + files.get("Filedata").getOriginalFilename();

       files.get("Filedata").transferTo( new File(path))

       render (view:'upload')

    }

}

        新建grails视图upload.gsp,代码如下,注意粗体部分的上下文路径

<html>

  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>upload file sample</title>

    <link rel="stylesheet" href="/test/uploadify/uploadify.css" type="text/css" />

    <script type="text/javascript" src="/test/uploadify/jquery-1.4.2.min.js"></script>

    <script type="text/javascript" src="/test/uploadify/swfobject.js"></script>

    <script type="text/javascript" src="/test/uploadify/jquery.uploadify.v2.1.4.min.js"></script>

    <script type="text/javascript">

    $(document).ready(function() {

            $("#fileUpload").uploadify({

                'uploader': '/test/uploadify/uploadify.swf',

              'cancelImg': '/test/uploadify/cancel.png',

              'script': '/test/picture/savePicture',

              'folder': 'files',

              'multi': true,

              'buttonText': 'add',

              'displayData': 'speed',

              'simUploadLimit': 2

            });

    });

    </script>

  </head>

  <body>

    <hr width=100% size="1" color="" align="center">

        <h2>Multiple File Upload</h2>

        <p>checkScript, buttonText, simulataneous upload limit</p>

        <div id="fileUpload">You have a problem with your javascript</div>

        <a href="javascript:$('#fileUpload').uploadifyUpload()">Start Upload</a> |  <a href="javascript:$('#fileUpload').uploadifyClearQueue()">Clear Queue</a>

<p></p>

  </body>

</html>

        运行工程,访问http://localhost:8080/test/picture/upload

posted @ 2010-12-06 15:38 rox 阅读(1071) | 评论 (2)编辑 收藏

公司安排研究耶鲁CAS单点登录的实现,并研究了一下它的代理协议,看了N多文档和代码,才大概明白是怎么回事。
为了方便有兴趣的朋友学习,去掉了HTTPS的加密,源代码、webapp包和配置文件都有。
本来打算针对这个写篇文章,不想写了。

  

另:

  • 针对cas-server-2.0.12和cas-client-2.0.11的
  • ppt中部分内容是翻译+自己理解的,中英文水平均有限,请谅解。

下载地址:

posted @ 2010-04-14 17:41 rox 阅读(597) | 评论 (2)编辑 收藏
JasperReports数据库查询父子报表模板



  • 安装并打开iReport,并新建一个报表文件(见图-1)
[图-1]

  • 选择在“c:\test”目录下建立一个find文件(见图-2)
[图-2]

  • 新建一个datasource,选择jdbc连接方式,命名为find。使用HSQLDB(File)方式,url为jdbc:hsqldb:c:/test/find.hsql,用户名为sa,密码为空,测试一下,成功了,保存即可(见图-3、图-4、图-5
[图-3]

[图-4]

[图-5]

  • 设置报表查询语句、字段后,组和结束页面基本跳过(见图-6、图-7、图-8、图-9
[图-6]

[图-7]


[图-8]


[图-9]

  • 其实做到这里,就可以自己制作根据数据库查询报表了,要画图设置一些参数,说起来麻烦,就干脆打开样例模板来看看结果吧。
这里需要说明的是report1.jrxml是主报表、report1_subreport2.jrxml是子报表,主报表查出的每条记录的结果CLASSNAME作为子报表的查询条件参数传递过去(见图-10、图-11、图-12、图-13
[图-10]

[图-11]

[图-12]

[图-13]


参考资料:
  • 样例模板和数据库
http://docs.google.com/leaf?id=0B8vmIM2WmTA2OWE5ZGY0OTktMTkyZC00ZTljLTg1YjMtODA5ZWQ3NjA0MjMz&hl=zh_CN

  • Creating JasperReport subreports
http://publib.boulder.ibm.com/infocenter/rbdhelp/v7r5m0/index.jsp?topic=/com.ibm.egl.pg.doc/topics/pegl_rep_subreport_create_tsk.html

  • 利用复合的javabean构造基于jasperreports的子报表

本文地址
posted @ 2010-02-26 16:12 rox 阅读(616) | 评论 (0)编辑 收藏

原帖地址:java开发的乱码问题

 

第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特别设置,去系统默认的编码,中文windows为GBK编码。

从.java->.class过程是,先编写.java文件并按莫种编码方式保存,然后用javac方法编译此文件,注意如.java没按系统默认编码保存则要带encoding参数指明实际编码,否则出错,生成的.class文件存为系统默认编码。

从.jsp->.java->.class,先存为某种编码的.jsp文件,然后tomcat根据pageEncoding读取并转化为servlet存为系统默认编码,然后同上面.java->.class过程。

第二,IDE的encoding为对系统下文件打开的解码方式或保存的编码方式。特例:如果.jsp文件有<%@ page language="java" pageEncoding="UTF-8"%>,则eclipse会自动存为UTF-8方式,不管eclipse的encoding是什么,这也是eclipse的聪明之处。

第三,
pageEncoding="UTF-8"表示此文件的编码方式,必须与此文件存储方式一致(所以eclipse会首选根据它来存文件),tomcat根据这个来读此.jsp文件并编译为servlet。
contentType="text/html;charset=UTF-8"表示当浏览器得到此文件时以什么方式解码。例如:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
 <head>
  <title>test</title>
 </head>
 <body>
  我是个好人
 </body>
</html>
会产生乱码,因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。

至此,页面应为:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<html>
 <head>
  <title>中文问题</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 </head>
</html>

第四,
request.setCharacterEncoding("UTF-8")是把提交内容的字符集设为UTF-8
response.setCharacterEncoding("UTF-8")可以把页面中的<%@ page contentType="text/html;charset=iso8859-1"%>换为charset=UTF-8,是给告诉浏览器我这个文件的编码方式。

第五,表单提交:无论何种表单提交都可以在后台的java文件中通过String des = new String(s.getBytes("iso8859-1"),"UTF-8");来转换成你想要的UTF-8编码方式。但如果每处都加词句太麻烦,故分post和get两种方式区分提交(tomcat5以后分开处理,之前处理方式一样,即都可以用request.setCharacterEncoding("UTF-8")方法处理,不过tomcat5以后get提交方法用此语句无效)。
1,post提交的数据:
程序加上org.springframework.web.filter.CharacterEncodingFilter过滤器.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

因为规范要求浏览器提交数据都要用utf8编码,所以这里设置编码方式为UTF8.

特别注意:
a,这个过滤器只是简单的调用:request.setCharacterEncoding(this.encoding);
在这个语句之前不能调用任何的request.getParameter()方法,否则会设置tomcat的缺省字符集为"ISO-8859-1",并且使setCharacterEncoding的调用失效.所以在这个过滤器之前的过滤器中不能有对getParameter这类方法的调用,比较安全的做法就是把这个过滤器尽量靠前放.
b,在server.xml中不能加上<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
这个value也设置tomcat的缺省字符集为"ISO-8859-1",使setCharacterEncoding的调用失效.可能其他的value也有这个问题,我没有测试过.
如果要观察http请求参数,可以考虑用过滤器或者其他工具,例如ethereal(http://www.ethereal.com/)

2,get提交的数据:
两种情况:
a,如果从地址栏直接输入汉字,则一般编码为"GBK",需要用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出
b,如果是页面超连接连接中带的汉字,则编码根据页面编码的不同而不同,如果页面的
content="text/html; charset=utf-8",则在tomcat/conf/server.xml中的配置文件中:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" />

加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正确内容.
如果content="text/html; charset=GBK",需用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出,其他情况类似.

总结:
1,所有页面使用utf8编码,
2,服务器加上过滤器,
3,server.xml中不要使用
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
4,server.xml文件加上useBodyEncodingForURI="true"
这样应该可以搞定大多数前台的中文问题.至于地址栏输入中文,不支持也罢,一般的程序很少要求
从这里输入.

第六,连接数据库

1、mysql配置文件:
修改mysql在windowsmy.ini里default-character-set=utf-8

2、mysql里数据库和表也都设为utf8_unicode_ci

3、数据库连结:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8
注意,关键就在于此:此句中间是'&'不是'&amp;'这是因为数据库连结时,在.jsp和.java文件中应该用&号,而XML文件中需要用&amp

posted @ 2010-01-05 08:43 rox 阅读(430) | 评论 (0)编辑 收藏

原帖:http://chenyaqiong81081.blog.163.com/blog/static/44622594200791235256255/

一、Runtime.getRuntime().exec()执行命令情况:
       Runtime.getRuntime().exec("cmd /c your command")//2000
       Runtime.getRuntime().exec("command /c your command")//98
       Runtime.getRuntime().exec("sh/ your command")//linux

二、执行.sh文件的情况:
      1、把命令写成a.sh ;执行命令的时候
           Process child = Runtime.getRuntime().exec("bash a.sh,null,new File("//usr/local/mysql/bin/"));
           child.waitFor();
           ........
       2、Process child = Runtime.getRuntime().

                                          exec(new String[] {"/bin/sh","-c","mysqldump -u root -p7788919 axtic_cg" },

                                                   null,
                                                   new File("/usr/local/mysql/bin/"));
            child.waitFor();

            注:waitFor()等待操作完成

posted @ 2009-12-29 17:10 rox 阅读(2842) | 评论 (0)编辑 收藏