Challenging projects every programmer should try (2019) #
https://austinhenley.com/blog/challengingprojects.html
这篇文章介绍了一些程序员应该尝试的具有挑战性的项目。作者列举了以下几个项目:
文本编辑器:实现一个支持可移动文本光标、选择、插入和删除文本的文本编辑器,并学习如何存储文本文档、实现撤销/重做功能和自动换行等。
2D 游戏 - Space Invaders:从头开始实现一个简单的游戏,学习如何绘制屏幕、处理用户输入、游戏循环、创建和管理游戏对象以及实现敌人 AI、声音和在线多人游戏等。
编译器 - Tiny BASIC:实现一个针对类似 BASIC 语言的编译器,将其编译为其他你熟悉的语言。学习词法分析、语法分析、语义分析、代码生成等编译器相关的知识。
迷你操作系统:实现一个迷你操作系统,学习交叉编译、引导加载程序、BIOS 中断、内存管理、调度、文件系统等操作系统相关的概念。
电子表格:实现一个类似 Excel 的电子表格应用程序,学习如何在内存中表示单元格内容,并实现用于公式的解释器。
视频游戏主机模拟器:实现一个模拟视频游戏主机的模拟器,结合编译器、操作系统和编程语言的知识,让你能够运行设计为该游戏主机的游戏。
文章还提供了进一步阅读的资源和其他项目建议。
HN 评论 306 comments | 作者:azhenley | 21 hours ago #
https://news.ycombinator.com/item?id=38768678
帖子中的观点可以总结如下:
编写文本编辑器、编译器、操作系统或光线追踪器等项目可以提高程序员的技能,但并不一定能提高软件工程师的能力。这是因为这些项目往往体现了“非自主创新”原则,而软件工程师需要掌握其他一些关键技能。
在软件工程中,以下技能很重要,但很少被讨论和实践:决定自己编写什么和使用库的什么部分、识别满足项目需求的高质量库和框架、决定何时进行优化以及何时不进行优化、编写几年后仍然可读的代码、将项目视为一个具有软件和非软件依赖关系的大规模复杂系统。
帖子提出了一个替代性的挑战,即创建一个网络搜索引擎,但不需要从头开始实现所有功能,可以使用现有的字符串匹配算法等。
总的来说,帖子中的观点强调了在软件工程中的一些重要技能和挑战,以及在项目中使用现有的库和框架的价值。它提供了一种不同的视角,鼓励程序员思考和实践更广泛的技能和方法。
请注意,这是根据提供的链接进行的摘要,可能不包含所有评论和观点。
Japan to crack down on Apple and Google app store monopolies #
根据日经亚洲评论的文章,日本计划对苹果和谷歌等科技巨头的应用商店垄断进行监管,要求它们允许第三方应用平台和支付系统进入。这一举措旨在限制它们在日本市场上的主导地位,并防止它们将用户限制在自己的生态系统中,并排斥竞争对手。该立法计划将于 2024 年提交给议会,并主要关注四个领域:应用商店和支付、搜索、浏览器和操作系统。日本公平贸易委员会将被授权对违规行为进行罚款。根据现行反垄断法,罚款金额通常相当于违规活动所获收入的 6% 左右。具体细节将在今年春季敲定。该立法将根据销售额和用户数量等标准确定适用对象,预计主要影响跨国巨头,不太可能涉及日本公司。
苹果不允许通过其自己的应用商店以外的渠道下载应用程序。应用内支付也需要通过苹果的系统进行,苹果将从中抽取高达 30% 的费用。尽管谷歌允许第三方应用分发平台存在,但通常仍要求应用使用其支付系统。这些对应用内支付的有效垄断可能导致用户在移动设备上支付的内容或服务价格高于个人电脑上的价格。
日本政府认为这种模式巩固了这些公司在移动市场上的主导地位。该立法旨在迫使它们允许安全且保护用户隐私的第三方应用商店和支付系统。日本公司将能够在 iOS 设备上运行专门的游戏商店,并使用来自日本金融科技公司的低费用支付系统。
根据日本内阁府的数据,预计到 2023 年,日本的移动应用市场规模将扩大到 292 亿美元,比 2018 年增长约一半。
该立法的搜索相关条款将禁止搜索引擎运营商对其自己的服务给予优先待遇。例如,这可能禁止谷歌始终将自己的航班预订或餐厅预订工具置于搜索结果的顶部。
日本的这一计划类似于欧盟的数字市场法案。该法案将于 2024 年全面实施,禁止“门户网站”在搜索结果中偏袒自己的工具,违规者可能面临高达上一财年全球营业额 10% 的罚款。
在美国,据报道,谷歌已同意支付 7 亿美元的和解金,解决了一起反垄断案件,该案件涉及其应用商店。
文章来源:Nikkei Asia
HN 评论 216 comments | 作者:mfiguiere | 8 hours ago #
https://news.ycombinator.com/item?id=38773429
有人认为 Google 在模仿 Apple 的付款限制方面犯了战略性错误,但相比 Apple,Google 的政策在垄断方面要少得多,因为用户可以侧载应用程序、使用完全不同的应用商店,并且无需支付订阅费用就可以在自己的设备上运行自己的应用程序。
有人认为 Google 在与 Epic 的官司中输给了苹果,主要是因为 Google 的高管将相关事项写进了文件,而苹果没有这样做,因此有了一些真正证明其反竞争行为的证据。
有人认为 Google 在 Android 方面的法律挑战的根本问题在于,它试图同时拥有开源的光环、作为水平操作系统提供商的影响力和网络效应,以及苹果的控制力和利润,但唯一的方法是明显(在我看来)违反反垄断法。
有人认为 Google 在 Android 应用分发市场上限制竞争,通过签订一项或多项“不合理限制贸易”的协议,限制了其他 OEM 厂商的竞争。
有人认为 Google 如果更加严格地限制其应用商店,就不会有法律问题,他们表现得友好,但不够友好,因此他们受到了反垄断的指责。
有人认为 Google 与特权合作伙伴进行了秘密交易,而苹果则给予所有人相同的条件,这使得 Google 的行为具有反竞争性,而苹果的行为则没有。
有人认为苹果之所以能赢得与 Epic 的官司,而 Google 输掉了,主要是因为苹果提供的是一个完全受其控制的集成产品,而且客户完全知情,因此根据美国反垄断法,苹果可以自由地设置入场费。而 Google 则“签订了一个或多个不合理限制贸易的协议”,这是陪审团指令中的引用,直接来自 Sherman 法案,这些协议包括 Google Play 开发者分发协议、Games Velocity 计划(即 Project Hug)下的投资协议,以及 Android 的移动应用分发协议和与 OEM 厂商的收入分成协议,这些协议都被判定为非法。
有人认为 Google 在 Android 方面的法律挑战的关键在于,它试图既拥有开源的光环,又拥有作为水平操作系统提供商的影响力和网络效应,又拥有苹果的控制力和利润,但唯一的方法是明显(在我看来)违反反垄断法。
请注意,这些观点来自于 Hacker News 上的用户评论,代表了个人的观点和意见,并不一定代表事实或广泛共识。
Website search hurts my feelings #
https://www.openmymind.net/Your-Website-Search-Hurts-My-Feelings/
这篇文章是关于网站搜索功能的问题的。文章中提到了一些例子,说明了一些网站搜索功能的不足之处。文章没有提供明确的结论或总结,但它引发了对搜索功能的价值和效果的思考。
文章中提到了以下几个例子:
一个网站的搜索功能没有提供按价格/质量(或重量)排序的选项,这使得用户很难找到他们想要的产品。
另一个网站的搜索结果中包含了一些与搜索关键词不相关的产品,这给用户带来了困惑。
一个电子游戏网站的搜索功能没有提供筛选出支持本地多人游戏的选项,这使得用户无法方便地找到他们想要的游戏。
这些例子都展示了一些网站搜索功能的问题,它们可能会给用户带来困惑、浪费时间或无法满足他们的需求。文章的作者提出了这些问题,以引发对搜索功能改进的思考。
然而,文章并没有提供具体的解决方案或建议。如果您对网站搜索功能的改进感兴趣,我可以为您提供一些建议。
HN 评论 180 comments | 作者:earthboundkid | 11 hours ago #
https://news.ycombinator.com/item?id=38771513
有人认为,对于非英语国家来说,解决词形变化和拼写错误等问题比 faceting 更为紧迫。
有人指出,如今客户忠诚度并不重要,许多潜在客户更愿意通过价格比较网站获取客户线索并提供低价商品,而不是改善客户体验。
有人认为,用户体验是一个特性,但并不是唯一的特性。谷歌搜索每天都会受到批评,但它仍然是垄断市场的主导者。
有人认为,如果你是一个垄断企业,你可以逃脱一些问题,但即使是垄断企业也不应该过分冒险。
有人建议转型成为一个具有良好产品搜索功能的价格比较网站。
有人认为,搜索质量不好的原因可能是因为产品团队不了解或不关心搜索问题。
有人认为,搜索困难的原因在于需要预测和建模所有潜在搜索者的语言和内容,并且需要考虑到语言的歧义性和内容质量。
有人认为,搜索问题的复杂性是由于公司的懒惰而不是数据库的限制。
有人认为,网站搜索的困难在于团队人手不足,工作量过大,改善搜索并不是一个优先考虑的问题。
有人认为,搜索问题可能是由于目录数据质量差而导致的,目录数据由一个小团队维护,工作量大,报告问题的动力不足。
有人对 Netflix 的搜索功能表示赞赏,认为它能够提供类似的电影推荐,但也有人对 Netflix 的搜索功能表示批评,认为它的搜索结果不准确。
有人认为,网站搜索的目的不是帮助用户找到他们搜索的内容,而是将其他可能相关的产品展示给用户。
这些观点涵盖了对网站搜索功能的不同看法和经验。请注意,这些观点来自于 Hacker News 上的评论,代表了个别用户的观点,并不代表绝对真实性。
A list of Hacker News’s undocumented features and behaviors #
https://github.com/minimaxir/hacker-news-undocumented/blob/master/README.md
篇文章是关于 Hacker News(黑客新闻)的一些未记录的特性和行为的列表。Hacker News 是由硅谷初创孵化器 Y Combinator 拥有和运营的简单链接聚合器。这个列表详细介绍了 Hacker News 上一些隐藏的规范,这些规范在指南和常见问题解答中没有详细记录,以及一些超出典型 Hacker News 使用范围的额外功能。文章还提到,如果列表中有任何遗漏或错误,可以通过 GitHub 提交问题或拉取请求进行补充。
HN 评论 131 comments | 作者:ssgodderidge | 7 hours ago #
https://news.ycombinator.com/item?id=38773957
一位用户表示感谢作者整理这个列表,并表示自己在 Hacker News 上学到了很多东西。
另一位用户提到了 Hacker News 的管理员 Dang,称赞他在保持网站秩序和回复评论方面的出色工作。
有人提到了 Hacker News 的一些隐藏 URL,如"/leaders"和"/noobcomments"。
一位用户分享了一个关于 Hacker News 的未记录功能和行为的列表,包括过去几年的讨论和帖子链接。
一位用户提到了 Hacker News 对一些特定 URL 的处理方式,例如对 Google Books 链接的截断。
一位用户讨论了 Hacker News 的颜色列表和用户标签的功能。
一位用户提到了 Hacker News 的自动标题更改功能,并指出如果更改后的标题不好,可以立即编辑帖子并恢复原始标题。
一位用户提到了 Hacker News 的"second chance pool"功能,该功能可以使没有得到关注的帖子有第二次机会进入前台。
一位用户询问如何取消隐藏帖子的操作。
一位用户提到了 Hacker News 对被禁止域名的处理方式,以及用户标记的权重差异。
一位用户建议给拥有 1000 个 Karma 的用户提供自定义 CSS 的设置。
一位用户提到了 Hacker News 的"Classic"页面,该页面展示了古老账户投票的前台内容。
这些是帖子中的一些观点和讨论,涵盖了 Hacker News 的一些未记录功能和行为。
Moderna’s mRNA cancer vaccine works better than thought #
https://www.freethink.com/health/cancer-vaccine
Moderna 正在与制药巨头默沙东(Merck)合作开发一种基于 mRNA 的癌症疫苗,名为 mRNA-4157(V940)。该疫苗通过指导人体制造多达 34 种“新抗原”来工作。这些新抗原只存在于癌细胞上,Moderna 根据每个接受者的情况个性化定制疫苗,使其携带有关其癌细胞上新抗原的指令。疫苗的理念是通过促使人体制造这些蛋白质,可以让免疫系统迅速识别和攻击携带这些新抗原的任何新癌细胞,从而预防癌症复发。
在进行中的 2b 期 KEYNOTE-942 研究中,Moderna 和默沙东正在比较该癌症疫苗与默沙东获得 FDA 批准的癌症治疗药物 Keytruda 相结合与单独使用 Keytruda 治疗时,对预防黑色素瘤复发或死亡的能力。2022 年,他们报告称,在治疗后的两年内,该联合疗法相比仅使用 Keytruda 的高风险患者,将复发或死亡的风险降低了 44%。现在他们宣布,接受两种疗法的人在治疗后的中位数三年内,与仅接受 Keytruda 的人相比,复发或死亡的可能性降低了 49%。他们还减少了 62% 的远处转移或死亡风险。
该研究相对较小,只有 157 名参与者,但 Moderna 和默沙东已经启动了一个包括 1000 多名高风险黑色素瘤患者的三期试验,以测试这种联合癌症治疗疫苗。这两家公司还在寻求将该疫苗应用于非小细胞肺癌的三期试验,并且如果这些试验进展顺利,个性化疗法很快就可能面向患者。
来源:Freethink
HN 评论 136 comments | 作者:nateb2022 | 5 hours ago #
https://news.ycombinator.com/item?id=38775439
过去的 mRNA 癌症疫苗在临床试验中失败的原因是副作用太严重,而不是因为疫苗本身的无效性。
mRNA 疫苗的副作用随着时间的推移越来越轻微,但对于这种疫苗以及其他疫苗来说,真正的考验将在第三阶段临床试验中得出结论。
Moderna 在开发 mRNA 癌症疫苗时采取了传染病的方法,因为当时现有的 mRNA 配方会引发过多的免疫反应,从而降低后续剂量的有效性。
mRNA 癌症疫苗是个性化的,为每个接受者定制,以激发免疫系统对癌细胞产生反应。
对于高风险黑色素瘤患者,mRNA 癌症疫苗旨在预防癌症复发。
这些评论主要涉及到 mRNA 癌症疫苗的临床试验历史、副作用、个性化定制以及与传统疫苗的区别等方面。
Fed court rules for retired engineer told by state to not talk about math #
一位退休工程师 Wayne Nutt 在互联网上发表了他对公共工程设计的意见,但被北卡罗来纳州委员会声称这是违法行为,除非他获得该州的专业工程师执照。然而,首席法官 Richard Myers 在周三裁定,州政府违反了第一修正案,禁止 Wayne Nutt 在公共场合表达他对工程的意见。
Wayne Nutt 表示:“这不仅仅是对我个人的胜利,还有很多人面临相同的情况,他们被阻止发表自己的专业意见。这个决定肯定了第一修正案保护我们所有人分享知识的权利。”
你可以在这里阅读完整的裁决意见。
这是一项重要的胜利,它强调了言论自由的重要性,并确认了专业人士在公共领域发表意见的权利。这个案例也提醒我们,政府机构在限制言论自由时必须遵守宪法规定的权利保护。
HN 评论 87 comments | 作者:IronWolve | 24 hours ago #
https://news.ycombinator.com/item?id=38767936
这篇帖子讨论了一位退休工程师在诉讼中作为专家证人提供证词的问题。
该工程师在化学工程领域工作了几十年,但从未获得专业工程师执照,因为在他的行业中不需要该执照。
北卡罗来纳州工程师和测量员考试委员会试图阻止他作证,理由是他没有专业工程师执照。
法院判决认为他的专家证词受到第一修正案的保护,州政府不能以没有专业工程师执照为由阻止他作证。
这个案件涉及诉讼中专家证词的许可要求,而不是公开讨论数学的问题。
这是对该帖子评论观点的摘要,希望对您有所帮助。
A copy-and-patch JIT compiler for CPython #
https://github.com/python/cpython/pull/113465
根据您提供的链接,这是一个关于 CPython 项目的 Pull Request。该 Pull Request 的标题是"GH-113464: A copy-and-patch JIT compiler",作者是 brandtbucher。
在这个 Pull Request 中,brandtbucher 提出了一个新的功能,即在 CPython 中引入一个即时编译(JIT)编译器。这个 JIT 编译器使用 LLVM 作为后端,并通过复制和修补(copy-and-patch)的方式来优化代码执行。该功能的目标是提高 CPython 的性能。
作者在 Pull Request 的描述中使用了一个有趣的诗歌来表达他对这个功能的期望和希望。他描述了在圣诞节前夜,开发者们都在期待着这个新功能的合并,并希望能够看到绿色的勾号表示功能通过了 CI 检查。
这个 Pull Request 包含了 404 个提交,涉及 27 个文件的更改。作者还提供了一些关于 JIT 编译器的技术细节和性能测试结果。
总的来说,这个 Pull Request 是关于在 CPython 中引入一个新的 JIT 编译器的功能提案。它旨在提高 CPython 的性能,并通过使用 LLVM 作为后端来实现代码优化。
请注意,这只是对 Pull Request 的摘要,具体的技术细节和讨论可以在链接中找到。
HN 评论 52 comments | 作者:polyrand | 16 hours ago #
https://news.ycombinator.com/item?id=38769874
该复制和修补 JIT 编译器使用了一种基于缓存系统的方法,通过识别 AST 模式和对应的字节码,将“模板”复制并在其中插入变量。该方法在 TPC-H 数据库基准测试中生成的代码比 LLVM -O0 快两个数量级,比更高级别的优化快三个数量级,并且比解释执行快一个数量级。
这种方法类似于 Grace Hopper 最初的“编译器”工作方式,通过编译(因此称为)手动构建的模板的修补版本。这种方法在一定程度上回到了过去,但与当今的编译器相比,它更加灵活和高效。
该 JIT 编译器的作者提到了对 CPython 基准测试的期望,并表示希望将其合并到主线 CPython 中。然而,目前它还没有超过主线 CPython 的性能,但作者认为它在性能上的改进潜力仍然存在。
一些评论者对该 JIT 编译器的性能和实现方法表示了兴趣和好奇,并提出了一些技术上的疑问和讨论。
请注意,这只是帖子中的一些观点摘要,可能还有其他观点和讨论。阅读完整的帖子可以获得更全面的了解。
Black Triangles (2014) #
https://rampantgames.com/blog/?p=7745
根据提供的链接,这是一篇关于游戏开发的博客文章,标题为"Black Triangles"。文章讲述了一个关于黑色三角形的故事,并将其比喻为在游戏开发中的重要成就。黑色三角形代表着完成了复杂系统的核心,虽然看起来没有什么特别,但它标志着更多的工作可以继续进行。
文章中的故事发生在 1994 年,当时作者刚刚开始在一家名为 SingleTrac 的初创公司担任游戏程序员。在公司的主工程室里,大家对一台连接了索尼 Playstation 开发机的电视机上显示的黑色三角形欢呼雀跃。然而,公司的财务主管和人力资源负责人对此并不以为然,认为花费了近一个月的时间只为一个黑色三角形感到不可思议。但后来,他们意识到这个黑色三角形代表着完成了一个复杂系统的核心,标志着他们可以开始进行更有趣的工作。
作者后来将这种类似的成就称为"黑色三角形"。这些成就需要付出大量的努力,但完成后并没有太多实际的成果,只是为了让更多的工作能够继续进行。只有真正了解你所做的工作内部细节的人才能够欣赏到这种成就。
总结:这篇文章讲述了一个关于游戏开发中的重要成就的故事,将其比喻为"黑色三角形"。黑色三角形代表着完成了复杂系统的核心,虽然看起来没有什么特别,但它标志着更多的工作可以继续进行。
HN 评论 55 comments | 作者:andric | 16 hours ago #
https://news.ycombinator.com/item?id=38769850
有人提到了 Vulkan 编程教程中的“Hello Triangle”示例,指出在实现一个三角形渲染到屏幕之前,需要编写数千行代码来构建一个完整的 3D 引擎的框架。他们认为这种教程过于冗长,对于只想绘制一个三角形的目标来说并不必要。
另一位评论者表示,教程中的“Hello Triangle”示例实际上是一个完整的渲染系统,绘制三角形只是其中的一部分。他认为跳过一些步骤可能会导致功能不完整。
还有人提到了类似的经历,他们在完成一个项目的基础部分后感到非常满足,因为这标志着艰难的工作已经完成,可以开始进行更有趣的工作了。
总的来说,评论者对于在项目中遇到的困难和完成基础工作的重要性持有不同的观点。有些人认为跳过一些步骤可以更快地实现目标,而另一些人认为完整地构建基础是非常重要的。这反映了在软件开发中常见的不同观点和方法。
请注意,这些摘要仅代表评论者的观点,并不一定代表所有人的意见。