GAE restful interface for javascript

December 27th, 2008

经常遇到需要用js存取数据的时候,比如GM脚本,Opensocial/facebook app,各种工具用途的js插件、游戏,以及纯html+js/flash的网站应用。使用cookie和其他一些本地存储的方式有很大局限,opensocial之类容器网站提供的在线存储不好用,而且功能弱,容量小。如果能方便的用类似SQL的方式存取数据,就舒服多了。OpenResty就是这样一个接口,作者基于html+js+OpenResty+db这种富有创意的架构,实现了他的blog等应用。

我之前弄一个GAE应用的时候,就有用到js跨站到GAE存取数据,由于我对免费午餐确实比较有兴趣,这几天有空,就把它抽出来,包装成了一组通用的接口GAE-DJ。可以用js(or your server)调用RESTful接口进行插入,修改,删除,查询。接口是参考REST/JSON风格,模仿OpenResty的方式实现的。插入一次只能一条记录,查询只能基于一个字段,可以>, <, =, IN,功能还远没有OpenResty那么丰富。接口细节见README

数据操作的权限是用GAE基于google帐户的用户系统控制的,数据读写修改都可以设置为所有人/创建者/model所有者。不过建议尽量减少控制,这样就不需要去GAE登陆了。默认权限是all可读可写,创建者(要先登录再创建)可修改删除,类似blog comment的策略。

另外我还包装了GAE的fetch url api,这样通过GAE作为proxy,js可以变得十分犀利,不但可以抓网页,还可以发POST/PUT/DELETE之类的请求,甚至还可以加额外的header。

至于js客户端,我写了一个gae-dj.js,可以用它来跨站调用这些接口。

数据操作的demo
抓网页的demo
Source on git
Test server on GAE

总是坐过站的人

November 20th, 2008

有这样的一个人,他和你们一样,因为生产、生活和学习的需要,需要乘坐大量的公共汽车。但是他坐公车的时候,总是会莫名其妙的坐过站,并为此感到相当的苦恼。有时候坐到了离目的地一站远的地方,就算直接走过去,也还不算太远。但是有时候误差比较大,他就想再搭个车往回坐,可是又会坐过站,坐来坐去总是不能下到心仪的那一站,于是就更加苦恼。

他有时候想,我要认真听售票员的报站,这样就不会坐过站了,他听得那样仔细,连地上掉块钱都能听见。但是售票员偏偏就忘了报他要去的那一站,于是又坐过了。有时候是甜美的女声在广播中报站,他听到了要去的那一站的名字,当时就感动得泪流满面,下车一看,才发现报的名字其实晚了一站,是司机按错了开关。

有时候他想通过听mp3来计时,到了正确的时间就下车,但是每次听到精确计算的一首歌中精确计算的那一句(通常是《小宇宙》里面“挤向前挤向前把我挤回路边”)的时候,抬头一看,公车刚刚从正确的那一站关门启程,绝尘而去。第二天他决定听到“左手边有个年轻人插队”的时候就提醒自己下车,结果发现那个时候已经坐过了三个站,但是他居然没有烦恼也没有发脾气,因为他就是一个这样的人,即使发脾气也没有用啊。

有一天他决定什么事情都不做,一直盯着窗外,手里拿着GPS,听到“到达目的地”的时候马上就下车。这次终于下对站了!但是他惊奇的发现,自己要去的地方其实在上一站下的话会更近。所以他还是坐过站了。他仍然是一个从来没有在正确的站下过车的人。

拥抱

October 26th, 2008

南瓜马车的午夜,找找小飞侠的玻璃鞋。


Read the rest of this entry »

今日墙壁两张

September 16th, 2008

可作墙纸壁纸以及餐巾纸之用,点击有大图。

那些

September 2nd, 2008

那些玩了也不能丢弃的词语,千万次遇见也挥之不去的句子,再随机的堆起来又能怎样呢?
那些说了也记不得意思的话,在大爆炸的宇宙光速奔走相告,有再多的人听到又能怎样呢?
外星人在地球即使能遇到故知,也就像在厕所里互相忘记名字的邂逅,再难得又能怎样呢?
就像打错电话,跟电话有什么相关,就像吃错药,跟药有什么相关?跟药又有什么相关呢?

最近要奥运

July 21st, 2008

电视里说昨天单双号限行宣告北京正式进入”奥运时间”,但我怎么觉得在公车上已经看了一辈子的奥运专题节目了呢?好些网站为了同一个梦想,关闭注册或者是直接关门大吉,搞得跟开xx大似的。看来开大会之前果然觉悟都会大幅提高。由于美国代表团要来我校居住训练,现在操场已经用塑料布包成了粽子,而且这个粽子操场我们已经不能进了,所以之前的跑步计划也只好先暂停避运。宿舍发了什么安全措施通知xx条,比如不准用电饭锅热得快等加热器具,不准打条幅标志,面向美国代表团的窗户禁止开启。我不知道隔壁胖娃的电饭锅原来这么危险,更危险的是我根本不知道美国人住哪个方向,反正寝室只有一个窗户,打开的话也许会有人民警察找上门来。地球太可怕了,我还是回家看片吧。

李大人,所谓胜者为王,败者为寇。……大人为了大显我民神威而办的这场狮王争霸,死伤那么多人在世人面前,其实我们都输了。以小民之见,我们不仅要练武强身,以抗外敌,更重要的是广开民智,智武合一,那才是国富民强之道。区区一个牌子能否改变国运,还请李大人三思。这个牌子就留着给你作记念吧。——《狮王争霸》黄飞鸿

上海

June 21st, 2008

虽然没去过很多城市,但我发现,除了纬度气候和地形不一样,它们是如此相似。在我的想象中,城市的历史会刻在它们的城楼上,就像年轮也会刻在我们脸上一样。然而当城墙被推掉,资本统治一切的时候,记忆就变得如此脆弱尴尬。人会死,建筑和方言会被抹去,只剩下资本的土壤上疯狂生长的钢筋。就像Memento里面只有两分钟记忆的主角一样,其实自己不断在死去,一旦停止提醒自己是谁,就真的不复存在了。所以只好反复扮演那个自己应该成为的角色,假装他还生活在这个世界上。天津的公园在努力模仿殖民时期租界小洋楼,重庆的洪崖洞生造出一个山腰上的老山城,北京更不用说,连我们宿舍楼最近都涂成天朝王都的鲜红。

小明说,来上海玩吧。我说,好吧。
于是去蹭吃蹭喝。
还去钱柜唱歌。
还去西塘小游。
还看了梅梅同学。
梅梅请我从中午吃到晚上。
梅梅长乖了我长胖了。
想去蹭牛奶人,没蹭到。
想去吃戴光和唧唧罗,没吃到。

回北京,熟悉的公交车、熟悉的地铁、不熟悉的公交车。
我把梅雨带去了上海,又把暴雨带回了北京。
不过这是后话。

城市是母体,而我们生活在她的子宫里面。 ——谢小盟

丧钟为谁而鸣

May 15th, 2008

今天在豆瓣上看到转的一篇哀悼贴,作者求学在外,离家千里,却听到母亲葬身于地震中的噩耗。作者想起多年来想让母亲看到的成就,都无法让自己满意,更加痛从中来。读完此文,悲入骨髓。再看评论,才发现原作者竟然是我认识的,几年前在北京有过一饭之缘。

最近资金周转失灵,身无分文,于是想找隔壁老罗还钱。然后就地震。12号一直没看到他,还以为回绵阳抗震救灾去了。然后很快老罗又出现了。他说,他小时候爬过的古塔垮了,他刻过字的亭子也垮了,他家房子也垮了。

昨天,老姐在成都超市抢购纯水。盛传都江堰化工厂倒塌,污染了成都用水,于是大家全都疯狂储水。还有关于水库的更可怕传言,一时间人心惶惶。我不断劝她说要镇定,不要相信谣言。但是我自己都不知道什么是真实,什么是谣言。远在外省,鞭长莫及,行动和语言都如此无力。

跟老妈通电话,重庆的市区好像都没出事,虽然摇晃的厉害,建筑也还算坚固。她却担心我,反复强调的是,我在京城,万不可听信谣言,乱在网上说话。仿佛最危险的并不是天灾,而是来自某种更可怕的东西。她不大懂电脑,也不会上网,但是对互联网安全的理解是透彻的。我说,我什么都不说。

老妈还怕我因为献血而感染,确实,现在出什么事故都不是新闻了。不过sorry,我还是去学校备血报名了,其实偶尔献血对健康是有好处的。只是现在血库已满,只有等候通知。而且我的AB血好像用处不是很大的样子。血如其人。

回到寝室,魔兽战况仍酣,吆喝砍杀不断。

本站feedburner/feedsky订阅走势大解析

May 10th, 2008

尽管我已经多次声明转移feed到feed.su27.org, 很神奇的是现在竟然还有好些在fb订阅我的同学。防止大起大落的任务我至少完成了50%。为什么有些人永远红不起来,我觉得宿命是很好的解释。

作为参考的是后来在feedsky的走势。