-C 压缩数据传输
-f 后台登录用户名密码
-N 不执行shell[与 -g 合用]
-g 允许打开的端口让远程主机访问
-L 本地端口转发
-R 远程端口转发
-p ssh 端口
const angle = (time = '00:00') => { | |
let [hour, minute] = time.split(':').map(v => parseInt(v, 10)); | |
hour += minute / 60; | |
let ah = (360 / 12) * (hour % 12); | |
let am = (360 / 60) * minute; | |
let diff = Math.abs(ah - am); | |
return diff > 180 ? 360 - diff : diff; | |
}; |
language: node_js | |
sudo: true | |
node_js: node | |
cache: | |
directories: | |
- node_modules | |
install: | |
- npm install | |
before_script: | |
- git config user.name "Travis-CI" |
<!-- test pass with CryptoJS v3.1.2 --> | |
<script src="rollups/tripledes.js"></script> | |
<script src="components/mode-ecb.js"></script> | |
<script> | |
/** | |
* Encrypt message by DES in ECB mode and Pkcs7 padding scheme | |
* | |
* NOTE: DES is weak, please use 3DES(Triple DES) or AES | |
* | |
* @param {String} message |
// 一个每天签到领奖的小功能,在每天的11~13点和18~20点开放 | |
// 普通用户每天可以领取一次,会员用户可以在每个时段分别领取一次 | |
if (isVip) { | |
// 会员 | |
if ([11, 12, 13].includes(hour)) { | |
// TODO 判断该时段是否领取 并 领取 | |
} | |
if ([18, 19, 20].includes(hour)) { | |
// TODO 判断该时段是否领取 并 领取 | |
} |
/** | |
* 数字格式化 | |
* @param {number} v value 被格式化的数 | |
* @param {int} f toFixed 保留位数 | |
* @param {int} d 被除数 | |
* @param {Array<String>} u 单位 | |
* @param {String} b 备胎 | |
* @returns | |
*/ |
function xString(left, right) { | |
let ret = ''; | |
let lStr = String(left); | |
let rStr = String(right); | |
if (lStr.length < rStr.length) { | |
[lStr, rStr] = [rStr, lStr]; | |
} | |
let len = lStr.length; | |
rStr = rStr.padEnd(len, rStr); | |
for (let i = 0; i < len; i++) { |
(function (script, callback) { | |
var iframe = document.createElement('iframe'); | |
var blob = new Blob([`<script>(${script.toString()})();</script>`], { 'type': 'text/html' }); | |
iframe.src = URL.createObjectURL(blob); | |
iframe.style.display = 'none'; | |
iframe.onload = function () { | |
typeof callback === 'function' && callback(iframe.contentWindow); | |
}; | |
document.body.appendChild(iframe); | |
})( |