歡迎跟我連絡

本頁最下方有Web MSN可以直接跟我交談喔!
免安裝程式...哈哈 歡迎聊天

2009年8月29日 星期六

H1N1 新型流感與一般感冒症狀比較表

一、世界衛生組織警告,全球H1N1新型流感疫情暴發大流行,H1N1新型流感來
勢洶洶,疾病管制局預估,未來新流感感染進入高峰期,國內感染人口將達三成,請各位多加注意。
二、下表H1N1新型流感與一般感冒症狀比較表,敬請參照。

 

H1N1新型流感 一般感冒

3-6小時內會急速發高燒(37.8度以上)  且會急速的全身性肌肉酸痛

逐漸發燒及全身性肌肉酸痛
約80%以上會有嚴重的頭痛 輕微的頭痛
無流鼻涕但有咳嗽及喉嚨痛 流鼻涕及咳嗽
幾乎沒有打噴嚏(較不常見) 打噴嚏
37.8度以上之高燒會持續3-4天 偶會發高燒
大多數的人會有發燒惡寒

偶會有惡寒  

持續會有嚴重的疲勞感與虛弱 輕微的疲勞感
扁桃腺不會腫 扁桃腺會腫
會有嚴重的胸部壓迫感 無胸部壓迫感

 

祝大家 身體健康~~~

72893606_m7w5szCg

2009年8月27日 星期四

檔案下載 from Http Server in C# (同步vs非同步)

無法查看此摘要。請 按這裡查看文章。

2009年8月26日 星期三

Snow Leopard

不用我多說Mac迷(Apple迷),也知道這是啥...

有時候覺得Microsoft的行銷真是有夠差...

看到這網站的圖像,真想就敗下去...

http://www.apple.com/tw/mac/

mobile01-e864a20e13adf49d8f6768faa2565f44

2009-8-26 下午 10-30-36

Reflection in C#

System.Reflection 這個Name Space,有著強大的Hack Function.

以下是MSDN對它的一些描述

反映(Reflection)概觀

Common Language Runtime 載入器可管理 應用程式定義域,這些定義域可在具有相同應用程式範圍的物件周圍構成定義的界限。這個管理包括載入各個組件至適當應用程式定義域,和控制各個組件內型別階層架構的記憶體配置。

組件包含模組,模組包含型別,而型別包含成員。反映提供封裝組件、模組和型別的物件。您可以使用反映,動態建立型別的執行個體、繫結型別至現有物件,或從現有物件取得型別。您可以接著叫用型別的方法,或存取它的欄位和屬性。反映的一般用法如下所示:

  • 使用 Assembly 定義並載入組件、載入組件資訊清單 (Assembly Manifest) 中列出的模組,和從這個組件找出型別並建立它的執行個體。

  • 使用 Module 探索資訊,例如包含模組和模組中類別的組件。您也可以取得所有全域方法或是在模組上定義的其他特定非全域方法。

  • 使用 ConstructorInfo 探索資訊,例如名稱、參數、存取修飾詞 (例如 publicprivate),以及建構函式的實作 (Implementation) 詳細資訊 (例如 abstractvirtual)。使用 TypeGetConstructorsGetConstructor 方法,叫用特定的建構函式。

  • 使用 MethodInfo 探索資訊,例如名稱、傳回型別、參數、存取修飾詞 (例如 publicPrivate),以及方法的實作詳細資訊 (例如 abstractvirtual)。使用 TypeGetMethodsGetMethod 方法,叫用特定方法。

  • 使用 FieldInfo 探索資訊,例如名稱、存取修飾詞 (例如 publicprivate),以及欄位的實作詳細資訊 (例如 static),並取得或設定欄位值。

  • 使用 EventInfo 探索資訊,例如名稱、事件處理常式資料型別、自訂屬性、宣告型別和事件的反映型別,並加入或移除事件處理常式。

  • 使用 PropertyInfo 探索資訊,例如名稱、資料型別、宣告型別、反映型別和屬性的唯讀或可寫入狀態,並取得或設定屬性值。

  • 使用 ParameterInfo 探索資訊,例如參數的名稱、資料型別、參數是否為輸入或輸出參數,和方法簽章 (Signature) 中參數的位置。

  • 使用 CustomAttributeData 探索在應用程式定義域的僅限反映內容中工作時,關於自訂屬性的資訊。CustomAttributeData 讓您可以檢查屬性,而不需要建立這些屬性的執行個體。

