跳到主要內容

發表文章

帶著問題選項找老闆

 昨天跟主管開會,主管講了他要給更上級的主管簡報的要點。 所謂的帶著問題是擬好了方案,給他選擇。 一般來說主管會要你報告目前進度,狀況。未來行動。如果是要給他說教基本知識,他會睡著,如果需要他決策。 他就會醒過來。 讓他有決定權,準備好各方案的細節,優缺點。讓他選擇。
最近的文章

iOS 17升級後的textField bug

 升級過後,客戶發生了一個Bug,實機模擬不出來,但是模擬器做得出來。 模擬器的狀況是在 text Field(_: should Change Characters In: replacement String:) 輸入一個字後,會馬上又收到一個backspace。造成行為異常。 但是麻煩的是,我們測試所有可以測的測試機,所有同事私人手機都升級幫忙測。都測不出來。 所以就算修正了模擬器的bug,我們也無法驗證。 會造成這個原因是 線上版本此函式回傳 false  看起來模擬器是用backspace來實作return false的結果。這樣無從猜測到底客戶為什麼會有這個狀況。 經過兩天排查,今天要求再去跟客戶聯繫。客戶才告知他已解決。 原來客戶使用倉頡輸入法。 經測試預設使用倉頡才會發生此狀況。只要加其他輸入法,並把倉頡設為非預設就可解了。 該函式retrun 改為true也可解掉。 lesson learn:   1. 客戶問題,模擬不出,可能是他有一個特殊使用情境與背景,可能跟機型版本無關 2. 重複回訪客戶很重要,客戶有可能自己解決 3. 不能輕忽模擬器才發生的bug。

xCode build popup "codesign repeatedly asks for access to System Keychain"

 之前遇到,會有一個always allows 但是這次沒有這個button。 解法 https://developer.apple.com/forums/thread/687712 進到keychain,開發者的憑證,選private key,get info

cocoapod error: Stored properties cannot be marked unavailable with '@available'

 xCode 升級後,原本的專案要重新 pod install 。 執行後,發生錯誤 cocoapod error: Stored properties cannot be marked unavailable with '@available' 網路上大致的解法是調整pod file 這段  platform :ios, '13.0' 往上調版本,但是我的狀況沒用。 試了幾個方法,最後砍掉相關檔案重install,跳出了另外的錯誤 Failed to parse JSON at file:  找了一下解法,cocoapod 的連結有問題,要去把cocoapods repos砍掉重來 執行以下語法 rm -rf ~/.cocoapods/repos/trunk/   再pod install 就可以了 記錄一下。 好像走多層迷宮,最後解法根本與最初的錯誤提示沒啥關係。 後續: 換到另外一個branch又發生了。要把所有pod 相關檔案全刪了,重新pod install,才解。

xCode15: Downloading iOS 17.0 Simulator (21A328): Error

 更新 xCode 15 後,在Target切換模擬器與實機這邊預設要下載iOS 17,但是跳 Downloading iOS 17.0 Simulator (21A328): Error:  HTTP status 400: bad request。以為是網路問題,但是怎樣都下載不了。網路上也查不到資料,後來找到 apple 有相關直接下載模擬器的方式。 直接到 https://developer.apple.com/download/all/ 下載 iOS 17 Simulator Runtime 根據 https://developer.apple.com/documentation/xcode/installing-additional-simulator-runtimes 的解法 調整一下語法 xcode-select -s /Applications/Xcode.app xcodebuild -runFirstLaunch xcrun simctl runtime add "~/Downloads/iOS_17_Simulator_Runtime.dmg" 裝完後,重開xCode 即可

use slack to trigger CI

背景: CI server在特殊網段,規劃觸發CI的成員,無法連到該網段。原本規劃使用email,但是大部分免費的email,已經很難僅用帳密來設定讀取信件。因此規劃使用slack來觸發。 基本原理:CI server讀取slack特定channel的訊息,確定是新指令後,便觸發CI。 shellscrpit: # 讀取檔案目錄 dir=$(dirname "$0") echo "dir: $dir" latestTSPath="$dir/latestTS.txt" jarPath="$dir/get-slack-message-1.0.jar" lastlatestTS=$(cat $latestTSPath | cut -d ',' -f1) java -jar $jarPath ${Channel ID} ${BOT_TOKEN} > $latestTSPath latestTS=$(cat $latestTSPath | cut -d ',' -f1) arg1=$(cat $latestTSPath | cut -d ',' -f1) APP=$(cat $latestTSPath | cut -d ',' -f2) arg3=$(cat $latestTSPath | cut -d ',' -f3) Hash=$(cat $latestTSPath | cut -d ',' -f4) buildType=$(echo $arg3 | cut -d '_' -f1) logFile="$dir/distribute.log" echo "$(date '+%Y-%m-%d %H:%M:%S') lastest $arg1 $APP $arg3" >> $logFile if [[ "$lastlatestTS" != "$latestTS" ]] then echo "$(date '+%Y-%m-%d %H:%M:%S&

從客戶的角度思考警告

 兩天前發生了一個線上問題,客戶說他她看到交易失敗,又在交易兩次。結果後來發現三次都成功。 後來找到原因後台問題,前端timeout,畫面呈現連線失敗。實際上交易沒有失敗,app沒有等到回應,所以顯示連線失敗。 告知客戶連線失敗,就我們的認知,我們知道可能是網路問題,交易已經發出,可能成功可能失敗。連線失敗,並非交易失敗。 但是以客戶的觀點,他們預設連線失敗,交易就是失敗。 文案上的問題不比程式上的問題影響範圍小。

邀約

 邀約的時候,表達上要和客氣要有明顯的區別。標準的話術要求鎖定目定,時間,地點,人物。大家好久不見,本週三週四不知道你在時間上是否方便,我想和你兩個人找家火鍋小聚一下,你意下如何? 請客要請在明處,暗中買單不可取,終局AA不可取。因為這種行為都意味著退避,在他人的理解中都是一種刻意地疏遠,更接近於散夥飯。 節錄-和菜頭 成年人修煉手冊