prism

2014-12-24

New job

新的工作,前幾天剛任職滿一個月

前幾個月心中浮出念頭,想換工作,就像馬雲說的,心委屈了,給的不到位

直到最後真的不想再承受的是,我真的由衷的喜歡寫程式,學新的東西,解決問題

後端用 Python, Node.js , 或是 Golang 去刻,也可以接受被叫去支援寫 Android
, iOS 的應用程式,可是 PHP Team 的工程師離職後,找不到人,找我去接專案,心中真的很圈圈叉叉
好歹我也是掛在 Python 的開發 Team 下面,應該在怎麼凹,也凹不到我吧!

喜歡寫程式,愛 Linux ,也尊重 Php 的工程師,寫過1, 2 年

可是無奈現在看到程式裡有很多的錢字號,真的要很多錢的工作職務,才吞的下去,尤其是人員的離職
就亂塞專案,心裡真的很不舒服,就是這樣的感覺,淹沒我工作的樂趣,及下班後,陪伴小孩,家人的幸福感,

開始認真的再看看有沒有適合的工作機會,這裡分享中年程式宅,換工作的心得,由幾個點來看找工作
這件事

最好的工作,一定是朋友介紹的,不過阿宅的朋友一般不多,所以自己拿捏一下

看工作說明及前置作業

1. 一般的說明,寫的很制式的,就不用投了,一間公司,連找人才這麼重要的事,都不在意了,相信也不太會重視你

2. 專業名詞,幾乎全部出現了,薪資待遇卻沒有空間,這投的話,只能說,自己的邏輯判斷都有問題了怎麼寫程式

3. 說明裡提到,克苦耐勞,新人尤佳,一般台灣的徵才有很多淺規則,要克苦耐勞的一定只有更苦,新人尤佳的
其實就是要應屆畢業的同學,說到歡迎抬青椒成的,就是只接受台青椒成 (外商不適用,真正的外商比較沒有這些規則)

4. 一般台灣企業,或是假外商的話,條件裡的 nice to have ,不用懷疑,就是一定要會,而且要很厲害

5. 新創公司,一般除了是自己認識的人外,一定要選成立一年以上的公司,一間連員工年終都沒發過的公司,你信任嗎?

6. 一般新創公司,徵才的文案寫的很漂亮,有一個陷阱是薪水的範圍給的很大,這種通常只是吸引你投履歷,一般給不起上限
(除非你有學長姊,或是認識的朋友在裡面任職,不過通常是好缺的話,不用寫到文案,履歷已經很多份,正送到人資主管手上了)

7. 大公司,有好學歷,比較有好機會,公司經營者越是學術界出身的越在意學歷,自然你學歷是強項,就很有機會出線,如果你是專業強,
學歷像我一樣,私立大學還非本科系,通常外商或是,專業強的老闆,會比較重視你

8. 一個工作一直在徵人,可能掛個一年以上,我是沒投過這樣的職務,你可以問看看,在告訴大家

9. 公司的經營者,名聲不好,或是人品不好,這個其實很主觀,就像選舉一樣,反正自己的選擇,我是不會考慮

10. 另外就是 Head hunter 及 Linkedin 提供的機會,一般會比一般人力銀行的條件好一些

進入面試過程,其實這是很主觀的事情,只能說,千奇百怪,什麼人都有
有些人,希望你的智力破表,人格正常,專業超強,充滿創造力及想像力,又要好管理,聽了是不是很矛盾 :-)

反正就是做自己,假如你找的是一份你本來就喜歡做的事,有問題就問,不能接受的就不要接受,

不必像一些面試法則說的那樣,溫文儒雅,有禮貌,懂規矩,少問問題,我們求得是一份快樂的工作,
工作開心,自然很期待每天上班,不是奴才的缺,每天痛苦的工作
如果想知道,新的工作環境,是不是責任制,或是一般的下班時間,就直接問,會因為這樣就在意的主管,
一般他也不是在意你的專業能力,而是在意對你的控制能力,也許教你面試的書,會說你失去了一的工作機會
其實是你又浪費了寶貴的時間在錯的地方


1. 一般面試官,會問的,有工作經驗,答的出來,知道多少就說多少,謙虛,不要唬爛,不要自以為是

2. 程式題,就盡量寫,不會寫,也還好,就說一下怎麼解,或是自己的了解,依您自己開發多年的經驗,你的成果應該都不是在紙上寫出來的吧!
一般程式題,我覺得是要過濾一些完全沒有概念的人用的,真的會用很艱深的程式問題或是演算法,來考倒你,我想這樣公司需要的是很會考試的同學
一般網路上,找的到的,或是書本有教的,查的到的,有概念,需要驗正及實作的時候,再專研即可,真正的工作,會有不同的挑戰,不見得書上找的到,
有時候,是真的花比較多時間在看文件,及實作

3. 一般回答完面試官所有問題後,會給你提問,如果你真的是會不好意思,我也是會有一點,我至少問
a. 公司一般作息時間,是不是責任制 ( 一般會要你加班工作的主管,聽到你這樣問,也會打你槍,不過是好事)
b. 公司有沒有不同於勞基法以外特別的規定
c. 問面試官,現在任職的公司服務,最令他覺得驕傲,自豪的點,還有最不舒服的點 (說不出來,或是吱吱嗚嗚,自己都說不出為什麼要做下去,又怎麼能要你加入,大概就可以打槍這一間公司不用再往下談了)
d. 公司成家的工程師的比例,及一間公司工程師的比例 (一般,日夜都忙的工作,沒有時間交女友,或是生活只有工作,沒有一點其他的生活,又有誰要跟他共組家庭)


最後階段,公司覺得你是不可多得的人才,談薪資及 package

1. 如果是要離開台灣,記得要依照,實際國家水準,不要用台灣的角度看

2. 千萬不要相信人力銀行上面的數據,用你簡單的數學,如果,不吃不喝,買不起房子的薪水,哪就不要做了,出國吧

3. 至少相信自己的專業,在 odesk 上面可以拿的到的時薪,稍微還原一下,就可以推出一個正常的無國界工作者的基本價值,不然就開始接案人生吧 ;-)

4. 在自己真正有實力的基礎下(不是自我感覺良好),至少,你覺得爽,覺得夠,不然又會墜入心理的糾結 (最好可以跟學長姊,或是同業的朋友打聽一下,不要看人力銀行的數據)

以上自己的心得分享,希望對您有幫助

2014-12-23

golang routers

覺得簡單易懂的好文章

可以讓你用 golang 寫 api 有一個簡單的開始

http://nicolasmerouze.com/guide-routers-golang/

另外也推薦他的 gist ,再把 main 的部份,拔出來,做一個 NewRouter 應該更好測試,再加幾個函式庫,就是一個 micro framework 了

作者這一系列的文章 http://nicolasmerouze.com/build-web-framework-golang/






相關也推再看 alice 模組作者的文章,雖然 alice 很單純,單純到自己刻,可能也只有 5 行左右
不過看一下,作者的實作概念,挺不錯的


https://justinas.org/alice-painless-middleware-chaining-for-go/
https://github.com/justinas/alice
https://github.com/julienschmidt/httprouter
https://github.com/gorilla/context

2014-11-22

為什麼不要買三爽的手機

目前的手機 S3 ,終於也到的系統崩潰的時候了

到官方網站,要抓 firmware ,結果完全找不到

反而要由第三方的網站,才找的到載點

手機可以繼續故障下去

這是我第三次修理了,前兩次,都是 micro USB 接頭有問題,解法都要我換主機板

第一次,保固內,第二次,過保了一個月,我想他們手機的耐久壽命,可能只有抓
保固期的 0.9 ~ 0.98

這一次,開不了機了

2014-10-29

Yosemite 的痛

我想 Mac Yosemite 的痛,大家漸漸感受到了

這裏有一篇,有關無線網路爛了的解法,有問題的朋友可以試試,我的 WL-330nul 一樣是沒有用,只能用斷斷續續的 Ap 模式
感覺回到了用 Linux 時的初衷,還會邊拔插裝置,tail -f 看一下 /var/log/system.log 的錯誤

http://osxdaily.com/2014/10/25/fix-wi-fi-problems-os-x-yosemite/

還有一種方法,就是把藍芽關掉,再試試看

另外,Yosemite 已經預設不讓你裝沒有簽證過的 kernel module 了,所以用 homebrew 要裝 osxfuse 會吐

terry@localhost /var/log $ brew install osxfuse
osxfuse: osxfuse is already installed from the binary distribution and
conflicts with this formula.
osxfuse: OS X Mavericks or older is required for this package.
OS X Yosemite introduced a strict unsigned kext ban which breaks this package.
You should remove this package from your system and attempt to find upstream
binaries to use instead.
Error: Unsatisified requirements failed this build.



我是直接下載 dmg 安裝了

2014-10-24

Write in GO



感覺最近好像蠻常分享 GO 的東西 ;-)

今年時間剩下幾個月及接下來的一年的時間,想再多做一點 Android 的東西,還有集群架構的服務,該用 Python, javascript, Golang 的地方,當然就給他直上

另外 jinja 作者極力推坑 的 Rust 有時間
可以來把玩一下

現在我也是 Mac 的使用者,對他的軟體,硬體,覺得真的一直在進步,不過,對於 Apple Developer 必須要繳年費,搞憑證
開發人員要付錢,然後做免費的 App 幫 Apple 擴張市場,就算是付得起,也超不爽的,非常不以為然,這根本是裝笑維

2014-10-22

優勝美地不太優

升級到了優勝美地,記憶體需求增加,Asus WL-330NUL USB 網卡找不到

我是等到 Xcode 6.1 出了才更新,沒想到還是吃了一些悶虧

其他的升級,好處不明顯,視覺上的修改,見仁見智,介面倒是有幾分像

Linux 的圖形介面

但是 Mac 的 User 缺點就是自由度,Apple 要你上,你遲早還是得上,因為,其他的軟體,會慢慢都會要你更新

2014-10-05

Android 和 iOS 不同點

這真的要靠背一下,為什麼很少聽人說, Android 用 micro usb 基本上是設計有問題壓

iPhone 上面的插座,是母,線是公的,會聽到有人,有時候說線很爛,常斷之類的

可是 Android 上面的傳輸插座 micro usb 是母的,也是公的,中間那一個小插片,倒是線的接頭耐用多了,這一種設計

會斷,就是斷在手機的插座上,這根本就是做錯的東西吧

就是古典 Android App 發佈

Google Play 連結

https://play.google.com/store/apps/details?id=com.upassing.justclassic

這是一個專為古典樂做的 App.

所有的內容來源,都是屬於公共領域的音樂,小弟還蠻喜歡開放音樂,商業的創作也喜歡,只是,自由音樂在法律上,不會像商業的音樂全被唱片公司控制

未來如果真的有人喜歡自由開放的古典音樂,我會繼續改善這一個 App,也會加上廣告,以維持下載的頻寬

如果想要鼓勵我,繼續改善這一個 App,給個五顆星,還有您寶貴的建議,目前是非常 beta 的版本,基於 release early release often 的原則就先發佈了

最重要的就是一起聽音樂吧

這一次,寫這一個 Android 的心得,就是 IDE (Android Studio) 的開發環境,真的很聰明,自己不會寫 Android

以前比較多是用 cordova 包的 App , Java 的書也都沒 K 過,居然能發佈 very early beta release 的版本,還有很多的調教優化要邊做邊學

現在寫 Python Golang Node.js 的時候,用 Vim 寫,也都會一大堆提示,及提醒

Golang 裡面左括弧,寫成了冒號
Python 裏冒號變成左括弧
javascript 裏 for loop 寫成 Python 或是 Golang 的樣式
Golang 裏用了 Java for loop 的語法

這些全靠 Vim 或是 IDE 幫我檢查,以後要是有機會去面試,要是用筆寫程式,不能用我的電腦,應該會死的很慘 ;-)



PS: 給宅爸在家就是都會做一些怪怪的東西

參考資料
http://code.tutsplus.com/tutorials/create-a-music-player-on-android-user-controls--mobile-22787

2014-09-30

iOS push notification

首先您必須到 https://developer.apple.com/ 去新增一個 App,一般就是你要用 push notification 的應用程式

設定好名字,還有 ID ,記得要把 Push Notifications 的服務打勾

我這裡說明就用中文,因為英文的說明有一堆了

接下來就可以打開您的 Mac / 應用程式 / 工具程式 / 鑰匙圈存取

我們選憑證輔助程式,從憑證授權要求憑證




把他存下來,我舉的例子就叫 PushMsg ,把檔名改成 PushMsg 所以你會得到 PushMsg.certSigningRequest 這一個 CSR ,待會要到 apple 網站上面產生憑證



產生後,到鑰匙圈存取 應用程式,選鑰匙的地方,你會看到有 PushMsg 的公鑰和密鑰,點選專用密鑰,按下滑鼠右鍵輸出憑證,輸出成 PushMsg.p12 待會用










這時候,請用剛剛的 PushMsg.certSigningRequest 到 Apple 開發者網站的 App 設定 notification 的地方去產生憑證,可以下載後,

開發模式,你會得到 aps_development.cer ,實際部署模式,請依此類推



我們現在有 PushMsg.certSigningRequest , PushMsg.p12 , 還有 aps_development.cer 接下來,我們來產生,Server 端程式需要的憑證格式

這裡的程式,我們用 Golang 的範例,其他用 Python , Node.js 或是其他語言的朋友請依此類推

產生 cert.pem


openssl x509 -in aps_development.cer -inform der -out cert.pem

產生 key.pem 由於我很懶,key.pem 不想加密碼,程式不想再判斷密碼部分,我用這樣,如果你要加 pass phrase 就不要加上 -nodes 即可

openssl pkcs12 -in PushMsg.p12 -out key.pem -nodes

最後就是用 Apple 文件上面的 openssl 測試即可,沒有錯誤,就是 OK 了

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert cert.pem -key key.pem 

最後附上 golang 的測試程式,實際上已經有現成的 library 可以用 https://github.com/anachronistic/apns

只有連線的測試,有用 openssl 測試就可了,直接執行沒有錯誤,就是連線沒有問題了,送訊息可以直接用上面的 library


package main

import (
 "crypto/tls"
 "fmt"
 "net"
 "os"
)

func main() {

 // load 
 cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
 if err != nil {
  fmt.Println("key error: ", err)
  os.Exit(1)
 }
 conf := &tls.Config{
  Certificates: []tls.Certificate{cert},
  ServerName:   "gateway.sandbox.push.apple.com",
 }

 // connect to APPLE 
 conn, err := net.Dial("tcp", "gateway.sandbox.push.apple.com:2195")

 if err != nil {
  fmt.Println("tcp error: ", err)
  os.Exit(1)
 }

 tlsconn := tls.Client(conn, conf)

        // be nice
 err = tlsconn.Handshake()
 if err != nil {
  fmt.Println("tls error: ", err)
  os.Exit(1)
 }

}




參考資料

http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

http://bravenewmethod.com/2011/02/25/apple-push-notifications-with-go-language/

2014-09-16

groupcache

這一個 golang 裡面非常帥氣的 library ,作者是原 memcached 的作者之一,主要就是讓 cache 機制再簡化

集群的部署能力也還不錯,完全不用再管 server instance ,我對這種,以簡單為名的 library 最沒有招架能力了

https://github.com/golang/groupcache

使用上也是非常的帥氣,可以參考 OSCON 的簡報

http://talks.golang.org/2013/oscon-dl.slide#1

詳細的使用上可以參考, source code ,或是 test case,還有很多種用法

以下是我用的範例,您可以用在很多地方,像是外部 url fetch ,或是很重的 query 或是檔案 IO 之類的
就是平常,你 cache 怎麼用,就可以怎麼用,cache 只有支援 拿,和寫,

以下的例子用這樣拿資料,我的 cache key 大概到小時,就用自己算每小時不同的 key
FileInfoCache.Get(nil, cacheFileInfo, groupcache.AllocatingByteSliceSink(&data))

另外,FileInfoFetch 就是另外一個做很多 disk IO 的工作
dest.SetBytes(FileInfoFetch(path))



// Example for groupcache
// snip from my code

var (
        FileInfoCache  *groupcache.Group
)

func init(){

        //////////////////////////////////////////
        // init book query cache
        //cacheAddr := "127.0.0.1:55555"
        //peers := groupcache.NewHTTPPool("http://" + cacheAddr)
        // the cache key is compose with timestamp hour
        // 2006-01-02 15!!!url
        getter := groupcache.GetterFunc(func(ctx groupcache.Context, key string, dest groupcache.Sink) error {
                keys := strings.SplitN(key, "!!!", 2)
                //ts := keys[0]
                path := keys[1]
                dest.SetBytes(FileInfoFetch(path))
                return nil
        })


        if FileInfoCache == nil {
                // cache not been init
                // allocate 64 MB memory for groupcache
                FileInfoCache = groupcache.NewGroup("FileInfo", 64<<20, getter)
        }
        

}




你看,帥不帥氣,完全不需要另外跑,cache server daemon ,如果要組成 cluster 就直接在程式裡用 HTTPPool 的服務

bolt

記錄一下一些好用 golang library

blot 是一個純 golang 以簡單為美開發的 key value 資料庫,後來會用他,是因為一開始要存非常簡單的資料

想說就用 sqlite 來存就好了,反正欄位很少,資料結構簡單,開發環境是 Mac ,目標環境是 Linux ,部署的流程

就用 python 的 fabric 簡化,本地端編譯完 linux/amd64 的程式,複製到遠端 Linux,可是 github.com/mattn/go-sqlite3 有用到

CGO ,在 Mac 上面必須要用 gcc for linux 來編譯,編譯完後,到了目標機器上面又有 glibc 版本的問題,覺得這樣很花時間

不方便,另外就是 CGO 的編譯速度沒有很帥氣,立馬就決定找一個不依賴 CGO 的 key value store,目前覺得蠻合用了,這個專案的頁面的第一句話

就說服我了(我也太沒原則了吧) "Simple is the new beautiful."

https://github.com/boltdb/bolt

使用簡單,由於我的 server  主要還是用簡單 JSON 格式,所以就先不用 gob 來 Encode 資料


// Example for bolt
package main

import (
        "encoding/json"
        "fmt"

        "github.com/boltdb/bolt"
)

var (
        db         *bolt.DB
        dbpath     = "./user.db"
        userbucket = []byte("users")
)

