简单的翻译了一篇大牛的GAE感想

2010-11-20 10:45:21 +08:00
 jorakura
译文在此: http://www.rakutec.com/blog/%E3%80%8Cgoogle-appengine-%E3%81%AB%E9%96%A2%E3%81%97%E3%81%A6%E3%81%B2%E3%81%A8%E8%A8%80%E3%80%8D%E3%80%81%E5%8B%89%E5%BC%B7%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%81
原文是日语

1. 喜欢“纯粹”的程序员的天堂。虽说 SQL,Rails 等效率高,但是不透明的部分太多,GAE 简单直观。打比方来说,Rails等是个齿轮组,出了问题也不知道那个齿轮的问题。GAE 就一个轮子,有了问题一定是自己代码的问题。

2. 不擅长学习新语言的就算了。学 Python 觉得难的话,Big Table 也用不好的。

3. 不要依赖第三方框架。要是没本事把第三方框架代码读完,陷阱重重。自己做非做不可的可利用共通组件。比如文中提到的这个作者自作类库。https://github.com/snakajima/gdispatch

4. 表做平(Flat),等你哭着问“为什么没有 JOIN ?”就已经太晚了。

5. 真心在 GAE 上做东西的话,GQL 其实不该用

6. 善用 Task Queue。Big Table 读比写快数倍,使用 Task Queue 是实现异步处理的最好办法

7. 页面生成的处理去客户端做。View 就是静态 html/css,Controller 就是 js。Model 在 JSON。这样响应速度和用户体验都可以得到最佳。

8. 专注在 coding。负载平衡,数据库分区这些复杂操作完全不需要。

9. 最大缺点。Google Lock-in。
6565 次点击
所在节点    Google App Engine
14 条回复
saga
2010-11-20 12:19:47 +08:00
Re 9), 可以看appscale这项目

在twitter提到,Python讲师都应该用appengine吸引学生注意。最关键一点就是节省部署的时间、学习曲线。
我不算是计算机初哥,但是配置Python运行环境(不是调试环境)还是很费周折,如何配合nginx、apache,文档都讲得很糊涂,都要试验调整搜google,费劲死了。
appengine真是ttmd方便,自从有了它,小toy都放上面了
Livid
2010-11-20 13:24:48 +08:00
无比赞同这篇文章中的 7。
Sunyanzi
2010-11-20 13:46:22 +08:00
@livid 问题是 7 这样 ... 搜索引擎就搜不到东西了呀 ...

以及 GQL 为啥不该用 ..?

还有 ... Python 的文档好少 ...

我前阵子想找到底 @something() 这个是什么意思 ... 找了好久 ...

以及我现在都不知道 self 到底都可以提供哪些方法供调用 ...
zhaiduo
2010-11-20 13:54:13 +08:00
1+6同感
darasion
2010-11-20 13:55:45 +08:00
@Sunyanzi 据说 GQL 解析速度特别慢。而且据说 datastore 本来就不是为 GQL 设计的,只是为了兼容使用习惯。

搜索引擎 Google 爬虫已经支持了 javascript (这个经常在后台log里发现google在爬一些ajax地址 ),甚至 flash都能搜了。

self 只是个普通名字而已。 如果你喜欢,也可以换成别的什么。
Sunyanzi
2010-11-20 14:06:18 +08:00
@darasion def something(self):

也就是这个 self 可以任意换成别的都无所谓 ..?

为啥我看到的所有基于 GAE 的 Python 程序这里都写 self ...

以及这个 self 包含的方法 ...

除了 .write() .error() .redirect() .response.* 之外 ... 还有什么么 ..?

.response 下面又包含了什么方法呢 ..?

到底我要怎么看到这个对象的 Reflection 或者哪里有相关文档么 ..?
keakon
2010-11-20 14:54:19 +08:00
@Sunyanzi

self只是一个编程习惯,类似于其他语言的this。不同的是self不是关键字,因此你写成other也没关系,只要你不会弄混淆…
你如果深入去了解的话,就会发现元类的方法使用的是cls,而不是self,这也是习惯问题。

而且诸如C++等语言在很多情况下是可以省略this的,但Python不行。你深入去了解的话,会发现它的方法是用descriptor实现的,设计得非常优雅,不过也导致了必须写self:
http://www.keakon.cn/bbs/thread-1863-1-1.html

@是一种decorator语法,本质上来说就是高阶函数:
http://www.keakon.cn/bbs/thread-1081-1-1.html

至于你说的.write() .error() .redirect(),这是webapp的Response类里面定义的方法,这些方法名是可以随意写的,你用dir()可以审查一个对象的各个属性和方法。

Python的文档其实不少了,真要说的话,就语言本身来说,它的文档是我接触过的语言中最完善的,甚至比Java和PHP做得还好。
只不过你加上“中文”文档这个限制,那就自然少之又少了。
chuangbo
2010-11-20 14:55:38 +08:00
@Sunyanzi 建议你读一遍《简明Python教程》(A Byte of Python) http://woodpecker.org.cn/abyteofpython_cn/chinese/
如果每个例子都简单的动手敲打一下的话,一天就足够了。
Sunyanzi
2010-11-20 14:59:19 +08:00
@keakon

求类似 php 文档那样的 Python 文档 ... 中英日文可 ...
keakon
2010-11-20 15:16:41 +08:00
Windows的话可以看这里:
C:\Python25\Doc\Python25.chm

或者直接在线看:
http://python.org/doc/

其实PEP也是个好东西,讲解非常详细,附带很多例子:
http://python.org/dev/peps/
shawiz
2010-11-20 15:23:09 +08:00
Dive in Python 是本好书,能在线阅读的。
fengluo
2010-11-20 19:01:51 +08:00
Sunyanzi
2010-11-20 19:39:55 +08:00
@fengluo 这是 Google 的原则吧 ..? 我之前在 Twitter 上见到了 ...

其他的搜索引擎是否也按照同样的规则来处理呢 ..?

另外说 ... 我读完了简明教程 ...

感觉上 Python 的基本语法真是比想象的还要简单 ...

这世界上真的存在比 Python 更简单的语言么 ..?
summic
2010-11-20 20:09:16 +08:00
关于7,有没有例子可看? 我 python 新手

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/4787

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX