HackerURLs

一次又一次被重新发现的经典。

同一个链接,相隔一年以上,一次又一次被人重新发现、再次冲上 Hacker News 首页。能经受住这种时间检验的,大多是值得一读再读的文章。每篇附中文标题,讨论最热的那些再加上中文导读和高赞评论翻译。

从名人堂开始
  • 4,700+篇经过时间检验的经典

Hall of fame

名人堂

在经典库里看全部精选

上首页次数最多、而且有中文导读的 30 篇。时间轴上每个黑点是一次上首页,空心点是一次没冲上去的投稿。

  1. 正在载入经典…

Archive

经典库

按第一次上首页的年份分布,点柱子筛选。

排序

    About

    这些经典是怎么挑出来的

    1. 01

      合并同一个链接

      读取 Hacker News 自 2006 年以来的全部链接投稿,把 http/https、www、跟踪参数等写法不同的同一篇文章合并成一条。

    2. 02

      只留经得起时间的

      同一链接至少两次拿到 50 分以上(约等于上首页),而且两次相隔一年以上;再由 AI 剔除状态页、产品首页和新闻事件。

    3. 03

      写导读、译评论

      上首页次数最多的 2,000 篇配上中文导读、"为什么经久不衰",并精选翻译 HN 高赞评论。导读由 AI 生成,可能有误。

    编程与软件工程github.com编辑精选

    程序员对电话号码的常见误解

    Falsehoods Programmers Believe About Phone Numbers (2016)

    2次上首页
    3年跨度
    699累计得分
    322条评论

    2016 — 2019,它一次次回到首页

    黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。

    导读

    这是 Google libphonenumber 项目仓库中一份著名的清单,列举程序员对电话号码的一堆错误假设:号码格式全球统一、号码永久属于某人、只有手机能收短信、手机自己知道自己的号码、各国编号规则相同等等。它的用意很直接:电话号码看起来简单,实际充满了跨国、历史遗留和运营商层面的边界情况,别自己随手写校验逻辑。

    为什么经久不衰:它用一份短清单把“看起来简单其实满是坑”的领域一次性讲透,十几年后仍是提醒开发者别自己造电话号码解析轮子的经典参照。

    关键词 电话号码国际化libphonenumber边界情况

    HN 评论精选

    把手机号当永久身份凭证,会让用户陷入无法使用也无法删除的僵尸账号。

    我有一个绑定手机号的 Facebook 账号,闲置了几年。后来我用邮箱重置密码,但系统因为账号长期不用,自动把这次操作标记为“可疑”,要求我用手机号验证——而那个号码早就不属于我了。从客服问答区我发现自己不是个例:几乎找不到真人来处理这类验证问题。我只想删号,却删不掉。现在这个账号成了僵尸:不能用、不能删,里面还留着一堆个人信息。这全拜 Facebook 程序员对电话号码的错误假设,以及它那形同不存在的客服所赐。听说 Google 也有类似问题:机器运转正常时一切安好,直到你需要一个真人……跟我念:去他的 Facebook。

    segfaultbuserr查看英文原文

    I have/had a Facebook account with a phone number. The account was left unused for a few years. Recently, I used my E-mail to reset its password, unfortunately, since the account was abandoned for a long time, the system flagged my activity as "suspicious" automatically, and asks me for confirmation using my phone number. But I no longer own that number. And from the customer Q&A forum, I realized I was not the only one - it is almost impossible to find an actual human from Facebook to solve this kind of verification problem. All I wanted is to delete it, but I can't. Now, my account becomes a zombie, can't be used, can't be deleted, and has lots of personal information. All thanks to the falsehoods Facebook programmers believed about phone numbers, and its non-existent "customer [0]" service. I've heard Google has similar issues [1], if the machine works, then everything is fine, until you need a human... Repeat after me: fxxk Facebook. [0] because I'm the product, not the customer? [1] https://news.ycombinator.com/item?id=18886804, and read this comment, https://news.ycombinator.com/item?id=18887548

    补充三条谬误:手机未必知道自身号码、SIM 与号码多对多、索要手机号的合理性取决于应用场景。

    再补充几条:“手机会知道自己的号码”——不打电话不发短信,手机根本无法知道自己号码;有些 SIM 卡存了“本机号码”,但并不可靠,有时还是错的。“SIM 卡永久绑定一个号码”——SIM 卡与号码可以多对多,且会随时间变化。“社交应用 X 要求手机号注册,所以我们也该要求”——用户对消息类应用要手机号(便于找联系人)和对计算器、游戏或想匿名使用的应用要手机号,反应截然不同。

    geuszb查看英文原文

    More: * "A mobile phone knows its phone number." The phone cannot know its own phone number without making a call or sending a text message. Some SIM cards carry an "own phone number" record but it is not authoritative and sometimes inaccurate. * "A SIM card is permanently assigned to a phone number." SIM cards to phone number relationship can be many:many and change over time. * "<Social app X> requires phone number to sign up, so we should too." Users actually react very differently when a messaging app asks for their phone number (useful to find contacts) vs a calculator app or a game or an app where they want to be anonymous.

    用“是否手机号”判断真伪会误伤大量正当用户,VoIP 号码被系统性歧视。

    我真恨这条居然是真的:“只有手机能接收短信”——其实有些运营商支持固话收发短信,Skype 之类在线服务也能收发。可对方会说“非手机号一律是欺诈,我们不接受”。于是我这个 VoIP 号码就被当成垃圾号拦下(顺便说,Verizon 的 My Numbers 功能显示的也是 VoIP 而非手机号)。更气人的是,对方会“把认识的科技圈朋友的 Google Voice / Google Fi 加白名单”。结果我还得关心自己的“手机”运营商底层用什么网络,或者干脆改用 Google。最后一条:我的信用合作社刚更新条款,说 Zelle 不允许绑定 Google Voice、VoIP 或类似号码。可我已经绑了这种号码,怎么办?“你的 Zelle 权限暂停,请提供手机号。”可那就是我的手机号。“那没办法。”

    techsupporter查看英文原文

    Flying Spaghetti Monster I hate that this is real: > Only mobile phones can receive text messages > Some service providers support sending and receiving text messages to fixed-line numbers. There are also online services like Skype that can send and receive text messages. "Oh but not-mobile-number phone numbers are always fraudulent so we don't accept them!" Great, I love getting caught in spam traps because I have a mobile phone...but it is a VoIP-backed system so the numbers show up as VoIP. (BTW, Verizon's "My Numbers" feature also show up as VoIP numbers, not mobile.) Even more annoying: "Oh, but a bunch of people we know who are also technology professionals happen to use Google Voice / Google Fi so we'll just whitelist them." Grrr. So now I have to care what my "mobile" provider uses for its underlying network or just use Google. And the last one: My credit union just sent out a terms of service update saying I "cannot use Google Voice, VoIP, or similar numbers with Zelle." OK, but I already have a number like that registered, what now? "Your Zelle access is suspended until you give us your mobile number." But that is my mobile number. "Too bad."

    从国际编号差异到信令细节,作者补出了一份更长、更贴近真实电信系统的谬误清单。

    根据个人经验,我会列出一份相当不同的清单,比如:以为别国的电话编号规则和自己国家一样;以为别国都像欧盟国家或 NANP;以为末 10 位就是用户号码;以为地理号码真的对应地理位置;以为 123456789 适合做测试号码;以为 STD 等同于 NPA-NXX;以为 NANP 长途前缀 1- 就是国家码;以为现在只有国内和国际两种格式;以为用户不用 E.164;以为紧急号码只有一两个、容易过滤。关于电话机本身还有一堆:以为听到回铃音对方就已经在振铃;以为回铃音来自对方;以为所有网络都用带内呼叫进程音;以为在 G.729 语音编码上发传真没问题;以为 DTMF 带内且普遍支持,或带外且与媒体同步;以为被叫拒接只有一种方式且从不涉及接通;以为 TPC 不需要知道固话的真实物理位置、靠“GPS 芯片”追踪手机;以为只有主叫在线时才能追踪通话;以为来电显示不可伪造且跨网跨国都有效;以为被叫总能挂断通话……

    JdeBP查看英文原文

    I would, from personal experience, construct a quite different list. Some of mine would be: * Every other country's telephone numbering is like one's own. * Every other country's telephone numbering is like that of EU countries, or like the NANP. * The last 10 digits are the subscriber number. * Geographic numbers are actually geographic. * 123456789 is a perfectly fine number to use for test calls. * STD is exactly like NPA-NXX. * The leading 1- in NANP long distance form is the country code. * There are only national and international forms nowadays. * Users do not use E.164 themselves. * Emergency numbers are easy to filter out, as it's only one number. There are also falsehoods that people believe about telephones, which I would start with: * When you hear the ringing tone, the other end is already ringing. * Your ringing tone comes from the other end. * Every network sends in-band call progress tones. * It's perfectly fine to use fax over a G.729 'phone. * DTMF is in-band and universally supported. * DTMF is out of band and synchronous to media. * There is only one way that callees reject calls, and it never involves being connected. * TPC does not need to know the correct physical location of your non-mobile 'phone. * TPC tracks mobile 'phones through "a GPS chip". * Calls can only be traced whilst the caller is on the line. * Caller-ID is unspoofable and works across networks and across countries. * The callee can always clear calls. * Only the caller can clear a call.

    历次讨论

    同类还值得读

    1. 开源应用架构

      The Architecture of Open Source Applications

      《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。

      编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选
    2. 编程语言简史:简短、不完整且多半错误

      A Brief, Incomplete, and Mostly Wrong History of Programming Languages

      一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。

      编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.com
    3. SQLite 是如何测试的

      How SQLite is tested

      SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…

      编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选
    4. 高级编程语言(2009)

      Advanced programming languages (2009)

      Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…

      编程与软件工程上首页 8 次 · 2009–2022matt.might.net
    5. 我的 Forth 与栈机器经历

      Yosefk - My history with Forth & stack machines

      作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。

      编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选

    打赏支持

    打赏二维码

    觉得有用,请作者喝杯咖啡。

    WeChat

    关注向阳乔木

    微信公众号「向阳乔木推荐看」

    微信公众号「向阳乔木推荐看」二维码

    微信扫一扫;在微信里打开本页时,长按二维码识别。