簡易 CodeIgniter Layout Library for Template

在 Web 開發網站,最重要的就是切割版面 CSS 化,制定共同部份 header 跟 footer…等,如果是用在 CodeIgniter Controller 裡面,呼叫 Views 的時候,如底下程式碼: $data = array( "title" => "Welcome to Test" ); $this->load->view("header"); $this->load->view("welcome", $data); $this->load->view("footer"); 大家可以發現只要任何一個 Controller 的函式都必須寫上面的程式碼,這樣是不是重複率太高了呢?在 CodeIgniter Wiki 裡面發現一個不錯用的簡易 layout library,他的作法就是利用 $this->load->view 裡面的第三個參數來達成,可以參考線上文件 - Views 最後一個段落 Returning views as data,我們參考看看底下官網提供的程式碼: obj =& get_instance(); $this->layout = $layout; } function setLayout($layout) { $this->layout = $layout; } function view($view, $data=null, $return=false) { $loadedData = array(); $loadedData['content_for_layout'] = $this->obj->load->view($view,$data,true); if($return) { $output = $this->obj->load->view($this->layout, $loadedData, true); return $output; } else { $this->obj->load->view($this->layout, $loadedData, false); } } } ? [Read More]

用 git 指令產生 Change log 格式

Git 真的是一套非常好用的版本控制工具,在網路上看到一篇 Making a Changelog from Git commit messages 裡面提到一篇新手必看的 git branch model,剛好這篇我也寫了中文解說的部份『Git 版本控制 branch model 分支模組基本介紹』,回歸正題,此篇是介紹如何用 git 指令產生 Change log 檔案,平常 Change log 都會寫成類似底下的 format: - Add Chinese Traditional language file - Changed to use count_all_results. - Added permissions checking to activation in example controller. - Fixed an example in the userguide - changed phrases to more typical ones 在 git log 裡面寫了很多 commit message 該如何 format 成上面的格式呢,其實很簡單,只要打入下面指令 # #--no-merges: 不要秀出 merge message #--pretty=format:' - %s' : 關鍵 format git log --no-merges --pretty=format:' - %s' 另外我們還可以透過 --graph 顯示圖形式的 log 顯示,指令如下: git log --graph --pretty=format:'%s - %Cred%h%Creset %Cgreen(%cr)%Creset %an' --abbrev-commit --date=relative 顯示結果如下 * Add Chinese Traditional language file - 1767c60 (4 months ago) Bo-Yi Wu * Changed to use count_all_results. [Read More]

How to write Platform Devices and Drivers with FPGA via GPMC

這投影片是我在接手公司其中一個專案,所做的 Slide,當然最主要是深入了解 GPMC (General Purpose Memory Control),GPMC 本來是ARM 用來跟 Memory 溝通的 interface,現在用來跟 FPGA 溝通,目前我只有看到

TI 的線上文件有看到相關說明,以及解釋 GPMC 的 Program Model,在寫 GPMC 之前請先注意 Platform Device 跟 Platform Driver 的關係,之後才會開始設定 GPMC Config(1~7) 的設定檔,這樣拿示波器就可以看到 GPMC Chip Select 訊號,每個 ARM 只能接 8 個 Chip Select,這點大家必須注意,Flash 會用掉一個,在這專案學到蠻多東西,畢竟 Driver 這塊非常大,之前寫 G-Sensor 的 i2c Driver 也是如此。此 Slide 只是初步介紹,更詳細的就要實際撰寫程式碼了。

好用 PHP debug extension Xdebug on FreeBSD 安裝

之前介紹 FirePHP 這套好用的 PHP Debug 工具,也寫了一篇針對 CodeIgniter 的安裝方式,請參考: [PHP] 好用 Debug PHP 工具 FirePHP for FireFox on CodeIgniter,今天要介紹一套好用的 PHP debug Extension: Xdebug 的安裝方式,作者環境是在 FreeBSD 上,Windows 安裝方式就到官方網站下載對應的 PHP Windows binaries,目前在 FreeBSD ports 上面的版本是 2.1.0,但是 Xdebug 作者已經更新到 2.1.1,自己就順手發了一個 patch 157677 給 FreeBSD 官方 ports 去 update。 FreeBSD 安裝步驟 # cd /usr/ports/devel/php-xdebug # make install clean 設定 /usr/local/etc/php/extensions.ini 檔案後面加入 extension=xdebug.so 設定 /usr/local/etc/php/php.ini 檔案後面加入 xdebug.profiler_enable = 1 xdebug.profiler_output_dir = /tmp/profiler 重新啟動 apache /usr/local/etc/rc.d/apache22 restart 之後執行指令 php -v 會發現出現底下 warning message: PHP Warning: Xdebug MUST be loaded as a Zend extension 這時候請修改 /usr/local/etc/php/extensions. [Read More]

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. [Read More]

版本控制 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. [Read More]
git  svn 

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 的玩家而言相當足夠。 如何設定及註冊 Amazon EC2 可以參考底下連結教學: 什麼是雲端服務?阿正老師教你免費玩Amazon EC2雲端主機!(上篇) 阿正老師教你免費玩Amazon EC2雲端主機(下篇):主機實戰篇 看完這兩篇大概對於 Amazon 有一定程度的瞭解,接下來就是如何進入玩家們所安裝好的 Amazon Linux 主機,由於 EC 2 的服務主機會常常自動更新 IP,剛開始可以到 Console 看到底下 public DNS: 不過這 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. [Read More]

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 的設定說明。