2006年12月11日星期一

[未來軟件介面3D化] MS Expression Blend + .NET Framework 3.0 WPF 體驗記

很多人都說Windows Vista很正,很好用,介面很靚等等,但近期技術來說,影響最深遠的可能就是.NET Framework 3.0中的WPF (Windows Presentation Foundation)

WPF是軟件上的一個革命,足以改變廿多年來的軟件介面的規範.還是代號Avalon時,我已經被那技術吸引著.幾個月前我在台灣的微軟技術社群討論區詢問過一條問題:( WPF 對ASP.NET 的影響?? )同時.NET 語言底下的要員,但好像卻沒有得益,最後得知原來Microsoft決定開發一個叫WPF Everywhere的項目,目的就是讓Browser運行WPF的程序,或者就可以看待成為了對抗Flash Player,而且還是Cross-Platform的.

之前我有講過XAML語言問題,因為WPF下的介面是XAML而成,但傳統上一直設計介面除了在Design View上做,或者會透過程式碼控制,害怕轉變到XAML後,一時間程式員會很難適應.但幸好是,Microsoft Expression系列中有一個叫Blend的軟件 (前身為Interactive Designer), 這個Blend軟件就是用來視覺地創建XAML.而我亦實質地在Windows XP下實作一個WPF介面的軟件.

PicturePicture

未必的軟件介面可能會是這樣,你有想過嗎?
Blend介面很有型~黑色的介面! 一直都不是Microsoft的風格.Blend支援語言同樣是C#或者VB.NET.
從左手邊的選取Control後,可以任意把Control外觀變型.
PicturePicturePicture
我嘗試放下一個ListBox,想如VS2005般在Porperty加入Item時,出了一個不明的視窗.原來在Blend中,已經不可以好像VS2005般加入Item. 無論是ListItem,Gridview中的Header,Column,Row項目,Blend都把他們分開,需要在Control Box中拉至Design View並放入如Gridview,Listbox的Control中. (見下圖)
PicturePicturePicturePicturePicture

放入過後,可以經由表單的Property,設成Transparent,並測試.
大家看下圖,一個不規則的WPF介面就出現了. 但由於Blend並不可以輸入程式碼,故只可以體驗一下介面而已.
Picture

更多Blend的圖片:
Picture
WPF支援各個Control 重疊和Alpha-Blending.

Picture
這就是Blend創建的XAML碼.

Picture
WPF的3D引擎 ViewPoint3D

Microsoft Expression Web 試用

卒之有時間試用一下Microsoft Expression 系列,系列中分為Web / Blend / Design / Media ,而我就對Web同Blend有興趣,介面方面混合Office和Visual Studio,和Dreamweaver相比當然會差很遠,但用過Office的人都很快會上手.

PicturePicture

[Web] 除了要取代Frontpage外,另外的任務就是要彌補Visual Web Develop和Visual Studio的不足. 無論VWD或VS2005雖然都把ASP.NET程式預設是XHTML 1.0格式,
但CSS的管理就不如Dreamweaver般,Design Layout方面,以前會配合Dreamweaver做,但Dreamweaver由於不是MS出品,
不能直接在Design view上修改或引用ASP.NET Control,

但 [Web] 就可以做到這一點.我使用製作中的ASP.NET程式在[Web]中開啟,已經可以直接在Design View上修改Property了.
而和Dreamweaver一樣,可以用Split型式同時開出Design View和Code View.
Data管理方面,留意到上面有一項叫做Dataview的,我想應該是和VS2005一樣,可以引用OLEDB或SQL Provider打開Database,

而且[Web]中也有Behaviors一項,很多[即食]功能,但對經驗設計者作用不大.試用過後的感覺是,很就手,無論HTML或者ASP.NET項目的Porperty以下拉式清單顯示,比起Dreamweaver的Panel形式更方便.而價格上,[Web]是US$299,但Dreamweaver卻要US$399,如好像我現職公司般,是.NET的世界,已經沒有可能會選擇Dreamweaver了,始終整合ASP.NET方面很重要的.

PicturePicturePicture

2006年12月1日星期五

宣告時何時使用Public、Protected、Private等修飾詞?

這個課題是基本中的基本,不論是VB6還是.NET,[宣告]這樣東西,基本上是第一層功力.

但不知是否由於Visual Studio太自動化的原故,有很多人寫Class,Function,Sub時都會憤性使用IDE預設的存取範圍.
如VB6的Private ... / .NET的Protected .....

