小编Dom*_*c P的帖子

在本地安装节点Grunt

我正在重新构建我的构建系统,我已经读过带有grunt的node.js是一个很好的方法.我也没用过,而且我遇到了一些麻烦.

问题是我想建立一个可移植的构建环境,我可以将其包含在我的项目的版本控制中(也许这是不可能的).获取node.js和npm工作一直没有问题.但是,我看到安装grunt的每条指令都说使用-g带有npm 的标志,它会全局安装它.由于我想要一个完全可移植的环境,我试图将其关闭,但我无法工作.

我错过了什么,或者我试图做的不可行?

build-automation portable-executable node.js gruntjs

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

了解如何存储Web推送端点

我正试图在我的一个应用程序中开始实现Web Push.在我发现的示例中,客户端的端点URL通常存储在内存中,其注释如下:

在生产中,您将其存储在您的数据库中......

由于只有我的应用程序的注册用户可以/将获得推送通知,我的计划是将端点URL存储在我的数据库中用户的元数据中.到现在为止还挺好.

当我想允许同一用户在多个设备上接收通知时,问题就出现了.理论上,我将为用户订阅的每个设备添加一个新的端点到数据库.但是,在测试中我注意到端点随同一设备上的每个订阅/取消订阅而变化.因此,如果用户在同一设备上连续多次订阅/取消订阅,我最终会为该用户保存几个端点(除了其中一个端点都不好).

我读过的内容来看,当用户取消订阅或端点无效时,没有可靠的通知方式.那么,如何在添加新端点之前判断是否应删除旧端点?

什么是通过重复订阅/取消订阅填充我的数据库端点来阻止用户有效地发起拒绝服务攻击?

这更像是一个笑话(我可以忽略限制给定用户的总端点),但我看到的问题是,当发送通知时,我将使用数百个无效端点通知来爆炸通知服务.


我希望我的服务器上的订阅逻辑是:

  1. 检查我们是否已为此用户/设备组合保存了端点
  2. 如果不添加,如果是,请更新它

问题是我无法弄清楚如何可靠地做#1.

push-notification web-push

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

什么是自动绑定JS类方法的好方法?

我厌倦了编写这样的代码:

class Something {

