2013年11月17日 星期日

BackgroundAgent 與 Stream

在 Windows Phone 上面有些 Namespace 下的類別是無法在 BackgroundAgent 中使用的,但有些類別雖然在一般 App 與 BackgroundAgent 都可以使用,但行為卻有些不同,標題所列出來的 Stream 就是其中一個。

2013年10月26日 星期六

URI Associations

各 OS 上讓 App 與 App 溝通的方法幾乎都有 URI Associations 和 File Associations 兩種,Windows Phone 8.0 上面也支援這兩種方式,File Associations 我個人覺得在 Windows Phone 上面的應用場合比較低,這裡僅記錄在 Windows Phone 上面實作 URI Associations 流程的經驗。

2013年10月21日 星期一

Prototype

Prototype 這個設計模式就我的理解來說,要解決的問題簡單的說有三個。
1. 減少 "類別" 的數量
2. 減少一個類別中的 "建構式" 的數量以控制類別的程式碼行數
3. 精準的產生不同群組的物件

2013年9月30日 星期一

Singleton 搭配 Abstract Factory

自從多年前學會 Singleton 這種實作技巧以後,只要是非拋棄式的專案我幾乎都會用到且用途都一樣,就是取代全域的物件,一般書籍介紹到 Singleton 時也是提到這是用來確定某一個物件的唯一性所用的技巧。

2013年9月29日 星期日

Abstract Factory

Abstract Factory 譯作抽像工廠,其實這真的很難顧名思義,不過大致上可以由名字看得出來,這個模式的目的在於生產出抽像類別,而抽像類別有個無法被建構的特性,抽像類別的目的是用來描述屬於該種類的東西具備著什麼樣的型像與功能。

2013年9月28日 星期六

Abstract Factory 與 Factory Method 概念比較

前陣子和同事在聊 Factory 時有各講各的感覺,後來發現可能是有些在講 Abstract Factory,有些在講 Factory Method,故記錄一下自己的想法。

2013年8月4日 星期日

好用的 ConditionalAttribute

在現實的專案中,如果你的產品行銷合作對像不只一、兩個,可能就會產生一些奇特的需求,例如包給某廠商的版本要比一般官網的版本多一些認證流程、在 Registry 中寫入不同的值做識別之類的,更常見的還有在 Debug 階段需要執行寫 Log 的流程這種需求。

2013年8月1日 星期四

轉型方法的選擇

先前在撰寫某個 Windows RT 的專案時,因為要用到 GridView + VariableSizedWrapGrid 這種元件,寫了一篇 http://ascii-iicsa.blogspot.tw/2012/07/gridview-variablesizedwrapgrid.html

當時並沒有想太多,因為該專案不算複雜,我只定義了一種叫 ItemBase 的類別來讓專案中所有的 GridView 做 Binding,直到後來我碰到一個狀況。

2013年7月16日 星期二

複製 Resouce 至檔案系統

有時我們會在專案中放一些圖片、影片之類的檔案當作應用程式的範例檔,或預設頭像之類的,此處記錄一下該如何把專案中的資源複製到 IsolatedStorage 中。

2013年7月13日 星期六

取得類別名稱

大部份知名的 Design Pattern 實作技巧都是建立在抽像類別上面,因為最近在 C++ 上綀習一些 Design Pattern 時,因為都是操作基底的抽像類別,所以產生了想要知道目前物件到底型態是什麼的需求。

2013年7月3日 星期三

Globalization 一定要搭配的 FormatMessage

在製作多語系的軟體時,可能會碰到各種語言之間因為詞性的關係而造成子句順序不同的情況,這種情況下單純的 String.Formate 函式就顯得使不上力

2013年6月26日 星期三

自訂應用程式中的 WebBrowser 版本

寫 Web 的人都了解,有個讓網頁開發者很困擾的問題,就是各家瀏覽器對 HTML、CSS 的表現不一致,這種現像尤其在微軟的 Internet Explorer 上更明顯,雖然 IE 9、10 已經明顯的趕上其他瀏覽器,但並不是所有的電腦用戶都會理解網頁看起來怪怪的是瀏灠器版本的問題而自行更新瀏覽器。

