真的是很意外,VS 2010 一開起來,程式可以編譯,但 Design 畫面全部都出現錯誤。
出現了 「creating control Error HRESULT E_FAIL has been returned from a call to a COM component」,網路上能夠出現這種錯誤的人似乎有,但不多。但有看到一篇「Error HRESULT E_FAIL has been returned from a call to a COM component」似乎在講很類似的問題。
主要是 ProjectTemplatesCache 出現問題,建議刪除後,再重建。
於是抱持著實驗精神,在「C:\Program Files(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplatesCache」找到了如下的檔案:
於是我關閉所有 Visual Studio 2010 視窗,並將 ProjectTemplatesCache 整個資料夾刪除,然後再透過 cmd.exe 進到
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE>
並執行 devenv /setup
然後重新開啟 Visual Studio 2010,所有 Design 介面的控制項就可以恢復正常了。
2016年3月18日 星期五
2015年10月26日 星期一
Angular 與 jQuery 的先後問題
近日在練習 Angular.js 的 ng-repeat 時,發現一個很怪的現象。程式碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="NotesApp">
<head>
<title></title>
<script src="//code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="js/angular.min.js" type="text/javascript"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<table>
<thead><tr><th>姓名</th></tr></thead>
<tbody ng-repeat="note in ctrl.notes">
<tr >
<td>
<input type="text" id="txtName" value="{{note.UserName}}" ng-model="note.UserName" />
</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
angular.module("NotesApp", [])
.controller("MainCtrl", [function () {
var self = this;
self.notes = [
{ id: 1, UserName: 'Paladin' },
{ id: 2, UserName: 'Nikki' }
];
} ]);
</script>
</body>
</html>
理論上,畫面會根據 self.notes 的內容,於 <table> 裡面產生了兩筆資料。如畫面所示,的確也產生出兩筆資料。但有趣的是:
1.當我在 IE 瀏覽器使用中文輸入法輸入「中文」時,文字框的資料被清空了。
2.當我在 Chrome 瀏覽器使用中文輸入法輸入「中文」時,文字框的資料變成重複的「中文」。
3.當我在 FireFox 瀏覽器使用中文輸入法輸入「中文」時,文字框的資料是正常顯示。
就在我拜讀了 Angular 与 jQuery 加载顺序的问题 這篇文章後,發現,原來載入 jQuery.js 與 Angular.js 大有學問。當載入 Angular.js 後,Angular 會把 window.jQuery 擴展到自己的 jQLite。為了避免兩個 JS 出現相容性的問題,所以建議先載入 jQuery,再載入 Angular。
讀到這裡,似乎有摸到邊了,就算不完全懂,也似懂非懂。但猛然回頭,阿我不就是照他建議的順序在寫嗎,怎麼還是錯呢!於是,我很認命的去檢查 jQuery 的版本,透過一個版本一個版本去比對,終於找到端倪了。當 jQuery 版本引用到 1.9.0 以後,原先那奇怪的中文輸入問題就解決了。
最後,我在 Angular FAQ 的內容裡面看到一段話:
Does Angular use the jQuery library?
Yes, Angular can use jQuery if it's present in your app when the application is being
bootstrapped. If jQuery is not present in your script path, Angular falls back to its
own implementation of the subset of jQuery that we call jQLite.
Angular 1.3 only supports jQuery 2.1 or above. jQuery 1.7 and newer
might work correctly with Angular but we don't guarantee that.
Yes, Angular can use jQuery if it's present in your app when the application is being
bootstrapped. If jQuery is not present in your script path, Angular falls back to its
own implementation of the subset of jQuery that we call jQLite.
Angular 1.3 only supports jQuery 2.1 or above. jQuery 1.7 and newer
might work correctly with Angular but we don't guarantee that.
也就是說,目前僅保證與 jQuery 的搭配是支援 jQuery 2.1 之後的版本。jQuery 1.7 或後面的新版本,則是不保證能正常執行。下次再遇到這種怪怪的問題時,不僅僅是引用的順序很重要,連版本也要注意了。雖然 Angular 建議我們稱這機會好好學 Angular 就好,不要再用 jQuery 這肥肥的程式了,但,這身上的包袱,可不是一時半刻就能抖乾淨的啊!
參考:
01:Angular 与 jQuery 加载顺序的问题
02:Angular FAQ
2015年10月21日 星期三
判斷瀏覽器是否有支援 required
在追查判斷瀏覽器是否有支援 Html5 required 功能時,看到網路上很多人都用了
if ($("<input />").prop("required") === undefined)
來判斷。我很好奇,$("<input />").prop("required"),這到底是什麼東西啊? 2015年4月7日 星期二
微妙的關係
jQuery 的選擇條件裡,存在著 child-selector 與 descendant-selector 的階層關係。
$("A > B") 表示著「父子關係」
在整個網頁的 DOM 裡找到所有的 B,再看 B的父親是不是 A,如果是,則保留;不是,則刪除,最後留下的就是我們所要的 B。
$("A B") 表示著「子孫關係」
在整個網頁的 DOM 裡找到所有的 B,再用遞迴的方式去看看他的祖先是否有 A 存在,有的話就保留,沒有就剔除,最後留下的就是我們所要的 B。
由此可以看出,在「子孫關係」中,我們為了要能夠判斷祖先是否存在我們所指定的項目,所以需要透過遞迴的方式不斷地往上去尋找。而找尋的時間,就會隨著 DOM 階層的複雜而增加。
針對效能的考量,當已經知道可以透過「父子關係」就能找出想要的資料時,就該使用「父子關係」,而避免使用「子孫關係」。
參考:
01:Child Selector
02:Descendant Selector
03:網站開發新路線:jQuery核心詳解與實踐應用
$("A > B") 表示著「父子關係」
在整個網頁的 DOM 裡找到所有的 B,再看 B的父親是不是 A,如果是,則保留;不是,則刪除,最後留下的就是我們所要的 B。
$("A B") 表示著「子孫關係」
在整個網頁的 DOM 裡找到所有的 B,再用遞迴的方式去看看他的祖先是否有 A 存在,有的話就保留,沒有就剔除,最後留下的就是我們所要的 B。
由此可以看出,在「子孫關係」中,我們為了要能夠判斷祖先是否存在我們所指定的項目,所以需要透過遞迴的方式不斷地往上去尋找。而找尋的時間,就會隨著 DOM 階層的複雜而增加。
針對效能的考量,當已經知道可以透過「父子關係」就能找出想要的資料時,就該使用「父子關係」,而避免使用「子孫關係」。
參考:
01:Child Selector
02:Descendant Selector
03:網站開發新路線:jQuery核心詳解與實踐應用
2014年8月15日 星期五
想當有錢人?
在雜誌中看到一個標題「想當有錢人?」,馬上吸引了我的注意。雖然我不貪財,但不嫌多,雖然我不好色,但...離題了!!
文章中列出了有錢人的 6 件事情與 4 種習慣,其實還蠻正向的,可以參考看看。
六件事情:
1.必須投資。投資能創造「被動收入」,讓錢替你工作。
2.任何事都及早開始。盡早開始累積能量,機會來時才能抓得牢。
3.賺錢不容易。舉了個數據給大家參考。每年賺超過10萬美元的人,平均比別人少 1/5 的休閒時間。
4.消費要有節制。用同樣的錢獲取最大的利益。
5.開源比節流重要。節流有底線,開源希望無窮。
6.有錢了,也要簡單生活。認何時候,跟金錢打交道都要保持清醒,別讓奢靡的生活蒙蔽了你。
四種習慣:
1.注重健康。運動、飲食都很重要。
2.維持形象、建立好人緣。祝賀別人生日、升官、生小孩。多參加社交活動。
3.過有紀律的生活。常常維護自己的「待辦事項」,每天要看書,起床比上班早3小時...
4.設定目標。專注某個特定目標、把目標寫下來、抱持「終身學習」的信念。
參考資料: Cheers 163 期 http://www.cheers.com.tw/article/article.action?id=5057196
文章中列出了有錢人的 6 件事情與 4 種習慣,其實還蠻正向的,可以參考看看。
六件事情:
1.必須投資。投資能創造「被動收入」,讓錢替你工作。
2.任何事都及早開始。盡早開始累積能量,機會來時才能抓得牢。
3.賺錢不容易。舉了個數據給大家參考。每年賺超過10萬美元的人,平均比別人少 1/5 的休閒時間。
4.消費要有節制。用同樣的錢獲取最大的利益。
5.開源比節流重要。節流有底線,開源希望無窮。
6.有錢了,也要簡單生活。認何時候,跟金錢打交道都要保持清醒,別讓奢靡的生活蒙蔽了你。
四種習慣:
1.注重健康。運動、飲食都很重要。
2.維持形象、建立好人緣。祝賀別人生日、升官、生小孩。多參加社交活動。
3.過有紀律的生活。常常維護自己的「待辦事項」,每天要看書,起床比上班早3小時...
4.設定目標。專注某個特定目標、把目標寫下來、抱持「終身學習」的信念。
參考資料: Cheers 163 期 http://www.cheers.com.tw/article/article.action?id=5057196
2014年4月25日 星期五
鑰匙要記得插啊
主機被人家代管久了,就慢慢疏離系統設定的作業。直到有一天,發現我寫的 Reporting Service 報表不管怎麼檢查都找不出原因時,才發現,是我的報表服務被人家關掉了。雖然我知道對方不是故意的,是因為系統做了更新重新啟動後,造成報表服務被停止,但下次遇到這種情況,還是要先到 SQL Server 組態管理員,看看 SQL Server 服務裡的項目有沒有正常被執行。否則,不就跟「你作幾年了?」這短片一樣,鑰匙有沒有插都不知道。
2014年3月11日 星期二
勞動興奮
![]() |
| 紅色區域為伏隔核,引自「維基百科」 |
乙醯膽鹼為一種神經傳導物質,掌管人的記憶力與精神集中,缺乏乙醯膽素是阿茲海默症主要病因,一旦乙醯膽鹼的產生系統受損導致其濃度下降,會導致記憶力變差。乙醯膽素也是引發深度睡眠中快速動眼期的重要物質,所以阿茲海默症患者也常有睡眠障礙。如果人體缺乏乙醯膽鹼,會造成體力下降,間接影響睡眠品質,容易造成憂鬱症。【參考05】
伏隔核(nucleus accumbens,依伏神經核)是種腦部結構,報償調解愉悅與渴望,那也參與了恐懼感。U-M 心理學研究者發現同樣一組神經元能來回翻轉,端看神經元被活化時處境的心情。
U-M 心理學研究者 Sheila Reynolds 與 Berridge 利用一種無痛的顯微注射法,將一小滴藥物(DNQX)置入約一立方公釐的、大鼠的伏隔核內(在腦部的前方基部),那處理來自於皮質的訊號。這一小滴化學藥物在邊緣的鍵盤按下一個鍵(tapped a key on a limbic keyboard)以產生正面的渴望以消耗獎賞,或負面的恐懼,端賴它在伏隔核中確切的位置。
如果這種穿刺(tap)位於腦結構的前方,就會產生飲食的正面渴望,而大鼠會吃比平常要超出八倍的食物量。在結構後方,一種負面的恐懼感就會產生,而大鼠展現出害怕的行為,牠們只在遇到威脅,例如蛇或蠍這類掠食者,才會自然產生。【參考02】
瞭解到大腦的伏隔核所產生的乙醯膽鹼,對我們的愉悅渴望與恐懼感有著關鍵性的主宰,透過簡單的小動作、小任務,對於學習就會有很大的效果。更進一步的延伸來看看運動是否也會對學習有加分的影響呢?國內腦神經科學家洪蘭於「運動改造大腦:IQ和EQ大進步的關鍵」一書的序中提到:
我們在運動時會產生多巴胺(dopamine)、血清素(serotonin)和正腎上腺素(norepinephrine),這三種神經傳導物質都和學習有關。多巴胺是正向的情緒物質,人要快樂,大腦中一定要有多巴胺,我們的快樂中心伏隔核(nucleus accumbens)裡都是多巴胺的受體。我們看到運動完的人心情都愉快,打完球的孩子精神都亢奮,脾氣都很好。血清素跟我們的情緒和記憶有直接的關聯,很多抗憂鬱症的藥都是阻擋大腦中血清素的回收,使大腦中的血清素多一點;正腎上腺素跟注意力有直接的關係,它在面對敵人決定該戰或逃時分泌得最多。
有個實驗清楚說明了運動跟學習的關係:芝加哥附近有一所中學實施「零時體育課」(Zero Hour PE),就是還沒正式上課之前,先叫學生來學校運動,要運動到達到最大心跳率或最大攝氧量(氧消耗值)的百分之七十。一開始時家長都反對,孩子本來就爬不起來上學了,再去跑幾圈操場豈不一進教室就打瞌睡?結果發現正好相反,運動完的孩子多巴胺多了,脾氣好了,在課堂吵架、打架的次數少了,老師不必一直喊「安靜,不要吵」,上課的氣氛就好了;血清素出來,記憶力增加了,學習的效果好了,正腎上腺素使孩子的專注力增強,所以上課專心,記得快、學得好,學生的表現就提升了,自信心與自尊心也出來了。他們還做了一個實驗,將學生最不喜歡、最頭痛的課,例如數學,排在上午第二節課上或下午第八節時上,結果發現上午那組的學習成果比較好,好到兩倍以上。因為上午第二節課運動完的神經傳導物質還在大腦裡,但是到下午時就已經消耗殆盡了。這些數據開始讓美國的父母看到運動對孩子學習和行為的幫助,就不再反對零時體育課了。現在美國學校推動每天都要有一堂體育課,對我們國三和高三每天要考試的學生來說,一天更是應該要有兩堂體育課,以紓解他們的壓力,增加他們的學習效果。
台灣南部有個收容精神病患者的「龍發堂」,曾讓精神病患套上腳鐐,帶去外面墾荒種菜,被人檢舉。當時這麼做,並不知道背後的理由,只是從經驗上知道這樣做有效,後來杜克大學(Duke University)的研究者發現,如果能使憂鬱症的病人走出家門去運動,他們大腦所產生的多巴胺、血清素等神經傳導物質效果跟吃「百憂解」一樣的好,所以杜克大學開始推行病人要運動。作者說得對,吃藥和運動是相輔相成的治療方式,運動的好處在操之在己、持之以恆,病情就會減輕,給病人一種自我操控的良好感覺,這種感覺帶回他對自己的信心,這個正向作用比吃任何藥都好。
運動甚至對注意力缺失和過動兒(ADHD)來說,都是非常好的自我控制良藥,因為目前醫生給ADHD患者所開的「利他能」(Ritalin)其實就是在增進大腦中的多巴胺,如果運動本身就會分泌多巴胺,為何不用大腦自己本身的多巴胺呢?自己分泌的對大腦沒有傷害,外來的現在已知會傷害伏隔核(對這方面有興趣的讀者可參閱《浮萍男孩》﹝Boys Adrift﹞,遠流出版),許多第一線的治療師都發現武術、體操等需要大量注意力的運動對ADHD的孩子非常有幫助,因為這些運動需要全神貫注,而且武術、體操比枯躁的跑步機有趣的多,孩子比較會持續練下去。任何運動都需要持之以恆,每天做,效果才會出來。【參考03】
原來透過運動,就可以達到所謂自己本身的多巴胺,同樣也是刺激著大腦的伏隔核。這方法是否真的有效,其實自己實際去練習一段時日就可知曉。如果場地、時間可以配合,找一個適合自己的運動方式就可練習,如果身處諸多不便的辦公室裡,看來只能多多擦拭桌子與倒垃圾去了。
參考:
04:運動力,學習的新處方
訂閱:
文章 (Atom)