System.Reflection.Emit 命名空間的類別提供反映的特殊形式,允許您在 Run Time 建置型別。

反映也可以用來建立稱為型別瀏覽器的應用程式,允許使用者選取型別並接著檢視那些型別的資訊。

反映還有其他用法。語言編譯器,例如 JScript,會使用反映建構符號表。 System.Runtime.Serialization 命名空間中的類別會使用反映存取資料,並判斷哪個欄位要保存 (Persist)。 System.Runtime.Remoting 命名空間中的類別會透過序列化 (Serialization) 間接使用反映。

 

不說廢話,來一個範例看看它的威力,先看一下程式大概架構,如下圖所示

2009-8-26 下午 04-12-53 方案中有兩個專案,(1)TEST(2)物件Reflection

(1)TEST : 在 FormTest.cs 新增 (其他啥事都不做)

private int Add(int a, int b)
{
    return a + b;
}

(2)物件Reflection : FormReflection Layout如上圖,FormReflection.cs新增兩個Button Event

private void button2_Click(object sender, EventArgs e)
{
    OpenFileDialog myOFD = new OpenFileDialog();
    myOFD.Filter = "*.exe|*.EXE";
    if (myOFD.ShowDialog() == DialogResult.OK)
        textBox4.Text = myOFD.FileName;
}
private void button1_Click(object sender, EventArgs e)
{
    Assembly myAssembly = Assembly.LoadFile(textBox4.Text);
    Type myType = myAssembly.GetType("EST.FormTEST");
    object MyInstance = Activator.CreateInstance(myType);
    textBox3.Text = myType.InvokeMember("Add",
                    BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,
                    null, MyInstance, new object[] { int.Parse(textBox1.Text), int.Parse(textBox2.Text) }).ToString();
}

原理:

按下FormReflection button2,選取Test.exe所在路徑

按下FormReflection button1,Call Test.exe 的TEST.FormTEST Add(…),完成運算

2009-8-26 下午 04-48-18

以上只是一個最簡單的範例,Reflection還有很多很強大的功能,有待研究...

Source Code [MD5 : 4fbf53d221d4605190bc048f57e32b39]

電腦族的福音

這是一篇網路分享的文章,他原有老花及近視,做這個穴道按壓半年後去驗視力已達1.2,現在他已不帶眼鏡有空就按明眼穴。工作離不開電腦的人需要這個妙方!祝您健康!
◆舒緩眼睛疲勞的妙方 明眼穴
上了年紀,容易老花眼,試試看明眼穴的按摩,保證您耳聰目明。工作離不開電腦的人,需要這個妙方!假如我們常常會感到眼睛會疲勞,但又不是睡眠的時間,這時我們可以利用穴道的按摩法,來舒緩眼睛疲勞的症狀。
在我們的姆指上有三個相鄰接的穴道分別是明眼鳳眼大空骨(如下圖),明眼、鳳眼能夠改善眼睛疲勞和急性結膜炎,大空骨則可改善一切有關於眼睛的症狀。平時眼睛容易疲勞的人,每天要刺激這三個穴道兩次。
刺激的方法是,用另一手的拇指和食指夾住,以拇指的指甲分別對這三個穴道施予刺激,只要以稍微感覺到疼痛程度的力氣來指壓即可。
這是項簡單的按摩方法,當工作的休息時間、或是通車的空檔,均可自行操作。眼睛疲勞往往不容易入睡的人,如果施予上述的刺激來消除眼睛的疲勞,便可輕易地入睡,以上的方法還可以抑制老人性的白內障。

希望大家天天都健康!

 

pic55916

陣列排序(Arrays Sorting) in C#

陣列可以透過Static Method Array.Sort來達到排序的目的.

(1) C# 基礎型別(Primitive types :int, double or string)

Int Array :

int[] intArray = new int[5] { 8, 10, 2, 6, 3 };
Array.Sort(intArray);
foreach (int i in intArray)
   Console.Write(i + " ");

輸出: 2 3 6 8 10

String Array :

string[] stringArray = new string[5] { "X", "B", "Z", "Y", "A" };
Array.Sort(stringArray);
foreach (string str in stringArray)
   Console.Write(str + " ");

輸出: A B X Y Z

(2)透過Delegate對自訂型別排序

定義類別

