歡迎跟我連絡

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

2009年9月8日 星期二

腳踏式充電器 騎單車健身又節能

BioLogic_FreeCharge_diagram

摺疊車製造商大行(Dahon)日前在德國福吉沙芬舉行的歐洲自行車展(Eurobike Fair)上,發表Biologic FreeCharge腳踏式充電器,成為Twitter上熱烈討論的話題。

FreeCharge充電器可接上任一款市售的花鼓發電機(dyno hub),把你踩踏板產生的電力局部轉入高容量電池,再把穩定的電流充入iPod、手機、GPS等小型裝置。

充電器以簡單的矽膠外殼封裝,牢牢地固定在自行車上,讓你一邊腳踩踏板,一邊為iPhone或iPod充電。

用FreeCharge為攜帶型裝置充電,能否像插上120瓦插座充電一樣快速,目前還不清楚--充飽電所費的時間可能也要看踩踏板的速度有多快。不過,iPhone一般得三個小時才能充飽電,所以除非你是騎自行車去郊外踏青,否則可能只適合其他較小型的裝置做充電。

BioLogic FreeCharge可望在明年3月推出,售價約99美元。

轉載自 ZDNet新聞專區http://www.zdnet.com.tw/news/ce/0,2000085674,20140728,00.htm

2009年9月3日 星期四

今日的Google主題 : 多啦A夢的生日

多啦A夢》(日文:ドラえもん;英文:Doraemon),為日本漫畫家藤子·F·不二雄筆下著名的漫畫動畫作品,主要是敘述一隻來自22世紀的貓型機械人多啦A夢,受原本主人野比世修的託付,回到20世紀,幫助世修的高祖父野比大雄的故事。

此漫畫自1969年開始連載,為第一屆手塚治虫文化賞的漫畫大賞得獎作品,藤子·F·不二雄親自執筆連載了1345回,並至少有短篇單行本50冊(含PLUS)已經發行,原著大長篇漫畫有17本(加上其弟子所編繪之大長篇則有24本以上)。

另一位漫畫家藤子不二雄Ⓐ,有時會被誤認為作者之一,雖然他與藤子·F·不二雄曾經長期共用「藤子不二雄」此一筆名,但是實際上前者並未參與《多啦A夢》的製作。

2009-9-3 上午 08-30-36

雨季說:

陪5 6年級生度過童年的卡通人物,漫畫中總是為未來的科技產品勾勒出藍圖...

2009年9月2日 星期三

網頁內含圖檔下載程式

蠻久以前寫的一個小程式,介紹給大家...

程式目的:下載網頁內含的JPG檔到C:\MY_PIC內

(當然你也可以透過IE右鍵另存圖片...哈哈)

程式原理:利用WebBrowser控制項,讀取網頁HTML Document,然後利用正則表達式,找出HTML內所有的圖檔路徑並下載.

正則表達式:

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?

程式Layout說明:

2009-9-2 上午 10-31-10

以下列網頁為例:

http://dcview.com.tw/gallery/showmsg.asp?msgid=774265&place=1&posit=1

2009-9-2 上午 10-58-09 2009-9-2 上午 11-01-46

2009-9-2 上午 11-12-15

2009-9-2 上午 11-13-49

重要程式碼節錄

解析網頁

ArrayList FilesArrayList = new ArrayList();
MatchCollection FilesMachCollection = Regex.Matches(myWB.DocumentText, textBox2.Text, RegexOptions.Compiled);
for (int i = 0; i < FilesMachCollection.Count; i++)
{
      FilesArrayList.Add(FilesMachCollection[i].ToString());
}

其中textBox2.Text = (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?

 

下載圖檔

string myPath = @"C:\MY_PIC\";
using (WebClient client = new WebClient())
{
    if (!Directory.Exists(myPath))
    {
        Directory.CreateDirectory(myPath);
        a = 0;
    }
    else
    {
        a = Directory.GetFiles(myPath).Length + 1; //計算下一圖檔檔名序號
    }
    progressBar1.Maximum = 100;
    progressBar1.Minimum = 0;
    progressBar1.Value = 0;
    for (int i = 0; i < listBox1.Items.Count; i++)
    {
        Application.DoEvents();
        string fileName = myPath + a.ToString().PadLeft(10, '0') + ".JPG";
        client.DownloadFile(listBox1.Items[i].ToString(), fileName);
        Application.DoEvents();
        double nowValue = (100 * (i + 1)) / listBox1.Items.Count;
        progressBar1.Value = (int)nowValue;
        Application.DoEvents();
        a++;
    }
}

執行檔[MD5 : 3076129e886d503a20022ae7cabeda8e]

 

Source Code[MD5 : 03800d5e8d311eeb7bf48193fbb3c709]

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

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