Archive for the ‘原创技术文章’ Category

安装了一个防spam的插件

五月 18th, 2007

我这个wordpress这几天垃圾评论越来越多,好像是什么工程设备作黑帽seo的,很是气愤。于是google了一下,安装了一个叫Did You Pass Math的插件,地址是 http://www.herod.net/dypm/,遇到了一些问题,记录下来。
1.有中文版,但是编码好像有点问题,把英文版的自己修改了一下,问题解决,保存的时候注意时utf8编码就可以了
2.里面报错用的函数有点问题,数据会乱码,主要是没有指定编码,需要把里面的fail和fail函数替换成wp_die(这个函数的输出也不太好,准备回头再改改)
3.最后一个问题是输出格式的问题,这个插件要在网站的输入框下面添加一个输入框,部分代码如下

<p id="answerdiv">
<input type="text" name="answer" id="answer" size="6" tabindex="4" />
<label for="answer">
<?=$dypm_strings['question']?></label>     
</p>
         <script type="text/javascript">
            var urlField = document.getElementById("url");
            var submitp = urlField.parentNode;
            var answerDiv = document.getElementById("answerdiv");
            submitp.appendChild(answerDiv, urlField);
       </script>

answer的位置是乱的,查了一下,是因为上述js代码是找到id为url的input,然后在它的parentNode后append一个answerDiv
但是结果却是在url所在的p里面,本来应该是:
<p>id="url" </p>
<p>id="answer"</p>
结果却是
<p>id="url" <p>id="answer"</p></p>
google了一下,不知道怎么直接用js解决(如果您知道,请告诉我哦),于是用了jquery,把上述javascript代码改成了

<script type="text/javascript">
$
("#url").parent().after($("#answerdiv"));
<
/script>

问题解决。
I love jquery!

Popularity: 15%

比dnslookup好的dns查询工具-dig

五月 17th, 2007

dig (domain information groper) 是一个功能强大的dns查询工具,比我们常用的dnslookup好很多,有使用方便,信息丰富等优点。
基本的用法是
dig @server name type

上面@server的意思是指定的dns服务器,如果没有设置,就是用本机默认的设置
name是要dig的域名
type是要查询的纪录类型,如果没有设置,默认的是查询A纪录

所以,最简单的用法是
dig sina.com.cn
输出

; <<>> DiG 9.2.4 <<>> sina.com.cn
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7164
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;sina.com.cn.                   IN      A

;; ANSWER SECTION:
sina.com.cn.            600     IN      A       202.108.33.32

;; AUTHORITY SECTION:
sina.com.cn.            52074   IN      NS      ns3.sina.com.cn.
sina.com.cn.            52074   IN      NS      ns1.sina.com.cn.
sina.com.cn.            52074   IN      NS      ns2.sina.com.cn.

;; ADDITIONAL SECTION:
ns1.sina.com.cn.        52074   IN      A       202.106.184.166
ns2.sina.com.cn.        52074   IN      A       61.172.201.254
ns3.sina.com.cn.        52074   IN      A       202.108.44.55

;; Query time: 101 msec
;; SERVER: 210.21.119.139#53(210.21.119.139)
;; WHEN: Thu May 17 09:33:34 2007
;; MSG SIZE  rcvd: 147

HEADER部分
显示
QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

意思是由1个查询,1个结果,3个验证部分,和3个附加部分
QUESTION部分
显示我们查询的问题
;sina.com.cn. IN A
意思是我们查询sina的a纪录,还可以mx,txt等其他类型
ANSWER 部分,
自然就是我们要的结果了,600是ttl的数值
AUTHORITY
可以看出dns数据是从那里来的,现在显示应该是sina自己的dns服务器。
ADDITIONAL部分
显示的是上述dns服务器的ip地址。

怎么样,感觉到dig的强大了么?

dig一下ebay的所有纪录

[juym@mail ~]$ dig ebay.com ANY   

; <<>> DiG 9.2.4 <<>> ebay.com ANY
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51159
;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 4, ADDITIONAL: 1

;; QUESTION SECTION:
;ebay.com.                      IN      ANY

;; ANSWER SECTION:
ebay.com.               2339    IN      MX      10 data.ebay.com.
ebay.com.               2339    IN      MX      10 lore.ebay.com.
ebay.com.               2069    IN      TXT     "spf2.0/pra mx include:s._sid.ebay.com include:m._sid.ebay.com include:p._sid.ebay.com include:c._sid.ebay.com ~all"
ebay.com.               2069    IN      TXT     "v=spf1 mx include:s._spf.ebay.com include:m._spf.ebay.com include:p._spf.ebay.com include:c._spf.ebay.com ~all"
ebay.com.               1431    IN      A       66.135.192.87
ebay.com.               12050   IN      NS      smf-dns1.ebaydns.com.
ebay.com.               12050   IN      NS      smf-dns2.ebaydns.com.
ebay.com.               12050   IN      NS      sjc-dns1.ebaydns.com.
ebay.com.               12050   IN      NS      sjc-dns2.ebaydns.com.

;; AUTHORITY SECTION:
ebay.com.               12050   IN      NS      sjc-dns2.ebaydns.com.
ebay.com.               12050   IN      NS      smf-dns1.ebaydns.com.
ebay.com.               12050   IN      NS      smf-dns2.ebaydns.com.
ebay.com.               12050   IN      NS      sjc-dns1.ebaydns.com.

;; ADDITIONAL SECTION:
data.ebay.com.          2318    IN      A       66.135.195.180

;; Query time: 2 msec
;; SERVER: 202.96.209.6#53(202.96.209.6)
;; WHEN: Thu May 17 10:36:28 2007
;; MSG SIZE  rcvd: 506

linux和unix下有这个工具,也有windows的版本,请到
www.isc.org
下载
bind for windows
现在的版本是

http://ftp.isc.org/isc/bind9/9.4.1/BIND9.4.1.zip

安装后就可以在win下用dig工具了

其他的使用可以参照

http://bbs.chinaunix.net/viewthread.php?tid=229316

