写程序,做产品,过日子

成功其实很简单,就是强迫自己坚持下去

BlogJava 首页 新随笔 联系 聚合 管理
  69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

#

目前Java IDE的主流自然是eclipse系列,我一直用的也是这个。在Sun积极宣传Netbeans5.5的时候,我也试用了一下,并没有找到从eclipse转移过去的理由。我对它的不满意主要有两点:
1、没有所见即所得的JSP/HTML编辑器。
2、没有为Hibernate提供开发支持。
Netbeans5.5在java 6下的桌面开发能力很强,不过短期内我还用不上。

下面重点说说Eclipse平台下的一些开发工具。

1、JSP/HTML编辑工具
Lomboz是开源的JSP编辑器,不过它不支持所见即所得的可视化编辑。虽然我并不喜欢在可视化设计界面中通过拖拉来调整页面。但是它对代码的快速定位是我所需要的。
Bea Workshop for JSP的确精彩,不过它要求把所有的JSP一个WEB-INF的目录。我的项目很大,每个模块都有独立的JSP目录,这个要求很烦的。好像这个目录可以配置(但是必须有),不过由于其它原因,我已经放弃了。
我现在选的是MyEclipse,它的JSP编辑器做得不如Bea Workshop精细和强大,但是自由,够用。另外,MyEclipse比Bea Workshop便宜得多,有可能说服老板买单。不过,MyEclipse集成的Hibernate功能着实让我光火了很长的时间。

2. Hibernate集成工具
在Eclipse中集成Hibernate开发的有三种:Hibernate官方出的Hibernate Tools, Myeclipse和Bea Workshop。Jbuilder 2007也部分支持Hibernate。Hibernate Tools是开源的,其它的工具都是在它的基础上进行增强而来的。

如果使用Ant命令来操作Hibernate Tools,你会发现它非常强大,可以灵活的在表,HBM和pojo间互相转换。可是它的Eclipse集成太狠了点,只要求一个逆向工程的配置文件,就可以根据数据库表生成所有的HBM和pojo。这个功能貌似一步到位,其实很不灵活。
(1)如何写好HBM是很有学问的,我经常需要细心的调理好HBM再生成pojo。
(2)每次生成时都一刀切的做法对于增量开发来说是个灾难。好不容易调理好的HBM和Pojo,一下子全被冲掉了。
(3)它的数据库连接也有个问题,不会过滤Schema,每次都把所有的数据库列出来。我们的开发数据库服务器上安装有三四十个数据库,想想多么恐怖啊。
Hibernate Tools最强的功能,当数HQL编辑器。可以查错,可以检查最终生成的SQL,可以得到运行结果,可以添加参数。这些功能实在是太有用了。

Myeclipse对Hibernate Tools进行了改进。所以它和原生的Hibernate Tools共存时会发生一些奇怪的问题。Myeclipse中有两个改进非常棒:指定数据库Schema(再也不用在三四个数据库中找我的那份试验田了),根据选中的HBM生成Pojo(放心大胆的用吧,已经做好的HBM和Pojo不会再被冲掉了)。
不过,Myeclipse对HQL编辑器的改进就有点让人光火了。首先是连接问题,横竖就是连不上数据库,左找右找找不到原因,最后把Eclipse workspace重建,把相同的配置连接,一下子又可以了。
其次,Myeclipse没有提供新建HQL编辑器的菜单,而是在我手工建立一个hql的文件后,在打开它时调用HQL编辑器!打开的过程可能涉及到数据库连接,非常慢。如果你在退出eclipse中没有关掉HQL文件,那么再次进入eclipse的时候,您先去喝杯茶,慢慢等吧。

