2013年4月12日 星期五

putty 可以用中文


讓Putty以UTF-8顯示中文
以UTF-8顯示

Server 端設定
#vi /etc/profile
LC_CTYPE=en_US.ISO8859-1; export LC_CTYPE
LC_CTYPE=zh_TW.UTF-8; export LC_ALL
LANG=zh_TW.UTF-8; export LANG

SSH 連線軟體 Putty 設定:
Change Settings ->> Translation ->> Character set translation on received data ->> 選UTF-8

2013年4月10日 星期三

無痛安裝 Wordpress on CentOS 6 設定篇

無痛安裝 Wordpress on CentOS 6 設定篇

mysql_installdb
如果使用no-ip.org轉址,記得進到後台修正網址。

rm -rf ~/wp-content/plugins/abc #裝外掛如果導致無法登入,把外掛砍掉

vim /var/www/html/project/.htaccess #設定project的htaccess
限制存取wp-includes目錄
<files wp-config.php> #設定wp-config.php 無法存取
order allow,deny
deny from all
</files>

加入apache  密碼保護
vim /etc/httpd/conf/httpd.conf
將 directory "/home/apache" 參數 allowoverride 設定成 all
<files wp-login.php> #設定登入頁面要密碼
AuthName     "Protect login by .htaccess" #名稱
Authtype     Basic
AuthUserFile /var/www/apache.passwd #儲存密碼檔案
require valid-user #apache.passw設定的user可登入
</files>


# Block the include-only files. #禁止存取wp-includes資料
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
# BEGIN WordPress

vim /var/www/html/.htaccess #設定DocumentRoot的.htaccess
LimitRequestBody 10240000 #避免駭客透過Dos攻擊,限制單檔大小10MB
Options -Indexes #開啟禁止目錄索引功能

安裝Akismet 外掛 #防垃圾留言

官方建議設定是所有目錄設定755,所有檔案設定644

在wp-config.php 加入 define('DISALLOW_FILE_EDIT', true); 
#關閉後台佈景編輯功能

更改wp-login.php 的網址

if($_GET["secret"]!="password")
{
    header('Location: http://example.com');      
}  
隱藏wordpress版本
#在佈景主題的functions.php加入語法

function wpbeginner_remove_version() {return '';}
add_filter('the_generator', 'wpbeginner_remove_version');

加入Facebook Like Box
外觀->模組->挑選文字
<iframe src="//www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2FMyRabbitsPuppyBaby&amp;width=200&amp;height=296&amp;show_faces=true&amp;colorscheme=light&amp;stream=false&amp;border_color&amp;header=false&amp;appId=139820942838245" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:200px; height:296px;" allowTransparency="true"></iframe>

按下去置頂
安裝外掛 Dynamic “To Top" Plugin

來信告知
Usernoise modal feedback / contact form

插入繼續閱讀
編輯器裡面按下"繼續閱讀"選單

你可能會喜歡之文章
安裝 nRelate 外掛

檔案監控防駭客
WordPress File Monitor Plus

標籤雲
安裝快掛 WP-Cumulus

下一篇上一篇 麵包屑
安裝外掛 Breadcrumb NavXT Settings

下方分頁功能
安裝外掛 Pagebar2

各國人數統計
http://s03.flagcounter.com/index.html

強化後台
Fluency Admin

統計訪客流量 資訊
安裝StatPress外掛

使用google prettie code
裝prettify.js and prettify.css
在footer.php 加入語法

<script>
  !function ($) {
    $(function(){
      window.prettyPrint && prettyPrint()   
    })
  }(window.jQuery)
</script>
http://stackoverflow.com/questions/11664850/google-prettify-with-bootstrap-line-numbers-not-showing

硬式要學推薦。
http://www.soft4fun.net/wordpress-relate/19%E6%AC%BE%E5%AF%A6%E7%94%A8-wordpress-%E5%A4%96%E6%8E%9B%E6%8E%A8%E8%96%A6%EF%BC%8C%E5%85%A8%E9%83%A8%E5%85%8D%E8%B2%BB.htm

super cache
修改東西記得清除快取

準備研究:
Google Analytics Dashboard
http://sofree.cc/google-analytics-dashboard/

麵包屑

加入廣告
在function.php 裡面使用 global

移除<p>

remove_filter( 'the_content', 'wpautop' );
移除</br>
remove_filter( 'the_excerpt', 'wpautop' );
google sitemap
Google XML Sitemaps





2013年4月8日 星期一

無痛安裝 Wordpress on CentOS 6

無痛安裝 Wordpress on CentOS 6

1.下載軟體並壓縮執行
wget http://wordpress.org/latest.tar.gz # 下載wordpress套件
tar -xzvf latest.tar.gz # 解壓縮執行

2.設定資料庫
建立資料庫、建立wordpress使用者、建立wordpress使用者使用此資料庫的權限。
mysqladmin -u root password 'password' # 設定root的密碼
mysqladmin -u root -p # 使用root登入需密碼
Enter Password: # 輸入密碼
mysql > #進入mysql
create database wordpress; # 建立wordpress資料庫
create user wordpressuser@localhost; # 建立使用者wordpressuser
SET PASSWORD FOR wordpressuser@localhost= PASSWORD("password"); #設定密碼
SELECT User,Host FROM mysql.user; # 秀出系統現在有哪些 user
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost IDENTIFIED BY 'password'; # 設定wordpressuser在wordpress資料庫裡面的所有資料表取得所有權限

3.設定wordpress
vim ~/wordpress/wp-config.php
define('DB_NAME', 'wordpress'); #設定資料庫名稱
define('DB_USER', 'wordpressuser'); #設定user
define('DB_PASSWORD', 'password'); #設定密碼

4.複製檔案到/var/www/html 與安裝php-gd
cp -r ~/wordpress/* /var/www/html/
yum install php-gd
service httpd restart

5.開啟wordpress設定頁面
~/wp-admin/install.php

其他設定:
設定VirtualHost
vim /etc/httpd/conf.d/vh.conf
<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/mydownload
    ServerName mydownload.no-ip.org
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

下載佈景主題還有外掛都需要輸入ftp帳號密碼:
chown -R apache /var/www/html/mydownload # 需將資料夾的權限設定給apache

結果:http://mydownload.no-ip.org/
參考:https://www.digitalocean.com/community/articles/how-to-install-wordpress-on-centos-6--2

2013年4月7日 星期日

PDO


PDO
無痛使用:

$dsn = "mysql:host=$db_host;dbname=$db_name;charset=utf8";
$dbh = new PDO($dsn, $db_user, $db_password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth=$dbh->prepare("INSERT INTO zh_tw_article (ImageURL,Topic) VALUES (:imageURL,:topic)");


while ($result = $sth->fetch(PDO::FETCH_OBJ))
{
echo $result->ArticleIndex . '-' . $result->Topic;
}

  1. http://easonyo.pixnet.net/blog/post/22966510-pdo-(php-data-object)-%E7%B0%A1%E6%98%93%E6%95%99%E5%AD%B8-
  2. http://blog.roga.tw/2010/06/%E6%B7%BA%E8%AB%87-php-mysql-php-mysqli-pdo-%E7%9A%84%E5%B7%AE%E7%95%B0/
  3. http://www.actman.tw/~blog/2010/11/php-%E4%BD%BF%E7%94%A8-pdo-%E5%AD%98%E5%8F%96%E8%B3%87%E6%96%99%E5%BA%AB%E4%B8%80%E5%AD%98%E5%8F%96%E6%AD%A5%E9%A9%9F%E8%88%87%E5%B8%B8%E7%94%A8%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%B4%B9/
  4. http://phorum.study-area.org/index.php?topic=48055.0










-----------
bindParam and bindValue

bindParam會將一個PHP變數與SQL綁定,當變數變化時,SQL也會變動
bindValue則不會,只會執行最初綁定的值

2013年4月1日 星期一

HTML5

HTML5

<!DOCTYPE html> 告知瀏覽器使用HTML5

使用video標籤。

<video width="320" height="240" controls="controls">
  <source src="movie.ogg" type="video/ogg">
  <source src="movie.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>



使用audio標籤。

<audio controls="controls">
  <source src="song.ogg" type="audio/ogg">
  <source src="song.mp3" type="audio/mpeg">
Your browser does not support the audio tag.
</audio>


Drag and Drop 拖放

要元素可以拖放,需將draggable屬性設定為true

<img draggable="true" />















2013年3月28日 星期四

jQuery 基礎教學

Part1: 簡介

jQuery 是一個超級無敵強大的工具,有了他, javascript 變得十分簡單。
相信很多人都會跟我一樣,在剛學習的時候有一個問題:

Q: 要先學會javascript 還是 jQuery ?

A: 簡單一點來說,以C++ 做為舉例

javascript 就等於是 C++

而 jQuery 就等於是 別人幫你寫好的Class

因此你還是要先懂一些C++的語法

有哪些語法呢?

我覺得只要知道怎麼宣告變數、跟用迴圈就夠了

因為,其他javascript 辦得到得事情,jQuery 辦得更快

因此我直接切入正題

----------------------------------------------------------------------------

Part2: 基本的jQuery 架構


$(document).ready(function() {
// Handler for .ready() called.
});


基本上任何的javascript 都寫在 document .ready 裡面就對了

這個code 的意思就是:在我的網頁(DOM) load 完成之後,我要做些甚麼事情

在jQuery 中,  $   這個符號代表的就是jQuery

因此你也可以寫成jQuery(document).ready

----------------------------------------------------------------------------

Part3: 常用的語法

通常我們最常用的就是按下按鈕時,我們希望叫javascript 幫我們做事情

因此其實jQuery 的概念就是

1.利用選擇器選取要操作的DOM

2.修改他

我舉個例子:

<button id="click" class="me" type="button">Click Me!</button>

<input type="text" class="mouse" name="LastName" value="Mouse">

上面是兩個基本的DOM

buttom 擁有id 與 class

而input 擁有 class 與 name

所以我們首先第一步要先選擇DOM

在選擇器方面通常我們會選的依據有兩種

id 或者是 class

所以name在這邊沒屁用

假設我要選擇buttom這個東西的時候,我可以這樣寫

第一步驟:選擇DOM

$("#click")  或者是 $(".me")

記住一定要有單引號或雙引號,不然你可能會很納悶程式怎麼都跑不出來

我就在這邊吃了很多悶虧

第二步驟:做事情

通常我們會把事情寫在function 裡面,假設是click事件

$(".me").click(function() {
    //要做的事情
    $(".mouse").attr("value", "hello");
});

如此一來我在點擊button 時就會將input 的值從mouse 改成 hello

很簡單吧! 設定 input 的屬性竟然只需要一行就完成!!


大致上這就是jQuery 基礎會用到的東西

2013年3月25日 星期一

MYSQL基本語法

MYSQL基本語法


insert into 資料表名稱(欄位1,欄位2)
values('值1','值2');

http://james670818.pixnet.net/blog/post/4411857-%5Bphp%5D-pdo-ii
net start mysql啟動 MySQL

查詢資料庫、資料表、欄位等資訊
mysqlshow [
-h ipAddress] -u user_name -pmysqlshow -u user_name@ipAddress -p
列出所有資料庫

mysqlshow -u user_name -p db_name列出該 database_name 所有資料表

mysqlshow -u user_name -p db_name table_name列出該 database_name 裡 table_name 資料表裡的欄位

mysqlshow -u user_name -p db_name table_name field_name
列出該 database_name 裡 table_name 的 field_name 的欄位資訊

更改密碼mysqladmin password 'new_password'更改目前系統登入使用者的密碼

於資料庫中導入執行sql script 檔
mysql db_name < sql_filename.sql
與 MySQL 連線
mysql [
-h ipAddress] -u user_name -ppasswordmysql [-h ipAddress] -u user_name -p

切換使用資料庫 database_name
mysql> USE db_name
mysql> SELECT DATABASE();列出目前預設的資料庫名稱

mysql> SHOW DATABASES;
列出所有資料庫

mysql> SHOW DATABASES LIKE 'my%';
列出所有資料庫名稱為 my 開頭的

mysql> SHOW TABLES FROM db_name [LIKE ...];
列出該資料庫所有資料表名稱

mysql> SHOW COLUMNS FROM table_name [LIKE ...];
mysql> SHOW COLUMNS FROM table_name FROM db_name  [LIKE ...];mysql> SHOW FIELDS FROM table_name [LIKE ...];
mysql> DESCRIBE table_name ;
mysql> EXPLAIN table_name ;
列出該資料表所有欄位名稱

mysql> SHOW INDEX FROM table_name [LIKE ...];
mysql> SHOW INDEX FROM table_name FROM db_name  [LIKE ...];mysql> SHOW KEY FROM table_name [LIKE ...];
列出該資料表所有索引資訊

mysql> SHOW TABLE STATUS;mysql> SHOW TABLE STATUS FROM db_name  [LIKE ...];列出資料表的相關資訊

mysql> SHOW VARIABLES [LIKE ...];
顯示 MySQL 相關參數設定

mysql> SHOW VARIABLES LIKE '%character%' ;顯示資料庫語系設定資訊

mysql> SHOW PROCESSLIST;
列出與 MySQL 連線的 threads 狀態

mysql> SHOW STATUS;
列出與 MySQL 目前的狀態

當進行資料表檢查或修補時,鎖定資料表可確保資料表的安全
(READ:唯讀狀態、WRITE:無法寫入也無法讀取)
mysql> LOCK TABLE table_name READ;mysql> FLUSH TABLES;
鎖定資料表 

mysql> UNLOCK TABLE;
資料表解除鎖定 

2013年3月22日 星期五

無痛使用jQuery Ajax


今天要讓大家無痛使用 jQuery Ajax

讓大家可以跳過看複雜的document直接來這邊取用就可以了

Part1: 程式範例

先舉例一個做ajax的情況

例如: 點擊一個按鈕,做一些什麼事情

因此可以這樣寫:

$('.btn').click(function() {
    $.ajax({
        url: "check_password.php",
        data: {
            old_password: $("#old_password").val()
        },
        type: "POST",
        dataType: "json",
        success: function(data,textStatus,jqXHR) {
          .....code here
        },
        error: function() {
            ...code here
        },
        complete: function() {
            ...code here
        }
        
    });
});



只要在事件中寫入 $.ajax( ..... );

就算是做一次ajax 了

Part2: Ajax 設定與使用

然而 jQuery 的 Ajax 有許多方法可以呼叫

其中就以$.ajax() 有最多的東西可以設定,所以我們只介紹這個


在url設定要將資料傳到哪個檔案

在data設定要傳送的變數

在type設定傳送的方式 (GET/POST)

在dataType設定回傳的格式(html/script/json/xml)

在success, error, complete 設定ajax 回傳後要做的事件


Part3: 程式說明

這邊我們以json當作舉例

程式碼中我們將變數以POST的方式傳送到check_password.php

然後以json的方式傳回變數data

因此data就是我們做完ajax 所得到的資料



在這邊筆者一開始有一小點困惑

究竟在check_password.php中回傳資料要使用echo 還是 return?

A:答案是echo

因為data這個變數在一開始就像是一張空白的紙,你所有在check_password.php 做的輸出都會直接output 到 data

而Ajax 會將data 以 html的方式抓回來



到這邊有人會有疑問的是: 我不是選擇以json的方式抓回來嗎?

在這邊我要解釋的是,其實ajax 抓資料分為兩步驟

首先先以html的方式抓回, 再轉換為使用者要求的格式

如此就可以無痛的使用Ajax囉!

2013年3月21日 星期四

無痛安裝Solr

無痛安裝Solr

wget http://download.nextag.com/apache/lucene/solr/4.2.0/solr-4.2.0.tgz #下載
tar -zxvf solr-4.2.0.tgz #解壓縮執行

cd exampledocs
java -jar start.jar #執行主程式
INFO::Started SocketConnector@0.0.0.0:8983 #代表啟動

cd exampledocs
./post.sh monitor.xml #匯入index

http://localhost:8983/solr/select?q=*:*&wt=json #搜尋

http://localhost:8983/solr/ #瀏覽solr主頁


實作 Multi-Core
mkdir collection2/conf collection2/data


修改 solr.xml
<cores adminPath="/admin/cores">
  <core name="collection1" instanceDir="collection1" />
  <core name="collection2" instanceDir="collection2" />
</cores>

cp post.sh post2.sh
修改post.sh
URL = http://localhost:8983/solr/collection2/update

DIH ?
Memcached Solr ?

語法:


q - 查詢字串,必須的。
fq - q查詢符合結果中同時是fq查詢符合的。

fl - 指定返回那些欄位內容,用逗號或空格分隔多個。
start - 返回第一條記錄在完整找到結果中的偏移位置,0開始,一般分頁用。
rows - 指定返回結果最多有多少條記錄,配合start來實現分頁。
sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降冪, “price” 昇冪,默認是相關性降冪。

wt - (writer type)指定輸出格式,可以有 xml, json, php, phps, 


q.op - 覆蓋schema.xmldefaultOperator
df - 默認的查詢欄位,一般默認指定
qt - query type)指定那個類型來處理查詢請求,一般不用指定,默認是standard
indent - true|on,json,php,phps,ruby輸出才有必要用這個參數。





參考:
http://www.solrtutorial.com/solr-in-5-minutes.html
http://blog.chenlb.com/category/solr-search
http://www.joetsuihk.com/apache_solr_%E5%A4%9A%E7%AB%99%E8%A8%AD%E5%AE%9A_multi_core_setup?language=zh-hant

Install a Web Server in CentOS on VirtualBox


下載 CentOS
http://isoredirect.centos.org/centos/6/isos/i386/

開一台虛擬機器
記憶體 512MB 硬碟 8G (沒出現圖形介面安裝 因為記憶體太小需652以上)
系統 > 處理器 > 啟用 PAE/NX
喜好設定 > 一般 > 可選擇機器資料夾
網路設定使用橋接器,跟實體機器橋接

安裝請選擇 Install or upgrade an existing system
完成

安裝 GNOME or KDE
yum  groupinstall "X Window System" "GNOME Desktop Environment"
yum groupinstall "X Window System" "KDE (K Desktop Environment)"

關閉 selinux
vim /etc/sysconfig/selinux
SELINUX=disabled

關閉 iptables
vim /etc/sysconfig/iptables
iptables -F # 清除 iptables 設定

設定網路卡
vim /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes #開機自動使用 eth0 這張網卡

安裝 apache mysql php
yum install httpd
yum mysql mysql-server php-mysql
yum php

修改 DocumentRoot
vim /etc/httpd/conf/http.conf

設定開機啟動 apache mysql
chkconfig httpd on
chkconfig mysql on

同步資料夾需安裝 Guest Addition
出現錯誤訊息 Building the main Guest Additions module[FAILED]
安裝 yum install gcc make dkms kernel-devel kernel-headers
裝置 > 插入 Guest Addition CD 映像
點選 autorun.sh 安裝

裝置 > 共用資料夾設定 > 機器資料夾 > vbox D:\Dropbox\www
mount -t vbox /home/www
mount -l #查看 mount 的機器
umount vbox #卸除 mount 機器

設定開機啟動 my.script
vim /etc/rc.d/rc.local

host 設定
C:\Windows\System32\drivers\etc
192.168.0.x mysite.com

mysql 設定
mysqladmin -u root password 'your.password'
mysql -u root -p

mysql 匯出匯入
create db_name
mysqldump -u root -p db_name > backup.sql #匯出
mysql -u root -p db_name < backup.sql #匯入

(mac注意事項)
修改 VirtualBox 共同資料夾位置 (/users/abc/dropbox/www)
重啟 mount httpd

NameVirtualHost *:80 
<VirtualHost *:80> 
DocumentRoot /www/example1 
ServerName www.example1.com 
</VirtualHost> 

<VirtualHost *:80> 
DocumentRoot /www/example2 
ServerName www.example2.org 
# Other directives here 
</VirtualHost> 

2013年3月18日 星期一

將Click-Me imgur的圖片下載

將Click-Me imgur的圖片下載

#!/bin/bash
cat 'temp.txt' | while read line
do
    temp=$(echo $line | sed 's/^M//')
    index=$(echo $temp | awk -F "," '{ print $1 }')
    content=$(echo $temp | awk -F "," '{ print $2 }')
    picture=$(echo $temp | awk -F "," '{ print $3 }')
    flag=$(echo $temp | awk -F "," '{ print $4 }')

#如果等於1 就建一個資料夾
if [ ! -d /var/www/html/imgbackup/image/$index ]; then
    mkdir ./image/$index
fi

wget -t0 -O ./image/$index/$picture.jpg $content
echo "現在進行到-$index"
done

Linux Shell Script


#!/bin/bash
cat 'temp.txt' | while read line
do
temp=$(echo $line | sed 's/^M//') #將讀取進來的資料去除^M
index=$(echo $temp | awk -F "," '{ print $1 }') #用逗點分隔開,第一個字串。

if [ ! -d /var/www/html/imgbackup/image/$index ]; then #如果$index資料夾不存在
    mkdir ./image/$index
fi

wget -t0 -O ./image/$index/$picture.jpg $content #下載資料

2013年3月12日 星期二

web禁止存取.git資料夾 (apache git folder deny)

『環境』
  CentOS 6.x , apache
===========================================

有時候你可能需要在web資料夾下使用git來拿取網頁資料

於是你會多了一個.git的資料夾,並且裡面有很多檔案

但是又希望別人不能存取這個資料夾底下的東西

解決方法

vim /etc/httpd/conf.d/git_deny.conf
(新增一個設定檔)

加入

<DirectoryMatch "^/.*/\.git/">
  Order allow,deny
  deny from all
