Plugin 可以做什麼? 將 Plugin 套用於專案後,可以擴增專案的能力,它可以做到如: 擴充 Gradle model(如增加可以設定的 DSL 元素...
對 Kotlin 這種編譯式語言來說,為了方便每次更新後的編譯工作,都會搭配 Gradle 這種自動建置工具使用。而 Gradle 在編譯的過程中會經過很多手續...
我們好不容易寫了 userAddTag() 和 updateUsersTags() 的邏輯,突然又出現了新需求! 這次需求單位希望 updateUsersTag...
新增相片後,要發送通知給相簿應用程式,這樣才能更新照片清單,這樣才能在相簿看到新增加的照片,使用者體驗才會好。 以前我們會用Intent.ACTION_MEDI...
今天來實作使用ActivityResultContracts.TakePicture()開啟相機,拍照後把照片儲存在Android/data/packageNa...
承上篇 Refactor 上篇實作完成執行結果如上圖所示,藍色區塊為該學生成績,紅色區塊為新增成績編輯畫面,全部程式皆在StudentView.kt裡,接下來我...
Request Logging 是非常重要的必備功能,不僅可以用來系統監控、除錯,還可以進一步分析使用者行為…等,存在著廣泛的應用情境,所以每個 Web 框架都...
寬廣的室外網球場上,學生們正在做發球考試的練習。 「嘿!」女孩左手將球向上輕拋,右手握拍奮力用全身的力量擊球。 和羽球重視甩腕的方式不同,網球需要軀幹旋轉的力量...
好的,接下來我們要新增邀約的Fragment,好讓使用者可以上去PO出自己的邀約,以及讓不同的使用者可以看到目前有的邀約。那我們開始吧! 今天會完成上傳圖片/...
suspend他並不能切換線程,切換線程的是內部自帶的suspend函數,ex. withContext coroutine只是能用阻塞寫法寫出非阻塞代碼,本質...
Flow 經過 Intermediate operators 將資料經過處理之後,最後一步則是要把資料輸出,而將資料輸出則是要透過 Terminal opera...
swift 畫面都有了! 接下來我們來完成一個小功能吧 首先 我們點選Main.storyboard上方的 +號按鈕 此時右邊會跑出第二個視窗 這時我們在點選...
KotlinParserGenerator 我們先從 kotlin 的 parser 講起,這邊會順便帶到一些 KotlinPoet 的進階用法。我們目標是讀取...
上一篇在實作 EtaResponseMapper 的時候我們用了 Java 8 開始有的 Instant、LocalDateTime 和 ZonedDateTi...
Keyword: Dependency Injection到Day20 使用Koin管理依賴注入顯示在Android上 放在這邊KMMDay20 依賴注入(D...
雖然 Gradle 內建不少任務,也有眾多 Plugin 可以增加更多常用任務。但畢竟每個專案都是獨一無二的,情境和需求也都不同,因此往往會需要在 Gradle...
Web API 測試可以是後端工程師使用測試框架撰寫白箱測試,也可以是 QA 使用測試工具進行黑箱測試。對於後端工程師來說,如果 API 有異動,很容易找出對應...
本節重點 延續先前己建立的學生資料範例,今天加上學生成績。 建立成績資料 在顯示單筆學生資料頁StudentView.kt上加上新增及顯示成績畫面 Ref...
隨著我們專案功能的增加,雖然目前只有兩個函數,但是我們的測試函數已經增加了不少。 為了減少我們未來閱讀測試程式的痛苦,也為了提升未來整個專案的可維護度,我們可以...
「既然已經知道了interface,就可以來看Collections三大interface——List、Set、Map。和陣列Array一樣,是放入多筆資料的資...
我們在上一篇的文章中,介紹了 Flow 的基本概念,包括如何建立一個 Flow,以及 Flow 是一個 Cold stream,所謂的 cold stream...
runBlocking 中文用戶如我們? 直譯一下就是,跑一個塞住 恩,三小? 他真正的意思是,執行一個程式碼區塊,但他的一個特點就是,他真的會塞住,有別於la...
swift 這邊我們來玩一下簡單的排版不管是哪種APP開發都有許多 Layout 模式我們這邊先用Auto Layout 做討論 Auto Layout也有很多...
上一篇的 repository 還欠一個 mapper 把 EtaResponse 轉成 EtaResult。我們首先準備一個通用的 interface: in...
相較於傳統的 Android View,Jetpack Compose 在 Android 開發上還有一個新的概念,那就是 Stateful (有狀態的) 還有...
Logger 在 compile time 的時候,不像我們一般再開發的時候很容易的去 log 一些我們要的資訊,這邊我們必須要透過 processor 提供的...
在定義 Gradle Build Script 裡的 dependencies 時,您是不是也曾跟筆者一樣看著網路上各種教學文件,彼此常有出入,搞不清楚到底該用...
Keyword: swiftUI,Coroutine Scope 改寫ObservableObject 既然我們將拉取網路資料的部分下放到了shared中的新...
自從有了 TeamCity 後,很多原本需要人工操作的任務都可以交給 CI 主機做。因為它會在每一次發現變更的時候自動執行,一方面不會漏掉或忘了執行、另一方面在...
先前有提到整個 OpenAPI 的運作流程是… 開發者為 route 撰寫 OpenAPI definition Generator 根據 OpenAPI S...