而宣告Variable就有理冇理都會用Dim , 無他的....因為我的確覺得很少人會著重這個東西.
近日工作上接手一個Project,我真的呆了....

宣告變數時,不設定DataType....大家都知道在VB6上,如不設定DataType,會自動變為Variant.
.NET上會變成Object,雖然而家的電腦快,但都不是這樣吧...濫用SQL Store Proceduce, Sub和Function不分.
有經驗的人都知道在.NET Framework低下, MSIL 可以看出, Sub在比Function快吧....
回歸話題,我在MSDN上找到兩篇講有關存取類型 - Public、Protected、Friend、Protected Friend 及 Private的文章,大家可以看一看.

2006年11月14日星期二

[ASP.NET 2.0] Personalization Provider Without SQL Server

一直知道, Membership / Role /Personalization Provider 都可以自己寫,Microsoft亦有Starter Kit提供,但是要寫一個冇問題的,我對自己就沒有太大信心...
我試過找過一些Portable既DB如FireBird, SQLite,看看有沒有高人寫出,有就還是有,但只是Membership /
Role而已.之後再找找,找到一個網頁,令我很有興趣的是,使用XML是承接WebPart的Shared-Scope
Setting.看來一直以來的問題解決了~而且被MS放棄的Access Personalization
Provider亦有人重新編製~真的是脫離MSSQL苦海~所以想和大家分享一下.

2006年11月7日星期二

足以令IE死硬派轉用FireFox的Extension

由於我本身寫ASP.NET,同是Microsoft產品,心理上都會先入為主用IE去做Preview,而且IE的Market Share依然是最大,順理成章地,相信不止我,很多Web Developer都會無視Opera,Firefox....而且事實上Firefox睇好多網頁,字型都很怪怪的...IE7都終於出了,其實真的叫做不錯.本想一直用下去,但前幾天再認真玩玩Firefox,找到幾個Extension,令我不想轉回IE7,一時間覺得FireFox果然做到首頁所講的"Enjoy a Better Web Experience"
其實我不是未用過FireFox...
由1.0,1.5,這些大版新版本就會一用,但以下介紹的插件實在太好用~~~
Picture

首先介紹三個極好用的Extension,

第一個是ImageBot.
ImageBot可以說是ImageShack的插件,安裝後,只需對著網頁上的圖片,右Click=>Upload,就會自動Upload至ImageShack.用途在於有時有些網頁不許第三方連結圖片時,或者圖片連線超慢時,但又想同人分享圖片時,這個功能就十分好用. 按Upload後,就會自動切換至ImageBot介面,可以即時Copy ImageShack上圖片的連結,很方便快捷~~而且除了網頁上,亦可以upload本機檔案.
PicturePicture

第二個是MozImage.
本想在Firefox網頁上找找有沒有如ACDSEE,Xnview的瀏覽圖片軟件,但卻找不到.只找到這個MozImage,但卻有驚喜.
MozImage是可以在FireFox的SideBar中瀏覽本機圖片,但是就不能如ACDSEE同時顯示很多縮圖,但驚喜是,因為MozImage會利用Browser視窗去看圖片,那我想試試可不可以配搭ImageBot使用呢,當然是可以的.換句話說ImageBot配搭MozImage使用實在極之方便.可以說是一個快速地upload電腦中的圖片解決方案.
Picture

第三個是Save as Image
就如名稱一樣可以把網頁Save as Image,其實以前IE都有類似軟件,但是始終都要開第二個軟件,不如FireFox般即時Right Click->Save這麼方便.當然儲存後,一樣可以使用MozImage配合ImageBot立即上傳至ImageShack.
Picture
三個本身互不相干的Extension,竟然有咁美妙的配搭。
我已經決定轉用FireFox,唯一煩人的就是整理Bookmark.

以下是我自己所使用中的Firefox Extension.
PicturePicture

至於Extension的連結,自己上Firefox網站按名字搜尋吧~~

2006年9月10日星期日

預覽Windows Vista中的IIS 7.0

上星期Windows Vista RC1 推出,有很多功能都接近成定局.

我自己而言,IIS 是我最關心的. 始終我是寫ASP.NET的.唯一支援的Server就是Windows IIS.不過我沒有實際試用IIS 7.0,但在官方ASP.NET Blog上,看到幾張Screen Shot,大概都能理解IIS 7.0一些新功能.看到三張圖片,我即時想起Plesk 的Control Panel.

明顯地IIS更User-Friendly,把Machine.config和Web.config部份搬出來.另外[.NET Globalization] 和[.NET Profile]兩項則令我注目.其實Microsoft只差一步就可以令提倡LAMP (Linux , Apache , MySQL ,PHP) 的人沒有藉口.

Visual Studio Express, MSSQL Express都已經是免費. 如果把IIS 7.0獨立成一個項目,可安裝在WinXP上.一直以來LAMP的成本優勢,根本就不存在.一套WinXP都只是千多元.

而且往後幾年,當企業都升級上Vista後,多出來的WinXP的可充當Server平台,都不錯. 其實Microsoft已經"豪爽"了很多...
Visual Studio Express, MSSQL Express, Virtual PC 都已經完全免費,不彷豪爽多一次.

2006年9月5日星期二

解讀郵件中的UUEncode附件 (續)

前天說了遇上一個大問題,就是不知解讀UUEncode.今天有了突破性發展.

參考了幾個C#的UUDecode程序後,雖然只有二百行的Source
Code.但是憑我對C#語法皮毛的認識.轉至VB.NET都搞了我一整天.

做測試時,在System.IO下的Stream / MemoryStream / FileStream / Bytes / BytesArray等等統統搬了出來,但最後亦是自己複雜化問題.C#的UUDecode Source Code可看這裡.
Implementation of UUEncoding in C#
我的做法是,用StringBuilder,寫入由BEGIN至END的UU碼,再轉至Bytes.
經UUDecoding後,用FileStream把Bytes再寫成binary File即可.

2006年9月4日星期一

.NET Framework下,如何解碼UUencode?

現在100%根性製作中的ASP.NET版本NNTP Reader已經有樣子看....
解決了效能問題,現在Download 400個Title都只需要最多兩秒,當中最困難是要寫很多Error Exception,例如很多人貼文沒有email或者名字都會出現問題.寫這些Error Handler反而用上我很多時間. 不過當中考量的問題很多.

說真的,ASP.NET的Newsgroup Reader,網上實在少之有少,可參考的,實在不多.但好彩在Microsoft的技術討論區上,多次得到台灣微軟MVP相助.有一些已經解開迷團



1.DataTable 還是DataSet? GridView還是TreeList?
這問題較簡單,一般網上看到的示範都會把DataTable轉至DataSet集合中.
給GridView做DataSource. 但是次製作我只需要一個DataTable,故沒需要使用DataSet.只需使用DataTable,收取所有資料後,轉至DataView便可.不需動輒都用DataSet.
至於Layout方面,考慮到Newsgroup會有[回應]文章,要做到類似Outlook Express般,回覆跟隨主文,必要要用上TreeList,但可惜.NET中沒有TreeList控件,就算有.要把Reference對照文章ID再加入TreeNodes都是十分複雜的事.雖然我嘗試在GridView中加入TemplateField,並放上Treeview,但實際出來的效果並不好.這問題日後再解決.

2. ArrayList還是Array?
這是一個較多面化的問題,兩者很相似,因為應用在不同地方有不同的好處.
以下是MSDN上Array和ArrayList的要點:

- ArrayList 並不保證已經經過排序。進行需要 ArrayList 的作業 (例如BinarySearch()) 之前,一定要先排序 ArrayList
- ArrayList 的容量是可以保存的項目數。ArrayList 的預設初始容量為 0。隨著元素逐漸加入 ArrayList 內,也會視需要透過重新配置的方式自動增加容量。若要降低容量,可以呼叫TrimToSize()或明確地設定Capacity屬性。
- ArrayList 接受 Null 參照 (即 Visual Basic 中的 Nothing) 做為有效值,並允許重複的元素。
- Array 的容量是固定的,ArrayListList 的容量卻是按照需要自動擴充的。如果 Capacity 屬性的值變更,記憶體重新配置和元素的複製會自動完成。
- ArrayListList 提供加入、插入或移除元素範圍的方法。在 Array 中,您一次只可以取得或設定一個元素的值。
- ArrayListList 提供了方法,可以將唯讀和固定大小的包裝函式傳回給集合;但 Array 則否。
另一方面,Array 提供了某些 ArrayListList 所沒有的彈性。例如:
- 您可以設定 Array 的下限,但 ArrayListList 的下限永遠為零。
- Array 可以擁有多個維度 (Dimension),而 ArrayListList 則永遠只有一個維度。
- 特定型別 (Object 以外) 的 Array 具有比 ArrayList 更佳的效能,因為 ArrayList 的元素型別為 Object,而且儲存或擷取實值型別 (Value Type) 時,通常會產生 Boxing 和 Unboxing 的狀況。然而,List 如果不需要重新配置,亦即如果初始容量是清單大小上限的概數,它便具備了與相同型別的陣列相近的效能。

大部分情況下,可以使用 ArrayListList 來取代陣列呼叫;它們比較容易使用,並且一般而言,具有與相同型別的陣列相似的效能。

3.如何做UUDecode?
先前的Base64 Encode已解決,現在的,是我的終極問題,因為這是牽涉到郵件中的附件解碼.
一般NNTP附件都是以UUEncode去篇碼,雖然我已經準確地得到由Begin至End中的編碼,但是怎樣Decode,再送給FileStream已是一個大問題.參考過C語言,PHP語言的Library,憑我的能力去寫一個Class是沒可能的.在Google上找,給DotNET的,同樣是少得可憐...最後在Google上找到一個C#的...我嘗試過Decode相片會出錯誤,不知為什麼.大家可以看看.

uuEncode and uuDecode in VB.NET and C#

2006年7月31日星期一

在Microsoft DotNET上進行NNTP Protocol 開發心得

自幾年前,使用VB6開始一直都有寫過下NNTP Newsgroup Access既o野,一直都未有完成品,因為原因實在太多,效能,亂碼,Bug,等等問題都影響到我進展.上左DotNet後,使過很多NNTP既Library,如Smilla .NET Communication Library,雖然沒有亂碼問題,但效能上實在太差.其次那些較出名的IP*Work , Indy Socket等等,雖然效能可接受,但由於始終都是別人出品,要深層次去控制NNTP Protocol 是很難的. 近日的起心干再次研究....得到台灣Microsoft MVP的幫助,有了進展.

在DotNET上,要寫和Server交流的,都是要使用System.Net.Socket低下的Member.
其中TCPCleint是必須的. 除了要對Socket有了解,亦需要了解System.Text.Encoding的使用方法. 因為和外國不同的是,我們是中文字,需要進行轉碼(下文有解說) ,而外國都是英文,故普遍不用轉行轉碼. 而且當然要了解一下RFC977
這份文件.因為從RFC977,我們可以知道NNTP的Command,Response,以及State Code等等有用資料.因為在網上,即使你用Google Search,要找到DotNET上的NNTP資源實在少得可憐.
故以下是我個人小小心得,希望幫到有需要的人,當然有錯請更正^^

1. NNTP Server 接收的資料都是Bytes,而不是String.
當我們由NNTP Server接收到資料時,其實都是以ASCII編碼的Bytes形態.要顯示的話,需要使用ASCIIEncoding.GetBytes方式去取得
Bytes,並轉至DotNET預設的Unicode 和String.如果不轉的話,就是出現"????" 的問號出現了.

2. 傳送資料給NNTP Server其實也是Bytes
一般我們都會使用TCPClient下的GetStream以Read和Write方法去讀寫,就如第一個Point,在GetStream.Write時,都需要把NNTP Command進行String to Bytes的處理才送出.而部份人會使用System.IO下的StreamWriter去送出資料,可能會問,為什麼StreamWriter不用轉Bytes,其實因為StreamWriter在你送出前,已經自動轉成Bytes,所以至可以直接傳送.

3.什麼是MIME ? 什麼是8Bit Encoding ,什麼是Base64 ?
NNTP文章都一定有Mail Header,而Mail Header中都有MIME資訊, MIME含有Subject , Content-Type 和Content-Transfer-Encoding,例如:
Subject: Word =?Big5?B?VkJBpc5XZWJCcm93c2VysN3DRA==?=
Content-Type: text/plain; charset=Big5
Content-Transfer-Encoding: 8bit
Subject不用多說,是標題
Content-Type是信件型式和編碼
Content-Transfer-Encoding則是傳送編碼
明顯地我們看到Subject是未能正確顯示的,就是因為使用8Bit Encoding關係.
8Bit Encode顯示格式為:
=?encode?c?string?=
=? ?= 為起始和結束
encode 為語系編碼
c 為字串編碼方式,b 為 base64 、q 為 Quoted-printable Code.
"VkJBpc5XZWJCcm93c2VysN3DRA"
就是Base64的方式顯示了。
要轉回正常字串,先依字串編碼轉為ByteArray,再使用 .Net 的 Convert.FromBase64String 依語系轉回來即可。

4.如何處回覆的郵件至原文?
若以 Re: 起始的回覆郵件,都會有References的項目 ,一般顯示為 : <a href="mailto:44cc1cd0$1@news.3home.net">44cc1cd0$1@news.3home.net</a> , 冒號後的,就是原文Message-ID,在NNTP Server中的唯一的.故自然可以依據References去連結原文.

2006年7月12日星期三

Flash與ASP.NET共同作業與數據交流心得

Best practices of Flash工作上,近個多月每天都是處理Flash與ASP.NET的事,技術上很易,但出現的未預期錯誤,比想像中多.在Google上找到的,都是教人怎樣去接收發送數據. 所以這篇文重點不會重於技術上,反之會是技巧上.和大家分享一下,從我過去個多月每天都在100%根性上工作所啟發的心得.Flash雖然可以做到很多很酷的動畫,和網頁程式,如最常見的留言板,討論區等...但直到Flash 8,官方還未有任何Provider供Flash做Database存取,而即使MySQL,Oracle都沒有Connector給Flash,當然我知道有Third Party的Socket Component,可以令到Flash得到該功能,但是價錢不便宜,而且效能未明...故依然需要ASP/JSP/PHP做Backend處理....

大家先可看看Intel Software Network中的Flash and .NET Integration Using ASP.NET
在兩者數據交流上,大可以有三種較容易的,都是以Flash的SendAndLoad方式送出:
1. 把數值放在網址上 (如Data.aspx?Name=Ming&Age=24)
但這方法只適合少量數值,如大量數據的話,更是怪怪的,例如我要傳送一段留言,達三百多字,放在網址上..你有看過嗎? 我沒試過,亦保留會出現overflow的可能性. 當然asp一方很方便地以Request.QueryString的方法就可以得數值是不錯的.

