gnip
gnip
求推荐
这个问题可以么?
你是妹子吗?看你头像感觉很萌啊?关注很久了!
- fork 到自己的仓库 - git clone 到本地 - 上游建立连接 `git remote add upstream 开源项目地址` - 创建开发分支 (非必须) `git checkout -b dev` - 修改提交代码 `git status` `git add .` `git commit...
主干开发是一套代码分支管理策略,开发人员之间通过约定向被指定为**主干**的分支提交代码,以此抵抗因为长期存在的多分支导致的开发压力。 此举可避免分支合并的困扰,保证随时拥有可发布的版本。  在介绍主干开发前先来对比一下目前的分支管理策略。 ### Git Flow #### 简介 Git分支配置的规则,也是实现该规则的工具 最完整的体系。 #### 特点 1. 两个长期分支:master和develop 2. 三个短期分支:feature(功能)、hotfix(补丁)、release(预发) 3. master分支用于存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的发布版;develop用于日常开发,存放最新的开发版。 4. 短期存在的分支一旦完成开发,它们就会被合并进develop或master,然后被删除。 长期分支: master(主分支):保存最新已发布版本基线的分支。 develop 分支(开发分支):对开发的功能进行集成的分支。 短期分支: feature 分支(功能分支):开发者进行功能开发的分支。从Develop分支上面分出来的。开发完成后,要再并入Develop。 hotfix 分支(补丁分支):对线上缺陷进行修改工作的分支。从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。...
 随着 4G 的普遍以及 WiFi 的广泛使用,手机上的网速已经足够稳定和高速,以视频为主的 HTML5 也越来越普遍了,相比帧动画,视频的表现更加丰富,这里介绍一些实践经验。 ### video的属性 ```js ``` - **src**: 视频的地址 - **controls**: 加上这个属性,Gecko 会提供用户控制,允许用户控制视频的播放,包括音量,跨帧,暂停/恢复播放。 - **poster**: 属性规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。如果未设置该属性,则使用视频的第一帧来代替。 - **preload**: 属性规定在页面加载后载入视频。 - **webkit-playsinline和playsinline**: 视频播放时局域播放,不脱离文档流 。但是这个属性比较特别, 需要嵌入网页的APP比如WeChat中UIwebview...
**FFmpeg**是一套开源多媒体视频处理工具集,在音视频流媒体领域有着举足轻重的作用,详细可以看维基百科[FFmpeg](https://zh.wikipedia.org/wiki/FFmpeg),本文主要介绍其命令行工具**ffmpeg**,整理出来一些常用命令方便查找使用。 ## ffmpeg常用命令 通过`ffmpeg --help`可以看到ffmpeg常见的命令大概分为6个部分: - ffmpeg信息查询部分 - 公共操作参数部分 - 文件主要操作参数部分 - 视频操作参数部分 - 音频操作参数部分 - 字幕操作参数部分 ### 1. ffmpeg使用语法 命令使用: **ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...**...
### lsof 列出当前系统打开文件 查看指定端口号语法格式:`lsof -i:端口号` _如果命令找不到_ `yum install lsof -y` ``` [root@localhost ~]# lsof -i:7075 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME docker-pr 17394 root 4u IPv6 75775...
 ### 背景 Web浏览器正在朝着更严格的自动播放策略发展,以便改善用户体验,最大限度地降低安装广告拦截器的积极性并减少昂贵和/或受限网络上的数据消耗。这些更改旨在为用户提供更大的播放控制权,并使开发商获得合法用例。 ### 新的特性 Chrome的自动播放政策很简单: - 静音自动播放总是允许的。 - 在下列情况下允许使用声音自动播放: - 用户已经与域进行了交互(点击,tap等)。 - 在桌面上,用户的媒**体参与指数阈值**(MEI)已被越过,这意味着用户以前播放带有声音的视频。 - 在移动设备上,用户已将该网站添加到主屏幕。 - 顶部框架可以将自动播放权限授予其iframe以允许自动播放声音。 ### 媒体参与指数(Media Engagement Index)(MEI) MEI衡量个人在网站上消费媒体的倾向。Chrome 目前的方法是访问每个来源的重要媒体播放事件的比率: - 媒体消耗(音频/视频)必须大于7秒。 - 音频必须存在并取消静音。 -...
### 背景介绍 由于之前业务需求需要对服务器返回的zip包进行解压、解密。 服务器使用的是Java **DES**加密算法需要前端来进行解密。目前浏览器端解密库里**CryptoJS**算得上是比较通用的库了。而且**CryptoJS**加密解密算法很多支持度比较广并且网上资料丰富可以有助与我们快速完成相关业务。下面以**DES**加密解密为例给大家介绍一下**CryptoJS**加密解密一些常见问题。 ### ArrayBuffer、TypeArray和WordArray - **ArrayBuffer**: 用来表示一个通用的、固定长度的二进制数据缓冲区。你不能直接操纵一个ArrayBuffer中的内容;你需要创建一个类型化数组的视图或一个描述缓冲数据格式的**DataView**,使用它们来读写缓冲区中的内容。 - **TypeArray**:用来生成内存的视图,通过9个构造函数,可以生成9种数据格式的视图,比如Uint8Array(无符号8位整数)数组视图, Int16Array(16位整数)数组视图, Float32Array(32位浮点数)数组视图等等 - **WordArray**: 这个在JavaScript中没有任何描述是CryptoJS实现的一种数据结构。CryptoJS中大量使用的数据结构,是一个代表32位无符号数组对象,当你传入字符串时CryptoJS会自动包装成utf8编码的WordArray。可以使用**CryptoJS.enc.Utf8**工具来转换。 总结: **ArrayBuffer**对象代表原始的二进制数据,**TypedArray**对象代表确定类型的二进制数据,**DataView**对象代表不确定类型的二进制数据。它们支持的数据类型一共有9种。**WordArray**对象是**CryptoJS**内部实现的一种二进制数据结构用32位数组表示。具体实现感兴趣可以参考[WordArray源码](https://github.com/brix/crypto-js/blob/develop/src/core.js) ### 简单字符串DES加解密 对于字符串加解密比较简单我们可以直接看[官方API](https://cryptojs.gitbook.io/docs/)搜DES加密即可下面给出封装代码 ```js // encrypt string function encryptByDES(message, key) {...
## 浏览器环境 ### 基本概念 为了协调事件、用户交互、脚本、呈现、网络等,UA必须使用事件循环的机制。事件循环有两种模式:用于**browsing contexts**(浏览环境上下文)的循环,以及用于**workers**的循环。 - browsing contexts事件循环 每个`browsing contexts event loop`个至少含有一个**browsing context**上下文环境,该事件循环依赖与环境,环境消失的话该事件机制也将销亡. - workers 事件循环 **workers**与此类似 每个worker 有一个事件循环,并通过`worker processing model` 管理事件循环的生命周期. ### task queue(任务队列) 一个事件循环会有一个或者多个任务队列。任务队列是一个有序的list集合,用来处理下面的任务: + Events 任务的分发...