V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  keakon  ›  全部回复第 49 页 / 共 53 页
回复总数  1042
1 ... 41  42  43  44  45  46  47  48  49  50 ... 53  
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'
2010-12-04 12:12:29 +08:00
回复了 monster 创建的主题 Google App Engine GAE这样下去。。。咱们会不会连二级米都没得用!
你可以先注册Gmail账号,然后注册app id。因为app id会为Gmail账号的用户名保留,但前提是你的用户名不含特殊字符,例如小数点。

这是Google员工前天说的。
2010-12-03 14:20:08 +08:00
回复了 darasion 创建的主题 Google App Engine Instances 有啥用? 怎样才算是健康的?
你可以用logging来记录时间,urlfetch属于service,可以参考这个来hook:
https://bitbucket.org/keakon/doodle/src/9830de2a181b/hook.py

twitter 客户端确实没什么办法加快,不过web端的可以弄成ajax,在用户不知情的情况下去fetch
2010-12-03 01:43:36 +08:00
回复了 darasion 创建的主题 Google App Engine Instances 有啥用? 怎样才算是健康的?
latency越低越好(一般应该低于1000ms,我的不到100ms),QPS越高越好(不过钱也花得多)
支持PubSubHubbub的话,订阅后自己抓==
2010-11-29 02:06:37 +08:00
回复了 chouj 创建的主题 Project Babel 重新设置密码报错
发信人只能是当前用户或这个app的管理员,这个是GAE的限制
1 ... 41  42  43  44  45  46  47  48  49  50 ... 53  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2123 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 04:12 · PVG 12:12 · LAX 21:12 · JFK 00:12
Developed with CodeLauncher
♥ Do have faith in what you're doing.