在debian lenny上安装thinkpad t400无线驱动

安装完debian lenny后,常用的设备驱动都已经安装好,做一些日常应用已经没什么问题。接下来,我就开始配置无线网卡的驱动。

首先说一下我所用的无线路由器的配置。我的无线路由器是Linksys的WRT54G V4.0,无线网络名设置为easwy,使用WPA2 Person加密认证,出于安全的考虑,不广播SSID,并且只允许特定的MAC地址无线接入。

登录lenny后,使用/sbin/ifconfig看到已经存在一个名为wlan0的无线网卡,心中一阵暗喜,暗道Linux进步果然神速,对硬件的支持已经做的这么好。没想到正是这一时的大意,让我费了诸多周折。

既然无线网卡已经发现,驱动也已经装好,那么只需要配置一下应该就可以用了。于是打开文件/etc/network/interface,在这个文件里增加了无线网卡的配置:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

# The wireless interface
auto wlan0
iface wlan0 inet dhcp
	wpa-ssid "easwy"
	wpa-psk "xxxxxxxx"
	wpa-ap-scan 1
	wpa-scan-ssid 1 

简单解释一下wlan0的配置:

  • auto wlan0的意思是wlan0接口在系统启动时自动启动。
  • iface wlan0 inet dhcp的意思是这个接口使用DHCP来获取IP地址
  • wpa-ssid用来配置无线网络的SSID
  • wpa-psk配置连接easwy无线网络的密码
  • wpa-ap-scan 1wpa-scan-ssid 1主要用来扫描不广播SSID的无线接入点。因为我的无线路由器不广播SSID,所以加了这两条配置。

这样配置好后,使用/sbin/ifdown wlan0关闭wlan0网卡,然后再重新启用/sbin/ifup wlan0,发现无法获得IP地址,输出如下:

    run-parts: /etc/network/if-pre-up.d/wpasupplicant exited with return code 1
    Internet Systems Consortium DHCP Client V3.1.1
    Copyright 2004-2008 Internet Systems Consortium.
    All rights reserved.
    For info, please visit http://www.isc.org/sw/dhcp/
    
    wmaster0: unknown hardware address type 801
    wmaster0: unknown hardware address type 801
    Listening on LPF/wlan0/00:22:69:68:8b:86
    Sending on   LPF/wlan0/00:22:69:68:8b:86
    Sending on   Socket/fallback
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 13
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 9
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 14
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 17
    No DHCPOFFERS received.
    No working leases in persistent database - sleeping.
    --- in /var/wpa_supplicant.wlan0.log
    1235814861.502506: Cancelling authentication timeout
    1235814861.502518: WEXT: Operstate: linkmode=0, operstate=6
  

这时我还没怀疑到驱动的问题,还以为是自己配置的问题,于是开始进行各种检查。

首先查看一下T400 AA1所用的无线网卡芯片:

    # lspci -nn | grep Ethernet    
    00:19.0 Ethernet controller [0200]: Intel Corporation 82567LM Gigabit Network Connection [8086:10f5] (rev 03)
    03:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter [168c:001c] (rev 01)
  

从这里可以看出,我的无线网卡使用的是Atheros的AR242x系列芯片(具体型号是AR2425)。使用lsmod命令查看了一下网卡所使用的驱动是ath5k。在网上搜索了一下,似乎ath5k驱动可以驱动这个芯片,接下来又用/sbin/iwconfig查看了无线网卡的配置,似乎也没什么问题。

这样折腾了很久之后,开始怀疑是不是网卡驱动有问题?在debian wiki上搜索了一下,发现MadWifi是用的比较多的Atheros芯片驱动,抱着试试看的态度,尝试安装MadWifi驱动。

按照文章Atheros AR5xxx devices (MadWifi)的步骤,首先将下面的源加入到/etc/apt/sources.list文件中:


# Debian Lenny/5.0
deb http://ftp.us.debian.org/debian lenny main contrib non-free 

接下来更新源中的安装包列表,并且下载module-assistant和wireless-tools安装包:

aptitude update
aptitude install module-assistant wireless-tools 

编译安装madwifi-modules-*包:

m-a prepare
m-a a-i madwifi 

卸载athtk内核模块,然后加载atp_pci内核模块:

modprobe -r ath5k
modprobe ath_pci 

这样配置之后,再用/sbin/iwconfig命令查看一下无线网卡的状态,正常。

修改/etc/network/interface文件,把上面文件中的wlan0改为ath0,因为MadWifi驱动使用的网卡名称是ath0。这样修改后,使用/sbin/ifup ath0,哈哈,无线网卡可以正常工作了!

奉上/sbin/iwconfig命令和/sbin/ifup ath0命令的输出,以供参考:


    # /sbin/iwconfig ath0
    ath0      IEEE 802.11g  ESSID:"easwy"  Nickname:""
              Mode:Managed  Frequency:2.437 GHz  Access Point: Not-Associated   
              Bit Rate:1 Mb/s   Tx-Power:16 dBm   Sensitivity=1/1  
              Retry:off   RTS thr:off   Fragment thr:off
              Power Management:off
              Link Quality=0/70  Signal level=-96 dBm  Noise level=-96 dBm
              Rx invalid nwid:171945  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:0  Invalid misc:0   Missed beacon:0
    # /sbin/ifup ath0
    Internet Systems Consortium DHCP Client V3.1.1
    Copyright 2004-2008 Internet Systems Consortium.
    All rights reserved.
    For info, please visit http://www.isc.org/sw/dhcp/
    
    wifi0: unknown hardware address type 801
    wifi0: unknown hardware address type 801
    Listening on LPF/ath0/00:22:69:68:8b:86
    Sending on   LPF/ath0/00:22:69:68:8b:86
    Sending on   Socket/fallback
    DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 4
    DHCPOFFER from 192.168.1.1
    DHCPREQUEST on ath0 to 255.255.255.255 port 67
    DHCPACK from 192.168.1.1
    bound to 192.168.1.100 -- renewal in 37824 seconds. 
  

参考文档

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/thinkpad_t400_wireless_driver_for_debian_lenny/

文章的脚注信息由WordPress的wp-posturl插件自动生成

为vi/vim自动更新tag文件和cscope数据库

xyf问:

请教大哥一个ctags或cscope使用的问题,我的开发工程很大,有上百万行代码,

之前使用sourceinsight,每次编辑代码,会自动更新函数、变量等符号信息,使用vim替换sourceinsight后,每次修改源代码后,如果不手动更新一下tag和cscope.out,相关的跳转就会不正确了,但是更新的话又要很久,请问有没有增量更新tag或cscope.out,或者你是如何解决这个棘手的问题的?谢谢!

这个问题我在写vim使用进阶: 使用标签(tag)文件时也想过,当时在网上查找了很多资料,不过并没有找到一个好的解决方法。后来在开发的过程中,实时更新tag文件和cscope数据库的需求并不强烈,也就放下了。

刚好xyf问这个问题,我把当时我的一些想法写出来,供大家参考。这些都只是初步的想法,没有经过实际的验证。有兴趣的朋友可以试一下,把试验结果反馈给我。

我以Linux系统为例,在windows上应该也能够实现(借助cygwin,以及windows的计划任务)。

其实source insight自动更新函数、变量等信息都是在后台自动进行的,那么我们也可以考虑在后台自动更新tag文件和cscope数据库。

在Linux下,我们可以利用cron守护进程来完成后台自动更新的操作。思路是,让cron进程每隔15分钟(或者更短)扫描一下tag文件和cscope数据创建后发生改变的项目文件,然后为这些项目文件单独生成一个tag文件和cscope数据库。我们知道,在vi里我们可以同时添加多个tag文件和cscope数据库,我们只要把发生改变文件的tags和cscope数据库加到vim里,应该就可以查找、跳转新增的函数了。不过这样做有一个缺点:就是那些修改过的文件,会在vim的tag文件和cscope数据库中出现两次(在原有tag文件中以及新生成的tag文件中),也许会造成使用的不便。

另外,还可以在稍长的时间里(比如一小时)由cron自动为项目中全部文件生成一次tag文件和cscope数据库,并把修改文件的tags和cscope数据库清空。如果担心为全部项目生成tag文件太耗系统资源的话,可以使用Linux中的at守护进程来生成全部文件的tag和cscops数据库,at服务只在系统空闲时才会运行。

下面给一个demo脚本,来自动查找项目中最近改变的文件,并为其生成tag文件和cscope数据库(未经过测试):

#! /bin/sh

# This demo script will find the modified files in your project,
# and generate a ctags file and cscope database for these files.
# This script is NOT tested yet!
# by Easwy Yang, 2009/03/29

