【引文】如何用Python往Google Spreadsheet上写数据
现代企业里,数据决定着方向,人们都想随时看到各种报表。很多项目可能都需要dashboard一类的工作,把分散的数据变成一些能随时查看实时数据的图表,这个工作有两个环节:
- 把数据汇集起来,放入CSV或者数据库
- 一个服务器端的程序能够读到这写数据,根据需要生成在线的图表 (离线的也可以,那样每次人们想看这些图的时候都会来麻烦你,如果你在度假,他们会想敲开你的电脑)
现代企业里,数据决定着方向,人们都想随时看到各种报表。很多项目可能都需要dashboard一类的工作,把分散的数据变成一些能随时查看实时数据的图表,这个工作有两个环节:
如果你的专业课里有过不少计算机科学之类的内容,你可能还记得很多中文课本不太好读,其原因一方面有可能因为是课本里的语言(符号)粗制滥造,另一方面有可能是因为你的思维方式不适应课本里的内容。
我推荐所有能看懂英文的读者多去搜索一下英文世界里的教材,从而能够摆脱劣质教材或语言因素所带来的束缚。为什么推荐英文教材呢?大家可以参考一下英文教材编写者(计算机科学界大儒,图灵奖得住) Dijkstra对于自己写作上的要求:
At a given moment, the concept of polite mathematics emerged, the underlying idea of which is that, even if you have only 60 readers, it pays to spend an hour if by doing so you can save your average reader a minute…
这里有个有意思的英文常用表达: elephant in the (living) room (房间里的一只大象),一般用来表达事情已经大到没办法睁一只眼闭一只眼了…例如:
读到 coding horror (不知道中文翻译是什么,“代码恐慌”?) 中的文章 Real Ultimate Programming Power
文中讲到了软件开发中的方法论和其的演化,但是最让人觉得有意思的是两个引述:
The majority of developers do not suffer from too much design patterns, or too much SOLID, or agile, or waterfall for that matter. They suffer from whipping out cowboy code in a pure chaos environment, using simplistic drag & drop, data driven, vb-like techniques.
翻译: 让大多数软件开发者痛苦的,不是过多的设计模式,过多的SOLID(见注解), 过多的敏捷开发,或者瀑布模型;让大多数开发者痛苦的是在混乱的环境中用低级方式除去代码仙人留下来的古怪代码(好吧,这是我对cowboy code的曲解)。
这里是维基百科对网络爬虫的词条页面。网络爬虫以叫网络蜘蛛,网络机器人,这是一个程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。
从技相来说,实现抓取网页可能并不是一件很困难的事情,困难的事情是对网页的分析和整理,那是一件需要有轻量智能,需要大量数学计算的程序才能做的事情。下面一个简单的流程:
Tor是一个是开源项目,网址http://www.torproject.org(很遗憾,这个网站因为GFW,在中国大陆你无法访问,),TOR这个项目,旨在把这个世界上所有的代理服务器或是使用Tor的这各个客户端串在一起,形成一个虚似的网络。
这是一个分布式的,通过一种P2P技术构建的网络。这个技术很像是BT或是电驴所使用的技术。不过,Tor 的目标是抵御流量分析,流量分析是一种对网络的监视行为,这种行为会威胁个人的匿名与隐私,商业活动与业务关系的保密和国家的安全,打破网络屏蔽。
这个炸弹很简单,就是一个命令行,如下所示:
:(){ :|:& };:
在此,我严重警告你,请不要在你的Unix/Linux或Cygwin的Shell下执行这个命令。否则,这个命令会不停地fork子进程,直到你的整个系统无法响应。
再次警告你,请不要执行这个命令,除非你想重启你的系统。
所以设计模式,实是是一种方法,一种为了解决某种或某类物定问题所使用的设计模型。据说,在编程语言方面有100多种设计模式,而在现实生活中,传说有上成千上万个模式,比如写书有写书的设计模式,写武侠的一种,言情的另一种,连官方的新闻稿件也有。
“At 11:31:30pm UTC on Feb 13, 2009, Unix time will reach 1,234,567,890.
Where will you be at this momentous second?” – from Bell Labs
在下周五或周六的某一时间,计算机的时间戳(TimeStamp)为变成奇妙的1234567890,而这一天就是——格林威治时间:2009年2月13日 11:31:30 。
当然,因为这个时间在地球上某些地方是13日,某些地方是14日,不同的时区可能会不一样。不过,你可以使用Unix/Linux 下的Perl运行一下这个命令你就知道你的当地时间了。
结对编程(Pair-Programming)可能是近年来最为流行的编程方式。所谓结对编程,也就是两个人写一个程序,其中,一个人叫Driver,另一个人叫Observer,Driver在编程代码,而Observer在旁边实时查看Driver的代码,并帮助Driver编程。并且,Driver和Observer在一起时可以相互讨论,有效地避免了闭门造车,并可以减少后期的code review时间,以及代码的学习成本。