小编mic*_*cah的帖子

当窗口失去焦点时 setTimeout 会发生什么?

我遇到一种情况,需要在身份验证令牌过期之前重新验证 cordova 应用程序上的令牌。为此,我想我应该在身份验证令牌到期之前设置一个超时,以重新进行身份验证。

function authenticate() {
  var token = ... get token

  setTimeout(function() {
    .. try to reauthenticate
  }, token.expiresIn - 600*1000);
}
Run Code Online (Sandbox Code Playgroud)

我看到的问题是-

  1. 当应用程序处于睡眠状态时,超时时间已过。功能不火?

  2. 当应用程序处于睡眠状态时,超时“倒计时”(如果是这样的话)会暂停。

这些都不是好的场景。所以我的问题是,当应用程序失去焦点时超时会发生什么?我是否应该设置 10 秒的时间间隔来检查此场景的过期时间?

编辑:

假设令牌的有效期为 4 小时。如果用户使用该应用程序一小时,最小化它 2 小时并返回,该函数会在 1 小时还是 3 小时内调用?这将是间隔的点,所以我可以相对快速地检查情况。

javascript cordova hybrid-mobile-app ionic-framework

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

InAppBrowser,打开窗口,发布消息

是否可以在 InAppBrowser 中打开一个站点,让该站点用于window.open打开另一个窗口,然后向该另一个窗口发送消息(反之亦然)?

javascript android postmessage inappbrowser

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

BouncyCastle如何生成ECDH“密钥”?

我有一个使用BouncyCastle作为安全提供程序的应用程序,但我想切换到直接使用OpenSSL的其他应用程序(Conscrypt)。我遇到的问题是,我正在使用BouncyCastle提供的KeyGenerator中的ECDH“密钥”,但在我的其他库中没有类似的KeyGenerator。

为了比较两者,我将使用下面的输入使用两种方法对点进行解码:

添加了换行符以提高可读性

BADX_GAXp03z_5p05O1-op61KJAl4j9U2sBnAnJ4p_6GSAIyFGU3lM
oC4aIXw_2qlTnplykArgjvwCWw-2g6L44
Run Code Online (Sandbox Code Playgroud)

使用BouncyCastle方法-

public org.bouncycastle.jce.interfaces.ECPublicKey loadECPublicKeyBC(String encodedPublicKey) throws NoSuchProviderException, NoSuchAlgorithmException, InvalidKeySpecException, IOException {
    Base64.Decoder base64Decoder = Base64.getUrlDecoder();
    byte[] decodedPublicKey = base64Decoder.decode(encodedPublicKey);
    KeyFactory keyFactory = KeyFactory.getInstance("ECDH", "BC");

    ECParameterSpec ecParameterSpec = ECUtil.getECParameterSpec(openSSLProvider, "prime256v1");
    ECPoint ecPoint = ECUtil.decodePoint(decodedPublicKey, ecParameterSpec.getCurve());

    ECPublicKeySpec pubSpec = new ECPublicKeySpec(ecPoint, ecParameterSpec);
    org.bouncycastle.jce.interfaces.ECPublicKey ecPublicKey = (org.bouncycastle.jce.interfaces.ECPublicKey)keyFactory.generatePublic(pubSpec);

    return ecPublicKey;
}
Run Code Online (Sandbox Code Playgroud)

getAlgorithm返回的EC。在getFormat返回的X.509

getEncoded值是-

