net::ERR_INCOMPLETE_CHUNKED_ENCODING 500 错误,至少有一种可能是服务器磁盘满了。

net::ERR_INCOMPLETE_CHUNKED_ENCODING 500 错误,至少有一种可能是服务器磁盘满了。
layui 有第三方比较好的三级联动,多级联动插件。但有时候,因为特殊要求,满足不了需要。这个时候就需要修改源码了。
先看插件文档以及实例。
https://fly.layui.com/extend/selectN,selectM/#doc
https://moretop.gitee.io/layui-select-ext/
1,需要回调。虽然不需要回调 form 提交一样可以拿到数据。可有时候前端就是需要有回调,需要看到具体的变化。这个时候就得改源码了。
2,删除对象时候,需要 confirm 确定后,才能删除。
selectN 三级联动全只读。在初始化的时候,删除 select dom 即可。当然,也需要从 config 中添加配置,读配置。
//只读删除 select 组件,删除图标
if (c.allRead) {
$E.find('.layui-anim').remove();
$E.find('.layui-edge').remove();
$E.find('input').attr("readonly", true);
}
selectM 回调。在 config 中配置回调函数,并在初始化的时候指定好回调函数。在数据变化的时候,判断下是否有回调函数。存在就回调过去。
if (c.change && typeof c.change === "function" && typeof c.change.nodeType !== "number") {
c.change(values);
}
selectM 删除确定。同样在 config 中配置变量,默认不需要确定。初始化的时候配置好即可。当需要删除对象的时候,先看是否存在需要确认的变量。不需要则直接删除。需要则先弹出 confirm 框,看操作。
$E.on('click','a i',function(e){
this.delete = function() {
var _this = $(this).prev('span');
var v = _this.attr('lay-value');
if(v){
var _dd = $(c.elem).find('dd[lay-value='+v+']');
_dd.removeClass('layui-this');
_dd.find('.layui-form-checkbox').removeClass('layui-form-checked');
}
o.setSelected();
_this.parent().remove();
e.stopPropagation();
};
if (o && o.config && o.config.confirm) {
layer.confirm('您确定要删除该选项?', {btn:['确定']}, (index) =>{
this.delete();
layer.close(index);
});
return;
}
this.delete();
});
虽然 Larave Auth 包含了验证邮箱以及密码的功能,但终归是固定样式的。想要更美观,更漂亮的验证功能,就得自定义。
自定义最直接的方法,就是重写发送逻辑。先贴出部分代码,然后读下边的文章,你肯定会做到的。
# App\Models\User;
//发送验证邮箱
// verification.verify 是你自定义的邮箱模板
public function sendEmailVerificationNotification()
{
\Illuminate\Auth\Notifications\VerifyEmail::toMailUsing(function ($notifiable) {
$url = \Illuminate\Support\Facades\URL::temporarySignedRoute(
'verification.verify', now()->addMinutes(60), ['id' => $notifiable->getKey()]);
$email = $this->email;
$nickname = $this->nickname;
$body = sprintf('<a href="%s" target="_blank">点击激活邮箱</a>', $url);
$mail = (new \Illuminate\Notifications\Messages\MailMessage)->view('emails.activateMail', ['nickname' => $nickname, 'url' => $url],
function (Message $message) use ($nickname, $email, $body) {
$message->subject('请激活你的邮箱');
$message->getSwiftMessage()->setBody($body);
$message->to($email, $nickname);
}
);
return $mail;
});
$this->notify(new \Illuminate\Auth\Notifications\VerifyEmail);
}
当然,你可以使用 trait 干净处理,还可以使用事件另外解耦,还可以添加队列进行异步处理。
做主从复制最重要的一点就是双方的server-id不能相同;然而在主服务器上只需要三步:
1. 是改server-id
2. 启用二进制日志
3. 创建有复制权限的帐号
vim /etc/my.conf
# 修改下边两项, 保存退出
log-bin=/alidata/service/mariadb/binlogs/master-bin
server-id = 1
:wq
# 创建目录
mkdir /alidata/service/mariadb/binlogs
# 设置用户组(先查看用户组)
grep mysql /etc/group
groups mysql
chown -R mysql.mysql /alidata/service/mariadb/binlogs
重启 mysql ,设置权限
# 重启 mysql
service mysqld restart
# 进入 mysql,设置权限,生效
mysql -u root -p
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'wangfang'@'xxx.xxx.xxx.105' IDENTIFIED BY '!Wfxxxxxxxxxx';
FLUSH PRIVILEGES;
再来配置从服务器配置。
编辑配置文件
vim /etc/my.conf
# 打开二进制文件 (从服务器可以不用打开)
# 二进制日志目录
log-bin=/tencent/service/mariadb/binlogs/master-bin
# 更改一个和主服务器不通的 id
server-id = 2
# 中继日志
relay-log =/tencent/service/mariadb/relaylogs/relay-bin
:wq 保存退出
创建文件夹,并设置用户组
mkdir /tencent/service/mariadb/binlogs/
mkdir /tencent/service/mariadb/relaylogs/
chown -R mysql.mysql /tencent/service/mariadb/binlogs/
chown -R mysql.mysql /tencent/service/mariadb/relaylogs/
# 重启
service mysqld restart
登入 mysql 查看中继日志是否启动中
mysql -u xxxx -p
# 查看中继日志是否启动
SHOW GLOBAL VARIABLES LIKE '%relay%';
# 出现 relay_log 项对应的文件就表示启动了。
配置从服务器连接主服务器相关
# 先在主服务器上查询
show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 93207 | | |
+-------------------+----------+--------------+------------------+
这儿只需要看 File 和 Position,其它的两个分别是白名单和黑名单,意思为同步哪几个数据库和不同步哪几个数据库,可自行根据需求进行设置。记录了前两个字段后,在从库上执行以下语句。
# 从服务器上执行
CHANGE MASTER TO MASTER_HOST='xxxxxxx',MASTER_USER='xxxxxxx',MASTER_PASSWORD='xxxxxxx',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=93207;
但是此时的从服务器还没有工作起来,要使从服务器工作起来还要手动启动复制线程,我们上面的步骤写得很明白。
# 从数据库
START SLAVE;
从服务器还得自己建立数据库吗。
主服务器重启了,从服务器从新配置
主服务器操作
# 查看 File Position
show master status;
stop slave
# 再执行 CHANGE
# 再 start
start slave
https://www.cnblogs.com/xiaocen/p/3702945.html
https://www.cnblogs.com/gspsuccess/p/9182545.html?utm_source=debugrun&utm_medium=referral
有时候,会去查看系统的磁盘空间。这个时候,一些命令就用的着了。
# df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
# `-h` 选项为根据大小适当显示
df -h
# 查看当前文件夹的总大小 `h` 以适当大小显示(比如 M,G 单位)
du -sh
# 查看对应深度的文件大小
du -h --max-depth=1
# 查看某个文件大小
du -h xxx.txt
排序功能就不说了,太多记不住。实用即可。
An unexpected error occurred: “EPROTO: protocol error, symlink ‘../../../parser/bin/babel-parser.js’
yarn install 时报错
An unexpected error occurred: "EPROTO: protocol error, symlink '../../../parser/bin/babel-parser.js'
# 先删除 node_modules
rm -rf node_modules/
yarn install --save --no-bin-links
sh: 1: cross-env: not found
请删除 package.json
中的 cross-env