木偶's Blog

如果发现能力无法支撑自己的野心,那就静下心来学习吧

访问地址:https://www.cursor.com/cn/students

12e0991659b16a51a4e874e40777f5f7

此时会跳转到以下页面:8e6a3fc97ab367d1d5ff71962162fec1

然后发现 Country 找不到 China,

1.1 借助浏览器 devtool 的 Overrides 找回 China

1.1.1 开启 Overrides

右键打开 Google 浏览器 devtool 82e993fdb546eb0302da87b31b76b2e5

Sources -> Overrides

a47a52af2afec762e85a7ad4d4bf3d67

电脑本地建一个空文件夹,例如“chrome-overrides”

e7d4e0994f129c87b70ea8a7c59c6af2

将空文件夹添加到 Overrides 中,并开启:a1868b12f708eb7e1fd7707b38881454

此时 Chrome 会在顶部提示 “DevTools requests full access to [你选择的文件夹路径]”。点击 “Allow” (允许)。

1.1.2 捕获目标 API 请求

  • 切换到 DevTools 的 “Network” (网络) 面板。
  • 确保 “Preserve log” (保留日志) 和 “Disable cache” (禁用缓存) 这两个选项是勾选的,这有助于在刷新页面时捕获所有请求并避免缓存问题。
  • 刷新网页,或者执行页面上的操作,以触发对 my.sheerid.com/rest/v2/program/xxxx/theme?locale=en-US 这个 API 的请求。
  • 在 “Network” 面板的请求列表中,找到这个特定的请求。可以使用顶部的 “Filter”,输入 theme?locale=en-US 定位 API

d5cc14a35e2f08871f2560f5b9559772

1.2 重写 API 请求内容

a6619c59ddd4427dc3ca48cb87db45c8

eeeae5b36bf609f0a7cdfa90c2a99d5a

找到 config.countries,添加 CN

3efca4984181d78fe1a090738067509b

此时就 OK 了,回到页面,输入 China:a18c8ff6ab5cfce78ceb0e232b06f588

搜索你的学校:

303fa436c76c0bf6b091f882b3f1f1c8

如果有你的学校,那么恭喜你,可以继续下一步,如果没有,那就 sorry 了。

接着正常填写,提交,等待审核!

9ed059a5f43731cdca37eec145289faf



本教程适用于 2024 年之后的 Github 学生认证申请,因为现在的认证流程改变了很多,所以重新进行了总结这方面的指南。

[!important] 重要
学生认证优惠的审核是自动程序审核的,所以可以用一些 trick 来说服自动审核程序,帮助大家通过自动审核。

阅读全文 »

OMV NAS & NextCloud搭建私人网盘.webp

OpenMediaVault (OMV) 是一款基于 Debian 的开源网络附加存储(NAS)解决方案,它通过易于使用的界面提供数据存储、备份和共享服务。结合 Nextcloud,用户可以在 OMV 平台上搭建一个功能强大的私人网盘,实现文件同步、分享和协作。这种组合不仅增强了数据的可访问性和安全性,也为个人和小型企业提供了一个成本效益高、隐私保护好的云存储解决方案。通过 Docker 容器或直接安装,OMV 与 Nextcloud 的整合可以轻松完成,满足现代数字生活的存储需求。

阅读全文 »

fjy89

在 Proxmox 6.5.11-8 中,偶发性会出现以下报错,尤其是在进行大文件传输后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[97377.240263] e1000e 0000:00:1f eno1: Detected Hardware Unit Hang:
TDH <22>
TDT <2f>
next_to_use <2f>
next_to_clean <21>
buffer_info[next_to_clean]:
time_stamp <101725292>
next_to_watch <22>
jiffies <1017253e0>
next_to_watch.status <0>
MAC Status <40080083>
PHY Status <796d>
PHY 1000BASE-T Status <3800>
PHY Extended Status <3000>
PCI Status <10>

一旦出现该问题,Synology NAS 就会进入不可用的状态。

1.1 Intel 网卡驱动问题,特别是 e1000e

错误信息表明网络接口卡(NIC)在进行数据传输时遇到了硬件单元挂起的问题。这种情况在重网络负载时更容易发生。

这是多年来 I219-V、I218-V… 网卡型号及其驱动程序的一个已知错误。不仅在 proxmox 上,在 xcp-ng 上也是如此。

