Just My Life & My Work

Archive for the ‘教學’ Category

[Flutter] Expanded Widget

使用 Expanded Widget 有何效果?Flutter 的 Expanded 更改了行和列子級的約束,指示它們填充可用空間。於是把 Child 包裹在 Expanded 中,看著它成長!😎

(繼續閱讀…)

[Flutter] SafeArea Widget

現在智慧手機裝置有各種型號(iOS 和 Android),總有些時候,靠邊(上、下、左、右)的地方會被遮擋,那麼我們怎麼排除此問題呢?🤔

此時可以使用 SafeArea Widget

我以 iPhone 11 為例,可以看到截圖上的字被狀態列給蓋住。

(繼續閱讀…)

[Mac] 更改截圖的儲存位置、預設名稱、檔案類型

又到了換新電腦時候,習慣截圖工作記錄的我,總是會截取許多螢幕上的資料,Mac 預設將截圖儲存在桌面,一開始懶得移動截圖位置的我,不久就會佔滿整個螢幕桌面⋯⋯

只好這一次把做法記錄下來,下次再換新電腦就能快速完成此設定!也希望未來的我,每年都能換一台新筆電,如此讓我的生產力持續保持最好的狀態唷~😃

(繼續閱讀…)

[Android] 關於 SDK 編譯版本

將 App 送審已成為我工作不會缺少的一部分,但那也只是對 iOS App 有成百上千的次數。這次面臨要將 Android App 送審,心想應該大同小異才是!🤠

在專案設定中有三個地方跟 SDK 有關:

  • minSdkVersion
  • compileSdkVersion
  • targetSdkVersion

以上三個值,可以在 build.gradle 找到,其中又以 targetSdkVersion 最為重要,主要因為會影響程式碼運作。我就是在這裡踩到坑⋯⋯

(繼續閱讀…)

[Flutter] 學習路線圖 (Flutter Roadmap)

Flutter 最近幾年開始火熱起來,由於它優越的特性(UI/UX 與原生一致、開發效率快等),讓我對它有所期待,比起我曾嘗試的 XamrinIonic 還要有潛力和遠景。

那麼要怎麼開始學習 Flutter 呢?因為每個人的背景基礎都不太一樣,肯定不能照同一套路進行。像我從 2012 年開始開發 iOS App,已經非常熟習 Native 語言來開發,無論什麼 App 只要有心都能獨自一人完成!那麼對我來說,大致上會需要去學習新的程式語言 Dart、設計架構、調試方法等等,同時也需要去接觸另一平台 Android 的相關技術。

(繼續閱讀…)

[Flutter] 使用 Dart FFI 呼叫 C 程式

由於 Flutter 是剛發展沒多久的程式語言,所以會遇到平台程式語言(Objective-C/Swift/Jave/Kotlin)有實作的功能,但 Flutter 還沒有的狀況,若我們不想要花時間開發,我們可以透過 Platform Channel,來直接使用平台的功能。🤪

還有另一種狀況,就是原生語言(C/C++)有實作的功能,但 Flutter 還沒有的狀況,此時我們可以使用什麼?Dart FFI

今天要來學習 Dart FFI。Dart 是 Google 開發的程式語言,那麼什麼是 FFI 呢?

A foreign function interface (FFI) is a mechanism by which a program written in one programming language can call routines or make use of services written in another.

(繼續閱讀…)

[iOS] 判斷 NaN

進公司兩年,還是有一些 Bug/Crash 未解,不是我不想解,只是不知道如何「重現」。偶然間我終於可以持續重現狀況,趕緊放下手邊工作,接上手機編譯 App,在 Xcode 設中斷點,便能知道前後變數當前的值,推敲源頭是什麼~😗

當我重複進出某頁,就會 Crash🤪
(繼續閱讀…)

呼叫 API 的 URL 過長問題

最近在整合 API,需要附加大量的參數,使用 Get 方式呼叫,發生:

Request failed: requested URL too long (414)

搜尋一下問題,原因如下:

Two options to resolve the problem for 414 response code:

  1. By POST request: Convert query string to json object and sent to API request with POST
  2. By GET request: Max length of request is depend on sever side as well as client side. Most webserver have limit 8k which is configurable. On the client side the different browser has different limit. The browser IE and Safari limit to 2k, Opera 4k and Firefox 8k. means the max length for the GET request is 8k and min request length is 2k.
    If exceed the request max length then the request truncated outside the limit by web server or browser without any warning. Some server truncated request data but the some server reject it because of data lose and they will return with response code 414.

最後我改成 Post 方式呼叫,就再也沒有此問題!😃

iOS 回傳

Error Domain=com.alamofire.error.serialization.response Code=-1011 “Request failed: requested URL too long (414)" UserInfo={NSLocalizedDescription=Request failed: requested URL too long (414), 

Chrome 回傳

Request-URI Too Large
The requested URL’s length exceeds the capacity limit for this server.
Apache/2.2.15 (CentOS) Server at upload.tintint.com Port 443

參考:414 (Request-URI Too Long)

[Git] 搜尋 Commit 中特定程式碼

收到任務,要把周邊商品 A 上架,請我協助修改 API。🤔

修改這種既定邏輯是沒啥問題,問題是要怎麼找到關鍵的地方,這些地方散落各處,過去沒有或鮮少經手,一時之間要找挺是花時間呢~

好在總會有一些懶人做法,我搜尋 Git 用法,有個符合我期望的功能,就是能找到過去增修 code 的 commit,我要做的是把舊的周邊商品 B 的關鍵字輸入到指令。令人驚艷地,那些相關增修的地方全都跑出來啦~

指令的用法如下:
git log -p --all -S 'search string'

我僅要替換「search string」,比如我想找 Happy Boy:
git log -p --all -S 'Happy Boy'

其它進階用法,可再查參數之功用。

身為一個資深 iOS 工程師,偶爾還是要協助修改 API,畢竟公司每個同事都相當忙碌,而且趁這時候學新的技術,讓任務更容易完成!😗

參考:

How to grep (search) committed code in the Git history

[Flutter] Flutter 簡介

要進入 Flutter 之前,就先來了解它為何會誕生,接著明白其特色與優缺點。讓我們能對它抱持著希望與期待,於日後開發 App 增添信心。🤗

Flutter 是 Google 推出並開源的行動應用開發框架,主打跨平台、高保真、高性能。開發者可以透過 Dart 語言開發 App,一套程式碼能夠同時執行在 iOS 和 Android 平台。Flutter 提供了豐富的套件、介面(接口),開發者可以很快地為 Flutter 新增 Native 擴展。同時 Flutter 還使用 Native 引擎渲染視圖,這相信能為用戶提供良好的體驗。

廣告
(繼續閱讀…)

標籤雲