2019年5月18日 星期六

[書] 通往財富自由之路:教你如何變得更有價值!早晚有一天,可以不再為了生活出售自己的時間

通往財富自由之路

買了好一陣子,當初是一位剛加入幣圈的同輩想找我參加,而後反而聊到了這本書。當時聊完沒多久就買了,擺了半年才翻開。這本書的確滿值得翻一下,原本覺得書名很俗氣,翻了一下才知道這是作者 growth hack 手段:取個誘人的名字。

這本書對我來說,提點到 "專注力 > 時間 > 金錢" ,的確是當頭棒喝,隨著工作能力的增加,有留意到 "時間>金錢" 的概念,像是在台北市究竟要買車跟搭計程車的議題,不只養車位很貴,連找停車位都很耗時。但專注力真的被漠視了,它也能擴展到不要去跟八卦、更關注在自身成長等等。像前陣子就滿常隨別人一起抱怨些事,這些都很浪費青春的 Orz

此外,有提到多往未來看幾眼,不要短視。包含不要跟現在/過去的自己拼命、不需跟風,努力朝著未來望望,想想未來想變成什麼樣的人。書的後半段倒是呼應起書名,再講一點投資策略,這比我覺得很難評論對錯(例如單純挑大公司投資),但仍呼應著拿著錢買別人的時間是最低成本(時間 > 金錢),而此書撰寫時恰逢比特幣盛起,所以也有點沾到鋒頭,以作者抱著不放的思維,大概推論持數十萬個比特幣:比特币首富李笑来,手里到底有多少个比特币?李笑来通过比特币到底赚了多少钱?

無論如何,還是把重心擺重在個人成長,也提及未來甭想著退休,那個老一輩的思維 XD

2019年5月5日 星期日

服務流量變現和數據追蹤儀表板 - 透過 Google Adsense 和 Google Analytics 建置免費的儀表板

AnalyticsXAdsense

至今執行了一年半的流量變現任務,也進入了成長瓶頸。進入成長瓶頸時,會越來越依賴數據的推敲跟追蹤。雖然翻著 GA 跟 Adsense 報表也很夠用,但如果要追蹤的項目超過二十項時,就會非常累了,非常耗時,便開始適合建置 Dashboard 一眼觀看。

好在一年前已經有想好規則,但一直沒空製作儀表板,這週末剛好擠出了點時間,就把這些想法筆記也產出個雛形:github.com/changyy/TrackingLibrary

需求:
  • 想要追蹤新舊使用者類型的價值(value per person),究竟我們可以從單一使用者身上挖出多少礦呢?
  • 想要細膩到小小功能的變現能力
  • 能否讓 GA 數據跟 Adsense 數據自動匹配
推敲方式:
  • 讓新舊使用者觀看到的廣告單元是不一樣的
  • 讓想追蹤的小小功能的廣告單元是不一樣的
  • 在 GA 數據裡,採用 event ,並且對 event report 進行設計;在 Adsense 則是在廣告名稱進行設計。後續就可以依據撈出來的資料,自動組出對應的報表。
最後產出的規則:

有兩個服務 Service1, Service2 ,其中 Service 1 共有 1 個功能,而 Service 2 有 3 個功能。假設 Service 2 的第三個功能還有兩個子功能。

Service1
Function1 [GA event report = (ec="pageview",ea="Service1",el="Function1")]
Service2
Function1 [GA event report = (ec="pageview",ea="Service2",el="Function1")]
Function2 [GA event report = (ec="pageview",ea="Service2",el="Function2")]
Function3 [GA event report = (ec="pageview",ea="Service3",el="Function3")]
SubFunction1
Google Analytics event = (ec="pageview",ea="Service3",el="Function3,SubFunction1")
Google Adsense AdName =
New User 觀看 = "[#]NU,Service2,Function3,SubFunction1"
Old User 觀看 = "[#]OU,Service2,Function3,SubFunction1"
SubFunction2 [GA event report = (ec="pageview",ea="Service3",el="Function3,SubFunction2")]


上述的高度結構後,也不是沒有缺點的,缺點就是 Adsense 的廣告單元會爆多,例如自己經手製作的廣告單元就高達兩百個,如某個想關注服務其底下共有 80 個廣告單元時,這時靠 Adsense 內建的報表,篩選了 80 個廣告單元時,這時報表很容易產不出來的。而用 GA 觀看時,因為不是用常見的網頁 ga pageview 的方式,而是靠 ga event 查看,這時也會有些不方便。上述更別說還有對應的服務開發時,需要設置規則,讓新舊使用者、不同子服務觀看不同的廣告單元和 GA event report。

最後,則是 Dashboard 要產生時,需要呼叫多次 adsense api 跟 analytics api ,而免費版使用要留意會不會踩到額度限制。

其他資訊 - 關於 TrackingLibrary 的使用:
  1. 先將程式碼中 ga_adsense_rule.json 複製至 dev.json ,程式判斷出 dev.json 就會以此為優先處理
  2. 先建立一個 Google Cloud Project,來使用 Google Adsense / Google Analytics API。
    • 切換到 "API 與服務" -> 憑證 -> OAuth 同意畫面
      • 應用程式名稱:Tracking
      • 已授權網域:changyy.org
    • 切換到 "API 與服務" -> 憑證 -> 建立憑證
      • OAuth 用戶端 ID
        • 網路應用程式:TrackingDashboard
        • 已授權的 JavaScript 來源:http://tracking.changyy.org:8000
        • 已授權的重新導向 URI:http://tracking.changyy.org:8000
    • 取得 "這是您的用戶端 ID" 並更新在 dev.json
      • 將各個 project -> google_api_project 欄位更新成 XXXXXX.apps.googleusercontent.com 即可
  3. 開啟 Google Adsense / Google Analytics API
    • API和服務 -> 資訊主頁 -> 啟用 API和服務
      • 搜尋 "Analytics API" 以及點擊啟用
      • 搜尋 "AdSense Management API" 以及點擊啟用
  4. 切換至程式碼,編輯 dev.json ,建置想要關注的 GA 專案,例如單純複製 GA only 專案內容,只修改 project -> analytics -> ga_profile_id 欄位即可
  5. 切換到專案 php/web 位置,並運行本地端 web server ,即可瀏覽
    • $ cd TrackingLibrary/php/web
    • $ php -S tracking.changyy.org:8000 ../tools/ci-routing.php
    • $ open "http://tracking.changyy.org:8000/dashboard"

2019年4月8日 星期一

閒聊閒書

閒書

其實,我不怎買書的,更別說看資訊領域以外的書籍 XD 但近幾年反而開始買了一堆書,開始當作收藏吧。這趟返鄉後,把老家書架上的書籍列了列,拍個照記錄。這些對我而言,是僅不到一半的閒書,這是之前翻完了就放到老家的。這些非本業的書,其實也提醒我不少事情的,實在感謝。

大學失落時,學弟送了我一本「個性影響一生的成敗」,看完後帶回家時,不久後就被奇利咬壞 XD 其實我也想不起那本書在說什麼,看看網路上的目錄,其實跟我這一兩年翻的書目差不多,但我真的翻完就忘了 ...

幾年前聽了創業家兄弟的分享,開始買了「鐵飯碗,有什麼了不起?」翻翻,這週又翻一下複習,果真依舊有 fu,去年則是又買了「成功,就是要快速砍掉重練」,只是這類書籍,閱讀後的心聲,就像創業圈常說的:別人的成功大多是不可複製的,很多場景是很難使出其招數,真的要天時地利人和的。所以大部分對我而都像在聽八卦,聽完就不小心忘記了

其他本業書籍大概就「砍掉重練:30歲開始也不遲的工作術」等,還有一篇在 2014 年寫的草稿一直沒寫完,那是「Startup 2.0 工程師創業手冊」讀後心得,這類書籍主要是著重在自己/公司角度的福利爭取,如股份比例等。這一兩年的大概就「創業就是要細分壟斷」、「給力」、「電商 Zero to One:從0到1」等等,偏向我想多了解的項目,如電商、如企業文化的培養、營運策略等等。的確很醒腦,像有時不夠貪心,享受著小確幸,這類書會當頭棒喝地,告訴自己要珍惜目前的優勢,要趁勢而為。

只是,對我深刻的書籍,反而都是囧星人的說書,像「你要如何衡量你的人生」,接著再翻一下「斜槓人生」、「刻意練習」等等,但那種「被討厭的勇氣」、「這輩子,只能這樣嗎?你是自己最大的敵人」則是還沒翻完 XD 讓我想起以前在工研院圖書館借的書「師父:那些我在課堂外學會的本事」,回歸到原理屬性的意念是令人深刻的。

我想,大概會想推薦別人翻翻看「你要如何衡量你的人生」和「刻意練習」,但刻意練習其實看沒多久就可以了解其概念,後面越看越痛苦,因為例子很多 XD

不知道這種靠緣分翻書的情境,還會怎樣走下去呢。特別是網路上已經有看完的訊息,光個 PTT 八卦版就許多知識了。

2019年4月6日 星期六

[書] 刻意練習 讀後感

刻意練習

近一兩年的書籍閱讀,起因算是囧星人,雖然他已因個人事件而隱居,但仍感謝他說書,讓我有幸可以多多認識一些書籍。「刻意練習」這本書,買了快一年終於把它看完了,去年翻一下就停住。在這之前我則是看過「斜槓青年」,從中習到一個觀點:『沒有強度的練習,只是徒勞無功。』而這個念頭在我翻完「斜槓青年」幾個月後就差不多忘了 XD 處於略懂還不夠身體力行,但一翻完「刻意練習」後,整個念頭強度又再度襲來。

「刻意練習」很不錯,儘管整本書可能翻了 1/3 就知道他要提的概念(後面就必須靠意志力才能把它看完?)。在這個時間點對我就是醍醐灌頂,例如工作上該怎樣想想如何推進同事們的成長、家庭上要想想如何教育小孩,對自己而言,則是要找方式加強進步強度,像是 side project 挑選或是健身強度等等。如果在創業的路上,那刻意練習提到的新法也適用於公司的成長。

這本書提到了幾個重要的觀念:
  • 每個專家都是透過大量的練習才獲得專業的水準
  • 天賦只是入門門檻低了點,能夠快速得到成果,但後續都還是靠大量練習才得以精進
  • 有強度的練習,人人都可以有一定的水準
  • 如何有效練習?找老師/換環境!沒老師該怎辦?專注投入、意見回饋和解決問題
讓我回想起一些成長過程,像是國中發現自己在物理課的理解不差,進而轉化成一種積極的態度,我把著當作小小的天賦,使得自己有動力去把其他非擅長的科目補起來(大學考試時,物理表現卻極差 XD);碩班時期,因老闆個性,有了另類的教育過程,透過大量寫程式/重複造輪學習資訊技能,這個過程反而被教育成不迷戀 library/framework 甚至 paper,凡事多了解原理即可,不要害怕自己設計不出來,更不要迷戀大型專案。

我記得剛出社會很刻意的寫寫 blog ,當時只是無聊想知道能不能賺廣告費(事實上很低),但反而長出了不少方向,像是文章標題該怎樣訂才容易被找到(SEO)、每次寫筆記等於反芻學習到的資訊、方便自己以後快速找到工作筆記等等,當然也有意外的事件,像是有人會留言問要不要接外包、要不要加入新創團隊、要不要出書等等,比較好玩的是在研發單位時,寫了很多 AWS 功能簡介,結果兩三年後在業界的同學,反而看著自己的 blog 去認識 AWS 服務,對他可省去花時間親自體驗,對我則是出現莫名好玩的關聯,可以哈拉幾句。

幾年前有回學校分享工作心得,我反而拿寫 blog 這個小題目分享了一下,要能找到一個閉環來持續動作,其實這些過程就跟「斜槓青年」和「刻意練習」提到的概念非常近似,就是要找到有效的成長方式,要找到一個動力/念頭去支持。

此外,書中提到學鋼琴/學網球過程是個很讚的案例,一開始只是挑離家近的地方學習,等到技能進展到一個水準後,想要更精進時,便開始找專家/教練來教導,這時就不會是挑離家近了,甚至可能進行搬遷。更貼近一點的案例就是台北的小學,一堆家長為了讓小孩能夠念明星學校,開始遷戶籍 XD 導致學校為了處理這種問題開始要求入學前幾年就必須在某某里,甚至要求家長小孩要一起在該里才行。更誇張一點的是中學也這樣搞,搞得變成小孩出生沒多久,戶籍就得該在學區才得以拿到入學的資格門票。

