[PHP Framework] How to implement Plurk API in CodeIgniter

ci_logo2 (by appleboy46) 很開心在12月看到 Plurk Release API 出來,而自己也跟網路上一些朋友合作開發 PHP implementation of Plurk API,Plurk (簡稱噗浪)在台灣這一兩年紅了起來,網路高手分別針對噗浪研究產生非官方的 API,現在官網 Release 出來,提供了 JavaPython 的 Example,我想因為 Plurk 是用 Python 寫出來的,所以提供了範例,但是 API 出來沒多久,roga 就集合了網路一些強者,一起開發了 PHP Plurk API,我也拿了此 API 在實作到 CodeIgniter Framework,讓在使用此套 open source 的使用者可以享用 Plurk API。不過從2009.12.29日之後,Plurk 官網有限制每天只能 call 50.000 次,已經蠻多了,不要操掛 Plurk 的機器阿。 Continue reading “[PHP Framework] How to implement Plurk API in CodeIgniter”

[Git] how to remove file and commit from history(如何移除 commit 歷史紀錄)

今天在 commit 程式碼到 github 網站,不小心把 Plurk 帳號密碼給 commit 上去,發生這種事情,所以趕快上網查了一下如何移除 commit 歷史紀錄: 假設我們的 commit tree 如下:
R–A–B–C–D–E–HEAD
接下來要移除 B 跟 C 的 commit tree,變成
R–A–D’–E–HEAD
有兩種方式可以移除 B & C
# detach head and move to D commit
git checkout 

# move HEAD to A, but leave the index and working tree as for D
git reset --soft 

# Redo the D commit re-using the commit message, but now on top of A
git commit -C 

# Re-apply everything from the old D onwards onto this new place 
git rebase --onto HEAD  master

# push it
git push --force
另一種方法是利用 cherry-pick 方式
git rebase --hard 
git cherry-pick 
git cherry-pick 
這會直接忽略 B 跟 C 的 history,詳細資料可以查詢 git help cherry-pick 或者是 git help rebase 參考: Git: removing selected commits from repository Git: how to remove file and commit from history Re: ! [rejected] master -> master (non-fast forward)

[PHP] Release 噗浪 php-plurk-api 1.2 Beta.

Plurk 官網在2009年12月4日提供了 API platform,這是大家所期待很久的,裡面只有提供 PythonJava 的 example 範例,所以強者我朋友 roga 發起了 php-plurk-api 架構,來造福 PHP 使用者,當初在 roga 在 plurk 上面徵求是否有人想要一起開發程式,我就當場報名了,後來也陸續多了很多強者好友:WhatupChrisLiuLimit…等加入進行模組撰寫,很快的就產出了 php-plurk-api 1.2 Beta,也利用官方網站 API 來撰寫註解,然後搭配 phpDocumentor 產出文件,這一切都集結了很多人的努力,也讓官方網站放上了大家共同結晶。 如果大家想使用,可以從 php-plurk-api source code. 下載。^^ 其他延伸: Release: php-plurk-api 1.2 Beta. php-plurk-api website.

[UNIX] Vim 命令圖解說明

Vim 是一套在 Windows 或者是 UNIX 系統上面非常強大的編輯器,在 vgod’s blog 看到一篇:『給程式設計師的Vim入門圖解說明』,原作者提供了 pdf 以及 png 檔案讓大家下載阿,相當方便,看到這篇就馬上印出來貼在自己的桌子前面,圖解內容也相當清楚,很適合剛學習 UNIX 系統所需要的一些基本 Vim 指令,如何分割視窗,刪除行…等,另外在 Tsung’s Blog 看到 好文: Vim 食譜(CookBook、Recipes),提供了兩個好用連結:
  • Vim Recipes – Vim 由淺入深, 每篇都很短, 非常推薦此書~ (可線上看, 也可免費下載)
  • Vim Cookbook – Vim 食譜, 這篇專門紀錄常用、好用的密技.
都可以參考看看喔,對於學習 Vim 會有相當大的幫助,底下兩張是從 vgod’s blog 轉錄過來的。 vim-cheat-sheet-full vim-cheat-sheet-diagram

[FreeBSD] freebsd kernel: fxp0: link state changed to DOWN / UP

這一個禮拜被機器弄的頭昏腦脹,突然網路斷掉,然後不知不覺中又好了,接下來是斷斷續續,時好時壞,所以去檢查看一下 /var/log/message 訊息,log 檔案吐出很多底下的資訊:
Dec 9 21:17:02 freebsd kernel: fxp0: link state changed to DOWN Dec 9 21:17:03 freebsd kernel: fxp0: link state changed to UP Dec 9 21:17:10 freebsd kernel: fxp0: link state changed to DOWN Dec 9 21:17:12 freebsd kernel: fxp0: link state changed to UP
在網路上 FreeBSD mail list 查到一篇:『Interface Status changes to UP and Down』,裡面提到通常是硬體的問題,換過 switch 以及網路線,測試還是有問題,網路會斷斷續續,後來就用主機板上面另外兩個網孔測試,網路就不會時好時壞了,由於時常更改 /etc/rc.conf 裡面的 ip 設定,要重新啟動網路卡介面,這樣會造成遠端 ssh 斷線,解決方式請用下面指令: How do I restart network service over ssh session?
/etc/rc.d/netif restart && /etc/rc.d/routing restart
底下一些常用 FreeBSD 網路指令:
#關閉網卡
ifconfig network-interface down
#啟動網卡
ifconfig network-interface up
#觀看尚未啟動的網卡
ifconfig -d
#觀看已啟動網卡
ifconfig -u
# FreeBSD Update / restart routing tables / service
/etc/rc.d/routing restart
Reference FreeBSD: How To Start / Restart / Stop Network and Routing Service FreeBSD IP Alias: Setup 2 or More IP address on One NIC

PHP+MySQL 環境下 SQL Injection 攻防戰

OurMySQL Blog 看到這篇:『PHP+MySQL环境下SQL Injection攻防总结』寫的相當不錯,裡面有一些觀念,可以讓初學 PHP & MySQL 的使用者知道如何防護 SQL Injection (資料隱碼),內容提到 magic_quotes_gpc 在 on 跟 off 的狀況如何防護,但是可以清楚看到 PHP 官方文件提到在 PHP 5.3.0 magic_quotes_gpc 預設已經是關閉,在 PHP 6.0 之後正式移除,所以內容寫的 magic_quotes_gpc 狀況,可以大致上瞭解就好,真正防護 SQL Injection 是需要寫程式或者是考慮很多方式去防護。 一般在做文章查詢,都會使用 /articles.php?id=123 網址傳送方式,以 $_GET[‘id’] 送到 PHP 頁面去做處理,如果駭客想要測試是否可以利用 SQL Injection 做攻擊,可以在網址列加上 /articles.php?id=123,請注意網址後面多出 ,如果沒有把 $_GET[‘id’] 做處理的話,就會出現底下錯誤訊息:
supplied argument is not a valid MySQL result resource in
這是因為平常在寫 SQL 語法,會是底下這種寫法:
$sql = "SELECT id, title, content FROM articles WHERE id = '".$_GET['id']."'";
$result = mysq_query($sql);
因為沒有處理跳脫字元 ‘,所以造成 SQL 語法錯誤,才會出現該錯誤訊息,但是如果又針對跳脫字元做防護得時候,還有另一種攻擊方式:
/articles.php?id=0 union select 1,2,load_file(char(47,101,116,99,47,112,97,115,115,119,100))
其中的數字就是/etc/passwd 字符串的ASCII,除此之外,還可以使用字串 16 進位方式:
/articles.php?id=0 union select 1,2,load_file(0×2f6574632f706173737764)
可以參考一下 MySQL LOAD_FILE(file_name),底下文章提到了很多方式解決。 Continue reading “PHP+MySQL 環境下 SQL Injection 攻防戰”

國外 VPS 虛擬主機效能比較

Dk 大神那邊看到國外一篇 VPS 效能比較:『VPS Performance Comparison』,DK 對於這篇也寫了一些心得Eivind Uggedal 針對國外比較有名的虛擬主機(包含 Amazon EC2LinodePrgmrRackspaceSlicehost )進行了效能測試,原作者寫了一些測試效能的 Python 程式,也公開程式碼在 GitHub repository,底下就來看看幾張作者測試效能產生的圖表。 Journal of Eivind Uggedal- VPS Performance Comparison_1259631315742 針對虛擬主機的 Memory、Monthly cost、Storage、Transfer,價格方面大家都差不多,Linode 贏在每個月給的流量,Amazon 雖然記憶體給的很高,但是相對的價格很貴,在流量($0.17/$0.10 out/inn per GB of bandwidth)也是另外計費的,所以比較起來 Linode 大勝。 Journal of Eivind Uggedal- VPS Performance Comparison_1259631363322 比較 CPU 方面,Linode 提供了 32/64 位元的 CPU 架構讓您使用,Linode、Slicehost、Rackspace 提供四個虛擬 CPU,相對於 Amazon 只提供 32位元架構以及單顆 CPU,比較下來,還是 Linode 大勝。 Journal of Eivind Uggedal- VPS Performance Comparison_1259632886853 (by appleboy46) Journal of Eivind Uggedal- VPS Performance Comparison_1259632896568 (by appleboy46) 這兩張效能圖,很顯然的都是 Linode 大勝,所以本篇報導結論:買 Linode 就是對的,便宜又可以得到好的虛擬主機(VPS)效能。 延伸閱讀:VPS Comparison between Slicehost and Prgmr