2016年2月14日 星期日

machine learning 資源

0214這種日子就乖乖待家裏整理環境,別出去丟人現眼了(眼神死)

魯蛇的情人就是電腦啊~~~哈哈哈

欣聞林軒田老師開放 machine learning 資源供下載,轉錄其動態如下:

_________________________________________________________________

「機器學習技法」在 NTU-Coursera 上短期內的最後一次重播也已經結束。近期借調至 Appier 後非常忙碌,短期內應該不會重開線上課程。

和「機器學習基石」一樣,我個人的看法是已經錄好的課程最終應該成為公共財。所以利用今天坐火車回台北的時間,我把「機器學習技法」的十六講六十五段影片標題整理了一下,即日起在 Youtube 上公開該課程所有的影片。

https://www.youtube.com/playlist?list=PLXVfgk9fNX2IQOYPmqjqWsNUFl2kpk1U2

投影片則早已放在這裡給大家參考。

http://www.csie.ntu.edu.tw/~htlin/mooc/

敬請各位朋友繼續討論指教,謝謝。

祝大家新春佳節愉快,情人節快樂,也許可以想像未來用機器學習幫你找到最速配的情人!
同場宣傳:「機器學習基石」的影片們

https://www.youtube.com/playlist?list=PLXVfgk9fNX2I7tB6oIINGBmW50rrmFTqf

___________________________________________________________________

2016年2月13日 星期六

github 上托管之 javascript 專案以 node.js 執行之 console 程式之持續整合 (CI)

what's CI ? why ?


從戰略的高度來看,整個 use case 可以由這篇來總結: CI 怎樣帶你遠離平庸?

用比較通俗的話來說,就是建立一個低成本的工作流程以讓人不可自拔地沉淪於攻城獅的角色之中

四年前的拙作: Ubuntu上Jenkins的試用 ,針對的是自建環境而非 github ,因此重新 survey 了一下最佳實務,而作此文(啊寫得像XX樓記的感覺…)

where & when


如標題所言,本文特別要討論的場景是:“github 上托管之 javascript 專案以 node.js 執行之 console 程式”,因為這剛好也是手上案子的實際情況

how


從戰術的高度來說,目前 github 上流行的套餐可以如此總結: mocha + chai + Travis CI + Codecov 使用流程

简单来说,就是使用 mocha 作为测试框架,chai 作为断言库,将项目交给 Travis CI 做自动测试,交给 Codecov 做覆盖率测试。

如果工作流程套用的是 github flow ,那麼協作者會提出 pull request , 此時 code review 可以再參考 代碼審查(Code Review)with GitHub Flow

p.s. github 專案上炫目的 icon 要如何打上去呢? 參考 在github中加入图标

which (alternatives)


Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率 ,覆蓋率測試使用的不是 codecov 而是 istanbul , 另外還有 “自动触发mocha测试” 的小技巧

ref




2016年2月12日 星期五

gnu global + emacs 在 ubuntu 中的安裝及使用


  1. sudo apt-get install global
  2. 在 emacs 中執行 M-x list-packages , 進入 elpa ,安裝 ggtags (請注意是兩個 g )
  3. 在要瀏覽原始碼的目錄中執行 gtags
  4. 在 emacs 中,要瀏覽原始碼的 buffer 執行 M-x ggtags-mode
  5. 使用以下指令進行跳轉

key             binding
---             -------

C-c Prefix Command
ESC Prefix Command

C-c ESC Prefix Command

M-. ggtags-find-tag-dwim
M-] ggtags-find-reference
C-M-. ggtags-find-tag-regexp

C-c M-SPC ggtags-save-to-register
C-c M-% ggtags-query-replace
C-c M-/ ggtags-view-search-history
C-c M-? ggtags-show-definition
C-c M-b ggtags-browse-file-as-hypertext
C-c M-f ggtags-find-file
C-c M-g ggtags-grep
C-c M-h ggtags-view-tag-history
C-c M-i ggtags-idutils-query
C-c M-j ggtags-visit-project-root
C-c M-k ggtags-kill-file-buffers
C-c M-n ggtags-next-mark
C-c M-o ggtags-find-other-symbol
C-c M-p ggtags-prev-mark
C-c M-DEL ggtags-delete-tags


2016年2月7日 星期日

"Learning JavaScript Design Patterns" 讀書筆記

*** 重要

**** 函數

***** 函數是物件
****** 可在執行期動態建立
****** 可做為變數值,類似C中的指標/參考, 但又具有屬性/方法
******* 記憶模式 Momento
***** 具有特定的作用範圍
****** hoisting對以var宣告的函數,具有var的作用特性
****** 匿名函式:不污染命名空間
***** 靜態方法vs原型方法;類別呼叫vs物件呼叫

**** 模組模式

***** namespace
以樹狀結構組織功能,捨棄java中利用實體目錄的對應方式
***** 宣告相依性
明確限定範圍、使用區域變數以加速
***** private+public
函數中var宣告的成員均為private,必需以附加到this(或任一全域變數)的函數讓外界存取
***** 匿名立即函式/Closure?
提供private作用域,傳入全域物件,回傳物件(或建構函式)

**** 原型 prototype

***** Function.prototype.bind()--改變作用域
***** 只要是可重複利用的成員 ,例如方法 ,都應該放進原型裏

**** new的作用

***** 產生空白物件,並命名為 this,最後隱含回傳

**** 物件

***** = mutable hash 可改變的雜湊表
***** 成員可用 value = object[key]存取
***** singleton / 自我定義建構式

*** 次要

hoisting: var宣告自動被提前到函式頂端
"use strict": 使this不再自動指向全域物件,減少函數不是為產生物件而撰寫時所造成的意外

2016年2月6日 星期六

javascript 中的"閉包( closure )"

定義:

閉包是一種特殊的物件,其中結合了兩樣東西︰函數,和函數所建立的環境。環境由任意的局域變數所組成,這些變數是由在閉包建立的時間點上存在於作用域裡的所有變數。

只要直接在函數裏引用外層的變數,然後當我們將「函數封閉起來傳回」時,該函數仍然可以正常使用,這就是閉包的概念了。
其實許多的 event handler 都已經採用了 closure 的概念了,它不但是一個 callback 的機制,而且還能存取到定義處所見的變數,因此是一個有效的模組化技巧。

當然你可以說 C 不就已經有函數指標,可以拿來當成 callback 的機制了嗎? 是的,但是 javascript 的語法,可以在函數內部定義另一個函數,不管這個語法是有意造成或無意的,它促成了模組化之外更進一步的 namespace 的控制--除了得到 callback 的函數,沒有人看得到這個 callback 。

(有沒有講了半天依然沒聽懂的感覺? 我覺得還是寫個 compiler 之後才會比較了解的XD)

參考資料:

2016年2月5日 星期五

nodejs 在 windows 平台的套件安裝問題--Windows users are not happy. #629

https://github.com/nodejs/node-gyp/issues/629#issuecomment-151018292

我也不高興了,喵的~

原因 


https://github.com/nodejs/node-gyp/issues/629#issuecomment-151018292

解答

我相信對某些人來說 Visual Studio 是必裝的,不過很多人不是OK?(喵的)

而且有 9GB 這麼大(扔)

解答2,大推(最多還是要佔掉4G空間就是,我是被用掉3.3G)


https://github.com/nodejs/node-gyp/issues/629#issuecomment-153196245

下載網址在 https://www.microsoft.com/en-us/download/details.aspx?id=49983

安裝時記得選自訂,還要選安裝SDK


最後設定個環境變數

c:\>npm config set msvs_version 2015 --global

雜感


回過頭來說原作者真是酸度破表卻又不失禮數,沒有問候、4個英文字母、身體的任何部位,真是英文寫作的典範。以下摘錄幾句佳句試譯:

As I said, I'm pretty much a newbie and I don't even know what node-gyp does, but what I DO know is that it's a pain to run Windows and install a project with node-gyp as a dependency.

(如我所言我還是個菜逼巴的新丁,巴啦巴啦巴啦,但是我至少知道在你M$的平台上執行、安裝 node 的專案是有多 TMD 的麻煩了)

It's bizarre that a nodejs developer needs to install visual studio (even the express edition) in order to be able to work on Windows.

(要個 nodejs 的開發者去安裝 VS (即使是最不佔空間的版本也要佔上9G,以SSD時價來說也要兩個排骨便當的錢你看看),這不是很.奇.怪.嗎?)

With that being said, I'd like to know from all of you what should we do to make windows users fall in the pit of success?

(說了這麼多,我倒是真的很想知道 M$ 的豬諸公們,我們窗戶系統的使用者要怎麼做才能夠不小心的掉到成功安裝/執行的小坑裏呢?)

PS. npm 基本指令

2016年2月4日 星期四

工程師最討厭做的事情--兼論以 org mode 實踐 literate programming

網路上看到的,工程師最討厭做的事情

  • 寫文件 
  • 寫註解 
  • 寫測試 
  • 別人不寫文件 
  • 別人不寫註解 
  • 別人不寫測試
真是說到心坎裡了XD

可是老師,有辦法讓寫文件、註解,就像是一陣風吹過那樣的輕鬆嗎?

曾經有人提出這個想法,叫做 literate programming (神人就是神人,想法總是領先時代)

看看手頭的工具,我覺得內建 /*…*/ 等區塊形式註解的語言比較有辦法無痛的實作它;結合 org mode 的話,就是把說明文字打在註解區塊中,在需要看文檔時切到 org mode 這樣。