2013年6月25日 星期二

指定應用程式 Crash Dump 的儲存位置

在 Windows XP 作業系統下,應用程式 Crash 時會產生一種副檔名為 dmp 的檔案,內容記載著執行檔的記憶體資料及 StackTrace 等資訊可用來 Debug。

32-bits、64-bits 作業系統的 Registry 注意事項

在 64-bits 的作業系統下執行 32-bits 的應用程式時,若需要寫入 Registry 時,會發現機碼被作業系統預設寫入 Wow6432Node 的目錄底下,不論是 HKEY_CURRENT_USER 還是 HKEY_LOCAL_MACHINE 皆相同。

2013年6月24日 星期一

自訂應用程式的 UAC 執行層級

在專案屬性中的 "組態屬性、連結器、資訊清單檔、UAC 執行層級" 中共有此 3 種屬性 asInvoker、highestAvailable、requireAdministrator 可以選擇,這三種層級的詳細說明可以參考這裡:Embeds UAC information in manifest

2013年6月23日 星期日

C++ 的 delegate

C++ 是 OOL 沒錯,但卻沒有近代 OOL 常用到的 delegate 語法,這導致有些 Delegation Pattern 在 C++ 上面難以實作得很到位,蠻多文章都會示範如何利用 Interface 來模擬 Delegation Pattern 的方式,但還是有不少令人看起來覺得怪怪的程式碼,前陣子在看一個 OpenSource 專案,名叫 FastDelegate

2013年4月21日 星期日

Jenkins 使用 msysgit 無法正常 clone 專案

這幾天我首次嚐試在 Windows 8 上建立 Jenkins 環境用來編譯一些 Windows Phone 及 Windows RT 的專案,Jenkins 的安裝實在是太方便了,把 Java Runtime 裝好後,執行 Java -jar jenkins.war 再點點滑鼠建立 Windows Service 大概就沒什麼事要做了,反倒是讓 Jenkis 從 GitHub 自行 Clone 專案花了我很多時間找問題。

2013年4月20日 星期六

原來對話框置中不用自己寫

之前如果有需要開啟自己另外製作的對話框,我常常都會加上一個 Function 讓這個對話框被 DoModal 後可以自行將位置調整到開啟它的母視窗的中間位置,會這麼做是因為在視窗屬性中設定 Center 為 True 是讓對話框出現在螢幕的正中間,而不是母視窗的正中間…

2013年4月19日 星期五

Pivot 及 Panorama 使用 ItemTemplate

前陣子在寫一個新產品,因為頁面上使用了 Pivot 做呈現,但因為某幾頁的資料不一定會出現,所以 PivotItem 是不固定的,所以不能在 XAML 中寫死,而且 PivotItem 的 Visibility 屬性基本上是設心酸的,設為隱藏根本就沒反應,只能透過 Pivot.Items.Remove 或 RemoveAt 方式來拿掉某頁…

2013年3月12日 星期二

在 C# WP8 專案中建立 Local DataBase 的幾種選擇

在 Windows Phone 7 的時代,想建立 Local DataBase 的方法除了使用官方的 LINQ to SQL 之外,還有另外兩個比較多人選擇的開源套件分別是

2013年3月6日 星期三

SetRegistryKey

今天在掃某個 MFC 的專案,注意到有一個叫 SetRegistryKey 的函式,一看到時遲疑了一下,想到其實就在新建立的專案中也可以看到這行,這才發現自己原來不認識,也從來沒去看一下這行 Code 是做什麼的。

2013年3月3日 星期日

升級 8.0 SDK 後發現的一些變化

手上有一個 Windows Phone 的專案在前陣子將專案設定中的 "目標 Windows Phone OS 版本" 由原本的 7.1 轉為 8.0,轉換過程沒什麼異常,倒是佈屬到 8.0 的手機上時發現一些功能失效了,故以此篇來記錄目前發現的差異 API 及處理方法。