GAE 编程指南读书笔记

GAE 和我蛮有缘分,我初学 Python 的其中一个原因就是当时 GAE 刚推出, 当时想法是免费的应用要用起来,要不然就浪费了。随后也假模假样的看文档, 就是没有什么产出。 去年写了一个小应用 dbevent2gc , 期间发现 GAE 和普通程序开发的诸多不同,又遭遇 GAE 配额大幅缩水, 写出来的应用运转的不太稳定。在南京图书馆的架上看见这本《GAE 编程指南读书笔记》, 立即借回家仔细阅读。 GAE 的简介 运行时环境 Python / Java 数据存储 Datastore(实体 / 查询 / 索引 / 事务) 服务(Memcache / GAccount / 任务队列 / 计划任务) 工具(SDK / appcfg / dev_appserver / 控制台) 入门(安装 / GAccount / webapp / app.yaml / /_ah/admin / 注册部署 / login:required) 处理流程:请求 - 前端 - 引用服务器 / 静态文件服务器 - 服务 配额限制:请求限制 / CPU 限制 / 服务限制 / 部署限制 (最新配额:http://code.google.com/intl/zh-CN/appengine/docs/quotas.html) 数据存储 GAE 的数据存储方式和传统的 RDBMS 差异比较大,更类似于对象数据库。 类别 kind / 键 / 键名 key name 可以通过键来获取和操作对象 e = db.get(db.Key('Entity', 'alphabeta')) / e = Entity.get(k) e = db.get(k) e.delete() / db.delete(e1, e2) / db.delete(k) Expando 基类可以任意扩展属性,Model 基类则不可。 GAE 中基本类型与 Python / Java 中基本类型的差异 多值属性 数据查询 查询和类别 db.query() query.filter() query.order() 查询和键:查询结果要么返回实体,要么返回键( key_only=True ) 可以用 GQL 写查询语句,不能写 CUD 获取结果: fetch() 索引 每条查询都需要维护一条索引,在 index.yaml 中可以配置 排序之后的索引查询很快,查询效率和返回结果集有关 实体的每个属性会自动维护两条索引:升序和降序 查询时候选取对应的索引进行查询,条件语句可能和排序语句相冲突 不等于 / IN 操作符将引发一系列变换出的查询 多值字段的索引:每个值会成为索引中一行 / 实体会因此分散 / 取第一次成功扫描到的行 多值会引入爆炸索引问题 事务 通过实体组来控制事务,实体组会在同一块存储区 GAE 使用乐观锁 使用 AModel(parent=p) 构造祖先,然后通过 run_in_transation() 回调事务处理函数 BigTable 中使用日志+时间戳来跟踪实体的修改,保证数据并发和一致性 事务更新和索引更新:可能返回的索引结果和实体不一致 Python 数据建模 声明 / 类型 / 验证( validate() ) 不编入索引的属性 indexed=False 时间类型的自动值 模型变化带来的维护问题:修改属性类型 / 添加一个必要属性是不向后兼容的。 关系建模 db.ReferenceProperty collection_name 多对多关系的处理 键列表方法:使用多值属性 链接模型方法:相当于中间表概念 模型的继承:通过 db.PolyModel 实现多态查询 Memcache CRUD 获取 URL 资源 urlfetch() RPC 异步请求调用,闭包调用 邮件和 XMPP 额,亲用到时候看 Google 官方文档吧~ 大批量数据操作和远程访问 /remote_api Bulk Loader 大量数据操作 远程 shell remote_api_shell.py app-id 任务队列和计划任务 队列: queue.yaml / 令牌桶 计划任务: cron.yaml 都是通过设定主动触发某个 url Django 看 Django 文档吧,亲~ 部署 上传 appcfg.py update ./clock 通过 url 使用特定版本: version-id.latest.app-id.appspot.com 版本只维护代码,数据库还是同一份 下载日志 appcfg.py request_logs clock logs.txt

2012-03-24 · alswl

影响力读书笔记

Thumbnail

本书研究 - 社会心理学 - 顺从心理学。 日常生活中有大量心理捷径。 在某个环境下机械地回应某一信息的倾向叫做自动化反应或"按一下就播放"式反应; 对所有相关信息进行彻底分析后做出反应的倾向,则叫做可控式反应。 豆瓣链接 1. 互惠 互惠是人类社会群体的一个独有特征。 利用小礼物,使目标答应原来会拒绝的请求。 互惠原理适用于强加的恩惠。 互惠原理可触发不对等交换。 违背互惠原理,接受而不试图回报他人善举的人,是不受群体欢迎的。(进化适应器) 互惠式让步:面对接受的善意,我们感到有义务要偿还。 拒绝-后撤策略:先提出较大的要求,遭到拒绝之后再提出真正的较小要求。 责任感 满意感 如何防范: 拒绝最初的善意 / 分清楚请求者是否有善意或别有所图 明辩敌友:善意自然应当得到善意回报,可对销售策略却没有这个必要。 ...

2012-03-05 · alswl

再读《重构》

Thumbnail

Martin Fowler 的「重构-改善既有代码的设计」这本书,是我大学老师推荐给我的。 当时我在撰写代码过程中,发现当代码量到某个数量级时候(1000+行), 就会逐渐失去对代码的控制能力。 昆哥推荐了两本书「UML 和模式应用」和「重构」这本书。 这本书是2年前购买的,可惜以我当时的代码感知和撰写能力,看起来颇为吃力。 半途就看得云里雾里而中断了。最近我又重新拾起这本书, 将书中所写的境况与我这两年多来遇到的问题相互印证,才感受到这本经典的力量。 Martin 其人: ThoughtWorks 的首席科学家,当今世界软件开发领域最具影响力的五位大师之一。 他在 UML 推广普及、领域建模、企业应用开发和敏捷方法等方面建树卓著,被称为软件开发的教父。 ...

2012-02-05 · alswl

暗时间读书笔记

Thumbnail

pongba的大作《暗时间》,讲述效率、习惯、思维,还有一些数学史话和算法,推荐一看。 ps:我的读书笔记比较水,也许成为摘抄更合适。我习惯这种大纲式的笔记,方便我回想。这里有[一篇很赞的评论](http://book.douban.com/r eview/5012104/),介绍了三头牛,其中有笑来老师和刘未鹏。 1. 效率、记忆和学习 人生的原动力,对卓越的追求。 在每个时间的沙粒留过的时候,抓住沙子,让自己生命更有质量。 效率 X 时间 = 质量。 暗时间 那些瓶颈较细的能够抓住每一粒时间之沙,虽然啥子总量一样,但相对却拥有更长的生命。 投入时间和效率 投入时间这个说法本身就是荒唐的,实际投入的是时间和效率的乘积。 避免工作内容切换带来的上下文时间损耗 通过锻炼缩短进入状态的能力 能够迅速进入专注状态,以及能够长期保持专注状态,是高效学习的两个最重要习惯。 设计你自己的进度条 设计你自己的进度条 不要过早退出循环 绝大多数情况下你并不孤单,你遇到的问题早就有人遇到过,你踩过的坑里尽是前人的脚印。 兴趣遍地都是,专注和持之以恒才是真正稀缺的 性格里面有没有维持兴趣的火种一直燃烧下去的燃料 靠专业技能的陈宫是最具有可复制性的 反思是让人得以改进自己的最重要思维品质 一生的知识积累,自学的起码占90% 如何有效的记忆与学习 最终目的是要在恰当的时候能够想起来去使用 记忆线索的提取 知识信息:精细的概念、逻辑、一般的解题原则、通用的解题手法、背景知识、类似的问题 环境因素:环境、味道、声音 语言背景 如何记忆 主动回顾 创造回忆的机会 虚拟别人的经历 抽象和推广 比较自己的经历 学习密度和专注力 并非靠自制力去强迫不受干扰,真正的效率源自于内心对一个事物的强烈的热忱。 专注力的意义 专注力可以让表层意识全功率运作 专注力可以让潜意识进入一种专注状态,在非工作时间持续发挥作用。 获取专注力 人在接触一样新事物时候都是极其专注的(小时候的故事)。 克服焦虑,焦虑会严重影响专注力 享受困难,保持乐观心态 GTD,要事第一,让不重要的事情来找自己 刘未鹏的学习习惯 学习和思考 Google & Wiki 看书挑剔,只看经典 做读书笔记 将思考变成习惯,避免焦虑 多看心理学与思维的书,因为它们是跨学科的 学习知识的技巧:它的本质是什么?它的第一原则是什么?它的知识结构是怎样的? 学习和思考时候常问自己问题 你的问题到底是什么 有什么收获 设想自己正在将东西讲给别人听 设想讲给一个不懂的人听 市场反省和注意自己的思维过程 养成反驳自己的想法的习惯 问自己,真的理解了么 时间和效率 趁着对一件事情有热情的时候,一股脑儿把万事开头那个最难的阶段熬过去 重要的事情优先 重要的事情要营造比较大的时间快来完成 同时也要善于利用小块时间 重视知识的本质 重视提前积累的强大力量(要把眼光多看,就能提前准备) 抬起头来(停下来,问问自己做的事情是否有意义) 退订RSS(这个嘛,过滤就好了) 总结最近得到的新知识 保持看书(书本的知识质量优于互联网上的知识) 制定简要的阅读计划 时间和效率2 根据主体来查阅资料,而不是根据资料来查阅主题 好资料是根据思考过程来推导,坏资料是上来就写定理公式 学习一样东西,首先要在大脑中积累充分的疑惑感 有选择的阅读 书籍分为两类,一种是知识的,一种是思维的 看不懂的时候,有可能是几种原因: 看的不够使劲 牵扯到了不懂的概念 作者讲述的顺序不对 在阅读之前就获取书本质量的评估 如何搜索好书:同作者,Amazon/Douban推荐,提到其他著作的数,别人之作的索引 知识结构 抓住不变量(本质的知识) 习惯的养成 人容易珍视自己长期积累的信念 理智是情感的奴隶 不自我欺骗,承认养成习惯的难度,并注意观察自己的行为,经常自我认知 2. 逃出你的肖申克 讲认知模型,思考模式。 ...

2012-01-15 · alswl