周末随心飞
偶然有一次认真考虑了东航随心飞,虽然在这之前好像知道有这么个产品,但是感觉没什么用,没有去了解。那天之后就认证研究了一下,发现还不错,3666元,从10月31号到6月27号之间的每个周末航班,可以任意兑换,不限次数。春运期间大概一个月不能用。但是我买的时候已经是12月2号,所以浪费了一个月。 还好我买这个的时候发现,上海-洛阳往返的机票,有了东方航空的航班,并且是虹桥机场的。之前都是浦东机场的航班,记得上次我老婆来上海的时候。虽然现在航班不多,每天每个方向只有两班,但是时间还可以。PS:浦东机场实在太远,坐地铁赶过一次,从公司出发,1个多小时还凑合,从嘉定出发简直可怕。 买了随心飞之后,每个周末都飞回家,陪老婆吃顿饭,帮老婆洗洗衣服什么的。可惜随心飞不包机场建设费,每次还是需要100块钱的成本。其它的成本尽量减少,地铁去机场,公交回家。再公交或者老婆开车送我去机场,然后地铁回家。 上次回去,从机场回家的时候,打算去问问D1路什么时候发车,碰到有个大哥开着车问我,新区去不去?我说多少钱,他说不要钱,上来吧,路上聊聊天就行。我一听直接就坐了副驾驶。到龙门大道展览东路路口下来,打电话给老婆骑车来接我,我边走边等老婆。结果看到老婆的时候,喊了一声,看着老婆放慢了车速,但是又加速跑了。。赶紧打电话,但是她骑车的时候听不到,只能等她到了,好在不远,第二次打老婆就接到了,然后马上拐了回来。结果我老婆说我以为你走的话肯定走路边,不会走里面。我说我是走路边啊,但是我不能逆行啊,原来我老婆只顾着看她骑车的那边马路。唉,是我没考虑到啊。 异地期间,不能每天陪伴,每个周末的陪伴,也是非常珍惜。但是还是希望能早点结束异地,陪伴还是那么的重要。
初始化WSL 2 + nodejs
Deprecated @see 发行版:Ubuntu 20.04 系统更新 # cat EOF 用法:https://blog.csdn.net/lym152898/article/details/83306993 mv /etc/apt/sources.list /etc/apt/sources.list.bak sudo su cat > /etc/apt/sources.list <<EOF # 中科大 @see https://www.cnblogs.com/leeyazhou/p/12976814.html deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse EOF exit sudo apt update sudo apt upgrade 编译安装vim https://www.ilaipi.top/2019/11/22/vim-%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85-python3%e6%94%af%e6%8c%81/ 安装zsh sudo apt install zsh 安装nvm&node https://github.com/nvm-sh/nvm 下载install.sh,然后执行: bash install.sh 安装vim套件 mkdir Applications && cd Applications git clone git@git.zhlh6.cn:vim/vim.git --depth=1 # github加速插件提供的加速地址 git clone git@github.com:ilaipi/k-vim.git --depth=1 git clone git@github.com:ilaipi/k-tmux.git --depth=1 https://github.com/ohmyzsh/ohmyzsh/tree/master/tools # 先下载 install.sh 然后执行 sh -c install.sh git clone git@git.zhlh6.cn:ilaipi/dotfiles.git cd dotfiles && sh -x intall.sh git clone git@git.zhlh6.cn:tmux/tmux.git --depth=1 # install tmux @see https://github.com/tmux/tmux sudo apt install automake sudo apt install build-essential sudo apt-get install pkg-config sudo apt install libevent-dev sudo…
身份证号校验
function validate(code) { var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; var parity = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; var sum = 0; var i = 0; if (!/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) { return false; } for (i = 0; i < 17; i = i + 1) { sum += code.charAt(i) * factor[i]; } return parity[sum % 11] === code[17].toUpperCase(); } 按照算法,严格校验身份证。
破解nosqlbooster
参考链接 版本:6.1.4 禁用自动更新 【适用于windows 10】第一次安装后,使用vs code打开`C:\Users\Billy\AppData\Local\Programs\nosqlbooster4mongo\resources\app-update.yml`,修改url,随便改成啥,然后安装完成后执行第二次安装,第二次安装过程中不断保存这个文件,防止安装过程中直接请求更新,只要请求不到新的更新就可以不自动更新。 1,安装工具 npm install asar -g 2,进入软件目录,解压 // Mac OS // 在 /Applications/NoSQLBooster for MongoDB.app/Contents/Resources // Win 10 // 打开NoSQLBooster,在任务管理器中找到进程,右键,点击打开文件位置 asar extract app.asar app 3,修改 // vim ./app/shared/lmCore.js // 这两个变量在一块,搜MAX_TRIAL就出来了 // MAX_TRIAL_DAYS = 150 -> MAX_TRIAL_DAYS=6000 // TRIAL_DAYS = 30 -> TRIAL_DAYS=6000 // Mac // 继续搜 TRIAL_DAYS // fs.existsSync(e)?60:TRIAL_DAYS) -> 这里的数字30改成6000 // ("0xb","!K5F")?60:(r=exports[ -> 这里的数字30改成6000 // Win10 // 继续搜 TRIAL_DAYS // fs[_0x3f02("0x90",")k8m")](w)?60:TRIAL_DAYS) -> 这里的数字60改成6000 // 0x3f02("0xd","^zHg")?60:map[type]:TRIAL_DAYS) -> 这里的数字60改成6000 4,打包 asar pack app app.asar // wait a minute... 5,重启
使用WebSocket
客户端:微信小程序 服务器:eggjs+egg-socket.io 弄清楚几个概念。 namespace // client import io from 'weapp.socket.io'; // 请求服务器的 'chat' namespace const server = io('ws://localhost:7001/chat', { transports: ['websocket'], }); // server // 监听 'chat' namespace下的 one-event-name 事件 app.io.of('chat').route('one-event-name', xxx); path 这个相当于http的请求路径。 // client const server = io('ws://localhost:7001/chat', { path: '/socket', // default: socket.io transports: ['websocket'], }); // server based on eggjs config.io = { init: { path: '/socket', }, }; // server based on socket.io directly const Server = require('socket.io'); const io = Server({ path: '/socket', serveClient: false }); 在服务端需要根据这个path做反向代理,比如: location /socket { proxy_pass socket_server_address; // 支持socket协议的服务 } 使用的时候,约定好namespace,一般应用用一个namespace就可以。多个namespace可以使用同一个socket连接,也可以使用多个: // @see https://github.com/socketio/socket.io-client/blob/master/docs/API.md // By default, a single connection is used when connecting to different namespaces (to minimize resources): const socket = io(); const adminSocket = io('/admin'); // a single connection will be established // That behaviour can be disabled with the forceNew option: const socket = io(); const adminSocket = io('/admin', { forceNew: true }); // will create two distinct connections // Note: reusing the same namespace will also create two connections const socket = io(); const socket2 = io(); // will…
sketch 原型设计 入门
下载安装最新版sketch,当前是sketch 65。 安装插件 使用阿里巴巴前端团队的dapollo插件,下载地址 这个插件提供了很多的模板组件,比如苹果iOS状态栏,列表组件等等。 概念介绍 主要介绍页面(Page)、画板(Artboard)。 可以在一个页面画无限的画板,每个画板对应一个app界面。画板一般选择最新版的苹果手机屏幕尺寸,看个人爱好来选择。 每个画板内的元素,可以按shift多选,多选后分组,分组后方便拖动、复制。 有一点要说明一下,dapollo插件提供的组件有2x和1x的,插入的画板默认是1x的尺寸,所以使用1x的组件,不然放不进画板。 目前经验,后续更多经验继续补充。
mongodb备份脚本
DUMP=/usr/local/mongodb/bin/mongodump #mongodump命令路径 OUT_DIR=/data/mongodb_bak/mongodb_bak_now #临时备份目录 TAR_DIR=/data/mongodb_bak/mongodb_bak_list #备份存放路径 DATE=`date +%Y_%m_%d_%H_%M` #获取当前系统时间 DB_USER=YOUR_DB_USERNAME #数据库账号 DB_PASS=YOUR_DB_USER_PASSWORD #数据库密码 DAYS=20 #DAYS=20代表删除20天前的备份,即只保留近20天的备份 TAR_BAK="mongodb_bak_$DATE.tar.gz" #最终保存的数据库备份文件 cd $OUT_DIR rm -rf $OUT_DIR/* mkdir -p $OUT_DIR/$DATE $DUMP -h YOUR_DB_HOST -u $DB_USER -p $DB_PASS --authenticationDatabase "YOUR_DB_NAME" -o $OUT_DIR/$DATE #备份全部数据库 tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #压缩为.tar.gz格式 find $TAR_DIR/ -mtime +$DAYS -delete #删除20天前的备份文件 exit 复制代码,命名为mongodb_bak.sh,加入系统定时任务。 crontab -e
windows修改远程桌面端口脚本
@echo off color f0 echo 修改远程桌面3389端口(支持Windows 2003 2008 2008R2 2012 2012R2 7 8 10 ) echo 自动添加防火墙规则 echo %date% %time% echo ARK set /p c= 请输入新的端口: if "%c%"=="" goto end goto edit :edit netsh advfirewall firewall add rule name="Remote PortNumber" dir=in action=allow protocol=TCP localport="%c%" netsh advfirewall firewall add rule name="Remote PortNumber" dir=in action=allow protocol=TCP localport="%c%" reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber" /t REG_DWORD /d "%c%" /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d "%c%" /f echo 修改成功 echo 重启后生效,按任意键重启 pause shutdown /r /t 0 exit :end echo 修改失败 pause 复制内容,命名为xxx.bat双击即可执行
微信开发
最近想对微信小程序直播间升级,使用第三方IM平台融云,发现融云的小程序sdk需要5000块/月。 app端的sdk每月使用费是1200起,小程序的价格就很不理解。联系客服之后,解释说他们需要给微信平台付一定的域名费用。
acme.sh证书同步到华为云
项目代码 https://github.com/ilaipi/acme.sh-dockerhttps://github.com/ilaipi/huawei-cloud 环境 华为云 ubuntu 18.04Docker version 19.03.8, build afacb8b7f0docker-compose version 1.25.4, build 8d51620image: neilpang/acme.sh v2.8.6image: jenkins/jenkins:lts Jenkins ver. 2.204.5 目标 acme.sh自动更新证书使用华为云的负载均衡 https监听证书更新后自动同步到华为云 实现方案 server上通过docker部署acme.sh使用nodejs调用华为云api实现更新证书使用jenkins实现证书更新后自动调用nodejs 部署acme.sh实现自动更新证书 acme.sh可以通过aliyun_dns_api完成证书颁发,需要阿里云的app_key和app_secret。 参考链接 你可以直接安装acme.sh就能实现。但是当你有多个域名并且分布在多个阿里云帐号的时候,直接安装acme.sh可能解决不了问题(尝试过,但是没配置成功),而用docker跑acme.sh可以完美解决这个问题。所以这里用docker来跑acme.sh。 参考 ilaipi/acme.sh-docker 完成部署 自动更新证书到华为云 到 GitHub Repo 看源码部署 Jenkins自动同步到华为云 acme.sh有notify机制,notify到个人邮箱,jenkins配置一个任务,通过邮件触发(需要安装一个邮件触发的插件Poll Mailbox Trigger Plugin),检查到邮件就执行服务器上的自动更新代码。 (目前还在实验阶段) 在acme的容器内配置邮件发送服务,使用acme支持的mailgun,注册帐号并完成邮件认证。邮件认证的时候可能需要google voice号码(我认证的时候没有看到中国的选项)。最后调用acme.sh --set-notify --notify-hook mailgun来确认是否配置成功,配置成功的话会发邮件到接收邮箱。 在jenkins中配置的是outlook邮箱(host: imap-mail.outlook.com)。 Jenkins Advanced Email Properties subjectContains=Renew *.xxxxxxx.com successreceivedXMinutesAgo=600 # 意思是10小时内发送的邮件。一般acme是凌晨0点后执行任务 Jenkins Schedule TZ=Asia/ShanghaiH H(3-7)/3 * * *# 这样的意思应该是早上3-7点之间执行3次