Joyber 发布的文章

镜像配置:

Go 版本要求
建议您使用 Go 1.13 及以上版本, 可以在这里下载最新的 Go 稳定版本。

配置 Goproxy 环境变量Bash (Linux or macOS)

export GOPROXY=https://goproxy.io,direct

PowerShell (Windows)

$env:GOPROXY = "https://goproxy.io,direct"

使配置长久生效 (推荐)
上面的配置步骤只会当次终端内生效,如何长久生效呢,这样就不用每次都去配置环境变量了。

Mac/Linux

# 设置你的 bash 环境变量
echo "export GOPROXY=https://goproxy.io,direct" >> ~/.profile && source ~/.profile

如果你的终端是 zsh,使用以下命令

echo "export GOPROXY=https://goproxy.io,direct" >> ~/.zshrc && source ~/.zshrc

Windows

  1. 右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量
  2. 在 “[你的用户名]的用户变量” 中点击 ”新建“ 按钮
  3. 在 “变量名” 输入框并新增 “GOPROXY”
  4. 在对应的 “变量值” 输入框中新增 “https://goproxy.io,direct”
  5. 最后点击 “确定” 按钮保存设置

参考官方网站:https://goproxy.io/zh/docs/getting-started.html

今天遇到一个神奇的现象

项目使用yii1.1版本,遇到莫名的异常结束,200状态,内容为空

报表页面,ajax请求数据,时而正常返回数据,时而异常

无任何报错信息,php-fpm也无报错,PHP 7.0版本,PHP报错级别已设置为E_ALL,各种方法都尝试了,找不到原因

本地同请求测试一切正常,生产环境异常

一天时间已经过去,无解

第2天,决定在代码中打断点试的,一步一步排查

最终确定原因:

在报表数据查询后处理过程中,使用了4层循环,加上数据查了4个月的日报表,数据量并不高

循环中,把PHP设置的内存用尽,导致异常结束

配置为128M,代码中没有修改内存大小

解决方法:在代码前使用 ini_set('memory_limit', '256M'); 设置内存解决;

难排查的原因在于,找不到任何报错信息。。。。。

对了,报错信息是用Yii::log()方法输出到文件中,tail -f 查看文件的内容来找,可能是这个原因,由于PHP内存已经用尽,后面代码执行不了,所以没有输出内容到文件?(还有个疑点,就是控制器都没执行?这不应该啊)

记录一下

你可以尝试在参数中加上container属性,比如

{
...
container: '#j-datetimepicker-wrap'
...
}

这个属性设置为你的控件放到哪个容器对象中里面。

这个容器(j-datetimepicker-wrap) 请加上 position: relative; 的样式,这是为了计算控件需要的偏移量,就是坐标位置。

源代码有这么一行

this.container = options.container || 'body';

如果你没有设置container这个属性,那么默认你的日历控件是在body里面

如果你绑定了弹出层div,那么日历控件就和弹出层是一体的了

nftables 相较于 iptables 的优点
更新速度更快
在 iptables 中添加一条规则,会随着规则数量增多而变得非常慢。这种状况对 nftables 而言就不存在了,因为 nftables 使用原子的快速操作来更新规则集合。

内核更新更少。
使用 iptables 时,每一个匹配或投递都需要内核模块的支持。因此,如果你忘记一些东西或者要添加新的功能时都需要重新编译内核。而在 nftables 中就不存在这种情况了, 因为在 nftables 中,大部分工作是在用户态完成的,内核只知道一些基本指令(过滤是用伪状态机实现的)。例如,icmpv6 支持是通过 nft 工具的一个简单的补丁实现的,而在 iptables 中这种类型的更改需要内核和 iptables 都升级才可以。

nftables 基础操作
nftables 和 iptables 一样,由表(table)、链(chain)和规则(rule)组成,其中表包含链,链包含规则,规则是真正的动作。

在 nftables 中,表是链的容器。所以开始使用 nftables 时你首先需要做的是添加至少一个表。然后,你可以向你的表里添加链,然后往链里添加规则。

nftables 的表管理
与 iptables 中的表不同,nftables 中没有内置表。表的数量和名称由用户决定。但是,每个表只有一个地址簇,并且只适用于该簇的数据包。nftables 表可以指定为以下五个簇中的一个:

nftables 簇    对应 iptables 的命令行工具
ip    iptables
ip6    ip6tables
inet    iptables 和 ip6tables
arp    arptables
bridge    ebtables

ip(即 IPv4)是默认簇,如果未指定簇,则使用该簇。如果要创建同时适用于 IPv4 和 IPv6 的规则,请使用 inet 簇 。inet 允许统一 ip 和 ip6 簇,以便更容易地定义规则。

注意: inet 不能用于 nat 类型的链,只能用于 filter 类型的链。

下面我们来看看 nftables 是如何进行表管理操作的,以下为 nftables 创建表的基本命令语法。

sudo nft list tables [<family>]
sudo nft list table [<family>] <name> [-n] [-a]
sudo nft (add | delete | flush) table [<family>] <name>

这里我们以创建一个 inet 簇的表为例,演示如何创建和管理一个新的表。

创建表

# 创建一个新的表
sudo nft add table inet mytable

列出表

# 列出所有表
sudo nft list tables

# 列出指定族的所有表
sudo nft list tables inet

# 列出 inet 簇中 mytable 表中的所有规则
sudo nft list table inet mytable

删除表

# 删除一个表
sudo nft delete table inet mytable

注意:只能删除不包含链的表。

清空表

# 清空一个表中的所有规则
sudo nft flush table inet mytable

一款开源的waf网关,感觉不错 janusec

Janusec应用网关,一种适用于各种场景(公有云、私有云、传统IDC等)的应用安全解决方案,提供WAF(Web应用防火墙)、CC防护、身份认证、安全运维、Web路由、负载均衡、自动化证书等功能,可用于构建安全的、可扩展的应用。

产品特点:
WAF (Web Application Firewall, Web应用防火墙,天然支持HTTPS且不需要Agent )
CC防护(多道防线)
统一的Web化管理
证书加密保护
负载均衡(可扩展的部署架构)
让防御更简单
SQL注入
跨站脚本
敏感数据泄露
CC攻击
阻断(Block)、验证码(Captcha)等多种策略
支持多个检查点的组合策略
让管理更简单
统一的Web化管理中心
架构可扩展
多网关节点支持
自动化策略同步
证书保护
私钥加密存储
只在内存使用

https://doc.janusec.com/cn/introduction/