func main() {

        db, _ = bolt.Open(dbpath, 0644, nil)

        key := []byte("unique_key_here")
        var value = struct {
                Name  string
                Title string
        }{"Somebody", "Gopher"}

        fmt.Println(key, value)

        // in write transaction
        err := db.Update(func(tx *bolt.Tx) error {
                bucket, err := tx.CreateBucketIfNotExists(userbucket)
                if err != nil {
                        return err
                }
                data, err := json.Marshal(value)

                fmt.Println("Please remember handle the error", err)

                if err == nil {
                        bucket.Put(key, data)
                }

                return nil
        })

        fmt.Println(err)
        // in read
        db.View(func(tx *bolt.Tx) error {
                bucket := tx.Bucket(userbucket)
                if bucket != nil {
                        // if have a struct to restore it
                        //json.Unmarshal(bucket.Get([]byte(key)), &user)
                        fmt.Println(bucket.Get(key))
                }

                return nil
        })

}


2014-09-05

品嘗姊姊的手工蛋黃酥

請假一天,把櫥櫃的中島桌面完成,小聚時

姊姊帶來手工今天剛做好的無糖豆沙蛋黃酥,只有食材的味道,正港台灣口味

2014-08-28

最近很不爭氣地把履歷打開

現在隨著時間,年紀的增長,也不確定自己想做的軟體或硬體服務,最後
到底能不能成功支持一間公司的運轉,目前所在的工作雖然非常的穩定,各方
面都是相對保守的,但是您也知道,越穩定的地方,就越少創意,沒有進步的環境,
除非自己成長


所以在自己成為自己的伯樂之前,也無限期開放自己個履歷

不知道,是自己先成為自己還有別人的伯樂,還是我先遇到我的伯樂

大家共勉之

2014-08-18

乾淨的重裝 Mac

用官方的方式,做了 USB 開機碟,在蘋果的 App Store 下載讓強者更強的, Mavericks 後,先不急著點安裝

http://support.apple.com/kb/HT5856

sudo /Applications/Install\ OS\ X\ Mavericks.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ Mavericks.app


MyVolume 就是你的 usb 隨身碟的名字

然後大概就是用 c9s 大大的調教方式
http://c9s.blogspot.tw/2014/04/mac-os-x-ssd-macbook-air-macbook-pro.html
Spotlight, timemachine 關,SSD mount noatime (不要最後讀取時間)



sudo mdutil -i off -a  # spotlight 全關
sudo tmutil disablelocal # timemachine 關

sudo -i
cat > /Library/LaunchDaemons/com.disk.noatime.plist



<plist version="1.0">
<dict>
<key>Label</key>
<string>com.disk.noatime</string>
<key>ProgramArguments</key>
<array>
<string>mount</string>
<string>-vuwo</string>
<string>noatime</string>
<string>/</string>
</array>
<key>RunAtLoad</key>
<true>
</true></dict>
</plist>


sudo pmset -a hibernatemode 0 # 休眠不 snapshot 到硬碟





另外參考網友 RamDisk 的做法,做 RamDisk,把瀏覽器的 Cache 資料夾,掛在 RamDisk 下面
http://blog.roodo.com/jason1204/archives/25366852.html

開啟應用程式->工具程式->AppleScript編寫程式


do shell script "

if ! test -e /Volumes/RamDisk ; then

diskutil erasevolume HFS+ RamDisk `hdiutil attach -nomount ram://$((2*1024*1024*2))`

mkdir -p /Volumes/RamDisk/Chrome/Cache
mkdir -p /Volumes/RamDisk/Firefox/Cache
mkdir -p /Volumes/RamDisk/Safari/Cache

mkdir -p /Volumes/RamDisk/VMware

fi

"


儲存成應用程式後

到 “系統偏好設定” -> 使用者與群組 加到自己的登入啟動項目裡

Chrome:

rm -rf ~/Library/Caches/Google/Chrome/Default

ln -s /Volumes/RamDisk/Chrome ~/Library/Caches/Google/Chrome/Default


Safari:

終端機下:


rm -rf ~/Library/Caches/com.apple.safaridavclient
ln -s /Volumes/RamDisk/Safari/Cache ~/Library/Caches/com.apple.Safari


FireFox:


在網址上Key上: about:config
右鍵新增:browser.cache.disk.parent_directory 路徑就是 /Volumes/RamDisk/Firefox

2014-07-14

馬達陣亡了

還是要小心,電壓輸出太大了,給小朋友玩坦克太久了

畢竟,電壓輸出長時間過載

記得要用 PWM 再降一點電壓



另外,有一點也要小心,電池模組的作法,如果是一般的乾電池,應該沒有關係

我是用 18650 鋰電池,所以,電池忌諱不可以過度充電,或是過度放電,也許要加一個電壓的 LED 燈,比較安全

另外藍芽遙控器,原始碼放在 github https://github.com/terryh/TankRemote

2014-07-08

Arduino 藍芽遙控戰車

暑假到了,小孩也大一點了

以前哪些簡單的積木騙不了他了

現在一片 Arduino 的板子也是便宜到不像話,嘿嘿

我也可以順便作玩具來玩

Arduino 真的便宜又大碗,我用的是超值的 MEGA 版,要是不需要太多 IO 腳位的話,UNO版 就很夠用了,也有很多的懶人電源模組可以用,我要驅動的小坦克

是用田宮模型組裝的,很適合和小朋友一起做,樂趣無敵,另外電源的部份,我串兩顆 18650 的鋰電池,充完電,單顆有 4.12 ~ 4.18 Volt左右, 串兩顆,電壓大概有 8.3 ~8.4 V,驅動沒問題,不過,給田宮附的馬達,規格是說只吃到 3V,所以還是保守一點,我用 PWM 控制,再用電錶量一下,控制在 6 V 以下,算是很勉強,玩到目前還沒有燒焦味

電源模組用 L298D 就很夠了,但是,我用 L298P 少控制兩隻腳,HIGH ,LOW 就代表正向,反向了

藍芽模組用的是便宜好用的 HC-05

Android 手機遙控器,就自己刻一下,用寫 html5 遊戲的方式,直接用輕量過的 phaser 遊戲框架,包 cordova bluetooth serial 通信的模組

一個 android 的坦克搖桿就有了

編輯環境,當然是 VIM 直接用 ino 工具,測試馬達電機之前,都是先把訊號送麵包版的 LED 檢查程式先




Arduino http://www.arduino.cc/

Phaser http://phaser.io/

Android http://developer.android.com/

Cordova http://cordova.apache.org/

Cordova Bluetooth Serial Plugin https://github.com/don/BluetoothSerial

ino http://inotool.org/

