Category: Computer


有時候部分 Windows 7 的圖示,像是開始功能表列或桌面的程式圖示會消失

這是因為 Windows 有對這些程式圖示做快取,但快取資料庫可能被某些新安裝的程式弄亂了

下面方法方法可以重建圖示快取資料庫:

  1. 關閉所有的檔案總管 (Windows Explorer) 視窗
  2. 按 Ctrl + Shift + Esc 啟動 Windows 工作管理員 (Task Manager)
  3. 在「處理程序」頁面,找到 explorer.exe,在其上按右鍵
  4. 點選 「結束處理程序(E)」。 (這時工作列會消失,因為工作列就是 explorer.exe 的一部分。)
  5. 從工作管理員左上角的「檔案(F)」選單,點選「新工作 (執行…) (N)」
  6. 輸入 cmd 後按「確定」,以打開命令提示字元 (Command Prompt)
  7. 在 cmd 視窗內,依序輸入下列指令並按 Enter:
    cd /d %userprofile%\AppData\Local
    del IconCache.db /a
    exit
    (這步驟基本上刪除圖示快取檔,explorer.exe 重開後就會重建)
  8. 在工作管理員,點「檔案(F)」>「新工作 (執行…) (N)」
  9. 輸入 explorer 後按「確定」,工作列就會出現

資料來源 (英文):http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/icons-missing-their-specialized-image/3f1f7108-2984-4071-afd8-5bec9cceda38?auth=1

最近開始使用 Spyder 的 python IDE,其中包含 editor、IPython、變數檢視器、檔案檢視器和各種 documentation,對於需要不斷改 code 並實驗各種參數非常好用。

Spyder IDE 的 Github: https://github.com/spyder-ide/spyder
Spyder 官方網站: http://pythonhosted.org/spyder/index.html

由於我沒有安裝 Anaconda,這裡提供使用 pip 安裝的方法:

Spyder IDE 需要藉由 PyQt 來顯示圖形介面,因此需先安裝 PyQt。在 cmd 輸入:

pip install PyQt5

安裝完成後,接著輸入:

pip install spyder

來安裝 Spyder。如果沒問題就安裝好了。最新的 Spyder 版本是 3.2.0,但我在安裝 Spyder 3.2.0 遇到一些 unicode 的問題,所以目前我還是安裝舊版的 3.1.4

pip install spyder==3.1.4

如果以後 bug 修復了,可以再透過下列指令更新 Spyder

pip install -U spyder

 

Windows 上安裝完後,要啟動 Spyder IDE ,可以在 cmd 輸入:

spyder3

Spyder 的程式執行檔 “spyder3.exe" 是放在 Python 安裝位置下的 Scripts 資料夾 (Python 的其他 cmd 指令像是 pip 也都在此)。如果嫌麻煩,可以建立一個捷徑連結到 “spyder3.exe"。

註:一般 Python 3 的預設安裝位置是

C:\Program Files (x86)\Python 3.x (所有使用者安裝 32 位元)
C:\Program Files      \Python 3.x (所有使用者安裝 64 位元)
C:\Users\<user name>\AppData\Local\Programs\Python\Python3x-32 (個別使用者安裝 32 位元)
C:\Users\<user name>\AppData\Local\Programs\Python\Python3x    (個別使用者安裝 64 位元)

而 Python 2 的預設安裝位置是

C:\Python2x

 

See you later alligator

今天聽到英文一種奇妙的方法說再見:

A: See you later alligator.

Urban dictionary 上寫對方聽到這句,必須要回答:

B: In a while crocodile.

搞笑的是 alligator 和 crocodile 都是鱷魚

美國人的梗真是難懂 ~~

如果使用的是 MiKTeX 2.9

可以在
C:\Program Files (x86)\MiKTeX 2.9\tex\latex\base
找到 LaTeX 的原始檔

LaTeX 一般也會包含說明檔 source2e,但我的 source2e 無法編譯,所以在網路上找到了編譯好的版本:
https://www.tug.org/texlive/Contents/live/texmf-dist/doc/latex/base/source2e.pdf

另外,你可能不會直接看到 source2e.pdf 所提到的原始檔 (例如:lt….dtx 檔),因為他們已經被包裝到 latex.ltx 和 latexa.ltx 檔內了。

第一次練習用 Python 寫 logistic regression。

Logistic regression 雖然已經有很多寫好的 package 可以用,不過我還是嘗試自己寫了一下,

讓自己熟悉 logistic regression 到底做了什麼,還有各個參數的特性。

 

Logistic regression 顧名思義就是用 logistic function:

h(z) = 1/(1 + exp(-z)).

為 fitting function 來 fit data 或說是做分類,logistic function 本人長這樣:

logistic-function

它的特性是,連續的從 0 到 1 遞增,當輸入 z < 0 時輸出 h < 0.5,當輸入 z > 0 時輸出 h > 0.5。

所以當你的 data 分布是大約以 z = 0 為分界,以上為 True (1),以下為 False (0),就可以用 logistic function fit 或分類出來。

如果分界點不剛好在 z = 0,或是 T 和 F 的區域相反,可以藉由不同的 fitting function 像是 z(x) = t_0 + t_1*x 輸入到 h(z) 來達到。

依此類推,你也可以 fit 更高維的 data,然後考慮 z(x1, x2, x3, …) = t_0 + t_1*x1 + t_2*x2 + t_3*x3 …。

或是更高次方的 fitting function,像是 z = t_0 + t_1*x + t_11*x^2 + t_111*x^3 …,等。

 

下圖的 2 維 data  點是由室友提供,藍點代表 1 (True),黃點代表 0 (False)。

可以看出來點的分布像是個歪斜的橢圓形,所以我使用一個 2 次的 function 來 fit 它:

z(x,y) = t_0 + t_1*x + t_2*y + t_11*x^2 + t_22*y^2 + t_12*x*y.

在給定 t_0 … t_12 後, 對於每一個 data 點代入 z (x, y) 再代入 logistic function, h(z), 並以 h(z) = 0.5 為分界

就可以預測每一點 (x,y) 大約是 T 或是 F

a-result

圖中紅色曲線代表 h(z) = 0.5 的曲線,就是這個 model 分類 T 和 F 的界線。

 

當然,真正 regression 的部分在於找到 model 的參數 t_0, t_1, …, t_12,讓 model 最符合 data。

對於一組參數 t_0, t_1, …, t_12,可以計算出 model 的 prediction ( h(z(x,y)) )與 實際 data 的誤差,

每一組 data 都可以算出誤差,這些誤差之合稱為 cost function (就像是高中學過的 X^2 一樣)。

Regression 的目的就是找到一組參數 t_0, t_1, …, t_12 使得 cost function 最低。

也就是說 regression 就是一個找最小值的問題。

 

要找到一個 function 的最小值,最簡單的般法就是 gradient descent。

先計算 cost function 在該點的梯度,然後讓參數 t_0, t_1, …, t_12, 往 cost function 減少最快的方向前進一段距離。

再重新計算梯度,再前進。

重複夠多次之後,就會逼近最小值,找到 model 的參數。

 

上圖為 gradient descent 前進 1000 次的結果,

可以看的出來,還不是 fit 得很好,因為我使用的方法相當簡單,每次前進的步伐是固定的

較為進階的演算法,會每一步調整最佳的前近距離,收斂的就會更快更有效率。

 

總之,logistic regression 是個相當有趣的 python 練習,另外也是做 data scientist 和 neural network 的第一步。

 

My code and data: http://github.com/louis925/Logistic-Regression-Oval

Coursera 上關於 Machine Learning 的線上開放課程 (由 Stanford University 教授上課): http://www.coursera.org/learn/machine-learning/home/welcome

Numpy 是 Python 中處理數學相關的一個強大 package,要使用 Numpy 前請先安裝 Python。(可以到 Python 官網 下載安裝,目前最新版本是 3.6.2 和 2.7.13。) 而 Scipy package 依賴於 Numpy ,以提供更多科學運算所需的功能。

一般 Python 安裝 packages 可以直接在 command line (cmd) 裡輸入

pip install <package 名稱>

