Skip to content

Instantly share code, notes, and snippets.

@loskael
loskael / iframe-sandbox.js
Created June 8, 2022 05:17
iframe sandbox
(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);
})(
@loskael
loskael / xor.js
Created April 7, 2022 03:02
Simple xor two strings
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++) {
@loskael
loskael / format-number.js
Created February 18, 2022 03:10
format number
/**
* 数字格式化
* @param {number} v value 被格式化的数
* @param {int} f toFixed 保留位数
* @param {int} d 被除数
* @param {Array<String>} u 单位
* @param {String} b 备胎
* @returns
*/
@loskael
loskael / deeper.md
Last active April 20, 2021 10:08
homebrew

问题回顾

系统升级到 macOS BigSur 11 之后,brew search 时一直报下面这个错:

Cask 'deeper' definition is invalid: invalid 'depends_on macos' value: unknown or unsupported macOS version: :mavericks

排查过程

  1. #72077 #58046 问题依旧
  2. 卸载重装 问题依旧
  3. 无数次 brew update-reset brew doctor brew update brew upgrade 问题依旧
@loskael
loskael / logic.js
Created July 29, 2020 01:54
一个每天签到领奖的小功能,在每天的11~13点和18~20点开放,普通用户每天可以领取一次,会员用户可以在每个时段分别领取一次
// 一个每天签到领奖的小功能,在每天的11~13点和18~20点开放
// 普通用户每天可以领取一次,会员用户可以在每个时段分别领取一次
if (isVip) {
// 会员
if ([11, 12, 13].includes(hour)) {
// TODO 判断该时段是否领取 并 领取
}
if ([18, 19, 20].includes(hour)) {
// TODO 判断该时段是否领取 并 领取
}
@loskael
loskael / ssh.md
Created July 9, 2020 06:58 — forked from suziewong/ssh.md
SSH端口转发

ssh

    -C  压缩数据传输
    -f  后台登录用户名密码
    -N  不执行shell[与 -g 合用]
    -g  允许打开的端口让远程主机访问        
    -L  本地端口转发
    -R  远程端口转发

-p ssh 端口

@loskael
loskael / CryptoJS-DES.html
Created May 16, 2019 11:32 — forked from ufologist/CryptoJS-DES.html
Use CryptoJS encrypt message by DES and direct decrypt ciphertext, compatible with Java Cipher.getInstance("DES")
<!-- 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
@loskael
loskael / .travis.yml
Created August 19, 2018 15:02
Travis-CI commit
language: node_js
sudo: true
node_js: node
cache:
directories:
- node_modules
install:
- npm install
before_script:
- git config user.name "Travis-CI"
@loskael
loskael / angle.js
Created May 17, 2018 02:13
计算时针和分针的夹角
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;
};
@loskael
loskael / 1.js
Last active April 11, 2018 01:38
数组去重,并将最大值放在最前面,最小值放在最后面,要求时间复杂度为 O(n)
const stat = (data) => {
if (!Array.isArray(data) || data.length < 2) return data;
let r = [], max = 0, min = 0, m = {}, vmax = data[0], vmin = data[0];
data.forEach(v => {
if (m[v]) return;
m[v] = true;
r.push(v);
if (v > vmax) {
vmax = v;
max = r.length - 1;