Docker-OSX 在 Docker 容器内实现 macOS 虚拟化;Polylith:用于使用可组合组件构建可维护、可测试和可扩展的后端系统

330 阅读13分钟

Docker-OSX 在 Docker 容器内实现 macOS 虚拟化,实现无头操作、SSH 访问和 X11 转发

  • Docker-OSX:在容器中运行 macOS

本指南介绍如何使用该项目在 Docker 容器中设置和运行虚拟 macOS 环境docker-osx。它利用 KVM(基于内核的虚拟机)实现接近原生的性能。

  • • **系统资源:**本指南展示了如何清除缓冲区和缓存以释放系统资源(RAM 和交换)。
  • 音频支持: PulseAudio 用于 Docker-OSX 容器内的声音。虽然某些音频驱动程序缺乏编解码器支持,但控制器组件仍可正常工作。
  • Docker 运行命令:
    • • 使用 Unix 套接字进行通信的基本 PulseAudio 设置。
    • • 使用 调试 PulseAudio pactl list
    • • 在 WSLg(适用于 Linux 的 Windows 子系统 - 图形化)中使用 PulseAudio。
  • 端口转发:ADDITIONAL_PORTS您可以使用环境变量和标志将其他端口从主机转发到 Docker-OSX 容器-p
  • • **网络:**桥接网络通常默认启用,允许从容器内连接互联网。可能会出现 Ping 问题,因此建议进行在线讨论以进行故障排除。
  • • **IPv4 转发:**建议对使用桥接网络连接的远程 Docker-OSX 安装启用 IPv4 转发。但是,即使在容器内使用 VPN,也可能会暴露主机的 IP 地址。
  • 经过身份验证的访问(ticket):
    • • ticket通过在允许远程连接到您的 macOS 环境之前要求进行身份验证来增强安全性。
  • • **Docker 命令结构:**运行 macOS 镜像的核心命令包括:
    • --device /dev/kvm:授予对硬件虚拟化功能的访问权限。
    • -pSPICE(远程显示)和 SSH 的端口映射( )。
    • DISPLAY为图形应用程序设置环境变量。
  • • **使用 Remote Viewer 连接:**运行 Docker 命令后,使用“remote-viewer”等 SPICE 客户端连接到容器。
  • • **从容器创建镜像:**您可以使用创建已配置容器的镜像快照docker commit
  • • **运行镜像:**使用类似的 Docker 命令运行新创建的镜像,包括设备访问和 X11 转发的选项。
  • • **使用预构建的镜像:**指南中提到了预配置的镜像,如sickcodes/docker-osx:autosickcodes/docker-osx:latest
  • • **启用 SSH:**在容器中安装 macOS,使用 SSH 启用“共享”设置,然后使用 进行连接ssh user@localhost -p 50922
  • • **自动启动到 macOS:**添加-e NOPICKER=true到您的 Docker 命令以跳过初始设置步骤并直接启动到 macOS。

github.com/sickcodes/D…

由于付费许可突然变更和短时间通知,开发人员停止依赖 Yelp API 的 Mac 应用程序

  • 应用程序功能: “餐厅”应用程序严重依赖 Yelp 的 API 为用户提供餐厅信息。
  • 突然的 API 变化: Yelp 突然从免费 API 模式转变为付费许可计划,在禁用 API 密钥之前仅提前四天通知开发人员。
  • • **对应用程序的影响:**这一变化迫使 Kopec 从 Mac App Store 中移除“餐厅”,因为他无法证明对于销量较低的应用程序而言 API 的成本是合理的。
  • 用户体验后果: 最近购买了该应用程序的用户得到的是无法运行的产品,由于 Mac App Store 平台的限制,Kopec 只能让他们向 Apple 申请退款。
  • • **API 依赖风险:**这次经历凸显了围绕第三方 API 构建应用程序的固有风险。开发人员完全受制于 API 提供商的决定,这可能会严重影响他们的产品和用户。
  • 替代 API: Kopec 曾考虑改用 Google Places API,但考虑到该应用有限的收入潜力,他认为这太耗时且成本太高。
  • • **货币化模式:**此次事件促使 Kopec 开始反思应用货币化策略。他质疑一次性购买模式是否适用于依赖持续第三方服务的应用。在这种情况下,基于订阅的模式可能更合适,但它给低成本应用的定价带来了挑战。

www.observationalhazard.com/2024/07/aft…

使用 Rust 为 Lox 解释器实现标记和清除垃圾收集器需要仔细考虑内存安全性

  • • 作者讨论了在 Rust 中实现 Lox 解释器,强调了 Rust 的内存模型给垃圾收集(GC)带来的挑战。
  • • 他们提出了一种简单的 GC 方法,即忽略 Rust 的一些安全保证。此方法利用原始指针和不安全的代码块来管理对象生命周期。
  • • 作者认为这种方法是合理的,因为在虚拟机的受控环境中,GC 确保不会释放任何正在使用的对象,因此取消引用原始指针是“安全的”。他们承认,悬垂指针引起的任何问题都表明 GC 实现本身存在错误。
  • • 管理堆对象的核心数据结构是一个Heap结构体。它包括一个驻留字符串表和一个用于跟踪分配对象的链表。
  • • 提供Heap对象分配(alloc)、字符串驻留(intern)、垃圾收集清除(sweep)和释放(dealloc)的方法。
  • • 作者强调,虽然这种方法很简单,但在 Rust 中还有更强大的方法来实现 GC,比如利用类型Pin<T>并仔细管理生命周期以证明安全性。
  • • 他们提到了在 Rust 中提供 GC 作为库的持续研究和开发,并引用了 shifgrethor 的博客系列和总结这些进展的文章等资源。

www.tunglevo.com/note/crafti…

AccessOwl:发现和管理影子 IT 应用程序和用户访问以增强安全性

  • 什么是 AccessOwl? AccessOwl 是一种身份治理和管理 (IGA) 工具,旨在帮助 IT 和安全团队管理“影子 IT”——组织内使用的未经批准的软件应用程序。
  • 主要特征:
    • • **影子 IT 扫描:**扫描您的工作区(可能是基于云的应用程序和服务)以识别秘密使用的 SaaS 应用程序及其有权访问的权限(OAuth 范围)。
    • • **数据泄露预防:**通过发现隐藏的应用程序,AccessOwl 有助于防止未经授权的应用程序访问敏感信息时可能发生的潜在数据泄露。
    • • **离职保证:**确保员工离职期间所有用户帐户及其相关应用程序访问权限均已正确停用,从而降低安全风险。
  • 好处:
    • • **可见性:**提供组织内使用的所有 SaaS 应用程序的清晰视图,甚至包括那些未经官方批准的应用程序。
    • • **控制:**允许您管理用户权限并撤销对未经授权的应用程序的访问权限。
    • • **安全性:**降低数据泄露的风险并确保遵守安全政策。
  • 信任与可信度:
    • • AccessOwl 在流行软件评论平台 G2 上获得了 5/5 的评分。
    • • Quandri 工程主管 Tony Zoght 的评价强调了 AccessOwl 在发现隐藏应用程序方面的有效性。
  • 透明度和支持:
    • • 该网站解答了有关 AccessOwl 的功能和安全性的常见问题:
      • • AccessOwl 需要什么权限?
      • • 将我的组织连接到 AccessOwl 是否安全?
      • • AccessOwl 如何检测应用程序和用户访问?
      • • AccessOwl 可能会错过应用程序或用户访问吗?
  • • **行动号召:**该网站鼓励用户通过预订演示“轻松发现和管理您的影子 IT”。

www.accessowl.io/scan

