DuckSoft's Miscellanies Ex nihilo ad astra.

排查 Nintendo Switch 使用 HTTP 代理时提示“网络需要注册”的诡异事件

几天前的一个夜晚,正在 Telegram 某群里畅聊的我突然收到了来自 Gmail Bot 的一则消息提醒。点开一看,原来是有人在 GitHub 上 Shadowsocks-Rust 的讨论区(Discussions)里问了一个问题,作为 Shadowsocks Rust 团队中的一员,GitHub 自然是应该通知我的。 点开消息,大致的意思是说,消息的作者用 Shadowsocks-Rust 的 HTTP 入站功能给自己的手机和笔记本电脑开代理用都没有问题,但是在 Nintendo Switch 上用就会弹个框说“网络需要注册”。这个时候,如果点确定,Switch 就会进入一个纯白的页面,上面就俩字——“ok”;页面一关闭,Nintendo Switch 就自动断开网络连接了。此外... Read more

使用 btrfs 提升 HDF5 透明压缩百倍性能

众所周知,HDF5(由 h5py 包提供支持)是 Python 中比较高效地存储数据集的方案。由于 HDF5 本身支持分块、透明压缩等高级功能,加之可以将大量零散的 numpy 格式的数据集打包在一个文件中,其受到了不少深度学习应用人士的追捧。但隐藏在 h5py 中的尴尬的透明压缩实现,导致当开启透明压缩时,性能下降极其严重。 举一个之前做过的例子:帮人处理一套数据集,简单从单色 TIFF 格式转为 HDF5 格式,没有开启透明压缩时,tqdm 监控下的速度是 3it/s,也就是每秒大概能处理三张图;开启了 gzip 透明压缩后,这速度就变成了大概每 30 秒才能处理完一张图。估算结果表明,不压缩时总共需要约 4 小时时间,而压缩时需要耗约 350 小时——近半个月。这个烂性能是完全... Read more

记一次深度学习数据传输及训练的性能优化

开端 某校生物信息医学工程博士生(下称博士)重金邀请,让我辅助他进行针对 LUNA 肺癌数据集的结节 3D 分割模型的构建。说是重金,其实给的报酬也不是很多,然而盛情难却,加上和这个博士关系不错,还是接了这一手生意。 在邀请我进行辅助之前,博士已在学校的计算节点上耗费将近一星期时间,将所需的训练/测试集的三维图像、标签从 .mhd/.raw 文件处理为 .npy 格式的 numpy 矩阵文件。数据集有了,模型有现成的作参考,博士使用 PyTorch 框架,不到半个小时就无比熟练地搭建出了一个 3D UNet 的模型。简单调试,证明网络没有明显问题后,下面就准备开始进行正式的训练了。 海量数据集的困惑 由于用于处理数据的服务器与实际训练的服务器不在同一台上,我们需要对处理过的数据集先... Read more

谜一样的 Glade GtkComboBox

占坑。 Read more

破解 91porn 的视频网址加密算法

0x0: 写在前面 自从之前写的一个油猴脚本 91porn-utility 所利用的白嫖 VIP 会员的方法被官方封禁之后,这个脚本的卖点也就从之前的“破解 VIP 高清视频”变成了“清爽去广告”。 随着脚本在 GitHub 上的点击量不断激增,截至发文之日,脚本的下载量已经突破 13k 人次,各式各样的人也在 Issue 列表里留下了各种言论。有的 Issue 发了一个 Bug Report,内容是“脚本太牛逼的bug”;有的 Issue 劝我不要公开这个脚本,以免利用方式被官方封禁(事实上他一口奶中了)。不过,其中一个人的 Issue 格外扎眼——他想付费让我做一个 91porn 的爬虫。 说实话,刚看到这个 Issue 的时候,我的眼里满是轻蔑——91porn 这种网站的爬虫... Read more