軌跡球滾輪模擬

相信很多人剛入軌跡球坑的時候,第一次選的會是羅技木星,畢竟價錢差在那裏,
對於完全沒用過的人多數還是會想先試試看損失不會太大的款式吧。老實說它並不算好用的一款,
其中一個缺點就是沒有實體滾輪,用setpoint裡的模擬還不如自己到旁邊拉Scrollbar。

總之當時在這樣的背景下試著寫了個模擬滾輪的程式,寫完發現不得了,這東西好用的程度遠超預期OAO,
以至於之後換了有滾輪的款式也還是跟這個混著用。

因為又換了一支新的軌跡球,隔了四年技術也進步了,想說整理一下代碼,就剛好紀錄一下放上來吧。

More

ES6 Promises

Promises 作為ES6中非常重要的一個功能, 簡化了非同步函式的callback回傳方式, 也讓callback的層級回到caller的位置.

thenable object

{
    then(onFulfill, onReject){
        if(doSomething()){
            doSomethingAsync((err, res) => {
                if(err) onReject(err);
                else onFulfill("AsyncDone");
            });
        }else{
            onReject("SyncFailed");
        }
    }
}

thenable object是指一個含有then函式的object, 該函式會讀入兩個參數, 分別是成功完成的時候要執行的callback, 和失敗的時候執行的callback.
可以把then函式想成用來註冊callback用的函式(像是addEventListener之類的). onFulfill只會接受第一個參數作為結果, 如果要回傳多個值可以用Object或Array包起來. onReject的第一個參數則是拒絕的原因.

More

Github Webhook

Hexo部落格自動部署 (2)

接續先前關於登入git的文章
在能夠進行pull和deploy之後,接下來就是要如何在有push發生的時候自動deploy。研究了一下Travis和Github的API發現Github有提供Webhook可以使用,下面就來說說怎麼把App跟Github用webhook接起來。

成品: http://hexo.sasdf.cf
因為不用重跑npm install的關係,部署時間短了1分半左右。

More

Login to Github with ssh key

Hexo部落格自動部署 (1)

在使用Hexo架設本部落格的時候,
想說把後台的資料直接放到另外一個branch上,
這樣就可以直接用Github功能強大的網頁介面來更新,
之後再在架個小網站把文章pull下來,
用hexo處理好之後自動push回master。
於是問題就來了,要怎麼讓它能夠登進github更新網頁呢?

成品: http://hexo.sasdf.cf
現在這篇就是用這方法寫的,github剛好有markdown preview超讚的。

More