Tuesday, December 6, 2011

[Algorithm] Dynamic Programming - Matrix Chain in C++ (矩陣相乘)

    Matrix Chain is a common example for demonstrating Dynamic Programming technique in algorithm. This article shows the implementation of using Dynamic Programming to solve the matrix chain problem. In the end, you can download the source code for more detail (source code is based on Visual Studio 2010 project).


     The Dynamic Programming technique is for the program who will use recursive function and there are many redundant computations. As such, use a table to record the computed data. Every time the program want to do the recursion, it will first check the table. If the table has the answer, them just use it but not computes again. On the other hand, if there is no answer in the table, then the program starts to do the recursion and save the result in the table for use in next time.  


The Main program is as following described.



// Main Matrix Chain Code
for(int l = 2; l <= Count ; l++)
{
for(int i = 1; i <= (Count-l+1); i++)
{
int j = i+l-1 ;
Multi[i][j] = INT_MAX;

for (int k = i; k <= (j-1); k++)
{
MultiplyCount = Multi[i][k] + Multi[k+1][j] + (Input[i-1] * Input[k] * Input[j]);

if (MultiplyCount < Multi[i][j] )
{
Multi[i][j] = MultiplyCount ;
Cut [i][j] = k ;

}
}
}
}


The source code can be download from here: Source Code of Matrix Chain

Wednesday, September 28, 2011

[QUOTE]

你不能等到有了熱情才救人,不能等到有靈感才作文,一如妓女不能等到有性慾才要接客
--有些事屬於你該做的,縱使勉強,你也要做。

人生不是都靠滿腔熱血在衝的,熱血有燒完的一天,讓你持續堅持的就是『習慣』,就是做好自己本份的精神,這種不是熱情,而是一種無語的堅持
--一種很大聲的安靜,一種寧靜致遠! 【From 李敖】

Sunday, September 25, 2011

[研究] 目前用到Csharp 教學 Link

Excel:

  1. 如何讀取Excel檔至csharp 中。http://csharp.net-informations.com/excel/csharp-read-excel.htm

C#

[轉錄ptt] 軟體人才


作者: zanyking (遙遠的旅人) 看板: Soft_Job
標題: Re: [請益] 有佛心培訓的公司嗎?
時間: Wed Apr 21 22:28:55 2010

※ 引述《EijiHoba (Feel)》之銘言:
: 有佛心來的公司找不到人培訓的嗎?
: 我己經找工作找到瘋了

我猜測你至少有大學畢業,那如果已經大學畢業了,以下的事情應該是努力就做得到。

1. 找一個你的語言或開發工具最大的專業論壇。

2. 用三個月的時間,每天回答上面一個你覺得你努力可以答的出來的問題(非Trivial)。

3. 每個問題寫超過1000字,最好還有會跑的範例程式。

4. 寫至少15篇有意義的介紹性的Blog文章,偷懶一點,就去翻譯國外網站沒人翻過的
   Tutorial,然後想辦法去任何一個相關的論壇增加你的文章曝光的機會。

5. 這些文章與回答最好都圍繞在同一塊技術領域打轉,寫Hello world級的東西是沒用
   的。

6. 把你的104resume裡沒用的身世文砍掉,改放以上文章的技術簡述與超連結,說明
   你最近在研究什麼,你對一個領域的知識熟悉到什麼程度。

7. 開一個Gmail,去一個比較可以信任的論壇求職專區,或在這裡公開你想求職的訊息。

8. 考證照不會比上面有用,公司找的是可以解決問題的人,不是狀元郎。


你知道寫程式的要找工作,比起什麼文史社會科系,最大的優勢在哪嗎?

那就是這跟網拍一樣,你隨時隨地有可以低成本發表你的意見的空間和舞台。
只不過網拍拍賣的是商品,Blog還是論壇拍賣的是你自己,本質都是一樣的。

SF.net、Google Code,都可以Host 你的專案。
專注在相當專門的領域可以保證你PO出來的文章可以出現在Google該領域關鍵字時非常
前面的結果。

再來就是你可以要求你自己到什麼程度而已。
在這行之所以沒有飯吃,比起這個世界不給你機會,你自己不夠努力爭取、或方法錯誤
的可能性還比較大。

在找到工作前,你自己就是你自己的老闆,當你要求自己的程度超過一間軟體公司
要求你的水準時(在台灣,這容易),你找著工作只是時間問題而已。





--


我所信仰的科學是一種謙卑的理性,承認自身的無知與渺小才能觀察到世界在我們貧
弱的知覺上留下來的痕跡。

--
※ 發信站: 批踢踢實業坊(ptt.cc) 
◆ From: 114.136.235.226
→ zanyking:你都做了還不行,履歷寄給我我幫你看。                   04/21 22:29
→ kuhaha:大爺你真的強者也很閒. 原Po 啥都不講擺明抱怨文            04/21 22:34
推 abernoulli:太強了...                                            04/21 22:35
→ kuhaha:現在公司都要找即戰力. 你不說你的優勢在那. 公司為啥要     04/21 22:35
→ kuhaha:花錢培訓你. 它訓練你還要付你薪水. 你沒表達你的優勢       04/21 22:36
→ kuhaha:那公司不可能培訓你.                                      04/21 22:37
推 wowowo60:推一下這篇                                             04/21 22:51
推 wa120:中肯推                                                    04/21 23:02
推 clanguage:好文                                                  04/21 23:18
推 MarcusWill:要推```                                              04/21 23:26
推 thinkniht:讚啦                                                  04/21 23:27
推 andymai:推一下~其實類似的建議在科技版有人po過~最主要還是做的人  04/21 23:27
→ andymai:自己到底能不能有決心去實行...                           04/21 23:27
推 hubertwu:強大                                                   04/21 23:43
推 juriolegend:只為了求職的話..很瞎耶...(所以履歷是證明題XD)       04/22 00:03
→ kenzou:再推stackoverflow, 練功的好地方。                       04/22 00:08
推 poqwer:其實就是自己先培訓自己....意志力很重要......             04/22 00:45
推 ikari512:好文                                                   04/22 04:00
→ yauhh:我稍微反對. 這意思是叫你要想辦法做一些事弄得好像你很行,   04/22 07:32
→ yauhh:而即使其實沒興趣也沒關係...是嗎?                          04/22 07:32
→ yauhh:說穿了只是要那個果,於是製造那個因.這不改體質是不搭的      04/22 07:33
→ zanyking:我還真沒看過現在的小朋友沒興趣可以撐三個月的           04/22 10:22
→ zanyking:能撐個三週...喔不,三天就了不起了。                    04/22 10:23
→ bleed1979:其實要做一些事情證明自己很行,背後要有相對應的實力,  04/22 10:38
→ bleed1979:如果沒有興趣,我覺得生不出那個實力。(努力中...)       04/22 10:38
推 jeromeshih:請問有其他推薦的論壇嗎?還是有什麼尋找方法,感謝       04/22 12:44
→ junhao:PTT就是最好的論壇啊                                      04/22 14:45
推 antiichristt:這篇要m100次                                       04/22 15:55
推 MarcusWill:100≡0 (mod 2)...............                        04/22 19:14
推 superjeff:推                                                    04/22 20:17
推 AmosYang:這篇文章 1.值得推薦                                    04/23 04:52
推 x2012tw:但是以上的努力,有達到跟沒有達到的大學新鮮人都是22k起薪  04/23 07:01
→ zanyking:你達到了,來找我,我看看你哪裡為啥只值22K起薪          04/23 12:40
推 kimkao:怎麼可能都達成了還只有22K ...先去做再說吧                04/23 13:22
推 TonyQ:我當年大一就是這樣磨練自己的啊 XD                         04/23 14:42
→ TonyQ:覺得還蠻有效果的 :3                                       04/23 14:42
→ qrtt1:受到 zanyking 的感召,俺也要寫文 XD                       04/23 22:07
推 loverjersey:中肯                                                04/24 16:16
推 a2350:第8點讚                                                   04/24 19:44
推 gbhuang71:NICE                                                  07/27 16:15

Thursday, August 11, 2011

2011 在花蓮的夏天

好不容易過了一年,跟老闆請了一個星期的假要去旅行

原本打算要去嘉明湖登山,不過碰到了颱風紙號取消,不過也戴了許多東西去花蓮










































Wednesday, June 15, 2011

快速更改IP位置,使用netsh製作batch file (批次檔, 固定IP, DHCP)

如果想要在固定ip(例如學校、公司)和DHCP浮動ip的地方(例如:家裡、使用hub連接)頻繁的切換的話

最常做的方式是到:控制台>網路連線>區域連線的內容>選擇Internet Protocol (TCP/IP)來更改ip位置

但是這樣很麻煩,每次更改的時候都要頻繁的切換,上網搜尋之後發現有一個東西叫做netsh

可以在cmd prompt下,快速的更改網路相關的設定。

操作方式:
1. 打開cmd (命令提示字元)
2. 輸入netsh即可進入

如果把更改的ip的指令寫成batch file,只要預先設定好ip,以後每次更改只要直接執行批次檔,就可以一次做完所有設定囉!
方法如下:
1.打開記事本
2.複製以下程式碼貼入記事本中:
--------------程式碼開始(本行不用貼)----------------------------------

netsh interface ip set address "區域連線" static "IP位置" "子網路遮罩" "預設閘道" 1
netsh interface ip set dns "區域連線" static "DNS位置" primary

--------------程式碼結束(本行不用貼)----------------------------------

3. 更改程式碼:

"區域連線" :改成你想修改的網卡名稱
"IP位置":你的IP位置 EX:192.168.0.1
"子網路遮罩": EX:255.255.255.0
"預設閘道": EX:192.168.0.254
"DNS位置":

4.另存新檔: Change IP.bat
注意副檔名要為.bat

5.執行程式,程式執行時會跳出cmd視窗,約過了五秒後即可以看到IP已經被設定了!!


如何修改成DHCP? (2011/12/07 Update)
將以下script 貼到text編輯器中,並將檔案另存為 "DHCP.bat"
下次要切回DHCP時只要點選這個 "DHCP.bat" 就可以輕鬆改變成DHCP囉!!
快來試試看吧!!

--------------程式碼開始(本行不用貼)----------------------------------
netsh interface ip set address "區域連線" dhcp
ipconfig /release
ipconfig /renew --------------程式碼結束(本行不用貼)----------------------------------

Sunday, June 5, 2011

標 題: 一個失敗創業的例子

發信人: DavidChiou (邱大剛) 看板: Imagineering
標 題: 一個失敗創業的例子
發信站: 台大電機 Maxwell 站 (Thu Feb 3 12:57:55 2000)
轉信站: Maxwell


今天是 MIT 50K 的 kick off。我去逛了一下。Building 10-250
容納好幾百人的演講廳,幾乎坐滿了。

請到給演講的人是 Trilogy Software 的創辦人及執行長 Joe
Liemandt。該公司是全世界最大的軟體公司之一(對象是大企業,
所以一般人可能較不熟悉)。

Joe 說:「現在這是一個極為成功的軟體企業,已十年歷史了,
並且從我們的公司培育出了許多其餘有名的公司。現在每當我
碰到以前的朋友,他們都說:啊!你知道我一直都是很支持你
的,我早就知道你會成功啦!」(全場大笑。)

他接著問說:「在場有明確的點子、目標,很確定自己立刻要
創業的,請舉手。」

超過三分之二的人舉手。(這時我在想:不知道在台大是否可能
會有這種景象,尤其當在場大多是工程背景的人時? :Q)

接下來 Joe 笑著說:「在場覺得這點子太好,我要立刻休學去
開公司的,請舉手。」

絕大多數人把手放下。還是有幾個人舉手。

他就開始說他創業的慘痛故事。


x x x x x x x x x x x x x x x x x x x x x x x x x

一切要從十年前他在 Stanford,大三升大四的暑假開始
說起。那時 Joe 和幾個好友想到一個很棒的主意,經過一番
討論及掙扎,決定花暑假三個月,努力寫好這個軟體,然後
大賺一票,然後從 Stanford 畢業,再去找一份「正當的工作」。

於是他們就像努力地工作。

暑假結束了,還是差一點,他們相信再三個月就能寫完。
於是繼續努力的打拼。

三個月又過了,他們的父母已開始關切,為什麼不好好讀
書?這次他們有了突破,很確信再三個月就可以完成了。

於是又拼了三個月,更努力的拼。

其中一位朋友的父母在一天敲 Joe 家的大門,說:「很不
好意思,我想我們跟我們的小孩有點溝通不良,不知道你能不
能給我們一點建議? 」好的。於是那位家長繼續問道:「請問
你們搞這個東西,到底什麼時候完成呢? 」答曰:「三個月。」
於是 Joe 被這家人列入拒絕往來戶。

三個月又過了,呃,還是大概要三個月。他們的父母開始
抓狂。他們自己的壓力也越來越大,每天都在擔心。

為了把這軟體拼出來,也由於全力都在忙這計劃,於是 Joe
和另一個朋友就休學,想在三個月拼完,然後賺一票,然後回
到 Stanford 繼續念完大學。

三個月又過了。這次他們覺得只要再三個月就好了,真是
接近呀!

雖然父母會比較反感,但是最少剛開始同學聽到他們的計
劃,還會說:「好呀,不知道你們有什麼好玩的咚咚,趕快弄
出來給我們瞧瞧吧!」

而到最後,連同學也一個一個開始遠離、不相信他們,因
為他們每次問說你還要多久才完成這個計劃?答案都是「三個
月」。

這時 Joe 給了在場的人一個建議:「千萬不要跟別人說
什麼時候會完成你的創業計劃,要不然會眾叛親離。」

到後來他們的同學都開始嘲笑他們,說:「該換台詞了!
隨便選一個數字也比三個月好吧!」

在這種越來越大的壓力下,他們很堅決地相信這是個很好
的點子,他們將要完成這個點子,然後發大財、念完大學、找
份正當的職業。

一年過了、二年過了,終於他們的軟體完成了。於是他們
五個人,覺得賺大錢的時候到了,終於能昂首挺胸,所有的辛
苦都將有收獲!


x x x x x x x x x x x x x x x x x x x x x x x

美國人一般說來天生就比中國人大膽許多,尤其是在西
岸的美國人。因此雖然他們是五個大學畢業的小毛頭,初生
之犢不畏虎,仍然昂首闊步,逕自拿著他們的軟體,去找創
投機構。(Joe 此時回顧說:其實當時的創投,相對於今日,
仍是蠻守舊的。)

Stanford 面對著矽谷,他們常常說,打開大門,外面
就是三百家創投機構在等你。

於是他們就從世界最大的創投機構開始。

作完了簡報。對方問問題:「我們向來考慮是否投錢,
第一個考量就是 team。你們 team 有沒有很強的管理經驗
的人?」

呃,沒有...

「你們 team 是電腦相關背景的嗎?」呃,完全不是,
他們當年都故意選 Stanford 最混的系以方便畢業,其中
二個人還綴學哩。

所以當然吹了。Joe 說:「沒關係,還有二百九十九
家在等著我們。」

x x x x x x x x x x x x x x x x x x x x x x x

他們回家後,第一件做的事,就是把第一張簡報改為:
「我們沒有最好的管理經驗,但是我們有最強的軟體。」

於是他們邁向第二家創投。

作完簡報後,人家問他們:「你說你們軟體很強,請
問你們有任何的相關經驗嗎?你們是哪個公司的超強團隊
出來的嗎?」

呃... 沒有相關經驗。

「有沒有什麼教授可以為你們作證,說你們的軟體是
第一流的?」哇... 那些 Stanford 教授,當年可是正眼
也不看一眼,就跟他們說:「你們這個主意永遠也不可能
完成的。」當然沒有教授會幫忙背書。

「你們連經驗都沒有,要怎麼生存?」

於是他們就被請出門去了。

x x x x x x x x x x x x x x x x x x x x x x x

回家後,第一件做的事,就是將第一張簡報改為:
「我們沒有最好的管理經驗,我們沒有最久的經驗,但是
我們有最強的軟體。」

接下來第三家創投,是他們精挑細選過的。這家的創
辦人也是 Stanford 畢業,而且也綴學,而且也曾有類似
的歷程。

於是他們準備充份、自信滿滿地進入了第三家創投作
簡報。

可是還沒開始幾張,那家創投的負責人就問說:「我
想請問你們這個軟體有幾個人會用?」

答曰:「沒幾個人。因為我們是想要提供給全世界前
一百大公司用的。」

創投評曰:「那怎麼可能嘛,你要寫軟體,就要能便
宜,然後讓全世界的人都用,到處都是,這樣子才賺錢。
像我以前設計了一個全世界第一個螢幕保護程式,是一個
土司,沒多久就在 UC Berkeley 全校的螢幕上到處都是了,
這種便宜的東西,才有可能流行。」

Joe 和他的夥伴都呆住了,不知道要怎麼辦。因為他們
下一張投影片,正巧寫的是:「我們將提供全世界有史以來
最貴的軟體。」

然後他們就楞在台上,說:「那... 那.... 我們還要
繼續講嗎?」

於是沒幾分鐘就被請出去了。

x x x x x x x x x x x x x x x x x x x x x x x

Joe 說道:「Stanford 外面的三百家創投,沒有任何一家
有用。」

「許多人說創投是美國人得天獨厚、美國企業奇蹟的推手。
其實才不是咧。」

「美國經濟奇蹟的幕後英雄,其實是 --- 信用卡!」

當年他們落魄到沒人肯投錢,只好去申請信用卡,去借錢,
以支付公司的成本。一張不夠,所以再申請一張、再申請一張。
利用這些信用卡之間繳款的不同時間,來湊出足夠的現金。

因此他們每個月的月底,都忙著填一張張的信用卡付款單。

最後他們擁有近六十張信用卡,靠著信用卡的週轉,得手
了數以千計、數以萬計的美金。那個年代的信用卡設計有的還
有些暇疵,所以其實他們的信用額度反而一直大漲呢。

靠著這種寅吃卯糧的方式,他們才能夠租下一個小小的車
庫以工作,並且到雜貨店買食物充饑。

一個又一個月的過去,他們 team 五個人仍然是相當的團
結,大家都灰頭土臉的,不過都不灰心。

又許多個月過去,沒有任何起色。全世界好像沒有人對他
們的軟體有興趣。他們也只能作些顧問的工作,偶爾混點錢以
免欠債太多,並且繼續抱持著希望,希望有一天能夠匹極泰來。

當信用卡中這種債滾債的狀況越來越嚴重後,仍然沒有人
對他們的軟體有興趣。每個月光是看帳單就很可觀了,隨時都
可以信用破產。


x x x x x x x x x x x x x x x x x x x x x x x


終於有一天,時來運轉,他們突然接到一封 Silicon Graphics
的電話。當年正是 SGI 正準備一飛沖天的時候,因此這無異就是
他們的前途。

SGI 說:「你說你們有個軟體可以做某某事。我們由於一個
和政府合作的大計劃,因此很須要這個軟體,你們可不可以給我
們介紹一下?」

於是 Joe 等人就介紹一下,的確合 SGI 的須求。於是 SGI
就問了:「請問你們要花多少時間才能讓我們須要的這一套實際
可處理我們的資料?」

Joe 想了一下,回答說:「三個月。」

五個人都相當興奮,終於有人識貨了。他們的成功在即!


x x x x x x x x x x x x x x x x x x x x x x x

幾天之後, SGI 高階主管的來電:「很抱歉,由於作業上
的疏失,所以我們下星期一就要你們的軟體。」

「什麼?不是三個月嗎?下星期一只剩三天耶!」

因為一些行政上的因素,使得 SGI 必須在三天後向政府官
員 DEMO。這則交易牽涉到 SGI 的合約,如果失敗,SGI 會賠
上許多錢,因此很重要。

因此五個人就瘋狂地趕工,反正只是做出一個 DEMO 的殼子
嘛。然後他們還到電腦店買了最貴的加速器之類的裝置,以作出
最精采的 DEMO。

日以繼夜的趕工後,他們就上台面對 SGI 高階主管以及政
府官員,進行簡報。

從簡報的一開始,他們就強調:「這只是一個 DEMO,因為
實際上的系統須要三個月的時間。」但是政府的工程師不理這套,
那個首席工程師要求他們輸入實際上的複雜數據看看。

Joe 一邊冒汗一邊輸入資料,心想會怎麼可能可以跑嘛。
數據非常之繁多,也因此須要複雜的電腦軟體才能處理。而另
一位也是 Stanford 綴學的夥伴則站到桌子另一邊的電腦接線上。

當時的電腦很慢,那個程式要十幾分鐘才會跑出成果。Joe
和那位夥伴很有默契。Joe 隨時準備著見到程式 crash 掉,
而他的同夥準備隨時錯誤訊息一出現後,就「不小心踢到接線」,
讓電腦停掉,然後跟這群人說:「真是不好意思出了意外,這個
電腦設備要修復的話可能要好一陣子。我們過幾天再把數據給你
們吧!」

一分鐘一分鐘的過去了,Joe 他們越來越緊張,等著丟臉。

十幾分鐘過去了... 很長一頁的答案竟然自己跑出來了,
竟然沒有 crash!Joe 又叫又跳,因為這簡直是奇蹟,當然他
立刻改裝得很正經,說「其實本來就應該這樣的。」

接著首席工程師查核數據,說:「Yes!這就是正確的數據。
我們要算很久很久才得到的數據!太厲害了!」

(Joe 此時附註說:「其實後來我們發現那時的結果是錯的,
只不過那位工程師沒發現。」)

前途一片光明。多年的心血終於被人賞識,而自己也能抬起
頭來見人。

x x x x x x x x x x x x x x x x x x x x x x x
天有不測風雲,人有旦夕禍福。

幾天之後,他們接到 SGI 的電話,竟然不是好消息。

SGI 的高階主管說:「我們實在是相當抱歉。可是我們當時
沒有發現你們只是五個沒有經驗的小毛頭而已。我們是 SGI,我
們合作的對象是大客戶,我們不容許任何錯誤。我們不能將 SGI
的命運交在你們這幾個沒經驗的年輕人身上!」

「我已經請在矽谷混很久的朋友幫我們另請高明了。很抱歉
作這樣的決定,這實在是茲事體大,我一定得這麼做。也歡迎你
們過幾年有了番資歷後再回來,我們會很歡迎的。」

那是 Joe 一生最黑暗的日子。一夥人簡直被徹底打敗。失敗
的人能怎麼辦?只能跑到酒吧去喝悶酒。一杯再一杯,一邊罵,
大家都喝太多還不肯走,最後被酒吧給趕出來。

第二天下午,等清醒後,他們作最後的掙扎,直闖 SGI,跟
SGI 的 sales 爭論,說:「你們實在是做了很錯誤的決定!我
們的軟體是最好的!」很勇敢地向 SGI 告別。

他們開始領悟到父母說的是對的,同學的取笑其實是對的,
那些教授講的是對的。此時他們已沒力了,綴學的認真考慮回學
校完成學業,畢業的準備找到個好工作。先前買的昂貴電腦設備,
趕快趁三十天的退貨期還沒過前退回去。但是一大疊信用卡帳單
還是揮之不去的陰影。

還撐?還撐!他們畢竟還存在著點希望,所以並沒有放棄,
五個窮光蛋,希望多撐個三個月看有沒有任何機會。


x x x x x x x x x x x x x x x x x x x x x x x

一個月後。

SGI 再次打電話來。


「請找 Joe... 我們有個不好的消息... 經過我們向矽谷各
公司仔細調查後... 竟然全美國沒有人有軟體能作我們須要的功能...
所以... 我們希望能向你們買你們的軟體。」

Joe 回答:「很好。不過我們改變主意了,現在這軟體的售價
已漲三倍了。」這真的是世界上最貴的軟體了。

於是 Joe 等五個人賺進了一筆天價,並且陸續世界前一百大公
司向他們下訂單,有如他們在大三時的夢想一般,幾百萬幾百萬的
訂單找上他們,而他們也為這些大公司省了更多錢,雙方都很高興。

這就是 Trilogy Software 成立的故事。


x x x x x x x x x x x x x x x x x x x x x x x

Stanford 的休學最多可以休十年。今年五月就到期了。

在場有人問 Joe,是否會回去念完學位?「Probably Not。」

以他的這種名氣及身份,有人問說他是否曾回 Stanford 授過課?

「我在 Stanford 教的課比我曾經在 Stanford 上過的課還多呢!」

Saturday, May 7, 2011

改變Windows中的timer精確度--使用timeBeginPeriod(uPeriod) and timeEndPeriod(uPeriod)

如果你想要實做一個週期是1ms的periodic timer,那麼os中的timer的精確度應該是多少?

這個問題就好像是問如果你想用一隻尺去量一根頭髮的粗細,請問這隻尺的刻度應該為多少?

這個問題困擾了我一陣子

我想要在Windows XP上的實做一個period為1ms的periodic timer,我是用的是CreatTimerQueueTimer API。當我設定periodic為1ms, 10ms, 15ms時,得到的平均period都是15ms。

換句話說,更改了period卻沒有任何效果,1ms, 10ms and 15ms得到的都是15ms period,上網查了一下發現了windows的timer resoulstion約在10~25ms間(depends on different computer)
( http://www.lucashale.com/timer-resolution/ )

也就是說當你希望用一個最小刻度為15cm的尺去量1cm的昆蟲時,不管你怎麼量,量到的都會是15cm (minimum resolution)。

這個事實告訴我們,如果你要使用高精確度的timer,首先必須使將系統的timer變成高精確的timer(至少resolution 要跟你所需要的resolution一樣),以我的case為例,我需要將系統的timer resolution改成1ms。

查詢了msdn發現可以用timeBeginPeriod(resolution)timeEndPeriod(resolutoin)來修改作業系統中的timer resolution。


根據msdn的說法,在使用timer之前,先使用timeBeginPeriod(resolution)來改變作業系統中的timer resolution,呼叫完之後就可以使用timer service。

由於這個改變會globally change timer,也就是會改變整個作業系統中的timer,所以當使用完你所需要的timer service中應該再呼叫timeEndPeriod(resolution)來復原原先的timer resolution。

有一段話值得注意:
"Setting a higher resolution can improve the accuracy of time-out intervals in wait functions. However, it can also reduce overall system performance, because the thread scheduler switches tasks more often. High resolutions can also prevent the CPU power management system from entering power-saving modes. Setting a higher resolution does not improve the accuracy of the high-resolution performance counter."

中文:
設定高精度的resolution可以改善wait function中的time-out interval的準確度。然而,這樣做可能會降低系統的笑同,因為thread scheduler會切換的更頻繁。

高精確度的resolution可以是CPU的電源管理不要進入省電模式。

設定高精確的resoution不會改善high-resolution performance counter的準確度(accuracy)。

所以,使用timer時,如果發現量測出的period和所預期不同,有可能是你沒有改變os中的timer resolution所導致。
記得在使用timer service之前和之後,使用timeBeginPeriod和timeEndPeriod來改變timer resolution。

Friday, April 29, 2011

Excel中的 Histogram問題!

在Excel中,如果我們使用"資料分析"來分析資料,例如製作Histogram(直方圖)

會需要選定"組界"

這個字讓我搞混了一陣子

例如: 1.98
應該是歸在那一組呢?

假設組距(Width)是0.5從一開始

1, 1.5, 2.0, 2.5, 3.0

原本我以為1.98應該是規在1.5

因為1.5~2.0為一組

不過試了幾次發現是算在2.0裡面

因為在Excel的說明文件中有提到

"決定分組的組數,並在另一行輸入每一組的上限值"

也就是說如果有一組是2.0則2.0裡面的那組的所有資料皆小於等於2.0

data <= 2.0(小於等於), for all data in 2.0 group

如果data = 2.01則會計算至 2.5那組!

Wednesday, April 13, 2011

在Windowx XP上利用SSH連線Ubuntu碰到亂碼該怎麼處理?

因為putty內建的編碼方式,和ubuntu用的UTF8不同,所以無法顯示中文(會有亂碼)

解決方式:

打開putty > 左邊選Windows > Translation > 第一個下拉選單選擇UTF-8 > 再按open就可以囉!

Wednesday, March 23, 2011

多重系統開機 Windows XP, Windows7, Windows Server 2008 R2

前幾天在我已灌好Windows7, Windows Server 2008 R2的桌機上想要在安裝Windows XP, 沒想到XP灌好之後竟然將Windows7, Windows Server 2008 R2的MBR洗掉

變成開機後會直接進入XP 而且也不會出現XP舊版的開機選單來選擇OS

找了網路上幾種解決方式都無法解決

最後嘗試了一個方法後竟然可以順利解決!以下是我的環境設定與解決方法:

硬碟分割:兩個硬碟,各分割成兩個partition
Hard Disk 0
Partition C:\ 安裝 Windows 7
Partition D:\ 安裝 Windows Server 2008 R2

Hard Disk 1
Partition E:\ 安裝 Windows XP
Partition F:\ 無安裝OS

解決方法:
1.放入 Windows 7 使用光碟開機

2.進入 Windows 7 的光碟之後選擇修復Win7(不要選重新安裝)

3.這時應該會看到光碟問你想要修復什麼東西,選擇第一個選項(應該是修復啟動。。。)

4.重新開機之後,應該會看見MBR回復了! 可選擇的OS有Windows7, Windows Server 2008 R2,但是Win XP還是看不到! 選擇進入Windows 7

5.進入windows 7後上網下載 EasyBCD 網址 檔案

6.打開EasyBCD, 在左邊選擇 Add Entry
Windows:
Type:Windows NT\2K\XP\2K3
Name: Windows XP(自行輸入)
Drive:選擇你所安裝的XP位置硬碟代號

7.接著重開機之後應該就可以在開機的MBR中看到XP了!




 

Saturday, March 19, 2011

[Embedded OS] HyperTerminal 無法中斷 U-Boot

問題

當把pxa270連上電腦後,原本的null cable是接在com2,可市在uboot倒數5秒時接無法由鍵盤書輸入字元去中斷uboot開機程式

com2 port的皆正常

解法

將null cable 接上com1 port重新開機即可

Labels