ejoy2d 环境搭建小记

之前在优化 Cocos2d-x 的粒子系统时,参考了云风的 ejoy2d,这两天心血来潮突然想完整看下源码,之前只是看了 spriteparticle systemrenderer 这部分。

克隆了源码之后发现编译过不了,上次也遇到了。毕竟时隔快一年了,当时的情况也忘了,不知道是引擎的问题还是说开发环境变了,现在又要重新找一遍问题,也是蛋疼。所以这次就干脆记下来方便查阅。

程序员比起写代码,应该更害怕编译链接这种问题,因为这些问题很大程度不是由自身引起的或者说使用不当,所以把控感不强。

JavaScript-OOP 和原型链

JavaScript 世界里,一切都是对象。

设计思想

JavaScript 继承机制比较特殊,经典 OOP 的开发者可能一开始会懵逼,无法理解为什么没有类和实例的概念,无法理解为什么使用原型链,这要从 JavaScript 设计之初讲起。

JavaScript 在设计的时候,目的很简单,只是想完成一些简单的操作,所以 Brendan Eich 觉得没必要设计得很复杂。但是 C++ 和 Java 盛行,JavaScript 免不了收到 OOP 的影响,所以有了开头那句话,只是继承机制怎么处理?C++ 和 Java 使用的方式是 new Object(),为了保证 JavaScript 的简易和降低入门难度,他并不打算引入类的概念,反正 C++ 和 Java 调用 new 命令的时候都会调用 Object 的构造函数,那就简化一下,直接 new construct() 。

JavaScript-函数和标准对象

JavaScript 的函数是第一类对象,可以动态创建,可以做传参,可以做返回值等等,而且由于 JavaScript 函数级作用域的关系,匿名函数的使用十分广泛,所以使用起来非常的灵活。

arguments

arguments 也是个奇葩的东西,类似 Array 又不是 Array,但是一般情况下当 Array 使用就可以了。

return

因为句末分号的关系,return 后面的语句不要换行写。

JavaScript-基础介绍

接触 JavaScript 也有快2年的时间了,因为工作的原因,涉猎的编程语言有点过多了(大概算算,有 c/c++,java,oc,js,lua,c#,python,shell),我本身是很喜欢研究编程语言的,特别在写了多门语言之后不自觉地就会进行比较,比较语言特性上的各种优劣,总归还是很有乐趣的。

为什么我突然又开始写起 JavaScript 教程?主要是 JavaScript 的使用比重一直在上升,使得我必须全面严谨地再研究一遍,当然实话就是 JavaScript 要统一天下,这从雨后春笋般的框架就可以看到。而我主攻的 Cocos 引擎相关的业务也围绕 JavaScript。但是学的语言多,避免不了的问题就是精力的分散,很多东西都无法深入,同时在语法上,标准库的使用也很容易混淆。

刚才说这是 JavaScript 教程,其实不能算,顶多就是个读书笔记,而且会很零散,可能会对一些回顾 JavaScript 的人会有空吧。最后补一句,云风说得对,JavaScript 真是一门恶心的语言。

30分钟正则表达式快速入门

正则表达式在查找,解析,替换文本是非常管用的,这些常见的文本包含但不限于代码,日志,表格,甚至于文稿。但是很多人一看到正则表达式,反应通常是



其实并没有这么难,本文就是带你30分钟快速入门正则表达式。

本文改编自 http://regexone.com/

ABCs

首先要明白的第一件事就是本质上一切都是字符,正则表达式就是一串用于匹配字符串的字符串。

一般情况下我们使用 ASCII 字符,也就是英文字符,数字,标点符号和一些特殊符号(%#$@!),当然 Unicode 字符也可以用作正则表达式

(译)第三部分:什么是rebase?

内容提要

第一部分中,我们讨论了什么是commit hash,其中一个很重要的特点就是commit无法被修改。hash值是根据存储在commit中的信息生成的,所以修改一个commit或者commit hash,你必须要创建一个全新的commit。我们还讨论了每一个commit存储了它的前一个commit的hash值。我们所没有讨论的是它对我们Git历史的影响。

(译)第一部分:什么是commit hash?

内容提要

最近一段时间我在学习如何使用Git,碰到的一个难点:如何区别mergerebase?大部分人都能理解merge的概念,但是对于rebase就不是很清楚了。在这三篇博文中我将尽可能用最简单的方式来解释它们的异同。不过在此之前,我们需要先了解一下什么是commit hash。

,