Google App Engine Devfest 200810 External

1,745 views

Published on

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,745
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
36
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Google App Engine Devfest 200810 External

  1. 2. Google App Engine 快速入门 2008 年 10 月 24 日
  2. 3. 日程 <ul><li>App Engine 简介 </li></ul><ul><li>应用开发详例 </li></ul><ul><li>APIs 例子 </li></ul><ul><li>其他用例和展望 </li></ul>
  3. 4. 基本概念
  4. 5. 创建一个 Web 应用,往往需要自己干很多体力活…
  5. 6. Google 提供的成套解决方案
  6. 7. 开箱即用 , 易上手
  7. 8. 应用详例
  8. 9. 我们要开发 : <ul><li>从 twitter 获取带有某个关键字的所有 “ tweet”, 算出在此话题内发言最多的用户 </li></ul><ul><li>为每个用户生成一个总结页面 , 包括此用户的头像 , 基本资料 , 还有在这个话题下的总结页面 . </li></ul>http:// tag080808 .appspot.com
  9. 10. 0. 注册 App Engine <ul><li>Google App Engine: http://appengine.google.com </li></ul><ul><li>如果无法接收短信验证码 : http://appengine.google.com/waitlist/sms_issues </li></ul>
  10. 11. 1. app.yaml 配置文件 application: tag080808 version: 2 runtime: python api_version: 1 handlers: - url: /static static_dir: static - url: /admin.* script: admin.py login: admin - url: /.* script: main.py
  11. 12. from google.appengine.ext import db class Tweet (db. Model ): text = db. StringProperty () id = db. IntegerProperty () from_user = db. StringProperty () created_at = db. DateTimeProperty () iso_language_code = db. StringProperty () profile_image_url = db. LinkProperty () class User (db. Model ): name = db. StringProperty () screen_name = db. StringProperty () followers_count = db. IntegerProperty () count = db. IntegerProperty () id = db. IntegerProperty () description = db. StringProperty () ... 2. Data Model
  12. 13. 3. 后台抓取数据 class FetchHandler(webapp.RequestHandler): def get(self): url =( &quot;http://search.twitter.com/search.json?q=%%23080808&quot; &quot;&page=%d&quot; % page) response = urlfetch.fetch(url) if response.status_code == 200 : data = simplejson.loads(response.content) results = data[ &quot;results&quot; ] for result in results tweet = datamodel.Tweet( id = result[ &quot;id&quot; ], from_user = result[ &quot;from_user&quot; ], text = result[ &quot;text&quot; ], created_at = parse_time(result[ &quot;created_at&quot; ]) ) tweet.put() ......
  13. 14. class DefaultPage(webapp.RequestHandler): def get(self): top_users = datamodel.User.gql(&quot;ORDER BY count DESC LIMIT 20&quot;) template_values = {&quot;top_users&quot;: to p_users} path = os.path.join(os.path.dirname(__file__), &quot;templates/default.html&quot;) self.response.headers[&quot;Content-Type&quot;] = &quot;text/html&quot; self.response.out.write(template.render(path, template_values)) 4 . 排行榜显示页面
  14. 15. class DefaultPage(webapp.RequestHandler): def get(self): top_users = datamodel.User.gql(&quot;ORDER BY count DESC LIMIT 20&quot;) template_values = { &quot;top_users&quot;: top_users } path = os.path.join(os.path.dirname(__file__), &quot;templates/default.html&quot;) self.response.headers[&quot;Content-Type&quot;] = &quot;text/html&quot; self.response.out.write(template.render(path, template_values)) 4 . 排行榜显示页面
  15. 16. class DefaultPage(webapp.RequestHandler): def get(self): if memcache.get(&quot;top_users&quot;) is None: top_users = datamodel.User.gql(&quot;ORDER BY count DESC LIMIT 20&quot;) memcache.set(&quot;top_users&quot;, simplejson.dumps(top_users)) else: top_users = memcache.get(&quot;top_users&quot;) template_values = { &quot;top_users&quot;: top_users } path = os.path.join(os.path.dirname(__file__), &quot;templates/default.html&quot;) self.response.headers[&quot;Content-Type&quot;] = &quot;text/html&quot; self.response.out.write(template.render(path, template_values)) 4 . 排行榜显示页面
  16. 17. <!DOCTYPE html> <html> ... <body> ... {% for user in top_users %} <dl> <dt><a href=“/tweeter/{{ user.user }}”>{{ user.name }}</a></dt> < dd >{{user.count }}</dd> </dl> {% endfor %} ... </body> 5. HTML 模板 default.html
  17. 18. 6. 开发调试环境
  18. 19. 7. 部署! appcfg.py update application_folder
  19. 20. http:// tag080808 .appspot.com 或者使用自己的域名 ! http:// me.tag080808.com
  20. 21. 8. 监测自己的应用
  21. 22. 其它 APIs
  22. 23. Memcache API 为常用页面和数据库查询加速 Mail API 自动发送邮件 URL Fetch API 抓取其他互联网资源 Users API 与 Google 账户轻易整合 Images API 基本图片处理
  23. 24. zhen-gong-fu.appspot.com code.google.com/p/zhen-gong-fu
  24. 25. 其它应用与展望未来
  25. 26. 和 Google Apps 的整合 Map.yuanpei.org
  26. 27. Google App Engine + OpenSocial TBD: Focus on 是男人系列 http://code.google.com/apis/opensocial/ articles/appengine-0.8.html
  27. 28. Google App Engine + OpenSocial TBD: Focus on 是男人系列
  28. 29. PREVIEW
  29. 30. <ul><li>现状… </li></ul><ul><li>500 MB 存储空间 </li></ul><ul><li>每天 2 GB 流量 </li></ul><ul><li>大约可容纳每月 500 万的访问量 </li></ul><ul><li>未来可付费升级 </li></ul>
  30. 31. <ul><li>未来 … </li></ul><ul><li>大文件存取 </li></ul><ul><li>大批量数据上传和导出工具 </li></ul><ul><li>付费 : 可购买更多配额 </li></ul><ul><li>更多语言的支持 </li></ul><ul><li>运行状况监控站点 </li></ul>
  31. 32. 教程、文档、资源、精品文章… http://code.google.com/appengine 作品展示… http://appgallery.appspot.com/ 示例代码下载… http://code.google.com/p/google-app-engine-samples/
  32. 33. 谢谢 !

×