May 30
May 7
第一次写这样的博客请见谅。最近在对博客下的nana伪春菜做更多的技术常识,除了存2D加动画的形式和全3D模型3渲2之外,突然想起近两年有一个从日本舶来的流行的技术Live2D,于是昨日就调研了一波,并且按照教程试用了一下对应软件,调研内容主要是人物开发成本,技术底层实现(实际性能,可替代性,可拓展性),和弱点不足。本来满心欢喜的想出一个类似于“Live2D调研报告”之类的东西,但是从结果上来看,我认为,没啥好写的,这种东西直接开喷吧(下面打开喷子模式)。(本文所说的Live2D都是指的Cubism即传统的2D模型部分)
Apr 26
背景

1. 在现在业务场景下,应用需要进行复杂的统计操作,其中涉及到复杂的页面数据来源追踪和储存关联上报。
2. 已拥有基本的第三方统计sdk,需要对它进行再次封装才能实现需求。

统计模块实现

由于需要重新封装统计模块,因此需要按需求进行多层抽象。
Mar 19
对于已经获得的crash堆栈,无论是否可以通过符号表获得代码实际情况,只要我们没发看到确切的代码,都是无法直接通过crash栈直接进行分析。特别是遇到整个crash堆栈里面完全没有自己项目的代码,或者虽然是我们的项目名下的堆栈,却是通过pod引入的第三方库。更现实的是,为了加速代码编译或者开发者干脆就是闭源的,往往pod引入的库都是二进制的静态库,所以我们得到的堆栈肯定没有具体代码行数,看到堆栈肯定是无计可施。

遇到这样的情况,我们看到的堆栈往往是:0x100072ea4 0x100050000 + 143012这样只会有堆栈指令的pc位置或者方法名 + offset显示出来的pc位置,而不是。这样我们需要分析代码,只有通过分析具体的汇编指令才能继续下去。
而Hopper这个iOS查看和半反编译工具正适合这件事。
Feb 23
相对于java从设计之初就养成的一条exception往下流,trycatch到底的作风,在我们iOS开发过程中,oc的异常处理就是一个不可逾越的障碍阻碍着程序的运行与调试。因为oc一般用NSError甩错误,一旦遇到异常,八成就是非常非常严重的不可挽回的错误了,并且由于oc往下直通c层,里面发生的异常简直是多种多样非常难以准确定位和分析。因此,我们来总结一下常见的异常和抓取处理分析方式。
Feb 13
作为伪春菜的小工具,音乐播放器功能当然必不可少,而现在,用h5随手写一个音乐播放器当然是轻车熟路老司机上路信手拈来的事儿。稍等,来看看常见的网易云音乐的web端播放器,我们需要的最重要的一个特性就是播放器常驻页面,也就是说切换页面不会打断音乐播放。为此,事实上的页面结构是全站webapp化+ajax+动态渲染,再js修改title和url(pushState)——嗯,这些也是现代前端界非常非常常用的技能。不过稍等一下,我们的博客别说全站webapp化了,网页里面连一个ajax请求都找不到。事实上这个博客是非常非常单纯的独立php页面+混编模式写成的,如url中所看到的那样每一个页面就是一个.php文件混编出来的,前后端完全没有分离。那么,给我的选择就是要么完全重构网站做成webapp,要么用奇技淫巧结局这个问题。
Feb 8
最近,Airbnb正式在github上发布了酷炫狂拽屌炸天的移动应用库Lottie(http://airbnb.design/lottie/)。这个库的作用是在应用中native的渲染AE动画的导出(导出依赖的是bodymovin库),同时支持android,iOS和RN3个端/平台。由于AE是业界做酷炫狂拽屌炸天的动效的行业标准软件之一,如果可以直接导出的话,UE就不用啰啰嗦嗦的给FE分解动画了,FE也不用费超级大的劲儿去手动实现复杂的动画了。看这发布了10天,3个库加起来有1w4的star了,就知道大家是多么的激动~。那么这个东西到底能带给我们怎么样的体验呢,我们来尝试一下。
Feb 1
对,就是博客右下角的Nana酱,现在已经是重构之后的版本了。部分新功能的代码已经写入,但是并没有启用,现在功能基本和之前的版本保持着一致,等待稍后的更新和补充。另外再确认一下定位,伪春菜不是人工智能(比如小娜),只是一个桌面辅助程序(就像office的大眼夹一样),因此主功能完全由前端提供完全没问题,交互也单纯通过点击选项完成,不包含输入框等。当然,显然如果要提供更复杂的服务,肯定还是需要网络通讯,因此也准备了网络通讯的方法技术预留。