几天的故障,结果是个低级错误。

2023-11-30 20:42:14 +08:00
 windbadboy

单位的 HIS 系统需要增加一个上报接口,his 商部署后一直调试有问题,对端平台返回报错“非法参数"。 联系平台技术人员确认 token 、appid,secret 都没有问题。his 商找不到问题,就说平台那边的问题,搞成无限循环了。 无奈研究接口文档,用蹩脚的编程水平通过 python 自己调用接口,发现平台是可以成功返回正常信息的,确认平台正常。让 his 找自己的问题,结果最后发现是 his 商将 secret 的一个 0 写成了 o ,问题解决。

一个低级错误,卡了几天,我觉得一方面是自己水平不够高,没仔细看接口文档,第二方面平台返回的信息比较少,另一方面是 his 商自己测试不严谨造成的,都有问题。

6545 次点击
所在节点    程序员
49 条回复
wtof
2023-12-01 15:35:00 +08:00
Source Code Pro 还不错,一直在用
0Oil1I 这几个区别还比较明显
https://github.com/adobe-fonts/source-code-pro
CivAx
2023-12-01 15:54:43 +08:00
@HK560 Consolas 对 O0o Ww Uu Ss Kk Zz Xx Cc Vv 的识别并不是很好,至少没有对比的情况下,Oo 和 Ww 是真的一眼看不出来
Greendays
2023-12-01 16:00:38 +08:00
Jetbrain 的字体也挺好的,这些长得差不多的字母都有区别。
bthulu
2023-12-01 16:30:12 +08:00
这还是平台问题, 没对密码做模糊验证处理. 比如 o, 0, O, 这种都要看作同一个字符视为验证通过.
matepi
2023-12-01 16:46:32 +08:00
来回顾一下快 4 年的这个贴吧

https://www.v2ex.com/t/638609

针对 Java
static int i = Integer.parseInt(SomeUtil.readNumberFromPropeties);
然后在 Propeties 里面写了 2O 不是 20
Integer.parseInt("2O")
会抛出
java.lang.ExceptionInitializerError ..
Caused by: java.lang.NumberFormatException ...

然后这个 java.lang.ExceptionInitializerError 不能被 catch(Exception e) 捕获,没有记录日志
应该 catch(Thrwoable e) 捕获,才能记录下日志

然后你的同学,坚持了所谓的异常处理"军规",Never catch Throwable class……
导致没有任何出错日志,此问题异常难查

XD
HK560
2023-12-01 20:32:32 +08:00
@CivAx 常年都是在编辑器里看的,大小写这个还好认一点,只能要能区分出 0oli 就行(笑哭
kanecolin
2023-12-02 14:21:11 +08:00
所以成熟接口验证算法里有防呆机制,会通过算法中的特殊设置去掉这类的识别干扰项
iorilu
2023-12-02 18:29:12 +08:00
这些密钥啥的应该都是复制的, 或者直接写在配置文件里, 需要时候读取, 不应该放代码里一起吧
rekulas
2023-12-02 23:30:23 +08:00
确实经验还不够,这种 bug 在正常水平开发者手里应该活不过 2 小时,像这类平台类参数错误第一反应不是应该对比同参数签名的结果值是否一致么,逐一排除干扰因素一下就找到问题了

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

https://www.v2ex.com/t/996632

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

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

© 2021 V2EX