2005年09月19日

http://www.luotuoci.org/?q=LuotuociBlog

2005年08月31日

Deployment: Understand JRE download size

From: http://weblogs.java.net/blog/stanleyh/archive/2005/05/deployment_unde_1.html

2005年08月30日

Compiere B/S 的日志文件存放地点

Compiere252e 目前是这样处理的:

遍历硬盘,找到硬盘上第一个目录名不包含"Compiere2" 或 包含但位置不是从第二个字符开始的目录,判断其下是否有 lib 目录,如果有则在其下建一个 log 目录,将 log 文件放入其下,每天最多可放 100 个文件

如果找不到符合条件的目录,则生成一个 compiere.log 文件,我没有仔细看它的存贮位置.

这个处理应该是有点问题,因为我的就放在了 ant/lib/log 下.

下面这段判断代码好象有问题,不知道是不是应该写成 != -1?

 if (fileName.indexOf("Compiere2") != 1)
 {
  String libDir = fileName + File.separator + "lib";
  File lib = new File(libDir);
  if (lib.exists() && lib.isDirectory())
   return fileName;
 }

如果写成 !=-1,则处理就会变成,先找目录名包含 Compiere2 的目录,如果其下包含 lib ,则新建一个与其平行的 log 目录,存放进去.

否则,新建一个 compiere.log 文件.

2005年08月26日
From:http://home.donews.com/bottomad.html
浙江商人成功的22条规矩
马国良 | 网络营销 | 出处:收藏| 2005年08月26日 17:31 | 阅读 16 次

         1.坚持看CCTV-1新闻联播。
要想把握经济命脉,必须关注政局,新闻联播图文并茂,有声有色,着实为中国商人的最佳晴雨表;你可以不看财经报道,也可以不看焦点访谈,如果你不是做石油和外汇的,甚至你都可以不去管类似9.11事件和中东局势。

2.不要轻易相信合约或合同
哪怕合约让你的律师看过了,公证处公证了都不要轻易相信,甚至当你的客户把钱已经汇入你指定的账户以后你都必须确认,这笔钱你能不能拿出来,能不能动,而合约以外的涉及到利益冲突的任何口头承诺与解释你都必须当他是放屁,无论香还是臭,在对方兑现承诺以前都不要沉湎其中,更无论对方是谁,哪怕那是你交了十年的朋友甚至是和你上了床的女人都必须如此。

3.你自己必须守信,一诺千斤,但对不守信的人例外!!
你确认你一定能够做到的事情你才可以承诺,但不要夸大其辞;你如果想一直做个商人,那么你必须树立自己的信誉!虽然你可以不在乎外界对你的争议甚至你也可以制造争议但你不能失去信誉,否则你就不是一个商人而是一个骗子;信誉具体包括你如果和别人约了2:00见面,那么你绝对不可以1:50以前或者2:01以后出现,如遇交通堵塞或意外事件,那你必须及时通知对方,除非你出了车祸遇到空难昏迷不醒或者已经死亡,否则你都没有理由爽约、早到太早或迟到太迟,而你的涵养则体现在对待对方不守时不守承诺的态度与包容等方面;而一旦当你确认对方是在为了利益而一再欺骗你,那么你对对方做出的一切行为都不过分,甚至你可以将计就计,反过来给他画一个饼!

4.你能赢得起但你可能输不起的生意最好不做!
在做任何生意以前,你都必须考虑清楚,如果你输了,那么你是否输得起,而不是去考虑你如果赢了会怎样怎样,输不起的事情你最好别做!而考虑输的范围时你也不要只考虑钱财方面,作为半个商人,有些东西你永远都输不起,包括你爱的女人,你的家人,你的江湖地位甚至你的信誉;所以你必须在做任何生意以前全面考虑清楚你究竟输得起输不起,如果输得起,那么OK,你去义无返顾的DO IT吧!

5.不要先期投入太多,给自己留够底牌
不要把自己手里所有的牌全部亮出来,因为牌局随时会中途停止,而对方也随时会出新的牌,不到最后关键时刻,最好不要亮出你手里最有分量的牌,最后的赢家才是真正的赢家!

6.天下无事不可为,但商人有所为也有所不为
《菜根潭》上有句话说的好"毋以善小而不为,毋以恶小而为之",说的是做人的道理,而生意也是如此:"不要因为利润少就不去做,也不要因为风险小就去做";而同样在中国,违背法律的事情可以做,但违背道义的事情则坚决不能做。

7.慎重选择合作伙伴
无论是团队,还是个人,很多时候我们都渴望有能够和我们一起联手打天下的黄金搭档,但亲密战友是一定要慎重慎重再慎重的选择的,慎重是对彼此而言并非只针对单方,而亲密战友一定要符合下面这些前提条件才可以成为你的亲密战友;其一,他和你一定需要在一个战壕里一起战斗过至少一年;其二,在你没有负他的前提他对你所说的每一句话他自己都能负责任;其三,他必须是个实在而且能塌实干事的人;其四,他考虑得更多的是你们之间共同的利益(无论是短期的还是长期的),而这个共同利益高于个人利益;其五,关键时刻他没有躲开更没有出卖你或者大家在他能获得比合作利益还大的更大利益的前提下,五点缺一不可,否则彼此之间的合作不会长久。

8.不要在你的团队里有你家庭成员的影子
无论是你老婆还是你父母,都不可以在以你为核心之一的商业团队里有太多插手,因为以你为核心之一的团队接受的是你,而不是你的家庭成员,在你的团队全体成员主动接受并邀请你的家庭成员成为你们团队一员以前,无论你的家庭成员是谁,有多大的本事,或者可以给你们的团队带来多大的前进帮助,都不能成为你让你的家庭成员成为团队一员的理由;而当在你团队(三人或三人以上)里的异性成员一旦与你上了床,那么你必须考虑让对方立刻离开这个团队,要么她(他)另谋高就,要么她(他)成为你的专职情人或者太太(老公),总之,她(他)已经不能继续留在这个团队,所以在团队里不要随便考虑和异性上床或者动情。

9.不要与和你有利益冲突的女人上床
无论谁会占谁的便宜,或者大家之间可以同时并行两种关系,都不应该与之上床,更无论这个女人有多性感,多煽情;这样的女人包括:与你有生意往来的女人,在你手下工作的女人或者是你手下与同事的家眷,甚至是管理着你的政府机构、职能部门里的女公务员,原因有二:其一,这样的女人可以让你死都不知道是怎么死的,其二你虽然是半个商人,但另一半也不是出卖肉体的男妓。

10.不要给你的女人讲你的商业细节
无论这个女人是你包了的娼妓、二奶,还是你众多情人之中的一个更或者是你已经结婚多年的妻子,你都应该不和她们谈你的商业细节:第一,你谈了可能她们也不懂;第二,你谈的商业细节里面会有能让你入狱的内容;第三,那涉及到商业机密;无论你有多少信任你的女人,都不应该谈太多和你有关的商业内容;还有一个无须单列的商规就是千万不要在夜总会歌厅等色情场所给小姐和应招女郎发名片,一定要记住!

11.你可以行贿但不要做污点证人到法庭去举证
不管收受你贿赂的官员多么无耻,多么不够意思,你只可以行贿而绝不可以去做污点证人到法庭举证;除非你以后连半个商人都不想做了;而如果是你主动行贿,对方收受了而且也为你办了事情,那你更不应该由此来当做能抓住对方小辫子的罪证要挟对方继续为你顶风开绿灯,也无论对方是政府官员还是执法人员还是银行官员甚至办事人员的;最基本的,请客送礼吃饭洗桑拿甚至大到澳门游,这些感情投入都千万不要单独记小黑账,而财务账面上的处理也一定要不留痕迹。

12.不要偷税漏税但要学会合理避税
大头小尾的发票最好别开,营业税以及附加的教育基金等你该交多少交多少,增值税你更别动脑子(记得找上家要税票正常抵扣就可以了),除此以外关税你掂量掂量自己的分量,具体情况具体对待,企业所得税是可以全部避掉一分钱都不交的,但最好给地税点面子,少交点别一分钱都不交,交多交少你自己看着办,而个人所得税呢,视当地政府给纳税人办了多少实事是否把咱纳税人真当纳税人人看待的具体情况而造工资表吧。
    
13.你可以利用新闻记者但不要相信记者
你可以给记者一些钱或礼品,但你不能告诉记者很多你的底细更不能相信记者会给你保守商业秘密,甚至你不能和记者靠的太近且必须学会面对记者而设防,无论你面对是是否是漂亮风骚的女记者还是能发内参的大腕记者都如此。
    
14.不要摆大,哪怕你真的是老大
切记天外有天,不要在任何场合摆大,哪怕你真的很大,而当对方是个摆大而且肤浅的人,你如果想灭掉他,那么最好随便找块砖头砸他一个跟头,然后你走你的路!但切记,这个砖头一定不是你自己的砖头,而且这个砖头最好和你自己没什么关系。

15.保持中立,不要卷入政治派系纷争
在任何派系纷争面前都应该保持中立,尤其是在政治派系纷争面前,事实证明,把商业利益的希望寄托在有派系纷争可能的任何一方面都是危险而且不明智的,在派系纷争之间,你必须冷静的保持中立。
    
16.不要太在乎金钱与利益得失
切记有所得就有所失,而有所失就有所得的古训,钱没有了还可以再赚,天下自然有得是你赚不完的钱和商业机会,所以何妨在金钱与利益面前大度一些呢?更何况,更大的商业机会正在等着你去把握呢?基本上你应该没有时间计较一时的得失才对,哪怕你有的是时间去品茗赏色。
    
17.不要过多用金钱粉饰自己
虽然面子对你而言很重要,但相对于你自己的人格魅力而言,有没有名车,带游泳池的别墅,高尔夫以及你的服饰,甚至发型这些都会显得微不足道;当然你可以按自己的喜欢穿一双"内联升"的布鞋,甚至可以在有时间的时候飞到异国他乡去看一场你喜欢的球队的主场或客场比赛,更甚至你可以在很多人面前抽你自己喜欢抽的劣质香烟!
    
18.资本决定发言权,但你不应该轻易让别人知道你有多大的发言权
关心一下你的属于你的资本和你能控制的资本是正确的,甚至你该关心的包括你的坏帐和现金收益以及现金流量,但这些不应该让太多人知道;而当你以外的获得一笔巨大财富的时候,你更应该学会别把这个消息告诉别人,包括已经和你患难很久的妻子,否则她可能会要求离婚并分割你的这笔不小的资产!记住,黑马乐园www.hmly.com男人的金钱应该和女人的年龄一样永远属于秘密,哪怕有一天连女人的年龄都已经不是秘密的时候,你的金钱也应该还是秘密;除非在你临死时即将捐献你的全部家产时,你都绝对不可告诉别人!
    
19.总结别人的成败得失,但国外的案例你可以不用理会
不要羡慕别人的成功,更不要鄙夷别人的失败,你首要应该做的是学会分析和总结现象背后的本质,找出别人失败或者成功的全部原因,取其长,补其短,做你自己该做的事情;而国外类似微软等那些故事,离你实在太遥远,你大可以不去管他,所以一定意义上,现有的MBA对在中国做生意的你而言并没有多大实际意义!
    
20.不要用黑白道的规矩去解决商业上的冲突
商业永远是商业,而商业是有商业自身的游戏规则在的,所以哪怕你确实是黑道人物,也不能随便利用黑道规矩去解决商业冲突,同样,即将你有很好的白道背景与资源,你也不能轻易利用这些资源来解决你在商业中的冲突!既然选择了商人,那你必须遵守商业中的一切游戏规则,愿赌就得服输!

21.在能把握全局的前提下,不要追求事必躬亲
不要把自己搞的没有时间与朋友交流,更不要让自己没有时间去泡女人和INTERNET,最要紧的是不要让自己没有时间放松与思考,所以,应该学会让别人去帮你打点生意,处理业务,虽然,业务的核心部分你自己必须牢牢把握;同样,把事情交给别人去做的风险你要考虑清楚并能够预防,以免你把事情交给别人去做以后,你自己又成了一名忙碌的救火队员,记住消防和救火是有区别的,消防的口号是"消防结合,预防为主"。

22.给自己留条后路,预防众叛亲离你
可以在沉寂江湖多年以后重整旗鼓,但你不可以倒下以后就不再起来,因为你是一个男人!所以你必须给自己留一条属于你自己的后路,后路包括藏起一个存钱罐,虽然里面只有几块钱但你将来就是要靠这几块钱东山再起;后路也包括一栋法律意义上并不在你名下的房子(你可以有个地方一个人疗伤,恢复元气),更包括一个并不经常来往的但很仗义而且你也给过他很多帮助的朋友(他可以在关键时候收留你,陪你喝酒,而这样的朋友一生中你能遇到一个也已经很幸运了);如果实在没有后路,那么你就必须有去露宿街头沿街乞讨的心理准备,但那时候你只可以去向陌生人伸手,而绝对不要向你过去帮助过的还欠着你很多债务或者人情但装做不认识你的人低头。

2005年08月25日

当更改表与列中的字段内容的时候,常常会收到这样的错误:
 ORA-01451: column to be modified to NULL cannot be modified to NULL

ORA-01451: column to be modified to NULL cannot be modified to NULL
Cause: The column may already allow NULL values, the NOT NULL constraint is part of a primary key or check constraint, or an ALTER TABLE MODIFY statement attempted to change a column specification unnecessarily, from NULL to NULL.

    原因是在表与列中某个字段已经成为允许为 null,现在又再一次使它为允许 null,所以报错.
    compiere252d/e 的处理方法是: 当保存列的更改时,会检测欲当前的值是否可为空,如果可以,则在 alter table 语句中加 NULL
    这样就带来了问题:Compiere 只检查了欲设置的值,而没有检测数据表现在的值,如果欲设置的值与表中现有值一致辞,均可为空时则报错.

 解决方法:拿欲设置的值是否与表中现有值一致,如果一致,则不再更改

    令人不解的是:Oracle 的这种处理方法好象有点不合常理,我不作改动为什么就不可以?

2005年08月20日

Donews 的 blog 不仅 trackback  不好使,而且为什么连搜索功能也没有呢?

不知道有没有知情人能说说为什么?

2005年08月18日

       听起来有点恶心,但如果你看过"天、地、人"(雅克贝汉作品)三部曲中的“微观世界(点虫虫)”的话,你一定人为片中的那个小虫虫所感动的。

在 Java 里,静态字段是常驻内存中的,但是静态方法是否也是常驻内存中呢?

来自 comp.lang.java.programmer 的回答:
—————————————————————-
John Bollinger answered:

All instance fields of every object in the JVM and all static fields of
every class in the JVM are always in (possibly virtual) memory.  Some
version of the code for all methods, static and non-static, of all
classes currently loaded in the JVM are always in (possibly virtual)
memory.  These are direct implications of an instance being live in a
JVM and of a class being loaded in a JVM.  Why do you suggest otherwise?

Methods do not run in any case.  Threads run, executing methods’ code in
the process.

—————————————————————-
Roedy Green answered:

They hang around in RAM until there are no more references to them.
Then they can be GCed like anything else.

—————————————————————-
那么,是不是这样呢?

在 JVM 中,所有对象的的静态字段与实例字段都是在内存中,(对于实例字段来说,只有对象实例化才在内存中)

对于方法来说,只要类已经被 load 进 JVM,则不论其是否静态,都存在于内存中,区别只是对于静态方法,所有的实例及对象都指向同一个方法。

—————————————————————————————————

following is writed by me


then,does it work like following?
         
1. when class isn’t be loaded in JVM
   –all fields not in memory

2. when class is loaded in JVM
   –static fields are in memory,but instance fields aren’t in memory,all methods not in memory

3. when class is loaded in JVM,but it isn’t be initialized,and its static method is invoked
   –all fields are in memory,static methods in memory,but instance methods aren’t in memory
         
4. when class is initialized
   –all fields are in memory,all methods are in memory
  
5. Whether it’s true or not? and at last,I want to know when are they be GCed? 
   I’m puzzled by Roedy,static fields can be GCed? And static methods too?         
                     

—————————————————————————————————————————

Chris Uppal  answered:

> then,does it work like following?

> 1.[...]

No.  The following is a simplification (there are exceptions in certain
"advanced" situation — all of which involve classloaders), but it’s close
enough for a working approximation:

    When a class is loaded, the code for its instance methods
    and static methods are treated identically.  They are copied
    into the JVM’s memory and stay there (with the class itself)
    until the JVM exits. Nothing is ever GCed.

    Instance fields are part of the instances, so the memory used
    for storing any instance’s fields is allocated when the instance
    is created, and released when the instance is GCed.  Static
    fields are part of the class, and their memory is allocated when
    the class is loaded, and never released until the JVM exits.
    (Or until the class is itself GCed — but that can never happen
    except in special applications which make sophisticated use
    of classloaders)


(Actually, the JVM is at liberty to play tricks to reduce memory consumption,
as long as that is never visible to application programmers.  That’s an
implementation detail, and will vary from JVM to JVM.  As far as I, personally,
know the only "trick" that is used is that the JITed form of the methods’ code
/can/ be created lazily (when the method is used, or is used more than a
certain number of times), and that the compiled machine-code representation
/can/ be thrown away if it has not been used for a while.)

