Feeds:
文章
迴響

Archive for 2007 年 10 月

惱人的 UAC 要如何關閉呢?如下:

1. 啟動"登錄檔編輯器"(開始 | 執行 | regedit.exe)

2. 切換到"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystem"

3. EnableLUA 參數設為  0 (關閉),如要重新啟動則設為 1

200710301556

4. 重新啟動電腦

廣告

Read Full Post »

轉載自 http://www.ccic-sj.org/Mandarin/Others/Halloween.doc

在Halloween來臨的此刻,我們願意以基督徒的角度,和大家分享有關這個節日
的緣起、意義,以及它與聖經的關係。相信在了解之後,我們可以對其有正確而
堅定的立場。

Halloween的習俗


國現行的Halloween習俗,可以溯源於兩千多年以前的朱伊德人(Druids),他們是當時居住在英國、愛爾蘭、法國、德國等地塞爾特人
(Celts)的教士和教師。這群尚未認識基督的人,在Halloween這天敬拜他們的假神散韓(Samhain) —— 塞爾特人的死神。

朱伊德人相信,在Halloween當天,散韓允許巫師漫遊大地,並且讓魔鬼魂靈重
回人世,看望他們的家人。活著的人要準備美食款待他們,否則就會被戲弄,甚
至慘遭不幸。塞爾特人因對邪靈心存畏懼,就以面具戲服來裝扮自己,使邪靈誤
認他們為同類,而不予加害。他們在戶外燃起烽火,希望能夠驅離邪靈。還要焚
燒動物、農作物、甚至以人為祭物,之後再以焚燒的殘餘,占卜明年的運道。


督教發展後,羅馬天主教教會在十一月一日的眾聖徒節(All Saint’s
Day)之外,又訂定十月三十一日來記念沒有個人專屬記念日的聖徒們。部分教會歷史學家相信,選擇眾聖徒節前一日的理由,是要對抗慶祝死亡的異教徒的影
響。雖然,起初它純粹是天主教的節日,後來卻演變成為一個世俗的活動。

如今,Halloween是世上廣為慶祝的節日,男女老幼藉機逗趣玩耍一番,但它並
不是如外表那樣的天真無邪,而是充份地反映出古老的習俗與信仰。商店住家的
陳設裝飾,盡是些巫婆、黑貓和鬼怪,即使笑臉迎人的南瓜燈,也不免涉及鬼怪:
在愛爾蘭傳說中有個傑克,因他生性吝嗇,死後天堂是進不去的,又因為他戲弄
過魔鬼,地獄也不敢去,註定要在塵世飄蕩,直到世界末日。

在歐洲的一些地區,看手相和用紙牌算命,是Halloween時傳統的重頭戲。有人
甚至請靈媒或占星術士,來確定前途免災無難。巫師們把Halloween當作是最莊
嚴有力的一天。他們眾集在一起,來拜他們的主宰魔鬼。魔鬼的表記、號碼六六
六、以黑貓黑狗為主的祭物,在全美隨處可以見到。同時各種惡行也層出不窮,
在送給孩童的糖和蘋果裡,其多次發現毒藥和尖銳傷害人的物品。

基督徒對Halloween的觀點


督徒應當。「棄絕那世俗的言語,荒渺的話,要在敬虔上揉練自己」(提前四章七節)。
神嚴正地警告我們不可效法異教之民所行可憎惡的事,如占卜、觀兆、用法術、行邪術、用迷術、交鬼、行巫術、過陰、使兒女經火等(申命記十八章九至十三
節)。
神要祂的子民完全信靠祂,「除我以外,你們不可有別的神」(申命記五章七節),而Halloween實在是記念尊崇死亡之主的日子。「我的民因無知而滅
亡」。(何西阿書四章六節)

基督徒應該持守的立場

我們確信身為基督徒的家長們有責任「教養孩童,使他走當行的道,就是到老他
也不偏離」(箴言廿二章六節)。孩子學校裡若有Halloween活動,父母親應該如
何面對這個問題呢?


先,可以聯絡老師和校長,要求他們提供其他的材料,給不願意作與Halloween有關的活動的孩子們。我們要把Halloween的起源,講解給孩子
聽,不鼓勵他們參加Halloween遊行等聚會和活動。利用這個機會告訴孩子,順服 神的旨意,比屈從於外力去參加
神不喜悅的活動更重要。我們也可與孩子們,一同為預備歡渡Halloween的朋友鄰居禱告。當我們聽從聖靈的帶領時,我們就更有機會,和別人分享我們對
Halloween的認識與我們對基督的信仰。

因此,讓我們互相勉勵,「務要儆醒,在真道上
站立得穩,要作大丈夫,要剛強」(林前十六章十三節)。我們在每一件事情上,都需要聖靈幫助我們辨別什麼是屬
神的,什麼是屬世界的,我們相信的是誰,我們事奉的又是誰。讓我們把基督的道理,「豐豐富富的存在心裡」(西三章十六節) 「也力求在
神面前得蒙喜悅,作無愧的工人」(提後二章十五節) 。保羅也勉勵基督徒,「不可效法這個世界,只要心意更新而變化」(羅十二章二節) 。


因為如此,我們應彼此代禱,求 神讓我們「在一切屬靈的智慧悟性上,滿心知道 神的旨意」(西一章九節)
。Halloween來臨的時候,不要懼怕邪靈。因為我們所受的,「不是奴僕的心仍舊害怕,我們所受的,乃是兒子的心」(羅八章十五節),以及「剛強、仁
愛、謹守的心」的靈(提後一章七節)。更重要的,那在我們裏面的,「比那在世界上的更大」(約一四章四節)。

Read Full Post »

簡單快速取出 chm 中的圖片

MSN SpaceGoogle DocGoogle Blog
Chui-Wen Chiu
2007.10.26
關鍵字:chm

測試環境
1. Windows XP SP2
2. HTML Help Control 4.74.9273

    不知道你有沒有常看 chm 電子書,有時裡面有些不錯圖片想要取出來,可是 Microsoft HTML Help 程式卻沒有提供按右鍵另存功能。網路有提供 chm 轉檔工具,可是有時只需要裡面的一兩張圖片,實在沒有必要使用這些工具。這裡提供一個簡單的方式,首先打開你的 chm 並找出你想要另存的圖片,按下滑鼠右鍵點選"屬性",如下:


然後在"內容"視窗中,複製網址,如下:

然後打開檔案總管,將網址貼在網址列,然後按右鍵另存即可,是不是很簡單呢 ^^

Read Full Post »

7 月份聽過一次 Silverlight 的研討會,對於這個技術有些誤解,最近又聽了一次研討會,也看了一些書,終於釐清這個主要問題"執行 Silverlight 用戶端是否需要安裝 .NET Framework?",答案是不用,只要安裝 Silverlight Plugin 即可。之前混淆的原因是把 Silverlight 想成 WPF 子集,因此直覺認為需要 NET 3.0。可是實際上他只進行 XAML 解析,並不能使用 .NET Framework 功能,所以也不能透過 C# 來擴充或強化 Silverlight,但是 1.1 版可以。

去除上述誤解之後,發現這種技術與現有的 Web 技術可以相當平滑的整合,如下是在 HTML 中透過 inline XAML 展示我的 Silverlight Button:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Chui-Wen Chiu’s Silverlight Button</title>
    <meta name="author" content="Chui-Wen Chiu">
    <!– Silverlight Javacript Library –>
    <script type="text/javascript" src="Silverlight.js"></script>
    <script type="text/javascript">
    function createSilverlightEx(){ 
        Silverlight.createObjectEx({
            source: ‘#xamlContent’,         // Source property value.
            parentElement:parentElement,    // DOM reference to hosting DIV tag.
            id:’myPlugin’,                  // Unique plug-in ID value.
            properties:{                    // Plug-in properties.
                width:’120′,                // Width of rectangular region of plug-in in pixels.
                height:’44’,                // Height of rectangular region of plug-in in pixels.
                version:’1.0’},             // Silverlight version.
            events:{
                onLoad:null}});             // OnLoad property value — event handler function name.
    }
    </script>
</head>
<body>
<!– inline XAML –>
<script type="text/xaml" id="xamlContent"><?xml version="1.0"?>
 <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Canvas.Resources>
    <Storyboard x:Name="mouseEnter">
      <ColorAnimation Duration="00:00:00.25" To="#3DFFFFFF" Storyboard.TargetName="highlightEllipse" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" />
    </Storyboard>

    <Storyboard x:Name="mouseDown">
      <ColorAnimation Duration="00:00:00.2" To="#22000000" Storyboard.TargetName="highlightEllipse" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" />
    </Storyboard>
    <Storyboard x:Name="mouseUp">
      <ColorAnimation Duration="00:00:00.2" To="#3DFFFFFF" Storyboard.TargetName="highlightEllipse" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" />
    </Storyboard>
    <Storyboard x:Name="mouseLeave">
      <ColorAnimation Duration="00:00:00.25" To="#00FFFFFF" Storyboard.TargetName="highlightEllipse" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" />
    </Storyboard>  
  </Canvas.Resources>
  <Canvas Width="120" Height="44"
    MouseLeftButtonDown="btn_MouseDown"
    MouseEnter="btn_Enter"
    MouseLeave="btn_Leave"
    MouseLeftButtonUp="btn_MouseUp"
    >
    <Rectangle StrokeThickness="4" RadiusX="17" RadiusY="36" Width="120" Height="44" Stroke="#46000000">
      <Rectangle.Fill>
        <LinearGradientBrush EndPoint="0.5,-0.409" StartPoint="0.5,1.409">
          <GradientStop Color="#FFD3BE46" Offset="0.242"/>
          <GradientStop Color="#FFD79B03" Offset="0.333"/>
        </LinearGradientBrush>
      </Rectangle.Fill>
    </Rectangle>

    <TextBlock Width="67" Height="23.2" Canvas.Left="29" Canvas.Top="10" Foreground="#FFEFEFEF" Text="Click Me" />

    <Rectangle StrokeThickness="4" RadiusX="16" RadiusY="36" Width="104" Height="32" Canvas.Left="8" Canvas.Top="1.3">
      <Rectangle.Fill>
        <LinearGradientBrush EndPoint="0.5,-0.409" StartPoint="0.5,1.409">
          <GradientStop Color="#00FFFFFF" Offset="0.13"/>
          <GradientStop Color="#FFFFFFFF" Offset="1"/>
        </LinearGradientBrush>
      </Rectangle.Fill>
    </Rectangle>
    <Rectangle RadiusX="17" RadiusY="36" Width="114" Height="38" Fill="#00FFFFFF" x:Name="highlightEllipse" Canvas.Left="3" Canvas.Top="3"/>
  </Canvas>
</Canvas>
</script>

<div id="pluginHost" >
  <script type="text/javascript">
    var parentElement = document.getElementById("pluginHost");
    createSilverlightEx();
    function $(name){
        return    document.getElementById(‘myPlugin’).content.findName(name);
    }

    // Javascript 與 SOM(Silverlight Object Modal) 互動
    function btn_MouseDown(sender, e){
        $(‘mouseDown’).begin();
    }

    function btn_Enter(sender, e){
        $(‘mouseEnter’).begin();
    }

    function btn_Leave(sender, e){
        $(‘mouseLeave’).begin();
    }

    function btn_MouseUp(sender, e){
        $(‘mouseUp’).begin();
        alert(‘Hello’);
    }
  </script>
</div>

</body>
</html>

執行結果:[展示頁面]

進入 Button 的變色效果

 Snap3

對事件的反應

Snap1

結語

雖然上述的範例也可以使用 Javascript + CSS + HTML 達成,可是卻可以表達出現有的 HTML 上的技術與 Silverlight 1.0 是如何簡單緊密的整合。也因為如此,你可以很容易將現有的伺服端技術如:ASP.NET, PHP, JSP, …. 等與 Silverlight 整合,使你的網站看起來正有質感。而且透過伺服端技術,很容易將 Silverlight 封裝成可重複使用的元件,不過要讓 Silverlight 具有驚豔的效果,還是需要仰賴具有專業素養的美工人員,否則我在怎麼瞭解這些技術,還是只能畫出醜醜的圖 orz

Read Full Post »

下面是關於 Scott Petersen 的專訪,有興趣看可看看

http://blog.digitalbackcountry.com/?p=1095

Read Full Post »

很久沒看統計數字,想不到已經 9 開頭了,這麼冷門的 Blog 在經過長時間的累積之後,終於也達到這個數字~ 不過,我並不清楚這個數值的統計方式…. ㄏㄏ … 看看就好….

Read Full Post »

MSN SpaceGoogle DocGoogle Blog
Chui-Wen Chiu
2007.10.24
關鍵字:debug, visual studio, javascript, intellisense

前言

    今天參加高雄場次的微軟研討會,第一場由曹祖聖主講 VS2008 對 Javascript 的支援,內容提到一些不錯和有待改進的部份整理成本篇文章,由於目前 VS2008 還處於 Beta2 版本,所以未來可能還會進行修改或強化。

Javascript Intellisense

    VS2008 採用型別推測(type inference)方式來支援 Javascript 的 Intellisense,透過此一方式可以讓開發人員更容易找到變數/物件的成員,這個方法的缺點是如果無法正常推測初結果,則必須手動輸入,且此一方式需要花額外時間進行推測,所以,Intenllisense 需要一段時間才能夠呈現。除此之外,VS2008 也支援 HTML 中部引入外部的 js 檔,即使外部檔案位在其他網站,也仍然能夠使用(但是需要花一些時間)。如下圖:


圖1、Javascript Intellisense[1]

如果 HTML 中引入多個 js 檔案,為了 js 檔可以顯示其他 js 的 intellisense,必須在 js 檔的最開頭加上下面的相依宣告:
/// <reference
///   path="~/scripts/mylib.js"
///   assembly="System.Web"
///   name="ScriptResourceName.js"
/// />

其中 path 屬性用來定義引用的 js 檔案路徑,如果你使用 .NET 的組件,可透過 assembly 和 name 屬性指定 .NET 組件。如果忽略 assembly 屬性,預設為 System.Web.Extensions。

    為了讓 Intellisense 支援說明,必須在定義的函數、物件或欄位中定義 XML 說明註解(註:註解說明位置和 C# 不同)。如:

function getWelcomeMessage(name){
  /// <summary>
  /// 這個函數是用來根據使用者姓名,自動產生歡迎文字
  /// </summary>
  /// <param name="name">使用者姓名</name>
  /// <return>string</return>

  return "歡迎 " + name;
}

執行結果:


圖2、函數說明提示[1]


圖3、參數說明提示[1]

以下是常用的 XML 註解:
函數參數

<param
    name="參數名稱"
    mayBeNull="true|false"
    optional="true|false"
    type="參數型別"
    parameterArray="true|false"
    integer="true|false"
    domElement="true|false"

    elementType="陣列元素型別"
    elementInteger="true|false"
    elementDomElement="true|false"
    elementMayBeNull="true|false">

    參數說明文字
</param>

在定義數值說明時,可以使用 type, integer, domElement 和 mayBeNull。由於 JavaScript 沒有 integer 型別,只有 number 型別,所以可以將 type 設成 Number,integer 設成 true,來表示整數型別。可省略參數用 optional ="true"。參數如果可以重覆出現可將 parameterArray 設為 "true"。

陣列說明

="_x0000_s1026">

因為 JavaScript 並沒有類似 int[] 這樣的陣列宣告,因此在定義說明時,可以使用 elementType, elementInteger, elementDomElement 和 elementMayBeNull 來定義陣列的說明。

函數回傳值
<returns
    type="傳回值型別"
    integer="true|false"
    domElement="true|false"
    mayBeNull="true|false"

    elementType="陣列元素型別"
    elementInteger="true|false"
    elementDomElement="true|false"
    elementMayBeNull="true|false">
    傳回值說明文字
</returns>
元素和函數參數相同不贅述。

屬性
<value
    type="數值型別"
    integer="true|false"
    domElement="true|false"
    mayBeNull="true|false"

    elementType="陣列元素型別"
    elementInteger="true|false"
    elementDomElement="true|false"
    elementMayBeNull="true|false"
    locid="descriptionID">

    屬性說明文字
</value>
元素和函數參數相同不贅述。

欄位
<field
    name="欄位名稱"
    type="欄位型別"
    integer="true|false"
    domElement="true|false"
    mayBeNull="true|false"

    elementType="陣列元素型別"
    elementInteger="true|false"
    elementDomElement="true|false"
    elementMayBeNull="true|false"
    locid="descriptionID">欄位說明文字
</field>
元素和函數參數相同不贅述。

AJAX, ASP.NET, Web Service 對 Javascript Intellisense 支援

雖然 ASP.NET 也可直接印入 js 檔,但官方建議透過 ScriptManager 引用,引入之後即可獲得相同支援。如下:

<asp:ScriptManager ID="ScriptManager1" runat="server">
  <Scripts>
    <asp:ScriptReference Path="~/MyLib.js" />
    <asp:ScriptReference Path="~/jQuery.js" />
  </Scripts>
</asp:ScriptManager>

如果想在引入 Web Services 中的 js,首先,在 Web Service 中必須加入 System.Web.Script.Services.ScriptService Attribute,如下:

 

[System.Web.Script.Services.ScriptServie()]
[WebService(Namespace="http://tempuri.org&quot;)]
public class WebService: System.Web.Services.WebService{
  [WebMethod()]
  public String Hello(){
    return "Hello World";
  }
}

接著在 ASP.NET 的 ScriptManager 中加入 Services 即可獲得支援,如下:

<asp:ScriptManager ID="ScriptManager1" runat="server">
  <Services>
    <asp:ScriptReference Path="~/MyLib.asmx" />  
  </Services>
</asp:ScriptManager>

在 AJAX 上,AJAX Client Behavior, AJAX Client Control 和 AJAX Client Library 使用上也支援 Javascript Intenllisense。

圖4、AJAX 的支援[1]

Javascript 偵錯

VS2008 要對 IE 進行偵錯,必須在 IE 上關閉"停用程式碼除錯"選項(VS2005 或 Visual Script Debugger 相同)。如未關閉可能出現如下提示訊息:

圖5、除錯關閉提示[1]
關閉方式如下圖所示:


圖6、關閉除錯停用選項[1]

語法錯誤提示

當你透過 Visual Studio 編輯 Javascript 時,會即時檢查語法的正確性,如果你用 VS2005 編輯 C# 就會相當熟悉這個通能,他會在語法錯誤之處會標示提醒符號,如下圖:

圖7、語法檢查[1]

中斷點

可在程式中設定中斷點,如同 C# 程式一般,像是條件式中斷、hit count 中斷等,也可在中斷時,透過 Call Stack, 區域視窗, 即時監看視窗, Visualizer 等檢查相關的參數狀態,如下圖:


圖8、中斷點[1]


圖9、各種除錯視窗[1]


圖10、Visualizer [1]

偵測外部網頁

    這個功能我覺得是這個主題中相當重要的一部分,這個主要用來偵錯已經在運作中的網頁 Javascript 功能,雖然 VS2005 也有類似的功能,但不像 VS2008 這麼強大,他可將指定的網址相關檔案下載下來,並在 VS 中呈現目前的內容,並且會依據實際情況變更。所以,如果你要研究某個網站的 Javascript 如何撰寫,只要透過這個方式將網頁資料透過 VS 偵測,並利用剛剛說的中斷點和其他除錯視窗,就是一個強大的 Hack 工具。唯一美中不足的是無法動態修改程式碼。希望未來能夠提供此功能。

    由於沒有 VS2008 可抓圖展示,就以投影片的內容整理如下:

啟動外部偵錯
1. 使用 IE 瀏覽網頁
2. 使用 Visual Studio 2008 將 IE 的行程 (iexplorer.exe) 附加到偵錯模式下


圖11、VS 附加到指定 IE 行程 [1]

3. VS 會下載相關檔案到 Script Document


圖12、Script document [1]

4. 開啓檔案
4. 設定中斷點
5. 進行偵錯


圖13、Script document [1]

常見問題

1. 是否支援物件的 Intellisense?

2. 是否支援物件的程式碼註解格式?

3. 是否支援 Reference To 到函數或物件的功能?
否,尚未支援

4. VS2008 的 Javascript 註解格式是否可以產生文件?
目前尚未支援

5. 是否可關閉 Intellisense 功能?
否,沒有提供選項設定。

6. 可偵錯 Silverlight 嗎?


7. 現有的 javaDoc 註解格式是否支援 Intellisense 或提供轉換工具?
否,可透過 Open Source 尋找看看

8. 可支援 Firefox 上的偵錯嗎?

參考資料

[1] 曹祖聖, "深入 Visual Studio 2008 Javascript 偵錯技術投影片 "
[2] "Debug JavaScript in JSP or PHP Pages with Visual Studio 2008"

Read Full Post »

Older Posts »