0

又一你不可不知道微軟神秘現象

| 1/16/2010
最近發現一件微軟的神秘設計。超級大 Bug!明顯到一個不可思議的程度。感謝我不認識的 Armlor 網友發現問題。

自從 XP 開始,大家可以針對每個資料夾裡面的內容作不同的顯示設定。好比如說,你 A 資料夾裡面放的是音樂、B 資料夾裡面是文件,這個時候你可以讓 A 資料夾檔案顯示的是音樂的長度、演唱者;而 B 資料夾則是作者、修改時間。不同的顯示方式讓你閱讀資料夾有很大的幫助。

可是,很讓人不感到意外的是(或者說是預料中事),微軟達到這個功能的實作方式是將每個資料夾的設定寫入註冊表裡面。這種作法跟現在很多作業系統的做法有很大的出入。當然這裡不是要談論誰是誰非的問題,而是如果你把所有的資訊寫入註冊表裡面,該註冊表就會被占用到很大一塊空間。很明顯的,如果我每次開啟資料夾的時候,他都得要去搜尋這個資料夾的顯示設定,當設定變的很龐大的時候就會拖垮系統的速度。那,微軟究竟是用什麼方式來解決這個問題呢?答案非常的一般,限制最大資料夾數,變數名稱是 BagMRU Size。說起來微軟好像很喜歡用限制數量的作法來達到各種目的,像是同時最大連線數 10 人的問題。

在 XP 時代,考量到當時系統效能的不足(我不懂為什麼不在個別資料夾放入設定檔,這種作法也不會花費到多少的空間),這個變數被設定在 400。雖然說我們可以透過修改註冊表的方式來改變這個變數,但是基本上考量到效能之外,依然是設定了一個上限。當你所使用的資料夾大於這個上限值的時候,系統就會根據一個不知道什麼的方法開始刪除掉某些資料夾的設定,並且用新的資料夾設定來取代他。至於這個不知名的辦法我實在無法理解是什麼。他寧可不去刪除已經不存在的資料夾的設定,也非要刪除掉我常用資料夾的設定。就這個樣子,我的資料夾顯示設定老是會自動跑掉,重新設定的動作煩不甚煩。尤其令人感到弔詭的是,微軟號稱這個數值在 Vista 的時候已經修改成 5000 了!5000 是多少?起碼對一般使用者來說是個足夠的數字了,但是顯示設定跑位的現象卻不見減少,反而有增加的趨勢!

探討這個問題,當然就是直接對 BagMRU Size 這個變數下手,我們找到了這個變數的位置 HKCU\Software\Microsoft\Windows\Shell 下面,很明顯的,確實有這個變數,且數值是設定在 5000 沒錯。既然這個數字設定的好好的,為什麼就是沒有用呢?Armlor 網友給了我們解答。他使用了 Process Monitor 去檢驗了 explorer.exe 程序,發現到在 Vista 下面,當你開啟資料夾的時候,他居然是在 HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell 資料夾下面檢察 BagMRU Size 變數,而不是上述的資料夾。簡單來說,Vista 裡面explorer.exe 寫入註冊表的地方是個新位置,卻沒有把變數設定在這個新的場所,反而是沿用了原先 XP 時代的註冊表設定(這時候我真想說,蘋果,你每次酸註冊表設計很爛是對的)。所以說每次當他尋找不到變數的時候,自然就以某個既定的預設大小來取代。至於這個大小是多少?不知道,總之很低就是了。

既然這樣,那解決辦法就很明顯了,只要在後面所述的位置加入一個名為BagMRU Size 的 DWORD 變數,並且設定成 5000、或者是一個大一點的數字就可以了。說真的,這個 Bug 還真讓人感到有點哭笑不得…超低級。

如果是 64bit 的作業系統,因為它同時會包含 explorer.exe,32bit 與 64bit 各一份,所以說還有另外一個位置需要修改 HKCU\Software\Classes\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell。話雖如此,我覺得這兩個位置的變數好像是同步的,有點怪怪,因為不太可能。不管怎樣,如果說你在這個資料夾下面沒有發現這個變數的話,那就自己新增一個吧!
0

雖然快過了一個月了

| 1/14/2010
新的一年的第一篇文章,首先當然還是要說一聲新年快樂了。不過因為我們會過兩次新年的關係,一月1日反而顯得沒有這麼重要。(喔,這絕對跟錢沒什麼關係)

新的年頭,自然就會開始期待今年會有什麼新的產品會面世呢?果然到頭來還是很在意這個問題。無可厚非。作為一個科技人,消費者,嘗鮮…喔,不,這個還是交給別人來做好了。首先是第一個月份,第一個上檔的是 Google 自家品牌手機 nexus one。這支新的手機由 hTC 設計、生產,並且搭載了最新版本的 Android 系統,高檔的硬體儼然成為了眾家 Android 手機的龍頭!從 Google 的角度來說,他們並不希望這支手機成為真正「高檔」的行動裝置,反而是希望其他的手機廠商能以這支手機作為低標來設計。挾帶著 Google 超人的名氣出貨的這支手機到底有什麼樣特殊的地方?我覺得最重要的當然還是 Google 自家的軟體更新的差別。不少手機廠商雖然說有很強的硬體設計經驗,但是對於軟體這塊的經營並沒有下太大的功夫。所以說如果選擇如 Google 這種公司帶著自我品牌,或許會更有利於如韌體更新之類的動作。話雖這麼說,但是我們看到了 nexus one 銷售至今頭兩週的表現,20000 的成績甚至不能說是差強人意,可以用淒慘無比來形容了。就算我們沒有拿出 iPhone 來做比較,他也輸了其他如 Motorola Droid 之類的手機頭週銷售量一大截。這個 iPhone 殺手(不知道有多少手機被冠上這個名字?,從 iPhone 銷售前就出的 hTC touch 開始大家都這樣說) 看起來還有不少的路要走。當然就我的看法,其實這個銷售量也反映了人們在購買手機的時候的習慣。nexus one 不知道為什麼只有網路購買這一個途徑,售後服務也全部都是在網路上面解決。這個被動的行銷方式似乎造成了許多使用者對於購買 nexus one 保持著觀望的態度。

毫無疑問的接下來第二檔次的好戲又回到了 Apple 身上了。從去年中就開始吵得沸沸揚揚的平板電腦似乎就會在這個月底發表。當然蘋果依然保持著他們慣有的無言態度,但是網路上早就已經片佈各種不同的傳聞。從外觀、操作、硬體介面等等各式各樣都有。但是卻缺少了一種肯定性。雖然我很想知道蘋果到底會祭出什麼樣的產品;又有什麼樣的應用在上面。不過我最想要的東西當然還是新款的 Macbook Pro 了。這樣也好讓我的舊 PowerBook G4 退役。

後面還有令人期待的 nVIDIA GeForce 300 系列的顯示卡。當然,2010 年才剛剛開始!OK,接下來就談談自己的東西吧。最近開始在電腦裡面玩起了虛擬機器。說真的,沒去玩還不知道原來 這幾年的 x86 虛擬化技術有這麼大的變化。我一直把這些 VT 當成一種東西,只要有支援就好了。結果證明我的想法單純到有點白癡的境界。我覺得比較重要的是 MMU 根 IOMMU 兩種。前者是將系統不透過模擬的方式直接接觸硬體的指令,後者是 IO 指令不經過模擬。這兩種東西帶來了以前全部軟體模擬時代沒有的效能。看來我的 E8500 沒有 IOMMU 真的有點殘念。可是,當自己在虛擬機器上面安裝好 XP Professional、Ubuntu,就在啟動的那一瞬間,整個就是有感動到!當你的作業系統跑起了另外一套作業系統,你還不需要去做重新分配硬碟空間的動作、又不用擔心現在的系統會不會有影響,這種感覺真是不錯。也就是說,在這兩台機器上面安裝虛擬機器最大的用途當然是拿來做程式設計了。好在我這次重灌 Vista 之後,並沒有安裝任何的開發工具在電腦裡面。我總是覺得這些公具老是會把電腦搞得亂糟糟的。有時候甚至容易出問題。當你安裝了在虛擬機器的系統上面,喔,一切變得簡單多了。

當然,最令人在意的事情當然還是在效能上面。只要記憶體不要給得太少,在操作上面可以保持著不錯的效能。這當然不能拿來說,你要跑遊戲,跑遊戲還是在本機上面跑會比較好。輕度的 3D 繪圖能力是可以的,稍微重一點就得屈就於那緩慢的速度上面了。不過,就算是輕度的遊戲,看似絕大多數時間都還順暢,偶爾還是會有不明的小停頓現象出現。如果你在遊戲裡面開全螢幕,這個問題發生的頻率會減少很多,但是還是會出現(雖然以前就已經有聽說過全螢幕的效能遠高過視窗模式,但是沒想到這麼明顯)。看來現時間點,安裝 Linux + Windows 虛擬機來跑遊戲的夢想恐怕還是有一點遙遠呢。
Ehrippura