2012年11月26日 星期一

2012 「秋鬥」- 勞工上街頭

IMG_8870
壹電視:勞工上街頭,爭的不是更多薪水或更多福利,而是原本屬於他們的權益,一分都不能少。

2012年11月21日 星期三

[C#] Dynamic Calling Method by String 用字串動態呼叫方法

有同學問了我一個問題,他有一個 Class 裡有一堆 Method ,因為每個 Method 都對應不同情況去使用,目前是用 Switch Case 去判斷使用哪個方法,但是如果數量增加到上百上千的時候,還在用 Switch Case 感覺有點笨,於是想問問看能不能有方法去改得更聰明。

查了一下MSDN,發現有個叫做 Type.InvokeMember 的方法可以做到這點,我寫了個簡單的範例在下面,這根據所需還有很多變化方式可以做,就不一一列出了,有需要可以參考MSDN上的說明。

/// Dynamic Calling Method by String
/// </summary>
/// <param name="methodName">Method Name </param>
/// <param name="stringParam">Parameter</param>

public static void InvokeStringMethod(string methodName, string stringParam)
        {
            Type calledType = typeof(Program);//Program是我那個class的名字

            calledType.InvokeMember(
                        methodName,
                        BindingFlags.InvokeMethod | BindingFlags.Public |
                            BindingFlags.Static,
                        null,
                        null,
                        new Object[] { stringParam });

        }

2012年11月16日 星期五

馬英九的歷史定位 : Ma the bumbler

馬英九在連任勝選之後,對外表示由於未來沒有選舉壓力,第二任期內將積極追求歷史定位而不是個人名利。近來又表示「台灣要增加國際能見度,一定要在各個領域都有傑出表現,都要積極地參與。」,可見馬英九多麼積極的想在歷史上,世界上留名,而就在今天,他的願望實現了。

今天國際知名雜誌《經濟學人》(The economist)刊出了一篇文章,名為「Ma the bumbler」,根據google大神表示,bumbler的意思是這樣:
bumbler

文章內容可以看一下蘋果日報的這篇「《經濟學人》:笨蛋馬英九」,裡面有大致上的翻譯,反正簡單來說就是提了一些台灣近況還有事件,然後是這句"The country appears to agree on one thing: Mr Ma is an ineffectual bumbler.",這可是個國際認證的歷史定位啊.....,馬先生終於達成他的願望了。

經過國際認證後,在google搜尋bumbler ma,已經可以直接看到馬先生的照片了,這個定位應該是跑不掉的。
bumbler ma

2012年11月7日 星期三

[C#] Custom Class in StateServer / SQLServer

這是最近遇到的一個問題,解決之後覺得有價值記錄一下,於是就來寫這篇了。

ASP.NET的 session state 有幾種模式可以設定

  • InProc : 將session state存在那台web server的記憶體中。(預設值)
  • StateServer : 將session stste存在特定的有開啟ASP.NET state service的機器上,這個模式在多台web server共用一台stste server的狀況下,可以在做web server重開、切換這些動作時,同時保持session存在,避免需要session的工作產生錯誤。
  • SQLServer : 將session stste存到指定的SQL server中,效果同StateServer只是儲存媒體不同。
  • Custom : 將session state存到自訂的儲存媒介內。
  • Off : 不使用session

一般常用到的模式會是InProc、StateServer、SQLServer這三種(Custom先跳過不理),InProc預設值通常是不會遇到問題的,但是如果你在開發時有用一些Custom Class(或是某些特定類別),那在Session State改成StateServer/SQLServer(以下稱為Session Server)時,就會遇到下面這個錯誤。

英文版
Server Error in '/' Application.
Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. The same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode.

[SerializationException: Type 'MyCustomObj' in Assembly 'MyObj, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.]
'/' 應用程式中發生伺服器錯誤。
無法序列化工作階段狀態。在 'StateServer' 和 'SQLServer' 模式中,ASP.NET 將序列化工作階段狀態物件,因此不允許無法序列化的物件或 MarshalByRef 物件。在 'Custom' 模式中,自訂工作階段狀態存放區執行類似的序列化作業時,也會有同樣的限制。

[SerializationException: 未將型別 'MyCustomObj' (於組件 'MyObj, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' 中) 標記為可序列化。]