SillyGril&QQbot一键部署

一、docker-compose 编排文件 创建docker-compose.yaml文件并拷贝下面内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 version: "3" services: go-cqhttp: image: mzzsfy/go-cqhttp:latest container_name: go-cqhttp volumes: - ./data:/data restart: always environment: # - token=$Yourtoken #替换为自己生成的token - ws_url='ws://sillygirl:8080/qq/receive' - TZ=Asia/Shanghai networks: - sillygirl depends_on: - sillygirl sillygirl: image: mzzsfy/sillygirl:latest container_name: sillygirl volumes: - ./sillyGirl:/etc/sillyGirl restart: always environment: # - set__qq__token=$Yourtoken #替换为自己生成的token - TZ=Asia/Shanghai networks: - sillygirl networks: sillygirl: docker-compsoe up -d 启动 docker-compose logs -f 查看日志 二、FAQ 1、go-cqhttp 扫码失败 问题解决 云服务器导致 可以在本地服务器(与手机qq扫码在同一局域网内)启动服务,生成session.token 复制到云服务器相同目录下 看这里解决 2、go-cqhttp 建议修改为手表登录 首先运行一下,会生成device.json 找到protocol字段修改为2 你可能会用到的一些资料 https://hub.docker.com/r/mzzsfy/sillygirl https://hub.docker.com/r/mzzsfy/go-cqhttp go-cqhttp配置

创建: 2022-08-31 | 更新: 2022-08-31 | 字数: 109字 | 时长: 1分钟 | 作者:张三

用PWA 改造WEB 为原生App

