發表文章

Windows 10 初體驗

圖片
回想一下這資訊路走來,用過了不少系統。其中使用最久的 Windows系統,應是老古董 Windows 98、Windows XP以及目前的 Windows 7三大微軟王牌。

曾經嘗試過 Windows Vista一陣子,最終放棄使用,回歸到 Windows XP。 Windows 7使用四年半後,今年初半強迫地將工作機由 Windows 7直接重灌到 Windows 10。


Windows 10使用上也差不多過了一個月,來稍稍分享一下體驗心得。

就系統需求來說,Windows 10和 Windows 8並沒有什麼太大的分別,最低限度都是 1GHz處理器、1GB的 RAM(64 位元版的話是 2GB)與 16GB的硬碟空間(64 位元版是 20GB),因此,用兩年前電腦再輔以 SSD的加持下,實際體驗效能與 Windows 7並沒有特別快或是慢。(這一兩年買的電腦,應該都能跑得動,大部份人應該也都能升級才是吧?)

而以 Windows 10環境來說,微軟稱 Windows 10是一個「全新,但熟悉」的環境,取用了 Windows 7 和 Windows 8 兩者的優點,對於 Windows 7直上的我來說,桌面模式操作上確實是「熟悉」而無違和!(但沒有使用 Continuum功能,沒有辦法評論平板模式。)

微軟還用新的多重虛擬桌面顯示,這個功能與 Mac OS X上的 Mission Control實在太過致敬接近(因為還加入了多個桌面的功能),但對我來說,因為剛好有 Mac的使用習慣,恰恰好保持使用的一致性。

新的 Edge瀏覽器確實如同宣傳的速度快、不佔記憶體,只是多年使用 Firefox搭配Chrome,再加上原本的瀏覽器早就都習慣搭配著  plug-in或 extension,也不大可能因為嚐鮮就換。這部分只能說微軟推出 Edge的時機已晚,想要在這個世代快速取代他家瀏覽器可不是件容易的事!

Cortana 到目前還沒啟用,深度整合的雲端 OneDrive也因為公司策略無法嘗試(也不知道啟用得了否?),就等有機會再來看看吧!。

整體而言,Windows 10 在舊電腦上面跑起來游刃有餘,所有的操作依舊如故,系統功能與體驗也十分貼近 Windows 7,再加上有許多新潮亮眼的平面設計,如果你是跟我一樣的 Windows 7使用者,就趕快跟著升上來吧!(謎之音:其…

SSD的 4K對齊優化

圖片
你可能會問:「為何要4K對齊?」(傳統 HHD硬碟不需要 4K對齊!)


因為 SSD的硬體規範是以 4 KB當作最小儲存單位(稱為page),相當於傳統硬碟的扇區(sector),而 NTFS、EXT3、等常用的格式,也是以 4 KB作為一個叢集(cluster),也剛好與記憶體最小儲存單位相符。當寫入一個 4 KB的檔案到 SSD時,不僅填滿一個page,也與記憶體最小儲存單位相符,亦是一個叢集的大小,以這樣方式存取 SSD效能是最佳的。

如果沒有對齊 4 KB的最小儲存單位,儲存資料就會出現同時操作兩個 page的情況而導致效能下降,就好比是原本一隻手就能辦到的事情,卻刻意要用兩隻手來辦。因此分割硬碟的時候將磁區的起始點設定為 4的倍數,而將分割區設定為 4可以整除的數字開始,就稱為「對齊」。

更簡單說:「SSD若沒有 4K對齊,速度會比較慢!」

「如何4K對齊呢?」

關鍵其實不在於分割磁碟,而在於格式化。如果你買來一顆全新的 SSD,只要在安裝新系統前利用安裝光碟來格式化並對齊它就可以。但是 SSD若是已經安裝系統或是有重要資料在上頭的話就必須要借助知名的 AOMEI Partition Assistant來處理。

(當然,這是因為我安裝了 WIN 10出包以後才會這麼問!只是 4K對齊不是我的根本問題。)

你應該還有興趣:
SSD 新手使用須知:4K 對齊調教實戰,提昇 SSD 效能【教學】SSD優化 (1) 4K對齊 【以Win7為例】【教學】SSD優化 (2) 注意事項 【以Win7為例】【電腦選購】我該加裝SSD嗎?   (2017.2.1更新)HDD?SSD?傻傻分不清楚 初步介紹固態硬碟的儲存原理AS SSD Benchmark 固態硬碟 SSD 效能、讀寫速度測試工具AOMEI Partition Assistant 6.1 免費的分割、合併、調整磁區大小軟體

令人傻眼的微軟 Windows 10 系統凍結問題

圖片
「我該換 WIN 10嗎?」


如果你現在 WIN 7(甚至是XP)用得好好的,改成 WIN 10肯定會讓你不習慣一陣子的,尤其是當你發現有系統凍結(freeze)問題的時候,一定會後悔太早當白老鼠...

當然, WIN 7再好用,也不可能一直用下去,只能說多用一年算一年。畢竟時間是最大的敵人,WIN 7早晚會像是 XP那般,官方透過各種卑劣手段不再提供後續安全性更新,然後逐步被一一汰換。

本月手癢之餘,趁著多年來的重整,將原本的用得好好的 WIN 7一口氣升上去 WIN10,原本是存放在 HDD上安然無恙,但轉移至 SSD後就整個悲劇了...。網路上所謂的「凍結」在我電腦上看來,大概就是滑鼠正常運作,但無法做任何點擊,或是螢幕會突然閃爍變黑、畫面整個靜止不動,每隔一小時甚至半小時發作一回。

本以為是 SSD 4K對齊或是韌體問題,卻萬萬沒想到根源來自於偉大的微軟作業系統!

微軟表示「我們目前收到部分用戶回報安裝 Windows 10 年度更新後出現當機情形。這情形發生在將系統安裝在 SSD 固態硬碟,而其他程式和資料儲存在另一硬碟的電腦上。在安全模式中開啟 Windows 10 則無此狀況。若您碰到這項問題,請耐心等待我們進一步調查,並隨時查看這條討論串的更新。」

只能說人品不好,啥事情都會遇上的!(哭哭)

接下來,就只能見招拆招。而根據微軟的說法以及網路相關討論,一種方式是退回 Build 10586版本,可惜我沒這機會嘗試。

再來就只能降低效能去換取穩定性,把內建 App Readiness Service服務關閉或者到 BIOS調整 onChip SATA Type為 AHCI。(後者不建議,等於是閹割 SSD)另外其他方式還有嘗試關閉 SuperFetch、Prefetch以及家用群組 HomeGroup 服務。

現在是透過 Disable MSI for the controller in the registry處理方式後,看來正常運作中,後續只能再觀察...(希望不要人品再爆發了!)

你還想要知道:
Windows 10 may freeze after installing the Anniversary Update - Updated 8-31-16Task Manager might show 100% disk utilization on W…

C# 操作Excel的注意事項

圖片
當透過定期排程執行開啟 Office Excel進行相關作業時,通常會遇到一些莫名的錯誤,導致作業系統留下一堆無主的 EXCEL.EXE。這些背景 EXCEL.EXE看似無害,放著不管可是會逐步吃著記憶體,一點一滴霸佔著 CPU的。


按照 MSDN Code Sample的解釋,Excel是屬於 Unmanaged的程式,所佔用的相關資源是不會在一般所撰寫的程式結束時自動回收:
Step9. Clean up the unmanaged COM resource. To get Excel terminated rightly,we need to call Marshal.FinalReleaseComObject() on each COM object we used. We can either explicitly call Marshal.FinalReleaseComObject on all accessor objects: 因此,要確保任何情況下能夠確實釋放資源,程式需要加入 finally區段明確清理並依序關閉 Excel COM+物件,也就是說,在程式中曾經使用的 Workbook、Worksheet、Range、Cell,結束前都要使用 Marshal.FinalReleaseComObject()清掉以確保Excel程式能順利關閉。

連Range/Cell都要清除,還可真是挺麻煩的!你可能還想要知道:
透過.NET程式操作Excel的注意事項[C# .Net] 使用 Microsoft.Office.Interop.Excel 讀 / 寫 Excel 2010C# app automates Excel (CSAutomateExcel)The Designer Process That Would Not Terminate (Part 2)How to automate Microsoft Excel from Microsoft Visual C#.NET

C# 如何偵測特定檔案是否為 Lock狀態

圖片
要怎樣才能有效在 Windows平台上偵測出檔案是被 Lock呢?


這樣的問題常常會在整合 Office時遇到,像是要依照排程開啟 EXCEL檔案,並透過內含的 VBA運算產出報表。但若是中途發生異常或是中斷,會讓 EXCEL檔案開啟著而導致下次排程無法正常開啟檔案。

為了解決此問題,網路上多半的解法都是先試圖去開檔案,當檔案無法正常開啟時就視同檔案被 Lock住。但是這樣的作法不算精確,因為有很多情況下都會發生開檔錯誤,不一定是因為檔案已被開啟的關係。

依照 MSDN,找到一個比較正確的方式,是透過 Mashal.GetHRForException方法取得 HRESULT,接著將 HRESULT跟 65535做 AND運算取得對應 error code,這樣就可正確得知檔案狀態。

若 error code為 32或 33則表示檔案被Lock住,反之則是正常狀態。(HRESULT的定義前面十六個 bits為 error code,取得之 HRESULT 結果還要與 65535做 AND運算才能取出error code)
ERROR_SHARING_VIOLATION (error code 32)ERROR_LOCK_VIOLATION(error code 33) 你可能還有興趣知道:
[C#]如何偵測特定檔案是否為Lock狀態Marshal.GetHRForException 方法 (Exception)PRB: ERROR_SHARING_VIOLATION Error Message When the CreateFile Function FailsWin32 Error CodesCommon HRESULT Values