Lan Tian @ Blog

I'm starting to provide Chinese / English versions of some articles, switch with the Language menu above. 我开始提供部分文章的中文、英文翻译,请使用顶部语言菜单切换。

笔记本 Optimus MUXless 下的 Intel 和 NVIDIA 虚拟机显卡直通

摘要(剧透)我成功在联想 R720 游戏本上把 Intel 核显的 GVT-g 虚拟显卡,以及 NVIDIA 独显本身直通进了虚拟机。但是由于受到架构本身的限制,这套方案有非常大的局限,例如很多游戏无法调用独显、操作麻烦、显示性能仍然较低等。因此,现阶段可以为了折腾而尝试,但不建议用于实用用途。 为什么要这么做我平常浏览网页、写代码等操作都在 Arch Linux 系统下完成,很少使用 Windows 双系统。但是有的时候我想和同学联机游戏,就不得不重启到 Windows 系统。虽然已经有了 Wine、Proton 兼容层来运行 Windows 应用,还有 DXVK 来转译 DirectX 命令到 Vulkan 来提升性能,但是还是有很多游戏无法在 Wine 环境下正常运行,例如自带 DRM 或者反作弊保护的游戏,以及调用了奇怪 API 的游戏。但双系统意味着需要维护两套系统,...

毕业设计 - 传感器网络开发踩坑记录

欢迎来到踩坑系列的第三篇。之前两篇中我分别介绍了我 RoboMaster 机器人竞赛和 FPGA 课程大作业中踩的坑。这次踩坑的是我的毕业设计,三人小组合作的空气质量传感器网络。整个项目的设计如下:从安装的传感器模块中读取数据并上传到服务器上的 InfluxDB 数据库我们使用的传感器如下:MiCS6814,测量 NO2,CO,NH3模拟输出BME680,测量温湿度气压及 TVOCI2C 接口输出PMS5003,测量可吸入颗粒物(PM)UART 串口输出额外加上了这些模块:ATGM336H,GPS+北斗双模定位模块UART 串口输出ESP8266,使用非常广泛的 Wi-Fi 模块UART 串口输出MH-CD42,电源管理模块输出?不存在的,供电就行了需要足够节能,能用电池坚持一周左右也需要能够监测电池电量以计划电池更换一定程度的防雨能力网页显示,...

使用现代格式几乎无损地存档图片及视频 - H265 与 HEIF

很多人都会保存有每次参加旅游、聚会等活动,或是人生重要时刻的图片和视频。如果你很喜欢拍照和录视频,并且把它们都保存下来,你很有可能会飞快地塞满一块有一块的硬盘。如果你不想不停地加硬盘,你也可以尝试对你的图片和视频等进行压缩。说到压缩,常见的操作是降低图片的分辨率。我曾经用过的古老的 Microsoft Office Picture Manager(集成在 Office 2003 中)就带有一键图片压缩功能,实际上是将图片转换成分辨率约为 1024x768 的 JPEG 图片。这样操作的一个很大的缺陷,就是图片的大量细节信息完全丢失了。即使你在存档的当时觉得可以接受这些细节的丢失,但随着技术发展,这些丢失很可能有一天变得非常扎眼。例如,零几年时显示器的分辨率普遍为 1024x768,因此 Microsoft Office Picture Manager 将图片压缩到这个分辨率。...

OS/2 Warp 4 系统试用及安装 Firefox

OS/2 是起初由 IBM 与微软公司联合开发,后续由 IBM 维护的操作系统。在上世纪 90 年代,OS/2 是 Windows 的有力竞争者,但 OS/2 后续在市场上被 Windows 系列击败,IBM 也在 2006 年 12 月 31 日最终停止了 OS/2 Warp 4 的技术支持。但是,这并不意味着 OS/2 的死亡。在官方技术支持终止后,Serenity System 公司接手了 OS/2 的开发,并以 eComStation 的名字继续开发;2015 年,另一家公司 Arca Noae LLC 也推出了一款基于 OS/2 的发行版 ArcaOS,并且作为商业产品出售。同时,开源社区也在为 OS/2 提供一些技术支持。开源社区在 OS/2 上交叉编译了常用的 Unix 工具(例如 ls,rm 等),RPM/YUM 包管理器,以及一系列的库。...

(怀旧)ATduck 虚拟 Modem 拨号上网

今年真的是 9102 年了吗?是的。出于怀旧的目的,我想尝试一下在 Windows 2000 等旧操作系统中拨号上网。当然,在 2019 年绝大部分人都已经不会有使用电话线的调制解调器,甚至不会知道曾经有它存在。现在的电脑也早已没有了电话线接口,ISP 也不再提供拨号上网服务。Doge Microsystems 的这篇文章提供了自建拨号上网 ISP 的一种方法。文章作者购买了硬件电话 Modem,使用 Asterisk 建立了基于 SIP 的网络电话交换网,然后使用 Analog Telephone Adapter(ATA,模拟电话转 SIP 网络电话的设备)将 Modem 连接上交换网。同时作者使用 Linux 下的 mgetty 操作 Modem,结合 pppd 提供了一个 PPP 拨号服务。这样操作的主要问题是:一整套设备太贵,而且也占地方。...