</DirectoryMatch>

然後再重新啟動httpd即可


2013年3月11日 星期一

實作git server更新多台server


   Git

Q:什麼是Repository?
Ans:就是倉庫的意思
Q:需要做哪些基礎設定?
Ans:
git config --global user.name "Tsung"
git config --global user.email "username@email.com"
git config --global color.diff auto # git diff 要顯示顏色
git config --global color.status auto # git status 要顯示顏色
git config --global color.branch auto
git config --global color.log auto # git log --graph 會很漂亮, 感謝日落提供.
git config --global core.excludesfile ~/.gitignore # 設置忽略名單
相關連結
GitHub官網 - https://github.com/

下載git軟體  yum install git
(如有需要) 下載gitk軟體(以圖表方式顯示) yum install gitk

「server端」
  1. useradd git #新增git帳號
  2. cd /home/git/project #切換到git目錄底下的project資料夾
  3. git init --bare (單純repository)
  4. 無法在此新增檔案,只單純用在repository

「client端」

  1. useradd git #新增git帳號
  2. cd /home/git/ #切換到git目錄
  3. git clone git@192.168.10.130:/home/git/project #將server端的資料複製到client端
  4. vim test.php #新增檔案
  5. git add . #加入檔案
  6. git commit -m 'this is a test file.' #commit檔案
  7. git pull #更新server端資料
  8. git push # 將檔案上傳上去
  9. git status #查詢git狀況