>    I’m puzzled by Roedy,static fields can be GCed? And static methods
> too?

Roedy is wrong.  If he is confusing you then it’s probably best just to ignore
him (on this subject).

====================================================================

现在我基本明白了,结论如下,欢迎拍砖:

1、class 没有 load 进 JVM 前,所有的 fields ,methods 均不在内存中

2、class 被 load 进 JVM 后

 a. 对于方法

  不论是 static 或 非 static 的,都一样的,总是跟 class 本身在一起的(即存放在内存中),永远不会被回收,除非 JVM 退出。他们的区别是,静态的方法不需要实例即可使用,而非静态的方法需要实例调用。

        那么,除了安全的考虑外,以于使用者来说,调用 static 方法更方便,但并不会对内存造成额外的开销。

     b. 对于属性

  静态属性是跟 class 相关的,所以总是当 class 被 load 进 JVM 时即存在于内存中,并不会被垃圾回收(所以,相比于实例属性,对于内存来说是有多余的开销的)。

  静态属性被回收的唯一情况是类本身被回收,这种情况的发生只有当某个应用单独使用了一种复杂的类装载器的时候才可能出现。

  实例属性是跟实例相关的,故只有类实例化后,才会放入内存,当实例被回收后,实例属性自然也不存在了。

Roedy 依然认为 static field 与 static Method 是可以回收的(从广义上来说应该是这样,有时间我研究一下 JVM 的规范再说):

—————————————————————————————————————————

Roedy answered:

>Static *methods* ?? Surely not. And what’s a reference to a static method?

A piece of code that invokes a static method would be a reference to a
static method, but GC is only interested in what class references
point to, not which method within that class.

On the other hand, a method might be inlined, interpreted or compiled.
Over a session it might even exist in all three forms.  Each method of
the class can be handled separately.  Presumably GC scavenges
discarded compilations whose "effectively final" assumptions have been
ruined by a new class loaded.

2005年08月11日

From Greg Luck’s blog: http://gregluck.com/blog/archives/2005/08/oscon2005_googl.html

Google is the new Microsoft – Microsoft is the new IBM – IBM is the new Sun – Sun is a benevolent foundation.

Google

Google 吸引了最优秀的人才,写了最吸引人的应用并且有非常好的股东回报。它现在特别象 MicroSoft 的巅峰时期一样,几乎每个人都喜欢它。它有很多只运行在 Windows 平台上的软件,比如 Google Earth,如果点击 google.com 上的 more 页签,你可以发现更多这样的软件。

Micro Soft

Micro soft 依然是一个强健的庞然大物,但它的成功只是依赖于两个垄断性的产品- MS Office 和 Windows OS,微软对开源更多的是一种刺激而不是一种威胁。它现在仍然可以吸引了许多最优秀的人才,但是比以前要差点。对于微软来说,已经不如以前了。

Microsoft 现在跟 70年代的 IBM 一样,深受反垄断调查的困扰。Microsoft 实际上看上去就象 80 年代后期的  IBM。

IBM

IBM 现在正致力于开源社区,Eclipse IDE 吸引了许多的开发人员的。它不仅有自己的 JDK,还有开发者在对免费的 JDK(Apache Harmony) 作着贡献。从内到外,它现在看起来都象是一个专注于开发社区的公司。从 1996 到今年初,Sun 一直是开源社区的先锋,而现在,IBM 正在后来着居上。

Sun

Sun 又如何呢?很难理解其在 Java 以及开源 Office 背后的商业动机,实际上,Jonathan Swartz 说Sun 将开源它所有的软件:sunsite,Java,以及Office,NetBeans 还有别的许多。

它到底怎样赚钱呢?我不清楚这个,实际上我怀疑他们还是否能够赢利。它们的 AMD64 服务 器 ,40Z,是非常棒的,只是我依然怀疑它的利润是否足够支撑他们软件开发的费用?他们在同 HP, Dell 在竞争,但这两家根本就没有这样的开支。

看起来,Sun 真的是象一个慈善基金。

2005年08月09日

今天有事要找看守所的电话,查 114 找到了一个东城公安局的咨询电话。

电话一接通,听到一声重重的女声:“讲!”,把我吓了一大跳,这是服务电话么,这年头了怎么还有这样的人啊。

看来,服务为王,还任重而道远哪