使用 Jectpack Navigation 中 SafeArg 的方式向 Activity 与 Fragment 传递数据

在自己的项目中用 Jetpack 的 Navigation 的时候发现 SafeArgs 在 destination 之间传递参数非常符合我所期望的 Kotlin 该有的方式,所以我想把 SafeArgs 中传递参数的方式应用到 Activity 与 Fragment 中,并不想像现在使用 lateinit var 然后在 onCreate 等函数中去初始化这样用 Java 的方式去写 Kotlin,于是我开始尝试仿写一个 activityArgs<T>()fragmentArgs<T>() 来在非 Navigation 的页面传递参数,所以先着手看 Jetpack Navigation SafeArgs 是如何使用代理传递参数的

阅读更多

Ubuntu 或 Debian 在 Nginx 下使用 fail2ban 阻止恶意扫描

/etc/fail2ban/filter.d 下新建 nginx-cc.conf

1
touch /etc/fail2ban/filter.d/nginx-cc.conf

输入:

nginx-cc.conf
1
2
3
[Definition]
failregex = ^<HOST> \- \S+ \[\] \".*\" (400|404|444) .+$
ignoreregex =.*(jpg|png)

然后在 /etc/fail2ban/jail.d/defaults-debian.conf 中加入如下几行:

defaults-debian.conf
1
2
3
4
5
6
7
[nginx-botsearch]
enabled = true
[nginx-cc]
enabled = true
filter = nginx-cc
logpath = %(nginx_access_log)s
port = http,https

unban:

1
fail2ban-client set jailname unbanip ipaddress

规则校验:

1
fail2ban-regex /var/log/nginx/*.access.log /etc/fail2ban/filter.d/nginx-cc.conf

Ubuntu 或 Debian 开启 BBR

需要 Linux 内核 4.9 及以上版本

1.修改系统变量

1
2
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

2.保存生效

1
sysctl -p

3.查看是否已经开启

1
sysctl net.ipv4.tcp_available_congestion_control

如输出如下,含有 bbr 即可,无需在意顺序,则证明已开启

1
net.ipv4.tcp_available_congestion_control = reno cubic bbr

4.查看BBR是否启动

1
lsmod | grep bbr

显示以下即启动成功:

1
tcp_bbr                20480  20

Ubuntu 下使用 Nginx + MySQL 搭建 Wordpress

以 Ubuntu 20.04 为例,且假设你已获取到 root 权限或者使用的是 root 账号,Wordpress 与 MySQL 安装在同一台服务器上

1. Wordpress

如果你已经使用其他工具下载好了 Wordpress 则可以使用 sftp 工具或者任意工具上传到服务器 /var/www 文件夹下,跳过1.1

1.1 下载

1
curl https://cn.wordpress.org/latest-zh_CN.tar.gz -o /var/www/wordpress.tar.gz

该命令是将 中文版 的 Wordpress 下载到路径 /var/www 中,名字为 wordpress.tar.gz, 如果提示:

1
bash: curl: command not found.

则运行如下命令后再运行第一条命令下载 Wordpress:

1
apt install curl
阅读更多

Java 中赋值表达式的返回值

起因

写代码的时候脑子里想着

如果 flag = true 则 do something …

于是手上跟着敲出

1
2
3
if (flag = true) {
// do something ...
}

编译器没有报错,当时思想走神也丝毫没有发觉这是一段弱智代码,调试的时候发现 if 里的语句每次都执行了,觉得不太对劲,然而仍然没有发现这段弱智代码有问题,本着格物致知的精神格了几分钟才发现这段代码应该是:

1
2
3
if (flag) {
// do something ...
}

瞬间觉得自己宛如智障

阅读更多

Proxmox VE 在 Ubuntu 中 N卡直通

由于 Microserver Gen10 Plus 中 CPU 为 E-2224 这款没有核显,而我有 HTPC 的需求,所以我在唯一的一个 PCI-E 接口上了一块 GT-1030,然后由于向 ESXI 中虚拟机传输文件的速度实在是慢得不行,我千兆的内网,传输文件时只能跑出 100-200mbps,不能忍,所以我改安装 Proxmox VE 了。

阅读更多

HPE Proliant Microserver Gen10 Plus

Update:再通过折腾发现,的确是因为我的显示器 DP 版本过高所以一开始视频没有输出。

Update:后续折腾发现,DP 口没有输出有可能是因为我的显示器 DP 口为 1.2 而 Gen10 Plus 自带的 DP 口为 1.0 导致的,而且,在通过 VGA-HDMI 的转换头之后再通过 HDMI 线连接到我显示器的 HDMI 口依旧没有输出,但是我同时将 DP 口 也插上线连接到我显示器之后 VGA 口就有输出了(Round 3 那会儿能点亮是我阴差阳错把 DP 口也一起插上了),这真是人间迷惑行为。但是一切都有可能是我显示器的原因,因为我没有多的屏幕,所以不好确定到底是什么原因。

配置:

  • 型号:P16006-001
  • CPU:Xeon E-2224
  • 内存:16GB ECC
  • 不带硬盘
  • 不带 Smart Array 100i Raid 卡
  • 不带 iLO Enablement Kit
  • 只有一个 PCI-E 接口!只有一个 PCI-E 接口!只有一个 PCI-E 接口!
阅读更多