# vars
PRJ_DIR=/home/easwy/prjtest
PRJ_TAG_FILE=${PRJ_DIR}/tags
PRJ_MOD_TAG_FILE=${PRJ_DIR}/newtags
PRJ_MOD_CSCOPE_FILE=${PRJ_DIR}/newcscope.out
MOD_FILES=${PRJ_DIR}/mod_files

FIND=/usr/bin/find
CTAGS=/usr/bin/ctags
CSCOPE=/usr/bin/cscope

# find modified files
# you can modify this command to exclude the object files, etc.
${FIND} ${PRJ_DIR} -type f -newer ${PRJ_TAG_FILE} > ${MOD_FILES}

# generate tag file
${CTAGS} -f${PRJ_MOD_TAG_FILE} -L${MOD_FILES}
${CSCOPE} -bq -f${PRJ_MOD_CSCOPE_FILE} -i${MOD_FILES} 

在这个脚本里,/home/easwy/prjtest是项目所在的目录,tags文件则是参考文件,在项目目录中修改日期比tags文件更新的文件都会被find命令查找出来,并且为之生成tag文件和cscope数据库。

希望对大家有所帮助,更希望这一块砖头,能引出更好的玉。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/automatically_update_ctags_tag_cscope_database/

文章的脚注信息由WordPress的wp-posturl插件自动生成

一个简单的Docbook 5.0例子

我使用Docbook写文档大约才一两个月的时间,但关注Docbook已经很久了,在网上也阅读了很多中文及英文的Docbook文档。一直没用Docbook的主要原因是Docbook 4.2的编译环境配置看起来很繁琐。我曾经尝试配置过一次,但看到一大堆catalog配置、SGML配置、OpenJade配置,最终放弃了。

直到有一天,我看到benr写的Playing With DocBook 5.0,才第一次真正书写Docbook文档。Docbook 5.0不再使用旧的SGML DTD,转而使用XML,编译环境配置简单多了。

下面我先介绍Windows下如何搭建Docbook 5.0编译环境,然后再以一个简单的Docbook 5.0文档为例,讲一下如何把Docbook文档转换成其它格式。

