每周分享第 3 期

因为 DDL ,咕了一小会。 被 Windows 保存为 Unicode 文件坑了 BOM 配上 UTF-16 太难受了 Github 最近添加了很多 Issue 方面的更新,如 Pin 和 Delete Grafana 真的很好看很好用 推荐大家自己配一套监控系统 Microsoft Remote Desktop Beta 新增了 AVC Codec 有意思 不知道啥时候上 HEVC 发现一个很好玩的用 Rust 写的网页游戏 https://sandspiel.club/# Python Pattern Matching https://github.com/santinic/pampy 大新闻:MIPS Open Source 了 https://www.eetimes.com/document.asp?doc_id=1334087 GRPC 调试的 GUI https://github.com/uw-labs/bloomrpc 对标 Postman 酷炫的屏幕保护 for Mac https://github.com/JohnCoates/Aerial WPF 开源了 不知道啥时候支持 *nix https://github.com/dotnet/wpf 分享欢乐 https://github.com/dotnet/wpf 分享欢乐x2 https://lore.kernel.org/patchwork/patch/628142/ 谷歌近日到处上线了 Material Design 2.0 感觉风格不大习惯 veonim/veonim 的 Tag 里有 #meme-driven-development 太好笑了 巨硬开源了自己的 UEFI 和 TianoCore EDK 竞争 https://blogs.

Read More

每周分享第 2 期

继续,继续。 用代码呈现硬件实现对性能的影响,值得一读 链接 发现了一个蛮少见的编码标准 AVS2 ,才发现是中国主导的 编码器 linux.org 的 DNS 被篡改了,认准 kernel.org 即可 一个处理器的电路的在线可视化 ARM1 visualized WASM 家庭现已加入 Nginx 链接 用 .bat 编写汇编语言 mnnip/BOOTSTRA Gitlab 挺香的,兹瓷 git-lfs ,还可以自己给自己的项目配一个 ci runner LaTeX 的 subfigure 之间如果有空行,就真的换了一行,所以同一行的 subfigure 不要换行 Rocket 4.0 出了,看起来不错,要是作者更新一下 CS140e 就好了 链接 装机必备,查询 Arch Wiki arch-wiki-man LaTeX 里 \newcommand 时,如果文件名有多个 ‘.’ ,要特殊处理 链接 RunAsDate for *nix wolfcw/libfaketime 用数据库做数据分析似乎是个不错的选择 Canvas 配合 globalCompositionOperation 能做到不少东西 才知道有 Time Machine over SMB 这种操作 链接 mDNS repeater 把两个子网的 mDNS 打通 kennylevinsen/mdns-repeater Office 2019 for Mac 的 December 2018 release 添加了 Dark Mode ,并且也支持了 Continuity Camera ,直接从手机拍照导入 Gitlab serverless 发布,期待 链接 用 NAS 作为 Time Machine 备份盘的方法 链接 研究了一下,Time Machine over SMB 在 macOS 里的表现形式是 apfs 里写了一个 sparse bundle ,bundle 里面是 HFS+ 。

Read More

配置 homebridge-mi-aqara 并添加为 telegraf 的数据源

最近有了设备,想把设备拿到的数据都导一份存到 influxdb 里,但是目前找到的只有 homebridge-mi-aqara 可以访问并拿到数据,然后它又提供了 mqtt 的数据获取方案,于是自己写了个脚本去读取这些数据。 首先当然是配置一下 homebridge-mi-aqara ,按照网上的教程来,这个不难。然后本地开一个 MQTT Broker (如 mosquitto ),配置为本地监听,然后我编写了脚本 telegraf-mi-aqara.py ,使用前需要 pip install paho-mqtt,并且按照实际路径修改一下内容 。验证能够跑起来后,写一个 telegraf 配置: [[inputs.exec]] commands = ["/usr/bin/python3 /path/to/telegraf-mi-aqara.py"] timeout = "5s" data_format = "influx" 现在就可以读取到各项信息,如温度,湿度,是否开门,开关用电情况等等。 2018-12-16 更新: 研究了一下绿米网关局域网通信协议,得到了第二个版本 telegraf-mi-aqara-v2.py,它与第一版的区别是,第一版是主动向网关读取信息,而这一版则是监听组播包,等待网关发消息。这个脚本负责把读取到的组播信息发送到 MQTT ,再让 telegraf 从 MQTT 里解析 JSON 消息,写入数据库。Telegraf 配置如下: [[inputs.mqtt_consumer]] servers = ["tcp://127.0.0.1:1883"] qos = 0 connection_timeout = "30s" topics = [ "/telegraf-mi-aqara" ] persistent_session = true client_id = "Telegraf" data_format = "json" json_string_fields = ["model", "sid", "status"] tag_keys = ["model", "sid", "short_id"] 由于设备不全,有些字段可能不完整。如果大家自己要用的话,可能需要自行修改一下。

Read More

Grafana 可视化实践:清华大学 2018 年度人物评选

最近这段时间,清华内部正在投票选出今年的年度人物,想到最近刚好在学习使用 Grafana+InfluxDB+Telegraf 全家桶,于是想着能不能写个爬虫把数据都拿下来,然后用 Grafana 画出来,就可以得到一个投票随时间变化的趋势。爬虫很简单,就是登录,获取页面信息,然后按照 InfluxDB 的输入格式进行输出即可。代码放在了 jiegec/student-tsinghua-vote18 下。 接着就是用 Grafana 进行可视化,大概得到了这样一个曲线: 为保护隐私,把名字隐去了。实际上的投票时间是从 12-3 号开始到 12-7号结束,但由于宿舍停电的原因所以采样的点在半夜的时候都没有,所以看起来有点奇怪,但还是能够反应总体的趋势的。比如可以看到前两名很早就一马当先,而后一直遥遥领先,下面的选手则排名变动很大,特别是截止前最后一段时间,大家都在拼命拉票,可见大家都是 DDL 选手啊。如果对上面这个图求个导,看看变化率的话: 这显现出了很有意思的一个趋势,就是每天十二点左右都有一个高峰期,然后在零点前大概熄灯附近的时间也是一个高峰期,另外就是截止前最后的抢票阶段,大家都在疯狂拉票,从中午拉到最后时刻。由于停电的原因,在零点附近的数据都比较的鬼畜,不过影响不大,趋势一目了然。 Grafana 真香!期望可以学到更多高端的查询语法和可视化的骚操作,现在有很多东西不知道该怎么可视化,比较苦恼,不知道大家有没有什么经验可以分享。

Read More

每周分享第 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