利用 javascript 嵌入 flv 影片至網頁
所以我貼圖好了= =a
裡面的播放畫面會用到 mediaplayer.swf
js檔案會用到 swfobject.js
我通通上傳到 http://www.mediafire.com/?jhzgya3xbs0 方便大家下載回去使用
code很簡單,看不懂的話再問吧
OpenOffice3.0beta,台灣高速下載點
來義守大學速度快些,差不多你的網路有多快下載就有多快
http://ftp.isu.edu.tw/pub/OpenOffice/extended/
http://ftp.isu.edu.tw/pub/OpenOffice/extended/3.0.0beta/OOo_3.0.0beta_20080429_Win32Intel_install_wJRE_zh-TW.exe
順便附上3.0beta的連結~~
VI的使用重點
下面很多可以看,但是助益最大的一句話是!
「ESC :沒事多按逃脫鍵,有益身體健康。」
自從看到這句話之後我的vi速度變快了...
一。從命令到編輯模式
a :將游標放到目前游標後一個字元,開始文字編輯模式。insert
i :將游標放在目前游標位置,開始文字編輯模式。append
o :將游標放到下一行起始位置,開始文字編輯模式。open new line
比較常用就是i,a,o,I,A,O了,將來多試幾次就好了,就很熟悉了。
二從編輯到命令
ESC :沒事多按逃脫鍵,有益身體健康。
三命令模式中的其他命令
在命令模式中的按鍵就很多了,這些需要好好熟練一下了。
在vi命令模式裡面,有的按鍵按完後他還是在命令模式,有的改個字元或copy/paste後
又回到命令模式,有的就一去不回頭變成文字編輯模式了。
有些按鍵會把你原本想改的內容做特殊的定位,例如要改個word,也會把你帶離命令模式
檔案
:q 離開vi
:e xxxx 編輯xxxx
:w 存檔
:w xxxx 另存檔案xxxx
:q! 不存檔強迫離開
:w! 強迫存檔
:wq 存檔與離開
游標移動
h,j,k,l 往左,往下,往上,往右
0 到行首
$ 到行尾
^ 到這行的第一個非空白字元
w,W 到下個字, 到下個非空白的字
b,B 回上個字, 到上個非空白的字
e,E 到這個字的字尾, 到下個非空白的字字尾
Ctrl-F ,Ctrl-B 往後一頁,往前一頁
G 到檔尾
:n 到第n行 (所以到檔頭就是:1)
Ctrl-G 顯示第幾行
J 合併兩行
搜尋與取代
/
/pattern 尋找pattern
?pattern 往上尋找pattern
n 再往下尋找
N 再往上尋找
:s/patrn/str/cgi搜尋patrn取代str
其中:跟s間必需指定範圍(range)沒設範圍就是游標這行
1,10 表示 1-10行
% 表示整篇
最後cgi
c 表示confirm尋問
g 表示global全部
i 表示ignore不分大小寫
常用字元字串處理
cc 改變整行
dd 砍掉整行
yy 拷貝整行(yank whole line)
p,P 貼上(paste) 你最近砍掉或拷貝的
cw 改變一個字
d$ 砍到行尾
ye 拷貝到這個字尾
r,R 取代一個字元, 取代整行
u,U undo 最後修改,UNCHANGE整行
x,X 砍一個字元, 往回砍個字元(等於按backspace)
重複的處理
. 重複剛剛的命令或輸入
這些試試看
ce, 3x, 5dd, 10w, d0, y$, 5G
indentation
>> 往右一個indent
<< 往左一個indent
vim的多檔與多窗
:e xxx 編輯xxx
:buffers 列出所有編輯檔
:bn n是數 b1 b2 b3....表是開第n個buffer
:bdn n是數:bd1 :bd2 表示殺掉第n個buffer
:new 一個水平新窗
:vnew 開個垂直新窗
:only 只留一個窗窗
C-w j k h l 移到下 上 左 右 窗去
轉自
http://www.study-area.org/cyril/opentools/opentools/x62.html
函式指標,借由傳入不同的參數達到不同的功用
/*main.c*/
#include
#include "stdlib.h"
#include "sort.h"
int main(void) {
int number1[] = {3, 5, 1, 6, 9};
sort(number1, 5, larger);
printf("大的在前 ");
int i;
for(i = 0; i < i =" 0;" t =" *a;" a =" *b;" b =" t;"> b;
}
int smaller(int a, int b) {
return a < flag =" 1;" i =" 0;" flag ="="" flag =" 0;" j =" 0;" flag =" 1;" t =" *a;" a =" *b;" b =" t;"> b;
}
int smaller(int a, int b) {
return a < b;
}
void sort(int* arr, int length, CMP compare) {
int flag = 1;
int i, j;
for(i = 0; i < length-1 && flag == 1; i++) {
flag = 0;
for(j = 0; j < length-i-1; j++) {
if(compare(arr[j+1], arr[j])) {
swap(arr + j + 1, arr + j);
flag = 1;
}
}
}
}
struct結構與struct當作函數參數傳遞 by reference
#include
typedef struct {
char color[10];
double radius;
} Ball;
void foo(Ball*);
int main(void) {
Ball ball = {"red", 5.0};
foo(&ball);
printf("ball: %s,\t%.2f\n", ball.color, ball.radius);
system("pause");
return 0;
}
void foo(Ball *ball) { // ball 成員值被複製過來
ball->radius = 100.0;
}
Ports更新
cd /usr/ports/net/cvsup-without-gui
make install clean
cp /usr/share/examples/cvsup/ports-supfile /root/
vi /root/ports-supfile
*default host=cvsup.tw.freebsd.org
cvsup -g -L 2 /root/ports-supfile
建議在做更新之前先把/etc/make.conf裡面的站台位置換成台灣的網站
這樣會快很多很多
magicallove# cat /etc/make.conf
# added by use.perl 2008-05-07 13:55:22
PERL_VER=5.8.8
PERL_VERSION=5.8.8
# Port master sites.
#
# If you want your port fetches to go somewhere else than the default
# (specified below) in case the distfile/patchfile was not found,
# uncomment this and change it to a location nearest you. (Don't
# remove the "/${DIST_SUBDIR}/" part.)
#
MASTER_SITE_BACKUP?= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp5.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp10.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp4.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp7.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp11.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp12.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
#
# If you want your port fetches to check the above site first (before
# the MASTER_SITES specified in the port Makefiles), uncomment the
# line below. You can also change the right side to point to wherever
# you want.
#
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
#
就是這樣啦,把/etc/make.conf裡面的內容加入上面那幾個吧!
真的會快很多
Scp使用範例-安全又簡單的遠端複製指令
scp -r ID@xxx.xxx.xxx.xxx:/home/ID/ ./
scp -r ./ ID@xxx.xxx.xxx.xxx:/home/ID/
-r 遞迴複製遠端路徑底下的所有資料,包含子資料夾
ID 要登入的遠端機器的帳號,如同 ssh 登入一樣,你只能複製這個 ID 可以讀取的資料
xxx.xxx.xxx.xxx 遠端的 ip,後面一定要記得接上冒號之後再接絕對位置
最後面是本地端路徑
如同 cp 指令一樣,只要將前後兩邊的路徑對調一下就可以變成複製到遠端了
DNS新手架設教學
>1.
cat /etc/named/named.conf
//設定要正解的網域是ncku.edu.tw, DNS 伺服器類型是master(另一種是slave)
//並且到 master 資料夾裡面的 naku.edu.tw.rev 找 ncku.edu.tw 的設定
zone "ncku.edu.tw" {
type master;
file "master/ncku.edu.tw.rev";
};
//設定要反解的ip範圍是140.116.250.*, DNS 伺服器類型是master(另一種是slave)
//並且到 master 資料夾裡面的 140.116.250.rev 找反解設定
//注意!我們有整個class C的網域(140.116.250.*),其他反解寫法不管,反正用不到
zone "250.116.140.in-addr.arpa" {
type master;
file "master/140.116.250.rev";
};
named.conf 裡面會有很多範例,那些範例是我們不能直接使用的...
>2.
vi /etc/manedb/master/140.116.250.rev
加入以下兩行
30 IN PTR forum.ccns.ncku.edu.tw.
26 IN PTR magicallove.ccns.ncku.edu.tw.
>3.
vi /etc/namedb/master/ncku.edu.tw.rev
加入以下兩行
forum.ccns IN A 140.116.250.30
magicallove.ccns IN A 140.116.250.26
>4.ps -aux|grep named
找出named的程序
例如:bind 81173 0.0 0.1 4920 3668 ?? Ss 接下行
8:00PM 0:00.19 /usr/sbin/named -t /var/named -u bind
然後kill 81173,砍掉目前的named(我考慮了很久到底要不要把cat開啟的bind砍掉 怕死)
再輸入指令重新開啟BIND這支程式 /etc/rc.d/named start
我不知道為什麼輸入/etc/rc.d/named restart沒有效果
另外,在 /etc/resolv.conf 裡面
domain ccns.ncku.edu.tw
nameserver 163.28.112.1
nameserver 163.28.113.1
nameserver 168.95.1.1
還不太清楚這個檔案是做啥用的,不過應該有很大用途!待釐清= =
Sudo 安裝與簡單設定
Sudo 可以讓 wheel 群組的使用者在被列入可以變身為 root 名單後
利用自己的密碼變身為sudo
對於管理來說實在非常方便!
安裝了sudo喔
安裝過程如下,簡單的很~~
su
變身為 root ,這樣才能安裝軟體喔!
whereis sudo
/usr/ports/security/sudo
如果你已經知道 sudo 放哪裡的話當然可以不用這個步驟
cd /usr/ports/security/sudo
make install clean
移動到該目錄下,直接用第二行指令安裝
visudo
編輯可以使用 sudo 這個指令變身 root 的名單,怎麼寫也很簡單
我節錄如下
# User privilege specification
root ALL=(ALL) ALL
mXXXXXXXXXX ALL=(ALL) ALL
rXXXXX9 ALL=(ALL) ALL
也就是說 magciallove renn999 可以變身為 root
至於後面除了接ALL=(ALL) ALL之外,還可以接什麼參數我也不曉得。
不過應該這樣就夠用了
rehash
這行到底做了什麼事情我也不太確定,不過安裝了軟體之後
如果有新的指令就要跑一下這 rehash ,應該是把執行檔路徑加進去吧
搞定
批次壓縮解壓tar系列的ShellScript
批次解壓:
#!/bin/sh
for unzipfile in $(ls *.tgz)
do
tar -zxf $unzipfile
echo "$unzipfile done!"
rm $unzipfile
done
====================
#!/bin/sh
這一行代表要使用的shell語言,最前面那個#不是註解掉這一行喔= =
for unzipfile in $(ls *.tgz)
.
.
done
這是個迴圈,會將 in 後面接的 list 傳到 unzipfile 作為變數使用
這邊寫上unvipfile其實就可以當做你在宣告這個變數了
這裡用的 list 是(ls *.tgz)
動作是列出與這個 shell 同一個路徑下的所有 .tgz 檔案
並將其檔名一次一個放到 unzipfile 裡面。
tar -zxf $unzipfile
解壓縮檔案,這行如果看不懂就去辜狗tar吧...
$unzipfile,這個是要被解壓縮的檔名,變數要使用時要加上 $ 符號
echo "$unzipfile done!"
這行純粹是讓使用者看到目前進行到哪個檔案了
rm $unzipfile
解壓縮完後刪除該壓縮檔
====================
批次壓縮:
#!/bin/shfor zipfile in $(ls)
do tar -czf $zipfile.tgz $zipfile
echo "$zipfile done!"
rm -r $zipfile
done
====================btw
你可以用 vi 或者任何你喜歡的編輯器輸入上面的 script 例如:
vi unzipfile.sh#!/bin/sh
for unzipfile in $(ls *.tgz)
do
tar -zxf $unzipfile
echo "$unzipfile done!"
rm $unzipfile
done
:wq
執行方法有兩種
1.sh < unzipfile.sh
把這個 script 丟給 sh 執行
2.chmod a+x unzipfile.sh
./unzipfile.sh
把這個script變為可執行,然後直接執行他
Netstat 欄位說明
netstat -na
-n 將ip以數字顯示,而不以dns查名稱,這樣會快很多!
-a 除了已連結的port外,一併列出監聽中的port,可以觀察一下有沒有奇怪的port被打開= =
各參數意義如下
CLOSED 表示插槽沒被使用。
LISTENING 表示正在監聽進入的連接。
SYN_SENT 表示正在試著建立連接。
SYN_RECEIVED 進行連接初始同步。
ESTABLISHED 表示連接已被建立。
CLOSE_WAIT 表示遠程計算機關閉連接,正在等待插槽的關閉。
FIN_WAIT_1 表示插槽關閉,正在關閉連接。
CLOSING 先關閉本地插槽,然後關閉遠程插槽,最後等待確認信息。
LAST_ACK 遠程計算機關閉後,等待確認信號。
FIN_WAIT_2 插槽關閉後,等待來自遠程計算機的關閉信號。
TIME_WAIT 連接關閉後,等待遠程計算機關閉重發。
CLOSED ---- Closed. The socket is not being used.
LISTEN ---- Listening for incoming connections.
SYN_SENT ---- Actively trying to establish connection.
SYN_RECEIVED ---- Initial synchronization of the connection under way.
ESTABLISHED ---- Connection has been established.
CLOSE_WAIT ---- Remote shut down; waiting for the socket to close.
FIN_WAIT_1 ---- Socket closed; shutting down connection.
CLOSING ---- Closed, then remote shutdown; awaiting acknowledgement.
LAST_ACK ---- Remote shut down, then closed ;awaiting acknowledgement.
FIN_WAIT_2 ---- Socket closed; waiting for shutdown from remote.
TIME_WAIT ---- Wait after close for remote shutdown retransmission.
netstat -I rl0(這一個參數是你的網路卡代號!你的不一定跟我的一樣!而且要注意,1和 l 不好分辨= =)
>netstat -I rl0
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
rl0 1500 00:02:44:59:d6:be 205831 0 231610 0 0
rl0 1500 140.116.250/2 she911 137997 - 231609 - -
網路卡代號可以用ifconfig查看
>ifconfig
rl0: flags=8843mtu 1500
通常第一個裝置就是你的網路卡了
支援utf8和big5的ftp站台
ftp/pure-ftpd 是你最好選擇啊 :p
因為有 jnlin 大神寫的 patch,所以現在支援 RFC 2640 了
你可以看到 pure-ftp.conf 有這一行
# UTF-8 support for file names (RFC 2640)
# Define charset of the server filesystem and optionnally the default charset
# for remote clients if they don't use UTF-8.
# Works only if pure-ftpd has been compiled with --with-rfc2640
FileSystemCharset utf-8
ClientCharset big5
如果 client 用的是 filezilla 懂得 utf-8 的軟體,他就會吐 utf-8 給 client
不懂的話,就會幫你轉成 big5
=====================
建議先cvsup更新pure-ftp到最新版 因為6.2裡面預設的好像沒有這個功能(不確定啦= =) 如何使用cvsup更新port,在"FreeBSD 6.0架設管理與應用",有詳細的說明。不難
簡易安裝步驟如下
- cd /usr/ports/ftp/pure-ftpd/
- make install clean
我用p3 667M的CPU編譯安裝花了約半小時,學網下載很快,網路下載時間略過。
=====================
安裝後的設定檔位於
/usr/local/etc
/usr/local/etc/rc.d
詳細設定方法還在研究ing...
=====================
pure-ftpd.conf.sample
############################################################
# #
# Configuration file for pure-ftpd wrappers #
# #
############################################################
# If you want to run Pure-FTPd with this configuration
# instead of command-line options, please run the
# following command :
#
# /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
#
# Please don't forget to have a look at documentation at
# http://www.pureftpd.org/documentation.shtml for a complete list of
# options.
# Cage in every user in his home directory
ChrootEveryone yes
# If the previous option is set to "no", members of the following group
# won't be caged. Others will be. If you don't want chroot()ing anyone,
# just comment out ChrootEveryone and TrustedGID.
# TrustedGID 100
# Turn on compatibility hacks for broken clients
BrokenClientsCompatibility no
# Maximum number of simultaneous users
MaxClientsNumber 50
# Fork in background
Daemonize yes
# Maximum number of sim clients with the same IP address
MaxClientsPerIP 8
# If you want to log all client commands, set this to "yes".
# This directive can be duplicated to also log server responses.
VerboseLog no
# List dot-files even when the client doesn't send "-a".
DisplayDotFiles yes
# Don't allow authenticated users - have a public anonymous FTP only.
AnonymousOnly no
# Disallow anonymous connections. Only allow authenticated users.
NoAnonymous no
# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
# The default facility is "ftp". "none" disables logging.
SyslogFacility ftp
# Display fortune cookies
# FortunesFile /usr/share/fortune/zippy
# Don't resolve host names in log files. Logs are less verbose, but
# it uses less bandwidth. Set this to "yes" on very busy servers or
# if you don't have a working DNS.
DontResolve yes
# Maximum idle time in minutes (default = 15 minutes)
MaxIdleTime 15
# LDAP configuration file (see README.LDAP)
# LDAPConfigFile /etc/pureftpd-ldap.conf
# MySQL configuration file (see README.MySQL)
# MySQLConfigFile /etc/pureftpd-mysql.conf
# Postgres configuration file (see README.PGSQL)
# PGSQLConfigFile /etc/pureftpd-pgsql.conf
# PureDB user database (see README.Virtual-Users)
# PureDB /etc/pureftpd.pdb
# Path to pure-authd socket (see README.Authentication-Modules)
# ExtAuth /var/run/ftpd.sock
# If you want to enable PAM authentication, uncomment the following line
# PAMAuthentication yes
# If you want simple Unix (/etc/passwd) authentication, uncomment this
# UnixAuthentication yes
# Please note that LDAPConfigFile, MySQLConfigFile, PAMAuthentication and
# UnixAuthentication can be used only once, but they can be combined
# together. For instance, if you use MySQLConfigFile, then UnixAuthentication,
# the SQL server will be asked. If the SQL authentication fails because the
# user wasn't found, another try # will be done with /etc/passwd and
# /etc/shadow. If the SQL authentication fails because the password was wrong,
# the authentication chain stops here. Authentication methods are chained in
# the order they are given.
# 'ls' recursion limits. The first argument is the maximum number of
# files to be displayed. The second one is the max subdirectories depth
LimitRecursion 2000 8
# Are anonymous users allowed to create new directories ?
AnonymousCanCreateDirs no
# If the system is more loaded than the following value,
# anonymous users aren't allowed to download.
MaxLoad 4
# Port range for passive connections replies. - for firewalling.
# PassivePortRange 30000 50000
# Force an IP address in PASV/EPSV/SPSV replies. - for NAT.
# Symbolic host names are also accepted for gateways with dynamic IP
# addresses.
# ForcePassiveIP 192.168.0.1
# Upload/download ratio for anonymous users.
# AnonymousRatio 1 10
# Upload/download ratio for all users.
# This directive superscedes the previous one.
# UserRatio 1 10
# Disallow downloading of files owned by "ftp", ie.
# files that were uploaded but not validated by a local admin.
AntiWarez yes
# IP address/port to listen to (default=all IP and port 21).
# Bind 127.0.0.1,21
# Maximum bandwidth for anonymous users in KB/s
# AnonymousBandwidth 8
# Maximum bandwidth for *all* users (including anonymous) in KB/s
# Use AnonymousBandwidth *or* UserBandwidth, both makes no sense.
# UserBandwidth 8
# File creation mask.: .
# 177:077 if you feel paranoid.
Umask 133:022
# Minimum UID for an authenticated user to log in.
MinUID 100
# Allow FXP transfers for authenticated users.
AllowUserFXP no
# Allow anonymous FXP for anonymous and non-anonymous users.
AllowAnonymousFXP no
# Users can't delete/write files beginning with a dot ('.')
# even if they own them. If TrustedGID is enabled, this group
# will have access to dot-files, though.
ProhibitDotFilesWrite no
# Prohibit *reading* of files beginning with a dot (.history, .ssh...)
ProhibitDotFilesRead no
# Never overwrite files. When a file whoose name already exist is uploaded,
# it get automatically renamed to file.1, file.2, file.3, ...
AutoRename no
# Disallow anonymous users to upload new files (no = upload is allowed)
AnonymousCantUpload no
# Only connections to this specific IP address are allowed to be
# non-anonymous. You can use this directive to open several public IPs for
# anonymous FTP, and keep a private firewalled IP for remote administration.
# You can also only allow a non-routable local IP (like 10.x.x.x) to
# authenticate, and keep a public anon-only FTP server on another IP.
#TrustedIP 10.1.1.1
# If you want to add the PID to every logged line, uncomment the following
# line.
#LogPID yes
# Create an additional log file with transfers logged in a Apache-like format :
# fw.c9x.org - jedi [13/Dec/1975:19:36:39] "GET /ftp/linux.tar.bz2" 200 21809338
# This log file can then be processed by www traffic analyzers.
# AltLog clf:/var/log/pureftpd.log
# Create an additional log file with transfers logged in a format optimized
# for statistic reports.
# AltLog stats:/var/log/pureftpd.log
# Create an additional log file with transfers logged in the standard W3C
# format (compatible with most commercial log analyzers)
# AltLog w3c:/var/log/pureftpd.log
# Disallow the CHMOD command. Users can't change perms of their files.
#NoChmod yes
# Allow users to resume and upload files, but *NOT* to delete them.
#KeepAllFiles yes
# Automatically create home directories if they are missing
#CreateHomeDir yes
# Enable virtual quotas. The first number is the max number of files.
# The second number is the max size of megabytes.
# So 1000:10 limits every user to 1000 files and 10 Mb.
#Quota 1000:10
# If your pure-ftpd has been compiled with standalone support, you can change
# the location of the pid file. The default is /var/run/pure-ftpd.pid
#PIDFile /var/run/pure-ftpd.pid
# If your pure-ftpd has been compiled with pure-uploadscript support,
# this will make pure-ftpd write info about new uploads to
# /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and
# spawn a script to handle the upload.
#CallUploadScript yes
# This option is useful with servers where anonymous upload is
# allowed. As /var/ftp is in /var, it save some space and protect
# the log files. When the partition is more that X percent full,
# new uploads are disallowed.
MaxDiskUsage 99
# Set to 'yes' if you don't want your users to rename files.
#NoRename yes
# Be 'customer proof' : workaround against common customer mistakes like
# 'chmod 0 public_html', that are valid, but that could cause ignorant
# customers to lock their files, and then keep your technical support busy
# with silly issues. If you're sure all your users have some basic Unix
# knowledge, this feature is useless. If you're a hosting service, enable it.
CustomerProof yes
# Per-user concurrency limits. It will only work if the FTP server has
# been compiled with --with-peruserlimits (and this is the case on
# most binary distributions) .
# The format is ::
# For instance, 3:20 means that the same authenticated user can have 3 active
# sessions max. And there are 20 anonymous sessions max.
# PerUserLimits 3:20
# When a file is uploaded and there is already a previous version of the file
# with the same name, the old file will neither get removed nor truncated.
# Upload will take place in a temporary file and once the upload is complete,
# the switch to the new version will be atomic. For instance, when a large PHP
# script is being uploaded, the web server will still serve the old version and
# immediatly switch to the new one as soon as the full file will have been
# transfered. This option is incompatible with virtual quotas.
# NoTruncate yes
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
# including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.
# TLS 1
# Listen only to IPv4 addresses in standalone mode (ie. disable IPv6)
# By default, both IPv4 and IPv6 are enabled.
# IPV4Only yes
# Listen only to IPv6 addresses in standalone mode (ie. disable IPv4)
# By default, both IPv4 and IPv6 are enabled.
# IPV6Only yes
# UTF-8 support for file names (RFC 2640)
# Define charset of the server filesystem and optionnally the default charset
# for remote clients if they don't use UTF-8.
# Works only if pure-ftpd has been compiled with --with-rfc2640
# FileSystemCharset big5
# ClientCharset big5
內容如下,歡迎慢慢研究= =
[轉貼]安裝FreeBSD6.3 mysql+apache2+php4經驗
像標題這樣的裝法應該很多人很熟悉了,這裡把昨天安裝的經驗分享一下,或
許有大大可以指正,或者還在摸索的朋友可以參考。
6.3安裝完之後因為所有軟體我習慣從PORTS安裝,所以我習慣先更新一下PORTS
,更新步驟如下:
先安裝portupgrade與cvsup-withoutgui,然後去修改ports-supfile
#ee /usr/share/examples/ports-supfile
檔案裡把host指定改為: "tw.freebsd.org"
更新ports-tree:
#cd /usr/ports
#cvsup -L2 /usr/share/examples/ports-supfile
#portsdb -Uu (更新PORTS)
#
#pkgdb -F (check and fix package database)
#
#portupgrade -acCv (把已安裝的套件升級)
再來去PORTS安裝mysql,安裝完之後要經過下面程序才能啟動mysql:
1. 執行initial db script
#/usr/local/bin/mysql_install_db
2. 找到mysql提供的設定檔範例,拷貝到/etc檔名為my.cnf
3. 更改目錄擁有者
#cd /var/db
#chown -R mysql mysql
4. 啟動 mysql
#/usr/local/bin/safe_mysqld &
5. 更改 mysql root's password.
然後安裝Apache2,安裝完之後再安裝PHP4與PHP4-extension,安裝步
驟精華區裡好像都有。
安裝完之後PHP4會自動修改httpd.conf,但我看apache還是不能讀php
檔,所以我找了一下資料,把httpd.conf裡頭的php參數改為:
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
5. 更改 mysql root's password.
然後安裝Apache2,安裝完之後再安裝PHP4與PHP4-extension,安裝步
驟精華區裡好像都有。
安裝完之後PHP4會自動修改httpd.conf,但我看apache還是不能讀php
檔,所以我找了一下資料,把httpd.conf裡頭的php參數改為:
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
原來的參數好像沒有Handler字眼。
接著便是修改rc.conf讓這些軟體可以在開機時執行,我喜歡用webmin設
定比較方便,在剛裝好的freebsd裡面我會安裝lynx,再用lynx去
www.webmin.com下載新版webmin。
分享一下,前陣子記的
http://blog.pixnet.net/bojack/post/14064752
自從 FreeBSD 6.2 開始,系統就內建了 csup 這指令來更新 Ports,使用方法就和cvsup\
一模一樣,的確省去大幅時間在安裝 cvsup
要使用前記得搭配 /etc/make.conf 的設定喔 ( 如下 )
SUP_UPDATE=yes
SUP=/usr/bin/csup
SUPFLAGS=-g -L 2
SUPHOST=cvsup.tw.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
MASTER_SITE_BACKUP?= \
ftp://cvsup.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://cvsup2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://cvsup3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
安裝 Apache + PHP + MySQL
http://blog.pixnet.net/bojack/post/12983723
架設ftp,檔名有空白該怎麼更改檔名?
OS freeBSD6.2
ftp smbftpd 王俊斌改寫的那個
我開放匿名上傳
有人上傳的檔案名稱有空白鍵
而且因為我設定匿名上傳資料夾裡面的檔案disable_modify
所以沒有辦法透過ftp軟體修改檔名
我用ssh連線到主機想要改檔名,可是輸入rm BABY COME AROUND.MP3
可想而知,他會判斷成三個檔案= =
所以刪不掉
同時,BABY開頭的檔案又不只一個
也不能用rm BABY*的方法刪除
請問還有沒有其他辦法可以刪掉該檔案?
很巧!我剛剛輸入某個有空白的檔名前半部分(還沒有到有空白的地方)
也很巧這個檔案檔名跟其他都差很多
我用的是tcsh
所以當我按下tab時!電腦讓我知道...加入\(跳脫字元)就可以包含空白了
例如:rm 舞曲大帝國12-13-CLOUND 9.mp3
要寫成rm 舞曲大帝國12-13-CLOUND\ 9.mp3
自己解答了!也希望對其他人有幫助到!
安裝freeBSD硬碟掛載路徑太長,可以嗎?
安裝freeBSD時,如果掛載路徑太長例如:/home/ftp/iloveyou/youloveme
輸入確定之後在畫面上面看不到完整路徑
但是這沒關係
一樣可以正常掛載上去的!
進入single mode修正系統
進入單人模式時,會出現下列提示
Enter full pathname of shell of RETURN for /bin/sh:
(直接按 enter即可以 B shell進入單人模式)
必要時執行以下動作-
# fsck -p 檢查並修正檔案系統(preen filesystem)
# mount -u / 重新載入 / ,-u 代表改變為可讀可寫狀態
# mount -a -t ufs 載入所有 /etc/fstab有記錄、型態為 ufs的檔案系統
# swapon -a 開啟swap
# adjkerntz -i 讀取CMOS clock為當地時間,如果存在/etc/wall_cmos_clock,就參考時區設定,調整 kernel clock為UTC(格林威治時間)
可以參考這邊的東西
http://cu.ttc.edu.tw/wordpress/
蠻多的!
如何卸載swap!
要掛載成swap的硬碟分割區,必須是Linux swap(type 82)的類型。
掛載swap磁區
語法:
swapon <裝置名稱>
swapon -a
【範例1】
將/dev/hda2的swap磁區掛載。
swapon /dev/hda2
【範例2】
將所有的swap磁區掛載。
swapon -a
卸載swap磁區
語法:
swapoff <裝置名稱>
swapoff –a
【範例1】
將/dev/hda2的swap磁區卸載。
swapoff /dev/hda2
【範例2】
將所有的swap磁區卸載。
swapoff -a
假如有一顆只有分割出一個256MBswap空間的300G硬碟要割出另外要使用的分割曹
上面的意思就是說阿,要重新分割已經被分割過的硬碟前要先卸載上面的分割區
我的機器上面swap只有使用200k
不知道如果一台swap吃很大的機器卸載之後會怎麼樣= =
FreeBSD安裝在RAID上面,實做經驗!
freeBSD安裝在RAID上面,實做經驗!
使用的機器是ASUS TS300-E4 PA4
按照使用手冊上的步驟進入LSI Logic Embedded SATA RAID設定RAID1
過程都可以從使用手冊上找到。在此不說明。
設定完後會要求重新開機,此時再到BIOS設為RAID為開機裝置
我安裝的系統是freeBSD amd64版本
安裝方法可以參考http://www.twbsd.org/
amd64和一般的i386都一樣
但是要注意的地方如下說明!
設定RAID之後,安裝系統時候的硬碟裝置要選擇ar0或者ar1...之類開頭的硬碟裝置
其他ad(n)安裝會出問題。而且選下去的瞬間就會跳出磁區錯誤的訊息了
而且我安裝的機器有四顆硬碟,我只有設定其中兩顆為RAID1。
另外兩顆一般使用。
但是當我安裝過程中要設定掛載ad硬碟時,選下去的瞬間就會跳出硬碟磁區錯誤的警告訊息了
雖然電腦依然可以讓你安裝系統在沒有被設定RAID的硬碟,
不過就我的安裝經驗來說!
同時擁有RAID、和一般硬碟時,選擇一般硬碟都會出現磁區錯誤的訊息,也就是說只能安裝在RAID過的硬碟
因此,我將系統安裝在RAID1硬碟,另外的硬碟不在安裝系統時掛載,這樣就不會出錯了!
另外
如果我設定四顆硬碟為兩個RAID1邏輯硬碟,那麼當我安裝系統在選擇硬碟時,
我沒有辦法分辨出哪個ra(n)硬碟對應到哪組硬碟,
也就是說如果想要保留原本存放在RAID1上面的資料的話,就一定要先將那組硬碟拔下來
我的機器好像沒有辦法在開了RAID之後再到BIOS設定哪顆硬碟不要被偵測到
而且還有一點很奇怪的是!
當我將RAID1初始化之後,做兩顆硬碟資料比對的動作
它會馬上跳出資料不一致的訊息,而且是連0%都還沒跑完就跳出這個訊息了哦= =
這點很奇怪...不知道為什麼會這樣...
FreeBSD 安裝vim
【 FreeBSD vim 】
1. cd /usr/ports/editors/vim
2. make -DWITHOUT_X11 install clean # 安裝文字版的 vim
3. cd /root
4. vi .vimrc # 新增喜好設定檔
5. 注意!以下參數的中文註解部分請勿輸入,否則會載入失敗
set cindent
set enc=taiwan
set fileencoding=taiwan
set hls
set nocompatible # 方向鍵不會出現英文
set sw=2
set guifontset=8x16,kc15f,-*-16-*-big5-0 # 設定 zh_TW.Big5 locale
syntax on
highlight Comment ctermfg=darkcyan
highlight Search term=reverse ctermbg=4 ctermfg=7
6. cp .vimrc /home/usr # 將 .vimrc 設定檔拷貝給現有使用者
7. cp .vimrc /usr/share/skel/dot.vimrc # 日後新增帳號自動複製
* 以 tcsh 為例:
使用者登入後,會讀取 /etc/csh.cshrc & /etc/csh.login
1. vi /etc/csh.cshrc
2. setenv EDITOR vim # 預設文字編輯器改成 vim
alias vi vim # 輸入 vi 時,會使用 vim 當作編輯器
3. vi /etc/csh.login
4.
# 遠端能輸入中文
setenv ENABLE_STARTUP_LOCALE zh_TW.Big5
setenv LC_CTYPE is_IS.ISO8859-1
setenv LANG zh_TW.Big5
# console 下輸入中文
# 5.x is_IS.ISO8859-1
# 4.x is_IS.ISO_8859-1
zh_TW.UTF-8
5. /usr/share/skel/dot.cshrc & dot.login
# 可加入上面的設定,作為日後新增帳號的設定。
paulnet.bbs@wretch.twbbs.org
參考資料 :
http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/vim.html - VI 的進階編輯器
FreeBSD 5.x 架設管理與應用 - 王俊斌
感謝:
ERICJ.bbs@ysmis.twbbs.org
Adios.bbs@bbs.comm.ccu.edu.tw
初稿-2004/08/30
--
順便作一下筆記
在.vimrc中可以加上
如果你用的背景是黑色的可以加上下列這一行會看的比較清楚
set background=dark
將tab的空格改為8個
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
--
以上轉自
http://phorum.study-area.org/index.php/topic,25722.html
19.3. vim - VI 的進階編輯器
它包括了一些和 vi 很像但 celvis-1.3 所沒有的特色,像是行號, 回繞行,及大型檔最主要的是可以輸入中文。
安裝 editors/vim。
我知道有人很討厭 vim,因為還要裝 X。 其實只要用 make -DWITHOUT_X11 install 就可以了只安裝文字版的 vim。
安裝 ports/editors/vim 後, 根據個人喜好設定 .vimrc:
set fileencoding=taiwan
set guifontset=8x16,kc15f,-*-16-*-big5-0
並且設定 zh_TW.Big5 的 locale,這樣子就可以一次刪除一個中文字。
以下是建議的設定
set cindent
set enc=taiwan
set fileencoding=taiwan
set hls
set nocompatible
set sw=2
syntax on
highlight Comment ctermfg=darkcyan
highlight Search term=reverse ctermbg=4 ctermfg=7
在啟動的時候建議使用 env TERM=xterm-color vim ,這樣漂亮的顏色才會出來 :)
如果覺得字色太暗,可以用 :set background=dark。
轉自 http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/vim.html
hls 是hlsearch,是highlight search 的簡寫。
結構中使用函式指標
typedef struct Ball CBall;
struct Ball {
char *color;
double radius;
double (*volumn)(CBall*); // 函式指標
};
// 計算實例體積
double volumn(CBall *this) {
double r = this->radius; // 模擬 this 指標 的行為
return r * r * 3.14;
}
void initBall(CBall *ball, char *color, double radius) {
ball->volumn = volumn; // 連結函式
ball->color = color;
ball->radius = radius;
}
int main(void) {
CBall ball;
initBall(&ball, "red", 5.0);
printf("ball 實例的體積: %.2f\n", ball.volumn(&ball));
return 0;
}
看一看吧!
看不懂的時候可以看這個網頁
http://caterpillar.onlyfun.net/Gossip/CGossip/StructPoint.html
另外,如果在dev-c上面要編這個程式的話是不會compile過的
因為dev-c++
this 是一個關鍵字
我是跑到freeBSD上面用gcc a.c編譯過的
附帶一提,ball->volumn = volumn; // 連結函式
這一行的功能真的只是將這個指標指到 volumn 這個區塊而已,並不會執行
後來進行到 ball.volumn(&ball)
呼叫 ball 的 volumn 指標
才去執行 volumn 這個區塊,並且傳入參數ball
函式指標
/*main.c*/
#include
#include "stdlib.h"
#include "sort.h"
int main(void) {
int number1[] = {3, 5, 1, 6, 9};
sort(number1, 5, larger);
printf("大的在前 ");
int i;
for(i = 0; i < 5; i++) {
printf("%d ", number1[i]);
}
putchar('\n');
int number2[] = {3, 5, 1, 6, 9};
sort(number2, 5, smaller);
printf("小的在前 ");
for(i = 0; i < 5; i++) {
printf("%d ", number2[i]);
}
putchar('\n');
system("pause");
return 0;
}
─────────────分隔線───────────────
/*sort.h*/
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
int larger(int a, int b) {
return a > b;
}
int smaller(int a, int b) {
return a < b;
}
void sort(int* arr, int length, int (*compare)(int, int)) {
int flag = 1;
int i, j;
for(i = 0; i < length-1 && flag == 1; i++) {
flag = 0;
for(j = 0; j < length-i-1; j++) {
if(compare(arr[j+1], arr[j])) {
swap(arr + j + 1, arr + j);
flag = 1;
}
}
}
}
─────────────分隔線───────────────
sort.h 裡面的 compare 是一個指標
可以接受 main.c 呼叫他的時候給予不同的名稱,如 larger 或者 smaller
感覺就像是一個 char 指標指向不同的記憶體區塊,而獲得不同的內容
也就是說
sort(number1 , 5 , larger)
同於
sort(int* arr, int length, int larger(int, int))
不定參數Variable Argument
就是傳入函式的參數是不固定的
可多可少
例如printf
int printf(const char *format [,argument]...);
那個中括號括起來的arguement可多可少
而且還可以不同型態
這就是不定參數
可以想像這些不定參數是以stack的方式存起來的
c語言提供va_list可以來實作不定參數的函式
va_start , va_arg , va_end是macro
而va_list是一個char *的型態
va_start做的事就是把va_list的指標指到第一個不定參數
va_arg做的事是以指定型態從va_list取出資料並把va_list指標指到下一個位置
va_end做的事就是當資料取完後把va_list歸零
參考
http://blog.pixnet.net/chiahsiang/post/13125997
http://zhanjun.net/?q=node/23
這篇比較詳細
附上code
/* va_arg example */
#include
#include
#include
void PrintLines ( char* first, ...)
{
char* str;//這個指標是為了在呼叫 va_arg 後,推進指標,用來儲存下一個arg用的
va_list vl;//放置arg陣列的指標名稱
//str=first;//原始code裡面寫的,原本的用途在文章下面會寫
printf("%s\n" , first);//用這一行來取代原始code裡面印出first第一個參數的功能
va_start(vl,first);//初始化
do {
str=va_arg(vl,char*);//這行執行後,str裡面儲存的就是第二個參數的位址了
printf ("%s\n",str);
} while (str!=NULL);
va_end(vl);
}
int main ()
{
PrintLines ("First","Second","Third","Fourth",NULL);
system("pause");
return 0;
}
上面的 code 是從 http://blog.pixnet.net/chiahsiang/post/13125997 複製過來的
不過我有改掉一些地方
因為原本的code為了依序顯示出 first second third fourth
而造成寫法上不易理解 va_start 的前面為什麼要加上 str=first,其實那是不需要的
原始寫法中,先 str=first 之後就可以在do while迴圈中先印出 str 的值
其後再用 va_arg 將下一個參數的位址放到str裡面。
不過這跟在迴圈外面印出 first 意思是一樣的
Innd 安裝教學
由magicalloveshe排版編修
1、
用vipw修改/etc/passwd文件,改為
news:*:8:8:News Subsystem:/usr/local/news:/bin/sh
2、
$tar zxvf inn-2.4.0.tar.gz
$cd inn-2.4.0
$./configure
$make && make install
預設安在/usr/local/news下
3、
修改etc/inn.conf
hiscachesize: 256
artcutoff: 60
maxartsize: 100000
localmaxartsize: 100000
enableoverview: true
ovmethod: tradindexed
spoolfirst: false
執行 /usr/local/news/bin/inncheck , 檢查inn.conf
4、文章過期策略設置修改expire.ctl如下:
##This entry uses the syntax appropriate when groupbaseexpiry is true in
inn.conf.
##This is an entry based on storage class, used when groupbaseexpiry is flase.
#0:10:never:never
5、初始化history文件
$cd /usr/local/news/db
$touch history
$../bin/makedbz -i
$for i in history.n*; do i=${i#history.n.};mv history.n.$i history.$i ;done
有的shell執行不了,也可以手工改正 (起的作用是把history.n.*改名為history.*)
$chown news:news history*
$chmod 644 history*
6、建立新的新聞組
su - news
/usr/local/news/bin/ctlinnd newgroup test1
/usr/local/news/bin/ctlinnd newgroup test2
要執行ctlinnd必須要先啟動innd
請先跳到第十項閱讀如何啟動innd
當然了,你可以試試如果不啟動能不能使用ctlinnd
7、
用mkuserdb.pl建立userpass文件,userpass文件一般存放在/usr/local/news/db下
magicallove:mkuserdb.pl在哪裡?
因為找不到mkuserdb.pl在哪裡,所以這項其實我沒有做
8、修改storage.conf文件,加入
method tradspool {
newsgroups: *
class: 1
}
magicallove:/usr/local/news/etc/storage.conf
這份storage.conf裡面原本就有
method tradspool {
newsgroups: *
class: 0
}
不知道是要修改還是新增在下面= =
9、修改readers.conf,格式如下
auth admin {
hosts: *
auth: "ckpasswd -f /usr/local/news/db/userpass"
default:
default-domain:
}
下面這塊在原本的文件中就存在囉
auth "localhost" {
hosts: "localhost, 127.0.0.1, stdin"
default: "
}
access user1 {
users: "zhenhua@
newsgroups: "test2,!control.*,!junk,!control"
access: RP
}
access user2 {
users: "yingjia@
newsgroups: "test1,test2,!control.*,!junk,!control"
access: RP
}
下面這塊在原本的文件中就存在囉
access "localhost" {
users: "
newsgroups: "*"
access: RPA
}
access fail {
users: "
newsgroups: !*
}
配置syslog,記錄日誌
$ touch /usr/local/news/log/news.crit
$ touch /usr/local/news/log/news.err
$ touch /usr/local/news/log/news.notice
$ chown news /usr/local/news/log/news.*
$ chgrp news /usr/local/news/log/news.*
$ cat >> /etc/syslog.conf << style="color: rgb(0, 0, 153);">原本沒有log這個資料夾,請自己新增哦
cat >> /etc/syslog.conf <<>
這行需要一點串流概念,建議到鳥哥上面看完那份bash教學
10、啟動news服務:
$su - news
$/usr/local/news/bin/rc.news
netstat -an | grep LISTEN命令查看119 port是否開啟
11、用outlookexpress測試新聞群組
yingjia可以訂閱test1,test2
zhenhua只能訂閱test2
12.系統啟動時,自動啟動新聞組服務器確定
/etc/rc中有執行rc.local的部分,然後在rc.local(如沒有,則新建)中加入:
su news -c /usr/local/news/bin/rc.news