Elastic APM

在 es apm 强制 fleet 前就用了

UI

gocron-modify

vps 里自用定时任务,gocron fork 后改一下

go

  • macaron > gin
  • rakyll/stati > goembed

front

  • webpack > vite 5
  • vuex > pinia

check-update

版本控,列一些关注的更新

dev

  • go
  • mysql
  • redis
  • smartgit
  • jprofiler
  • arthas
  • git
  • perfino
  • idea
  • goland
  • clion
  • clink
  • rclone
  • xshell

software

  • emeditor
  • chrome
  • seafile
  • everything
  • obsidian
  • winrar
  • sumatrapdf
  • utoruns
  • cports

github

  • gohugoio/hugo
  • alibaba/arthas
  • adnanh/webhook
  • voidint/g
  • Microsoft/WSL
  • apache/rocketmq
  • chrisant996/clink
  • com/alibaba/fastjson
  • rclone/rclone
  • upx/upx
  • fatedier/frp
  • sharkdp/fd
  • minio/minio
  • alist-org/alist

maven

  • cn/hutool/hutool-all
  • com/alibaba/fastjson
  • org/springframework/cloud/spring-cloud-dependencies
  • org/springframework/boot/spring-boot-dependencies
  • net/logstash/logback/logstash-logback-encoder

个人消息推送-企业微信群机器人

  • 钉钉:多安装一个app

  • 邮件:不够简单快捷,邮件太多容易泛滥

  • telegram:需要手机长期挂代理

  • 企业微信自建应用:认证300块、微信开放平台注册过还会(该域名主体为第三方服务商,请使用企业主体域名),开放平台还没得注销(注销)

  • server酱,早期公众号的通道推送消息,微信发布下线公告,企业微信应用消息通道,免费用户一天额度只有5条,且只显示标题


    企业微信注销过一次后自建应用废了

    发了一段时间邮件,邮件爽

还是企业微信群聊机器人最方便

群聊机器人

1
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=uuid
1
2
3
4
5
6
{
    "msgtype": "text",
    "text": {
        "content": "xxx",
    }
}

https://github.com/ncarlier/webhookd

有 Post hook notifications

小定制一下,把 执行状态,耗时 等,也加到 payload里

微信里实时收到结果,舒服

《X86 汇编语言:从实模式到保护模式》

series:

《X86 汇编语言:从实模式到保护模式》

1
2
3
4
5
6
mov ax,0xb800
mov ds,ax
mov [0x00],a
mov [0x02],s
mov [0x04],m
jmp $
1
nasm -f bin a.asm -o a.bin
1
2
3
error: symbol `’a’' not defined
error: symbol `’s’' not defined
error: symbol `’m’' not defined

mov 指令没有指定操作数的大小,nasm 不知道怎么理解这三个 ASCII 码,可以是 8bit 的也可以是 16 或者 32bit

把显存的基地址移动到段寄存器里,然后字符 A 加上黑底白字下划线的特效移动到偏移 0x0 处,最后死循环

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
mov ax,0xb800
mov ds,ax
mov word ds:[0x0],0x41
mov word ds:[0x1],0x07

spin:
    jmp spin 
    
    times 510 - ( $ - $$ ) db 0
    dw 0xaa55 ;=== 确保以 0x55 0xaa 为结尾    

hdc-0.11.img

series:

https://github.com/dibingfa/flash-linux0.11-talk

moutn hdc-0.11.img 会

1
2
mount: /home/dd/hdc: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
       dmesg(1) may have more information after failed mount system call.

编译 wsl 内核,加入 minix 文件系统

1
vi Microsoft/config-wsl
1
2
3
4
5
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_MINIX_FS is not set
改成
CONFIG_MINIX_SUBPARTITION=y
CONFIG_MINIX_FS=y
1
make KCONFIG_CONFIG=Microsoft/config-wsl -j$(noproc)

arch/x86/boot/bzImage 拷出来

%userprofile%\.wslconfig

1
2
[wsl2]
kernel=D:\\tmp\\bzImage
1
2
3
4
5
6
7
8
# 查看第一个空闲 loop 设备 
losetup -f  
# 使用上一步得到的设备名,第一次创建 loop 设备
losetup /dev/loop0 hdc-0.11.img
# 查看信息 
fdisk -lu /dev/loop0 
kpartx -av /dev/loop0
mount /dev/mapper/loop0p1 /mnt

p1 代表img 文件的 /分区号,从 1 开始

制盘命令

series:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 空的 1.44M 的软盘镜像文件
dd if=/dev/zero of=bootsect.img bs=512 count=2880

# 格式化软盘镜像文件为 FAT12 文件系统
mkfs.msdos -F 12 bootsect.img

nasm bootsect.asm -o bootsec
nasm setup.asm -o SETUP

mkdir a
mount -t vfat -o loop bootsect.img a/
cp bootsect a/
sync
umount a/

# 拷贝引导加载程序到软盘镜像的第一个扇区
dd if=bootsect.img of=bootloader skip=1 seek=1 bs=512 count=2879