兰林
兰林
### 情景 当使用 ssh 登录系统遇到如下警告 ```shell Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin ``` ### 原因 1. 出于安全原因,系统可能在启动期间禁止非 root...
### 场景 有时候期望只获取部分流数据,以此来断定文件类型或者处理其他逻辑,而不是直接把整个文件下载下来。 ### 方法 (node.js) ```js const getFromStream = async (stream, maxSize) => { return new Promise((resolve, reject) => { let size = 0; let bufs = []; stream.on('data',...
### 情景 docker 默认情况下会同时将端口映射于 IPv4 与 IPv6 两者上。 而且有的时候会出现只绑定到了 IPv6,导致服务无法正常访问的情况。 该问题的详细讨论参见这里 [Port redirecting binding to IPv6 but not IPv4 interfaces.](https://github.com/moby/moby/issues/2174)  现在通用的始终还是 IPv4, 因此最简单的做法就是关闭 IPv6. ### 解决方法 (CentOS / RHEL...
### 应用场景 密码规则要求必须同时包含数字,小写字母,大写字母,特殊字符(标点),且长度在n到m之间。 与之对应的 ASCII 编码范围为 33(`!`)-126(`~`), 对应的PCRE正则字符集范围为 `[!-~]` 或者`[\x21-\x7E]` ### 代码如下 ```php /^(?=.*[[:digit:]])(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]])[[:graph:]]{n,m}$/ ``` ### 正则分段说明 ```php /^$/ // 开始到结束 (?=.*[[:digit:]]) // 至少包含一个数字 (?=.*[[:lower:]]) // 至少包含一个小写字母 (?=.*[[:punct:]]) // 至少包含一个特殊字符(标点符号)...
### 场景 经常需要查看系统资源占用情况,这个时候通常都会使用 `top` 命令。 然而,如何根据进程名称,批量查看特定程序的占用情况,而不是手动一个一个 pid 的粘贴呢? ### 指令 **1. For Linux:** ```shell top -p `pgrep xxx | head -n 20 | paste -sd "," -` ``` **2. For...
### 场景 某些程序在启动时,会报出 (xxx 为你的程序名) ``` xxx.service Failed to connect stdout to the journal socket, ignoring: Permission denied ``` **说明:** `systemd` 启动该程序期间,默认将标准输出和标准错误之类的定向输出给 `journal`。 如果权限不足,就会报出上述的错误。这个只是启动时的信息,并不是程序自身的日志机制。 一般来说等启动完成之后,程序自己的日志机制才会生效。在此之前都是由 `systemd` 在处理。 ### 方法1 ```shell...
关于前端测试
### 背景 后端测试往往比较单一,每门语言往往都有其对应的测试工具。 而且很多都是官方直接提供的。移动端基本上也是如此。 这里所说的前端,专指 web 这一块。 最近几年诞生了一大批的各种测试工具,有单元测试类型的,也有端对端测试的。 一直以来也在寻求好的前端测试工具。尝试过很多家的东西,始终不是十分令人满意。 直到尝试过 Cypress 这个玩意,这真是个能令人眼前一亮的玩意。 ### 工具推荐 需要说明的是,由于本人一直对前端(web)的单元测试不感冒。 因为需要 mock 的东西实在太多,而且往往不能通用,导致写起来异常的吃力。 所以,已经放弃 unit 疗法了,转而拥抱 e2e 大法。 这里推荐两家的 e2e 工具,用过了你就知道 e2e 大法好了 **1. [Puppeteer](https://github.com/GoogleChrome/puppeteer)**...
对照表如下: | Directive | ulimit equivalent | Unit | |-----------|-------------------|------| | LimitCPU= | ulimit -t | Seconds | | LimitFSIZE= | ulimit -f | Bytes | | LimitDATA= | ulimit...
### 场景 某些程序没有自带日志分隔功能,天长日久,日志越来越臃肿。 这个时候可以用系统自带的 logrotate 来进行切割。 通常 logrotate 是各个 linux 发行版都会默认安装的,你只需要进行配置即可。 ### 使用 1. 进入其默认设置目录 ```shell cd /etc/logrotate.d ``` 2. 创建一个无后缀文件,用来存放你的分割配置 以MongoDB为例,创建一个名为 mongod 文件,并加入以下代码并保存。 ```shell /var/log/mongodb/*.log { create 0644 mongod...
### 场景 网站需要启用 HTTPS 访问,因为自签名的证书现在面临浏览器厂商和颁证机构的联合围剿。 可以说,除了开发状态下,实际线上完全没什么卵用。所以,你需要花钱买一个证书。 下面介绍下如何去搞这个东西。也是备忘下,因为反复搞了几次,结果每次都记不住一些参数。 ### 准备步骤 ```c $ openssl req -nodes -newkey rsa:4096 -sha512 -out request.csr -keyout private.key openssl // 这个不做解释 req // 这个是 openssl 中用来处理证书申请请求的 newkey...