OpenSSL生成本地https测试证书
一、准备工作1.本地安装好git工具2.创建一个cert文件夹用来放证书文件
二、创建证书第一步:使用openssl生成密钥privkey.pem1.操作系统说明windows系统:在cert目录中打开git命令窗口(注意:不是CMD窗口)linux或mac系统:cd定位到cert目录
12cd /xxx/cert
2.然后执行以下命令生成privkey.pem
12openssl genrsa -out privkey.pem 1024/2048
如果出现提示:genrsa: Can’t parse “1024/2048” as a number,请删除命令最后面的/2048再执行
第二步:使用密钥privkey.pem生成证书server.pem1.执行以下命令,数字365表示证书有效期天数
12openssl req -new -x509 -key privkey.pem -out server.pem -days 365
2.然后按照步骤填写信息(测试环境下可随意填写或者为空也可以,域名建议填写)3.经过上面两步后生成了两个证书文件
三、使用证书复制两个文件到需要用到 ...
three.js全景视频
缘由昨天晚上睡不着觉,突然从国外的视频网站VR视频里面得到灵感,花了40分钟写下了这个小小demo,和大家分享
效果图
原理首先我们使用一个球体
将视频的每一帧生成一张纹理单元按照球体的uv在片元着色器内进行展开
摄像机位置放在原点位置
使用rAf更新渲染器
准备物料视频素材准备首先我们从某个不知名的网站(国内国外都可以)科学手段下载一部全景视频。用vlc播放器打开,大概长这样:
代码实现首先我们引入three和其自带的轨道控制器
123import * as THREE from "three/build/three.module";import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
在html里面加入如下DOM
123456789101112131415161718192021<div class="player"> <div> <button @click= ...
git ssh配置说明
创建ssh12ssh-keygen -t rsa -C "youname@example.com"
测试ssh1ssh -T git@域名
找到 C:\Users<用户名>.ssh文件夹中id_rsa.pub文件,将里面内容复制到github帐号中【头像 > Setting > SSH and GPG keys > New SSH key】中
JavaScript常用原生方法
JSON 与字符串互相转化12JSON.stringify(); // JSON转字符串JSON.parse; // 字符串转JSON
字符串转数组123let m = "1,2,3,4,5,6";let arr = m.split(",");console.log(arr);
数组转字符串123let m = [1, 2, 3, 4, 5, 6];let arr = m.join("-");console.log(arr);
截取字符串slice()第一个参数代表开始位置,第二个参数代表结束位置的下一个位置,截取出来的字符串的长度为第二个参数与第一个参数之间的差;若参数值为负数,则将该值加上字符串长度后转为正值;若第一个参数等于大于第二个参数,则返回空字符串.
substring()第一个参数代表开始位置,第二个参数代表结束位置的下一个位置;若参数值为负数,则将该值转为 0;两个参数中,取较小值作为开始位置,截取出来的字符串的长度为较大值与较小值之间的差.
substr()第一个参数代表开始位置,第二个参数代表截取的长 ...
JavaScript常用原生DOM操作
获取 DOM12345678<div id="id">testID</div><div class="className">testClass</div><ul> <li>1</li> <li>2</li> <li>2</li></ul><input type="text" name="name" />
1234document.getElementById("id"); // 通过ID获取,返回对象document.getElementsByClassName("className"); // 通过className,返回数组形式document.getElementsByTagName("ul"); // 通过标签名获取,返回数组形式document.getElementsByNam ...
一维数组转分类转tree数组,tree转table表格
一维转tree1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002 ...
this、apply、call、bind
这又是一个面试经典问题~/(ㄒoㄒ)/~~也是 ES5中众多坑中的一个,在 ES6 中可能会极大避免 this 产生的错误,但是为了一些老代码的维护,最好还是了解一下 this 的指向和 call、apply、bind 三者的区别。
本文首发于我的个人网站:cherryblog.site/
this 的指向在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象,来,跟着我朗读三遍:this 永远指向最后调用它的那个对象,this 永远指向最后调用它的那个对象,this 永远指向最后调用它的那个对象。记住这句话,this 你已经了解一半了。
下面我们来看一个最简单的例子:例 1:
12345678910var name = "windowsName"; function a() { var name = "Cherry"; console.log(this.name); // windowsName console.log(" ...
从零搭建React全家桶框架教程:快速搭建react+react-router+redux项目
搭建基本的react项目
我们使用create-react-app(npm要全局安装create-react-app)快速创建一个react项目:
123npx create-react-app my-appcd my-appnpm start
启动成功后,就可以看到react的页面啦。接下来我们稍稍调整下项目的目录结构和页面内容,新增About页面。
在src目录下新建pages目录,用来放置前端页面。新建App目录,将原来App.js和App.css移动进去,注意这两个文件引入路径的修改。 项目目录结构图
在src目录下新增Home页面和About页面(后面用到)
1234567891011121314151617181920212223// 路径:/src/pages/Home/Home.jsimport React from 'react'const Home = () => ( <div> <h1>Home Page</h1> <p>这是Home页面</p> & ...
用vue-lic4创建vue项目详解
创建项目1vue create project
选择配置123? Please pick a preset: (Use arrow keys) (使用箭头键)> default (babel, eslint) (使用默认的配置,会安装babel和eslint) Manually select features (手动配置)
可能会有vue2.x和vue3.x选项,分别对应vue的版本号,可根据自己需求选择
一般我是选择手动配置
手动配置项选择1234567891011? Please pick a preset: Manually select features? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection)>(*) Babel (转码器,可以将ES6代码转为ES5代码) ( ) TypeScript ( js的超集,强类型语言) ( ) ...
ES6—Promise
Promise 的含义Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
Promise对象有以下两个特点。
对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。
一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只 ...