Monthly Archives: 02月 2010

早安广州

好久没有七点多就起床了。。今天老婆不在身边,是住入新家以来第一次自己睡在这间大床上。 最近的事多又不多,反正还是比较煎熬的,不过,我相信,这一切都会变好。只是,现在还需要经历痛苦。 加油!

Posted in 生活 | Leave a comment

折腾TinyMCE图片上传的结果

由于敬爱的DropBox同学不幸被吾裆阉割了一半(不能访问外链,还能同步),导致本博的部分重要图片被墙,无法翻墙的同学看着大叉叉心神不宁。我以前使用毕卡索来做图片服务器,后来毕卡索被墙后换了DropBox,但不幸的是DB同学由于出过不少次风头而也被切了一半,看来,图片这东西还是放在自己服务器靠谱,就算被墙也是换个域名的事,不用大量修改文章里的图片链接那么痛苦。 本博在去年更新程序的时候换了TinyMCE做为WYSIWYG编辑器,但一直没有时间做个图片上传的插件(用不起官方那个商业版的),最近决定折腾折腾。 凡事先Google,django + tinymce + image 等关键字一出,马上找到一些好东东。 首先是Django-FileBrowser,她是一个强大而美丽的文件管理器。 更多截图。 然后我顺腾摸瓜找到了Django-grappelli,她又是一套优雅实用的Django-admin样式和扩展,除了有一套优雅大方的样式,她还为Admin加入了书签和导航栏等功能,甚为实用,可移步到这里来围观围观。 这两个应用都与TinyMCE完美整合,最好两者一起使用,当然不用grappelli也无大碍。 这两个应用我都照单全收了,我在线把她们安装到我的服务器上,这样一来,我不仅解决了图片上传的问题,还收获了一套美观的样式、得到了一个实用的文件管理器。喔!上艳照。 现在发图方便了,下面我要发飚了。

Posted in 技术 | Tagged | Leave a comment

以后就使用Chrome书签了!

Chrome书签支持同步了。对我而言这太好了!虽然其他浏览器可能也有书签同步的功能,但是对我而言没有吸引力了,Chrome已经把他们打败了。因为我已经徹徹底底地从Firefox粉变成了Chrome死忠。 在以前,浏览器的书签对我而言作用甚小,类似鸡肋,因为我同时使用着至少三台电脑,用着几种不同的浏览器,大部份是Firefox和IE。所幸的是两种浏览器都支持google toolbar,所以当时就使用了google bookmarks来管理书签。通过google toolbar 使用bookmarks比较不爽的就是响应速度,毕竟bookmarks是在结加载,实时同步的。 现在我在所有操作系统上的浏览器都转到Chrome上面来了,我再次面临着书签的问题,Chrome支持扩展后出现了一个google bookmarks的扩展,但使用体验一般差,很想干掉它。这时我就想,都是Google的东西,干嘛好好的有书签不用,要装个插件?这不是瞎折腾吗。。 我认为Google以后会把Chrome书签与google bookmarks合并在一起,因为他们是相同的Google用户在Google上性质相同的两份数据,有什么理由不合并吗?如果Google不打算合并的话,那我失望就大了。 先不管Google合不合并,我先把google bookmarks先导入到我的Chrome书签中来。以后咱就只用chrome书签了。 下面附上把google bookmarks导入到Chrome书签的方法: 1、登录Google bookmarks:http://www.google.com/bookmarks  2、点击左侧导航栏的 Export Bookmarks,下载html格式的书签文件。 3、使用其他浏览器,如Firefox导入刚下载的html书签文件。 4、打开Chrome,选项中,导入另一个浏览器数据,选择刚用来导入书签的浏览器Firefox,导入。 5、成功。

Posted in 软件 | Tagged , | Leave a comment

让R与Python共舞

