「狀況排解」類別中的所有文章
Monday, June 30th, 2008
不同的程式,遇到的連線問題通常不太一樣,但這裡我們比較有興趣的是一些共通性的問題。前幾年最常見的網路問題之一是 LSP 掛了,LSP 是 Winsock 所提供的功能,是 linked service provider 的縮寫,在 Vista 的系統上,因為 Vista 對 LSP 做了許多的限制,所以它就不再像 XP 時代那樣的「好用」,所以 LSP 在 Vista 上也不再是攻擊的重點。我們可以用 “netsh winsock show catalog” 來觀察系統上裝了哪些 LSP provider,還有這些 provider 是對應到哪些 protocol。如果你發現了一些怪怪的東西,你可以拜一下咕狗大神,網上有不少專修 LSP 的工具,新版的防毒軟體也都應該有修復 LSP 的能力。
另一個常見的問題是防毒軟體對衝。現在大部份的防毒軟體或多或少都會裝一些 kernel-level 的驅動程式,特別是用來擱截網路層資料的東西以便掃瞄。不過呢,這些驅動程式很顯然並不是設計來和其他的防毒軟體一起工作的,因此若你想保護你的電腦而不搞爛它,請裝一套防毒軟體就好了。你也許會聽到別人告訴你「加裝軟體 B 的話可以補足軟體 A 的不足」,我個人的解讀是「你買兩套的話我抽的比一套多」。
大部份的防毒軟體若有提供內容掃瞄的功能的話,多半是用 proxy 的方式來做,proxy 的意思是攔截內容後轉到某個地方先存起來,再進行掃瞄。比方說,要怎麼知道某封信件是不是垃圾信呢? 首先先攔截本機和郵件伺服器之間的網路連線,把信件先收下暫存,並進行掃瞄,然後再決定要不要把這封信歸類為垃圾信。如果掃瞄的部份當掉了,但攔截內容的部份沒掛,那當然你就看不到任何的信件了。一般來說重新開機可以搞定這類問題,若不行的話,通常是防毒軟體沒法處理某一封信件,這時候可先將垃圾信功能關閉,先把信收下來試試看。
最討厭的問題就是中毒了,惡意程式對某些賺錢的生意來說是非常關鍵的工具,例如線上廣告商要發送廣告信件到每個人的郵箱,但又不想付太多網路費的時候,他們可以利用惡意軟體去感染別人的電腦,並遙控這些受害的電腦幫助他們發送廣告信件。目前幾乎所有的惡意軟體都以永遠賴在受害電腦裡為目標,不過它們彼此之間的相容性也不怎麼樣,若你的電腦有多重感染的話,它們會互相打架爭奪網路控制權,進而導致電腦運行極為緩慢而無法使用。這時候你有下列的選擇:
買套防毒軟體來掃毒
重灌電腦,買包乖乖壓在上面希望不要再中毒
推動立法把惡意軟體的作者丟到牢裡去 (信不信由你,在大部份的國家,寫惡意軟體並將這些軟體賣給別人是不違法的,只要你不要自己散佈這些程式你就一定不會有事)
除此之外,確認一下你用的程式本身沒有嚴重的 bug 也是很重要的,特別是自動升級叫你裝新版的時候。
Windows, 技術文章, 狀況排解 |
Saturday, June 14th, 2008
大部份的人會把瀏覽器與網路連線混為一談,也就是說,若是他們的瀏覽器不會動的話,他們就會告訴你他們的網路不通,即使他們照樣能夠發 e-mail 到客服信箱來痛罵一頓,他們還是會告訴你他們的網路不通地。好吧,客戶永遠是對的,所以小師程工要自己搞清楚到底客人是在幹譙什麼東西。基本上瀏覽器不會動的原因前幾名是:
DNS 掛了
中毒
首頁網站掛了
防毒軟體互衝
永遠的第一名就是 DNS 掛點,DNS 負責將網域名稱轉成實體的 IP 位址,例如將 www.cchsu.com 轉成對機器有意義的 IP 位址,這樣機器才有辦法幫我們建立連線。一般而言,ISP 會提供 DNS 服務,而它所提供的服務穩定度和它所提供的 DSL/cable 服務差不多,當機並不是什麼令人意外的事情。我以前還遇到過某些 ISP 的 DNS 一天當兩次,雖然一次只當 10 分鐘左右。因此,請你務必記得寫下 DNS 伺服器的IP 位址,出問題的時候才有辦法診斷你是否有辦法連上 DNS 伺服器。如果 DNS 掛了,一般來說最好的解法就是等,正常的 ISP 不會讓它掛太久。
到目前為止,我們應該已確認了下列的事實:
router 工作正常,沒有散熱或硬體上的問題
該插的線有插好,無線網路的連線狀態正常
本機的 IP 位址有效,可以連到 router
DNS 服務正常,nslookup 找的到東西
若你已確認以上諸點,而網路連線仍有問題時,基本上可以確診為軟體方面的問題,這將會在下一篇文章中做探討。
Windows, 技術文章, 狀況排解 |
Friday, June 13th, 2008
今日大家用的 TCP/IP 網路並不完全是個 plug-n-play (隨插即用) 的玩意兒,我們通常還是需要去設定它讓它正常工作。我個人一般是依照下面的步驟來測試網路的設定是否正確:
電腦是否取得了有效的 IP 位址?
Name service (域名解析) 會不會動?
我想連的電腦,有沒有辦法連上?
網路設定最基本也最重要的一件事是取得有效的 IP 位址,一般來說我們是用 ipconfig 這個工具程式來檢測,若出來的 IP 位址是芭樂的 (例如 0.0.0.0 或是 169.254.*.*),那就得看看是不是下列幾項因素搞的鬼
沒有實體網路連線 (例如無線網路的設定錯了)
DHCP 掛了
網路設定錯誤
現在的無線網路卡和 router 不合的事情已經很少見了,大部份也都能自己找到網路去連,不過呢,若你想要這個連線安全一點的話,你必須用 WPA 或 WPA2,這會需要做一些設定密碼和登入的動作。我個人的偏見是問題通常出在廠商附的自動設定程式,它們一般而言製造的問題會比解決的問題要多很多,以下是一些我個人的經驗談:
除非絕對必要,不要安裝網路卡或 router 附的任何程式
若 Windows 有內建驅動程式,而且沒有證據顯示廠商提供的驅動程式較好時,就用 Windows 內建的吧。這又不是什麼 3D 顯示卡,一般而言效能上不至於差太多。就算廠商提供的驅動程式功能較多,一般的使用者多半也是用不著這些功能的
若可以的話,從控制台的裝置管理員去安裝驅動程式。我看過太多爛安裝程式把 Registry 搞爛的例子
基本上要設定 WPA 的話,在 router 上直接透過 router 的 web 介面,在本機則是直接從控制台去設定。設定好之後記得寫下重要的設定和密碼,以免以後要加新電腦的時候忘記了。若你能夠從本機 ping 到 router 的話,基本上連線就沒有問題。當然要記得把防火牆關掉再 ping,因為若防火牆設定錯誤的話,ping 不到是很正常的事情。
DHCP 是個好東西,目前市面上的家用型 router 大多都有內建的 [...]
Windows, 技術文章, 狀況排解 |
Monday, June 2nd, 2008
硬體相關的問題,一般可以粗分為以下幾種:
散熱問題
線材或接觸的問題
設備故障
為了美觀的因素,一般人通常會把 router (路由器、IP 分享器)、hub (集線器) 或 switch 扔在桌底下或電腦後面陰暗的角落,與一沱亂七八糟的線堆在一個視野看不見的地方。如果房間的温度有點高的話,這些可憐的設備就很可能因為過熱而當機。這些吃電的傢伙也是會發熱的,它們和你的電腦一樣也需要散熱。
拜 cost down 大神之賜,線材問題不但常見,而且有愈演愈烈的趨勢。我個人的偏見是,沒有用 Fluke 測過的線,基本上都得打個問號。不過呢,Fluke 這種宅宅的昂貴玩具不是一般人會有的東西,若你手上沒有的話,可以多試幾條網路線,古典機率告訴我們若線材故障率恆定的話,多試幾條線還是遇到芭樂的機率會遠低於只試一條。
最令人討厭的問題就是接觸不良了,常常我們以為每條線都插的好好的,但最後卻發現有那麼一兩條線鬆掉或是接頭壞掉了。一個基本的原則是多花點時間做確認,這多花的幾分鐘往往可以為你省下之後數小時的時間。
設備故障也算是常有的事,特別在這個 cost-down 掛帥的年代更是如此。基本上我們不能對這些俗又大碗的東西期望太高,不過呢,在把東西拿去退貨或丟掉之前,我們得先檢查一下是否有設定上或軟體上的問題在作祟。
Windows, 技術文章, 狀況排解 |
Monday, May 26th, 2008
我目前的工作內容中,有一部份是幫人解決網路的各種連線問題。大家都知道,網路這玩意兒並不一定是插上去就能用的,至少它比烤麵包機用起來要複雜一點。所以當我們遇上了網路的連線問題時,我們應該要怎樣處理呢?底下是我個人使用的步驟,而我們將在之後的一系列文章中對這些步驟做更詳細的說明。
排除愚蠢的問題
排除硬體的問題
排除設定的問題
排除軟體的問題
排除愚蠢的問題
底下是一些常見的蠢到姥姥家的問題,在做任何進一步的動作之前,請先確認這些蠢問題不成立
該插電的東西是不是都有電?
是不是所有的線路都正確且穩穩地插好?
如果家中有嬰幼兒的話,請務必確認以上兩點,並確保在您工作的過程中他們不會出現搞破壞。
電話和網路的帳單付了沒?
確認沒有 Faraday cage
依據我個人的經驗,這問題居然常常出現。通常發生的狀況是這樣的:在修電腦的時候把機殼給拆了,然後就很順手又很巧合地把機殼罩在無線網路的天線上形成金屬屏蔽效應,接下來不管怎麼測試,無線網路都不會動,就以為網路掛了 …
該裝的電池是不是都有裝都有電?
如果以上的問題都確認無誤的話,接下來就是正式開工的時候了 …
Windows, 技術文章, 狀況排解 |
Sunday, January 27th, 2008
搞軟體的常常遇到的問題就是,程式寫好之後,客戶嫌它跑的慢,所以不爽付錢。爽,是一件很重要的事情,所以師程工多半都會被要求無論如何要調到客戶爽為止。不過說真的,效能調校是件很有趣的事情,小弟來分享一些曾遇過的趣事好了。
關於時間方面的效能調校大致上可以分成兩種:縮短執行的時間,或是縮短等待的時間。前者多半出現在後台用的程式,例如小弟以前做過的某個銀行專案,一個批次跑下來要十九個半小時,基本上這等於叫客戶不要開門做生意 經過一個多月的調教校,批次執行時間變成十九分鐘。這麼歡樂的情形也許不常見,不過我倒是從中學到不少有趣的東西:
資料庫的 table design 非常重要,我所做過大部份的專案都是以客戶現有的資料結構下去設計,但客戶的資料結構往往不符合效能最佳化的需求。在一開始設計時就應找出最常用或最關鍵的 query path,針對這個 path 下去設計才對。
Stored procedure 的設計必須把握「先細篩後粗篩」的原則,cursor 指向的 data set 越小,跑起來越快。像上面的例子中,我只是把兩個 select 的順序換一下,時間就從十九個半小時變成六小時。
注意一下 team member 的實際能力,雖然這有些傷感情或 micro-management 的嫌疑,不過卻太常見了。一個很有效的鑑別方式是和你的隊友聊天,看看他打算用什麼方法解決問題,若是沒有方法,或是方法的執行上實在不怎麼樣,那就該想想 plan B 了。
擴充性迷思:客戶通常會要求高於他們業務量所需的規格以備未來的擴充,或是要求要有種種神奇的擴充能力。如何委婉的讓他們知道有多少錢玩多大的車是很重要的事情,很多時候系統只打算用五年卻做了十年的規劃,這樣做起來累驗收也累,爽的只有 sales。
注意客戶的真實需求:很多時候程式跑的慢並不是技術上有問題,而是管理面或協調面上出紕漏。比方說奧客亂拗碰上軟腳 sales PM,或是客戶自己都搞不清楚自己要什麼,或是客戶自己山頭林立一人一把號各吹各的調。這種情形下除了等五年後摩爾定律打敗客戶需求之外,找個很會喬夠力喬的高層才是明智之舉。
很多學校都灌輸「演算法改進會優於程式本身改進」這個概念,不過呢,請務必確認您的隊友都了解這個原則是基於「程式本身已經寫的很好」的假設。我看過不少同行花好多好多的時間想要去生出一個更好更棒的演算法,卻沒有去檢查原有程式的品質。爛程式可以很有效地搞砸好的演算法!
如果 team 很大,程式慢就幾乎是必然的,因為程式往往會遷就組織架構而做許多不必要的取捨,例如過度模組化或不必要的流程。這時候通常我們會需要一點來自上層的助力和自己的勇氣才行。
縮短等待時間一般牽扯到的問題反而都不是技術面的,除非一開始設計就很爛,或是很幸運的遇到網路基礎架構很爛的客戶,不然很少會需要什麼技術面的調整。大部份的調整都是屬於心理層面的,所謂 perceptual performance 的東西。比方說,跑一個報表產生的程式,50 頁用了 5 分鐘,客人嫌太慢等很久,放了一個 dialog 上面跑個 progress bar 外加一堆文字閃來閃去顯示報表產生的步驟和進度,50 頁共用了 7 分鐘,客人反而很滿意覺得程式很讚跑的很快 訣竅很簡單:UI 有在動不會卡住,客人的爽度一般而言比較高。
此外,像拙文記憶體用量的迷思中所寫的現象,雖然與縮短等待時間沒關係,但其實也是 perceptual performance 的另一種表現形式。這種心理層面的效能要怎麼調,得靠 usability 方面做好功課,不然就得和客人拉關係哈啦來補補課學經驗囉。
技術文章, 無責任評論, 狀況排解, 軟體工程 |
Wednesday, December 26th, 2007
服役了五年的一號機終於在前些日子光榮陣亡除役了,主機板上的爆漿瀨尿電容告訴我修它等於買一部新的,既然如此就買吧。算一算透過公司的管道向廠商進貨會比自己組便宜,就向 Dell 進了一台 XPS 420,和太座用的 Gateway 5485 比起來,Dell 的機構設計比較好,散熱效能佳,整線也不錯,不過這種比較有些不公平,應該拿 Dell Inspiron 來比才對 :p
這次和 Dell 訂貨倒是發現了一些 Dell 經營上的問題,記得三年前幫朋友跟 Dell 拿貨的時候,收到箱子時裡面什麼都有,收據禮券一個不落,這次再買就不一樣了,收據沒有,禮券沒有,貨到了之後一星期訂貨確認單才到,打電話去問,扔給我一句六到八週後才會收到禮券和收據。唯一沒變的是那個電話夭壽難打,等半小時是很正常的,請愛用免持聽筒。
Dell XPS 420 出廠的設定有些問題,如果下單的時候沒有指定RAID,ICH9R 的 RAID 會關閉,連帶關閉了 eSATA,這我認為是 QA miss,不應該發生的 (放個不會動的 port 在那裡給客人裝肖嗎?) 要修這個問題,改 BIOS 之外,整個 Vista 要重灌,這還真是個歡樂的過程。不過呢,我的壞習慣就是我一定自己重灌不用原廠設定,所以就當沒看見吧 …
我重灌 Vista 改裝 x64 版本,說真的沒什麼好留意的,比 XP x64 好灌很多,目前為止只發現了以下的問題:
用 Ghost 8.0 備份硬碟的話,回存時 Vista 會抱怨找不到 winload.exe 就開不了機了,解決的方法是放入 Vista 光碟,開機後按 F8,選安全模式然後選修復 Windows,它會幫你改好 [...]
技術文章, 狀況排解, 美國生活 |