又到了年末寫總結的時候。我不斷地提醒自己過去這一年是 2021,不是 2022 —— 是的,作為一個使用了 VS2022 好幾個月的人來說,感覺已經在 2022 好久了。然而, 2022 只是即將來臨。回往昔,我都幹了啥?
說起來,只記得最近為了迎接元宇宙,我去複習了《Matrix I、II、III》 —— 好吧,說實話,是為了《Matrix IV》。
不過為了做這個 2021 的思否社群總結,我是真的下了功夫 —— 去扒了下 SF 的個人資料:
------------------------- Article Info -------------------------
count: 20
votes: 216
comments: 39
winner: [34] 安全地在前後端之間傳輸資料 - 「1」技術預研
--------------------- Top 5 Vote Articles ---------------------
1. [34] 安全地在前後端之間傳輸資料 - 「1」技術預研
2. [28] 安全地在前後端之間傳輸資料 - 「3」真的安全嗎?
3. [22] 我與思否,七年之癢 | 思否 9 週年
4. [19] 處理可能超時的非同步操作
5. [16] 嘗試對 jsjiami 加密結果手工解密
------------------------- Replies Info -------------------------
total: 338
accepted: 113 (33.43%)
votes: 307
---------------------- Notifications Info ----------------------
total: 1901
invited: 210 (11.05%)
askMe: 3
askFee: 148.8
voteReply: 241
voteArticle: 227
--------------------- Top 10 Vote Articles ---------------------
1. [----] (115) 理解 JavaScript 的 async/await
2. [2021] (8) 安全地在前後端之間傳輸資料 - 「3」真的安全嗎?
3. [----] (8) 在微信小程式中使用 async/await
4. [----] (8) Token 認證的來龍去脈
5. [2021] (7) 安全地在前後端之間傳輸資料 - 「2」註冊和登入示例
6. [----] (7) 還搞不懂閉包算我輸(JS 示例)
7. [2021] (6) 安全地在前後端之間傳輸資料 - 「1」技術預研
8. [2021] (6) 嘗試對 jsjiami 加密結果手工解密
9. [2021] (6) 我與思否,七年之癢 | 思否 9 週年
10. [2021] (6) 把程式做成系統服務
11. [----] (5) JavaScript 的 this 指向問題深度解析
要說怎麼扒的,當然是使用傳說中的“爬蟲技術”…… 的入門技術:找到 API,找到 Token,寫段程式碼迭代拉取資料,直到把今年的拉完。這不是重點,重點是 ——
2021 年間我寫了 20 篇博文,收穫 216 個贊。其中獲贊最多的是《安全地在前後端之間傳輸資料 - 「1」技術預研》,有 34 個。回答問題 338 個,其中 113 個答案被接受,佔比 33.43%;回答獲贊 307 個,比博文多,但平均下來看還是博文更值錢。
除了統計 2021 年的文章和問題之外,我也想知道往年的文章在今年獲讚的情況。想了一下,可能這個資訊要從提醒訊息裡去拉。結果拉出來 1900 多條提醒。其中邀請回答 210 條,佔 2021 年所有回答的 60%。確實,回想起來,整個 2021 年間,有超過半年的時間沒有什麼創作動力,也不怎麼想回答問題,基本上是有邀請才答,沒邀請拉倒。
不過爬出來的資料有效性不好說。你看,從提醒資料中提取出來文章共獲得 227 個贊,除去前面統計的 2021 年文章的 216 個,只有 16 個贊在以前的文章上。然而,僅《理解 JavaScript 的 async/await》(發於 2016 年)一篇就佔了 115 個贊,這不合理。然後我想,是不是“收藏”的也算了贊,但是沒有單獨出現“贊”的提醒呢,所以重新統計了一下:
---------------------- Notifications Info ----------------------
total: 1901
invited: 210 (11.05%)
askMe: 3
askFee: 148.8
voteReply: 241
voteArticle: 475
--------------------- Top 10 Vote Articles ---------------------
1. [----] (241) 理解 JavaScript 的 async/await
2. [----] (17) Token 認證的來龍去脈
3. [----] (17) 在微信小程式中使用 async/await
4. [2021] (16) 安全地在前後端之間傳輸資料 - 「1」技術預研
5. [2021] (15) 安全地在前後端之間傳輸資料 - 「3」真的安全嗎?
6. [----] (15) 還搞不懂閉包算我輸(JS 示例)
7. [----] (13) JavaScript 的 this 指向問題深度解析
8. [2021] (11) 安全地在前後端之間傳輸資料 - 「2」註冊和登入示例
9. [2021] (10) 嘗試對 jsjiami 加密結果手工解密
10. [2021] (10) 把程式做成系統服務
11. [2021] (9) 過濾/篩選樹節點
結果看起來更接近一些,但是仍然存在差異。可能“有人收藏了你的文章”這裡提到的“有人”有時候不止一個吧 —— 也只能這麼解釋了!但不管怎麼說,這個統計資料已經很說明問題了,2021 一年的博文,比不過曾經一篇的餘熱 ?!
差點忘了,2021 年還有一點現實的收入,3 個付費問題,共計收入 ¥148.8 ?。
除了統計結果,我還想聊點細節。
總的來說,2021 年回答的問題都不是很難,但從我的感覺來看,同學們在資料處理上的問題比較多。怎麼說呢 —— 還是得加強資料結構和演算法和深入學習和理解,以及多運用,多實踐,多積累經驗。大概總結了一下,我回答過的問題有這麼一些分類:
樹型資料的生成、展開和查詢。我有相關的博文可閱讀參考:
- 使用遞迴遍歷並轉換樹形資料(以 TypeScript 為例) 〔2017 年〕
- 從列表生成樹 (JavaScript/TypeScript) 〔2021 年〕
- 過濾/篩選樹節點〔2021〕
陣列/列表資料的過濾、轉換、分組、展開等。
對於前端 (JS) 來說,重點需要閱讀Array
、Object
和Set
/Map
的文件;複雜一點的資料處理,建議把 Lodash 的文件通讀一篇(瞭解即可,不需要記住),然後靈活運用。對於 C# 來說主要是瞭解 Linq 擴充套件(對Enumerable<T>
的擴充套件。而 Java,那就是 Collection 和 stream API 了。這些問題永不過時,早年寫過一些:- 集合資料處理(C#、JavaScript 和 Java)〔2016 年〕
- JavaScript 中對大量資料的多重過濾〔2016 年〕
- JavaScript 陣列分組的實現〔2016 年〕
- 陣列去重(JavaScript 為例)〔2020 年〕
非同步過程相關的問題。非同步過程的處理需要具有一定的非同步思維,畢竟程式碼的順序不一定是執行的順序。而處理非同步程式,各種語言經過這麼多年的研究和發展,都已經有了相對成熟的技術框架和模式,最為簡約好用的一種就是基於 Promise 和 await 模式。當然,非同步處理不僅限於計算程式中的處理,使用者互動、程式互動(API 呼叫)等都存在大量的非同步呼叫。我關於非同步處理的博文似乎也比較多:
- 非同步程式設計需要“意識”〔2018〕
- 理解 JavaScript 的 async/await〔2016〕
- 處理可能超時的非同步操作〔2021〕
- 可以中斷的非同步操作〔2021〕
- 網頁彈框的非同步行為分析〔2021〕
- 還有一些往年寫的內容,可以在我的思否專欄「邊城客棧」中去找
TypeScript 相關的問題。Angular 帶來了 TypeScript 的第一波高潮,但那已經是很久以前的事情了。最近大火的 Vue3 再次將 TypeScript 推了上去,所以 TypeScript 相關的問題也多了起來。TypeScript 的重點難點也是價值點,就是它的型別。但是為了相容 JavaScript 的靈活性,TypeScript 已經將其型別宣告設計來靈活得像一門語言了。我專門寫 TypeScript 的文章不多,基本上都是把它作為示例語言使用。但也並不是沒有:
- 請別誤用 TypeScript 過載函式型別〔2021〕
- JavaScript 和 TypeScript 的封裝性 —— 私有成員〔2020〕
- 還有我的 TypeScript 視訊教程 —— TypeScript從入門到實踐 【2021 版】 —— 歡迎來學!
還有一些其他的分類,比如框架類(Vue 等)的,工作類的,正規表示式類的 …… 其中最讓我感到高興的是有不少程式碼優化類的問題,這充分說明了越來越多的人開始關注程式碼的可讀性和可維護性,而不再只是簡單地追求“能跑”了 —— 別想多了,程式碼真的是給人讀的!要不然人類終將會輸給機器。
我的 2021 過得很平淡,平淡得不知不覺就過完了。本以為也沒什麼好寫的,沒想到還是寫了一大篇。
牛年,我就像老水牛一般低調;虎年,我是不是該站出來咆哮!—— 也許是吧,但那不是我的性格。2022 年又會怎麼過呢?
本文參與了 SegmentFault 思否徵文「2021 總結」,歡迎正在閱讀的你也加入。