joy的笔记本
百度空间 | 百度首页 
 
文章列表
 
2009-12-10 22:07
       一直用eclipse,昨天IDEA9出来了 简单的试用了一下.发现还是不习惯呀,界面还行.默认中文乱码,虽然可以在 在设置里面改字体 但是这样让人很不爽. 试了一下它的swing designer 准备把前几天的jarfinder用idea实现一遍,结果可耻的失败了,跟NetBeans比也太简陋了,布局也太简单了,拖了半天也不能方便的定位 直接放弃了.至于编码 由于不熟悉快捷键,也不很方便.
白天搬出netbeas6.7 把jarFinder和BOMRomver整合在一起了.发现netbeans的界面设计确实是目前java开发工具里面最方便的.没找到tabpanel使用已有panel的方法,直接重写了一个,netbeans的快捷键也不熟悉,改成eclipse方式感觉方便多了.
 
2009-12-05 22:18
       可能会去之后就要开始忙了,觉得以前的粗放模式确实要有点改进,觉得jira还不错,趁现在有空研究了一下.
用的是最新的jira4  安装过程倒没多大问题, 需要注意的是 配JNDI的JTA事物使用的是JOTM,也不复杂 去网站下一个就行,之后发现common-loging包版本有冲突 ,删掉一个暂时解决了,log4j版本和slf4j也有点问题,但是暂时还是可以用.tomcat启动可能会报OOM (哎 一个简单的软件就这么耗内存),设置tomcat的 JAVA_OPTS就行.
XX倒比较顺利 网上有人已经弄出来了 直接替换文件,然后license随便输.
按照 http://confluence.atlassian.com/display/JIRAEXT/Mylyn
集成eclipse倒是出了点问题,添加issue和task的时候出了点问题  due date设置总是提示格式不对  submit一直格式错误. 搜了一下网上有人报告过这个bug. 看来mylyn集成jira问题不小.明天试试jira connector .
 
2009-11-30 20:31
       下午和业务人员讨论了, 最终决定还是把机构树保留. 但是更改成默认隐藏.这样改动确实小多了 至少不用入侵到java代码中改java代码了(发现最近碰到的几个问题的第一想法就是改JavaScript,难道前端就是趋势?).
主要的问题其实就是iframe中的子页面调用父页面的方法和对象.开始的时候还觉得安全性限制估计比较麻烦,后来发现其实很简单  直接用 window.parent.yourfunc(); 就行.在父页面中先写好方法,直接在子页面中调用就行.其它的小问题就没啥了,页面自动判断状态啥的倒没啥.唯一的小bug是标签本身的expand方法有点问题每次递归的时候加载2级,本来想顺手改一下,后来想想 那个标签用的地方太多了,现在改的话也没足够的时间测试了.反正不影响正确性,延迟一点还能接受.
 
2009-11-24 17:16
windows下的一些编辑器喜欢在utf8头加bom,但是有些程序就是不认 比如 Ant在编译代码的时候就会报错.查了一下发现eclipse的jdt编译器会自动忽略 但是javac处理的时候就会出错了.
网上找了点代码,修改了一下 ant down完代码之后调用一遍就行(完整的ant脚本还在完善 稍后放出).

 import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PushbackInputStream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class BOMRemover {

/**
* ant 编译之后的result文件,注意要编译提示错误的文件名要在同一行 可以设置命令提示窗口的缓冲区大小实现
*
* @param resultFileName
*/
public static Set getFileNamesFromCompileResult(String resultFileName)
throws java.io.IOException {
Set<String> set = new HashSet();
BufferedReader reader = new BufferedReader(new FileReader(
resultFileName));
String start = "[javac] ";
int startLen = start.length();
String end = ".java:";
int endLen = end.length();

String errMsg = "\\65279";
while (reader.ready()) {
String line = reader.readLine();
int indexStart = line.indexOf(start);

if (line.indexOf(errMsg) == -1) {
continue;
}
if (indexStart != -1) {
int indexEnd = line.indexOf(end);
if (indexEnd != -1) {
String name = line.substring(indexStart + startLen,
indexEnd + endLen - 1);
set.add(name.trim());
}
}
}
return set;

}

public static void DealSrcFiles(String path) {
if (path.charAt(path.length() - 1) != '\\') {
path += '\\';
}
File file = new File(path);
if (!file.exists()) {
System.out.println("Error: Path not Existed! Please Check it out!");
return;
}
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File temp = new File(path + filelist[i]);
if ((temp.isDirectory() && !temp.isHidden() && temp.exists())) {
DealSrcFiles(path + filelist[i]);
} else {
if (filelist[i].endsWith(".java")) {
try {
trimBom(path + filelist[i]);
} catch (Exception eee) {
}
}
}
}
}

/**
* 读取流中前面的字符,看是否有bom,如果有bom,将bom头先读掉丢弃
*
* @param in
* @return
* @throws IOException
*/
public static InputStream getInputStream(InputStream in) throws IOException {

PushbackInputStream testin = new PushbackInputStream(in);
int ch = testin.read();
if (ch != 0xEF) {
testin.unread(ch);
} else if ((ch = testin.read()) != 0xBB) {
testin.unread(ch);
testin.unread(0xef);
} else if ((ch = testin.read()) != 0xBF) {
throw new IOException("错误的UTF-8格式文件");
} else {
// 不需要做,这里是bom头被读完了
// // System.out.println("still exist bom");

}
return testin;

}

/**
* 根据一个文件名,读取完文件,干掉bom头。
*
* @param fileName
* @throws IOException
*/
public static void trimBom(String fileName) throws IOException {

FileInputStream fin = new FileInputStream(fileName);
// 开始写临时文件
InputStream in = getInputStream(fin);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte b[] = new byte[4096];

int len = 0;
while (in.available() > 0) {
len = in.read(b, 0, 4096);
//            out.write(b, 0, len);
bos.write(b, 0, len);
}

in.close();
fin.close();
bos.close();

// 临时文件写完,开始将临时文件写回本文件。
System.out.println("[" + fileName + "]");
FileOutputStream  out = new FileOutputStream(fileName);
out.write(bos.toByteArray());
out.close();
System.out.println("处理文件"+fileName);
}

/**
* 根据ant编译错误来去除bom
*
* @param resultFile
* @throws IOException
*/
static void trimBomByCompileResult(String resultFile) throws IOException {
Set<String> set = getFileNamesFromCompileResult(resultFile);
for (String fName : set) {
trimBom(fName);
}
}

public static void main(String[] args) throws IOException {
//        if(args.length==0){
//            DealSrcFiles(System.getProperty("user.dir"));
//        }
//        else{
//            DealSrcFiles(args[0]);
//        }
DealSrcFiles("F:/workspace/proj/src");
}
}
 
2009-11-23 15:13
       本来项目使用了好几台windows机器,于是大家就用这些机器作跳板 用ccporxy作二级代理跳到总行的网络出口去上网,但是使用的人多 网速就慢 而且ccproxy的二级代理不完善socks的二级貌似又点问题 比如 term就没法用.
前一段时间研究了一下ssh隧道,先用sockscap32强制令应用程序使用隧道代理,然后用程序本身的程序访问总行代理.但是这样有点不方便 每次使用之前先要用putty建立隧道(虽然自己也天天用),还要使用sockscap32.刚好手头有个linux机器可以使用 就研究了一下 ,找到了一个软件 desproxy. http://blog.csdn.net/minidick/archive/2007/08/05/1727719.aspx   软件比较老 04年就不更新了
下载地址 http://sourceforge.net/projects/desproxy/files/
以为没法用 但是实际上很顺利 windows下貌似有程序,linux下要自己编译 编译方法也很简单  但是先在一台hp-unix的机器上编译没通过 换了一台 suse10 的linux机器倒是很顺利
tar xvf desproxy-0.1.0-pre3.tar.gz
cd desproxy-0.1.0-pre3
cd src
./configure
make
make install的时候提示没有权限,不过问题已经不大了程序已经编译出来了 直接拷贝src下几个编译出来的程序直接运行就行 (当然要改权限)
由于我是要使用的是 scocks2socks
写一个脚本  startprxoxy.sh
/tmp/test/bin/socket2socket remotaddr 1080 1080 /tmp/test/socks.log
然后
nohup startprxoy.sh &
就行了 很方便 终于可以方便的使用socks代理了 详细的配置可以访问 项目主页 http://desproxy.sourceforge.net/
当然 使用代理会导致安全问题 所以使用的时候要自己小心
---------------------
今天自己仔细研究了一下ssh转发 发现一个更简单的方法 (想起了某人前一段时间的追问,哎 当时是不求甚解呀)
ssh -CfNg -L 7002:yourproxy:1080 yourname@localhost(这个是中间的跳板机器)
直接登录  跳板机器 然后执行如下命令就行了
 
2009-11-21 18:55
       上个月的某个月黑风高的半夜,一时头脑发晕的执行了一下 emerge -C python 结果吧python给干掉了.导致的后果就是emerge没法用,网上搜到的解决办法就是自己编译一个可用的版本,懒得折腾就放弃了暂时也就告别了gentoo,刚好17号Fedora12出来了,直接在盒子上下了一个.
安装过程倒是比较简单,拷贝 光盘上的 images文件夹下的 install.img和 isolinux下的vmlinux和initrd.img到一个FAT分区.然后用用grub4dos进入 ,按c进入命令模式
kernel (hd0,*)/vmlunux
initrd (hd,*)/initrd.img
boot
就进入启动界面了,安装很方便选择硬盘安装就行了.装完之后还是有些惊喜的,无线网卡竟然直接能直接认出来.其它的由于太困了,没有继续尝试 默认装的是openjdk 测试了一下没什么问题.有空可以测试一下openjdk的性能
 
2009-11-21 02:26
      上午看到本GAE的书 http://www.easy-share.com/1908467786/GoogleAppEngine.rar
觉得不错 要下下来看的时候被恶心了 要等500秒.实在是不能忍了,查看了一下页面代码 发现是由js控制的
想到了可以用Greasemonkey干掉它 于是研究了一下Greasemonkey .显示看了一下有名的 DIG 帮助 始终没有出结果,后来google到一个人的说法
greasemonkey book, but you probably
mean Dive Into Greasemonkey, which was once /great/, but is now out of
date and largely wrong.
汗了一下,时代在进步 距离最开始的版本还有4,5年了 确实应该更新了
主要的问题是覆盖原页面中的JavaScript方法和访问属性(Override JavaScript function)
看了一下 主要是安全性问题,userscipt和页面script的作用域,如果要调用和访问页面本身的JavaScript对象需要用到 unsafeWindow 具体的说明可以看官方wiki http://wiki.greasespot.net/UnsafeWindow#Attach_script_to_page
使用了一句  unsafeWindow.w=3; 实现了控制计时器设为3 但是发现easy-share的等待时间并不只是由客户端控制 发送ajax请求后竟然返回的时间还是验证 这一招失败了,不过学到了这个用法感觉可以干很多事了(^_^)
 
2009-11-19 19:58
程序员的joel test  刚看到了发现离敏捷还好远呀
The Joel Test

1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions?
9. Do you use the best tools money can buy?
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?


看了一下 发现自己还差很多
1   从今年初已经实现了 本地有cvs
2   也已经实现了,研究ant还是有点用途的
3   不做daily build 但是ide集成的环境基本每天都测试
4   暂时没有 准备引入bugzilla或者jira
5   同时进行
6   暂时没有 计划经常变
7   自己开发的就没有
8   没有
9   没有,但是尽量用最顺手的
10 没有 自己和最终用户测试
11 如果……
12 没
 
2009-11-19 16:00
       今天项目负责人说了一下回去的大致日期.下个月这个时候应该能在北京休息几天了
顺便抱怨一下.说实话项目组大部分人都不知道自己在干嘛.虽然大家看起来都很忙(这样说可能也有些对不住那些同事了).今天简单测试了一下外围数据,竟然没有一个外围系统的数据能用,他们写性能测试脚本的时候简单跑了一下 双U8核的机器并发到10的时候竟然有2个超时…….虽然悲观了点(想想去年的项目开始也很悲观) 但是总算可以回去了.
昨天顺便帮人解决了一下itunes不认itouch得问题,主要的问题磁盘空间满了.结果倒是itunes不能同步.解决的办法是用能浏览文件的软件(91助手等)上去 把 /private/var/media/itunes_control 下的0字节文件删除 然后重启touch,这样就能被itunes识别了.但是容量还没释放,同样用文件浏览软件 删除/USR/下对应的mp3文件释放空间.虽然解决办法比较山寨,但是总算避免了重新刷机
 
2009-11-17 23:45
标签一直用,但是以前大部分都是用项目自己写的标签,配合少量的struts标签.这次接触了一下jstl发现确实很方便,虽然目前没用到比struts标签强大的地方,但是用了一下确实很不错,至少比较小而且不依赖struts.
最简单的就是 core类了 之前用了感觉很方便 .白天的时候发现页面部分数据没格式化,懒 不想改本来就超长的sql就想用个简单的方法解决.试了一下 fmt标签感觉超级强大.第一 自动装箱,就是string也能格式化.2.格式化方式一点都不比DecimalFormat差 代码也简单
比如
<fmt:formatNumber  value=" ${arrayListI.pnt_rsksum}" pattern=".00">
当然有些地方没有struts标签方便  比如 s:present之类的就没找到比较方便的替代方案.
找了一个很不错介绍 jstl的地方
http://www.blogjava.net/nbtymm/archive/2007/01/18/94558.html
 
2009-11-16 20:31
        昨天晚上本来说今天开始做 页面部分的编码,尽量吧servlet以上的层次从头写一遍,最好是替换掉原来的布局.结果白天还是没有写一行代码.中间一点简单的事情由于老是被打扰用了3个小时才弄完.
晚上上论坛闲逛的时候,碰到一个牛人 http://www.javaeye.com/topic/517796 自己实现了一套 从server到 mvc框架 http://www.javaeye.com/topic/517796 用了一年的时间来研究技术.想想自己很惭愧,之前研究sakai的时候碰上了复杂的依赖关系的时候直接就想放弃,最终放弃了sakai.虽然现在的框架代码比较清晰,但是至今已经几个星期都了都没开始正式的写代码.看来还是踏实一点好,争取把现在的框架弄清楚,尽快实现所需功能.
 
2009-11-15 13:34
       平时经常碰到一些小问题,有的时候随手解决了.但是时间长了有时候自己都忘了.所以找个地方记录一下还是很有必要.
前天实现了一个功能,就是实现历史功能.系统是基于JavaScript的,用浏览器的历史肯定不行.分析了一下2种解决办法.老孙比较倾向于后台解决.当时觉得后台改代码太不方便了.决定用JavaScript实现一下.实现的方式倒不复杂,用一个字符串记录点击的历史,也就是正常的前进字符串的长度就增加一段,点击回退功能就把历史的最后一段的字符串删除.功能比较简单,没有实现前进功能,其实要前进也很简单,同时构造一个字符串记录回退中删除掉的就行 ^_^,用了10分钟实现了一下.中间的一些校验啥的都比较好说.
 
2009-11-13 12:00
网上找了一下 都是linux下的支持firefox 没有windows下的方法
JDK的安装其实很简单,作为开发人员应该都比较熟悉
配置2个变量  JAVA_HOME 和PATH就行  其中 jdk6以后 直接把java.exe 放到 windows/system32/下面.
机器上有多个jdk 而且一直是用绿色的 切换jdk的时候也很方便
昨天配was集群的时候要用的vnc的applet插件,由于是绿色的jdk 当然就没有applet支持了.研究了一下
可以手动添加注册表 让ie支持 applet
方法如下
导入 如下注册表键值 当然 路径改成合适的路径  注意\\


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.6.0]
"JavaHome"="D:\\dev\\jdk\\jre6"
"UseJava2IExplorer"=dword:00000001
"HideSystemTrayIcon"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_10]
"JavaHome"="D:\\dev\\jdk\\jre6"
"MicroVersion"="0"
"RuntimeLib"="D:\\dev\\jdk\\jre6\\bin\\client\\jvm.dll"

然后运行jre的bin下面  javacpl.cpl  在高级里面  浏览器默认的java  选上 ie和 ff 点确定
重新打开ie应该就可以让ie支持applet了

当然 windows下的jdk安装的时候都会默认添加这些东西的 ,这东西实用性不大 当然那些喜欢绿色的同学可以尝试一下
 
2009-11-12 20:03
07年在南京的时候就研究过.还好当时保留了文档.昨天准备搭建一个测试环境作性能测试,就重新尝试了一下.今天用了一天的时间终于弄好了.
其实过程倒不复杂 中间忘了一个关键的步骤 结果尝试了很多次不成功  在此标记一下.
当然防火墙上的必要端口都要打开  昨天和老孙弄了一下午防火墙 终于穿了过去.中间图片太多 上传不方便
完整图文暂时没地方放 google docs的https被盾了  访问也不方便 在此就贴一下文本

WebSphere集群下应用发布
1集群的建立

1.安装WebSphere ,概要表创建向导 --> 创建Deployment Manager概要表  定义一下概要表名(非必须) 例如 默认为Dmgr01  -->选择概要表所在目录 节点名 主机名 单元名(任意,可默认)  记住SOAP端口 默认为(8879) .这样就创立完成

