2020年6月9日 星期二

如何透過 PowerBI Desktop 匯入Azure Billing 資料分析



這幾年 Azure 的更新頻率非常快,但是常常是翻天覆地改變的那種,像是如何透過Power BI 分析 Billing 就變了好幾版,所以每次都得重新熟悉。最大的改變我想就是閹割掉 Power BI 網頁版的所有 Input Source ,強制規定一定只能先透過 Power BI Desktop 來設定,這對於 Mac 的使用者真的很不友善....anyway...讓我們來看看新版的介面該怎麼使用。

2020年6月8日 星期一

成功為成功之母,如何從 near miss 中找出致勝關鍵

source: near miss



在 Scrum retrospective meeting 通常會有幾種問題:覺得的好的和不好的,要繼續做的和該停止的這種討論,不過通常對於做的好的,大多會流於感謝和整能量時刻,而很少會好好去討論為什麼的成功,和關鍵指標是什麼,以及這次成功會不會真的就只是運氣好?有聽過專案驗屍會議,但是很少聽過專案成功檢討會議?

我們都知道要敢於面對失敗,因為我們更容易從失敗中學習。但是其實最常被忽略的就是從成功中學習,尤其是那種被運氣影像,『差一點就會失敗』的成功,英文稱為『near miss』。

2020年5月13日 星期三

上游問題 - 如何處理寶寶心裡苦,但寶寶不說的狀況



感謝得到-萬為綱老師搶鮮為我們介紹這本 2020 年一月剛推出,希思兄弟這本的新書,我想中文版大概要一年後才看得到?

看高手寫的書最爽的就是把那種『寶寶心裡苦,但是寶寶不說(or 不知怎麼說)』的狀況總結歸納出來,並且得到一些科學的建議。

然後我就可站在巨人的肩膀上,再透過旁徵博引的萬維鋼老師把本書脈絡整理了出來,最後讓我可以以懶人包和自己的經驗來三次創作😆

在我看來,上游思維用積極的觀點來說就是上醫治未病,但從消極面來看我想到一個問題,「先知除了在本鄉、本族、本家以外,沒有不受尊重的。」

為什麼先知總是辛苦又容易被討厭?原因有三

2020年5月3日 星期日

Go 小教室 - 如何讓mac 上的 goenv 可以選擇 1.12 以上版本


go 其實還一個很年輕的語言,所以每次升級,難免會有一些 breaking change,像最近從 1.13 升級到 1.14 就莫名的讓幾個 unit test 掛了,在還沒有時間去研究到底為什麼升版會造成 unit test 掛掉前,最好還是乖乖定版在 1.13,於是想說就灌個 goenv 來使用,沒想到用 homebrew 安裝的 goenv 卻只能安裝到 1.12beta


2020年4月23日 星期四

Inspired 產品專案管理全書 - 探索客戶計畫:用來提醒 Product Manager 的實用查核表

source: pngwave


工程師背景的我們,從以前最擅長與專注的就是在 Deliver 的優化,以及學習相關的方法論,但是隨著在社會闖蕩碰壁多年,漸漸發現其實 Define and Discovery 的方法論更是至關重要,可以幫助我們減少許多白費工的狀況發生(工程師最怕需求一直改,改出來又沒人用)。

去年聽了 Marty Cagan 的演講 - Product Is Hard ,就開始仔細閱讀『Inspired 產品專案管理全書』,並且思索如何應用在現在的產品,有許多內容和方法真是相見恨晚,在第 39 章整理了 Marty Cagan 在 2013 年寫的一篇文章  The Power of Reference Customers,而這個套路在矽谷的 SaaS company 更是隨處可見,可以在許多產品的業面看到以下訊息:


2020年4月20日 星期一

你知道在 Azure 上有幾種 On Demand 啟動 Spark 的方法嗎?



最近需要開始分析一些 Log ,最直覺的方式就是使用最熟悉的 Spark 來分析,於是開始研究最近有什麼方便在 Azure 啟動 Spark 的方式,在 AWS 和 GCP 上,之前就已經有研究過專門支援的 PaaS 服務:
我知道 Azure 有 HDInsight ,但是之前使用覺得沒有 GCP Dataproc 好用,不知道 2020 年的今天,有沒有什麼新的 Solution 呢?畢竟 Azure 的 "強項" 就是透過大量跟 3rd-party ISV 整合來壯大自己的服務

2020年4月16日 星期四

Go 小教室 - 如何檢驗 Go struct isEmpty




最近踩到一個 buffalo-pop ORM 的一個雷,範例如下:


type Job struct {
 ID             string         `json:"id" db:"id"`
 JobCreateType  JobCreateType  `json:"job_create_type" db:"job_create_type"`
 FileName       string         `json:"file_name" db:"file_name"`
 Status         JobStatus      `json:"status" db:"status"`
 CreatedAt      time.Time      `json:"created_at" db:"created_at"`
 UpdatedAt      time.Time      `json:"updated_at" db:"updated_at"`
 JobSourceInfo  *JobSourceInfo `json:"source_info" has_one:"job_source_infos" fk_id:"job_id"`
}

type JobSourceInfo struct {
 ID               string        `json:"id" db:"id"`
 JobID            string        `json:"job_id" db:"job_id"`
 SourceURL        string        `json:"source_url" db:"source_url"`
 }


一個 Job Struct 裡面有一個 Embedded Struct JobSourceInfo ,在資料庫裡面是 1 - 1 的關係,一開始產生 Job 時,並不預期一定會產生 JobScoureInfo,這時我們都會宣告為指標,理論上只要如下面範例,檢查是不是 nil 就能知道這個物件有沒被產生。

var ji *JobSourceInfo

if ji == nil {
    ji = new(JobSourceInfo)
    // do stuff 
}


但是.... Buffalo 的 ORM 的 Eager func 卻自作主張的幫我產生了一個 Empty Struct ,原本只需要檢查,指標是否為 nil ,但是現在卻得檢查是否為 empty Struct...

那讓我們來看看檢驗 Empty Struct 有幾種方法?

2020年3月29日 星期日

一談就贏:銷售贏家必勝攻略首發班心得 - 學問

業務就是巧言令色的弒血鯊魚嗎?

自從上次 Alex 在『速食遊戲演練班』宣布即將會開設新的銷售公開班,我就非常期待,這一次終於讓我搶到了頭香, 報名到了依舊秒殺的『一談就贏』之『銷售贏家』天字第一班,有很多人問我,你不是工程師嗎,為什麼要來報名銷售課程?

我的回答是:雖然我不是業務,不過跟業務都有很密切的關係,很多候要以 presales 的角色協助 sales or BD (Business Development) ,更多得時候要把他們的需求帶回來轉換成開發的 Spec。此外因為蠻長一段時間都待在新創公司,常常會需要跟老闆和 BD 們一起討論價格與商業模式~

之所以會想要來上這門課主要有幾個學習目標:
  • 瞭解什麼是好的銷售人員 (與 evaluate 的標準)
  • 學習更多關於定價與 BD 相關的知識與武器
  • 學習從 BD 與 業務看市場的角度,來協助產品開發與策略規劃

短短一天的課程可以學到那麼多東西嗎!?

2020年3月7日 星期六

關於 Azure EA 的價錢與 RI 的價錢差異



關於 Reserved Instance 每一家的規則都有一些些許的差異,Azure 的 Reserved 有幾個特點:
  • 現在買 RI 不用全額付款 (upfront ),只需要每月支付
  • 如果買了 RI 後來發現用不了那麼多,可以解約,但是要支付 12% 手續費 (退款原則)


關於 EA 與 RI 的價格差異



在網路上看到一篇文章這樣描述,EA 有折扣,RI 也有折扣,那到底怎麼計算?

後來瞭解才知道,假設一台 VM list price 是 100元,EA 和 RI 的價格方別如下:

EA     (從 list price 折扣 5%~9% off) 所以價格是 95~91 元
RI 1y (從 list price 折扣 ~40% off) 所以價格約略 60 元
RI 3y (從 list price 折扣 ~60% off) 所以價格約月 40 元

EA 與 RI 的折扣不能疊加,只能擇優計算,所以如果就算你是 EA + RI 1y ,那你也只能拿到 60元的價格。


另外根據不同的機型,我做了一個比較表,如果開發機想要省錢,直覺的想法就是只有上班時間開機,下班關機,但是如果 3y RI 買下去,就算一直開機價格也比上班開機下班關機划算~




2020年3月1日 星期日

談判系列叢書懶人包(1) - 雙贏談判



話說在還沒上一談就贏系列課程前,就從 Alex 部落格看到他介紹了許多好的談判書籍,每個月博客來剁手日就會順手買下去,但是也都沒有乖乖看完,大多只是東翻一下西翻一下,因為覺得東西太多,完全不知到要怎麼應用到實際的談判場景?


說實在的那麼多本書,每本書的特色和是用的場景都不太一樣,有些是學案例,有些是學心態,有些是學戰術,如果想要完整的學習當然還是推薦先去上 一談就贏,之後再回來看這些書就會有很大的不同,因為對於談判的框架與輪廓有了更完整的認識和練習,現在再回來看這些書就更能進入狀況,也更有感覺,開始之到該如何利用每本書的小撇步,或是把這些案例當作是戰術上的參考。

溫故而知新,現在回去看之前的作業就覺得自己好傻好天真(代表有在進步!?)

2020年1月30日 星期四

[書摘] 傳奇億萬美元級教練比爾·坎貝爾 Trillon dollar coach





Trillion Dollar Coach - The Leadership playbook of silicon valleys


之所以會對這本書感到興趣一來是好奇這本居然敢自稱『 leadership playbook 』書的內容,而另外一個主因是想瞭解一個『美式足球教練』如何轉型變成商務人士,最後甚至變成矽谷一堆高科技獨角獸公司老闆的教練和朋友( 如 Apple - Steve Jobs, Google - Eric Schmidt ...)。 

這本書基於對八十多人的採訪,並透過許多名人和獨角獸公司的故事整理與解釋了這些管理的原理。目標是為企業領導人和經理提供了一個藍圖,以創建績效更高,速度更快的文化,團隊和公司。前半段主要在描述比爾·坎貝爾的生平,接著就是穿插在許多公司時的案例,透過這本書可以讓我們瞭解這些獨角獸公司還小的時候遇到的挑戰,以及怎麼解決的,有別於市面上一堆管理的書籍講的都是這些獨角獸公司壯大以後的制度。


2020年1月29日 星期三

從Java到Go系列 - Finally and defers

source: funnyZpc



在 Java 世界最習慣的模式就是 try-finally and try-catch-finally ,主要的用途有三種:
  • try-catch 用來處理例外
  • 到了1.7 版 更可以直接用來處理 AutoClosable 的 resource
  • finally 就是用來處理一堆雜七雜八最後處理的東西,包含
    • 經過 try-catch 處理後也出錯的錯誤處理
    • 或者是一些無法 AutoClosable 的 resource
 延伸閱讀:Java Try With Resources

2020年1月27日 星期一

從Java到Go系列 - Jenkins Code coverage


歡迎來到從 Java 到 Go 系列(確定會有系列嗎...),本篇文章想要解決的問題是:

如何讓 Jenkins 顯示 Code coverage?

而會問這個問題的人通常都是來自於 Java 的開發世界,為什麼呢?

根據我的觀察,對於許多原生的 Gopher,他們反而會選擇 Gitlab-CI or Drone 這種輕量級的工具,反而比較不會選擇 Jenkins 老公公,可能原因:
  • Go 的好處就是輕盈,既然要輕盈,就輕到底,也選擇其他輕盈的框架(好啦,這是我的主觀想法,歡迎提供其他看法)
  • 反正code 就放在 Gitlab,那可以直接用整在一起的Gitlab CI 不是更佳省事 
  • Jenkins 的生態系的確比較多 Java 的 plugin(因為他就是由Java 寫的咩...)

2020年1月25日 星期六

從Java到Go系列 - Database migration tool for Go - fizz


從 Java 的世界轉換到 Go 的世界,就會開始尋找對應的服務和專案,在 Java 世界資料庫 migration 最有名的就是 liquibaseflyway ,那在 Go 的世界也有相對應的東西嗎?


2020年1月19日 星期日

獨角獸專案 - Part I 導讀 - 市場與大環境的改變





獨角獸計畫真的看的很痛苦....😂
不是英文不好的痛苦,
而是整個融入情境,想說這種公司怎麼呆的下去的痛苦,怎麼可以用這種方式做事的痛苦,作者很成功的讓我們融入主角 Maxine 的視角,看到各種 IT 行業的慘況....

市場與技術無法脫鉤


故事的背景來到 EC 已經被 Amazon 統治的現代世界,小說中的零件無極限(Parts Unlimited)公司面臨到最大的商業挑戰就是消費者的消費型態已經改變,消費者可能不會再到店面跟零售商買東西,更多的是透過網路和電話購買。但是零件無極限(Parts Unlimited)公司的高層不斷提醒員工,客戶真的需要的還是可以相信的人,並不是透過冷冰冰的網路自行購買零件,所以才有鳳凰計畫,希望幫助零售商可以提升服務進行數位轉型。

但是就像許多企業一樣,上層的命令與計畫傳達到執行端,往往已經扭曲變形.....


2020年1月12日 星期日

獨角獸專案 - Part I 導讀 - 濃濃的臭氣味





Part I 故事背景


Maxine(女)剛渡假回來,就遇到無限公司的薪資系統大當機事件,雖然罪不在於她,但是為了給董事會交代,他的上司 Chris 決定把她調職,調往集團罪惡名昭彰的『鳳凰專案』,希望她過去幾個月負責處理文件的部分,Maxine 感到沮喪憤怒,覺的公司就是要要找人當代罪羔羊,想要逼她走,不過她的老闆 Chris 卻又一直強調,只是調她去那邊避避風頭放個假,之後再把她調回來...

而這個『鳳凰專案』就是上一集故事中的那個專案,話說我已經忘記上一集結局是啥(原本以為已經成功了),沒想到那個專案已經三年過去,仍在虧損沒有成功的死亡行軍中....🙈