初初接觸Tag的,少有不激動的。就因為它既熟悉又陌生,既簡單又復雜。乍看之下覺得兩下子能弄一個Tag系統出來,再想想又覺得深不可測。可挖掘的東西似乎還有很多很多......
基于Tag的RSS訂閱 是個好主意。不過首先的確讓人想到spam。Tag同樣存在信息過載的問題。最原始的提高搜索引擎排名的方法,已經太多人用過了:在meta的keyword里面貼一堆無關的關鍵字:二手、超女、手機、新聞、性感、美女、貼圖、援交、筆記本...... 如何保證不在SPAM Blog上面亂貼Tag?
限制Tag數量?沒用,辛苦點多copy幾個副本就完了。
技術手段限制?說到底還是成本,技術手段有高低之分,有成本大小區別的。除非對Spam特別不介意的,否則多數用戶狂熱過一段之后,要看有效信息的,最終還是回到少數幾個“權威”這里。這些“權威”不是特定個人就是公司,前者就不是基于Tag了,后者提供的Tag,其實還是Web 1.0的SP,再加一個Tag。
當然沒必要為了2.0而2.0,我們關心如何更有效獲取自己想要的有效信息,盡量過濾無關信息(尤其是Spam)。
Tag最大的特點,我以為在“交流”二字。自己貼了個自我感覺良好的傻冒Tag,完了還想看看誰跟我一樣傻... 這個將成為Tag存在的最重要的意義之一。
最有機會整合Tag功能,也是最需要整合Tag功能的網站,是那些比較重視用戶之間交互的網站,例如BSP、交友圈等等
由一個Document對象,轉換成String,這個方法我幾年前寫的了:
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(inputDoc);
StringWriter out = new StringWriter();
StreamResult result = new StreamResult(out);
transformer.transform(source, result);
out.flush();
return out.toString();一直用是沒有問題的,直到今天在resin上面運行,發現一個奇怪的現象,寫入數據庫的中文都變成了類似&#XXXX; 這種編碼。更加奇怪的是我用應用程序的方式運行,是正常沒問題的。我猜想是resin在某個地方做了設置,在網上搜索又一時找不到好方法,不想為了一個小問題轉用jdom之類的包。
研究了一下,找到了解決的辦法。在Transformer對象創建之后加一句:
transformer.setOutputProperty("encoding","GBK");問題解決了。具體的機制還沒有時間去了解,有空再回頭研究吧。
歷來對framework的感覺是“夠用就可以”的原則。這次想用struts,主要希望jsp里面的邏輯代碼不要太多。但代價當然是Action類會多起來。完全用Struts的設計,也不是不可以,但是復雜度提高的同時,換了一個不會用struts的人來做,要花太多時間講解。折中了一下,決定只用Struts的Action,并且主要使用DispatchAction,這樣Action的類不用太多。
至于Error和Message,暫時還是自己定義,Tag Library雖然是個好東西,但是讓頁面更加復雜了(個人感覺),暫時不用。
用Ant在JDK1.5下運行java任務時,如果涉及jaxp的DOM,會拋出異常
javax.xml.parsers.FactoryConfigurationError
解決方法:
把ant的lib下面的xercesImpl.jar放到你的classpath里面。
應該是ANT對應的classloader出了問題,感覺哪里是硬編碼了必須拿這個xerces的實現類。
看到一篇文章批評google reader,說界面用了客戶端的腳本變得有趣,但功能太簡單。
也許是實話,但界面實在太重要了,有時甚至比功能重要。好的界面,起碼第一眼吸引人,有多留一會的欲望。
寫了個SlideShow的原型,利用image的complete,判斷圖片是否調用完全,調用完全以后才顯示,否則是LOADING的圖片,還考慮的是
1.每調用一張圖片之前先出現loading的過程,
2.調用圖片中不會因為網速和圖片過大而未顯示全,直接跳到下一張,要按順序一張一張播放.
3.第一次 播放的時候,因為調用圖片會慢一點,重新播放是調用CACHE里的,速度就快了
代碼如下:
var currCount=0
var stop=false
function getimg(n){
preImages= new Image()
preImages.src = yourImages[n]
}
function autoPlay(){
if(currCount!=yourImages.length){
document.getElementById("img").style.display="none"
getimg(currCount)
document.getElementById("loadingbar").style.display="block"
setTimeout("loadingImg()",1000)
}
else{
currCount=0;
if (confirm("播放完畢,是否重新播放?")){
return autoPlay()
}
}
}
function loadingImg(){
if (preImages.complete) {
document.getElementById("img").src="
http://blog.donews.com/images/blog_donews_com/dodo/49134/o_pix.gif"
document.getElementById("loadingbar").style.display="none"
document.getElementById("img").style.display="block"
document.getElementById("img").src=yourImages[currCount]
currCount=currCount+1
}
setTimeout("autoPlay()",4000)
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF">
<div style="width:700px">
<center>
<a href="javascript:autoPlay()">自動播放</a><br><br>
<div id="loadingbar" style="display:none;"><img src=http://blog.donews.com/images/blog_donews_com/dodo/49134/o_loading.gif></div>
<img id="img" src=http://blog.donews.com/images/blog_donews_com/dodo/49134/o_pix.gif >
<center>
</div>
</body>
</html>
文章來源:
http://blog.itpub.net/post/7956/49057
cron 是一個可以用來根據時間、日期、月份、星期的組合來調度對重復任務的執行的守護進程。
cron 假定系統持續運行。如果當某任務被調度時系統不在運行,該任務就不會被執行。要調度一次性的任務,請參閱第 37.2 節。
要使用 cron 服務,你必須安裝了 vixie-cron RPM 軟件包,而且必須在運行 crond 服務。要判定該軟件包是否已安裝,使用 rpm -q vixie-cron 命令。要判定該服務是否在運行,使用 /sbin/service crond status 命令。
37.1.1. 配置 cron 任務
cron 的主配置文件是 /etc/crontab,它包括下面幾行:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly |
前四行是用來配置 cron 任務運行環境的變量。SHELL 變量的值告訴系統要使用哪個 shell 環境(在這個例子里是 bash shell);PATH 變量定義用來執行命令的路徑。cron 任務的輸出被郵寄給 MAILTO 變量定義的用戶名。如果 MAILTO 變量被定義為空白字符串(MAILTO=""),電子郵件就不會被寄出。HOME 變量可以用來設置在執行命令或腳本時使用的主目錄。
/etc/crontab 文件中的每一行都代表一項任務,它的格式是:
minute hour day month dayofweek command |
minute — 分鐘,從 0 到 59 之間的任何整數
hour — 小時,從 0 到 23 之間的任何整數
day — 日期,從 1 到 31 之間的任何整數(如果指定了月份,必須是該月份的有效日期)
month — 月份,從 1 到 12 之間的任何整數(或使用月份的英文簡寫如 jan、feb 等等)
dayofweek — 星期,從 0 到 7 之間的任何整數,這里的 0 或 7 代表星期日(或使用星期的英文簡寫如 sun、mon 等等)
command — 要執行的命令(命令可以是 ls /proc >> /tmp/proc 之類的命令,也可以是執行你自行編寫的腳本的命令。)
在以上任何值中,星號(*)可以用來代表所有有效的值。譬如,月份值中的星號意味著在滿足其它制約條件后每月都執行該命令。
整數間的短線(-)指定一個整數范圍。譬如,1-4 意味著整數 1、2、3、4。
用逗號(,)隔開的一系列值指定一個列表。譬如,3, 4, 6, 8 標明這四個指定的整數。
正斜線(/)可以用來指定間隔頻率。在范圍后加上 /<integer> 意味著在范圍內可以跳過 integer。譬如,0-59/2 可以用來在分鐘字段定義每兩分鐘。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份字段中表示每三個月運行一次任務。
開頭為井號(#)的行是注釋,不會被處理。
如你在 /etc/crontab 文件中所見,它使用 run-parts 腳本來執行 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目錄中的腳本,這些腳本被相應地每小時、每日、每周、或每月執行。這些目錄中的文件應該是 shell 腳本。
如果某 cron 任務需要根據調度來執行,而不是每小時、每日、每周、或每月地執行,它可以被添加到 /etc/cron.d 目錄中。該目錄中的所有文件使用和 /etc/crontab 中一樣的語法。范例請參見例 37-1。
# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh |
例 37-1. crontab 的例子
根用戶以外的用戶可以使用 crontab 工具來配置 cron 任務。所有用戶定義的 crontab 都被保存在 /var/spool/cron 目錄中,并使用創建它們的用戶身份來執行。要以某用戶身份創建一個 crontab 項目,登錄為該用戶,然后鍵入 crontab -e 命令,使用由 VISUAL 或 EDITOR 環境變量指定的編輯器來編輯該用戶的 crontab。該文件使用的格式和 /etc/crontab 相同。當對 crontab 所做的改變被保存后,該 crontab 文件就會根據該用戶名被保存,并寫入文件 /var/spool/cron/username 中。
cron 守護進程每分鐘都檢查 /etc/crontab 文件、etc/cron.d/ 目錄、以及 /var/spool/cron 目錄中的改變。如果發現了改變,它們就會被載入內存。這樣,當某個 crontab 文件改變后就不必重新啟動守護進程了。
37.1.2. 控制對 cron 的使用
/etc/cron.allow 和 /etc/cron.deny 文件被用來限制對 cron 的使用。這兩個使用控制文件的格式都是每行一個用戶。兩個文件都不允許空格。如果使用控制文件被修改了,cron 守護進程(crond)不必被重啟。使用控制文件在每次用戶添加或刪除一項 cron 任務時都會被讀取。
無論使用控制文件中的規定如何,根用戶都總是可以使用 cron。
如果 cron.allow 文件存在,只有其中列出的用戶才被允許使用 cron,并且 cron.deny 文件會被忽略。
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用戶都被禁止使用 cron。
37.1.3. 啟動和停止服務
要啟動 cron 服務,使用 /sbin/service crond start 命令。要停止該服務,使用 /sbin/service crond stop 命令。推薦你在引導時啟動該服務。
文章來源:
http://blog.itpub.net/post/7956/48958
一臺舊機裝了好多次都不成功,google一下原來因為RedHat對舊款CD-ROM的驅動支持很差。只好從硬盤裝了。
用了Grub for Dos也是不成,后來用第一張碟上的一個iso映象燒了張啟動盤,啟動之后再選擇從硬盤安裝。OK!搞定了。
文章來源:
http://blog.itpub.net/post/7956/48897
從硬盤安裝Fedora Core 4
由于我的IBM240沒有光驅,所以安裝Fedora Core 4我選擇硬盤安裝,但Fedora Core 4跟redhat 9.0的硬盤安裝方法有所不同,redhat不需要要安裝其他軟件,只要把光盤的某個目錄拷貝出,然后dos下啟動就可以安裝,但到了Fedora Core 已經沒了類似的目錄,所以硬盤安裝模式有點變化。
1:首先當然是下載Fedora Core 4的光盤鏡像了,很多地方可以下載,這里提供一個
ftp://mirror.switch.ch/mirror/fedor...-i386-disc1.iso
ftp://mirror.switch.ch/mirror/fedor...-i386-disc2.iso
ftp://mirror.switch.ch/mirror/fedor...-i386-disc3.iso
ftp://mirror.switch.ch/mirror/fedor...-i386-disc4.iso
2:把CD1的isolinux目錄解壓到c:下
3:下載Grub For Dos
ftp://ftp2.linuxeden.com/tools/grub_for_dos-0.2.0pre13.tar.gz
解壓把里面的文件和文件夾剪切出,放在解壓后目錄的外邊.此時的路徑為:C:boot
4:修改boot.ini
最后面添加這么一行
C:grldr="GRUB For Dos
保存退出
5:修改C:bootgrubmenu.lst
添加這么幾行
title Install-Fedora Core 4
kernel (hd0,0)/isolinux/vmlinuz
initrd (hd0,0)/isolinux/initrd.img
注意:我的C盤這里是hd0,0表示第一個ide硬盤第一個分區,大家可根據自己的需要修改硬盤參數
ok,重新啟動系統,會看到GRUB For Dos 菜單,選擇后,在安裝媒介選擇硬盤安裝就行。
文章來源:
http://blog.itpub.net/post/7956/48838
想在HTML里面通過DOM用JavaScript操作,弄了半天無法將弄好的style節點插入document里面去。后來用排除法,驚奇地發現把style改個別的名字就部出錯了。
查了一下手冊,原來樣式表的處理是用專門的方法做的,它并不是一個通用的普通Element,Document提供了方法createStyleSheet()來生成一個StyleSheet對象,這個對象再有addRule等其它方法來操作。
文章來源:
http://blog.itpub.net/post/7956/48826