我是一个软件开发工程师

乐观 积极 生活如此精彩

总有快乐的事情降临

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

技术精要

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

动画与效果

一些常见的动画和效果

算法与逻辑

常用的算法和逻辑推导

性能与技巧

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

45度影子原理

影子实现的方式有很多,原理却不一样,这里使用Typescript实现的一种方案,当然也许有更好的方案。以下是实现原理(请勿直接使用于项目),实现的原理比较简单,不再做详细赘述。

首先是构造、声明和基本的设置:

public static const DIRECTION_RIGHT:number = 1;
public static const DIRECTION_LEFT:number = -1;

private var vertices:Array<number>;
private var indices:Array<number>;
private var u[......]

继续阅读

代码是最好的注释

ECMAScript标准直接使用的问题

直接使用ECMAScript标准有很多问题,比如著名的 Null References: The Billion Dollar Mistakeconst chocolate: Product = new Product(null, null, null);,这种完全没有意义的代码以及需要返回空对象却返回了null等类似的问题太多,这里举个栗子:

正常情况下,代码是不需要注释的,代码的命名、执行的方法、通顺的逻辑就已经是最好的注释。如果开发者的代码需要大量的注释才能读懂,说明这种代码是不合格的,而ECMAScript开发人员很少有能做到 代码即注释[……]

继续阅读

ECMAScript MVC模式简介

介绍

MVC是模型-视图-控制器的缩写。视图和用户交互,通过事件导致控制器改变; 控制器改变导致模型改变,或者控制器同时改变两者;模型改变导致视图改变,或者视图改变,潜在的从模型里面获得参数来改变自己。它是一种抽象的模型,一种编程思维组织方式。

实例

模型modal

这里使用多年前的示例做演示。

其他ECMASCRIPT标准或实现(如Typescript、Coffescript等)同理,不再赘述

package {
    //导入相关依赖 如
    import events.Event;
    import events.EventDispatcher;
    //imp[......]

继续阅读

代码审核

代码审核是一项技术难度较高的工作,需要审核官有很强的专业性和精确性。如果不了解项目的需求,技术方向和团队的整体状况,很难做好。至关重要的因素之一就是人为导向。

可以通过以下几种方式:

目标明确

代码审核一般都需要在几周内完成,由于需要从参与项目的开发人员那里花费大量时间。因此,最好制定一个计划!

比如了解项目的git/svn提交记录,bugs修复记录和需求文档,并找出可能存在的问题或者项目存在的风险以及相关责任人。

然后有目标的开展工作,比如:

  1. 项目的用户活跃量或者访问量等
  2. 团队的协作有哪些问题等
  3. 开发人员对项目的兴奋程度等
  4. 团队产生的矛盾点等
  5. 团队希望[……]

    继续阅读

LED控制

绚丽多彩的灯光很吸引人,那么接下来,使用LED。

元器件:

所有用到的元器件,这里不在列出,主要LED、阴极管、阻尼器、主板、按钮、电线

这里使用的通用型LED,分别是R、G、B、Y、O LED,GPIO接口:

LED控制

输入是:

LED控制

由于LED长时间没有用,首先测试一下:

const Io: unknow = require('yourself deivce');
const board: Io.Board = new Io.Board();

board.on('ready', (): void => {
  const led1: unknow = new Io.Le[......]

继续阅读

光敏和温控

基础环境和驱动编写完成后(详见:前端机器人开发基础),接下来开始使用元器件,需要:

  1. USB数据线
  2. 4.7kv普通电阻和10kv普通电阻
  3. 普通按钮型开关/或其他可切断型开关
  4. 电线,电线根据主板不同,一般有红色、绿色和黑色电线(或国际通用电线颜色。。。)
  5. 任何可用主板
  6. 光敏电阻
  7. 温度传感器

光敏和温控
光敏和温控

串联电路

在串联电路中,电流是相同的,假如电流是15MA:

光敏和温控

但由于各个组件的消耗,元器件的电压是不一样的:

光敏和温控

###电压计算

那么就需要计算元器件的电压,比如R1的电压:

let R1: number =100;
const total: n[......]

继续阅读

游戏内核基础 二

游戏内核基础

矩阵

数学上,一个 m × n的矩阵是一个由 m行(row) n列(column)元素排列成的矩形阵列。矩阵里的元素可以是数字、符号或数学式。

大小相同(行数列数都相同)的矩阵之间可以相互加减,具体是对每个位置上的元素做加减法。矩阵的乘法则较为复杂。两个矩阵可以相乘,当且仅当第一个矩阵的列数等于第二个矩阵的行数。矩阵的乘法满足结合律和分配律,但不满足交换律。

游戏内核基础

以上来自维基百科对矩阵的解释(图例仅供欣赏),比较简单。矩阵也是游戏中最常用的功能,接下来封装一个4 x 4的矩阵:

export default class Matrix4x4{
    private[......]

继续阅读

游戏内核基础 一

游戏内核是游戏开发的核心,是对游戏开发效率提升的关键,这里写一个简单的游核。

前置

样例使用React框架和create-react-app官方脚手架,具体请查阅官方文档,此处不再赘述。

PC浏览器请使用最新版本chrome或者firefox。

移动端浏览器请使用最新系统或安装移动版chrome或firefox。

Dart版本请查阅游核 Dart版本(什么时候想起来就有可能更新);

初始化

首先,需要初始化WebGL并设置基本的循环渲染,然后绘制:

export let gl: any;

export class WEBGLUtils{
    public static i[......]

继续阅读

责任链模式

责任链模式的解释

责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。

以上是维基百科的解释,那么通俗一点解释一下(毕竟计算机相关的解释都很计算机😄),拿的以前有人看牙的解释:

说的是一个病人看牙的时候,医生不小心把拔下的一个牙掉进了病人嗓子眼里。病人因此楼上楼下的跑了好多科室,最后无果而终(这个解释是不是印象很深刻😁)。

责任链模式就是这种“推卸”责任的模式,[……]

继续阅读

TEA加密算法

加密算法用处渐渐多了起来,可以使用简单的加密算法对JS加密/解密,这里实现一个简单的微加密算法。

微加密算法(TEA)及其相关变种(XTEA,Block TEA,XXTEA) 都是分组加密算法,实现也比较简单。

TEA加密算法

  TEA 算法最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计的。该算法使用 128 位的密钥为 64 位的信息块进行加密,它需要进行 64 轮迭代,尽管作者认为 32 轮已经足够了。该算法使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ[……]

继续阅读