实现一个 JavaScriptCore 的 debugger —— iOS 篇

JSC 的 debugger 是个神奇的东西,在网上资料甚少,几乎完全搜索不到,尤其是 iOS 上,OC 接口没有暴露任何 debugger 信息。 不过好在 JSC 是开源的,通过分析源代码可以找到 JSC::Debugger 这个抽象类,我们继承这个抽象类,然后实现掉虚函数,创建实例并且把它挂载到 global object 即可开启 debug 能力了。 思路是简单的,在 iOS 设备上,我们要面临的另一个问题是它的 JavaScriptCore 本身是以 Framew

Rax 系列教程(上手)

引子这篇文章针对初学 Rax 的同学,主要介绍 Rax 是什么,开发体验的梳理,以及遇到 Rax 的开发问题如何寻求解决。本文配合 Rax 的 0.5 发布版本推出,结合新版 Rax 对于旧版的教程内容做出部分修正。 1、什么是 Rax Rax 是一个源自淘宝的开源项目 https://github.com/alibaba/rax 作为 Weex 的上层 DSL 在集团内有广泛的应用。 除了跨容器、高性能、轻量等特点,Rax 是一个基于 React 写法的跨容器的 js 框

构筑未来数据网 - Pandora.js 的信息通路

上一篇我们介绍了 Pandora.js 度量体系中的 Metrics,通过 Metrics 我们能将应用运行中的数据生成出来,但是有时候我们不仅仅需要这些指标数据,更可能需要信息数据。 这里的指标数据表示数字值,为了和信息数据(字符串)做区分。 所谓的信息数据是什么? 在 Pandora.js 中,我们定义为应用的信息聚合,这里分为静态信息和动态信息两种类型,举个例子,应用的应用名,应用启动路径,应用的配置,应用的模块版本这些都是固定的静态信息,而进程列表,接口参数这些就

跨越时代的度量衡 - Pandora.js 的 Metrics 介绍

自秦始皇统一六国,天下归一,推行“一法度衡石丈尺,车同轨 ,书同文”,颁发统一度量衡诏书,制定了一套严格的管理制度,天底下的度量衡就变成了一套。而如今程序世界也是天下分崩离析,不同编程语言各占一隅,不过即使语法不同,但是分分合合,思路终归一致,想要度量代码的心情依旧是一样的。 度量的作用很多同学表示怀疑,为什么要度量? 其实回答很简单,度量就像是身体健康的检查器,就像体检给的报告,没有这份报告,你是不是很担心自己的身体有没有出问题,要是好几年没体检,恐怕焦虑症都要犯了。 平常

让进程间通信更容易 - Pandora.js 的 IPC-Hub

我们前面的两篇介绍了怎么定义多个进程,怎么利用进程这一资源。我们在淘宝业务中也是这样实践的,有一个问题也越发明显,进程间如何通信呢? 起初我们有一个比较简单的 IPC 实现,通过 Domain Socket 进行通信。也是传统的 C/S 架构的,两个进程间进行比较基础的消息通信(比较类似 Node-IPC 这个包)。 不过实在是太基础了,时不时地在想: 在同一台计算机上的同一个语言,为什么要搞得这么痛苦?是 Node.js 太弱了吗?我要有线程的话,需要活的这么累吗? 之

Pandora.js 的 Service 机制

这篇依然是介绍 Pandora.js 的系列文章之一项目地址:https://github.com/midwayjs/pandora 欢迎社会各界前来 Star ~ 本章主要介绍我们的 Service 机制,是 Pandora.js 对于进程编排的一种高级机制。 Q:为什么要有这种机制?A:因为进程是昂贵的,我们需要有一种机制可以管理进程内的启停。 Service 解决什么问题?我们希望,Service 能做一些应用流程之外的事情,比如: 基础的中间件管理(比如 et

管理 Node.js 进程从未如此优雅

说到 Node.js 的进程模型,脑子里第一个闪现的可能是 Cluster 模块,亦或是 Master / Worker 进程模型,在长期的使用过程中,我们逐渐发现,这样在应用的开发早晚会有局限性,除了不够优雅之外,每次增减进程或者自定义进程都会产生不可预知的问题。 在一些特定的场景下,我们甚至在 Master 下面加入了一个 Agent 进程用来运行一些中间件 SDK 。在这些修修补补的过程中,传统的进程间通信,数据交换都变的困难,甚至 Worker 到 Agent 之间通

机器学习,Hello World from Javascript!

导语JavaScript 适合做机器学习吗?这是一个问号。但每一位开发者都应该了解机器学习解决问题的思维和方法,并思考:它将会给我们的工作带来什么?同样,算法能力可能会是下一阶段工程师的标配。 本文旨在通过讲解识别手写字的处理过程,带读者了解机器学习解决问题的一般过程。本文适合以下背景的读者阅读: 你不需要具备 Python、C++ 的编程能力:全文使用 JavaScript 作为编程语言,且不依赖任何第三方库实现机器学习算法。 你不需要具备算法能力和高数的背景,本文机器学

深入理解 Node.js Stream 内部机制

相信很多人对 Node.js 的 Stream 已经不陌生了,不论是请求流、响应流、文件流还是 socket 流,这些流的底层都是使用 stream 模块封装的,甚至我们平时用的最多的 console.log 打印日志也使用了它,不信你打开 Node.js runtime 的源码,看看 lib/console.js: 12345678910111213function write(ignoreErrors, stream, string, errorhandler)

GCanvas 渲染引擎介绍

GCanvas 已经正式开源,开源官方主页,传送门 GCanvas 提供了一套类似于 H5 Canvas 标准的 JavaScript API。基于这套 API 可以方便的去做图形绘制、动画渲染等,开发的体验与 H5 Canvas 是完全一样的。 GCanvas 介绍GCanvas发展经历了两个阶段。 第一阶段,2014 年中到 2015 年底,解决 Android 平台 WebView Canvas 渲染性能差的问题。 第二阶段,2016 年 11 月到现在,为前端提供