2012年7月11日

Windows Update KB2667402 發生錯誤, 代碼80004005


 
發生這個問題似乎是因為先前的更新就有包含「KB2667402」,
微軟在後續的更新中又用同樣的代號 (有可能內容是一樣的),
但總之系統就覺得已經裝過,但 windows update 覺得沒裝過…就爆炸了 orz

圖片來源:http://firmank.wordpress.com/2012/01/15/loss-of-windows-update-facility/

解決方式1:
控制台->程式集->程式和功能->檢視已安裝的更新,
往下拉到 Microsoft Windows 的區塊,找看看有沒有 KB2667402 的更新。
找到後點右鍵解除安裝。
若解除安裝成功就重開機後再試試 Windows Update,應該就可以了。
不成功的話看右邊這個更新安裝的時間並記下來。

解決方式2:
在 1 中最後我們記下了 KB2667402 安裝的時間,
開啟系統還原,把系統還原到這個更新安裝的時間點之前,
然後再試試 Windows Update,應該也 OK。

解決方式3:
若前兩者都不成功就要放大決了!
在執行輸入 regedit,記得先將目前的機碼備份!
尋找「kb2667402」一個一個刪,有超級多的,我刪到一半就放棄了 orz
不過重開後再去 Windows Update 就可以了,
應該是刪掉的機碼讓 windows 不會判斷出衝突了。

以上是我的經驗,其他什麼 fix it 之類的東西似乎都沒什麼用…
希望這篇對大家有幫助!

關鍵字:Windows Update, KB2667402, 發生錯誤, 代碼80004005, 解決, 處理
參考資料:

2012年7月10日

Linux:vim指令使用教學


 
嗯,因為鳥哥寫得太好了,
所以這篇就只是當個筆記之後要找比較好找。
請見參考資料 :p

關鍵字:vim, 用法, 程式, 編輯
參考資料:

筆電切換網路設定軟體推薦整理


 
對於工作在外常需要使用筆電的人而言,
有一個痛苦的點在於常常需要切換網路設定,
雖然只是簡單幾步,但若每天要換個兩三次久了應該也很厭煩。
先前花了一些時間好好研究了一番整理出以下方式,
簡單說明供大家參考,至於詳細教學就都有附上連結了。

圖片來源:http://motleysoft.com/ProductDetail.php?ProductID=212

netsh
在windows裡可以用bat批次檔自行設定,
對有在寫 script 的人應該是最簡單易用的。
使用netsh指令快速變更網卡設定
如何透過 netsh 指令快速切換 Windows 網路設定

NetSetMan
圖形化的介面,設定方式清楚簡單,適合一般人使用
NetSetMan 3.4.3 - 切換網路設定一點都不麻煩
NetSetMan 3.4.4 免安裝中文版 - 網路設定切換工具
NetSetMan 官方網站連結

NetProfile
與 NetSetMan 類似,不過上一個版本有點久遠了…
Net Profiles 官方連結
Net Profiles 2.1.8 免安裝中文版 - 手提電腦網路設定快速切換程式

Net Profile Switch
Network Switcher 官方連結

Proxy Switchy
除了網路設定外,若還需要另外切換 proxy 可以用這一套軟體
「Proxy Switchy!」一鍵切換網路 Proxy 設定

關鍵字:切換, 筆電, 設定, 網路, ip, dns, 免安裝, 教學, 介紹, 工具


curl: (56) Failure when receiving data from the peer


 
前一陣子使用了 curl 來完成一些工作,
也寫了幾篇介紹性的文章說明 curl 的用法,文章整理如下:
  1. cURL 指令用法與教學
  2. curl: (3) [globbing] illegal character in range specification at pos …
  3. cURL 批次下載指令教學
圖片來源:http://blogs.terrapinn.com/graduates/2012/06/05/ready-fail-learn/

今天要介紹的則是我在使用 curl 時遇上的一個錯誤:
「curl: (56) Failure when receiving data from the peer」
關於這個錯誤網路上眾說紛紜,不過似乎沒有明確的解決方式。
有的人是更新到最新版後就解決了,不過對我似乎沒用。

後來發現似乎是我用 curl 上載的 server 有點問題,
正常來說server收到 http put 的request 後應該要回傳 100 continue,
指示 client 可以把要上傳的資料傳上來,然而該 server 卻直接回傳 200 OK,
curl 判斷我們在 200 OK後又繼續上傳資料,所以會產生這個錯誤訊息,
不過東西還是都可以正常傳上去就是了。

說了這麼多其實還是沒有明確的解法,
只是讓大家知道出現這個錯誤時可能也是和我一樣的原因。
也許遇到的時候可以檢查一下 server 回傳的 http 訊息喔!
另外似乎在連線有變動後又送資料或request,好像也會出現這個訊息~

關鍵字:curl: (56) Failure when receiving data from the peer, 錯誤訊息, 原因, 解決
參考資料:

2012年7月9日

HttpClient:透過get stream下載儲存檔案


 
使用 Apache HttpClient 4.2,
透過 http get 指令將回傳之 Stream 以檔案儲存。

圖片來源:http://ditchnet.org/httpclient/

程式如下:
 1 package werdna1222coldcodes.blogspot.com.demo.httpclient;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.io.InputStream;
 7 import java.io.OutputStream;
 8 
 9 import org.apache.commons.io.IOUtils;
10 import org.apache.http.HttpHost;
11 import org.apache.http.HttpResponse;
12 import org.apache.http.client.HttpClient;
13 import org.apache.http.client.methods.HttpGet;
14 import org.apache.http.conn.params.ConnRoutePNames;
15 import org.apache.http.impl.client.DefaultHttpClient;
16 
17 public class HttpGetDownloadFileDemo {
18 
19     public static void main(String[] args) {
20 
21         HttpClient client = new DefaultHttpClient();
22         HttpGet get = new HttpGet(
23             "http://www.apache.
24             org/dist/httpcomponents/httpclient/binary/httpcomponents-
25             client-4.2-bin.zip");
26         try {
27             
28             // if you need a proxy to connect to the internet, set it 
29             here.
30             HttpHost proxy = new HttpHost("your.proxy.com", 8080, 
31                              "http");
32             client.getParams().setParameter(ConnRoutePNames.
33                              DEFAULT_PROXY, proxy);
34 
35             // send get request
36             HttpResponse response = client.execute(get);
37             
38             // get http response stream and prepare the 
39             fileouputstream
40             InputStream in = response.getEntity().getContent();
41             BufferedInputStream bin = new BufferedInputStream(in);
42             OutputStream os = new FileOutputStream("D:/httpcomponents-
43                               client-4.2-bin.zip");
44             
45             Long time1 = System.currentTimeMillis();
46             // seems quicker when file is big, commons-io needed.
47             IOUtils.copy(bin, os);  // quicker
48             
49             // a little bit slower, 
50             // use entity.writeTo to copy the response stream to 
51             fileoutputstream.
52             // response.getEntity().writeTo(os);
53             Long time2 = System.currentTimeMillis();
54             System.out.println("Time spent: " + (double)(time2-time1)
55                                /1000 + " seconds.");
56 
57             bin.close();
58             in.close();
59             os.close();
60             client.getConnectionManager().shutdown();
61             
62         } catch (IOException e) {
63             e.printStackTrace();
64         } 
65     }
66 }

關鍵字:Apache, HttpClient, 4, 4.2, 下載, 檔案, 儲存, proxy, download, file,
參考資料: