小编Ren*_*soo的帖子

如何以编程方式移动OpenLayers Vector?

OpenLayers.Feature.Vector的API文档说Vector本身根本就没有方法.

我知道如何通过添加OpenLayers.Control.DragFeature控件来映射用户来移动Vector .因此,如果用户可以移动Vector,那么必须以编程方式移动它.但我无法弄清楚该怎么做.

javascript vector openlayers

9
推荐指数
2
解决办法
8738
查看次数

如何运行@angular-eslint/schematics:convert-tslint-to-eslint

我正在尝试按照angular-eslint Github repo 中的说明将 Angular 项目从 TSLint 切换到 ESLint 。

我跑了ng add @angular-eslint/schematics它在我的 package.json 中添加了以下依赖项:

    "@angular-eslint/builder": "1.2.0",
    "@angular-eslint/eslint-plugin": "1.2.0",
    "@angular-eslint/eslint-plugin-template": "1.2.0",
    "@angular-eslint/schematics": "1.2.0",
    "@angular-eslint/template-parser": "1.2.0",
    "@typescript-eslint/eslint-plugin": "4.3.0",
    "@typescript-eslint/parser": "4.3.0",
    "eslint": "7.6.0",
    "eslint-plugin-import": "2.22.1",
    "eslint-plugin-jsdoc": "30.7.6",
    "eslint-plugin-prefer-arrow": "1.2.2",
Run Code Online (Sandbox Code Playgroud)

此外,运行npm install以确保这些都已安装。

现在我被指示运行:

ng g @angular-eslint/schematics:convert-tslint-to-eslint --remove-tslint-if-no-more-tslint-targets --ignore-existing-tslint-config
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误:

Unknown option: '--remove-tslint-if-no-more-tslint-targets'
Unknown option: '--ignore-existing-tslint-config'
Run Code Online (Sandbox Code Playgroud)

当我删除这些选项时,我收到另一个错误:

Invalid rule result: Instance of class Promise.
Run Code Online (Sandbox Code Playgroud)

似乎这个 angular-eslint 示意图没有正确安装。但是,我对这些原理图完全是新手。我一定在这里遗漏了一些明显的东西。

使用@angular/cli 10.2.3。

eslint tslint angular angular-schematics

8
推荐指数
3
解决办法
1379
查看次数

如何让grep [AZ]独立于语言环境?

我正在做一些日常的捣蛋,突然发现看似微不足道的东西不起作用:

$ echo T | grep [A-Z]
Run Code Online (Sandbox Code Playgroud)

没有比赛.

为什么T不在AZ范围内?

我改变了正则表达式:

$ echo T | grep [A-Y]
Run Code Online (Sandbox Code Playgroud)

一场比赛!

哇!如何在AY内,但不在AZ内?

显然这是因为我的环境设置为爱沙尼亚语区域,其中Y位于字母表的末尾,但Z位于中间位置:ABCDEFGHIJKLMNOPQRSŠZŽTUVWÕÄÖÜXY

$ echo $LANG
et_EE.UTF-8
Run Code Online (Sandbox Code Playgroud)

这对我来说有点震惊.99%的时候我会用计算机代码,而不是爱沙尼亚文学.我一直在以错误的方式使用grep吗?我过去因此犯过什么样的错误?

在尝试了几件事后,我得出了以下解决方案:

$ echo T | LANG=C grep [A-Z]
Run Code Online (Sandbox Code Playgroud)

这是使grep语言环境独立的推荐方法吗?

更多......定义这样的别名是安全的:

$ alias grep="LANG=C grep"
Run Code Online (Sandbox Code Playgroud)

PS.我也想知道为什么字符范围[A-Z]首先依赖于语言环境,而且\w似乎不受语言环境的影响(尽管手册中说\w的相当于[[:alnum:]]- 但我发现后者依赖于语言环境而\w不是语境环境).

grep locale

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

如何测试一个函数在另一个函数之前调用

我有一些紧密耦合的遗留代码,我想用测试来覆盖.有时确保在另一个方法之前调用一个模拟方法很重要.一个简化的例子:

function PageManager(page) {
    this.page = page;
}
PageManager.prototype.openSettings = function(){
    this.page.open();
    this.page.setTitle("Settings");
};
Run Code Online (Sandbox Code Playgroud)

在测试中我可以检查两者open()并被setTitle()调用:

describe("PageManager.openSettings()", function() {
    beforeEach(function() {
        this.page = jasmine.createSpyObj("MockPage", ["open", "setTitle"]);
        this.manager = new PageManager(this.page);
        this.manager.openSettings();
    });

    it("opens page", function() {
        expect(this.page.open).toHaveBeenCalledWith();
    });

    it("sets page title to 'Settings'", function() {
        expect(this.page.setTitle).toHaveBeenCalledWith("Settings");
    });
});
Run Code Online (Sandbox Code Playgroud)

但setTitle()只有在第一次打电话后才能工作open().我想先检查一下page.open(),然后是setTitle().我想写这样的东西:

it("opens page before setting title", function() {
    expect(this.page.open).toHaveBeenCalledBefore(this.page.setTitle);
});
Run Code Online (Sandbox Code Playgroud)

但Jasmine似乎并没有内置这样的功能.

我可以破解这样的东西:

beforeEach(function() {
    this.page = jasmine.createSpyObj("MockPage", ["open", "setTitle"]);
    this.manager = …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jasmine

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

在 Puppeteer 中访问 javascript 变量

我正在尝试使用 puppeteer 渲染页面,提取页面上动态 javascript 变量的名称,并将该变量作为对象返回。我正在使用 puppeteer 和 node.js 来执行此操作。

我能够获取页面上生成的 javascript 变量的名称,但每当我尝试将其打印到控制台时,我都会收到“未定义”错误。我花了早上的大部分时间试图解决这个问题,但我被难住了。这是下面的代码。

const puppeteer= require('puppeteer');

var url = 'https://www.website.com';
async function run () {

try {
    const browser = await puppeteer.launch({
        headless: true,
        args: ['--no-sandbox']
    });
    const page = await browser.newPage();
    await page.goto(url);

    const flashVariableName = await page.evaluate( () => {
        var start = document.documentElement.innerHTML.indexOf('var flashvariable_') + 'var '.length;
        var tempDoc = document.documentElement.innerHTML.substr(start);
        var end = tempDoc.indexOf(' =');
        return  tempDoc.substr(0, end);
    });

        console.log(await page.evaluate( (flashVariableName) => flashVariableName )); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js puppeteer

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

如何使用正则表达式验证javascript中的URL

我想验证一个文本框,它有一些url值,如博客地址或网站地址如何在js中验证此文本框

javascript validation url

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

为什么array.map(String.fromCharCode)这么慢?

当我阅读Guido van Rossum的文章"优化轶事"时,它就开始了.

决定在JavaScript中尝试相同的事情,我计时如下:

numbers.map(function(x){ return String.fromCharCode(x); });
Run Code Online (Sandbox Code Playgroud)

这已经非常快了,但为什么不完全消除匿名函数并将String.fromCharCode直接传递给map():

numbers.map(String.fromCharCode);
Run Code Online (Sandbox Code Playgroud)

我把它计时了...... 这比以前的版本慢了约100倍.怎么会?

以某种方式将此本机函数直接传递给Array.map()比将其包装到另一个函数中并将其传递给Array.map()慢得多.

  • 它不是特定于浏览器:在Chrome,Firefox和Opera中测试过.

  • 它不是特定于map():尝试forEach(),其行为类似.

  • 它并不特定于内置函数:尝试过Math.round()和Math.sin() - 这些结果如人们所期望的那样:直接将函数传递给Array.map()比使用中间函数快一点匿名功能.

似乎问题出在String.fromCharCode上.

这里发生了什么?

PS.最初在Hacker News主题中提出了这个问题,但由于相关文章是关于Python的,我认为在发布时会更多地接触JavaScript开发人员.很抱歉交叉发布.

javascript optimization

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

@types/react-native 用于 react-native 0.59.x

我正在使用react-native 0.59.9(0.60.x由于外部阻止程序,还不能升级到)。

但@types/react-native唯一提供的类型定义高达0.57.65(如 npm 中所列)。从那时起,版本直接跳转到0.60.x. 中的第一行index.d.ts还告诉我中的类型@types/react-native 0.57.65仅支持0.57版本:

// Type definitions for react-native 0.57
Run Code Online (Sandbox Code Playgroud)

@types/react-native 0.57.65到目前为止,我实际上一直在使用react-native 0.59. 但是现在我遇到了一些问题,我开始怀疑这种组合是否应该起作用。

我正在思考的问题:

  • 为什么没有0.58和0.59发布@types/react-native?
  • 使用react-native 0.59for 类型时是否应该出现问题0.57?
  • 除了升级到 ,还有没有办法解决这个问题0.60?

typescript definitelytyped react-native

6
推荐指数
0
解决办法
246
查看次数

如何对继承对象进行单元测试?

当您使用合成时,您可以模拟测试中的类所依赖的其他对象,但是当您使用继承时,您无法模拟基类.(或者你呢?)

我通常试图更喜欢组合而不是继承,但有时候继承似乎是最好的工具 - 好吧,至少在单元测试之前.

那么,你如何测试继承?或者你只是把它作为不可测试的废物并使用组合而不是?

注意:我主要使用PHP和PHPUnit,因此非常感谢帮助.但是知道在其他语言中是否存在解决这个问题的方法也很有趣.

php oop inheritance phpunit unit-testing

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

如何将个人身份与个人数据分开?

我正在编写一个应用程序,主要目的是保持用户购买列表.

我想确保即使我作为开发人员(或任何完全访问数据库的人)也无法弄清楚某个人花了多少钱或者他已经购买了什么.

我最初想出了以下方案:

    --------------+------------+-----------
    user_hash     | item       | price
    --------------+------------+-----------
    a45cd654fe810 | Strip club |     400.00
    a45cd654fe810 | Ferrari    | 1510800.00
    54da2241211c2 | Beer       |       5.00
    54da2241211c2 | iPhone     |     399.00
  • 用户使用用户名和密码登录.
  • 从密码计算user_hash(可能与盐渍等).
  • 使用哈希通过普通的SQL查询访问用户数据.

如果有足够的用户,通过了解他的名字,几乎不可能知道特定用户花了多少钱.

这是明智的做法,还是我完全愚蠢?

hash database-security sensitive-data

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