class User
{
     public string Name;
     public int Age;
     public User(string Name, int Age)

     {

        this.Name = Name;
        this.Age = Age;
     }
}

定義使用者資料

User[] users = new User[3]
              { new User("Betty", 23),
                new User("Susan", 20),
                new User("Lisa", 25)
              };

 

//根據姓名排序  Inline delegate
Array.Sort(users, delegate(User user1, User user2)
{
    return user1.Name.CompareTo(user2.Name);
}
);
foreach (User user in users)
     Console.Write(user.Name + ":" + user.Age + " ");  

輸出: Betty:23 Lisa:25 Susan:20

 

//根據年齡排序  Method Delegate
delegate int mySort(User user1, User user2);


Array.Sort(users, mySortMethod);
foreach (User user in users)
     Console.Write(user.Name + ":" + user.Age + " ");

private int mySortMethod(User user1, User user2)
{
       return user1.Age.CompareTo(user2.Age);
}

輸出: Susan20 Betty23 Lisa25)

(3)透過IComparable對自訂型別排序

定義類別

public class User : IComparable
{
  public string Name;
  public int Age;
  public User(string Name, int Age)
  {
     this.Name = Name;
     this.Age = Age;
  } 

  // implement IComparable interface
  public int CompareTo(object obj)
  {
    if (obj is User)
    {
      return this.Name.CompareTo((obj as User).Name);//根據姓名排序
    }
    throw new ArgumentException("Object is not a User");
  }
}

定義使用者資料

User[] users = new User[3]
              { new User("Betty", 23),
                new User("Susan", 20),
                new User("Lisa", 25)
              };

//根據姓名排序

Array.Sort(users);

 

2009-8-12 下午 01-02-48

設定 DoubleBuffered 屬性(Property)

下面的範例是如何設定 protected 的Control.Double­Buffered屬性為True,這是一個經常需要去特別修改的屬性,這樣一來就可以避免重繪控制項時造成的螢幕閃爍.

所有的控制項都有Double­Buffered屬性,但是此屬性是被[protected]保護起來,底下這個Function,利用了Reflection來存取 non-public 的methods 以及properties,如此一來就可以輕易的修改Double­Buffered屬性...

範例程式:

// set instance non-public pr operty with name "DoubleBuffered" to true typeof
public static void SetDoubleBuffered(Control control)
{
       typeof(Control).InvokeMember("DoubleBuffered", 
       BindingFlags.SetProperty |BindingFlags.Instance | BindingFlags.NonPublic, 
       null, control, new object[] { true } );
}

2009-8-12 下午 01-03-39

今日的Google主題 : 七夕情人節

2009-8-26 上午 08-32-11

每年的農曆七月七日是中國的情人節。比起外國的情人節更是專指向「愛情」。因為外國的情人節,原旨是人與人之間的互愛,或親情、或友情、或愛情,並非只限於男女之情。但是中國的七夕情人節,則是描述一對情侶的故事。

傳說,天上玉皇大帝有七個女兒,其中最小的女兒織女,最聰明可愛、手藝又巧。天上皇宮中的重要織錦都由她負責設計與製作。另外,玉皇大帝有一群牛,由一個叫做牛郎的年輕人負責管理。兩人情投意合、互相愛慕,至荒廢了原本的工作。於是玉皇大帝下旨,叫喜鵲告訴這兩個熱戀的情侶要節制,七日見一次面即可。沒想到喜鵲傳錯話,他們以為每天均可相見,更是高興無比,工作完全拋在腦後。

玉皇大帝這回就龍顏大怒,降旨他們每年只能見一次面,就是農曆七月七日的晚上。那一天喜鵲這群肇事者就負責搭橋,讓他們兩人踩在他們的肩膀上相會。因為一年僅能見一次面,當然有說不完的衷曲、道不盡的悲情,於是那天幾乎都會下著毛毛雨,象徵兩人的淚水。

從這個故事,可以看見傳統中國人對於「負責的工作態度」十分看重。不過因為愛情的浪漫卻使得這個七夕情人節傳說走樣,大家通常將焦點集中在「情侶被迫分隔兩地」。強調情人好不容易見面,那種淒美絕倫的場景。於是很多因為工作、因為當兵、因為父母反對、因為求學、、各種原因分隔兩地的情侶,都會希望在農曆七月七日見到面。然後兩人就心理投射自比為牛郎、織女,一起浸淫在這種浪漫感人「被迫害妄想」的情懷!

