Archive for 三月, 2009

Date: 三月 25th, 2009
Cate: tools

用于调试监听程序HTTP传输的工具

开发中常有需要调试SOAP的时候, 有时不是自己的代码, 或者即使是自己的代码, 写日志也不方便, 或者SOAP Client根本没提供日志输出.
一般来说, 可以用一些抓包软件来抓传输HTTP时通过网卡的流量, 类似软件有wireshark等.但其中很大的不便在于网卡的流量是分包的,不容易完整的查看一个事务.
因此这个SoftX HTTP Debugger就有了用武之地.

它可以查看选定程序的HTTP流量,比如java.exe(含weblogic等),用来调试java程序的web service交互.

它可以调试,中途截断,或者返回自定义数据.

不过似乎不能调试HTTPS.

先点调试程序,然后选择程序

http_debugger1

正常操作程序

http_debugger2

可以查看接受到或者发出去的HTTP流量,如这里的SOAP的XML文件

http_debugger3

相当有用的工具,虽然不用的时候不需要,但想用的时候绝对可以提供极大的方便.

下载看这里http://www.greendown.cn/soft/3523.html

Date: 三月 13th, 2009
Cate: css

自定义上传按钮样式

上传控件的按钮与输入框是绑定一起的,所以不能单独自定义样式.
而浏览器因为安全问题,要求上传必须通过直接点击上传控件实现,而不能通过javascript间接调用.
所以为了页面美观,保持样式一致, 要么放弃使用上传控件改用flash, 要么就想方设法绕过去.

其中一种方法如下

customized_file_upload

源码在此

<style type="text/css">
.goButton {
    vertical-align:middle;
    cursor:pointer;
    width:auto;
    overflow:visible;
    font: bold 11px Arial, Helvetica, sans-serif;
    color: #F5F5F5;
    background-color: #626262;
    outline: 1px solid #626262;
    border: 1px solid #FFF !important;
    border: 3px double #626262;
    outline-bottom: 1px solid #626262;
    border-bottom: 1px solid #626262 !important;
    border-bottom:1px solid #626262;
    padding-left:4px;
    padding-right:4px;
}
.browseButton {
    position:absolute;
    top:0;
    left:250px;
}
.filediv {
    position:relative;
}
.file {
    position:absolute;
    top:0;
    left:0;
    cursor:pointer;
    FILTER: alpha(opacity=0); /* IE */
    -moz-opacity:0.0; /* Moz + FF */
    opacity: 0.0; /* CSS3 */
}
.fileText {
    position:absolute;
    top:0;
    left:0;
    width:248px
}
</style>
<div class="filediv">
    <div>
        <input type="button" value="Browse…" class="goButton browseButton" />
    </div>
    <div>
        <input type="file" class="file" hidefocus="true" size="37" onchange="document.getElementById(‘tt’).value=this.value;" /> 
    </div> 
    <div> 
        <input type="text" id="tt" readonly="true" class="fileText" /> 
    </div>
</div>

如果要移动这个控件,可以定义filediv的位置. <
br />此方法有一点不足,用以代替的按钮只有一部分位置可点击,所以切记不要写很多文字.

Date: 三月 8th, 2009
Cate: 未分类

MSN无法登陆的可能原因及解决方法

买了新电脑,装了新的2003,装了msi版的MSN,装了该装的或可能不需要的组件,居然发现MSN报各种莫名的以800和810开头的错.网上的各种方法也都试过,但都不奏效.

问题解决的路径是这样的:

1. 正常登陆总是有各种莫名错误

2. 发现测试的时候似乎检查端口的时候很慢, 且有时行有时不行

3. 使用了IE代理的时候能顺利登陆

4. 于是想是否端口被限制

5. 将路由DMZ主机设置成本机, 结果依然不能顺利登陆

6. 检查windows防火墙, 结果根本没开

7. 偶然想起卡巴斯基有安全防御, 其中有相关web监控, 于是查看什么内容

8. 有监控端口, 其中有MSN端口1863端口.

9. 去掉对1863端口监控, 结果MSN能顺利登陆

总结: MSN无法登陆的时候检查下端口通讯是否良好, 是否有杀毒软件监控端口, 这次纯属卡巴斯基好心办坏事.

Date: 三月 5th, 2009
Cate: css

css中一个元素具有多个class时的顺序问题

在jQuery中

$tabDivs.addClass(‘tab‘);
$tabDivs.hover(function(){
    $(this).addClass(‘tabHover’);
}, function(){
    $(this).removeClass(‘tabHover’);
});

是很常见的代码,一个div具有tab class,当鼠标移上去时具有tabHover class,移出时失去tabHover class, 一般的,tabHover具有background属性.

从来没有想过有一天这种写法居然会失效, 原因是tab后于tabHover在style中定义.

一个简单的实验说明问题:

<style type="text/css">
.blue{
    background:blue;
}
.red{
    background:red;
}
</style>
<div class="blue red">test1</div>
<div class="red blue">test2</div>

显示的结果全部是红色背景,因为red后于blue定义在style中.换言之, blue后于red定义的话,就会全部显示蓝色.

说穿了,其实是很简单的道理, 所谓 覆盖 是也.

所以前面的js代码就诡异的不好用了.

结论是,以后类似情况下,要注意多个class定义的顺序,或者是尽量避免不同class具有相同属性.

Date: 三月 4th, 2009
Cate: 未分类

什么是完美的静态化插件

在wordpress之前,我用的是oblog,一个asp的多用户blog程序,它的静态化不错,虽然也还不是最完美.

wordpress有wp-cache, wp-super-cache, hyper-cache, cos-html-cache, 1 blog cacher, 效果也都可以, 但总体来说仍然十分粗糙.

那么完美的静态化插件应该是什么样的?我想它应该符合一些条件.

1. 能够生成静态文件,并且显示样式应该与之前一样.

1. 可预生成, 也可第一次访问时生成

2. 做到0数据库访问,最好做到0php处理,只由apache处理,在数据库宕机情况下仍能访问

3. 能够生成html文件

4. 支持gzip时生成gz文件

5. 可配置浏览器缓存, 如过期时间

6. 确认生成静态页是否成功, 如判断源码中是否包含</html>, 以防生成包含错误代码的静态页面

2. 支持wordpress mu

1. 可以分站点缓存,按站点域名存放

2. 按URL路径放置,方便管理

3. 可配置允许不同站点使用同一套缓存文件, 原因是多个不同域名可能指向同一个站点

4. 能够列出所有缓存文件,能够分站点列出,限制用户可见范围

5. 可改写.htaccess文件使得在没有php情形下找到正确缓存文件

6. 作为mu插件,只能管理员可见. 为方便用户定制, 应该通过权限判断给出适合用户定制的选项页面

3. 对动态内容的处理

1. 一般处理方法为为匿名用户返回缓存, 为登录用户禁止缓存

2. 尝试使用服务端包含机制(SSI, Server Side Include), 即生成shtml的方式, 将动态部分如侧边栏,评论,数据统计部分作为子页面被生成的静态页包含,最终做到静态页完全不受动态数据影响

3. 如果服务器不支持SSI,可使用ajax方式引用动态部分的小静态页,从而仍然做到原静态页不受影响

4. 创建,更新和删除

1. 可定期清理缓存文件, 可禁止清理缓存文件(永不过期)

2. 能够列出符合条件的缓存文件,如超过180日的缓存文件

3. 采用SSI时,原动态页面被缓存部分能够手工更新

4. 可局部生成或重建和删除, 可按站点生成, 可选按postid, postname, permailink, 或通过查询条件选出后, 勾选再执行.按postid执行时,可选区间

5. 批量生成或删除时可选一次多少页后暂停多长时间, 以此来限制CPU使用率, 而免于被停机

6. 多种更新触发机制, 可选发文,评论,更新模板触发, 后台手工触发等

5. 对某些情形不使用缓存或永远缓存

1. 对某些范式不使用缓存.如wp-*.php之类

2. 对某些页永远使用缓存, 如openid配置文件, 关于页等

3. 对某些情形不使用缓存, 如搜索引擎(特殊user-agent值), feed等

6. 支持gzip

7. 方便调试, 方便确认效果, 如在页面源码中添加特殊字符

8. 以上条件都有开关选项以方便定制

因此按以上要求看来,现在还没有一个插件是完美的,希望作者们再接再厉.

Date: 三月 1st, 2009
Cate: tools
1 msg

feed到达提醒

阅读feed(rss)是很重要的事情,但一般来说,阅读feed并不能像阅读email那样,有到达提醒,如果需要知道是否有更新就只能登录阅读器(离线或在线)手动更新.这样如果feed很多,手工检查是顾不过来的,如果有同im或者email那样的新消息桌面提醒有多好,即使只是一个popup的右下角气泡.

梦里寻他千百度,那人却在灯火阑珊处.

鲜果有提供一个小工具,鲜果雷达.安装了这个小工具后就可以等着它提示你更新了,再也不用人工盯着了.这样的桌面提醒特别适合不能整天盯着feed更新,又需要追踪某些更新的人.

鲜果雷达可以选择监视频率,可以选择监视哪些频道,到达之后会有如上图的气泡弹出.

虽然有很多离线的rss阅读器提供了类似功能,但大多只能提示有更新,而不能提示更新了什么,始终比不上鲜果雷达.

具体的介绍和使用方法看这里http://blog.xianguo.com/2007/08/17/update0817-56.html

不过鲜果始终有不足:

1. 不能使用代理, 不过没关系看这篇文章: 让不支持代理的软件使用代理, Proxifier.

2. 不能自定义窗口的大小和位置. 鲜果雷达的窗口还是显得稍微小了点, 而且有时候希望窗口的位置再向上一点.

哪吒网也有提供类似的功能,但比不上鲜果的是,inezha不方便管理多个更新,而且im提醒的方式并不爽快,email提醒只能使得邮箱爆掉.因此哪吒网的未来出路必然是找一家或多家阅读器公司合作,专心管理客户端提醒.或者干脆自己做阅读器,但现在这个门槛也变高了,不是那么容易了.