分类 工作备忘 下的文章

其中一个relay节点,配置最低的一台。最近两个月不时掉线。掉线之后cnode进城自动重启后会清空 $CNODE/db/immutable/ 目录把整个区块链进行重新同步。
在同步过程耗费巨量时间之后可能在中途再度发生写入错误或者分叉,导致出错。周而复始又清空重新同步导致节点一直无法完成启动。而且持续大量写入SSD, 对硬件寿命和稳定性都造成严重的影响。

*先说结论,问题是否得到彻底解决未知,仍在观察中。具体操作直接跳到最后一段。

以下是这两个月来采取过的几个措施,收效一般。


- 阅读剩余部分 -

估计是SSD杂牌的问题,导致解压大 .gz 文件的时候偶尔会出现解压错误。这次更是奇葩地产生了一个乱码文件,然后解压过程被中断。

更烦的是这个乱码文件名,无法用平常的 rm 命令删除。

解决办法

在文件所在目录下,查询文件节点ID(inode)

ls -i

root@adaocalcore:/opt/db# ls -i
24773001 ''$'\364\220\001\t\230'  14417943  027.tar.gz  14417959  039.tar.gz
14417947  000_004.tar.gz          14417944  028.tar.gz  24775413  all.md5

第一个就是乱码文件,对应的文件ID是 24773001

然后用 find -inum {target inode} -delete 命令删除

find -inum 24773001 -delete

搞定

路由器退役了,想起还有些旧电影没导出来,试着用 WSL直接转存到win11硬盘上。备忘如下

1. 接上移动硬盘盒

2. 在PowerShell 中把usb 的 linux磁盘加载到 WSL的设备中

记得要以管理员身份运行powershell, 输入 GET-CimInstance -query "SELECT * from Win32_DiskDrive"

PS C:\WINDOWS\system32> GET-CimInstance -query "SELECT * from Win32_DiskDrive"

DeviceID           Caption                               Partitions Size          Model
--------           -------                               ---------- ----          -----
\\.\PHYSICALDRIVE1 WD Blue SN570 1TB SSD                 4          1000202273280 WD Blue SN570 1TB SSD
\\.\PHYSICALDRIVE0 CT2000P2SSD8                          2          2000396321280 CT2000P2SSD8
\\.\PHYSICALDRIVE2 ATA ST1000LM024 HN-M SCSI Disk Device 4          1000202273280 ATA ST1000LM024 HN-M SCSI Disk Device

此时应列出了设备列表,找到对应的usb磁盘,记住 DeviceID,例如本例是 \\.\PHYSICALDRIVE2

继续在powerShell中执行 wsl --mount <DEVICE> --bare

PS C:\WINDOWS\system32> wsl --mount \\.\PHYSICALDRIVE2 --bare

3. 在 WSL中mount

经过上述步骤,此时在wsl 中会多出一个新的磁盘

添加之前

root@DESKTOP-O5S1G1L:/mnt# lsblk
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0  256G  0 disk
sdb    8:16   0  256G  0 disk /

之后

root@DESKTOP-O5S1G1L:/dev# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   256G  0 disk
sdb      8:16   0   256G  0 disk /
sdc      8:32   0 931.5G  0 disk
├─sdc1   8:33   0   132M  0 part
├─sdc2   8:34   0   132M  0 part
├─sdc3   8:35   0   264M  0 part
└─sdc4   8:36   0   931G  0 part


root@DESKTOP-O5S1G1L:/dev# fdisk -l

...

Disk /dev/sdc: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST1000LM024 HN-M
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x5387da09

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sdc1          2048     272383     270336  132M 83 Linux
/dev/sdc2        272384     542719     270336  132M 83 Linux
/dev/sdc3        542720    1083391     540672  264M 83 Linux
/dev/sdc4       1083392 1953525167 1952441776  931G 83 Linux

简单加载

cd /mnt/
mkdir mihdd
mount /dev/sdc4 /mnt/mihdd
cd mihdd && ls -l

路由硬盘内的内容已经可以再 wsl中访问,按需进行整理(略)
win11对应的磁盘对应在 /mnt/c ~ f 各个盘符,直接使用 cp 命令即可把路由硬盘上的文件复制到win分区下。

卸载

补个后续的安全卸载硬盘步骤,就是上述步骤反过来,在没有读写任务时
在WSL中卸载磁盘(路径对应上文)

unmount /mnt/mihdd

然后在powershell中卸载硬件

wsl --unmount \\.\PHYSICALDRIVE2

最后在win的右下角usb设备管理中安全弹出 对应的设备。拔线~ 搞定。


参考文

https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-disk

要在一个微信页面上实现录音功能,要求不复杂,一个录音按钮按下开始录音,松开停止(并上传保存)。

以为jq本身对移动端的交互事件支持和优化不够 一开始被 jQuery MOBILE 插件给误导了

研究了半天的 .on("tap") 点按和 .on("taphold")长按,但是没有找到手指离开屏幕的事件,而且触发的顺序总是很奇怪

而且jq mobile 很坑的一个绑定的 css 样式,会令我原有的页面样式搞的支离破碎。

绕回原点发现根本没有那么麻烦,用jq自己的 touchstarttouchend 不需要额外的插件。

$("#btn_rec").on("touchstart mousedown",function(){
    rec_start();
});

$("#btn_rec").on("touchend mouseup",function(){
    rec_end();
});

顺带追加一个关于微信 jssdk 录音功能备忘:

文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#23

没有难度,照搬代码就能实现上文的业务功能。

执行顺序分别是

  • wx.startRecord() 开始录音(第一次执行会询问授权)
  • wx.stopRecord() 停止录音 或 wx.onVoiceRecordEnd() 超60秒自动停止,获得本地资源id
  • wx.uploadVoice() 上传本地资源,换领微信服务端临时素材资源id (暂存3天)
  • 从微信服务器下载素材文件到本地或自有服务器:官方文档

需要备忘的是:wx.onVoiceRecordEnd() 只有录制达到60秒的时候自动停止才会触发。它并不是主动停止录音 stopRecord 会回调的事件。

总结:

百度害人呐~~