0%

在 Ubuntu 16.04 作業系統版本下,我們需要使用 apt 包管理器,在安裝 Node.js 之前先安裝 npm ,也就是 Node.js 包管理器

1
2
3
$ sudo apt-get update
$ sudo apt-get install nodejs
$ sudo apt-get install npm

接著使用 n 來管理 nodejs 版本 https://github.com/tj/n ,既然有了 node 最簡單的安裝 n 的方式是 npm

1
$ npm install -g n

如果安裝出現了以下的錯誤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ npm install -g n
npm http GET https://registry.npmjs.org/n
npm http GET https://registry.npmjs.org/n
npm http GET https://registry.npmjs.org/n
npm ERR! Error: CERT_UNTRUSTED
npm ERR! at SecurePair.<anonymous> (tls.js:1370:32)
npm ERR! at SecurePair.EventEmitter.emit (events.js:92:17)
npm ERR! at SecurePair.maybeInitFinished (tls.js:982:10)
npm ERR! at CleartextStream.read [as _read] (tls.js:469:13)
npm ERR! at CleartextStream.Readable.read (_stream_readable.js:320:10)
npm ERR! at EncryptedStream.write [as _write] (tls.js:366:25)
npm ERR! at doWrite (_stream_writable.js:223:10)
npm ERR! at writeOrBuffer (_stream_writable.js:213:5)
npm ERR! at EncryptedStream.Writable.write (_stream_writable.js:180:11)
npm ERR! at write (_stream_readable.js:583:24)

那麼可以用以下命令繞過 https

1
$ npm config set strict-ssl false

接著在重新安裝一次 n

1
2
3
$ sudo npm cache clean -f
$ sudo npm install -g n
$ sudo n stable

安裝完畢之後,輸入以下命令以確定安裝的版本

1
2
3
4
5
## 查看 n 版本
$ n -V

## Output
2.1.7
1
2
3
4
5
## 查看 node 版本
$ node -v

## Output
v10.0.0
1
2
3
4
5
## 查看 npm 版本
$ npm -v

## Output
1.3.10

接著,也需要安裝 Yarn 來管理套件,它是一套 Javascript 套件管理工具,到這邊想說不是已經有 npm,為何還需要 yarn ?, 這是因為使用 npm 最困擾的地方就是安裝速度比較慢,Yarn 則是快速、可靠又安全的依賴管理。(用過都說讚…),那麼底下就輸入命令安裝 Yarn

1
2
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install yarn

測試 Yarn 安裝狀況

1
$ yarn --version

但是如果出現錯誤訊息寫 The program 'yarn' is currently not installed. To run 'yarn' please ask your administrator to install the package 'cmdtest' 代表著需要安裝 cmdtest 套件

輸入並且安裝 cmdtest

1
$ sudo apt-get install cmdtest

再做一次 $ yarn --version 確認後,就成功出現版本號碼

1
2
## Output:
0.10

參考資料

R 語言可以用來處理資料、統計分析、模擬、科學運算以及圖形功能,你可以直接安裝 R Studio 軟體 (R軟體官方網站),就可以很輕易的在 GUI 上透過許多的套件模組並搭配 R 程式來畫出許多圖形,要能夠善用這些套件之前我們要先學習基本的資料型態以及語法運用。

學習目標

R 語言的基本介紹以及語法上的寫法。

閱讀全文 »

R 語言是 Ross Ihaka, Robert Gentleman 共同開發的程式語言,會取名為 R 是因為他們的名字都是 R 開頭,所以就把這程式語言取名為 R。R 是專門在處理資料處理以及統計分析,語言寫起來相當精簡,外傳說如果沒有學過程式語言的人,又想學習資料分析,那麼就直接學 R,許多複雜的分析任務只需要幾行程式就能夠完成了,如果已經有程式底子或是已經有物件導向的觀念的人 (比如之前有寫過 Java),那可以學習 Python,但話說回來…這裡是 R 學習日誌,這是 R 語言的第一篇文章,會用一個淺白的文字來介紹喔。

R 軟體的特色

  1. 基本核心是向量 (vector)、陣列 (array):在其他程式都需要跑個迴圈才能做到元素的運算,而在 R 軟體裡面只需要幾行就能做到。
  2. 計算模組是函數 (function):可以善用貢獻者寫好的套件 (packages) 或者自己寫個套件也可以。
  3. 繪圖功能:2D 還是 3D 或是直向圖都可以做到,而且就幾行的程式就能得到想要的結果。
  4. 變數型態:有很多其他程式語言沒有的,包含 list, factor, ordered factor, data frame, ts,也可以自建資料型態
閱讀全文 »

書名:《富爸爸,有錢有理:神奇的現金流象限》
原文作者:Robert T. Kiyosaki、Sharon L. Lechter
譯者:龍秀
出版社:高寶
出版日期:2011/04/27

為甚麼選這本書

這本書一直放在我的書架上很久很久了,有天在整理書架閱讀了一下摘要,會有一種為何不早點讀這本書的感覺。經常覺得為什麼有錢人可以輕鬆的工作,為什麼有些人再怎麼努力就也只能滿足生活開支的收入,我想應該世界是很公平的只是需要思考怎麼賺錢這件事情,因為有錢有理!那麼想解開這個謎題,就先看看這本書來改變你對錢的看法吧。

讀後分享

「E、S、B、I 象限」是這本書一直提到的核心價值,這分別是不同現金流的人,通常一個人會處在一到兩項左右的角色,而這也決定了你的現金來源,分別的意思是:

  • E 一般僱員、打工族:為他人工作 (受僱於他人,也就是領薪水的人)
  • S 自由工作者、專家:你為自己工作 (跟一般僱員都是在象限的左邊)
  • B 企業家:自己獨立的事業 (雇用員工替自己做更重要的事情)
  • I 投資者:用錢來賺錢 (投資什麼呢?投資 B 的人)

排列就像下圖所示:

故事裡面的角色主要是主角本身跟富爸爸、窮爸爸的對話來做了思維與價值觀上的區別,窮爸爸的背景是個高知識份子,希望主角是一個「萬般皆下品,惟有讀書高」的觀念來指引主角用功唸書,以後從學校畢業之後可以找一份好的工作,也關心職業的保障與福利,相對而言比較保守許多。而富爸爸則是雖然沒有受到太多的教育,但是提出了很多不同的看法,希望主角可以努力的朝向象限右側的人,注重自由的理想生活。

這本書的用意是在於如果你本身是在 E 或是 S 的人,就努力成為右側的人,那麼要在什麼時候在怎樣才是在對的情況下用現金流為自己工作,也就是用錢來幫你賺錢,以下是書本的建議步驟:

  • 第一步:考慮你的事業的時候到了:你應該設定自己的財務目標
  • 第二步:控制你的現金流:控制現金流之前,先了解自己的財產
  • 第三步:瞭解風險和有風險之間的區別:多增加市場敏感度,了解財務的知識,以及風險
  • 第四步:決定你想成為哪種類型的投資者:保守?積極?保守又積極?
  • 第五步:尋找導師:有時候需要找 seafood
  • 第六步:將失望轉化成力量:遇到挫折就知道該怎麼在挫折中成長,這樣進步更快
  • 第七步:信心的力量

這本書是一本值得閱讀的好書而且又收穫滿滿,對事情思維與看法都不一樣了,越年輕的時候如果提早有這樣想法的話,也許未來的美好人生更是慢慢踏實了起來。

「大盤指數」計算方式

台股用的是「發行量加權股價」指數,簡單來講就是股市的所有公司加起來值多少錢。股本較大的公司對大盤指數影響比較大,權重也比較大,通常都叫權值股,可以到 臺灣證券交易所發行量加權股價指數成分股暨市值比重 查到目前市值佔大盤比重,較大的前幾名,第一名是台積電,第二名是鴻海,第三名是台塑化,所以如果前幾名的市值大的公司上漲,整個大盤也幾乎就是上漲的現象。

公司的市值以台積電為例

公式:市值 = 當日的收盤價 x 當日流通的股數

已知台積電流通的股數是 259 億股 (台積電發行股數),以及 2017/10/06 收盤價是 224.5 元

那麼台積電的市值就是 224.5 x 259 億股,以每股面值 10 元來說,目前市值大概是在 5.82 兆元

一天的漲跌

