Python windows 安裝, 心得, 教學

下載並安裝 Python

請至 Python windows 下載頁面, 不是每個版本都有 window 的安裝版

  1. 最好選擇 Python 3.x, 因為選 2.7 會有檔名多國語言問題, dos 下讀檔會亂碼, py 3 就沒有這問題
  2. 最好選 32bit 的, 因為如果要打包成單一執行檔(exe file), 打包完在 32 bit 的環境跑不起來, 且有 include dll 批配的問題
  3. 要選 32bit 還是 64 bit, 基本上要看你用到的 DLL 決定, 例如你有些額外的 dll 是使用 w32 的, 那基本上你使用 64bit 的 ptyhon 就不行, 使用而且 64 bit dll 還有 ctype call address 的問題, 建議如果不想搞死自己, 那就最好是選 32bit 的比較保險

這邊是選 Python 3.6.5 下載

安裝時請注意以下幾點

  • 請注意安裝路徑, 他預設是在"使用者"目錄下面, 最好換到非中文目錄底下
  • 要移除時, 必須執行安裝程式後, 裡面有個uninstall, 在 window 那邊好像找不到移除方式
  • 安裝時選 customize install, 這樣才可以自選安裝路徑
  • 也順便選 Add python 3.6 to path

Read More

安裝 PyQt

安裝 PyQt

PyQT 為 python 的一款 GUI 程式, 是採用 GPL licence, 但也是不是每一版都有 windows 安裝版
注意: 這邊可能會更推薦使用 pip 安裝, 指令為

pip install pyqt5

pip 會自動根據 python 的版本自動匹配, 我這邊使用 python 3.6.5 批配到的是 pyqt 5.10.1

雖然 PyQt 可以自行從官網下載並安裝, 但請務必使用 pip 安裝, 後面使用的時候問題會比較少

安裝 Pyqt5-tools

使用 pip 安裝 PyQt 時, 並不會把 Pyqt designr 給安裝起來, 所以使用 pip 安裝 Pyqt5-tools, 以便取得 QT designer

pip install pyqt5-tools

而 designer 會在

D:\Python\Python36-32\Lib\site-packages\pyqt5-tools

中找到

Read More

執行 amb expression

建立 amb 環境

先去這邊下載

https://mitpress.mit.edu/sicp/code/

amb 是 chapter 4 的, 所以選以下這個下載

ch4-ambeval.scm     Amb Evaluator (section 4.3)

然後再scheme 中執行, 會發現 load 不進去另一個檔, 其實把兩個檔案合起來就可以了, 存成一個檔案後, 就可以使用指令 load 出來, 如下

( load "e:\\a.scm") 

PS:按CTRL-Y 可以貼上文字

Read More

makefile 心得、教學

要寫 makefile 之前,首先我們必須要先從最基本的 GCC 編譯指令開始學起,才可以一步一步地建立起 makefile,幸好這不會花我們太多時間

使用 GCC 編譯命令,並且印出 hello world

建立一個檔案叫做 main.c 後,輸入以下指令

#include<stdio.h>
int main(){
    printf("\r\nHello World");
}

接著在命令列(windows 系統可以使用 cygwin)中,輸入 compile 指令

gcc -c main.c

執行完後會產生 obj file,如 main.o
而上述所使用的編譯參數如下所示

-c : 只編譯不連結 

執行連結,使用 gcc -o 指令

gcc -o test main.o

-o 代表作 link,-o filename 為指定輸出檔名
此時應該會出現一個叫 test 的檔案
執行 test

./test

Hello World

編譯時,如果有 header file 的時候,可以使用 -I 參數,如下所示
這邊是指定 header file 是在哪個目錄可以找的到

gcc -c -I ./inc main.c

Read More

bochs 使用教學,心得

安裝

使用 apt 安裝的是沒有debug 功能的,bochs 通常一出現視窗運行會沒辦法輸入指令, 如果你只是要單純的執行環境的話,就使用 apt安裝吧,如果要 debug 功能的話,就要自行 compile

下載 bochs 2.6.8 source code

安裝(可參考 orange's P10) 輸入下列指令

tar vxzf bochs-2.6.8.tar.gz

進入目錄後,開始設定

./configure --enable-disasm  --enable-debugger

如果要使用 gdb 的話,就不能用 --enable-debugger ,要換成 --enable-gdbstub 接下來就是

make
sudo make install

Read More

Bitcoin 簡介

發明者: 中本聰(1),但這只是化名,真實身份不明,應該是一群想撈錢的集團幹的

經過: It's a very long story,請見資料(2)

使用過程

其實就是妳的電子錢包,把交易的訊息(如我要把 100 個 bitcoin 轉給 A)這條訊息用數位簽章簽過, 經過P2P網路送給所有的錢包使用者手上,利用P2P網路把交易的訊息傳遞出去,利用RSA保證身份,是一種去中心化的貨幣

產生比特的方式

就是所謂的 mining(挖礦),透過這個公式

SHA256( Block data + Random nonce ) < 難度值

來算出來(3),而 Block data 就是上一筆交易的資料,也就是說,Block data 再加上某個值 N ,如果丟到 SHA 中運算小於這次難度值的結果的話就代表挖到礦, 挖到的東西就是新的 block,這個Block會把數字 N 還有這段期間收到的交易資料還有新的難度值,包成一包變成新的BlockNo後,接在舊的後面後,再藉由P2P傳出去, 別人在根據新 BlockNo 繼續玩上面那套公式,而所謂的"難度值"會根據 BlockNo 根據當初設計的公式調整(這個數值會每隔2016個block, 網絡大約每小時創建6個塊,創建2016塊大約2週)調整一次), 所以後面會越來越難挖,變成總數(發行量)會趨近於某個數值,又因為交易的資料是伴隨著新的 Block 用P2P的方式散布出去, 所以有時候交易的資料並不會馬上顯示出來,約要等 6 個 block 左右的時間才可能散布到所有使用者手上

