2012年7月28日 星期六

[筆記]紅麴

筆記
* 市面上的紅麴相關商品,是指含有紅麴菌(Monascus purpureus)發酵所產生的物質
* 紅麴菌是一種廣泛存在於穀類、河川沉積物等處的黴菌,它由長形細胞接連成菌絲,再由菌絲集合成菌絲
* 紅麴菌是因為培養數日後,菌絲會由白色逐漸變成橘紅色
* 發酵過程中,紅麴菌會分泌多種酵素
* 紅麴產生的酵素包括澱粉分解酵素、果膠分解酵素、核醣核酸分解酵素等,通常應用在發酵食品或醃漬魚、肉、豆腐等食品中,可以產生特殊香氣
*  酵素 將培養基質中的醣類、蛋白質、脂肪分解,產生所謂「一級代謝物」與「二級代謝物」
* 一級代謝物主要有不飽和脂肪酸、醇及酯類化合物,可應用在美容保養品
* 二級代謝物中便有許多具保健功效的分子, 也是一般聲稱紅麴具有降血壓、降血糖、降血脂、防癌等功效
  *  可抑制膽固醇合成的monacolin K
  * 具降血壓功效的γ胺基丁酸(GABA)、
  * 能抑制癌細胞生長的紅麴色素
* 二級代謝物中還包含對肝、腎有毒性的橘黴素(citrinin)
* 衛生署規定市售紅麴食品的橘黴素含量不得超過2 ppm(1 ppm為百萬分之一)
==================================================================

以下文章來源:科學EasyLearn

火紅的紅麴

近年來,市面上出現許多紅麴製品,聲稱含有保健功能,究竟其保健功效從何而來?


文/楊嘉慧;審稿/台灣大學生化科技學系教授 潘子明

近年來,紅麴的保健功效逐漸被證實,市面上的紅麴產品也日漸增多,除了傳統的紅糟肉、紅露酒之外,現在還有紅麴吐司、紅麴餅乾、紅麴酒粕面膜等,這些紅麴製品,均含有紅麴菌(Monascus purpureus)發酵所產生的物質。

紅麴菌是一種廣泛存在於穀類、河川沉積物等處的黴菌,它由長形細胞接連成菌絲,再由菌絲集合成菌絲體。之所以被稱為紅麴菌,是因為培養數日後,菌絲會由白色逐漸變成橘紅色。

紅麴菌產生的酵素與代謝物
培養紅麴時,經常以穀物(例如稻米)當培養基質。製程是洗米、瀝乾、蒸米,再接種紅麴菌於熟米中,之後翻攪、調節溫度(約35℃),經7~10天發酵完成即可收麴。發酵過程中,紅麴菌會分泌多種酵素,將培養基質中的醣類、蛋白質、脂肪分解,產生所謂「一級代謝物」與「二級代謝物」(註),二級代謝物中便有許多具保健功效的分子。

紅麴產生的酵素包括澱粉分解酵素、果膠分解酵素、核醣核酸分解酵素等,通常應用在發酵食品或醃漬魚、肉、豆腐等食品中,可以產生特殊香氣。紅露酒就是利用當中的酵素來進行發酵。

一級代謝物主要有不飽和脂肪酸、醇及酯類化合物,可應用在美容保養品,例如市面上的紅麴多酚美白乳液、紅麴酒粕面膜、紅麴胺基酸洗髮精等,即是萃取紅麴菌的
一級代謝物製成。二級代謝物中,最被大家熟知的是紅麴色素(分紅色素、橙色素及黃色素),它應用在蛋白質食品上,如肉類,可產生極佳的著色效果,如紅糟肉就是將肉品浸泡在紅麴菌與糯米混合發酵的紅糟中。

二級代謝物中,有不少具有生理活性的物質,一般聲稱紅麴具有降血壓、降血糖、降血脂、防癌等功效,幾乎都是來自二級代謝物。例如可抑制膽固醇合成的monacolin K、具降血壓功效的γ胺基丁酸(GABA)、能抑制癌細胞生長的紅麴色素等。值得注意的是,二級代謝物中還包含對肝、腎有毒性的橘黴素(citrinin),有研究人員發現注射橘黴素於雞胚胎中,會造成雞胚胎腦畸形、腳變形、眼球凸出等;注射橘黴素於狗的腹腔會導致嘔吐,嚴重時還會出現脫水、電解質失調等反應。

