最近,我解决了 UniFi 网络下,客户端设备无法学习到 IPv6 网关地址的问题。在这篇文章中,我将记录问题的定位与解决过程。
一次使用 ChatGPT 帮助我学习 L4S 的尝试
在观看 WWDC 视频时,我发现 iOS 17 即将支持 L4S。由于我对 L4S 感兴趣,所以想要阅读更多与 L4S 相关的文章,更深入地了解 L4S。
正好在前段时间,我在 Twitter 上看到了 AI Agents 这款 ChatGPT 插件。这款插件相当于把 AutoGPT 的功能整合进了网页版的 ChatGPT,可以讲一个复杂的指令拆分成单步操作。配合其他 ChatGPT 插件,即可实现搜自动搜索网页、查找文献,并将查找到的内容汇总在一起。
所以,我也打算尝试使用 AI Agents、Web Requests、WebPilot 三个插件,让 ChatGPT 整理一本关于 L4S 的电子书,帮助我更快速地了解 L4S。
家庭网络中的「NAT」到底是什么?
在使用网络的过程中,或许你会遇到这样的问题:
- Nintendo Switch 等游戏主机上的 NAT Type 是 D,导致无法联机游戏
- 使用 eMule 下载文件时,发现获取到了 Low ID,导致下载速度变慢
- 家中的 NAS 只能在内网使用,很难将 NAS 上的文件分享给其他人。出门在外时,想要下载 NAS 上的文件,也发现无法连接。
或许你还会对这些问题感到好奇:
- 每天有那么多人使用微信进行视频通话,腾讯的服务器是否能承受这么大的流量?是否需要支付高额的流量费用?
- 为什么在十多年前,我们就看到过 IP 地址资源不足的新闻。而现在,互联网用户越来越多,IP 地址资源不足却似乎并没有给我们带来什么影响。
其实,这些问题都与 NAT 有关。少数派上已经有两篇文章,也提到了 NAT:
那么,NAT 到底是什么?NAT 会为我们的「网上冲浪」带来哪些不便之处?如何解决 NAT 为我们带来的不便?…… 本文将尝试详细地解答这些问题。
「智能队列」如何改善你的家庭网络质量
在无线路由器的设置页面上,我们可能会看到一个名为「智能队列」的功能(根据品牌或操作系统的不同,也可能会被称做「智能 QoS」、「SQM」等)。
这一功能是如何工作的?是否能让网速变快?是否需要打开?本文将尝试解答这些问题。
继续阅读“「智能队列」如何改善你的家庭网络质量”《信息素养通识教程》学习笔记
前段时间,我学习了中国大学 MOOC 上的信息素养通识教程:数字化生存的必修课。在经过老师的同意后,我将自己的课程作业、讨论区发布的帖子整理到个人博客上,便于后续进行回顾。
继续阅读“《信息素养通识教程》学习笔记”命令行、Vim、版本控制…… 这个课程教你使用强大的工具
命令行、Shell 脚本、纯文本编辑器(Vim 等)、版本控制(Git)…… 无论是否为计算机行业从业者,合理使用这些工具,都能够大幅度提高使用电脑的效率。
但是,不少人应该和之前的我一样,对这些工具有过一定的了解,也会简单使用其中的一部分功能。但是,想要系统、全面地学习这些工具,却又觉得无从下手。
而来自 MIT 的 The Missing Semester of Your CS Education 课程(下文中简称 missing-semester
),能够帮助我们更好地了解和使用这些工具。
课程推荐:Hacker Tools
Hacker Tools 是 MIT 的一系列讲座,介绍了在软件开发等场景中,能够大幅度提升效率的工具,例如 Shell 脚本、纯文本编辑器、版本控制系统等。
虽然对于课程中的大部分内容,很多人都应该或多或少的接触过,但是通过这门课程,能将这些知识系统的整理下来,从而在今后遇到问题时,能够意识到需要使用哪些工具,并主动尝试去使用。所以,如果想要进一步提升自己在电脑使用、软件开发方面的效率,推荐大家学习一下这一系列课程。
在我学习 Hacker Tools 之后,通过本文以思维导图的形式整理了课程的主要内容,方便进行查漏补缺和针对性的学习。
Arduino Bootloader 程序下载协议
单片机通常通过编程器来下载程序。而 Arduino 中有一小段 bootloader 程序,在复位的时候运行,可以通过串口接收程序并写入单片机,因此可以不使用额外的编程器,直接通过串口下载程序。
前段时间,在为 AirTerminal 增加 XMODEM 协议的支持后,打算在下一个版本增加 Arduino 程序下载功能。所以先提前了解一下 Arduino Bootloader 使用的程序下载协议,并通过本文整理相关知识。
文章仅提供了解这些协议所需要的链接,对于协议的具体内容不再过多描述。文章内容将会根据自己的进一步了解不断更新。
Stanford CS140e 学习笔记 (4):用户态程序的运行
Assignment 3 的主要目标,是使自己的操作系统能够运行用户态程序。这个 Assignment 中,需要实现特权级别切换、上下文切换、调度器、系统调用处理、虚拟内存等代码。并将之前实现的 shell 移动至用户态,做为一个进程来运行。
Stanford CS140e 学习笔记 (3):文件系统
Assignment 2 实现了一个 FAT32 文件系统,以及其所依赖的内存申请释放程序、SD 卡驱动。同时,也需要实现 ls, pwd, cd, cat 等命令行工具,方便进行文件系统操作,验证文件系统是否可用。
Stanford CS140e 学习笔记 (2):驱动、bootloader、shell
在 CS140e Assignment 0 中,主要通过点亮 LED,来熟悉 Rust 和 Raspberry Pi 的开发环境。Assignment 1 正式开始操作系统的编写,主要包括驱动、bootloader 和 shell。
本文记录了 Assignment 1: Shell 的学习过程。
Stanford CS140e 学习笔记 (1):Rust 基础、LED 闪烁
CS140e 是 Stanford 的一门操作系统课程。与其他操作系统课程相比,该课程使用现代的程序设计语言 Rust 来编写实验代码;且所有代码运行在 Raspberry Pi 3 上,通过真实硬件进行实验,学习起来应该更有乐趣。
目前有进一步熟悉操作系统基础知识的想法,而且手上刚好有一块正在吃灰的 Raspberry Pi,所以打算从这门课开始学习。
本文主要记录 Assignment 0: Blinky 的学习经过。