2.安装节点,在节点服务器上运行概要创建向导--> 创建定制概要表 -->选择DeployManager主机名和端口 填上1中安装DeployManager的主机名或ip ,端口(SOAP端口)

运行后节点会自动连接deploymanger若连接未成功 可以在 概要的安装的目录运行

addNode.bat  ip port的形式手动添加.

重复2中的步骤添加节点.

部署节点之后启动DeployManager的控制管理器,

从控制台登录 默认为 http://localhost:9060/ibm/console

在管理控制台中,[服务器]à[集群],点击新建集群,命名任意:

在集群成员中,添加成员server1和server2,节点为bbssdfsdfNode02和bbssdfsdfNode03(添加一个,点击一次应用):

(权重越高,分配的请求越多)

集群下发布应用

和单击发布应用一样 在控制台 发布程序 发布选择服务器是选中集群发布.

然后,应用后确定,保存。

数据源的配置

在ibatis中数据源可选通用的jdbc数据源和 jndi数据源.

jdbc通用数据源在 database.properties中配置好所用的驱动和sql-map-dao.sql中默认配置好的即可 在应用服务器中不需要专门配置.

使用jndi数据源在database.properties中配置好jndi名称即可.然后在web服务器中配制好相应的jndi

在WebSphere中配置jndi

1) 通过 http://localhost:9060/admin 登陆控制台窗口,点击 "Resource",再点击 "JDBC Provider";



点击 "Apply";





点击 "Data Source";

单击 "New",在 "Name" 中输入 "DB2ConnectionPool Test",在 "JNDI Name" 中输入 "jdbc/DB2ConnectionPool";



在 "Database Name" 中输入 "TestDB",在 "Server Name" 中填入 IBM DB2 所在的机器的地址,在 "Port" 中填入 IBM DB2 运行时监听的端口,一般为默认 50000;



点击 "Apply";

在程序中使用对应的jndi连接数据库即可

IBM Http Server 安装

安装IBM Http Server: C:\Program Files\IBM HTTP Server,稍后会使用到,安装位置任意,然后安装类型选择:典型,然后会注册两个服务,输入启动的用户名和密码:

执行安装,安装完成后,会有个插件安装的checkbox:去掉:

启动部署管理单元:

startManager –profileName dgmr

在部署单元中配置HTTP SERVER的信息。

(集群中的概要表不能单独启动)



在[系统管理]---[节点]中添加一个[非受管的节点]

新建Web Server:

下图中的服务名称必须是[IBM HTTP Server 6.0],插件还没有安装,先写入路径(稍后安装插件需要安装在此目录中):





添加管理属性:(使用之前创建的用户名和密码)

一直点下一步,直至完成,然后保存。

安装Plugin:Web服务器类行选择IBM HTTP Server V6。

本地指DGMR与WEB SERVER在同一机器上:

与在WAS中添加WEB SERVER时设置的路径一致:



在管理控制台中选择生成配置文件:将生成的路径粘贴在下图中位置:

然后开始安装插件。安装完成后,退出。

启动服务器是 依次启动Deploy Manager 各节点代理 http server代理

登陆Web 控制台 启动集运 web 服务器 即可

关闭时 倒过来执行

发布程序时同集群下发布 复选框选中 集群和webServer即可.
 
2009-11-09 12:00
       这边的网络情况比较复杂,公用的代理服务器是用的二级代理连北京的一台机器,其实也不方便.加上老孙配的时候没允许socks, term用http代理上貌似一直被截断,具体原因未知,可能是代理的问题.上午有空的时候研究了一下ssh代理转发 加上多级代理终于上来了.
具体的就是  在putty中配一个tunel 端口随便 选 dynamic  具体可以看这里 http://www.chedong.com/blog/archives/001246.html
然后本地起 sockscap调度所有的代理 在sockscap中开cterm  cterm再配置使用北京的socks代理 这样折腾下来终于能连上了 ,上个网也真不容易 辗转了上千公里
 
     
 
 
个人档案
 
joyfun

上次登录:
4小时前
加为好友
 
   
 
最新照片
 
   
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     
 
最近访客
 
 

kudaoweixia

kaka3030

翾飞诗舞

淹不死得鱼

zhzwrzhz

7751号

dingguo815

蘫調噯
     


©2009 Baidu