目前衛生署規定市售紅麴食品的橘黴素含量不得超過2 ppm(1 ppm為百萬分之一),在購買紅麴食品時,一定要檢視標示上註明的橘黴素含量,並盡量挑選有認證標章的產品,如GMP工廠製造、SNQ國家品質標章。此外,有些紅麴食品富含水份,如紅糟,容易受雜菌污染而變質,開封後最好存放於冰箱。

註:一級代謝物是微生物在快速繁殖時合成製造的產物,是維持微生物生長所需的養份,例如不飽和脂肪酸;而二級代謝物多半是微生物在死亡速率與繁殖速率相當時產生,它對生命的維持無明顯功能,且只產生於特定某些微生物,例如紅麴菌產生的色素。

橘黴素不要來!
橘黴素可抑制革蘭氏陽性菌如鏈球菌、芽孢桿菌等食物腐敗菌的生長,但本身也是毒性物質,食用過量會對肝、腎等組織器官造成傷害,因此在紅麴食品的製程中,必須想辦法降低橘黴素的產生。

目前降低橘黴素的方法為照射放射線及使用化學變異誘導劑,讓紅麴菌的下一代基因發生突變,再從中挑選出橘黴素產量少的菌株。例如財團法人食品工業發展研究所的紅麴菌株M011及台灣大學生化科技學系使用之菌株NTU 568,就是透過物理方法與化學方法讓紅麴菌突變,再從中挑選出優良菌種。其中,編號M011是會產生大量黃色素及少量橘黴素的紅麴菌,可安心用於食品色素;NTU 568培養到第9天後,會開始產生橘黴素,因此,在橘黴素尚未出現之前收麴,也能避免產生橘黴素。

此外,改善發酵條件也是控制橘黴素的方法之一,例如調配培養基的成份,可改變橘黴素生成的代謝路徑。有研究發現,發酵過程若降低氮源含量並提高碳源含量,可降低橘黴素的生成。此外,發酵環境的pH值控制在4.5以下,也能有效抑制橘黴素的生成。

參考資料
《發現紅麴新價值》,潘子明著,健康世界出版
延伸閱讀
〈專訪中央研究院院長翁啟惠:台灣的生技產業有機會!〉,李名揚採訪,《科學人》2008年9月
《發酵技術概論》,黨建章著,新文京出版
高中必修科目《基礎生物》

2012年7月27日 星期五

[筆記]教小孩從錯誤中學習

* 挫折與犯錯是人生的一部分,只是我們要學習如何面對它
* 犯錯不等於能力不足
* 教導孩子面對錯誤的好方法就是做給他看(身教)


文章來源:親子天下雜誌
◎本文摘自《親子天下》全新改版《培養小孩的挫折忍受力》一書
如果想培養小孩挫折忍受力,就必須讓他們知道錯誤是生命的一部分。
傳達這個訊息的機會幾乎俯拾皆是。方法之一是做小孩的表率,並協助小孩培養對錯誤抱持更積極、不認輸的態度。不論小孩潑灑了牛奶、一時忘記別人的名字、在戶外走動時絆倒,教導他們記得儘量保持冷靜,以清楚的言語說明如何降低犯相同錯誤的機率,而且儘可能運用幽默感。幽默,會將錯誤的負面力量降到最低。
家長可能希望在合適的情況下,和子女探討他們的學習評量表及教師評語。曾有一位擔任律師、事業非常成功的家長,向我們吐露他和一對小兒女之間的討論和對話。他說:
「他們為了爭取好成績給自己太大壓力,好像前途就繫於中學成績似的。我認為,他們這種態度並不是因為我和我太太對他們說過的一切,而是許多小孩自然感受到某種壓力。
有一次,我跟小孩討論他們應該放輕鬆時,女兒說:『你說得倒輕鬆,你大概常常不費吹灰之力就拿到好成績。』
聽到女兒這番話我才明白,我真的從沒和他們談過我求學時的種種。
我父母一直保留我的成績單,後來全交給了我。結果我和小孩就從回顧我的成績單和老師評語開始聊起我的求學經過,其中包括十年級社會科老師寫下的這段話:『他的成績並不能反映他的能力,但以他來向我討更高分數的說辭顯示,法律或許是適合他攻讀的學科。』

我不認為這個老師是用幽默的方式寫下這段話,可是當我和小孩看到時,我們都笑了出來。他們還發現,原來我的成績並不如他們想像中的優異。」
家長在小孩犯錯時的反應,和示範如何正確面對錯誤一樣重要。你的反應是不是看他無法順利組合玩具就生氣又挖苦?你的評語是否儘量避免強化負面作用,例如:「如果老是急就章,你永遠也不會成功!」、「你為什麼不用用大腦!」,或者:「我常常跟你說,你做的一切永遠都不可能成功!」
當小孩犯了一些我們認為可以避免的錯誤時,父母往往很容易情緒失控。如果盛怒讓我們產生偏見,認為小孩沒有能力學習,他們就會誤以為錯誤就是能力不足的象徵。記住一個問題:「我希望別人用我對子女說話的方式與我交談嗎?」
你也可以幫小孩為隨時可能出現的錯誤做好萬全準備。例如,有個父親教女兒學騎腳踏車時,就對她說:「不要擔心,我隨時在旁邊接著妳,幫妳再坐上去。過不了多久,妳就可以自己騎車了。」諸如此類簡單又有力的叮嚀和打氣,可以讓小孩知道,即使他們跌下車來,父母隨時在旁協助他們。
另外,當小孩無法順利完成一件事時,不妨以他們認為可能有幫助的方式和他們討論,如此可以傳達以下訊息:情況絕對可以改善,糾正錯誤的方法有很多種。
家長可以在行動計劃就緒時,問孩子:「如果無法達到預期效果,你打算怎麼辦?你的備用計劃是什麼?」提出某件計劃不會成功的可能性,不應被解釋成注定失敗的預言;這只是承認:並非每件計劃都能成功。
事實上,只要小孩知道他們可以另謀對策,坦然面對計劃可能不會成功的現實,反而能幫助他們學習用更妥善的方式及態度面對錯誤。

共用耳扒子也會得菜花?

簡單的來說,來源不明的東西少用~ 不舒服就儘快就醫

------
新聞來源

台中一對王姓父子因耳朵長異物,意外發現都長了菜花,院方懷疑是王父習慣在美髮廳使用公用耳扒子,因此染上菜花,王父回家後又和兒子用同個耳扒子,才會父子都染病。

32歲王姓男子日前至台中醫院耳鼻喉科就診,表示右耳內長了異物,院方懷疑是菜花,經切片檢查後確認,利用雷射電燒手術和藥膏治療,才幫助王男解決困擾。王男主動向醫師表示,父親耳朵裡也有一顆,趕緊通知父親接受治療。

醫師表示,菜花的傳染途徑除性器官的接觸外,不潔的接觸也會感染,建議衛生用品最好自己使用,勿與其他人共用。


防菜花感染須知
★掏耳前先確認店家使用的器具經過消毒,最好使用一次丟棄的器具,避免感染
★掏耳後若耳朵癢、痛,千萬不要繼續掏耳,以免破皮部位更大
★耳朵不舒服、癢,最好請專業耳鼻喉科醫師處理,勿亂掏耳朵
★三溫暖、泡湯處的椅子、毛巾等公共用品,應確認消毒,避免接觸後感染菜花
★若發現皮膚粗硬,切勿硬摳,以免破皮、流血,導致病灶快速擴散

Google 1TB 的網路


有這麼快的網路,我應該不會想買硬碟來裝東西了... 一切都在網路處理~

2012年7月25日 星期三

利用 wget Clone ftp 站並自動關機


今天整理資料的時候發現一個網友分享的 FTP 站,存放大量的開發資源
於是想 Clone 一份備存
一般會使用 FTP 工具來達成
其實用 wget 很輕易就可以達成
只要建立一個批次檔如:mirror.bat
wget.exe –ftp-user=username –ftp-password=password -m -c ftp://xxx.yyy.zzz
shutdown -f -s -t 0
第一行就是用來 Clone FTP 站台而且支援續傳,假設第一條備份結束,就會自動執行第二條強制關機
wget 真是一把值得收藏的好刀~~~ 

[Android][快快分享(Quick Share)] 小技巧-用wget備份分享的目錄


當你的手機收集了一堆漫畫、照片想要移轉到電腦
你可以使用快快分享的資料夾分享功能

然後電腦可透過以下命令輕鬆備份
wget.exe -np -m http://10.62.9.136:60535/b/asder4
* 紅色為分享資料夾的 url

[Android]快快分享(Quick Share)


這是一個在 Android 上使用的 App, 可透過簡單的選檔即分享步驟,讓手機對手機可透過 QR Code 直接分享。
因為檔案分享是透過http協定,如要分享給其他類型的手機(iOS/WM), 平板或PC都可透過瀏覽器直接抓取
可當作一個手機型檔案分享器使用
詳細的使用說明
apk 搶先下載
完整功能介紹可參考
Google Play Market

Google 搜尋裡的計算機

點選這裡


2011年8月1日 星期一

《不能戳的秘密》

轉自:http://feedproxy.google.com/~r/Clubtblog/~3/U9mwedm2fvk/blog-post.html

片長實在太長,以下是幫沒時間看的人做簡單懶人包


1. 高致病性禽流感病毒 H5N1, H5N2 已經 " 在地化 "
結合在一起變成新種變種病毒

2. 禽流感病毒已傳染給豬隻 (達14.9%)
只要傳染給豬隻代表有可能從豬身上繼續傳染給哺乳類

3. 學者調查台灣北中南的養雞場 " 工作人員 "
其中有 20% 的人對禽流感血清疫苗產生陽性反應
20% 之中更有 66 個人確定已經感染 H5N2



事件部份:


1. 早在2004年、2006年就發現禽流感疫情,也有媒體報導
但政府都用「是候鳥傳染」當作藉口,在媒體面前上演清洗電線桿的可笑戲碼

2. 2006年為了加入WHO,為了把「積極防治禽流感」當作入會宣傳
明明疫情已爆發卻不敢聲張怕沒辦法入會

3. 學者提出學術研究報告,卻因為出資者是農委會,不敢聲張
該份報告也被河蟹,農委會檢驗所的紀錄消失無蹤

4. 雞農困於每次發生疫情都會被撲殺加上雞價掉落,不敢直言
但私底下自己都會接種疫苗讓死亡率降低
這種做法卻變成另一種傳染源,讓雞隻感染率大增
( = 我們吃的雞可能都是遭受過感染的病雞)

5. 導演長期自行解剖雞隻,自行送檢驗所追蹤
並有一些被政府隱匿的證據報告是由匿名者提供

6. 2008年五月(馬政府初上任)發生六萬隻雞暴斃事件
農委會告訴媒體這不是H5N2禽流感而是另一種「新城病毒」
但防檢局又發了篇新聞稿說「不是新城雞瘟,原因不明」
真正的答案是變種病毒

7. 然而台灣沒有回報給OIE(世界動物衛生組織)任何情報
農委會反而在12月把「新城病毒」從甲級降到乙級

8. 2010年一月發生大量疫情,發現H5N2
家畜衛生所連續做了兩次試驗,檢測後發現28間養雞場都呈現陽性反應
指數都遠遠超過國際標準(測出:2.54 vs. OIE:1.2)

9. 2010年五月媒體舉發,農委會卻全部否認
告訴大家「這是低病原,沒有人死掉就代表不嚴重」
檢驗報告卻被列為「公務機密」不讓外部檢閱

10. 導演訪問農委會防疫檢驗局局長
局長表示「沒有大量的死亡疫情報告,不算有病毒」

11. 農委會私底下開了兩次會議和眾學者 "商量" 兩次試驗該怎麼辦
與會者包括台大獸醫系教授等等,眾學者卻同意:

12. 為了掩蓋疫情,農委會竟然想出「獨步全球的檢驗實驗」
重新買了六十隻中雞想做出新的實驗報告
讓指數掉回正常值再回報給OIE
(現在OIE官方網站上面台灣的正常數字正是這份 "新" 報告)

13. 導演和記者分別打電話給當時的參與學者,所有的學者都推說不清楚不知道
紀錄片後半段就是當時參加會議時的所有人全部都在推托的電聯紀錄...
而經調查當時與會教授大半都有拿政府的補助經費...

14. 家畜衛生實驗室所長承認做了六十隻中雞的實驗
也承認沒把最之前所作的兩次指數超常的報告交給OIE
對於屏東大量雞隻死亡的案件,卻告訴導演「你先把攝影機轉掉」

15. 六年來跨越兩大政黨輪替的禽流感
從一開始的低致病性,演變成高致病性
最後演變成台灣官員篡改數字交給國際組織聲稱一切沒問題
成為不能戳的祕密



片尾導演告訴大家可從蛋價來判斷禽流感是否正在發生

梁靜茹-沒有如果

沖馬桶的正確觀念


※沖馬桶時一定要蓋上蓋子
馬桶,人們每天都要使用,但稍不留意,它也可能成為疾病之源。
紐約大學菲利普·泰爾諾博士指出,如果沖水時馬桶蓋打開,馬桶內的瞬間氣旋最高可以將病菌或微生物帶到6米高的空中,並懸浮在空氣中長達幾小時,進而落在浴廁物品上。現在大部分家庭中,如廁、洗漱、淋浴都在衛生間裡進行,牙刷、漱口杯、毛巾等與馬桶共處一室,自然很容易受到細菌污染。因此,應養成沖水時蓋上馬桶蓋的習慣。
復旦大學公共衛生學院鬱慶福教授指出,調查發現,32%的馬桶上有痢疾桿菌,其中一種名為“宋內”的痢疾桿菌在馬桶圈上存活的時間長達17天;另一份實驗報告也指出,將1億個脊髓灰質炎病毒投入馬桶內,濺到座圈上的病毒竟有3000個。同時,不少人冬天喜歡在馬桶上套個絨布墊圈,這樣更容易吸附、滯留排泄污染物,傳播疾病的可能性更大。污染如此嚴重的地方恰恰和人們皮膚的接觸最“親密”,因此要重點進行清潔,每隔一兩天應用稀釋的家用消毒液擦拭。至於布制的墊圈最好不用,如果一定要使用的話,應經常清洗消毒。如果有條件,不妨換一個具有抗菌功能和防濺設計的座便器。


馬桶圈細菌多要重點清潔
馬桶容易沾染尿漬、糞便等污物,沖水後如果發現仍留有殘跡,一定要及時用馬桶刷清除乾淨,否則容易形成黃斑污漬,也會滋生黴菌和細菌。除了管道口附近,馬桶內緣出水口處和底座外側都是
馬桶內的髒物及時清洗
藏污納垢的地方,清洗時先把馬桶圈掀起,並用潔廁劑噴淋內部,數分鐘後,再用馬桶刷徹底刷洗一遍,最好用細頭的刷子,這樣能更好地清潔馬桶內緣和管道口深處。然後再刷洗底座和其他縫
隙。

范瑋琪 最重要的決定


不就是一台車有必要玩這麼大嗎

2009年3月25日 星期三

伊甸愛心園丁


幫幫弱勢兒童及身障朋友~2000個愛心園丁,就差你一個!





「…生命是那樣的美好,然而,對絕大多數的身心障礙者來說,  他們的日子是浸在淚水中的。我只是想,我們能做點什麼,好讓他們的眼淚可以少流一點,路可以平坦一點。好讓他們在拼鬥的過程中,不被天擊倒,不被人擊倒;最重要的,也不被自己擊倒。






保留他們最後一點尊嚴和自信,活出一個人的樣子。」






劉俠女士創辦的伊甸基金會,希望能招募願意持續付出愛心的園丁,



每個月300元(1天只要10元),就可以協助弱勢兒童及身障朋友。




  • 捐款人資料:























姓名:捐款人姓名:



身份證字號:



收據抬頭:



性別:生日:
年
月 日



電話:
手機:



通訊地址:






  • 捐款方式(持續至少一年)




月捐□300
元/
□500
元/
□1000
元
/其它
元



加入日期:
終止日期:
(未填者欲停止捐款時請電話通知
)




  • 捐款方法:




□信用卡捐款(填寫以下信用卡資料即可)



發卡銀行:
信用卡有效期限:西元
年  月



信用卡卡號:     
捐款金額:
$



持卡人簽名:   
(與信用卡簽名同一致)








  • 郵局儲金帳戶轉帳




授權人直接轉帳付款類別:(請勾選一項)
授權人蓋章:(請蓋原開戶印鑑)







□ 存簿儲金局號
□□□□□□─□



存簿儲金帳號
□□□□□□─□



□ 劃撥儲金帳號
□□□□□□□□



(轉帳日:每月20日)





謹代表所有需要支援,且受惠於伊甸基金會的朋友,向您獻上最誠摯的謝意。謝謝您!


(
傳真:03-4914935
電話:
03-4947341#137-8,0913622052
伊甸基金會邱小姐)






2008年1月25日 星期五


No Pain No Gain











No Pain No Gain… Accept the Pain, Future will be Fruitful…


Don't feel the work you are doing is pain, because there will be always a reason for that pain or work.


2007年10月25日 星期四

簡單快速取出 chm 中的圖片

MSN Space、Google Doc、Google 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 並找出你想要另存的圖片,按下滑鼠右鍵點選"屬性",如下:


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

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

VS2008 對 Javascript 的支援


MSN Space、Google Doc 、Google 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")]
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"




VS2008 對 Javascript 的支援


MSN Space、Google Doc 、Google 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")]
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. 進行偵錯
圖12、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"




搜尋此網誌