分类: 开发

使用React Relay和Vite实现流式SSR

2025-01-17
使用React Relay和Vite实现流式SSR

Aqora团队分享了他们使用React Relay和Vite实现流式服务器端渲染(SSR)的经验。文章详细介绍了在整合React Router和Relay过程中遇到的挑战,例如Suspense与SSR的交互、Relay store的数据流以及元标签的处理等。他们通过使用`createStaticHandler`、`renderToPipeableStream`、`preloadQuery`和`react-helmet-async`等技术解决了这些问题,实现了高效的SSR,提升了SEO和性能。文章还提供了关键代码片段和架构决策,为开发者提供了宝贵的实践经验。

开发 SSR React Relay

2025 年 Linux 内核及开源领域的展望:机遇与挑战并存

2025-01-17

LWN.net 的 2025 年预测文章,对 Linux 内核、开源软件和硬件发展趋势进行了大胆预测。文章指出,可扩展调度类 (sched-ext) 将带来变革;Rust 代码将更多地应用于内核;新的后门攻击企图将被发现;单维护者项目面临风险;AI 生成代码的潜在问题将凸显;对免费生成式 AI 系统和维护者的支持将增加;云产品故障和数据泄露问题将持续;开源硬件将蓬勃发展;移动设备发行版将重获关注;地缘政治因素将影响开源社区。总而言之,2025 年开源领域机遇与挑战并存,需要社区共同努力,维护开源生态的健康发展。

开发

Nue:一个标准优先的Web框架,重塑前端开发

2025-01-16
Nue:一个标准优先的Web框架,重塑前端开发

Nue是一个全新的Web框架,它优先考虑Web标准,旨在解决前端开发的两大难题:工程复杂性和设计工程脱节。它摒弃了繁重的构建流程和抽象层,提倡使用语义化HTML、现代CSS和简洁的JavaScript,从而实现更快的开发速度和更优雅的设计。Nue支持多种设计系统,例如模仿Mies van der Rohe、Dieter Rams等大师风格的设计,只需一条命令即可生成不同风格的网站,极大提升了开发效率。未来,Nue还将推出单页应用功能,进一步完善前端开发体验。

开发 设计系统

Jamsocket推出交互式Yjs教程

2025-01-16
Jamsocket推出交互式Yjs教程

Jamsocket发布了一个名为Learn Yjs的交互式教程系列,旨在帮助开发者学习如何使用Yjs CRDT库构建实时协作应用程序。该教程从Yjs基础知识开始,涵盖了处理分布式应用程序状态的技术,并解释了CRDT的概念及其优势。教程包含可探索的演示和代码练习,并使用Y-Sweet(一个开源的Yjs服务器)提供实时协作体验。

开发 Yjs

MuJoCo Playground:简化机器人学习的开源框架

2025-01-16
MuJoCo Playground:简化机器人学习的开源框架

MuJoCo Playground是一个完全开源的机器人学习框架,基于MJX构建,旨在简化仿真、训练和从模拟到现实的转移。只需简单的安装(pip install playground),研究人员就能在单GPU上几分钟内训练策略。它支持多种机器人平台,包括四足机器人、人形机器人、灵巧手和机械臂,并支持基于状态和像素输入的零样本模拟到现实转移。这得益于其集成的物理引擎、批量渲染器和训练环境。MuJoCo Playground是社区的共同努力,希望它能为研究人员和开发者带来价值。

100种语言攻克100个Project Euler问题

2025-01-16
100种语言攻克100个Project Euler问题

一位程序员耗时一年多,用100种不同的编程语言解决了Project Euler的前100个问题!从常见的Python、Java到晦涩的ESOLANG,他都尝试了一遍,展现了惊人的毅力与编程造诣。这个项目不仅体现了对编程语言的深入理解,更是一次充满挑战和乐趣的学习之旅,为编程爱好者提供了宝贵的经验和启示。

开发 Project Euler

在 macOS/aarch64 上移植 GNAT Ada 编译器

2025-01-16

博主在新的 MacBook Pro 上成功移植了 GDC 编译器后,着手移植 GCC 套件中剩余的 Ada 和 Go 编译器。由于 macOS 上尚无成熟的 Gccgo 编译器,博主决定先移植 GNAT Ada 编译器。由于缺乏预编译包,博主使用了虚拟机和 Alire 工具获取 x86_64 版本的 GNAT 编译器,并通过两阶段编译,最终成功构建了 macOS/aarch64 原生 GNAT 编译器,并将其与 GDC 编译器整合到一个 GCC 套件中。

开发 Ada编译器

Google AI 将代码迁移时间缩短一半

2025-01-16
Google AI 将代码迁移时间缩短一半