Android TankRemote source https://github.com/terryh/TankRemote

TankRemote Google Play TankRemote

PS: 焊接馬達電線的時候,線的顏色放錯了,紅色變成反向了,最近桌子亂的太不像話

2014-07-03

加稅

台灣政府這個最厲害的招式就是,加稅,不然就是漲價

國庫空虛呀,一大堆的議題,還製造加稅的理由

拜託醒一醒啦

目前,政府想一大堆加稅的理由,目的就是要打趴房價

我們今天來說這個假設,如果,最後房價還是沒有趴下去呢?

你已經一大堆新台幣跟著陪葬了,以後,換屋,還不是沒錢

如果,今天,政府拿出一樣的政策,對付企業,以後,企業盈餘

賺錢的部份,不加薪,我就加你稅的話,我想這個 633 應該很快就達成了

一大堆,企業,也都是土地利益,上下其手,一棟一棟,大樓在買賣賺錢的,

那幾間壽險公司,手上不是一缸子嗎?


台灣目前的生態是這樣

第一步,政府出面,跟農民,或是百姓說,這裡以後要做什麼建設,你要滾蛋,來吧,這一點錢給你去看醫生,不要太憂鬱

第二步,政府的機關,會規劃一大堆,相關的規劃啦,建設啦,變更地目,到時候,政府假如不想牽連太多,就直接高價釋出開發土地的時候,
價錢抬高賺一票,民意代表就用自己的在外面開的公司,明股,或是暗股來吃這個計畫,

第三步,政府,跟人民說,你的甘苦,我有聽到了,我們已經把這計畫發包出去(一定不能自己做,不然,出事就沒人背黑鍋了),不久就可以解決你的問題了

第四步,計畫完成了,這一輪,土地利益大家分完了,政府投入的經費,該入自己公司的也拿的差不多了,每個戶頭又多了好幾個 E

第五步,幹,問題還是沒解決,好吧,我們在玩一輪


你看那一些精華土地,國有才慘局釋出的價格,屈指一算,就知道,最後售價會到哪裡了,為什麼大家都天真的以為,房價太高是人民

或是財團的錯誤呢? 這不就是,一部政府自己自導的戲嗎,這個漲幅,不是都完全跟著你的建設走?


*. 你可以不要賣出土地,廣建社會住宅,只租不賣給需要居住的人民. (他就是不作,因為政府絕對不能做事,不然作不好,沒人背黑鍋,外包也許還有點機會)
*. 你可以有完善的造鎮計畫,轉移都會區就業,及居住需求的緊繃
*. 資訊化公務單位,配合造鎮遷移出市中心,建築,或是機關用地,再利用,再開發,簡化流程,人事成本,不是再賤賣
*. 完善的城鄉規劃,產業升級,紓緩都會區才有就業機會的情形
*. 只有一種的社會福利,照顧,及醫療系統,不要成城鄉落差大,照成,全都只能往都會集中的情形
*. 只有一種的退休年金制,沒有在什麼,公務人員,勞工,農民
*. 政府笑能提昇,人事,組織再造
*. 有完整的創業育成機構,除了不提供錢 (這不就是創業的人要解決的問題),但是其他的都提供,場地,網路,人脈匯集,幫台灣多一創造一些高毛利的產業




2014-06-22

假日雜工

假日,修修補補,妝點新書架

浴室鏡櫃,還有一個量身訂做的迷你床頭櫃,剛好補一下牆面的段差

每一件都有缺點,還有自己的進步

浴室鏡,敗筆上蓋,上面都是釘孔,不美觀,雖然,吊上壁面
看不到,上蓋可以用接榫的方式結合,就可以美觀多了,另外鏡框
的作法不對,這樣側面,也露出接線,遜掉了



床頭櫃,敗筆,我鉸鍊挖錯邊了,挖到了櫃體上
真瞎



衣櫥,還沒做好,不過,我的滑軌溝,已經洗錯了一點

現在,會被笑的地方,就是每一件作品,都有缺點,不過也都有成長

進化的鋸台,可以的話,一定千萬用圓鋸去裁切,速度相差太大了,
需要大一點的板材,一定要先請建材行或是木材行裁切好,一刀 5元,10元 20元都有,千萬不要像我第一次,在網路上買材料,好像是一間叫
X幫手的賣家他用公分算裁切單價,兩塊 8尺 4 尺的木芯板材,大約快 6000 元,千萬不要
買那種用公分算的,貴了兩三倍的金額



現在叫料的超低調木材行,老闆沒有招牌,不是最便宜
但是老闆很親切,又是在地店家,一定要支持的啦


黃景泰放出來了你信他嗎

小弟算是基隆的菜鳥

出社會打拼,一切都是靠自己,實在不願意背負太多房貸
所以有幸,可以就近看看海洋之都,說實在的,好的地方就是

現在吃起東西,都已經熟門熟路,蠻多我愛吃的,當然都不在夜市,那是給觀光客去的地方
離海邊很近,夏天想玩海上的活動,算是很方便,如果海岸線,沒有被防波塊佔據,或是被很瞎
的水泥灌起來

壞的地方,說真的,只要離開台北市,每個地方都是完全靠自己,沒有 1999,沒有
每區的運動中心,沒有捷運,主要幹道也會違規停車,大概併了兩排,警察才會出現,
騎樓佔用非常嚴重,基於選票,看起來,是完全的放牛吃草,公車載人,多年沒進步,
一直保持,沒有停等區,都直接很霸氣在馬路中間停下來,反正鄉下地方步調慢


另外,基隆有個超瞎的快車道停車格,然後在快車道還畫上禁行機車,晚上晚一點,有時候,港邊
高架橋下的內側車道,化身為酒店的停車場,停整排的車子

要說這個台灣,不管到哪裡,最厲害的,就是這個都市計劃書

這個保護區,山坡地,遇到財團,或是民意代表,通通都會轉彎,化身成在這些人的財富


要說有多誇張,就有多誇張,我想,已經不用看細節了,我這幾年看到的,都是明目張膽的官商勾搭在一起,
也不這麼低調了,房子到處亂蓋,拼命蓋,有山,就把山整個挖了,路小條沒關係,容積率,反正,要怎麼搞,就怎麼搞

如果你碰巧,又知道,這一些山坡地,或是保護區,被誰買走,看起來,就像是一場官商當起強盜的鬧劇