通常在上午九點開始開盤,下午一點半收盤,一整天下來的漲跌以 10% 為限,也就是說假設前一天的收盤價如果是在 20 元的話,隔天的開盤最多能漲到 22 元,下跌的部分只能跌到 18 元,除了看台股以外,國際股市與台股的連動關係,台股大部分都以電子股為交易主軸,舉個例來說經常聽到蘋果科技公司的股價表現,會影響到台股的表現,相對的影響其他供應商的股價

台股上櫃與上市申請條件比較表

台股依照交易形式分別了集中市場、店頭市場、興櫃市場,那麼許多公司在申請上市上櫃的時候的一些條件可以看如下圖:

參考資料來源:

資料探勘 Data Mining 一個技術演進的議題,廣義的觀點是資料探勘是從大量資料裡面挖掘出有意義的模式的過程,也有另一種說法是資料探勘跟資料庫知識發現 (KDD)具有同義詞的意思,而 KDD 的意思是「從資料中辨別有效的、新穎的、潛在有用的、最終可理解的模式的過程」、資料探勘是「KDD通過特定的演算法在可接受的計算效率限制內生成特定模式的一個步驟」(資料來源:wiki https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98)

為什麼需要資料探勘?

從早期我們知道的原始資料處理進而發展資料庫管理系統 (DBMS,可以透過SQL查詢語言取得一個關聯子集,例如:查詢今天的訂單數,就能夠過 count 這類的聚合函數來查詢),透過數據得出一個分析結果方便地用在有效的決策上面,但是,到這邊為甚麼還需要資料探勘呢?因為,正所謂「科技始終來自於人性」、柏拉圖說的「需求是發明之母」,我們周遭都是數字、資料、分析、紀錄各種資訊,這些數字的快速增長,讓大數據的時代需要找出有價值的資訊,然後把這些資訊經過擷取、分析進而轉化成知識。

garbage in, garbage out. (GIGO) 垃圾進,垃圾出

到底什麼才是獲得有價值的資訊?資料的來源、整理、擷取相當的重要,有句名言「garbage in, garbage out.」也就是說拿著無用的資料、有誤差的資訊輸入進電腦裡面,卻得到不能使用的結果,因此輸入時需要刪除不一致、無意義的資料,在資料的準確度做個嚴格把關。

挖掘什麼類型的資料或模式呢?

資料探勘可以用在很多類型的資料,包含資料庫、Web、資料倉儲、OLTP 線上分析處理 、有序/序列資料、時間序列分析、多媒體等等。至於模式的話,有許多的觀點可以採用,像是特徵型、關聯、相關性的探勘、分類、回歸分析、離散、預測、群聚 (clustering) 等等。

「人兩腳,錢四腳」

不知道你有沒有聽過這句話呢?意思是人追不上錢的速度,經常想著一天小時一共有 1440 分鐘,每一分鐘比起來怎麼差這麼多,為什麼有錢人賺的錢總是看不到他們的車尾燈似的迅速擴張他們的資產。

我想,人人都需要了解投資,未必是身為金融科系的人才能了解,投資一直在我們生活當中,也必須了解投資這件事,而投資這件事情喔,通常分成了實質的投資跟金融的投資,前者的投資就是房地產、投資廠房設備、珠寶這一類的,後者就像是投資股票、債券等等的金融商品,投資正因為如此,所以有錢人善用了這些手法讓投資標的有成長的發揮,這篇文章是股典閱的第一集,想先讓大家認識一下投資的概念。

投資一定有風險,基金投資有賺有賠,申購前應詳閱公開說明書

這句廣告台詞真的透過廣告播送,整個朗朗上口了啦。投資因為有了供給需求存在的關係,整個經濟活動就形成了金融市場,舉例來說公司發行金融工具比如股票,讓有資金的人來認購,資金的需求者收到錢之後就能夠做最有效的運用了。那風險呢?我要怎麼避免風險發生?先別急,我們需要了解投資可能會遇到的各種議題。

不要把雞蛋放在同一個籃子裡

這個就是分散風險的概念了,投資的股票也不是天天都在上漲,也有時候是下跌的走勢,如果只有投資一款標的,當下跌時那可真的需要有強大的心臟,每個人的風險承受能力不一樣,需要找到一個適合自己的投資,可以透過將低風險的方式建立一個比較有效的投資組合喔!

