跬步 On Coding

2023年阅读分享:深度挖掘编程之道

作为一个热衷于技术的程序员博主,我在2023年迎来了全新的阅读体验,将RSS作为我的主要信息源,并通过订阅Hacker News热门主题,持续深入英文技术文章的阅读。在这个过程中,我发现了一些真正精彩的文章,这些不仅仅是知识的积累,更是对编程之路的深刻思考。在这里,我将其中一些我认为值得分享的文章整理出来,推荐给各位看官,希望你们在学习中找到灵感,不断进步。

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

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项目的所有这些配置的东西, 得到了以上大部分工具的支持.