都市計畫書
基隆一山坡保護區變更案快速過關
https://www.klcg.gov.tw/uploaddowndoc?file=/pubklcg/bulletin/%E4%B8%AD%E5%B1%B1%E3%80%81%E5%AE%89%E6%A8%82%E5%8F%8A%E5%85%AB%E6%96%97%E5%AD%90-%E8%A8%88%E7%95%AB%E6%9B%B8.pdf&flag=doc


以上,計劃書的概要,大概就是,因為地方交通,越來越擁擠,所以把幾塊,財團已經整併好的保護區

變更成著住宅區,這樣比較不擁擠

看,有沒有低調

我想,我應該來補個影片才對

2014-06-17

elasticsearch as backend

感覺用一個加值的 Api proxy binary 控管權限,再客製一些加值的部份,把 elasticsearch

包起來,應該可以取代 Database, 或是 mongodb 來解決很多的架構上的問題

所有系統,萬法歸宗,就是實現資料的存取,及查找

別再做比較簡單但是錯得離譜的事情了好嗎?

覺得蠻認同的

別再做比較簡單但是錯得離譜的事情了好嗎?


像是最近有看到打房的新聞,一例是要銀行增加利息,這樣不是反而,擴大銀行的利差嗎?還是覺得銀行賺的不夠多,該做的不就是不要浮濫的授信嗎?
像是劉縣長,可以輕易超貸,或是旺旺魏家,不是可以幾乎不用錢就可以買帝寶,這不是都是銀行,農會,自己在作的戲嗎?

另一例是說,有某人有房子上百間,好像罪該萬死,罪該死的應該不是他吧?
隨便一家壽險公司,我看不是上百間吧,都是上百棟的房子,還都是商辦勒,怎麼沒有說他們炒房
開飯店的,不都也算是包租公嗎?還都是日租耶,飯店更是豪華壯麗
哪一家,公庫銀行,沒有到處都有房產
今天最大的幌子,就是用公平正義的名義,來更加剝奪,弱勢,或是更底層的財富,而人民卻不自知


最該死

政府圈地,假公共利益之名,趕走平民,強取豪奪,再賤售財團,看看以前國有財產局,賣出的土地,這地方政府的開發案,
例子舉不完

北市,一個小巨蛋不夠,沒多遠,還要一棵蛋
...


競爭是進步的動力

小表弟想要玩 3D 遊戲,幫他看一下電腦規格

哇, Mac 也用 intel CPU ,AMD 也停滯不前後,

INTEL 真是躺著賺, i5 CPU 價錢幾乎沒什麼動耶,記得沒錯,好像前年也差不多
這個價錢,感覺現在 CPU 幾乎沒像以前世代交替這麼快了

比較狠的是沒多久,腳位就要換一下


PS: 真懷念以前,AMD INTEL 捉對廝殺,CPU 跳水的日子

2014-05-29

Golang Web 好色開發

現在由於 Single Page Application 盛行,還有多平台的介接,在後端常簡化成只有開發

Api 的方式來使用,用 Golang 的標準函式`酷`,幾乎就可以解決了,有時候偷懶一下,或是想試一下其他開發的想法,及函式庫

在一般的開發情境下,我們可以用 gin 或是 fresh

來做類似 server 端 live reload ,開發完成後,就用 gox 編譯目標平台的執行程式,有了這一個 vim-go 的 Vim plugin 後,在
Vim 裡,就像是用 IDE 開發一樣,不用再打 import 了

fresh 的 terminal 訊息處理,有顏色,我很不爭氣的就用 fresh


另外,Golang 除了強大的標準函式庫,立即(即戰力呀,鄉親) 可以做 Api server 的開發外,還有很多小而美的框架,或是小函式可以用

mux

https://github.com/bmizerany/pat 簡單至極的 router Mutex,可能你直接看 source code 比看文件快

https://github.com/julienschmidt/httprouter

https://github.com/jadekler/git-go-websiteskeleton Skeleton example

mini framework

有 Martini https://github.com/go-martini/martini Magic King, Express.js like

作者為了中和平反一下 gopher 的意見,另外寫了 Negroni Express.js like

gin-gonic 算是簡化版的 martini 然後再把 inject 的魔法拿掉,效能提昇很多

最早開始的,gorilla http://www.gorillatoolkit.org/ 很多人,就是用他的 mux 和 session module 來用算是小而美的代表作,喜歡,金剛,首選

https://github.com/rcrowley/go-tigertonic tiny, small

https://github.com/zenazn/goji

http://fitstar.github.io/falcore/ pipeline king

https://github.com/gocraft/web

https://github.com/pilu/traffic fresh 的作者寫的

另外還有幾個比較大,且完整的框架,比較像是一條龍的框架,beegorevel

因為,個人掌握度沒到位,所以就只有停在,見習別人程式的階段,另外,也是覺得太大一包,怕吞下去會消化不良,其他還有很多

最後,很不爭氣把其中一個專案試用一下 Goji 了,因為他 terminal 有顏色,這其實還蠻自我矛盾的,有 GUI 的時候,覺得效率不好
喜歡用 terminal,有了 terminal 了以後,對這一種,有顏色的工具,或像是 yeoman 之類,還有可愛的 Mascot 的工具毫無招架之力

fresh



Goji


Yeoman



PS: 這一篇,充滿個人喜好,超不專業,大家要玩的開心最重要

2014-05-28

Upass 誕生

Upass

什麼樣的軟體都會有需求,這是一個針對電子資源使用者設計的

Proxy Server ,因應越來越多的電子資源,及電子書的產生,目前這些廠商大多還是用

IP 限制的保護方式,來保護著作權,所以在使用上,如果沒有在 IP 的範圍內,就沒有辦法

取閱這一些電子資源,尤其,像是學術單位,政府機關,或是研究單位,通常訂閱了許多的電子資源

目前一般的開放的解法,就是裝 Squid ,或是其他 Open source 的 Proxy,但是管理,

沒有這麼方便,或是使用上比較沒有彈性,或是使用商用的 Porxy 軟體,像是 OCLC 的 EZproxy

但是報價非常驚人,所以小弟的朋友做了 Upass ,一個符合 Proxy 標準的商業 Proxy 實作,價格會比 EZproxy 來得實惠很多,不是用修改頁面 URL 的方式