[48,-126,1,51,48,-127,-20,6,7,42,-122,72,-50,61,2,1,48,
-127,-32,2,1,1,48,44,6,7,42,-122,72,-50,61,1,1,2,33,0,
-1,-1,-1,-1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,48,68,4,32,-1,-1,-1,-1,0,0,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-4,4,32,90,-58,53,-40,-86,58,-109,-25,-77,-21,-67,85,
118,-104,-122,-68,101,29,6,-80,-52,83,-80,-10,59,-50,60,
62,39,-46,96,75,4,65,4,107,23,-47,-14,-31,44,66,71,-8,-68,
-26,-27,99,-92,64,-14,119,3,125,-127,45,-21,51,-96,-12,
-95,57,69,-40,-104,-62,-106,79,-29,66,-30,-2,26,127,-101,
-114,-25,-21,74,124,15,-98,22,43,-50,51,87,107,49,94,-50,
-53,-74,64,104,55,-65,81,-11,2,33,0,-1,-1,-1,-1,0,0,0,0,-1,
-1,-1,-1,-1,-1,-1,-1,-68,-26,-6,-83,-89,23,-98,-124,-13,
-71,-54,-62,-4,99,37,81,2,1,1,3,66,0,4,0,-41,-4,96,23,-89,
77,-13,-1,-102,116,-28,-19,126,-94,-98,-75,40,-112,37,-30,
63,84,-38,-64,103,2,114,120,-89,-2,-122,72,2,50,20,101,55, …
Run Code Online (Sandbox Code Playgroud)

java encryption openssl bouncycastle

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

Athena 分区投影未按预期工作

我正在从注册分区转向分区投影。

以前我的数据被分区p_year={yyyy}/p_month={MM}/p_day={dd}/p_hour={HH}/...,我将这些移动到p_date={yyyy}-{MM}-{dd} {HH}:00:00/..

我有一个最近事件表,用于存储最近 2 天的事件。所以我的p_date范围是NOW-2DAYS,NOW. 完整的表参数是-

projection.enabled: 'True'
projection.p_date.type: 'date'
projection.p_date.range: NOW-2DAYS,NOW
projection.p_date.format: 'yyyy-MM-dd HH:mm:ss'
projection.p_date.interval: 1
projection.p_date.interval.unit: 'HOURS'
Run Code Online (Sandbox Code Playgroud)

但是当我尝试查询这个时,我没有得到任何结果。

SELECT COUNT(*) FROM recent_events_2d_v2
> 0
Run Code Online (Sandbox Code Playgroud)

但是,如果我将日期范围更改为,2020-09-01 00:00:00,NOW我确实会得到结果。

分区投影的相对日期范围似乎有些不对劲。谁能看到我可能做错了什么,或者这是一个错误?

amazon-web-services amazon-athena aws-glue

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

将数据URI保存为图像?

在节点服务器上,我想将上传的datauri数据另存为图像。为此,我尝试了解码此png-的内容

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAIAAAFlEcHbAAAAB3RJTUUH1gMWFjk7nUWcXQAAAAlwSFlzAABOIAAATiABFn2Z3gAAAARnQU1BAACxjwv8YQUAAAAeSURBVHjaY7h79y7DhAkTGIA04/Tp0xkYGJ49ewYAgYwLV/R7bDQAAAAASUVORK5CYII=
Run Code Online (Sandbox Code Playgroud)

并将其保存为.png扩展。看起来还有更多。如何解码datauri并将其保存为文件?

base64 image-processing node.js data-uri

4
推荐指数
2
解决办法
3543
查看次数

是否可以在AWS Cloudformation中指定数据格式转换?

AWS文档使得它看起来好像您可以指定DataFormatConversionConfiguration一个AWS::KinesisFirehose::DeliveryStreaminformation,但不是关于该属性应该去哪里的文档.试了下加入它Properties,ExtendedS3DestinationConfiguration,ProcessingConfiguration,和的一个Processors.每次,CF都抱怨 -

以下资源无法更新:[EventFirehose].12:24:32 UTC-0500

UPDATE_FAILED AWS :: KinesisFirehose :: DeliveryStream EventFirehose遇到不受支持的属性DataFormatConversionConfiguration

有自己的文件说 -

如果您希望Kinesis Data Firehose将输入数据的格式从JSON转换为Parquet或ORC,请在ExtendedS3DestinationConfiguration或ExtendedS3DestinationUpdate中指定可选的DataFormatConversionConfiguration元素.

我究竟做错了什么?

amazon-web-services aws-cloudformation amazon-kinesis-firehose

4
推荐指数
2
解决办法
1020
查看次数

SNS 到 SQS 与直接 SQS 放入 Lambda@Edge 应用程序

我正在研究使用 Lambda@Edge 将从外部源生成的事件放入内部 SQS 队列中。lambda 只需要在必要时对其进行转换,进行交接,然后离开。我希望速度尽可能快,所以我的问题是,除了 SQS 之外,使用 SNS 是否有好处,或者我应该只使用 SQS?

换句话说,考虑到这两种配置,其中一种对最终用户来说性能会更好吗?

A) 请求进入 Lambda@Edge,Lambda 转换请求并将事件发送到 SNS,SNS 将事件发送到 SQS。