[ Windows下Docbook编译环境的搭建 ]

  1. 下载Docbook XSL样式表

    首先下载Docbook XSL转换样式表。我们只需要下载docbook-xsl-ns即可,目前的最新版本是1.74.3。下载后,把它解压到一个目录中,我这里假设解压到C:\docbook目录,也就是说,Docbook XSL所在的目录是: C:\docbook\docbook-xsl-ns-1.74.3\

    Docbook介绍一文中我讲过Docbook是”内容与格式分离”的,我们写Docbook文档时只关注文档的内容,而Docbook如何转换成其它文档类型,则由Docbook XSL转换样式表来定义。我们最常用的是转换到HTML格式的样式表,以及转换到FO格式的样式表。

  2. 下载xsltproc转换程序

    接下来,需要下载XML语言转换工具。我喜欢用的转换工具是xsltproc,这是一个由C语言写成的XML转换工具,它的特点是转换速度很快,并且同时支持Windows和Linux。除了这个转换工具外,还有很多Java写的转换工具,例如Saxon, Xalan

    我们到这里下载Windows版本的xsltproc,需要下载下面几个包:

    • iconv-1.9.2.win32.zip – 编码转换工具
    • zlib-1.2.3.win32.zip – 压缩工具
    • libxslt-1.1.24.win32.zip – XSL和EXSL转换工具,xsltproc程序就在此包中
    • libxml2-2.7.3.win32.zip – XML解析工具和处理工具,同时提供了验证工具xmllint和xmlcatalog

    下载后,把这些包解压到同一个目录里,假设解压到C:\docbook\xsltproc目录,解压后,你可以看到在C:\docbook\xsltproc\下多了三个目录:bin,include和lib。现在需要在环境变量PATH中增加C:\docbook\xsltproc\bin,设置后,再打开一个DOS窗口,可以直接输入xsltproc命令,不需要输入使用全路径了。

  3. 安装FOP

    安装了上面的两个工具,你就可以把Docbook文档转换成HTML格式了。如果你需要把Docbook文档转换成PDF格式,还需要安装把XSL-FO格式转换为PDF格式的转换工具,Apache FOP是一个不错的选择。不过我现在没有这方面的需求,暂时没有安装。据说配置Apache FOP支持中文比较繁琐,改天我试过再把经过写出来。(2009/04/11更新,关于Apache FOP的配置,参见文章使用Apache FOP将Docbook文档转换成PDF (一)

现在,Docbook的编译环境就建好了。相比Docbook 4.2,编译环境的搭建容易了很多,你不必再去配置catalog这些东西,因为Docbook 5.0已经不再需要文档类型定义了。

接下来,我们写一个简单的Docbook文档。

[ 编写Docbook文档 ]

你可以在这里下载本例中用到的文件,包括docbook.xml、docbook_easwy.xsl和Easwy的Makefile。

下面是一个简单的Docbook 5.0文档,把这段内容保存一下,例如,存为文件docbook.xml。

<?xml version='1.0' encoding="utf-8"?>
<article xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="zh-CN"
  xmlns:xlink='http://www.w3.org/1999/xlink'>
  <articleinfo>
    <title>我的第一篇Docbook 5.0文档</title>
    <author>
      <firstname>Easwy</firstname>

      <surname>Yang</surname>
    </author>
  </articleinfo> 
                  
  <section>   
    <title>文档介绍</title>

    <para>
      这是我的第一篇Docbook 5.0文档,欢迎你来到<link xlink:href='http://easwy.com/blog/'>Easwy的博客</link>。
    </para>
  </section>
</article> 

[ 将文档转换成HTML格式 ]

在转换之前,要先把输出编码设置为UTF-8。docbook-xsl-ns的缺省输出编码是ISO-8859-1,但对于中文字符,我们应该把输出编码设置为UTF-8,否则输出的文件会显示为乱码。

更改输出编码很简单,你可以直接修改你的C:\docbook\docbook-xsl-ns-1.74.3\html\docbook.xsl文件,在文件中找到

   <xsl:output method="html"
            encoding="ISO-8859-1"
            indent="no"/>     

把它改成

   <xsl:output method="html"
            encoding="UTF-8"
            indent="no"/>     

我一般是另外写一个xsl文件,在这个文件中包含标准的docbook-xsl,然后重新定义自己的编码为UTF-8。把下面的文件保存为docbook_easwy.xsl:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version='1.0'>
<xsl:include href="C:/docbook/docbook-xsl-ns-1.74.3/html/docbook.xsl"/>
<xsl:output method="html"
            encoding="UTF-8"
            indent="no"/>
</xsl:stylesheet> 

接下来,我们把上面的Docbook文档转换成HTML格式,使用下面的命令:

xsltproc -o docbook.html docbook_easwy.xsl docbook.xml 

如果你看到类似下面的提示,那么你的xsl不是docbook-xsl-ns,而是docbook-xsl。如果不想下载docbook-xsl-ns的话,忽略告警即可,这些告警并不影响使用。

1: Note: namesp. cut : stripped namespace before processing 我的第一篇Docbook 5.0文档

2: WARNING: cannot add @xml:base to node set root element. Relative paths may not work.

3: Note: namesp. cut : processing stripped document 我的第一篇Docbook 5.0文档

如果嫌每次输入转换命令太麻烦,可以把上面的命令保存为一个批处理文件。我在Windows里安装了Cygwin (参考这篇文章安装cygwin),所以一般用Makefile来转换Docbook源文件。我的Makefile内容如下:

# Docbook Makefile
# Easwy Yang

XSLFILE=docbook_easwy.xsl

XML_FILE=$(wildcard *.xml)
HTML_FILE=$(XML_FILE:.xml=.html)

.PHONY: html clean

html : $(HTML_FILE)

%.html : %.xml
	xsltproc -o $(@F) $(XSLFILE) $<

clean:
	rm *.html 

现在,我在vim里可以直接使用:make命令转换我的Docbook源文档了。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/a-simple-docbook-5-example/

文章的脚注信息由WordPress的wp-posturl插件自动生成

三星Android手机今年第三季度面世

昨天刚刚看到三星Android手机发布的消息,虽然未经官方证实。今天又看到报道,三星Android手机计划在今年第三季度面世。

引用DigiTimes的报道

根据三星公布的消息,三星公司的第一款Android手机和HTP即将发布的HTC Magic手机在设计上和硬件规格上都很相似。两款手机都使用Qualcomm的3.5G芯片解决方案。

 

三星首款android手机

看来还要等上一段时间啊。第三季度,华为的Android手机也该出来了,到时会有更多选择的空间了。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/samsung-android-phones-coming-in-q3-2009/

文章的脚注信息由WordPress的wp-posturl插件自动生成

vim邮件列表和论坛资源

SamPeng问,

vim的邮件列表?

其实我对邮件列表和新闻组很感兴趣。。是在不想再在google和baidu里面大海劳针了。。不知道大哥能否指教?

在国外,很多讨论都通过邮件列表进行。这是一种非常简单而又高效的讨论方法。不过在国内似乎不太流行,大家更喜欢论坛。

vim邮件列表使用Google Group建立。订阅邮件列表很简单,向下列地址发送一封邮件(有无内容均可),接下来会收到一封确认邮件,确认后就可以收到邮件列表中的邮件了。顺便说一句,这些邮件列表都是英文的。

根据自己的需要订阅下面的邮件列表:

也可以通过网页来访问邮件列表,使用下列URL:

另外,还有一个VIM的中文邮件列表,不过似乎不太活跃。HTTP访问在这里:

vim tips现在已经转成Wiki了,里面有很多vim的使用技巧,访问这里:

vim的中文论坛,推荐到水木社区的vim版。这里讨论比较活跃,有很多vim高手出没:

Happy Vimming!

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/vim-mail-list-discussion-group/

文章的脚注信息由WordPress的wp-posturl插件自动生成

三星发布首款Android手机

据国外网站报道,三星已经展示了它的首款Android手机,不过这个消息还未得到三星官方的证实。

下面是三星Android手机的照片,虽然图片已经被模糊处理,不过还是可以大致看出手机的外形。

三星首款android手机

这款手机配置了触摸屏,内置528MHz的处理器,还提供了可靠的内部存储空间和迷你SD卡扩展插槽。另外,这款手机还支持4频GSM模块,可以在更多的国家使用。

不过,从目前看来,这款Android手机还只是面向美国和欧洲市场。不知道在中国市场上,什么时候可以看到Android手机的身影。

消息来源:Samsung’s first Android handset revealed?

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/samsungs-first-android-handset-revealed/

文章的脚注信息由WordPress的wp-posturl插件自动生成

Docbook介绍

本文主要介绍一下Docbook是什么,下一篇将给出一个最简单的Docbook文档做为例子。

Docbook提供了整个书写结构化文档的体系,它使用SGML/XML定义了一系列文档元素,并可以利用工具把原始的文档源文件转换成各种文档格式。它最适合用来书写计算机文档、论文。很多开源软件项目都使用Docbook来写自己的文档。在我看来,使用Docbook写文档的好处有以下几点:

  • 内容与格式分离

    我们用Word写文档时,除了书写文档内容之外,还要经常对文档的样式进行排版。我们都知道,排版很是费时费力,还经常容易出错。

    而使用Docbook书写文档,你只需要专注于文档的内容。文章的内容和格式是分离的。Docbook定义了诸如章节(chapter)、段落(para)、表格(table)这些文档元素,但如何显示这些元素,则由样式表(XSL)来控制,你不必在文档中嵌入排版信息。

    这也意味着,你不能用”所见即所得”的方式来编辑你的文档了。不过,你很快就会喜欢上内容和格式分离的,因为这不仅节省了排版的时间、也使文档样式更为统一。另外,使用程序自动处理文档也变得更加容易了。

  • 多种文件格式输出

    使用Docbook书写文档,你只需要书写文档一次,就能够以多种文件格式输出。有很多免费的工具可以将Docbook文档转换成HTML、PDF,以及其它各种文件格式。

  • 便于版本管理

    这也是我选择Docbook的主要原因之一。因为Docbook的文档源文件是文本文件,因此可以方便的使用cvs, subversion, git等版本管理工具进行版本管理。

    在多人协作编写文档时,如果没有版本管理的功能,你很难知道别人对文档做了哪些修改,更别说回溯文档的历史。在公司里,一般可以通过约定规则的方法来控制冲突,即事先约定好,你只允许改哪几章,他只能改哪几章。但对开源世界的”大集市”开发模式来说,无法通过约定的方法来避免冲突,因此对文档的版本管理就显得非常重要。这就是为什么很多开源项目的文档都使用Docbook的原因。

  • 方便阅读

    阅读word文档,需要你安装了Macrosoft Word;阅读PDF文档,需要安装PDF阅读器。设想十年以后,当Word不再维护,而你又需要阅读一个十年前使用Word写就的文档,会怎么样?是的,你读不了,因为Word文档是二进制格式的,你必须使用特殊的程序才能阅读、编辑。

    但Docbook文档就不同了,你只要使用一个再普通不过的文本编辑器,就可以阅读、编辑Docbook的文档,因为它只是一个普通的文本文件。

  • 多平台支持

    在Windows上你可以使用Word来察看、编辑文档(不管用的是正版,或是盗版),但在Linux下怎么看Word文档呢?谢天谢地,现在有了Open Office。在以前,Linux下是无法察看Word文档的,因为它是一个二进制文件。

    Docbook是文本文档,因此,无论你是在windows下还是Linux下,都可以阅读、书写文档。而Docbook的转换工具大多由Java编写,也支持跨平台运行。这样一来,你可以在多种操作系统平台下使用统一的方式来管理你的文档了。

  • 多语言支持

    Docbook使用UTF-8字符集,因此,在文档中可以使用多国语言的字符集。这对国际化合作的项目来说很重要。

正因为Docbook有这么多的优点,所以我才将我的vim使用进阶系列文章使用Docbook重新整理了一遍(因为之前的Word文档因意外被损坏,无法打开)。今后我的文档也都会使用Docbook书写。就连博客上的文章,大部分也是先用Docbook书写,然后转换成HTML再发上来的。

如果你也对Docbook写文档有兴趣,可以在网上搜索一下相关的文章。我会陆续写一些Docbook的文章发表在Easwy的博客,欢迎交流。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/docbook_intro/

文章的脚注信息由WordPress的wp-posturl插件自动生成

WP-PostURL插件发布: 在文章末尾添加版本声明和文章的链接

插件页面链接:http://easwy.com/blog/wordpress/wp-posturl/

前些天写了一篇文章讲述如何在文章末尾添加版本声明和文章的链接,这需要用户自己修改主题的模板文件,比较麻烦。后来就想为什么不能把它做成一个WordPress插件,这样其它人做起来也方便些。

于是利用业余时间写了一个插件,WP-PostURL,来完成上述功能。

这个插件允许你在文章的开头或结尾处插入一段自定义的文字。这段文字可以是你的版权写明,也可以是广告,或者其它文字。

自定义文字允许使用HTML语句,另外,你还可以在自定义字符串中使用下面的变量:

  • %site_url% – 站点的URL链接
  • %site_name% – 站点的名字
  • %post_url% – 显示这段内容的文章的URL链接
  • %post_title% – 显示这段内容的文章的标题

更多使用方法,参见上面的插件介绍页面。

希望大家喜欢!

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/wordpress-wp-posturl-plugin-v10/

文章的脚注信息由WordPress的wp-posturl插件自动生成

使用插件去除评论分页所导致的重复内容

今天在Google网站管理员工具中发现有”重复的标题标记”问题,我的文章中应该没有重复标题呀?是什么造成的呢?

仔细一看,原来和wordpress新加的评论分页功能有关。在wordpress 2.7中支持对评论分页显示,这是一个很好的功能,因为在评论比较多时可以允许用户来翻页查看。不过搜索引擎在收录评论页时,也同时把该评论所在文章收录进去,这就导致出现重复内容、重复标题标记的问题。

因为网站上重复内容较多会产生不好的SERP,甚至会导致你的Page Rank降低,所以这个问题还是要解决一下。在网上搜索了一下,已经有人专门写了个插件来防止评论分页造成的重复内容。可以到Kaizeku Ban下载Avice提供的插件。我也把这个作者的插件放在我的网站上了,如果你访问不了此页面,也可以点击这里下载add_comment_paging_noindex_meta.php。把它上传到wordpress的插件目录,然后到后台页面中激活即可。

另外一个解决办法是干脆关闭评论分页的功能。我的博客上评论还不多,所以暂时关闭了此功能,这个插件也就用不着了。过几天再登录Google网站管理员工具,看看重复标题标记的问题是不是解决了。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/prevent-wordpress-27-duplicate-content/

文章的脚注信息由WordPress的wp-posturl插件自动生成

(译) Sitemap会影响搜索引擎蜘蛛吗?

[ 译注 ]

本文译自Do Sitemaps Affect Crawlers?。由Easwy翻译,转载请注明:转载自Easwy的博客 : http://easwy.com/blog/

看了这篇文章,你也要思考一下是否使用Sitemap生成器来生成Sitemap。对一个wordpress博客来说,它的网站链接结构很好,不会影响搜索引擎蜘蛛自然爬行,所以为了使Google尽快收录,最好使用Google XML Sitemaps Generator(Google XML网站地图生成器)来生成并提交你的Sitemap。我从一开始就使用了这个插件,发现Google收录我的新文章确实非常快,具体时间没有测试,应该在半小时内。

[ 译文 ]

就像其它人一样,我也形成了习惯,好的坏的都有。最近正为一个客户的网站工作,就像我一直以来的做法那样,我创建了一个sitemap,把它提交给了搜索引擎。我开始思考这样做是否真的对网站有帮助,以及当我提交sitemap时的影响是什么。

我联系到我的一个客户,他有一个受欢迎的博客,使用了WordPress和Wordpress的Google XML Sitemaps生成器插件。我请求他给我权限在他们的网站上安装一个监控搜索引擎机器人行踪的脚本。对那些不知道Google XML网站地图生成器的人解释一下,这个插件当你每次在WordProess里编辑或创建文章时,都会生成一个新的Sitemap,并把Sitemap提交给主要的搜索引擎。

我的客户经常在他们的博客上增加原创文章,通常一周2至3篇。我在他们网站上安装的脚本用PHP写的,会把搜索引擎机器人每次访问Sitemap、每次提交Sitemap、以及搜索引擎蜘蛛每次在网站上爬过的网页记录下来。这个脚本会把时间戳信息、IP地址、以及用户客户端记录到一个MySQL数据库中。我也修改了一下Google XML网站地图生成器,加入了给搜索引擎提交Sitemap的时间戳。

看一看数据!

这个实验的目的是看是否提交Sitemap到Google和Yahoo可以缩短Google爬行和收录页面的时间。在这个博客的测试结果让人吃惊!当提交Sitemap时,Google搜索引擎机器人访问新文章页面的平均时间是14分钟,Yahoo是245分钟。当不提交Sitemap时,搜索引擎机器人必须自己爬行到新的文章页面,Google用了1375分钟,而Yahoo用了1773分钟。这个平均值基于12篇文章计算,6篇提交Sitemap,6篇不提交。

当算出这个结果时,我想这应该是一个错误。我回到我的网站(GR Web Designs),然后迅速发表一篇文章并提交Sitemap到Google和Yahoo。30分钟后我检查我的监控脚本,Google已经访问过了,并且新页面已经被收录。Yahoo在Google后不久也这样做了。

看到搜索引擎蜘蛛在没有Sitemap的情况下爬行到新页面后的时间后,我一度以为这个网站的结构有问题,导致搜索引擎蜘蛛不能爬到新页面。但我和其它人都测试了网站的爬行,没有发现问题。我甚至发现搜索引擎蜘蛛已经爬到包含这篇新文章链接的页面,但却没有立即访问这篇新文章,而是后来才访问的。

我正在写这篇文章时,发现了Rand的My Advice on Google Sitemaps – Verify, but Don’t Submit,我由此感到很困惑。我提交Sitemap获得这么多好处,为什么还Rand告诉我不要提交Sitemap?在读完这篇文章后,我发现他对获得有价值的爬行数据更感兴趣。我使用的是WordPress,所有的页面都允许搜索引擎蜘蛛爬,为什么不提交Sitemap呢?特别是提交了有这么大的好处。

对那些和这个试验站点类似的网站,也就是知道自己的网站不存在影响搜索引擎蜘蛛自然爬行的网站,我建议他们提交Sitemap,因为这会使网页更快的被爬行和收录。如果你有一个网站你并不知道网站的结构是否有问题,我建议你不要提交网站地图,这可以帮助你确定你的网站结构是否存在问题。对那些有良好链接结构的网站,为什么不今天就提交Sitemap,那事情进行的更迅速呢?

我很高兴听到SEOmoz社区说他们也在使用网站地图,记住,这个实验只是在一个网站上完成的,如果从你们那获得更多的回馈,我会做更多关于Sitemap的研究。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/do-sitemaps-effect-crawlers/

文章的脚注信息由WordPress的wp-posturl插件自动生成