记忆和系统化通过培养跨领域的自主性来激发创造力

  • • **创造力源于内化知识:**马修斯认为,真正的创造力不是自发的灵感,而是以新颖的方式将现有概念联系起来。这需要在特定领域有扎实的知识和理解基础。
  • • **记忆是学习和释放创造力的关键:**他提出了一种快速学习任何事物的两步方法:
    1. 1. 记住某一主题的基本模式和分类。
    2. 2. 通过接触各种各样的例子来了解这些模式在现实世界中是如何体现的。
  • • **东方与西方的学习方法:**马修斯对比了东方文化对记忆的重视(例如公文式教育)与西方教育对“理解”的重视。他认为,两者都很有价值,但真正的理解往往源自坚实的记忆知识基础。
  • • **创造力是多领域专业知识的产物:**马修斯认为,要变得更有创造力,就需要发展多领域的专业知识。这样才能实现思想的交叉融合,创造出真正新颖的概念。
  • • **多领域创造力的例子:**他列举了 Lil Nas X 的“Old Town Road”(融合嘻哈和乡村音乐)和他自己的初创公司 Dopplio(结合信息安全、魔术和销售)等例子。
  • • **创造力的未来:**马修斯预测,随着信息获取渠道的增多,创造力将越来越依赖于综合不同领域知识的能力。他将这种趋势称为“重复专业化”,即个人成为多个看似不相关的领域的专家。

shwin.co/blog/creati…

作者主张在技术文档中使用 reStructured Text (rST) 而不是 markdown,因为它具有可扩展性并且支持预渲染转换

  • • 作者强烈倾向于使用 reStructured Text (rST) 而不是 markdown 来编写技术文档,特别是在编写像《程序员的逻辑》这样复杂的书籍时。
  • • rST 的优势在于其结构化方法。它将文档表示为对象(节点)树,从而实现 markdown 难以实现的强大扩展和转换。
  • • Markdown 本质上是轻量级 HTML,这使其在高级用例中的灵活性较差。
  • • 作者通过解释他们如何使用 rST 创建一个管理系统来管理“程序员的逻辑”中的练习和解决方案来证明这一点。这涉及到自定义节点和预渲染步骤,而这些步骤在 markdown 中并不那么简单。
  • • 尽管承认 rST 存在美学缺陷,但作者认为,它的强大功能和灵活性足以弥补这些缺陷,尤其是对于复杂的项目而言。
  • • 如果美观是主要考虑因素,他们建议探索 AsciiDoc 或 MyST 等替代方案。
  • • 作者最后简要介绍了《程序员的逻辑》,这是一本旨在展示形式逻辑在软件工程中的实际应用的书。

buttondown.email/hillelwayne…

Embedding.io 通过抓取、分块和矢量化内容以便通过 API 进行查询,将网站转变为 LLM 可访问的知识库

  • • Embedding.io 是一种服务,可让您将任何网站转变为大型语言模型 (LLM) 的可搜索知识库。
  • 怎么运行的:
    1. 1. **创建集合:**首先使用他们的 API 或 Web 界面创建一个集合。此集合将保存您想要让 LLM 访问的网站或页面。
    2. 2. **提取内容:**添加要包含在收藏中的网站的 URL。Embedding.io 处理抓取、将内容分块为可管理的部分,并将其转换为矢量嵌入(捕捉文本含义的数字表示)。
    3. 3. **查询您的收藏:**一旦您的收藏准备就绪,您就可以使用他们的 API 询问有关内容的问题。API 将根据您的查询搜索相关内容并返回最接近匹配的结果。
  • 公共收藏: Embedding.io 提供一系列预先构建的公共收藏,涵盖 WordPress 文档、Laravel 框架文档以及 Paul Graham 和 Tim Ferriss 等知名人物的著作等主题。
  • 价钱:
    • • **免费套餐:**每月最多可处理 1,000 页,每月更新一次。您可以访问 API 来查询您的收藏。
    • • **企业层:**提供无限制页面处理、每小时更新和 API 访问的自定义价格。

www.embedding.io/

