2008年04月06日

     看了很多BSP网站(主要是免费的),感觉到这不是一个一下子就能回答的问题。与其胡乱选择一个博客网站,用了很久再去总结得失成败,不如一开始就很明智地参考别人的意见。可以说没有哪个网站是完美的,反正也是个商业网站,我想对于大多数人,没必要过分偏执地执着某个选择,网站本身都想把用户拉过来,所以除了纯技术网站(这个也不是很细致,似乎也没必要),定位远没有达到清晰得不得了的程度。为了方便我的各个博客跟踪调整,建立一个统一表格式的博客网站比较专题,并不断更新,欢迎朋友们提供新的测试数据和使用体验。大家共同分享使用经验,推动BSP们改进网站体验,美化我们的生活,是这个路子吧? 

更进一步的讨论:

     其实,我认为博客最好的发展路子应该是下一代计算机用户模型之类的东西,大家都在服务器上有自己的空间或主机,随便自己放什么上去,可以付费提供,博客软件系统就是你的远程操作系统!谁说它不重要?

     我很自信地认为,博客网站的发展已经表现出这种迹象,比如google就正在朝这个方向努力!如果不想将来这方面被google垄断,我觉得其他比较优秀的博客网站,应该奋起直追,记得很多网站,比如DoNews等也作过类似的尝试,只不过没有成功而已,但是不能放弃,尤其是具有较好的用户基础的网站,做这个事情还是很有优势的。

2007年01月27日

Java2下Applet数字签名具体实现方法我的项目是使用APPLET制作一个实时消息队列监控程序,由于涉及到了本地资源,对APPLET一定要进行数字签名和认证。我使用的环境是WINDOWS2000,应用服务器是WEBLOGIC6.0,开发环境是JBUILDER4.0。之前我提醒大家一定要注意服务器端和客户端的概念。那些文件应该在服务器端,那些文件应该在客户端。
首先在客户端使用JRE1.3.0_01(JAVA运行环境1.3.0.1版本)以取代IE的JVM(JAVA虚拟机),可以到WWW.JAVA.SUN.COM网站上去下载,下载好了先在客户端安装好,安装过程非常简单。

在服务器端的调用APPLET的HTML文件中也需要将它包含进来,以便没有事先安装JRE的客户端下载,具体的写法,请接着往下看;

具体步骤如下:

服务器端:

1.将程序需要用到的各种包文件全部解压(我这儿要用到WEBLOGIC的JMS包使用命令jar xf weblogicc.jar),然后使用JDK的打包命令将编译好的监控程序.class和刚才解压的包一起打包到一个包中。(前提我已经将监控程序和解开的包都放在同一个目录下了),都是dos状态下的命令,具体命令见jdk1.3(1.2)的bin目录下, 命令如下:

jar cvf monitor.jar *.class

此命令生成一个名为monitor.jar的包

2.为刚才创建的包文件(monitor.jar)创建keystore和keys。其中,keystore将用来存放密匙(private keys)和公共钥匙的认证,alias别名这儿取为monitor。 命令如下:

keytool -genkey -keystore monitor.keystore –alias monitor

此命令生成了一个名为monitor.keystore的keystore文件,接着这条命令,系统会问你好多问题,比如你的公司名称,你的地址,你要设定的密码等等,都由自己的随便写。

3.使用刚才生成的钥匙来对jar文件进行签名 命令如下:

jarsigner -keystore monitor.keystore monitor.jar monitor

这个命令将对monitor.jar文件进行签名,不会生成新文件。

4.将公共钥匙导入到一个cer文件中,这个cer文件就是要拷贝到客户端的唯一文件 。 命令如下:

keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer

此条命令将生成monitor.cer认证文件,当然这几步都有可能问你刚才设置的密码。这样就完成了服务器端的设置。这时你就可以将jar文件和 keystore文件以及cer文件(我这儿是monitor.jar,monitor.keystore,monitor.cer)拷贝到服务器的目录下了,我用的是weblogic6.0,所以就拷贝到C:\bea\wlserver6.0\config\mydomain\applications \DefaultWebApp_myserver下的自己建的一个目录下了。

客户端:

1. 首先应该安装jre1.3.0_01,然后将服务器端生成的monitor.cer 文件拷贝到jre的特定目录下,我这儿是:

c:\program files\javasoft\jre\1.3.0_01\lib\security目录下。

2. 将公共钥匙倒入到jre的cacerts(这是jre的默认keystore) 命令如下:

keytool -import -alias monitor -file monitor.cer -keystore cacerts

注意这儿要你输入的是cacerts的密码,应该是changeit,而不是你自己设定的keystore的密码。

3. 修改policy策略文件,在dos状态下使用命令 policytool
系统会自动弹出一个policytool的对话框,如图4所示,在这里面首先选择file菜单的open项,打开c:\program files\javasoft\jre\1.3.0_01\lib\security目录下的java.poliy文件,然后在edit菜单中选择 Change keystore ,在对话框中new keystore url:中输入

file:/c:/program files /javasoft/jre/1.3.0_01/lib/security/cacerts

, 这儿要注意反斜杠,在new keystore type 中输入JKS,这是cacerts的固定格式,然后单击Add Policy Entry,在出现的对话框中CodeBase中输入:

http://URL:7001/*

其中的URL是服务器的IP地址,7001是我的weblogic的端口,如果你是在别的应用服务器上比如说是apache,那端口号就可以省略掉。
在SignedBy中输入(别名alias):这儿是Monitor然后单击add peimission按钮,在出现的对话框中permission中选择你想给这个applet的权限,这儿具体有许多权限,读者可以自己找资料看看。我这儿就选用allpeimission,右边的signedBy中输入别名:monitor
最后保存,在file菜单的save项。

当然你可以看见我已经对多个包实现了签名认证。

这样客户端的设置就完成了。在客户端用ie运行该applet程序时,会询问你是不是对该签名授权,选择授权后,包会自动从服务器下载到本地计算机,而且ie会自动启动jre,在右下栏中可以看见,相当于ie的java控制台。

4.调用applet的html文件

大家都知道由于java2的安全性,对applet的正常调用的html文件已经不能再使用了,而改为ActiveX类型的调用。具体的又分ie和 nescape的不同写法,这一些在sun网上都能找到现成的教程。我就不多说了,只是将我的这个小程序为ie写的的html给大家看看。
<html>
<META HTTP-EQUIV=”Content-Type” CONTENT=”text/html;CHARSET=gb2312″>
<center>
<h3>消息中心实时监控平台</h3>
<hr>
<OBJECT classid=”clsid:8AD9C840-044E-11D1-B3E9-00805F499D93″
width=”900″ height=”520″ align=”baseline” codebase=”http://192.168.2.217:7001/j2re-1_3_0_01-win-i.exe#Version=1,3,0,0″>
<PARAM NAME=”java_code” VALUE=”wise.monitor.applet.monitorApplet”>
<PARAM NAME=”java_codebase” VALUE=”monitor/classes”>
<PARAM NAME=”java_type” VALUE=”application/x-java-applet;version=1.3″>
<PARAM NAME=”ARCHIVE” VALUE=”monitor.jar” >
<PARAM NAME=”scriptable” VALUE=”true”>
</OBJECT>
</center>
</html>
其中我要强调一点,因为applet每一次的改动都需要重新打包签名,手续非常繁琐,所以在具体的实现中要将一些会变化参数放到html文件中来,传到applet中去,这一点网上文章好多,自己去看吧。
另外一个就是有朋友问我,那这样不是太麻烦了,每一个客户端都要进行复杂的dos命令操作,我只能说一目前我的水平只能将一个已经做好的客户端文件cer 文件和java.policy以及cacerts文件直接拷贝到客户端,当然这也有缺陷,如果别人的计算机已经有了认证,就会丢失。就这些问题我们可以一起探讨。
另外还有一点优化,就是在打包的时候,我这儿只讲了把所有要用的涉及到安全性的包和源程序到要打到一个包中。这样如果包非常大的话,会非常影响下载的速度,如果可以使用本地计算机的包就好了,这一点jre也做到了,具体的要到控制面板的jre控制台上去设置。这个就留着读者自己去摸索吧。

结束语

我发现网上java相关的资料非常少,中文的更少,所以希望自己能将一些小知识和大家共享,省掉许多重复的无用功。如果大家对这个问题还有不清楚的地方,或者就这问题相进一步展开讨论的,请和我联系,我的信箱是afeilb@163.net。希望我们能共同进步!

http://java.chinaitlab.com/advance/520330.html

from: http://zhidao.baidu.com/question/10671541.html

2007年01月21日

http://beansoft.bokee.com/

来源:
http://www-900.ibm.com/developerWorks/cn/java/j-jar/index.shtml

先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar –help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 …
选项:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的〕文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信息
-0 只存储方式;未用ZIP压缩格式
-M 不产生所有项的清单(manifest〕文件
-i 为指定的jar文件产生索引信息
-C 改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按’m’ 和 ‘f’标志指定的相同顺序。

示例1:将两个class文件存档到一个名为 ‘classes.jar’ 的存档文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 ‘mymanifest’ 将 foo/ 目录下的所有
文件存档到一个名为 ‘classes.jar’ 的存档文件中:
jar cvfm classes.jar mymanifest -C foo/ .

来个小例子试试看:
我们只有一个HelloWorld,如下:
public class HelloWorld{
    public static void main(String[] args){
       System.out.println(“Hi, Hello World!”);
    }
}
我将这个java文件存到C盘跟目录下,ok,接下来,
在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错 hello.jar 。
基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。
紧接着我们看看如何运行我们的jar包。
在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
就是这样。这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行)。这个就是我们之前写的那个类,也就是我们的入口类。也即,
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld

接下来,我们在命令提示符里执行:
jar umf MANIFEST.MF app.jar
这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。你不妨可以再进去看看是不是添上了Main-Class: HelloWorld这一句。
Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:
java -jar hello.jar(执行)
出现了什么,――Hi, Hello World!

我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:
先准备我们要打包的资源。
找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新建classes文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文件web.xml。Ok,目前我们初步建立了一个简单的web应用。
这是HelloWorld.java:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>Hello, World!</TITLE></HEAD>");
out.println("<BODY>");
out.println("Hello, World!");
out.println("</BODY></HTML>");
}
}//end here!
对它编译。下面是web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
‘-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN’
http://java.sun.com/j2ee/dtds/web-app_2_3.dtd& #39;>
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
开始压缩,形成war档:
在命令提示符下进到先前创制的hello目录下,执行 jar cvf hello.war * ,我们便得到hello.war。将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:
<Context path="/hello" docBase="hello.war" debug="0"
reloadable="true"/>
大功告成!运行它,启动tomcat,后在浏览器中输入 http://localhost:8080/hello/HelloWorld ,有了吗?
最后,如果你想用ant来完成以上的打包活动,下面就告诉你:
对于jar来说。在build.xml中,
<target name="jar">
<jar destfile="${app_home}/hello.jar">
<fileset dir="${dest}" includes="**"/>
<!–fileset dir="${dest}" includes="**/action.properties"/–>
</jar>
</target>

对于war,
<war warfile="hello.war" webxml="./WEB-INF/web.xml">
<fileset dir="html"/>
<lib dir="lib/">
<exclude name="oracle*.jar"/>
</lib>
<classes dir="build/servlets">
<include name="**/*.class"/>
</classes>
</war>
好了,就这么多,希望对你有点帮助。:)
我上传了上面打过的两个包,hello.jar和hello.war。

第一rar文件对应的是hello.jar,下载后将其名改为hello.jar
第二rar文件对应hello.war,下载后改为hello.war。
这是由于上传不了jar格式和war格式的文件,你只好照我上面说的去做了 :)

