Total Pageviews

2018/02/03

[閱讀筆記] Peak and Valleys (2/2)


  1. 將你快速帶離高峰的最常見原因是自負與狂妄;讓你一直停留在低谷的最常見原因則是害怕與恐懼
  2. 當你將自我(ego)放一旁,你會更快地離開低谷;當你將自我(ego)放在一旁,你可以在高峰待的更久
  3. 很多人將低谷視為挫折、疼痛、失望、憤怒與失敗。那是因為你忘了,要走過低谷才能登上高峰,發覺在低谷中隱藏的事物。
  4. 到達下一個高峰的好方法就是追隨你的理想願景(sensible vision)。想像自己沉浸在美好未來的樣貌,描繪出具體可信的細節,不久之後你就會為了實現願景而樂於吃苦耐勞。追隨你的理想願景(sensible vision),是朝向你下一個高峰的最好的方式
  5. 在低谷的痛苦,可以喚醒你之前所忽略的事實(truth)
  6. 當你在低谷走不出去時,因為你腦袋只有恐懼的影響(fearful vision),缺乏理想願景(sensible vision),恐懼就是你的低谷
  7. 在高峰時,要避免過度樂觀;同時在低谷時,要避免過度悲觀。讓自己擁抱現實
  8. 戰勝恐懼,就是你個人的高峰
  9. 當你真的跟著你的理想願景(sensible vision)走,你就建立了高峰。你的恐懼會漸漸散去且你會變得更加平靜與成功
  10. 在人生的旅途上,無論是順境或逆境都是珍貴的禮物,你都可以從中學習到珍貴的事物,順境與逆境都有其價值
  11. 在高峰時,你要更加謙遜,你才能在高峰待的更久
  12. 在低谷時,不要試圖逃避它,應該正面面對低谷,將其視為自我成長的契機
  13. 處在逆境時,要懂得看見「真相」(reality),擁抱最真實的情況,而不是選擇性的蒙蔽自己。在順境時要懂得感恩、保持謙遜,在逆境則是學習、改善現況。
  14. 為了在高峰待的久一點:你的態度要謙遜,時時心存感激。繼續讓事情變得更好、多幫助他人,為了未來的低谷儲備資源
  15. 當你對於如何離開低谷感到困惑時,別忘了高峰就在低谷的對面。反省一下做過那些事情導致自己走入低谷,做相對應的事情,你就會得到相反的結果
  16. 當你在渴求失去的東西,你就在低谷;當你對於自己所擁有的心存感謝,你就在高峰
  17. 當我們在低谷時,如果忘了記取教訓,就可能讓自己變得怨天尤人,汲取教訓、從中學習,才能更快走向另一個高峰、讓自己更上一層樓。
  18. 低谷常常讓人窒息,休息是為了走更長遠的路,有時我們看不清楚事實常常是因為我們身在其中,讓自己從現實中抽離,更能夠看清楚整個事情的原貌。
  19. 你在低谷時,以什麼樣的心境自處,決定了你能多快走出谷底。人會陷入低谷的原因,在於當我們處於高峰時,忽略了某些事實,而那樣的事實讓我們陷入了低谷。
  20. 峰與谷是相連的,只要換個角度思考,上山的路就會出現。
  21. 在今天順境犯下的錯誤,會造成未來的逆境。而在今天逆境做下的正確的事,會開創未來的順境
  22. 當你身處低谷,你應該問自己
    1. 目前現況的真相是什麼?
    2. 我們如何從現在的困境找出正面的事物並使用它?


2018/02/02

