天殺的OS作業: 製作Linux USB
live開機隨身碟這個作業,是要將Linux的Kernel塞到USB裡面Live開機,因為實在太麻煩了,我不得不記錄步驟,否則連我自己都會忘記
live開機隨身碟這個作業,是要將Linux的Kernel塞到USB裡面Live開機,因為實在太麻煩了,我不得不記錄步驟,否則連我自己都會忘記
今天在寫TurboGears網頁時,因為遇到用matplotlib產生的圖片
@expose_matplot_figure
def figure(self, id):
return dict(figure=pieFigure(id), dpi=75)如果每次都重新產生一張新圖片,流量大時對主機是件很浪費資源的事情,理所當然第一個想到的就是cache,而cache要能知道有什麼東西改變了是否需要重新產生,而最好能夠不用為了每個exposed的頁面寫一個cache,因此最好的辦法就是用decorator來使用,可以丟函數進去來判斷是否是一樣的東西,是否需要重新產生等等,正當我要開始寫時…
每次說到國內和國外的主機商,我都想說"XX比雞腿",真的是不能比,我們隨便找一家國內的知名主機商來和我這一系列ez2learn的網站所架在的主機商WebFaction比較看看
智邦的年費要
1200 元新台幣
新台幣,我們來看WebFaction最低階的,五年約的主機,5.5美金每個月,一年就是66美金,以匯率以現在的33.3800654下去計算,一年是
2203 元台幣
重點在後面,我們來比比看同樣價格下有多少資源可以使用
| 資源 | 智邦 | WebFaction |
| 最低價年費 | 1200 | 2203 |
| 硬碟空間 | 2GB | 10GB |
| 每月免費流量 | 10GB | 600GB |
| 價錢空間比 | 600 | 220.3 |
| 價錢流量比 | 120 | 3.67 |
很明顯地,怎麼算隨便一家國外的主機商都可以把國內的主機商打得死死的,怎麼比? 根本沒辦法比,而且除了這些可以數值化的價錢、資源可以比較,還有一些是沒辦法比較的,如同在我這個網站的主機商 : WebFaction中所提到的,他們有一個團隊的優秀客服,負責解決客戶在技術上遇到的問題,他們甚至建立了整個的知識庫來記錄這些問題,他們的客服都是很有經驗的,雖然我沒用過智邦,但另一家國內的主機商的客服來說,國內的主機商肯定辦不到找一群有經驗的客服來解決客戶遇到技術上的問題,這只是客服的部份,還有主機技術上的支援,不要說國內的主機,國外的主機都很少有支援Python、Ruby、TurboGears、Django等等國內較少見的網頁開發環境,國內有的就只有老掉牙的LAMP (Linux Apache MySQL PHP),會選擇WebFaction是因為他們支援TurboGears,因為WebFaction注重在於支援那些開發環境和客服,所以就流量和空間等等的資源上,已經算是比較沒有那麼強,有很多主機商如果只支援LAMP那樣的網頁環境的話,資源的差距那更是天差地遠,總合以上幾點的結論是,真的是"XX比雞腿",怎麼比? 沒辦法比,國外的主機商市場那麼大,國內這麼小,價格和服務當然沒辦法比
如果你要用WebFaction跑PHP也是可以,WebFaction上面寫的Memory限制,是針對Python等網頁程式,PHP目前是不在限制之類的,所以PHP的網站不用擔心記憶體使用超過限制的問題,
那如果說,你想架好幾個網站呢? 對於WebFaction來說也沒問題,如你所見,我的ez2learn.com下面的所有網站
和這個部落格,全是架在同樣一個虛擬主機下,它的控制版面讓架站相當輕鬆容易,你要架多少個網站他沒有限制,只要流量和空間不超過限制就可以,就我網站目前那丁點流量和空間使用率,要超過限制實在很有難度,而且PHP的網站也不限記憶體使用率,所以事實上如果你拿來架PHP的話,可以弄一堆網站都沒問題
為什麼差這麼多,還是有人會買國內的主機服務,我想了想,答案大概就在於語言吧,畢竟不是每個人都懂得如何看懂英文網頁,和寫信用英文和客服溝通,事實上英文不用太好,只要看得懂,和寫出來對方看得懂就夠了,像我英文這樣破爛的人,都可以做得到,證明不是什麼難事,如果因為英文不好而花大錢當冤大頭不是很嘔嗎? 而且現在的主機商都有幾天內無條件退費的優惠,WebFaction的無條件退費天數是60天,也就是說你購買了服務之後,60天以內後悔了、覺得服務很爛、看客服不爽,各種理由,都可以無條件退費,以下我們指導如何購買WebFaction的虛擬主機服務
首先,來到WebFaction的申請頁面,填寫你的基本資料
填寫你的姓名、信箱、地址、國家等等,關於地址,如果你不知道你所住的地方英文地址是什麼,沒關係,我也不知道,因為有線上中文地址轉英文地址的服務可以使用,請注意範例中寫的地址不是我家的,是我看見下面中華郵政的地址就隨手寫進去轉成英文當示範用,其中還有公司和VAT欄位,如果沒有可以不要填
接下來是關於你的網站的資料
User name是你的使用者名稱,你以後登入WebFaction的管理版面或是SSH都是用這個名稱,不能更改
Domain是你的域名,如果暫時還沒有的話,可以留白,他會給你一個<使用者名稱>.webfactional.com的域名,當然,當之後你有域名以後就可以更改設定
Software是一開始他們要幫你安裝的軟體,當然,你可以自己用他們的控制面版安裝或修改,相當的簡單,照著他們教學影片做,我只能說簡單到不行
If other: 如果你也想安裝其它軟體,一樣也可以寫在這裡,它們在開通帳戶時一樣會幫你安裝
Promo code or referer: 這裡是填寫推薦人,這裡是填寫我的id victorlin,這樣我可以得到一些回饋金:P
接著是選擇你要使用哪一個Plan,也就是,什麼等級的虛擬主機,在這裡示範我們選擇Shared1,也就是最便宜的虛擬主機,當然,如果你有需要,可以選擇更高級的,甚至是專屬主機,有什麼主機類形可以看他們的網頁這裡有寫,專屬主機的話,則是寫在這裡,然後是付款方式,可以選擇使用信用卡、金融卡或Paypal付款,在這裡我們選擇使用信用卡,Payment period是指多久付一次款,一次合約越久就越便宜,可以參照他們網頁上所寫的
接著你可以在Comments or special instructions裡寫你想他們幫你做的要的額外工作,例如安裝某些套件等等,最後勾選TOS and AUP接受他們的條款,就可以Next step填寫信用卡資料,完成之後,需要等收到他們來信告知帳戶開通完成,不會等太久,當時幾小時我就收到信馬上可以使用了
為了示範WebChuan的威力,我寫了一個簡單的範例,可以下載無名小站的某個相簿裡的所有照片
它會一頁接著一頁抓下去,舉個例子,例如這個相簿,只要輸入相簿第一張相片的網頁連結,它就會一頁一頁接著抓下去,然後圖片都存到相同的目錄下
為了方便沒有安裝Python和WebChuan也能使用這個簡單的小程式,我把它打包成.exe的執行檔,可以從這裡下載
執行download_photos.exe再貼上相簿裡第一張相片的網址連結就可以開始下載相片
請注意,如果抓太凶可能會遇到一個錯誤
999 Unable to process request at this time
似乎是Yahoo把你抓照片當成攻擊,換個IP繼續抓應該就可以了
花了一些時間整理我先前提到設計下所寫出來的抓網頁模組,用Python寫基於Twisted和lxml,可以輕鬆地組織抓取網頁的流程,各種常用的功能都已經有了
我把它命名為WebChuan並且釋放成在MIT License下的Open source project
有興趣可以參考看看,目前還有很多事要做,包括生成文件、撰寫文件、測試等等,但是先前提到的基本功能都已經完備
http://webchuan.ez2learn.com/wiki/Examples/GetPageTitle
這裡有一個取得網頁標題的簡單程式可以執行看看
從檔案堆裡找到了以前參加金門高中合唱團唱的 教我如何不想她,現在聽起來覺得還蠻好聽的,雖然音質沒很好,可是感覺還蠻詩意的,突然覺得自己當年是文藝青年似的 XD
阿~ 我是唱低音的,小提琴不是我拉的 XD
天上飄著些微雲,地上吹著些微風,啊!
微風吹動了我的頭髮,教我如何不想他?
月光戀愛著海洋,海洋戀愛著月光,啊!
這般蜜也似的銀夜,教我如何不想他?
水面落花慢慢流,水底魚兒慢慢游,啊!
燕子你說些什麼話,教我如何不想他?
枯樹在冷風裡搖,野火在暮色中燒,啊!
西天還有些兒殘霞,教我如何不想他?
花了一個晚上的時間把Compiler作業Micro直譯器寫出來了,為啥說它是直譯器,因為光寫文法解析實在很無聊,它的語法又太簡單,反正讓它能執行也多沒幾行程式,就順手讓它可以直接執行,還蠻有趣的,第一次寫比較正規的語法解析器,我想起很久很久以前我寫過一個滑鼠鍵盤的巨集程式
就有解析自創的簡單語法,可是方法實在很暴力很蠢 XD,用了一些五四三的方法硬湊出來,現在我寫完這個作業覺得scanner和parser這樣才是比較正規的做法,我還用了Interpreter Pattern來實作
課本上的Micro語言實在有點簡單過頭了,只有輸入、輸出、運算而已,運算也只有加和減,本來想修改的,可是又要設計BNF和考慮運算優先順序等等麻煩的問題就打消念頭,只寫了兩個簡單的程式
begin
read (a, b, c);
sum := a + b + c;
write (sum);
endbegin
read (f1, f2);
f3 := f1 + f2;
f4 := f2 + f3;
f5 := f3 + f4;
f6 := f4 + f5;
f7 := f5 + f6;
write (f1, f2, f3, f4, f5, f6, f7);
end有興趣可以載回去玩玩看,不過同學請注意,參考看看就好,要拿來當作業交被逮到可不關我的事= =