补充:
############
jar基本操作:
############
1. 创建jar文件
jar cf jar-file input-file(s)
c—want to Create a JAR file.
f—want the output to go to a file rather than to stdout.
eg: 1)jar cf myjar.jar query_maintain_insert.htm

2)jar cvf myjar.jar query_maintain_insert.htm
v—Produces verbose(详细的) output.

3)jar cvf myjar.jar query_maintain_insert.htm mydirectory

4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory
0—don’t want the JAR file to be compressed.

5)jar cmf MANIFEST.MF myjar.jar yahh.txt
m—Used to include manifest information from an existing manifest file.

6)jar cMf MANIFEST.MF myjar.jar yahh.txt
M—the default manifest file should not be produced.

7)jar cvf myjar.jar *
*—create all contents in current directory.

2. 察看jar文件
jar tf jar-file
t—want to view the Table of contents of the JAR file.
eg: 1)jar vft yahh.jar
v—Produces verbose(详细的) output.

3. 提取jar文件
jar xf jar-file [archived-file(s)]
x—want to extract files from the JAR archive.
eg: 1)jar xf yahh.jar yahh.txt(仅提取文件yahh.txt)

2)jar xf yahh.jar alex/yahhalex.txt(仅提取目录alex下的文件yahhalex.txt)

3)jar xf yahh.jar(提取该jar包中的所有文件或目录)

4. 修改Manifest文件
jar cmf manifest-addition jar-file input-file(s)
m—Used to include manifest information from an existing manifest file.

5. 更新jar文件
jar uf jar-file input-file(s)
u—want to update an existing JAR file.  

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1421162

 

结构

jar [ options ] [manifest] destination input-file [input-files]

说明
jar 工具是个 java 应用程序,可将多个文件合并为单个 JAR 归档文件。jar 是个多功能的归档及压缩工具,它基于 ZIP 和 ZLIB 压缩格式。然而,设计 jar 的主要目的是便于将 java applet 或应用程序打包成单个归档文件。将 applet 或应用程序的组件( .class 文件、图像和声音)合并成单个归档文件时,可以用 java 代理(如浏览器)在一次 HTTP 事务处理过程中 对它们进行下载,而不是对每个组件都要求一个新连接。这大大缩短了下载时间。jar 还能压缩文件,从而进一步缩短了下载时间。此外,它允许 applet 的作者对文件中的各个项进行签名,从而可认证其来源。jar 工具的语法基本上与 tar 命令的语法相同。

jar 工具的输入文件分为三种类型:

清单文件(可选)
目标 jar 文件
待归档的文件
通常用法是:

    % jar cf myjarfile *.class

在这个示例中,当前目录中的所有类文件都被放置到名为 "myjarfile" 的文件中。清单文件由 jar 工具自动生成,并且始终是 jar 文件的第一项。缺省情况下,它被命名为 META-INF/MANIFEST.MF。清单文件是存储与归档有关的元信息的地方。有关如何将元信息储存到清单文件的详细信息,参见清单规范。

如果事先已有一个清单文件且希望 jar 工具将它用于新的 jar 归档,则可以用 -m 选项来指定它:

    % jar cmf myManifestFile myJarFile *.class

清单使用 RFC822 ascii 格式,因此,很容易查看和处理“清单文件”目录。

选项
 
可用以字母 ‘@’ 开头的参数指定包含额外参数的文件,此文件一行一个参数。这些参数插入命令行的 ‘@<filename>’ 参数所在之处。

c
在标准输出上创建新归档或空归档。
t
在标准输出上列出目录表。
 
x file
从标准输入提取所有文件,或只提取指定的文件。如果省略了 file,则提取所有文件;否则只提取指定文件。
 
f
第二个参数指定要处理的 jar 文件。在 c (创建)情形中,第二个参数指的是要创建的 jar 文件的名称(不是在标准输出上)。在 t(表)或 x(提取)这两种情形中,第二个参数指定要列出或提取的 jar 文件。
 
v
在标准输出设备上生成冗长的输出结果。
 
m
包括指定的现有清单文件中的清单信息。用法举例:
jar cmf myManifestFile myJarFile *.class

0
只储存,不进行 ZIP 压缩。
 
M
不创建项的清单文件。
 
u
通过添加文件或更改清单来更新现有的 JAR 文件。例如:
jar -uf foo.jar foo.class

将文件 foo.class 添加到现有的 JAR 文件 foo.jar 中,而

jar umf manifest foo.jar

则用 manifest 中的信息更新 foo.jar 的清单。

-C
在执行 jar 命令期间更改目录。例如:
jar -uf foo.jar -C classes *

将 classes 目录内的所有文件加到 foo.jar 中,但不添加类目录本身。

如果有的“files”是目录,则该目录将被递归处理。

示例
将某个特定目录中的所有文件加到归档文件中:

C:\WWWROOT\JAVA> ls
12/09/96 12:20a <DIR> .
12/09/96 12:17a <DIR> ..
12/09/96 12:18a 1,010 0.au
12/09/96 12:18a 946 1.au
12/09/96 12:18a 1,039 2.au
12/09/96 12:18a 993 3.au
12/09/96 12:18a 1,006 4.au
12/09/96 12:18a 1,016 5.au
12/09/96 12:18a 1,048 6.au
12/09/96 12:18a 980 7.au
12/09/96 12:18a 1,064 8.au
12/09/96 12:18a 989 9.au
12/09/96 12:19a 48,072 spacemusic.au
12/09/96 12:19a 527 at_work.gif
12/09/96 12:19a 12,818 monkey.jpg
12/09/96 12:19a 16,242 Animator.class
12/09/96 12:20a 3,368 Wave.class
17 File(s) 91,118 bytes
414,983,168 bytes free

C:\WWWROOT\JAVA> jar cvf bundle.jar *
adding: 0.au
adding: 1.au
adding: 2.au
adding: 3.au
adding: 4.au
adding: 5.au
adding: 6.au
adding: 7.au
adding: 8.au
adding: 9.au
adding: Animator.class
adding: Wave.class
adding: at_work.gif
adding: monkey.jpg
adding: spacemusic.au
C:\WWWROOT\JAVA>

如果您的 html 目录中已有图像、音频文件和类的子目录,可以将每个目录归档到单个 jar 文件中:

C:\WWWROOT\JAVA> DIR
12/09/96 12:11a <DIR> .
12/09/96 12:17a <DIR> ..
12/03/96 06:54p <DIR> audio
12/06/96 02:02p <DIR> images
12/09/96 12:10a <DIR> classes
6 File(s) 207,360 bytes
414,983,168 bytes free

C:\WWWROOT\JAVA> jar cvf bundle.jar audio classes images
adding: audio/1.au
adding: audio/2.au
adding: audio/3.au
adding: audio/spacemusic.au
adding: classes/Animator.class
adding: classes/Wave.class
adding: images/monkey.jpg
adding: images/at_work.gif
C:\WWWROOT\JAVA\Animator> dir
12/09/96 12:11a <DIR> .
12/09/96 12:17a <DIR> ..
12/09/96 12:11a 207,360 bundle.tar
12/03/96 06:54p <DIR> audio
12/06/96 02:02p <DIR> images
12/09/96 12:10a <DIR> classes
6 File(s) 207,360 bytes
414,983,168 bytes free

C:\WWWROOT\JAVA\Animator>

然后可以用 jar 工具和 "t" 选项查看 jarfile 中的项名:

C:\WWWROOT\JAVA\Animator> jar tf bundle.jar
META-INF/MANIFEST.MF
audio/1.au
audio/2.au
audio/3.au
audio/spacemusic.au
classes/Animator.class
classes/Wave.class
images/monkey.jpg
images/at_work.gif
C:\WWWROOT\JAVA\Animator>

用长格式进行列举(用 "v" 选项)将显示归档文件中各文件的更为详细的信息,例如各文件的大小和上次修改时间:

C:\WWWROOT\JAVA\Animator> jar tvf bundle.jar
145 Thu Aug 01 22:27:00 PDT 1996 META-INF/MANIFEST.MF
946 Thu Aug 01 22:24:22 PDT 1996 audio/1.au
1039 Thu Aug 01 22:24:22 PDT 1996 audio/2.au
993 Thu Aug 01 22:24:22 PDT 1996 audio/3.au
48072 Thu Aug 01 22:24:23 PDT 1996 audio/spacemusic.au
16711 Thu Aug 01 22:25:50 PDT 1996 classes/Animator.class
3368 Thu Aug 01 22:26:02 PDT 1996 classes/Wave.class
12809 Thu Aug 01 22:24:48 PDT 1996 images/monkey.jpg
527 Thu Aug 01 22:25:20 PDT 1996 images/at_work.gif
C:\WWWROOT\JAVA\Animator>

jar的基本用法

jdk的工具中,经常用有java, javac, jar, javadoc,一般介绍java,javac的文章比较多,而介绍jar的用法比较少。有时候,为了临时打包一个文件,要查jar的帮助,很烦。
以下是常用的方法:
1、用一个单独的文件创建一个 JAR 文件 jar cf jar-file input-file…
2、用一个目录创建一个 JAR 文件 jar cf jar-file dir-name
3、创建一个未压缩的 JAR 文件 jar cf0 jar-file dir-name
4、更新一个 JAR 文件 jar uf jar-file input-file…
5、查看一个 JAR 文件的内容 jar tf jar-file
6、提取一个 JAR 文件的内容 jar xf jar-file
7、从一个 JAR 文件中提取特定的文件 jar xf jar-file archived-file…
8、运行一个打包为可执行 JAR 文件的应用程序 java -jar app.jar

 http://ajaxchina.my.aiddi.com/

 

    由于工作忙,一段时间没上某个网站,我在它上面的blog全部不翼而飞!非常气愤,于是我决定搬家。

    我几乎把排名在前面的多家提供blog服务的网站试了一个遍(恕不提供具体名字,近两年前十名没问题):

(1)网站即规模较大(稳定,blog一般不会意外关闭或丢失);

(2)且速度较快(重视用户体验(我不能容忍把用户当试验品),对blog不只是捎带玩玩,或财力不足);

(3)支持图文混排(这个对于一些技术、专业或娱乐题材,恐怕都有需要,我目前还不需要过多的媒体支持);

(4)管理blog速度与访问一样快,上传容易。

    基于以上考虑,我发现donews是不错的选择,故撰文向有此需求的用户推荐。

不足之处:

(1)不能上传大文件,速度极慢,不能成功,超时错误

(2)对图像的处理似乎不理想

    01-21-2007,cleni

2007年01月20日

 
 
作者:Jakob Nielsen, 翻译:William Long
 
 
  博客是网站的一种形态,因此对于网站易用性的一些指导方针同样适用于博客,但是博客是一种特殊类型的网站,他们的一些独特的特性会产生一些完全不同的可用性问题。
 
 
  博客的一个最伟大的好处是它本质上将你从“网站设计”中解放了,你写一篇文章,点一个按钮,它就发布到互联网上,不需要那些平面设计、网页设计、交互设计、消息架构,任何编程和服务器维护都不需要了。
 
 
  博客出现的结果,使得建立网站更简单了,互联网上的写作群体爆炸性地增长,这是简单易用的重要性的一个明显证明。
 
 
  博客的第二个好处是,他们是天然的内容供应者:他们依靠链接和短评而流行,你不一定要写一片完整的论文或者处理原始的调查报告,你只需要找到网上一些有趣的站点链接,并尽可能多地发表自己对其的评论或者增加一些例子。显然,这比运作一个常规网站要容易的多,而且这同时也不会减少他人的利益。
 
 
  博客的第三个好处是,博客是一种社会生态系统(通常也叫博客圈),和原来的反馈循环很类似:任何一篇好文章都是用过其他网站的链接得到宣传,使得更多的读者/作者看到这篇好文章,然而更多人添加这篇文章的链接,这样的结果是,链接频率导致齐夫定律,好文章得到更多的链接。
 
 
  一些人的确只是把博客当做私人日记,只给家庭成员或者亲密朋友访问,博客可用性指导方针通常不会用在这种网站上,因为读者事先的交往和动机比那些第三方用户更重要。不过,当你的博客需要一些陌生的新读者的时候,可用性就显得很重要了。
 
 
  同样,当你的读者来自企业内部网,可用性依然十分重要,因为你的读者都是企业人。
 
 
  可用性指导内容
 
 
  要使得你有源源不断的新读者,并且不流失已有的读者,那么,检查一下你的博客是否已经修改了以下的可用性问题。
 
 
  1. 没有作者介绍
 
 
  如果你是一个企业博客,那么你不可能不添加一个完整的“关于我们”这样的栏目。同样道理,对于一个个人博客来说,添加一个“个人介绍”页面的最基本理由是:用户想知道他们在看谁的文章。
 
 
  这只是一点小小的信任问题。匿名文章相对于署名文章来说可信度会降低,而且除非个人非常有名,我们不能简单说这是Joe写的文章。读者想了解关于Joe的更多事情,他是否有足够的资格在这某个问题上发表评论,他的评论是否可信。(就算你不能正式证明你是可信的,只要你看上去真诚,读者就会信任你)
 
 
  2. 没有作者照片
 
 
  即使博客系统有照片功能,很多博客往往也忽略了提供作者照片。照片之所以重要,是因为以下两个原因:
 
 
  1)它提供了一个更为个性化的作者形象。你用一个最简单的方法就可以增强你的可信度,因为你没有隐瞒。同样,用户会更为相信那些他们见过面的人。
 
 
  2)它连接了虚拟世界和现实世界。以前认识你的人会认出你的照片,看过你网站的人,在现实生活中也会认出你(比如,如果是企业内部博客,在公司会议或者公司餐厅里别人会认出你)。
 
 
  人类大脑的记忆力主要其中在一个人的面部,对许多人来说,相貌比名字更容易记忆。
 
 
  同时,如果你希望自己的经营的博客被报纸引用,你应该提供一个可供下载的高分辨率图片。
 
 
  3. 没有意义的文章标题
 
 
  可悲的是,即使很多有天赋的博客,在写作的时候也很少采用规范性的写作指导方针。这些规范适用于文章内容,但最主要的还适用于文章标题。标题必须要抓住文章内容的要点。避免那些和文章不相关的可笑滑稽、毫无意义的标题。
 
 
  文章的标题是整个文章的精华和浓缩,应该认真对待,在字字千金的基础上,标题的编写是所有写作中最重要的。
 
 
  好的文章标题对于搜索引擎、RSS订阅器等外部环境显得尤为重要,在这些环境下,用户往往只看到标题就可以确定是否应该点击进入查看文章的全部内容。即使用户看到了标题下有一些简短摘要(例如大部分搜索引擎所做的),测试数据表明,人们往往只读标题。你需要面对的另一个现实是,人们在阅读大量信息的时候往往只看标题的前三、四个单词。
 
 
  举例来讲,以下就是典型的坏标题:
 
 
  这就是你需要的东西
 
 
  嗨,大家好!
 
 
  被抛弃的受害者
 
 
  一些好的标题例如:
 
 
  关于日食的照片展示
 
 
  停车场支付给政府4百万元用以解决虚假案例的通过(标题虽然太长,但是只读前几个单词,你还是可以知道大概的意思)
 
 
  冰激淋售卖车在教堂开张了
 
 
  最后一个标题是和宗教相关的博客,如果你写关于冰激淋产业的博客,那么应该把“教堂”写在前面,因为你全文的内容都和冰激淋有关。
 
 
  4. 链接没有说清楚要去的地方
 
 
  许多作者觉得这么写链接很酷:“一些人认为”或者“更多内容参见这里那里”,请记住网络最基本的一条:点一个未知的链接是在浪费时间。所以一定要告诉人们他们将要点击的是什么内容,打开后会看到什么。
 
 
  一般情况下,你需要在链接文字或者漂浮文字中提供一个尽可能多的资料。你也可以使用链接的title属性来补充那些你不想在内容里写的文字(查看title的效果,讲鼠标停到链接上即可)。
 
 
  类似这一类的错误还有使用缩写,例如,当你在文章中提到的你熟人的小名的时候,除非你只写给你的朋友,不要将你的新访客排斥在你的小圈子之外。网络并不是学校。
 
 
  5. 埋没经典的文章
 
 
  当你写的好文章已经得到读者的肯定的时候,不要急于将其归档,否则用户只能通过寻找发布日期来找到这篇文章。
 
 
  因此,你需要在你的重要区域直接链接这些文章,比如,我在写300个专栏前,写着“阅读本文前,请先阅读‘101个可用性’和‘网站设计十大错误’”。
 
 
  同时你还要记得,经常链接一下你过去写的文章,不要相信你的读者从一开始就读你的博客,把文章的背景等知识告诉你的读者,他们愿意多了解你的想法。
 
 
  6. 只有日历导航
 
 
  时间线索也许是最好的存档方式,但并不是最好的导航方式。多数博客软件提供了按类型分类的方式,这样用户可以方便地找到某个栏目的全部文章。使用这样的分类,但是不要把一篇文章加上所有的分类,要具有选择性,将文章发布在最合适的栏目中。
 
 
  栏目必须足够详细,使用户彻底了解栏目的含义。同时,不能让用户面对一个非常详细到类似菜单似的选择,那很难阅读和理解,通常来说10到20多个栏目是比较合适的。
 
 
  在每一栏目的首页中,重点强调一下最新发布的文章。
 
 
  7. 发布没有规律
 
 
  网站设计的基本原则是确立并符合用户的期望。对于一个博客来说,就是用户必须能够提前知道下次的更新会发生在什么时候。
 
 
  对于大多数博客来说,最好能够每天更新,但对于某些话题来说,每星期甚至每个月更新也可以接受。在这两种情况下,选择一个固定的发布日期,并坚持下去。如果你通常每天都写,但有时突然中断了几个月,不进行任何更新,那么你就会失去大部份忠诚而且是最有价值的读者。
 
 
  当然,如果你实在无话可说,那就不要发布文章了,网络污染是种罪过,为保证正常的发布,可以先保留一些想法,等其成熟后再去发布。
 
 
  8. 混乱的主题
 
 
  如果你总在发表不同类型的主题,你就不太可能吸引一批忠实的高价值用户。忙碌的人们只会去阅读他们感兴趣的话题,如果他们感兴趣的话题掺杂在大量其他话题之间,那么他们可能不会继续阅读,只有那些闲得发慌的人才会去阅读所有的话题(这些人往往是低价值用户)。
 
 
  你的内容越集中,你的读者就越集中。这又使你在你的小环境中更具影响力。所以,为了树立权威,你的主题要始终如一。
 
 
  如果你实在想说些其他的话题,那么就建立两个博客站点,并在两者之间相互做适当的链接。
 
 
  9. 忘了你将来的老板可能也会看到你的文章
 
 
  无论你在网上写什么东西,不管博客也好,论坛也好,甚至是电子邮件,你都要想一下,十年后你的老板看到这些会是什么想法。一篇文章一旦发布出去,就无法收回来了,文章会被存档、转载、甚至散布到很多你永远都不知道的网站上。
 
 
  试想一下,多年以后的某一天,当你的老板开始考虑雇佣你做一些核心工作的时候,他会去查询一下你过去的资料(只需要在Google上搜索一下就可以全部搜索出来),这时候,他会发现有人曾经以你的名字发布了那么多不成熟的“分析”或者一些令人厌恶的脏话和争吵。
 
 
  三思而后行,如果你不希望你以后的老板看到这篇文章,那么就不要发布它。
 
 
  10. 有个博客服务商的域名
 
 
  使用一个博客托管的空间(你的博客地址是采用类似blogspot.com、typepad.com这样的域名),等同于使用一个免费电子邮件地址或者免费地球村的主页一样,对于一个新手来说可能是无所谓的。
 
 
  但是,你使用别人的空间,意味着你的命运在被别人掌握着。他们可以随心所欲地降低服务质量,还可以随意提高收费,他们可以在你页面顶部加闪烁的广告或者弹出窗口,他们可以把你的竞争对手的广告放在你的首页。是的,你可以选择离开,但是你要为此付出代价:忠诚读者的损失,和其他网站的交换链接的失效,搜索引擎级别的降低。
 
 
  你使用免费博客托管服务的时间越长,你付出的代价就越惨重。是的,使用那些免费博客服务可以很容易、很迅速地建立一个完全免费的博客空间,但是,一个域名的费用只需要每年8美元,而你获得的不仅仅是你个人的域名,还有你的未来。当你认识到你是在很认真地写作的时候,就应该立刻放弃别人掌握的那种域名,而使用自己独立的域名,你拖延的时间越长,你最终转移时所遭受的痛苦就越大。
 
 
  原文地址:Jakob Nielsen – Weblog Usability: The Top Ten Design Mistakes
 
 
  译文地址:William Long – 博客可用性:十大错误设计
 
 
  转载时候请保留原文和译文的链接地址,禁止商业网站转载。
 
 
  我对这篇文章的看法:观点3-10我都同意,但是不同意1和2,我认为中国的博客不应该提供作者介绍和作者照片,一个原因就是文章中的第九条,为了不让老板看到而放弃自己的真实想法是可悲的,另外的原因是,这两条只有在法律健全的国家才能适用,在中国目前的社会环境和网络环境下完全不适用,在很多情况下人们的安全根本无法得到法律的保护,奢谈什么“可信度”无异于痴人说梦。人们要做的首要事情是自己保护自己,其次才是写文章,当一个人连自身的安全都无法保证的时候,发布自己真实的名字和照片只会给自己带来各种不必要的麻烦。

No.1:博客网——http://www.bokee.com/(前博客中国 Blogchina.com)
旧时王榭堂前燕,飞入寻常百姓家。

博客网对于市场以及主流舆论的敏感度是无可厚非的,这是它吸引用户的致命魅力,也是其能在各种排名、各种评价中一直高高居于榜首的重要因素。其改版之后的主页仍以强调信息为主,类似新浪等媒体门户网站。博客网拥有的一大批“精英群体”,在信息力量和引领舆论方向上起到了非常关键的作用,他们的声音正是大众关注的焦点,其门户的影响力是所有博客网站中最突出的。

但从强调“精英群体”过渡到强调“分享”,博客网似乎转变了方向,而其整体感觉仍然 “贫富悬殊”。博客网不会放弃它赖以支撑的“精英力量”,却又尴尬的徘徊在“大众博客”的边缘,使大众对其整体定位产生疑惑。与此同时,其极不专业的Blog技术,让博客们在使用中倍感不便。

No.2:DoNews——http://www.donews.com/
竹外桃花三两枝,春江水暖鸭先知。

主页内容结合与IT业相关的新闻以及Blogger的评论作品,版面风格简洁而条理清晰,定位针对于IT、记者行业,风格突出,而用户群体的关注点也相对集中,社区内部气氛热烈,给IT人士提供了一个良好的交流平台,在IT圈的影响力很大。Blog的界面和模板承袭网站自身的风格,比较简单。