Bea Workshop各方面做得都非常精致,Hiberenate集成也不例外,各类编辑器的功能布局明了易用。但是我在试用时碰到一个难以置信的致命的bug:所有Bea Workshop编辑器和对话框中的文本输入框基本不接收光标!
这是什么概念?就是说你没法点进文本框,没法输入任何东西。我唯一成功的一次是在没有光标的情况下,乱打了几个字母再回车。对话框没有显示任何东西直接关闭,但在主编辑器中我打的字母显示了出来。不过除了文本框外,其它的如下拉框,选择框都正常。
哪个开发人员会出这么离谱的Bug啊!我试过两台机,问题一模一样。难道是因为我的JDK是1.5的缘故?!
不管什么原因,我是没办法再试下去了,只好将其请出了我的电脑。在请出之前,通过菜单检查,没有发现指定HBM生成Pojo的功能。这两大原因,足够我放弃它了。

Jbuilder 2007做得太强了。我用它明显感觉小脚穿大鞋。人家根本不希罕Hibernate。仅仅把Hiberenate作为EJB 3.0和JPA的一种实现方式。所以根据没有HBM这一说。而且是彻头彻尾的可视化MDA开发。真的需要一个明星团队,在严格的流程支持下,才能玩转Jbuilder 2007。我两个条件都不符合,最重要的是老板嫌它太贵,只能放弃。

Technorati
: , , ,

posted @ 2006-11-08 12:16 Welkin Hu 阅读(236) | 评论 (0)编辑 收藏

已经n年不用VB了,一直不忍删除当年的这个文本文件。

--------------------------------------------------------------------------------------------

表示日期值的数字符号 (#) 必须包含在字符串中,这样它们才能连接到日期值。

--------------------------------------------------------------------------------------------------
Shell(pathname[,windowstyle]) 
执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。

------------------------------------------------------------------------------------------------
在DLL中的窗体要先设对象才能打开。
dim frm as new Form
frm.show vbModel: 主程序打开frm,停在此句。
frm.show :主程序打开frm, 继续执行。

------------------------------------------------------------------------------------------------

TreeView1.SelectedItem.Index

Node.FullPath ' \ \

--------------------------------------------------------------------
*****
不能按如下方法定义变体参数:
Can not use parameter in this way:
Optional vSearch As Variant = Empty

Replace method
Definde parameter: Optional vSearch As Variant
Definde varible: Dim var as Variant

Transfer Value code:
If IsError(vSearch) Then
var = Empty
Else
var = vSearch
End If

----------------------------------------------------------------------
****
键盘字符按键的键号:
Char keyCode in Keyboard
48 ~ 57 , 65 ~ 90 , 96 ~ 110 , 186 ~ 192 , 219 ~ 222

VB Code:
If KeyCode < 48 Or (KeyCode > 57 And KeyCode < 65) _
Or (KeyCode > 90 And KeyCode < 96) Or _
(KeyCode > 110 And KeyCode < 186) Or _
(KeyCode > 192 And KeyCode < 219) Or KeyCode > 222 Then
Exit Function
End If

----------------------------------------------------------------------------
***
删除有子表的表记录时要考虑子表的事务流操作。
oContext.SetAbort
oContext.SetComplete

----------------------------------------------------------------------------
******
工程文件引用不当造成程序不能生成相应对象而导程序不能运行的问题
在同时调试多个工程文件的情况下,如有如下几个工程:
启动工程:SysAdmin ; 管理模块工程: SysAdminModule ; 主工程: APSParaMaint
APSPrarMaint中不引用前两个工程,SysAdminModule引用APSParaMaint, SysAdmin同时引用APSParaMaint与SysAdminModule。
计算机上已注册表各工程的DLL文件,且引用的工程文件是这些DLL,那么在联合三者构成工程组调试时,打开的工程源文件(VBP文件)由于没有被引用到,从而是不起作用的,程序将按DLL文件运行。应该使其所有引用工程组内工程的文件为源文件。如果有的是源文件,有的是DLL文件,就有可能出现不能生成相应对象的问题。

中间层工程属性注意:
工程兼容性,线程,编译文件的位置。



---------------------------------------------------------------------------
***
写SQL要时时考虑空值的处理。

---------------------------------------------------------------------------------
****
在VB中获取打印机设置的方法:
VB内置有系统级全局变量Printer/Printers,其中存储要当前系统中的所有打印机设置情况。
可以使用set Printer = Printer(i)的方法来为当前程序选择打印机。
在Crystal Report 中,如RPT文件选中No Printer选项,要想在程序中可以打印,可按如下方法:
On error resume next
crpReport.SelectPrinter Printer.DriverName, Printer.DeviceName, Printer.Port
crpReport.PaperOrientation = Printer.Orientation
If Err.Number = 484 Then
MsgBox "No printer found in you system!", vbCritical
Err.Clear
GoTo ExitHere
End If
crpReport.PrintOut True

由于在当前系统没有打印机设置时Printer/Printers不会被置空,其标志性属性都不可用,故只能用错误处理来判断无打印机设置时的情况。

--------------------------------------------------------------------------------------
**********
delete from at_UserLogonActivity

--------------------------------------------------------------------------------------
*********
数值数据校验的注意事项:
1,应在输入控件的Validate事件中进行校验。
2,校验内容由主到次为:长度(整数部分与小数部分),数值范围,可否为负,显示格式及与其它数据的大小关系。与其它数据的大小关系放在所有数据录入完成后再校验。
3,校验时要考虑输入数据为科学计数式的校验,如数据有长度要求,可将其格式化为浮点数显示再做校验。对于所有有数值范围的校验,由于一般控件录用入值默认为字串型,所以一定要先将其转换嵝数值型再做校验。
3,对于窗体上的取消按钮之类的控件,应设其CauseValidate属性为False,以便在取消操作时不做校验。
4,如无必要用科学计数式显示数据,就应在输入控件的LostFocus事件中使用Format函数将其显示浮点格式。

-------------------------------------------------------------------------------
******
设计CrystalReport时,如选中Save Data With Report项且在设计时生成了预览数据,那么此报表将不能再直接动态生成数据,而要在使用DiscardSavedData方法清空数据后才能生成。但使用DiscardSavedData后系统将自动要求更新TTX数据源,如在报表原有路径下找不到相应的TTX文件,就会有对话框弹出要求指定文件地址。此是指出正确的文件地址或直接按取消都可以成功更新数据源。

--------------------------------------------------------------------------------
****
TrueDBGrid
当点击TrueDBGrid的行头时,此行即被设为选中状态,此时按Del键可以删除此行。但如在TrueDBGrid尚未得到焦点是就点击其行头,TrueDBGrid只会将所选行设为选中状态,却不会同时得到焦点,因此此时如按Del将不能对TrueDBGrid起作用。建议在其Click事件中加入代码使其得到焦点。

-----------------------------------------------------------------------------------
****
Fileds in Table for Table Maintenance Module
NeedMaint , TableName , FieldName , FieldCaption , FieldType , IsNullable , IsPK , IsIdentity , BaseTable , BaseFields , DataRange , DataFormat , BoxType
DataRange为字串型,可采取如下几种格式:0,1 (-99,99]
DataFormat:日期格式,字串大小写,数值格式等。
当IsIdentity为True时此字段要显示,但无论何时都不可编辑。
外键:组合框
日期时间:DTPicker
数值字串:文本框
逻辑值:0-1值:选项框
离散值:单选钮
不应出现应为外键的离散值。

离散值表:
TableName , FieldName , Vaule , DisplayValue


---------------------------------------------------------------------------
*******
如统一使用Grid新增记录,如何处理允许一次新增多个记录?
有外连表的Code-Desc如何实现?
如外连Program_Cd,可引申出更进一步的外连表Product_Cd,如何处理?
如何在TreeView中显示?

--------------------------------------------------------------------
********
CallByName:通过传递方法或属性名来访问函数。


--------------------------------------------------------------------
********
在FlexGrid中使用CheckBox的方法:
1,列表显示时只显示文本,在得到光标进行编辑时才变成CheckBox.
2,对所有数据单元格在列表时就入在CheckBox中。
3, 使用√,不加方框。

涉及到Check值的处理应主要交由Field对象来做。


--------------------------------------------------------------------
**********
在不同进程间不能直接作地址参数传递。
即在中间层与客户端之间不能传递自定义的Class对象.

--------------------------------------------------------------------
********
在新生成一个对象时,触发Class_Initialize事件。此时对象还没有生成,所以不能在此事件中出现对自身的对象引用,更不宜生成其子对象。可使用Init函数来做一些对角生成后的初始化工作。
-----------------------------------------------------------------------------
*****
table.Normal{width: 640pt; background-color: yellow; border-collapse: collapse;}
td.Normal{border: thin solid blue; padding: 5pt; margin: 5pt;}
使用CSS定义表格样式时,无法在Table级定义每个单元格的边框等属性,此时应按上例使用。
-----------------------------------------------------------------------
****
xsl:apply-templates:遍历指定的结点集(默认为当前结点的子结点集,不含孙结点),并对其依次进行模板匹配(即格式化)。

-----------------------------------------------------------------------
****
<xsl:for-each select="Set/Record" order-by="+ number(ID)">
在IE5中不能使用sort,可用此法代替。

Technorati : ,

posted @ 2006-11-06 17:00 Welkin Hu 阅读(756) | 评论 (0)编辑 收藏

1. Hibernate can not set null value to primitive types.
If data is null in DB, and Hibernate maps it as primitive type, An PropertyAccessException will be th rowed when.
Our solution (Discussed with Andy):
1) Ensure all Database fileds have default value.
2) Wrap all primitive value in DTO. (Andy says this is not essential.)

