- 博客(416)
- 资源 (2)
- 收藏
- 关注
原创 【NodeJS】Events 模块
const EventEmitter = require('events');const ee = new EventEmitter();ee.on('eventname', (a, b) => { console.log(a, b); // 1 r ee.removeAllListeners(['eventname']);});ee.emit('eventname', 1, 'r');
2021-09-26 10:30:06
213
原创 【CDN】https 证书通过 NodeJS SDK 接口上传
const fs = require('fs');const Core = require('@alicloud/pop-core');let client = new Core({ accessKeyId: 'xxxx', accessKeySecret: 'xxxx', endpoint: 'https://cdn.aliyuncs.com', apiVersion: '2018-05-10'});//获取所有加速的域名,然后批量设置同一个证书client..
2021-09-19 15:27:54
633
原创 【LetsEncrypt】ssl证书完全自动化续签
ssl证书如果用到很多个,手动更新将会比较烦,并且免费的LetsEncrypt 90天就要更新一次,总不能今天更新完了,明天或下周又要更新,如果能让它自动更新岂不美哉?实践证明,这是行得通的。首先,ssl证书我目前有2个用途,一个是自己服务器的nginx需要,nginx配置文件写好证书路径即可,每次获取到新的证书,nginx 需要重新加载配置文件,nginx -s reload。另一个用途是获取到证书之后上传给阿里云CDN使用,因为CDN开了https,上传证书通过CDN SDK的接口上传而不是手动。.
2021-09-19 15:16:26
5301
原创 【crontab】Ubuntu 设置定时任务
crontab 只有一个配置文件crontab-e 用vim编辑配置文件,退出之后,会自动运行crontab-l 查看有哪些任务#例子:* * * * * command分 时 日 月 周 命令第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令例子:*/30 * * * * /home/mysql_back.sh ...
2021-09-17 23:28:01
222
原创 【canvas】最小模板
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>canvas base</title> <style> *{ margin: 0; padding: 0; } body{ } #c.
2021-09-16 17:25:46
188
原创 【NodeJS】读文件 readFileSync
注:如果要读的文件是一个符号链接,那么它会将符号链接指向的文件内容读出来,符号链接也照读不误。const fs = require('fs');let cert = fs.readFileSync('./fullchain1.pem', 'base64');let key = fs.readFileSync('./privkey1.pem', 'utf8');// let b64 = cert.toString('base64');let res = encodeURIComponent(
2021-09-16 14:10:09
2556
原创 需要使用ssl证书的地方
1、nginx做域名转发可能需要配置多个,可以使用 Certbot 自动申请。2、阿里云CDN如果要开https,需要上传证书或者使用免费证书
2021-09-14 18:16:32
202
原创 锚点平滑滚动之scrollIntoView
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>锚点平滑滚动</title> <style> #d1{ background-color: #FFFCF0; height: 400px; } #d2{ .
2021-09-14 16:07:31
414
原创 【LetsEncrypt】 简介
Let’s Encrypt 是一个证书颁发机构,提供免费的ssl证书,有很多大公司赞助支持。要从Let’s Encrypt 获取你网站域名的证书,你必须展示对该域名的控制。要操作使用Let’s Encrypt,你需要在你的web服务器上安装ACME协议的软件。Let’s Encrypt 推荐使用 Certbot ACME 客户端,它可以在不停机的情况下自动化证书颁发和安装。...
2021-09-13 10:42:47
589
原创 【MongoDB】Convert a Standalone to a Replica Set
默认安装好的数据库都是Standalone,要使用事务需要转换为 Replica Set,不然无法使用1、MongoDB停止服务2、修改配置文件,如下:replication: replSetName: rs03、重新启动服务,需要携带配置文件参数4、初始化Replica Set,如下:rs.initiate()5、设置完成,查看状态:rs.status()...
2021-09-12 20:26:04
397
原创 【MongoDB】win10下安装注意事项
1、数据和日志不要使用默认路径,在其他盘新建目录存放2、事务transactions的执行需要副本集Replica Set,而安装好之后默认是Standalone,所以需要将运行方式替换为Replica Set,怎么替换见其他文章
2021-09-12 18:37:20
184
原创 async 与 await
const doSometing = t => { return new Promise(resolve => { setTimeout(() => { resolve(t); }, t); });};const doSometing2 = t => { return t;};const fun = async () => { let d3 = await doSometing2.
2021-09-11 21:52:11
162
原创 【Robo3T】启动后崩溃问题
创建私有npm包1、npm官网可以创建私有npm包,但是要收费,每人每月7$,先找免费的2、在线的免费的有GitHub,可以看文章:https://andreybleme.com/2020-05-31/hosting-private-npm-packages-for-free/3、自己本地搭建仓库,可以使用开源项目verdaccio,这个项目的前身是sinopia,前身已经不维护了,verdaccio 地址:https://github.com/verdaccio/verdaccio4、..
2021-09-07 19:26:33
1272
2
原创 【MongoDB】Update Operators
Update OperatorsFields Name Description $currentDate Sets the value of a field to current date, either as a Date or a Timestamp. $inc Increments the value of the field by the specified amount.
2021-06-13 19:56:07
241
1
原创 【JavaScript】String转Uint8Array
浏览器端:new TextEncoder().encode('zifuc');NodeJS:Buffer.from('你好')
2021-06-13 16:02:01
5011
3
原创 【Win10】磁盘重新分区,保留数据
本来我只有c盘和d盘,现在我要把d盘拆分,d盘里已经有很多文件不方便迁移,在不影响d盘已经存在文件的情况下,弄个e盘出来,可行吗?实践证明,可行。原理:在Win10下,
2021-06-08 11:28:10
3111
原创 校验和算法 rd16
randdigest 16bitconst modulus16 = 256 * 256;const rd16 = t => { let buf = Buffer.isBuffer(t) ? t : Buffer.from(t); let p = Math.floor(buf.length / 2); let r = buf.length % 2; let checksum = 0; for (let i = 0; i < p; i += 2) {.
2021-05-28 22:00:01
431
原创 【性能优化】【Brotli】使用Brotli压缩算法来压缩静态文件
Brotli 比 gzip 更强,压缩后体积更小,gzip可以淘汰了。静态文件可以使用Brotli 进行预压缩,会占用cpu资源,返回头需要指定:'Content-Encoding': 'br'不然浏览器无法识别Brotli 基本可以压缩任何静态文件或者直接压缩返回的字节流,使用也非常简单,代码如下:const zlib = require('zlib');let jquery = fs.readFileSync('./jquery-3.6.0.min.js', 'u...
2021-05-23 14:03:38
1740
原创 【NodeJS】【pm2】加参数运行
node index.js arg1 arg2pm2 start index.js -- arg1 arg2上面两个等价获取参数process.argv返回一个数组如下:[ '/usr/bin/node', '/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js', 'arg1', 'arg2']
2021-05-22 19:49:28
2181
原创 【CDN】
1、添加域名首先想好两个域名,一个引用域名,也就是加速域名,另一个回源域名。添加域名之后,会对加速域名生成一个cdn域名,需要给这个cdn域名设置别名也就是添加CNAME记录,别名就是加速域名。以后请求加速域名,实际请求的是cdn域名。如果cdn节点没资源,它会去源站,也就是回源域名获取信息。2、刷新和预热刷新的作用是清空cdn上的缓存,下次请求cdn就会回源。刷新可以根据url单个资源刷新,也可以根据目录刷新预热的作用就不用解释了。3、源站可以使用https 443端口..
2021-05-21 23:34:28
357
原创 生产环境网站部署
需求:1、需要做域名端口映射功能2、考虑使用cdn减轻服务器压力3、cdn只能设置一个缓存时间,不知道是文件在cdn服务器的缓存时间还是在用户浏览器的缓存时间模板文件,静态文件,需要去空格混淆压缩,然后brotli压缩,压缩之后...
2021-05-21 18:34:04
192
原创 【LetsEncrypt】 证书获取
使用certbot 工具,网站:https://certbot.eff.org/lets-encrypt/ubuntubionic-other单域名证书申请:1、安装 snapdapt install snapdsnap install coresnap refreshcore2、使用snap安装certbotsnap install --classiccertbot3、准备certbot命令行ln -s /snap/bin/certbot /usr/bin/ce...
2021-05-19 23:03:12
161
原创 【MongoDB】连接池理解及测试 NodeJS
更新于2021-05-15最近对MongoDB连接池如何正确使用不是特别清楚,于是做了一些测试也查找了相关资料,终于知道了MongoDB的连接池是怎么工作的了。首先,在 nodejs web 应用中正确使用MongoDB,应该先 MongoClient.connect ,回调中会得到 client,然后 let db = client.db() ,将这个db作为全局对象使用即可,任何请求都可以使用db去执行语句。这是正确的,Stack Overflow上的答案也是一致的。连接池是怎么工作的.
2021-05-15 19:36:09
2014
原创 【MongoDB】版本选择
2021-05-12MongoDB官网版本有:4.4.6、4.2.14、4.0.24、3.6.23、3.4.24、3.2.22、3.0.15Robo 3T 最新版本:Robo 3T 1.4 brings support for MongoDB 4.2, and a mongo shell upgrade from 4.0 to 4.2, with the ability to manually specify visible databases.MongoDB各版本对操作系统的兼容情况:http
2021-05-12 15:07:24
7488
1
原创 任意Base编码的实现NodeJS
本程序参考开源项目:https://github.com/cryptocoinjs/base-x本程序还没有完全写完BaseN:let chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';let len = chars.length;let charCodeMap = Buffer.alloc(256);for (let i = 0; i < len; i++) { charC
2021-05-08 11:20:32
321
原创 256进制的转换
这个有什么意义,编码用的,把一串二进制,用一个字符表编码,比如base64就是一种常见的编码方案,那么编码有什么意义,可以参考:https://randtsui.blog.youkuaiyun.com/article/details/116064124。本文探讨的问题是,把一串二进制,用任意多个字符组成的字符表编码,这个字符表为BaseN,base64,N就是64个字符,比特币的base58,N就是58个字符,base32,N就是32个字符可以写一个函数,传入一个任意的字符串作为字符表,然后就可以用该表对一串二
2021-05-03 00:29:49
6689
原创 命名的字符支持
文件名不适合用:/\|:;*?"<>-=$.#&()[]{}!`~文件名可以用:_+,@%nodejs 对象 key value 支持utf-8,base64肯定支持nodejs 变量命名字符有限url 虚拟路径path可以自定义使用安全字符cookie有些字符不能使用,但是base64字符传输是安全的,querystring会把+号变成空格encodeURIComponent 会让utf-8字符串长度增加很多倍随机buffer转...
2021-05-02 20:59:05
267
原创 计算机存储的最小单位是字节byte,不是位bit
51单片机是8位的寄存器,汇编指令一次最小处理8位,也就是一个字节,不管是内存还是外存。内存、磁盘容量都是以多少字节为单位,没听说过多少个位的磁盘。磁盘的读写以字节为单位,磁盘驱动不会给你存入几个位。磁盘分区以字节为单位,不可能按多少位给你分。文件大小以字节为单位,操作系统不可能显示一个文件占多少位。ASCII码表,每个字符都是一个字节,没有低于8位的字符。所以计算机存储的最小单位是字节byte,1byte=8bit,单位是什么,单位就是1后面的byte。如果说计算机存储的...
2021-05-02 00:28:41
8446
原创 【systemctl】让程序以守护进程的方式在后台运行
首先需要创建一个systemdunit 配置文件,比如:verdaccio.service,一般放在 /lib/systemd/system/ 下添加配置如下:[Unit]Description=Verdaccio lightweight npm proxy registry[Service]Type=simpleRestart=on-failureUser=verdaccioExecStart=/usr/bin/verdaccio --config /etc/verdaccio/.
2021-05-01 17:22:56
3342
原创 【npm】基础
1、一个项目如果依赖某些npm package,那么该项目本身就是一个npm package,一个npm package必须有package.json README.md LISCENSE.md index.js文件,不然获取依赖时会提示警告。2、当获取完依赖包时,会产生package-lock.json,该文件记录依赖关系,需要保留和提交。3、npm 源如果指向私有 registry ,那么首先需要登录 npm login...
2021-05-01 15:37:08
941
原创 Let‘s Encrypt 与 360 系列浏览器的矛盾
如果我要为ssl证书付费,我宁愿把这部分费用捐赠给Let's Encrypt这样的组织,然后使用它的免费证书。360浏览器不把它添加进信任列表,有它自己的原因,也是它的自由,哪怕它给你、给互联网带来阻碍你也无权干涉。剩下的问题就是你是要选择继续支持Let's Encrypt,还是付费选择其他的,鱼和熊掌往往不可兼得。我会继续支持Let's Encrypt,并且我也会告诉我的用户它的可靠性,还有360浏览器对它的特殊支持情况。完全也可以在网上宣传这些,普及人们对Let's Encryp
2021-05-01 14:52:46
585
原创 【PuTTY】Configuration
1、设置 ip port2、设置120列,40行3、设置光标为Vertical line+闪烁4、设置字体为新宋体、12px、GB23125、设置发送null的时间间隔60秒,不然可能因为路由的问题自动中断连接6、设置自动登录的用户名,root,这样打开的时候直接输入密码即可7、设置一个session名称,save导出和导入配置文件,以管理员身份运行cmd导出:regedit /e "%USERPROFILE%\Desktop\putty.reg" HKEY_CURRE.
2021-04-30 15:49:50
1560
1
原创 【npm】在Ubuntu1804部署Verdaccio
1、创建verdaccio系统用户:$ sudo adduser --system --gecos 'Verdaccio NPM mirror' --group --home /var/lib/verdaccio verdaccio2、切换到该用户,并且切入该用户的家目录:$ sudo su -s /bin/bash verdaccio$ cd3、运行命令启动服务,生成存储目录和配置文件目录$ verdaccio4、修改配置文件,让它可以被外部访问:# yo...
2021-04-29 10:56:46
539
原创 【npm】npm命令
root@basic-services:~# npm -lUsage: npm <command>where <command> is one of: access npm access public [<package>] npm access restricted [<package>] npm access grant <read-.
2021-04-28 22:58:20
1747
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人