程序员的职业转型指南:了解何时该继续前进;Fusion:用 Nim 实现的业余操作系统

142 阅读10分钟

程序员的职业转型指南:了解何时该继续前进

  • • 作者安德鲁·伍尔夫在 63.5 岁时从编程界退休,结束了他四十年的职业生涯。他强调,每个人都会到达一个无法再有效完成工作的阶段,无论是由于年龄、能力衰退、缺乏兴趣还是就业市场条件不利。
  • • 沃尔夫列举了一些程序员的例子,他们因为职业倦怠、技术变革或仅仅是为了寻找更有成就感的追求而转行。他强调了紧跟技术潮流以及认识到工作不再具有挑战性或乐趣的重要性。
  • • 作者承认年龄并不一定与能力相关,并分享了有能力的老程序员和努力掌握基本概念的年轻程序员的故事。
  • • 沃尔夫讲述了自己宣布退休的经历,注意到一些同事感到惊讶甚至沉默,他们无法理解离开稳定的职业。他强调,明智的职业规划很重要,而不是因为过时或不满而被迫离开。
  • • 尽管已从传统编程领域退休,但伍尔夫仍继续为他的生成艺术实践编写代码,这表明即使在离开正式职业后,热情和创造力仍能推动人们继续从事技术工作。
  • • 文章最后鼓励读者反思自己的职业生涯,认识到何时需要改变,并寻求符合自己兴趣和目标的机会。

thecodist.com/how-to-know…

Listenly 提供来自古腾堡计划的 70,000 多本公共领域书籍的文本转语音有声读物

  • • Listenly 是一个公共图书馆平台,提供古腾堡计划公共领域书籍的有声读物。
  • • 它利用 OpenAI 最新的文本转语音模型将文本转换为音频,让人们以新的方式接触到经典文学。
  • • 该平台收藏了超过 72,530 本涵盖不同类型和时期的有声读物。
  • • Listenly 提供精选书架以方便浏览,包括“史上最佳书籍”、“电影书籍”、“哈佛经典”、“禁书”等类别。
  • • 用户可以探索威廉·莎士比亚、简·奥斯汀、玛丽·雪莱、查尔斯·狄更斯和马克·吐温等知名作家的作品。
  • • 该平台还重点关注特定主题和文学运动,如哥特式小说、儿童文学、科幻小说、哲学和恐怖小说。
  • • Listenly 通过 Discord 小组鼓励社区参与,并通过电子邮件support@listenly.io提供支持。

listenly.io/gutenberg

Fusion:用 Nim 实现的业余操作系统

  • • Fusion OS:基于 Nim 的业余项目

Fusion 是一款专为 x86-64 架构设计的开源操作系统,完全用 Nim 编程语言编写。该项目的进展在专门的网站 (0xc0ffee.netlify.app) 上有详细的记录。

  • • 当前功能:

Fusion 拥有几个核心功能:* UEFI 引导加载程序:支持从兼容 UEFI 的固件启动。内存管理:实现物理和虚拟内存管理,实现高效的内存分配和利用。单一地址空间:使用单一地址空间模型以简化操作。用户模式:支持在用户模式下执行代码,将其与内核权限分开。抢占式多任务:允许多个任务同时运行,并根据预定义的优先级在它们之间切换。系统调用:为用户模式程序提供从内核请求服务的接口。 ELF 加载器:加载并执行 ELF(可执行和可链接格式)二进制文件。*计时器中断:处理计时器中断以安排任务和计时。

  • • 未来路线图:

开发人员对 Fusion 的未来有着雄心勃勃的计划,包括:按需分页:实现按需分页以有效管理内存使用。进程间通信 (IPC):实现不同进程之间的通信。磁盘 I/O:添加对磁盘驱动器读写数据的支持。文件系统:实现文件系统以组织和存储文件。输入设备:支持键盘和鼠标输入以实现用户交互。 Shell:提供命令行界面供用户与操作系统交互。* GUI:开发图形用户界面 (GUI) 以获得更具视觉吸引力的体验。*网络:实现网络连接以便与其他设备通信。

  • • 构建并运行 Fusion:

要构建 Fusion,您需要在系统上安装 Nim、LLVM(clang 和 lld)和 Just。该just build命令将编译操作系统。要运行 Fusion,请使用 QEMU(硬件模拟器)并执行该just run命令。

  • • 许可:

Fusion 在 MIT 许可下发布,允许自由使用、修改和分发。

github.com/khaledh/fus…

可视化图表通过表示状态机和请求流等复杂系统来增强代码理解和调试

  • • 类型系统中的状态机:

作者建议使用图表来表示类型系统中定义的状态机。这将使复杂的状态逻辑更容易理解,特别是对于那些不熟悉代码符号的人来说。

  • • 付款意向状态机示例:

Stripe 使用状态机图来说明 PaymentIntent 可以处于的不同状态以及每个状态对应的 UI 元素。 这种可视化的呈现方式可以帮助用户掌握支付流程及其各个阶段。

  • • 请求/响应流的泳道图:

泳道图非常适合可视化复杂的客户端-服务器请求架构。 每列代表提出请求的参与者(人或系统),框代表动作,箭头表示请求/响应流。 这些图表有助于理解请求的顺序、它们之间的依赖关系以及不同参与者的角色。

  • • 从端到端测试生成图表:

作者建议直接从服务的端到端测试生成泳道图。这将提供系统在各种场景下如何表现的直观表示。

  • • 分布式系统的泳道图:

Aphyr 使用修改后的泳道图来说明不同进程在分布式系统中如何查看状态,并突出显示竞争条件和时序问题等潜在问题。 这些图表通常将时间作为理解系统行为的关键因素。

  • • 双棘轮算法可视化:

