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的大眼夹一样),因此主功能完全由前端提供完全没问题,交互也单纯通过点击选项完成,不包含输入框等。当然,显然如果要提供更复杂的服务,肯定还是需要网络通讯,因此也准备了网络通讯的方法技术预留。
Jan 11
在这里阅读的是,微信安卓653.980版的反编译后的代码。很清晰的可以看到,小程序在代码中被称为appbrand,主要逻辑放在包com.tencent.mm.plugin.appbrand下面(部分抽出的ui控件除外);另外引用了3个js资源,均在/assets/wxa_library/下。虽然很大部分代码被混淆过的,但是适当的反编译后,我们还是能看出绝大部分东西。
Jan 11
这两天拆了一个微信小程序的自定义文件格式wxapkg(详见另一篇关于微信小程序的博客文章),虽然这个文件格式确实很简单,不过也是基于我以前拆文件的经验才分分钟看透的。既然有做了这么一件事儿,那就来顺便总结总结,对文件逆向工程时我的思路和方法。

-1. 开始前的工作

我们需要一个hex编辑器,不需要编辑的话hex浏览器就可以了
我们需要样本文件,至少要两个。如果有能够生成这个文件的软体本体更好。
我们先尝试过常见文件格式进行操作,比如zip什么的,太常见了。
Jan 9
Dec 18
灯笼梦

清晨,梦醒来之时,总觉得失去了什么重要的东西。

当懒散的阳光瘫软在窗外熙熙攘攘的树叶与人群中,偶然或者必然的从窗帘的缝隙中抛洒出一道金闪闪的晨曦,投射在梦醒之中的脸颊上;恍然,如面前悬挂着一盏陈年业火所承的槐木灯笼,无声无息的倾洒出笼中那股冉冉砰动的劲儿——一股要把自己从梦的遗思拉回到新的一天的力量。
Dec 2
JSPatch是iOS开发中最常见的热修复/热更新方案。简单的说,JSPatch主要基于jscore运行时动态允许脚本和ocruntime的动态特性,通过js脚本控制oc上下文中的程序以达到目的。选择jscore作为脚本引擎很大目的是为了绕过appstore关于程序动态特性的上架审核规则(reactnative同理),而基于oc的runtime特性是能实现热修复的基础,因此在swift中,不是基于nsobject的类是无法使用这个热更新的,这也是现在swift还没在中大型工程中广泛使用的主要原因之一。
Nov 9
大家都知道Adobe家和Autodesk家的多媒体软件都支持使用简单的脚本来进行批处理操作。其中赫赫有名的是3dsmax等使用的maxscript,可谓是max建模套件标配;而在ps使用中,大家多半通过录制动作来完成大部分批处理操作,然后某一些需要数据按一定规律改变,或者需要随机数据加入的时候,动作功能就可能显得有些力不从心了。这时候,Adobe家的脚本批处理工具就可以大展拳脚了,而作为跨平台最方便了,当然是js。