FakeTraveler 是一款开源 Android 应用程序,可让用户模拟其设备的位置,以保护隐私或进行测试

  • 用途: FakeTraveler 可让您欺骗应用程序,让它们认为您身处其他地方。出于隐私原因(隐藏您的真实位置)或测试基于位置的应用程序,此功能非常有用。
  • 怎么运行的:
    • • 您与应用程序内的地图界面进行交互。
    • • 长按所需位置,或输入经纬度坐标。
    • • 点击“应用”开始模拟所选位置。
    • • 附加菜单(通过“...”访问)允许您设置虚假位置持续的时间间隔。
  • 技术要求:
    • • 为了正常运行,FakeTraveler 需要获得模拟您设备位置的权限。
    • • 您必须在 Android 设备上启用“开发者选项”,并选择 FakeTraveler 作为负责处理模拟位置的应用程序。
  • 主要特征:
    • • 用户友好的地图界面,用于选择虚假地点。
    • • 可选择手动输入经度和纬度坐标。
    • • 能够设置位置欺骗的时间长度。
  • 许可和归属:
    • • FakeTraveler 是在 GNU 通用公共许可证 v3 下发布的,这意味着它是免费的开源软件。
    • • 该应用图标是基于 First Styles 图标(根据 CC 3.0 BY 授权)的衍生作品。FakeTraveler 的开发者 Matías Castillo Felmer 使用 Android Asset Studio 创建了最终启动器图标,并根据 CC 3.0 BY 授权。

github.com/mcastillof/…

Trail of Bits 强调 Homebrew 安全审计和分类工作

  • • Trail of Bits 对 Homebrew(macOS 和 Linux 的流行软件包管理器)进行了审核。
  • • 审计的重点是引入构建来源以增强安全性和透明度。
  • • 构建来源涉及跟踪用于构建软件包的软件组件的来源和完整性。这有助于确保用户安装的是受信任的软件,并能识别潜在的漏洞或篡改。
  • • Trail of Bits 强调了构建来源对于 Homebrew 等开源项目的重要性,这些项目依赖于广泛社区的贡献。
  • • 此次审计旨在通过更轻松地验证已安装软件包的真实性和完整性来改善 Homebrew 的安全态势。

blog.trailofbits.com/2024/07/30/…

Polylith 是一种与语言无关的软件架构,用于使用可组合组件构建可维护、可测试和可扩展的后端系统

  • • **Polylith 是一种软件架构,旨在解决构建后端系统时遇到的常见挑战。**这些挑战包括难以跨团队共享代码、缺乏共享的架构语言、代码库复杂且难以更改以及测试/部署周期缓慢。
  • Polylith 通过引入“类似乐高的积木”的概念解决了这些问题:这些是可组合的、独立的代码单元,可以轻松地在不同的服务和团队之间共享和重用。
  • • **砖块的选择决定了每个工件的功能和暴露程度。**这种模块化允许组件的灵活性和独立开发。
  • Polylith 由一个工具支持(目前适用于 Clojure 和 Python),可以简化开发:
    • • 它可以立即创建构建块。
    • • 它支持增量测试,只关注受最近更改影响的代码。
    • • 它提供项目可视化,以便更好地理解系统的结构。
  • Polylith 与语言无关:虽然目前使用 Clojure 和 Python 工具实现,但其核心原理可以应用于其他编程语言。
  • 关键概念:
    • • **工作区:**所有 Polylith 组件所在的中央容器。
    • • **组件:**代表特定功能的独立代码单元(“砖块”)。
    • • **基础:**一个专门的组件,它公开公共 API 以便与其他组件或外部系统交互。
    • • **项目:**由一个或多个组件组成的可部署工件,旨在实现特定功能。
    • • **开发项目:**开发人员处理单个组件并将其组装成项目的环境。
  • • **Polylith 强调设计的简洁性,旨在创造愉快的开发体验。**它通过其共享的架构语言促进增量测试、模块化和清晰的沟通。

polylith.gitbook.io/polylith