回過頭來,在工作上我也面臨到"沒有老師"的地步,再精進只有幾招:自己找題目衝刺或換個環境。其中同輩通常是挑選換環境,像是加入有規模的外商(主因是外商福利誘人,導致強者群聚),這效率是驚人的。但如果公司還有舞台,那就好好珍惜,透過有效的回饋法來成長吧!

另外,如果從資方角度來看待目標達成率時,會讓人想起「給力」那本書,就為了追求目標達成效率,寧願再聘適合的新人才,而不願等同事成長(其實就是立馬辭退對方)。站在資方角度時,不需要自己去拼、花時間,而是反過來買別人的時間!若這個人才可以有對應的生產力時,給予 1.5 倍甚至多倍薪水都是值得的!反之不是人才時,花再多時間都是無益的。雖然殘忍,但資方為求生存也只能這樣下去,而勞資雙方的妥協保障,就淪落到基本的法規守則了,辭退時,是盡可能是優退路線。

最後,我還是推薦可以翻翻「刻意練習」這本書,而「斜槓青年」可以當做個入門(比較偏八卦、炫技),而「刻意練習」則是稍微偏向方法論,雖然書中的大量例子可能會讓人翻沒多久就沒興趣看完,但他的確也是刻意練習的招數,持續洗腦加深印象 XD

2019年4月4日 星期四

[macOS] 製作 macOS High sierra USB 安裝碟 @ macOS 10.13.6

build macOS USB install 10.13

手上這台 Macbook Pro 已經無法安裝 macOS 10.14 了,正準備更換 SSD ,因此想先準備 USB 安裝碟時,發現竟然無法製作 Orz 透過官網教學文才找到 macOS 10.13 下載位置  ( https://itunes.apple.com/tw/app/macos-high-sierra/id1246284741?ls=1&mt=12 ) ,發現僅 15MB 的大小,執行指令時會看到以下錯誤訊息:

$ time sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/8GUSB/
/Applications/Install macOS High Sierra.app does not appear to be a valid OS installer application.


最後研究一下,原來要靠安裝流程,讓系統根目錄 macOS Install Data 會產生必要的資料,接著安裝過程下載完必須的軟體時,會停在要重開機的路上,這時就可以關閉安裝,並把必要的資料取出來使用。

$ tree /macOS\ Install\ Data/ ; sudo du -hd1 /macOS\ Install\ Data/
/macOS\ Install\ Data/
├── AppleDiagnostics.chunklist
├── AppleDiagnostics.dmg
├── BaseSystem.chunklist
├── BaseSystem.dmg
├── InstallESDDmg.pkg
├── InstallInfo.plist
├── Locked\ Files
└── index.sproduct

1 directory, 7 files
 20K /macOS Install Data//Locked Files
4.9G /macOS Install Data/


接著可透過"顯示套件"的方式,在 Install macOS High Sierra.app 內的 Contents 中,建立 SharedSupport 目錄,並把 macOS Install Data 複製進去:

$ tree /Applications/Install\ macOS\ High\ Sierra.app/Contents/SharedSupport
/Applications/Install\ macOS\ High\ Sierra.app/Contents/SharedSupport
├── AppleDiagnostics.chunklist
├── AppleDiagnostics.dmg
├── BaseSystem.chunklist
├── BaseSystem.dmg
├── InstallESDDmg.pkg
├── InstallInfo.plist
└── index.sproduct

0 directories, 7 files


就可以製作 USB 安裝碟:

$ time sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/8GUSB/
Password:
Ready to start.
To continue we need to erase the volume at /Volumes/8GUSB/.
If you wish to continue type (Y) then press return: Y


Updated @ 2019/04/06:

雖說可以順利製作出開機碟,但發現該 USB 無法完成 10.13.6 作業系統的安裝。推論是系統安裝流程已被修改的關係,應當是系統安裝時,會要求要安裝的系統碟的根目錄上,配有 "/macOS Install Data/" 資料,才能重開機後完成安裝流程。

以上並未驗證 :P 因為這次重安裝是為了把筆電換上新的 SSD ,因此單純先把原本的系統碟透過外接方式重啟,並跑正常的系統安裝流程,安置在新的 SSD ,而安裝過程就完全不靠 USB 開機碟。

或許把 SharedSupport 複製一份到新 SSD 的 "/macOS Install Data/" 有可能就可以搞定?!