Python版本短网址还原脚本

看了别人写的一个PHP版本的短网址还原代码,感慨下PHP的强大,但这么简单的一个功能写了好长一段代码。PHP版本代码如图:尝试用Python重写了一下,发现其实这个功能只需要四行代码就可以实现。再次感叹下Python的方便:#-*-coding:utf-8-*-importurllib2,socketrequest=urllib2.urlopen(urllib2.Request(url='http://t.cn/zOyhXrZ',headers={'User-Agent':'Mozilla/8.0(compatible;MSIE8.0;Windows7)'}))socket.setdefaulttimeout(5)printrequest.url

精彩继续

jQuery(赋值给表单内容)

百度的招聘网站百伯年前就上线了,偶然看到其中用了一个jQuery的函数挺好玩就扒了下来。varsetValue=function(name,val){if(val!=""){varhtmlType=$("[name='"+name+"']").attr("type");if(htmlType=="text"||htmlType=="textarea"||htmlType=="select-one"||htmlType=="hidden"||htmlType=="button"){$("[name='"+name+"']").val(val);}elseif(htmlType=="radio"){$("input[type=radio][name='"+name+"'][value='"+val+"']").attr("checked",true);}elseif(htmlType=="ch...

精彩继续

异常简单的一个代码生成器(python)

首先上一段生成的代码,很简单。但数据量很大时候也可以省下一小部分的工作量。#-*-coding:utf-8-*-fromcore.dal.base_handlerimportBaseHandlerclassGroupsHandler(BaseHandler):defselect(self):returnself.db.query("SELECT`g_id`,`g_name`,`create_time`,`status`FROM`groups`ORDERBY`g_id`DESC")defdelete(self,id):returnself.db.execute("DELETEFROM`groups`WHERE`g_id`=%s",id)definsert(self,g_name):returnself.db.execute("INSERTINTO`groups`(`g_name`)VALUE...

精彩继续

python所谓文艺短网址生成方式代码

最近都没有写什么python和php的代码,工作非常充实,晚上也没有什么精神继续写代码。今天翻到一段写生成短网址的算法blog,发现俺用的是最2B的随机数方式……为了表示不那么2B,特意写了段生产短地址的在该文章中所写的文艺代码:defshortByHex(url):'''url缩短'''importhashlib_seed="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"_hex=hashlib.md5(url).hexdigest()_hexLen=len(_hex)_subHexLen=_hexLen/8_output=[]foriinxrange(0,_subHexLen):_subHex=_hex[i*8:i*8+8]_subHex=0x3FFFFFFF&int(1*('0x%s'%_subHex),...

精彩继续

微博把妞利器预览版开源了

痛恨各种年终总结,所以年底不写总结。好久没有更新博客内容了,一则因为最近学习的Java是自己并不是很喜欢的东西,二则是一松弛下来就变的很懒。前一阵申请了SAE的python测试,拖了性浪微博的一个pythonSDK写了一个简单的半成品脚本。名字比较唬人,应用叫做“微博把妞利器”,这个闷骚的名字可能名不副实,不过已经一年多两年没折腾过性浪微博接口了,生疏了很多。微博把妞利器这个东西可以填写你需要关注的微博用户个性域名(不包含http://weibo.com/),然后页面打开状态会自动每隔一分钟(这一版暂定此种方式)抓取一次最后一次微博时间然后显示出来。源代码地址:https://bitbucket.org/chairo/7ats此次代码使用了bottle框架+sinaweibopy如图:因为是短时间作为熟悉性浪微博SDK的产物,请不要期待功能很完善。之后版本预计会增加各种邮件、QQ机器人等方...

精彩继续

Java反射执行方法时候捕获InvocationTargetException异常

公司项目中使用了Java的反射,通过反射执行别人的方法时候抛出了一个“java.lang.reflect.InvocationTargetException”的异常,百度了一下看的云里雾里的。查看Java手册的解释是:InvocationTargetException是一种包装由调用方法或构造方法所抛出异常的经过检查的异常。依然是很难理解。因为涉及到跨组调试等问题,只能继续Google。最终还是在stackoverflow看到一个比较靠谱的解释“FromtheJavadocofMethod.invoke()Throws:InvocationTargetException-iftheunderlyingmethodthrowsanexception.Thisexceptionisthrowifthemethodcalledthrewanexception.”,应该是因为反射执行的方法里抛出了...

精彩继续

给tornado的database.py增加dbutils支持

忘记什么时候在邮件订阅中看到smallfish的一个给tornado的database.py增加dbutils支持的文章了,去smaillfish的blog看了一下居然是09年写的一篇文章。小鱼修改的代码为:defreconnect(self):"""Closestheexistingdatabaseconnectionandre-opensit."""self.close()try:fromDBUtilsimportPooledDBpool_con=PooledDB.PooledDB(creator=MySQLdb,**self._db_args)self._db=pool_con.connection()except:self._db=MySQLdb.connect(**self._db_args)self._db.autocommit(True)小鱼干掉了原有的设置autocommi...

精彩继续

IDEA两个实用的快捷键

如前边提过的,我最近要接触一些java相关的东西,现在对java这个臃肿的东西依然很不爽,但生活所迫不得不慢慢适应。公司使用的工具基本都是IntelliJIDEA,习惯了vs.net鼠标移到一个方法自动显示提示,但IDEA没有此功能。有一个替代的方式为:鼠标点在方法名上按下“CTRL+Q”。另外一个快捷键是自动给变量补全setget方法为:“ALT+INSERT”可以生成代码(如GET,SET方法,构造函数等)

精彩继续

给bottle的jinja2插件自定义filter

书接上文说一下bottle如何自定义jinja2模板引擎的filters。前边咱们说到bottle中使用jinja2_template即等同于template(你传入参数,template_adapter=Jinja2Template),引用一个bottle中template()的关键部分deftemplate(*args,**kwargs):......settings=kwargs.pop('template_settings',{})......TEMPLATES[tpl]=template_adapter(name=tpl,lookup=lookup,**settings)类似这几句代码,代码大概含义就是从template_settings获取内容然后传递给template_adapter对应对象(即咱们使用的Jinja2Template)继续跟进Jinja2Template,Ji...

精彩继续

python的functools.partial用法解释

在使用bottle的jinja2_template过程中碰到了一个自定义filter的问题,其中bottle关于jinja2_template的定义是这样的:jinja2_template=functools.partial(template,template_adapter=Jinja2Template)在.NET中class也是有partial这个概念的,所以从字面理解,jinja2_template应该是template和后边template_adapter=Jinja2Template这个参数之和的结果。官方的解释为:Returnanewpartialobjectwhichwhencalledwillbehavelikefunccalledwiththepositionalargumentsargsandkeywordargumentskeywords.官方给的例子:fromfun...

精彩继续