Signal 的双棘轮算法文档利用图表来描述 Alice 和 Bob 之间加密和解密所涉及的步骤。 作者认为这些图表是该协议的真实来源,表明可视化编程可能是更适合此类复杂系统的方法。

blog.sbensu.com/posts/deman…

人工智能勘探导致在赞比亚发现大量铜矿

重大发现:硅谷公司 KoBold Metals 利用人工智能 (AI) 发现了可能是十多年来最大的铜矿。这座位于赞比亚的矿山一旦投入运营,预计每年将生产至少 30 万吨铜。

AI 优势: KoBold 的成功源于其对 AI 技术的创新使用。他们开发了复杂的算法,可以分析大量地质数据,以确定有希望的矿藏位置。这种方法大大提高了传统勘探方法的效率和准确性。

地缘政治影响:这一发现具有重大的地缘政治影响。铜是清洁能源技术的关键材料,美国和中国正在争夺全球铜供应的控制权。KoBold 的发现可能使美国在这场竞争中占据战略优势。

KoBold 的诞生: KoBold 成立于大约五年前,当时硅谷领导者意识到,随着电动汽车和可再生能源的兴起,对铜等关键矿物的需求不断增长。

他们是如何做到的:虽然文章没有深入探讨所使用的具体 AI 算法,但提到 KoBold 使用了介子探测器。介子是可以深入地球的亚原子粒子。通过分析介子如何散射并与不同的岩层相互作用,探测器可以帮助识别富含铜的地区。

独立核实:文章指出,独立的第三方评估在很大程度上证实了 KoBold 关于铜矿规模的调查结果。这增加了他们的说法的可信度。

www.nytimes.com/2024/07/11/…

Buzzinga.io 是一个在线平台,用于创建和托管可定制的 Jeopardy 游戏,具有内置蜂鸣器支持和自动记分功能

  • Buzzinga.io是一个旨在为游戏之夜、课堂、企业培训和社交活动等各种场合创建和托管定制的 Jeopardy 游戏的平台。
  • 主要特征:
    • • **无需注册:**用户无需注册即可直接开始创建游戏。
    • 内置蜂鸣器支持: 玩家可以使用手机作为蜂鸣器或将物理按钮连接到键盘键以获得更具互动性的体验。
    • • **自动记分:**平台自动跟踪每个团队的得分,无需手动跟踪。
    • • **轻松的主持人控制:**主持人可以清楚地看到每个线索的答案,并且可以轻松看到哪个团队正在选择下一个线索。
    • • **高度可定制:**用户可以使用文本、音频、图像和视频等各种媒体格式创建个性化的类别和线索。
  • • **可访问性:**该平台似乎是基于网络的,可通过标准网络浏览器访问。

buzzinga.io/

Pico.sh 是一个基于 SSH 的平台,用于使用补丁集进行协作 Git 开发

  • git-pr:一种新的 Git 协作服务

本文介绍了 git-pr,这是一项旨在简化 git 协作的新服务。它被称为“最简单的 git 协作工具”,并强调了其基于 SSH 的与 Web 服务交互的方法。

  • 补丁请求(现在称为补丁集)

git-pr 的核心概念围绕“补丁请求”,现已重命名为“补丁集”。这些补丁集代表对代码库所做的更改的集合。该服务旨在简化提议、审查和合并这些更改的过程。

  • Pico:通过 SSH 打开 Web 服务

git-pr 建立在 pico 之上,这是一个用于创建和管理可通过 SSH 访问的开放式 Web 服务的平台。这种方法允许开发人员使用熟悉的命令行工具与 git-pr 进行交互。

  • 使用 git-pr 的项目示例:

文本提供了使用 git-pr 的项目示例:* **pgs(PostgreSQL 支持):**一个功能请求,用于重写对 PostgreSQL 数据库的支持。* pobj(对象存储工具): 一个重构,用于改进对存储系统内对象大小的处理。* **send(SSH 文件传输中间件):**一个错误修复,确保在 SSH 传输期间正确关闭文件读取器。

  • 测试(测试存储库):

用于试验和演示补丁请求的专用存储库。

  • tunkit(SSH 隧道工具):

一个示例项目展示了如何使用 git-pr 管理 SSH 隧道配置。

  • rss(RSS Feed 支持):

git-pr 提供 RSS 订阅功能,允许用户订阅补丁集和项目的更新。可以使用公钥指纹构建订阅 URL 以进行身份验证。

pr.pico.sh/

对《皇帝:沙丘之战》进行逆向工程,以实现宽屏分辨率和在线多人游戏

  • • **问题:**这款游戏基于旧引擎开发,硬编码为 4:3 宽高比。简单地拉伸图像会导致失真。
  • Direct3D 7 破解:
    • • 作者发现 Emperor 使用的 Direct3D 7 实现对分辨率有一个硬编码限制,即 2048x2048。
    • • 他们通过直接修改游戏的可执行文件 (d3dim700.dll) 来删除分辨率检查,从而绕过了这一限制。这涉及在 DLL 文件中查找和替换特定字节序列。
  • 处理共享互联网组件:
    • • Emperor 依靠名为 WOLAPI.DLL 的共享组件实现在线功能。此 DLL 已注册为 COM 类库,这意味着它可以在整个系统范围内访问。
    • • 作者希望避免修改系统注册表(这需要管理员权限)并将更改与游戏进程隔离。
  • COM解决方案:
    • • 他们使用该OaEnablePerUserTLibRegistration函数仅为当前用户注册 WOLAPI.DLL,有效地隔离了对 Emperor 执行环境的更改。
  • 启动器用户界面:
    • • 使用 Win32 API 调用创建了一个简单的启动器,允许玩家输入 IP 地址进行在线游戏并调整基本设置。

wheybags.com/blog/empero…