由于定位明确,用户集中,所以该网站在IT业界名声出众,影响力绝对不可小视。然而用户群体相对比较局限,非IT圈的人普遍都不知道DoNews,不能实现大众化的交流。另外,由于Blog用户界面和模板比较简陋,对一部分强调“趣味性”、追求时尚的用户没有足够的吸引力。

No.3:博易——http://www.anyp.cn/
横看成岭竖成峰,远近高低各不同。

AnyP免费个人主页在延续简单实用特点的同时,通过推出风格多变的页面模板、功能组件的多样化服务,深受年轻用户的喜爱。其宗旨即是为AnyP(Any–People,任何人)提供“更好玩”的网络家园,博易AnyP以厚实的技术实力为前卫、活力的年轻群体提供了无穷无尽的博客乐趣。其用户非常活跃,归属感强,参与积极。

不过,也正是由于博易这样的发展路线,其用户素质总体显得良莠不齐,玩网的用户占大多数,真正有影响力的文章不多,很多用户网站更适合称之为“个人主页”或者“企业主页”而非博客的感觉。主站上比较缺乏真正属于“博客”自己的内容。

No.4:中国博客——http://www.blogcn.com/
人面不知何处去,桃花依旧笑春风。

中国博客网依赖“热点话题”、“博辩擂台”、“图片博客”等各种项目,将Blogger们的精华展现在主页上。它还通过举办各种“辩论”、“擂台”,促进Blogger之间的交流。

但中国博客的用户局限比较明显,不利于自己的传播及普及。在“木子美之遗情书”事件逐渐趋于正常化之后,中国博客人气上升趋势已经大不如前。另外,中国博客服务的稳定性有所欠缺,时不时挂出的“系统正在维护”的免战牌让博客们倍受折磨,尤其是对新用户不够友好。

No.5:博客动力——http://www.blogdriver.com/default.html
湖光秋月两相和,潭面无风镜未磨。

博客动力页面比较简单,其中的栏目都重在推荐Blogger的文章和评论。其Blog模板数量和样式都居于中位,风格偏向清新整齐,而Blog设置与博客网基本一样,只是目录有些不同。

主页信息杂乱,强调“最新”,而忽视了“精华”,虽然人人都有展示机会,但是没有相对应的分类栏目来体现群体性,于是就很像BBS中的“灌水区”,没有自己的特点和定位。模板风格趋于同一化,没有新意,而Blog操作界面和博客网一样,会让初用者摸不着头脑,而且界面设计比较粗糙。

No.6:天涯博客——http://www.tianyablog.com/
孤帆远影碧空尽,唯见长江天际流。

天涯博客最重要的特点是它植根于天涯社区,而天涯社区是一个发展得很成熟的社区,里面已经形成的大量用户群体是支撑天涯博客前进的动力。天涯博客的注册和使用十分简单,容易操作,而且与社区的结合使得其博客群体有种天然的归属感。但由于系统设计十分简单,不完善的地方还有很多,如提供的图片空间小,系统不够好用,日志的检索非常不便,敏感字设置太多太滥等。

No.7:博客大巴——http://www.blogbus.com/
孤舟蓑笠翁,独钓寒江雪。

由于自身定位,博客大巴的首页没有大量的信息,而用户的评论和文章也需要进入二级页面“排行”等才能看到,整个页面风格告诉用户,“我们专注于Blog”,在注册和使用的过程中,它也秉承“简洁、易用、人性化”的原则。博客大巴最引人注目的一点在于其模板的精致美观,这是众多博客托管网站都做得不够好的地方,而也正是这一点,为它吸引了大量时尚的、知性的用户。

但博客大巴的优势主要体现在模板上,在后台技术上就稍有欠缺,Blog的功能趋于简单,界面风格清新但比较简陋,系统问题也常有发生。同时,在用户Blog的展示上没有分类,基本是通过最近更新和点击率来完成,没有好的社区气氛。

No.8:中国软件——http://blog.csdn.net/
洛阳亲友若相问,一片冰心在玉壶。

中国软件是业界内部比较优秀的网站,上面的信息针对性强,用户定位明确,有一个很好的IT社区气氛,同时,网页上的内容对用户群也很有帮助,除了技术型很强的文章外,也有一些较有深度的评论性文章。网站设计风格鲜明,简单清晰,条理分明,Blog模板承袭同样风格,而Blog设置方面,也简单易操作。不过Blog模板很简单,几乎没有选择余地,Blog设置也过于简单,只有基本的功能。但基于网站特殊的定位,这一点可以理解。

No.9:歪酷网——http://www.yculblog.com/
春风十里扬州路,卷上珠帘总不如。

专心做博客的极至。甚至连普通的博客会有的对子站点的宣传和一些排名都没有,貌似只提供了一个管理的空间给个人。其实专心做博客并不是坏事,但是既然专心了,就应该做到最好。但我们看到无论从模板还是Blog的系统设置,它都处于初级阶段。Blog操作界面简单但是非可视化操作,无论做什么都需要验证码虽然是为了帮助用户保密,但数量如此频繁,不禁让人心生烦躁。首页由于缺少人工编辑,内容质量不高。

No.10:你的博客网——http://www.yourblog.org/
嘈嘈切切错杂弹,大珠小珠落玉盘。

你的博客网很鼓励用户自己制作模板,这对于崇尚个性自由、不喜受约束的专业用户来说是一大优势。它很容易注册并登陆,但是登陆后的的操作让用户深感不够人性化,而且页面简陋,填写日志的时候,不是可视化的操作,并规定了日记的内容不能太少,否则就不能记录,在更换模板时,不能很清晰的看见模板,而且模板没有特色。有些操作比较复杂,录入完文章后还要到另一个地方去更新,比较麻烦。面对竞争,几乎没有自己的特点。首页由于缺少人工编辑,内容质量不高。

from: http://blog.sina.com.cn/u/4a046879010004ey

怎样录制PPLIVE网络电视的节目
用迅雷可以的,简单的设置一下就行了.一.在下拉菜单中选择\"在默认播放器中播放\",随即会启动Windows Media Player(以下简称WMP)并开始播放节目。二.在控制中的设置中选择共享煤体文件.三.在选择节目属性找到地址,粘贴到迅雷中就可以了.
 
录制PPLive上的节目
 
 
 
 
 
   摘自太平洋电脑网                    http://www.pconline.com.cn/
 
 
 
 
    选择了在网上看电视,P2P网络电视软件肯定是首选。关于使用软件的选择,这方面已经说的很多了,请参看《精彩想看就看!八大网络电视软件频道评测》。
 
 
  这些软件的使用也很简单,也不多做介绍,有疑问的朋友可以到相应软件的主页去看看使用方法。下面为大家介绍一下使用得较多的PPLive、PPStream和QQ直播在线节目的录制方法。点击进入PPLive的主页、PPStream的主页和QQ直播的主页。
 

 
 
 
一、录制PPLive上的节目
 
 
  首先安装PPLive,播放需要录制的节目,比如CCTV-5。对着左侧的播放窗口右键,在下拉菜单中选择"在默认播放器中播放",随即会启动Windows Media Player(以下简称WMP)并开始播放节目。
 
 
 
 
 
 
图1 在PPLive启动WMP播放节目
 
 
  在WMP的右侧的播放列表中对着“1”单击右键,选择“属性”,在窗口中可以看到一个地址http://127.0.0.1:8888/1.asf,拖动鼠标可选中,复制。
 
 
 
 
 
 
图2 查看节目属性
 
 
 
 
 
 
 
 
图3 WMP播放PPLive节目的地址
 
 
  在不关闭WMP和PPLive的情况下,启动下载工具Flashget(迅雷也可以),新建下载任务,确定,即开始节目的录制。停止下载就是停止录制节目。停止后,只需将文件的文件名1.asf.jc!改为1.asf,双击即可开始播放。
 
 
 
 
 
 
图4 用Flashget下载PPLive播放的节目
 
 
二、定时录制PPLive的节目
 
 
  有时晚上不能熬夜,又不想错过比赛,怎么办?让电脑到时间自动录比赛吧。这时需要用到Flashget的计划任务功能。Flashget的计划功能不仅能计划开始时间,还可以确定结束时间。方法如下:
 
 
  用PPLive播放节目后,启动默认播放器——WMP。当WMP开始正常播放PPLive的节目后,按照先前录制节目的方法把下载节目添加到Flashget中。在如图4所示的步骤时,选择"计划"。
 
 
  处于下载计划的任务如图5示。
 
 
 
 
 
 
图5 计划任务中的下载
 
 
  选择"工具"菜单,"选项",在"计划"标签中设置计划任务的启动时间,就可以录制某一个时间段内的节目了。
 
 
 
 
 
 
图6 为计划任务确定开始和结束时间
 
 
 
 
 
 
三、录制QQ直播的节目
 
 
  知道了PPLive的录制方法后,其它的网络电视软件录制方法就大同小异了。QQ直播的录制方法与PPLive差不多。先播放好需要录制的节目,对着播放窗口右键,“属性”。在弹出的窗口中复制地址,在Flashget中开始下载即可。
 
 
  QQ直播节目定时录制的方法和PPLive的方法相同,请参照上一页。
 
 
 
 
 
 
图7 在此查看QQ直播的节目地址
 
 
 
 
 
 
图8 QQ直播节目地址一目了然
 
 
四、PPStream的节目录制
 
 
  录制一样,关键是得到节目地址。在PPStream开始正常播放节目后,单击播放窗口,选择“默认播放器播放”,即开始用WMP播放节目。后面录制节目、定时录制节目的具体步骤与PPLinve相同。
 
 
 
 
 
 
图9 在PPStream中用WMP看节目
 
 
注意事项:
 
 
  一、经过测试,30秒的节目(在PPLive中显示码率为400的节目)文件大小为1713K,也就是说一分钟的节目大小为3.35M。PPLive上还有码率更高的节目,录制后的文件会更大,请注意。
 
 
  二、所有的录制过程都需要网络电视软件、WMP处于正常播放状态,Flashget才可以正确开始节目下载。
 
 
  三、录制的节目无法拖动进度条,使用Asf Tools可以修复此问题。用Asf Tools修复文件的方法见《修复不能拖放的ASF和WMV文件》。
 

 
修复不能拖放的ASF和WMV文件
出处:搜新网        责任编辑:zyq        [04-2-13 12:32]
  作者:吴朝相
        最近看见很多朋友都在问ASF和WMV文件消失了的拖放功能能不能修复,所以也就简单的写了这篇东西。其实ASF和WMV文件之所以不能拖放很多时候都是因为下载流媒体的软件在重建文件的时候缺少了一些必要的标志数据而造成的。

  另外也有一些是因为播放软件的问题,用Media Player 7.0播放不能拖放的ASF文件,用旧的Media Player 6.4就可以正常播放(这个版本的播放器在Program Files\Windows Media Player\mplayer2.exe)。另外你也可以用YAAN写的ASFFIX 0.22这类的软件来修复,但如果论方便和功能强大,就当论ASFTOOLS这个软件了。

  下载并安装好ASFTOOLS后,你就可以马上运行该软件了,先用Add按钮添加要处理的目标ASF 或者WMV文件,然后按下Advanced按钮。

 
 
之后就进入了高级命令菜单,如下图:

 
 

  接着你只需要再按一下Make Seekable按钮和Repair按钮,如无意外你不刻就可以得到一个可以拖放的ASF或WMV文件了。由上图不难看出在这个窗口里面还有很多ASF文件的状态标志值可以修改,如果你的ASF还有其它一些问题的话,也可以一并选上然后修复。其实用来控制能不能拖放的关键就是两个标志值Seekable Flag和Live Flag,这两个标志值的组合关系如下图:

 
 

  看到这里我想你应该明白该如何做了吧,好了,再见!;)