文章

通过RSS订阅我的博客

  • 每周分享第 2 期

    继续,继续。 用代码呈现硬件实现对性能的影响,值得一读 链接 发现了一个蛮少见的编码标准 AVS2 ,才发现是中国主导的 编码器 linux.org 的 DNS 被篡改了,认准 kernel.org 即可 一个处理器的电路的在线可视化 ARM1 visualized WASM 家庭现已加入 Nginx 链接 用 .bat 编写汇编语言 mnnip/BOOTSTRA Gitlab 挺香的,兹瓷 git-lfs ,还可以自己给自己的项目配一个 ci runner LaTeX 的...
  • 配置 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...
  • Grafana 可视化实践:清华大学 2018 年度人物评选

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

    向阮一峰学习,把自己在一周里看到的有趣的事情分享一下。不过形式就比较随意了。 最近写 MongoDB + NodeJS 学到的新操作:$addToSet $nin $ne Mongoose 的 setDefaultsOnInsert Promise 真香,真好用 几天前惠老师还在说 “IE, The best Chrome Downloader Downloader, ever” 今天 EdgeHTML 就宣告死亡了 WPF, Windows Forms 和 WinUI 开源了,mono 这是要凉? 链接...
  • 编写 010 Editor 的 FLV Template

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

    最近在 Mac 上装了 Arch Linux ,按照 Mac - Arch Linux Wiki 一路一路走,创建单独的一个 EFI 分区给 Arch Linux 放 GRUB 和内核,一个 ext4 作为根分区。由于 Arch ISO 不支持 Broadcom 的无线网卡,于是先拿 Apple Ethernet Adapter 连到路由器上装机。然后把一些需要的驱动装上了,桌面用的 KDE Plasma...
  • 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...
  • 超过 100 篇博文了!

    今天看了下,发现算上这一篇,这个博客已经有 103 篇文章了,这个数量还是蛮多的,特此庆祝一下。我也顺带做了一下简单的数据处理,得到这么一张图: 目测数量与干活的频率相关性很高啊。
  • 向咸鱼派写入 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 $...
  • 咸鱼派的启动配置

    最近刚拿到了一个咸鱼派的测试板子,准备自己把 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 卡的...
  • 使用 HomeBridge 把小米空气净化器加入到 HomeKit 中

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

    之前在软工的平台上部署了一个 MongoDB ,但是自然是仅内网访问,想要浏览内容只能通过网页上的 Console 进去看,体验特别不好。所以想着能不能找一个在线的 MongoDB 浏览器。由于软工平台只能部署 Docker 镜像,所以我找到了mongo-express和adicom/admin-mongo。但软工平台现在还没实现环境变量的配置,所以我选了后者。 首先本地创建一个 app.json ,让它监听 0.0.0.0:80 ,通过 deployer 传到平台上的配置,然后再把配置 mount 到 /app/config 路径上。现在就可以成功地在网页上浏览 MongoDB 了。
  • OpenWRT 上配置 Gandi DDNS

    一直想给自己的 OpenWRT 路由器添加 DDNS 功能,但 Gandi 不在官方的 ddns-scripts 列表中,自己在网上找了一些脚本,发现是 Python 写的,尝试把 Python 安装到路由器上又发现空间不够,虽然可以安装到 USB 上,但总归是麻烦。 最后找到了官方的一个脚本,非常适合我的需求。简单修改一下,然后安装一下支持 HTTPS 的 cURL : $ opkg update $ opkg install ca-bundle $ opkg install curl 然后把脚本添加到...
  • ETC 比赛无线网络搭建小记

    正好上着李贺武老师的《无线移动网络技术》课,然后今天又给 ETC 比赛搭建无线网络,于是周二的时候找老师咨询了一下意见。我们大概给老师讲了一下场地的样子和尺寸(当时估计的大了),然后老师给我们提供了一个可以供参考的部署方案,包括几个 AP 分别放在哪,这些 AP 的 2.4GHz 都用哪个 channel ,然后都用多少功率。并且很友善地在周五的时候让助教来场地帮我们 survey 一下无线网络的状况。我们用 Fluke Networks 的 AirCheck Wi-Fi Tester 看了一下场地的各个频道的 AP 数量和信号强度,发现虽然 AP 挺多的,但是它们的信号都比我们的小不少,而且我们也都开到了 50mW ,所以干扰不大。 然后昨天下午一点半钟来到场地,用板车把设备都运到计算机开放实验室,然后开始部署无线网络。我们提前来踩过几次点,这边的网络是没有 DHCP 服务器的,通过一个指定的网关出去。我们发现可以利用已有的这些交换机从地下连到各个电脑上的网线,来连接我们的 AP 和交换机,这样我们就免去了走线的麻烦。于是我们先定下放 AP...
  • Unicode En Dash 小坑

    今天有同学问到我这个问题: $ gcc -o ph ph.c –lpthread 为啥不工作。我怎么看都觉得没啥问题,一开始以为是找不到 pthread ,但马上又排除了。想了下会不会是有隐藏的字符,于是让同学 pbpaste | xxd 一下,果然发现这里的 – 是 \xe2\x80\x93 ,查了下是 Unicode 里的 En Dash 。由于这是从 PDF 里直接拷贝出来的,所以凉了。改成正常的短横杠即可。
  • 软工平台踩坑记

    老师要求我们搞 CI/CD ,CI 自然是很快就搞好了,不过 CD 还得配一下。今天研究了一下它的 Deployer 架构,发现了若干易用性问题: 缺乏文档 只有样例配置没有讲解 已有的文档 语焉不详 官方对此回复:功能太多,还没忙过来写文档 于是只好经常戳助教然后尝试理解这个东西。。然后遇到了很多的 BUG : 容器没有重启功能。。。 容器死了还是活着看一个图的颜色。。。毫无说明 容器虽然有 Console ,但是输入过长后直接回到行首没有换行。。。 容器对外的域名里有下划线。。。 Django 上来就一句 Invalid HTTP_HOST header: 'xxxx_xxx.app.secoder.net'. The domain name provided...
  • 在荔枝糖(Lichee Tang)上初次体验 FPGA

    今天从张宇翔学长那拿到了 荔枝糖(Lichee Tang) 的 FPGA 板子,于是立即开始把前段时间学到的Verilog应用上来。不过想到现在我手上没有多少外设,然后又必须远程到 Windows 电脑上去操作,于是先实现了一下 UART 通信。 在网上找到了 ben-marshall/uart 一个简易的实现,很快做到了一直在串口上打印 A 字符。接着我开始尝试实现一个简单的串口回显。一开始,我直接把 UART 读到的数据直接输出,果然可以了,但是一旦传输速率跟不上了,就会丢失数据。于是我添加了 FIFO IP 核,然后把读入的数据存入 FIFO ,又从 FIFO 中读取数据写入到 UART 中去。不过发现了一个小 BUG:每次打印的是倒数第二次输入的字符,即丢失了第一个字符。在张宇翔学长的帮助下找到了问题:当 FIFO 的读使能信号为高时,其数据在下一个时钟周期才来,于是解决方案就是等到数据来的时候再向 UART 中写数据: always...
  • 使用 veth 实现 IPv6-only 的 Brouter 功能

    最近从 @shankerwangmiao 学到了一个方法:通过 veth 把两个 bridge 的 IPv6 桥接起来。方法如下: $ ip link add veth-v6-in type veth peer name veth-v6-out $ brctl addif br-in veth-v6-in $ brctl addif br-out veth-v6-out $ ebtables -t...