我是一个软件开发工程师

乐观 积极 生活如此精彩

总有快乐的事情降临

这是一个精彩的世界,不是吗?

技术精要

这里是我的一些你可能需要的技术摘要

动画与效果

一些常见的动画和效果

算法与逻辑

常用的算法和逻辑推导

性能与技巧

关于性能和技巧方面的总结

矩阵

1. 矩阵的来源

英文matrix就是矩阵的意思,简单的说,矩阵用来改变顶点位置信息的,先牢记这句话,然后我们先从canvas2D入手,我们有一个100*100的canvas画布,然后画一个矩形:

<canvas width="100" height="100"></canvas>
ctx.rect(40, 40, 20, 20);
ctx.fill();

这样我们在画布中间画了一个矩形

现在我们希望将矩形向左移动10px:

ctx.rect(30, 40, 20, 20);
ctx.fill();

矩阵

只要改变rect方法第一个参数就可以实现左右移[……]

继续阅读

图形演算

简介

在离散数学、算法与人智能领域,很多问题可以表示成「节点与连线所形成的图形」,一个程序要解决某个问题其实是在这个图形里把目标节点给找出来,于是问题求解就简化成了图形的搜索,我们只要把解答给「找出来」就行了。

图形搜索的方法大致可以分为「深度优先搜寻(Depth-First Search, DFS)、广度优先搜寻(Breath-First Search, BFS)、最佳优先搜寻(Best-First Search, BestFS) 三类。

然后针对最佳优先搜寻的部份,还有一种具有理论背景,相对强大好用的A* 算法可用。

图形的表达

图形是由节点(node) 与连线(edge) 所组[……]

继续阅读

神经网络演算——多层感知器与反传递演算法

前言

由于单层感知器并没有办法处理像XOR 这样的函数。

为了提升「感知器」的能力,可以在输入与输出节点之间,再加入一些隐藏层,并透过这些隐藏层对整个学习空间进行更多次的分割,以便能处理XOR 这类难以用单一线性函数分割的问题。

但是加入了隐藏层之后,感知器的学习与训练就更复杂了,这时必须有足够的「数学理论」才能为「多层感知器」提供一个方向,而「反传递演算法」 (Back-Propagation ) 正是这样一个可以提供「多层感知器」学习方向的好东西,其数学基础则是建构在多变数微分「梯度」概念之上的一种「梯度下降法」。

事实上、反传递演算法(Back-Propagation) 的概念在[……]

继续阅读

神经网络演算——单层感知器

神经网络简介

神经网络是指一种模拟人类神经系统所设计出来的程序思想,用来模拟人类视觉、听觉等等智慧行为的原理,让电脑可以具有人类智慧的一种方法。

下图是生物神经细胞的结构图,这个图看来颇为复杂,如果电脑程序真的要模拟这么复杂的结构,那程序应该也会非常复杂才对。

生物神经细胞结构图

还好、神经网络程序不需要去模拟「细胞膜、粒线体、核糖体」等等复杂的结构,因为开发人员可以透过「抽象化」将上述的神经细胞结构简化成下图(a) 的样子。

在下图中,$a_1 … a_n$ 是输入,$w_1 … w_n$ 是权重,这些输入乘上权重之后加总(SUM),就会得到神经元的刺激强度,接着经过函数f() 转换之后,就[……]

继续阅读

ARToolKit 生成标记文件

ARToolKit 生成.dat与.hiro文件

一、相机校验 生成.dat文件

1、下载ARToolKit SDK

官网:artoolkit

2、打开命令提示符

键入:

./calib_camera

终端会输出:

Current working directory is '/Users/indeex'
CHESSBOARD_CORNER_NUM_X = 7
CHESSBOARD_CORNER_NUM_Y = 5
CHESSBOARD_PATTERN_WIDTH = 30.000000
CALIB_IMAGE_NUM = 10
Video parameter: -width=[......]

继续阅读

我回来了

  终于决定把这个博客重新开起来,前几年我一次误操作把原来的博客全部删掉了,几乎没有留下任何痕迹,那时候我正在经历人生中的一次重大变故,心神不宁,认为是天意如此,就再也不管了。

  后来好几次都有冲动重新开博,无奈工作压力巨大,直到今天才认认真真坐下来做这件事情。

  以后我仍然会把这里作为我平时积累经验的地方,同样也希望能够帮助到其他人。我现在仍然在做技术方面的工作,不过大部分时间都在学习新知识,所从事的方向已经转变为游戏和人工智能。

  这个博客已然不在架设在Linode虚拟机上,虽然使用Linode也已经好几年了,对它还是比较满意的。

  记得第一次在大学搭建博客时遇到一些麻烦,[……]

继续阅读

Typescript使用

Typescript使用

Typescript v0.8.1发布后使用有段时间了,相信很快就能发布1.0正式版了,由于目前的项目主要使用Actionscript3、Jquery以及vanilla.js(Ecmascript 262 + DOM,也就是一般泛指的Javascript),实际用到项目中的并不多。

以前,微软也发布过基于Ecmascript 262的实现JScript,后来还是被vanilla.js和Jquery替代了,感觉这个版本的实现会成为未来主流的web语言,至少是操作XML的主流语言。

类型

Typescript依然分为值类型和引用类型:

  1. number数值类型,这里不同的是没有常用的in[……]

    继续阅读

JQuery 选择器

一、基本选择器

1. id选择器(指定id元素)

将id=”one”的元素背景色设置为黑色。(id选择器返单个元素)

$(document).ready(function () {
        $('#one').css('background', '#');
});

$(document).ready(function () {
        $('#one').css('background', '#');
    });

2. class选择器(遍历css类元素)

将class=”cube”的元素背景色设为黑色

$(document).ready(function[......]

继续阅读

反代理

     反代理

由于WEB开发的安全性问题,往往访问服务器的时候需要验证身份,而有些资源是不需要验证身份的,比如公共资源,这时最常用的做法就是开放服务器权限,以允许所有访问者都能访问到资源。

对于比较敏感的资源一般都不允许访问,或者需要验证属于同源才能访问。反代理就是去访问一些禁止跨域的资源。

需要软件:

NGINX

1. 介绍

关于介绍:
百度百科:nginx

2. 下载

官方下载地址:下载地址

3. 安装

略.

安装完成后先不要打开服务

4. 修改自己的服务器地址

  1. CD到软件安装根目录/conf/下,打开nginx.conf文件。
  2. 将listen端口修改为自己[……]

    继续阅读

反应式编程

反应式编程是一种编程模式,其重点在于:

 

 

 

 

[……]

继续阅读