最新文章
使用 Mocha 和 Node.js自带的assert做单元测试,使用SuperTest做请求接口。Mocha 简介mocha 提供 TDD(测试驱动开发)、BDD (行为驱动开发) 和 exports 风格的接口。BDD是“行为驱动的开发”(Behavior-Driven Development)的简称。BDD认为,不应该针对代码的实现细节写测试,而是要针对行为写测试。BDD测试的是行为,即软件应该怎样运行。BDD接口提供以下方法:describe():测试套件 it():测试用例 before():所有测试用例的统一前置动作 after():所有测试用例的统一后置动作 beforeEach
像素鱼丸 2021-01-17 Node.js 2122
NPM Package 学习,一个符合CommonJs规范的包,都可以成为一个Npm Package。一,创建一个包创建一个文件夹:good-helloworld添加如下文件:index.jsexports.helloWorld = function () { return "Hell World!"; } exports.你好世界 = function () { return "你好世界!"; } package.json{ "name": "good-helloworld", "version": "0.0.1", "private": false } README.
像素鱼丸 2021-01-15 Node.js 1463
Sequelize 提供了一个方法 Model.bulkCreate,可以只用一次查询插入多条数据。bulkCreate(records, [options]) - Promise. Array. Instance 参数records Array 要创建实例的对象(键/值 对)列表 [options] Object [options.fields] Array 要插入的字段。默认全部 [options.validate=true] Boolean 插入每条记录前进行验证 [options.hooks=true] Boolean 在执行前/后创建钩子 [options.indi
像素鱼丸 2021-01-14 Node.js 2981
安装 node-xlsxnpm install node-xlsx --save读取 Excelvar xlsx = require('node-xlsx'); // 解析得到文档中的所有 sheet var sheets = xlsx.parse('test.xls'); // 遍历 sheet sheets.forEach(function(sheet){ console.log(sheet['name']); // 读取每行内容 for(var rowId in sheet['data']){ console.log(rowId);
像素鱼丸 2021-01-14 Node.js 1600
正向代理与反向代理的区别就是代理的对象不一样,正向代理代理的对象是客户端,反向代理代理的对象是服务端。1,正向代理我们日常的科学上网就可以用Nginx做正向代理如下,也是正向代理server { location / { proxy_pass http://$http_host$request_uri; } } 2,反向代理配置语法:Syntax:proxy_pass URLDefault:--Context:location,if inlocation,limit_except如下:server { location ~ /test_ind
像素鱼丸 2021-01-14 运维 1100
tags字段是逗号隔开tag id。查询一select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') from tb_tag where id in (i.tags) ) as tags_title from tb_item as i; 结果:查询二select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') fro
像素鱼丸 2021-01-13 MySQL 1155
OSS可以通过阿里云STS(Security Token Service)进行临时授权访问。通过STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。使用场景对于您本地身份系统所管理的用户,例如您的App的用户,将这部分用户称为联盟用户。通过阿里云STS服务为阿里云账号(或RAM用户)提供临时访问权限管理。您不需要透露云账号(或RAM用户)的长期密钥(如登录密码、AccessKey),只需要生成一个临时访问凭证给联盟用户使用即可。这个凭证的访问权限及有效期限都可以由您自定义。您不需要关心权限撤销问题,临时访问凭证过期后会自动失效。实现原理以一个移
像素鱼丸 2021-01-13 运维 1571
可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined。之前:let nestedProp = obj.first && obj.first.second; 使用可选链操作符?.let nestedProp = obj.first?.second; 连用可选链操作符let
像素鱼丸 2021-01-12 JavaScript 1205
.head-section{ width: 100%; height: 360px; position: relative; z-index: -1; overflow: hidden; } .head-section::after{ content: ''; display: block; width: 160%; height: 200%; border-radius: 50%; position: absolute; left: 50%; top: -10
像素鱼丸 2020-12-23 CSS 1128
2020年12 月 8 日,CentOS 项目宣布,CentOS 8 将于 2021 年底结束,而 CentOS 7 将在2024年,其生命周期结束后停止维护。为其接班的正是 CentOS Stream 滚动发行版本,原本拥有 10 年支持的 CentOS 8 将在2021年年底说结束维护就结束维护。所以火速将自己的服务器从 CentOS8 降到 CentOS 7。mkdir /space cd /space wget https://nginx.org/download/nginx-1.18.0.tar.gz yum -y install gcc pcre pcre-devel zl
像素鱼丸 2020-12-16 运维 2283
通常异常使用方式:try { JSON.parse(json); } catch (e) { // TODO } 但是这对于异步编程而言并不一定适应,下面的代码 catch 不会捕捉到异常,并导致程序退出:async function action(){ setTimeout(()= { throw new Error("发生了错误"); }, 1000); } try { action(); } catch (e){ console.log('catch: ', error.message); } 异步I/O的实现主要包含两个阶段:提交请求和处理结果。这
像素鱼丸 2020-12-15 JavaScript Node.js 1232
当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS中通过各种 Stream 来提供对数据流的操作。官方文档: http://nodejs.org/api/stream.html小文件拷贝fs.writeFileSync(dst, fs.readFileSync(src)); 大文件拷贝上边的程序拷贝一些小文件没啥问题,但这种一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式不适合拷贝大文件,内存会爆仓。对于大文件,我们只能读一点写一点,直到完成拷贝。因此上边的程序需要改造如下。fs.createReadStream(src).pi
像素鱼丸 2020-12-15 Node.js 1134
最终我选择使用了 sharp https://github.com/lovell/sharp基本用法:var images = require("images"); images("input.jpg") //Load image from file //加载图像文件 .size(400) //Geometric scaling the image to 400 pixels width //等比缩放图像到400像素宽 .draw(images("l
像素鱼丸 2020-12-14 Node.js 1622
管理员可以通过分析nginx的错误日志手动添加白名单规则。白名单规则配置naxsi核心规则文件naxsi_core.rules需要在nginx配置文件nginx.conf下的http部分导入,而naxsi白名单规则文件naxsi_whitelists.rules一般在nginx配置文件nginx.conf下的location部分导入,可放置在CheckRules语句之前。location部分对应的配置内容如下:include naxsi_whitelists.rules;#导入白名单规则 SecRulesEnabled; DeniedUrl "/RequestDenied"; Check
像素鱼丸 2020-12-14 运维 1314
使用 tag__in 可以调用有特定标签的文章。//获取一个标签的文章 根据标签别名获取有这个标签的文章: $query = new WP_Query( 'tag=cooking' ); //根据标签 ID 获取有这个标签的文章: $query = new WP_Query( 'tag_id=13' ); //获取多个标签的文章 根据标签的别名获取带有这几个标签其中一个的文章: $query = new WP_Query( 'tag=bread,baking' ); //根据标签别名获取同时拥有几个标签的文章: $query = new WP_Query( 'tag=bread+baking+
像素鱼丸 2020-12-10 WordPress 1324
Scoped Packages 范围包假如我们有一个项目需要使用 npm init 进行初始化,但是在 npm 注册的包名是唯一的,好名字都被别人起了,怎么办呢?之前很多人都是使用类似 koa-router、vue-cli 中线的方式。 还有类似这样的:@koa/router,这种形式叫做 Scoped Packages 范围包。@somescope/somepackagename每个npm用户可以有自己的 somescope使用的时候大概如下:var router = require("@koa/router"); 参考https://nitayneeman.com/posts/under
像素鱼丸 2020-12-09 Node.js 1248
扩容相关文档在这里。https://help.aliyun.com/document_detail/35095.html扩容的流程分三大步。第一步,创建磁盘快照。第二步,购买磁盘。第三步,在CentOS中增加已经新增容量。购买磁盘的时候注意,最好能勾选在线扩容。否则的话,新增磁盘还需要重启服务器。现在主要说第三步,fdisk -lu查看实例的云盘情况,会显示扩容完的磁盘大小df -Th确认已有分区的文件系统类型和磁盘大小,在ECS实例内分区和文件系统并未扩容。growpart /dev/vda 1此示例以扩容系统盘为例,/dev/vda和1之间需要空格分隔。如果需要扩容其他分区,请根据实际情况
像素鱼丸 2020-12-03 运维 1202
一,ngx_http_limit_conn_module 模块,限制单IP并发连接数ngx_http_limit_conn_module模块用于限制连接数量,特别是来自单个IP地址的连接数量。并非所有的连接都被计数。只有当服务器处理了请求并且已经读取了整个请求头时,连接才被计数。示例配置:http { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... location /download/ { limit_conn addr 1; } } li
像素鱼丸 2020-11-12 运维 1641
macOS 安装 nginxbrew install nginx cp nginx.conf.default nginx.conf cd www.conf.default www.conf 安装PHP 参考:https://javascript.net.cn/articles/582找到PHP的位置/usr/local/php7 修改 ~/profilePATH="/usr/local/php7/bin:/usr/local/php7/sbin:$PATH" 开启php-fpm 关闭 php-fpmsudo killall php-fpm 如果遇到上传文件权限不够nginx open() cl
像素鱼丸 2020-11-09 运维 1292
知识回顾:open_basedir是php.ini中的一个配置选项它可将用户访问文件的活动范围限制在指定的区域,假设open_basedir=/home/wwwroot/home/web1/:/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/home/wwwroot/home/web1/和/tmp/这两个目录以外的文件。注意用open_basedir指定的限制实际上是前缀,而不是目录名。举例来说: 若"open_basedir = /dir/user", 那么目录 "/dir/user" 和 "/dir/user1"都是可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜
像素鱼丸 2020-11-05 运维 1550
随机推荐
JavaScript 使用剪切板
WordPress 语言文件
WordPress 主题激活和取消激活钩子
JavaScript 数据类型和变量
JavaScript Math 对象
JavaScript 类操作 classList
Node.js 内置模块
WordPress 实现自定义 Ajax 请求