[.NET] 有關強式名稱 (Strong Name) 的兩三事

Strong Name 是 .NET Framework 中很特殊的一個特性,大多數的 .NET 開發人員不會使用到這樣東西,不過如果是從事 Framework 或是可轉散布型的軟體的開發人員,就需要知道這東西,因為它是一種組件識別 (asembly Identify) 機制,透過 Storng Name,它可以讓使用該組件的開發人員能確定這個組件是來自於建置的廠商或開發人員,而不是從中被竄改過。

...繼續閱讀 »

[IADP Series] 自己寫 SDK 互動的程式太麻煩了,更 Smart 的 SDK 互動作法

在 Intel AppUp SDK Developer's Guide 中,有不少的篇幅都是在講應用程式和 SDK 一些函式的整合,以將 AppUp Center 的機能和應用程式整合在一起,像是 Application Registration, Instrumentation (Events), Upgrade 與 Crash Report 等,除了之前我所發表的使用 Exception 決定 Crash Report 的功能外,我們還可以進一步的將 SDK 的函式包裝起來,讓在整合 SDK 和應用程式的過程能更簡單,簡單到什麼程度呢 ... 只要使用一個類別即可,而且相關的 Exception 都會轉換成自訂的 Crash Report。

...繼續閱讀 »

[.NET] 使用密碼演算法加解密檔案時,會出現檔案開啟失敗或是大小增加的解法

這是今天碰到的有趣問題。一般我們在使用對稱 (或非對稱) 加密演算法加密資料時,很習慣的就用 CryptoStream,然後用 Write 來加密,用 Read 來解密,而且平常也是用的好好的,一些字串加密的工作其實很容易就做完了。但是如果遇到了檔案型的資料時,很容易會因為檔案大小在加密時發生變化,而導致解密時檔案無法被打開 (ex: Office 2007 的檔案)。如果觀察一下,可以發現原始資料和加密過的資料大小會有不同。

...繼續閱讀 »

[IADP Series] 誰說一定要每個錯誤都要覆寫 Crash Report? 由 Exception 來決定吧。

Crash Report 的原理部份 Alex Lee 大已經有寫一篇文章說明,這裡我就不贅述,不過如果要為每個錯誤都覆寫一次 DefaultCrashReport,那如果應用程式中有上百種錯誤,那豈不是要寫上百個 Crash Report?累死人也 … 那如果可以把 Crash Report 的資料交由 Exception 來決定,開發人員只要簡單的產生自訂的 Exception 的話,那不就變得很簡單?

...繼續閱讀 »

[IADP Series] 開發 IADP-Compliant 應用程式的事前準備

Intel AppUp Developer Program 是一個由 Intel 建置的軟體市集,就像 Apple AppStore 或微軟的 AppHub 一樣,可以讓開發人員自由上傳應用程式,並且由使用者於 AppUp Center 中付費或免費下載使用,而且 AppUp Center 不限於 Mobility 應用程式,它也可以支援 Windows 以及 Web (Flash AIR) 應用程式,而且 Windows 程式還可以支援到 .NET 以及 C++ 環境,更好的是現在 Intel 為了推廣 IADP 計畫,免收 $99 美金的註冊費用,對開發人員來說也算是一種好康吧。

...繼續閱讀 »

[.NET][OAuth Series] EasyOAuth Library for Web Application

自昨天首發 EasyOAuth Library for Desktop Application 後,今天再進一步發表 EasyOAuth Library for Web Application,這個函式庫可以支援 ASP.NET 與 ASP.NET MVC 應用程式開發支援 OAuth 功能的 Web 應用程式,它一樣可以在少量程式開發的情況下讓 Web 應用程式支援 OAuth 的功能,並且與 EasyOAuth Library for Desktop Application 一樣,可支援 Google, Facebook, Yahoo 與 Twitter 四種內建的 OAuth Service Provider。

...繼續閱讀 »

[.NET][OAuth Series] EasyOAuth Library: 容易使用且可擴充的 OAuth Library

這是筆者的第三個 Codeplex 開放原始碼專案,承繼前面四篇 OAuth Series 文章的說明,EasyOAuth Library 建構於 .NET Framework 之上,並且可以很容易的將 OAuth 的功能套用到自己的 .NET 應用程式中,並且開發人員可以依照 EasyOAuth Library 開放的介面,為非內建的 OAuth Service Provider 開發介面,以在 EasyOAuth Library 中直接使用。

...繼續閱讀 »

[OAuth Series] 使用 Access Token 存取 Private APIs

在前一回完成了整個 OAuth 驗證與授權的流程後,程式應該可以成功取得 Access Token 以及 Access Token Secret,只要有這兩個資料,應用程式就可以以 Access Token 所代表的使用者來與 OAuth 服務的 Private API 來互動,大多數 OAuth 服務上的 API 都會需要先取得 Access Token 後才可以使用 (雖然還是有少數可以不用啦),所以這篇文章就來說明怎麼使用 Access Token 來存取 Private APIs。

...繼續閱讀 »

[OAuth Series] OAuth 的各式參數說明

OAuth 使用上最難懂以及測試的,莫過於這些 OAuth 的參數,尤其是在 OWASP 的 Web Security Report 之下,又有 Improper Error Handling 的安全漏洞問題,因此在測試 OAuth 時,最容易吃的苦頭就是只知道 HTTP 400 (Bad Request) 或 HTTP 401 (Unauthorized),有些服務還會提供一些錯誤訊息,但也有一點都不提供的,而且就算有提供,也不一定馬上就可以意識到問題在哪 (ex: Signature Invalid) … 往往都要做很多的實驗才能真正找到問題在哪,我在測試 Twitter 的 OAuth 時就吃了很多的苦頭… Orz。

...繼續閱讀 »

[如何學習寫程式] #9 - 寫程式的人,你不能不會 "資料結構" Part 1

資料結構 (data structure) 是資料的組成方式,資料可以是字串或是二進位資料 (binary data),組成方式則要看不同資料整理的需求,可以是分布在記憶體不同位置,然後用特定方法管理,或是以特別的格式排列組合,以達成有效率管理資料的方式,而一般程式設計人員接觸到最多的是資料結構,因為這會決定你在程式中處理資料的方式,簡單的資料當然可以用很簡單的結構來組織,但是如果在寫程式時不在乎資料結構的話,很容易發生寫出的程式效率低落的問題。

...繼續閱讀 »

[.NET] 產生具有多個值,multipart/form-data 的 HTTP POST 訊息

這個功能是在設計 Facebook Graph API Client Library 時碰到的問題,在 Graph API 中的 Publish_Stream 中有一項上傳相片的功能,這個功能內有一個 message 和 access_token 參數,而原本我們學習的 HTTP 技術本身大多都是沒有混合二進位和字串值的參數,所以當時碰到這個問題時,一時想不到什麼解決方法,後來搜尋到 RFC 2188: Returning Values from Forms: multipart/form-data,這份文件說明了在 HTTP POST 訊息中使用多種格式訊息的作法,它可以用在許多 REST-based API 的系統,它可以混合多種資料格式並一次傳送,當然非文字的資料必須要編碼為二進位字串。

...繼續閱讀 »

[.NET] 使用 HTTP Handler 部署不同作業系統版本的 ActiveX Control

筆者在 ActiveX 控制項開發的封裝部署一文的最後,曾經提到 Windows XP 和 Windows Vista/7 的部署差異,這會讓開發人員需要依照作業系統的不同來撰寫 INF 檔案來自動化安裝,而且還要在網頁中偵測不同的作業系統給予不同的 CAB 檔案,但我們有一些方法來簡化這個部份的處理,讓開發人員可以在不動一行 <object> 宣告下,支援 Windows XP 和 Windows Vista/7 的作業系統環境。其實方法很簡單,只要使用 HTTP Handler 就能做到了。

...繼續閱讀 »