跬步 On Coding

透明代理实践:技术小结与方案演进

1. 路由拓扑

在家中,我们采用了中国移动提供的千兆宽带服务,通过移动自带的光猫进行拨号连接。紧随其后是一台搭载OpenWRT系统的路由器,负责管理Wi-Fi以及局域网的网络地址转换(NAT)。由于光猫已占用了192.168.1.1网段,我们将路由器配置为192.168.2.1,以便更好地管理IPv4流量。在IPv4网络中,数据流经过光猫和路由器的双层NAT进行处理。

对于IPv6网络,由于路由器无法直接获取地址前缀,我们配置了IPv6 DHCP Relay功能,确保局域网内的每个设备都能够获取IPv6地址。

以下是我们在OpenWRT路由器上的相关配置:

# cat /etc/config/network
config interface 'lan'
	option type 'bridge'
	option ifname 'eth0 ra0 ra1 rai0 rai1'
	option proto 'static'
	option netmask '255.255.255.0'
	option ipaddr '192.168.2.1'
	option macaddr 'C8:BF:4C:87:EE:68'

在这里,我们通过将LAN口的MAC地址固定设置,以避免LAN IPv6地址的变化。

# cat /etc/config/dhcp
config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option ra_slaac '1'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option ra 'relay'
	option ndp 'relay'
	option dhcpv6 'relay'
	option force '1'
	list dns 'fe80::cabf:4cff:fe87:ee68'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'
	option dhcpv6 'relay'
	option ra 'relay'
	option ndp 'relay'
	option master '1'

此处,我们配置了IPv6 DHCP Relay功能,直接从光猫获取IPv6地址,并指定LAN口IPv6地址作为IPv6 DNS通告,以确保局域网内的设备的DNS配置无论是IPv4还是IPv6地址都是OpenWRT路由器。

零成本使用OpenAI API

1. OpenAI ChatGPT

ChatGPT已经发布了一年有余,成为有史以来用户增长最快的互联网产品。如果到了2023年你还没有使用过ChatGPT,可能你已经远离了互联网的中心。ChatGPT的发布与更新深刻改变了我的工作方式。我学到了如何撰写高效的提示,发现了ChatGPT的最佳应用场景,并在GitHub上探索了最佳实践。

一些影响我ChatGPT之旅的值得一提的资源包括OpenAI官方指南:如何提高ChatGPT的输出质量,一篇关于2023年OpenAI GPT-3最热门应用案例的文章,以及GitHub上的GPT提示列表

在我的日常工作中,我利用ChatGPT做了很多事情:

  • 它成为我在编写代码过程中查找相关文档的首选工具,替代了传统搜索引擎的需求。
  • 它轻松帮助我进行中英文翻译,充分发挥了其语言处理能力。
  • 在数据分析中,它高效地协助我处理复杂的SQL查询。

尽管我已经是一个长时间的用户,但我仍然保持在免费计划上,没有选择Plus,也没有使用OpenAI API。由于ChatGPT的充值的限制,我尚未探索基于OpenAI API构建的众多AI工具和插件。

RSS文艺复兴

1. RSS是什么

RSS(Really Simple Syndication)是一种用于发布经常更新的工作的XML格式的文件的标准。这些文件通常包含新闻摘要、文章标题、链接和发布日期等信息。RSS提供了一种订阅机制,使用户能够轻松地跟踪他们关注的多个网站的最新更新,而无需定期访问这些网站。

尽管RSS在其创立初期非常受欢迎,但它逐渐失去了流行度。一些原因包括:

  1. 社交媒体的兴起: 随着社交媒体平台的发展,用户开始转向使用平台内的订阅和分享功能来获取和分享信息。社交媒体提供了更直观和交互性的方式来发现和分享内容。

  2. 个性化推荐算法: 许多网站和应用采用了个性化推荐算法,通过分析用户的行为和兴趣,推荐相关内容。这减少了用户需要手动订阅和管理的需求。

  3. 信息过载: 随着互联网上可用信息的不断增长,用户面临信息过载的问题。RSS的线性列表形式可能无法有效地处理大量信息,而个性化推荐算法能够更好地适应用户需求。

  4. 移动应用的普及: 移动应用的兴起使用户更倾向于使用专门的应用程序,而不是传统的RSS阅读器。这些应用通常提供更好的用户体验和功能。

  5. 网站设计的变化: 许多现代网站设计更加动态和交互式,而不仅仅是提供简单的文章列表。这样的设计可能使得传统的RSS阅读方式显得过时。

需要注意的是,虽然RSS在一些领域可能不再是主流,但它仍然是一种强大的工具,特别是对于那些喜欢通过订阅方式跟踪特定网站更新的用户。一些应用和服务仍然提供对RSS的支持。流行度的变化可能因用户群体和使用场景而异。

使用pyproject.toml保证代码质量

1. pyproject.toml是什么

https://python.freelycode.com/contribution/detail/1910

在使用pyproject.toml前, 我们的Python项目根目录下会存在很多项目相关的配置文件, 比如:

  • requirements.txt
  • requirements_dev.txt
  • .flake8
  • mypy.ini
  • .isort.cfg
  • .bandit

我们的项目代码中充斥这这些与代码无关的配置, pyproject.toml就是用来统一纳管Python项目的所有这些配置的东西, 得到了以上大部分工具的支持.

编程语言漫谈

半年前还是2021年春节的时候, 在家休假的我, 在B站上发现了一门叫RUST语言的课程, 学习的过程中, 发现RUST语言为了绝对的安全性, 在语法本身上做了很多的妥协, 所以想着等我学完这门课, 再基于自己以往编程语言的学习经历, 写一篇<如何学习一门新的编程语言>的文章. 但是时过境迁, 我并没有学完这门RUST课, 所以<如何学习一门新的编程语言>也就无疾而终了. 回过头来再思考下以往我学习的那些编程语言, 就有了这篇文章<编程语言漫谈>. 我希望以一种比较轻松的散文的形式来阐述我过完学习的一些经验与思考.

rust