小编mic*_*cah的帖子

您如何使用已编译的Typescript使用Istanbul Code Coverage?

我整个上午都在阅读这篇文章,试图正确设置我的环境.但由于某种原因,我没有得到它.我的设置 -

/app
    ... source (mixed js and ts)
/scripts
    ... copied source (js)
    typescripts.js // transpiled typescript with inline mapping
Run Code Online (Sandbox Code Playgroud)

测试运行正常,并且chrome调试器中的映射调试已正确映射.但伊斯坦布尔将typescripts.js文件视为一个文件,而不是几十个其他文件的串联.

要生成我正在使用的打字稿源gulp-typescript.源(不包括测试)被转换为前面提到的typescripts.js,测试被单独转换并复制到/scripts.

  var ts = require('gulp-typescript');
  var sourcemaps = require('gulp-sourcemaps');
  var concat = require('gulp-concat');

  module.exports = function (gulp, config) {
     'use strict';

     // Runs dot ts files found in `www` through the typescript compiler and copies them as js 
     // files to the scripts directory

     gulp.task('typescript', ['typescript:tests'], function () {
        return …
Run Code Online (Sandbox Code Playgroud)

javascript typescript karma-runner istanbul gulp

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

如何使用es6样式导入导入MongoDB?

希望这是一个简单的问题.我正在尝试使用es6 import-from样式导入MongoDB.如果我导入使用节点要求它工作正常.

let mongo = require('mongodb');
let MongoClient = mongo.MongoClient;
Run Code Online (Sandbox Code Playgroud)

但是,如果我以es6方式导入它,它会在没有错误或日志的情况下中断.

import {MongoClient} from 'mongodb';
Run Code Online (Sandbox Code Playgroud)

但是在编译/运行时它不会中断它只会在我尝试使用MongoClient执行任何操作时中断.

这是我的Db Manager课程 -

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
  }

}
Run Code Online (Sandbox Code Playgroud)

当我运行我的服务器时,我从其他管理器和事件中获取了几个日志.

mycomputer myuser$ ./start.sh
Server Constructing
Route Manager Constructing
Initializing Route: Static
Constructing DB Connection
http server started on port: 8000
Run Code Online (Sandbox Code Playgroud)

但是,如果我执行MongoClient的console.log,则根本没有输出.

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
    console.log(MongoClient);
  }

}
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样 -

mycomputer myuser$ ./start.sh
mycomputer myuser$
Run Code Online (Sandbox Code Playgroud)

没有编译错误,所以我不明白为什么这不起作用.此外,我不明白为什么没有任何日志!这是最后发生的事情之一,至少应该记录,直到我想到这一点.如果你想 …

javascript mongodb node.js ecmascript-6 systemjs

14
推荐指数
3
解决办法
5050
查看次数

角度路径无限循环

出于某种原因,当我在我的路线中有一个动态属性并访问该页面时,我陷入无限循环,在那里该页面将不断请求自己.

