小编pom*_*ber的帖子

Python可迭代队列

我需要知道何时关闭队列并且不会有更多项目因此我可以结束迭代.

我通过在队列中放置一个标记来做到这一点:

from Queue import Queue

class IterableQueue(Queue): 

    _sentinel = object()

    def __iter__(self):
        return self

    def close(self):
        self.put(self._sentinel)

    def next(self):
        item = self.get()
        if item is self._sentinel:
            raise StopIteration
        else:
            return item
Run Code Online (Sandbox Code Playgroud)

鉴于这是队列的一个非常常见的用途,是不是有任何内置实现?

python iteration queue

8
推荐指数
1
解决办法
7024
查看次数

获取GCM规范注册ID而不发送消息

我使用GCM的应用程序有问题,方案是这样的:

  1. 该应用已安装
  2. 应用程序调用GCM寄存器方法获取注册ID"RID-1"
  3. 该应用程序已卸载
  4. 该应用程序再次安装
  5. 应用程序再次调用GCM寄存器方法获取注册ID"RID-2"

在第5步中,我需要获取以前的注册ID,以便我可以更新我的模型.

限制:
- 我试图在不使用外部存储的情况下执行此操作
- 我无法在服务器发送消息时更新模型,应该在注册后完成,因为在应用程序中为每个新设备创建了新的配置文件

我知道此信息在Google服务器中,因为当您向旧注册ID发送邮件时,它会发送给您.例如,如果我向"RID-1"发送消息,则在响应中我得到新的(规范)注册ID为"RID-2".我需要的是一种在不发送消息的情况下获取此信息的方法.

如果您需要更多背景,请告诉我.


我发现了几个相关的问题,但答案不适用于这种情况:
GCM
gcm规范ID的注册ID重复应该更新或者不是
gcm注册ID的持久性
Google Cloud Messaging - 注册ID状态
Android GCM:如何检测注册的规范ID在我自己的服务器?
处理Android上的Google Cloud Messaging中的注册ID更改
(均由@eran回答)

android push-notification google-cloud-messaging

8
推荐指数
1
解决办法
2871
查看次数

改进 - 在将其解析为json之前从响应主体中删除一些无效字符

我有一个外部Web服务,在响应体中返回json但嵌套在括号中,如下所示:

({"door_x":"103994.001461","door_y":"98780.7862376", "distance":"53.3"})
Run Code Online (Sandbox Code Playgroud)

使用此代码:

class AddressInfo {
    String door_x;
    String door_y;
}

interface AddressWebService {
    @GET("/reversegeocoding")
    AddressInfo reverseGeocoding(@Query("x") double x, @Query("y") double y);
}
Run Code Online (Sandbox Code Playgroud)

它显然失败了.这是堆栈跟踪:

retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1
        at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:377)
        at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
        at com.something.$Proxy7.reverseGeocoding(Native Method)
        at com.something.ReverseGeocodingService.getAddress(ReverseGeocodingService.java:24)
        at com.something.LocationProvider$1.run(LocationProvider.java:77)
        at java.lang.Thread.run(Thread.java:864)
 Caused by: retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1
        at retrofit.converter.GsonConverter.fromBody(GsonConverter.java:67)
        at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:362)
            at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
            at com.something.$Proxy7.reverseGeocoding(Native Method)
            at com.something.ReverseGeocodingService.getAddress(ReverseGeocodingService.java:24)
            at com.something.LocationProvider$1.run(LocationProvider.java:77)
            at …
Run Code Online (Sandbox Code Playgroud)

android json jsonp gson retrofit

6
推荐指数
2
解决办法
5759
查看次数

安全存储客户端密码

我知道公共客户端不应该使用客户端密钥,因为无论您对它进行多少混淆,它都不会受到逆向工程的保护.

但是,我正在验证的服务负责人不想/不能改变它.所以,我需要存储客户端的秘密,尽量保护它免受逆向工程的影响.

所以,我想过使用gradle在构建时加密它并将其存储在文件中.然后,当我在运行时需要它时,我解密它.但现在我必须解决如何存储加密密钥的问题 ......

我不太了解安全性,因此,我不知道这是否可以解决,或者Android(min sdk 15)是否为这种情况提供了任何机制.

任何的想法?

security encryption android oauth secret-key

6
推荐指数
1
解决办法
5778
查看次数

DNU Restore提供大量"HTTP请求超时"

我正在尝试从https://github.com/aspnet/home运行示例.
但是我在更新引用时遇到了问题.恢复速度很慢,某些软件包无法恢复:

  GET http://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.EnvironmentVariables'
Warning: FindPackagesById: Microsoft.Framework.Configuration.EnvironmentVariables
  HTTP request timed out. Retrying.
  GET http://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.EnvironmentVariables'
Warning: FindPackagesById: Microsoft.Framework.Configuration.Ini
  HTTP request timed out. Retrying.
  GET http://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Ini'