SHA-256是一種雜湊演算法 (Hash algorithm),他的公式會讓輸入的值變成長度固定的數字, 例如輸入 Fox,可能會產生 DFCD3454(4),他的原理有點類似拿一個質數來取餘數,如以質數 13 來做雜湊的 Base Key 的話, 數字131的雜湊值就是1( 131 mod 13 = 1,就是他的餘數),而 1 的雜湊值也是 1, 而 261 的雜湊也是 1,發生了有好幾個數值Hash都相同,這個就叫做碰撞,產生碰撞的雜湊代表 Base Key 選的很爛, 通常要大一點的質數才行,而SHA演算法就是以數學的角度上去確定這個碰撞的機會很小(所以才叫 "Secure" Hash Algorithm )

至於怎樣確定 SHA 是安全的,本人密碼學上課都在神遊,so ... 就到此為止

Lamobo M1( banana pi ) 安裝心得

Lamobo M1 (之前比較常見的名稱為 Banana Pi, 又稱香蕉派) 跟 Raspberry pi(以下簡稱 RPI ) 一樣是屬於單版電腦,Lamobo-M1(以下簡稱 M1) 而 Lamobo M1 與 Banana Pi 是同一片板子,根據該公司的說法,這是透過雙品牌的方式來運營,Banana Pi 專注於開源社群的運營

評比

以下為雙方比較大的差異點,見下表

Raspberry Pi Mode B Lamobo-M1 簡評
CPU Broadcom BCM2835 ARM11系列)700MHz Allwinner A20 1 GHz ARM Cortex-A7 Dual-Core M1勝
GPU Broadcom VideoCore IV @ 250 MHz ARM Mali400MP2
RAM 512 M 1GB DDR3 M1勝
OS 支援 XBMC 支援 RPI 的 OS,也有 andorid, 但有些不能使用 各有勝負
sata SATA*1 M1勝
Lan 10/100 Ethernet RJ45 x1 10/100/1000 Ethernet RJ45 x1 M1勝

Read More

Hexo 安裝教學、心得筆記

自從用了 Octopress ( static page + markdown 寫 blog 後 ),我發現我回不去了以前那些所謂聰明的 blog system,以前在看 blog 的時候就超討厭 blog 自動產生一些 tag 等東西而把網頁弄得超慢, 明明每次生成的東西都一樣,每一次都要自動產生的什麼鬼的,看了就不爽

不過 Octopress 很久沒更新,且又只能限定使用 Ruby 1.9.3,造成很多不方便,所以我又跳槽到同樣是 Static Page 的 Blog System -- Hexo, 特別是作者 tommy351 是台灣人,所以用起來更是愉快, 這邊有作者對 hexo 的介紹
Hexo 可建構在 GitHub 上面,為什麼放這張圖是因為它可愛 XD

安裝 Hexo

安裝 Hexo 所需檔案

Hexo 是建構在 Node.js 上面,所以第一步就是安裝 Node.js,到 http://nodejs.org/ 下載並安裝, 安裝好 Node.js 後,在程式集中會出現 Node.js command prompt,點開後會進入到命令提示字元,接下來輸入

npm install hexo -g

而在 Ubuntu 下面安裝則要加上 sudo, 之後不再詳述此點

sudo npm install hexo -g

安裝好後可以鍵入 hexo 看看有沒有反應,若有反應就代表安裝好了

hexo # 測試 hexo 是否被正確安裝

Read More

Firefox addon-SDK 介紹, page-mod

使用時機

今天要介紹的是 Firefox addon-SDK 中的 page-mod, 使用時機為想要把讀回來的網頁, 再加以修改, 例如

  1. 把某網站的排版重新排一下, 例如台鐵的火車時刻表
  2. 想把某些網站廣告區塊移除掉
  3. 想把網頁中特定資訊給顯現出來, 例如某影音網站的影片下載連結

就可以使用這個, 使用的方式如下

page-mode 簡介

官方給的範例如下

var pageMod = require("sdk/page-mod");
pageMod.PageMod({
    include: "*.mozilla.org",
    contentScript: 'window.alert("Page matches ruleset");'
});

Read More

打造一個 Firefox 附加元件

開始之前

以下會介紹 Mozilla 所推出的 Add-on SDK, 並且用它來打造你第一個 Firefox extension,要做的套件功能是利用 Add-on SDK 抓取匯率網站的資料,重新整理之後顯示出來

首先先建立開發平台, 以下是需要的工具, 分別是 addon-sdk, python, firefox Prerequisites

  • addon-sdk 請到 Mozilla 官網下載, 下載完解壓縮後, 放在你喜歡的地方即可( 如 d:\project\addon-sdk)

  • 除了 addon-sdk 外, 也需要 Python, 由於我的平台是 windows, 所以就裝了 Python for win, 雖然有 2.7.63.4.0 可以選擇, 不過mozilla 建議裝 2.7.X 的比較好, 安裝步驟就是下一步一直按下去, 沒難度.

都安裝好了之後, 就使用命令提示字元(以下簡稱 command line), 到 addon-sdk 下面 接下來鍵入 bin\activate 就會看到命令提示字元變得不太一樣了, 如下狀況 activate

這時候就是進入了 addon-sdk 開發模式, 不過這個動作在每一次關掉 command line 就要重複一次, 所以最好的做法還是把這一連串的啟動動作做成批次檔如下(我 addon-sdk 放在 d:\addon-sdk)

d:
cd\addon-sdk
bin\activate

Read More