ARTS 打卡 Week 11
每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
Algorithm
LC 3. Longest Substring Without Repeating Characters
Review
https://code.tutsplus.com/tutorials/smooth-freehand-drawing-on-ios--mobile-13164
这篇文章虽然是2012年写的,但是其对“手指作画”这个功能的实现和一步一步改进,条理清晰,很值得看。
第一步,使用iOS平台的贝塞尔曲线函数(path)来实现最基本的作画功能,代码实现可参见原文,其效果如下:
第二步,作者进行了绘制cache优化,以及贝塞尔曲线优化(当生成一个贝塞尔曲线时,前一个曲线的endpoint作为startpoint,加入control点;同时还讲了下贝塞尔曲线的定义),效果如下:
第三部,针对上面效果图中曲线切线不匹配问题:引入更多点来确定一条曲线的control point;最终效果:
Android Dynamic Feature Modules : The Future
这边文章介绍了谷歌play service于2018年随AAB(Android Application Bundle)推出的能力之一:动态分发。其工作过程如上图所示,app按需加载所需要的功能。
简单来理解,这个功能就是官方版的“插件化”:开发者开发好功能,定义好split规则,google play按照规则切割aab为多个apk,客户端使用SplitInstallManager
实现功能的按需下载。
适用Android版本为5.0以上。
其实在安卓比较早的时代,已经有开发者实现过类似场景,比如Go Contracts, Go Contact Theme这种,是通过提交多个apk到google play,然后自己实现下载引导、安装等。现在这些功能由play提供,开发者就更方便了。(同时也能避免插件化库兼容性问题)
Tips
前段时间在iOS开发中,想实现了一个UIScrollView + masonry可以根据内容高度滚动的场景,当时调代码调了大半天,翻遍SO和国内几个论坛,代码没找出来什么问题。这几天又抽时间看了下这个问题,最后不得不采用穷举调试法,找到了问题代码和解决方案,见如下代码注释:
Share
对于视频、图片编辑app来说,离线处理有可能是个亮点。
评论