这个问题,截止 Proxmox 6.5.11-8 仍未被彻底解决,只能通过禁用 TCP 校验和卸载。

1.2 解决方案

通过执行命令:ethtool -K eno1 tso off gso off gro off 即可解决,但是每次重启机器或者网卡,都会失效。具体含义下方会说明。

如何长期解决?

/etc/network/interfaces 中,添加以下代码:

1
2
iface eno1 inet manual
post-up /usr/bin/logger -p debug -t ifup "Disabling offload for eno1" && /sbin/ethtool -K $IFACE tso off gso off gro off && /usr/bin/logger -p debug -t ifup "Disabled offload for eno1"
  • post-up:这是一个钩子命令,它会在接口被成功激活(“up”状态)后执行。这里的命令会在 eno1 接口启动之后执行一系列动作。
  • /usr/bin/logger -p debug -t ifup “Disabling offload for eno1”:这条命令使用 logger 程序,将一条调试级别(debug)的信息写入系统日志。日志内容为 "Disabling offload for eno1",标记为 ifup。这样做的目的是记录接口启动时禁用某些功能的动作,方便日后查看系统日志,了解配置是否按预期执行。(可通过 journalctl -t ifup -p debug 查看日志)
  • /sbin/ethtool -K $IFACE tso off gso off gro off tx off rx off:这里使用 ethtool 工具来关闭网络接口的一些“硬件卸载(offload)”功能。具体地:
    • tso(TCP Segmentation Offload):关闭 TCP 分段卸载。TSO 允许网卡将大型 TCP 数据包分段,减轻 CPU 负担。如果关闭,系统会由 CPU 进行 TCP 分段。
    • gso(Generic Segmentation Offload):关闭通用分段卸载。GSO 是一种将不同协议的数据分段处理的技术,关闭它会让系统自己处理分段。
    • gro(Generic Receive Offload):关闭通用接收卸载。GRO 是一种接收数据包处理优化技术。关闭它意味着数据包接收将完全交由 CPU 处理。
    • tx(Transmit Checksum Offload):完全关闭传输时的校验和卸载。网卡不会自动处理数据包的校验和,而是让系统自行处理。
    • rx(Receive Checksum Offload):完全关闭接收时的校验和卸载,网卡不会校验接收到的数据包,需要系统来进行检查。

[!info] 信息

  • TSOGSOGRO 分别用于控制 TCP 分段、通用分段和接收卸载,这三个是针对传输层和网络层的优化。
  • tx offrx off 是更通用的选项,用于关闭整个发送(TX)和接收(RX)的卸载功能。

如果已经关闭了 TSO、GSO 和 GRO,那么 tx offrx off 可能会显得多余,因为这些设置会影响整个数据包的处理,而不只是特定的卸载功能。

在大多数情况下,只需关闭 TSO、GSO 和 GRO 就可以了,tx offrx off 可以根据需要选择是否使用。如果需要彻底禁用卸载功能,可以使用它们,但通常只关闭 TSO、GSO 和 GRO 是足够的。

[!note] 注意
这对于一些系统可能没有生效,那么可以尝试通过注册 Service 的方式执行。这里不赘述。

如何查看 tso、gso、gro 是否已经关闭:ethtool -k eno1 | grep -E 'tso|gso|gro'

yp93w

均为 off,说明已经关闭。

如何查看 TCP 校验和卸载是否开启:ethtool -a eno1

qegq7

些参数主要用于控制网络接口的流量控制,以减少数据包丢失,确保在网络拥堵时网络的稳定性。

  • Autonegotiate:开启表示接口支持自动协商功能,允许网络接口和连接到的设备协商最佳的传输模式(如全双工或半双工)和流量控制。
  • RX(Receive):此项“on”表示接收暂停帧的能力已开启。也就是说,网络接口在接收到暂停帧时会暂停接收数据。这在数据接收方无法及时处理流量时非常有用。
  • TX(Transmit):此项“on”表示发送暂停帧的能力已开启。网络接口可以在需要的时候发送暂停帧,指示对方暂停发送数据。这在本设备负载过高时很有帮助。
  • RX negotiated:表示接收暂停帧的能力已协商开启,表明两端设备在连接时已协商启用了接收流量控制。
  • TX negotiated:表示发送暂停帧的能力已协商开启,表明两端设备在连接时已协商启用了发送流量控制。

配置后,Synology NAS 终于不会再“突发恶疾”了!!!

1.3 参考文献

当 NGINX 的日志文件变得过大时,通常的做法是进行日志切片(log rotation),这样可以防止单个日志文件过大,便于管理和存储。

而 NGINX 自身或者其扩展的模块均不支持类似的功能。 所以 NGINX 日志切片通常需要依赖外部工具来实现,比如 Linux 系统中常用的 logrotate。以下是如何使用 logrotate 对 NGINX 日志进行切片的步骤:

阅读全文 »

当我使用 Windows 11 下的 VSCode 启动 Vue 项目时,出现以下报错:

1
2
3
4
5
6
7
8
ERROR  error when starting dev server:                                        
Error: listen EACCES: permission denied 0.0.0.0:5200
at Server.setupListenHandle [as _listen2] (node:net:1800:21)
at listenInCluster (node:net:1865:12)
at doListen (node:net:2014:7)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21)

 ELIFECYCLE  Command failed with exit code 1
阅读全文 »

在 Apache ServiceComb 中,Highway, Vertx, 和 HTTP 都与微服务间的通信有关,但它们之间的角色和关系是不同的。下面是一个简要的描述来解释它们之间的关系:

  1. Highway:

    • Highway 是 ServiceComb 的一个通信协议。它是专为微服务通信而设计的一个高性能的二进制协议。如果两个微服务都支持 Highway,则它们可以使用此协议进行通信,通常会有更好的性能和更低的延迟。
  2. Vertx:

    • Vert.x 是一个为 JVM 提供的工具包,用于构建响应式应用程序。ServiceComb 使用 Vert.x 作为其反应性框架,这使其可以有效地处理大量并发连接和通信。
    • Vert.x 也支持多种通信协议,包括 HTTP/HTTP2 和其他定制协议(例如 Highway)。在 ServiceComb 中,Vert.x 主要用于处理请求/响应的生命周期、非阻塞的 I/O 处理以及提供异步编程模型。
  3. HTTP:

    • HTTP 是一个应用层的通信协议,用于在互联网上传输数据。在微服务架构中,HTTP(特别是 HTTP/2)常被用作微服务间的通信协议。
    • ServiceComb 支持基于 HTTP 的 RESTful 服务通信。这意味着微服务可以使用标准的 HTTP 方法(如 GET、POST、PUT 等)进行通信。

关系总结:

  • Highway 是 ServiceComb 中的一个专用通信协议,主要针对微服务间的高性能通信。
  • Vertx 是 ServiceComb 使用的反应性框架,提供了异步编程模型,并支持多种通信协议(包括 Highway 和 HTTP)。
  • HTTP 是一个标准的通信协议,在 ServiceComb 中,它常被用作微服务间的通信协议,特别是当使用 RESTful 服务时。

基于以上的描述,我们可以看到,Highway 和 HTTP 都是通信协议,但目标和设计思路略有不同,而 Vert.x 是提供通信框架和异步处理能力的库。

Java

Java 语言普遍用于开发各种类型的软件系统、应用程序和 Web 服务,包括财务软件系统、社交网络软件、移动应用程序(虽然现在多用 Kotlin)、虚拟现实系统、嵌入式系统、大数据应用程序等。

此外,Java 还常用于开发游戏服务器和游戏客户端、智能家居软件和安全相关软件。

Go

Go 语言很适合构建高性能的高并发的服务,可以在游戏、金融、物联网、系统工具等方面得到应用。Go 语言还可以开发分布式系统,构建容器、虚拟化、存储等云计算基础架构。因此 Go 语言可以用于以下任务:

  1. 后端服务:可以用 Go 语言构建高性能和高并发的后端服务
  2. 游戏开发:可以使用 Go 语言开发游戏;
  3. 网络编程:可以使用 Go 语言编写网络编程代码;
  4. 云计算:Go 语言可以编写容器、虚拟化、存储等基础云计算架构;
  5. 工具库:用 Go 语言可以构建各种高效工具库。
  6. 脚本语言:类似 Python 和 Shell

此外,Go 易学快捷,而且可以完成高效的字节码编译,所以适合建立大型应用系统和分布式系统。

Python

Python 语言常用来做程序开发/应用开发、桌面开发(PyQt)、网络编程、Web 开发、科学计算、自动化测试、人工智能、大数据等任务。

此外,Python 还可以用来编写游戏,移动应用等,但很少被用来做这类事情。

0%