Raymond
Java笔记

初初接触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、交友圈等等
posted @ 2006-01-12 21:48 Raymond的Java笔记 阅读(268) | 评论 (0)编辑 收藏
 
由一个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");

问题解决了。具体的机制还没有时间去了解,有空再回头研究吧。
posted @ 2006-01-09 17:39 Raymond的Java笔记 阅读(3896) | 评论 (1)编辑 收藏
 
历来对framework的感觉是“够用就可以”的原则。这次想用struts,主要希望jsp里面的逻辑代码不要太多。但代价当然是Action类会多起来。完全用Struts的设计,也不是不可以,但是复杂度提高的同时,换了一个不会用struts的人来做,要花太多时间讲解。折中了一下,决定只用Struts的Action,并且主要使用DispatchAction,这样Action的类不用太多。

至于Error和Message,暂时还是自己定义,Tag Library虽然是个好东西,但是让页面更加复杂了(个人感觉),暂时不用。

posted @ 2006-01-09 13:55 Raymond的Java笔记 阅读(115) | 评论 (0)编辑 收藏
 
用Ant在JDK1.5下运行java任务时,如果涉及jaxp的DOM,会抛出异常javax.xml.parsers.FactoryConfigurationError

解决方法:

把ant的lib下面的xercesImpl.jar放到你的classpath里面。

应该是ANT对应的classloader出了问题,感觉哪里是硬编码了必须拿这个xerces的实现类。
posted @ 2006-01-06 15:19 Raymond的Java笔记 阅读(1567) | 评论 (0)编辑 收藏
 

看到一篇文章批评google reader,说界面用了客户端的脚本变得有趣,但功能太简单。

也许是实话,但界面实在太重要了,有时甚至比功能重要。好的界面,起码第一眼吸引人,有多留一会的欲望。



posted @ 2005-12-24 22:00 Raymond的Java笔记 阅读(78) | 评论 (0)编辑 收藏
 
写了个SlideShow的原型,利用image的complete,判断图片是否调用完全,调用完全以后才显示,否则是LOADING的图片,还考虑的是
1.每调用一张图片之前先出现loading的过程,
2.调用图片中不会因为网速和图片过大而未显示全,直接跳到下一张,要按顺序一张一张播放.
3.第一次 播放的时候,因为调用图片会慢一点,重新播放是调用CACHE里的,速度就快了

代码如下:
<html>
<head>
<title>SlideShow</title>
<script language="JavaScript1.1">
<!--
var yourImages = new Array("http://blog.donews.com/images/blog_donews_com/dodo/79382/o_5540320040330075952.jpg","http://www.iqoo.com/tupian/%D0%C7%D7%F9%B1%DA%D6%BD/iqoo_1113__aries.jpg","http://blog.donews.com/images/blog_donews_com/dodo/79382/o_5540320040330081327.jpg","http://blog.donews.com/images/blog_donews_com/dodo/79382/o_5540320040330081426.jpg")
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
posted @ 2005-12-23 09:53 Raymond的Java笔记 阅读(120) | 评论 (0)编辑 收藏
 

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 命令,使用由 VISUALEDITOR 环境变量指定的编辑器来编辑该用户的 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
posted @ 2005-12-22 09:46 Raymond的Java笔记 阅读(163) | 评论 (0)编辑 收藏
 

一台旧机装了好多次都不成功,google一下原来因为RedHat对旧款CD-ROM的驱动支持很差。只好从硬盘装了。

用了Grub for Dos也是不成,后来用第一张碟上的一个iso映象烧了张启动盘,启动之后再选择从硬盘安装。OK!搞定了。



文章来源:http://blog.itpub.net/post/7956/48897
posted @ 2005-12-21 09:37 Raymond的Java笔记 阅读(95) | 评论 (0)编辑 收藏
 

从硬盘安装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
posted @ 2005-12-20 16:53 Raymond的Java笔记 阅读(110) | 评论 (0)编辑 收藏
 

想在HTML里面通过DOM用JavaScript操作,弄了半天无法将弄好的style节点插入document里面去。后来用排除法,惊奇地发现把style改个别的名字就部出错了。

查了一下手册,原来样式表的处理是用专门的方法做的,它并不是一个通用的普通Element,Document提供了方法createStyleSheet()来生成一个StyleSheet对象,这个对象再有addRule等其它方法来操作。



文章来源:http://blog.itpub.net/post/7956/48826
posted @ 2005-12-20 14:54 Raymond的Java笔记 阅读(137) | 评论 (0)编辑 收藏
仅列出标题
共3页: 上一页 1 2 3 下一页