小编Dav*_*ill的帖子

如何在使用Google App Engine时关闭DataNucleus Enhancer

我在Eclipse上使用Google AppEngine Java代码.每次我保存java文件时,DataNucleus Enchancer都会启动"类的增强".它非常刺激,因为它在全屏模式下会消失焦点.谁知道我怎么能把它关掉?

如果我将其关闭,是否会影响我从Eclipse内部将应用程序部署到App Engine的能力?

java eclipse google-app-engine datanucleus

14
推荐指数
1
解决办法
1万
查看次数

没有分片的高并发计数器

这个问题涉及两个计数器的实现,这些计数器的目的是在没有分片的情况下进行扩展(在某些情况下可能会计算得不足):

  1. http://appengine-cookbook.appspot.com/recipe/high-concurrency-counters-without-sharding/(评论中的代码)
  2. http://blog.notdot.net/2010/04/High-concurrency-counters-without-sharding

我的问题:

  • 关于#1:memcache.decr()在延迟的交易任务中运行似乎有点矫枉过正.如果memcache.decr()在事务之外完成,我认为最坏的情况是事务失败,我们错过了计算我们减少的任何数量. 我是否忽略了这样做可能会发生的其他问题?
  • 这两种实现之间有何重大的权衡取舍?

以下是我看到的权衡:

  • 2不需要数据存储区事务.

  • 要获得计数器的值,#2需要数据存储区提取,而#1 通常只需要执行a memcache.get()memcache.add().
  • 递增计数器时,都会调用memcache.incr().#2会定期向任务队列添加任务,而#1以事务方式执行数据存储区get和put.#1也总是执行memcache.add()(以测试是否是将计数器持久保存到数据存储区的时间).

结论

(没有实际运行任何性能测试):

  • 1检索计数器通常应该更快(#1 memcache vs#2数据存储).虽然#1必须执行额外的操作memcache.add().

  • 但是,更新计数器时#2应该更快(#1数据存储区get + put vs#2排队任务).
  • 另一方面,对于#1,您必须对更新间隔更加小心,因为任务队列配额几乎比数据存储区或memcahce API小100倍.

python google-app-engine counter

14
推荐指数
1
解决办法
1768
查看次数

Android C2DM Auth令牌,一次或每次

我概述了将C2DM实现到应用程序中的计划,并且有关于Auth令牌的基本(读取:愚蠢)问题.

客户端服务器需要使用白名单帐户注册google c2dm服务:

用于检测:

curl https://www.google.com/accounts/ClientLogin -d Email=theEmailYouWhitelisted -d Passwd=pass****word -d accountType=HOSTED_OR_GOOGLE -d source="your_app_name_and_ver_for_logging_purposes_only" -d service=ac2dm
Run Code Online (Sandbox Code Playgroud)

我的问题是,每个应用程序每个c2dm帐户是否会发生一次 - 即:使用您列入白名单的帐户获取一个服务器生成的身份验证代码,存储它,然后每次发送邮件检索它并使用:

curl --header "Authorization: GoogleLogin auth=**authFromRegistrationAbove**" "https://android.apis.google.com/c2dm/send" -d registration_id=**phoneRegistrationId(reciever)** -d "data.message=StringToPass" -d collapse_key=something -k
Run Code Online (Sandbox Code Playgroud)

或者您是否必须为每个被推送的消息请求新的Auth代码?

android android-c2dm

14
推荐指数
1
解决办法
1万
查看次数

GAE - 如何生活没有加入?

示例问题:

实体:

  • 用户包含姓名和朋友列表(用户参考)
  • 博客文章包含标题,内容,日期和作者(用户)

需求:

我想要一个显示标题的页面以及用户朋友最近10篇帖子的博客链接.我还希望能够继续回溯旧条目.

SQL解决方案:

所以在sql land中它会是这样的:

select * from blog_post where user_id in (select friend_id from user_friend where user_id = :userId) order by date

我能想到的GAE解决方案是:

  • 加载用户,遍历好友列表并加载他们最新的博客帖子.最后合并所有博客文章,找到最新的10篇博客文章
  • 在博客文章中列出了将作者作为朋友的所有用户的列表.这将意味着简单的阅读,但在添加拥有大量博客帖子的朋友时会导致配额超载.

我不相信这些解决方案中的任何一个都会扩展.

我确定其他人已经遇到了这个问题,但我已经搜索过,观看谷歌io视频,阅读其他代码......我缺少什么?

python google-app-engine join google-cloud-datastore

13
推荐指数
2
解决办法
2080
查看次数

在App Engine开发服务器上通过SMTP服务器发送电子邮件时出错

我正在尝试使用此示例代码和这些命令行选项发送电子邮件:

dev_appserver.py --smtp_host=smtp.gmail.com --smtp_port=25 --smtp_user=xxx@gmail.com--smtp_password=k1tt3ns myapp
Run Code Online (Sandbox Code Playgroud)

但是,当我的应用程序尝试发送电子邮件(在开发服务器上)时,我收到以下错误:

Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 500, in __call__
    handler.post(*groups)
  File "C:\Documents and Settings\desk\Desktop\apps\temp\main.py", line 139, in post
    """)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 205, in send_mail
    message.send(make_sync_call)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 474, in send
    make_sync_call('mail', self._API_CALL, message, response)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 68, in MakeSyncCall
    apiproxy.MakeSyncCall(service, call, request, response)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 240, in MakeSyncCall
    stub.MakeSyncCall(service, call, request, response)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub.py", line 80, in MakeSyncCall
    method(request, …
Run Code Online (Sandbox Code Playgroud)

email google-app-engine

13
推荐指数
1
解决办法
3937
查看次数

适用于GAE的Java PDF库?

由于GAE有严格的限制,例如"Java应用程序不能使用任何用于写入文件系统的类"......

是否有一个好的Java PDF库可以将PDF写入内存以便流式传输到云端?

java pdf google-app-engine

13
推荐指数
2
解决办法
3273
查看次数

Google AppEngine会话示例

我刚刚在我的Google AppEngine/Java + GWT应用程序中启用了Session.我该如何使用它?如何从中获取会话ID和播放所有好处?是否有任何简单登录页面的真实示例,我只是输入LoginName和Password,然后通过RPC调用进入服务器,对数据库进行身份验证并将会话ID发送回客户端.

我已经有以下代码,但不知道下一步该做什么:

GWT登录表格:

public class LoginForm {
    private final LoginServiceAsync loginService = GWT.create(LoginService.class);

    VerticalPanel loginVp = new VerticalPanel();
    TextBox loginTxt = new TextBox();
    TextBox passTxt = new TextBox();

    Button loginBtn = new Button("Login");

    public Widget getLoginWidget(){

        loginBtn.addClickHandler(new ClickHandler(){

            public void onClick(ClickEvent arg0) {

                loginService.authenticateUser(loginTxt.getText(), passTxt.getText(), 
                        new AsyncCallback<String>(){

                            public void onFailure(Throwable caught) {
                                InfoPanel.show(InfoPanelType.HUMANIZED_MESSAGE, "No Connetion", "Problem conneting to the server.");
                            }

                            public void onSuccess(String result) {
                                InfoPanel.show(InfoPanelType.HUMANIZED_MESSAGE, "Session ID", "Your session id is: " + …
Run Code Online (Sandbox Code Playgroud)

java session google-app-engine

12
推荐指数
2
解决办法
2万
查看次数

可以将Hibernate用作Google App Engine中的JPA提供程序

可以将Hibernate 3.5.x用作JPA提供程序,而不是最新版本的Google App Engine(1.3.2)中的默认提供程序

java google-app-engine hibernate jpa datanucleus

12
推荐指数
3
解决办法
7718
查看次数

会话ID轮换是否增强了安全性?

(我认为)我理解为什么在用户登录时应该轮换会话ID - 这是防止会话固定的一个重要步骤.

但是,随机/周期性地转动会话ID是否有任何优势?

在我看来,这似乎只是提供了一种虚假的安全感.假设会话ID不容易受到强力猜测,并且您只在cookie中传输会话ID(而不是URL的一部分),那么攻击者必须访问您的cookie(最有可能通过窥探您的流量)来获取会话ID.因此,如果攻击者获得一个会话ID,他们也可能能够嗅探轮换的会话ID - 因此随机旋转并没有增强安全性.

security session

12
推荐指数
1
解决办法
5428
查看次数

谷歌应用程序引擎上的Grails

grails和google app引擎部署的当前状态是什么.我是app引擎的新手,但值得探索.一些特定的qns

  1. 最新的插件,用户评价高,有任何限制吗?或者它与所有gorm功能无缝协作
  2. Grails应用程序的启动时间是否有任何问题.现实世界中的情况如何?(典型的小型和大型应用)
  3. 其他grails插件怎么样(如shiro,joda time,nimble等).我猜他们不会打得好.因此,直接使用这些库是更好的选择
  4. 如果决定放弃goole-app作为部署选项,那么切换到正常环境是多么容易.JPA支持确保与其他传统DB的兼容性?

不确定还有什么是主要问题..可能,这是一个很好的讨论的基础.
谢谢.

grails google-app-engine

12
推荐指数
1
解决办法
519
查看次数