[閱讀筆記] The Four Pillars of Investing (2/12)


  1. 我們現在的投資,是為了以後能夠想像。這就是投資的本質:節制眼前的花費,以換取未來的收入
  2. 對於未來,我們不可能做到精確預測,但充分的了解過去,通常可讓我們有能力便是此時此地的風險。雖然報酬仍是未知數,但至少風險可以被控制下來
  3. 無法記取教訓的人,必會重蹈覆轍
  4. 如果將某個國家利率變動過程會製程圖表,就可以當做是這個國家經濟發展過程的「體溫計」,如果體溫攀升,就代表這個國家陷入軍事、經濟或政治危機;如果圖形長時間維持平穩狀態,則意味這個國家正處於長期穩定狀態
  5. 在資本市場中,債券的價格走向正好和利率相反。當利率上升,債券價格便會走軟;當利率下降,債券價格便會上升
  6. 不要把預期收益和實際收益混為一談,不要把未來和過去搞混了。眼前的高報酬意味著未來獲利微薄,過去的低報酬通常意味著未來獲利豐厚
  7. 以低價買進的這個想法總是讓人感覺膽怯,足以創造巨大未來利潤的廉價投資,不可能不伴隨著風險與災難
  8. 對於現在投資人來說,利率風險就幾乎等於通貨膨脹的風險。當你決定要買進三十年期國庫債券,最大的風險就是通貨膨脹吃掉未來的利息,而本金也因此變得毫無價值可言
  9. 利率風險也有解決方案,那就是短期借貸。如果你的貸款或債券會在一個月之內到期,那就可以幾乎完全消除通貨膨脹獲利率風險,投資人大有機會將本金抽回,轉投資在利率更好的標的上,不幸的是,短期借貸一樣有風險
  10. 「票券」(bill)與「債券」(bond)的差異在於,短期債權(short-term obligations,,通常兌現期在一年以內)稱為 bill,長期債權(long-term obligations)稱為 bond
  11. 票券(bill)的利率比債券(bond)更不穩定,因此票券(bill)的投資者必須獲得更高的報酬才能支應這種不確定的成本
  12. 當陽光最耀眼的時刻,正也是投資報酬處於最低點的時刻。事情本就應該如此,穩定與繁榮意味著資產價格居高不下,基於產出與價格之間的反轉關係,未來的報酬自然會相當的低。相反地,當風險逼近眼前,市況淒涼冷清時,則是投資報酬最高的時刻
  13. 債券就是「債」,一般而言,債券有其極限,投資者至多只能收到利息,等時間一到,就回收本金。相對來說,股票則意味著可分享特定公司在未來的經營利潤,如此一來,收益可能沒有上限。當然,投資債券或股票都有可能血本無歸
  14. 債券與股票之間最大的差別在於「通貨膨脹」的影響,由於債券股息固定,因此遭遇通膨時,價值便因此而減損,如果通膨非常嚴重的話,債券可能會一文不值;股票也會受到通膨衝擊,但由於企業可提高貨品與服務的價格,因此營收與價值也會隨著通膨而上升。不過者不代表股票永遠勝過債券,債券也不是沒有揚眉吐氣的時候
  15. 沒有將通貨膨脹的幅度計算在內的報酬稱之為「名目報酬」,若已根據通貨膨脹率調整過的報酬,稱之為「實質報酬」
  16. 簡單來說,投資就是「承擔風險」,並以此「換取報酬」。報酬其實還算容易定義與計算,風險就不是那麼容易定義與衡量了
  17. 年股票報酬幾乎是完全沒有規則且不可預測的,去年的報酬或是過去五年的報酬不可能提示任何與明年報酬有關的訊息,因為他是「隨機移動」的結果
  18. 從股市報酬的長期歷史來看,市場是有可能陷入長達 15 到 20 年的長期衰退的。舉例來說,在 1966 到 1982 年的 17 年間,股市報酬幾乎跟不上通貨膨脹的速度; 1973 與 1974 年的狀況更是悲慘。假設你在 1966 年退休,在通貨膨脹的影響下,你的投資報酬將少的可憐
  19. 當我們追逐市場的短期變化時,真正感受到的是這種為期僅有幾年的短期風險,這也正是讓投資者在夜裡輾轉難眠的「短期風險」。為了短期現象而著迷,本來就是人性中根深蒂固的一部分,是無可忽視的衝動
  20. 在股市大漲時,所有人都相信自己一定會長期投資。不幸的是,歷史也告訴我們,當股市一敗塗地時,就算你想賣也賣不掉

2018/02/01

