Total Pageviews

2015/03/04

How to read characters in a string in java

Requirement
If I have a String "(預)     16,276.22"
I would like to parse this String and get "(預)     " and "16,276.22" separately.

How to do
Here is the sample code:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
String str2 = "(預)     16,276.22";
String numericString = "";
String nonNumericString = "";

char[] str2Array = str2.toCharArray();
for (char c : str2Array) {
    // print each character
    System.out.println("character = " + c);
    if (StringUtils.isNumeric("" + c) || ",".equals("" + c) || ".".equals("" + c)) {
        numericString += "" + c;
    } else {
        nonNumericString += "" + c;
    }
}
// print numberic part
System.out.println("numericString = " + numericString);
// print non-numeric part
System.out.println("nonNumericString = " + nonNumericString);

debug message:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
character = (
character = 
character = )
character =  
character =  
character =  
character =  
character =  
character = 1
character = 6
character = ,
character = 2
character = 7
character = 6
character = .
character = 2
character = 2
numericString = 16,276.22
nonNumericString = ()     



How to convert a char to a string in Java

Problem
I have a char and I need a String.
1
2
char c = 'a';
String s = c;

But eclipse complain it has compile error : Type mismatch: cannot convert from char to String

Solution
String concatenation can fix this type mismatch error:

1
2
char c = 'a';
String s = "" + c;


Reference
[1] http://stackoverflow.com/questions/8172420/how-to-convert-a-char-to-a-string-in-java

2015/03/01