Warning: FindPackagesById: Microsoft.Framework.Configuration.Ini
  HTTP request timed out. Retrying.
  GET http://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Configuration.Ini'
Warning: FindPackagesById: Microsoft.Framework.Logging
  HTTP request timed out. Retrying.
  GET http://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging'
Warning: FindPackagesById: Microsoft.Framework.Logging
  HTTP request timed out. Retrying.
  GET http://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Framework.Logging'
Warning: FindPackagesById: Newtonsoft.Json
  HTTP request timed out. Retrying.
  GET http://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Newtonsoft.Json'
Warning: FindPackagesById: Newtonsoft.Json
  HTTP request timed out. Retrying.
  GET http://www.nuget.org/api/v2/FindPackagesById()?id='Newtonsoft.Json'
Error: FindPackagesById: Microsoft.AspNet.Mvc.Razor
  HTTP …
Run Code Online (Sandbox Code Playgroud)

mono nuget dnu asp.net-core

6
推荐指数
1
解决办法
789
查看次数

修复上限中的浮点不精确问题

问题:

ceiling(31)
#31
ceiling(31/60*60)
#32
Run Code Online (Sandbox Code Playgroud)

修复此类错误的正确方法是什么?

在除法之前进行乘法不是一种选择,我的代码如下所示:

x <- 31/60
...
y <- ceiling(x*60)
Run Code Online (Sandbox Code Playgroud)

我正在考虑做一个新功能:

ceil <- function(x) {
  ceiling(signif(x))
}
Run Code Online (Sandbox Code Playgroud)

但我是 R 新手,也许有更好的方法。

更新
抱歉,我没有提供更多详细信息,由于不同的原因,我在代码的不同部分遇到了相同的问题,但总是有上限。

我知道浮点计算中的舍入误差。也许问题的标题可以改进,我不想修复上限函数的不精确性,我想做的也许是相反的,使上限不那么精确。一种告诉 R 忽略明显是噪声的数字的方法:

options(digits=17)
31/60*60
#31.000000000000004
Run Code Online (Sandbox Code Playgroud)

但是,显然,忽略噪声数字所需的 epsilon 取决于问题的上下文。

floating-point r ceil floating-point-precision

5
推荐指数
1
解决办法
559
查看次数

结合使用Google Container Engine和GCP免费套餐

是否可以将Google Container Engine与Google Cloud 免费套餐一起使用
(我的意思是“始终免费”使用限额,而不是$ 300的免费赠送金额)

GKE的文档说:

基本群集是免费的,但每个节点均按标准Compute Engine定价收费

但是Compute Engine也有一个免费实例。是否可以同时使用它们?

google-compute-engine google-cloud-platform google-kubernetes-engine

5
推荐指数
2
解决办法
716
查看次数

了解AngularJS的$资源

我不太了解如何正确使用AngularJS的$资源.例如,我有一个REST API,它返回如下数据:

{
    "status": "success",
    "data": {
        "expand": "schema,names",
        "startAt": 0,
        "maxResults": 10,
        "total": 38,
        "issues": [{ ... }, { ... }, {...}, ...]
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想弄清楚的是AngularJS如何使用$ resource将data.issues中的每个对象作为资源返回(所以在这种情况下,获取10个资源的数组/集合)然而它似乎并不是真的就像我可以用我在其上找到的有限资源中使用AngularJS的$资源那样做,或者我可以吗?

javascript angularjs ngresource

3
推荐指数
1
解决办法
2976
查看次数

更新data.table中的向量

我有这个:

dt = data.table(index=c(1,2), items=list(c(1,2,3),c(4,5)))
#   index items
#1:     1 1,2,3
#2:     2   4,5
Run Code Online (Sandbox Code Playgroud)

我想改变dt[index==2,items]c(6,7).

我试过了:

dt[index==2, items] = c(6,7)
dt[index==2, items := c(6,7)]
Run Code Online (Sandbox Code Playgroud)

r vector data.table

3
推荐指数
1
解决办法
97
查看次数

Polymerfire查询orderByChild不起作用

orderByChild没有记录,但是来自polymerfire的查询元素的公共API的一部分.

我的应用程序中有这样的东西:

<firebase-query
  id="query"
  orderByChild="[[order]]"
  path="/records/[[user.uid]]"
  data="{{records}}">
</firebase-query>
Run Code Online (Sandbox Code Playgroud)

where order元素具有有效字符串的属性.

查询正在运行并返回结果,但没有排序.

从用chrome检查它,问题query.orderByChild是没有受到约束.如果我从chrome console(query.orderByChild = myelement.order)分配它,它会重新运行查询并以正确的顺序返回记录.

知道可能是什么问题吗?

data-binding firebase polymer firebase-realtime-database polymerfire

3
推荐指数
1
解决办法
511
查看次数