2024 02 11 HackerNews

How I write HTTP services in Go after 13 years #

https://grafana.com/blog/2024/02/09/how-i-write-http-services-in-go-after-13-years/

Mat Ryer 是 Grafana Labs 的首席工程师,也是 Go Time 播客的主持人。在写 Go 中的 HTTP 服务方面有着超过 13 年的经验。在这篇文章中,他分享了自己从多年编 Go 中的 HTTP 服务中所学到的经验和教训。

文章涵盖了构建 Go 服务的各主题,包括:构建具有大可维护性的服务器和处理程序结构、为实现快速启动和优雅关闭而进行优化的技巧和窍门、如何处理适用于许多类型请求的常见工作、深入探讨如何正确测试服务等。

Mat 分享了他在编写 HTTP 服务方面的践,无论是小型项目还是大型项目,这些实都经受住了时间的考验。他希望这些经验也能对读者有所帮助。

这篇文章适合计划在 Go 中编写任何类型的 HTTP 服务的人。如果您正在学习 Go,本文也可能对您有所帮助,因为其中的许多示例遵循了良好的实践方法。有经验的 Go 开发者也可能会从中学到一些好的模式。

文章主要内容包括构建服务器的主要构造函数 NewServer、处理长参数列表、在 routes.go 中映射整个 API 表面、优雅地关闭服务器、控制环境变量和参数、以及处理请求体的解码 / 编码等。

这篇文章提供了一些关于如何在 Go 中编写 HTTP 服务的实用技巧和最佳实践,对于想要提高 Go 编程技能的人来说是一篇很有价值的文章。


HN 评论 210 comments | 作者:matryer | 1 day ago #

https://news.ycombinator.com/item?id=39318867

有评论支持使用类型系统编写更好的代码

有评论提到"Stringly typed"反模式

有评论讨论使用枚举类型的重要性

有评论认为现代类型系统改变了编程方式

有评论对 Go 语言的类型系统提出改进建议

有评论讨论在 Go 语言中缺少枚举类型的问题

有评论提到了"Make illegal states unrepresentable"设计原则

有评论讨论 DRY(Don’t Repeat Yourself)原则的适用性

有评论认为 DRY 原则可能会导致代码复杂性增加


I Was Illegally Fired by Amazon for Speaking Out About a Coworker’s Death (2023) #

https://jacobin.com/2023/11/i-was-illegally-fired-by-amazon-for-speaking-out-about-a-coworkers-death/

标题: 我因为发声关于同事死亡被亚马逊非法解雇

采访了工会组织者 Magda Malinowska,她在亚马逊位于波兰西部波兹南附近的仓库被解雇,这是对她努力发声反对恶劣工作条件的报复,这一冲突源于她的同事 Dariusz Dziamski 在 2021 年 9 月在工作场所去世。

波兰法院裁定亚马逊非法解雇 Malinowska,为她提供了一小步正义,尽管经历了两年的延迟,期间许多亚马逊工人权利方面的情况恶化。

在采访中,Malinowska 向 Jacobin 的 Caspar Shaller 谈到了亚马逊对员工的不人道对待,违反基本工会权利,以及工人们努力抵抗企业暴政的努力。

波兰法院裁定亚马逊非法解雇 Malinowska,尽管他们仍有三周时间上诉。法官认为亚马逊侵犯了工会权利,因此从形式上、法律上看,Malinowska 应该赢得这个案件。

亚马逊解雇 Malinowska 的理由是她据称在同事 Dariusz 去世时拍摄照片或视频,但没有人看到,他们认为这与他们的价值观和社会标准不一致。

Dariusz 去世的原因是心脏病发作,但显然这不是医学原因。他的妻子告诉我他的心碎了。这就是为什么这对我们来说如此重要的案件。Dariusz 工作非常努力。他的工作过去是由几个人在一个班次内完成的,但后来他们让他一个人完成所有这些工作,推着装满重箱的手推车。

亚马逊以波兰为基地,攻击紧邻的德国工会,要么通过将波兰工人作为德国仓库被抗议时的破坏者,要么简单地在德国-波兰边境建立仓库,为德国市场提供服务,规避德国劳工法和工会。

这篇文章详细描述了 Magda Malinowska 在亚马逊工作期间的经历,以及她因为发声关于同事死亡和工作条件的不公而被非法解雇的情况。文章还涉及了亚马逊对员工的监控、工作条件、工会权利等方面的问题,展示了亚马逊在劳工关系方面的负面影响和工人们为维护权益所做的努力。

来源:Jacobin


HN 评论 396 comments | 作者:wglb | 10 hours ago #

https://news.ycombinator.com/item?id=39326559

根据您提供的链接,这篇帖子中的评论观点可以总结为:

欧洲国家,尤其是波兰,被认为不会发生类似的残酷和令人心碎的事件。

在美国,报复行为很常见,比如宣布妻子怀孕后不久就被解雇。

有关美国的法律,如 FMLA(家庭和医疗假法案)只适用于拥有 50 名或更多员工的公司。

加利福尼亚州对雇员友好,拥有更多的雇员保护法规。

加利福尼亚州的税收较高,但在许多问题上对雇员友好。

不同州的道路质量与税收水平之间可能存在相关性,但也受其他因素影响,如气候和人口密度。

德克萨斯州的道路质量被认为较好,但该州的财产税较高。

加利福尼亚州的道路状况因城市和农村地区的不同而异。

佛罗里达州的道路质量被普遍认为较好,但该州也有其他问题。

税收政策对不同收入群体的影响,以及各州在税收和服务方面的差异。

以上是对帖子评论观点的中文摘要。


Data Structures for Data-Intensive Applications [pdf] (2023) #

https://cs-people.bu.edu/mathan/publications/fnt23-athanassoulis.pdf

根据提供的链接内容,这是一篇关于数据密集型应用的数据结构的文章。文章主要讨论了数据结构在不同工作负载和硬件条件下的性能权衡,以及设计准则。作者提到数据结构代表着特定的性能权衡,这在之前的研究中已经形式化。文章涵盖了数据结构在数据密集型应用中的重要性以及设计指南。

详细内容包括:

数据结构在不同工作负载和硬件条件下的性能权衡

作者提到的设计准则和指南

数据结构对数据密集型应用的重要性和影响

这篇文章对于研究数据系统设计和优化具有重要的参考价值,特别是在处理大规模数据和复杂工作负载时。如果您对数据结构和数据密集型应用的优化感兴趣,这篇文章可能会提供有益的见解。

如果您需要更多详细信息或具体内容的摘要,请告诉我。


HN 评论 26 comments | 作者:mfiguiere | 1 day ago #

https://news.ycombinator.com/item?id=39318774

根据提供的链接,这篇帖子中的评论观点可以总结为:

对数据结构设计空间的维度、性能指标和操作权衡、特定应用领域的数据结构以及书籍推荐等内容表示赞赏和兴趣

同时也有关于工具使用和内容缺失的反馈。


Building the DirectX shader compiler better than Microsoft? #

https://devlog.hexops.com/2024/building-the-directx-shader-compiler-better-than-microsoft/

根据 https://devlog.hexops.com/2024/building-the-directx-shader-compiler-better-than-microsoft/ 的内容,这篇文章讲述了关于微软的 DirectX 着色器编译器混乱状态的故事,并试图将其整理成更好的体验供游戏开发人员使用。文章详细介绍了以下内容:

背景介绍

讲述了为 Mach 引擎构建一个实验性图形 API 的过程,使用 Zig 语言,旨在成为 WebGPU 的继任者和后裔,支持 Metal、Vulkan、Direct3D 和 OpenGL 后端。

需要将着色器程序编译成 Direct3D 12 可以使用的形式。

这篇文章详细探讨了微软的 DirectX 着色器编译器的问题和解决方案,展示了作者对于改进编译器体验的努力和成果。


HN 评论 77 comments | 作者:slimsag | 16 hours ago #

https://news.ycombinator.com/item?id=39324800

根据您提供的链接,这篇帖子中的评论观点可以归纳为:

对于跨 3D-API 着色器编译的混乱情况的讨论和期待;

与 Microsoft 和 DXIL 相关的许可和代码的讨论;

关于 DXIL.dll 的签名和代码签名算法的猜测和解析;

对于开源实现的支持和鼓励;

关于 Microsoft 软件质量和用户选择的讨论;

对于 Mach 引擎和 WebGPU 等技术的推荐和探讨;

关于游戏开发和跨平台支持的看法;

对于 DXIL 和 DXC 等技术的评价和展望;

关于社交媒体评论的重要性和影响。

这些观点涵盖了技术、许可、开源、用户体验等多个方面的讨论和看法。


Reddit beats film industry again, won’t have to reveal pirates' IP addresses #

https://arstechnica.com/tech-policy/2024/02/reddit-beats-film-industry-again-wont-have-to-reveal-pirates-ip-addresses/

根据您提供的链接内容,这篇文章的主要内容是 Reddit 再次击败电影行业,不必透露盗版用户的 IP 地址。电影公司想要获得七年的 IP 地址日志,这些日志涉及讨论盗版的用户。在周三的裁决中,美国地方法官托马斯·希克森(Thomas Hixson)表示,“法院认为没有理由认为提供 IP 地址不是揭露,受到第一修正案审查的限制”。这个裁决对于维护用户隐私和言论自由具有重要意义。

这篇文章涉及到 Reddit 拒绝透露盗版用户 IP 地址的事件,这反映了数字版权和用户隐私之间的平衡问题。这也凸显了法律和技术之间的复杂关系,以及在数字时代如何保护用户数据和言论自由的挑战。整体来说,这个裁决对于数字平台和用户权利之间的关系具有重要的影响。


HN 评论 94 comments | 作者:coloneltcb | 1 day ago #

https://news.ycombinator.com/item?id=39319202

根据您提供的链接,这篇帖子中的评论观点可以归纳为:

Reddit 不愿配合影视公司提供用户 IP 地址,可能是出于维护用户匿名性和避免法律纠纷的考虑;

Reddit 可能不愿配合是因为可能会导致用户流失和负面舆论,以及可能会影响其未来的 IPO;

合作可能会导致不断被要求提供数据,增加成本和法律风险;

Reddit 用户喜欢匿名性,合作可能破坏这一特点;

Reddit 可能会面临法律责任,但用户匿名性仍然是一个问题。


Aho – a Git implementation in Awk #

https://github.com/djanderson/aho

中文摘要:djanderson/aho GitHub 仓库

djanderson/aho 是一个在 awk 中实现的 Git 项目,旨在探索 Git 的内部机制和 GNU AWK 的新功能。该项目并非旨在实际应用,而是作为娱乐和教育用途。

示例命令:

$ source ./modpath $ aho init $ aho add -v . $ echo "neat" > testfile $ aho add -v . $ tree .aho/ $ GIT_DIR=.aho git ls-files --stage

语言使用:Awk 占 99.1%,Shell 占 0.9%

这个项目是一个有趣的尝试,结合了 Git 和 AWK,旨在探索它们的潜力和功能。虽然不是用于实际生产环境,但对于想要深入了解 Git 和 AWK 的人来说,是一个很好的学习资源。


HN 评论 66 comments | 作者:pabs3 | 9 hours ago #

https://news.ycombinator.com/item?id=39327192

Awk 作为通用脚本语言被低估,应该得到更多关注和使用。

Perl 曾取代 Awk,但由于可读性和可扩展性问题,被认为不够理想,导致 Awk 重新受到关注。

Awk 在处理大文件时非常有用,能够快速解决复杂问题。

Awk 的灵活性和强大功能使其成为开发环境中的重要工具,尤其在 Linux 命令行环境中。

Awk 的简洁性和效率使其在处理数据工程和机器学习系统时非常实用。

Awk 的复兴源于对 Perl 的不满和对更简单、可读性更强的脚本语言的需求。

Awk 的字符串类型和数字类型处理方式使其在某些情况下更易用,尽管与其他语言有所不同。


Tenets #

https://github.com/sveltejs/svelte/discussions/10085

摘要:

在这个 GitHub 讨论中,Svelte 的创始人 Rich Harris 试图阐述 Svelte 的哲学原则,指导他们的设计决策。以下是一些关键原则和思想:

Web 的重要性:他们相信 Web 是一项至关重要的技术,而其持续存活并不是自然而然的。

优化用户体验:Svelte 的目标不是成为最受欢迎的框架,而是成为最好的框架,专注于提供最好的用户体验。

HTML 优先:Svelte 倡导以 HTML 为主导的开发方式,认为 HTML 是描述 UI 的良好语言。

接受进步:拥抱技术进步,不要陷入对过去的怀旧,应积极采纳其他框架的好想法。

不追求普及:不是所有人都关心框架,Svelte 也为那些只想构建酷炫东西的人而设计。

设计共识:Svelte 是一个社区驱动的项目,重视社区的反馈和意见,希望通过共识来推动项目的发展。

这些原则展示了 Svelte 的设计理念和价值观,强调用户体验、技术进步和社区参与的重要性。

详细内容请查看 GitHub 讨论链接。


HN 评论 118 comments | 作者:wilbertliu | 9 hours ago #

https://news.ycombinator.com/item?id=39327113

根据提供的链接内容,评论中的观点可以归纳为:

有人认为 HTML 并不适合描述动态用户界面,认为需要更好的语言来描述 UI;

有人支持 Svelte 专注于 HTML 来指定 UI,认为了解 HTML 对于在浏览器中使用 UI 规范很重要;

有人认为 HTML 是描述 UI 的最佳方式,没有比 HTML 更好的选择;

有人认为 HTML 在描述动态部分和响应性方面不够好,但仍然是 Web 的通用标记语言;

有人认为 HTML 在 UI 方面的灵活性和易用性仍然落后于 20 年前的 Delphi 布局。

这些观点涵盖了对 HTML 在前端开发中的不同看法。


OPML is underrated #

https://kmaasrud.com/blog/opml-is-underrated.html

中文摘要:

文章标题:OPML is underrated

作者指出,随着主要平台的普遍质量下降,个人博客开始崭露头角,小型网络的概念也逐渐兴起。作者认为这可能受到他所在的数字社区(主要由程序员主导)的影响,但至少在经验上感觉到这是一个趋势。这种趋势带来了对开放网络标准的新兴兴趣,其中包括 RSS,作者和许多其他人越来越将其整合到数字日常中,以跟踪关注的人和来源的帖子。与其他平台的算法驱动的信息流不同,RSS 允许作者自己策划信息流,这对作者来说非常重要,因为它赋予了作者塑造观点和知识的内容的自主权,而不是将这种权力交给广告商。

然而,作者指出 RSS 订阅源可能管理和跟踪起来有些麻烦,其去中心化的特性也使得可发现性成为一个问题。于是,作者介绍了 OPML,这是一种大纲格式,通常用于存储订阅源列表。作者承诺,拥有一个存储所有感兴趣的订阅源的单个文件将是一个重大变革,因为这使得在不同平台和设备之间组织、迁移和共享这些订阅源变得更加容易。

作者强调了 OPML 的优势,包括不需要单独的应用程序或服务来对订阅源进行分类,可以通过其大纲功能或管理多个专门用于不同类别或用途的 OPML 文件来实现分类。此外,作者认为 OPML 有助于改善小型网络的生态系统,通过不仅在个人网站上分享 RSS 订阅源,还分享订阅的列表,从而有效地创建了一个基于有意识策划而非统计指标的推荐系统。

最后,作者提到了 OPML 是基于 XML 的,可以使用 XSL 样式表在加载到浏览器时显示 OPML 文件,从而使得博客列表对于不熟悉的人更加易于访问。作者鼓励读者创建自己的博客列表,将其放在自己的网站上,并分享自己感兴趣的内容,这可能会激发一些真正的联系,带回一些我们怀念的社区氛围。


HN 评论 97 comments | 作者:thunderbong | 15 hours ago #

https://news.ycombinator.com/item?id=39324847

根据提供的链接内容,对评论中的观点进行中文摘要如下:

有人认为 OPML 设计决定存储 HTML 块在 XML 属性而不是元素内是一个糟糕的设计决定,导致了一些问题。

有人赞赏 Dave Winer 为 OPML 的贡献,认为 OPML 和 RSS 在维护网络信息自由流动方面发挥了重要作用。

有人感叹现在越来越难找到任何播客的 RSS 源,认为播客应该是音频类型的 RSS 源。

有人分享了从 itunes.apple.com 检索和存储播客源的方法。

有人讨论了 XSLT 的优点和局限性,认为 XSLT 在静态模板渲染方面有着潜在的应用。

有人提到 XSLT 的学习曲线,但一旦掌握,可以打开许多有趣的可能性。

有人讨论了 XML 和 JSON 的转换,以及 XSLT 在这方面的潜在作用。

有人回顾了 XML 和 XSL 在浏览器中的应用,以及 XSL v1 和 v2 的差异。

有人分享了对 XSLT 的喜爱,但也提到了 Python 3 的性能和便利性。

有人讨论了 XSLT 和 Python 之间的转换,以及在硬件规格文档中使用 XSL 的情况。

以上是对评论中观点的中文摘要。


A rent-stabilized 1 bedroom apartment for $1,100 In NYC? broker’s fee is $15K #

https://gothamist.com/news/a-rent-stabilized-1-bedroom-apartment-for-1100-in-nyc-the-brokers-fee-is-15k

文章讨论了纽约市租金稳定的问题,特别是关于房地产经纪人向租户收取高额费用的情况。

一位 27 岁的租户在寻找公寓时遇到了一个价格相对便宜的一居室公寓,但经纪人却要求支付 15,000 美元的费用。尽管这一费用对于租户来说过高,但在竞争激烈的纽约市房地产市场中,经纪人费用是一个普遍现象,通常为年租金的 8% 至 15%。然而,随着经纪人费用不断上涨,使得租房变得更加困难,依赖于提前现金支付。