有需求的可以參考,不用再忍受 EZproxy 高額的商業授權,及額外的更新訂購費用,一個不同於 EZproxy 的替代方案


and yes, Upass is written in Golang.

PS: 另外徵求代理商中
目前支援 GNU/Linux ,Unix Like 系統,單純 binary 安裝非常簡單

2014-05-18

DIY-簡易鋸台

最近假日,除了帶小孩子,有時間寫點程式

不然就是學做一些簡單的櫃子,或是想挑戰家具,我想我自己內心裡,還真的很多東西想做

合法的從鋼鐵人的衣服,掃地機器人,到自己的一張單人沙發,DIY 清單真的是,快變成願望清單

不知道,到底,能不能做出來

工欲善其事,必先利其器

木工的基礎,除了手鋸外,不外乎就是用鋸台來做相對比較精準的切割

另外空間也是很重要的因素,我的另一半,絕對是難容我在家裡放一個鋸台

為了家庭的和諧,我們是一定要吞下去的,所以只好想簡單好用的鋸台怎麼做

目前膽子很小,只敢操作,線鋸機,基本上設計,就是用像是倒裝縫紉機的原理

直接看圖,比較清楚,基本上就是把線鋸機,用掛的方式放在桌面上,然後,上面的木條切一條溝,一半固定鋸片用
其他,看圖應該就能了解,切割精準多了,鋸片不會歪斜,不過,還是圓鋸機才是王道,快很多





2014-05-11

房地產之一家一戶

老子,說的無為而治,真是不簡單

現在的政府官員,只要說要執行什麼,做些什麼

往往可以看出,這些官員愚蠢的程度,到了令人憂心的程度,最近的一個家庭,一戶住家的政策

超過一戶,就加稅,又是一個假打房之名,行加稅之實的作法

我說個範例,大家隨便聽聽

某某郭老闆,住在帝寶,他是一戶,好幾個億,無名氏,蛋頭先生,住在台東,不到幾坪的綺零地,蓋個小宅,總價不到 200萬,另外有個一樓沒幾坪的小店面,讓他平常可以賣點小點心給觀光客,
賺點錢養家,結果這一個台東的蛋頭先生,要加稅

真正房價漲的不合理的地方,就哪幾都,劇本都是政府自己在自導自演,說要什麼輕軌,捷運共構,或是三鐵交會啦

或是學齡前兒童,生活補助啦,就是所有好康的都有政府全力拉抬,誰不往哪裡擠

結果要全台的窮鄉僻壤,都要跟著一起陪葬,先讓人民恨哪些有房子的人,然後,才個個拿來殺,像是在搶錢一樣
會買房子,我想很多人是根本不相信新台幣吧,覺得存這個政府的新台幣,可能到頭,都是假的

身上有錢的人沒有罪吧,可怕的是,這一個政府,一直這樣來操作,然後想出的對策,可以向窮人要更多錢,然後
窮人鼓掌叫好,卻不自知

以後,可能看到,有超過一個靈骨塔,要加稅,也不要太驚訝。

說真的真的要抒發情緒,我下面大概要打幾百個幹

PS: 以上是新聞,有關公眾利益,可受大眾公評之事,亦再憲法言論自由的保護下,
另往這一個網址,是在美國註冊的,主要傳達的對象,完全是作者自己情緒的抒發工具,這是個人 Blog
我的日記

2014-04-24

你真的很討厭北台灣的話

你真的很討厭北台灣的話,就支持核電吧

不過奉勸你,大家都在同一條船上,不要意氣用事,是人的話,真的要反核呀

今天讓我來告訴你,為什麼核四是一場騙局

以下,您就當是聽故事吧,我開始說了

我的姊夫,是一個從小在漁村長大的小孩,三十幾年前,大家不太愛考公家機關(現在熱門呀), 他一退伍就進了

台電,現在則是因為薪水太高,看看自己小孩一個月,只賺兩三萬,心裡不捨,心疼小孩辛苦,也就不願退休,
繼續在台電打拼,剛好,核四建廠,重頭到尾,他都有參與,姊夫是18 項武藝都會的基層員工。

每回過年過節餐聚時,我總是半開玩笑的問他,核四會運轉嗎? 他總是跟我說,一定不會,他說,先前停工
很多東西都壞了,這一個工程,由外包,到內部人員,每一個建造他的人,都是抱著,以後不會用啦,這樣的心態在做

你覺得這樣的東西能用嗎?

幹,聽完你還覺得能用,跟自殺有什麼兩樣

反正,以後有發生的時候,絕對是沒有任何人有責任
了不起,全國,降個半旗,把影響區域,封存,對鄰國說一下抱歉
對岸,可能還可以用這個名義,來干預,或是入侵

這樣簡單的故事,你再不懂,我再說另一個故事給你

假如我是製造飛機的工程師,飛機百分之一百都是我做的,我老闆,負責業務,對外面的人說,我們家的飛機很好,很安全,

可是他只有用嘴巴做事,其他的他都不懂,也沒做過,我在做飛機的時候,心態就是,這一台展示用的,絕對沒有一天會飛上

天,用來載人,現在這一台飛機,請你來搭乘,以後,你的世世代代子孫,也要坐這一台,你坐不坐 ?

故事說完了

叫我姊夫出來證實,他應該是不會鳥我,畢竟台電的福利對他,待了這麼多年,真是捨不得,是我也做不到

就拜託大家了,真的不能運轉,當做是發發慈悲心,當是救人

想想,就算是,你沒有事,也不保證,你的後代沒有事呀



2014-04-23

政府太好做了

機車勒,這個政府,反核四,就說會沒電,要漲電價

反高房價,就要漲稅金,

先挑起矛盾,然後,什麼都漲價來解決就對了,這麼好做,我來就好,要你幹嘛

您老師,沒有教你,我來教,

你以為大家,要往北市,幹,還不是因為,所有的機會都在這裡呀,

你今天,到了,環境優美,空氣新鮮,交通方便,薪資優渥的地方,還可以年收輕易破百,誰要來台北

不是台北房價不給年輕人機會

是政府眼裡只有一個台北,不給其他地方機會

2014-04-13

Python string isalpha


筆記一下

今天追蹤一個問題

程式裡用了類似 u"中文".isalpah() 的比較方式

實際上的中文,是由資料庫傳回的值

是我太肉腳,還是這一個 function 命名的原意不明

這樣會傳回 True

參考文件 https://docs.python.org/3.4/library/stdtypes.html#string-methods


我目前 workaround

u"中文".encode("utf8").isalpha()



PS: 所有該死的事,都是起源於 Workaround

2014-03-27

說點輕鬆一點的 Golang 之 go


最近,有個小玩具,用 Golang 來實作

覺得用來寫網路服務,渾然天成,很直覺,超自然的

尤其覺得 Golang 裡的 goroutines 和 channel 的合作無間

想起以前,寫 process 及 threading 有點相見恨晚

語法 go 更是有趣,我把它翻譯成 `去吧` ,可以讓你自己決定,哪些工
作 `去吧` `衝呀` 的感覺

go DoSomething()

有夠直白,寫高併發應用,有種千軍萬馬期發的感覺

寫起來,還蠻有趣的喔

你 go 了嗎?

服不服

今天有一個九A的學者,說他支持服貿,他說經濟會更好,開放才是王道,年輕人不要

怕和世界競爭

我真是很想罵彰化,事情往往不是單方面的思考,請多想一些,白痴也知道,經濟比較好呀

廣告,也有每天講呀,基本上就是,阿共說,來啦,快一點啦,保證讚的

烏克蘭的例子這麼近,怎麼天底下有這麼天真的人,俄羅斯送的天然氣,你以為是免費送的喔

出來混,遲早要還,這麼簡單的道理,就是有人不懂

你今天,越是依賴人家,以後,就是看人家臉色過日子

老共在經濟上面的所謂的讓利,要這樣看,也許經濟損失每年 100 E,但是統一台灣進度向前推進,
50個百分比,快要可以像烏克蘭一要辦,併向俄羅斯的公投了

真的好天真,今天你依賴人家,明天翻臉不認,你要去哪裡,你的下一代要去哪裡

舉個例子,明天,老共說,請所有在大陸的臺胞回台灣,現在大陸,容不下你們,然後勒



幹,怕的是這個,又不是可以多賺幾個錢的問題,人家賺的是你的依賴度,可不可以不要這麼天真
,搞到你或是你的後代有一天,沒有老共會死,哪還有什麼存在的價值,就成了,烏克蘭的俄羅斯了

可以的話,我也想每天喂你吃毒品,以後,你沒有我都不行

2014-03-26

2014-03-24

國民黨在台消失

最近全國最重要的事,相信大家都清楚

"讓利",天底下有這麼好的事情,我想,怎麼也輪不到台灣才對,這個中國國民黨,越看越像是中國共產黨才對

要對敵國,幾乎完全的開放,不是自找死路,什麼才是自找死路,要統一也沒看過這麼急的

要開放,你不對日本開放,不對美國開放,也可以對餓螺螄開放,其實日本曾經統治台灣一段時間

美國也曾經是我們的忠實盟友

這一代的同學算是有擔當了,知道大便不要吞下去

2014-03-14

新的鍵盤 MINILA AIR

身為一個爸爸,老宅,一直以來都是打號稱無聲卻吵死人的台灣軸,

這一次因為要找一支安靜一點,夜深人靜時不會吵人的 CM 台灣製 Cherry 紅軸,真的是一波多折

PCHOME 完售

樂天的點數下來後,我開心的刷下去後,店家,說沒貨

請同事回新竹時去他同學號稱備貨非常充足的資訊行買,電話那一端,也是傳回已全數售完

最後再找露天賣家下標後,寄來的是另一把,還對我說,這一把是後繼的款式,算是一樣的,

在我很快速回答說,鍵位不同,鍵數不同,產地不同,完全不同,賣家也就退錢了


怎奈,找了半天,回覆我的都是已經絕版的消息,果然,好東西是不會等人的
既然無緣,也就沒有什麼堅持了

最後,因為絕版的買不到了,所以嘗鮮一下,敗了一把藍芽的,桌子以後會乾淨一點,鍵位

慢慢在習慣

金鍵盤老闆包裝防護非常好

還可以幫我免費加注音

反正,我不會在意鍵盤上面的字,這樣別人也可以用



PS: 記錄一下,以後再回來補一下心得,目前打起來還不賴啦

把 DigitalOcean 的 VPS 移到 Singapore 資料中心

今天利用一點時間把原本在 DigitalOcean 美西的 VPS 轉移到新加坡

的資料中心,速度還不錯

轉移很簡單,先把 VPS 關機,然後做 snapshot 後,把 image 轉移到新加坡資料中心後

就可以由轉移過去的 snapshot 建立 droplet 了


這是新加坡資料中心測試的頁面 http://speedtest-sgp1.digitalocean.com/

有興趣的朋友可以試試

2014-02-23

ionicframework




整合 angularjscordova ,用 html5 開發

資料類 App 好用的 framework ,裡面的 UI 非常不錯

有興趣的人可以看看
http://ionicframework.com/

2014-02-14

房屋整修-漏電斷路器

未來打算換一間稍微大一點點的房子,最近開始整理
筆記一下心得

此文用意,主要說明正確安全的觀念,有危險性的動作,請交給專業技師處理

斷路器,請見 斷路器

今天要說的是漏電斷路器

漏電斷路器,就是在電箱裡面,上面有一個 test 按鈕的斷路器,或是家中

有裝儲熱型熱水器,另外加裝的漏電斷路器

也就是一般的斷路器,加上漏電斷路的功能,他的原理,就是利用獨立迴路裡,流出電流,
等於流入電流的原理 (這一個迴路要獨立,水電不能亂貪方便,亂打線)

最大的好處就是安全 (鄉親呀,安全無價)

電氣法規裡也有規定,離水 1.8 公尺內的電路,必須使用漏電斷路的迴路
也就是,一般的浴室,廚房,洗衣間等等,都需要用漏段斷路器

避免漏電時觸電,發生危險,因為成本高,或是怕麻煩,訪間很多水電,都會跟你說,裝一般的就好
不會常跳電,其實那是不對的,會跳電的原因,有可能是漏電斷路器壞了,或是迴路有漏電的情形,需要查明

才能確保居家的安全

整理中電箱



電箱接口是插入式的


國內大廠士林電機 NVB-50L 的漏電斷電器 (我的電箱要用 NVP-50L 插入式的,這是我很瞎買錯的)




參考資料

【我很後悔new】因為這些原因,不能怪師傅不裝漏電斷路器

YOUTUBE 影片