[FreeBSD] Fanout and Fanterm Tool to run commands on multiple machines

在 Linux 或 FreeBSD 系統底下,如何下達 command 來達到多方控管機器,在網路上找到 Fanout and fanterm 這兩套軟體,可以實現我想要的目的,在 FreeBSD 有把 sysutils/fanout 進到 ports 裡面,安裝方式很簡單,就直接 make install clean 就可以了,用法也很簡易: Usage: /usr/local/bin/fanout "MACHINES" "commands and parameters to run on each machine" /usr/local/bin/fanout -h #Show this help /usr/local/bin/fanout --noping # Do not ping before running command 當然事情沒有這麼簡單,因為是透過 SSH 方式去對其他機器下 command,所以作者都把預設 port 設定成 22,沒有完整考慮到其他環境,管理重要的 Server 怎麼會設定 22 阿,一定會改掉的阿,後來檢查一下 /usr/local/bin/fanout 這隻程式,並非編譯過的 binary 檔案,所以打開來看,就是利用 bash shell script 所寫的程式,網路上 Google 也找到一篇 Does anyone know how to specify a ssh port number with fanout? [Read More]

Using firebug for firefox 除錯 javascript

在 Web 程式設計,不管是 html 或者是 CSS、甚至 javascript,都可以利用 FireFox Plugin: firebug 來除錯,順便推薦另一套 Web Develper 工具:Web Developer 1.1.8,這兩套都可以玩看看,在網路看自己東華電機學長 gasolin 寫過一篇:3 分鐘學會用 firebug 除錯 ,裡面有一個影片,建議大家看看:影片,如何利用 firebug 來對 javaascript 除錯,介紹了 firebug 優點。底下整理我看到的內容 1. 利用 console.log() 來針對變數除錯 以往都是利用 window.alert() 的方式來看看變數是否正確,現在只要在 javascript 裡面加入 console.log() 針對不同變數取值出來觀看 輸出會顯示: a is test [1, 2, 3, 4] 2. 印出有圖示的訊息 console.info/console.warn/console.error 這功能跟 console.log 差不多,只有差在前面有圖示符號,請看下圖: 3. 使用 firebug 除錯 debugger; 只要在 js 裡面加入 debugger; 就會進行 逐步除錯,我想如果寫過 Window form 的使用者,C# ASP.net 最常用的就是逐步徵測錯誤,這功能相當方便,每一行跑了哪些變數,都可以逐一在旁邊顯示喔 大家看到逐步偵錯到第19行,前面變數都會在旁邊顯示喔,原本都是 null。 [Read More]

[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 的機器阿。

[Read More]

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

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

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),底下文章提到了很多方式解決。

[Read More]
php 

國外 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

[Javascript] 在函數裡設定參數預設值

在網路上看到一篇:『Setting default values for missing parameters in a Javascript function』,提到在 Javascript 函式參數如果未定義,就會出現 undefine 的錯誤訊息,請看底下範例: function foo(a, b, c) { document.write('a: ' + a + ' '); document.write('b: ' + b + ' '); document.write('c: ' + c + ' '); document.write(' '); } 測試函數: foo(); foo(1); foo(1, 2); foo(1, 2, 3); 輸出結果: a: undefined b: undefined c: undefined a: 1 b: undefined c: undefined a: 1 b: 2 c: undefined a: 1 b: 2 c: 3 底下有兩種方式可以解決此問題: 1. [Read More]