web列印分頁,一般使用css属性page-break-after/page-break-after,在需要分頁的地方可以插入標籤
pageBreak css如下:
.pageBreak{
page-break-after:always;
}
但在使用的时候,可能會碰到IE能正常分頁,但Firefox却没有任何效果。經分析,在Firefox中使用page-break-after屬性時,不能像所有的列印内容都放在一個表中。也就是說Firefox是不能將表斷開的。所以在Firefox中使用page-break-after進行分頁列印,要避免將列印的内容放在一個表中,替代的方法是可以将内容放在一個DIV中。
摘自:http://ziwei888.wordpress.com/2009/03/02/css%E5%88%86%E9%A0%81%E5%95%8F%E9%A1%8C-page-break-after/
2009年4月23日 星期四
Subversion 實務建議
實務 1. 備份檔案庫
一旦你使用了 Subversion 來管理版本,檔案庫就成為你開發時最重要的資產之一了,因此最好利用排程工具,定期將檔案庫備份,如果你的檔案庫都放在一個統一的目錄下,例如:d:/svn,就只要完整備份這個目錄就行了。
--------------------------------------------------------------------------------
實務 2. 盡量熟悉命令列工具
儘管你大部分時候都是使用視覺化工具(例如:TortoiseSVN)來執行版本控制的日常工作,熟悉命令列工具仍然非常有用,特別是當你要執行一些批次作業時。
--------------------------------------------------------------------------------
實務 3. 建立測試環境
有些團隊可能是用 nightly build 或 weekly build 的建置方式,然後對新建置的版本進行測試,這種方式可能是由專人負責建置,然後把新版的程式部署到測試機器上。
另一種可能的情況是,測試人員隨時都可以測試最新版的程式,也就是每當程式修改好,check in 到檔案庫之後,測試人員就要能測到最新版的程式。這種需求可以透過在測試機器上建立排程來達到,排程的工作是執行一個批次檔,而這個批次檔裡面就是些 Subversion 的 update 命令。例如:
REM 此批次檔用來更新測試機器的程式檔案
c:
cd\MyProject\BookWeb\BookWeb.war
svn update -N
cd Image
svn update
cd ..
cd Script
svn update
cd ..
cd Jsp
svn update
cd ..
cd WEB-INF\classes
svn update
cd ..\lib
svn update
cd ..
這種方式要注意一個問題,就是測試機器上的應用程式目錄裡面,每個目錄都會有一個隱藏的 .svn 目錄。如果要把測試機器上的檔案部署到用戶端,並且排除 .svn 目錄,就要使用 Subversion 的匯出(export)功能。
--------------------------------------------------------------------------------
實務 4. 只 check in 完成的檔案
程式還有編譯錯誤及警告時,不要 check in 到檔案庫。一方面是基於測試的理由(程式當然是可以運作才放上去測試),另一方面,是因為這樣做可能會對別人造成困擾,因為別的開發人員可能有將整個專案的程式碼取出,那麼每當他在本機上建置專案時,就會出現一堆編譯錯誤,包括他自己的程式和你的程式的錯誤。如果每個人都在程式還未能通過編譯時就 check in,那麼每次編譯專案產生的錯誤訊息將多到令人無法忍受。
--------------------------------------------------------------------------------
實務 5. 每次 check in 時,輸入摘要事項
每當我們要 check in 檔案時,Subversion 會要求我們輸入一段文字,用來簡單說明這次 check in 做了哪些改變。你可以把重要的備註事項寫進去,以後如果要回頭比對版本,可以幫助你更找到需要的版本。
--------------------------------------------------------------------------------
實務 6. 不要保留沒用的註解
以往沒有版本控制時,我們在修改程式時,常常會把一段程式碼註解掉,以便日後反悔時,可以恢復。但是這類註解掉的程式碼往往會一直留在那裡,直到程式改了好幾個版本,已經沒有利用價值以後,成為程式裡的一堆礙眼的垃圾。
有了版本控制以後,因為可以隨時回到任一個歷史版本,你可以放心的把不要的程式碼刪除,再配合實務 5,以後要恢復歷史版本就很容易了。
--------------------------------------------------------------------------------
實務 7. 不要留下多餘的檔案
以往沒有使用版本控制系統時,我們有時候會自己做一點版本管理,例如修改 Foo.java 之前,先把它複製成一個新的檔案,並且加上序號,例如:Foo_1.java,然後再修改 Foo.java。現在有了版本控制系統,可以不用這樣了,免得多了一堆垃圾檔案。
我曾看過一種情況,就是有人還是習慣用附加編號的方式自己備份舊版的檔案,而且跟新版的檔案放在同一個目錄下,另一方面,他又習慣把程式的檔名用序號來命名(懶得想個適切的檔名),結果備份的檔名和開發中的檔名都是用序號來命名,有一天某人要清理專案目錄中的垃圾時,就把所有帶序號的檔名都砍了,造成程式無法編譯或執行。還好我們有時光機器可以回到過去,要不然就麻煩了。
--------------------------------------------------------------------------------
實務 8. 檔名大小寫第一次就決定好
如果你的作業系統不區分檔名的大小寫,例如:Windows,你最好第一次就把檔案名稱的大小寫確定下來。否則如果日後要改檔名,而且新的檔名和舊的檔名只有大小寫的不同,例如:myprg.java 和 MyPrg.java,你在送交和更新時可能會碰到一些麻煩。
--------------------------------------------------------------------------------
實務 9. 指定忽略的檔案
在一個專案裡面,可能有些目錄裡面的某些檔案是你不希望加入檔案庫的,因此你在第一次匯入檔案庫之前,最好先把這些檔案搬移到別處,等到匯入檔案庫之後,在把它們搬回來,並且將這些檔案加入忽略清單。以 Web 應用程式為例,參考下列步驟:
先大致建構出網站的雛形,檔案目錄結構大致底定之後,才將檔案匯入檔案庫。
建立檔案庫,並且準備匯入檔案庫。有一些檔案可能是你不希望進行版本控管的,因為當其他小組成員更新這些檔案之後,可能會造成他的開發環境出問題,例如:無法編譯或執行程式等。不管是什麼原因,只要你有不想要放入檔案庫的檔案,就在匯入檔案庫之前,先把整個專案的檔案複製一份到一個暫存目錄下(c:\temp),然後把 c:/temp 中所有不想控管版本的檔案刪除掉,然後再匯入檔案庫。匯入完成後把 c:/temp 底下的檔案全部刪除。
取出專案。先把整個專案的檔案*搬移*到 c:/temp 底下,接著從檔案庫取出(check out)專案,假設取出至 d:/myprj 目錄下。
把 c:/temp 底下的所有檔案複製到 d:/myprj,注意所有已經存在的檔案都不要覆蓋掉,亦即只複製新的檔案過去。這些新的檔案並未加入版本控制,你可以把它們加入忽略清單(ignore list)裡面,以後這些檔案就不會被存入檔案庫了。
--------------------------------------------------------------------------------
Q & A
--------------------------------------------------------------------------------
問題:
使用 client 工具存取檔案庫時(例如:browse, commit, update),client 工具好像當掉了。
原因:
可能是因為 client 端在某次 commit 時異常中止動作,導致 server 端的 Subversion 資料庫鎖定無法釋放,一直等待 client 結束這次的 commit,因此其他的 clients 也必須等待,看起來就像當掉一樣。
解答:
使用 svnadmin 工具來復原資料庫,例如:
c:/>svnadmin recover d:/svn/MyRepos
--------------------------------------------------------------------------------
問題:
每次 Eclipse/WSAD 建置專案以後,類別輸出路徑底下的檔案版本就會跟 JavaSource 的檔案相互混淆?
原因:
Eclipse/WSAD 在建置專案時,會先把建置路徑完全清空,然後把 JavaSource 裡面的所有檔案目錄複製一份到 建置路徑(類別輸出路徑)下,但只有 .java 檔但不會複製過去,而是會將他們編譯成 .class 檔。這樣會導致 JavaSource 底下的 .svn 目錄都被複製到建置路徑下,例如:WEB-INF\classes\.svn,導致類別輸出路徑下的 .svn 目錄被蓋掉,因而使得 classes 目錄和 JavaSource 目錄混淆,發生相互影響的情形。
解答:
解決方法是修改 Eclipse/WSAD 的編譯器設定,把 ".svn/" 加入「已過濾的資源(Filtered Resource)」。參考下面的 WSAD 設定圖:
這樣設定還不夠,因為 Eclipse/WSAD 預設在建置專案時會先清空建置路徑(類別輸出路徑),使得建置路徑下的 .svn 目錄被清掉,因此,類別輸出路徑應該不要加入版本控制,做法是使用 svn:ignore 把建置路徑排除。
但是有些情況你可能還是希望將建置路徑加入版本控制,例如:你希望每當有小組成員編譯好他的檔案時,立刻 check in 就能立刻對新的程式進行測試,而不用等到 daily build 或 weekly build 完成時。
所以,如果你想要將建置路徑加入版本控制,除了更改 Filtered Resource 選項,還要讓 Eclipse/WSAD 在建置專案時不清空資料夾,此選項為「進行完整建置時清除輸出資料夾」,在上面的圖中可以找到。可是這樣一來,以後建置路徑可能會留下一些垃圾檔案,每當你刪除 JavaSource 裡面的檔案被刪除時,要記得到建置路徑下刪除對應的 .class 檔。
網路資源
Subversion 在 WebSphere 的應用
http://www.juee.com.tw/bartender/svn-present/svn-wsad.htm
摘自:http://huanlin.dyndns.org/techshare/articles/2005031801/svn_practical.htm
一旦你使用了 Subversion 來管理版本,檔案庫就成為你開發時最重要的資產之一了,因此最好利用排程工具,定期將檔案庫備份,如果你的檔案庫都放在一個統一的目錄下,例如:d:/svn,就只要完整備份這個目錄就行了。
--------------------------------------------------------------------------------
實務 2. 盡量熟悉命令列工具
儘管你大部分時候都是使用視覺化工具(例如:TortoiseSVN)來執行版本控制的日常工作,熟悉命令列工具仍然非常有用,特別是當你要執行一些批次作業時。
--------------------------------------------------------------------------------
實務 3. 建立測試環境
有些團隊可能是用 nightly build 或 weekly build 的建置方式,然後對新建置的版本進行測試,這種方式可能是由專人負責建置,然後把新版的程式部署到測試機器上。
另一種可能的情況是,測試人員隨時都可以測試最新版的程式,也就是每當程式修改好,check in 到檔案庫之後,測試人員就要能測到最新版的程式。這種需求可以透過在測試機器上建立排程來達到,排程的工作是執行一個批次檔,而這個批次檔裡面就是些 Subversion 的 update 命令。例如:
REM 此批次檔用來更新測試機器的程式檔案
c:
cd\MyProject\BookWeb\BookWeb.war
svn update -N
cd Image
svn update
cd ..
cd Script
svn update
cd ..
cd Jsp
svn update
cd ..
cd WEB-INF\classes
svn update
cd ..\lib
svn update
cd ..
這種方式要注意一個問題,就是測試機器上的應用程式目錄裡面,每個目錄都會有一個隱藏的 .svn 目錄。如果要把測試機器上的檔案部署到用戶端,並且排除 .svn 目錄,就要使用 Subversion 的匯出(export)功能。
--------------------------------------------------------------------------------
實務 4. 只 check in 完成的檔案
程式還有編譯錯誤及警告時,不要 check in 到檔案庫。一方面是基於測試的理由(程式當然是可以運作才放上去測試),另一方面,是因為這樣做可能會對別人造成困擾,因為別的開發人員可能有將整個專案的程式碼取出,那麼每當他在本機上建置專案時,就會出現一堆編譯錯誤,包括他自己的程式和你的程式的錯誤。如果每個人都在程式還未能通過編譯時就 check in,那麼每次編譯專案產生的錯誤訊息將多到令人無法忍受。
--------------------------------------------------------------------------------
實務 5. 每次 check in 時,輸入摘要事項
每當我們要 check in 檔案時,Subversion 會要求我們輸入一段文字,用來簡單說明這次 check in 做了哪些改變。你可以把重要的備註事項寫進去,以後如果要回頭比對版本,可以幫助你更找到需要的版本。
--------------------------------------------------------------------------------
實務 6. 不要保留沒用的註解
以往沒有版本控制時,我們在修改程式時,常常會把一段程式碼註解掉,以便日後反悔時,可以恢復。但是這類註解掉的程式碼往往會一直留在那裡,直到程式改了好幾個版本,已經沒有利用價值以後,成為程式裡的一堆礙眼的垃圾。
有了版本控制以後,因為可以隨時回到任一個歷史版本,你可以放心的把不要的程式碼刪除,再配合實務 5,以後要恢復歷史版本就很容易了。
--------------------------------------------------------------------------------
實務 7. 不要留下多餘的檔案
以往沒有使用版本控制系統時,我們有時候會自己做一點版本管理,例如修改 Foo.java 之前,先把它複製成一個新的檔案,並且加上序號,例如:Foo_1.java,然後再修改 Foo.java。現在有了版本控制系統,可以不用這樣了,免得多了一堆垃圾檔案。
我曾看過一種情況,就是有人還是習慣用附加編號的方式自己備份舊版的檔案,而且跟新版的檔案放在同一個目錄下,另一方面,他又習慣把程式的檔名用序號來命名(懶得想個適切的檔名),結果備份的檔名和開發中的檔名都是用序號來命名,有一天某人要清理專案目錄中的垃圾時,就把所有帶序號的檔名都砍了,造成程式無法編譯或執行。還好我們有時光機器可以回到過去,要不然就麻煩了。
--------------------------------------------------------------------------------
實務 8. 檔名大小寫第一次就決定好
如果你的作業系統不區分檔名的大小寫,例如:Windows,你最好第一次就把檔案名稱的大小寫確定下來。否則如果日後要改檔名,而且新的檔名和舊的檔名只有大小寫的不同,例如:myprg.java 和 MyPrg.java,你在送交和更新時可能會碰到一些麻煩。
--------------------------------------------------------------------------------
實務 9. 指定忽略的檔案
在一個專案裡面,可能有些目錄裡面的某些檔案是你不希望加入檔案庫的,因此你在第一次匯入檔案庫之前,最好先把這些檔案搬移到別處,等到匯入檔案庫之後,在把它們搬回來,並且將這些檔案加入忽略清單。以 Web 應用程式為例,參考下列步驟:
先大致建構出網站的雛形,檔案目錄結構大致底定之後,才將檔案匯入檔案庫。
建立檔案庫,並且準備匯入檔案庫。有一些檔案可能是你不希望進行版本控管的,因為當其他小組成員更新這些檔案之後,可能會造成他的開發環境出問題,例如:無法編譯或執行程式等。不管是什麼原因,只要你有不想要放入檔案庫的檔案,就在匯入檔案庫之前,先把整個專案的檔案複製一份到一個暫存目錄下(c:\temp),然後把 c:/temp 中所有不想控管版本的檔案刪除掉,然後再匯入檔案庫。匯入完成後把 c:/temp 底下的檔案全部刪除。
取出專案。先把整個專案的檔案*搬移*到 c:/temp 底下,接著從檔案庫取出(check out)專案,假設取出至 d:/myprj 目錄下。
把 c:/temp 底下的所有檔案複製到 d:/myprj,注意所有已經存在的檔案都不要覆蓋掉,亦即只複製新的檔案過去。這些新的檔案並未加入版本控制,你可以把它們加入忽略清單(ignore list)裡面,以後這些檔案就不會被存入檔案庫了。
--------------------------------------------------------------------------------
Q & A
--------------------------------------------------------------------------------
問題:
使用 client 工具存取檔案庫時(例如:browse, commit, update),client 工具好像當掉了。
原因:
可能是因為 client 端在某次 commit 時異常中止動作,導致 server 端的 Subversion 資料庫鎖定無法釋放,一直等待 client 結束這次的 commit,因此其他的 clients 也必須等待,看起來就像當掉一樣。
解答:
使用 svnadmin 工具來復原資料庫,例如:
c:/>svnadmin recover d:/svn/MyRepos
--------------------------------------------------------------------------------
問題:
每次 Eclipse/WSAD 建置專案以後,類別輸出路徑底下的檔案版本就會跟 JavaSource 的檔案相互混淆?
原因:
Eclipse/WSAD 在建置專案時,會先把建置路徑完全清空,然後把 JavaSource 裡面的所有檔案目錄複製一份到 建置路徑(類別輸出路徑)下,但只有 .java 檔但不會複製過去,而是會將他們編譯成 .class 檔。這樣會導致 JavaSource 底下的 .svn 目錄都被複製到建置路徑下,例如:WEB-INF\classes\.svn,導致類別輸出路徑下的 .svn 目錄被蓋掉,因而使得 classes 目錄和 JavaSource 目錄混淆,發生相互影響的情形。
解答:
解決方法是修改 Eclipse/WSAD 的編譯器設定,把 ".svn/" 加入「已過濾的資源(Filtered Resource)」。參考下面的 WSAD 設定圖:
這樣設定還不夠,因為 Eclipse/WSAD 預設在建置專案時會先清空建置路徑(類別輸出路徑),使得建置路徑下的 .svn 目錄被清掉,因此,類別輸出路徑應該不要加入版本控制,做法是使用 svn:ignore 把建置路徑排除。
但是有些情況你可能還是希望將建置路徑加入版本控制,例如:你希望每當有小組成員編譯好他的檔案時,立刻 check in 就能立刻對新的程式進行測試,而不用等到 daily build 或 weekly build 完成時。
所以,如果你想要將建置路徑加入版本控制,除了更改 Filtered Resource 選項,還要讓 Eclipse/WSAD 在建置專案時不清空資料夾,此選項為「進行完整建置時清除輸出資料夾」,在上面的圖中可以找到。可是這樣一來,以後建置路徑可能會留下一些垃圾檔案,每當你刪除 JavaSource 裡面的檔案被刪除時,要記得到建置路徑下刪除對應的 .class 檔。
網路資源
Subversion 在 WebSphere 的應用
http://www.juee.com.tw/bartender/svn-present/svn-wsad.htm
摘自:http://huanlin.dyndns.org/techshare/articles/2005031801/svn_practical.htm
2009年4月16日 星期四
2009年4月15日 星期三
[DEBUG]Apache Error: Client denied by server configuration
AllowOverride None
Order Deny,Allow
Deny from all
to
AllowOverride None
Order Deny,Allow
#Deny from all
Order Deny,Allow
Deny from all
to
AllowOverride None
Order Deny,Allow
#Deny from all
Running two httpd in Linux
#./configure --prefix=/opt/httpd-2.2.11 --enable-modules=all --enable-mods-shared=all --enable-proxy --enable-ssl --enable-so --with-mpm=prefork
#make
#make install
#ln -s /opt/httpd-2.2.11 /opt/httpd
#cp -p pathLib/libphp5.so /opt/httpd/modules
#vi /opt/httpd/conf/httpd.conf
#/opt/httpd/bin/httpd -f /opt/httpd/conf/httpd.conf -k restart
#make
#make install
#ln -s /opt/httpd-2.2.11 /opt/httpd
#cp -p pathLib/libphp5.so /opt/httpd/modules
#vi /opt/httpd/conf/httpd.conf
# Make sure there's only **1** line for each of these 2 directives:
# Use for PHP 4.x:
#LoadModule php4_module modules/libphp4.so
#AddHandler php-script php
# Use for PHP 5.x:
LoadModule php5_module modules/libphp5.so
AddHandler php5-script php
# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php
AddType text/html php
# PHP Syntax Coloring
# (optional but useful for reading PHP source for debugging):
AddType application/x-httpd-php-source phps
#/opt/httpd/bin/httpd -f /opt/httpd/conf/httpd.conf -k restart
[DEBUG]proxy: ap_get_scoreboard_lb for worker proxy:reverse
ServerName application.mydomain.com
ProxyRequests Off
即可
2009年4月13日 星期一
FEDORA下SSH安装使用的HOWTO文章
一個SSH SERVER被安裝,如果沒有安裝,請執行以下命令
yum install openssh-servier
/etc/init.d/sshd start
摘自:http://blog.csdn.net/beyond911/archive/2007/08/23/1756031.aspx
yum install openssh-servier
/etc/init.d/sshd start
摘自:http://blog.csdn.net/beyond911/archive/2007/08/23/1756031.aspx
2009年4月9日 星期四
FreeBSD logrotate
[root@ns1 ~]# cd /usr/ports/sysutils/logrotate
[root@ns1 logrotate]# make install clean
[root@ns1 logrotate]# cd
[root@ns1 ~]# cp /usr/local/etc/logrotate.conf.sample /usr/local/etc/logrotate.conf
[root@ns1 ~]# vi /usr/local/etc/logrotate.conf
errors root
↓
#errors root ←コメントアウト
compress
↓
#compress ←コメントアウト
↓下記をコメントアウト
#/var/log/lastlog {
# monthly
# rotate 1
#}
[root@ns1 ~]# mkdir /usr/local/etc/logrotate.d
[root@ns1 ~]# vi /etc/crontab
0 0 * * * root /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf > /dev/null 2>&1
摘自:http://freebsd.server-manual.com/logrotate.html
[root@ns1 logrotate]# make install clean
[root@ns1 logrotate]# cd
[root@ns1 ~]# cp /usr/local/etc/logrotate.conf.sample /usr/local/etc/logrotate.conf
[root@ns1 ~]# vi /usr/local/etc/logrotate.conf
errors root
↓
#errors root ←コメントアウト
compress
↓
#compress ←コメントアウト
↓下記をコメントアウト
#/var/log/lastlog {
# monthly
# rotate 1
#}
[root@ns1 ~]# mkdir /usr/local/etc/logrotate.d
[root@ns1 ~]# vi /etc/crontab
0 0 * * * root /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf > /dev/null 2>&1
摘自:http://freebsd.server-manual.com/logrotate.html
2009年4月7日 星期二
電子報發送建議作法及調整
.信件分流、分時發送,避免發送過於頻繁被擋的情形
.申請多組不同網段IP,避免整段被擋的情形
.直接寄給收信端後方Mail Server(以yahoo為例)
.同domain收件人統一發送,避免發送過多信件
.整理發送後失敗Email名單,減少發送失敗情形
.申請大量發送IP名單,增加發送量
.設定DNS反解,避免因反解被擋
.建立Queue Server及Retry機制,增加信件寄送成功率
.[From:]標頭中使用相同的地址
.在郵件中加入[Precedence:bulk]標頭欄位,指出其為大量郵件
.申請多組不同網段IP,避免整段被擋的情形
.直接寄給收信端後方Mail Server(以yahoo為例)
.同domain收件人統一發送,避免發送過多信件
.整理發送後失敗Email名單,減少發送失敗情形
.申請大量發送IP名單,增加發送量
.設定DNS反解,避免因反解被擋
.建立Queue Server及Retry機制,增加信件寄送成功率
.[From:]標頭中使用相同的地址
.在郵件中加入[Precedence:bulk]標頭欄位,指出其為大量郵件
訂閱:
文章 (Atom)