Recent Posts
-
May 06, 2023
Vim的ale插件给c语言加上clang的静态检查
https://github.com/dense-analysis/ale这儿插件比较简单,widnows上安装 llvm后,自动给C语言加上 lint 语法检查了,golang的也有检查的,这样可以比较一些低级语法错误了。但LLVM默认的缺少c语言头文件的,按照官方文档 https://clangd.llvm.org/guides/system-headers 是要自己安装c语言的头文件的。 但我不按照VC,用到了linux环境,自己根据“clang.exe -v -c -xc++ nu...
-
May 02, 2023
机械键盘按键开关原理和手工修复机械键盘按键轴体不灵的问题
去年京东上买的”雷柏V500Pro“,没怎么用过,前段时间广州回南天之后好几个按键都失灵了,按了没反应或者按键重复的。根据之前鼠标按键3失灵的经验,感觉是按键开关里面的弹簧片接触点的地方发霉、氧化了,要用螺丝刀挂掉接触点的氧化层或者发层就可以了吧。但网上没有找到相关的信息,知乎里面有一个帖子有人说用针推几下弹片会解决问题,按照方法试了不是很管用,偶尔恢复正常了,马上又不行了,感觉那个弹片不是接触的地方,不然不会用针把上面黑色的霉层刮了不起作用。 今天有空把这个轴体拆出来看了一下,果然是位置...
-
April 23, 2023
glibc获取机器上所有接口所有ip的getifaddrs函数
https://www.man7.org/linux/man-pages/man3/getifaddrs.3.html官方的例子 #define _GNU_SOURCE /* To get defns of NI_MAXSERV and NI_MAXHOST */ #include <arpa/inet.h> #include <sys/socket.h> #include <netdb.h> ...
-
April 11, 2023
Golang编程tcp连接绑定指定网络出口bindtodevice
像ping -I 命令一样指定 ip 或者网卡名字,golang里面指定源ip是比较方便的,但指定源接口作为出口就不太方便了。需要 为Dialer的Control里面对原始fd进行原始的syscall系统调用。看了源码研究了好一会才好到换个方法 s.tcpDialer = &net.Dialer{ LocalAddr: tcpSource, Timeout: 30 * time.Second, ...
-
March 21, 2023
Golang的简单webdav服务器
windows 默认好不支持 http basicauth,只支持https,好像需要改一下注册表才行。但如果不用密码的话,直接“映射网络驱动器”是可以的。package mainimport ( "flag" "net/http" "golang.org/x/net/webdav")func main() { flagRootDir := flag.String("dir", "/", "webdav root dir") flagHttpAddr := flag.String("add...
-
March 01, 2023
Linux编程监控网卡网线的拔插和系统路由条目的变化
ip命令有一个 “ ip monitor link” 就是想要的功能吧,这个接口是内核的netlink 通知来实现的https://www.man7.org/linux/man-pages/man7/netlink.7.html 更具体来说是rtnetlink,可以监控路由和链路的通知机制, https://www.man7.org/linux/man-pages/man7/rtnetlink.7.html 哟一个libnetlink的封装,但感觉不是很好用 https://ww...
-
December 20, 2022
Nginx源码阅读server和location的匹配
ngx_http_parse_request_line解析记录hostrequest->host_startrequest->host_endngx_http_process_request_line阿里的connect代理 if (r->connect_host_start && r->connect_host_end) { r->connect_host 记录解析出来的coonect方法的host r->connect_po...
-
December 15, 2022
Nginx代码阅读http处理流程
配置文件command的处理函数ngx_http_core_server // server命令ngx_http_core_location // locaotion命令加载配置ngx_http_block ngx_http_init_phases module->postconfiguration ngx_http_variables_init_vars ngx_http_init_phase_handlersngx_http_subrequest ngx_htt...
-
October 25, 2022
制作grub启动光盘iso文件安装linux安装u盘
grub2需要额外安装的包dnf provides /usr/lib/grub/x86_64-efidnf install grub2-pc grub2-efi-x64 grub2-efi-x64-modules xorrisomkdir iso常规的MBR磁盘分区,要预留2MB空间给grub吧,比如# parted -a optimal -s /dev/sdc -- mklabel msdos \ mkpart primary ext4 4096s 400MB \ mkpar...
-
October 24, 2022
基于isolinux制作linux的iso启动光盘
参考 https://wiki.syslinux.org/wiki/index.php?title=ISOLINUXdnf install syslinux syslinux-nonlinuxdns install xorrisocp /boot/vmlinuz-4.18.0-372.26.1.el8_6.x86_64 CD_root/isolinux/vmlinuzcp initramfs.img CD_root/isolinux/initramfs.imgcp /usr/share...