如果你有情人,那就好好享受這種熱戀的感覺。如果你沒有情人,那你就思想七夕情人節的傳統教訓是表達「負責任的工作態度」重要性,好好去努力工作一番吧!

2009年8月24日 星期一

LG Watchphone

LG GD910 配備 HSDPA 7.2Mbps 的高速 3.5G 傳輸支援及 1.43 吋輕觸式螢幕,更可進行視像通話。

patterson-133659211-1231361502

保護(加密) 應用程式組態檔 (App.config)

VS2005中提供的一個方便的功能就是[專案]中->[Properties]->[Settings.settings],一個方常方便的功能,提供了User層級及Application層級的應用程式設定值設定.

可以透過VS2005的功能修改及讀取,甚至是Reset為原始值.(下兩圖所示)

2009-8-24 上午 09-34-20

2009-8-24 上午 09-49-59

  但是有時候不想要讓使用者動到Application層級的設定值,或是讓人家知道程式的重要設定值,你可以進行加密的動作,像是下圖

2009-8-24 上午 09-26-23

以下是一個簡單的範例Step by Step教你達成...

(1)建立你的應用程式及設定你的Application Setting

2009-8-24 上午 10-09-512009-8-24 上午 10-12-30

(2)在Form1建構式中加入這行

this.Text = MyDemo.Properties.Settings.Default.MyApplicationName;

下圖所示

2009-8-24 上午 10-23-39

(3)新增一個安裝程式類別 如下圖

2009-8-24 上午 10-30-47

2009-8-24 上午 10-32-25

2009-8-24 上午 10-33-15

2009-8-24 上午 10-33-42

(4)於安裝程式類別 override Install Method & Add ProtectSection Function

using System.Configuration;

public override void Install(System.Collections.IDictionary stateSaver)
{
    base.Install(stateSaver);

    //get Protected Configuration Provider name from custom action parameter
    string sectionName = this.Context.Parameters["sectionName"];

    //get Protected Configuration Provider name from custom action parameter
    string provName = this.Context.Parameters["provName"];

    // get the exe path from the default context parameters
    string exeFilePath = this.Context.Parameters["assemblypath"];

    //encrypt the configuration section
    ProtectSection(sectionName, provName, exeFilePath);
}
private void ProtectSection(string sectionName, string provName, string exeFilePath)
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(exeFilePath);
    ConfigurationSection section = config.GetSection(sectionName);

    if (!section.SectionInformation.IsProtected)
    {
        //Protecting the specified section with the specified provider
        section.SectionInformation.ProtectSection(provName);
    }
    section.SectionInformation.ForceSave = true;
    config.Save(ConfigurationSaveMode.Modified);
}

2009-8-24 上午 10-41-23

(5)打開app.config 並加入下面Section

<configProtectedData>
    <providers>
      <add useMachineProtection="true" name="DPAPIProtection"
          type="System.Configuration.DpapiProtectedConfigurationProvider,System.Configuration,&#xD;&#xA;  Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </providers>
  </configProtectedData>

2009-8-24 上午 10-45-58 

(6)新增一安裝專案(加密部分需安裝後才會看的出來)2009-8-24 上午 10-48-202009-8-24 上午 10-49-59 2009-8-24 上午 10-50-50 (7)修改安裝專案內容

2009-8-24 上午 10-54-532009-8-24 上午 10-58-02 2009-8-24 上午 10-59-182009-8-24 上午 11-04-532009-8-24 上午 11-05-12 修改屬性內容如下

/sectionName="applicationSettings/MyDemo.Properties.Settings" /provName="DPAPIProtection"

2009-8-24 上午 11-11-45

(8) Add Ref System.Configuration

2009-8-24 上午 11-18-18 2009-8-24 上午 11-19-04

(9) 編譯程式 (如果有按上面步驟操作應該會編譯成功)

2009-8-24 上午 11-15-35

(10)安裝應用程式

2009-8-24 上午 11-26-19

安裝完後,大功告成...

 

確認結果

2009-8-24 上午 11-29-44

2009-8-24 上午 11-31-17

範例程式[MD5 : c77f290441698787fc94d3325a2b41b4]

Source Code[MD5 : 4339ec62e8bfed90c3d6efa177152456]

MSN狀態(我在線上時,可以跟我交談喔)