Cloud Functions for Firebase 跟 Google Cloud Functions 差在哪?

不知道大家有沒有注意過:Cloud Functions 除了出現在 Google Clould 裡頭,在 Firebase 也看得到它的身影,一樣的服務為何要放在兩個地方?還有,它們倆真的一樣嗎?

當然,第一個問題只有官方知道,我也只是猜測而已:在 Firebase 剛推出時,強調開發者專注寫程式就好,剩下的 Firebase 會幫我們搞定。Google Clould 服務五花八門,很多服務不是單純寫程式可以理解的,不少服務還要具備伺服器管理經驗才有機會接觸,對於純粹寫程式的開發者而言就沒這麼友善。而 Cloud Functions 也是專注在寫程式的服務,跟 Firebase 的初衷如出一轍,將 Cloud Functions 放在 Firebase 當然沒問題。

至於第二個問題,它們一樣嗎——答案是否定的。我是先從 Google Cloud Functions 開始使用,最近的 Side Project 才用了 Cloud Functions for Firebase,一開始我以為兩者相同,但沒多久我就意識到:差多了!

閱讀全文 Cloud Functions for Firebase 跟 Google Cloud Functions 差在哪?

使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 13 ~ 14

前言

邏輯、流程的部分都已經處理掉了,接下來應該是把畫面跟定義好的程式串起來就會動了;課程也即將進入尾聲。

筆記

Flutter TDD Clean Architecture Course [13] – Dependency Injection

這集主要是要教學 dependency injection,在 Android 專案我習慣用 Koin 來處理這個需求,因為建構子實在需要太多東西了,假設 10 個地方需要 NumberTriviaBloc,那我就必需手動準備好 30 個參數。有了 DI 可以加速我們開發,只要宣告一次 NumberTriviaBloc,就可以到處使用。

閱讀全文 使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 13 ~ 14

使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 10 ~ 12

前言

這幾集就是在講 Flutter 特有的 BLoC,我們已經跨入 presentation layer 了,這邊會開始碰到 UI 背後的邏輯。

筆記

Flutter TDD Clean Architecture Course [10] – Bloc Scaffolding & Input Conversion

影片一開始就要安裝自動產生程式碼的 plugin:

https://plugins.jetbrains.com/plugin/12129-bloc

這是我第一次接觸 Bloc,看他概念就是吃 event 轉換 state,直覺就是想到 Redux 的 reducer,名詞不同,但做的事情還滿像的。本集就先定義 state 跟 event 而已,Bloc 還沒有正式開始講。

閱讀全文 使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 10 ~ 12

使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 7 ~ 9

前言

這部分也在講 data layer 的內容,不過會更專注在 data source 裡面的東西。

筆記

Flutter TDD Clean Architecture Course [7] – Network Info

這集一開始導入一個 3rd party lib,專門用來確認網路狀態。這個 lib 直接連各大網路服務的 IP,概念簡單但很準確;不過 Github 上面有條滿可怕的 issue,正式版可能要考慮一下:

https://github.com/komapeb/data_connection_checker/issues/7

閱讀全文 使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 7 ~ 9

使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 4 ~ 6

前言

在課程 1 ~ 3 集學習了 Clean Architecture domain layer 的測試與實作,在這篇筆記中會著重在 data layer 的部分。

筆記

Flutter TDD Clean Architecture Course [4] – Data Layer Overview & Models

這集從頭到尾都在講 raw data 的測試跟 parse JSON。

num 是 int 跟 double 的父類別,在 parse raw data 時可以當作語法糖來用,少寫一些判斷,不太確定為何要有這種介於兩者的存在,可能在轉換或賦值時容易語法錯誤吧?

dynamic 等同於 Kotlin 的 Any 或 Java 的 Object,可以是任何東西。

factory 很像是 Kotlin 寫在 companion object 裡面的 function,又或是 Java 的 static,我不想 new instance,所以就用 factory 來寫 function。

閱讀全文 使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 4 ~ 6

使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 1 ~ 3

前言

以前專職開發 Android 專案時,我喜愛 Clean Architecture + MVVM 架構當作基本配置;TDD 一直是我很想精通的一個技能,但礙於各種因素,正式工作中我一向是在最後階段才補上測試。這次學習 Flutter 課程,除了想將技能樹向外延伸,也想複習架構,並順便習慣 TDD。

課程

本次課程選用 Matt Rešetár 的 Flutter TDD Clean Architecture Course:

這個課程適合熟悉 Flutter 或是熟悉 TDD 及 Clean Architecture 的開發者,若沒有基礎就直接來上,可能資訊量會太大;以我來說,我習慣使用 Clean Architecture 且接觸過 TDD,有疑惑的部分就會是 Flutter / Dart 為主。

閱讀全文 使用 TDD + Clean Architecture 開發 Flutter 專案課程筆記 1 ~ 3

完整移除 Comodo 防火牆解決無法上網問題

前言

大約在 2017 年裝了 Comodo 的防火牆,幾年使用下來也沒出甚麼問題,但最近會在開機後發生異常,說是防火牆無法正常啟動。這個問題也造成我無法上網,非常困擾。

釐清問題

因為 Windows 10 之前有出過更新後無法上網的問題,我一直以為是官方更新所造成的,但差異在於:官方的問題是完全無網路,我則是連得到 Wifi,但無法連到外網,也 ping 不到 default gateway,但交叉測試知道網卡跟 Router 都沒壞。

閱讀全文 完整移除 Comodo 防火牆解決無法上網問題

防疫資訊站 – 在口罩地圖之後

前言

前陣子我媽打給我,說:她不會用實聯制掃描而被店員唸了,後來每次進店都放棄用手機掃描,改用手寫登記。我不知道有多少長輩有碰到這個問題,但我覺得需要有人來解決它。剛好 g0v 有人在分享最新的疫情資料,就花了一個週末把口罩地圖改版了。

新功能

確診數據

將疾病管制署的數據呈現出來,在去年有看到不少國外應用提供這樣的數字佈告,我自己也會想要知道最新的疫情數據,因此就將它放在首頁,想到就可以看一下。

全國快篩站點資訊

由於快篩地點資訊非常零散,有的放在新聞文章、有的放在臉書公告,內容也不是很完全,例如:有開放時間、資格限制或是需要預約,但文章只有提到地點。g0v 參與者有做了一份整理好的表單,可以讓有需求的民眾了解相關資訊,內容非常便民。

實聯制掃描

主要是提供更簡單的選擇,或許不是最快的,但有試著加入一些說明來降低資訊落差。此外,前幾天用疾管家的網頁掃描時,有注意到網頁版相機的效能問題,原生的 App 可以有效改善這個狀況。

閱讀全文 防疫資訊站 – 在口罩地圖之後

我的記帳工具演化史

前言

我在大學三年級養成記帳習慣,因為零用錢有限,必須精準地控制預算。那時我幾乎每天都會檢視自己的消費紀錄,並透過每一筆消費明細來調整自己的購物取捨與順序。

記帳習慣在 2017 年中斷了,當時毫無目標、策略地記帳,到後來就覺得可有可無,漏記個幾天後,接著就漸漸適應沒有記帳的生活。最近因為出現了計畫性的購物目標,所以又重回記帳的懷抱。

記帳工具

在記帳史中,每個時期的需求都不一樣,時代背景與身份也都有所差異,這些不同造成了我在每個時間點的工具轉換。整體來說,工具是越換越適合,但理財觀念則是大學時期最好,或許就是沒錢的時候才能體會錢的重要性吧?

閱讀全文 我的記帳工具演化史

教導年長者使用平板電腦

前言

我媽前陣子嚷著想要用電腦,就我有印象以來,這狀況持續了十年以上,每隔一段時間,我媽就會說要學電腦,但每次教完,大約一週內就會對電腦失去興趣。

使用者背景

  • 65 歲傳統家庭主婦
  • 國小學歷
  • 容易放棄,害怕失敗及未知的問題
  • 記憶力開始退化
  • 不擅長使用電子產品(包含無連網產品)
  • 桌上型電腦課程經驗,巔峰時期可以獨力完成開、關機流程
  • 沒有智慧型手機
閱讀全文 教導年長者使用平板電腦