busybox iptunnel 噴出錯誤訊息

最近在弄新案子,用的是 Atheros solution (被高通買下),發現 SDK 裡面已經有更新到 Busybox 1.15,由於在建 ipv6 tunnel 時候必須用到 ip 這指令,當然必須支援 iptunnel,當我把 busybox 選項打開就噴出底下錯誤訊息:
busybox-1.01/networking/libiproute/libiproute.a(iptunnel.o):iptunnel.c:(.text+0x574): more undefined references to `__cpu_to_be16′ follow
在 Google 大神指示下找到一篇答案 修改 networking/libiproute/iptunnel.c
#include  
# 後面加上 
#include 

加速開發 CSS 工具: Sass

從來沒想過在開發 Web 網站過程,CSS Style 還可以程式化,設定變數來控制 CSS,今天來介紹一套用 command line 來轉換 CSS 的 Web Framework Plugin: SASS (Sassy CSS),可以參考 SASS 的 Change log 版本差異,目前最新版本 3.0 以後開始支援 CSS3 做開發,底下先來介紹如何安裝: 作者是在 Ubuntu 10.10 的環境下安裝,利用 apt 方式先將環境需要的軟體安裝好
# 安裝 Ruby 環境
 $ sudo apt-get install ruby
 $ sudo apt-get install rake
 $ sudo apt-get install rubygems
Ruby 的安裝只需要一行指令
gem install sass
另外也可以透過 git 方式來安裝
git clone git://github.com/nex3/sass.git
cd sass
rake install
安裝好就會 bin 目錄多出了 sass sass-convert scss 3個指令,如何轉換呢?也相當容易
mv style.css style.scss 
sass --watch style.scss:style.css
style.scss 是您寫的 SASS CSS 檔案 style.css 是您要輸出的檔案名稱 至於如何撰寫 Sass 語法,就請大家參考線上手冊,文件非常清楚,相信很容易看的懂

版本控制 version control git clean 使用時機

在做公司的每一個案子,我都會使用 git 來做版本控制,雖然公司只有用 svn 控管,但是只要網路掛掉,就不能做任何事情了,更不用說 svn Server 掛點,因為 git 開 branch 免錢,因此每當我拿到新案子就按照 Git 版本控制 branch model 分支模組基本介紹 開了固定幾個 branch,由於剛開始 git init 沒有把 .gitignore 寫好,所以 commit 了一堆 *.o 或者是 *.ko 類似的檔案,我用了 git rm –cached 方式砍了,結果在切換 branch 的時候出現底下錯誤訊息:
error: Untracked working tree file ‘XXXXXXXX’ would be overwritten by merge.
這是因為當你 git rm –cached 檔案之後,切換 branch 時候會遇到衝突,本來的 master 分支還是存在這些檔案阿,因此這時候就要靠 git clean 來清掉移除檔案,可以利用 git help clean 來查看使用手冊。 Ref: Force git to overwrite local files on pull.

Plurk API 2.0 beta 出來了 (OAuth Core 1.0a)

之前 Plurk 剛推出 API 讓大家可以使用,當時蠻多使用者相繼推出各式語言的支援,像是 php-plurk-api: PHP implementation,而我也將此程式改寫到 CodeIgniter-Plurk-API,然而現在官方又推出了 Plurk API 2.0 beta,不同的是 2.0 用了 OAuth 保護個人隱私,它提供了標準讓開發者可以利用 OAuth 實做任何 application,噗浪官網也希望各位開發者可以儘快將 API 轉成 2.0,當然也是要額外註冊 Plurk App。 底下幾點是 API 2.0 跟原來 API 的差異處:
  • Plurk API 2.0 不需要登入作認證,然而原來的 API 是基於 session base 做開發
  • 網址改變,用 http://www.plurk.com/APP/ 取代原來的 http://www.plurk.com/API/
  • 現在每個 Plurk API 2.0 請求都會按照 OAuth Core 1.0a 標準
  • 所有 input/output 參數跟原來都是一樣,只是現在不需要 api_key 在參數里面
大家註冊之後,可以拿到一組 App Key,就可以開始使用了 ^^

快速安裝 Amazon EC2 LAMP 環境 (EC2 Console)

已經紅了一陣子的 Amazon 雲端服務,本篇來介紹如何使用 Amazon EC2 Linux 安裝 LAMP (Linux Apache MySQL PHP) 環境,衝著 Amazon 推出的新玩家註冊開始為期一年的免費,當然也是有一些限制條件,可以參考 EC 2 收費標準及介紹,底下這圖片就是一年內免費的方案,其實對於剛學習 Linux 的玩家而言相當足夠。 AWS Free Usage Tier 如何設定及註冊 Amazon EC2 可以參考底下連結教學: 什麼是雲端服務?阿正老師教你免費玩Amazon EC2雲端主機!(上篇) 阿正老師教你免費玩Amazon EC2雲端主機(下篇):主機實戰篇 看完這兩篇大概對於 Amazon 有一定程度的瞭解,接下來就是如何進入玩家們所安裝好的 Amazon Linux 主機,由於 EC 2 的服務主機會常常自動更新 IP,剛開始可以到 Console 看到底下 public DNS: AWS Management Console 不過這 DNS IP 都會常常更新,所以剛開始都要常常來這邊看,玩家們可以用剛剛註冊此機器的 mykey.pem 透過 ssh 的方式登入機器,底下是在 Ubuntu 的操作
1. 先設定檔案權限,請將檔案權限改成 400
chmod 400 mykey.pem
2. 透過 ssh 軟體 pietty (上面阿正老師連結有教學)或 Linux ssh 指令
ssh -i mykey.pem ec2-user@ec2-XXXXXX.compute-1.amazonaws.com
進去主機之後就是一般的 Linux 操作,可以參考 鳥哥的Linux 私房菜,當然我想玩家們都會發現一直透過 mykey.pem 登入會有點麻煩,而且假設 pem 檔案消失,又要去 Console 申請一次,所以底下教大家如何不必透過 mykey.pem 方式登入,其實也很容易,就是修改 /etc/ssh/sshd_config
1. 打開 /etc/ssh/sshd_config 找到 PasswordAuthentication
PasswordAuthentication no
改成
PasswordAuthentication yes
2. 存檔後,重新啟動 sshd
/etc/init.d/sshd restart
上述設定完成之後,就可以直接透過 ssh -l ec2-user xxx.xxx.xxx.xxx 的方式來遠端 Linux 主機,透過 yum 繼續安裝 Apache + MySQL + PHP,方法如下:
yum groupinstall "Web Server"
yum groupinstall "MySQL Database"
最後請參考計算 Amazon 每個月所需費用,不要傷了自己的荷包 XD,Micro Instance 的方案規格就很足夠我用
613 MB memory Up to 2 EC2 Compute Units (for short periodic bursts) EBS storage only 32-bit or 64-bit platform I/O Performance: Low API name: t1.micro

申請 Elastic IP

補充如何申請固定IP跟 EC2 結合,其實蠻容易的,看下面這張圖 AWS Management Console 2 大家申請 IP 之後,請記得跟 EC2 做結合的動作,如果申請放著不用,這樣會被收費喔

PHP curl error: SSL certificate problem, verify that the CA cert is OK

之前在 CodeIgniter 寫了 CodeIgniter-Google-URL-Shortener-API 縮短網址的 goo.gl API Library,也在國外 CodeIgniter 論壇發表了一篇,不過在論壇有人回覆安裝好之後不能使用,會直接噴出底下錯誤訊息:
Severity: Notice Message: Trying to get property of non-object Filename: controllers/google_url.php Line Number: 24
之後我在 Windows 利用 Appserv 架設好這環境,發現是同樣問題,但是在 FreeBSDUbuntu 上面都不會出現這錯誤訊息,接著在程式馬上面看看 curl 吐出什麼資料:
Curl error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
把這錯誤訊息拿去 Google 發現到這篇解法 Curl: SSL certificate problem, verify that the CA cert is OK,只要跳過驗證憑證就可以了
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
可以參考 PHP 官方 curl_setopt 的設定說明。

在 Ubuntu 底下快速安裝 CakePHP Framework 環境

最近因為別的專案用到 CakePHP 這套 PHP Framwork,剛好有這機會來學習 CakePHP,目前已經 Release 到 1.3.8 & 1.2.10 Stable,本篇紀錄如何在 Ubuntu 10.10 安裝 1.3.8 版本,本人不推薦用 2.0, 因為踩到很多雷阿,大家可以到 CakePHP GitHub 找尋自己想要的版本,安裝環境如下:
Ubunut 10.10 32 Desktop 版本 Apache/2.2.16 (Ubuntu) PHP 5.3.3-1ubuntu9.5 with Suhosin-Patch (cli) MySQL 5.1.49
1. 先下載 1.3.8 版本 2. 解壓縮到 /var/www 底下 3. 設定 apache virtual host 複製 virtual host 設定檔
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/cakephp
修改設定檔
    ServerName  cakephp.localhost
    DocumentRoot /var/www/cakephp/app/webroot
    
        Options All
        AllowOverride All
        Order allow,deny
        allow from all
    
4. 啟動 apache virtual host 跟 mod_rewrite 模組
a2enmod rewrite
a2ensite cakephp
ServerName 部份可以自己亂取,之後到 /etc/hosts 裡面加入 127.0.0.1 就可以了 5. 將 app/tmp 目錄改成 apache 使用者,這樣確定該目錄可以寫入 大致上就這樣完成了,可以參考 CakePHP 線上手冊

CodeIgniter 1.7.x vs 2.0.x 的改變及新增功能

CodeIgniter 2.0.x 已經 Release 一段時間了,去年的 2010 CodeIgniter Conference 會議上一些國外講者分享了 2.0 的改變及新功能,底下這投影片個人覺得還不錯,點出了升級步驟及 2.0 新功能介紹,大家可以參考看看 2011 CodeIgniter Conference 將會在紐約舉行,大家可以敬請期待。