.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider)
{
    $locationProvider.html5Mode(true);

    $routeProvider.when("/", {
        templateUrl: "pages/index.html",
        controller: "IndexCtrl"
    }).when("/listhome", {
        templateUrl: "pages/listhome.html",
        controller: "ListHomeCtrl"
    }).when("/profile", {
        templateUrl: "pages/profile.html",
        controller: "ProfileCtrl"
    }).when("/newlist", {
        templateUrl: "pages/newlist.html",
        controller: "NewListCtrl"
    }).when("/userlists/:id", {
        templateUrl: "pages/userlists.html",
        controller: "UserListsCtrl"
    }).otherwise({
        redirectTo: "/"
    });
Run Code Online (Sandbox Code Playgroud)

我正在查看的路由是/ userlists /:id路由.该路线的控制器是 -

TopTenApp.controller("UserListsCtrl", ["$scope","$routeParams", function($scope, $routeParams)
{
    console.log($routeParams);
    $scope.lists = [];
}]);
Run Code Online (Sandbox Code Playgroud)

当我访问/ userlists/9时,我看到 -

Object {id: "9"}
Run Code Online (Sandbox Code Playgroud)

每3秒登录一次,页面冻结.只要位置后面有正斜杠("/ userslists /"而不是"/ userlists"),这似乎就会发生.

有谁知道这个的原因?

routes infinite-loop angularjs

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

DynamoDB 条件写入是事务性的吗?

我很难理解 DDB 提供条件写入但最终保持一致的二分法。这两个事实似乎互相矛盾。

在经典场景中,用户 Bob 更新密钥 A 并将值设置为“FOO”。用户 Alice 从尚未收到更新的节点读取数据,因此它获得同一密钥的原始值“BAR”。

最终一致性

如果 Bob 和 Alice在没有条件检查的情况下写入集群上的不同节点,则可能会发生冲突,Alice 和 Bob 同时写入同一密钥,并且 DDB 不知道哪个更新应该是最新的。客户端必须在下次读取时解决此冲突。

但是当使用条件写入时

如果 A 的现有值为“BAR”,则用户 Bob 将其对 A 的更新发送为“FOO”。如果 A 的现有值为“BAR”,则用户 Alice 将其对 A 的更新发送为“BAZ”。

条件写入

在本地,每个节点都可以检查其节点是否具有原始“BAR”值并进行更新。但要了解集群中 A 的真实状态的唯一方法是首先在集群中进行强一致性读取。这种强一致性读取必须对 Alice 或 Bob 造成阻塞,或者他们可以同时进行强一致性读取。

所以这就是我对 DDB 条件写入的性质感到困惑的地方。在我看来:

  1. 条件写入仅在本地进行评估。合并冲突仍然可能发生。
  2. 条件写入是跨集群评估的。

如果是#2,我认为有效的唯一方法是:

  1. 为钥匙创建了一把锁。
  2. 进行了高度一致的读取。

假设它是#2。现在鲍勃的更新在哪里呢?更新已对节点 2 进行并发送到节点 1,并且我们拥有多数法定人数。但是为了让 Alice 在执行自己的条件写入时可以使用这些更新,需要从 WAL 中刷新这些更新。那么在条件写入中更新总是会刷新吗?一般来说,写入总是刷新吗?

SO 上还有其他类似的问题,但答案是有关此问题的 AWS 文档的重复或链接。AWS文档并没有真正解释这一点(或者我错过了)。

amazon-web-services amazon-dynamodb

10
推荐指数
1
解决办法
3272
查看次数

Python 检查类是否实现了不相关的接口

我知道可以检查一个类是否实现了另一个类(如果它们确实相关)。

class A(ABC):

  @abstractmethod
  @property
  def name(self):
    raise NotImplementedException()
    

class B(A):
  
  @property
  def name(self):
    return "B"

implements(B(), A) # Not a real method, what i'd like to exist
Run Code Online (Sandbox Code Playgroud)

但我还想检查一个不相关的类是否根据类的内容实现了另一个类。

Class C:
  
  @property
  def name(self):
    return "C"

implements(C(), A) # Not a real method, what i'd like to exist
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点,或者我是否需要编写一个自定义函数来比较所有方法及其方法签名?

python

8
推荐指数
2
解决办法
3869
查看次数

Angular2 CUSTOM_ELEMENTS_SCHEMA不起作用

我刚刚使用ng2 cli安装了一个bearbones ng2 app.在我的AppModule添加中schema: [ CUSTOM_ELEMENTS_SCHEMA ],在我的AppComponent模板中,我有<row></row>.但我得到 -

未处理的Promise拒绝:模板解析错误:'row'不是已知元素:1.如果'row'是Angular组件,则验证它是否是此模块的一部分.2.如果'row'是Web组件,则将"CUSTOM_ELEMENTS_SCHEMA"添加到此组件的'@NgModule.schemas'以禁止显示此消息.("[错误 - >]

AppModule-

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';

import { AppComponent } from './app.component';


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule
  ],
  providers: [],
  bootstrap: [AppComponent],
  schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

AppComponent-

import { Component …
Run Code Online (Sandbox Code Playgroud)

angular-components angular

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

Elastic Beanstalk - 正常关闭时间太短

我正在尝试在弹性 beanstalk 应用程序上实现正常关闭,并且我已经整理了此关闭测试 -

主要的-

public class Main {

    public static void main(String[] args) throws InterruptedException {
        ShutdownTest shutdownTest = new ShutdownTest();
        shutdownTest.run();

        System.out.println("END OF MAIN");
    }
}
Run Code Online (Sandbox Code Playgroud)

测试班-

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ShutdownTest {

    private volatile long jobEnd;
    private volatile boolean shutdown = false;

    public void run() throws InterruptedException {

        Thread mainThread = Thread.currentThread();

        Thread shutdownHook = new Thread(() -> {
            runShutdownTimer();

            try {
                System.out.println("Got shutdown signal.");

                shutdown = true;

                mainThread.join();
            } catch(Exception e) {
                System.out.println(e);
            } …
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services amazon-elastic-beanstalk

7
推荐指数
0
解决办法
784
查看次数

阻止 WebStorm 建议导入索引

我有一个用于其他项目的共享 ts 库。该库中的资源可供同一库中的其他资源使用。components/*该库由、interfaces/*、等目录组成。services/*每个目录的根目录都有一个index.ts文件,用于重新导出该目录中的资源。这样使用项目就可以导入如下资源:

import { FooService, BarService } from 'mylib/services';
Run Code Online (Sandbox Code Playgroud)

代替:

import { FooService } from 'mylib/services/foo-service';
import { BarService } from 'mylib/services/bar-service';
Run Code Online (Sandbox Code Playgroud)

令人烦恼的是,如果我使用index.ts这样的文件,WebStorm 会建议我用它导入所有库本地资源。我绝对不想这样做,因为它在过去导致了意外的循环依赖。在库本身内,如果components/foo-component.ts想要导入FooService,它应该始终导入 from../services/foo-service.ts和 not ../services

但我无法让 WebStorm 忽略这些索引文件而不将它们标记为纯文本。即使我排除index.tsin 中命名的文件Preferences > Directories,它们仍然会显示为包含的选项。

从索引导入

如何告诉 WebStormindex.ts在搜索导入时忽略文件?并且不要再烦我我的进口可以缩短。

webstorm typescript

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

当窗口失去焦点时 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
查看次数

Python VS Code 调试 - 捕获 SIGTERM?

我想sys.exit()在 python 调试器停止时强制。当我停止调试器时,我看到了Terminated: 15所以我认为这是SIGTERM. 但是,当停止调试器时,我的 kill 函数没有被调用。

def kill(sig, frame):
  sys.exit(0)

signal.signal(signal.SIGINT, kill)
signal.signal(signal.SIGTERM, kill)
Run Code Online (Sandbox Code Playgroud)

停止vscode调试器时,发送什么信号?

编辑:

刚刚尝试了所有这些。没爱

for s in signal.Signals:
  try:
    signal.signal(s, self._kill)
  except:
    pass
Run Code Online (Sandbox Code Playgroud)

python visual-studio-code

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