Total Pageviews

2015/12/31

2015/12 Travel

陽明山二子坪步道



新北市歡樂耶誕城







2015/12/30

[閱讀筆記] 鄭弘儀教你投資致富 (2/2)


  1. 台灣常用的貨幣供給額計算指標:
    1. M1A = 通貨淨額 (流通於市面的紙鈔)+ 支票存款 + 活期存款:屬於流動性較高,且富有交易功能的貨幣
    2. M1B = M1A + 活期儲蓄存款:活期儲蓄存款以短期儲存的功能較大,流動性稍差
    3. M2 = M1B + 定期存款 + 定期儲蓄存款 + 郵匯局轉存款等準貨幣:屬於長期的儲存功能,流動性更低的資產
  2. 在現金流動性與交易功能上,M1A > M1B > M2,亦即活動的資金動的越快,年增率越高。所以這三個指標常被用來衡量股市的好壞強弱,M1A 與  M1B 越高,表示流動資金越多,股市越熱;若股市不佳,則會發現 M2 指標的年增率增加,M1A 年增率變小
  3. 認購股票要小心的是,上市公司辦理現金增資的真正目的,其是要經營本業,還是抱持著印股票換鈔票的心態。現金增資會使股本膨脹,每股盈餘反而會縮水、股價下降,因次投資人要精打細算
  4. 行情總是在絕望中誕生,在半信半疑中成長,在充滿希望中毀滅
  5. 90% 的股票投資人都是情緒衝動的投資客
  6. 當大家都擔心害怕,股市成交量極小的時候,反而就是很好的進場時機
  7. 評斷股市低點的十個指標
    1. 市場成交量低:如果每日成交量只有兩三百億,代表很多人都死心了,此時籌碼相對穩定。成交量低的時候,就是買進的時機,是底部所在
    2. 融資餘額低:融資餘額是一個台股漲跌重要的判斷指標,可看出借錢買股票的人數多寡。通常散戶是融資買進的大戶,融資多,表示股票都到散戶手中,籌碼相對混亂,此時就是相對高點;當融資餘額低,表示籌碼相對安定,股價也處於相對低點,是好的買進時機
    3. 股市週轉率低:股市成交量低,代表週轉率低,代表短線客很少,大部分都是長線投資客,所以籌碼很安定,只要在低檔盤整夠長的時間,整理夠了,指數自然會往上走
    4. 本益比低:當本益比偏低時,你就可以買進股票,表示股價被低估
    5. 技術指標:如技術指標中的乖離率(BIAS%)若 >= 80 表示股試過熱,< 20 則是過冷,代表股價可能在低檔
    6. 國安基金是否要進場:當要求國安基金進場的聲音越大,那麼低點可能就會越低
    7. 政府動作不斷:可從證期會在放行基金募集比重來觀察,放行基金募集比重越高,表示股市很冷,完全沒有人氣,就是判斷低點的指標之一,亦即證期會放行基金募集資金的速度越快,股市就越沒人敢進場,就是低點所在
    8. 媒體壞消息不斷:在大家貪婪的時候恐懼,在大家恐懼的時候貪婪
    9. 重大事件發生:當重大事件發生時,都會把股市硬生生地打到最低點,進入超跌狀態,這時就是撿便宜的好時機
    10. 股市波段:掌握股市漲跌循環
  8. 股票健康檢查
    1. 基本面資訊(記得要再三確認數字的真實性)
      1. 每股盈餘:記得要看每股「稅後」盈餘
      2. 盈餘收益與本益比:每股盈餘除以股票市價,等於股票報酬率(ROE,股東權益報酬率)。每股盈餘收益高、本益比低,你的預期報酬就會高
      3. 股利發放率:股利發放比率越大,表示投資利潤越高
    2. 財務報表:現金流量表提供一家企業在某特定期間內現金流入或流出的資訊,若企業資金調度失常,代表企業有倒閉風險。當分析時最好取得三個年度以上的資料來做分析
    3. 董監持股比例與質押比例:若董監持股過低,代表大股東對於公司的未來缺乏信心;董監事持股質押比例高的話,代表大股東拿股票去抵押借錢,也不是個好消息
  9. 「董監事持股不足」或「質押比例過高」的公司,是判斷地雷股的關鍵
  10. 公司常見的作帳方式,就是投資看起來虧損很嚴重的,就把它列為長期投資,如果一項投資案被列為長期投資,意思就是不需要向股東報告投資明細,也不需要提列損失;而短期投資則剛好相反,是馬上可以看出損益的投資案,需要向股東報告明細
  11. 長期投資與短期投資暴增,常表示公司資金流向不明,經營者沒有認真經營本業
  12. 負債比太高的公司,表示現金短缺,公司資產都拿去抵押
  13. 很多上市公司的財務報表都是做出來的,財務報表是過去的資料,資料都可以搬來搬去,盈餘也是可以做出來的。投資人在看財務報表時,要比較多年的資料,不要太相信上市上櫃公司財務報表所包裝出來的假象
  14. 不要去做許多人做過的事,應該往其他不同的方向走才有機會
  15. 如果股市成交量非常大的時候,就是「大戶出場、散戶進場」的時候,若菜籃族、周遭同事、路人甲乙等等所有不懂的人都已經進場,每個人都在討論股票,記得「快逃」
  16. 收入高低的關鍵在於,你做的事情是否與眾不同
  17. 一個人如果能意識到自己是什麼樣的人,那麼,他很會就會知道應該成為什麼樣的人。人要時常自省,讓好的更好,讓壞的改進。
  18. 預知未來的最好方法,就是對目前所發生的事情有清楚的概念
  19. 20 世紀工業社會拼命的「機械化」生產,造成 21 世紀物質的生產過剩,過量的供給大於需求,使得全球經濟的總體結構必然有一次維護「自然生態平衡」的調整,使我們的社會進入「通貨緊縮」時期,此時的東西越賣越便宜,錢越來越難賺
  20. 台灣企業都關注在降低成本,很少去考量到要提高產生品質與價值。獲利與否的主要原因不是來自於降低成本,而是要看你的產品有沒有市場利基點,技術有無不斷提昇,產品有無推陳出新
  21. 很許多照理應該有十年經驗的人,其實他們只有一年經驗,然後重複十次而已
  22. 只有接受挑戰,累積經驗,一個人才有更大的進步。如果你很少犯錯,表示你的環境過於安穩,冒的險還不夠多
  23. 如果要買房子,記得要去爭取一年三十萬的貸款免稅額,比方說貸款利息是 4%,你貸了 700 萬,一年要支付 28 萬的利息,報稅時就可以把 28 萬的免稅額扣掉
  24. 支付房貸的關鍵在於:你的負擔能力?以及實際上你能接受多少負債?有些人認為房貸比例越高越好,有些人傾向慢慢還,有些人傾向儘快把錢還掉。這沒有對錯,端看個人情況而異

2015/12/08

Forgot password to log into JBoss AS 6 Administration Console

Problem
If I forgot my password to log into JBoss AS 6 Administration Console, how to change my password?

How-To
Step 1: Go to [JBOSS_HOME]\\bin, and execute add-user.bat 


Step 2: Choose type of user


Step 3: Click enter


Step 4: Input account name which you forgot its password


Step 5: Type in "yes" to update the existing user password


Step 6: Fill in new password


Step 7. Fill in yes to confirm update




2015/12/07

[Oracle to SQL Server Migration] MINUS

Problem
Here has a SQL statement which is working fine in Oracle:
1
2
3
4
5
6
7
8
9
select distinct fund_id
FROM dbm034fa

MINUS

select distinct fund_id
FROM dbm034fa
WHERE ( (mge_type='G' and (in_amt/out_amt)*100 >= 50) or
         (mge_type='F' and (in_amt/out_amt)*100 >= 20) )

But MINUS does not support in Microsoft SQL Server, how to translate it ? 


How-To
You can utilize EXCEPT in Microsoft SQL Server instead.
1
2
3
4
5
6
7
8
9
select distinct fund_id
FROM dbm034fa

EXCEPT

select distinct fund_id
FROM dbm034fa
WHERE ( (mge_type='G' and (in_amt/out_amt)*100 >= 50) or
         (mge_type='F' and (in_amt/out_amt)*100 >= 20) )


