2010年10月23日星期六
汉字按拼音排序
import java.util.Comparator;
class PinYinComparator implements Comparator<String> {
public int compare(String s1, String s2) {
return ((java.text.RuleBasedCollator)java.text.Collator.
getInstance(java.util.Locale.CHINA)).compare(s1, s2);
}
}
但是在GWT中不支持java.text...
改成这样
new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
return javascriptSort(o1, o2);
}
private native int javascriptSort(Object a, Object b)/*-{
return a.localeCompare(b);
}-*/;
}
2010年10月22日星期五
在GAE上简单实现了一个淘宝客
在网上无意搜到一个用Ext实现的淘宝客,恩 ,咱用GWT做一个车轮
下了淘宝的 SDK for java就开干 参考API文档按部就班
在淘宝的沙箱里测试,很顺利,乘胜前进,到正式环境下测试
问题来了
invalid signature
网上搜了一通,有说时间戳不对,果不其然,GAE使用的是标准时间,整整差了8小时,遂在获得的当前时间上加了8小时,OK
invalid signature 可能的另一个原因是APP_KEY 或 APP_SERCET不正确,仔细检查
调用 taobao.item.get
1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY, TaobaokeConstant.APP_SERCET);
2 ItemcatsGetRequest req=new ItemcatsGetRequest();
3 java.util.Calendar c=java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
4 c.add(Calendar.HOUR, 8);
5 req.setTimestamp(c.getTime().getTime()) ;
6 req.setParentCid(new Long(0));
7 ItemcatsGetResponse response=client.execute(req);
8 return response.getItemCats();
调用 taobao.taobaoke.items.get 1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY,TaobaokeConstant.APP_SERCET);
2 TaobaokeItemsGetRequest req=new TaobaokeItemsGetRequest();
3 req.setFields("num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume,taobaoke_cat_click_url,keyword_click_url");
4 req.setCid(Long.parseLong(cid));
5 req.setNick(TaobaokeConstant.NICK);
6 req.setSort("commissionRate_desc");
7 TaobaokeItemsGetResponse response=client.execute(req);
8 return response.getTaobaokeItems(); 想用GAE JCache API 加入缓存以减轻压力,但屡试不行,从缓存中取 的时候报错没找到原因 改用自己写的缓存,然后用App Engine Cron 服务管理缓存 corn.xml 1 <?xml version="1.0" encoding="UTF-8"?>
2 <cronentries>
3 <cron>
4 <url>/cron/recache</url>
5 <description>Repopulate the cache every 1 hours</description>
6 <schedule>every 1 hours</schedule>
7 </cron>
8 </cronentries>
2010年10月20日星期三
GWT POST 提交页面
GWT POST 提交页面
将所有参数以&分隔放入builder.setRequestData中
01 RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, BASIC_URL);
02 builder.setHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
03 builder.setRequestData("chartSWF=" + be.getSelectedItem().getType() + ".swf&chartId=" + be.getSelectedItem().getType() + "&strXML=" + generateXml(entry));
04 builder.setCallback(new RequestCallback(){
05 public void onError(Request request, Throwable exception) {
06 chart.removeAll();chart.addText("出错啦");
07 }
08 public void onResponseReceived(Request request, Response response) {
09 if(200 == response.getStatusCode()){
10 chart.removeAll();
11 chart.addText(response.getText());
12 chart.layout();
13 }else{
14 chart.removeAll();chart.addText("出错啦");
15 }
16 }
17 });
18
19 try {
20 builder.send();
21 } catch (RequestException e) {
22 e.printStackTrace();
23 }
参考:http://blog.csdn.net/leoyunfei/archive/2008/12/26/3611565.aspx
2010年9月26日星期日
SQLServer 错误: 18456,用户 'NT AUTHORITY\SYSTEM' 登录失败总结
我的电脑-->右键-->管理-->本地用户和组
选择“组”-->双击Administrators-->单击“添加”-->单击“高级”-->单击“立即查找”-->在下面的列表中选择Network Service用户-->两次单击“确定”-->加入
2、打开Sql Server企业管理器-->选择数据库实例-->打开“安全性”节点
-->选择“登录”-->在右边的列表中单击右键 -->选择“新建登录”-->
在“常规”选项卡中单击“名称”旁边的按钮“...”-->选择“Administrators”组
-->单击下面的“成员”按钮-->选择“Network Service”-->单击“添加”按钮-->单击“确定”,
返回“新建登录”对话框-->保证身份验证类型为“windows验证” 和“允许访问”-->用户映射>把右侧数据库 单击“确定”
3、在需要设置的数据库下->安全性>用户>右击(新建用户)>登录名(选择'NT AUTHORITY\SYSTEM' )>然后选择对应的角色成员
4、查询分析器里面执行sp_grantlogin 'builtin\administrators'授予登陆权限.在"服务"里面重新启动
做了前3步,错误依旧
执行第四步后,错误消失
参考:
http://blog.csdn.net/codeshark/archive/2008/05/30/2497670.aspx
http://www.cnblogs.com/ITzen/archive/2008/02/20/1075715.html
http://topic.csdn.net/u/20090921/18/b58a5dc1-d9ad-4bcb-ab22-d047ddb73cbd.html
2010年9月17日星期五
通过ssh访问VirtualBox Ubuntu
sudo apt-get install ssh
/etc/init.d/ssh restart
reboot
cmd中
VBoxManage setextradata ubuntu "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/Protocol" TCP
VBoxManage setextradata ubuntu "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/HostPort" 2222
VBoxManage setextradata ubuntu "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/GuestPort" 22
可以用这个命令查看自己都对virtualbox进行了那些设置:
VBoxManage getextradata ubuntu enumerate
ubuntu为虚拟系统名称
用SSH Secure Shell Client连接 host name :localhost ;port :2222
2010年8月29日星期日
ubuntu 安装tomcat
tar -zxvf tomcat.tar.gz
启动 sh startup.sh
给root添加jdk path
sudo gedit /etc/environment
添加PATH
安装mysql
root@spring-ubuntu:/usr/local/tomcat6/bin# sudo apt-get install mysql-server
启动mysql服务器:sudo /etc/init.d/mysql start
关闭mysql服务器:sudo /etc/init.d/mysql stop
查看mysql服务器是否启动:sudo /etc/init.d/mysql status或者netstat -a | grep mysql
由于处理init.d目录下,mysql服务器是开机启动的
2010年8月28日星期六
jstl 替换回车换行
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%request.setAttribute("vEnter", "\r\n");%>
${fn:replace(i.scope,vEnter,"<br>")}
jstl下载:https://jstl.dev.java.net/download.html
参考:http://blog.163.com/chenjie_8392/blog/static/439339842010513128139/
2010年8月19日星期四
ubuntu软件安装中途取消
spring@spring-ubuntu:~$ sudo apt-get remove
E: dpkg 的操作被中断了, 您必须手动执行 'sudo dpkg --configure -a' 以修复这个问题。
spring@spring-ubuntu:~$ sudo dpkg --configure -a
正在设置 java-common (0.34) ...
正在处理用于 man-db 的触发器...
正在处理用于 doc-base 的触发器...
Processing 2 added doc-base file(s)...
Registering documents with scrollkeeper...
ubuntu 配置环境变量
$ sudo gedit /etc/profile
在文件最后添加
#set java environment
IntelliJ Idea启动将JAVA_HOME命名为"IDEA_JDK" 或"JDK_HOME",所以需在/etc/profile中添加JDK_HOME设置,更改后的/etc/profile为:
JAVA_HOME=/usr/local/lib/jdk1.6.0_21
JDK_HOME=/usr/local/lib/jdk1.6.0_21
JRE_HOME=/usr/local/lib/jdk1.6.0_21/jre
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export JAVA_HOME JDK_HOME JRE_HOME CLASSPATH
ubuntu 安装软件中途退出后不能再安装解决办法
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
spring@spring-ubuntu:~$ sudo rm /var/cache/apt/archives/lock
spring@spring-ubuntu:~$ sudo rm /var/lib/dpkg/lock
参考:http://hi.baidu.com/kamong8956/blog/item/2bea127782def717b151b925.htm
Linux 命令
sudo passwd root
sudo 获取root权
解压tar.gz
sudo tar -xvzf *.tar.gz
复制文件
sudo cp 源文件 目标文件目录
CP命令
格式: CP [选项] 源文件或目录 目的文件或目录
选项说明:-b 同名,备分原来的文件
-f 强制覆盖同名文件
-r 按递归方式保留原目录结构复制文件
复制文件夹
cp -r 文件夹 文件夹
删除文件
sudo rm 文件名
2010年8月14日星期六
2010年7月30日星期五
jquery validate自带验证
validate自带的默认验证
required: "必选字段",
remote: "请修正该字段",
email: "请输入正确格式的电子邮件",
url: "请输入合法的网址",
date: "请输入合法的日期",
dateISO: "请输入合法的日期 (ISO).",
number: "请输入合法的数字",
digits: "只能输入整数",
creditcard: "请输入合法的信用卡号",
equalTo: "请再次输入相同的值",
accept: "请输入拥有合法后缀名的字符串",
maxlength: jQuery.format("请输入一个长度最多是 {0} 的字符串"),
minlength: jQuery.format("请输入一个长度最少是 {0} 的字符串"),
rangelength: jQuery.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
range: jQuery.format("请输入一个介于 {0} 和 {1} 之间的值"),
max: jQuery.format("请输入一个最大为 {0} 的值"),
min: jQuery.format("请输入一个最小为 {0} 的值")
2010年7月26日星期一
javascript 动态创建function
for(var i = 0;i < selectedArrayLength;i++){
var fun = new Function("data","return data["+i+"]");
cellfuncs = cellfuncs.concat(fun);
}
2010年7月9日星期五
java.lang.StackOverflowError
堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。
99%递归没有出口,查吧
2010年6月30日星期三
用dom4j生成xml
01 import java.io.File;
02 import java.io.FileOutputStream;
03 import java.io.IOException;
04
05 import org.dom4j.Document;
06 import org.dom4j.DocumentHelper;
07 import org.dom4j.Element;
08 import org.dom4j.io.OutputFormat;
09 import org.dom4j.io.XMLWriter;
10
11
12 public class SoaToXML {
13
14
15 public static void execute(int userType,int bianhao){
16 Document document = DocumentHelper.createDocument();
17 document.setXMLEncoding("utf-8");
18 Element root = document.addElement("condition");
19 root.addElement("type").setText(String.valueOf(userType));
20 root.addElement("bianhao").setText(String.valueOf(bianhao));
21 String text = document.asXML();
22 printTest(text);
23 String path="soa_to_xml.xml";
24 if(writeFile(document, path)){
25 printTest("生成xml成功");
26 }else{
27 printTest("生成xml出错");
28 }
29 }
30 public static boolean writeFile(Document document, String fileName) {
31 try {
32
33 if (fileName == null || fileName.trim().equals("")) {
34 return false;
35 }
36 String path = "f:/" + fileName;
37
38 OutputFormat format = OutputFormat.createPrettyPrint();
39 XMLWriter output = new XMLWriter(new FileOutputStream(
40 new File(path)), format);
41
42
43 output.write(document);
44 output.close();
45 return true;
46 } catch (IOException e) {
47 e.printStackTrace();
48
49 return false;
50 }
51 }
52 public static void printTest(String content) {
53 System.out.println(content);
54
55 }
56 /**
57 * @param args
58 */
59 public static void main(String[] args) {
60 SoaToXML.execute(0, 1);
61
62 }
63
64 }