V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DAOCLOUD
推荐学习书目
Python Cookbook
Using Google App Engine
推荐下载
Latest Google App Engine SDK
其他兼容技术
AppScale
Claude Code 订阅服务平替
更经济的 Claude Code 订阅平替服务低至10元/天,同等于 Claude Max 200美元方案,支持Claude 4 Opus模型
Promoted by ylsAGI
jorakura
V2EX  ›  Google App Engine

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

  •  
  •   jorakura · 2010-11-20 10:45:21 +08:00 · 6792 次点击
    这是一个创建于 5347 天前的主题,其中的信息可能已经有所发展或是发生改变。
    译文在此: 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
    PRO
       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   ·   实用小工具   ·   2526 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:50 · PVG 20:50 · LAX 05:50 · JFK 08:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.