每周分享第 1 期

向阮一峰学习,把自己在一周里看到的有趣的事情分享一下。不过形式就比较随意了。 最近写 MongoDB + NodeJS 学到的新操作:$addToSet $nin $ne Mongoose 的 setDefaultsOnInsert Promise 真香,真好用 几天前惠老师还在说 “IE, The best Chrome Downloader Downloader, ever” 今天 EdgeHTML 就宣告死亡了 WPF, Windows Forms 和 WinUI 开源了,mono 这是要凉? 链接 有人逆向了 FPGA 的 bitstream 格式,希望 FPGA 有朝一日可以进入 开源时代? 链接 造机的 baseline 就决定是 它 了 根据 AST 炼丹判相似度还行,好奇它跨语言的预测水准 链接 可视化 h264 nalu 的软件 H264Naked (做的好糙啊,想交 pr) ffprobe -show_packets 和 ffprobe -show_frame 真好用 发现一个解决 ArchLinux 滚内核后无法 modprobe 的方案 010 Editor 和 Hex Fiend 是二进制分析的神器啊… Kaitai 还有待加油 CSS-in-JS for ClojureScript 真香 有空可以试试用 ClojureScript 写前端 Safari Technology Preview 71 加入了 Web Authentication 这是要支持 U2F 的节奏? Grafana+InfluxDB+Telegraf 真科学,随手写了一些简单的 Telegraf 的 input plugin 给 010 Editor 写了俩 .

Read More

编写 010 Editor 的 FLV Template

最近在做 FLV 和 H264 方面的研究,研究了很多标准和文档,然后用 010 Editor 对着文件进行分析。这个软件真的很好用,对研究二进制结构用处特别大。不过它自带的 FLV.bt 功能不是很好,我对它加上了 H264(AVC) 的部分支持,放在了 myFLV.bt 里。我也写了 H264 的解析,不过效率不高,大文件要卡好一会。 除此之外,很多格式,010 editor 都有支持,特别好用,它的解析器语法也很好写。

Read More

配置 Grafana+InfluxDB+Telegraf 并添加 MIIO 数据来源

之前一直想配一个监控系统,现在有机会了,就简单配了一下。发现真的特别简单,用 Homebrew 安装这三个软件并且都跑起来,然后稍微动一下配置,就可以得到可观的效果了。 然后想利用 miio 配置一下,把宿舍的空气净化器各项参数拿到,以 Telegraf 的插件形式定时上报,然后通过 Grafana 进行可视化。插件放在了 jiegec/tools 下,就是一个简单的 Python 脚本。配置方法如下: 编辑 /usr/local/etc/telegraf.d/miio.conf: [[inputs.exec]] commands = ["/usr/local/bin/python3 /Volumes/Data/tools/telegraf/miio.py MIID_HERE"] timeout = "5s" data_format = "influx" 默认了 miio 路径为 /usr/local/bin/miio 。

Read More

强制启用 Google Chrome 原生的 Dark Mode

Mojave 的 Dark Mode 真香,但是 Google Chrome 并不会随着系统的 Dark Mode 设置变化,所以 NightOwl 只能让部分软件按照时间变更 Dark/Light Mode 。一番搜索,发现其实 Google Chrome 其实已经支持了 Dark Mode,但只能设置,不能按照系统的状态自动切换,命令如下: $ open -a Google\ Chrome --args --force-dark-mode 然后就可以看到 Google Chrome 已经是 Dark Mode 了。但可惜并不能自动切换。

Read More

Mac 上安装 Arch Linux , ZFS 真香

最近在 Mac 上装了 Arch Linux ,按照 Mac - Arch Linux Wiki 一路一路走,创建单独的一个 EFI 分区给 Arch Linux 放 GRUB 和内核,一个 ext4 作为根分区。由于 Arch ISO 不支持 Broadcom 的无线网卡,于是先拿 Apple Ethernet Adapter 连到路由器上装机。然后把一些需要的驱动装上了,桌面用的 KDE Plasma ,Trackpad 用的 xf86-input-mtrack-git , HiDPI 设置为 2x Scale ,各种体验都还可以,就是 Wi-Fi 的 802.1X 没配置好,然后 kwalletd5 老是崩没找到原因。常见的应用除了微信基本都有,也终于可以体验 Steam Play ,利用 Proton 在 Linux 上跑一些只支持 Windows 的游戏,不过我已经很少玩游戏了。 然后我就想,怎么做 macOS 和 Linux 之间的文件共享。典型的操作可能是 exFAT ,但是作为数据盘的话,这还是不大适合。或者就直接用 ext4 ,配合 extFS For Mac by Paragon 使用,也可以,最后我选择了 ZFS 。

Read More

USB/IP 实践

之前一直想玩 USB/IP ,但是一直没有找俩 Linux 设备然后共享,今天终于尝试了一下,没有什么大问题。这次采用的设备是 Raspberri Pi 3 和 SaltedFish Pi 。一开始尝试从后者向前者共享,但总是出现这个错误: libusbip: error: udev_device_get_sysattr_value failed usbip: error: open vhci_driver 然后我反过来做就好了,比较神奇。 主要过程如下: pacman -S usbip 安装用户态软件 systemctl enable --now usbipd 启动 USB/IP 的端口监听 daemon usbip list -l 查看本地有哪些 USB 设备可以共享 usbip bind -b [BUS_ID] 把指定的 USB 设备共享出去,其中 BUS_ID 从上个命令中查看 usbip list -r [IP] 在另一个设备上查看这个设备共享的 USB 设备,可以看到许多信息 usbip attach -r [IP] -b [BUS_ID] 把对方共享的 USB 设备 attach 到本地 效果:把一个 U 盘成功映射到了本地:

Read More

超过 100 篇博文了!

今天看了下,发现算上这一篇,这个博客已经有 103 篇文章了,这个数量还是蛮多的,特此庆祝一下。我也顺带做了一下简单的数据处理,得到这么一张图: 目测数量与干活的频率相关性很高啊。

Read More

向咸鱼派写入 ArchlinuxARM

之前由于我的 macOS 上不知道为啥不能把我的 TF 卡设备放到我的虚拟机里,所以之前就没能刷 ArchLinuxARM 上去。今天我想到了一个方法,完成了这件时期: $ wget https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/os/ArchLinuxARM-armv7-latest.tar.gz $ dd if=/dev/zero of=archlinuxarm.img bs=1M count=1024 $ mkfs.ext4 archlinuxarm.img $ sudo mkdir -p /mnt/archlinuxarm $ sudo mount -o loop archlinuxarm.img /mnt/archlinuxarm $ sudo bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz -C /mnt/archlinuxarm $ sudo umount /mnt/archlinuxarm 这样就获得了一个 ext4 的 ArchlinuxARM 镜像。刚好解压出来不到 1G ,所以开了 1G 的镜像刚好放得下。然后把 archlinuxarm.img 拷回 macOS ,然后用 dd 写进去: $ sudo dd if=archlinuxarm.img of=/dev/rdisk4s2 bs=1048576 这时候可以确认,我们确实是得到了一个正确的 ext4fs : $ sudo /usr/local/opt/e2fsprogs/sbin/tune2fs -l /dev/disk4s2 不过,我们实际的分区大小可能不止 1G ,所以可以修改一下大小:

Read More

咸鱼派的启动配置

最近刚拿到了一个咸鱼派的测试板子,准备自己把 U-Boot 和 Linux 内核这一套东西跑通,都用主线的东西,尽量减少魔改的部分。首先是编译 u-boot ,我用的是现在的 master 分支的最新版 99431c1c : $ # Archlinux $ sudo pacman -Sy arm-none-eabi-gcc $ make LicheePi_Zero_defconfig $ make ARCH=arm CROSS_COMPILE=arm-none-eabi- -j24 这时候会得到一个 u-boot-sunxi-with-spl.bin 的文件。我们只要把它写到 SD 卡的 8192 偏移处,就可以把 U-Boot 跑起来了: $ diskutil unmountDisk /dev/disk4 $ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/disk4 bs=1024 seek=8 接着我们做一下分区。我采用的是 MBR 分区,这样保证不会和 U-Boot 冲突。使用 fdisk进行分区,我从 1M 处开始分了一个 10M 的 FAT-32 分区作为启动分区,然后之后都是 EXT4 的系统盘分区。接着就是编译内核。 我用的是八月份时候的 4.18.2 内核,虽然不是很新但也足够新了。一番调整内核参数后,得到了一个可用的内核,然后把 zImage 和 sun8i-v3s-licheepi-zero.dtb 都复制到刚才创建的 FAT-32 启动分区,然后进入 U-Boot 进行启动:

Read More

使用 HomeBridge 把小米空气净化器加入到 HomeKit 中

受 @NSBlink 安利,自己部署了一下 HomeBridge ,然后在 iOS 的家庭上就可以看到它。然后,通过 homebrdige-mi-airpurifier 和 miio 按照教程进行配置。然后就可以在家庭里看到小米空气净化器,包括空气质量,湿度,睡眠模式,温度,打开状态。然后我就可以做一些配置,如离开宿舍的时候自动关闭空气净化器,回来的时候自动打开。不过由于自己没有一个一直放在宿舍的 iPad、Apple TV 或者 HomePod ,失去了中枢,这个功能可能会打折扣。 后续想买一些智能的灯啊,然后就可以用 Siri 进行打开 / 关闭了。 此外,我又试了下,可以用 homebridge-camera-ffmpeg 把摄像头配置到 HomeKit 中。这样,就可以远程查看视频流了。

Read More