The Daily WTF

RSS: https://syndication.thedailywtf.com/TheDailyWtf
《The Daily WTF》——著名的编程吐槽与软件工程趣闻博客,分享真实世界中的「反面教材」代码。

死锁重试:越重试越死锁

一段 C++ 代码在捕获 Deadlock 异常后,用宏 retry 跳回块开头重试,但不释放任何资源,等于把死锁问题雪上加霜。团队请了高薪顾问来修复死锁,结果顾问的代码反而引入了更多死锁。
评论点赞收藏36 天前

生产环境里的"万能调试开关"

生产环境存储过程中发现了未清理的调试标志:WHERE 子句里藏着 (1 = 0 OR (1 = 1 AND...)) 这种结构,改一个等号就能在"始终返回所有行"和"按条件过滤"之间切换。 这些标志最初是分析师跑查询用的临时开关,后来被打包成存储过程反复执行,上线后从未被修改或删除。暴露出代码可观测性缺失和调试标志管理混乱的问题。
评论点赞收藏37 天前

远程代码执行(RCE)被当作功能来卖

一名教师爆料其曾在一家EdTech公司工作,创始人Harry开发的C语言教学软件存在严重安全漏洞:本地WebSocket服务无任何认证,任意网页可远程执行C代码,且服务绑定0.0.0.0导致同局域网内所有设备均可利用。 此外还发现Cookie窃取漏洞、服务端eval注入漏洞,以及明文存储的信用卡信息。这些漏洞存在多年,公司至今仍在运营,且入选《时代》美国顶级EdTech公司榜单。
评论点赞收藏38 天前

错误连连:失败之后还是失败

Chromium 输出负帧延迟错误(-0.18ms),有人评论说去西班牙看日食时温度骤降比预期更明显。DOT 网站做到一半放弃,按钮留着没做完。 Daily WTF 合集类轻幽默内容。
评论点赞收藏41 天前

芯片数据手册里的寄存器名叫 SUFFER

芯片数据手册里有个寄存器叫 SUFFER(Super User Fantastic Feature Enable Register),offset 0x0120,复位值 0xFF。嵌入式开发者买便宜芯片时经常遇到文档质量差的问题,有时手册和实际芯片对不上,甚至引脚定义都标错,接错电压会直接烧芯片。
评论点赞收藏42 天前

CodeSOD:回到实验室

Jude写的Matlab代码处理实验数据,结果20%日志来自未知实验。团队需要把参与者图片存入数据库,但Matlab许可证和数据库产品的限制让他们找不到好方法。 Jude接手后写了一段用for-case反模式的代码,注释里写着"不知道哪个是正确的,所以删掉整个trial"。代码处理触发信号时靠猜测和绕弯子,最终发现四分之一的实验日志根本不属于当前实验。
评论点赞收藏43 天前

浮点数迁移翻车记

SharePoint 迁移到 SQL Server 时,客户编号因浮点数精度丢失被改错。SharePoint 的 Number 字段底层是 Double,SSIS 生成的 SQL Server 表用 float 类型(即双精度),但作者 PowerShell 脚本里.NET 类型也写了 float,导致 Double 转 float 后大数值客户号的末几位被篡改。 测试阶段没发现,全量加载时才暴露,事后需生成补丁列表修复数据。
评论点赞收藏44 天前

工单管理工具现状

没有好用的工单管理工具,Jira 是典型代表——功能堆砌逼用户自己编程搭流程。作者以 Klinsten 团队为例,展示了一个混杂荷兰语和英语的复杂工作流,状态和流转多得让人想关掉页面。
评论点赞收藏45 天前

错误日誌:零到零,用时零秒

Daily WTF 又收录了一条槽点代码:某抽奖或奖金系统把数值显示成了"一堆零",引发读者调侃。文章以虚构论坛对话形式呈现,穿插对 SignUpGenius、JustWatch、The Register 等网站的小吐槽,最后还夹带 BuildMaster 广告。
评论点赞收藏48 天前

代码屎山:从不吃饼干

自由职业者 Maciej 接手遗留 PHP 项目,发现核心 HTTP 请求逻辑用 cURL 发起请求后结果存入变量 $s 却从未使用。旧开发者把 CURLOPT_TIMEOUT 误认为请求间隔参数,整段代码在项目中多处 copy-paste。
评论点赞收藏49 天前

禁止分支