市場的敏感度

把握到的機會就好好掌握,雖然這句話人人會說,但實際執行時又覺得好困難,所以要隨時關心市場動向,觀察事情的關聯性,也許就能對投資有所幫助的。

投資策略

這個部分就要先評估自己有多少的籌碼,了解自己能夠承受的風險,設定停損或停利的目標並且多閱讀領域上的行情、知識, 試算出報酬數據建立屬於自己的投資策略。

書名:《靈界的譯者:從學生靈媒到棒球女主審的通靈之路》
作者:索非亞
出版社:三采
出版日期:2017/04/30

為甚麼選這本書

前陣子有一個電視劇集《通靈少女》超火的,影集內容講述一個從小就有通靈能力的真人真事故事,因為影片拍得很棒,每次影片結束的後面都留下一些伏筆,滿心期待下一集的發展,有時候實在是期待不已,很想再了解更多就開始上網爬文,《通靈少女》原來背後的主要的故事主角是索非亞的親身經歷,才發現原來有出一本《靈界的譯者:從學生靈媒到棒球女主審的通靈之路》 的書,書本的摘要來看會發覺怎麼跟我們平常經常聽到的觀念很不一樣,例如:改運有用嗎?鬼月真的鬼比較多嗎?很多很有意思的議題,顛覆了人云亦云的看法,讓我充滿好奇這本書的內容了

讀後分享

在還沒有看過這本書之前,對一些習俗(比如:廟的儀式、拜拜之類的)其實也就是從上一輩的所言傳下來的,也不會想太多,就 follow 就是了。記得小時候看鬼話連篇的電視,那種既好奇又害怕受傷害的心,真的是害怕到拿著棉被看電視,隨時突然出現的時候,馬上可以躲在棉被裡之後接著順便尖叫…

會知道索非亞這位譯者人物,是從新聞哇哇哇的節目看到這位來賓,在他描述未知世界的故事時整個很豁達又很看很開,所以對她的故事有了印象深刻。只不過發覺這本書有些故事已經在電視上講過了,整本書也看到許多相當口語化的文字,但這不就是很真實的樣子!?

更看的是人心層面

為什麼遇到不順遂時會想到找宗教幫助?
因為宗教可以帶來安定人心的慰藉,因為未知的世界可以藉由靈媒的角色轉述得到指點迷津的指示,也因為這樣許多人也因此著迷著靈界給的答案

為什麼遇到生病會想到找神明的幫助?
也許是自己先認為醫生解決不了的而神明能提出解決方案的處方,一定有效果! 造成的一種借助宗教的求助,而忘記可以利用科學根據的醫學來解決

這本書看了之後發覺很難得有一本書能夠很直白的寫出真實故事,人在脆弱的時候,總有個理由希望透過宗教能給一個聲音之後讓自己的心更堅強一點靈媒在這個地方就扮演重要的角色了,身為靈媒的索菲亞內容揭發了許多不為人知的事

不是每個人都會有這類的特殊能力,就會有時容易陷入那種好像真的是如此的錯覺感~是迷信了嗎?經常在新聞看到很多靈媒的負面消息層出不窮,利用人心脆弱的時候謀取利益,實在不是很正派的做法。

有一次聽到不同信仰的人提問,「為什麼你們要拜木頭?」嗯… 有意思的問題,我想每個信仰都有一種偶像尊敬或無偶像的思想,但就是持續堅持著自己正向的面對人生的信念吧!總結一句,自己要能夠有獨立判斷對錯並且就是「心存善念」就行了。

它是建立在 node.js 的一個套件。The streaming build system. 它的觀念是一套利用串流方式輔助建置系統,優化前端工程的效能(縮小js 檔案大小,編譯預處理的css, less )加快js, css…etc 載入速度,特色在於代碼優於配置關做法讓事情變得更簡單,更直覺的方式構建系統。

什麼是字串流 Stream? (也可以叫串流)

谷歌一下Wiki 的「 Stream 」的意思:

在電腦科學裡面,字串流(stream,或者串流)這個詞有很多用法。所有這一些用法都是代表一個包含資料的序列。我們可以將字串流想做是一個允許資料一個接一個,而非將資料包作一整個,來進行處理的輸送帶。

用個 gulp.js 的簡單例子:

1
2
3
gulp.src('js/app.js')
.pipe(uglify())
.pipe(gulp.dest('build'))

以這個例子來說,gulp.src 方法帶了一個字串參數 js/app.js,這個是對應一個主要的 js 檔案,主要是建立物件串流來表示的文件,接這透過 .pipe 方法將所有檔案做 uglify() 的動作,而這個動作將會縮小之後回傳一個新的物件,最後將這個輸出用 gulp.dest 目標位置到 build 資料夾裡面。

流程會是如下:

Grunt vs Gulp

Grunt.js 與 Gulp.js 都做相同的事情,都是做自動化處理,但是 Grunt 處理的方式繞了很多圈,我們可以看一下以下的比較:

  • Grunt 套件執行多個任務;Gulp 只會專注做一件事情上。
  • Grunt 需要套件的基本功能;Gulp 裡的功能已經是內建的了。
  • Grunt 使用 JSON 方式做資料配置的文件:Gulp 使用的方式更精簡,是使用 JS 語法撰寫

Let’s start using Gulp.

安裝 Node.js

這裡我不會做太多解釋如何安裝 node.js ,安裝方式請詳見之前寫的一篇文章 「Node.js 系列學習日誌#2 - Node.js 安裝配置

安裝 Gulp

1
$sudo npm install gulp -g

請先確認 nodejs, npm, gulp 是否有正常安裝,我們可以驗證一下版本

建立專案

請先建立一個資料夾,這裡叫做 gulptest 的資料夾,這裡面包含:

  • src — the location of pre-processed HTML source files and folders:
    • images — uncompressed images
    • scripts — multiple pre-processed script files
    • styles — multiple pre-processed CSS files
  • build — the location of production files for upload including:
    • images — compressed images
    • scripts — a single minified script file
    • styles — a single minified CSS file

接著我們在資料夾下安裝 Gulp 套件

1
$npm install gulp --save-dev

在這邊它會自動建立 node_module 永久性的資料夾,裡面包含被安裝的 gulp

最後先在 gulptest 資料夾下建立空的 gulpfile.js 檔案,之後會介紹如何使用

安裝套件

我們需要安裝與配置一個套件來執行任務,在這裡做個簡單的例子就使用一套 jshint 套件,請輸入:

1
$npm install gulp-jshint --save-dev

然後開啟剛才建立好的 gulpfile.js,建立一個名叫 imagemin 的任務。請寫以下程式:

1
2
3
4
5
6
7
8
9
10
11
12
// include gulp
var gulp = require('gulp');

gulp.task('imagemin', function() {
var imgSrc = './src/images/**/*',
imgDst = './build/images';

gulp.src(imgSrc)
.pipe(changed(imgDst))
.pipe(imagemin())
.pipe(gulp.dest(imgDst));
});

我在 /src/images/ 放了三張圖 (隨便到 google design 抓了三張圖,暫時找不到照片就先拿很小kb數來練啦~)

  • components-bottomsheet-for-mobile-1a_large_mdpi.png (31kb)
  • components-bottomsheet-for-mobile-1b_large_mdpi.png (18kb)
  • components-bottomsheet-for-mobile-1b_large_mdpi.png (8kb)

gulpfile.js 存檔之後用以下的命令執行:

1
$gulp imagemin

注意看執行結果的最後一行,上面寫 gulp-imagemin: Minified 3 images (saved 11.23 KB - 19.5%),意思就是節省了 11.23KB, 總體省了 19.5%

  • components-bottomsheet-for-mobile-1a_large_mdpi.png (29kb)
  • components-bottomsheet-for-mobile-1b_large_mdpi.png (13kb)
  • components-bottomsheet-for-mobile-1b_large_mdpi.png (4kb)

最後請到 /build/images/..png 查看被壓縮結果

資料參考

備註

  • gulp.task(name, fn) it registers the function with a name. you can optionally specify some dependencies if other tasks need to run first
  • gulp.run(task) runs all tasks with maximun concurrency
  • gulp.src(glob) this returns a readable stream. takes a file system glob(like grunt) and starts emitting files that match
  • gulp.dest(folder) this returns a writable stream, file objects piped to this are saved to the file system