B) 请求进入 Lambds@Edge,lambda 转换请求并将事件直接放入 SQS。

编辑:

我说的是跨区域。

amazon-sqs amazon-sns aws-lambda aws-lambda-edge

4
推荐指数
1
解决办法
1817
查看次数

如何在 Typescript 中的方法装饰器上创建编译错误?

我正在开发一个名为expresskit的库,它允许您使用装饰器来定义express的路线/参数/等。我正在重构,我认为我需要限制路由可以具有的响应类型。作为示例,以下是现在创建路由的方式 -

export default class UserRouter {
  @Route('GET', '/user/:userId')
  public static getUser(@Param('userId') userId: number): any {
    return new User();
  }
}
Run Code Online (Sandbox Code Playgroud)

路由应用于静态方法。静态方法可以直接返回一个值,也可以返回一个Promise. 我想要求这样的承诺-

export default class UserRouter {
  @Route('GET', '/user/:userId')
  public static async getUser(@Param('userId') userId: number): Promise<User> {
    return Promise.resolve(new User());
  }
}
Run Code Online (Sandbox Code Playgroud)

原因是,这些路由背后的逻辑变得臃肿和混乱,无法处理不同类型的响应。由于大多数路由可能是异步的,因此我宁愿通过依赖异步来获得更清晰的核心代码。我的路线装饰器功能如下所示-

export default function Route(routeMethod: RouteMethod,
                              path: string) {                       
  return function(object: any, method: string) {
    let config: IRouteConfig = {
      name: 'Route',
      routeMethod: routeMethod,
      path: path
    };

    DecoratorManager.registerMethodDecorator(object, method, config);
  } 
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个通用管理器服务来跟踪装饰器的注册位置。在示例中,我可以获得类和方法名称。我可以稍后像这样引用它 …

node.js typescript

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

Angular 2组件中的参考特定元素?

我有一个ng2组件中的元素,我想直接操作.我不需要或希望它的属性由框架处理,因为它的属性将在逐秒的基础上更新,我不希望它影响生命周期.在我的例子中(不是实际的用例),我将使用一个每秒递增的计时器.

HTML的

<div class="timer"></div>
<div>Elapsed</div>
Run Code Online (Sandbox Code Playgroud)

零件-

@Component({
  selector: 'timer',
  templateUrl: 'timer.html',
})
export class TimerComponent {

  private time = 0;

  // How do I get .timer ?
  constructor(private $element: ElementRef) {}

  onNgInit() {
    setInterval(this.incrementTimer.bind(this), 1000);
  }

  private incrementTimer() {
    this.time++;
    this.$element.nativeElement.innerHTML = this.time;
  }

}
Run Code Online (Sandbox Code Playgroud)

我有很多选项来获取计时器元素,但我想知道是否有一种简单的方法(一种角度方式)来标记元素,以便角度将理解/包含在注入器中.我不想在DOM中搜索这个元素,我不想每次想要更新时都使用生命周期.

angular

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

C#项目在很短的时间内为空?

我有一个MessageQueue带有私有List属性的类,它充当队列.只有一种方法可以添加到队列中(通过Add方法)和一种从队列中获取的Next方法(通过方法).我有一个线程运行没有延迟不断检查队列.偶尔,一个null项目进入队列.

Add如果要添加的项为null,则在方法中放置断点,但断点永远不会被命中.

Next如果返回的项目被null击中,我在方法中放置一个断点.

此外,断点在获取项目之后但在调整队列之前设置.奇怪的是,当返回的项目是null,刚刚获取的项目不为空!这是我的队列 -

public class MessageQueue
{
    private List<byte[]> queue = new List<byte[]>();

    public void Add(byte[] payload)
    {
        if (payload == null)
        {
            Console.WriteLine("thats why");
        }

        queue.Add(payload);
    }

    public byte[] Next()
    {
        byte[] hand = queue.First();

        if(hand == null)
        {
            Console.WriteLine("asdf");
        }

        queue = queue.Skip(1).ToList();

        return hand;
    }

    public bool HasMessages
    {
        get
        {
            return queue.Count() > 0;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c#

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