Shadowsocks服务器搭建与客户端配置教程
Shadowsocks123wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.shchmod +x shadowsocks-all.shsudo ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log 最后一步输完,你应该会看到下图中内容 ── 是要你选择需要安装的 Shadowsocks 版本。这里选择 4) shadowsocks-libev 选择完成后会让你输入密码,默认为一个随机密码,你可以回车选择默认,或者自定义一个密码后回车 密码设置完成后会让你输入一个端口号,默认随机一个,你也可以自定义一个端口号后回车生成 端口号设置完成后,选择一个加密方式,我一般采用 chacha20...
threejs 世界坐标系转其他对象本地坐标系方法
threejs 世界坐标系转其他对象本地坐标系方法12345678const v=new Vector3()// 世界坐标系下的坐标//obj 待转的对象const _m1 = new Matrix4()const position = v.clone()obj.updateWorldMatrix(true,false)_m1.copy(e.matrixWorld).invert()position.applyMatrix4(_m1)// position为相对与obj的本地坐标系的坐标
Three.js高效实现点与圆柱体碰撞检测的数学原理与实践
threejs 检测点是否在圆柱体内 在 threejs 文档里没有找到相关方法 检测思路: 把全局坐标系下的点坐标转为圆柱体的相对坐标 判断点坐标(x,z)是否在(0,0)为中心圆柱的半径为半径的圆内 判断点坐标的 y 的绝对值是否大于圆柱高度的一半 1234567891011121314//v:待检测点//obj:圆柱const position = v.clone();obj.updateWorldMatrix(true, false);const _m1 = new Matrix4();_m1.copy(e.matrixWorld).invert();position.applyMatrix4(_m1);// console.log(position)const parameters = obj.geometry.parameters;// console.log('待检测圆柱', parameters)const v2Center = new Vector2(position.x, position.z).distanceTo(new...
OpenGL图形编程:顶点着色器与片元着色器详解
OpenGLhttp://zhangwenli.com/blog/2017/02/24/what-is-a-shader/ 顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)。片元着色器是在顶点着色器之后被调用的,因而也可以从顶点着色器往片元着色器传递参数。 顶点着色器 比如你用 OpenGL...
Cesium实体动画:基于事件驱动的Entity移动与旋转实现
cesium entity 移动和旋转的方法12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455const EventEmitter = require("events");export default class Air extends EventEmitter { constructor(viewer, uri, id, position, orientation) { super(); this.active = false; this.air = viewer.entities.add({ id: id, position: position, orientation: orientation, viewFrom: new Cesium.Cartesian3(0, -30, 30), model:...
Cesium与Vue集成:WebGIS三维可视化开发实战案例
cesium 的几个小例子houxiaozhao/cesium-demo 安装使用前先安装 cesium 1npm install cesium 其他依赖包括(非必要,为了方便和好看)不需要安装,已经包含在仓库内 vue echarts element 使用anywhere 或其他静态文件服务器 1anywhere 效果
Egg.js 与 Swagger 集成:构建自动化 API 文档系统
接口文档 eggjs 和 swagger 配合 好运盈后台接口文档管理采用 Swagger 自动化生成发布。使用 egg-swagger 插件配合 egg 开发框架使用 https://github.com/Yanshijie-EL/egg-swagger-doc Swagger 介绍Swagger 是一款 RESTFUL 接口的文档在线自动生成+功能测试功能软件。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器。 使用方法 安装 egg-swagger-doc 1npm i egg-swagger-doc --save 在 app/文件夹下新建 contract 文件夹 添加配置 1config.swaggerdoc = { dirScanner: './app/controller', apiInfo: { title:...
Node.js 错误处理实用指南:Promise与Async/Await最佳实践
Node.js 错误处理最佳实践使用 Promise 捕获错误123456789101112131415161718192021222324let func = function (n) { return new Promise((resolve, reject) => { resolve(n * n); });};func(2) .then(res => { console.log(res); return func(res); }) .then(res => { console.log(res); throw new Error("Error"); }) .then(res => { console.log(res); return func(res); }) .catch(err => { console.log(err); }) ...
NestJS 企业级应用开发:基于 MongoDB 和 JWT 的 RESTful API 模板
基于 nestjs mongoose jwt 的 restful 模板程序 用于快速搭建服务端程序houxiaozhao/template 涉及技术框架 nestjs 服务框架 mongoose 操作数据库的库 typegoose 使用类定义数据模型 nestjs-typegoose mongoose-paginate 分页插件 jwt 生成验证 token swagger 文档生成 配置文件nestjs-config 管理配置文件 12/env//src/config/ Redis 缓存基本用法12345678910// controller@HttpCache(ARTICLE, 60)@UseInterceptors(HttpCacheInterceptor)// moduleimport { CacheModule } from 'src/common/processors/cache/cache.module';@Module({ imports: [CacheModule]}) 功能 ...
RESTful风格的Vue.js前端表格CRUD模板实现
restful 风格前端表格增删改查模板restful 风格前端表格增删改查模板 基于 vue d2-admin element-ui 配合上篇文章 js 代码生成器,只需要简单的修改即可实现快速页面开发。 vue...