-
prosemirror如何实现富文本编辑的
最近搞各种编辑器,也涉及到了富文本编辑器,prosemirror是当前非常流行的富文本编辑器,因此希望通过剖析其实现原理,来窥探编辑器的架构设计。
-
umi核心代码解读
最近遇到了一个不错的框架——umijs。现在前端开发的一大痛点就是,上手开发一个项目,上来就是一堆的配置,其中最重的可能就是webpack。umijs就是为了解决这个问题,希望能将开发者从无穷无尽的配置中解放出来,只关注业务代码。
-
chair原理剖析
为什么要有Chair
-
用户增长调研分析
对于码农来说,没有什么比确定性更好的了。用户增长能从很大程度上将不确定的产品设计,变成确定性的数字增长。用户增长应该成为码农的必点技能。趁着最近搞业务,正好调研一下阿里内部主要的用户增长实践方法,主要聚焦于如如何做一个比较晚上的。
-
lottie json文件剖析
lottie对一系列框架的总称,其中包括lottie-web(bodymovin)、lottie-android、lottie-ios以及lottie-rn。lottie的工作流如下图展示。
-
react-native trampoline实现
ReactNative有Profiler的功能,能计算每个函数的执行耗时。为了尽量减少测量代码对函数本身执行的影响,ReactNative采用汇编实现Trampoline来实现该功能。本文主要记录该部分核心代码的解读,顺便记录阅读汇编代码的一些技巧。
-
debounce && throttle
debounce
和throttle
是两种常用的用来控制函数执行次数的技术。尤其是在前端响应Dom
事件的时候,比如scroll
或者resize
,这两种技术可以有效的保证用户体验。
-
redux middleware 机制
好的框架必须有优秀的扩展能力,譬如express,再譬如webpack。redux提供给外界的扩展能力就是middleware。
-
ReactNative核心实现概述
长期以来开发者只有两种模式来开发应用,一种是使用原生代码来写原生应用,另外一种是使用js代码来写web应用。这两种模式各有利弊,前者主要体现在体验好,速度快,而后者主要体现在开发迭代快。因此长期以来,无数开发者前赴后继的探索,希望能寻找一种模式可以集两家之长于一身。而ReactNative正是这种探索的一个里程碑。
-
LiteApp解读
-
面试题整理
语言
- OC
- Queue和Thread是什么关系?
- weak和assign的区别是什么?
- block是如何实现的?主要为了解决什么问题?
- runloop的理解?
- KVC和KVO分别是什么?
- selector是什么东西?
- autoreleasepool的作用,实现?
- MetaClass是什么?
- iOS内存管理
- 什么是响应链?
- iOS 11 safeare?
- isEqual和hash
- arc和mrc,arc的作用、原理
- OC
-
javascript async/await发展史
js是单线程的语言,异步对于js的重要性相比于别的语言更大。async/await是ECMAScript 2017的标准,是最新的js异步调用解决方案。async/await标准的出台也不是一蹴而就的,本文尝试追本溯源,以便更好的了解async/await。
-
App动态化体系建设
移动互联网时代的应用几乎面临着和桌面应用一样的问题,不跨平台、版本收敛慢、无法及时修复线上问题、需求迭代缓慢等。但移动应用还不能完全转成Web应用,当前的解决办法就是建设App动态化体系,本文就梳理了一下App动态化体系涉及的诸多系统。
-
VasSonic开源框架解读
H5很重要,H5很重要,H5很重要,重要的事情要说三遍。VasSonic是腾讯开源的解决H5首屏渲染痛点的开源项目,本文通过解读代码来学习WebView的优化思路。
-
js模块化
模块是每门语言构建复杂系统的必备特性,JavaScript自然也不例外。JavaScript当前流行的模块化标准有CommonJS、AMD、CMD、ES6等等,本文对这些标准做了简单梳理,努力做到应用时不懵逼,不乱用。
-
Mach O文件结构doing
Mach-O文件格式简析
macOS和iOS系统的可执行文件、库以及对象代码都是Mach-O格式的,Mach-O在macOS、iOS中的地位就相当于Linux系统中的ELF。
-
iOS符号化进阶
在日常开发中经常需要依赖线程的栈信息来解决疑难杂症,但我们自己记录的栈信息是没有符号化过的。本文主要讲了如何符号化这类栈信息,并简单探索了背后的原理。
-
让MPTCP来拯救你的破手机
TCP已经比18岁的我还要老了,快要跟不上这个时代网络设备的发展。现在手持设备都已经标配wifi和3g网络接口,数据中心也早就包含多条冗余线路,充分发挥其中潜在的能力是MPTCP的使命。MPTCP作为TCP近5年来最重要的演进,值得我们keep an eye on it。
-
事件循环——不一样的死循环
一谈起死循环,我们首先想到的就是程序假死、机子发热等,唯恐避之不及。但其实程序的世界是离不开死循环的,无论是运行在手机端的app,还是运行在服务器上的服务,都需要死循环来让程序一直执行不退出。那么,这类死循环和造成机器假死的死循环有什么不一样呢?
-
聊一聊Hybrid的基石
Hybrid开发模式在拥有便利性、动态性等Web开发优势的同时,还能极大程度地利用Native的能力。因此无论是BAT等大厂,还是开源社区都拥有成熟的Hybrid解决方案。而整个Hybrid方案最底层、最核心的技术就是JS和Native的互相通信,本文就主要来扒一扒这其中的原理。
-
主线程安全保护神——Main Thread Checker
写iOS App的时候,最容易犯的错误之一就是在非主线程更新UI。Xcode 9提供了一个利器——Main Thread Checker,可以帮我们检测在非主线程更新UI的场景。本文前半部分学招式,讲怎么用这个利器;后半部分练心法,学怎么做这个利器。
-
内存问题大杀器——Address Sanitizer
内存问题一直是困扰程序员的大问题,内存泄露、内存溢出、内存错误这些疑难杂症能逼疯一箩筐程序员。Address Sanitizer,简称ASan是Xcode自带的内存问题调试工具,原理简单,功效显著。本文主要介绍了ASan的主要功能、基本原理以及最佳实践。
-
Xcode 9新特性
Xcode 9支持同时跑多个模拟器
-
iOS灰度方法总结
因为苹果爸爸管的严,iOS开发者不能像Android开发者一样想怎么灰度就怎么灰度。然而灰度又是如此重要,不仅可以提前发现问题,保证版本质量,还能提早验证新特性,把握用户喜好。因此特总结几种iOS的灰度方法。
-
Qcon2017参会总结
今年有幸参加了在北京国家会议中心的举办的qcon技术盛宴,这也是我第一次相关的技术论坛,受益颇丰,特此记录。
-
iOS App签名机制详解
出来混,迟早是要还的,最近搞自动化打包的时候,对签名机制以及工程结构的不了解导致解决问题时间较长,特写此文以备不时之需。
-
iOS Crash记事本
每每搞上架,总是被上架之后的崩溃搞,特此记录。
-
写给三年后的自己
偶然间翻阅了几页《解密无印良品》,书中的理论触动了近段时间一直萦绕在脑中的关于职业的思考。
-
iOS汇编调试
最近项目出现线上奔溃,解crash的过程中调试了汇编,特此记录。
-
weex高性能list解密
weex是alibaba出品的用于移动端跨平台开发界面的框架,类似react-native。 而ListView在移动端界面的开发中是非常重要的组件,无论是H5还是react-native都因为ListView的低性能而饱受非议。那么到底是什么样的实现让weex能拥有与众不同的ListView性能呢?
-
CSS Flexible Box Layout Module标准
该规范描述了优化之后的CSS box model用于用户界面设计。在flex布局模型中,flex容器的子集能在任何方向上布局,而且能够“flex”他们的大小,要么扩展直到塞满没有被使用的空间,要么收缩防止覆盖其父类。子类的水平和垂直排列都能够轻松的被实现。通过box的嵌套(水平嵌垂直,或者垂直嵌水平)能够用来在两个方向上布局。
-
babylon parser实践
最近项目需要将一种语法转换到另外一种语法,代码不是我写的,但本着学习的心态阅读了部分代码,主要学习了两个库的使用,一个是htmlparser2,一个就是babylon。
-
Yarn简介(译文)
-
EventEmitter使用说明
最近升级了react-native框架,从0.19.0升到了0.32.0,改动还是挺大的,包括react和react-native的分离,以及巨量的特性更新和性能优化。本文主要为了说明0.32.0版本发送事件使用说明。
-
GCD源码分析
最近在浏览React Native代码的时候发现有提到Main Queue和Main Thread的区别,很早就有阅读GCD源码的冲动,这回总算找到机会了。
-
react native在Growth Stack中的角色思考
Growth Hacker在国内外的互联网界近几年都是比较火热的词,互联网巨头Facebook也许是践行Growth Hacker最好的公司。然而概念吵的火并不等于做的好,如何落地Growth Hacker其实是一件比较困难的事情。最近从twitter上挖到一篇文章,推荐了MobileGrowthStack,该文章维护着关于做Growth Stack的框架,为想要落地Growth Hacker的公司提供帮助。其最主要的输出应该就是下面这样图。
-
Mixins Considered Harmful
该文是Mixins Considered Harmful的译文,原作者 Dan Abramov
-
weex VS react native
weex的思想是多个平台,只写一套代码,而react-native的思想是多个平台可以写多套代码,但其使用的是同一套语言框架。 weex的目标在于抹平各个平台的差异性,从而简化应用开发。而react-native承认了各个平台之间的差异,退而求其次,在语言和框架层面对平台进行抽象,从方法论的角度去解决多平台开发的问题。
-
Redux生态(译文)
本文主要介绍了开发一个Redux应用所需要的包。原文的地址在此:The Redux ecosystem,By Denis Raslov
-
React Native桥详解
该文主要是对Tadeu Bridging In React Native的翻译。结合代码做了一定的分析。
-
React Native Hello World详解
直入主题怎么搞React Native。
-
React Native学习
React Native是下一代的React,是用React的思想来实现Native App的开发。使用React开发的时候,会强制我们将应用拆分成各种各样的组件,而做过Native开发的同学都知道,不论是iOS UIKit还是Android UI Components,天生就是组件,React和Native的结合是冥冥之中就是注定的。
-
React学习
React首先是一个js库,然后才是一个构建UI的js库,又名React.js、ReactJS。React的出现主要是为了解决一个问题:创建数据持续变化的大型的应用。React不同于世面上的大部分MVC框架,大部分开发者只将其用作MVC中的V部分,而React最大的作用也就是在于创建 可以重用的,能实时反应数据变化的UI组件 。
-
wax block原理与应用
使用wax的时候关于block的一点点思考。
-
CocoaPods详解
阅读CocoaPods源码的一点点注释。
-
objc源码解析
objc的源码解析。
-
iOS crash符号化
Crash率是App稳定性的重要指标,一定要千方百计得降低crash率。crash的符号化应该成为每一个iOS开发者的必备技能,俗话说得好,不能符号化crash的开发不是好开发。
-
iOS开发适配总结
iOS开发适配的简单思考。
-
openvpn翻墙实践
openvpn配置实践总结。
-
VFL详解
自己关于布局的一点点思考。
-
实用命令
常用的各种命令的集合
-
iOS编程规范实践
iOS编程规范总结,好吧,我也不知道为啥会有这篇。
-
GCD技术详解
GCD技术详解
-
Markdown CheatSheet
Markdown语法备忘录
-
Welcome to Jekyll!
You’ll find this post in your
_posts
directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to runjekyll serve
, which launches a web server and auto-regenerates your site when a file is updated.