lizongbo at 618119.com 工作,生活,Android,前端,Linode,Ubuntu,nginx,java,apache,tomcat,Resin,mina,Hessian,XMPP,RPC

2010年04月14日

将google托管的ajax js文件同步到本地服务器

Filed under: Java — 标签:, , — lizongbo @ 21:14
google提供了供全世界访问的公共javascript库托管,
参考:http://code.google.com/intl/zh-CN/apis/ajaxlibs/
只要使用 <script src=”http://www.google.com/jsapi”></script> 引用google的js,
然后使用 google.load() 方法,就可以指定载入对应库的对应版本。 例如:google.load(“jquery”, “1”);
就可以载入当前最新的jquery库。
虽然google承诺无限期地托管各版本的js文件,但是由于大部分人知道的原因,在国内使用这种方式共享js资源存在一定风险。
因此,我参考google对这些js的部署结构,将js下载回来放到了本地服务器。
目前托管的js库有以下组件:
jQuery
jQuery UI
Prototype
script.aculo.us
MooTools
Dojo
SWFObject
Yahoo! 用户界面库 (YUI)
Ext Core
全部都同步下来,操作步骤如下:
先在Firefox里打开:
http://www.google.com/jsapi
然后将js保存到成本地文件,然后用Aptana打开,并格式化,然后找到
google.loader.rpl,然后把括号里一段json对象复制出来,定义成  var jslibs;
然后通过js生成对应js的url。然后使用java下载到本地保存到对应目录。
代码参考:
<SCRIPT LANGUAGE=”JavaScript”>
<!–
var jslibs={
“:jquery” : {
“versions” : {
“:1.2.3” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.3.1” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.3.0” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.3.2” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.2.6” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.4.0” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.4.1” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.4.2” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
}
},
“aliases” : {
“:1” : “1.4.2”,
“:1.4” : “1.4.2”,
“:1.3” : “1.3.2”,
“:1.2” : “1.2.6”
}
}
}
//–>
</SCRIPT>
<TEXTAREA id=”urls” NAME=”urls” ROWS=”40″ COLS=”80″></TEXTAREA>
<SCRIPT LANGUAGE=”JavaScript”>
<!–
var urls=””;
for(var jslibName in jslibs){
var jslibList=jslibs[jslibName];
for(var jslibver in jslibList[“versions”]){
var url1=”http://ajax.googleapis.com/ajax/libs/”+jslibName.replace(“:”,””)+”/”+jslibver.replace(“:”,””)+”/”+jslibList[“versions”][jslibver][“uncompressed“];
var url2=”http://ajax.googleapis.com/ajax/libs/”+jslibName.replace(“:”,””)+”/”+jslibver.replace(“:”,””)+”/”+jslibList[“versions”][jslibver][“compressed“];
urls=urls+”\n”+url1+”\n”+url2;
}
}
document.getElementById(“urls”).value=”String[] urlsStrings={”
+urls
+”};”
+”  for (int i = 0; i < urlsStrings.length; i++) {”
+”   try {”
+”    URL url = new URL(urlsStrings[i]);”
+”    File file = new File(\”E:/js\”, url.getPath());”
+”    file.getParentFile().mkdirs();”
+”    PrintWriter pw = new PrintWriter(file);”
+”    URLConnection urlc = url.openConnection();”
+”    urlc.setConnectTimeout(5000);”
+”    urlc.connect();”
+”    BufferedReader in = new BufferedReader(new InputStreamReader(”
+”      urlc.getInputStream(), \”UTF-8\”));”
+”    String line;”
+”    while ((line = in.readLine()) != null) {”
+”     pw.write(line);”
+”     // sb.append(line).append(‘\n’);”
+”    }”
+”    pw.close();”
+”    in.close();”
+”   } catch (Exception e) {”
+”    e.printStackTrace();”
+”   }”;
//–>
</SCRIPT>

2010年04月11日

Windows下安装配置Apache cassandra 0.5.1

Filed under: Java — 标签:, — lizongbo @ 14:34

cassandra是facebook开源的,代码托管在apache,主页是:http://cassandra.apache.org/
目前版本0.5.1,首先下载最新版:
http://apache.freelamp.com/cassandra/0.5.1/apache-cassandra-0.5.1-bin.tar.gz
来源:
http://cassandra.apache.org/download/

解压到D:\Java\,生成到目录为:D:\Java\apache-cassandra-0.5.1
运行D:\Java\apache-cassandra-0.5.1\bin\cassandra.bat      ,提示错误信息如下:

D:\Java\apache-cassandra-0.5.1\bin>cassandra.bat
找不到路径 – D:\Java\apache-cassandra-0.5.1\bin\lib
系统找不到指定的驱动器。
Starting Cassandra Server
Listening for transport dt_socket at address: 8888
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/cassandra/
service/CassandraDaemon
Caused by: java.lang.ClassNotFoundException: org.apache.cassandra.service.Cassan
draDaemon
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Could not find the main class: org.apache.cassandra.service.CassandraDaemon.  Pr
ogram will exit.

打开cassandra.bat一看,发现取的CASSANDRA_HOME是当前目录,估计cassandra的开发者不用windows操作系统开发,或者是已经配置过环境变量CASSANDRA_HOME。
于是对照Apache Tomcat的bat文件,在cassandra.bat的 SETLOCAL后面加上一行 “cd ..”。然后重新运行bat。程序启动成功。

(http://ahuaxuan.javaeye.com/blog/603106 这篇文章说”在环境变量配置中加入CD=xxxx/cassandra根目录”是不合理的,CD本身就是调用cd命令输出当前路径,
即使要加全局环境变量,也是直接配置类似CASSANDRA_HOME=D:\Java\apache-cassandra-incubating- 0.5.1即可)
cassandra-cli.bat在SETLOCAL后面加上两行:“cd ..
if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%CD%”
修改后,也能成功启动。

cassandra.bat 此时会发现“我的电脑”里多了一个磁盘目录P,从cassandra.bat中可以看到是运行了以下命令:
subst P: “%CASSANDRA_HOME%\lib”
P:
set CLASSPATH=P:\

这个命令将 cassandra的lib目录用subst命令映射成了一个虚拟盘符。
再次运行cassandra.bat时可以看到提示信息:“已经对驱动器运行过 SUBST”。
于是运行subst /D P: 删除映射。

cassandra.bat对同一台机器启动两个进程不友好,于是继续修改cassandra.bat。
主要是设置classpath这段修改后如下:
———————-
REM ***** CLASSPATH library setting *****
REM Shorten lib path for old platforms
rem subst P: “%CASSANDRA_HOME%\lib”
rem P:
rem set CLASSPATH=P:\
for %%i in (%CASSANDRA_HOME%\lib\*.jar) do call :append %%i
goto okClasspath
:append
set CLASSPATH=%CLASSPATH%;%*
goto :eof
———————-

接下来发现conf/storage-conf.xml的配置也不支持同一台机器的启动多个进程。
继续修改,做成相对路径:

<CommitLogDirectory>var/lib/cassandra/commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>var/lib/cassandra/data</DataFileDirectory>
</DataFileDirectories>
<CalloutLocation>var/lib/cassandra/callouts</CalloutLocation>
<StagingFileDirectory>var/lib/cassandra/staging</StagingFileDirectory>

log4j.properties里也需要改成相对路径。
log4j.appender.R.File=var/log/cassandra/system.log

(最终核实,多节点通讯是以ip作为key,一台机器启动两个进程是可以,但是互为主备是没戏了。)

接下来测试数据的添加和删除。
先测试命令方式的,参考:http://wiki.woodpecker.org.cn/moin/ApacheCassandra
双击运行cassandra-cli.bat

Welcome to cassandra CLI.

Type ‘help’ or ‘?’ for help. Type ‘quit’ or ‘exit’ to quit.
cassandra> connect 127.0.0.1/9160 //连接到指定的ip和端口,
Connected to 127.0.0.1/9160
cassandra> set Keyspace1.Standard1[‘lizongbo’][‘name’] = ‘lizonbo’
Value inserted.
cassandra> set Keyspace1.Standard1[‘lizongbo’][‘age’] = ’80’
Value inserted.
cassandra> set Keyspace1.Standard1[‘lizongbo’][‘blogurl’] = ‘http://618119.com
Value inserted.
cassandra> get Keyspace1.Standard1[‘lizongbo’]
=> (column=name, value=lizonbo, timestamp=1270967368859)
=> (column=blogurl, value=http://618119.com, timestamp=1270967384812)
=> (column=age, value=80, timestamp=1270967377281)
Returned 3 results.
cassandra> get Keyspace1.Standard1[‘lizongbo’][‘blogurl’]
=> (column=blogurl, value=http://618119.com, timestamp=1270967384812)
cassandra>

Powered by WordPress