-
;
人口增长是按照几何级数增长的,而生存资源仅仅是按照算术级数增长的,多增加的人口总是要以某种方式被消灭掉,人口不能超出相应的农业发展水平。这个理论就被人称为“马尔萨斯陷阱”。
- 马尔萨斯陷阱 2020年10月11日
-
;
路径依赖(Path-Dependence),又译为路径依赖性,它的特定含义是指人类社会中的技术演进或制度变迁均有类似于物理学中的惯性,即一旦进入某一路径(无论是“好”还是“坏”)就可能对这种路径产生依赖。 一旦人们做了某种选择,就好比走上了一条不归之路,惯性的力量会使这一选择不断自我强化,并让你轻易走不出去。第一个使“路径依赖”理论声名远播的是道格拉斯·诺斯,由于用“路径依赖”理论成功地阐释了经济制度的演进,道格拉斯·诺斯于1993年获得诺贝尔经济学奖。
- 路径依赖 2020年10月11日
-
;
1.目标仓库新建一个项目 2.把源仓库拉取到本地电脑上 3.修改,本地仓库中的配置文件本地项目目录 —> .git —> config中的origin为目标仓库地址 4.打开Git Bash命令窗口,并输入git push -u origin master 参考链接:https://www.jianshu.com/p/acbaf24cf3ac
- Git仓库迁移并保留提交记录 2020年10月6日
-
;
0.环境总览 Ubuntu 20.04 64位 1.基础设施 apache(2.4.41)mysql(8.0.21)php(7.4.3)phpmyadmin 2.语言环境 nodejsjava 3.开发环境 giteaJenkins 4.应用框架 dockerneo4jhasura 4.应用软件 scratchwordpress 5.服务开通 ssl虚拟主机二级域名 6.守护进程 pm2 常用命令 命令 –help #帮助 clear #清屏 crontab -e #计划任务 sudo service apache2 restart #重启apache2 lsof -i tcp:80 #查看端口进程 netstat -ntpl #查看本机所有端口进程 curl 127.0.0.1:3000 #发起访问 history #查看最近使用的命令行历史记录 top #系统状况 pwd #当前目录 dmidecode #硬件信息 df -h #磁盘信息 ls -l #文件显示权限 ls *.sh #显示以.sh为后缀的内容 which app #显示默认执行的程序 whereis 文件名 #模糊搜索 find / -name 文件名 #精确搜索,较慢 grep -r abc * #递归搜索所有子目录下的文本,关键字abc mkdir abc #创建a…
- ecs整套环境重新安装 2020年9月29日
-
;
1.文档 服务端: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/customer-message/customerServiceMessage.getTempMedia.html button: https://developers.weixin.qq.com/miniprogram/dev/component/button.html 指南 :https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/customer-message/customer-message.html
- 小程序客服自动回复 2020年9月28日
-
;
1.安装 git clone https://github.com/LLK/scratch-gui.git cd scratch-gui npm install 2.启动 npm start 3.访问 http://localhost:8601/ 4.注意事项 在ubantu18中自带的Node8中安装,npm时候会报错,将nodejs升级到14后一切正常 阿里云需要在安全组中开启8601端口 5.在node 10.19.0中安装 npm i后会提示缺少webpack-dev-server,手动安装 npm start启动无报错,打开页面却提示Invalid Host header 问题原因:新版的webpack-dev-server增加了安全验证,默认检查hostname,如果hostname不是配置内的,将中断访问。在scratch-gui文件夹下webpack.base,config.js中找到devserver,添加{disableHostCheck: true} 此处也可以修改端口 参考链接:https://github.com/LLK/scratch-gui
- nodejs安装scratch 2020年8月16日
-
;
1.准备 确保Docker和Docker Compose已安装 2.根目录下创建hasura文件夹 pwd //查看当前所处的路径 cd .. mkdir hasura cd hasura 3.获取the docker-compose文件 wget https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml 4.启动 $ docker-compose up -d 5.检查容器是否在运行 $ docker ps CONTAINER ID IMAGE … CREATED STATUS PORTS … 097f58433a2b hasura/graphql-engine … 1m ago Up 1m 8080->8080/tcp … b0b1aac0508d postgres … 1m ago Up 1m 5432/tcp … 6.访问 http://localhost:8080/console 7.备注,确保8080端口已开放,阿里云需要配置安全组 8.默认情况没有登录验证,我们设置登录密码123 docker-compose.yaml文件中添加如…
- ubantu安装hasura 2020年8月16日
-
;
1.查看现有版本 cat /etc/issue //(简单) cat /etc/lsb-release //(具体) 2.步骤 $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get dist-upgrade $ sudo do-release-upgrade 3.安装docker 第一步:更新系统 apt-get update 报错:Unable to lock directory /var/lib/apt/lists/ 执行:sudo fuser -vki /var/lib/apt/lists/lock 查看系统版本及内核,Docker需要运行在3.8以上的内核 cat /etc/issue //查看系统版本 uname -r //查看内核 第二步:安装docker apt-get install docker.io 验证安装是否成功 sudo docker run hello-world 其它相关命令 sudo service docker start //启动 docker info //查看信息 第三步:安装docker-compose sudo curl -L "https://github.com/docker/compose/releases/downl…
- 阿里云ecs系统升级从ubantu14到16并安装docker 2020年8月15日
-
;
相关资料: https://help.aliyun.com/document_detail/92883.html https://www.jianshu.com/p/937672b8bd46
- 小程序图片上传-阿里云oss 2020年7月24日
-
;
1.文件通过ftp上传后访问报错 Warning: require(__DIR__/wp-blog-header.php) [function.require]: failed to open stream: No such file or directory in /data/home/byu7756960001/htdocs/index.php on line 17 Fatal error: require() [function.require]: Failed opening required ‘__DIR__/wp-blog-header.php’ (include_path=’.:/var/www/php5/lib/php’) in /data/home/byu7756960001/htdocs/index.php on line 17 2.搜索一番都是说权限问题,或者路径修改,修改后问题依旧。 3.查看wordpress根目录中的readme.html文件 最低系统需求 PHP 5.6.20或更高版本。 MySQL 5.0或更高版本。 3.主机后台修改php版本为7.2, 4.至此wordpress可以顺利安装,后续各种权限设置可以直接在ftp软件中处理,修改某个文件发现没生效,可以对某一个文件设置权限为777 5.安装主题需要…
- 阿里云linux虚拟主机安装wordpress注意事项 2020年6月27日
-
;
父created–>子created–>子mounted–>父mounted
- vue中父子组件中生命周期函数顺序 2020年6月17日
-
;
(function(modules){ //module缓存对象 var installedModules = {}; //require函数 function __webpack_require__(moduleId){ //检查module是否在cache中 if(installedModules[moduleId]){ return installedModules[moduleId].exports; } //若不在cache中则新建module并放入cache中 var module = installedModules[moduleId] = { exports: {}, id: moduleId, loaded: false }; //执行module函数 modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); //标记module已经加载 module.loaded = true; //返回module的导出模块 return module.exports; } //暴露modules对象(__webpack_modules__) __webpack_require__.m = modules; //暴露modul…
- webpack的bundle.js 2020年6月14日
-
;
1.初始化一个项目 npm init -f 2.创建一个a.js文件 #!/usr/bin/env node console.log(‘Hello, world!’); 3.package.json中添加bin "bin": { "abc": "./a.js" } 此时在命令行输入abc提示无法识别 4.打成全局包 npm install . -g 或者 npm link 此时在命令行输入abc即可执行,如果提示权限问题用管理员运行命令行即可 5.其它 npm prefix -g可以显示node的全局目录,根据路径打开可以看到npm link所生成的文件 我们再打开系统环境变量中的Path,发现nodejs全局安装包是在Path中的,这也就是为什么任何一个位置可以执行我们的命令的原因 删除上面的命令npm uninstall -g abc 参考链接: https://docs.npmjs.com/cli/link https://segmentfault.com/a/1190000012083763 https://www.cnblogs.com/mrzhu/p/10246464.html https://blog.csdn.net/weixin_43833570/article/d…
- nodejs制作cli工具 2020年6月10日
-
;
一、为什么要使用 base64 我们知道一个字节可表示的范围是 0 ~ 255(十六进制:0x00 ~ 0xFF), 其中 ASCII 值的范围为 0 ~ 127(十六进制:0x00 ~ 0x7F);而超过 ASCII 范围的 128~255(十六进制:0x80 ~ 0xFF)之间的值是不可见字符。 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准 ISO/IEC 646。 在 ASCII 码中 0 – 31和 127 是控制字符,共 33 个。以下是其中一部分控制字符: 其余 95 个,即 32 – 126 是可打印字符,包括数字、大小写字母、常用符号等。 当不可见字符在网络上传输时,比如说从 A 计算机传到 B 计算机,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。 为了解决这个问题,我们可以先对数据进行编码,比如 base64 编码,变成可见字符,也就是 ASCII 码可表示的可见字符,从而确保数据可靠传输。Base6…
- 一文读懂base64编码 2020年6月8日
-
;
Fast Forward Moving Picture Experts Group 教程:http://www.ruanyifeng.com/blog/2020/01/ffmpeg.html
- ffmpeg 2020年5月30日
-
;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>利用Blob对象创建文件</title> </head> <body> <textarea name="" id="downloadFileTextarea" cols="30" rows="10"></textarea> <br> <button id="downloadFileButton">downloadFileButton</button> <script> function downloadFile(fileName, content, blobOptions) { // blobOptions = { // type: ‘text/csv’, // endings: ‘native’ // or transparent // }; blobOptions = blobOptions || …
- 利用Blob, a.download, URL.createObjectURL模拟下载文件 2020年5月29日
-
;
一、概述 我们常见的视频文件,大多为 mkv、mov、mp4 等扩展名。一般情况下,我们粗略地根据扩展名判断文件类型。但实际上,科学的分类方法如下: 编码:指的是媒体文件中音视频的编码,如:H.264、AAC 容器:可根据文件扩展名区分,用于将多部分内容整合,包括: 视频 音频,可以是多音轨,如:一部影片同时具备多种语言 字幕:一部影片也可以包含多种语言的内置字幕 二、常见的文件(容器)格式 AVI (.avi) 其含义是 Audio Video Interactive,就是把视频和音频编码混合在一起储存,是最常见的音频视频容器。支持的视频音频编码也是最多的。AVI 也是最长寿的格式,已存在 10 余年了,虽然发布过改版(V2.0 于 1996 年发布),但已显老态。 MPG (.mpg/.mpeg/.dat) MPEG 编码采用的音频视频容器,具有流的特性,里面又分为 PS、TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV。 VOB (.vob) DVD 采用的音频视频容器格式(即视频 MPEG-2,音频用 AC3 或者 DTS),支持多视频多音轨多字幕章节等。 MP4 MPEG-4 编码采用的音频视频容器,基于 QuickTime MOV 开发,具有许多先进特性。 3GP 3GPP 视频采用的格式…
- 视频文件的容器格式和编码格式 2020年5月29日
-
;
二进制 Base64 网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法 MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。 MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。 不同的应用程序支持不同的 MIME 类型。 MIME 类型大约有191种类型,是的没错,191种。 arrayBuffer ArrayBuffer表示二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据。是最基础的原始数据容器,无法直接读取或写入, 需要通过其他方式来读写。 但可根据需要将其传递到类型化数组或 DataView 对象来解释原始缓冲区。 也就是说他是一个二进制数据的原始缓冲区,虽然 JavaScript 是弱类型语言,但是他本身是对数据的类型和大小都有限制的,我们需要通过某种数据结构将缓冲区的内容有序的读取出来或写进去 例如: Int8Array 8位有符号整数 Uint8Array 8位无符号整数 Uint8ClampedArray 同上,像素操作 Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array …
- Base64,MIME,arraybuffer,blob,blob URL,FileReader,ts,Codec 2020年5月28日
-
;
包括原理篇/思路篇/实践篇/方案篇/前端篇/总结 一:原理篇 何李石:七牛直播云服务技术详解 直播模型及其实现 一个通用的直播模型一般包括三个模块:主播方、服务器端和播放端。 首先是主播方,它是产生视频流的源头,由一系列流程组成:第一,通过一定的设备来采集数据;第二,将采集的这些视频进行一系列的处理,比如水印、美颜和特效滤镜等处理;第三,将处理后的结果视频编码压缩成可观看可传输的视频流;第四,分发推流,即将压缩后的视频流通过网络通道传输出去。 其次是播放端,播放端功能有两个层面,第一个层面是关键性的需求;另一层面是业务层面的。先看第一个层面,它涉及到一些非常关键的指标,比如秒开,在很多场景当中都有这样的要求,然后是对于一些重要内容的版权保护。为了达到更好的效果,我们还需要配合服务端做智能解析,这在某些场景下也是关键性需求。再来看第二个层面也即业务层面的功能,对于一个社交直播产品来说,在播放端,观众希望能够实时的看到主播端推过来的视频流,并且和主播以及其他观众产生一定的互动,因此它可能包含一些像点赞、聊天和弹幕这样的功能,以及礼物这样更高级的道具。 直播服务器端提供的最核心功能是收集主播端的视频推流,并将其放大后推送给所有观众端。除了这个核心功能,还有很多运营级别的诉求,比如鉴权认证,视频连线和实时转码,自动鉴黄,多屏合一,以及云端录制存储…
- 视频直播的技术原理和实现思路方案整理 2020年5月27日
-
;
1.斗鱼(http-flv) 找到flv的请求,新窗口打开就可自动下载
- 各大平台视频及直播下载方法 2020年5月27日
-
;
最近打算直播上http-flv,之前用的是rtmp和hls。为什么使用http-flv,它有什么优缺点? 怎么让流媒体服务器支持flv直播? 一、市场上哪家直播使用了http-flv: 通过抓包分析: 优酷的pc网页直播使用了http-flv。 斗鱼、熊猫tv、虎牙pc网页上的也使用了http-flv。 二、http-flv、rtmp和hls直播的优缺点: A、三者的延迟性: http-flv:低延迟,内容延迟可以做到2-5秒。 Rtmp:低延迟,内容延迟可以做到2-5秒。 Hls::延迟较高。 B、三者的易用性: rtmp和http-flv:播放端安装率高。只要浏览器支持FlashPlayer就能非常简易的播放。 hls:最大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信 等转发分享,不需要安装任何独立的APP,有浏览器即可。 C、rtmp和http-flv比较: (1) 穿墙:很多防火墙会墙掉RTMP,但是不会墙HTTP,因此HTTP FLV出现奇怪问题的概率很小。 (2) 调度:RTMP也有个302,可惜是播放器as中支持的,HTTP FLV流就支持302方便CDN纠正DNS的错误。 (3) 容错:SRS的HTTP FLV回源时可以回多个,和RTMP一样,可以支持多级热备。 (4) 简单:FLV是最简单的流媒体…
- 直播http-flv原理 2020年5月27日
-
;
权威的itef官方文档参见: https://datatracker.ietf.org/doc/draft-pantos-http-live-streaming/ 另外参见苹果官方文档 https://developer.apple.com/streaming/ #EXTM3U //必需,表示一个扩展的m3u文件 #EXT-X-VERSION:3 //hls的协议版本号,暗示媒体流的兼容性 #EXT-X-MEDIA-SEQUENCE:3560 //暗示首个视频分段的sequence number,只能有一个该字段,也可以没有,若没有就假设首个视频分段的sequence number为0 #EXT-X-ALLOW-CACHE:NO //是否允许客户端对下载的视频分段缓存用于以后播放? #EXT-X-TARGETDURATION:25 //每个视频分段最大的时长(单位秒) #EXT-X-DISCONTINUITY //暗示当前的视频分段和它之前及之后的视频分段有不同的编码不连续性 #EXTINF:, //每个视频分段都由以下三行信息组成,duration表示该段的时长,以秒为单位,注意最后有个逗号 http:……mp4 //视频分段的地址 #EXT…
- HLS中m3u8格式规范解读 2020年5月26日
-
;
m3u8 这两年来我们发现越来越多的视频应用使用了m3u8格式的视频,因为可以兼容PC、移动端。相比mp4等视频源,m3u8可以减轻服务器压力(按需加载)。HLS是由苹果公司率先提出的一种协议标准,可用于直播。 m3u8是一种基于HLS(HTTP Live Streaming) 文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成。不同于mp4大文件,m3u8是由一系列的ts文件组成,一般一个ts文件大概5-10秒,这些ts文件通过一个.m3u8文件做索引。用户播放视频时,可随意拖动视频进度,会读取相应进度的ts文件继续观看视频,不必等到下载完整的视频。因此在播放m3u8的时候很少有卡顿的现象。 关于HLS直播的技术示例以及m3u8切片技术我们会在后面有文章介绍。本文只做HLS点播讲解,与直播不同,点播是指视频文件已经在编辑好,随时可播放。 由于HLS是由Apple公司提出的,所以在iOS电脑或手机上,你可以直接使用Safari浏览器的<video>播放m3u8格式视频文件。而其他浏览器则需要借助hls.js来兼容m3u8。 使用hls.js,不需要任何定制的播放器,只需要<video>元素就能播放m3u8。 加载js和播放元素 在需要放置视频的页面位置上加入video元素和hls.js文件。 &l…
- HTML5点播m3u8(hls)格式视频 2020年5月26日