Google 利用内部研发的 AI 工具,成功将代码迁移时间缩短一半。这项技术主要应用于 Google Ads、搜索、Workspace 和 YouTube 等产品的代码迁移,例如将 32 位 ID 迁移到 64 位 ID,以及 JUnit 测试库和时间库的升级。虽然 AI 生成的代码需要人工审核,但其效率显著提高,将原本需要数百软件工程师年才能完成的任务缩短至数月。Google 强调,AI 工具应与传统方法结合使用,以最大限度地发挥其效用并控制成本。

开发

Git 拯救指南:告别 Git 的痛苦时刻

2025-01-16

这篇博文以幽默诙谐的口吻,分享了作者在使用 Git 时遇到的各种棘手问题以及解决方法。文章涵盖了撤销提交、修改提交信息、误提交到错误分支、恢复文件等常见场景,并提供了简洁易懂的命令和步骤。作者鼓励读者分享自己的 Git “惨痛经历”,共同学习和进步。

开发

GitHub免费提供arm64运行器!

2025-01-16
GitHub免费提供arm64运行器!

GitHub宣布在公共仓库中免费提供基于arm64架构的Linux托管运行器(目前为公开预览版)。这些运行器基于Cobalt 100处理器,拥有4个虚拟CPU,性能比上一代Arm虚拟机提升了40%。Arm原生开发者现在可以在arm64架构下进行构建、测试和部署,无需虚拟化。只需在公共仓库的工作流程中添加`ubuntu-24.04-arm`或`ubuntu-22.04-arm`标签即可使用。

Shopify五年React Native之旅:成功、经验与未来

2025-01-16
Shopify五年React Native之旅:成功、经验与未来

Shopify分享了五年来使用React Native的经验。起初为了提高效率、人才流动性和价值交付,Shopify将所有移动应用迁移到React Native。迁移成功,应用性能优异(屏幕加载<500毫秒,崩溃率<0.1%)。过程中,他们学习到React Native的快速、热重载、TypeScript提升人才流动性等优点,但也面临调试困难、更新耗时、依赖第三方库等挑战。Shopify强调原生开发的重要性,并通过共享基础设施、培训等方式提升团队能力。未来,他们将继续与Meta合作,推动React Native发展。

开发

轻量级持久化执行库DBOS Transact:用TypeScript构建可靠的后台任务

2025-01-16
轻量级持久化执行库DBOS Transact:用TypeScript构建可靠的后台任务

DBOS Transact是一个用TypeScript编写的轻量级持久化执行库,它利用Postgres数据库来实现程序执行状态的持久化。这意味着即使程序中断或崩溃,也能从中断处自动恢复。它能轻松地解决许多常见问题,例如编排长时间运行或关键业务流程、运行可靠的后台作业、精确一次地处理事件以及构建容错的分布式任务队列等。DBOS Transact易于使用,只需安装并用装饰器注释程序即可。它不需要其他依赖项,是一个可以直接添加到任何TypeScript应用程序中的库,例如Next.js应用。

光线追踪技术里程碑之作:《基于物理的渲染:从理论到实践》

2025-01-16

《基于物理的渲染:从理论到实践》一书,是计算机图形学领域的经典之作,它以严谨的数学理论和可执行的代码,详细阐述了现代逼真渲染系统的构建方法。该书不仅在电影和游戏制作中得到广泛应用,也深刻影响了产品设计和建筑领域。作者团队更凭借该书对电影制作的贡献荣获了奥斯卡奖。如今,该书的第三版和第四版全文已免费开放,为广大开发者提供了学习和实践的宝贵资源。

开发

YC孵化器公司Artie招聘分布式系统创始工程师

2025-01-16
YC孵化器公司Artie招聘分布式系统创始工程师

YC孵化器公司Artie正在招聘一位专注于分布式系统的创始工程师。Artie是一个实时数据库复制解决方案,使用Kafka和CDC技术,每月处理超过100亿行数据。该职位要求候选人具备扎实的计算机科学基础,能够胜任多种角色,并熟悉异步系统和相关技术(如gRPC,Kafka,Kubernetes等)。Go语言经验优先,但并非必需。这是一个极具挑战性的机会,你将参与构建下一代数据平台,目标是将数据延迟降至零,同时兼顾易用性和可扩展性。

开发

用LLM进行测试驱动开发:兼顾趣味与效益

2025-01-16

本文探讨了结合大型语言模型(LLM)进行测试驱动开发(TDD)的方法。作者发现,LLM能够显著提升TDD效率,它可以根据规范生成单元测试和代码实现,并通过迭代完善代码,减少了反复调试的负担。作者还开发了一个自动化流程,将IDE、终端和聊天界面集成,进一步提升效率。虽然LLM存在不可靠性,但通过人工审查和补充测试用例,可以有效降低风险。作者建议将此方法应用于项目结构良好的项目,并强调保持较低的认知负荷,以促进代码的可维护性。

开发

Replit CEO:AI已让专业程序员不再重要

2025-01-16
Replit CEO:AI已让专业程序员不再重要

Replit CEO Amjad Masad近日宣布,借助Anthropic的Claude 3.5 Sonnet模型,其公司新产品“Agent”能够仅凭自然语言提示生成可运行的软件应用,这使得Replit的营收在过去六个月增长了五倍。Masad认为,AI的快速发展使得专业程序员不再是必需的,未来的软件开发将由更多非专业人士使用AI工具完成。他甚至提出了“Amjad定律”,即学习编程的回报率每六个月翻一番。这一趋势预示着软件开发的门槛将大幅降低,但也引发了关于AI模型可持续竞争优势的讨论。

开发 Replit

开源项目:awesome-launch 助力你的副项目推广

2025-01-16
开源项目:awesome-launch 助力你的副项目推广

还在为你的副项目寻找曝光机会而苦恼吗?KingMenes 创建的 awesome-launch 项目是一个开源目录,汇集了众多友好社区,旨在帮助你轻松推广副项目。它涵盖了Reddit、Twitter、LinkedIn、Hacker News、Product Hunt等多个平台,并细分了各个领域的社区,例如Indie Hackers、Dev.to等,方便你根据项目类型选择合适的推广渠道。此外,它还列出了Beta测试平台、众筹平台等其他资源,可谓是副项目推广的宝典。

Nepenthes:一个反爬虫陷阱

2025-01-16

Nepenthes是一个旨在捕获网络爬虫的工具,特别是针对为大型语言模型(LLM)抓取数据的爬虫。它通过生成无限的页面序列,每个页面都包含数十个链接,这些链接会引导爬虫回到陷阱中。页面是随机生成的,但以确定性方式生成,使其看起来像永不改变的静态文件。Nepenthes还会添加延迟来阻止爬虫拖慢服务器速度,并消耗爬虫的时间。此外,还可以添加可选的马尔可夫文本生成功能,为爬虫提供一些数据,希望能加速模型崩溃。此工具会消耗大量CPU资源,尤其是在启用马尔可夫模块的情况下。部署前请谨慎考虑。

开发

FOSDEM 邀请引发争议:亿万富翁 Dorsey 的演讲引爆自由软件社区

2025-01-16

前 Twitter CEO Jack Dorsey 将在 FOSDEM 大会上发表主题演讲,引发自由软件社区强烈抗议。Dorsey 因其在 Twitter 的行为以及与 Block 公司的关联而受到批评,批评者认为他不值得获得这一平台。文章作者呼吁抵制 Dorsey 的演讲,并组织了一场静坐活动,以表达对 Dorsey 及其商业行为的不满,并倡导将资金用于支持自由和开源软件社区。

开发 Jack Dorsey

F# 的未开发宝藏:Typed Stack Traces (TST)

2025-01-16

本文探讨了 F# 中鲜为人知的 Typed Stack Traces (TST) 技术,它通过类型系统追踪错误,解决了大型单体应用中错误解析和代码维护难题。作者认为 TST 结合领域驱动设计 (DDD) 和一种名为“约束驱动开发 (CDD)”的新方法,可以彻底改变软件架构和开发流程,让开发人员回归单体架构和瀑布式项目管理,从而简化 DevOps 和 SRE 的工作。TST 利用 F# 的联合类型和模式匹配能力,创建清晰的错误类型树,提升代码可读性和可维护性。文章以一个面试练习为例,详细解释了如何使用 TST、DDD 和 CDD 来构建一个简单的 REST API。

开发 TST

C语言内存管理初探:堆栈与内存泄漏

2025-01-16
C语言内存管理初探:堆栈与内存泄漏

本文深入浅出地讲解了C语言的内存管理机制,从程序如何使用内存开始,逐步阐述了堆栈的作用、malloc()和free()函数的用法,以及内存泄漏和Use After Free (UAF)漏洞的产生原因。作者通过一个简单的例子,展示了如何手动管理内存,并解释了内存分配器(malloc)的内部工作原理,包括内存碎片问题。文章适合有一定编程基础的读者阅读,有助于加深对内存管理的理解,避免常见的内存错误。

开发

在RK3588 SBC上搭建基于ZFS的QEMU虚拟化环境

2025-01-16

本文介绍了如何在BananaPi M71 2 (RK3588)单板计算机上,使用Armbian系统构建一个基于ZFS的QEMU虚拟化环境。作者详细描述了从构建Armbian镜像、烧录镜像、准备存储(使用NVMe SSD和ZFS zpool)、配置libvirtd以及运行虚拟机等步骤。文章还指出了RK3588与NVMe驱动兼容性方面的一些挑战,并提供了解决方案。最终,作者成功搭建了一个小型私有云平台,能够运行各种虚拟机,如Web服务器、数据库等,实现工作负载隔离和资源控制。

开发

让用户参与解决自身问题:超越算法的公共交通路线规划

2025-01-16

作者抱怨现有的地图应用在规划公共交通路线时过于依赖算法,忽略了用户的实际需求和经验。他建议地图应用允许用户自定义路线方案,例如指定特定的公交线路组合,并将其纳入路线规划的比较选项中。这类似于垃圾邮件过滤器的“标记为垃圾邮件”和“标记为非垃圾邮件”功能,通过用户反馈来改进算法。作者认为,即使存在隐私问题,用户参与也能提升路线规划的精准度和用户满意度,并最终改进算法。

开发

WebAssembly 的 Memory64:速度与内存的权衡

2025-01-16
WebAssembly 的 Memory64:速度与内存的权衡

WebAssembly 最近引入了 Memory64,支持 64 位指针。然而,令人意外的是,Memory64 并没有带来性能提升,反而由于硬件、操作系统和 WebAssembly 本身的设计限制,导致运行速度比 32 位模式慢 10% 到 100% 以上。这是因为 32 位模式下浏览器可以预留 4GB 内存,从而避免边界检查,而 64 位模式下则必须进行边界检查,这带来了额外的计算开销。因此,除非需要超过 4GB 内存,否则 Memory64 并非最佳选择。未来,硬件和 WebAssembly 的改进可能提升 Memory64 的性能。

开发 Memory64

字节队列限制:一段鲜为人知的网络优化技术传奇

2025-01-16
字节队列限制:一段鲜为人知的网络优化技术传奇

本文讲述了Linux内核中一个鲜为人知的网络优化技术——字节队列限制(BQL)的故事。BQL通过动态调整设备队列限制来解决缓冲区膨胀问题,从而降低延迟。作者从其在Sun Microsystems时期学习到的两个关键概念出发,讲述了BQL的设计理念、实现方法和算法细节,并用图表和数据分析了BQL带来的性能提升和潜在不足。虽然新硬件可能会逐渐取代BQL,但它在低端设备上的应用价值依然显著。

Docker Desktop macOS恶意软件报告导致启动失败

2025-01-16

Docker Desktop for macOS用户近日遭遇启动问题,macOS系统将`com.docker.vmnetd`或`com.docker.socket`报告为恶意软件。Docker官方已确认问题根源在于部分已安装文件的签名错误,并发布了补丁程序,建议用户更新至最新版本或手动替换相关文件。此问题已得到解决,但Docker仍在持续监控以防出现新的问题。

开发

Jacob Dement 的惊艳作品集:一位全栈工程师的旅程

2025-01-16

Jacob Dement 的作品集展示了一位经验丰富的全栈工程师的才华。从精心设计的网站到复杂的应用,他展示了对前端、后端和数据库技术的全面掌握。作品集不仅仅是代码的集合,更是他技术能力和创造力的完美体现,让人印象深刻。 其中包含了多个项目案例,展示了他运用各种技术栈解决实际问题的经验。无论是对技术细节的追求,还是对用户体验的重视,都体现了其专业水准。

开发

Apache DataFusion:一个强大的Rust编写的可扩展查询引擎

2025-01-16

Apache DataFusion是一个用Rust编写的可扩展查询引擎,它使用Apache Arrow作为其内存格式。它提供SQL和DataFrame API,支持CSV、Parquet、JSON和Avro等多种数据格式,并具有出色的性能和可定制性。DataFusion拥有完整的查询规划器、列式、流式、多线程、矢量化执行引擎以及分区数据源,几乎可以在所有方面进行定制,包括添加数据源、查询语言、函数和自定义运算符。它还拥有相关的子项目,例如DataFusion Python、DataFusion Ray和DataFusion Comet,分别提供Python接口、分布式版本和Apache Spark加速器。

dnSpyEx:.NET调试器和反编译器的强势回归

2025-01-15
dnSpyEx:.NET调试器和反编译器的强势回归

dnSpyEx是广受欢迎的.NET调试器和程序集编辑器dnSpy的非官方延续版本。它允许用户编辑和调试.NET和Unity程序集,即使没有源代码也能进行操作。主要功能包括调试和编辑.NET及Unity程序集、支持深色和浅色主题,以及强大的反编译、十六进制编辑和调试功能,例如断点设置、变量窗口、调用堆栈和异常处理等。dnSpyEx还提供公共API,方便扩展和脚本编写,并支持多种语言的翻译。

开发
1 2 183 184 185 187 189 190 191 213 214