Status

Blog::Calendar

« May 2009 »
SunMonTueWedThuFriSat
     
1
2
3
4
5
6
7
8
9
10
11
12
13
15
16
17
18
20
21
22
23
24
25
26
27
28
29
30
31
      
Today
XML

Blog::Navigation

Blog::Editing

Bookmarks::Blogroll

Blog::Referers

Today''s Page Hits: 264

Other sites

Google Analytics

Powered by Roller Weblogger.
All | JBoss&Seam | JSF | ZK | Music | General | Java
Main | Next month (Jun 2009) »
20090519 Tuesday May 19, 2009
雞生蛋,蛋生雞
在不作商業行銷,這種靠口碑推產品的行銷模式裏.
User買不買你的產品的單,是雞生蛋蛋生雞的問題嗎?

"因為你的產品好,所以User肯花錢買單,所以你的產品更好,所以更多User買單.."
往負的方面想,
"如果你的產品還不夠好,所以User不肯花錢買單,所以這產品就不作了,因為產品不夠好,當然更不可能有User買單.."

這不是雞生蛋,蛋生雞的問題.
這個世界不會發生,"你的產品不夠好,但幸運的,User肯買單,所以你把產品作的更好,所以更多User買單.."


這是因果的問題..
只要你的東西還不夠好, 沒能滿足User的基本需求, User就不可能買單, 所以這個東西就沒價值, 整個產品就Fail, 投入的心力就是白費.

有些事情,是全有全無, 而不是作一半就能看到完成之後的結果的..

----
我一向視完成上面的要求,為我工作的最大目標.
猜老闆要什麼,作他想要的
不論那種行業,都是服務業,你的老闆就是你的客人.

但,我最近常在困擾著,
老闆的要求,之間似乎存在著互斥.
我有辦法跳脫自我,成為雙重人格的人嗎?
一個我,
想法要脫疆,視任何不可能為可能,不在乎怎麼該完成它,無視要多久才能完成他,只在乎他是否該值得被執行.
另一個我,
在人員隨時會被抽動的狀況下,必需估算人員的進度,規劃架構,解決人員技術問題,Review人員的程式,負責部份程式實作,策畫下一批工作項目,..

在人員跟工作項目隨時可能異動的狀態下,時程還有其意義嗎?

在我心中,這兩個角色一直是互相衝突的角色...
當你手下有人得安排工作時,你怎麼可能一邊想法脫疆不拘細節,一邊要規劃細節,設計,實作,管理會異動的其他人員符合時程?

我有法子嗎?
誰有法子?

有,唯一的法子就是,當你是一個不被時程約束,不必向上報告,不用向上負責,也就是當你就是老闆的時候..
相對的,也就是你燒錢的時候....
20090514 Thursday May 14, 2009
[ZK]Databinding with macro component

Databinding is a very useful feature to help us bind UI and model together, It decrease the line number of code of our project.;

Here, is example to show how to bind bean with macro component with data binding feature.

In this example, I have a PriceComp macro component , and have a Decimalbox inside it as a number member field. PriceComp delegates the number and forward the value to a decimalbox inside it.

public class PriceComp extends HtmlMacroComponent {
    private int number;
    Decimalbox db;
    public void afterCompose(){
        super.afterCompose();
        db = (Decimalbox)getFellowIfAny("value");
        if(db!=null){
            db.setValue(new BigDecimal(number));
        }else{
            throw new IllegalStateException("component value not found");
        }
    }
    public int getNumber() {
        if(db!=null){
            return db.getValue().intValue();
        }
        return number;
    }
    public void setNumber(int number) {
        if(db!=null){
            db.setValue(new BigDecimal(number));
        }else{
            this.number = number;
        }
    }
}

In the macro component template (~./myPrice.zul), it has a decimalbox , and it also forwards onChange event out to PriceComp as onNumberChange event

<zk>
     <decimalbox id="value" forward="onChange=onNumberChange"/>               
</zk>

You also need to write some configuration of this macro component. to enable default binding behavior, for example default save-when behavior of 'number' property is onNumberChange

<?xml version="1.0" encoding="UTF-8"?>
<language-addon>
    <addon-name>testapp</addon-name>
    <language-name>xul/html</language-name>
    <component>
        <component-name>myPriceComponent</component-name>
        <component-class>com.test.PriceComp
        </component-class>
        <macro-uri>~./myPrice.zul</macro-uri>
        <extends>decimalbox</extends>
        <annotation>
            <annotation-name>default-bind</annotation-name>
            <property-name>number</property-name>
            <attribute>
                <attribute-name>access</attribute-name>
                <attribute-value>both</attribute-value>
            </attribute>
            <attribute>
                <attribute-name>save-when</attribute-name>
                <attribute-value>self.onNumberChange</attribute-value>
            </attribute>
        </annotation>
    </component>
</language-addon>

Finally, a example to use databinding with this macro component.

<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<zk>
    <window title="bind macro component" border="normal" id="win">
    <zscript><![CDATA[//@IMPORT
    import com.test.*;
    ]]><![CDATA[//@DECLARATION
    ]]><![CDATA[
    Bean bean = new Bean("Cat",35);            
    ]]>
    </zscript>
        <hbox>
            Name :  <textbox value="@{bean.name}" /> |
            Number : <myPriceComponent number="@{bean.amount}" />
        </hbox>
        <hbox>
            Name : <label value="@{bean.name}" />
        </hbox>
        <hbox>
            Number : <label value="@{bean.amount}" />
        </hbox>
    </window>
</zk>
Copyright (C) 2003, 閣樓貓的五四三 (About Cat)