2. Debug Hibernate in my product

In single way one-to-many association, when update, Hibernate always update children's id to null!
Only when Bi-one-to-many association, Hibernate can update children correctly.
Do not use Hibernate List. It need a index/list-index property, which bind to a DB column, but means the real index of Java List. The List often get many null items.
Hibernate set is good. But our DTO already use ArrayList as Collection.
Children Id is missing after updated it.
Hibernate session.save normally call insert, session.update normally call update.
When update Bi-one-to-many association, parent always correct. But always insert children, can not delete and update children. CAUSE: I use a modifiable field as PK, because all children's ID is missing from JSP. In this case, I should manual delete and insert children table.

BTW, Set can not include duplicated items. However. Our DTO have no PK when it created until saved it to DB. This cause add new item fail.


Technorati : ,

posted @ 2006-11-06 16:59 Welkin Hu 阅读(205) | 评论 (0)编辑 收藏

我的多普达575昨晚突然被锁在耳机模式中,怎么也恢复不到正常模式。后来一急,干脆恢复出厂设置。天啦,还是不行。幸亏这是智能手机,所有的资料都备份在我的电脑上。

最后上网查查,原来是因为耳机孔中的弹簧没有复位。问同事要个牙签,捅几下就好了!!

posted @ 2006-11-02 18:29 Welkin Hu 阅读(384) | 评论 (0)编辑 收藏

Windows XP系统目录下的dllcache目录实在太大。可以采用下面的方法安全清除。

方法一:组策略

点击"开始→运行",在运行对话框中输入"gpedit.msc"命令,打开了组策略编辑器,打开"计算机配置→管理模板→系统→Windows文件保护",在右侧窗体中显示四条文件保护策略使用这些策略就可以轻松定义Windows系统的文件保护功能。

文件保护功能会备份大量的被保护的文件到dllcache目录中,但随着系统安装的软件越来越多,会发现dllcache目录的体积不断增大,浪费了很多硬盘空间。该策略就是用来限制dllcache目录的大小。在"限制Windows文件保护缓存大小"对话框中,点击"巳启用"选项,然后指定"缓冲区大小",如我们想限制dllcache目录最大为300MB,就在输入栏中输入"300"即可,最后点击"确定"按钮。

完成以上设置后,需重新启动系统才能生效。