注意事項:
  1. chown -R git:git /home/git/project #更改檔案目錄擁有者及群組為git
  2. git config receive.denyCurrentBranch ignore #發生錯誤,忽略server端的master
後面要加入的 re.local 以及新增機器自動判斷是否已有.git 及 拉檔案  新增排程。

# git clone 的時候會顯示資料夾是空的。
#必須新增檔案 vim test.php; git add .; git commit -a "this is a first file."; 才能push and pull
# 第一次push的時候要下 git push git@192.168.10.130:/var/www/html/project master
#

git.script
if [ -d /var/www/html/project/.git ] ; then
    echo "project存在,git資料夾有存在,開始更新網站內容。"
    cd /var/www/html/project
    git pull
else
    echo "資料夾不存在,建立網站資料"
    rm -rf /var/www/html/project
    cd /var/www/html/
    git clone git@192.168.10.130:/var/www/html/project
    exit 0
fi
service httpd start

push.script
cd /var/www/html/project
git push

#編輯排程
crontab -e 
*/1 * * * * /var/www/html/pull.script  #每1分鐘執行一次。


利用CronTab實作排程

#使用排程
crontab -e #開啟排程檔案
13 12 1 2 1-7 /var/www/html/should-fit/schedule.script #在2越1日的12點13分執行schedule.script
[分 時 日 月 星期幾 指令script檔]