(我好像没跑出来结果):(

Popularity: 29%

html tips&faq

五月 16th, 2007

html中的rel,rev是什么?
这2个标记主要是用于表示文档之间的联系,rel是从源文档到目标文档的关系;rev是从目标文档到源文档的关系
经常用到的属性如下:

Alternate — 定义交替出现的链接
Stylesheet — 定义一个外部加载的样式表
Start — 通知搜索引擎,文档的开始
Next — 记录文档的下一页.(浏览器可以提前加载此页)
Prev — 记录文档的上一页.(定义浏览器的后退键)
Contents
Index — 当前文档的索引
Glossary — 词汇
Copyright — 当前文档的版权
Chapter — 当前文档的章节
Section — 作为文档的一部分
Subsection — 作为文档的一小部分
Appendix — 定义文档的附加信息
Help — 链接帮助信息
Bookmark — 书签

使用严格的DOCTYPE(xhtml1-strict.dtd)时不能用 target=”_blank” 标记的解决
这么处理,据说是因为不经过允许就开新窗口是不友好的。
有一种方法是javascript+rel属性
html的写法

<a href="http://www.juyimeng.com" rel="external">新建窗口打开</a><br/>
<a href="http://www.juyimeng.com">当前窗口</a><br/>
<a href="http://www.juyimeng.com" rel="external">新建窗口打开</a><br/>
<a href="http://www.juyimeng.com">当前窗口</a><br/>

javascript的一种写法:

function externallinks() {
 
if (!document.getElementsByTagName) return;
 
var anchors = document.getElementsByTagName("a");
 
for (var i=0; i<anchors.length; i++) {
  
var anchor = anchors[i];
  
if (anchor.getAttribute("href") &&
      
anchor.getAttribute("rel") == "external")
    
anchor.target = "_blank";
 
}
}
window.onload = externallinks;

如果你用jquery,就更简单了,代码如下:

$(document).ready(function(){
    $
("a[@rel=external]").each(function(i){
        
this.target="_blank"
    
});
});

别忘了load jquery.js哦。

Popularity: 18%

用telnet发邮件(支持smtp认证)

五月 13th, 2007

1.用telnet连到远程服务器

可以

telnet mail.test.com 25

或者

telnet mail.test.com smtp

2.跟服务器打招呼

HELO mail.test.com

服务器应该返回
250

如果服务器smtp需要验证,进行第三步,否则到第四步
3.输入

AUTH LOGIN

会一次提示你
334 VXNlcm5hbWU6

334 UGFzc3dvcmQ6
后边的内容是提示输入用户名和口令,信息是经过base64编码的
输入的用户名和口令也要经过编码,这里是一个编码、解码的工具
smtp认证通过后会显示
235 2.0.0 Authentication successful
4.写信
输入

MAIL FROM: <juhui@test.com>

RCPT TO: <phpbird@test.com>

分别是发自,发往
如果正常都应该返回250
输入

DATA

开始写信

Subject:test mail
test email
.

250 2.0.0 Ok: queued as 93223136C8E
退出

QUIT

Postfix上试用通过。

Popularity: 36%

UltraEdit正则表达式不能用的问题

五月 10th, 2007

有P说ultraedit的正则不能用了,还发了图如下:
ue-regux

一般出现这种情况有如下几种情况
1,检查regex的模式,确认configuration如图:
ultraedit regular expression
并且在search或者replace的时候勾选上”regular expression”
2,到www.ultraedit.com看看有没有hotfix
3,照镜子,检查一下自己的人品

以上顺序按照出现的概率排序。

Popularity: 23%

用jquery控制图片的最大宽度

五月 5th, 2007

选了这个3 columns的wordpress模板,发现一个问题,就是如果图片比较大,页面的排版会被撑乱,css正在学习中,还没搞清楚到底该咋改,如果您能帮我请留言。
正好看了一些jquery的资料,就拿这个问题来练手,基本思路是查看所有网页上的图片,如果大于一个数值,则设定宽度,否则,就按照原来的尺寸显示。代码如下:

  1. $(document).ready(function() {
  2. $("img").each(function(i){ 
  3.     var maxwidth=screen.width-$("#column2").width()-$("#column3").width()-100;
  4.     if (this.width>maxwidth)
  5.      this.width = maxwidth;
  6.     });
  7. });

第一行不用解释了吧?
第二行是查找所有img标签,每一个做后边的function处理
第三行设定最大的宽度,我这里取得是屏幕分辨率减去左右2列的宽度和一个常量。
第四,五行判断图片的宽度,如果超过这个宽度则设其宽度为允许的最大宽度。

现在看来,第三行应该和第二行换一下,效率应该会高些,这么写还有一个问题就是必须浏览器最大化才正常,还有什么好的解决方案呢?
————
想做一个点击阅读全部,显示所有内容的功能,对用户体验有好处,二来对seo有好处,还没时间做,空下来再说吧。

Popularity: 18%

bash shell(bash) 快捷键

四月 27th, 2007

基本功:
用上下键看命令的历史
左右键区修改内容
tab补齐命令名字或者目录,文件名字,不是唯一的多按2次,会出来列表
!ls 重复运行最后一条以’ls’开头的命令,如果先ls -l 然后ls -lcrt,那么!ls,相当于ls -lcrt

ls abc.txt
vi !$

第二行的vi !$相当于vi abc.txt,!$等于上一个命令的参数, ‘$’ 是根据上下文来说的最后一行,列等。

ctrl键组合
ctrl+a:光标移到行首。
ctrl+b:光标左移一个字母
ctrl+c:杀死当前进程。
ctrl+d:退出当前 Shell。
ctrl+e:光标移到行尾。
ctrl+h:删除光标前一个字符,同 backspace 键相同。
ctrl+k:清除光标后至行尾的内容。
ctrl+l:清屏,相当于clear。
ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
ctrl+u: 清除光标前至行首间的所有内容。
ctrl+w: 移除光标前的一个单词
ctrl+t: 交换光标位置前的两个字符
ctrl+y: 粘贴或者恢复上次的删除
ctrl+d: 删除光标所在字母;注意和backspace以及ctrl+h的区别,这2个是删除光标前的字符
ctrl+f: 光标右移
ctrl+z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。比如top -d1 然后ctrl+z ,到后台,然后fg,重新恢复
esc组合
esc+d: 删除光标后的一个词
esc+f: 往右跳一个词
esc+b: 往左跳一个词
esc+t: 交换光标位置前的两个单词。

您知道那些快捷键?请和大家一起分享。

Popularity: 21%

subversion “Propfind 302 found” error

四月 25th, 2007

svn服务出了问题,可以checkout,已经存在的文件,可以修改,提交,但是新加的文件add后不能commit。
报错说什么”Propfind xxx 302 found”

Adding: D:\workspace\test\New Text Document.txt 
Error: Commit failed (details follow): 
Error: PROPFIND request failed on '/svn/test/New%20Text%20Document.txt' 
Error: PROPFIND of '/svn/test/New%20Text%20Document.txt': 302 Found (http://svn.test.com)

google了一下,说是启用了ErrorDocument 404 handler 就会遇到这个问题,需要禁用Subversion目录特殊的404 error handling,
解决方法是添加

ErrorDocument 404 default

到svn的Location立面

改了之后,httpd.conf里面的svn配置大概如下:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
<Location /svn>                                 #设置访问路径
# Uncomment this to enable the repository,
DAV svn
# Set this to the path to your repository
SVNParentPath /data/svn_repository/
# The following allows for basic http authentication.  Basic authentication
# should not be considered secure for any particularly rigorous definition of
# secure.
# to create a passwd file                     #按下面的步骤创建Apache用户验证文件
# # rm -f /etc/apache2/dav_svn.passwd
# # htpasswd2 -c /etc/apache2/dav_svn.passwd dwhedon
# New password:
# Re-type new password:
# Adding password for user dwhedon
#

# Uncomment the following 3 lines to enable Basic Authentication
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile conf/extra/svnpasswd.file
# Uncomment the following line to enable Authz Authentication
AuthzSVNAccessFile conf/extra/dav_svn.authz
# The following three lines allow anonymous read, but make
# committers authenticate themselves.
#<LimitExcept GET PROPFIND OPTIONS REPORT>   
#允许匿名访问,不允许Commit,不能与AuthzSVNAccessFile同时使用
Require valid-user
#</LimitExcept>
ErrorDocument 404 default
</Location>

Popularity: 22%

awstats流量统计为空的解决方法

四月 24th, 2007

google的analytics不错,但是由于统计是用javascript来做的,如果浏览器禁用了js,那么就肯定没用了。你会问这年头谁禁用js?文本浏览器,搜索引擎的spider,而且,它不能统计你的数据流量,404错误等。

AWStats 是一个免费的,功能丰富、强大的日志分析工具,可以用在web,流媒体,ftp,代理服务器,mail服务器等,可以生成各样的图形统计图表,它基本可以分析你log的所有信息,有了它和google的analytic结合,就天下无敌了。
具体安装比较简单,请参照这里
我装了2台服务器,第一台很顺利,只要确认apache的log是combined模式,最后修改一下awstats.yourdomainname.conf这个配置文件里面的LogFile为正确的log地址,update后就可以看数据了了。有一点要提醒,安装前,最好备份以下你的apache的httpd.conf,因为它会去修改你的这个配置文件。等它修改好,你diff一下看他是否修改的正确,我就差点出了状况。只要设置正确的相关目录的读写权限就基本不会有太多其他问题了。
我装第二台机器出的状况是
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl update 之后,浏览量的统计为空,查了半天原因也没结果,上文里面说道的第二个问题提到了这个现象,但是我觉得不对,因为如果update正确的话,就不应该是LogFile设置的问题了,在最后要放弃的时候突然想了一下update后数据文件存放目录的权限,apache的启动组没有x权限,即执行权限,不能list数据文件,chmod a+x /var/lib/awstats/,再刷新,有了 :)
程序写的有点不够智能。
附:官方网站

Popularity: 17%

Adobe Dreamweaver CS3 尝鲜

四月 19th, 2007

Adobe Dreamweaver CS3 下载到了和破解一起,是一个crack的文件。
装了一下,下面是过程截图。

解安装文件压缩包的已经是adobe的style了,居然是中文的,吓我一跳,dw中文的字体不好看。

Adobe Dreamweaver CS3 解压缩包

要检查运行的程序,ie,ff,outlook都不能开。。

Adobe Dreamweaver CS3 检查运行的程序

选择安装位置的方式也焕然一新

Adobe Dreamweaver CS3 选择安装位置

开始安装。。漫长的过程,据说cs3的安装也是贼慢。

Adobe Dreamweaver CS3 的安装速度慢

终于完成了,show以下新的dw3界面
Adobe Dreamweaver CS3 界面
about页面,版本是:version 9.0 build 3453
Adobe Dreamweaver CS3 about

回头再写试用报告咯~

Popularity: 15%