Reference
[1] http://blog.sqlauthority.com/2008/08/07/sql-server-except-clause-in-sql-server-is-similar-to-minus-clause-in-oracle/

2015/12/05

[Java] How to display double in 2 decimal places

Problem
I would like to pass a remarks report parameter to iReport. 
But the amount format should be formatted to 2 decimal places. ex1. 0 should display 0.00, ex2. 68.122223 should display 68.12

Original code snippet:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public Report generateDbm030rReport(final String qryYear) {

        Map<String, BigDecimal> dataMap = createInitialMap();

        // query DB and merge
        dataMap = this.query(qryYear, dataMap);
  
  //....
  
        BigDecimal a1Amount = dataMap.get("A1");
        BigDecimal a8Amount = dataMap.get("A8");

        StringBuilder remarks = new StringBuilder();
        remarks.append("備註:<br />");
        remarks.append("1.本表統計各級政府向未納入集中支付基金及特定用途專戶調度周轉金額。<br />");
        remarks.append("2.截至 " + qryYear + " 年 12 月底止向各級政府納入集中支付支基金及特定用途專戶餘額如下:<br />");
        remarks.append("(1)中央政府: " + a1Amount + "  億元 <br />");
        remarks.append("(2)直轄市: " + a8Amount + "  億元 ");

        final String param[][] = { { "remark", remarks.toString() }, { "createOrg", org.getName() } };

        return this.generateReport("dbm030r1", param, dataMap);
    }


How-to
Updated code snippet:
 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
 public Report generateDbm030rReport(final String qryYear) {

        Map<String, BigDecimal> dataMap = createInitialMap();

        // query DB and merge
        dataMap = this.query(qryYear, dataMap);
  
  //....
  
        BigDecimal a1Amount = dataMap.get("A1");
        BigDecimal a8Amount = dataMap.get("A8");

        StringBuilder remarks = new StringBuilder();
        remarks.append("備註:<br />");
        remarks.append("1.本表統計各級政府向未納入集中支付基金及特定用途專戶調度周轉金額。<br />");
        remarks.append("2.截至 " + qryYear + " 年 12 月底止向各級政府納入集中支付支基金及特定用途專戶餘額如下:<br />");
        remarks.append("(1)中央政府: " + customFormat(a1Amount) + "  億元 <br />");
        remarks.append("(2)直轄市: " + customFormat(a8Amount) + "  億元 ");

        final String param[][] = { { "remark", remarks.toString() }, { "createOrg", org.getName() } };

        return this.generateReport("dbm030r1", param, dataMap);
    }
 
     private String customFormat(BigDecimal amt) {
        return String.format("%.2f", amt.doubleValue());
    }


Reference
[1] http://stackoverflow.com/questions/5195837/format-float-to-n-decimal-places

2015/12/04

[Fortify] Fix File Separator Issue

Problem

Code snippet:
 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
   /**
     * 複製檔案至新路徑
     * 
     * @param oldfile
     * @param status
     * @param fileName
     * @throws IOException
     */
    public void copyFile(File oldfile, String status, String fileName) throws IOException {
        SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMdd");
        String date = sdFormat.format(new Date());
        // 20151130 fix fortify file separator issue
        String newPath = BACKUP_FILE_PATH + status + "\\" + date + "\\";
        File file = new File(newPath);

        InputStream inStream = null;
        FileOutputStream fs = null;

        try {
            if (!file.exists()) {
                file.mkdirs();
            }
            // int bytesum = 0;
            int byteread = 0;

            inStream = new FileInputStream(oldfile);// 讀入原檔
            fs = new FileOutputStream(newPath + fileName);
            byte[] buffer = new byte[1444];

            while ((byteread = inStream.read(buffer)) != -1) {
                // bytesum += byteread; 位元組數 檔案大小
                fs.write(buffer, 0, byteread);
            }

        } catch (Exception e) {
            log.info("複製檔案錯誤", e);
        } finally {
            if (fs != null) {
                fs.close();
            }

            if (inStream != null) {
                inStream.close();
            }
        }
    }

How-to
updated code snippet:
 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
    private final String FILE_SEPARATOR = FileSystems.getDefault().getSeparator();
 
    /**
     * 複製檔案至新路徑
     * 
     * @param oldfile
     * @param status
     * @param fileName
     * @throws IOException
     */
    public void copyFile(File oldfile, String status, String fileName) throws IOException {
        SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMdd");
        String date = sdFormat.format(new Date());
        // 20151130 fix fortify file separator issue
        String newPath = BACKUP_FILE_PATH + status + FILE_SEPARATOR + date + FILE_SEPARATOR;
        File file = new File(newPath);

        InputStream inStream = null;
        FileOutputStream fs = null;

        try {
            if (!file.exists()) {
                file.mkdirs();
            }
            // int bytesum = 0;
            int byteread = 0;

            inStream = new FileInputStream(oldfile);// 讀入原檔
            fs = new FileOutputStream(newPath + fileName);
            byte[] buffer = new byte[1444];

            while ((byteread = inStream.read(buffer)) != -1) {
                // bytesum += byteread; 位元組數 檔案大小
                fs.write(buffer, 0, byteread);
            }

        } catch (Exception e) {
            log.info("複製檔案錯誤", e);
        } finally {
            if (fs != null) {
                fs.close();
            }

            if (inStream != null) {
                inStream.close();
            }
        }
    }


Reference
[1] http://stackoverflow.com/questions/8075373/file-separator-vs-filesystem-getseparator-vs-system-getpropertyfile-separato

2015/12/02

How to Add User in JBoss AS 6 ?

Problem
If I would like add user in JBoss AS 6, how to do?

How-To
Step 1: Go to [JBOSS-HOME]\\bin, and execute add-user.bat or add-user.sh

Step 2: Choose "type of user"

Step 3: Click enter


Step 4: create user name and password


Step 5: Try Log into JBoss Administration Console



How to utilize Oracle SQL Developer to Connect to Microsoft SQL Server

Problem
Oracle SQL Developer only support connection to Oracle and Access by default.
If I would like to connection to Microsoft SQL Server, how to configure it?



How-To
Step 1. Download jTDS - SQL Server and Sybase JDBC driver from http://sourceforge.net/projects/jtds/files/

Step 2. Tool => Preference => Third Party JDBC Driver. Set library file to Third Party JDBC Driver

Step 3. Click create new database connection. You can find out SQLServer option is the create new database connection dialog after forging configuration.

Step 4. Fill in the SQL Server database connection information and do test. It can connection to SQL Server database successfully via Oracle SQL Developer.


Reference
[1] https://www.dotblogs.com.tw/smartleos/archive/2013/09/16/118705.aspx

2015/12/01

