在本机从 tmux 中 SSH 连接到服务器后,再在服务器上的 tmux 操作(tmux 套娃),
如果此时想在服务端的 tmux 中脱离或者查看窗口之类的操作,由于 ctrl+b
会被本地的 tmux 捕获所以相关操作只会发生在本地,
解决办法:按两次 ctr+b
作为前缀按键。
在本机从 tmux 中 SSH 连接到服务器后,再在服务器上的 tmux 操作(tmux 套娃),
如果此时想在服务端的 tmux 中脱离或者查看窗口之类的操作,由于 ctrl+b
会被本地的 tmux 捕获所以相关操作只会发生在本地,
解决办法:按两次 ctr+b
作为前缀按键。
成都疫情期间(2022.09.01 - 15?) 关在家里折腾了一段时间的 NAS。
对了,
我使用了新的域名: https://wang.mx
之前把这个博客程序的源码 在 github 上开源了 。
今天下班路上居然收到了朋友发来的 PR :)
我本以为会是使用过程中发现的 bug 或者功能改善,
点开一看居然是一个面向新用户的安装脚本功能(初始表结构、账户信息等)。
有心了!我之前都没考虑过说会有别人来使用 -_-.
tmux 修改配置文件 ~/.tmux.conf
更改快捷键前缀绑定后,并未生效。
需要重启 tmux 服务进程让它重新解析配置。 可使用以下三种方法之一:
tmux kill-server
tmux source-file ~/.tmux.conf
或者在 tmux
中:C-b :source-file ~/.tmux.conf
使用 adb 给安卓设备安装应用
brew install --cask android-platform-tools
adb usb
adb devices -l
设备标识 状态[offline||device|no device] 说明
adb install -s 设备标识 -r ~/Downloads/carplay-20211105.apk
adb shell pm list packages
折腾了一下,开启 bbr 后对网速提升非常明显。
首先 uname -r
查看内核是否在 4.9 以上。
执行 lsmod | grep bbr
,如果结果中没有 tcp_bbr
则执行:
modprobe tcp_bbr
echo "tcp_bbr" | tee --append /etc/modules-load.d/modules.conf
echo "net.core.default_qdisc=fq" | tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | tee --append /etc/sysctl.conf
使用 sysctl -p
从配置文件加载内核参数使其立即生效。
验证设置是否生效:
执行:
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
如果结果都有 bbr ,说明开启成功。执行 lsmod | grep bbr
,看到有 tcp_bbr
模块即说明 BBR 已启动。
samber/lo 基于 Go1.18+ 泛型的各种数据类型操作的库。
其包含的方法主要可以分为以下几类:
1、slice 辅助方法
2、map 辅助方法
3、tuples 辅助方法
4、多个集合之间计算辅助方法
5、搜索查询辅助方法
6、其他函数式编程辅助方法等
前端使用 web3.js
获取用户地址并进行签名。
后端使用 go-ethereum
库校验签名是否来自指定地址,大致校验流程:
玩了几天的 ESP32 下来,那些羁绊我前行的因素,一半是各协议、引脚问题,另一半就是关于 C 语言的一些坑了(是的,我确实用得很不熟练 🤦🏾)。
然后尝试了下用 TinyGo 来写,瞬间畅快了许多。不过现在的问题是 TinyGo 对 ESP32 这块芯片(包括基于该芯片的所有板子)的支持并不好,许多功能(比如:I2C、ADC、PWM、WiFi、蓝牙)目前都还不支持。看了下 TinyGO 对各板子的支持情况,貌似对 Adafruit 家的板子、树梅派支持度是最高的。(附: TinyGo 对各微控制器的支持情况 - https://tinygo.org/docs/reference/microcontrollers/ )
所以,我是该入手一块树莓派 Pico 了吗?
—— 然而这货的配置真的比 ESP32 低太多啊(🤦🏾),而且 ESP32 还有WIFI、蓝牙……
啊,我被这开发板的引脚折腾哭了……
以前在项目中有过几次需要涉及物联网的东东,但当时对微控制器开发这块完全不了解,以至于做方案时信心不足。
最新终于闲下来了,想试试这方面的开发,于是买了两块乐鑫 ESP32-C3 开发板玩
hdiutil
转换格式: hdiutil convert -format UDRW -o manjaro.iso manjaro-xfce-21.2.2-220123-linux515.iso
dmg
文件重命名: mv manjaro.iso.dmg manjaro.iso
diskutil list
找到U盘 (比如我这里得到的 /dev/disk4
)diskutil unmountDisk /dev/disk4
取消U盘的挂载sudo dd if=./manjaro.iso of=/dev/disk4 bs=2m
命令将镜像文件复制到目标U盘最近在 git 提交某些关键代码时就在想着要是别人冒充我的名义提交了代码怎么办,于是就折腾起 git commit 的签名。
go-shadowsocks2
A fresh implementation of Shadowsocks in Go
一个典型的使用缓存的案例:
// GetConfig 获取 key 指定的配置项
func GetConfig(key string) (Config, bool) {
cacheKey := "cfg:" + key
// 如果缓存中查到则直接返回缓存数据
if v, has := Cache().Get(cacheKey); has {
if cfg, ok := v.(Config); ok {
return cfg, true
}
}
// 不在缓存中则从数据库中查找
cfg := Config{}
if err := DB().Where("`key`=?", key).First(&cfg).Error; err != nil {
return cfg, false
}
// 将数据库中查到的值写入缓存, 300 秒过期
Cache().Store(cacheKey, cfg, 300)
return cfg, true
}
但这样存在一个问题: 如果 300 秒缓存过期时,有大量并发产生,将会导致这些并发在缓存中都找不到数据去查数据库的情况,从而发生所谓的缓存击穿。
MacOS 查看 CPU 具体型号: sysctl -n machdep.cpu.brand_string
qmcdump QQ音乐解码器。
ncmdump 网易云音乐解码器。
unlock-music Unlock encrypted music file in browser. 在浏览器中解锁加密的音乐文件。 这货好像能解码国内主流音乐媒体格式。
整理我常用的 Setapp
应用。
数据库中使用了枚举 enum
来存储订单状态 orders.state
,然后在 model/order.go
中一堆状态常量:
type Order struct {
// ...
State string
}
const (
OrderStatePending = "pending"
OrderStateLocked = "locked"
OrderStatePaid = "paid"
OrderStateRevoked = "revoked"
OrderStateDone = "done"
)
既然说到 Go
的枚举,肯定有人要说 iota
了,那么,,用 iota
来实现该功能试试: