網頁

2013年2月28日

Install Git

Snippet

專案常常都由多個人一起撰寫,需要版本控制的工具方便做原始碼的管理。建構 git server 的過程其實不是很難,掌握主要的概念就可以了。
首先是需要一個 git 的群組,我這邊的例子是叫做 developers,然後幫每一個人開一個 server 端上的帳號,然後把這些帳號加入 developers 群組裡。
接著新增一個專案資料夾,透過 git init –bare 的方式啟動 git 的管理,因為這個專案資料夾會由很多人做修改,因此此資料夾的群組與權限設定就變得很重要,記得把專案資料夾的 group 改成 developers,全線改成群組權限的人都可以做 rwx 的動作。
這樣才不會發生 user A 新增的檔案,到了 user B 的電腦裡,產生權限不符合,無法修改的問題。
最後就是回到 user 本地端的電腦,直接透過 git clone 的方式,把 git server 上的專案資料夾複製下來。
最後,就大功告成了。


2013年2月26日

使用 ApacheBench 進行網站的壓力測試

Origin: 使用 ApacheBench 進行網站的壓力測試
ApacheBench 工具程式是 Apache 網站伺服器軟體的一個附帶的工具軟體,專門用來執行網站伺服器的運行效能,特別是針對 Apache 網站伺服器 的效能分析。這支程式原本是用來檢測 Apache 網站伺服器(Web Server) 所能夠提供的效能,特別是可以看出 Apache 網站伺服器能提供每秒能送出多少網頁,當然的,也可以用在任何其他的網站伺服器,例如說:IISlighttpd
底下是 ab 的使用參數摘要說明,若要看詳細說明可以看這裡

2013年2月25日

PHP MVC 網站開發模組化利器 CodeIgniter + Sparks

Origin: PHP MVC 網站開發模組化利器 CodeIgniter + Sparks

CodeIgniter 是 PHP 的 MVC 網站開發框架,它提供一個基礎的架構,讓網站剛起步就有良好的各項機制,包括 URL Routing(支援友善網址)、Models-Views-Controllers、Class Libraries(可自訂擴充的函式庫)、Drivers(Caching、JavaScript、Database抽象層)、Helpers、Hook 及 Error Handler 等。

CodeIgniter is an Application Development Framework - a toolkit - for people who build web sites using PHP. Its goal is to enable you to develop projects much faster than you could if you were writing code from scratch, by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and logical structure to access these libraries. CodeIgniter lets you creatively focus on your project by minimizing the amount of code needed for a given task.

CodeIgniter 的 Helper 已提供不少常用函式,例如:CAPTCHA、Mail、XML、Form...等。

2013年2月24日

Install apache+mysql+php+phpmyadmin

1. 安裝 mysql

sudo apt-get install mysql-server

中間需要輸入mysql的管理員密碼

2. 安裝 apache 2.0

sudo apt-get install apache2

AWS EC2

AWS 是 Amazon Web Services 的縮寫,在這個由 Amazon 建構的平台中,提供了許多雲端的 Service,像是我現在用的 EC2 就是其中之一。

Amozon EC2 的全名是 Amazon Elastic Compute Cloud。是一個讓使用者可以租用雲端電腦執行所需應用的系統。EC2藉由提供Web服務的方式讓使用者可以彈性地執行自己的Amazon機器映像檔,使用者將可以在這個虛擬機器上執行任何自己想要的軟體或應用程式。

使用者可以隨時創建、執行、終止自己的虛擬伺服器,使用多少時間算多少錢,也因此這個系統是「彈性」使用的。EC2讓使用者可以控制執行虛擬伺服器的主機地理位置,這可以改善讓延遲還有備援性例如,為了讓系統維護時間最短,用戶可以在每個時區都執行自己的虛擬伺服器。

Adding Progressive Enhancements with jQuery

Progressive enhancement is a term originally coined by Steven Champeon1 in 2003 to describe a webdevelopment technique in which applications are designed to be accessible to any Internet connection and browser using semantic HTML and other technologies that are applied in layers (such as CSS files and JavaScript markup).

For an application to follow the principles of progressive enhancement, it must adhere to the following guidelines:

  • Basic content is accessible to all browsers using the simplest, most semantic HTML markup possible.
  • All of the basic functionality of the app works in all browsers
  • The user’s preferences are respected; this means that the web app doesn’t override browser settings (such as window size).
  • Externally linked CSS handles the styling and presentation of the document
  • Externally linked JavaScript enhances the user experience, but it remains
    unobtrusive, or non-essential to the application’s operation.

Your application already meets the first four guidelines (it’s not pretty, but the application will work with styles disabled).

So as long as your JavaScript doesn’t create any new functionality that can’t be accessed with JavaScript disabled, you will have successfully created a progressively enhanced web
application.

Origin

  • Pro PHP And jQuery. Chapter 7. Page 235.

2013年2月18日

Linux 命令行 Find 小技巧


命令行一直是Linux用戶用來解決問題的首要選擇,當需要做某件事時,你只要想好如何去做,從那時起你就知道該如何做了

不過很少有人花些時間系統地瞭解處理工具在處理過程中的輸入和輸出。因此對於最基本實用工具的功能可能並不是很瞭解。在本文中,我們將討論所有shell工具箱中都有的一個重要工具:find實用工具。

正如它的名字所表示的,find是在磁碟中查找滿足給定標準的文件和目錄的應用程序。默認情況下,它從當前目錄開始,向下掃瞄所有子目錄。Find基於各種不同的文件屬性來進行查詢,而且可以對查詢結果執行某種操作,通常是對每個查詢結果運行一些程序。

讓我們來看一些例子:首先,為了在當前目錄或子目錄中查找所有html文件,我們可以使用:

find -name “*.html” -type f

2013年2月5日

tar 指令的常用語法

在Linux上,為了便於檔案以及目錄的交流、儲存以及傳輸,我們通常把一大堆檔案以及目錄「打包」為一個單一檔案。這個打包工具就是tar,而打包好的檔案就稱為tar ball (xxx.tar)。

順帶一提的是,tar本身並沒有壓縮檔案,而我們經常看到的 xxx.tar.gz (.tgz) 是 tar ball 再經 gzip 壓縮,而 xxx.tar.Z 則是 tar ball 再經 compress 壓縮,而 xxx.tar.bz2 則是 tar ball 再經 bzip2 壓縮。

常用參數

  • -c 打包一個 tar 檔案
  • -x 解開一個 tar 檔案
  • -t 檢視 tar 檔案的內容
  • -z 使用 gzip 壓縮
  • -j 使用 bzip2 壓縮
  • -v 顯示建立 tar 檔案的過程
  • -f 指定 tar 檔案的檔案名稱 (此參數的後面必須接目標檔名)
  • -C 解壓縮的時候,可以解壓縮到指定的路徑下

xargs 將上一個程式輸出當成下一個程式的參數輸入

Origin: xargs 應用介紹

今天介紹的指令是 xargs,這個指令並不常見,卻很實用
它的工作是將上一個程式輸出的結果轉成下一個程式的參數輸入

範例:
假設有一個目錄如下 (這個樹狀目錄架構是使用 tree 指令所產生的)

.
|-- Makefile
|-- VERSION
|-- VERSION.bak
|-- inc
|   |-- fork.h
|   |-- main.h
|   `-- main.h.bak
`-- src
    |-- common_lib
    |   |-- dl_math.c
    |   |-- dl_math.c.bak
    |   |-- dl_string.c
    |   `-- dl_string.c.bak
    |-- fork.c
    |-- fork.c.bak
    `-- main.c

這是一個程式開發的專案目錄,如果我想要將所有的*.bak 一次清除,那麼該怎麼做呢? 首先我得先找出所有的 *.bak,可以使用 find 指令

find . -iname "*.bak"

可以得到以下的結果
./VERSION.bak
./inc/main.h.bak
./src/fork.c.bak
./src/common_lib/dl_string.c.bak
./src/common_lib/dl_math.c.bak

接下來就是關鍵了
你會怎麼做呢?
1) 把結果使用">" 導向檔案,全部加入 rm (linux 的刪檔指令)嗎?
2) 還是把這些輸出內容變成 rm 的輸入呢?
第一種方式是愚公移山…如果有幾千個檔案…可能會很辛苦~
第二種方式就是使用xargs 來實現我們的理想

find . -iname "*.bak" | xargs rm