2011/12/22

C#: Covariance與Contravariance的不同

static object GetObject() { return null; }
static void SetObject(object obj) { }
static string GetString() { return ""; }
static void SetString(string str) { }
static void Main()
{
// Covariance. A delegate specifies a return type as object,
// but I can assign a method that returns a string.
Func<object> del = GetString;

// Contravariance. A delegate specifies a parameter type as string,
// but I can assign a method that takes an object.
Action<string> del2 = SetObject;

// But implicit conversion between generic delegates is not supported
until C# 4.0.
Func<string> del3 = GetString;
Func<object> del4 = del3; // Compiler error here until C# 4.0.
}

Future reading:
http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contrava
riance-faq.aspx

C#資料型態的轉型與運算子優先順序

今天我寫了一C#段程式碼,目地是要抓取DrowDownList1被挑選的順序,然後加一就是
資料庫內的定義。
String sql = "insert into tablename (field1, field2) values " +
DrowDownList1.SelectedIndex + 1 + ", 'abc'";
看似上面的code沒有問題,如果不把sql印出來看,我想很多人不知道問題所在。恍然
一看完全抓不出頭緒,
一開始我還以為是URL編碼問題,很顯然一直抓錯方向,浪費時間,一直到我把DB
Server內所有的資料Select出來之後
才發現怎麼會有field1的value是11的,這時我才恍然大悟,原來
DrowDownList1.SelectedIndex是int ,1也是int,
自然會以為它們會先相加,結果錯了,不知道甚麼規定,
DrowDownList1.SelectedIndex與1都被轉型成string,然後用字串的加,也就是字串合
併。
好難抓的BUG喔,如果是C或C++這種不提供加號作為字串合併的語言,就不會有這種問
題,方便性之外,也提供了犯錯的方便性。
怎麼解自然不用多說了,(DrowDownList1.SelectedIndex + 1)前後加上,讓他先算就
好了。
順道一提一個在C# C++ C都會犯上的錯誤習慣
並不是說這樣寫是錯的 是很容易犯錯 所以是壞習慣
Response.Write(i++);
Printf("debug i=%d", gdb(&i));
本來上面的程式碼只是拿來除錯用
但是卻在裡面進行的區域變數的變動或者呼叫其他函數,而且還是call by address
這樣萬一以後取消這些print或dump的程式碼時 往往容易忘記裡面又進行了區域變數的
變動或者呼叫其他函數
特別是當要dump的information很長時

2011電信創新應用大賽冠軍榮耀誕生 激發創意能量 提升台灣軟實力

2011電信創新應用大賽 25萬冠軍得主榮耀誕生

激發創意能量 提升台灣軟實力 迎向全民數位新生活

中華電信今年首度擴大舉辦的「2011電信創新應用大賽」歷經9個月的激戰,即將進入最終高潮,其中『網路擂台』報名人數一舉突破23萬人次,並87日完成頒獎,而『創作擂台』7大主題共10,547組隊伍報名角逐,作品以生活應用為最大宗,其中休閒娛樂、觀光旅遊、居家監控、健康照護、商務管理等應用範疇最受評審肯定,最終由117組優秀隊伍進入頒獎典禮的殿堂,迎接屬於自己的創新榮耀!為讓入圍之優勝隊伍秀出令人驚豔的創意作品,頒獎典禮除安排音樂創作組冠、亞軍樂團LIVE表演外,主辦單位更首次結合中華電信雲端環境,打造整合展示區,公開展示創意傑作!此外,9月份完成決賽的音樂創作冠、亞、季軍作品,於專業評審老師的指導育成後,已上架至HiNet 音樂網、KKBOXhami music,歡迎消費者免費收聽或下載。

中華電信董事長呂學錦先生表示:「中華電信連年舉辦電信創新的比賽,我們藉由『網路擂台』讓數位學習向下扎根,使e化學習更加普及,而透過『創作擂台』提供高中職、大專院校學生及社會人士完備的創作環境與應用軟體開發工具,激發創新創意,提升資通訊軟實力,我們期待透過激發想像力與推動全民創作風潮,期許台灣成為創新發明的寶島

掌握時勢 行動遊戲、應用 豐富數位新生活

2011電信創新應用大賽-創作擂台」7大組別「行動應用」、「雲端應用」、「智慧家庭」、「音樂創作」、「文學創作」、「整合行銷」、「應用創意」,其中「行動應用組」共報名1,333隊競爭最激烈,首創【創新遊戲】類別,作品多元富創意,從集結想像力與實體的聲控遊戲、RPG角色扮演與模擬養成遊戲,此外【創新應用】類別則充分融入生活中最夯的隨身閱讀、健康塑身、綠能環保減碳需求,實際應用能力令評審激賞!而「文學創作組」也為首次舉辦,分【簡訊】、【散文】、【小說】3類,共收到6,415件作品響應熱烈,其中【簡訊文學】收件近5,500件,作品巧妙反映社會現象及日常生活省思,參賽者將細膩巧思以簡短的文字表達,勾起評審共鳴。

交通部長毛治國受邀見證榮耀時刻表示,「中華電信多年來積極帶動數位內容產業蓬勃發展,成就有目共睹。看到台灣的創意人才有這麼優質的平台可以展現自己的創新軟實力,感到十分的欣慰。今天在台下的每一位都是菁英,我相信有這麼多優秀的台灣之光,絕對可以讓台灣數位內容產業再向前邁進一大步。」

展現三平台整合實力 電信創意放眼2012

為配合政府的數位雨林政策,中華電信今年開放雲端hicloud、行動Hami及光世代MOD等三大平台完備的創作環境與應用軟體開發工具,鼓勵全國各系所領域的青年學子與社會人士都能共同發揮創意進行創作,有效提升國內資通訊的軟實力明年將邁入高畫質數位電視元年,中華電信除將繼續舉辦2012電信創新應用大賽推廣行動、網路等電信應用創新外,也將同步鼓勵創新數位電視應用程式,希望能鼓勵更多的學子及社會人士投入,開創電信應用新契機。

#  #  #

關於電信創新應用大賽

「腦袋放亮點!」中華電信配合政府的數位雨林政策,鼓勵創新應用發展,自2003年開始,每年舉辦電信加值應用大賽,推動電信創新服務開發風潮、發掘培育大專院校軟體開發人才及促進數位內容產業之蓬勃發展。2011年更首度整合十年有成的「HiNet網路擂台大賽」以及歷時八年的「電信加值應用大賽」兩大賽事,推出規模擴及國中小、高中職、大專院校及社會人士的「2011電信創新應用大賽」。

2011/12/21

為甚麼Opera會有使用者瀏覽網站的排名?

名手機瀏覽器Opera Mini今公佈2011年度十大最受歡迎網站。根據最新出爐的Opera手
機上網行為報告指出,Google、Facebook、YouTube名列全球手機上網用戶最常使用的
前三大網站,台灣地區最受歡迎的行動網站前三名則是Google、Facebook、雅虎奇摩。
此外,拉丁美洲蟬聯2011年度Opera Mini全球手機上網用戶數成長率最高的地區。
一直以來,Opera Mini 的亞洲用戶的成長率為全球之冠,但近兩年被手機用戶成長力
道更加驚人的新興區域所取代。2011年度拉丁美洲手機用戶蟬聯為全球手機上網用戶數
成長率最高的地區。與2010相較,Opera Mini在拉丁美洲不重覆用戶數的成長率為
247%,非洲為145%,東南亞為138%。
對Opera Mini手機上網的用戶來說,2011年是以使用者創造內容為主的一年。之前,維
基百科(Wikipedia)跟Blogger部落格網站雖早已名列十大最受歡迎網站之中,在2011年
的不重覆使用者仍見大幅成長。由於Opera Mini手機瀏覽器每月用戶至今已超越1.44億
不重複用戶,前十名最受歡迎網站的變動幅度不大,但由於母體數量龐大,網站名次一
變動即隱含使用行為上有大幅動的改變。
今年使用Opera Mini手機上網的行動網站排名,Google、Facebook、YouTube穩坐全球
前三名,而一些社交類型網站掉出前十名外,如Orkut。詳細排名與排名變更幅度如
下:

1. google.com
2. facebook.com
3. youtube.com (上升一名)
4. vkontakte.ru (下降一名)
5. odnoklassniki.ru
6. yandex.ru
7. wikipedia.org (上升四名)
8. my.opera.com
9. yahoo.com (下降兩名)
10. twitter.com (上升兩名)


在台灣,前三大為Google、Facebook以及雅虎奇摩。
1. google.com 谷歌
2. facebook.com 臉書
3. yahoo.com.tw 雅虎奇摩
4. youtube.com
5. mobile01.com
6. plurk.com 噗浪
7. tw.nextmedia.com 蘋果日報
8. wretch.cc 無名小站
9. udn.com 聯合線上
10. wikipedia.org 維基百科

.net Framework的OnClick與Page_Load事件

在Web Form中拉一個Button元件,然後賦予它OnClick的事件,在function中撰寫一些
程式碼,卻發現這些程式碼卻要按第二次Button才會被執行。
是因為在這個Web Form中的其他元件,被賦予AutoPost=ture的屬性,導致真正Click
Button元件時,Page_Load的事件中if(!isPostBack)條件符合,跑到if裡面執行了一些
程式碼,這些程式碼又會中斷事件驅動函式的執行,以至於預期的功能沒有被做到。