[ Content | Sidebar ]

ie下的默认回车提交之强大…

06月 16th, 2009

ie下如果您在text输入框按回车就会默认将表单提交,可是俺万万没有想到,竟然强大到连submit的onclick事件都能触发了…

示例1:input外面有form标签,输入框按回车会提交表单

<html>
<body>
<form action="http://g.cn">
    <input type="submit" value="haha" onclick="alert(1);" />
    <input  type="text" />
</form>
</body>
</html>
Copy Code | Run Code

示例2:input外面没有form标签,输入框按回车会触发submit的onclick事件

<html>
<body>
<input type="submit" value="haha" onclick="alert(1);" />
<input  type="text" />
</body>
</html>
Copy Code | Run Code

ajax提交流行的今天,form标签往往直接被省略,所以这个特性很可能造成用户在某个输入框按了回车,然后某处一个不相关的button被ie点了一下….

Gmail to wordpress:通过mail更新wordpress

06月 2nd, 2009

个人比较习惯用email更新博客,写日记用的blogger一直是手机写邮件更新,于是打算这个工作blog也要这么搞

wordpress自身有个通过邮件更新的功能,但是很弱,不支持附件.所以俺再次拿python做练习

实现方式:

发布blog时只要写信给somebody+xxoo@gmail.com

脚本会定时检查somebody@gmail邮箱,

取出收信人是somebody+xxoo@gmail.com的未读邮件(加xxoo为了防止垃圾邮件),然后将邮件正文中引用的图片取出,上传到blog或着picasa,将返回的地址作为图片的新地址,然后通过wordpress的metaWeblog api 发布到wordpress

实现特性:

  • 可以通过添加"[[tag:t1,t2,t3]]"设定文章的标签
  • 可以通过添加"[[cat:c1,c2]]"设定文章分类
  • 可以添加"[[end]]"标记文章结尾,标记后面的字符将被忽略
  • 可以添加[[html]][[/html]]块发布纯html代码块
  • 可以将邮件中的图片提取,并上传到picasa或者wp
(备注:"[["实际使用用时要用三个,即"[[[xxxx]]]"这里用两个是因为本文也是通过这个脚本发布的)

运行环境:
python2.6(ubuntu)(其他版本未测),gdata库

部分代码:

def after_publish( self, mid ):
 
        self.mail.read( mid )
 
 
#实例化一个Gmail2Blog,参数依次为:gmail帐号,gmail密码,wp帐号,wp密码,blog的xmlrpc地址
myG2B = Gmail2Blog( 'somebody@gmail.com', 'xxxx', 'admin', 'xxxx', 'http://xxoo.com/xmlrpc.php' )
 
 
 
#将处理完的邮件标记为已读
myG2B.publish_callback = after_publish
 
#设置图片的上传方式,'picasa':上传到账户的picasa相册,'wp':上传到blog
myG2B.upload2 = 'picasa'
    
while True:
    #将收件箱中发送给'somebody+blog@gmail.com'的未读邮件发送到blog
 
 
    myG2B.publish_mail( 'INBOX' , '(UNSEEN) (TO \"somebody+blog@gmail.com\")' )
    #每隔十分钟检查一次
    time.sleep( 60 * 10 )
Copy Code 

源码下载:
非常不靠谱版本(等靠谱了就放到vps上长期运行)

gmail2blog-sbeta.tar.gz

Gmail撰写截图:

screenshot_016.png

vps优化备忘

05月 27th, 2009

网上安装配置文章很多,讲优化的却很少,备个忘
系统环境:centos5,128 RAM
安装的服务:nginx,fast_cgi,php5,mysql,vsftp

1.关闭没用的服务

#ntsysv
Copy Code 

…关的太多,最后剩下还在运行的服务
anacron atd auditd cpuspeed crond haldaemon iptalbes irqbalance readahead_early sshd syslog vmware-tools nginx vsftpd mysqld

2.关闭selinux

#vi /etc/selinux/config
SELINUX=disabled
Copy Code 

3.mysql禁用innodb

#vi /etc/my.cnf
在[mysqld]字段添加
skip-innodb
Copy Code 

4.fast_cgi仅开了2个进程(哦,pv是什么我还不知道)

优化结果:

# free -m
total       used       free     shared    buffers     cached
Mem:           122        119          3          0         11         67
-/+ buffers/cache:         40         82
Swap:          509          0        509
Copy Code 

效果还可以

ie下title里出现重复锚点的bug

05月 21st, 2009

以前人品好,没碰到过…

情况就是当页面里有n(n>0)个flash,而且url里带有锚点时页面的title后面就会跟n个锚点

screenshot_014.png

应该算adobe flash 的bug吧,具体:

http://bugs.adobe.com/jira/browse/FP-240

IE appends anchor name to title bar

adobe的网站上说Flash Player 9 - 9_0_124_0,IE7下才有这个问题,可俺的问题是在flash10,ie6下发现的,不靠谱……

利用data-uri合并样式表和图片

05月 17th, 2009

data-URI是一种允许将图片直接嵌入页面或者样式表中的标准,新版本的firefox,safari,chrome,ie8均已支持,所以可以利用data-URI将样式表中的背景图片合并到文件,以减少连接数,加快网页的载入速度.

但是由于低于ie8的ie版本均不支持data-URI,所以要通过mhtml对ie6,7版本特殊照顾(ie中将网页保存为单个.mht文件时使用了该标准)

通过data-URI编码的图片要比原图大1/3,而且如果图片在样式表中反复出现,转换后的体积将比原文件加图片的体积不只大1/3,但是由于传输一般走gzip,客户端也有缓存,所以可以无视吧….

恩,技术就是这么点,本来要用这个搞一下优化,但是老大没有点头,白写了脚本,不过学了会python也没用过,算练练手

下面这个就是通过脚本转换的曾经风靡全球的css garden的页面

http://bluehua.org/demo/data_uri/cssgarden/

页面加载完毕只有两个请求,一个html,一个css

转换文件使用的参数

sudo python /home/hualu/bin/data-uri.py -l /media/we/share/cssgarden/ -r http://bluehua.org/demo/data_uri/cssgarden/ /media/we/share/cssgarden/001
Copy Code 

既然用不着,脚本也就一直beta下去了,啊….

python脚本下载

shell:mpc播放第一首匹配关键词的曲目

05月 5th, 2009

虽然习惯随机…

mpc play `mpc listall | sed -n '/周杰伦/{=;q}'`
Copy Code 

screenshot:thunder on ubuntu

05月 4th, 2009

安装参考:

http://www.linuxdiyf.com/viewarticle.php?id=84561

http://www.linux-wiki.cn/index.php/Wine%E8%BF%85%E9%9B%B75%E6%88%96Gigaget

screenshot_006.jpg

screenshot_005.jpg

tinyMCE:ie下无法自动转换粘贴文本中的相对路径

04月 27th, 2009

一般来说如果我从http://abc.com/about.html把下面一段带有相对路径的文字粘贴到一个富文本编辑器

xx<a href="help.html">help</a>
Copy Code 

应当自动转换为如下形式

xx<a href="http://abc.com/help.html">help</a>
Copy Code 

这样里面的相对路径链接才不会失效,但是发现tinyMCE在ie下面却不会自动转换。以为其他网站也会这样,但是试了一下sina博客的编辑器却没有这个问题,看来应该是tinyMCE本身的问题。

查了许久,发现tinyMCE即使不传document_base_url这个参数也会自作聪明的加一个<base />标签,而href的值就是当前路径。从而导致ie不再自动转换粘贴内容里的相对路径,所以只要删除这个元素便可解决问题,hack如下:

(function()
{
    tinymce.create('tinymce.plugins.bluePatch', {
 
        init : function( ed, url )
        {
            ed.onInit.add( function( ed, cm)
            {
                var b = ed.getDoc().getElementsByTagName( 'base' )[ 0 ];
                //发现直接删除会出问题,所以删除href就够了
                b.removeAttribute( 'href' );
            });
        }
    });
 
    tinymce.PluginManager.add( 'bluePatch', tinymce.plugins.bluePatch );
})();
Copy Code 

usb冰箱使用的制冷原理

04月 5th, 2009

第一感觉肯定不会装个泵,g了一下是下面的这个东西

半导体制冷

原来半导体还能一头冷一头热的。。。

懒人工具之:自动刷新firefox,解放ctrl+f5

04月 3rd, 2009

y,自从用了vim,该让机器做的都让机器做了。。

这个东东的原理是这样滴,firefox安装一个插件,起作用的就下面几行

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/tmp/refresh.firefox");
//浏览器开启时启动一个定时器
var timer = setInterval(function()
{
    //每隔0.1秒检测一下这个文件存在否 
    if ( file.exists() )
    {
        //如果存在,删除之
        file.remove(true);
        //获取当前标签的文档对象
        var doc = gBrowser.selectedBrowser.contentDocument;
        //是否是在调试的东东
        if ( /(xiaonei\.com|kaixin\.com)/.test( doc.location.href ) )
        {
            //如果是,调用dnsFluher,刷新host,如果没有安装此插件就算了
            dnsFluher.refreshdns();
            //刷新页面
            doc.location.reload();
        }
    }
},100 );
Copy Code 

所以,只要在/tmp/目录生成一个refresh.firefox的文件,firefox便会刷新了

vim 里添加一行配置文件

"更改host文件时刷新
autocmd BufWritePost,FileWritePost /etc/hosts execute '!echo '' > /tmp/refresh.firefox'
"更改调试文件时刷新
autocmd BufWritePost,FileWritePost */jspro/*.js execute '!echo '' > /tmp/refresh.firefox'
Copy Code 

插件附上,根据情况自行修改。。

autorefresh1.0

扩展名改成xpi拖到firefox就可以安装了