2. 把數值以Array方式放在網址上 (如Data.aspx?Value=1|2|3|4|5)
這是一個比起 (1)較折衷的方法,因為我們可以去掉數值前的Item Name,但會苦了asp的一方,因為asp方面要把整個Array,以Split 方式去分割,並取其Index,而且亦因為沒有Item Name,要記著那個Index是代表那個數值是很痛苦的.
example:
Dim StrData as String = Trim(Request.QueryString("Value")
Dim AryData as Array = Split(StrData,"|")
textbox1.text = AryData(1)
textbox2.text = AryData(2)
.....一直下去....

3.以XML中轉檔案方式.
這是一個不錯的選擇,Flash以XML檔案把數值放在Element中,ASP.NET方面亦容易使用XmlTextReader去取數值. 但從Programming上說,由Flash去產生XML檔亦需要時間,而且如果大量使用者的話,伺服器有一定的影響.

三者都有優缺點,要使用那個,就要看情況.
了解過Flash如何把數據送出後,再看看ASP.NET要注意的地方
1.進行QueryString時,視乎情況,使用Trim把空白除去.
有時可能Flash人員沒有留意這個時,就可能會出現很多誤會的情況.即使使用者沒有故意輸入空白,但亦不排除Flash在定義Variable時大意.Teamwork共中就是互相補漏洞吧...

2. response.write前,加上一句Response.Buffer = True
這是ASP時代很重要的,因為我們都知道ASP和ASP.NET不同的是,ASP.NET是有Precompliation的,故所以效能高於ASP,而處理流程是伺服器執行完成程式後,把結果顯示在瀏覽器上,並不是IE去執行ASP,所以我們把IIS要輸出的資料先寫到緩衝區,是保險的一環.在ASP.NET上,很多人都認為不是必須的,但ASP人員是有責任確保Flash能接收完整數據的.

3.事前先決定存取XML中的那個項目
一個XML中可以有很多Parent和Nodes,而Nodes中,亦分Element , attributes等等,Flash可以有選擇性把數值寫在那裡, 在工作前,要確認Flash把數值是寫在那一部份,像我的工作上的Flash程式員,把數值寫在attributes,但我卻把Function寫了讀Element就真是花了無謂時間.

4. 敬請Flash人員建立標準XML
同樣是重要的,直接影響ASP.NET一方,有些人往往把XML寫到一團槽,建立的是XML檔案,同樣有Tags,Parent,Nodes...但有始卻沒有終,卻往往忘記關閉Parent或其他.導致ASP.NET不能正確辨認.

5.盡可能讓Flash的Action Script以Include方式去執行
Flash一方可以直接在Notepad打開*.VB檔,相信你都希望可以直接打開*.AS吧,不用動輒都要開Flash軟件.

6.Flash應建立一個Debug Handler
假如你不修改Web.config中CUSTOM ERROR MESSAGES的話,當問題出現在ASPX上,都能在瀏覽器出現Debug訊息,或者一般程式人員都慣常使用Error Handler或Try..Catch方式.但Flash不同的是,遇到錯誤,往往只會停在Flash Player上,並不會主動做什麼.更不會傳回任何東西回客戶端.最後只會令ASPX人員呆坐....

不過最後我依然是覺得,有些網頁程式,如討論區,都是交回ASP.NET全權負責吧,我個人並不主張網頁全Flash化,顯然濫用只會更像大陸網頁 (一個網頁有十多條Flash Banner....)
暫時想到的只有這些,是我小小的心得,希望大家在萬事俱備下,可以寫得更得心應手.

2006年5月5日星期五

Windows Vista 微軟正黑體&微軟雅黑體 Download

微軟即將推出的下一版 Windows 作業系統:Windows Vista 新增了一些字型,在繁體中文的部份則新增了「微軟正黑體」、簡體中文的部份增加了「微軟雅黑體」,其它日文、韓文也有增加字體。說到這個「微軟正黑體」果然很正,不論斜體或粗體都不會變模糊、也不會高低不齊。字型的尺寸跟原來的細明體差不多,應用在網頁上,不僅不會不協調,我認為比其它家的黑體字好看多了,彷彿像是看到了 Mac 一樣。
下載完後再到控制台中的字型去新增剛剛下載的就可以用啦~~

下載:
微軟正黑體 for 繁體中文 WinXP
http://www.microsoft.com/downloads/zh-tw/details.aspx?familyid=87e726a9-5c79-4a73-9347-78a557314d0b

微軟雅黑體 for 簡體中文 WinXP
http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=b15774c0-5b42-48b4-8ba8-9293fdc72099

2006年4月20日星期四

Microsoft 官方公佈Visual Studio Express系列永久免費!

節錄至官方ASP.NET討論區:
http://forums.asp.net/thread/1262185.aspx

We are incredibly excited to announce that effective April 19th, 2006, all Visual Studio 2005 Express Editions including Visual Basic, Visual C#, Visual J#, Visual C++, and Visual Web Developer Express will be free permanently!
Prior to this pricing announcement, Visual Studio Express Editions were promotionally discounted to be free for one year, starting on November 7th, 2005. With this announcement, the promotional discount for Visual Studio Express is now permanent and Express will continue to be free. The key reason for the pricing change was you. You’ve helped make Visual Studio Express a runaway hit, and we’re proud to announce that in the five months since its launch, Express has been downloaded over 5 million times!

詳細微軟官方報導請看:
http://www.microsoft.com/presspass/press/2006/apr06/04-19VSExpressFreePR.mspx

2006年4月11日星期二

我的第一個Pocket PC軟件

今天嘗試用VB2005 寫了一個Pocket PC軟件,經網友測試後運作正常!
其實未轉至DotNET前,由於我不懂C++ , Embed VB又弱得很,一直沒機會寫PPC軟件,直至現在....
雖然DotNET Compact Framework很有很多Class都沒有,把手頭上的Win32 Assembly轉至Compact版更是出現無窮的Error , 但很基本的RSS Feed都可以做到了.值得紀念的Capture.

2006年3月22日星期三

破解MS KB912945更新對ActiveX處理方法

早前已談過KB912945對Flash的制肘,受影響的不止flash, Quicktime,Real 等等亦是.

Microsoft官方網站亦有介紹 :Activating ActiveX Controls
Picture

覺得有問題的,不止我一人,瀏覽網頁上實在不便,有很多都說這是Microsoft的商業策略,
但連帶其他瀏覽器的穩定性受影響則非同小可, Maxthon用戶投訴更新KB912945後,CPU使用率長期於100%.雖然我只是用IE, 但對我也有影響啦~至少我製作中的網頁亦有Flash, 每次都要Active一次, Reload後又要Active一次....
上網找到有個很簡單的解決方法,就是使用JavaScript - Flash Object 再把SWF載入.

作者網頁: http://blog.deconcept.com/flashobject/

使用方法極之簡單:
1. 下載 Flashobject 1.3 http://blog.deconcept.com/flashobject/flashobject1-3.zip
解壓後,只需要flashobject.js

2. 把flashobject.js放在和你的swf,htm檔案同一個Directory. (js放置目錄可更改)

3. 於Head TAG之中加入

4. 於Body TAG中,刪你去原本Flash的<object>...至</object>, 在你的Flash所在地加入

var fo = new FlashObject("Flash檔案名稱.swf", "mymovie", "200", "100%", "7", "#336699");
fo.write("flashcontent");

5. 成功.

參數方面可自行參考作者網頁.

2006年3月18日星期六

Windows Vista Build 5308 CTP 感覺唔錯~

今天試了一試Windows Vista Build 5308 CTP版本,所謂CTP定義應該係Microsoft所指的Preview版本. 第一次見到這個名詞是"SQL Server Management Studio Express CTP" , 使用時感覺實在良好,用P4 2.8GC / 512MB DDR400 x 2 / Radeon 9250 / I865版去運行,一切都沒有什麼問題,但我感覺上要行得順P4 3G CPU + 2GB RAM係唔少得, 這個版本比我約5,6個月還叫Longhorn的版本更快更穩定. Windows Vista除了介面和功能上, 在開發方面引進WinFX的架構, WinFX中包含開發代號Avalon / Indigo / WinFS 三大範疇,其實最受開發人員注意的是Avalon,或者簡單來說,Avalon可以顛覆未來軟件介面,新的XAML言語更值得注意. 我覺得沖擊不比.NET Framework推出時低,我已經在Microsoft 下載了WinFX 和Avalon SDK試做一些簡單的軟件,亦有一些回應,日後會在Blog評論一下.
今年11月我一定好忙 , 至少Playstation 3 同Windows Vista都定於11月推出. 雖然遲了一個月,但有興趣大家可以睇睇一些Screen Shot.

Picture
SideBar出場,有分頁的,我覺得是沖著Mac OS上的Dock Bar而來,但我覺得我現在WinXP的ObjectDock便好用...個RSS Feed其實並不算好使好用...
Picture
剛安裝完Vista的時候,看一看Harddisk,竟然要用上6GB的安裝空間=_="
Picture
Win Vista內置的Wallpaper,不知是否還是測試版,Wallpaper的解析度很低,而且不算漂亮.
PicturePicturePicture
Outlook Express將會成為歷史,更名Windows Mail,但其實都是Outlook的核心,大家不用擔心.E-mail方面都沒有不同,Newsgroup方面已預先有Microsoft的newsgroup,而英文版的Vista看中文Newsgroup是沒有問題的,但回覆群組時就會出現亂碼,大家可以留意下字型上Vista更像Mac OS的中文字體.
Picture
Windows Vista 已整合一個簡單的Media Center
PicturePicture
輸入法方面,已內建HKSCS香港宇型,亦多了一個叫New Quick的輸入法,即是新速成,至於廣東輸入法就不能正確安裝了.
PicturePicture
Control Panel 亦多了很多東西,而查看.NET Framework的資料夾,已內建.NET Framework 1.1和2.0最新版本.

2006年3月15日星期三

VB.NET VS C#


VB.NET vs C# 的比較,沒完沒了~
剛本想上Google Search一下又有沒有VB 2005 VS C# 2.0 的議題時,卻找到Usenet 上一些舊有的討論.他們不是潑婦罵街,是理性討論的.細心閱讀後,便Bookmark下來.
如你還苦思選擇VB.NET 還是C#好,建議你看一看以下連結吧. 都幾有趣的~
Google Group:
Yet again another VB.NET vs C# debate
VB.NET vs C# (1) (2) (3) (4)
Programmer's Corner - C# vs. VB.Net
VB.NET vs C# Syntax 語法戰決 & 比較

2006年3月7日星期二

Windows KB912945 & ActiveX 控制項

岩岩做了一次Windows Update, 分別有 Windows Genuine Advantage 驗證工具 (KB892130) 和 (KB905474:Windows Genuine Advantage 通知) 更新,
更新後就會出現如之前一遍文章所講每次開機關機都會出Warning. 不過即日我已經經由0Day Warez 搵到破解..... 不過今次我反而覺得冇乜特別,始終M$都唔係第一次. . . 最令我注意反而係 KB912945:Windows XP 更新

KB912945 更新內容說明 :
在此更新中,Internet Explorer 對部分使用 Microsoft ActiveX 控制項之網頁的處理方式略有變更。 特定網頁將要求使用者按一下 ActiveX 控制項或使用 TAB 鍵和 ENTER 鍵,以手動方式啟動。 此更新包含所有已發佈之安全性更新。安裝此項目後,您必須重新啟動電腦。

如果就以說明上的文字,或者大家可能覺得沒什麼影響,始終就以Visual Basic 6時代說起,ActiveX在瀏覽器上的應用就已經被打擊下來,至少看到安裝ActiveX的對話盒,絕大多數都會按[否]去避開中毒危機, 上面的KB912945 ,相信你會和我一樣以為只是對一些情況, 如安裝Yahoo Game Java麻雀時出現不同的Wanring而已. 但問題來了,而且對Flash的Develper有莫大影響,大家看一看下圖:



這條類似ObjectDock的是我網頁中的navigation bar ,只是單純的用Flash MX 2004配一些簡單的Action Script做成,如果在以前是沒有什麼問題的.但現在更新KB912945 後,並在IE -[中安全性]情況下亦需要大家手動點擊一下,才啟用該條Flash.

即使在表單Post Back後,同樣需要同樣處理.其實Flash 理應只是IE中的Embed Object,就類似Embed Media player, Real ,Quicktime 一樣,已存在很多年, 不太明白M$搞什麼, 是否想玩下Adobe Macromedia....在IE預設值 - 中安全性有著這樣的[功能] , 相信對Flash Developer是一個打擊,因為在我測試當中,有部份Flash 不啟用是不播放的. 我自身那條ObjectDock已經是一個好例子,大家可試試 http://www.aspvista.net

2006年3月3日星期五

[ASP.NET 2.0] 進行Web Deployment後的Reference File在哪裡?

相信現在大部份人寫asp.net 2.0都是用Visual Web Developer Express版本(以下簡稱VWD),
無疑這個所謂簡化版本一點都不簡化,已足夠應付大多數新手老手的要求.

但近期小弟我遇到一個問題,相信同樣是每一個asp.net作者都會遇到.
前幾天,小弟我替現職公司把一個由VS.NET 2003寫的MSSQL Database升級至ASP.NET 2.0版本, 一如以往想進行Compile並加入Reference File,那*.vb檔就不用上傳至Server, 以保密Source Code,但問題來了,Compile後,我找遍VWD預設輸出資料夾 My Document中的VS2005資料夾,都找不到Bin中應有的Assembly DLL File, 那順理成章,Google It ~

原來VWD已改變Precompilation 和Web Deployment方面的做法.....

以前我們使用VS.NET時,在Release時,VS.NET會自動把我們整個Project中的Source Code轉至一個參考物件並放在Bin資料夾中,但到了VWD後,Precompilation並不會建立DLL,原因是.NET Framework 2.0所採用的Web Depolyment已不單把*.VB整合在一個Assembly集合檔案中,而是把*.aspx都整合在一個DLL,實行全面保護Source code,而怎麼做呢?

大家可以試試打開Framework 2.0資料夾 (C:WINDOWSMicrosoft.NETFrameworkv2.0.50727),你可以找到一個Command Line的工具 - aspnet_compiler.exe , 使用這個工具,你便可以把你整個Project中的aspx,ascx,vb或其他檔案統統整合至若干DLL中,使用方法是:
aspnet_compiler -v  -p

而Precompile後,發現所有*.vb,*.ascx等文件不見了, 而Output資料夾打開aspx文件,所有HTML會不見,只會出現一句Plain Text "This is a marker file generated by the precompilation tool, and should not be deleted!" .

若你不想使用Command Line的話,可以試試以下兩個Front-End程式,把aspnet_compiler GUI化.
West Wind ASP.NET 2.0 Compiler Utility
http://www.west-wind.com/tools/aspnetcompiler.asp

當然會有人和我一樣依舊喜歡VS.NET般做法,如果你是使用Visual Studio 2005而不是Express版本的話,你便會發現在Menu中的Deploy底下會多一項"Deploy Website"的項目,這個就正是VS.NET中的做法,把*.vb Compile至Assembly File.同樣地可以在Bin資料夾中找到, 相信這個就是VWD Express其中一項被簡化的項目.

或者你會問,VWD Express可以用到嗎? 其實是可以的,但我們需要使用一個Add-on :
Visual Studio 2005 Web Application Projects (Beta V2 Preview)
http://msdn.microsoft.com/asp.net/reference/infrastructure/wap/default.aspx

使用這個工具,我們可以在同樣地建立一個Assembly File.