<p>"您提交了拉取请求。"</p><p><strong>表明</strong> 事实上,当她的老板比尔走到她身后时,她正在审查她在同一个拉取请求中收到的评论。 她不明白的是为什么比尔说得好像是在指控一样。</p><p>"是吗?”她回答道。</p><p>"好吧,我们这里不这样做。 您是新人,所以我不会介意,但请查看开发人员指南。"</p><p>嗯,Indika 已经查看了开发者指南,或者至少她认为已经查看了。 事实证明,有 <em>官方的</em>,全公司开发人员指南。 这就是她读过的那本。 但比尔为了他的团队保留了自己的立场。 他从未告诉过她这件事,但显然认为她会得到阿波罗的神谕祝福并自己找到它。</p><p>它有这样说:</p><blockquote> 禁止分支。 合并是一种浪费时间的活动,并且违背了 CI 原则。 仅使用 <code>git</code>承诺、推动和拉扯。</blockquote><p>如果大家都只在主分支投入,应该会重置基准吗?</p><p>Indika在咖啡时问同事Elise:“这是真的吗?”</p><p>“是的,”伊莉丝说。“我不确定他是怎么知道你公关的,我觉得没人把他加进了评论。我是说,他们为什么要去呢?”</p><p>“哦,我把链接发给他了,”Indika说。“只是一整套'我是新来的,看看我干活!'的提醒。”</p><p>“哦,是的,<em>绝对是</em>别那样做。”</p><p>“所以我们确实用PR吗?”</p><p>伊莉丝点了点头。“当然有。我们没疯。我们只要确保比尔永远不会知道就行。”</p><p><em>那个</em>这看起来是个糟糕的工作方式,但Indika至少在几周内配合了。然后机会出现了;她和比尔在小厨房里碰面,拿咖啡时周围没人。此时,Indika已经在比尔不知情的情况下提交了多…</p>
评论点赞收藏50 天前

十字路口:辞职后收到的最大诱惑

刚递交辞呈的技术支持员工被新HR总监Leila拦下,邀其担任变革管理小组负责人,可内部招募同事、升职加薪,还允许多休丧假。主角拒绝——觉得留下等于背叛自己,但把同样想改革的朋友推荐给了Leila,包括推行32小时工作周和工会的提议。
评论点赞收藏52 天前

Error'd: Time Wounds All Heels

Looked to the past for some time-traveling entries to round out a themed post. They're 25% fresh. Robert apparently got a notification of a planned past delivery. It could be just a case of two system...
评论点赞收藏55 天前

A More Civilized Age

Greta ( previously ) sends us more updates from her "Ancient Development Environment". An important task an IDE must do is report build errors to its users. Arguably, that's one of the most important ...
评论点赞收藏56 天前

CodeSOD: Connection State

Frederick A sends us a bit of null checking code, and offers us a better solution. class ConferenceService { /// /// Checks if conference is active /// public bool IsCalling { try { return m_Connectio...
评论点赞收藏57 天前

CodeSOD: Always Take the Option

Frequent submitter Capybara James sends us this simple snippet, which highlights that even when you have the lovely convenience of Optional types, you can use them wrong. if (StringUtils.hasLength(dto...
评论点赞收藏58 天前

Lose Some Padding

Flat-file style databases were designed to fit the constraints of the systems they were running on. You specify your schema in terms of "how many characters in a file we use to store this data", meani...
评论点赞收藏59 天前

错误集锦:我相信越橘

微软邮件编辑器突然弹出无法解释的错误对话框,OnSolve 声称保护用户名却自己也不知道用户名是什么,IKEA 肉丸比家具更值得忠诚——几则读者投稿的软件吐槽合集。
评论点赞收藏62 天前

CodeSOD: Negative Days

Killian Brendel was looking through the.NET source code, and found this comment on the TimeSpan struct. // TimeSpan represents a duration of time. A TimeSpan can be negative // or positive. // // Time...
评论点赞收藏63 天前

Representative Line: Something Wonderful

Today, we look at a "representative comment" from Mark W. This particular comment appears on a function: /// /// Does something wonderful. /// Well, I'm glad it's wonderful, but are we talking "Christ...
评论点赞收藏64 天前

代码吐槽:WPF 的 IValueConverter 命名混乱与空值处理陷阱

WPF 框架中 IValueConverter 接口的 Convert 和 ConvertBack 命名方向反直觉,开发者实现时混淆双向转换逻辑。 Fredrika 同事编写的 StringToDoubleConverter 在 Convert 方法中直接返回 null,ConvertBack 却负责将空字符串转为 null,违背数据绑定预期。 这种实现依赖.NET 隐式转换且变量名 parsed 无意义,埋下未来维护隐患。
评论点赞收藏65 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。