Happy Hacking!

2020-01-05
Cocos Creator 最佳实践之注意 JavaScript API 兼容性

Cocos Creator 最佳实践之注意 JavaScript API 兼容性

不同的浏览器和移动设备所使用的 JavaScript 虚拟机(VM)千差万别,所支持的 API 也大相径庭。

我们来了解一下 Cocos Creator 在各个端所使用的 JavaScript VM :

  • 对于 iOS 客户端和 Mac 客户端:在 Cocos Creator 1.6 及以前,Cocos Creator 一直是使用非系统原生的 SpiderMonkey 作为 JS VM ;从 1.7 开始,Cocos Creator 引入了 JSB 2.0 ,支持了 V8、JavaScriptCore 等多种 JS VM 。于是 Cocos Creator 便将 iOS 端和 Mac 端的 JS VM 都改为了系统自带的 JavaScriptCore ,以达到节省包体的目的;到了 2.1.3 ,Cocos Creator 又将 Mac 端的 JS VM 切换到了 V8,以提升应用性能。
  • 对于 Android 客户端和 Windows 客户端:在 Cocos Creator 1.6 及以前,Cocos Creator 同样是使用 SpiderMonkey 作为 JS VM ;从 1.7 开始,得益于 JSB 2.0 ,V8 成了 Android 和 Windows 客户端的 JS VM 。
  • 对于 Web 端:使用浏览器本身的 JavaScript VM 来解析 JavaScript 代码。
Read More

2019-04-24
wukong-robot:一个更加优雅的中文智能音箱项目

wukong-robot:一个更加优雅的中文智能音箱项目

dingdang-robot 之殇

在两年前,我做了第一个智能音箱项目 dingdang-robot 。在去年 7 月加入上报统计后,在不到一年的时间里,这个项目已经运行在 1000+ 台设备中,被唤醒了 128,000+ 次。截至今天,这个项目的个人版和社区版在 Github 上总共获得了 2,600+ 个 stars ,820+ 次 forks。

在我去年的一篇年度总结中,我提到因为 dingdang-robot 本身维护上的困难,我将项目迁移到了 dingdang-robot 组织交由社区进行维护。很遗憾的是,即使迁到了 dingdang-robot 组织,由于组织维护者们都并不是全职维护这个项目,而且硬件和操作系统上的差异始终给 dingdang-robot 的维护带来了很大的问题,所以取得的效果并不理想。而且随着自己能力的不断提升,我对 dingdang-robot 里头的代码也越发不满意:

  1. dingdang-robot 是基于 Python 2 的,在 Python 3 环境里跑不起来。而 Python 2 已经停止维护了。
  2. dingdang-robot 的热词唤醒(KWS)复用的是 jasper-client 的那套,基于 PyAudio 自己实现录音和 VAD ,基于 PocketSphinx 实现热词唤醒。然而那套录音和VAD代码我个人觉得写得并不鲁棒,为了避免各种边界情况我不得不加了一些 try...catch ,虽然没人发现这一点,但我自己是过不了自己那一关的,每每想到自己在用一套有问题的代码作为别人的入口就像是留一个坑叫别人跳进来,内心觉得很有罪恶感;另外 PocketSphinx 的安装非常复杂,虽然我提供了树莓派的镜像,但是很多人还是希望手动安装,而 PocketSphinx 对环境要求也很苛刻,所以总会遇到各种奇怪的问题,而我又不能复现;
  3. 还有一些使用上的便利性问题。比如没有更新提示,有时候修了一个bug,别人不知道,提了issue后我得告诉他请更新到最新;再比如使用YAML作为配置文件,但是很多用户不懂YAML的语法格式,常见的比如把半角冒号(:)打成全角(),或者冒号后没有跟着空格再写键值;再比如当初我处理 log 的打印也设计得比较傻逼,为了写到文件里头,直接用的是重定向,完全没有考虑用 FileHandler 这种东西。

到了今年,我决定对 dingdang-robot 进行完全重写,做出一个更加 优雅、灵活、鲁棒 的版本。

Read More

2019-01-20
2018 蒙太奇

2018 蒙太奇

眨眼就到了 2019 年了,每年这个时候我都在纠结要不要写点什么。纠结的原因是:如果今年开了个头,那就相当于欠下一笔技术债,那么以后的每年都应该坚持写一篇总结,而我又是一个很怕欠债的人。今年我决定停止纠结:一来觉得自己已经到而立之年了,想做的事情就该放手去做。二来总结首先是写给自己看的,每年年底好好写份总结,有助于回顾自己这一年的心路历程,也能及时发现自己这一年有哪些不足,有则改之无则加勉。三来如果能坚持写下去的话,等老了的时候,回过头来看每一年的回顾,应该会有更深的感触吧。Anyway,既然是有益的债务,那还是值得去背负的。

2018 年依旧是比较充(mang)实(lu)的一年,这一年我完成了买房大计,开始在 GMTC 这类的技术会议上做分享交流,开始带团队,首次挑战并完成了一次鹅厂的技术通道答辩,开始尝试担任腾讯课堂的讲师对外授课……收获颇丰。与之相对应的也有一些失去,包括一段还没来得及开始就匆匆结束的感情。

为了避免把总结写得太过于流水账,我想把总结拆成几个主题来回顾:正经事(工作、开源、博客、授课),不正经事(乐器、旅行、游戏、锻炼、看书、感情)。

Read More

2018-12-27
使用 BeamerStyleSlides 制作你的技术答辩 PPT

使用 BeamerStyleSlides 制作你的技术答辩 PPT

背景:PPT之痛

年末,又到了很多朋友准备答辩晋升 slides 的时候。PPT工程 应该是很多技术人的天敌之一,不少人为了在工作之余折腾出一份既有内容又美观的 slides 弄得焦头烂额。

其实,大家对 PPT工程 之所以这么惶恐,主要是因为技术人更习惯跟代码打交道,更习惯用技术思维去解决问题。而做材料考察的是信息的提取整合能力、审美品味以及口头表达能力,而这些都不是做技术的必要条件。

然而,也不必对使用 slides 答辩过于深恶痛绝,它只是一个用来说你的故事的工具:我们不应该被工具所束缚,而应该把它用好,将它变成你的优势。我私下里也看过不少同事的答辩材料,发现了一个很有趣的现象:往往内容非常好的材料,美观度也很高,看起来赏心悦目。而内容一般的材料,排版、美观度也比较糟糕,缺乏美感。工程师的素养,在做 slides 花的心思上面也能够体现出来。

Read More

2018-12-26
公开课:使用Cocos Creator开发微信小游戏《2048》

公开课:使用Cocos Creator开发微信小游戏《2048》

上个月抽了个时间,给腾讯课堂制作了一个免费公开课《使用Cocos Creator开发微信小游戏2048》,分享了使用 Cocos Creator 开发微信小游戏的经验。

如果你对微信小游戏开发感兴趣,欢迎前往观看。

(PS: 请忽略散发着寒光的头像……)

课程免费观看地址

课程源码

slides 下载地址

Read More

© 2021 wzpan