2013年10月13日 星期日

[野人獻曝] 在Google Appengine上佈署Codeigniter

因為最近GAE開放了對PHP的支援,理所當然地我也去申請測試這玩意了(遠望)。
所以本篇文章要來講一下怎麼樣在Google Appengine上佈署Codeigniter。

提示:因為GAE For PHP是採申請制的,所以要有申請過才能用。如果沒申請過,就算照以下步驟作也是沒辦法用的(應該吧)。申請網址:http://gaeforphp.appspot.com/

以下步驟是在Ubuntu的命令列下執行,如果是用Windows的話,除了敲指令的部分外,基本上都是一樣的!另外以下的操作需要Google Appengine SDK,請先自行下載處理。

第一步:先到Github下載CodeIgniter-AppEngine這個專案
wget https://github.com/edwardmp/CodeIgniter-AppEngine/archive/master.zip --no-check-certificate
下載完後解壓縮
unzip master.zip
之後應該會看到一個CodeIgniter-AppEngine-master目錄

第二步:切換到CodeIgniter-AppEngine-master目錄,編輯app.yaml
檔案內容如下,要修改的是用大括號包起來的地方:
application: {你的Google AppEngine專案名稱}
version: 1
runtime: php
api_version: 1

handlers:
- url: /
script: CodeIgniter_2.1.3/index.php

- url: /(.+)
script: CodeIgniter_2.1.3/index.php
注意,除了大括號的地方外,其他地方都暫時先不要修改。
修改完存檔離開。

第三步:利用Google AppEngine SDK把檔案佈署上去
{GAE SDK路徑}/appcfg.py update CodeIgniter-AppEngine-master/
在第一次佈署時會要求你輸入GAE的帳號密碼後才會開始佈署,
之後就不會再問了。

完成佈署後,可以打開瀏覽器,並在網址列輸入GAE專案的專屬網址。
如果沒意外的話應該會看到Codeigniter的歡迎頁面,
這就代表你的佈署完成了。

接著你就可以開始Coding了!

對了,最後要補充一下,GAE For PHP目前無法連到外面的DB,
所以既有用到DB的程式可能是沒辦法搬過去了。
如果執意要搬的話就要考慮把既有程式翻掉,
改用Google提供的DB服務。

2013年4月12日 星期五

[野人獻曝] 在檔案上傳時即時得知進度

以一般的檔案上傳而言,
實在是沒辦法即時得知上傳進度,
使用者只能苦苦癡等網頁顯示一行「檔案已上傳」。
如果只是一個大概幾M的小檔案也就罷了,
以現在的網路速率而言是可以很快就上傳完畢了。

萬一是上百M的呢?
實在很難想像在那邊等的樣子啊......

所以說呢,能夠瞭解即時上傳進度的東西是非常重要的。

不過在這之前,我一直以為只有像是SWFUpload之類的東西才能作這種事。
直到我發現PHP-pecl底下有個uploadprogress這玩意後,
我才被這玩意給嚇到了。

他的使用步驟很簡單:

  • 確定pecl是不是可用?
  • 利用以下指令安裝uploadprogress
    • pecl install uploadprogress
  • 安裝完畢後,請在你的php.ini加入以下文字載入uploadprogress:
    • extension=uploadprogress.so
  • 重新啟動apache,來隻測試程式看看是不是可以正常運作吧?
當以上步驟都完成後就可以開始使用了。

2013年3月19日 星期二

[野人獻曝] 在Ubuntu與PHP下安裝使用MongoDB

MongoDB是什麼,我就不說了。
所以就直接把安裝和設定的流程寫下來作個紀錄。

  • 先安裝 MongoDB
    • 直接下指令:sudo apt-get install mongodb
    • 這個步驟很無腦,所以就不多說了。
  • 確認機器是否已經安裝php-pear和php5-dev
    • php-pear 一般主機都會安裝,所以就略過不提。
    • 需要安裝php5-dev是因為安裝MongoDB的php函式庫需要透過pecl,而pecl又是放在這裡,所以就得安裝了。
  • 安裝MongoDB的php函式庫
    • 直接下指令:sudo pecl install mongo
  • 在php.ini中加入這一行,這樣PHP才會載入MongoDB的函式庫
    • extension=mongo.so
  • 啟動apache
    • 如果是在cli模式下執行測試程式,可以略過這步。
  • 來隻測試程式吧
基本上按照這些步驟就可以先把 MongoDB架起來。
(當然啦,後面還有一堆設定要作......不過本篇文章沒打算講這麼深入就是了)

之後比較熟悉一點的時候再來說明設定好了(倒

2013年1月28日 星期一

[野人獻曝] 用Phantomjs來抓網站圖

嗯,因為某個專案的需要.......
(我會跟妳說我其實是要做anti22k.org這個專案嗎?)
我又要開始弄網頁截圖的事了。

原本我想取巧,
用以前用過的html2image試試看,
不過很糟的是:
我忘記當初是怎麼設定的了Orz
雖然按照網站教學試著去裝,不過似乎不能用。
因此第一個選項立刻放棄!

接著又Google到一個wkhtmltoimage
他是wkhtmltopdf下的一個子專案,
看起來好像頗讚。
(因為好像只要解壓縮檔案就能用......)
但是解壓縮後執行又跟我哭么「error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory」,
所以又放棄了......
(其實是不想花時間解.......)

最後找到本文要講的Phantomjs
這東西在linux只要解壓縮後,
再搭配一段script就可以對網頁截圖。
實際的使用方法,這裡有篇中文的文章可以看
照著作就可以抓圖了。

不過要注意一下,
如果抓的網頁不是單純英文字的話,
(就是有中日韓文等文字時......)
要確認系統上有沒有安裝相應的字型,
否則抓出來的圖可能就是一堆方塊。

另外網頁編碼也需要注意一下,
如果不是utf-8的話,可能會碰到亂碼的問題。
如果是對岸gb編碼的話,只要有安裝相應的簡體中文字型應該是可以正常顯示。