小编Chr*_*ich的帖子

服务器日志文件HEAD请求

我在日志文件中发现了一些我不明白的条目.除了所有预期的GET请求,我发现了相当多的HEAD请求,我知道我的应用程序没有.

我没有phpmyadmin,SQL或我的服务器上安装的任何其他资源(运行Mongo DB的纯Node.js应用程序).

这可能是自动软件扫描我的服务器的漏洞吗?

[0mHEAD http://54.xxx.xxx.xxx:80/2phpmyadmin/ [36m301 [0m2.044 ms - 91[0m
[0mHEAD http://54.xxx.xxx.xxx:80/3phpmyadmin/ [36m301 [0m1.789 ms - 91[0m
[0mHEAD http://54.xxx.xxx.xxx:80/4phpmyadmin/ [36m301 [0m1.749 ms - 91[0m
[0mHEAD http://54.xxx.xxx.xxx:80/MyAdmin/ [36m301 [0m1.770 ms - 87[0m
[0mHEAD http://54.xxx.xxx.xxx:80/PMA/ [36m301 [0m1.705 ms - 83[0m
[0mHEAD http://54.xxx.xxx.xxx:80/PMA2011/ [36m301 [0m1.762 ms - 87[0m
[0mHEAD http://54.xxx.xxx.xxx:80/PMA2012/ [36m301 [0m1.470 ms - 87[0m
[0mHEAD http://54.xxx.xxx.xxx:80/PMA2013/ [36m301 [0m1.316 ms - 87[0m
[0mHEAD http://54.xxx.xxx.xxx:80/PMA2014/ [36m301 [0m1.605 ms - 87[0m
[0mHEAD http://54.xxx.xxx.xxx:80/PMA2015/ [36m301 [0m1.282 ms - 87[0m
[0mHEAD http://54.xxx.xxx.xxx:80/admin/ [36m301 [0m1.194 ms - …
Run Code Online (Sandbox Code Playgroud)

security logfiles

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

承诺瀑布

我是一名API开发人员,通常会编写端点,要求将结果从一个异步调用传递给另一个异步调用,即async waterfall.

我通常使用promises以下方式执行此操作:

task1()

.then(result1){

    task2(result1)

    .then(result2){

        task3(result2)

        .then(result3){
            // API response
        })

        .catch(function(err){
            // Task 3 handle err
        })
    })

    .catch(function(err){
        // Task 2 handle err
    })
})

.catch(function(err){
    // Task 1 handle err
})
Run Code Online (Sandbox Code Playgroud)

很明显,使用回调并没有多少收获.而不是"回调地狱"我现在得到了"承诺地狱".

我看过npm bluebird,但似乎并不支持瀑布承诺.

有时我会使用async和wrap返回promise的任务:

const tasks = [

    job1: function(cb){

        task1()

        .then(function(result){
            cb(null, result);
        })

        .catch(function(err){
            cb(err);
        })  
    },

    job2: function(cb, result1){

        task2(result1)

        .then(function(result){
            cb(null, result);
        })

        .catch(function(err){
            cb(err);
        })  
    },

    job3: function(cb, result2){

        task3(result2)

        .then(function(result){
            cb(null, result);
        })

        .catch(function(err){ …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js bluebird

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

Node.js连接到MySQL Docker容器ECONNREFUSED

在您将此问题标记为重复之前,请注意我确实阅读了其他答案,但这并没有解决我的问题.

我有一个Docker撰写文件,包含两个服务:

version: "3"
services:
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_HOST: localhost
      MYSQL_DATABASE: mydb
      MYSQL_USER: mysql
      MYSQL_PASSWORD: 1234
      MYSQL_ROOT_PASSWORD: root
    ports:
      - "3307:3306"
    expose:
      - 3307
    volumes:
      - /var/lib/mysql
      - ./mysql/migrations:/docker-entrypoint-initdb.d
    restart: unless-stopped
  web:
    build:
      context: .
      dockerfile: web/Dockerfile
    volumes:
      - ./:/web
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: development
      PORT: 3000
    links:
      - mysql:mysql
    depends_on:
      - mysql
    expose:
      - 3000
    command: ["./wait-for-it.sh", "mysql:3307"]
Run Code Online (Sandbox Code Playgroud)

/网络/ Dockerfile:

FROM node:6.11.1

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install

COPY . /usr/src/app …
Run Code Online (Sandbox Code Playgroud)

mysql node.js docker docker-compose

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

利与弊:在生产环境中使用Swagger中间件

我正在使用Swagger构建高流量API,并正在寻找有关在高流量生产环境中使用Swagger的建议。我的重点是性能和安全性。

我已经看到了在Node项目中实现Swagger的多种方法,其中大量使用两种方法:

1)使用中间件,例如npm-swagger-express-mwnpm-swagger-tools,通过读取兼容Swagger的yaml或JSON文件来拦截路由,验证输入,生成默认错误响应并注册路由。这将与Express一起创建辅助路由抽象层。这是遵循这种模式的“ hello world”示例之一:

https://github.com/ChristianRich/swagger-api-demo

2)使用Swagger仅生成API文档。无需安装任何“ Swagger”,实时应用程序即可正常运行。

有在该领域有经验的人愿意分享一些见解吗?这会在笔或性能测试中引起危险吗?

node.js express swagger swagger-ui swagger-2.0

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

DynamoDb:查询两个日期之间的项目

我对这个查询不太走运,它返回 0 个项目

const { Items } = await this.dynamoDb.query({
  TableName: 'exampleTableName',
  IndexName: 'createdDateTime-index',
  KeyConditionExpression: '#createdDateTime BETWEEN :fromDateTime AND :toDateTime AND #status = :status',
  ExpressionAttributeNames: {
    '#status': 'status',
    '#createdDateTime': 'createdDateTime',
  },
  ExpressionAttributeValues: {
    ':fromDateTime': '2017-02-20T01:58:49.710Z',
    ':toDateTime': new Date().toISOString(),
    ':status': 'SUCCESS',
  },
}).promise();
Run Code Online (Sandbox Code Playgroud)

我在数据库中有一项:

{
  "id": "fa47003a-983a-4dc3-a87e-ace73ea7e451",
  "createdDateTime": "2018-02-20T02:58:49.710Z",
  "status": "SUCCESS"
}
Run Code Online (Sandbox Code Playgroud)

桌子:

aws dynamodb create-table \
  --endpoint-url http://localhost:8000 \
  --table-name exampleTableName \
  --attribute-definitions \
    AttributeName=id,AttributeType=S \
    AttributeName=status,AttributeType=S \
    AttributeName=createdDateTime,AttributeType=S \
  --key-schema \
    AttributeName=id,KeyType=HASH \
  --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=10 \
  --global-secondary-indexes \
    IndexName=createdDateTime-index,KeySchema=["{AttributeName=status,KeyType=HASH},{AttributeName=createdDateTime,KeyType=RANGE}"],Projection="{ProjectionType=ALL}",ProvisionedThroughput="{ReadCapacityUnits=10,WriteCapacityUnits=10}" …
Run Code Online (Sandbox Code Playgroud)

node.js amazon-dynamodb aws-sdk dynamodb-queries

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

CircleCI部署到AWS EC2

您能帮我找到一个有用的分步指南还是一个Gist概述,详细介绍了如何配置CircleCI(使用2.0语法)以部署到AWS EC2?

我了解基本要求和动态内容,但是不确定.circleci/config.ymldeploy步骤中要在文件中添加什么。

到目前为止,我得到了:

  • 一个可以在CircleCI中成功构建的“ Hello World” Node.js应用程序(只是没有部署步骤)
  • 正在运行的EC2实例(Ubuntu 16.04)
  • 具有足够权限的IAM用户已为该特定作业添加到CircleCI

您可以协助CircleCI部署步骤吗?

amazon-ec2 amazon-web-services circleci

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

使用KeystoneJs进行Mongoose两级人口

我需要用Mongoose/Keystone填充两个级别,但是已经遇到了障碍.

我有3个型号:地区,国家和城市.地区包含国家和国家/地区包含城市

我的模特:

型号区域:

var Region = new keystone.List('Region');

Region.add({
      name: {type: Types.Text}
    , countries: {type: Types.Relationship, ref: 'Country', many: true}
});
Run Code Online (Sandbox Code Playgroud)

模范国家

var Country = new keystone.List('Country');

Country.add({
      name: {type: Types.Text}
    , cities: {type: Types.Relationship, ref: 'City', many: true}
});
Run Code Online (Sandbox Code Playgroud)

模范城市

var City = new keystone.List('City');

City.add({
      name: {type: Types.Text}
});
Run Code Online (Sandbox Code Playgroud)

查询:

keystone.list('Region').model.find()
    .populate('countries')
    .exec(function(err, regions){
        console.log(regions)
    });
Run Code Online (Sandbox Code Playgroud)

产量:

    {
        name: 'Oceania',

        countries: [
            {
                _id: 55d9b260415baa6958ac04c1   
                name: 'Australia',
                cities: [
                    _id: 55d9b260415baa6958ac04c2,
                    _id: 55d9b260415baa6958ac04c3,
                    _id: 55d9b260415baa6958ac04c4
                ]
            }, …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js keystonejs

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

使用Web工作程序问题在Canvas上进行位图过滤

我有一个视频将像素复制到画布并使用web worker应用实时位图过滤器.

使用网络工作者时,我无法在画布上看到结果发生的变化(应该是黑色的'白色).

这是我的代码:http: //www.dev.createdbychristian.com/filter-test/

我可以通过使用中间画布来解决这个问题,但我真的不想那样做.

我的代码松散地基于这个例子,就像我刚刚没有使用web worker进行图像过滤处理一样. http://techslides.com/demos/html5-video-canvas.html

我的代码出了什么问题?

注意:需要一个支持Web Workers和HTML5 Video/canvas的现代浏览器

javascript video canvas

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

ES6进口申报+符号

什么是+符号在这个进口报关表示?

import app from '+/api';

而不仅仅是:

import app from '/api';

导入片段来自使用es6的Node应用程序,该应用程序使用Babel进行转换.

./api/index.js使用导出Express实例 export default app;

我也看过这种语法,使用代字号:

import app from '~/api';

javascript node.js ecmascript-6

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

JQuery到常规JavaScript

出于学习目的,我将此滚动条转换为常规JavaScript.我只是简单地从脚本编写JQuery(JQuery很棒,但我希望在使用JQuery之前学习原始JavaScript).

这是滚动条代码:

http://jsfiddle.net/PVZB8/139/

我不明白如何将最后几行转换为常规JavaScript:

$('#chatlist').slimscroll({
    color: '#000',
    size: '8px',
    width: '150px',
    height: '250px'                  
});
Run Code Online (Sandbox Code Playgroud)

我假设$('#chatlist')等于document.getElementById('chatlist'),但当然这会失败,因为div元素没有名为'slimscroll'的方法......

我有点理解这些代码行的作用(创建一个新的slimscroll实例并传递一些选项).

如果我们拿出JQuery,这些线条看起来怎么样?如果不使用JQuery,整个脚本会如何显示?

(我知道,如果没有JQuery,脚本的所有方面都不会以类似的方式工作,例如淡入淡出功能)

javascript jquery scrollbar

0
推荐指数
1
解决办法
126
查看次数