[閱讀筆記] Purple Cow (2/2)



  1. 一定要先找出市場利基,然後創造卓越非凡的產品。但是,倒過來就行不通了
  2. 如果你的公司裡有人在負責創造紫牛,別干涉他們,不要用內部的評量標準或可行測試,檢視他們開發的新產品是否與現有產品一樣好。你反而應該把這些特立獨行的人找出來,別擋了他們的路
  3. 讓消費者願意聽你說話有四個步驟:
    1. 找到第一眼就令你印象深刻的人,然後爭取他們的許可,與他們溝通
    2. 與這群人裡的噴嚏者一起合作,讓他們幫你推銷創意
    3. 一旦紫牛開始成為賺錢的事業,試著讓不同的人來餵養這頭紫牛,讓服務產品化,產品服務化,讓數千種不同的變化開始萌芽茁壯
    4. 重新投資,再一次創新,不要遺漏任何細節
  4. 如果行銷人員能夠學習投射人們心裡想要什麼產品的科學,就不會有特別的成見與主觀意識。相反地,他們會了解這個過程,並且會順著產品該發展的路往下走
  5. 說話的方式並不重要,重要的是你說了什麼
  6. 驚世駭俗並不一定是不凡,不凡不見得一定要驚世駭俗。有時候,驚世駭俗只會帶來麻煩
  7. Best Buy CEO Brad Anderson曾說:我們不賣自己想賣的東西,只賣人們想要買的東西,然後找出如何由此賺錢的方法。有機會和顧客溝通,都會發現顧客希望我們走的那條路,總是我們覺得最不可能選擇的方向,但是每一次,他們指出的那條路都是最正確的路
  8. 卓越非凡的事情,不見得一定是換掉你工廠裡最大最貴的設備,有可能只是改變你回答客戶來電的方式,也可能是研發新品牌,或為軟體重新定價。一定要讓自己習慣,一有機會就做些不安全的事情,這是你從專案中學習的最好方法,你可以從這樣的練習中看到哪些努力是有效的,哪些是無效的
  9. 低價策略是逃避紫牛戰爭最懶惰的方法,是產品研發人員或行銷人員前驢技窮時的避難所
  10. 如果你想做頭紫牛,現在應該做的事,就是在不找工作時做些卓越非凡的工作。無論是職場生涯或經營一個品牌,只想尋求安全往往是最危險的事。想要安穩地保有一份一輩子的工作,最保險的方法就是做個卓越非凡的人
  11. 只要能提供獨特的商品就可以掌控價格優勢;要是商品獨特,價格又便宜的令人大吃一驚,根本毋須龐大的廣告預算,就能獲得勝利
  12. 日用品市場有個十分明顯的特性,一旦在某個地區站穩了,就可以屆此獲得長期的利潤。日用雜貨商店很難逃脫這樣的框架,所以一定業績登上高峰,就可以在顛峰長期盤據
  13. 紫牛只是整個商品生命週期的一部分,你不可能一直靠紫牛維生(因為這麼做太累、太危險、太昂貴)。但如果你的企業需要成長,你就必須創造出一些新的東西,好好善待你的紫牛才是上策
  14. 八種運用紫牛的方法
    1. 列出時種改變你產品的方法,想辦法滿足你的目標消費群中的一小群人
    2. 野心不要太大,想想那些規模不大,但最容易接受你產品的市場,然後設計一項卓越非凡的商品,讓這個市場完全接受這項產品
    3. 向外尋求資源。當你正努力讓產品有趣刺激時,大工廠潑了你一大盆冷水,那就到別的地方去吧
    4. 一旦可以直接與最忠實的客戶談話,無論是開發產品,或對他們推銷新奇的產品就容易多了
    5. 找一個比你更無趣的產業,看看誰是該產業最卓越非凡的公司,然後模仿他們所做的事
    6. 仔細分辨競爭對手在產業裡的評價。無論他們是以什麼聞名,想辦法比他們做得更多、更好;如果他們打安全牌,你就做和他們完全相反的事情
    7. 在你的產業中找出「不是不能做,只是還沒做」的事,然後立即動手
    8. 常常問自己「為什麼不做?」。你沒做,多數時候是因為害怕、懶惰,或是一直少了一個人問你:「為什麼不做?」




2018/01/31

[Travel] 2018/01 宜蘭

國立傳統藝術中心. DSC02897

DSC02921

DSC02930

DSC02942

DSC02956

DSC02961

DSC02963


玉兔鉛筆學校.
DSC02964