最近闲来无事,把网站升级了,更加像原生APP 记录下升级过程,免得以后忘了 PWA是什么?可以去网上搜一下,but中文文章少一点 用Google 封装的 好的 workbox 来升级 注册Service Worker 在html页面注册 SW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <script> if ('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations() .then(regs => { for (let reg of regs) { // 注销掉不是当前作用域的所有的 Service Worker if (reg.scope !== 'http://localhost:8000/') { reg.unregister() } } // 注销掉污染 Service Worker 之后再重新注册自己作用域的 Service Worker window.addEventListener('load', () => { navigator.serviceWorker.register('./sw.js').then(function (e) { console.log("支持sw:", e.scope) }) }) }) } </script> 生成SW.js文件 google cdn 1 2 importScripts(" 'https://storage.googleapis.com/workbox-cdn/releases/6.1.1/workbox-sw.js' "); 国内建议不使用Google jsdelivr cdn 1 importScripts("https://fastly.jsdelivr.net/npm/[email protected]/build/workbox-sw.min.js"); SW.js 编写 配置相关 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 workbox.setConfig( { // 是否开启debug debug: false } ); let cacheSuffixVersion = '-220806'; // 缓存版本号 const maxEntries = 100; // 最大条目数 workbox.core.setCacheNameDetails({ prefix: 'zsan', // 前缀 suffix: cacheSuffixVersion, // 后缀 }); //检测是否安装成功 if (workbox) { console....

创建: 2022-08-07 | 更新: 2024-04-29 | 字数: 464字 | 时长: 3分钟 | 作者:张三

在Cloudflare 设置域名 301 重定向

很久以前遇到的问题了,用cloudflare 设置有大坑,今天来记录下 之前网站的域名需要更换,blog等域名也需要从旧域名到新域名 旧域名:olddona.com 新域名:newdona.com 现在需要访问 olddona.com 时跳转到 newdona.com 1、clourflare 上 dns 解析 olddona.com 登录clourflare、点击 dns、点击添加一条a记录 类型:A 名称:olddona.com ipv4地址:8.8.8.8 ps:ipv4 地址一定要填一个可用的,这是个坑 2、cloudflare 添加重定向 点击规则 点击创建页面规则 url: olddona.com/* 选取设置:转发URL、301永久 输入目标URL:https://newdona.com/$1 保存之后,去访问olddona.com 可以跳到 newdona.com 成功🎉 也可以试下olddona.com/* 是否成功跳转即可

创建: 2022-07-31 | 更新: 2024-04-29 | 字数: 35字 | 时长: 1分钟 | 作者:张三

Mac Brew Tab 命令自动补全

mac arm版 2021版的brew 一键安装后 命令 按tab 不能补全,今天有点闲,就搜了一下,给解决了 用的 Oh My Zsh,官方文档里写的很详细,不过是英文的,这里给翻译记录下 1、在 ~/.zshrc 里添加下面code 1 2 3 4 5 6 7 if type brew &>/dev/null then FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" autoload -Uz compinit compinit fi 2、在 ~/.zprofile 里添加下面code 1 FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" 3、强制重建zcompdump 1 rm -f ~/.zcompdump; compinit 4、如果出现 zsh compinit: insecure directory 警告 1 chmod -R go-w "$(brew --prefix)/share" 参考: Homebrew Shell Completion — Homebrew Documentation

创建: 2022-07-26 | 更新: 2024-04-29 | 字数: 64字 | 时长: 1分钟 | 作者:张三

低成本搭建高质量播客发布服务

引言:最近用了iPhone手机,听Apple music的时候,有些喜欢的歌曲并没有,想下载到本地但由于iOS的生态封闭,操作太麻烦; 在寻找解决方案时发现用自建播客来实现下载音乐方案可行,于是就有了下面的教程 What 播客(podcast)创作者将音频或视频上传至RSS或在线播客平台,听众或观众则通过软件获取节目更新。 How 制作过程不说了,来谈谈发布过程,很简单,一个支持RSS的网站发布音频信息供用户拉取,一个音频托管平台存放音频 网站直接Hugo搭建,用zen主题支持podcast,放在GitHub page上,域名可以在freedom上注册,用cloudflare DNS解析和加速 hugo 搭建播客 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #新建网站 hugo new site podcast #安装 zen主题 git clone https://github.com/frjo/hugo-theme-zen.git themes/zen #在content内新建podcast文件夹,此页面内新增音频 cd content mkdir podcast #podcast的一些设置 #设置的图片,需要现在根目录新建 assets/images 目录,取相对路径即可 #podcast 音频下面显示链接,如何取消 vim layouts/partials/podcast.html #注释掉下面行 <figcaption><a href="{{ $src }}">{{ .Title }}</a></figcaption> podcast 配置 1 2 3 4 #文章顶部新增参数 podcast: mp3: duration: 音频托管平台自建minin服务存储音频 minio服务很强大,感兴趣可以了解一下 docker 部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 version: '3.3' services: minio: image: quay.io/minio/minio container_name: minio1 ports: - 9090:9090 #控制台端口 - 9000:9000 #API端口 volumes: - './data:/data' - './config:/root/.minio' environment: MINIO_ROOT_USER: admin #管理用户名 MINIO_ROOT_PASSWORD: admin #管理密码 command: server /data --console-address ':9090' restart: always 部署成功,ip:9090访问登录 控制台操作 1、创建存储桶 create bucket 2、点击manage,Access Rules add rule prefix:*.* access:readonly 3、上传音频 4、分享文件,链接地址 复制出来,前面ip换成外部ip即可 把地址贴在上面podcast 参数 mp3 的地方 enjoy 这样算下来,除了用了一台服务器外,其他全部费用为零,总费用百元不到 部署全部完成,点击RSS链接放到订阅的地方,尽情享用吧!🎉 参考: Zen | Hugo Themes...

创建: 2022-07-12 | 更新: 2024-04-29 | 字数: 186字 | 时长: 1分钟 | 作者:张三

Autojs 笔记

最近薅🦙接触了autojs,在Android手机上可自动化运行的脚本,不用root,可直接运行,轻量小巧,底层调用Android API,自己可封装API👍 安装 autojs原作者已不再维护,推出了autojs.pro版,有钱的大佬可以直接去安装下载,官方文档也很全 没钱的话,可以用autoxjs,从原有开源库接手过来的,开源免费 GitHub - kkevsekk1/AutoX: A UiAutomator on android, does not need root access(安卓平台上的JavaScript自动化工具) 常用语法 获取设备信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // 打印运行环境信息 let str = ""; let str = ""; str += "屏幕宽度:" + device.width; str += "\n屏幕高度:" + device.height; str += "\nbuildId:" + device.buildId; str += "\n主板:" + device.board; str += "\n制造商:" + device.brand; str += "\n型号:" + device.model; str += "\n产品名称:" + device.product; str += "\nbootloader版本:" str += "\nbootloader版本:" + device.bootloader; str += "\n硬件名称:" + device.hardware; str += "\n唯一标识码:" + device.fingerprint; str += "\nIMEI: " + device.getIMEI(); str += "\nAndroidId: " + device.getAndroidId(); str += "\nMac: " + device.getMacAddress(); str += "\nAPI: " + device.sdkInt; log(str); 打开应用市场app详情页 1 2 3 4 5 6 7 8 9 10 11 12 //打开应用市场app详情页 function startAppStore() { toastLog("去应用市场...") let i = app.intent({ action: "VIEW", // type: "image/png", data: app....

创建: 2022-06-26 | 更新: 2024-04-29 | 字数: 285字 | 时长: 2分钟 | 作者:张三

测试笔记

关于测试的一些笔记(道) 道是心法,是最难考察的 术是工具,是可以简单考察出来的 目前公司JD还都是偏向术方面的 门槛低,导致测试的地位低下,还希望同行们共同努力💪呀 1、测试技术领域最难的技术应该是测试分析和设计 测试最重要的是什么? 有人说 我会 自动化测试,什么selenium,appium,python,玩的飞溜🙄️ 而却忘了 最重要的输入——测试用例 一个系统,只要输入是错的,他再聪明、快速,那输出的也是错的 2、测试价值的体现最主要还是保障自己组织开发的软件在关键应用时不要出故障,给组织造成商业损失。 3、测试分析和设计的深度及系统化,以及掌握广泛的专项测试类型。 4、测试工程师技术水平 5、快速编写测试用例 1、根据用户行为习惯编写一套case 2、根据需求功能编写一套case 3、探索性测试编写一套case 如何用最通俗的方式给非测试者描述测试者存在的价值, 例如:给老板讲、给项目经理讲、给开发经理讲、给产品总负责人讲: 1、减少遗漏给用户的严重质量问题 (测试者在发布前尽可能发现影响用户体验的问题) 2、减少产品的研发和维护成本 (减少开发人员定位问题和修复问题的成本,减少产品售后维护成本) 3、缩短产品研发的周期 (帮助缺陷预防,尽早发现问题,复现问题,缩短开发修复和定位问题的成本) 参考文档: 1、架构师Jack

创建: 2022-06-26 | 更新: 2024-04-29 | 字数: 30字 | 时长: 1分钟 | 作者:张三

Docker 部署 Snapdrop

Snapdrop 是一个开源的在线文件传输工具,可以在 Windows、Mac、Linux、iOS、Android 任何平台使用,只要我们的设备有浏览器就能用他来传输文件 官网有demo,but不稳定,自部署一套稳定可靠可控 官方已经上传image 了,所以下面手动下载的可以不用看了 1 2 3 4 5 6 7 8 9 version: "3" services: node: image: linuxserver/snapdrop # user: "node" container_name: snapdrop restart: always ports: - 80:80 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #git clone 下载 git clone https://github.com/RobinLinus/snapdrop.git cd snapdrop #国内服务需换源 cd docker vim nginx-with-openssl.Dockerfile #RUN apk add --no-cache openssl 上方添加命令 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories #保存 启动 docker-compose up -d 常见问题: 1、启动后日志里报 1 2 3 4 5 6 7 npm ERR! Error: EACCES: permission denied, access '/home/node/app' npm ERR! { Error: EACCES: permission denied, access '/home/node/app' npm ERR! stack: 'Error: EACCES: permission denied, access \'/home/node/app\'', npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'access', npm ERR! path: '/home/node/app' } 权限 user的坑,我默认是root用户,yml里node启动为node用户,导致权限过低,启动失败 此时只需要把docker-compose.yml 里的user: “node” 注释即可 1 2 vim docker-compose #user: "node”

创建: 2022-06-19 | 更新: 2024-04-29 | 字数: 139字 | 时长: 1分钟 | 作者:张三