[閱讀筆記] The Intelligent Investor (Part 4)


  1. 智慧型投資人在看財報的時候要注意: 記得要從頭看到尾,因為公司不想讓你知道的東西都放在後面;不要忽略footnote,因為不想讓你知道的事情都會放在footnote
  2. 選股七原則:公司大小適中、財務健全、至少連續20年有發放股利、過去十年營收沒有赤字、過去十年至少有1/3的時間有成長、股價不要超過net asset value的1.5倍、股價不可超過過去三年平均EPS的15倍
  3. Defensive investor 的選股消去法: (1) 公司規模太小(年營收小於10 million) ; (2) 財務體質脆弱 ; (3) 過去十年曾經有過營收赤字 ; (4) 沒有持續發放股利,以上應可以濾掉大部分不健全的公司
  4. 從歷史資料來看,無趣的S&P utility index的績效,勝過自吹自擂的NASDAQ Composite Index
  5. 雖然你是現在投資,但其實你是在投資未來,然而未來是如此不確定,與其花時間在做projection,不如花力氣在protection,不要overpay
  6. 分析師應該了解,他(她)的績效好壞,取決於該檔股票未來會發生什麼事情,而不是過去已經發生的事情
  7. 哪幾檔股票是最好的股票,一直是有爭議的。與其去挑選最好的股票,不如將投資組合做適當的多樣化(diversification),做好protection,降低風險
  8. Projection 是定性(qualitative)分析;Protection是定量(quantitative)分析。定性研究具有探索性、診斷性和預測性等特點,並不追求精確的結論;定量研究是為了對特定研究對象的總體得出統計結果
  9. 一般的股市投資人,應該先把資金投入到指數型基金,這是你的基石,一旦基石穩固後,你再拿一些資金出來實驗、選股。將你的股票資金中,90%投入指數型基金、 10%投入選股實驗。記住,當你的基石夠穩固以後,再來做實驗
  10. 當投資人在選股時,要注意該公司的財務狀況,其流動資產(current assests)至少要是流動負債(current liabilities)的兩倍,長期債務不可超過營運資金(working capital)
  11. 如果你在挑選股票時,覺得詳讀該家公司過去五年來的財務報表這件事很麻煩,不想花時間的話,那麼你不適合自己挑選股票,去買index fund吧
  12. 積極型投資者的選股條件有:流動資產至少是流動負債的1.5倍;債務不能超過淨流動資產的110%;過去五年不能出現營收赤字;每年都有穩定配息;價格低於淨有形資產的120%
  13. 如果你真的對於自己選股深感興趣,記住,這部份只能佔你股票投資資金的10%,其餘通通去買index fund
  14. 最佳與最專業的投資人,與一般人不同,他們只有在公司股價下跌時感到興趣,而不是上漲的時候
  15. 當你發現一家公司的管理者,大部份談論的是公司的股價而不是公司業務時,請遠離這類公司
  16. 成功的投資專家有兩個共同點:一、有紀律並持續執行,即便該技術方法已經退流行;二、時間會花在要做什麼與如何做,不管市場在做什麼
  17. 長期來說,可轉換債券與公司債的績效相較之下,公司債的收益會比較好
  18. 當股市下跌時,可轉換債券的表現會比S&P 500指數好。但是,若跟其他債券相比,其他債券的表現又比可轉換債券好
  19. Bulls make money, bears make money, but pigs get slaughtered (屠殺)
  20. 儘管可轉換債券(convertible bonds)被稱之為債券,實際上他的行為像股票,運作像選擇權
  21. 可轉換債券(convertible bonds)與一般債券相比,可轉換債券風險較高、收益較差
  22. 遠離可轉換債券(convertible bonds),將你的投資組合做好配置:現金、債券、美國與外國股票
  23. 儘管公司有好壞之分,但是股票沒有好壞之別,只有股價有好壞之分(overprice or not)
  24. 透過一連串的併購來成長的公司,最後的結果都不是太好
  25. 短期來說,市場是一個投票機器(voting machine),投資人像趕流行、一窩蜂買某幾檔股票;長期來說,市場是一個體重機(weighing machine),其會衡量公司的本質與真實價值
  26. 智慧型投資人要知道,市場恐慌可以為好公司創造出好價格(即股價跌落至便宜價位)
  27. 如果你買股票的原因單單只是因為其股價上漲,沒有去探究此家公司的價值是否有增加,不用太久,你就會嚐到苦果。這不是機率,這是必然
  28. 每年持續發股利的公司越來越少,公司的管理者說是要把現金留下來,做最妥適的運用,為了未來公司成長做準備,但實際上,這些現金都被浪費掉了
  29. 根據研究顯示,股利發放較少的公司,其未來營收也會比較少;股利發放比較多的公司,其未來營收也會比較高
  30. 公司管理階層的責任並不單單只是在確保公司股票沒有被低估(undervalued),也要確保其被高估(overvalued),避免泡沫化