[閱讀筆記] 最困難的事別交給最有能力的人 - Part 1


  1. 達成共同的目標就像膠水,可以迅速把團隊成員凝聚在一起。
  2. 一團和氣,一敗塗地。
  3. 一般人討厭被管,但喜歡有人帶。
  4. 只有管理沒有領導,只能激發出稱職的表現,主管雖然可以掌控團隊,團隊還是沒有全力以赴的動力。
  5. 加上領導,就能激勵員工加倍努力,表現也會更上一層樓。因為替卓越的領袖工作,員工會受到適當的鼓勵、支持與信任,也因此願意貢獻所長,覺得未來充滿希望,也能自由發揮。
  6. 計畫人人都會訂,重點是如何去執行。
  7. 如果需要無法掌握的人的合作才能完成,就不要設deadline,而是設定績效目標和策略目標。
  8. 明確地說『不』能讓你的團隊更獨立,也更有生產力。拒絕也許是最好的回應,你說『不』的次數夠多嗎?
  9. 老子曾說:『人待我以不智,仍應明智以對。』
  10. 讓員工自己訂目標,更容易成功
  11. 要確保團隊成員都能清楚看到目標,主管必須採取更明確的行動,一定要讓員工知道什麼人、什麼時候需要達到什麼目標、標準為何,以及可能要付出什麼代價。
  12. 一個人能達成目標,很大的原因是因為目標一開始是他們設定的,而且他們會不時審視目標、想像自己時間目標的模樣。所以,你要協助員工定下自己的目標,這麼做可以引導行動,幫助他們更容易實現目標。
  13. 主管要經常談論目標,描繪出令人難忘的成功畫面,以確保大家沒有隨著日常工作的忙碌而淡忘。團隊成員都必須了解自己在整體目標裡扮演什麼角色,明白自己的貢獻加上團隊其他成員的貢獻,如何一起促成團隊的功能。
  14. 如果不知道自己要去哪裡,最後很可能走到別的地方。
  15. 根據研究顯示,女性同時處理七件工作時,會達到臨界點,男人則是五件。
  16. 如果讓員工專注於少量的工作或目標,他們就能很有效率。不過,數量如果太少,有些人會覺得工作內容重複、枯燥,熱情就會漸漸消失,生產力也會隨之下降;如果太多,就會開始出錯,球就會掉到地上。
  17. 替團隊成員設定目標和任務時,要避免列出一堆包羅萬象的責任,相反的,你要替團隊成員寫下明確的目標,最多不能超過七個,實際數量是五個,三個以內又更好。這樣你更可以看到符合期望的結果。
  18. 只有聰明絕頂的人,才能同時抱持兩種相互矛盾的想法而無礙思考。
  19. 一艘船不能有兩位船長。如果一名員工得聽兩個老闆下指令,三個人都會變得很沒效率。
  20. 所有主管都有不受歡迎的時候,主管的工作就是這樣。不過,雖然你不能遠永受員工喜愛,你還是可以永遠受尊重,這是遠比受歡迎更為重要的事。
  21. 想避免批評,就什麼都不要做、什麼都不要說、當個沒價值的人。
  22. 把遠慮轉化為先見之明和周詳的規劃。
  23. 讚美別人的行為,等於鼓勵更多好的行為,也滿足人想好好做事、得到更多讚美的心願。
  24. 稱讚任何好表現,等於掌握了讓人奮力而為的力量,也能強化這些力量,使其超越我們所認知的範圍。
  25. 找出團隊中吃苦耐勞的員工,仔細觀察他有沒有疲憊的跡象,你要幫他控制步調。這種人不會承認自己負荷不了,這是他們的特質。但無論對方如何抗拒,你都要在必要時讓他們休息充電、恢復精力。
  26. 吃苦耐勞的馬,身上總是套上最多馬鞍。
  27. 今天的問題往往是昨天工作品質不佳的後果,要想辦法避免相同的問題再次發生。
  28. 團隊中如有喜歡引人注意的人,過沒多久,團隊其他成員會覺得自己沒有得到足夠的關注。更糟的是,你發現大家都不再把心思放在目標上,而是爭奪注意力。
  29. 需要大量關注的人,不會改變一生的習慣。你可以交付他更多的工作,讓他沒有時間鬧事。如果這個方法還不奏效,只能請他離開。
  30. 行動助長信心,讓信心更堅定;任何形式的不行動都會助長恐懼。想打擊恐懼,就要行動;想讓恐懼增加,就等待、拖延、待會再做。
  31. 一個人為了逃避思考,一定會想盡各種辦法。
  32. 釋放天生的生產力,我們需要
    • 知道目標是什麼,也看得到成功的模樣、明白成功的感覺
    • 相信自己正朝著目標前進
    • 專注於實現目標,拋開對實現目標沒有幫助或幫助不大的事務
  33. 想提高生產力,就要確定員工知道目標、了解目標,並在達成目標時,鼓勵他們享受成功的滋味。過去的事就不要追究,鼓勵員工再剩下的時間從事有生產力的工作,不要在乎過去浪費了多少時間,明智的投資時間,從現在開始。
  34. 不要忘記獎勵有生產力,每天都有工作進展的員工,很多主管都忽略了這點,只注意到要獎勵重大醒目的成就。平日的生產力同樣值得表揚,因為生產力一定會帶來成就。
  35. 生產力是與生俱來的特質,不是後天學得的技能。
  36. 在職場上,緊急和重要往往南轅北轍,不斷爭奪你的注意力,把你往相反的方向拉。
  37. 急著想幫助同事的心態是『緊急』對上『重要』的陷阱之一。到頭來員工可能發現自己一直在做別人的事,自己的工作卻進展有限。
  38. 有些事你就是做不完。時間永遠不夠,本來就不可能做完所有的事,因此你要一重要性安排工作,才能優先處理最重要的事物。
  39. 緊急的事情,不等於重要的事情
  40. 最重要的事絕不能任憑最不重要的事擺佈。
  41. 一項比較困難的工作,並不代表他在完成後一定能創造出更大的成果、更多的利潤、或更大的成就。根據經驗顯示,結果通常剛好相反,那些難搞的工作往往在時間和精神的投資報酬率表現最差。
  42. 讓最優秀的人才專注在能夠帶來最大報酬的任務上,就可以成就更多,而團隊整體成果也可能會一飛沖天。想要創造出最佳的成果,就要讓最好的人才去執行機會最大的任務。
  43. 為了要向北走,有時候可能必須先往南走一段路。
  44. 在工作上,推理能力除了用來作決策,也包括隨後所採取的行動。
  45. 比較不聰明卻又野心勃勃、充滿自信的人,往往會在擁有決策權時造成危害。
  46. 每當有困難的工作必須完成的時候,我就會把它交給一個懶人;他還真能找到簡單的方法完成它。
  47. 你要灌輸員工一個道德觀念,即使他們需要告訴你的是個壞消息,你也期望得到坦率、誠實而真誠的回答。
  48. 一旦團隊學會安排工作的先後順序,你就可以放心讓他們在不求助你的狀況下做出更多的決定,這樣一來,團位的整體生產力還能變得更好。
  49. 你必須狠心地對瑣事視而不見,才有時間解決最重一的問題,同時,你也應該盡可能把工作分配出去。你該做的是讓你的團隊在最少的督導範圍內,做出他們自己該做的決定。因為如果你不讓他們為己的工作成果負責時,他們就會開始忙著做其他的事。
  50. 當一個人被剝奪做出重要決策的機會,它就會開始把所有能做的決定,都當成是重要決策。他會開始挑剔歸檔的方式,強烈希望每支鉛筆都被削的很尖,渴望確定窗戶事打開(或關上)的,並且傾向使用兩到三種不同顏色的筆。

