對所有人來說,2020 無疑是特別的一年,肺炎疫情把全世界攪個天翻地覆,生活與工作都有巨大改變。趁著 2021 第一天,來回顧過去一年自己在技術上的成長與生活足跡。(寫部落格的好處是生活點滴都在上面,只要回顧一遍,馬上能看出有沒有認真過完這一年)

活到這把歲數,還要持續精進技術挺不容易的(沒有青春的肉體還想在技術浪頭間浮沈,格外吃力呀),但既然決定要走這條路就要無怨無悔走下去,期許自己再戰十年。

歸納一整年的文章分佈,2020 年我的技能樹主要點在:PowerShell、Git 跟 .NET Core/.NET 5。

PowerShell

因應工作需要,我試著將一些部署或系統管理手工活兒自動化,在 Windows 平台處理這些事,最佳工具非 PowerShell 莫屬,因為面對大量實務需求,成長特別快(就是被推到水裡,很快就學會游泳的意思 😛),學會不少實戰技巧,例如:呼叫 .NET DLL 程式庫密碼字串加密防禦式 SQL 更新呼叫 WCFCallback 函式參數寫法以及 陷阱設定 Windows 排程跑 PowerShell側錄腳本顯示內容函數傳回集合物件平行作業呼叫 MSBuild 建置專案離線安裝 Module工作目錄概念WebForm PostBack 式查詢網頁爬蟲設定使用者權限(User Right)AD 帳號問題快篩 ... 等等。

Git

2019 年開始用 Git 取代 TFVC 作為工作專案版控,運作近兩年,最初的美好想像逐漸化為日常柴米油鹽,也開始經歷魔鬼細節, 但美夢並沒有破滅,而是愈發感受到 Git 的強大與可靠。簡單來說,Git 織了一張安全網, 讓我可以盡情練習新技巧及嘗試新想法。想試東西就切個分支隨便玩,搞壞了用 Git Reset 就船過水無痕, 不必擔心線上版本受影響,對於開發人員來說是夢寐以求的學習及創作環境。

過去一年開始磨合團隊協作及優化上線部署的分支管理策略,從中學不少進階 Git 技巧,例如:消除惱人 Merge branch Commit用 Squash 整併瑣碎 Commit留意 Cherry Pick 後遺症先 Rebase 再合併簡化軌跡用 Subtree 轉移子專案git diff 顯示選項產生程式異動對照表(Compare List)斷電檔案毁損修復... 等。

同時,隨著遭遇更多的問題,我對 Git 原理也了解更深,例如:搬檔更名判別原則作者(Auhtor)與提交者(Commmitter)差異Commit 的 Parent。而前兩天發生斷電導致 Git 損壞的事故,也靠著對 Git 原理的了解快速修復,這讓我深深體悟:想逄凶化吉就一定要鑽研技術。

.NET Core / .NET 5

.NET Core 在 2019 年發佈 3.1 LTS,按照 Road Map,2020 年 11 月推出了 .NET 5 (.NET 5.0 亮點整理),主要改良在 Blazor、C# 9.0 方面,與 .NET Core 3.1 差異不大,因此我也順利將部落格從 ASP.NET Core 3.1 無痛升級 5.0。在工作上我還沒有大量使用 .NET Core,但陸續寫了一篇基本 Razor Pages 教學 ASP.NET Core 新增修改刪除(CRUD)介面傻瓜範例 (1) 簡介(2) 資料庫準備(3) - 快速產生清單與新增修改刪除介面(4) - 介面客製調整,跟幾篇實戰練習:在 Razor Pages 專案加入 MVC啟用 Windows 驗證EF Core 單元測試從類別程式庫讀取網站 appSettings在網站執行定時排程ASP.NET Core JSON 中文編碼與序列化設定檔案更改自動刷新 IMemoryCacheASP.NET Core UI 元件開發 - Razor Class LibraryRazor Page 簡易下拉選單連動VS 快速寫出 DI 參數建構式DI Singleton 元件引用 Scoped 物件EF Core DbContext 快取特性EF Core 更新衝突處理EF Core SQL 指令觀察EF Core 與 Transaction從類別程式庫建立 EF Core Migration... 等。大力推廣 .NET Core/.NET 5,希望它能早日普遍應用在工作上。

前端

去年我在前端技術的成長較少,絕大部分是走【輕前端】,採用 CSHTML + jQuery + Vue.js,只有些零散應用:用 Vue.js 元件封裝 Kendo UI 日期選擇器Vue 3.0 正式版 - 輕前端視角Vue 元件練習 - Checkbox 清單CSS Flexbox 實現佔滿剩餘網頁寬/高度Vue 導致 jQuery 事件/插件失效問題

但值得一提的,雖然我也算會寫 WPF,但跟已經苦練多年的網頁開發技能相比,順手度是擀麵棍跟屠龍刀的差別。去年我學會用 Electron.NET 把 ASP.NET Core 包成桌面 GUI 應用程式,雖然程式肥大了一點(任何小程式都 100MB 起跳),但能用 ASP.NET Core 寫桌面程式,開發速度快了不只十倍,這個取捨還算划算。

Linux

.NET 邁向跨平台後,Linux 對我日益重要,我的部落格轉成 ASP.NET Core + Docker在 CentOS 執行也滿兩年了。去年底傳出的大消息是 CentOS 時代即將終結,需另覓可靠免費 Linux 版本。

一般來說,若是走 Docker,受底層作業系統的影響不大。不過如果想架台家用伺服器,就會面臨 Linux 版本選擇。評估結果,Ubuntu Server 依其高市佔率成為「西瓜偎大邊」策略下的首選。不過,Debian 濃厚的開源色彩喚起了我的駭客情懷,我完成了開箱也推進到足可執行 ASP.NET Core 容器的進度,Debian 現在也成為我的 Linux 選項之一。

水電與 DIY

愛修理東西跟 DIY 被寫在我的基因裡,發現去年又做了好多亂七八糟的東西:土砲環形燈3D 列印微波爐 L 支架門多西諾永動機電磁漂浮裝置讓壞掉的硬碟來個愛的鼔勵復刻部落格的 Logo用馬拉松晶片做電子火柴純手工打造 ePub 電子書

另外,黑暗水電工照例又讓一堆老爺設備起死回生,包含:門把彈簧更換臉盆水龍頭面板顯示 Er 的除濕機慢如旋轉木馬的電扇買不到材料沒修好的電子鍋電線燙如仙女棒的吹風機,還搞懂了恆溫熱水器的水溫過熱問題

跑步

受疫情影響,去年跑馬次數創下新低 -六場。除了玩樂性質的 烏峽馬三重馬Y 拖馬,有兩場 SUB4 (渣打馬台北馬拉松),還跑了2020 環跑台北 67K 正式邁入超馬的領域,也算小有長進。(另外,對跑步有興趣的同學,這篇慢跑到底會不會傷膝蓋?值得一看)


(圖為朋友用 iPhone 拍的 101 煙火,畫質令人驚豔)

最後祝大家在新的一年健康平安,技術突飛猛進。


Comments

# by Joel

新年快乐!从您写的Git相关文章中学到很多。祝您新年一切顺利!

# by Hyr

經驗是指模糊的部分嗎..

# by Hyr

驚豔是指模糊的部分嗎..

# by kaba

學無止境啊,新年快樂

# by Muz

感謝黑大分享知識,這一年從您的文章中獲益非常多~

Post a comment


41 + 14 =