來下載安裝。

然而 Scipy (於 2017 年) 在 pip 上仍然沒有相容於 Windows 的安裝版本,因此必須手動至 Christoph Gohlke 的網站下載安裝。由於此 Scipy 依賴於 Numpy+mkl,所以 Numpy package 也必須手動安裝。

下面提供在 Windows 上已安裝好 Python 後,手動下載安裝 Numpy package 的方法

  1. 開啟命令提示字元 (cmd)
  2. 輸入並執行 python -m pip install -U pip setuptools
    (如果命令提示字元不認得 ‘python’ 和 ‘pip’,請先把 python 資料夾 C:\Python27 和 C:\Python27\Scripts 加入到 Windows 的 path 環境變數內)
    (此例子以 python 2.7 版,3.6 版也是類似,只是位置不同)
    (如果 pip 無法更新,請試試看重新安裝新版的 Python 2.7 或 3.6)
  3. 輸入並執行 python -m pip install wheel ,來安裝 Wheel
  4. Unofficial Windows Binaries for Python Extension Packages 網站,下載  NumPy 及 Scipy 的 Wheel 安裝 package (.whl 檔),此網站由 UCI Laboratory for Fluorescence Dynamics 的 Christoph Gohlke 所維護
    Numpy: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
    Scipy: http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
    依 Python 安裝的版本做選擇。(cp27 是給 2.7 版的 Python,cp36 是給 3.6 版。win32 是給 32 位元的 Python,win_amd64 是給 64 位元的。例如:2.7 版 32 位元的 Python,就下載 “numpy-1.12.0+mkl-cp27-cp27m-win32.whl" 及 “scipy-0.19.1-cp27-cp27m-win32.whl")
  5. 到剛剛下載的資料夾內,啟動命令提示字元 (檔案總管,在該資料夾空白處,按 shift + 右鍵 > 在此處開啟命令視窗(W))
  6. 先安裝 Numpy,執行 pip install numpy-1.12.0+mkl-cp27-cp27m-win32.whl
  7. 接著安裝 Scipy,執行 pip install scipy-0.19.1-cp27-cp27m-win32.whl
  8. 安裝完成後,到 Python IDLE,執行看看 import numpy 和 import scipy,如果沒有出現問題就是安裝成功了!

其他常見的 packages 如 sklearn, tensorflow, matplotlib 皆可以直接透過 pip install 安裝,並相容此 numpy

But, 以上是 the hard way to install。如果你只想要無腦安裝直接使用,可以試試 Anaconda Distribution 的 Python

http://www.continuum.io/downloads

這是由 Continuum Analytics 公司提供的,一般使用應該是免費,預設會安裝一些 data 分析和科學運算常用的 packages。

Mathematica 10 似乎有個 bug

安裝 Mathematica 10 並使用一陣子之後,就會發生在開新的 Notebook 並鍵入任意兩個字元後,Mathematica 就 Lag 一陣子

這狀況會隨著使用的時間越長,持續惡化

原因似乎是 Autocomplete 的 bug

Windows 7 下的解決辦法是到下列目錄

C:\Users\[Your User Name]\AppData\Roaming\Mathematica\SystemFiles\FrontEnd\SystemResources\FunctionalFrequency\

把 CodeAssistHistory10.*.m 開頭為檔名的紀錄檔刪掉。

這檔案不會影響 Mathematica 的運作

mathematica-10-bug-file

通常發生問題的時候,這個檔案都會有數 100 MB 大。

References:

http://mathematica.stackexchange.com/questions/120803/mathematica-10-4-freezing-after-typing-in-new-notebook?noredirect=1&lq=1

http://mathematica.stackexchange.com/questions/109005/segmentation-fault-on-auto-complete

Windows 7 SP1 在某次更新之後或全新安裝的情況下,

會發生 Windows Update 在檢查更新時,CPU 使用量會非常高,且掃描更新時間過長或卡住的狀況。

下面提供解決辦法:

  1. 關閉 Windows Update 服務 (若不關閉,更新包有可能無法安裝)
    (控制台 > 系統及安全性 > Windows Updates > 變更設定 > 選 “永遠不檢查更新",後按確定。)
  2. 重新開機
  3. 手動下載並安裝 Windows 7 和 Windows Server 2008 R2 的 2015 四月更新包 (KB3020369)
    1. 32 位元 http://www.microsoft.com/zh-TW/download/details.aspx?id=46827
    2. 64 位元 http://www.microsoft.com/zh-TW/download/details.aspx?id=46817
  4. 手動下載並安裝 Windows 7 和 Windows Server 2008 R2 的 2016 七月更新包 (KB3172605)
    1. 32 位元 http://www.microsoft.com/zh-TW/download/details.aspx?id=53335
    2. 64 位元 http://www.microsoft.com/zh-TW/download/details.aspx?id=53332
  5. 重開機後,恢復 Windows Update 服務並檢查更新

資料來源 (英文):

http://superuser.com/questions/951960/windows-7-sp1-windows-update-stuck-checking-for-updates
http://support.microsoft.com/en-us/kb/3200747

相關資料 (英文):

April 2015 servicing stack update for Windows 7 and Windows Server 2008 R2 – http://support.microsoft.com/en-us/kb/3020369
July 2016 update rollup for Windows 7 SP1 and Windows Server 2008 R2 SP1 – http://support.microsoft.com/en-us/kb/3172605

這問題也困擾我一年多了。但不知為何,這些消息都只有英文的網頁,台灣微軟都沒有翻譯這些問題和解決方案,因此只好幫他們翻譯一下。

據說這是因為舊版 Windows Update 使用 AddSupersedenceInfoIfNeeded 方法,非常之慢。更新之後會快許多。

LaTeX 測試

原來 WordPress 上可以打 LaTeX 的方程式啊!

\left(\boxempty+m^{2}\right)\phi=0

防止加密勒索軟體

最近加密勒索軟體又造成一批災情

加密勒索軟體已知的傳染途徑有:

  1. 瀏覽網頁 (該網站中毒或廣告夾帶病毒)
  2. 網頁上的 Flash
  3. 網頁上的 Java
  4. Email 夾帶或網路上下載的 PDF 檔
  5. 開啟中毒的 Office 檔案,如:Excel, Word, ppt 檔
  6. KMPlayer 撥放器的更新夾帶病毒
  7. USB 隨身碟病毒
  8. 網路上非法下載的軟體或小工具含病毒
  9. NAS 的漏洞
  10. kkman 的漏洞 (內部使用 IE 6.0)
  11. TeamViewer 駭客入侵

通常會中勒索軟體的人有下列共通因素:

  1. 沒有做 Windows 更新
  2. 沒有更新 IE
  3. 沒有更新 Flash Player
  4. 沒有安裝防毒軟體

防止的對策如下:

  1. 每個月做 Windows Update
  2. 更新 IE 和 Chrome
  3. 更新 Adobe Flash Player
  4. 更新 Adobe Reader 和 Adobe Acrobat
  5. 更新 Java ,或完全移除 Java
  6. 更新 Microsoft Office
  7. 更新 NAS
  8. 安裝防毒軟體,並定時更新 (小紅傘可能無用)
  9. 不要使用 IE,改用 Chrome 或 Edge 作為瀏覽器
  10. 不要使用 Windows XP,使用 Windows 7/8/10 等以上版本的作業系統
  11. 不要使用 KMPlayer、迅雷下載
  12. 不要使用 kkman,改用 PCMan (非 Combo 版)
  13. 不要開啟來路不明的 PDF 檔,尤其是 Email 的附件或是網路上下載的。
  14. 不要安裝 TeamViewer
  15. Windows 啟用 使用者帳戶控制 (UAC)
  16. 最重要的是電腦檔案必須 定期備份!

以上都要完全做到,才能完全避免。更新的部分必須每個月自動更新。

由於加密勒索軟體會對所有可以找到的檔案 (包括網路硬碟) 都做加密,所以任何可以存取你的共享資料夾 (dropbox, 網路硬碟) 的電腦都必須做到這些防護,才能完全避免中毒。

最後更新 2016/06/05