swfupload 文件上传

浏览器的文件上传有个问题就是不能选择文件类型, 不能拖选文件,不能提供上传进度。 而flash可以提供这些功能,所以很有用。 swfupload 项目主页: http://code.google.com/p/swfupload/ 这里有一些例子可以参考 http://demo.swfupload.org/ 特性: Multiple File Selection File Upload Progress Custom Limits for File Size and Number of Uploads Filter by File Type ie. *.jpg File Queue Customize the Browse Control Flash 10 Support (Starting with Version 2.2.0) 大文件上传,需要提供进度的地方,可以考虑使用。 ...

August 14, 2009 · notsobad

什么是好的命令行程序

最近处理bug,总结一下什么是好的命令行程序: 无参数调用时,显示帮助 记录日志到文件 关键步骤要打印log到标准输出 出错提示信息要写到标准错误里去 要有退出值 python程序不要屏蔽异常,要打印到stderr里去 脚本初始时要明确的检验执行权限、目录是否满足需求 python程序最好不要用PYTHONPATH来设置包含路径,移植和多人合作问题太多,应该直接链接到site-packages下去 ...

August 14, 2009 · notsobad

sed 获取html中链接

sed的tutorials http://sed.sourceforge.net/grabbag/scripts/ http://sed.sourceforge.net/grabbag/tutorials/ 一个获取html中链接的sed脚本 #! /bin/sed -nf # Join lines if we have tags that span multiple lines :join /<[^>]$/ { N; s/[ ]\n[ ]/ /; b join; } # Do some selection to speed the thing up /<[ ]\([aA]|[iI][mM][gG]\)/!b # Remove extra spaces before/after the tag name, change img/area to a s/<[ ]\([aA]|[iI][mM][gG]|[aA][rR][eE][aA]\)[ ]\+/<a /g # To simplify the regexps that follow, change href/alt to lowercase # and replace whitespace before them with a single space s/<a\([^>]\)[ ][hH][rR][eE][fF]=/<a\1 href=/g s/<a\([^>]*\)[ ][aA][lL][tT]=/<a\1 alt=/g # To simplify the regexps that follow, quote the arguments to href and alt s/href=\([^" ...

August 5, 2009 · notsobad

imagemagick制作gif动画

参考这里: http://www.imagemagick.cn/ convert -delay 20 frame*.gif animation.gif convert -delay 20 frame1.gif -delay 10 frame2.gif -delay 5 frame3.gif animation.gif convert frame1.gif -page +50+100 frame2.gif -page +0+100 frame3.gif animation.gif convert -loop 50 frame*.gif animation.gif convert +adjoin images.* frames%d.gif 测试一下,效果很不错 511 ~/desktop/pic>for i in IMG_;do convert -sample 400x300 $i thumb-$i;done 514 ~/desktop/pic>convert -delay 40 thumb-IMG_01 jj.gif 515 ~/desktop/pic>animate jj.gif

August 4, 2009 · notsobad

Jquery的插件开发

Jquery的插件开发,试了一下,还是挺简单的。 http://docs.jquery.com/Plugins/Authoring [How to write jQuery plugin.](http://www.easyjquery.com/jquery-plugins/how-to-write- jquery-plugin) http://mattberseth.com/blog/2008/06/glowbuttons_writing_my_first_j.html 乱写的,没意义代码 (function($){ $.test = { log : function(str){ console.log(str); }, now : function(){ console.log(new Date()); }, demo : function(option){ option = $.extend({ size : 100, width : 40 }, option); this.log(option); } }; $.fn.xx = function(){ return this.each(function(){ console.log(this.className); }); }; })(jQuery); html中: $(function(){ $.test.log('aaaa'); $.test.now(); $.test.demo({size:23}); $('div').xx(); });

August 3, 2009 · notsobad

用gnome-web-photo进行网页截屏

参考下这里: http://ubuntuforums.org/showthread.php?t=1085872 还有这里: [http://groups.google.com/group/python- cn/browse_thread/thread/f25350d5e4d415af/08140024364b819d?lnk=gst&q;=html#](http://groups.google.com/group/python- cn/browse_thread/thread/f25350d5e4d415af/08140024364b819d?lnk=gst&q=html#) 使用gnome-web-photo进行网页截屏,效果相当好,不过保存为jpg格式失败了 514 ~/script/sh>gnome-web-photo --format "png" http://blog.notsobad.cn blog.png Registering '@mozilla.org/module-loader/python;1' (libpyloader.so) Registering '@mozilla.org/network/protocol/about;1?what=python' (pyabout.py) 515 ~/script/sh>animate blog.png 516 ~/script/sh>gnome-web-photo --mode=photo --format "jpeg" http://blog.notsobad.cn blog.jpg Registering '@mozilla.org/module-loader/python;1' (libpyloader.so) Registering '@mozilla.org/network/protocol/about;1?what=python' (pyabout.py) JPEG parameter struct mismatch: library thinks size is 372, caller expects 356

August 3, 2009 · notsobad

python实现一个strip_tags和unicode笔记

python实现一个strip_tags, 去处html标记 from HTMLParser import HTMLParser def strip_tags(html): result = [] parser = HTMLParser() parser.handle_data = result.append parser.feed(html) parser.close() return ''.join(result) 关于unicode: 参考这里 http://evanjones.ca/python-utf8.html 总结:出现编码错误时,用type检查变量的类型,容易找出问题,print是不行的 unicote <--> str, 互相转换 In [28]: a=‘a’ In [29]: type a -——> type(a) Out[29]: In [30]: b=unicode(a, ‘utf-8’) In [31]: type b -——> type(b) Out[31]: In [32]: b.decode(‘utf-8’) Out[32]: u’a’ In [33]: b.encode(‘utf-8’) Out[33]: ‘a’ ...

August 3, 2009 · notsobad

Lilei和Hanmeimei的欲望人生

也许这就是我们的人生路吧 Lilei和Hanmeimei的欲望人生 一个豆瓣小组: 李雷都这么牛逼了韩梅梅却不喜欢他

August 2, 2009 · notsobad

今天的事

今天石家庄了 去时坐上了传说当中的CRH和谐号,果然很不错,座椅和飞机上的座椅很像,在车上一会就睡着了,这是我第一次能这么快在火车上睡着。2个小时就到了石家庄 回来时就惨了,买了无座的T5686,春运是的噩梦又一次上演了,可能因为是双层的车,中间是上下的楼梯,所以看不到里面的情况,导致人都堵在两边的过道里了。 上一次做硬座就发誓再也不座这个了,没想到今天又给来了一次。 ...

August 2, 2009 · notsobad

grep查找进程存在与否

linux下查看进程存不存在: 517 ~>ps -elf|grep -w ‘cron’|grep -v grep 5 S root 3179 1 0 80 0 - 925 hrtime 09:02 ? 00:00:00 /usr/sbin/cron 下面这个比较巧妙: 518 ~>ps -efl|grep -w [c]ron 5 S root 3179 1 0 80 0 - 925 hrtime 09:02 ? 00:00:00 /usr/sbin/cron ps时会出现grep这个进程,看下面的: 1: grep cron => “grep cron” 2: grep [c]ron => “grep [c]ron” 但是grep cron 和 grep [c]ron 的实际效果都是查找cron这个字符串 很明显的只有1的时候会把grep本身给找出来。 ...

July 31, 2009 · notsobad