原文地址

[转载] C++知识体系总结:语言核心与代码工程

写在前面

✧ C++的主战场

都2023年了,还在说C++,难道不应该多讲讲golang/rust/python吗?其他公司我不知道,但在至少在腾讯内,如果能把C++代码写好,仍然有不错的饭碗,比如游戏/微信后台等。

C++在行业里的主战场,有网友做了一个图,可以看看:

阅读全文 »

原文地址

我给 iOS 系统打了个补丁——修复 iOS 16 系统键盘重大 Crash

🙋🏻‍♀️ 编者按:本文作者是蚂蚁集团客户端工程师巴乐,通过逆向分析发现了 iOS 16 系统键盘存在重大 Bug,可能导致使用到键盘的业务场景出现严重 Crash。 在支付宝 App 近期版本 10.5.16.6000 上,巴乐用汇编重新实现了一套 iOS 16 系统键盘 tryLock 方法后,问题得到完全修复,该版本上的对应 Crash 已降到 0。本文记录了该问题解决的完整过程,包括问题发现、分析、修复以及验证,欢迎查阅与交流~

阅读全文 »

[转载] 美团 iOS 工程 zsource 命令背后的那些事儿

原文地址

zsource 命令是什么?

美团App在2015年就已经基于CocoaPods完成了组件化的工作。在组件化的改造过程中,为了能够加速整体工程的构建速度,我们对需要集成进美团App的组件进行了二进制化,同时提供一个叫做cocoapods-binary 的 CocoaPods 插件来支持本地工程使用二进制。因此,美团App的开发者在集成开发时,除了自己正在开发的组件,其他的组件都以二进制的形式存在。

阅读全文 »

[转载] iOS热修复,看这里就够了

原文地址

背景

对于 app store的审核周期不确定性,可长到2星期,短到1天。假如线上的应用出现了一些bug,甚至是致命的崩溃,这时候假如按照苹果的套路乖乖重新发布一个版本,然后静静等待看似漫无期限的审核周期,最终结果就是:用户大量流失。因此,对于一些线上的bug,需要有及时修复的能力,这就是所谓的热修复(hotfix)。

随着迭代频繁或者次数的增多,应用出现功能异常或不可用的情况也会随之增多。这时候又有什么方法可以快速解决线上的问题呢?

  1. 第一、在一开始功能设计的时候就设计降级方案,但随之开发成本和测试成本都会双倍增加;

  2. 第二、每个功能加上开关配置,这样治标不治本,当开关关掉的时候,就意味着用户无法使用该功能。

这时候热修复就是解决这种问题的最佳之选,既能修复问题,又能让用户无感知,两全其美。iOS热修复技术从最初的webView到最近的SOT,技术的发展越来越快,新技术已经到来:

阅读全文 »

[转载] Fairplay DRM与混淆实现的研究

原文地址

研究Fairplay DRM(Digital Rights Management,即数字版权保护)最关键的两点是授权和加密。但长久以来,关于App DRM的研究却很少,而就是在这样的前提下,Fairplay DRM又为iOS App的安全研究叠加了一层”阻碍”。我们通过分析混淆系统的设计和实现过程中的问题,克服调试跟踪的障碍,设计了多种静态和动态的对抗方案;同时通过大量的逆向工程,填补了安全研究人员对macOS系统机制中,关于Fairplay这一部分的认知空白。

阅读全文 »

[转载] 深入理解Objective-C:方法缓存

原文地址

摘要

只要用到Objective-C,我们每天都会跟方法调用打交道。我们都知道Objective-C的方法决议是动态的,但是在底层一个方法究竟是怎么找到的,方法缓存又是怎么运作的却鲜为人知。本文主要从源码角度探究了Objective-C在runtime层的方法决议(Method resolving)过程和方法缓存(Method cache)的实现。

简介

本文系学习Objective-C的runtime源码时整理所成,主要剖析了Objective-C在runtime层的方法决议过程和方法缓存,内容包括:

  • 从消息决议说起

  • 缓存为谁而生

  • 追本溯源,何为方法缓存

  • 缓存和散列

  • 十万个为什么

  • 缓存 - 性能优化的万金油?

  • 优化,永无止境

阅读全文 »

[转载] 美团点评移动网络优化实践

原文地址

为何要做网络优化

网络优化对于App产品的用户体验至关重要,与公司的运营和营收息息相关。这里列举两个公开的数据:

  1. 页面加载超过3秒,57%的用户会离开。

  2. Amazon页面加载延长1秒,一年就会减少16亿美金营收。

在做网络优化前,我们首先要为网络通信质量设立一个标尺。

在美团点评,监控团队开发了基于端到端的客户端监控平台。这里要先解释一下”端到端”的含义:是指请求从客户端发出到服务端响应返回的整个过程。它区别于后台服务监控,是一种从用户角度观察到的真实体验监控。

阅读全文 »

[转载] AST 获取和分析:Clang And Tree-sitter

原文地址

前言

本文不仅介绍了如何使用各类 AST 分析工具,还简单分析了各类工具的工作原理,大家可以按需阅读。其中基于 Clang 的 AST 分析工具的工作原理结合源码一起食用效果更佳。文章主要围绕下面几个方向展开:

  • 初探 AST

  • 基于 Clang 获取分析 AST

  • 基于 Tree-sitter 获取分析 AST

  • 总结

阅读全文 »