FALLHUNTER

Web & Mobile, Design & Code

几个 Django 第三方库/applications

 

Django evolution

执行 ./manage.py syncdb 的时候,django会查找新的model来创建数据库表,但当我们更新model的结构时(如增加字段),则需要手工修改对应数据表的结构。Django-evolution 正为解决这个问题而存在。

地址 http://code.google.com/p/django-evolution/

django-ratings

ratings是web2.0的基础元素之一,django自然不能缺少,个人估计它有望成为官方app

http://github.com/dcramer/django-ratings

django-tagging

tagging 是web2.0的另一个基础元素,这个库相当好用和强大。

http://code.google.com/p/django-tagging/

django-messaging

哈哈,还是web2的元素啦,这个是用户与用户之间的message系统,与django内置的message不是一回事,这个库比较简单。

http://code.google.com/p/django-messaging/

django-photologue

强大的图片处理、管理功能

地址 http://code.google.com/p/django-photologue/

django cms

一个基于django的CMS系统

地址 http://www.django-cms.org/

django-grappelli

你认为django的admin界面不够好看吗,看这个, 里面有漂亮的截图,相信你会喜欢。当然这个库也不仅仅是为了好看,它还有很多更方便的功能。

地址 http://code.google.com/p/django-grappelli/

django-filebrowser

这个库的作者就是上面的 django-grappelli 的作者,怎么样,别以为他只会做界面,看看这个,这是一个相当强大的文件管理系统,直接在admin里面就可以完成静态文件的上传和编辑。你还在用自己做的编辑系统吗,咳咳。

地址 http://code.google.com/p/django-filebrowser/

django-solr-search

solr是做中小型搜索的首选,可以说是易用与强大的完美统一,django当然不会放过。solr不是已经很简单了吗,是的,但为什么要拒绝更简单呢?这就是django的哲学,我不骗你,编码真的可以是一种享受…  当然啦,还是有点缺憾,solr内存使用有些大呀…,但这不要怪到django头上。

地址 http://code.google.com/p/django-solr-search/

django-avatar

这跟电影《阿凡达》可没有什么关系,如果你熟悉web开发,早就应该知道 avatar 的意思是指web上用户的头像。这个应用就帮助你的django站点方便的增加用户头像的功能。

地址 http://github.com/ericflo/django-avatar


添加评论

Python 面试常见问题

 

这里总结一些Python的常见问题,也是Python面试经常提到的问题,它们都是比较 pythonic 的问题,最关键的,它们都是你应该能回答的问题,如果这些问题对你来说没有什么难度,请发一份简历到 join@mapiz.com

这里并不试图给出答案,很多问题只是看回答者对Python的理解,如果你对某个问题不够清楚,just google it. 如果你对很多问题都不清楚,你应该去读一下 Python in a nutshell

  • 数据类型相关
    list与tuple的区别
    dictionary与set的区别
  • 你知不知道Python的for语句后面可以跟一个else,它是什么意思?
  • list comprehension 是怎么回事,为什么要用它?为什么不用它?
    (我一直记不住对应的中文叫什么,列表推导?)
    即:
    [ x*x for x in somelist ]
    其中 somelist 是一个list。
    这行代码构建了一个list,其每个元素是somelist里面每个元素与自身做*运算
    复杂一点的,还可以:
    [ somefunction(x) for x in somelist if anotherfunction(x) ]
    即,可以用anotherfunction 过滤 somelist
  • 什么是 tuple 解包赋值?

    a,b = somefunction()
    要实现这个效果,somefunction应该返回一个tuple,在赋值时Python会自动解包。
    当然,这不仅仅限于函数返回值的情况,像
    a,b=(“value1”,"value2“,) 也是可以的
  • 类似 __foo__ 这样的东西是什么玩意?
    这是python里面的特殊函数或属性,常见的有
    __name__
    __main__
    __file__
    __get__()
    __set__()
    这些你都应该知道。
  • iterators/generators 怎样实现一个 iterator 或 generator ?
  • map/reduce/sum ?
    如果你第一次听到 map reduce 是从Google著名的分布式框架,没有关系,因为现在的计算机教育已经本末倒置,这不是你的错,但是如果你没有去研究一下它为什么叫 MapReduce , 这就是你的错了。如果你现在是第一次见到 map reduce ,赶紧去研究一下,我想你很可能对函数式编程一无所知。
  • lambda 是什么东西 ?
  • 有没有听说过 decorator ?
  • 函数定义时在参数前面加上 * 或 ** 是什么意思? 函数调用时在参数前面加上 * 或 ** 又是什么意思?
  • 怎样实现类的静态方法?
  • __new__ 与 __init__ 有什么区别?
  • “class Foo”  与  “class Foo(object)” 有什么不同
  • 文件操作
    Python里面有个非常简单的文件按行操作方式
    for line in open(file_name):
          print line

    但是要注意 line 是包含行尾的 \n  的

  • 异常处理
    python里面到处都是异常,这是Python的设计哲学,如果你打算学习Python,请将异常变成你的思维方式。
    你可能很容易学会  try … except .. 和  try … finally..  但是 try … except … else 是什么意思?
  • 对类库的熟悉程度
    Python 的强大很大程度上来源于其无数强大的类库,熟悉类库的实用总是对实际的工作帮助甚大。
    类库问题也是一个很重要的常见问题,如:
    实现xxx功能,有哪些类库可以用?
    常见的应该了解的类库大概有:
    正则表达式类库 re
    系统类库 os, os.path
    日期时间 datetime
    多线程 Queue
    单元测试 doctest, unittest
    日志 logging ( 我非常喜欢这个库 )
    命令行参数处理 optparse ( 这个库太棒了 )
    命令行框架 cmd ( 用这个库你会发现 写Python 真的是一种享受 )
    网络 urlparse, urllib, curl, httplib,socket
    服务器 SocketServer ( python 自己含有一个简单的socket服务器!而且支持多种网络模型(tcp/udp, thread/process)! )
    XML/HTML
    解析 xml.dom, xml.sax, BeautifulSoup
    还有很多很多…
    当然,你没必要全都用过它们,但是你应该知道它们的存在,除非你愿意花上几个星期来实现一个本该几分钟就完成的功能。

最后,请相信我,Python in a nutshell 是本好书,它能解决以上几乎所有的问题,当然,它能解决的问题远不只以上这些。


添加评论(3)

django 1.2 alpha

 

备受期待的 django 1.2 release了它的alpha版,在这个版本中,有个重量级的更新,那就是多数据库的支持。

在以前的django版本中,只能支持一个数据库,还记得上次跟子轩讨论过如何连接多个数据的问题,当时的感受就是:框架,就是说有些东西是不能实现的…

现代化的web开发,几乎没有只使用一个数据库的,多数据库是一个系统可扩展性的重要方面,django 1.2 朝这个方向进了一步,也说明了django 打造工业级web框架的目标。

django 1.2 中还增强了安全性与 message系统,其message并不是用户间的message,而是系统对用户的一种提示信息,这类似于 ROR 中的flash。zendframework 中也有类似的东西,好像也叫什么什么flash,当时大家讨论zend的时候,有人以为是对adobe falsh的支持。 其实,国内的web应用并没有很流行地使用flash的概念,相关功能还多是通过应用逻辑来展示的,开发还不够工业化呀。

 

正是的release预计在3月中旬,到时候估计 Mapiz 正好可以用上,愿 Mapiz 与 django 还有我一起成长吧。

今天读到 阮一峰 写的 PHP很烂?我的看法,嘿嘿,其实也是俺的看法啦,在no-framwork framework: 让php找回最真 我曾试图表示一些对php的看法,但总觉得说不到点子上,今天看峰哥用简单的语言说清楚了深刻的道理,恩,果然是高手。


添加评论(1)

网站监控服务

你的网站宕机好几天之后你才知道吗,你的用户投诉之后你才发现网站出问题了吗?专业的网站都会有各种各样的监控手段,及时发现运营中的各种问题,但对于个人站长与小型网站来说,当然没有必要自己去做一套网站监控系统,感谢互联网,已经有很多的网站提供这种监控服务了,他们有分布于全球的监控点,有多种报警通知的方式,有专业丰富的报表,更重要的是,他们多数都是免费的!

Pingdom    http://www.pingdom.com/  可以做到每5分钟检测一次你的网站,出问题时可以通过email,sms,甚至twitter来通知你。免费账号支持一个站点。

Binary Canary     https://binarycanary.com/  强大报表,email通知,免费账号支持5个站点

Are My Sites Up    http://www.aremysitesup.com/  简单易用,免费账号支持5个站点(url),每小时监测一次。www.mapiz.com 及后台服务server用的就是这个

http://site24x7.com/   是个简单易用且强大的服务,fallhunter.com 用的就是这个

http://www.247webmonitoring.com  这是一个超级简单的监控站点,界面简单的一塌糊涂,闭着眼睛都可以在30秒内配置好一个站点监控,免费用户可以做到15分钟一次检测。

类似的站点还有:

Hyperspin 

AlertX

另外 http://host-tracker.com/   这是一个相当强大的站点,输入你的网站地址,立即看到从全球不同地理位置的访问耗时信息,当然,没有中国。

国内也有提供类似服务的站点,比如 网站保姆 http://bm.chinaz.com/  和 http://www.monitorx.cn/


添加评论(6)

使用 python/django 发送iPhone push消息

 

iphone的push notification功能是个好东西,可以在一定程度上模拟后台运行程序的效果。但这个东西配置起来确实有点麻烦。好在apple的文档说的还算详细,仔细按照文档做,慢慢生成那一堆配置文件吧。

服务器端的配置:

在开发mac上,从keychain中将生成的keyexport出来,这里要注意要同时选中对应cer与private key两个项目,一起倒出到一个.p12文件中。

将倒出的p12文件放到服务器上,将p12文件转换为pem文件:

openssl pkcs12 -in cred.p12 -out cert.pem -nodes -clcerts

然后,按照 APNSWrapper 里的文档就可以测试了,随便使用一个token,如果没有异常就说明认证OK啦, APNSWrapper 真是个好东西。

感谢互联网,感谢Python~~~

参考资料


添加评论

实现自适应高度的 UITableViewCell 或 UILabel

 

在iphone开发中处理table时常常会有这样的问题,table中cell的高度不是固定的,而是是根据其中的内容不同而不同的。对与这种情况,sdk本身并没有很好的支持,经过一翻摸索,发现大家通常的做法都是在实现 heightForRowAtIndexPath 方法时,根据内容计算出来显示的高度。

幸运的是,nsstring内置了几个好用的函数可以方便的计算出来字符串被现实出来时占有的屏幕高度:

  • - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; 
  • - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size  
             lineBreakMode:(UILineBreakMode)lineBreakMode; 
  • - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width  
              lineBreakMode:(UILineBreakMode)lineBreakMode; 
  • - (CGSize)sizeWithFont:(UIFont *)font  
              minFontSize:(CGFloat)minFontSize  
              actualFontSize:(CGFloat *)actualFontSize  
              forWidth:(CGFloat)width  
              lineBreakMode:(UILineBreakMode)lineBreakMode; 

 

参考资料


添加评论

几个django相关的网站


添加评论

Python 与 Django 的时区问题

在编码中牵扯到时间问题的时候,总是容易被时区问题搞混,一直以来,都是反复试验应付过去,今天终于搞清楚了个中缘由,一个心结也得以化解。

Python 的时区问题

  • datetime.today() / datetime.now()
    这两个函数获得的是当前的系统时间,但得到的datetime对象中的tzinfo是空的,即使系统中设置了时区。
  • datetime.utcnow()
    这个函数获得当前的utc时间,应该是根据当前系统时间和时区来计算的。
    例如系统时间为14:00,时区为 Asia/Shanghai (北京时间),utcnow返回时间为 6:00。同样,得到的对象中的tzinfo 为空。

环境变量 TZ 对以上函数的影响:
当系统中设置了环境变量 TZ 的时候,或者在python中设置了 os.environ[‘TZ’] 的时候,上面的函数获取的时间便是TZ对应时区的时间。其实这里可以认为 TZ 影响的不是这些函数,而是影响的系统时间,这可以从date命令的返回结果看出。datetime.now() 与 date命令返回的结果总是一致的。

Django的时区问题

明白了上面几个python中的函数,django的时区问题看起来就简单了。

在django的setting中,有一个设置是 TIME_ZONE, 来设置程序中使用的时区。

从django的文档中得知,TIME_ZONE的作用就是改变 os.environ[‘TZ’]  ,但改变os.environ[‘TZ’]  并不会改变系统环境变量 TZ , 因此,如果 TIME_ZONE 的设置于系统时区设置不一致,则在程序中 datetime.now() 获得的时间就与 date 命令的时间不一致了。

因此,TIME_ZONE 应该设置为程序希望使用的时区。对于一个本地的程序,TIME_ZONE 设置为与系统时区一样即可;而对于一个国际化的应用,TIME_ZONE 最好设置为UTC,在显示的时候再根据当前用户所在的时区做调整。


添加评论

GO GO GO, when Python meets C++

 

Python 我所爱也,C++ 亦我所爱也,二者不可得兼,取Python而舍C++也。

从C++到Python,极大地满足了我的懒惰情绪,在“动态”的自由中乐不思蜀。然而衣不如新,人不如旧,C++好比一位年长的故友,总在我疲于奔波之后带给我那种久违的“代码味道”

关于语言,关于Python,关于C++,总有太多故事可说。

GO,像一个路边窜出的宠物狗一样进入我的视野,仔细一看,还真不认识是什么动物,有人说是囊地鼠

如此的LOGO,如此的名词,打开官网的Let’s Go,足以让那些以官方自居的道貌岸然大跌眼镜,任何人看了这个logo与名字就会知道:这是一个简单好玩的东西。

/* 
可悲的是,其官网 golang.org 居然需要翻墙才能访问,
于是,我对那些一面说为我们研究学习创造更好机会一面不停封杀好东西的当权者再度叹息   
*/

参考


添加评论

no-framwork framework: 让php找回最真

 

今天看到php的创始人Rasmus Lerdorf离开yahoo (http://www.techcrunch.com/2009/11/10/php-founder-rasmus-lerdorf-leaves-yahoo/), 在他的blog 上,我看到了 The no-framework PHP framework

使用php写代码,对我来说已经是过去的故事了。我对php的“不喜欢”,也似乎渐渐远去。其实我所反对重点,只不过是使用php的方式,而非php本身,如Rasmus所认为的,我也认为这个世界将php搞的太复杂了,太复杂了,太framework了。

当我发现wordpress的时候,当我看到其使用php的方式,我惊呼,这才是php的的本来面目,这才是php应该存在方式!多年的php oop让我忘记了这种古老的美好的代码味道,我们只顾着前进、前进,却忽略了单纯的最真。

今天看到 “no-framework” 一词,仿佛在喧嚣都市看到了一条桃园通道,虽然没有深入探究,但“no-framework”一词,足以让我激动,这个世界,就应该是他本来应该是的样子:猫吃鱼,狗吃肉,奥特曼打小怪兽,this is it!。


添加评论(2)

© 2009 FALLHUNTER. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.

无觅相关文章插件,快速提升流量