今天在Barcamp宣传DropBox的一则皮皮踢
@mikespook: #barcampGZ 之后,跟 @jeff_jie、@cncamp、老潘(推多少?忘了……)众人在有福气腐败……这家貌似换厨师了,味道好了不少。饭局中,大家聊了很多非技术话题,并一致认为,技术宅是没有出路的……
python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。
现假定有一个shell脚本test.sh:
1 #!/bin/bash
2
3 echo "hello world!"
4 exit 3
os.system(cmd):
该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0x100,换算为10进制得到256。
如果我们需要获得os.system的正确返回值,那使用位移运算可以还原返回值:
>>> n = os.system(test.sh)
>>> n >> 8
>>> 3
os.popen(cmd):
这种调用方式是通过管道的方式来实现,函数返回一个file-like的对象,里面的内容是脚本输出的内容(可简单理解为echo输出的内容)。使用os.popen调用test.sh的情况:
>>> file = os.popen(test.sh)
>>> file.read()
>>> 'hello world!\n'
明显地,像调用"ls"这样的shell命令,应该使用popen的方法来获得内容。
某天在研究pypy的时候无意中看到了pinax,了解之下,觉得pinax真的很聪明,跟我正打算做的事情很像!她是一个基于Django的基础应用--我这里讲基础应用的意思是她既不是开发框架,又不是一开箱即用的成熟应用(当然你不介意那简陋的界面的话,它是开箱即用的),而是介于两者之间的东西。她集成了很多第三方的Django app,这使得她自己内置了很多SNS网站、公司内部网站所需要的基础功能,你要做一个SNS网站,拿来改改界面就好,你要做公司内网应用,拿来改改界面也行了。
初次接触时,还没有安装来研究,就屁颠屁颠地跟老潘说这是个好东西(我对云和企业内部办公系统有些想法,经常和老潘交流),老潘一看说颇有Plone的影子了。后来安装下来看了看,离plone所谓的应用服务器那个级别还差远了,pinax可以看作是一系列的Project template(项目模板)。接下来给出几种模板的应用运行时的截图,大家看看就明白了。至于更深入的探究不是今天要说的,有兴趣的同学直接试一试更有意义。

图一:basic_project,最简单的应用模板。

图二:内部应用的模板,提供了几种内部应用用到的功能,如任务、wiki等。