尽管政府和监管机构对过高的费用进行了批评,但目前并没有明确规定经纪人费用的上限。有人认为,这种费用制度排斥了大多数普通纽约市民,而中介费的上涨也增加了租房的难度。

一些政策制定者提出了一些限制经纪人费用的举措,但至今未有明确的规定。在这种情况下,租户需要留意经纪人费用的合理性,并有权向相关部门投诉。


HN 评论 364 comments | 作者:geox | 10 hours ago #

https://news.ycombinator.com/item?id=39326675

这篇评论讨论了一系列与地产税、老年人被高税收挤出住所、土地增值税以及业主协会(HOA)等相关的观点。以下是各个观点的摘要:

  1. 英国已经取消了对租户的费用,而德国等地区存在租金限制和租户权利,但也存在住房短缺问题。
  2. 土地增值税应该让投机变得不划算,增加对未使用土地的市场投放,将租金的增加归还公共财政,促使建筑更加高效利用土地。
  3. 德克萨斯州的高房产税导致很多人因为税收增加而被迫出售住所。
  4. 房产税对老年人的影响,特别是在社区变化和税收增加的情况下。
  5. 对土地价值税的赞成意见,认为这种税收更加公平。
  6. HOA 对业主的影响,例如在德克萨斯州,HOA 可能导致房主丧失房产。
  7. 对于高额的房产税的讨论,例如康涅狄格州的高税收。
  8. 对于收入税和遗产税的不同观点,以及它们对老年人和富裕人群的影响。
  9. 考虑不同地区的房产税模式对住房市场的影响。

ZX – A tool for writing better scripts #

https://github.com/google/zx

描述: zx 是一个用于编写更好脚本的工具,提供了对 child_process 的有用封装,对参数进行了转义,并提供了合理的默认设置。

安装: 使用 npm install zx 进行安装。

文档: 可以在 google.github.io/zx 上查看文档。

许可证: Apache-2.0

关于: zx 是一个用于编写更好脚本的工具,旨在提供更方便的编程语言选择,尤其适用于编写复杂脚本时,许多人更喜欢使用 JavaScript。

zx 提供了对 child_process 的封装,对参数进行了转义,并提供了合理的默认设置,使得使用 JavaScript 编写脚本更加方便。相比于使用 Bash,JavaScript 是一个更好的选择,但在使用 Node.js 标准库之前需要额外的麻烦。zx 包提供了对 child_process 的有用封装,对参数进行了转义,并提供了合理的默认设置。

安装 zx 可以通过 npm install zx 进行,文档可以在 google.github.io/zx 上找到。该项目的许可证为 Apache-2.0。zx 旨在为编写更好脚本提供便利,特别适用于需要编写复杂脚本时,许多人更喜欢使用 JavaScript。


HN 评论 121 comments | 作者:AbuAssar | 19 hours ago #

https://news.ycombinator.com/item?id=39323986

根据您提供的链接,评论中的观点可以总结为:

有人认为这个工具适合 JavaScript 开发者在 JavaScript 项目中编写复杂脚本,提高开发效率。

一些人认为使用 JavaScript 编写脚本比较容易阅读、使用 API,提升了工作效率。

也有人质疑使用 await 等异步操作是否必要,认为会增加代码复杂性。

有人认为 JavaScript 不是完美选择,可能会选择其他语言如 Python、PHP 等。

一些人认为 Python 更适合写脚本,因为写作速度更快,语法更简洁。

也有人提到 JavaScript 相比 Python 和 Ruby 更快,适合脚本编写。

有人指出 JavaScript 在处理外部进程时可能不如 Python 和 Ruby。

也有人提到 JavaScript 现代化,适合编写顺序脚本。

一些人认为 JavaScript 脚本应该是同步的,不需要处理并发。

也有人提到 JavaScript 脚本可以很好地处理顺序脚本。

有人认为 JavaScript 比 Python 和 Ruby 更快,但也存在一些问题。

也有人提到 Python 现在有类型提示,更接近 TypeScript。

有人讨论了 Python 开发者转向 JavaScript 的感受。

一些人提到 JavaScript 和 Python 之间的差异,以及不同语言适合不同任务。

也有人讨论了不同语言在编写脚本时的优势和劣势。

有人对工具的设计提出了批评,认为文件扩展名的使用方式不合理。

以上是对评论中观点的归纳总结。