DSC02969

Travel Plan

2018/01/30

[Tarvel] 2018/01 宜蘭

幾米廣場宜蘭火車站. DSC02830

DSC02831

DSC02834


仁山植物園. DSC02855

DSC02863

DSC02880

DSC02886


2018/01/13

[Win 10] 如何解決磁碟使用率常 100% 的情況

Problem
當我在使用 Windows 10 的時候,從工作管理員發現,磁碟使用率常滿載,一直 90 ~ 100%,嚴重影響整體效能

How-To
解決方式分成兩方面:


在 C 槽按右鍵,將以下 checkbox uncheck,按下確定即可

到控制台 -> 服務,找到 Windows Search 此服務,將其 Stop 並將啟動類型設為手動

2018/01/12

[JSON] Jackson Annotations for JSON

Assume I have two Java beans:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
  package test.albert.jackson;
    
  import lombok.Builder;
  import lombok.Data;
    
  @Data
  @Builder
  public class Employee {
    
      private Integer id;
    
      private String name;
    
      private String email;
    
      private String phone;
        
      private Address address;
   
  }


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  package test.albert.jackson;
    
  import lombok.Builder;
  import lombok.Data;
    
  @Data
  @Builder
  public class Address {
    
      private String streetAddress;
      private String city;
      private String zipCode;
    
  }
    


I am using ObjectMapper to convert object into JSON string, the example code is as bellows:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
  package test.albert.jackson;
    
  import com.fasterxml.jackson.core.JsonProcessingException;
  import com.fasterxml.jackson.databind.ObjectMapper;
    
  import lombok.extern.slf4j.Slf4j;
    
  @Slf4j
  public class JacksonTest {
    
      public static void main(String[] args) throws JsonProcessingException {
          Address address = Address.builder().zipCode("110").city("台北市").streetAddress("信義區信義路五段7號").build();
          Employee albert = Employee.builder().id(1).name("Albert").email("albert@gmail.com").phone("0900123456")
                  .address(address).build();
    
          ObjectMapper mapper = new ObjectMapper();
          String json = mapper.writeValueAsString(albert);
          log.debug(json);
      }
    
  }
    

The generated JSON looks like:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
 "id": 1,
 "name": "Albert",
 "email": "albert@gmail.com",
 "phone": "0900123456",
 "address": {
  "streetAddress": "信義區信義路五段7號",
  "city": "台北市",
  "zipCode": "110"
 }
}


If I would like to ignore id, just add @JsonIgnore to id



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
  package test.albert.jackson;
  
  import lombok.Builder;
  import lombok.Data;
  
  @Data
  @Builder
  public class Employee {
  
      @JsonIgnore
      private Integer id;
  
      private String name;
  
      private String email;
  
      private String phone;
  
      private Address address;
  
  }

If I would like to get rid of id and phone in Employee, add 
@JsonIgnoreProperties({"id", "phone"}) to Employee class:



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  package test.albert.jackson;
  
  import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  
  import lombok.Builder;
  import lombok.Data;
  
  @Data
  @Builder
  @JsonIgnoreProperties({"id", "phone"})
  public class Employee {
  
      private Integer id;
  
      private String name;
  
      private String email;
  
      private String phone;
  
      private Address address;
  
  }


If I want to remove address from Employee class, just add @JsonIgnoreType to Address class.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
  package test.albert.jackson;
  
  import com.fasterxml.jackson.annotation.JsonIgnoreType;
  
  import lombok.Builder;
  import lombok.Data;
  
  @Data
  @Builder
  @JsonIgnoreType
  public class Address {
  
      private String streetAddress;
      private String city;
      private String zipCode;
  
  }

2018/01/11

[Win 10] 如何解決憑證匯入失敗, "權限不足" 的錯誤

Problem
當我要將國泰證券的憑證匯入到新電腦時,IE 瀏覽出現 "權限不足" 的錯誤訊息




How-To
以系統管理員身分執行即可以解決此權限不足的問題




2018/01/10

[Maven] How to use local repository?

Problem
How to use local repository in Maven?

How-To


Approach 1. Add localRepository tag in your settings.xml
1
2
3
4
5
6
7
8
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:SchemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
          
   <localRepository>C:\Users\albert\.m2</localRepository>
   
</settings>


Approach 2. Assign -Dmaven.repo.local in command line
1
mvn -o -Dmaven.repo.local=C:\Users\albert\.m2" clean install -Dmaven.test.skip=true -X



Reference
[1] https://stackoverflow.com/questions/9123004/maven-is-it-possible-to-override-location-of-local-repository-via-the-use-of-co

2018/01/09

[GitLab] How to build jar file automatically

Problem
If I hope GitLab can build a jar file when I commit source code, how to do it?
I am using Maven 3.3.3 and JDK 7 in eclipse, and using mvn clean install -Dmaven.test.skip=true to build WAR file in eclipse.

How-To

Step 1. Add .gitlab-ci.yml to the root directory of my project, the content looks like:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
image: maven:3.3.3-jdk-7
    
build:
  stage: build
  script:
   - "mvn clean install -Dmaven.test.skip=true"
  artifacts:
    expire_in: 1 week
    when: on_success
    paths:
    - target/*.jar

Step 2. Add, commit and push .gitlab-ci.yml to GitLab
Step 3. Seeing the status of your pipeline and jobs 


Reference

[1] https://docs.gitlab.com/ce/ci/quick_start/README.html

2018/01/08

[GitLab] How to build WAR file automatically

Problem
If I hope GitLab can build a WAR file when I commit source code, how to do it?
I am using Maven 3 and JDK 7 in eclipse, and using mvn clean package -U to build WAR file in eclipse.

How-To

Step 1. Add .gitlab-ci.yml to the root directory of my project, the content looks like: 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
image: maven:3-jdk-7

build:
  stage: build
  script: "mvn clean package -U"
  artifacts:
    expire_in: 1 week
    when: always
    paths:
    - target/*.war

Step 2. Add, commit and Push .gitlab-ci.yml to GitLab
Step 3. Seeing the status of your pipeline and jobs 

Reference

[1] https://docs.gitlab.com/ce/ci/quick_start/README.html
[2] https://hub.docker.com/r/library/maven/tags/

2018/01/07

[Maven] Cannot find IBM-related jar files in Maven Central Repository

Problem
If I would like to use some proprietorial jar files (i.e. IBM DB2 jdbc jar file, IBM MessageQueue jar files) in my Maven project, and add them into dependency. 
How to do it?

How-To

Step 1. Download jar files, ex. DB2 jdbc jar file
Step 2. Launch command prompt, change directorty to db2 jar file and execute the following command:
mvn install:install-file -Dfile=db2jcc4-4.22.29.jar -DgroupId="com.ibm.db2.jcc" -DartifactId="db2jcc4" -Dversion="4.22.29" -Dpackaging="jar"

Step 3. Add dependency to pom.xml
    <dependency>
        <groupId>com.ibm.db2.jcc</groupId>
        <artifactId>db2jcc4</artifactId>
        <version>4.22.29</version>
    </dependency>


Step 4. Go to .m2 folder and copy com/ibm/db2/jcc/db2jcc4 to your project, for example:


Step 5. Add repository setting in your pom.xml
    <repositories>
        <repository>
            <id>my-local-repo</id>
            <!-- ${basedir} represents the directory containing pom.xml -->
            <url>file://${basedir}/local-repo</url> 
        </repository>
    </repositories>




2018/01/06

[Git] fatal:LF would be replaced by CRLF

Problem
As I try to use the git add command adds a change in the working directory to the staging area, it show the error:
fatal: LF would be replaced by CRLF


Here has a post to solve this problem: https://albert-kuo.blogspot.tw/2016/12/git-fatal-lf-would-be-replaced-by-crlf.html

But if I have hundreds of file have this problem, how to solve this problem?


Solution

Step 1. download file from http://www.bastet.com/uddu.zip

Step 2. Unzip and copy UNIX2DOS.EXE and UNIX2DOS.C to the root directory of your project.


Step 3. Assign the file extension you would like to do replacement in the command and execute this command:

for /f %f IN ( 'dir /b /s *.xml *.pom *.sha1' ) DO @unix2dos %f

Step 4. Remove  UNIX2DOS.EXE and UNIX2DOS.C from your project.