V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DAOCLOUD
推荐学习书目
Python Cookbook
Using Google App Engine
推荐下载
Latest Google App Engine SDK
其他兼容技术
AppScale
jorakura
V2EX  ›  Google App Engine

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

  •  
  •   jorakura · 2010-11-20 10:45:21 +08:00 · 6596 次点击
    这是一个创建于 5152 天前的主题,其中的信息可能已经有所发展或是发生改变。
    译文在此: 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。
    14 条回复    1970-01-01 08:00:00 +08:00
    saga
        1
    saga  
       2010-11-20 12:19:47 +08:00
    Re 9), 可以看appscale这项目

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

    以及 GQL 为啥不该用 ..?

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

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

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

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

    self 只是个普通名字而已。 如果你喜欢,也可以换成别的什么。
    Sunyanzi
        6
    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
        7
    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
        8
    chuangbo  
       2010-11-20 14:55:38 +08:00
    @Sunyanzi 建议你读一遍《简明Python教程》(A Byte of Python) http://woodpecker.org.cn/abyteofpython_cn/chinese/
    如果每个例子都简单的动手敲打一下的话,一天就足够了。
    Sunyanzi
        9
    Sunyanzi  
       2010-11-20 14:59:19 +08:00
    @keakon

    求类似 php 文档那样的 Python 文档 ... 中英日文可 ...
    keakon
        10
    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
        11
    shawiz  
       2010-11-20 15:23:09 +08:00
    Dive in Python 是本好书,能在线阅读的。
    fengluo
        12
    fengluo  
       2010-11-20 19:01:51 +08:00
    Sunyanzi
        13
    Sunyanzi  
       2010-11-20 19:39:55 +08:00
    @fengluo 这是 Google 的原则吧 ..? 我之前在 Twitter 上见到了 ...

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

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

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

    这世界上真的存在比 Python 更简单的语言么 ..?
    summic
        14
    summic  
       2010-11-20 20:09:16 +08:00
    关于7,有没有例子可看? 我 python 新手
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2466 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:17 · PVG 08:17 · LAX 16:17 · JFK 19:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.