Open ShannonChenCHN opened 5 years ago
==
CMD+R
到 React Native 应用的第一屏展示,这个过程发生了什么最近这两周主要在写 RN 的业务代码,同时也在看 RN 的源码实现,打算后期再看一下公司内部的基础框架,然后再写一系列的 RN 原理分析和实践优化的文章。
貌似是因为苹果审核的缘故,前两天收到邮件说是放弃使用 JSPatch 进行热修复了,准备采取其他方式来替代。
JSPatch 的作者 bang 在他的博客透露到,苹果在 2018 年对热修抓的更严了,即便做了足够的安全防护措施,苹果还是不能容忍。
最近写年终总结时,才发现最近一年很少有输出了,所以明显能感觉到自己没什么进步了,专注度下降了,思考也更少了。
上坡路总是难走的。
CMD+R
到 React Native 应用的第一屏展示,这个过程发生了什么⭐️在工作方面,这一周主要做了三件事,做了两个 RN 浮层,以及优化拉静态库的脚本。个人学习方面没什么进展,技术学习和其他学习都没有。
所以打算后面改变一下策略,把个人学习放到早上,工作时间更注重实用性,另外,业余时间需要分一点到娱乐和运动上,否则生活未免太单调。
由于有人改动了基础库的代码并自己提交上去了,而且他改动的代码中存在问题,但是却没有及时告知其他业务团队,导致其他业务团队把有问题的代码发布到线上,最终出现了线上 bug。
这其实是一个本可以完全避免的问题,关键在于流程上没有规范。我们可以采取的规避措施是,限制基础库的修改和提交权限,只允许一两个人去修改和提交,并在要提交前,发邮件通知会受影响的团队;另外,在测试人员这边,上线前每一次发布都要验证,而且必须要确认验证的 RN 包是最新的版本。
几个痛点:
React Native 社区资源
js 概念汇总
为什推荐使用 Swift 而不是 Objective-C?
shell 脚本读取命令行参数:在 Mac 上使用 getopts 时有问题,所以更推荐使用手动解析
CMD+R
到 React Native 应用的第一屏展示,这个过程发生了什么》这周的需求不多,所以主动做了一些技术改进的需求,同时更深入地了解了原来只知道表象的工具和框架,比如 cbudle、CRN、Gerrit。就像李笑来在《把时间当作朋友》书中说的那样,平时遇到的问题既不要死磕,也不要无视,可以先记下来,等后面时机合适时再花时间弄明白。
在输出方面还是没有执行下去,这段时间看书也看得比较少了。
调整策略:早上早起输出,碎片时间阅读。
前两天看到一个朋友在朋友圈分享的关于学习的内容,大意说的是,学习从模仿开始,当我们在学习某项技能或者某个知识时,首先要做的就是模仿,比如我们上小学时要背课文。模仿的好坏在于你是否学到精髓,学得越好,你的表现就越稳定,这说明你抓住了关键点。比如科比模仿乔丹。
另外,模仿时尽量向高手模仿。正所谓“取法乎上得其中 取法乎中得其下”。
Gerrit code review 相关
静态库、动态库和 framework
无责任书评:《深入理解计算机系统》这本神书到底好在哪儿?:这篇文章介绍了读 CS:APP 这本书的建议,不要硬看,避免犯教条主义的错误,要结合自身实际情况,选择合适的阅读方式,作者推荐了两种方式,一种是从头看到尾的那种,另一种是有“目的地”的阅读,为了了解某个特定问题专门去读某一部分内容。
我,自由了!:关注 stormzhang 差不多有 2 年的时间了,“亲眼”见证了他在这两年的蜕变成长,2 年前绝对没想到他能够达到这么高的成就。学习能力强,自我驱动力强,积极思考积极行动,不断提升认知,不断扩大边界,敢说敢做,这样的年轻人确实很少见,实属我辈之楷模。
Everything I've learned in 10 years of Blogging:作者现在才 21 岁,但是已经写了 10 年的博客,这篇文章中作者分享了自己写博客的一些成功经验。
【技术转型】我Android转前端的思考过程:最近我也在想自己是不是要转个方面了,正好看到了这篇文章,读了后很有启发
CMD+R
到 React Native 应用的第一屏展示,这个过程发生了什么》最近一个工作周临近春节,所以大家基本上都提前进入“划水”状态了。就我个人而言,把计划中的任务完成后,主要是集中学习了一下编译、链接相关的知识点,毕竟这块以前没怎么了解过,算是对基础知识的查漏补缺。就跟 20 多岁谈恋爱一样,有些在某个阶段必须要做的事,没有做的话,就可能会永远错过了,毕竟有些事情最适合在特定的阶段做。
(1)个人象限 薪酬取决于你给公司带来的价值 行业的趋势决定你的发展前景(猪站在风口上也会飞) 业务部门比架构部门更有话语权,更吃香 跟人打交道的能力是非常重要的 核心部门表面看上去最稳定,新部门风险高,但是实际上真正重要的是是否有成长,是否走在行业的前面
(2)个人品牌 开源项目和个人独立作品、博客是建立个人品牌的最好方式,还有做分享
聚焦到一个点更容易成为领域专家
真正的影响力取决于你给大家带来多大的价值。
评价分享最重要的一个标准在于给听众带来多大的价值。受众很重要。
(2)其他 不要太相信别人的经验,避免教条主义
绩效评比的关键在于你所做的对业务的影响,而不是技术本身的高低。
平衡工作学习和生活娱乐,走出去,交朋友
静下心来做点事,80%工作和技术+15%其他技能+5%生活娱乐
React Native 源码模块的调整
清理 Mac 空间:一般最占空间的是:开发软件 Xcode 相关的,微信等缓存大户,音视频缓存文件
编译、链接相关
The Architecture of Open Source Applications:介绍一些经典开源应用、框架的架构设计
热修框架 Mango:与基于 JSCore 的 JSPatch 不同,该框架自己实现了一套解释器(内部依赖了 libffi ),自己定义了一套 DSL。。
其他(待补充)
这一周主要是做完了之前遗留的两个需求,提测改 bug,在实现 React Native 相关的需求时,依然会踩到一些坑,不过还好花了些功夫后都完美解决了。
这周在与我们组的测试 s 沟通时,又遇到了一点问题,人与人之间的合作是需要不断磨合的,找到合适的“合作模式”就很好解决。对于我们自己来说,做好该做的事,没必要纠结一些小事情,不要被牵着鼻子走就行了。
这周在读 CS:APP ,但是《原则》这本书基本上没怎么看。
在学习新知识的过程中,有些“假努力”的倾向,学习的效果不是以看完了多少篇文章或者读完了多少书、记了多少笔记为准,而是要看是否理解了所学的内容,形成自己的框架和逻辑,并能够用自己的话讲出来或者自己能够在实践中做出来。检验学习效果是学习过程中很重要的一个环节,学习前最好定一个目标和标准。
让人头疼的是,最近越发感觉到长时间看电子屏幕和久坐对身体的影响了。
因为人都是情感动物,说难听的话比打人造成的杀伤力还要大。交流的目的是为了求同存异,实现共同目标。
找问题时,要尽量找到根本原因,虽然有时候用一些“取巧”的方式确实也能解决问题,但是这种解决可能会隐藏一些更深层次的问题,会带来一些隐患,另一方面,在“刨根究底”的过程中,我们收获的远远不止解决问题的答案,因为你了解的越多,学到的也就越多,另外,在这个探索的过程中,锻炼了逻辑思维能力和巩固知识,更重要的是,这是一种专业态度的表现,也就是所谓的“靠谱”。
0.59 RC for React Native 已经发布了,主要有 4 个修改/特性:
滴滴开源了一个类似于 FLEX 的应用内 bebug 工具DoraemonKit
Many popular iPhone apps secretly record your screen without asking And there's no way a user would know:正好昨天看到有微博爆料京东金融对用户隐私信息进行了截图
如何通俗易懂地解释React生命周期方法?
代码签名探析 - obj.io
这一周工作量不是很多,大部分时间都花在自我学习上了,花了不少时间研读了一下几篇讲解 iOS 代码签名的文章,还看了一下讲解 CocoaPods 原理的文章,另外,把上周遗留的 RN 调试问题搞明白了。平时经常听到 ABI 这个词,特地查了下资料,对 ABI 也不再陌生了。
这个礼拜继续在读 CS:APP 和《原则》这两本书,但是缺乏一些专注度,进度比较慢,明显能感觉到大脑细胞没有活跃起来。
学编程跟学校里面学知识是两码事,学编程一定要动手,不亲自动手实践一下,永远都是纸上谈兵。
要尝试跟不同圈子的人打交道,对于平时圈子小的人尤为重要:
iOS 代码签名
这一周的精力主要花在了个人学习上了,研究了一下 CocoaPods 的原理,系统学习了一下 Crash report 相关的知识,把 CS:APP 的系统 I/O 部分看完了。
把《原则》的第一部分看完了,瑞达利欧真是个牛的不行的异类。
这周去配了一副近视防蓝光眼镜,人生第一次带近视眼睛,希望能给缓解下眼睛不舒服的问题。
个人的认知范围和知识水平是有限的,而通过读书可以跨越空间和时间的障碍,获取新知识和不一样的想法。(这里的“读书”是广义上的读书)
如果我很久没看书了,整个人都会进入一种“停滞”状态。
对于不自律的人来说,读书也是一种清醒剂。
读书能让人清醒,能让人启发,能刺激大脑,能让人打鸡血,能让人充满力量。
对于大多数的普通人来说,一开始我们没有太多的选择,我们只能不断地努力为自己积累资本,以后才能有选择的机会。
有时候我们遇到问题时,一个人在那里想半天也想不明白,然后与别人聊天,讨论这些问题,获得启发,心中的疑惑也全都解决了。
头脑风暴就是一种很棒的工作方法。
遇到问题去解决,这是点;把遇到的问题总结归纳,和已知的知识和经验串起来,这是线;自己搭建一个框架,建立一个全面的知识体系,这是面。
抽象概念原则和具体事例,前者是固定的,永恒的,而后者是多变的,前者是后者的本质。
语言表达能力也是需要不断练习和不断学习的。
对自己做的事情一定要有足够的激情,才能真正把一件事做成做好。
阮一峰的网络日志:每周分享第 45 期:关于资产积累的内容很有启发
我眼中的技术深度:这篇文章给我的启发很大,作者之处,不要盲目为了深度而去盲目追求深度,真正的深度应该是考虑问题比别人更全面更细致,而且能够为公司带来比较大的价值。
这一周是发版周,除了改 bug,其余时间主要是在看 CS:APP,一口气把网络编程、并发编程和虚拟内存这几章都看完了,也算是完成了对这本书的核心内容的学习了,从更深的层面了解了计算机系统的全貌。
专业之外的书基本上没有进展。
最近的精力主要是放在计算机底层知识上了,一直在看 CS:APP、《现代操作系统》和 《Advanced Apple Debugging & Reverse Engineering》这几本书,对进程和线程、虚拟内存、文件 I/O,以及汇编有了更深的认识。
CS:APP 中讲了一些关于汇编的知识,但是主要还是偏理论,这两天跟着《Advanced Apple Debugging & Reverse Engineering》动手调试了一下汇编的代码,一步一步跟着教程“近距离”观察了函数调用的过程,感觉像是豁然开朗。
这个礼拜略忙,RN 这块的 bug 有点棘手,读了 《程序员的自我修养》讲目标文件和静态链接的部分。
工作
学习
学习复盘
这个礼拜主要在做品牌升级相关的需求,也就是调调 UI,利用空余时间和清明假期读完了 《程序员的自我修养》剩下的部分,包括动态链接、动态库、内存管理和系统调用等内容。
工作
学习
学习复盘
印象最深的只有一件事,那就是读《Advanced Apple Debugging & Reverse Engineering》的动态库和自定义 LLDB 命令这两块内容,之前正好学过动态库相关的知识以及 Python,正好串联起来了。基础知识非常非常重要,深度和广度要双管齐下,深度优先。
工作
学习
学习复盘
工作
学习
学习复盘
最近被调到另外一个组单独负责这个组的需求开发,由于之前主要负责 RN 相关的业务,对原生项目的代码了解不多,各种不顺利,但在新组 Android 搭档和同事 zw 的帮助下,总算是硬着头皮把 s1 的需求搞定了。
很多时候,有些坎你必须得迈过去,这是躲不过的,一开始你可能会各种痛苦各种逃避,但是最终迈过去了就是晴空万里。
上周把《The Linux Command Line》剩下的部分看完了,读完这本书对操作系统的命令行有了一个全面的了解,比如以前不知道为啥像 pod install
这种命令可以直接被系统识别,在这本书中就找到了答案,相比《鸟哥的私房菜》和《LINUX命令行与SHELL脚本编程大全》这两本书更精简,适合有一定基础,但想要快速地系统地了解 Linux 命令行的学习者阅读。
五一这几天假期开启了 C++ 的学习之旅,一开始打算跟着《C++ Primer》这本书学习,但是后来发现这本书太厚了,然后又到网上看了一下网友分享的经验,试了以菜鸟教程的教程为主、《C++ Primer》为辅的方式学习,但是发现效果也不是很好,比较死板,最后发现了《Accelerated C++》这本经典神书,很多“前辈”都推荐了这本书,于是最终就以这本当做教材,《C++ Primer》作为辅助手册,慢悠悠地学了 3 章。
个人认为,《Accelerated C++》这本书适合有编程基础的学习者学习,而且这本书的内容不包含 C++11 的新特性,学习时可以结合其他书和文档一起看,这本书的最大特点是不是想官方文档一样从罗列语言特性的角度出发,而是从使用语言解决问题的角度出发来编写的。
工作
学习
学习复盘
最近有点忙,有点累也有点懒了。
dispacth_async
中执行缩放动画,就解决了
这个礼拜主要工作是发布 8.8 版本,花了一两天的业余时间了解了一下 SwiftUI,完成了官方教程的第一部分,在阅读方面没有太多的进展,每天依然觉大脑得有些疲惫。
编程给我们带来的最大乐趣是创作的成就感,所以如果我们一整天面对的只有 bug 的话,这份工作也就失去了活力和吸引力。
工作状态是由可分配资源和需求量之间的关系来决定的,目前来看我们对需求的时间评估基本上是没问题,但是却仍然存在忙不过来疲于奔命的状态,原因就在于人力不够,实际可消化的需求比预估的要少。
最近三个月一直处于疲于奔命忙不过来的状态,都快扛不住了,庆幸的是,这周由于 xx 专项,需要重新调整人员配置,领导给我找了帮手,后面总算是能松口气了,也有时间学习一些新东西以及实践优化了。
最好的学习方式是一遍实践一遍学习,边学边用,最好的亮点是能解决日常工作中的痛点(比如整洁架构)。
二进制重排 https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q https://mp.weixin.qq.com/s/79tAFx6zi3JRG-ewoapIVQ https://mp.weixin.qq.com/s/_IZOXjwaeSmRJ2tcpdd8kg https://juejin.im/post/5d5a05255188251f4705fb8b
Matrix-iOS 耗电监控 https://mp.weixin.qq.com/s/HS4DJDpCS6uppQ9WmVR_Tg
高德地图:崩溃率从万分之8降到十万分之8的架构奥秘 https://mp.weixin.qq.com/s/J9qhY6gtsqrNuJDHVxByBw
美团 iOS 工程 zsource 命令背后的那些事儿 https://mp.weixin.qq.com/s/3qcv1NW4-ce87cvAS4Jsxg lldb 入坑指北(2)- 15行代码搞定二进制与源码映射 https://mp.weixin.qq.com/s/Bc8AJe7qRi2ED-otK0qPRA
深入理解 iOS 事件机制 https://juejin.im/post/5d396ef7518825453b605afa#heading-24
Modular Architecture in iOS https://medium.com/flawless-app-stories/a-modular-architecture-in-swift-aafd9026aa99
马蜂窝视频编辑框架设计及在 iOS 端的业务实践 https://mp.weixin.qq.com/s/-GGbakkEe7dmC23HT0k3ow
【工作】
【问题、知识点、Tips,学习收获】
~【分享、输出】~
【阅读】
【算法】
【其他】
这周四发版的前一个晚上 11 多的时候,正准备睡觉了,结果接到测试同学打来电话,说是发现了一个 bug,我不得不爬起来查问题,但是没查出来,第二天早上一大早过去继续修复,最后直到下午 1 点半才完全解决掉。
几点教训:
周日参加了公司组织的骑行活动,很久没有这么高强度的运动了,晚上回来睡得真香。
人到了一定年纪后,就会越来越意识到身体健康的重要性,尤其是当你生病的时候。
杨神在《Learn More Study Less》中提到了一个 Energy Management 的建议,就是每周至少留一天专门给自己放松的(体力劳动也是一种放松),这样才能避免身体“被掏空”。
关于
这个 issue 用来记录每周的工作和思考,包括做了什么、遇到了什么问题、如何解决的、做了什么优化、有什么思考和进步。
另外,左耳朵耗子也提出了 ARTS 的建议——每周至少做到一次下面几点:
2019 年的目标:
目录
模板: