1. [設計案例] "授權碼" 如何實作? #3, 數位簽章

    資料的封條: 數位簽章 原理說明

    這裡最關鍵的就是軟體該如何確認 "這份資料是否是原廠提供,而非第三者偽造的假資料?" 這個問題。這類安全問題,最忌諱的就是讓一些搞不清楚狀況的工程師自己土炮一堆怪怪的 "加密" 方式,試圖混淆內容讓別人認不出來。這是很危險的,因為你靠的是 "演算法" 來保護資料,而不是靠 "金鑰" 來保護。如果你靠的是別人不知道你怎麼加密的,那麼將來這份程式碼你敢 Open Source 嗎? 你能不讓你的團隊其他成員 REVIEW 你的 CODE 嗎? 既然 CODE 不是絕對保密的,那麼你如何能證明你的資料是絕對安全的? 所以,比較可靠的方式,還是要靠那麼多人對密碼學的研究,用公開的演算法 + 只有你才擁有的金鑰,來保護你的資料才是上策。也因為這樣,請盡可能的採用廣為流通的加密方式及涵式庫。

    2016/02/24 設計案例: “授權碼” 如何實作? .NET ASP.NET C# 專欄 技術隨筆 物件導向

  2. [設計案例] "授權碼" 如何實作? #2, 序列化

    這次直接跳到主題: 網站安裝授權開始吧。這東西的用途,就跟過去安裝軟體要輸入序號一樣的目的,輸入序號之後,軟體不用上網就要能知道你購買的是什麼版本,有哪些功能要被啟用? 在不連到 internet 的情況下,要單靠一段授權資料就達到這目的,最好是能簡單明瞭,資料結構清楚容易擴充維護,同時安全強度還要夠強 (防止偽造),這就是這次要解決的問題。 我的目的,不但要顧及功能性(安全強度),同時也要顧及程式碼及系統架構的層面,因此我拆成兩個部份來探討,一個就是最關鍵的資料安全問題,另一個就是如何用程式碼來表達及封裝這些功能?

    2016/02/24 設計案例: “授權碼” 如何實作? .NET C# 專欄 技術隨筆 物件導向

  3. [設計案例] "授權碼" 如何實作? #1, 需求與問題


    The Architect, The Source (電影: The Matrix 3)

    好久沒寫 [設計案例] 這系列的文章了。其實我一直注意到台灣的部落格 & 社群分享,講 “How To” 的遠多過講 “Why” ,過於注重 coding 的技巧,卻忽略了問題的思考。能挑選正確的技術與架構來解決 business 上碰到的問題,這才是 software / system architect 的核心能力啊… 這次我碰到適合的案例,就來補給篇文章吧,我想從我如何思考這問題的 solution, 到如何實作出解決方案的過程,從頭到尾交待一次,讓有興趣在軟體業走進 system architect 這角色的讀者們,有個可以參考的案例!

    2016/02/17 設計案例: “授權碼” 如何實作? 專欄 技術隨筆 物件導向

  4. [敗家] 對岸的迷你 PC (i5-5250U), 當自用 server 的好選擇

      圖片來源: 敗家鬼附身~~ 說到個人用的 server, 我是相當有經驗的 XD,從當年念大學開始,就開始把 PC 開著放宿舍連回去或是給同學用,這習慣一直到現在都有,只是設備從自己用的 PC,換到準備專用的 PC SERVER,再到 NAS .. 不過自從開始認真研究 docker, 加上想用 docker 認真的執行一些服務後 (例如這個 BLOG 用的 wordpress), NAS 貧弱的效能問題就被凸顯出來,所以前幾個月才弄了台要被報廢的 NoteBook 當作 Linux Server.. NB 當 server 有很多好處,但是畢竟不是長久之計,而這台 NB 的 CPU 也不怎麼樣,將來也是個瓶頸,於是就一直有在物色其他適合的替代方案,反正沒有立即的需求,就騎驢找馬有空就看看,直到....  

    2016/02/07 專欄 敗家 有的沒的

  5. .NET Core 跨平台 #5, 多工運算效能大考驗 – 計算圓周率測試

      external image tumblr_lstbslOSFm1qd5bcwo1_500.gif 前面幾篇,研究完記憶體管理的部分之後,接著就是來看看運算的效能了。這部分的測試方式,我想了很久,最後決定拿出老本行: 平行處理的部分來當作 .NET core 跨平台第二回合的主題! 如果單純只是要將各種平台的 .NET Core 比出個高下,那感覺有點像是拿 benchmark 在賽豬公而已,這樣的話找現成的 C# benchmark 應該比較快。因此,我把測試的目的定義清楚,我想藉由這些測試的進行,一方面了解不同平台的差異,我也想透過測試更熟悉這些環境,還有試圖從測試的結果挖出背後運作原理的不同。所以,上一個記憶體管理的主題,已經達到目的了,不這樣測試我還真的不曉得 Linux 預設會壓縮(?) 為初始化的記憶體... 算是值回票價。

    2016/01/15 系列文章: .NET Core 跨平台 .Net Core C# Docker 專欄