docker mongo dump restore
Dump
docker run --name newMongo -p 27018:27017 --rm mongo
另开一个terminal
docker exec -it newMongo /bin/bash
mongodump -h 127.0.0.1 --port 27017 -d ${your db} -o /test/mongodBack
exit # 退出docker mongo容器
docker cp newMongo:/test/mongodBack/ /mongodBack/ # 将docker 内文件拷到/mongodBack/
Restore
待撸待撸
参考:https://www.cnblogs.com/qiyc/p/10150433.html
OAuth2-server 撸saas 微应用化
1 | [Client frontend] GET /auth/honglian to [Client backend] |
beyond over!
参考:
www-form-urlencoded -d 里面的 空格
被替换成+
的问题
场景是用户发送一个www-form-urlencoded
内容是一个机器码,比如MH20ew2r9RuTyGcX+rrmxF7X40U=
但是发现传到服务器时,却变成了MH20ew2r9RuTyGcX rrmxF7X40U=
. 中间是空格代替。
原因是空格在urlencoded 中就是”+”。于是参数从软件客户端发到web 时都是正确的。但是到了body-parser 时,body-parser 看到一个 +,想都不想,直接就转成空格了。、
临时处理办法:将该文本转回去: string.replace(/\s/g, ‘+’)
最终解决方案:软件客户端使用urlencoded 刷新string
Chrome Extension 使用Vue 遇到的一些问题
Vue 使用webpack。但是background.js 属于后台,使用nodejs,于是webpack 找require 函数时可能会找不到比如fs 的库:Module not found.
做的第一种尝试: 在webpack 打包target 默认为的web
替换为node
.
1 | module.exports = { |
但是这样的也导致输出的是node 环境。界面上的css 样式全部都不识别了。
于是替换一种思路。
第二种尝试: 前段还是按照前段,后端之所以称之为后端,那么便是另外一个项目了。webpack 打包时,打一个虚拟的,没有任务的background 包。于是yarn watch
阶段background 包打进去之后,手动替换里面background.js。
终于,里面运行的非常正常了。
这种方法不同点是,之前的background 配置是page,现在应为scripts
1 | background: { |
参考:
- https://cloud.tencent.com/developer/section/1477428
- https://cloud.tencent.com/developer/section/1477500
Typescript + mocha + chai 单元测试
1 | yarn add mocha @types/mocha chai @types/chai chai-http @types/chai-http -D |
diary.spec.ts:
1 | import { app } from '../src/app' |
fs.read/readFile 在读取中文时乱码
需求:文件使用Buffer 读出, 然后一个一个解析里面的中英文
环境:文件很大, 所以没办法直接读出、直接写出
注意:这个需求不是编码的问题。比如GBK。GBK使用iconv_lite 解决
英文占一个字节,中文三个字节,所以一个个读出的buffer, 中文时便出现该字找不到,所以nodejs 使用
nodejs 那些常见的读写库其实都导入了string_decoder
的库
使用是:
1 | import { StringDecoder } from 'string_decoder' |
decoder 原理是解析出来的,如果是中文三字节找不到,那么就储存起来,等到合并成一个。
附上 oneByOne 读写每个文本
1 | import { StringDecoder } from "string_decoder" |
Run Mocha programmatically
在代码中执行mocha。在实际环境中进行单元测试。
express-limiter
遇到情况:有一个注册、即立即登录,快速注册快速登录的接口,这里express-limiter 可以多次请求
去redis 上看了下,key 每次都不同
去express-limiter 里看了下, 他的redis key 来自line17: var key = opts.keyFormatter(opts.lookup(req))
Nginx 默认上传文件大小:1M
server {
listen 80;
server_name xxx;
client_max_body_size 100M;
}
vue-electron 使用electron-builder 不能打包win
issue:https://github.com/SimulatedGREG/electron-vue/issues/487
yarn build:win : “node .electron-vue/build.js && electron-builder -w”
TS 获取自身Class
1 | class MyClass {} |
instance.constructor
就是得到的class 转义后的Class 对象。
Nginx 设置同源策略
这里还是使用上面文章说明:
1 | add_header Access-Control-Allow-Origin *; |
然后使用自己的域名。
以上完成了本次要搭建直播、理解推流、拉流的动作过程。
人生苦短,我们用go
有句话挺有意思的:
1 | nodejs 可玩性还是蛮高的,可以C艹binding。 |