2008-12-28

照片 尺寸 列表













































































規格 英吋 cm
1吋證照 1 x 1.5 27 x 38
2吋證照 1.3 x 1.9 35 x 45
5 吋 3.5 x 5 89 x 127
6 吋 4 x 6 102 x 152
7 吋 5 x 7 127 x 178
8 吋 6 x 8 203 x 152
10 吋 8 x 10 203 x 254
12 吋 9 x 12 254 x 305
14 吋 10 x 14 254 x 351
15 吋 10 x 15 254 x 381
16 吋 12 x 16 305 x 406
18 吋 13.5 x 18 342 x 457
20 吋 15 x 20 381 x 508
24 吋 18 x 24 457 x 609

2008-12-24

PHP preg_match 多行match的用法

用[\s\S]*來完成多行

<?php

$test = "/**

123中文endsadf#!$%#!46i90-t9-9-0

*/";


preg_match('/\\/\\*\\*[\s\S]*/m',$test,$m);

print_r($m);

?>


結果

Array
(
[0] => /**
123中文endsadf#!$%#!46i90-t9-9-0
*/
)




參考:PHP正则表达式匹配多行 - PHP - ◇王者之剑◇-Albert Song's Blog

2008-12-17

ubuntu 8.10 之前的版本要用apt安裝 Flash Player 10的方法

設定軟件庫


Ubuntu 把 flashplugin-nonfree 放在 multiverse 庫中,請先確定您的 /etc/apt/sources.list 的 Ubuntu 主站行有 non-free 在尾,如下:



deb http://tw.archive.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse  


留意 Ubuntu 8.04 LTS (Hardy) 的軟件庫原身只提供 Flash Player 9。(8.10 已是 Flash Player 10 了) 要安裝 Flash Player 10,需要 hardy-backports 中的 multiverse 庫。請在 /etc/apt/sources.list 加上如下:



deb http://tw.archive.ubuntu.com/ubuntu/ hardy-backports multiverse  


更新最新軟件資料:



apt-get update  


安裝套件


安裝套件 flashplugin-nonfree:



apt-get install flashplugin-nonfree  


然後重新啟動 Mozilla FirefoxEpiphany





參考來源:使用 apt-get 命令安裝 Flash Player - OSWikiHK

ubuntu7.04 vnc 登入 gnome 後鍵盤 錯亂 的解決方法

不知為什麼 用 vnc 登入 鍵盤會錯亂,按b打出s,按shift打出1
只要 輸入
gconftool --type list --list-type=string \
--set/desktop/gnome/peripherals/keyboard/kbd/layouts \
[damnlayouts]

後重開 vncserver就正常了,好像是 layout的問題

不過改了之後,本機登入就不正常了

參考來源:看板 Linux_twbbs - 轉信 ●台灣學術網 Linux 系統討論組

Linux脫離Unix侵權陰影,走向自由陽光

因SCO集團(之後簡稱"S")控告:「Novell公司(之後簡稱"N")已將「Unix」賣給 "S",而Linux因為Linus(Linux之父)是參考Unix架構而生,所以Linux是Unix的變種,須要付授權費,裝機每台至少199美元不等的授權費」,造成Linux開發者的一顆不定時炸彈。

這次的宣判,讓"N"取回著作權,"S"的控告無效,並裁決"S"要賠償"N"250萬美元的金額。




參考來源:ZDNet Taiwan - 新聞 - 企業軟體 - Unix著作權判給Novell、SCO不得控告IBM
http://www6.uwants.com/viewthread.php?tid=6628632

2008-12-16

記憶目錄能快速切換目前目錄跟上個目錄 pushd 和 popd

記憶目錄能快速切換目前目錄跟上個目錄 pushd 和 popd

記憶目錄路徑
$ pushd [路徑]

跳回上一個記憶目錄,且清除記憶(即:本功能只能跳回一次)
$ popd

2008-12-13

2008-11-17

IE 的 DOM檢視工具 ,對網頁開發人員猶如神器

當你在研究別人的網站時,老是要開原始碼,慢慢比對嗎?
現在有這個 IE dom檢視工具 ,可以直接在網頁上直接找到某一區塊的 dom ,可以讓你想找什麼,就找什麼。不用浪費時間成本
下載位置


引用:KB-相見恨晚的IE Dev Toolbar - 黑暗執行緒:

2008-09-09

how to install Avast 4 for Ubuntu 8.04 (64-bit) - Ubuntu Forums

how to install Avast 4 for Ubuntu 8.04 (64-bit) - Ubuntu Forums

[ ubuntu 筆記 ] 安裝防毒軟體 avast! Linux Home Edition ... !!! - I Love Bike ! - by Jamii ^+++^y

[ ubuntu 筆記 ] 安裝防毒軟體 avast! Linux Home Edition ... !!! - I Love Bike ! - by Jamii ^+++^y

vi 的怪問題鍵盤 [論壇 - Ubuntu基本設定] - Ubuntu 正體中文站

vi 的怪問題鍵盤 [論壇 - Ubuntu基本設定] - Ubuntu 正體中文站

第七章 键盘-1-Windows程式开发设计入门

第七章 键盘-1-Windows程式开发设计入门

微軟「右鍵縮圖」小工具Image Resizer,按兩下輕鬆幫圖片縮小尺寸! �

微軟「右鍵縮圖」小工具Image Resizer,按兩下輕鬆幫圖片縮小尺寸! �

Audacity 合併/分割/編輯MP3音樂檔、手機鈴聲  【重灌狂人】

Audacity 合併/分割/編輯MP3音樂檔、手機鈴聲  【重灌狂人】

2008-08-29

[Papervision3D] turn off traces

[Papervision3D] turn off traces

用CSS的white-space及word-wrap讓pre中自動換行

pre {

width:600px;
overflow-x:visible !important;
overflow-x:hidden; /* Internet Explorer 6 */


white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */

}

2008-08-18

酷玩意:蝙蝠俠招換燈

蝙蝠俠招換燈,隨時隨地呼叫蝙蝠俠。
趕時間,幫忙開個路吧~~~~~~~~~~~~~
spotlight-dark-200.jpg原始網站:USB Batman Spotlight

2008-08-12

讓 phpMyAdmin 同時支援 Big5 & UTF-8 解決MySQL5.x亂碼 - 網管小技巧 - ADJ網路實驗室 Linux,FreeBSD

讓 phpMyAdmin 同時支援 Big5 & UTF-8 解決MySQL5.x亂碼
解決phpmyadmin 亂碼,支持 utf-8 讓phpMyAdmin 同時支援 Big5 & UTF-8
php 4.3.9
MySQL 版本 5.0.19-max
phpmyadmin 版本: 2.6.4-pl4

解決方法:
/var/www/html/phpMyAdmin/libraries/select_lang.lib.php

1.支援 UTF-8
在這一段裡:
// MySQL charsets map
$mysql_charset_map = array(

line 257
將:
'utf-8' => 'utf8',

改成:
'utf-8' => 'latin1',


若要同時支援 Big5 則繼續下面修正

2.支援 Big5

line 240
將:
'big5' => 'big5',

改成:
'big5' => 'latin1',

line 171 (加上-utf-8 在語言選單就會出現chinese_traditional-big5的選項)
將:
'zhtw-big5' => array('zh[-_](tw|hk)|chinese traditional', 'chinese_traditional-big5', 'zh-TW'),

改成:
'zhtw-big5-utf-8' => array('zh[-_](tw|hk)|chinese traditional', 'chinese_traditional-big5',"

Mysql 4.1 到 5.x 跟 Mysql 4.0 以前版本 的中文問題解決方式

我遇到的問題時,接手別人的東西,因為對方的mysql 是 5.0.37版的,但是我猜測「里面的資料卻是用 舊版的mysql轉入的」
因為我用 mysqldump 匯出時中文會亂碼,但網站是big5的,中文是正常的,所以我用--default-character-set=latin1
將 mysql 轉出,中文就正常了。
/* 匯出 */
mysqldump --default-character-set=latin1 output_database --add-drop-table > output_database.sql

/* ps 提外話:舊版的mysql轉入新版mysql */
mysqlimport --default-character-set=latin1 import_database import_database.sql


參考資料:Life of LeoLo » Blog Archive » MySQL升級5.0與UTF-8之相關解決方法

2008-07-24

酷站連結

Tag Galaxy 這個網站 把 flickr 變成一顆球了

ecodazoo.com 應該是pv3d 的弄得非常好~~~

[下載] avast! antivirus v4.8 防毒軟體正式版!安裝教學(免費合法序號)  �

[下載] avast! antivirus v4.8 防毒軟體正式版!安裝教學(免費合法序號)  �

如何設定ADSL網路連線? (PPPoE非固定制)  【重灌狂人】

如何設定ADSL網路連線? (PPPoE非固定制)  【重灌狂人】

如何用KMPlayer將「.flv」影片檔轉成其他影片格式?  【重灌狂人】

如何用KMPlayer將「.flv」影片檔轉成其他影片格式?  【重灌狂人】

[正版]【不盜版】用15個「免費正版軟體」取代付費軟體! (狂省10

[正版]【不盜版】用15個「免費正版軟體」取代付費軟體! (狂省10

2008-07-22

redhat 或者CENTOS 啟動pureftpd

啟動pureftpd
#/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf

在/etc/rc.d/rc.local中加入
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf > /dev/null 2>&1

啟動腳本設置
cp pure-ftpd-1.0.18/contrib/redhat.init /etc/rc.d/init.d/pureftpd
然後修改該腳本的可執行屬性:
chmod +x /etc/rc.d/init.d/pureftpd

如何使用mysql當管理帳號資料庫
http://z-win.blogspot.com/2008/07/pureftpd-mysql-web.html

2008-07-21

HOW TO:以程式碼模擬滑鼠和鍵盤事件

HOW TO:以程式碼模擬滑鼠和鍵盤事件

VB API函数参考手册

VB API函数参考手册

*奇想西卡* | pureftpd + mysql + web管理

建立virtual user建立虛擬使用者帳號之前,先要有一個專用的系統帳號,比如要上傳網頁檔案,這時就會關系到apache使用者,它的系統UID為48、GID為48,使用者才能有權限存取。且注意pure-ftpd.conf設定檔裡的一項目,必需設定MinUID最小多少之後的UID,才可被認證
# Minimum UID for an authenticated user to log in.
MinUID 14


*奇想西卡* pureftpd + mysql + web管理

2008-07-07

wiiflash-api

wiiflash-api

22 組 AS3 API [論壇存檔] - RiS全球華人豐富式網頁技術社群 - 專注各項RIA領�

22 組 AS3 API [論壇存檔] - RiS全球華人豐富式網頁技術社群 - :
"資料來源: List of 22 ActionScript 3.0 API’s (http://seantheflashguy.com/blog/2007/08/13/list-of-22-actionscript-30-apis/)
內容:
Adobe APIs
corelib, mappr, flickr, youtube and more.
http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:libraries

APE (Actionscript Physics Engine)
http://www.cove.org/ape/

as3awss3lib
ActionScript 3.0 library for interacting with Amazon S3
http://code.google.com/p/as3awss3lib/

as3soundeditorlib
Actionscript 3.0 library for sound editing
http://code.google.com/p/as3soundeditorlib/

as3ds
AS3 Data Structures For Game Developers
http://code.google.com/p/as3ds/

ASCOLLADA
http://code.google.com/p/ascollada/

As3Crypto
ActionScript 3 Cryptography Library
http://crypto.hurlant.com/

asinmotion
Animation Library for AS3
http://code.google.com/p/asinmotion/

Away3d
http://code.google.com/p/away3d/

ebay API
http://code.google.com/p/as3ebaylib/

facebook-as3
AS3 API to access Facebook's Platform API
http://code.google.com/p/facebook-as3/

flest
Flest Framework for Adobe Flex and ActionScript3 Applications
http://code.google.com/p/flest/

FZip"

All Packages - AsWing A3 API

All Packages - AsWing A3 API

2008-06-13

安裝 Red5 on Linux 的心得

注意:Installing Red5 on Linux Open Source Flash 中某些動作不合用,比較舊

底下是我使用的不一樣的指令


yum install subversion

svn co http://svn1.cvsdude.com/osflash/red5/java/server/trunk
red5

mv red5 /usr/

export JAVA_HOME=/usr/java/jdk1.6.0_06

export _JAVA_OPTIONS="-Xmx128m" #修改最大記憶體用量 for vps

ant

./red5.sh &


測試是否成功:開二個http://localhost:5080/demos/BallControl.swf,按「連線」讓「綠燈」亮。托拽二個畫面,有同步即成功

參考來源:http://www.cnblogs.com/phinecos/archive/2007/11/26/973109.html

要改對外開放的ip

conf/red5.properties 修改此文件就行,記得iptables打開所有須要的port,將0.0.0.0的ip改為本機實體ip

有些範例是這樣

rtmp.host_port = 0.0.0.0:1935

http.host = your.server.com

http.port = 5080

rtmpt.host = 0.0.0.0

rtmpt.port = 8088

debug_proxy.host_port = 1936

proxy_forward.host_port = 127.0.0.1:5080

rtmp.threadcount = 4

2008-06-03

iframe 的 innerhtml

我有使用mootool.js

function FRAME(id){
var i;
if ( i = $(id) ){
if (i.contentDocument) {
var d = i.contentDocument;
} else if (i.contentWindow) {
var d = i.contentWindow.document;
} else {
var d = window.frames[id].document;
}
return d;
}else return null;
}
alert(FRAME(id).body.innerHTML);

當IFRAME的內文 只有 script 時,如下:

< script >alert('z-win.com');< /script >


innerHTML 將會是空字串
若內文是
< b>z-win.com< /b>
< script >alert('z-win.com');< /script >


就會正常回傳全部內文

php adodb :: ado-mssql 的 variant Object問題

目前的版本是 adodb498.gz 及 adodb504a.gz

發現 使用 ado-mssql時,
bigint 的 資料

print_r($f->value);
//會回傳 variant Object
echo($f->value);
//才會回傳 正確數值

但對於int的格式就都能回傳正碼數值

我解決的方式如下
/**
*fix VT
*/
function fix_VT($v){
if ( is_array($v) || is_object($v) ){
foreach($v as $i => $v2){
$v[$i] = $this->__fix_VT($v2);
}
return $v;
}else{
return $this->__fix_VT($v);
}
}
/**
*fix VT base function
*/
function __fix_VT($value){

$t = $this->VT_MetaType($value);
if ( $t == '' ) return $value;
switch($t) {

case 'I': return intval($value);
case 'N': return floatval($value);
/*
case 'C': return 'VARCHAR';
case 'XL': return (isset($this)) ? $this->typeXL : 'TEXT';
case 'X': return (isset($this)) ? $this->typeX : 'TEXT'; ## could be varchar(8000), but we want compat with oracle
case 'C2': return 'NVARCHAR';
case 'X2': return 'NTEXT';

case 'B': return 'IMAGE';

case 'D': return 'DATETIME';
case 'T': return 'DATETIME';
case 'L': return 'BIT';

case 'R':
case 'I1': return 'TINYINT';
case 'I2': return 'SMALLINT';
case 'I4': return 'INT';
case 'I8': return 'BIGINT';

case 'F': return 'REAL';
*/
default:
return $value;
}


}
/*
OLEDB types

enum DBTYPEENUM
{ DBTYPE_EMPTY = 0,
DBTYPE_NULL = 1,
DBTYPE_I2 = 2,
DBTYPE_I4 = 3,
DBTYPE_R4 = 4,
DBTYPE_R8 = 5,
DBTYPE_CY = 6,
DBTYPE_DATE = 7,
DBTYPE_BSTR = 8,
DBTYPE_IDISPATCH = 9,
DBTYPE_ERROR = 10,
DBTYPE_BOOL = 11,
DBTYPE_VARIANT = 12,
DBTYPE_IUNKNOWN = 13,
DBTYPE_DECIMAL = 14,
DBTYPE_UI1 = 17,
DBTYPE_ARRAY = 0x2000,
DBTYPE_BYREF = 0x4000,
DBTYPE_I1 = 16,
DBTYPE_UI2 = 18,
DBTYPE_UI4 = 19,
DBTYPE_I8 = 20,
DBTYPE_UI8 = 21,
DBTYPE_GUID = 72,
DBTYPE_VECTOR = 0x1000,
DBTYPE_RESERVED = 0x8000,
DBTYPE_BYTES = 128,
DBTYPE_STR = 129,
DBTYPE_WSTR = 130,
DBTYPE_NUMERIC = 131,
DBTYPE_UDT = 132,
DBTYPE_DBDATE = 133,
DBTYPE_DBTIME = 134,
DBTYPE_DBTIMESTAMP = 135

ADO Types

adEmpty = 0,
adTinyInt = 16,
adSmallInt = 2,
adInteger = 3,
adBigInt = 20,
adUnsignedTinyInt = 17,
adUnsignedSmallInt = 18,
adUnsignedInt = 19,
adUnsignedBigInt = 21,
adSingle = 4,
adDouble = 5,
adCurrency = 6,
adDecimal = 14,
adNumeric = 131,
adBoolean = 11,
adError = 10,
adUserDefined = 132,
adVariant = 12,
adIDispatch = 9,
adIUnknown = 13,
adGUID = 72,
adDate = 7,
adDBDate = 133,
adDBTime = 134,
adDBTimeStamp = 135,
adBSTR = 8,
adChar = 129,
adVarChar = 200,
adLongVarChar = 201,
adWChar = 130,
adVarWChar = 202,
adLongVarWChar = 203,
adBinary = 128,
adVarBinary = 204,
adLongVarBinary = 205,
adChapter = 136,
adFileTime = 64,
adDBFileTime = 137,
adPropVariant = 138,
adVarNumeric = 139

add by loa 2008-06-03
VT_MetaType is for check variant MetaType ,because returns is not a useful value,like bigint of mssql data
*/
function VT_MetaType($v)
{
if (is_object($v)) {
if (PHP_VERSION >= 5) $t = @variant_get_type($v);
else $t = $v->type;
}else return $v;
if ($t===null) return '';
switch ($t) {
case 0:
case 12: // variant
case 8: // bstr
case 129: //char
case 130: //wc
case 200: // varc
case 202:// varWC
case 128: // bin
case 204: // varBin
case 72: // guid
if ($len <= $this->blobSize) return 'C';

case 201:
case 203:
return 'X';
case 128:
case 204:
case 205:
return 'B';
case 7:
case 133: return 'D';

case 134:
case 135: return 'T';

case 11: return 'L';

case 16:// adTinyInt = 16,
case 2://adSmallInt = 2,
case 3://adInteger = 3,
case 4://adBigInt = 20,
case 17://adUnsignedTinyInt = 17,
case 18://adUnsignedSmallInt = 18,
case 19://adUnsignedInt = 19,
case 20://adUnsignedBigInt = 21,
return 'I';
default: return 'N';
}
}

2008-05-27

不錯的iptables limit 參數備忘

原文:Jamyy's Weblog: iptables limit 參數備忘

2006年03月17日

iptables limit 參數備忘

  • 限制特定封包傳入速度
  • 限制特定埠口連入頻率
  • iptables Log 記錄參數備忘
  • 自定 Chain 使用備忘
  • 防治 SYN-Flood 碎片攻擊

限制 ping (echo-request) 傳入的速度

限制前, 可正常每 0.2 秒 ping 一次

ping your.linux.ip -i 0.2

限制每秒只接受一個 icmp echo-request 封包

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

--limit 1/s 表示每秒一次; 1/m 則為每分鐘一次

--limit-burst 表示允許觸發 limit 限制的最大次數 (預設 5)

再以每 0.2 秒 ping 一次, 得到的回應是每秒一次

ping your.linux.ip -i 0.2

限制 ssh 連入頻率

建立自訂 Chain, 限制 tcp 連線每分鐘一次, 超過者觸發 Log 記錄 (記錄在 /var/log/messages)

iptables -N ratelimit
iptables -A ratelimit -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A ratelimit -p tcp --syn -m limit --limit 1/m --limit-burst 1 -j ACCEPT
iptables -A ratelimit -p tcp -j LOG --log-level "NOTICE" --log-prefix "[RATELIMIT]"
iptables -A ratelimit -p tcp -j DROP

引用自訂 Chain, 限制 ssh (tcp port 22) 連入頻率

iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT (特定 IP 來源不受限制)
iptables -A INPUT -p tcp --dport 22 -j ratelimit

參考資料: Mike's Blog - How to limit attack attempts in Linux

sshd_config 設定備忘:

  • LoginGraceTime 30 密碼輸入時限為 30 秒
  • MaxAuthTries 2 最多只能輸入 3 次密碼

同理可證

iptables -N pinglimit
iptables -A pinglimit -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A pinglimit -j DROP

iptables -A INPUT -p icmp --icmp-type echo-request -j pinglimit

亦可達到每秒只接受一個 echo-request 封包

補充: 清除自訂 Chain

iptables -L -n --line-number
iptables -D INPUT n
iptables -F ratelimit
iptables -X ratelimit

防治 SYN-Flood 碎片攻擊

iptables -N syn-flood
iptables -A syn-flood -m limit --limit 100/s --limit-burst 150 -j RETURN
iptables -A syn-flood -j DROP

iptables -I INPUT -j syn-flood

模擬攻擊

wget http://www.xfocus.net/tools/200102/naptha-1.1.tgz
wget ftp://rpmfind.net/linux/freshrpms/redhat/7.0/libnet/libnet-1.0.1b-1.src.rpm
tar -zxf naptha-1.1.tgz
rpmbuild --recompile libnet-1.0.1b-1.src.rpm
cp -r /var/tmp/libnet-buildroot/usr/* /usr/local/
cd naptha-1.1
make

./synsend your.linux.host.ip 80 local.host.eth0.ip 0.1

若成功抵擋, 不久後會出現 Can't send packet!: Operation not permitted 的訊息

ping不到127.0.0.1

主要是 lo 設備的問題
可以試著
ifconfig lo 127.0.0.1

盜連防止

參考:【求助】Bot - 第2頁 - WordPress歡樂正體中文交流所
參考:http://blog.ijliao.info/archives/2006/05/30/2318/

2008-05-16

shell script(BASH)的使用注意事項

Author:kawsing 2004/03/06

觀念
執行script時,預設使用子shell,若要在原shell執行,要使用
.
script檔 或 source script檔
子shell會繼承父shell的環境變數,不會繼承父shell的變數


設定變數
變數=變數值


設定環境變數
變數=變數值;export 變數
export
變數=變數值
declare -x 變數=變數值


取用變數
一般
$變數
周圍有字
abc${變數}def



清空變數
1.變數=
2.unset 變數(函數)


設定陣列
直接指定
a[0]=1
a[1]=2
a[2]=3
函數指定
a=(1
2 3)
以字串為索引
a["bash"]="字串索引"


取用陣列元素
${a[0]}
${a["bash"]}


一組的命令
開子shell
(command1;command2;command3;...)
原shell執行
{
command1;command2;command3;... }
***{}的左右要有空白***


連續的命令
command1;command2;command3==>連續執行命令
command1
&& command2 && command3==>一個命令成功才執行下一個
command1
command2 command3==>一個命令不成功才執行下一個


一些特殊字元
\b 後退

\f 跳頁

\n 換行字元

\r return

\t TAB


進階的變數設定
result=${str:-value}
str=非空
result=str
str=
result=value


result=${str:=value}
str=
result=value同時str=value


result=${str:?msg}
str=非空
result=str
str=
顯示錯誤訊息msg


result=${str:+value}
str=非空
result=value
str=
不做取代


截取變數
r="/usr/local/bin/sftp"
path=${r##*/}
path=sftp


path=${r#*/}
path=usr/local/bin/sftp


path=${r%%/*}
path=


path=${r%/*}
path=/usr/local/bin


eval兩次掃描命令
n="兩次代換變數"





str=$n
eval echo \$$str
顯示-->兩次代換變數


一些觀念
cat < text==>將鍵盤輸入改由text檔案提供
cat
text==>顯示text檔案內容
[ab]==>ab任一字元
[!ab]==>非a非b的其他任一字元,注意,在正規表示式中,以^表非,[^A-Z]表非大寫字母
`命令`=$(命令)==>執行命令(命令代換)
back
slash(\)==>跳脫符號
$?==>用來存判斷後的傳回值,0是真,非0是假


正規表示式(Regular Expressions)
意義:一種描述,表示某種樣式某些樣式的組合
樣式寫法:
.==>任一字元
\==>跳脫字元
^==>表一列的開頭
$==>表一列的結尾
*==>任何字元
[]==>[abc]表a或b或c
\{
\}==>指定保留的個數
\( \)==>保留符合的部分
\1==>位置參數


sed指令
格式:sed '樣式' 檔案
意義:一種非交談式串流編輯語言
//在sed中表示搜尋
例子:
sed
'1,4d' file
sed '/[0-9]\{3\}/d' file==>把含有3個數字的列刪除
sed '/^$/d'
file
sed '/abc/p' file==>將有abc的列顯示出,但不符合的也會顯示
sed -n
'/abc/p' file==>將有abc的列顯示出,但不符合的不會顯示(-n 不秀出全部)
sed
-n 's/abc/def/p' file==>將有abc的列取代成def,並只會取代一列
sed -n 's/abc/def/gp'
file==>將有abc的列全部取代成def(g是全部)
sed -n 's/abc//p' file==>將有abc的列的abc刪除
sed
-n 's/^...//' file==>將每列的開頭三個字元去掉
sed -n 's/...$//' file==>將每列的結尾三個字元去掉
sed
-n 's/\(abc\)/\1def/p' file==>把\(abc\)保留在\1中,並作取代
sed -n '/AAA/s/abc/def/p'
file==>搜尋有AAA的列,將其中的abc取代成def
sed -n '/AAA/,/DDD/s/abc/def/p'
file==>搜尋有AAA直到DDD的列,將其中的abc取代成def
sed -n '2,5s/abc/def/p'
file==>取代2-5列


awk指令
格式:awk '樣式' file==>顯示符合樣式的列
awk
'{動作}' file==>對每一列執行{}中的動作
awk
'樣式{動作}' file==>符合樣式的列執行{}中的動作
意義:此指令用於處理資料並產生報告
例子:
awk
'/abc/' file
awk '{ print $1,$2 }' file
awk '/abc/{ print $1,$2 }' file
awk
-F: '/kawsing/{ print $1,$3,$5 }' /etc/passwd(-F 指定分隔符號)
awk -F: 'BEGIN{
OFS="+++" }/kawsing/{ print $1,$3,$5 }' /etc/passwd(BEGIN指定開始的動作,OFS設定分隔符號)


算數運算
m=4+5
echo $m的結果顯示4+5,視為字串
所以,在Bash shell中使用算數運算,要一下面四種方法進行:



  1. expr(外部指令)
    m=`expr 4 + 5`
    m=`expr 4 \* 5`
    m=`expr
    $m + 1`
    不能運算乘冪羽求餘數(%)

  2. $(())
    m=$(( 4 ** 5 ))==>4的5次方
    m=$(( $m + 1 ))
    m=$(( 5
    % 4 ))

  3. $[]
    m=$[ 4 \* 5 ]
    m=$[ 4 ** 5 ]
    m=$[ m + 1 ]

  4. let(內建指令)
    let m=m+1(注意與上面的不同處,無空白$跳脫)
    let
    m=4+5
    let m=4**5


位置參數
Bash shell可以傳遞參數,使用位置參數
$0==>script檔案本身
$1~$9==>檔案的9個參數
$10==>$1加上0,$1是A,則$10就是A0
$#==>參數總數
$*==>所有參數,但"$*"="ABCDEFGHI"
$@==>所有參數,但"$@"="A"
"B" "C" "D" "E" "F" "G"
"H" "I"
shift==>向左移動參數
set==>重設參數,set
a b c d將參數重設為$1=a,$2=b...


運算子(operator)
數字判斷
-eq
-ne
-ge
-le
-gt
-lt
((
"3" > "2"))==>可用><=比較數字
字串判斷
=與==
string1與string2相同
> string1排序大於string2==>[
"string1" \> "string2" ] \>去掉>的特殊意義
<
!=
-n
string長度不為0
-z string長度為0,即空字串
邏輯判斷
-a==>且
-o==>或
!==>非
檔案判斷
-a
檔案存在
-b 檔案存在且是block檔
-c 檔案存在且是character檔
-d 檔案存在且是目錄
-e
檔案存在
-f 檔案存在且是正規檔
-g 檔案存在且是set-gid
-h 檔案存在且是符號連結檔
-k
檔案存在且sticky位元已設定
-p 檔案存在且是FIFO
-r 檔案存在且可讀
-s
檔案存在且大小大於0
-t fd 檔案代碼 fd 已開啟且連接到一個終端機
-u 檔案存在且uid位元已設定
-w
檔案存在且可寫
-x 檔案存在且可執行
-O 檔案存在且被有效的使用者id所擁有
-G
檔案存在且被有效的群組id所擁有
-L 檔案存在且是符號連結檔
-S 檔案存在且是socket
-N
檔案存在且自它上次被讀取之後已被修改過
-nt newer than
-ot older than
-ef
有相同的設備和 inode 編號


流程控制
選擇結構
if
[ 條件式 ]; then
command...
elif [ 條件式 ];then
command...
else
command...
fi


case 變數 in
s1)command...
;;
s2)command...
;;
s3)command...
;;
*)command...
esac


重複結構--迴圈
for:
(1)
for 變數 in
範圍
do
command...
done
(2)
for (( i=0; i<5; i++ ))
do
command...
sleep
sec==>可延遲sec秒後執行下一迴圈
done


while [ 條件式(真) ];then
do
command...
done


until [ 條件式(假) ]; then
do
command...
done


函式
function func(){
command...
}
function
func{}
func(){}
執行函式
func



函式傳遞參數
function func(){
echo $1
}
func
"hello"==>此hello就是$1
函式內部有使用其它變數,您不想讓此變數和外界相同的變數相互影響,可使用 local 這個關鍵字來宣告它
function
localvar(){
local A
local B
}
A="haha"
B=35
變數同名但不相干


select選單
select 變數 in *; do
if
[ -z $變數值 ]; then
break
fi
echo
"你選擇$變數值(you choose $REPLY)"
done



原始來源:shell script(BASH)的使用注意事項

Linux 基本指令

Linux 基本指令

Flashplay10的一些demo



請看:http://labs.adobe.com/technologies/flashplayer10/demos/

文件上傳成敗關鍵的幾點php.ini配置

php.ini裡
查找 max_execution_time默認是30秒.改為
max_execution_time = 0

0表示沒有限制另一種方法是可以在php程序中加入set_time_limit();

改 post_max_size 設定 POST 數據所允許的最大大小。此設定也影響到文件上傳。php默認的post_max_size 為2M.如果 POST 數據尺寸大於 post_max_size $_POST 和 $_FILES superglobals 便會為空.
改為
post_max_size = 150M


3. 還要改一個參數upload_max_filesize 表示所上傳的文件的最大大小。
為8M
改為
upload_max_filesize = 100M


ps:聽說post_max_size 大於 upload_max_filesize 為佳.

參考連結:文件上傳成敗關鍵的幾點php.ini配置_見證我的成長_PHPChina 開源社區門戶 - powered b

2008-05-14

shell - 用date获得前一天的日期 - Shell - Linux教程

shell - 用date获得前一天的日期 - Shell - Linux教程

[Linux]取得每月最後一天的Shell Script

[Linux]取得每月最後一天的Shell Script

linux環境變數設定檔預設值

全體使用者環境變數設定:(只有 root 可以修改)
全體使用者環境變數設定檔位於 /etc/profile


個人環境變數設定:(開放使用者可自行修改)
個人環境變數設定,顧名思義這是使用者自行更改環境變數的方法,系統管理者無須偏勞。 習慣上每一個使用者的家目錄都不會一樣,習慣上都應該位於 /home 下面,以 test 這個使用者為例, test 的家目錄習慣上應該位於 /home/test 。每一個使用者家目錄下應該都會有個 隱藏的檔案 ~/.bashrc,請 「ls -la ~/」。而這個檔案就是個人的「個人環境變數設定檔」, 設定作法同「全體使用者環境變數設定檔」 一樣都是直接編輯該檔案


參考連結:撰寫環境變數設定檔

2008-05-13

ADSL(PPPOE)接入指南

ADSL(PPPOE)接入指南

apt-get 的更新套件

su -
#先將自己的身份變成 root
apt-get update;apt-get dist-upgrade
#開始更新軟體

參考連結:套件更新
參考連結2:修改 Ubuntu 8.04 的 sources.list 成台灣的主機

Linux 多個ADSL 合併方式

配置多個ADSL 

運行adsl-setup程序,會一步一步的提示你完成配置過程.

創建ppp0

(1)直接拷貝
cp /etc/sysconfig/network-scripts/ifcfg-ppp0 /etc/sysconfig/network-scripts/ifcfg-ppp1

(2)修改其中的ppp0為ppp1,

修改PIDFILE=/var/run/pppoe-adsl.pid 為PIDFILE=/var/run/pppoe-adsl1.pid
修改採用的新接線路的網卡,例如:改ETH=eth1 為ETH=eth2


(3)增加新線路的帳號和密碼. 帳號密碼一般是保存在/etc/ppp/chap-secrets 和pap-secrets

我們只需要在最後增加新的用戶名2和密碼2即可.


啟動多個ppp

因為adsl-start 命令缺省只能啟動第一的ppp接口。所以要啟動兩個接口,必須指定配置文件。

可以用:
方法一:
ifup ppp0
ifup ppp1
(ifup pppn...)

或方法二:

adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp0
adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp1
(adsl-start /etc/sysconfig/network-scripts/ifcfg-pppn)

在 /etc/rc.local 後面增加:

ifup ppp0

ifup ppp1

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp1 -j MASQUERADE

ip route replace default scope global nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1

ip route flush cache





參考連結:寂雨(&$^#@*!~)|在Linux下配置多線路ADSL的方法


另一個方法:【轉】雙adsl鏈路冗餘互備及流量分擔的實現

Linux 的 BONDING 可以用來合併頻寬

Linux 的 BONDING 可以用來合併頻寬
參考連結:|聯成電子報 第十一期 2006年07月|講師專欄 Linux

2008-05-12

擴充 yum 的內含

擴充 yum 的內含
yum內含套件只有基本必要套件而已 (如. proftpd...就不在yum中),所以我們可以透過設定 [RPMforge] 來增加套件數量。
執行安裝 [RPMforge] 套件
#rpm -Uhv
http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm




參考連結:Weithenn Study Daily: CentOS 5.1-初始環境設定:

iptables -L -vn

iptables -L -vn
"-L" 參數列出鏈中的規則, 因為沒有指定鏈名, 所以預設列出 filter 鏈的規則
"-v" 參數將顯示完整的資訊, 以便觀察傳輸量統計的狀況, 一般不使用"-v "參數時, 只會顯示如來源位址等簡要的資訊
"-n" 參數設定 iptables 不要將 IP 反查為網域名稱



原始連結:旗標知識網:如何使用 iptables 統計傳輸量

knownhost 的 vps 如何使用 port 轉向

將 port:8080 轉到 port:10000
在knownhost 的vps 測試多次,底下的用法才能使用
iptables -t nat -A PREROUTING -p tcp -i venet0 --dport 8080 -j DNAT --to-destination 67.222.10.12(實體ip):10000
以下用法,是失敗的
iptables -t nat -A PREROUTING -p tcp -i venet0 --dport 8080 -j DNAT --to-destination 0.0.0.0:10000
iptables -t nat -A PREROUTING -p tcp -i venet0 --dport 8080 -j DNAT --to-destination 127.0.0.1:10000



參考連結:IPTABLES: DNAT port 1433 - LinuxQuestions.org

vps的iptable如何使用venet0:0

在 linux 的 venet0:0 是模擬出來的。

if venet0:0 is 192.168.1.1
change:
/sbin/iptables -A OUTPUT -o venet0:0 -m state --state NEW -j ACCEPT
to:
/sbin/iptables -A OUTPUT -o venet0 -s 192.168.1.1 -m state --state NEW -j ACCEPT


原文連結:Iptables error: weird character in interface `venet0:0' - VPSlink Forums

2008-05-09

如何在godaddy的name server 中使用自已的ip

主要在 host Summary 加入 ip ,然後在 Name Servers 中 加入 Summary 中的 domain ,就可以了

原文:
You are not required to register hosts, but if you intend to set up your own Domain Name Server (DNS) service, you can register your own hosts.
WARNING: Unless you have a thorough understanding of this process, we recommend that you do not use this feature.
To Register Your Own Hosts
Log in to your Account Manager.
In the My Products section, click Manage Domains.
Click the domain for which you want to create a host.
In the Host Summary area at the bottom of the page, click the add hyperlink in the header.
In the Host Name field, enter the host name you want to register.
NOTE: Do not enter "www" as your host name.
In the Host IP fields, enter the IP address(es) you want to add to the host.
Click OK.
It takes 4 to 8 hours to register hosts for .COM and .NET domains and 24 to 48 hours for all other domain extensions.

原文連結 >>Registering Your Own Nameservers - Help Center—Knowledge Base and FAQ