Cyclone IV FPGA 开发踩坑记录

上学期,学校开设了一门数字电路课程,使用 FPGA 进行开发。在课程结尾,我们需要分成小组,利用 FPGA 自由设计电路的特性实现复杂的功能,例如制作一款游戏、运行卷积神经网络等等,并且可以按自己喜好加入各种额外的功能。我们小组实现了一款类似《雷电》的游戏,实际上就是操控飞机发射子弹攻击敌人。实现的额外功能(课程内容除外)包括:640x480,16 位色深的 VGA Framebuffer,存储在 SRAM 芯片上相应的,内置了简体中文字库(包含整个 UTF-8 中文范围,但不包括标点符号(懒))也支持修改 Y 轴偏移量快速滚动屏幕,为了实现飞行效果SRAM 控制器/芯片以二倍频率工作,让 FPGA 上的软 CPU 和 VGA 控制器同时访问,不存在抢占问题最多 8 架飞机(包括敌方我方),可以完全自定义图片(非调色板,非索引),全屏幕自由移动最多 56 发子弹(包括敌方我方),...

树莓派 3B 折腾笔记:串口拨号上网

今年是 9102 年了吗?是的。 为什么要这样做我手上有一块树莓派 3B 和一块华硕的 Tinker Board。有的时候,因为 Wi-Fi 爆炸/配置出错/pacman -Syu 滚挂系统之类的原因会导致其中一块板子断网。通过连接两块板子的串口,再在上面建立拨号上网连接,就可以在一块板子 Wi-Fi 或有线网中断时,从另一块板子上 SSH 上去解决问题。(另外买树莓派不折腾 GPIO 的话,还不如买个 x86 的凌动小主机之类的玩) 怎么操作硬件方面,将两端的串口连接起来。树莓派的串口是第 8 根针发送,第 10 根针接收,可以在 pinout.xyz 网站查到。Tinker Board 的串口也是 8 发送 10 接收。用两根杜邦线将树莓派的针 8 连接到 Tinker Board 的针 10,将树莓派的针 10 连接到 Tinker Board 的针 8。...

在 Traceroute 里膜 拜大佬

Traceroute 是常用的检查网络状况的工具之一,会显示你操作的电脑到指定服务器的网络路径上经过的每一个路由器的 IP 地址,类似于这样:可以看到后两跳的 IP 显示出了对应的域名,这个域名就是 IP 的反向解析记录。反向解析记录在 DNS 服务器中以类似 4.3.2.1.in-addr.arpa 域名的 PTR 记录形式存在。更多的信息可以参考《在 DN42 中设置 IP 反向解析》这篇文章。然而,PTR 记录并不一定要设置成实际的域名,可以设置成任意的字符串,只要“和域名长得像”即可。利用这一点,我们可以在一段 Traceroute 中的每一跳上写一句话,整段就组成了完整的文章,类似下图:本文均在 DN42 网络中完成,如果你已经加入了 DN42 网络,可以 ping、traceroute 通文中的 IP。但本文并不局限于 DN42,...

x86 下制作 ARM Docker 镜像,Docker Hub、Travis 自动构建

一般情况下,Docker 的镜像都是在一个已有的镜像内,一步步运行给定的命令,从而生成一个新的镜像。这样的步骤在大多数人使用的 x86 架构计算机上都不是问题,由于架构互相兼容,一台计算机上生成的镜像往往可以被直接复制到其它计算机上运行,除非镜像中的程序使用了 AVX 等较新的指令集。但是,还有一批基于 ARM 架构的主机也可以运行 Docker,并运行专门编译的 ARM 架构的镜像。这些主机包括树莓派系列,和其它类似树莓派的主机,例如 Cubieboard,Orange Pi,Asus Tinker Board 等等。另外,Scaleway 等主机商也提供基于 ARM 架构的独立服务器。由于 ARM 架构的系统无法在 x86 架构计算机上运行,因此无法在 x86 计算机上直接通过 Dockerfile 生成 ARM 架构的镜像,...

Docker 镜像的精简

自从放弃 OpenVZ 架构的 VPS 并购买 KVM 架构的 VPS 以来,我一直使用 Docker 部署 nginx、MariaDB、PHP 等网站需要的程序,不仅方便平时单个服务的重启和配置管理(把配置目录全部用 volume 映射到一起管理),而且方便了服务的升级。例如,我现在博客所在的 VPS 因为配置不高,内存占用最近一直在 80% 左右。我要更新 nginx 或者向 nginx 里加模块时,如果直接在这台 VPS 上编译 nginx,不仅速度慢,而且有可能因为内存不足而把网站也崩掉。使用 Docker 后,我就可以在其它的空闲资源较多的 VPS 或者在我自己的电脑上构建镜像,push 到 Docker Hub,再在 VPS 上 pull 下来运行。不过,一直以来,我的 nginx 镜像大小都在 200 MB 左右(Docker Hub 显示大小,不包含基础镜像大小,...