V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  keakon  ›  全部回复第 48 页 / 共 52 页
回复总数  1030
1 ... 40  41  42  43  44  45  46  47  48  49 ... 52  
2010-12-16 14:46:28 +08:00
回复了 CoX 创建的主题 Google App Engine Google App Engine 1.4.1 已经部署上了
果然升级到1.4.1了: http://shell.appspot.com/
2010-12-15 23:19:04 +08:00
回复了 julia 创建的主题 Google App Engine GAE: 新手请教这两种方法的效率谁更高?
简单来说,没法做到id连续且高效

同时创建2个实体时,你没法保证id不冲突,除非所有实体都在一个实体组

而如果使用实体组,你更改任何一个实体,都会导致其他实体暂时不能被更改

如果id不需要完全连续(允许冲突时跳跃1的话),使用memcache来加锁或许可以搞定

至于你提到的2个方法,v2ex的更有效,因为get比query快,而且不会因为索引未生效而得到错误结果
2010-12-13 15:45:07 +08:00
回复了 Livid 创建的主题 Google App Engine 关于在 GAE 上实现 home timeline
用一个model专门保存每个用户的公开时间线(实际上就是topic id),然后memcache它们

取的时候直接用memcache.get_multi()来获取

如果其中有些为None,再去数据库里取公开时间线

详细的想法可以参考这篇:

http://www.keakon.net/2010/04/26/Twitter%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E4%BD%BF%E7%94%A8NoSQL%EF%BC%9F
2010-12-10 19:45:14 +08:00
回复了 Elix 创建的主题 问与答 有多少人会使用RSS订阅V2EX的更新?
这是Google Reader的:Posts per week:320.1 Subscribers:83
2010-12-09 19:42:32 +08:00
回复了 zztczcx 创建的主题 Python 初学python是用哪一版呢?
实用主义者:2.5。大多数现代的库都至少支持这个版本,语法相对于旧版本已经很华丽和实用了。

理想主义者:3.2。有些地方确实看上去很美,但是老Pythoner转型过去有点难适应。第三方库与2.5相比可以说是很少,性能也马马虎虎。

尝鲜者:2.7。从3.x借鉴了很多新语法,沿用了一些C库,不足就是不完全兼容一些库。

Geek:pypy。性能是最好的(因为有JIT),但是与很多库各种不兼容,要让它跑起来得不怕麻烦。
2010-12-09 11:01:43 +08:00
回复了 POPOEVER 创建的主题 问与答 v2ex.appspot.com 被墙?
上海网通访问appspot.com被墙,但是某个ghs ip仍然正常
2010-12-07 23:52:26 +08:00
回复了 Los 创建的主题 分享创造 codes.appspot.com 发布,分享开源GAE项目
不得不抱怨一句,这张图拜托生成一个缩略图吧,下载太慢了…
http://web.me.com/v2ex.livid/picky/picky_v0.1.9_default.png
2010-12-07 13:36:29 +08:00
回复了 saharabear 创建的主题 V2EX V2EX用的哪家的反向代理呢?
看HTTP头就知道了:Server: nginx/0.7.67
2010-12-07 10:11:01 +08:00
回复了 lynncui 创建的主题 Google App Engine 我编写的搭建于Google App Engine的Twitter Web Client
那个不叫守护进程,响应请求仍然存在30秒限制,你无法让它一直运行一个任务

只有cron和task queue可以执行10分钟,但是执行它的instance无法和响应用户请求的instance交互
2010-12-07 02:30:34 +08:00
回复了 monster 创建的主题 Project Babel 链接,图片、视频的识别换成javascript处理如何?
要睡觉了,不说太多

@chone PB还没去做并不代表这件事服务器端不能做。而我所表达的是服务器端来做比客户端来做更好,不会带来任何兼容性问题。
而且在我看来Django模板是个很烂的东西,为什么非要强迫自己用它的filters.py,而不用现成的库去解析?

@dimlau 以你的回复来看,你是要服务器不做任何处理,用户也不写任何标签,也就是这种形式:
http://v2ex.appspot.com/avatar/2704/normal

那么JavaScript如何判断我是贴URL还是图像还是视频还是音乐还是代码?
2010-12-07 02:17:27 +08:00
回复了 lynncui 创建的主题 Google App Engine 我编写的搭建于Google App Engine的Twitter Web Client
聊天室是“有人说话”这个POST请求来驱动server,然后server才会push message给所有人

而如果是Twitter客户端,说话者不一定是客户端的用户,可能是他关注的所有人,而这些信息是存在于Twitter网站上的,他们说话并不会驱动你的server

因此你只能让server每隔一段时间去urlfetch一次Twitter,但是这个也需要请求来驱动,于是只能让用户每隔一分钟pull一下sever,然后server去获取结果并push用户了

顺便把我的聊天室也放出来:
http://chat.latest.gaejava.appspot.com/
2010-12-07 01:55:21 +08:00
回复了 lynncui 创建的主题 Google App Engine 我编写的搭建于Google App Engine的Twitter Web Client
channel api没法即时同步的,因为它是基于HTTP请求驱动,而不能自发驱动的。

能做到最好的方式仅仅是用task queue来驱动,但毕竟过于麻烦了。

当然,这对用户来说完全没有区别,只是我对没有提供真正可控的长连接比较残念=。=
2010-12-07 01:47:18 +08:00
回复了 monster 创建的主题 Project Babel 链接,图片、视频的识别换成javascript处理如何?
以下言论对事不对人,见谅。

假如我想发一张我的头像,我假设有这4种方案:
http://v2ex.appspot.com/avatar/2704/normal
[img]http://v2ex.appspot.com/avatar/2704/normal[/img]
{{http://v2ex.appspot.com/avatar/2704/normal|我的头像}}
<img src="http://v2ex.appspot.com/avatar/2704/normal" alt="我的头像"/>

第一种服务器不需要做任何处理,JavaScript也完全不知道这个是图像,顶多当成URL来显示

第二和三种,服务器如果不做处理,关闭JavaScript就会看到奇怪的代码。
你说手机模式可以显示原始链接,请问怎么获取原始链接?你得分析这个标签,得判断标签是否嵌套,得考虑标签是否正常关闭了,这工作量和直接在服务器端解析有什么区别?

第四种也好不到哪去,不但要判断关闭什么的,还得判断是否有恶意代码,例如JavaScript事件啊、CSS样式什么的。甚至还有可能写一些未转义的HTML实体。
举个最简单的例子,你认为有多少人知道链接中包含&时,写在src或href属性里时要手动改成&amp;,否则以XHTML输出时浏览器会报解析失败的错误?

就算你对这些都不在乎,网站的管理者还得考虑SEO啊。所有的链接、图像什么的都变成了纯文本,而搜索引擎是不会执行JavaScript把文本转成标签的。
如今HTML元素早已不只是为了表象存在的,它的表意功能才是推崇的,而这种方式就破坏了HTML的语义了。

我知道你们认为JavaScript很牛,什么都能搞定,但是web开发不是那种想当然一拍脑袋就去做的事,有着一大堆烦人的取舍问题。考虑问题不能只想能否做到,还要想是否该这么做,以及是否值得去做。
2010-12-06 22:26:48 +08:00
回复了 monster 创建的主题 Project Babel 链接,图片、视频的识别换成javascript处理如何?
如果浏览器没有启用JavaScript,或者文档还没下载完毕,JavaScript来不及解析时,就会看到一堆标签了…

举例来说,我的手机就不支持JavaScript
2010-12-06 22:24:22 +08:00
回复了 iiduce 创建的主题 分享创造 刚发布了我用django做的站,使用了v2ex的皮
发现我订阅过楼主的博客,支持一下~

第一次访问的时候提示页面不存在,不知道是不是bug
2010-12-06 20:34:02 +08:00
回复了 gully 创建的主题 Google App Engine GAEPhotos V0.3发布了!
读了下源码,看得出要支持8MB其实是很麻烦的,至少cachedata就不能保证能直接memcache了

此外resp.headers['Content-Length']是不用自己写的,GAE会自动计算的
2010-12-05 02:22:52 +08:00
回复了 Mianco 创建的主题 Google App Engine 这两段代码有什么区别?
楼主这个问题很蛋疼,撇开其技术实现,2段代码所完成的功能都截然不同。

第一段是CGI输出HTML,然后用HTML的meta跳转来重定向到/index.html。
懂HTTP的都知道,其实不需要这么麻烦,直接输出这个就行了:
print 'Location: /index.html'

第二段代码是用WSGI生成HTML,而且是直接读取index.html的内容来输出的,没有进行重定向。

从楼主的描述来看,你应该是没有处理/index.html这个URL。
我猜你应该是用一个Python script处理了所有请求,然后直接重定向到/index.html;但是/index.html也是被这个script处理的,于是再次重定向到/index.html;于是你就蛋疼地一直重定向了…

技术上来说,你的要求完全不需要用Python来处理,直接改app.yaml用静态文件处理就行了:
handlers:

- url: /(index.html)?
static_files: index.html
upload: index.html
2010-12-05 02:05:58 +08:00
回复了 darasion 创建的主题 Google App Engine Instances 有啥用? 怎样才算是健康的?
这个和你的实现有关,你得了解什么是App Caching

简单来说,你import hook后,只要这个instance没有消亡或清除App Caching,hook是可以重用而无需再次载入的

而hook.py中又import了apiproxy_stub_map,并且hook了其中的服务,因此这个hook是持续存在的,直到instance消亡或清除App Caching

此外main函数也是会被cache的,因此重用main函数时,它之外的语句不会重复执行

如果你import的位置不对,就有可能造成多次hook,也有可能造成没有hook,我也不知道你代码是咋样的,只能点到此了
2010-12-05 01:43:49 +08:00
回复了 Weakdancer 创建的主题 Google App Engine 关于GQL的使用问题
楼主的表述真的很难懂…

没猜错的话,你是要把if NowDay==KCB.time[0] and NowTime==KCB.time[-1] and NowWeek in KCB.week改成GQL查询条件吧

简单来说就是不行,因为datastore不支持复杂的查询,只能将一个属性作为一个整体来查询,不能查询time[-1]这种

因此你只能这样:
KCBs = db.GqlQuery("SELECT * FROM kcb WHERE week = :1 ORDER BY date DESC LIMIT 1000", NowWeek)
for KCB in KCBs:
if NowDay==KCB.time[0] and NowTime==KCB.time[-1]:
#...

week是一个ListProperty,查询的时候直接用=就行了,IN的语义不是你理解的这样的

最后提醒一下,不是有特殊需求的话不要用GQL,因为查询较复杂时,构造非常不方便,而且性能很差。所有GqlQuery对象都能用等价且更方便高效的Query代替。
2010-12-04 12:21:58 +08:00
回复了 darasion 创建的主题 Google App Engine Instances 有啥用? 怎样才算是健康的?
要在main()里调用import hook并重设时间

不过如果不记录urlfetch次数和总时间,那就不需要重设时间,只import即可

https://bitbucket.org/keakon/doodle/src/86e5d334e718/blog.py#cl-64

服务名是'urlfetch'
1 ... 40  41  42  43  44  45  46  47  48  49 ... 52  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   822 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 22:29 · PVG 06:29 · LAX 15:29 · JFK 18:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.