    constructor() {

        this.method = this.method.bind(this);
        this.anotherOne = this.anotherOne.bind(this);
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

很费时间,而且很容易忘记绑定一个方法。我知道 class fields 提案,但它仍然是第 3 阶段,似乎有一些问题

我当前的解决方案(基于此答案)如下所示:

class Something {

    constructor() {

        // Get all defined class methods
        const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(this));

        // Bind all methods
        methods
            .filter(method => (method !== 'constructor'))
            .forEach((method) => { this[method] = this[method].bind(this); });
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我想知道是否有更好的方法,或者此方法是否存在我不知道的问题。

更新:为什么要这样做?

我遇到的问题是,如果我没有在构造函数中绑定我的类函数,我必须记住以后“正确地”调用它们。例如:

const classInstance = new Something();

// This fails for a non-obvious reason
someAction()
    .then(classInstance.method);

// This …
Run Code Online (Sandbox Code Playgroud)

javascript arrays function object ecmascript-6

10
推荐指数
3
解决办法
5755
查看次数

我将关键对象的哪一部分传入`openssl_verify`来验证Google签名的JWT?

我正在尝试使用Google和OpenID Connect实现联合登录系统,并且我无法验证和解析我从Google收到的JWT ID令牌.我在这里关注Google的文档.

根据文档的建议,我正在尝试使用现有的JWT库.GitHub上最流行的PHP版本似乎是PHP_JWT.问题似乎是JWK键的格式.

上面链接的谷歌文档说,从jwks_uri他们的发现文档中显示的端点获取密钥.该端点返回以下内容:

{
 "keys": [
  {
   "kty": "RSA",
   "alg": "RS256",
   "use": "sig",
   "kid": "1771931eb0eb64eb97733e857685be153e079bb9",
   "n": "AMNFQMNJw/EVwrYsyPTnEHWkaPinPb4ngc/SqD701aisFhbU9/wWoKADeFtwfBcWl1qjzIqhPorQElB+2mtiqUh3Qtaazt1x5wA9XnJDe6kjtMGm9nNLMilSVNBilAE8GIdbciMycISfOfL0WRaJrqpNxewNEVZjuYiGzOWahiDP",
   "e": "AQAB"
  },
  {
   "kty": "RSA",
   "alg": "RS256",
   "use": "sig",
   "kid": "7b3bc600209875d3c42ae277a0d018d1d21986ec",
   "n": "AN2UvG5+hNEMIPIbnpPm+JQi6LFWXBPzg3Ltb3xkVmSTjVaCFWppw/ZYRBgpToGKZP9XJstlOE88SDUFSMZIkIqtLpnUqmZax2Zc2gjEB9PhmHSH3/tTmtZ1U0X6V+crqitZ2uc3NV78vCn9/s+WuPwk/gfKBG8Cirb0fgLmsPd9",
   "e": "AQAB"
  }
 ]
}
Run Code Online (Sandbox Code Playgroud)

查看JWT类和方法的源代码,看起来参数可以是一个数组,但是它们希望数组键是和数组值:.它很简单,可以拉出属性并将它们用作数组键,但应该用什么作为数组值?decodeverify$keyskid@param string|resource $key for HS*, a string key works. for RS*, must be a resource of an openssl public keykid

从谷歌的JWKs文档来看,它看起来像我们正在使用RS*,但我不知道关键对象的哪一部分resource of an openssl public …

php single-sign-on jwt google-oauth

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

不守规矩的CSS伪元素框阴影

我正在为网站制作新的布局,我非常接近实现我想要的结果.但是,有一个问题.我正在使用这里描述的技术的改编(http://nicolasgallagher.com/multiple-backgrounds-and-borders-with-css2/demo/backgrounds.html,参见大猩猩下面的3栏示例).基本上,我的版本使用绝对定位的CSS伪元素作为左列的背景.

当我尝试将一个box-shadow应用于伪元素时,我的问题出现了.元素及其阴影始终显示在我的主列顶部.

为了使所有这一切更清楚,我在这里创建了一个简单的示例页面:http://www.3strandsmarketing.com/test4.html

我担心的是,因为我正在使用基于我的主列的父元素的伪元素,所以它永远不能坐在它下面,但我希望有一些方法可以解决这个问题.有任何想法吗?

html css

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

电子邮件开放时间个性化如何工作

我听到很多关于电子邮件的" 开放时间个性化 ",我很难找到技术实际工作原理的解释.我能想到的可以在开放时间更改的电子邮件的唯一部分是图像内容.它可能是这样的:

  1. 在图像的查询字符串中嵌入有关收件人或其他信息的一些详细信息
  2. 用户打开电子邮件,请求图像,服务器根据查询字符串,时间,天气,产品库存水平等决定发回的内容.

但是,我看到的引用似乎指向更精细的定制(例如更改哪个产品).怎么可能在开放时间更改电子邮件的文本?我在这里遗漏了什么,还是仅仅是花哨的图像交换?如何使用Gmail的图片缓存

email personalization

5
推荐指数
0
解决办法
156
查看次数

如何在 webpack 中使用 babel-loader 选择性地处理 node_modules 中的代码?

这是这个答案的后续。

我有一些 3rd 方代码(react 组件),我将它们捆绑为 ES 模块(使用pkg.module入口点)。这很好用(你得到模块连接和树摇动),但包含的代码没有用 babel 转译,因为按照大多数配置示例,我node_modules在 webpack 配置的 babel-loader 部分排除了这样的:

{
    ...
    module: {
        rules: [
            {
                exclude: /(node_modules)/,
                use: {
                    loader: 'babel-loader',
                    ...
                }
            }
        ]
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以,当我运行 webpack 时,我收到了意外的令牌错误。根据链接的答案,我从使用 an 切换exclude到 aninclude以选择性地引入一些这样的包node_modules

{
    ...
    module: {
        rules: [
            {
                include: [/node_modules\/@my-scope/, /src/],
                use: {
                    loader: 'babel-loader',
                    ...
                }
            }
        ]
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

这似乎对我有用(当我运行 webpack 时不再出现意外的令牌错误),但我不能 100% 确定它正在做我认为的事情。

这个解决方案看起来正确吗?有没有更好的办法?

javascript webpack babeljs babel-loader

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