图三:Pinax提供的最复杂的一个应用模板,SNS应用,不少SNS网站是基于这个来开发的。
Pinax给开发者带来什么?
一、没有技术上的转变,该用Django还是使用Django那套东西。
二、提供了一套基础网页模板和Tab布局。这个虽然简单,但十分实用,要换套皮肤,把现成的扔给美工MM略作修改即可,无需从0开始。
三、Pinax提供的最复杂的应用模板是一个SNS应用,实际上是一个完全可以马上投入使用的产品。Pinax说,我们已经为您提供所有需要的,你要做的只是让你的网站看起来与众不同。
题外话:
一、Django变得越来越强大的同时也变得复杂,要全部掌握Django的内容门槛不低,但这不妨碍初学者快速上手。
二、有人说,django变得越来越像zope,但实际上django的门槛恐怕没有zope的20%吧,虽然django渐渐肥胖,但新增的很多东西都是可选的,并且是在web开发过程中必需去解决的问题。大家看到新出一个web framework很清爽简单,不过走着瞧吧,到最后,他不是整合其他第三方的基础模块就是自己继续砌砖,直到又有ORM、Template、Form、中间件、UrlRoute、I18N,I10N等等等等,大家殊途同归,区别不过是OEM或Fullstack而已。
三、Django社区很活跃,看看第三方的app就知道,以至于有人可以全使用第三方的应用(没有自己的Model)搭起一个博客,以及现在这个pinax。
四、web应用开发领域,可重用的东西太多,于是有了框架,而技术之上的业务层面,可重用的东西也有很多,例如用户、权限、流程引擎等,Django首先把这业务层面可重用的东西做了一套参考标准并放到开发框架里面来了,大善!太实用了!这也是我几年前希望为公司内部的开发框架做的事(后来遇上Django后,没太多激情在java的webframework上折腾这些了)。
思维导图是我生活和工作中不可缺少的重要部分,她的使用场景有很多种,午休时间,我想和大家分享一下我使用思维导图的经验,是以抛砖,意在引玉。
相信很多同学都有用导图来做读书笔记的习惯,恐怕这也是导图被用得最之泛的一个功能了。我也不例外,我在读一些逻辑性强或技术性的图书时习惯使用导图来做笔记,笔记内容主要是图书的细化版大纲,再加上自己的一些评注。除了读书,我在网上看一些结构相对复杂的文档(尤其是技术文档)的时候也会用导图来组织他们的知识点,这样,导图也成了我的知识管理工具。用导图做读书笔记和知识管理的好处有两点,一、借助导图,我可以很容易地把握书本和知识的总体结构,只保存它们的精髓;二、有这些笔记和知识点提要,当我在需要回忆起来某些内容或知识的时候,过程就变得简单多了,在导图中可以快速找回自己想要的内容和当时自己的理解。
下图为用导图做读书笔记的典型例子:
有时候我会就某件事情陷入很深的思考,想得很多,很远,犹如天马行空,又像野马脱缰,我称之为个人的头脑风暴,如果当时没有记下来,而思考状态一过去,很多在思考过程中想到的东西就会被忘掉。我在坐飞机的时候犹其喜欢思考,那时,导图就会成为我最得力的帮手。
思考的时候不着边际吗?不要紧,属于另一个范筹的东西我就另起一个结点,在该结点再往深处细化,再形成另一棵思维之树!我通常把脑里边凌乱的独立的想法先倒出到导图,然后就可以开始把这些想法整理成有逻辑的信息了。
以某次飞行中产生的片段为例(点击可见大图):
导图用来做产品管理?嗯,freemind曾一度成为我的产品仪表板,我使用一张大的导图来管理产品的目标、计划、人员、任务甚至会议记录,所有关于产品的信息一目了然。归功于导图的无限的扩展性,我可以在这张产品仪面板上填上一些宏观的指标和状态,同时我还能为自己开辟一些结点用于收集很凌散很细节的想法;你还不必去删除掉一些旧的结点,把它们放进一个叫”归档“的结点里去就OK了。很山寨吧?但很实用。
看图,来自真实的产品,由于某些原因,该脑图我就不展开得太详细了 :)。
在编写逻辑稍为复杂的代码时,我总要组织一下各色角色的职能,大致梳理一下整个流程,然后再开始编码,以前我会用纸和笔,不过前段时间发现导图做这个事也很有一套,于是就用上了。看图:
以前我有个项目,需要一些同事为手机的每个功能点截屏,并要把截好的屏严格地以功能点为单位分别存放在不同的文件夹,文件夹下面可能还需要嵌套很多文件夹,最终是一个很庞大的目录树。我的同事们除了截屏外,花在建立目录和分派文件上面的时间也极其长,大部份的时间被一些重要但是很机械的事情占据了。
当时为了解决这个问题,我希望可以让他们避免新建大量的文件夹和命名,这要求有一个自动化的过程,而自动化需要配置数据来驱动啊,我想到了XML。难道要手写XML咩?有没可视化的方式来组织结构化的信息然后可以保存为XML嘛?这时我就想到了思维导图,而且我一直用的freemind的数据就是xml格式的。遂大喜,开始设计使用导图改造工作流程的方案:
最后,导图不负所望地漂亮地完成了任务,下面这样一张导图除了可视化地表示了手机的功能结构,还可以用来做文件导航:负责文件分派的pythone脚本自动创建文件夹后,把视频文件复制到相应的文件夹后,反过来更新导图文件,为每个功能结点都加上可以直接打开该功能的视频的链接。

-------------------------低调分割线---------------------------
作为补充,我介绍一下我最常用到的一些导图类的工具,主要是freemind和Omni Outliner和 Omni ifocus:
一、freemind,作为老牌的开源跨平台思维导图就不用我多介绍了,她是我以前使用最多的导图软件,简洁而强大。但有时在我的Mac下面会突然无法输入中文,只有做了其他手准备。
二、Omni Outliner,来自Omni Group(传说是Mac 桌面软件的典范)的一个大纲组织工具,本质与导图一样,但她不是以图的形式出现了,而是以缩进标题的形式,工作界面也相当简洁。现在是我最常用的导图工具。

三、Omni ifocus,一款GTD软件,由于它的任务可以嵌套(树型结点),所以在我的macbook上打败了things。
我在选择思维导图工具的时候只要评估他们是否满足下面几个要求:
一、快捷键,使用导图时,快捷键决定了使用的方便性,如freemind的回车添加结点,Tab添加子结点,都相当方便,而MindManger的快捷键是CMD + Enter,复杂不但止,还和我系统的全屏快捷键冲突,立马抛弃。
二、附件功能,导图有时只是一个很强的组织者,有些东西不一定全在导图里面,所以附件或链接功能就是使他可以延伸的功能,freemind和Omni Outliner都很好地支持了,后者还可以预览和实时录音作为附件。
三、支持中文,目前离开中文我会活不下去,所以一定要支持中文,freemind有时候会傻掉(也可能是我的输入法和Java有冲突)。而样式没有太多要求,花哨的东西我只会试一次就扔,如NovaMind。
思维导图是一种简单的工具,但在很多地方都可以大放异彩,现在我的生活和工作中都离不开她或她的变种。除了上面讲的几种应用场景,我还用导图来起草文档、用来做个人时间管理等。我相信一定有其他同学在更多的场景里也用上思维导图,希望这些同学也能分享下自己的心得。嘿。
出来一个整整过去了一个星期,照片拍了好多,但是一直没有时间整理和上传。但是今天的行程实在太精彩了,回来后急着先上一些照片。
今天去了沙巴的美人鱼岛进行浮潜,美人鱼岛的水太蓝了,以至于分不清是天空还是大海;水太清了,以致于可以看到数十米深的水底;珊瑚太多了,以致于我们都流连忘返。但是这一切,要用语言来表达,实在是太难了,还是让相片来说明一切吧。先上一水中的部份:
好了,准备好潜下去啦,加油!

水下的世界太美了。。一时间大气不敢出,生怕吓到下面的朋友们。

领队潜下水底捞起一只海星,我们拿来做道具了。

美丽的珊瑚

鱼群!鱼群!

连续几张海底的珊瑚景观:







我们开始在水里投放面包碎,想要把鱼群引过来。

真有效,各色的鱼群都拼命往这边游。。太美了。

鱼儿过来亲亲手,给吃的。

瓶子喷出面包碎的一瞬间。



很多很多触手可及的珊瑚。

上面的相片未用闪光灯,未经PS,用使水下面机套配合佳能某DC拍摄。以后再上岸上的相片。。。下面是我们其中一位驴友:

早上上完两个学生的吉他课后,赶回家开始准备收拾行当,明天我和LP要飞往马来西来,开始为期10天的长假。由于5.1三天的安排都非常紧,原先已经报了名珠三角地区技术沙龙的小聚会去不成了,有点可惜。
从原先很忙的状态,要一下子调整到休假状态,真有一定难度,总有点心有不甘的感觉。安啦。。。这是休假,为啥要不甘呢?工作已交由其他人接管,人生苦短啊,别在放松的时候想着工作!!
好吧,啥都不要想了,安心晒太阳去了。有网络的时候,我会上来贴下相片。ByeBye 广州。
我知道我总是很久不更新的原因,那是因为总是习惯:
一、想到一个话题,打算简单明了的说完就收工。
二、开始下笔写文章。
三、谁知越写越详尽,以致于一发不可收拾,可以与论文比啰嗦了。
四、知趣地放弃,搁笔不写。
另一个原因,可能是知道有些朋友订阅了我的博客(虽然数量不多), 自己给了自己压力,想尽量出些好的文章。。所以也就低产了,而在我的另一个Blog(托管在Blogspot),没人关注,倒是怡然自得。想写啥写啥。
我想,咱们还是不要见外了,我还是想写啥写啥吧,俺的兴趣可广泛了。哪一天绕不回来同学们不要见怪。。
---------------------------------------------------------------------------
还是记一下这几个月的流水帐吧:
一、前几天大郎问我试手机网怎么样了,我说年前已经停止运营了,由于某种宏观的原因,无奈+伤心,走了大半的战友。但我需要重新振作,感谢当时陪我喷了N晚口水的老潘,期间也算是踫撞出一些火花。
二、后来我开始有机会在海量数据挖掘方面继续深造,尽管现在涉足未深,但我觉得这是个很有趣的领域,曾经很讨厌的数学和统计学在这里将要发挥很大的作用,我深深地感觉到吃技术饭的,数学是咱们早晚要见面的,感谢国家,感谢公司,我迎来了勤奋学习的第N春。
三、过年后,前战友走了大部分,开发团队力量薄弱,有外部项目压力,我当了一回救火员。我从零开始,跟美工MM学习一些动画制作基础,在熟悉了现有的动画制作过程后,经过两个星期日以继夜的flash modeling、Coding,出来一套新的制作工艺,美工MM笑了。原来过去两年,她们和开发人员一直在走弯路,究其原因:美工没有架构抽象思维去优化流程、开发人员一味地重构,没有人真正尝试着亲自做一遍自己开发出来的东西是不是真的好用。所以,得到一个教训,在改变某样东西之前,要保证你真的了解他了。
四、成亲三个年头了(其实真正才过了一年多啦),我们感觉身上的压力突然很大,空前的大。也许,以前安稳日子过惯了,改变来得太突然,才让自己显得措手无策,那好吧,当作是一种预警讯号吧,不管是谁,都要认真做好自己的职业、事业规划。
五、我当老师了,呃。。。只不过是重操旧业,利用业余时间教一下吉他,一来可以重温旧梦,二来可以与别人分享音乐的快乐,三可以稍稍帮补家计。谢谢我的旧同事,现在我的琴行老板Leo同学。在广州的同学如果有兴趣学吉他,可以联系我哦,吉他入门、民谣、古典、电吉他、Ukulele都能教哇。和其他老师不同的是,我有KeyNote课件。

六、今年5月份,我得休假了。。距离上一次休长假快两年了,这次和LP去马来西亚来次穷游,年前订了最便宜的机票,去到那边晒几天太阳,简简单单,节节俭俭,当时补回我们的蜜月。
七、这个星期天,广州天河附近的Pythoner们会有一次小聚会,我会过去,又能见到很多新老朋友了。欢迎大家一起过来。
好了,今天的帐就到这里吧。。以后,让写Blog来得更轻松点。。谢谢。
关于黑莓手机、apple、twitter、互联网、web2.0以及生活的碎言碎语。请在twitter上
follow我,欢迎同好者talk to me bbmyth AT gmail.com。博客Hosting在 webfaction。