PopClip与uTools整合:提升Mac效率工具协同体验
在我这里 PopClip 和 uTools 都是重要的生产工具,把两者关联到一起可以进一步提高效率 前提PopClip 更新到 2021.11 版本或以上,支持快速安装扩展 扩展如下 1234567# popclip jsname: Utoolsrequirements: [text]actions: - title: 用Utools打开 icon: circle filled U javascript: popclip.pressKey(util.constant.KEY_SPACE, util.constant.MODIFIER_OPTION);popclip.pasteText(popclip.input.text) 选择上边文字,然后点击install Extension "Utools"如果没有弹出 popclip 菜单,就把上边内容复制到其他位置再试。 如果打开 uTools 的快捷键不是 opt+空格,需要替换 popclip.pressKey...
RSA加密实践:前端加密与Node.js后端解密的实现方法
对用户敏感数据进行加密处理,后端再解密。比如登录时的密码 由后端生成公钥node 使用node-rsa 123456import NodeRSA = require('node-rsa');const RSA = new NodeRSA({ b: 512 });RSA.setOptions({ encryptionScheme: 'pkcs1' });const pubkey = RSA.exportKey('pkcs8-public-pem'); // 生成公钥,发给前端用于数据加密,不导出私钥信息this.app.pubkey = pubkey;this.app.RSA = RSA;// 把RSA对象保存在程序内存,随时调用 前端加密前端使用jsencrypt 1234import JSEncrypt from "jsencrypt";const encryptor = new...
API安全防护:接口签名验证与防重放攻击实现
为了保证 api 接口安全,防止数据被篡改,需要设计 api 签名机制。以下为签名过程 接口签名算法1. 获取参数 一共 4 部分的参数 path query body 时间戳 {timestamp} 随机字符串 {nocestr} 2. 合并参数,然后排序(body 中可能嵌套多层 json,需要递归对对象属性排序,数组的顺序不变)3. 对上一步对象转为字符串,然后 md5 加密4. 再用用户 token 为 key,对 md5 加密后的字符串用 hmacSHA512 加密得到 sign5. http 请求 header 中添加 sign、timestamp、nocestr前端签名实现如下12345678import hmacSHA512 from "crypto-js/hmac-sha512";import md5 from "crypto-js/md5";const timestamp = +new Date();const nocestr = generateNoceStr();const data =...
EMQX MQTT服务器:使用Docker Compose快速部署及Nginx反向代理配置
docker-compose.yml 1234567891011121314151617version: "3"services: mqtt: image: emqx/emqx:4.2.14 container_name: mqtt restart: always ports: - "1883:1883" - "8083:8083" volumes: - /etc/timezone:/etc/timezone - /etc/localtime:/etc/localtime environment: - EMQX_LOADED_PLUGINS="emqx_recon,emqx_retainer,emqx_management,emqx_auth_username" - EMQX_ALLOW_ANONYMOUS=false -...
Vue.js 动态文本中实现可点击链接 | Interactive Links in Vue Dynamic Text
业务中有一块是通知中心,其中的通知文本中有的文字是可以点击跳转到其他页面的。但是又不想使用富文本渲染。遂采用以下实现方式 v-html 渲染 a 标签标识可跳转链接 dataset 设置参数 12345678910111213141516171819202122232425262728293031<template> <div> <div v-html="text" @click="click"></div> </div></template><script>export default { name: "About", data() { return { text: `你好,这是<a data-name='Preview' data-id='123'...
Node.js 日期循环库:使用 date-recur 实现周期性任务调度
因为在业务中周期性的任务,用到的该 node 库,记录一下备忘。业务需求是创建周期性的任务。比如每天,每隔几天,每周的周几,每月的几号,每年几月几号,以这些描述生成一系列的日期。 效果按天循环 按周循环 按月循环 按年循环 介绍 date-recur创建一个循环日期并查询它以查看它是否落在特定日期。使用方法详见npm date-recur 这里举几个例子12345678910const r = recur(start, end); //限定开始和结束日期// r.setDailyInterval(1); // 每天// r.setDailyInterval(2); //每两天// r.setDaysOfWeek(1)//每周一// r.setDaysOfWeek([1, 2]); //每周一周二// r.setWeeklyInterval(2).setDaysOfWeek(1); //每隔一周周一// r.setWeeklyInterval(3).setDaysOfWeek([1, 3]); //每三周周一周三// r.setDaysOfMonth(1); //每月一号//...
Flask 图片处理:构建高性能实时缩略图服务
因为网页上图片太大,现在要生成缩略图返回。使用 python 的 Pillow 库处理图片缩略图并返回。 以下是 flask 程序,调用方法 GET /images/<path>?resize=<width>*<height> 实现功能: 根据参数返回不同大小的缩略图,目前只支持 jpg 图片处理 使用的正则匹配路由,支持在 images 下的多级路径 不产生中间图片,全部在内存中处理。 注意:内部调用的是 thumbnail 方法。返回的图片并不是严格安装 resize 的参数进行返回。图片不会有拉伸效果。具体查看 Pillow 文档。 app.py12345678910111213141516171819202122232425262728293031323334353637from io import BytesIOfrom PIL import Imagefrom flask import Flask, request, send_filefrom werkzeug.routing import...
NPS内网穿透:SSH远程连接与Web访问实践方案
安装 NPS NPS 是提供服务的一个程序,需要安装在有外网 IP 的服务器上。https://github.com/ehang-io/nps/releases 点击查看安装教程 123sudo ./nps installsudo chmod +x npssudo nps start 编辑配置文件 1vim /etc/nps/conf/nps.conf 运行成功后打开 nps 后台管理界面登录创建一个客户端,填个名字,其他默认,点击创建。点击加号+,展开可以看到一个客户端命令,复制。 安装 NPC NPC 客户端,安装在需要被穿透的内网环境下https://github.com/ehang-io/nps/releases 客户端下载下来进入到下载的目录,把复制的客户端命令粘贴运行即可。 docker-compose 运行docker-compose.yml 123456789101112version: "3"services: eapinpc: image: ${NPC_IMAGE} container_name:...
vue 可编辑 div 组件
contenteditable属性可以指定元素内容是否可编辑。 vue 中使用这一属性后,编辑内容却不支持 v-model.不能使用一下方法绑定 1<div contenteditable v-model="value"></div> 提取成组件后可以使用 v-model 123456789101112131415161718192021222324252627282930313233343536373839<template> <p class="editable" ref="editable" contenteditable :placeholder="placeholder" v-on="listeners"></p></template><script>export default { props: { value: { type:...
Cesium 3DTileset渲染优化:屏幕空间误差参数详解
maximumScreenSpaceError用于驱动细节细化级别的最大屏幕空间错误。默认是 16效果如下修改为 4 后该参数越小显示效果越好。