方法二:SFC命令

限制Windows文件保护缓存大小也很简单,如设置为300MB,在命令提示符下输入"SFC /CACHESIZE=300"即可。"
  均重新启动,大小仍然是429M,于是运行"SFC /PURGECACHE"清空之!

Technorati :

posted @ 2006-11-02 10:54 Welkin Hu 阅读(1274) | 评论 (0)编辑 收藏

JasperSoft now provide many powerful extension around JasperReports.

http://jasperintel.sourceforge.net/

JasperServer is specifically designed to provide a Web application around JasperReports. Continuing the philosophy of JasperReports, JasperServer is aimed at providing a managed, stand alone Web reporting environment, as well as being able to be embedded in existing Java Web applications, and services to a variety of technologies through Web services, including the LAMP stack. By focusing on a clean business API and using an advanced inversion of control architecture, JasperServer can be easily integrated and customized for your needs.

JasperIntelligence is an open source business intelligence platform from JasperSoft, providing common services like security and metadata management, and the capability to easily add additional functionality. The JasperServer is the first service using the JasperIntelligence platform. Following soon will be:

  • Report and metadata designers integrated with the platform
  • OLAP user interfaces
  • Data warehouse management environments
  • Data integration services (ETL)

roadmap

JasperServer Planned Features

  • Additional report data source types: Hibernate, EJB, POJO, XML
  • RTF output of reports through the user interface
  • Additional input control types
    - Multiple select
    - Select from a database lookup
  • Import and export of repository contents
    - Supports moving between repositories ie. test to production
  • Web services and PHP example application
    - Support for PDF, Excel and RTF report renderings
  • iReport plugin for repository browsing and report deployment
    - Includes Web services for repository management
  • User Search
  • Integration of external authentication mechanisms, such as LDAP, JAAS
  • Session management without the use of cookies
  • Internationalization of the Web user interface
  • Management of resource bundles through the user interface
  • User Preferences
  • Scheduled report generation
    - Includes storage of generated content and notifications of new reports to interested users via email
  • Saving report parameters and rerunning reports using saved parameters
  • Additional documentation
    - Architecture overview
    - Javadoc
posted @ 2006-05-14 15:15 Welkin Hu 阅读(882) | 评论 (1)编辑 收藏

1. How to list all months in cross table.

Cross table can not show a month which does exist in data set.

2. How suppress group detail if duplicated?

 

3. Export HTML Style can not fit UI Standard.

It is too ugly. We need better export engine

Technocratic : ,

posted @ 2006-05-12 09:49 Welkin Hu 阅读(389) | 评论 (0)编辑 收藏

I'm finding a right project track and issue manager tools for a long months.
Last week, the golden week of May, I found Track+ (http://www.trackplus.de).

It is open source but want a reasonable price for the company over 9 persons. My team has 6 memebers.
If I apply Track+ successfully in my team, My boss will be inspired.

I will complete the project's estimation tomorrow. Track+ can help us check how actual mandays far from estimation. Last project,  the actual mandays is double of most possible estimation, but approximate to the maxium estimation.

This time, I still use PERT method to estimate: findout minum, most possible and maxium manday. but I know more detail than last time. And I have stable team members. they join the estimation. I wish we can achieve the estimation target.





posted @ 2006-05-11 21:48 Welkin Hu 阅读(280) | 评论 (0)编辑 收藏

现在每天都要和国外的同事用英语讲很多事情。经常讲的时候才发现,居然有一些简单的常用语都表达不清楚。起个帖子把它们都记下来吧。

  • 半小时 half hour, hour an hour. 可别和one half hour (一个半小时)弄混了。
  • 别在意 no nevermind 似乎比don't worry about 更受欢迎
  • 误差怎么说啊?金山词霸翻译是error! my god!
posted @ 2006-05-10 21:56 Welkin Hu 阅读(576) | 评论 (1)编辑 收藏

仅列出标题
共4页: 上一页 1 2 3 4