2019年7月3日 星期三

公司營運資方人力成本 筆記

公司營運人力成本級距

最近證交所公布了 "發布國內上市公司106年度「平均員工薪資費用」排序前50名及後50名資訊" ,引起了一陣騷動,各大媒體也一直拿來報,但很少人仔細去看證交所的那篇文章,覺得滿有意思的,筆記一下:
發布國內上市公司106年度「平均員工薪資費用」排序前50名及後50名資訊

經統計,844家國內上市公司106年度公告之財務報告,稅前淨利合計2兆5,764億元,較105年度成長3,599億元(增幅16.24%),營運有獲利者計697家(占比82.58%);106年度員工福利費用(包括薪資、勞健保、退休金及其他)總額計1兆3,753億元,較105年度之1兆3,065億元增加5.27%,106年度之總人均員工福利費用112.11萬元較105年度之108.93萬元增加2.92%;另106年度員工薪資費用總額計1兆1,450億元(占員工福利費用比重約83.25%),員工人數合計約123萬人,總人均年薪約93萬元。
有關國內上市公司106年度平均員工薪資費用之統計情形說明如下:
一、平均員工薪資費用「排序前50名」之公司名單(依金額高至低排序)詳附件一:http://www.twse.com.tw/downloads/zh/about/press_room/doc/news-20180620001.xlsx
(一)排序前50名公司之員工年薪平均約144.3萬元至287.5萬元,營運有獲利者計48家公司(占比96%)。
(二)以產業別分析,屬電子產業者計38家公司(占比76%,其中半導體業者計19家),顯示其產業競爭力強、較有能力或意願將獲利回饋員工。
(三)排序前50名公司中,計19家公司之員工薪資費用包含依股份基礎給付(如員工認股權、限制權利新股、買回股份轉讓予員工等)之評價金額,其中電子業公司占16家,主係企業為延攬人才或獎酬員工所致
我一開始也以為那份薪資水準是基層人員的平均,雖說平均仍不如中位數準確(平均男女有一顆蛋蛋),但也有些參考價值,但仔細看 Excel 檔案後,發現那份是包含董事:
http://www.twse.com.tw/downloads/zh/about/press_room/doc/news-20180620001.xlsx 
資料來源及統計範圍說明:
(一) 就842家公告106年度財報之國內上市公司,參酌中小企業認定標準剔除員工人數未達100人之公司,並衡酌控股公司實際營運主體為各子公司,爰排除投資控股公司及金融控股公司後,以687家國內上市公司為統計範圍。
(二) 依前述公司106年度(個體、個別)財務報告附註揭露之員工薪資費用及員工人數,核計「平均員工薪資費用」算術平均數後進行排序。
(三) 「員工」可能以全職、兼職、永久、不定時或臨時之方式提供服務予企業,員工包括董事及其他管理人員。各公司財報附註揭露之員工包括董事、經理人、全職員工及臨時工等,惟不包含派遣或業務承攬外包人員。
(四) 「員工薪資費用」包括薪資、獎金、紅利等,亦包含依股份基礎給付評價之金額,暨給付董事之報酬、酬勞。
所以,只要包含董事管理層福利,參考價值就低不少 Orz 只能期待那篇證交所文章所提:
綜上,為精進上市公司之員工薪酬統計作業,使其更具可比較性、合理性、客觀性,經參酌金管會107年4月24日發布「新版公司治理藍圖」將循序推動上市公司揭露員工薪酬資訊之計畫項目(非擔任主管職務之員工人數及員工薪酬中位數、平均數),及金管會發布各業別「財務報告編製準則」規定之員工人數及員工福利費用性質別資訊(預告自107年度財務報告起將單獨揭露「董事酬金」及「未兼任員工之董事人數」),暨參考行政院主計總處之薪資統計重要名詞定義(如:受僱之全時員工、總薪資中位數等),證交所將配合增訂相關資訊申報項目及定義,並研議低薪公司之篩選標準,暨洽請渠等公司說明經營績效與員工薪酬之關聯性與合理性,期能以市場機制促使上市公司訂定合理之員工報酬,落實公司治理與企業社會責任。
盡快推出 "非擔任主管職務之員工人數及員工薪酬中位數、平均數" ,這個才是有幫助的資訊。

後來,跟朋友哈拉一陣子,跑去研究第二名的和泰汽車,筆記一下 “公司營運人力成本” 的容易忽略的項目:

  • 年薪用 14 個月、12個月的差異
  • 年薪用獎金制填補

這邊就簡化成年薪 14個月 跟 12個月 的差別筆記:

  • 首先,公司需要負擔員工的勞保(級距)、健保(級距)、退休金(級距6%) 的人力成本,這是最基本的法規
  • 勞保級距對於高科技行業很容易就進入到 Max 值,當月薪超過 45,800 後,就統一繳固定額度
  • 健保的級距很廣,可以到月薪18萬
  • 退休金的級距也廣,但只有到月薪15萬,依據對應級距提播 6%

在網路上可以看到有位和泰汽車的業務,說月薪四萬,但加了獎金可達年薪九十萬。這個現象,若把年薪拆分成12個月月薪,那月薪應當落在七萬五。

在以上的條件上製作表格,粗略可以得知,若公司聘人落在 20 人時,用月薪4萬+年獎金制度,會比純月薪制度省了快一個人力成本出來,也就是一樣的支出預算,用獎金制度可以多聘請一人。

公司營運人力成本範例

參考資料:

2019年6月26日 星期三

Android 開發筆記 - 添加 assets 資源 (resource://android/assets 目錄)

AndroidAssetsFolder02

每次都忘,紀錄一下:
  1. 在 Android Studio 的 Project 位置,點擊 app 目錄,接著按右鍵,選 New -> Folder -> Assets Folder,用預設 main 中即可
  2. 接著 Android Studio 就會自動長出 assets 目錄,在路徑上為 app/src/main/assets/ 
AndroidAssetsFolder01

2019年6月18日 星期二

Google API 筆記 - 使用 Google OAuth 2.0 與 IdToken 和 People API 取得 Email address

大概在 2015 年開發的 Google OAuth2 登入流程 已經需要更新了。當初一直靠 Google Plus API 取得用戶的 Email (GMail) 資訊,結果 Google+ APIs 已經在 2019/03/07 領便當了
https://developers.google.com/+/integrations-shutdown
停用 Google+ 整合服務
2019 年 3 月 7 日起,所有網站上與行動應用程式中的 Google+ 整合功能將全部停止運作。詳細情形如下:
網路整合 (例如外掛程式與互動訊息) 將停止提供服務。如果網站擁有者未採取任何行動,網站的版面配置和/或功能可能會受到影響。
行動應用程式整合 (例如 +1 按鈕、分享到 Google+ 與應用程式活動) 將停止運作。
我們將從 1 月下旬起逐漸停用相關功能。最早從 2019 年 1 月 29 日起,網站與行動應用程式整合功能會偶爾發生失敗的情形。
我們強烈建議開發人員儘快從其網站上和/或行動應用程式中移除相關程式碼。我們也將陸續停用 Google+ API 和 Google+ 登入功能。詳情請參閱這份額外
通知。
雖然我們即將停用 Google+ 一般使用者版本,但我們同時致力為企業機構 提供 Google+ 服務。Google+ 即將換上全新風貌並加入新功能,如需詳細資訊, 請參閱這篇網誌文章
原先是靠這 Google Plus API 取得 Email address:

<?php
$profile_ret = @json_decode(file_get_contents('https://www.googleapis.com/plus/v1/people/me?'.http_build_query( array(
'access_token' => $access_token,
))), true);


現在就改靠 People API:https://developers.google.com/people/api/rest/v1/people/get

<?php
$profile_ret =  @json_decode(file_get_contents('https://people.googleapis.com/v1/people/me?'.http_build_query( array(
'personFields' => 'names,nicknames,emailAddresses,coverPhotos,photos',
'access_token' => $access_token,
))), true);


在 2019 年 06 月,這隻 Google Plus api : https://www.googleapis.com/plus/v1/people/me 仍正常工作著,說不定它就真的是一直從 People API 服務著。

除此之外,原先 Google OAuth2 已經推薦改用 IdToken 進行認證,若是走 IdToken 時,可以在當下就拿到 Email Address 了:

<?php

require_once 'vendor/autoload.php';

$client = new Google_Client();
$client->setClientId($oauth_project_client_id);
$client->setClientSecret($oauth_project_secret_key);
$client->setAccessType("offline");
$client->addScope(['email','profile']);
$client->setRedirectUri($oauth_callback_url);

$token = $client->fetchAccessTokenWithAuthCode($code);
$token_data = $client->verifyIdToken();

$uid = $token_data['sub'];
$email = isset($token_data['email_verified']) && $token_data['email_verified'] ?$token_data['email'] : NULL;


如此就搞定取得用戶 Email address 的項目了!

其他筆記:

$ curl -s 'https://people.googleapis.com/v1/people/me?personFields=names%2Cnicknames%2CemailAddresses%2CcoverPhotos&access_token=USER_ACCESS_TOKEN'
{
  "resourceName": "people/UID",
  "etag": "XXXXXXXXXXXX",
  "names": [
    {
      "metadata": {
        "primary": true,
        "source": {
          "type": "PROFILE",
          "id": "UID"
        }
      },
      "displayName": "NICKNAME",
      "familyName": "LAST_NAME",
      "givenName": "FIRST_NAME",
      "displayNameLastFirst": "LAST_NAME, FIRST_NAME"
    }
  ],
  "coverPhotos": [
    {
      "metadata": {
        "primary": true,
        "source": {
          "type": "PROFILE",
          "id": "UID"
        }
      },
      "url": "https://XXX.googleusercontent.com/cXXXXXXX",
      "default": true
    }
  ],
  "emailAddresses": [
    {
      "metadata": {
        "primary": true,
        "verified": true,
        "source": {
          "type": "ACCOUNT",
          "id": "UID"
        }
      },
      "value": "[email protected]"
    }
  ]
}

2019年6月15日 星期六

透過 BuyAndShip 購買 Amazon JP 的 Kindle Paperwhite 完整教學

Kindle Paperwhite

大概十年前,在工作上也算半隻腳踏入電子書領域,那時已經拿著幾台 Kindle 把玩,但最後投入了 iPad 懷抱 XD 在 2010 買了 iPad,沒想到 2019 年終於買一台 Kindle 來用用。這是台 Amazon JP 牌的 Kindle ,預設的商城是 Amazon JP。

事隔 10 年,拿到 Kindle 時,真的覺得很小台。記得 10 年前還沒這麼小?可能是當時有實體 keyboard 吧。長大概是兩張名片長,寬是兩張名片寬再多一點。

Kindle Paperwhite 02

這次是第一使用 BuyAndShip 服務,因為 Amazon JP Kindle 只能送貨到日本當地,就試試看在日本有倉庫的 BuyAndShip 國際網購代運。他是香港的公司,在世界幾處有倉庫,像我想買 Amazon JP Kindle 且Amazon JP把此商品限定寄送日本當地時,就把收信人填寫 BuyAndShip 在日本倉庫的地址,收信人則帶有自己在 BuyAndShip 的帳號資訊(姓名 + BuyAndShip 代號)。當 BuyAndShip 日本倉庫收件後,會立即再運到香港。BuyAndShip 用戶在填集運單發貨到台灣宅配收工。

整個 BuyAndShip 是秤重計費的。最近 BuyAndShip 台灣有活動,新建帳戶有 120 點數(若透過推薦人,首次交易完14天後又可以再多 200 點數),一點代表一塊台幣,而 120 點足以支付一磅的商品,而 Kindle 是 0.8 磅!若 Amazon JP 寄送到日本當地免運,那就沒有其他費用要支出,全程只有 Amazon JP 刷卡費(+銀行信用卡國際費用),理論上境外商品進台灣還有關稅問題,但這段我不是很懂,BuyAndShip.com.tw 在官網上說台灣的關稅他都包了 XD

www.buyandship.com.tw

整個流程:

1. 註冊 BuyAndShip 帳號( 若想再拿額外 200 點數,請點此 https://www.buyandship.com.tw/invite/2793172439/ 並且在推薦欄位上寫 2793172439

BuyAndShip 推薦朋友

2. 完成帳號註冊後,可在海外倉庫地址上,取得倉庫資訊,網頁上都有範例請你填寫收件人的方式,以及倉庫地址等等:

BuyAndShip 海外倉庫地址

後續就是 Amazon JP 為例,在此就不多提 Amazon JP 帳號的註冊等(其實有些可以台灣收件的商品,就可以不用靠 BuyAndShip 了)。接著在 Amazon JP 購物時,就填寫寄送到 BuyAndShip 倉庫,主要是收件人和地址要有 BuyAndShip 個人代號。

接著 Amazon JP 發貨後,會顯示是靠哪家公司寄送以及貨品追蹤碼:

AmazonJP發貨追蹤碼資訊

如此剩下的事就都在 BuyAndShip 網站了!首先填寫申報貨件

01申報貨件

02申報貨件確認

03完成申報貨件

如此就完成第一階段的任務,接下來就是等待,等待貨品寄送到日本倉庫!這時我覺得 BuyAndShip 最方便的地方是每一步都會有狀態回報。當商品寄送到倉庫後,除了 Amazon JP 可以查看送貨情況外,當然 BuyAndShip 也會更新狀態,將貨件狀態更改為海外入庫,而後續也不用做什麼,會自動再轉成準備海外出庫,進入海外出庫後,下一步就是香港倉庫:

04海外入庫

05海外出庫

在香港倉庫時,就可以填寫轉運單,這時就會挑選要宅配回台灣哪裡了,在此步就會要付錢給 BuyAndShip 囉!由於創建帳號有 120 點,就在此用點數支付完畢:

06香港倉庫

填寫完就進入轉運單追蹤:

08準備發貨-黑貓宅配

一開始還不會有宅配的資訊,大概過個1~2天就會出現(此例使用黑貓宅急便),雖然有單號了,還是查不到(因為黑貓只是把寄貨單發到各處,不代表已經被黑貓收件),如此,可以什麼都不管了,只等著黑貓寄貨到家囉。

收到商品後,看起來 BuyAndShip 也沒拆開,直接在包一層就寄出去了!

BuyAndShip

拆開後都是 Amazon JP 的包裝封套,拆開後是 Amazon JP 對商品的保護:

Kindle Paperwhite 04

Kindle Paperwhite 05

經過這次試用 BuyAndShip 後,覺得令人不安的地方都有被 BuyAndShip 不斷更新貨品狀態而解決了!加上在首次使用靠 120 點數而不用付費,更是降低戒心 XD 往後若有不能直寄台灣的商品,就還會再來用用看的。目前比較搞不懂的還是進台灣的關稅問題,目前 BuyAndShip 都說會自行吸收處理,未免太佛心了吧 :P 但 BuyAndShip 有限制商品大小,應當也是種自保機制。

2019年6月2日 星期日

[書] Zero to One 再讀一次

Zero to One

當年跟風買了這本書,印象中是 2016 年。不過,一直有其他事中斷而沒看完。這次一口氣把它解決了!這其實不會很多,才兩百五十頁的量。

在看玩這本書之前,我反而先看完了很多類似概念的書籍,若要說最相關的大概屬這本吧
這次讀後感最深的反而是:
  • 真正處於優勢的公司,會刻意裝傻裝嫩來持續壟斷市場
  • 樂觀主義+確定的未來、樂觀主義+不確定的未來
    • 樂觀主義+確定的未來:會大膽衝刺嘗試新東西
    • 樂觀主義+不確定的未來:專研營運效率的最佳化(追求已知的 CP值)
  • 公司的經營上可分成所有權(股權)、經營權(日常營運)、控制權(督導公司),若有人身兼兩職就容易有紛爭
    • 新創:創辦人、員工、董事會
    • 草創:創辦人、創辦人、創投
  • 行銷與產品,兩者產出的品質都很重要
    • 第一次得知行銷重要剛好都是在 2014 年,在聽以前的老闆談論 OnePlus 興起的過程,另一個案例則是大自己一歲的學長成功透過眾籌推銷產品,拿了錢後才開始做產品!
    • 兩者重要的意義是,不能擺爛 XD 不能想靠行銷來掩飾掉產品的缺點,也不能因為自認產品好而就不花心力行銷
    • 行銷成本可細分成:病毒式行銷(1美金)、市場行銷(100美金)、死亡地帶、個人銷售(一萬美金)、複雜銷售(100萬美金),其中死亡地帶是指 100~10000 美金之間,很難評估該怎樣行銷的處境,屬於銷售瓶頸
  • 打造美好的未來
    • 歷史上的軌跡總是興衰交替著,這跟其他書籍分享的概念很像,如何抓到機會就看個人的本領了 XD
看完這本書後,心情比當年更沉靜許多,當年的情緒噴張,非常想衝出個大事業,但隨著經歷的增加,真的,一切都是默默努力順勢而來的成果,急不得的。像在李笑來的書裡就很明確地在談論要重視自身發展,也就是 “專注力 > 時間 > 金錢” 的概念。若擺在面對新興產業的發展時,就會明瞭此刻的無力是因為過去自己的能力並沒有相對應的累積或是舞台還沒出現,應當繼續專注自己的發展(想要的未來),不是到處跟風(包含從技術角度學了一卡車的新東西,某個角度來說,該成果無法在未來產生價值也是種時間浪費)

最後,這本書是在 2014 年 10 月出第一版的,書後面談論了幾間公司(都是 Paypal 幫),其中特斯拉的情況剛好很好玩,書裡提到他的盛況,但最近剛好是特斯拉的慘況 XD 股價跌回 2016 年了:

TSLA stock

2019年5月19日 星期日

Javascript 開發筆記 - 強制 HTTPS 瀏覽機制

HTTPS redirect

用 Blogger 搭配自訂網域時,可以靠 cloudflare 提供免費的 SSL 憑證,以此提供免費的 HTTPS 加密瀏覽體驗,然而,在 Blogger.com 使用 HTTPS 時,有個選項詢問是否開啟 HTTPS 重新導向,若採用 blogspot.com 網域是可以打開的,但使用自訂網域則不適合導向,會產生 loop。

這時就靠 javascript 躲在 <HEAD> 來做事吧

<script>

if (location.protocol != 'https:') {
location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}

</script>

Google Adsense 無效流量 排除方式

Adesne 無效流量

Google Adsense 有自己一套的無效流量判斷方式(黑盒子),在今年三月時,忽然發現無效流量大量提升,由於有追蹤各大服務的廣告單元,幾乎可以判定某個服務全部都被判定為無效流量,該廣告單元的收入全部歸零。

這時只好寄信煩一下 Google Adsense 支援小組,負責回應的,可以透露無效流量由高到底的廣告單元,如此就能證實自己的猜想,緊接著要想想到底該怎樣解決。

由於 Google Adsense 為了避免亂買流量、亂跟人行銷合作。因此並不透露什麼判定規則,只會像 NPC 回饋:
  • 用戶來自哪里?
  • 用戶如何與我的應用進行互動?
  • 用戶在我的應用中查看了哪些屏幕?
後來想了一陣子後,想到的“網域切換"的行爲,會不會被誤判成無效流量(買流量),事實證明真的解掉了!而我一開始則不斷抱怨服務已經超過半年沒改版,怎會突然被判定成無效流量?最終 Google Adsense 支援小組則是回饋:不是誤判,而是 Google Adsense 判斷機制變嚴格了!

此例被判定成無效流量的情境:
  1. 為了做服務轉移,從 A Domain 轉換到 B Domain 來維護,其中 A Domain 還富有 Session 等大量追蹤機制初始化
  2. A 跟 B Domain 都有註冊到 Google Adsense 
  3. 服務使用時,會很快從 A Domain 轉址到 B Domain
後續排除的解法就轉址時,從原本要進入 A Domain 內的 PHP Code 處理,改移至到 Web server rewrite rules 來排除,加速更快的跳轉,也避開 A Domain 的 session 初始化。

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/" 有可能就可以搞定?!

2019年3月17日 星期日

[書] 給力:矽谷有史以來最重要文件NETFLIX 維持創新動能的人才策略

給力

這書買了半年,堆積了一陣子後,今年陸續清ㄧ清,直到今天終於看完最後章節。最後章節是在講如何跟公司內不適任的同事分手 XD 明明是很簡單的概念,卻很難執行。我在工作上也曾被長官要求評估成員績效,並要求要認真考慮是否適任,因此閱讀起來特別有共鳴。

回過頭來,給力這本書還滿不錯的,醒腦。書裡提的管理、文化建置的概念是對的事,但實務上很難,難在需要權限,難在如何讓公司成員明知彼此的供需問題,難在用家庭成員情感經營時,很難開除家人。甚至身為一般階級的管理者也難以展現,大概只有公司創辦人/高階管理者才行吧?可惜的公司開得越久,也越難執行,實在是人多就有政治,人老就會油條。

目前我比較偏向在新團隊的建置時,可以引入這等概念,包含聘請高手時,要想想該人的薪資是否符合市場,要想想公司的營收是否可以支持,若該人可以有兩人以上的貢獻時,要解放成本概念,大膽給予兩倍、三倍薪資。一切的目的是為了公司加速成長,以此維持公司競爭力。

透過 Google Search 評估 subdomain 類服務人數規模

google-search-subdomain

例如 tumblr.com 的服務是每一個用戶可以創建多個部落格,但每一個部落格就是一個 subdomain.tumblr.com,對於這類服務的發展,這時就靠 Google Search 來評估使用人數,雖然 Google Search 的資料筆數也是推估的,但如果服務使用人不多,還是可以快速跳掉最終頁拿查看。

allinurl:tumblr.com site:.tumblr.com -www.tumblr.com

如此,搭配其他資續,可以推敲一下服務市佔率。

2019年3月16日 星期六

Google Analytics 使用筆記 - 設定目標(Goal)追蹤關鍵字成效

ga-goal-tracking

很久以前就想研究,一直拖到工作上買 Adwords 需要追蹤成效時,才開始學習 XD 而設定 Goal 其實非常簡單,就是在專案管理介面上,切換到最右邊有個"目標"可以設定,填一填就搞定,其中用 GA event 是最彈性的是部分,可以在對應的網頁動作上,發個 GA event 就能追蹤了。

ga-goal-setup-01

ga-goal-setup-02

ga-goal-setup-03

ga-goal-setup-04

如此回到 GA 專案 -> 客戶開發 -> 廣告活動 -> 所有廣告活動/付費關鍵字/隨機關鍵字 ,就可以看到 “轉換” 那邊,可以有目標來關注,十分方便。

就 Adwords 就可以不斷調整、找尋最洽當的關鍵字購買。

2019年2月20日 星期三

Google Sheets 透過 IMPORTXML / XPath 匯入網頁資料 - 以 Alexa.com Top Sites in Taiwan 為例

Google Spreadsheets - importxml

與其說 匯入 網頁資料,倒不如說已經可以爬網頁資料出來,在做格式化!例如去掉多餘的資訊,未來可轉換成 csv/tsv 等等應用。

官方文件在此:https://support.google.com/docs/answer/3093342?hl=zh-Hant

操作對象:http://www.alexa.com/topsites/countries/TW

轉換方式:人眼挑戰!或是靠 Chrome browser 檢視元素和 Copy XPath 小改即可

Chrome Copy XPATH

範例 - 網站列表:
  1. 人眼定位
    • =importxml("https://www.alexa.com/topsites/countries/TW","//div/div/div/p/a")
  2. 透過 Chrome Browser - Copy XPath
    • 分析結果:
      • //*[@id="alx-content"]/div/div/section[2]/span/span/div/div/div[2]/div[2]/div[2]/p/a"
    • 小改:先改到能輸出資料,在去掉指定資料筆數看能不能輸出 array
      • //div/div/div[2]/div/div/p/a
本次練習所有欄位都...人眼享受... XD
  • =importxml("https://www.alexa.com/topsites/countries/TW","//div[contains(@class, 'site-listing')]/div[contains(@class, 'td')][1]")
  • =importxml("https://www.alexa.com/topsites/countries/TW","//div/div/div/p/a")
  • =importxml("https://www.alexa.com/topsites/countries/TW","//div[contains(@class, 'description')]/text()[1]")
  • =importxml("https://www.alexa.com/topsites/countries/TW","//div[contains(@class, 'site-listing')]/div[contains(@class, 'td') and contains(@class, 'right')][1]")
  • =importxml("https://www.alexa.com/topsites/countries/TW","//div[contains(@class, 'site-listing')]/div[contains(@class, 'td') and contains(@class, 'right')][2]")
  • =importxml("https://www.alexa.com/topsites/countries/TW","//div[contains(@class, 'site-listing')]/div[contains(@class, 'td') and contains(@class, 'right')][3]")

2019年2月17日 星期日

渾球西門? 魂囚西門 啦,快上 NETFLIX 觀看

在 NETFLIX 觀看了 魂囚西門 這戲劇,好久沒看這種夾帶驚悚運鏡的戲劇,由於剛好遠房親戚參與了這齣戲的製作過程,剛好把小孩安頓好就來看看了!

說真的,我好像沒看過老蕭的演的戲 XD 記得之前有殺手歐陽盆栽,但我始終沒有抽空欣賞。腦袋裡一直想著陳奕迅很驚呀老蕭在南港的豪宅八卦 XD 這大概是我最近對老蕭的印象吧,若要在牽拖一些,大概是老蕭跟老姐念的學校一樣,很可惜的母校似乎已準備停辦了 Orz

回過頭來,很佩服台灣創作者在艱困的環境下,仍拍出好片,也非常用心安排音樂。我特愛一些過場片段是西門町的街景,也有縮時攝影,很讚的台灣街景拍攝。

目前已被 NETFLIX 買斷獨家海外播映權!恭喜恭喜!有空抽欣賞吧!!更多資訊可以參考粉絲團或 PTT 台灣戲劇版 ,目前在 公視、MOD 和 NETFLIX 三個平台放映

2019年2月16日 星期六

[開箱] Chromecast Ultra 4K Ultra HD - 2016/11/06 發表

Chromecast2016_1

過完年後入手 Chromecast Ultra 了!體驗的經驗是...速度快慢已經不是重點了 XD 跟 Chromecast 第三代 2018 沒什麼競速差距,就算真的快個 1s 也沒什麼特別感受。所以,買 Chromecast 第三代 2018 年版既可,除非電視是 4K 又常看 4K 內容,不然現況主流還是 720p, 1080p 的網路內容,偶爾搭配藍光播放器播放藍光內容,但也不靠無線傳輸。

Chromecast2016_2

Chromecast2016_3

不知 4K content 還要等幾年才能變主流?實在是目前最大量的觀看設備是手機,手機也很難再衝到多高解析度。搭配一下投影機惡搞一下,4K 投影機非常貴 Orz 此乃微投影機等級(480P)

Chromecast2016_4

測試一下影音分離技術(誤),輸出至 macOS 的 iMovie

Chromecast2016_6

最後來個大合照吧!

Chromecast2016_5

相關文章:

2019年2月12日 星期二

[開箱] Chromecast 與 AVerMedia ExtremeCap UVC BU110

圓剛 BU110_1

前陣子在研究 Chromecast sender app ,覺得一直把 Chromecast 插在電視 debug 很煩,想找看看能不能把影像輸入到筆電,可以方便開發以及擷取影像做 auto test 等機制。當時跟幾位朋友請教後,正逢雙11特價,就下標 圓剛 BU110 免驅動影像擷取器 ExtremeCap UVC,那時朋友推薦只要購買 USB video class(UVC)產品即可,免安裝驅動程式!剛好這款價格最低,且在沃草的朋友也都靠這款直播 XD 就...衝了。

圓剛 BU110_2

圓剛 BU110_3

這款設備大小很隨身(但還要帶著 USB Type-C 的線...),金屬觸感簡約精美散熱佳,但要小心,一旦手滑掉到木桌肯定會凹個洞

結果就是功課沒做好,圓剛 BU110 搭配 Chromecast 基本上就是黑畫面無誤,只有 Chromecast 開機畫面會顯示 G logo 開機動畫,接著立馬黑畫面無誤。追蹤一下,搞懂了是 HDCP 的問題,而圓剛 BU110 本身不支援 HDCP 機制(或許該說這類產品不該有 HDCP 機制?),因此跟數位內容保護相關的產品,如 Chromecast、藍光播放器等等,應當都會進入黑畫面。

Chromecast + BU110 + macOS QuickTime player = 黑畫面

這時我才腦補完為何 Chromecast 黑畫面,俗稱: Chromecast 發現影像輸出的對象不支援 HDCP 架構,避免被內容被側錄而進入黑畫面。這做的真不錯,這樣就讓內容提供者可以安心信任 Chromecast 裝置,可以確保一般用戶無法複製內容。

那...身為資訊阿宅,就在多逛逛拍賣網,看到了玲瑯滿目的 HDMI 影像聲音分離術 :P 那其實就是破解 HDCP 的招數啦,買一買串一串,的確就達成 macOS 用 QuickTime player ,透過 UVC 把影像顯示在電腦上了!

Chromecast + HDMI影音分離 + BU110 + macOS QuickTime Player = 有畫面

只是下一刻才驚醒...這種 debug 真的蠢了點 XD 電腦還得看 IDE 顯示運行的 logs 啊,還是搭配投影機或雙螢幕吧,且還有一堆線,非常原本想省個螢幕或電視,最後發現良藥是微投影機...

更多資訊:

[開箱] Chromecast 第三代 1080p 60fps - 2018/10/10 發表

Chromecast2018_1

Chromecast 第三代是 2018/10/10 發表,自己入手是 2019 年 01 月下旬,那時正在找該怎樣購買 Chromecast Ultra,沒想到找啊找啊,找到蝦皮有人正在販售最新款 Chromecast 三代,我記得找完的隔天正好有新聞稿發佈說可以在台灣大哥大買到了,於是我就手癢下標了!

Chromecast 第三代跟第二和第一代有個很顯著的改進:1080p 與 60fps,第一代跟第二代貌似只有 1080p 跟 30fps 水準。雖然第二代比第一代快了點,但畫質體驗是沒什麼變化的。

另外,我自己是在第三代才開始體驗 Google Photo 的魅力,搭配 Chromecast 微光 服務,可以播放個人帳號專屬的照片。對了!無論是 Chromecast 一代、二代、三代,顯示出來的照片畫質都ㄧ樣...模糊 Orz 但不用太計較,畢竟人眼看電視通常都有點距離,隔個 2公尺是還可以接受的畫質

由於第三代也才用不到一個月,就先列幾張照片收尾:

Chromecast2018_2

來個 Chromecast 一二三代大合照:

Chromecast2018_3

更多資訊: