技术纵横
1)Uber 的分布式跟踪
分布式跟踪正迅速成为许多组织用于监视复杂的基于微服务的架构的工具中必不可少的组件。在 Uber 工程团队中,我们的开源分布式跟踪系统 Jaeger 在整个 2016 年都实现了大规模的内部采用,集成到数百个微服务中,现在每秒能记录数千条记录。随着新一年的开始,这篇文章讲述我们如何得到下面的内容,从调查像 Zipkin 这样的现成解决方案,到为什么我们从 pull 架构切换到 push 架构,以及分布式跟踪将如何在 2017 年继续发展。
2)最火移动端跨平台方案盘点:React Native、weex、Flutter
本篇主要以react-native、weex、flutter,深入聊聊当前最火的这3种跨平台移动开发方案的实现原理、现状。
3)支付系统
支付系统是连接消费者、商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付金额等),金额对账等功能。本文主要简单介绍了支付系统的作用、核心流程、关键表设计、网关前置、路由选择、风险评估、渠道接入等等方面。
4)RSA算法原理(一) RSA算法原理(二)
深入浅出讲解了RSA算法的原理,公私钥的生成,加密解密的证明过程。
Android开发
1)Android逆向之smali语法宝典
反编译的是smali则可以正确的理解程序的意思。因此,我们有必要熟悉smali语法。
2)一文了解安卓APP逆向分析与保护机制
Android App常见的保护方法及其对应的逆向分析方法。
3)Android6.0~9.0适配
大家还记得Android 6.0权限适配的泪水吗?而现在谷歌已经出了Android P的稳定版,让我们来看一下7.0~9.0的适配应该注意的地方。
iOS开发
1)WWDC心得与延伸:iOS图形性能
介绍了iOS图形性能的一些知识和分析工具。
2)iOS无埋点数据SDK的整体设计与技术实现
统计是每个项目都需要的基础功能,但大部分的统计都需要人工埋点,这篇文章介绍了一种利用AOP来自动埋点的思路,挺有借鉴意义。
3)Objective-C Runtime 中内存释放的并发问题
Objective-C Runtime 是绝大多数 Mac 和 iOS 程序代码的核心。Runtime 的核心就是 objc_msgSend 函数,这个函数最关键的就是方法缓存。我在这篇文章中将会阐述一下,Apple 是如何在不影响性能的情况下,以线程安全的方式来重新分配缓存大小、释放方法缓存。
前端开发
1)CSS 架构
对于许多 Web 开发人员来说,精通 CSS 意味着您可以使用一个可视化的模型,并在代码中完美地复制它。你不用表格,而且你为自己使用尽可能少的图片而自豪。如果你真的很优秀,你可以使用最新最好的技术,比如 media queries, transitions 和 transforms。虽然所有这些对于优秀的 CSS 开发人员来说都是正确的,但是 CSS 有一个完全独立的方面,在评估一个人的技能时很少被提及。有趣的是,我们通常不会对其他语言进行这种忽略。Rails 开发人员之所以被认为是优秀的,并不是因为他的代码是按照规范工作。当然,它必须按照规格工作;它的优点基于其他方面:代码是否可读?更改或扩展是否容易?它是否与应用程序的其他部分分离?它能扩展吗?
2)给萌新的Flexbox简易入门教程
近几年,CSS领域出现了一些复杂的专用布局工具,用以代替原有的诸如使用表格、浮动和绝对定位之类的各种变通方案。Flexbox,或者说是弹性盒子布局模块(Flexible Box Layout Module)是这些新布局工具中的第一个,接着是CSS网格布局模块(CSS Grid Layout Module)。我们会在本文给出一个易于理解的flexbox入门介绍。
3)React 项目结构和组件命名之道
React 作为一个库,不会决定你如何组织项目的结构。这是件好事,因为这样我们有了充分的自由去尝试不同的组织方式并且选取最适合我们的方式。但是从另一个角度讲,这可能会让刚刚上手 React 的开发者产生些许困惑。
测试
1)单元测试和测试驱动开发 TDD 是怎么回事?
对于测试驱动开发和单元测试,我总有一种既爱又恨的感情在里面。
我一直都是这些“最佳实践”的热心支持者,但是我对它们的使用也一直持有怀疑态度。
软件开发中最大的问题之一是开发者或管理者仅仅是因为它们是最佳实践才要去应用这些“最佳实践” ,却不去理解它们的原因或真正的用途。
2)thoughts from the test eye
There are several agile frameworks available for implementation to guide the agile transformation. I have not experienced many frameworks myself, but I have experienced several implementations in an agile organisations. One core theme in the agile movement is that everyone should test and no single person is responsible for quality. This is great! Still, there is a need for guidance and strategy within testing and quality.
业余扩展
1)软件设计的哲学
John Ousterhout 是斯坦福大学计算机系教授,也是 Tcl 语言的创造者。他认为软件设计的最大目标,就是降低复杂性(complexity)。 所谓复杂性,就是任何使得软件难于理解和修改的因素。
这本书首先介绍了软件设计的基本问题,即控制复杂性。接着探讨了软件设计进程中的哲学问题,提出了一系列可应用原则。同时,作者还介绍了一组检测设计问题的危险信号。你可以借助书中的内容降低大型软件系统的复杂性,优化设计进程,提升速度、减少成本。
2)以奋斗者为本
自1988年至今20多年,华为公司成长为全球通信设备产业的领先企业。靠的是什么?
靠的是竞争力。华为的核心竞争力,来自于它的核心价值观,即以客户为中心,以奋斗者为本,长期艰苦奋斗。当把15万知识型人才聚集在一起的时候,你才会深切地感到,尽管技术很重要,资本很重要,但更重要的还是人力资源管理。
《以奋斗者为本》由华为管理层联合编著,取材于任正非及其高管的人力资源管理思想精髓,是对《华为公司基本法》的继承与创新。