Category: Tech

35 Posts

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次
Mac上开发iOS App
注册成为开发者帐号之后,登录管理员帐号。 几个概念 Certificates 证书 Identifiers 对应App 开发时的Bundle id Profiles 下载的文件名后缀是mobileprovision Devices 内测的设备udid Identifiers 开始开发app的时候,要确定app的bundle id,类似安卓app的包名,唯一标识app,关系到推送、app store内下载。 Certificates 证书。一个app理论上包括4个证书: dev推送证书生产推送证书dev签名证书hoc & app store 签名证书 生成证书 1,打开Mac上自带的软件,Keychain Access(中文名应该是钥匙串) 2,点击菜单:Keychain Access --> Certificate Assistant --> Request a Certificate from a Certificate Authority... 3,填写邮箱,起一个名字。比如证书是dev签名证书,命名为 appName_dev_sign 4,选择保存到硬盘,得到.certSigningRequest后缀名的文件 5,打开开发者后台,证书管理页面,点击添加证书,根据需要选择Apple Development或者是iOS Distribution (App Store and Ad Hoc),点击下一步 6,上传文件的时候,选择第4步生成的文件,点击下一步即可 7,点击下载,保存到本机,双击,即安装证书到Keychain Access 收集Devices 开发、内测期间,需要安装真机测试的iOS设备,需要把udid添加进来。添加的方法可以百度。 创建Profiles 用于安装到真机或者打包导出、上传到app store。 插线安装到真机,需要创建iOS App Development类型的,选择Apple Development类型的证书。 需要打包内测分发的,需要创建Ad Hoc类型的,选择iOS Distribution (App Store and Ad Hoc)类型的证书。 需要上架App Store的,也选择iOS Distribution (App Store and Ad Hoc)类型的证书。 推荐命名方式 company_appName_dev/hoc/store 导出p12 在本机安装证书就可以右击证书,导出,生成一个p12文件。推送相关的需要p12。团队开发app时,一个人生成签名证书,把p12发给其他成员,其他成员双击即可。
Vim 编译安装 +python3支持
日常开发用vim,习惯了脱离鼠标写代码。 今天升级了一堆插件,然后打开Vim报错了,YouCompleteMe插件需要vim编译的时候支持python,所以重新编译vim。 从官方Repo clone代码: # --depth=1 不拉loggit clone git@github.com:vim/vim.git --depth=1 参考 YouCompleteMe https://github.com/wklken/k-vim Configure export PREFIX='/usr/local/vim8' # 如果不是第一次安装,python版本升级过,可能需要执行这几条命令来清空缓存: make mostlyclean make clean make distclean make maintainer-clean git clean -dnX # mac (last build: 2020/11/26) ./configure --with-features=huge \ --enable-multibyte \ --enable-rubyinterp=dynamic \ --with-ruby-command=/usr/local/opt/ruby/bin/ruby \ --enable-python3interp=yes \ --with-python3-config-dir=/usr/local/Cellar/python@3.9/3.9.0_2/Frameworks/Python.framework/Versions/Current/lib/python3.9/config-3.9-darwin \ --enable-perlinterp=yes \ --enable-luainterp=yes \ --enable-gui=gtk2 \ --enable-cscope \ --prefix=$PREFIX # mac (for new mac) brew install python brew install ruby ./configure --with-features=huge \ --enable-multibyte \ --enable-rubyinterp=dynamic \ --with-ruby-command=/opt/homebrew/opt/ruby/bin/ruby \ --enable-python3interp=yes \ --with-python3-config-dir=/opt/homebrew/Frameworks/Python.framework/Versions/Current/lib/python3.9/config-3.9-darwin \ --enable-perlinterp=yes \ --enable-luainterp=yes \ --enable-gui=gtk2 \ --enable-cscope \ --prefix=$PREFIX # ubuntu (wsl2) # 可能需要先执行这个命令安装一些依赖(没有验证哪些是必须的)。可以不执行,如果make install不成功再执行 # sudo apt install ncurses-dev libncurses5-dev libgtk2.0-dev libatk1.0-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev python3-dev ruby-dev lua5.1 libperl-dev ./configure --with-features=huge \ --enable-multibyte \ --enable-rubyinterp \ --enable-python3interp=yes \ --with-python3-config-dir=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu \ --enable-perlinterp=yes \ --enable-luainterp=yes \ --enable-gui=auto \ --enable-gtk2-check \ --with-x \ --enable-cscope \ --with-compiledby="Billy Yang" \ --prefix=$PREFIX 执行这个命令,设置--with-python3-command=为本机的python3可执行文件路径。 Make & Install make sudo make install Update default vim 执行这个多行命令,更新默认的,会把“/vim/vi/gvim”全部改为新安装的vim。 sudo sh -c "update-alternatives --install /usr/bin/editor editor $PREFIX/bin/vim 1; update-alternatives --set editor $PREFIX/bin/vim; update-alternatives --install /usr/bin/vim vim $PREFIX/bin/vim 1; update-alternatives --set vim $PREFIX/bin/vim; update-alternatives…
Docker 常用命令
非root执行docker命令 sudo usermod -aG docker $USER newgrp docker 批量删除容器 docker ps -a | grep Exit | awk '{print $1}' | xargs docker rm 可以修改 grep Exit 为 grep Created,即根据状态,找到对应的全部id,然后传给docker rm命令,可以修改rm 为其它的命令。 批量删除镜像 docker images | grep '<none>' | awk '{print $3}' | xargs docker rmi -f 构建镜像 # -t 指定镜像名字和Tag docker build -t hcp-backend-dev:test . 启动镜像 # 启动镜像hcp-backend-dev:test,指定容器名字为hcp-backend-dev docker run --name=hcp-backend-dev -dit hcp-backend-dev:test 全部删除docker所有东西 docker system prune --all 删除全部镜像 docker rmi -f $(docker images -a -q) 删除全部容器和挂载盘 docker rm -vf $(docker ps -a -q) Docker容器迁移 参考链接 通过docker export导出镜像,然后到新服务器import为指定名字的镜像,启动时以新的镜像名来启动。对于volume的迁移,可以直接从源服务器scp传到新服务器。 相关命令: docker export container_name -o filename.tar # load image as image_name docker import filename.tar image_name
Docker 安装优化
修改目录,配置加速 vim /etc/docker/daemon.json { "data-root": "/data/docker", "registry-mirrors": ["https://${TO_BE_REPLACED}.mirror.aliyuncs.com"] } data-root 是要存放Docker镜像、容器文件的目录 registry-mirrors,使用阿里的,需要有阿里云帐号,到自己的后台去找地址。在控制台,找到“容器镜像服务 - 镜像中心 - 镜像加速器”,这个页面有个地址。复制即可。 配置日志 # vim /etc/logrotate.d/docker /data/docker/containers/*/*.log { rotate 15 daily compress missingok delaycompress copytruncate } 需要先确认logrotate命令是否存在,如果有,则编辑这个配置文件即可实现对应docker日志文件的滚动 重启docker systemctl restart docker
Showdoc数据库sqlite3的使用
showdoc现在已经不支持MySQL了,只支持sqlite。通过官方的Docker安装方式安装后,进入Docker容器,默认没有安装sqlite数据库,可以执行apk install sqlite安装。容器是基于alpine linux的。 进入数据库直接复制数据 使用场景:有几个接口比较像,懒的一个个页面上复制,可通过sql直接复制。 INSERT INTO page (author_uid,author_username,item_id, cat_id, page_title, page_content, s_number, addtime, page_comments, is_del) SELECT author_uid,author_username,item_id, 21, page_title, page_content, s_number, addtime, page_comments, is_del from page where cat_id=20; 批量修改 # replace UPDATE YourTable a SET a.StringColumn = REPLACE(a.StringColumn,',43,',',54,') WHERE a.StringColumn like '%,43,%' # substr UPDATE YourTable SET StringColumn = substr(StringColumn, 10, 4) # 从第10个开始,截取4个 WHERE StringColumn like '%,43,%'
vim 命令记录
参考: 简明 Vim 练级攻略 替换 把所有行的 search 替换为 replacement 其中,\r在replacement中表示换行 :%s/search/replacement :10,20s/search/replacement //指定10-20行之间匹配的进行替换 删除空行 把所有空白行删掉 //仅空白行 :g/^$/d :v/./d :10-20g/^$/d //指定10-20行之间,其它相同 //仅包含空白符也算空白行 :g/^\s*$/d :v/\S/d 宏录制 记录一系列操作,快速重复 输入 qa 开始录制宏,记录在寄存器 a (命名为 a) 做任何需要的,完成后在 Normal 模式按 q 结束录制 @a 在当前光标下重复 a 宏@@ 在当前光标下重复 刚刚录制的宏10@@ 在当前光标下重复10次刚刚录制的宏 多光标操作 标记多个相同的文本,统一操作。常用于局部某变量重命名 使用插件: terryma/vim-multiple-cursors 可以先使用 Visual Mode 选中需要操作的,然后Next Key (<C-m/n>) 选中下一个 处理csv文件 在mac上面很多csv文件用excel打开会乱码,这时候需要设置bomb,设置之后就正常了。用vim打开文件,然后命令模式执行::set bomb。如果有需要移除bomb,执行::set nobomb