随着《个人信息保护法》等法律法规的逐步发布实施,个人隐私保护受到越来越多人的关注。在这个整体的大背景下,得物持续完善App的各项合规属性,而在这个过程中,绕不开法务、安全、产品、设计、研发、测试几个重要环节,其中研发与测试属于具体落地的最后一环,直接关系到App的隐私合规质量。 伴随得物用户规模和业务复杂度不断提升,应用上线前的隐私合规检测愈发重要;当前得物版本灰度前的合规检测正在向着规模化、自动化发展,其中动态检测的性能和效率瓶颈也越发凸显。 谈到在iOS上获取当前线程的调用栈时,大部分开发者第一个想到的是+[NSThread callStackSymbols]。该个方法在日常开发调试带有符号的测试包过程中,可以快速获取符号化之后的堆栈,十分符合当前得物灰度前针对测试包进行动态检测隐私函数调用的场景。
增长域H5日均访问量巨大,随着业务功能的迭代,互动场景越来越复杂,逻辑组合也愈发复杂。当下,进行全面的自测回归已变得异常艰难。回顾过去四个月,历史故障中多数是由变更引起的。目前前端除了灰度发布和众测,缺乏高效且低成本的回归测试手段,导致无法在开发阶段及早发现问题,使得稳定性压力都集中在变更发布前的验证环节。
线上问题的定位与优化是程序员进阶的必经之路,常见的问题定位手段有日志排查、分布式链路追踪和性能分析等,其中日志排查主要用来定位业务逻辑问题,分布式链路主要用来定位请求链路中具体是哪个环节出了问题,而如果服务本身的性能出了问题,如一段时间复杂度高的代码引发了CPU占比飙升、内存泄漏等,则需要依赖性能分析工具来帮我们定位此类问题。
随着业务规模增长、业务逻辑演进,项目工程的依赖树(二方依赖、三方依赖)变得愈发复杂。随之而来的便是【依赖冲突】问题。 当几个软件包对相同的共享包或库有依赖性,但它们依赖于不同的、不兼容的共享包版本时,就会出现依赖性问题。如果共享包或库只能安装一个版本,用户可能需要通过获得较新或较旧版本的依赖包来解决这个问题。反过来,这可能会破坏其他的依赖关系。 【依赖冲突】问题是软件工程广泛存在的问题,换句话说,各语言生态如Python、Golang、Nodejs、Java等都存在类似问题。但是由于Java语言的特殊机制,【依赖冲突】问题在Java中似乎有完美的解决方案,那就是【类隔离容器】。 从2000年的开源规范OSGI,到阿里巴巴自研Pandora容器,再到蚂蚁金服开源sofa-ark,业界在【类隔离容器】这个领域的实践方兴未艾。那到底什么是类隔离容器?怎么实现类隔离容器?为什么它听起来很完美但是却没有成为主流实践?
得物 Redis 管理平台目前管理着几百个集群、数万个 Redis-server 节点、几千台 server 宿主机,而且通过精细化运维管理,目前 Redis-server 宿主机平均内存使用率和内存分配率均达到一个合理且较高的水位,资源管理处于业内第一梯队,使用最低的成本做到最大的支撑业务缓存需求。 同时,随着业务使用量的持续增长,单台宿主机上的内存使用率越来越高,为了保证宿主机上所有节点的业务日常增长需求或者突发的业务内存上涨,以便能够做到秒级快速垂直扩容,以及添加节点、RDB 离线分析等功能需要的资源,单台宿主机的内存使用率都需要动态的控制在一个合理水位线以下,于是,Redis 管理平台会每天定期自动巡检所有宿主机内存使用率,对于超过合理阈值的宿主机,会选择一部分 server节点进行打散,迁移到其他宿主机上。
对于水印,相信大家都不陌生。在很多内部平台、对数据信息较为敏感的中后台系统当中,我们基本上都会在系统关键数据展示区域中,加上一个半透明的文字水印(通常是用户名或用户id等能够唯一识别用户的标识),以防止使用者通过截图、拍照等方式将目标页面的数据泄露出去。即使是泄露出去之后,也可以根据水印中的用户标识能够迅速定位到“始作俑者”,并采取一些必要的手段将泄密损失降到最低。 上述场景是水印最为常用的一个场景,但不代表水印只能用于这种场景,今天我们从水印技术的前世今生,一步步展开暗水印显隐术的神秘面纱,揭秘暗水印显隐术与 OCR的邂逅,如何提升测试、生产排障效率的。
随着浏览器版本的持续更新,浏览器对JavaScript的支持越来越强大,Babel的重要性显得较低了。但Babel的设计思路、背后依赖的ECMAScript标准化思想仍然值得借鉴。 本文涉及的Babel版本主要是V7.16及以下,截至发文时,Babel最新发布的版本是V7.25.6,未出现大版本更新,近2年也进入了稳定迭代期,本文的分析思路基本适用目前的Babel设计。
本系列前面两篇文章已经分别在图片库和网络库的角度介绍了诸多白屏问题的定位和解决方案,但都是相对独立的问题,并且像OSCP,CDN节点异常之类的第三方问题无法彻底根治,因此为了长治白屏并发掘更多问题,就需要一套相对完善的白屏检测+问题归因体系。 本文将介绍从用户视角出发的白屏检测方案以及线上白屏问题的大致归因思路。