網頁

Visual Studio 2008中的JavaScript IntelliSense

在我們使用VS2008(Visual Studio 2008)中,排除語言(C#, VB.NET)等不談,其中最重要的就是IntelliSense功能,而在VS2008裡你可以發現,不論是本身的語言支援外,連CSS與JavaScript都有支援。而IntelliSense包括了四項功能:

  • 列出成員( List Members )
  • 參數資訊( Parameter Information )
  • 快速諮詢( Quick Information )
  • 自動完成文字( Complete Word )

這四項功能,我認為每一樣都很重要,而且非常實用。

其中VS2008之中JavaScript支援是指原JavaScript內建物件成員的支援,如Array、String、Math、Date、Number等內建物件,這提供我們在撰寫JavaScript程式碼時極大的便利性,這一點是一般文字編輯器所做不到的。

But,如果是我們自行撰寫的JavaScript Function,是否也能像原JavaScript內建物件一樣支援IntelliSense,這就是今天的重點。


in-line撰寫JavaScript Function

in-line就是說在HTML中的<head>...</head>區段中加入<script type ="text/javascript">...</script>區段,然中在<script>區段中加入自行撰寫的JavaScript Function:



function showName(firstName, lastName) {
    alert("First Name :" + firstName + ", Last Name :" + lastName);
 } 


當你稍後引用時,就能發現VS2008會自動將你撰寫的Function showName()資訊加入IntelliSense之中,讓你享受IntelliSense所帶來的方便。不過在內嵌的JavaScript IntelliSense目前只能提供「參數個數」及「名稱資訊」。


在外部*.js中提供快速諮詢及參數資訊之說明文字提示

    這部份我先說,我也不知道為什麼VS2008中在內嵌的JS裡無法使用以下提供的方法,以下提供的方法只能在外部獨立的JavaScript檔案使用。這個方法正式名稱為「XML Code Comment」(XML程式碼註解)。

我們先在外部*.js中新增Function,然後在Function加入XML程式碼註解。

  • ///<summary></summary>,快速諮詢資訊
  • ///<param name="參數名稱" /></param>
  • ///<returns type="型別"></returns>,回傳值資訊
Tag之前都必須加上三條斜線(///),不可省略。


function showNameTime(firstName, lastName) {
    ///<summary>顯示使用者的姓名</summary>
    ///名字</param>
    ///姓名</param>
    alert("First Name :" + firstName + ", Last Name :" + lastName );
}
function getTime() {
    ///<summary>目前時間</summary>
    ///<returns type="string">回傳hh:mm:ss格式</returns>
    var date = new Date();
    var dateTime = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
    return dateTime;
} 

現在把這個外部*.js引用到使用的網頁中(*.html, *.aspx),然後在需要使用的地方打上Function Name,你應該就可以看到與內嵌不一樣的效果,是完整度更高的JavaScript IntelliSense。


多個*.js檔案之間的JavaScript IntelliSense參考

既然這個 「XML程式碼註解」的方法,只能使用在「外部*.js」,那如果是在多個*.js的情況下,那是否可以「互相」參考後來產生對方*.js的JavaScript IntelliSense,答案是可以。

showName.js裡有Function showName(),今天我有另一個getTime.js需要使用到showName.js,我想讓getTime.js支援showName.js的JavaScript IntelliSense,你只需要在getTime.js的第一行加入:


///<reference path="showName.js" />

然後你就能發現在撰寫getTime.js時也能參考到showName.js裡的IntelliSense,而且這種參考是可以雙向的,在showName.js中如果需要使用到getTime.js的Function,你也能在showName.js的第一行使用這個XML程式碼註解的方法。


強制更新JavaScript IntelliSense

也就是有時候如果你已經依照上述方法設定完成,但VS2008還來不及更新JavaScript IntelliSense,我們也可以手動更新這個JavaScript IntelliSense:

「編輯」→「IntelliSense」→「更新JScript IntelliSense」

這樣就可以命令VS2008立即更新JavaScript IntelliSense,讓我們馬上可以使用JavaScript IntelliSense所帶來的便利。

ASP.NET網頁快取(Cache)架構圖

以下1什麼1.1什麼的看不懂,請直接拉到下方去吧!

Cache快取

參閱: Cache Configuration,快取組態, Cache Removal,快取移除

1. Page output caching網頁輸出快取

1.1 Full page caching完整網頁快取

1.1.1 <%@ OutputCache Duration="3600" VaryByParam="None" %>

1.1.2 Response.Cache

1.1.2.1
        1. Response.Cache.SetExpires(DateTime.Now.AddSeconds(3600))
        2. Response.Cache.SetCacheability(HttpCacheability.Public)

1.1.2.2 Response.Cache --> Page.Response.Cache --> HttpResponse.Cache --> HttpCachePolicy

1.2 Partial page caching部分網頁快取

1.2.1 Control caching

1.2.1.1
        1. 只快取指定的區塊
        2. User Control, *.ascx

1.2.1.1.1
          1. 於*.ascs加入指示
          <%@ OutputCache Duration="3600" VaryByParam="None" %>

1.2.1.1.2
          2. 於*.ascs.vb加入PartialCachingAttribute類別
          _    '<-- 指定使用者控制項快取時間
          Partial Class UserControls_Name ...

1.2.2 Post-Cache Substitution快取後置換

1.2.2.1
        1. 指定的區塊不要快取
        2. Substitution
        3. AdRotator

1.2.2.1.1 2.1 Substitution中必須使用「Shared」共用/靜態方法

1.2.2.1.2 3.1 AdRotator內部已實作快取後置換

2. Application data caching應用程式資料快取

2.1 Key / Value (索引鍵/數值)

2.1.1
      Cache("FirstName") = "KingKong"
      Cache("LastName") = "Bruce"

2.1.1.1
        1. Response.Cache屬性 --> System.Web.HttpResponse.Cache
        2. Cache("")物件 --> System.Web.Caching.Cache類別

2.2 Cache.Add()

2.2.1
Public Function Add( _
key As String, _    '快取資料項目索引鍵
value As Object, _    '要加入至快取的項目值
dependencies As CacheDependency, _    '相依性,如無為Nothing
absoluteExpiration As DateTime, _        '絕對期限
slidingExpiration As TimeSpan, _        '滑動期限
priority As CacheItemPriority, _        '優先權
onRemoveCallback As CacheItemRemovedCallback _    '當物件從快取移除時,會呼叫委派(如果有)
) As Object

2.2.1.1 Cache.Add()方法無多載

2.2.1.2
        1. 絕對/滑動期限兩者只能選擇一個來使用
        2. 如使用absoluteExpiration則slidingExpiration參數必須為NoSlidingExpiration
        3. 如使用slidingExpiration則absoluteExpiration參數必須為NoAbsoluteExpiration

參閱: Expiration,資料過期 (絕對/滑動期限)

2.2.2
Cache.Add("UserName", txtUserName.Text, Nothing, _
System.WebCaching.Cache.NoAbsoluteExpiration, _
System.Web.Caching.Cache.NoSlidingExpiration, _
System.Web.Caching.CacheItemPriority.Default, _
Nothing)

2.3 Cache.Inser()

2.3.1
1. Cache.Insert(key, value)
2. Cache.Insert(key, value, dependencies )
3. Cache.Insert(Key, value, dependencies, absoluteExpiration, slidingExpiration )
4. Cache.Insert(key, value, dependencies, absoluteExpiration, slidingExpiration, priority, onRemoveCallback )

2.3.1.1 Cache.Insert()方法本身為多載型式

S1.
1. 針對ASP.NET Page頁面輸出的HTML進行快取。
2. 快取HTML物件是「視覺化」的物件內容。
3. 多使用<%@ OutputCache%>宣告。
(Page output caching網頁輸出快取)

S2.
1. 針對應用程式內的資料快取(DataSet, Key/Value, ...)
2. 必須使用 Cache(" ") Is Nothing 判斷是否有快取資料,僅使用 IsPostBack 來判斷,會有問題
(Application data caching應用程式資料快取)

A1. Cache Configuration,快取組態

參閱: Cache快取

A1.1 Machine.config/Web.config

A1.1.1 網頁輸出快取組態

A1.1.1.1

A1.1.1.1.1 影響整個網站所有頁面

A1.1.1.2

A1.1.1.2.1 只影響套用的頁面

A1.1.1.3 個別網頁(Individual Page)

A1.1.1.4 使用者控制項

A1.1.2 快取API組態設定

A1.1.2.1

A1.1.2.1.1 影響網站全域應用程式

A1.1.3 SQL快取相依性組態設定

A1.1.3.1

A1.1.3.1.1 只影響套用的頁面

A1.2 <%@ OutputCache CacheProfile="Cache3600Seconds" VaryByParam="None"%>

A2. Cache Removal,快取移除

參閱: Cache快取

A2.1 自動移除

A2.1.1 Scavenging,記憶體不足

A2.1.1.1 CacheItemPriority

A2.1.1.1.1 NotRemovable > High > AboveNormal > Normal(Default) > BelowNormal > Low

A2.1.2 Expiration,資料過期

參閱:
1. 絕對/滑動期限兩者只能選擇一個來使用
2. 如使用absoluteExpiration則slidingExpiration參數必須為NoSlidingExpiration
3. 如使用slidingExpiration則absoluteExpiration參數必須為NoAbsoluteExpiration (絕對/滑動期限)

A2.1.3 Dependency,相依性改變

A2.1.3.1 1. Key Dependence
    一個快取項目相依於其他數個快取項目

A2.1.3.1.1 直接使用CacheDependency類別

參閱: 2. File Dependence
    相依於外部檔案

A2.1.3.2 2. File Dependence
    相依於外部檔案

參閱: 直接使用CacheDependency類別

A2.1.3.3 3. SQL Dependence
    相依於MS SQL Server中資料表的變更

A2.1.3.3.1 使用SqlCacheDependency類別

A2.1.3.4 4. Aggregate Dependence
    彙總相依性,相依於多個項目

A2.1.3.4.1 使用AggregateCacheDependency類別

A2.1.3.5 5. Custom Dependence
    在自己程式碼中建立的相依性設定。

A2.1.3.5.1 自行繼承CacheDependency類別來實作符合需求的相依性類別

A2.2 手動移除

A2.2.1 Cache.Remove("key")


請參考:
1. http://share.xmind.net/kkbruce/cache-cache-1/

2.EmbedViewer


3. PNG圖下載

結婚要補稅

  你有在工作嗎?
  你有在賺錢嗎?
  你的收入需要報稅嗎?

  只能說,我不好好讀書,而且是全台灣最重要的一本,「萬萬稅」的那一本,我能生誰的氣?

  話說,我在9x年1月結婚,日子一切平安順利,而在同年5月是每個有工作的人最應該盡「義務」的時候,「我」這個豬頭,也沒有想那麼多,就給他「合併」申報下去,結果算一算,還不錯,我們小倆口的收入還未高到要交稅,當然,交不了稅也不知道是要高興還是傷心?

  誰知,這個月初收到國稅局的通知,說要補交我那9x年那年的稅金…都已經是多久以前的事了,是詐騙的嗎?上網查了查國稅局的電話,直接打過去問比較保險。

  結果…我好傷心,我這個豬頭,我…不能怪?aiwa?這個國家的可惡可稅之處。

故事:

  2009年1月小布與小雪結果,同年5月報稅時,小布心想,我們所得稅的計算是從前年5月到今年4月,也就是說所得稅計算是從2008年5月1日到2009年4月30日止,而小布與小雪是在這個計算期間內結婚,所以很直覺的在2009年5月使用了電子申報申請了兩人「合併申報」的資料。

  時間~咻~咻~咻,二年後,2011年9年小布收到一張國稅局的補稅通知,小布看了看實在看不懂,而且還是補二年前的稅,有沒有搞錯?還是這又是詐騙術?小布心想,還是上網查一下國稅局的電話(不敢打單子上的電話),直接打過去問比較快。

  嘟~嘟~嘟,你好,這是國稅局。
 
  小布表明身份及來意後,國稅局:好的,我查查。

  「小布先生,經過我們的查詢,是沒有錯誤,因為你是在09年1月結婚,所以你在09年的所得稅不能用合併申報,但如果你是在08年結婚的話就可以。」國稅局回答。

  小布聽了真的有點不敢相信,回問怎麼會這樣,國稅局只淡淡回了一句:「沒辦法,法令就是這樣規定,而且新婚的很多人有你這樣的情況,通常我們是會罰款,但碰到這種情況的,我們通常都會通融,只追原本的稅金。」

  在追交的過程裡,因為沒有「單據」(2009年已寄出),所以小布所有的扣除額都是用最低來計算,也算是變相的罰款,所以心裡有萬個「十日十八干」及億個「林娘卡好」,但只能怪小布自己第一次結婚,第一次合併申報。

  可憐的小布,花錢買「合併申報」的經驗。

  以上故事,純屬事實,如有雷同,絕非巧合。

數位式競爭--全球軟體公司的致勝策略(1)--前言

  Secrets of Software Success:Management Insights from 100 Software Firms Around the World~By Detlev J. Hoch, Cyriac R. Roeding Gert Purkert, Sandro K. Lindner, Ralph Muller

  這本書為民國89年出版,已經在我書架上很多了年,是我讀大學時的教科書,老師花了一個學期就只上這本書,當時讀起來沒什麼感覺,頂多只是為了交報告而讀,但很奇怪,它就是一直在我的書架上,雖然十多年來,書架上的書已經換了好幾回,尤其是資訊類的書,換的速度之快連我都怕,不過一本好書一定有存在的價值,不會因為時間的變動而有任何改變。

  我每天可以說都在與技術文件為「舞」,只是不知是我看它跳還是它看我跳。就這樣有一天,不知為何,好像「它」在跟我招手,然後說,來看看我吧,離上次你讀我已經是九年多前的事了,我能給你一些「明牌」!

  古人說:「不經一事,不長一知。」

  你沒有經歷過的事,說再多感受就是有限。但九年後的今天重讀本書,真是感受良多,這本書應該是十年前版的「由A到A+」。我一直很佩服國外的研究學者,能花那麼多時間、精神來研究出原本為「隱性」的知識,讓想要更上一層樓的人可以有方法可循。

  看完這本書後,讓我心有戚戚,十多年前的故事,現在每天還是在不斷重覆發生,不管是成功的故事,還是失敗的故事。我想這可能是知識的傳遞、了解到最後的落實還有很大一段差距。如果你從事軟體相關產業,而還沒有看過這本書,我非常建議你買來看看(我不知道還買不買的到)。

Vista要不到DHCP IP-Part2

  在「Vista要不到DHCP IP」說著一個目前無解的問題,也查不到什麼原因。

  新採購的電腦,原裝都已經是Vista,還可以升級為Windows 7,但依然會碰到要不到DHCP IP的問題,不過這一次花了點時間測試,發現以下情況:

  1. Vista ↔ Switch ↔ Router
  2. Vista ↔ New Switch ↔ Router
  3. Vista ↔ Router
  在不經過Switch的情況下,或使用較新的Switch(5 port,購買一年內),Vista就可以正常要得到DHCP發出的IP,所以我合理猜測是Vista與公司這些「舊」型的Switch相容性不佳所造成。

  但我們也不可能馬上換一台16/24 port Switch,所以還是要想辦法解決。
網路上有人提供把TCP/IP中IPv6選項移除。(我測試是沒有用)

提供解決Vista要不到DHCP IP的方法

方法一:更改網路卡速率



  電腦 → 管理 → 裝置管理員 → 網路介面卡 → 選擇NIC → 內容 → 進階 → 連線速度與雙工模式(每張卡翻譯不一樣) → 數值 → 隨便選一個

  網路卡會自動重新設定,然後你就可以看到網路卡正常運作。

  我想(猜測),我們現在的網路卡都已經是10/100/1000的模式,但公司舊型Switch還是在10/100,在網路卡偵測Switch/Router的速率時,產生了問題,以造成了你會發現網路卡有發出的封包,但完全沒有回應(接收)的封包。

  但這個設定方法還是有個麻煩的地方,也就是只要電腦重開機,你就必須再重新設定一次,改變網路卡的連線速度。這個地方我想還是跟上面一樣,雖然我們設定了網路卡的速率,但Vista預設在電腦啟動時,還是會去「偵測」Switch/Router的速率,結果又造成了問題。

方法二:加裝網路卡



  現在的電腦主機板已經很少沒有內建網路卡,但如果你手邊還有10/100的網路卡,或10/100/1000的網路卡(這個我沒試過),那就不要使用主機板內建的網路卡,自己加塊網路卡,目前我都可以使用這個方法正常解決這個「不知道原因」的問題。

直接使用檔案總管來登入FTP Server

  之前在「使用網址登入FTP」討論過直接使用網址的方式來登入FTP Server,但如果感覺麻煩,還有更方便的方式。

  如果你使用過IE來連接FTP Server,應該看過以下的畫面:

IE連接FTP Server

  在IE的畫面上會提示你可以「在Windows檔案總管中開放啟FTP」,我們可以到功能列「檢視→在Windows檔娛總管中開啟FTP 站台」,再到功能列「檔案→登入身份」進行登入作業。

  一般人都是先經過IE再到檔案總管再登入,需要經過三個步驟,其實不用那麼麻煩,直接透過檔案總管就好了。

Step 1:在「我的電腦」→按滑鼠左鍵→選擇「檔案總管」;


開啟檔案總管
Step 2:在檔案總管的「路徑」(網址列)直接輸入FTP Server網址;
檔案總管路徑列
Step 3:我們輸入測試網址:ftp://192.168.3.12;
    前面的「ftp://」不能少,不然總案總管不知道你是要連接FTP Server;

總案總管輸入FTP Server網址
Step 4:選擇「檔案」;
功能列-檔案
Step 5:選擇「登入身分」;

功能列-登入身份
Step 6:輸入認證資料;

FTP認證視窗
  以上的步驟就是少了IE跳到檔案總管的過程,讓我直接使用檔案總管來上傳下載檔案到FTP Server。雖然一直強調IE這種Browser只合適拿來「下載」用,但如果在非私人電腦上,也不失一個辦法。

  以上步驟在Windows XP也適用,只是畫面有點不同,我就不重抓了。

繁體簡體--(63)繁體簡體用詞對照表--其他

其他
大陸用詞    簡體字    台灣用詞
三公原則    三公原则   公平、公開、公正的原則
獨聯體     独联体    獨立國協
聯盟體     联盟体    盟體
長交會     长交会    長江三角洲對外經貿交易會
人防      人防     人民防空
政治權力    政治权力   公權力
三北      三北     東北、西北、華北統稱
涉外事務    涉外事务   境外人事物的事務
發展中國家   发展中国家  開發中國家
北京時間    北京时间   中原標準時間
上星台     上星台    衛星電視台
電視塔     电视塔    電視發射塔
計畫生育    计划生育   家庭計畫
優生優育    优生优育   家庭計畫
人工智能    人工智能   AI、人工智慧
人才赤字    人才赤字   人才外流
公判      公判     公開宣判
公派      公派     國家派遣
公章      公章     代表機關的印章
公款旅遊    公款旅游   公費旅遊
大案要案    大案要案   重大、重要案件
八寶山     八宝山    北京八寶山公墓
勞動保險    劳动保险   勞工保險福利制度
會標      会标     大會標誌
打黃      打黄     掃黃
打擊辦     打击办    打擊嚴重刑事犯罪鬥爭辦公室
打黑      打黑     掃黑
打私      打私     緝私
三廢      三废     工業排出的廢水、廢氣、廢渣
扶貧      扶贫     扶持貧困戶
環衛      环卫     環境衛生
法紀      法纪     法律和紀律
下放      下放     上級將權力移給下層
上訪      上访     陳情
生物鐘     生物钟    生理時鐘
批文      批文     許可證
兩會      两会     海基會、海協會
居民身分證   居民身分证  國民身分證
臨時戶口    临时户口   流動戶口
保修      保修     售後服務
政治避難    政治避难   政治疪護
三亂      三乱     亂收費、亂罰款、亂攤派
科技工業園   科技工业园  科學園區
科技園     科技园    科學園區
剝奪政治權利  剥夺政治权利 褫奪公權
烈度      烈度     強度
特快專遞    特快专递   快遞、快捷郵件
第一產業    第一产业   農業
第二產業    第二产业   製造業
第三產業    第三产业   服務業
第四產業    第四产业   資訊產業
第五產業    第五产业   顧問服務業、心理諮詢
第二資源    第二资源   科技資訊
第三能源    第三能源   水力資源
第五能源    第五能源   餘熱資源
打游擊     打游击    游擊戰
海事糾紛    海事纠纷   海上事件糾紛
國家機器    国家机器   公器
內控      内控     內部控制
公共財物    公共财物   公有物、公共財產
告訴才處理   告诉才处理  告訴乃論
尼爾尼諾現象  尼尔尼诺现象 聖嬰現象
高新技術    高新技术   尖端科技
交叉科學    交叉科学   科技整合
無用信息    无用信息   雜訊