2015/02/28

2015/02 Travel

故宮

嘉義市立棒球場

大林車站一隅

Figure out how to start investing.

What it means to buy a company's stock



Bonds vs Stocks

2015/02/13

How to hide column in ng-grid AngularJS

If we are using ng-grid to display data as bellows:

And want to hide issueSeqNo column as bellows:

All you need to do is add visible:false in  issueSeqNo column as bellows:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  $scope.itemGrid = {
      data : 'itemData',
      selectedItems: $scope.selectedRow,
      columnDefs : [
          { field : 'issueSeqNo', 
            displayName : 'issueSeqNo', 
            width: 120, 
            cellClass: 'text-left', 
            visible:false},
          { field : 'issueSerial', 
            displayName : '公債代號', 
            width: 150, 
            cellClass: 'text-left'}, 
          { field : 'issueDate',   
            displayName : '發行日期', 
            width: 150, 
            cellClass: 'text-left'}, 
          { field : 'debtName',    
            displayName : '公債名稱', 
            width: 600, 
            cellClass: 'text-left'}],
      enableColumnResize :true,
      i18n:'zh-tw',
      multiSelect : false,
      showFooter: true,
      afterSelectionChange: function () {
          if(!angular.isUndefined($scope.selectedRow[0])){
              alert($scope.selectedRow[0].issueSeqNo);
          }
       }
  };


Reference

How to get selected row's value from ng-grid AngularJS in click event

If we are using ng-grid to display data as bellows:


As user click specific row, it should get this row's issueSeqNo and show alert message



 We have a ng-grid like below:
1
2
3
4
5
6
7
 <div class="row text-center">
  <div class="col-sm-12">
    <div class="grid-style" data-ng-grid="itemGrid"
         style="display: inline-block; height: 300px; width: 80%;">
    </div>
  </div>
 /div>

 and our javascript would be
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
   $scope.itemGrid = {
     data : 'itemData',
     selectedItems: $scope.selectedRow,
     columnDefs : [
         { field : 'issueSeqNo', displayName : 'issueSeqNo', width: 120, cellClass: 'text-left'},
         { field : 'issueSerial', displayName : '公債代號', width: 150, cellClass: 'text-left'}, 
         { field : 'issueDate',   displayName : '發行日期', width: 150, cellClass: 'text-left'}, 
         { field : 'debtName',    displayName : '公債名稱', width: 600, cellClass: 'text-left'}],
     enableColumnResize :true,
     i18n:'zh-tw',
     multiSelect : false,
     showFooter: true
 };


If we would like to get selected row's value from ng-grid, just add afterSelectionChange event as bellow:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
  $scope.itemGrid = {
     data : 'itemData',
     selectedItems: $scope.selectedRow,
     columnDefs : [
         { field : 'issueSeqNo', displayName : 'issueSeqNo', width: 120, cellClass: 'text-left'},
         { field : 'issueSerial', displayName : '公債代號', width: 150, cellClass: 'text-left'}, 
         { field : 'issueDate',   displayName : '發行日期', width: 150, cellClass: 'text-left'}, 
         { field : 'debtName',    displayName : '公債名稱', width: 600, cellClass: 'text-left'}],
     enableColumnResize :true,
     i18n:'zh-tw',
     multiSelect : false,
     showFooter: true,
     afterSelectionChange: function () {
         if(!angular.isUndefined($scope.selectedRow[0])){
             alert($scope.selectedRow[0].issueSeqNo);
         }
      }
 };



Reference
[1] http://stackoverflow.com/questions/16911156/how-to-get-the-cell-value-from-ng-grid

2015/02/03

透過信用評等來判斷債券基金的風險

當我們在判斷要購買哪檔債券的時候,第一個會想到風險,風險的大小則是要看該筆債券的投資組合中,各個信用評等的比例

信用評等的目的是顯示受評對象信貸違約風險的大小,一般由某些專門信用評估機構進行。 評估機構針對受評對象金融狀況和有關歷史的數據進行調查、分析,從而對受評對象的金融信用狀況給出一個總體的評價,以下是各個等級:

由下圖可以得知

  • 信用評等越差,違約率越高(但是利差越大)
  • 信用評等越好,違約率越低(但是利差較小)


以「富蘭克林坦伯頓全球投資系列-全球債券總報酬基金美元A(acc)股」這檔債券來說,可以從晨星網站中的投資組合一窺端倪

信用評等又有分屬於投資等級或是非投資等級


由於投資組合中,有一定的比率屬於非投資等級的債券,故有加上此警語「本基金有相當比重投資於非投資等級之高風險債券」


當大部分的投資組合都是信用等級較佳的投資標的,利差可能就會較小,若是信用等級較差的投資標的比較多的話,就有可能賺到比較多的利差。

第一次領薪水就該懂的理財方法書中說的,選擇債券型基金,一定要根據自己期望的投資報酬率與可以忍受的風險,找出最適合自己的投資標的,沒有所謂的對錯,就看你晚上好不好睡。


Reference
[1] http://zh.wikipedia.org/wiki/%E4%BF%A1%E7%94%A8%E8%AF%84%E7%BA%A7
[2] http://tw.morningstar.com/ap/quicktake/portfolio.aspx?PerformanceId=0P00000HPA&activetab=Portfolio
[3] http://www.masterhsiao.com.tw/CatBonds/CreditRating/CreditRating.htm
[4] http://www.books.com.tw/products/0010493110




2015/02/02

Generating entities from tables in Eclipse


Using this following procedure to generate Java persistent entities from database tables. 

1.  File => New => JPA Project => Click Next

2. Assign Project Name => Click Next


3. Click Next


4. Assign Platform and configure database connection => Click Finish


5. The sample JPA project, JPA_Project, had been created


6. Click src => Right Click => New => JPA Entities from Tables


7. Checked the tables which you would like to generate entities => Click Next


8. Click Next


9. Assign package name where your entities would like to place => Click Next


10. Click Finish


11. Check Result


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package gov.nta.entity.fms;

import java.io.Serializable;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQuery;

/**
 * The persistent class for the FMS406FF database table.
 * 
 */
@Entity
@NamedQuery(name = "Fms406ff.findAll", query = "SELECT f FROM Fms406ff f")
public class Fms406ff implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "YYY_MM")
    private String yyyMm;

    @Column(name = "REMARKS1")
    private String remarks1;

    @Column(name = "REMARKS2")
    private String remarks2;

    @Column(name = "REMARKS3")
    private String remarks3;

    @Column(name = "UPDATE_DATE")
    private Timestamp updateDate;

    @Column(name = "USER_ID")
    private String userId;

    public Fms406ff() {
    }

    public String getYyyMm() {
        return this.yyyMm;
    }

    public void setYyyMm(String yyyMm) {
        this.yyyMm = yyyMm;
    }

    public String getRemarks1() {
        return this.remarks1;
    }

    public void setRemarks1(String remarks1) {
        this.remarks1 = remarks1;
    }

    public String getRemarks2() {
        return this.remarks2;
    }

    public void setRemarks2(String remarks2) {
        this.remarks2 = remarks2;
    }

    public String getRemarks3() {
        return this.remarks3;
    }

    public void setRemarks3(String remarks3) {
        this.remarks3 = remarks3;
    }

    public Timestamp getUpdateDate() {
        return this.updateDate;
    }

    public void setUpdateDate(Timestamp updateDate) {
        this.updateDate = updateDate;
    }

    public String getUserId() {
        return this.userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

}

2015/02/01

[閱讀筆記] 華爾街刺蝟投資客之投資啟示錄


  1. 一檔好股票是你所能想像的最棒的財富製造機,但是,股市要求你具備勇氣與耐心
  2. 牛市時,誰需要分析師?熊市時,誰需要股票?
  3. 回歸平均值,才是最強大的趨勢;偏差,最終必然會得到修正
  4. 看待投資的正確方法是,看你扣除包括稅負在內所有成本後的報酬率,但是大部分人都不這樣看
  5. 所羅斯曾說: 人類社會財富創造和財富摧毀的週期總是交替循環。財富創造的循環大約延續兩代,也就是延續六十年,隨後無可避免的是三十年的財富摧毀循環期間
  6. 不要以為你的分析模型永遠有用
  7. 絕對不要融資做投資
  8. 複雜系統失敗的原因就是本身的複雜性,失敗的鐵則顯示,大部分事物最後都會失敗。複雜的系統在看來無足輕重的獨立事件發生時會失敗,並透過滾雪球效應,造成慘劇
  9. 測驗一個人是否有一流智慧,就看有沒有能力同時在心理堅持兩種嚴重背離的觀念,卻仍然保持行動能力
  10. 凱因斯曾說:對於完全沒有賭性的人來說,專業投資遊戲極為枯燥、極為可怕;有賭性的人卻必須為自己的天賦,付出代價
  11. 融資源自於人性的貪婪,當失敗時,就會放大其財務損失
  12. Samuel Coleridge曾說: 如果人們能以史為鑑,那我們將得到多少的教訓 ! 但是激情和黨派之見蒙蔽了我們的雙眼;經驗啟示的智慧猶如船尾燈,照亮的,只有身後的波浪


2015/01/31

2015/01 Travel

十分

十分瀑布


十分靜安吊橋

十分老街

台北孔廟

2015/01/23

How to Pixelate an Image in PicPick

Pixelation effect essentially lowers the definition of images, while increasing the size of the individual pixels, or dots, that make up images.  

If you need to pixelate your image, you can try PicPick and it's free.

Step1. Open the existing file in PicPick

Step2. Click Choose

Step3. Choose the area you would like to do pixelate

Step4. Click on the "Effects" button and then select the "Pixelate"option from the drop-down menu that appears. 



Step5. In the "Pixelate" menu, drag the "Pixelate" slider to the right to add and increase the amount of pixelation applied to your image. Then click OK.
Check the result:


















Reference
[1] http://www.picpick.org/en/features
[2] http://www.ehow.com/how_7307828_pixelate-image-using-photoshop.html