find /var/www/html/should-fit/images2/ -mtime -1 -exec rm -f {} \;
參數說明:利用find指令找出資料夾內修改時間超過一天的圖片,並把它刪除。

mktime(以天計算 "-n"代表幾天內,"+n"代表幾天之前,"n"代表幾天) 
exec rm -f(執行移除) 
{}(find找到的檔案) 
\;(程式指令結束)。

2013年3月7日 星期四

CentOS 指令大全

CentOS 指令大全

yum install php mysql mysql-server

chkconfig httpd on # 開機啟動
chkconfig mysqld on # 開機啟動




ps aux | grep httpd #查詢httpd是否正在執行。
chkconfig --list #列出現在的服務狀態。
chkconfig --level 345 httpd on #r將httpd服務在level 3.4.5 開啟。

讓開啟可以執行root權限的指令

Defaults:nobody !requiretty

管理防火牆 iptables

iptables-save #查看防火牆狀況。
iptables -F #刪除防火牆規則,只保留前三項。

vim /etc/sysconfig/iptables # 修改防火牆規則。
iptables-restore /etc/sysconfig/iptables #載入防火牆規則至設定。

學習筆記開站

我的第一篇文章,以後就在這邊記錄一些程式上的學習經驗好了。

FreeBSD


FreeBSD

查看安裝過那些軟體可下 pkg_info
檔案搜尋指令
  • whereis, locate, find
vim設定檔位置
  • ~/.vimrc
安裝LAMP大絕
建立Symbolic捷徑可下 ln [-sf] 來源檔 目標檔

PHP + CSS + HTML

Ascii Table

Ascii code table - http://www.asciitable.com/
可查詢ascii code, binary code

CSS

教學網站
CSS 語法教學
1.選擇器有很多種,常用的幾種有#(ID selectors)、一種是.(Class selectors),最後一種是前面什麼都不加(Type selectors)
更多的選擇器請參考CSS 選取器(Selector)種類簡介
2.分辨 IE6 IE7 Firefox 的 CSS Hack
新版(新增IE8)
3.為什麼要寫DOCTYPE?
4.細說inline inline-block 與 block 差異
5.IE box model bug
6.CSS中 ".app .ios{}" 與 ".app.ios{}"的差異
在class 選擇器中,如果兩個class中間有空格的話
代表是屬於從屬關係
例如:
<div class="app">
    <div class="ios">
    </div>
</div>
另外如果中間沒有空格的話
則代表說一個標籤裡面會自帶兩個class
例如:
<div class="app ios">
7.<p></p> 裡面瀏覽器希望放inline的標籤
因此如果放block的標籤會出錯

HTML

免費icon

PHP

函式用法參考:
trim() - 刪除空格, 類似function有 ltrim() 及 rtrim()
strpos() - 查看指定字元在字串的哪個位置, 也有許多類似function
htmlspecialchars() - 將特殊字元轉成html,避免injection
跟htmlentities()相同
intval() - 得到整數值
round() - 進位
setlocale() - 設定編碼
ucfirst() - 自動大寫
array_values() - re-index array
mysql_real_escape_string() - 自動加入反斜線
stripslashes() - 移除反斜線
預設的 magic_quotes_gpc 是on
這會導致表單傳送時PHP會自動幫特殊字元加上反斜線
建議將它關掉,由自己控制

PSR

相關連結

PHP XTemplete

1.主要分為 .php 跟 .xtpl檔 .xtpl檔的副檔名可以隨便亂改沒關係,建議改成.html
這樣vim就可以幫忙上色
2.用{}可以直接存取PHP global variable
例如:
{PHP._SERVER.HTTP_HOST}
3.用{}標示可替代的變數
例如:
{VARIABLE}
4.parse()後.xtpl會被轉譯,但要out()之後才會被output
5.資料可以先儲存在array中,再由insert_loop()或者是$xtpl->assign()方法存入
例如:
$xtpl->assign('DATA', $row[$i]);
$xtpl->assign('ROW_NR', $i);
$xtpl->parse('main.table.row');
$xtpl->insert_loop('main.table.row', array('DATA'=>$rows[$i],'ROW_NR'=>$i));
6.如果要將同樣的區塊parse兩次,那麼要使用clear_reset()
否則預設是使用auto_reset();
7.如果要一次parse() Block跟 Sub_Block
可以使用rparse()
8.使用set_null_string('no value...','EMAIL')
可以設定空字串的預設值
也可以直接使用set_null_string('value not specified!')來指定所有的空值
例如:
$xtpl->set_null_string('value not specified!')
9.如果subblock 忘記parse(), 則可以使用set_null_block()來預設沒parse()時所預設要出現的文字
10.如果要在一個tpl檔中include 其他的tpl檔,那麼可以使用{FILE {ex7-inc2.html}}
類似這樣來include 其他tpl檔

Notepad++

自訂副檔名對應程式語言

VMWARE

共用資料夾