你们相信这是十几年的程序员写的代码吗?!

50 天前
 honkew

最近遇到个事想和大家分享一下。 我们业务最近出了一个 bug

我这边通过同事的接口获取快递面单 pdf 具体流程是 [包裹号] -> [资源 ID ] -> [快递面单 pdf ]

也就是说: 拿着包裹号请求接口,拿到资源 ID 再用资源 ID 请求下载地址,获取 PDF

然后发现奇怪的事情,包裹 A 和 包裹 B 获取到的快递面单串了,下载下来是一样的单号 资源 ID res_id 是 32 位数,相同一秒获取到的 pdf 就是一样的,猜测是采用 md5(time()) 这种方式命名文件

然后和 同事 A 反馈了该问题,同事 A 反应已经修复 接下来一段时间还是出现这种问题会导致仓库发错货

老板问我咋回事,我又去查日志发现同一时间 res_id 还是会一样的,这次精度有所提升不是秒了,大概精确到后面两位的样子

然后和老板说了一下,是因为资源 id 还是一样的 这里他还改了一下运单文件在他服务器上的保存的命名方式,这个改动压根解决不了这个问题 然后同事 A 说他已经改了,没问题的,你不应该请求速度这么快 我直接整个大无语

然后开会 我说建议使用 sha1(运单号) 的方式生产资源 id ,或者使用 UUID ,还没有说完直接反驳 说不安全巴拉巴拉,不安全可以 accessToken 验证啊,外部访问不到不就可以了 然后又说改算法耗费服务器性能巴拉巴拉的,老板又好声好气的让他想办法改一下 最后他改了,改成 md5(microtime(true))

然后今天又又又出现这个 bug 了,老板又跑过来问我,我已经要疯了 这个问题前前后后几个月都没有弄好

同事 A 是那种反驳性型人格,而且比较自大那种,我快待不下去了

16223 次点击
所在节点    程序员
140 条回复
foufoufm
50 天前
为什么是你待不下去而不是他待不下去?

求教
honkew
50 天前
@foufoufm 反驳性人格,工作不配合。 无进展,什么事情都找我
foufoufm
50 天前
@honkew 这是你历练的机会啊, 毕竟社会上不都是正常人。

垃圾人比比皆是
Mithril
50 天前
哈希算法是给你“验证”用的,不是拿来做“唯一标识”用的。因为它存在碰撞的可能。

简而言之,哈希值一样,不代表原始值就一样。而哈希值不同,则肯定原始值不同。

这就是为什么科班教学很重要。

你这个需求就应该使用 uuid ,你用 SHA1 也避免不了碰撞。
Vraw5
50 天前
@honkew #2 你处理不了找 leader ,给 leader 压力,不要给自己压力
InfiniteMirage
50 天前
@honkew 这种让老板知道问题在他那里不就好了,把问题越搞越大,老是出问题,然后你向主动请缨,接过去改,改完之后没有任何问题就成你功劳了,就显得那个同事不行,让老板记住
wogogoing
50 天前
md5(microtime(true))

PHP 吗?
honkew
50 天前
@InfiniteMirage 服务器在他那里,即便是我要过来改了,我怕他后面又动手脚
honkew
50 天前
@wogogoing 对的
sparklee
50 天前
不能再加上自增 id 吗
changnet
50 天前
有什么奇怪的,只要你接触的人多,你就会发现,有些人做一辈子也没长进。我见过多了。

像这种情况,你直接说是谁谁谁的问题,你自己不要再去解决这个问题,让上级去接触那个人。
coderluan
50 天前
职场所有同事的问题都是领导的问题,看楼主描述你们是老板不懂技术每两个程序员的小公司,建议尽快早寻出路,你那同事就是一直呆在这种公司才变成现在这样的。
BeforeTooLate
50 天前
@honkew 如果 php 直接 bin2hex(random_bytes(16)) 不就行了,这样下去估计他要 这样做了,哈哈哈。md5(microtime(true) ) . mt_rand(1, 999999))
honkew
50 天前
@BeforeTooLate 不知道为什么他对时间情有独钟啊,崩溃
mosfet
50 天前
外部可以直接调用这个接口,不用做验证?
先甩锅,再准备跑路吧
小作坊也没这么草台啊
bfdh
50 天前
意思是把 pdf 存临时文件再发给请求端,然后又重名了?不应该是直接发给客户端吗,为啥还要存临时文件?就算要存临时文件,不做重名检查吗?
la2la
50 天前
工作久了也就无所谓了
这种情况直接给老板说明白,跟自己没有关系的问题,你应该是看戏的心态,跟你有啥关系啊
msaionyc
50 天前
对这个同事来说,这件事性质已经不是 bug 不 bug 了,尤其是到了老板面前还争执过,你不要直接和他对话了,找他领导或者跟老板说吧。
Greendays
50 天前
这完全是他的问题啊,解释清楚就行了。接口返回错误和你有什么关系呢?你也没得办法的啊。
honkew
50 天前
@mosfet 其它接口都有验证,就是用 res_id 下载 pdf 这个接口没有验证

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1150932

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX