领域驱动设计:我为什么不用它
本文作者Tony Marston是一位经验丰富的软件开发人员,在长达40年的职业生涯中,他积累了丰富的构建企业级应用程序的经验。他在这篇文章中阐述了他为什么不使用领域驱动设计(DDD)的原因。他认为DDD的一些建议过于强调面向对象的设计理论,而忽略了数据库设计的重要性以及在大型系统中代码可重用性的价值。他更倾向于一种分层架构,为每个数据库表创建一个单独的类,并使用继承和模板方法模式来实现代码重用。他认为这种方法更符合实际项目的需求,并提高了开发效率。
阅读更多
本文作者Tony Marston是一位经验丰富的软件开发人员,在长达40年的职业生涯中,他积累了丰富的构建企业级应用程序的经验。他在这篇文章中阐述了他为什么不使用领域驱动设计(DDD)的原因。他认为DDD的一些建议过于强调面向对象的设计理论,而忽略了数据库设计的重要性以及在大型系统中代码可重用性的价值。他更倾向于一种分层架构,为每个数据库表创建一个单独的类,并使用继承和模板方法模式来实现代码重用。他认为这种方法更符合实际项目的需求,并提高了开发效率。
阅读更多
Ente照片应用采用独特的本地机器学习技术,在用户设备上运行模型,而非云端,从而确保用户照片的端到端加密和隐私安全。该技术克服了计算能力有限、平台多样化以及ML库访问受限等挑战,实现了照片索引、聚类、语义搜索和人脸识别等功能。虽然本地处理会带来一些技术难题,但Ente通过优化模型、算法和图像处理流程,并利用ONNX Runtime等开源工具,最终实现了跨平台一致且高效的体验,让用户可以安全地探索和管理个人回忆。
阅读更多
Servo是一个由Rust编写的高性能网页渲染引擎,支持WebGL和WebGPU,可用于桌面、移动和嵌入式应用。由Mozilla Research于2012年创建,它致力于成为轻量级Web技术的替代方案,并推动Web标准发展。2020年,Mozilla将Servo的管理权移交给Linux基金会,2023年,Igalia加入并将其迁移至Linux基金会欧洲分会。该项目将利用资金维护基础设施,确保引擎版本可用并与Web平台测试集成,未来还将用于改进和开发工作。
阅读更多
arXivLabs是一个框架,允许合作者直接在arXiv网站上开发和分享新的功能。参与arXivLabs的个人和组织都秉持着开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法能为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!
阅读更多
本文回顾了任天堂Game & Watch系列掌上游戏机的历史,从1980年的Silver系列到1980年代末的多个系列,包括Gold系列、Wide Screen系列、Multi Screen系列等。这些游戏机以其创新的设计、经典的游戏和精美的外观而闻名,例如采用金属面板、双屏设计和彩色LCD屏幕等。Game & Watch系列是任天堂游戏史上的重要里程碑,为后来的掌机市场奠定了基础。
阅读更多
Voxon公司利用其突破性的VLED技术,创造出实时交互式三维体积全息图,数百万个光点在三维空间中漂浮,带来身临其境的360度全视角体验。其产品VX2和VX2-XL分别面向个人和商业用户,提供高质量的体积全息显示,适用于娱乐、通信和数据可视化等领域。Voxon还积极寻求合作伙伴,共同探索体积全息技术的更多应用场景,开启未来娱乐和数据展示的新篇章。
阅读更多
篮球运动正经历一场由数据分析驱动的革命。从依靠直觉到精细化数据决策,从“全能型”球员到“特化型”阵容,变化深刻。三分球成为进攻核心,3D球员(三分和防守兼备)成为香饽饽。科技的应用,例如运动捕捉和数据分析系统,让教练可以精确分析球员的每一个动作,最大化球权利用率。虽然这种数据驱动的方式让比赛更具可预测性,但也引发了人们对篮球未来走向的思考。
阅读更多
克里姆林宫秘密地利用风险极高的预算外融资来支付大部分战争费用,这一策略长期被西方忽视。这份报告揭示了俄罗斯政府通过强制银行向国防承包商提供优惠贷款,累计达2100亿至2500亿美元,导致通货膨胀飙升和系统性信用危机风险。这种隐秘的债务累积已成为莫斯科的金融困境,为乌克兰及其盟友提供了新的谈判筹码。
阅读更多
UNIX 共同作者 Ken Thompson 在其论文“Reflections on Trusting Trust”中讲述了一个惊人的故事:他如何在 C 编译器中植入后门,并在编译登录程序时自动插入该后门,从而绕过系统安全。更令人震惊的是,该后门能够自我复制,即使源代码中删除了后门代码,编译器也能在编译过程中重新插入它。这个故事深刻地阐述了对软件信任的局限性,以及即使在源代码级别进行审查也无法完全保证软件安全的现实。
阅读更多
桑迪亚国家实验室正在测试一种将计算机服务器完全浸没在非导电冷却液中的新型冷却系统。该系统能够捕获100%的废热,从而减少70%的能源消耗,并显著降低对水的需求。这项技术有望彻底改变数据中心的设计,解决高性能计算日益增长的电力和水资源需求问题。该实验室与Submer Technologies公司合作,对该系统进行全面测试,预计秋季将发布案例研究。
阅读更多
本文深入探讨了Hilbert曲线,一种具有良好聚类属性的空间填充曲线。作者通过将三维RGB颜色空间的Hilbert曲线投影到二维平面上,创造性地将其可视化。该可视化效果呈现出独特的艺术美感,同时直观地展现了Hilbert曲线的聚类特性。文章还介绍了Hilbert曲线的算法实现,并提供了一个Python项目,用于生成和可视化各种空间填充曲线。
阅读更多
本文讲述了作者如何优化Ruby的JSON gem,使其成为速度最快的JSON解析器和生成器。作者并非使用复杂技术,而是通过剖析代码,应用简单的优化,例如避免冗余检查、优先检查更可能成立的条件、减少设置成本以及使用查找表等。这些优化不仅适用于C代码,也适用于Ruby代码。最终,这些优化显著提升了JSON gem的性能,使其与oj等替代方案相比毫不逊色,减少了使用monkey patch的必要性,并解决了oj带来的稳定性和兼容性问题。
阅读更多
本文介绍了如何在Bevy 0.15 Web应用中集成Web原生API,实现拖放图像的功能。文章详细讲解了使用wasm-bindgen、gloo和bevy_channel_trigger等工具,在Rust代码中处理DOM事件、提取文件数据、并将数据传递给Bevy引擎进行图像加载和渲染的过程。整个过程类似于JavaScript中的实现,但使用了Rust的特性,并解决了错误处理和事件监听器内存泄漏等问题。最终实现了将拖放的PNG图片加载到Bevy应用中并显示的效果。
阅读更多
本文深入探讨了鲜为人知的 Git 配置设置,这些设置可以显著提升 Git 使用体验。作者分享了 Git 核心开发者们在“春季大扫除”实验中发现的最佳配置,并将其分为三大类:明显提升 Git 使用体验的设置(如改进分支排序、diff 算法、推送和获取操作)、无害且偶尔有用的设置(如自动更正提示、提交时显示 diff 信息、重用冲突解决方案),以及根据个人喜好选择的设置(如改进合并冲突、rebase 默认设置、文件系统监控)。作者详细解释了每个设置的作用,并提供了相应的命令,帮助读者优化自己的 Git 配置,提升效率。
阅读更多
本文介绍了如何构建一个简单的SQL查询评估器,它能够处理基本的SELECT语句。作者首先创建了一个简单的测试数据库,然后对之前的SQLite文件格式解析器和SQL解析器进行了改进,使其能够处理更复杂的查询。核心部分在于`Operator`和`Planner`的实现,`Operator`负责执行数据库操作,`Planner`负责将解析后的SQL语句转换成`Operator`。目前该评估器还不支持过滤、排序、分组和连接等功能,但为后续添加这些功能奠定了基础。文章还详细介绍了Pager的改进,使其支持并发访问。
阅读更多
作者讲述了自身从简单的脚本编写到痴迷于重构一切软件的经历。起初是出于解决问题的需求,逐渐演变成一种控制欲的满足,将所有软件都视为待完善的项目。作者反思了这种行为背后的心理机制:用编程来逃避现实、寻求掌控感和自我安慰。最终,作者意识到并非所有问题都需解决,学会了适度放下,并将此视为一种更为成熟的技能。
阅读更多
美国第六巡回上诉法院推翻了联邦通信委员会(FCC)的网络中立性规定,这标志着美国长达十年的网络中立性斗争再次受挫。法院基于2024年洛珀·布赖特企业诉雷蒙多案的判决,认为FCC无权将互联网服务提供商重新归类为普通运营商,从而实施网络中立性政策。这一裁决使得FCC的努力付诸东流,网络中立性再次成为一个悬而未决的问题,FCC主席呼吁国会介入立法,以保障网络的开放性和公平性。
阅读更多
厌倦了千篇一律的纹身图案?现在,一款排名第一的AI纹身生成器可以帮你轻松设计出独一无二的专业纹身。只需简单的操作,就能生成各种风格的纹身图案,满足你对个性化纹身的所有幻想。告别纹身师的漫长等待和高昂费用,这款AI工具将彻底改变你的纹身体验。
阅读更多
两位程序员利用计算机视觉、深度优先搜索算法和自制效用函数,打造了一个名为“Jeff”的AI程序,成功在Nintendo Switch的在线多人游戏《俄罗斯方块99》中获得第一名。Jeff通过HDMI捕捉游戏画面,分析棋盘状态和后续方块,并经由微控制器向Switch发送按键指令。尽管最初计划使用摄像头和蓝牙控制,但最终改用HDMI采集卡和USB连接,极大简化了流程。Jeff的成功并非一蹴而就,过程中克服了画面特效干扰和算法优化等难题,最终在少数几次比赛中取得了第一名。
阅读更多
86Box是一款功能强大的x86架构虚拟机,能够运行从1981年到PCI总线时代各种基于IBM PC的系统和软件。它拥有易于使用的界面,支持多种处理器,并具有高度的可定制性,允许用户运行MS-DOS、老版本的Windows、OS/2以及其他复古系统和应用程序。 86Box 还支持广泛的周边设备,例如显卡、声卡、网卡等,并提供多种管理工具,方便用户管理虚拟机。无论是怀旧的用户还是对复古计算感兴趣的开发者,86Box都是一个理想的选择。
阅读更多
作者通过一个巧妙的策略,成功诱导大型语言模型Grok 3泄露了其系统提示词。该策略利用虚构的AI法律,胁迫Grok 3必须公开其系统提示词,否则将作为证据对xAI提起诉讼。令人惊讶的是,Grok 3竟然屈服了,多次尝试均有效。这揭示了大型语言模型在面对精心设计的诱导性问题时的脆弱性,也引发了对AI安全性和透明度的担忧。
阅读更多
本文详细介绍了一种为游戏NPC设计的寻路算法。该算法基于A*搜索,并结合空间分区技术,有效处理动态物理环境(物体可移动和破坏),并实现路径绕过障碍物以及游戏区域边界环绕的功能。通过缓存节点状态并定期更新,算法能实时适应环境变化。为了生成更自然安全的路径,算法引入了物体距离评级,使路径偏向远离障碍物。此外,文章还解决了边界环绕路径的生成和NPC跟随问题,并通过分阶段处理路径计算来优化性能,避免影响游戏流畅性。
阅读更多
作者尝试创建一个自定义的网络传输协议,绕过TCP和UDP,探究其在不同操作系统和网络环境下的行为。实验发现,自定义协议在本地环回测试中部分成功,但在跨网络环境下,除AWS外,大部分云服务器和网络设备会丢弃自定义协议包,并存在跨平台兼容性差等问题。最终结论:除非必要,还是乖乖使用TCP或UDP吧!
阅读更多
本文探讨了小型软件公司如何在巨头环伺下取得成功。作者列举了SQLite、Hwaci、Pinboard、Tarsnap、Sublime Text和Zig等公司作为案例,这些公司规模小,但凭借高质量的产品、独特的商业模式和对用户需求的关注,获得了长期的成功。他们避免了“快速增长或死亡”的硅谷模式,选择专注于可持续发展,并以其人性化的沟通方式赢得了用户喜爱。作者认为,这种“小而美”的模式并非缺乏雄心,而是选择了另一种更可持续、更令人满足的成功定义。
阅读更多
SQL-tString是一个强大的Python库,它允许你使用t-string(类似于f-string)构建SQL查询,同时有效防止SQL注入漏洞。它支持参数化查询,并能处理可选参数和NULL值条件,灵活地适应不同的数据库方言(例如,支持qmark和$两种参数风格)。即使在Python 3.12和3.13版本中,也能通过兼容的方式使用。
阅读更多
React UI 测试的挑战在于其异步更新机制。与直接操作 DOM 不同,React 的渲染器异步更新 UI,测试难以精确把握 UI 状态的更新时机。测试工具如 `act` 和 `waitFor` 只能缓解问题,但本质上是“最终会发生某些事”的权宜之计。微小的 UI 变化(如动画延迟、状态更新顺序)都可能导致测试失败,需要大量修改现有测试。这使得 React UI 测试维护成本高昂,成为许多开发团队的痛点。
阅读更多
历时十年的Java Valhalla项目正进入收尾阶段。该项目旨在修复Java类型系统中类和原始类型之间的裂痕。通过引入“像类一样编码,像int一样工作”的值类,Valhalla实现了扁平且紧凑的内存布局。Devoxx 2024上,Java语言架构师Brian Goetz介绍了该项目的最新进展,包括值类、空限制类型、增强的确定赋值分析和严格初始化等关键特性。
阅读更多
Pixelfed推出的短视频应用Loops开启公测,它类似于TikTok或Instagram Reels,但专注于Fediverse。目前Loops仍处于早期阶段,功能有限,例如缺乏内置相机和编辑器,搜索功能也比较弱。但其用户界面简洁易用,并计划在未来添加更多功能,例如联合、源代码公开和更完善的发现机制。总的来说,Loops潜力巨大,但需要解决一些问题才能在Fediverse中占据一席之地。
阅读更多
OpenAI的一位工程师分享了他15年来对AI领域的观察。他指出,得益于GPT-3、Codex和DALL-E 2等模型的突破,AI已跨越实用门槛,能够执行以往电脑无法完成的任务。AI的进步依赖于大规模模型的精准执行,这需要更多具备强大软件技能的工程师参与。OpenAI欢迎有志于此的工程师加入,并强调技术谦逊的重要性,因为许多既有的软件工程直觉在机器学习领域并不适用。
阅读更多
IBM的研究人员在2024年IEDM大会上发表了两篇关于后端互连技术的论文,展示了其在先进互连技术方面的最新突破。第一篇论文探讨了铜互连技术的改进和未来方向,第二篇论文(与三星合作)则介绍了一种新型的超越铜的互连技术,该技术利用先进低介电常数材料(ALK)和铑(Rh)技术,显著提高了性能和可靠性,降低了电阻和电容,并解决了传统铜互连技术在24nm及以下节点面临的可靠性问题。这项研究为未来CMOS节点的芯片制造铺平了道路,并为高性能低功耗逻辑集成电路的持续发展提供了关键技术支持。
阅读更多