R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具。通俗点说,R是用来做统计和画图的。R拥有自己的脚本语言和大量的统计、图形库(得益于开源社区),这让她看起来既美又实用。与其他同类软件(如SPSS)相比,R的特点是纯命令行的,这倒也好,我们更应该把注意力放在数据本身,而非统计工具的UI。 R虽说有一套自己的语言,还挺完备,但她最专业的还是做统计和画图,而像连接数据库、文本处理、文件操作等这些脏活可不能委屈R来干哪,这些得有其他语言来负责,我的选择是咱最熟悉的、做这些脏活最棒的Python。那接下来的问题很清楚了,R和Python如何一起工作?拍拍脑袋,想到可能有下面几种办法: 1. R和Python只共享文件,Python把源数据处理干净,生成格式化的文件放在预定的目录下,做个定时器让R去读文件,最终输出统计结果和图表。    这种做法一定程度上可行,除了做定时器外,还可以让Python即时执行”rscript”命令调用R脚本来工作,只是这种办法限制太大,只能够交换文件,Python不能对R进行精确的控制。 2. 让Python直接调用R的函数,R是开源项目,肯定会有一些第三方库实现Python与R互通。    果然,我找到了rpy2,可以实现使用python读取R的对象、调用R的方法以及Python与R数据结构转换等。实际上除了Python,其他语言与R互通的第三方包也大大的有。 最后我选择第2种方法,来让R与Python共舞。 模块 rpy2.robjects 是rpy2对R的一个高级封装,该模块里包含了一个r对象和一系列的R数据结构。使用rpy2的大多数情况,只需要跟这个模块打交道即可。rpy2的安装在此不多讲了,有兴趣的同学看文档去,直接体验一下R如何与Python无缝整合吧。 了解r实例 r实例是指rpy2.robjects.r,它是在Python中的嵌入式R进程,把r当作从python走向R的通道来看就可以了。通过r实例,我们可以读取R的内置变量、调用R的函数、甚至,直接把它当作R的解析器来用。 访问R的对象 在R的命令行中,我们直接输入对象名来访问R的内置对象,如pi、letters: 在R控制台中访问R对象 而使用r实例,python访问R对象也很简单,而且方法很多: 在python中访问R对象 在这段代码中,我们用了三种方式来访问R对象,把r实例当作字典,把r实例当作方法,把r实例当作一个类对象(真是神喻呀~)。在实际中,使用哪一种方式要因习惯而异,我喜欢的方法是使用第三种,把r实例当作自己人,直接使用”.”来访问R对象。但这种方法有一个缺陷,就是不能访问带名字空间的R对象或函数,而其他两种方式是可以的,这点将在随后说明。 调用R函数 通过r实例,我们可以轻易地实现用Python调用R的函数。下面我们分别在R控制台和python命令行下读一个数据文件并画一张点图。 R控制台读取文件画点图 代码解读: data.csv 的内容就是上面代码的3到7的内容。 data = read.table(‘data.csv’) :把文件读进一个数据框变量data中。 mtx = data.matrix(data):把data转变成矩阵。 dotchart(mtx)用矩阵的数据画点图。 结果如下: 接下来用python来做一遍同样的事情,我们之前了解到,使用r实例可以直接访问R对象,还可以直接调用R的函数,其实在Python看来,对象和函数是相同的东西,函数也是一种对象罢了。现在来试一下调用”read.table()”函数读入一个数据文件data.csv: 出错了!怎么回事?在上面我提到过了,使用“.”引用的方式不能访问带有名字空间的R对象和函数,read.table 是表示在read包下面的table函数,通过”.”的形式调用失败,必须要用字典的方式或参数的方式来获得: 这段代码得到的结果与在R控制台下画点图的效果是一样的。最后一行r.dotchart(mtx)是直接通过”.”来调用R的函数dotchart的,在没有名实空间的情况下,是正常的。如果你为了避免太多不可控制的出错机会,你可以统一地使用字典的方式来访问R对象和方法,这是最保险的方法,虽然我个人认为看起来有点别扭。 r实例就是一R控制台 … Continue reading

Posted in 技术, 软件 | Tagged , , | 6 Comments