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

引言:最近用了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 GitHub - frjo/hugo-theme-zen: A fast and clean Hugo base theme with css-grid and Hugo pipes support....

创建: 2022-07-12 | 更新: 2024-09-28 | 字数: 188字 | 时长: 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-09-28 | 字数: 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-09-28 | 字数: 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-09-28 | 字数: 139字 | 时长: 1分钟 | 作者:张三

【躺赚】docker部署网心云容器魔方

设备:N1 硬盘:400g ssd 已安装服务:docker、docker-compose 开干! 一、挂载ssd(挂载过直接跳到第二步) 硬盘插到N1上 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 lsblk #查看当前磁盘情况 fdisk -l #查看当前未挂载的磁盘 #假设磁盘名为 dev/sda #创建分区 fdisk dev/sda #输入n, p, 1, 两次回车,wq #新建一个主分区,大小整个磁盘,保存写入 #写入文件格式 mkfs.ext4 /dev/sda #ext4格式 #挂载 mount /dev/sda /media/data #查看文件 df -lh #查看到刚才挂载的硬盘 #设置开机自动挂载 vim /etc/fstab # 在最后新增一行 /dev/sdb /media/data ext4 defaults 0 0 二、部署 1 2 3 mkdir wxedge cd wxedge vim docker-compose.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 version: '3.3' services: wxedge: container_name: wxedge restart: always privileged: true network_mode: host tmpfs: - /run - /tmp volumes: - '/media/data/wxedge:/storage:rw' image: onething1/wxedge ip:18888 打开 成功🎉🎉🎉 躺着赚钱吧!

创建: 2022-05-09 | 更新: 2024-09-28 | 字数: 117字 | 时长: 1分钟 | 作者:张三

Docker 部署 Nginx服务

用docker部署nginx官方只给了docker版本的,没有compose的,只好自己转换一下了,记录一下,方便下次部署,这只是简单的部署,至于nginx配置的话,有空再补吧🫠 1、创建docker-nginx目录 新建 docker-compose.yml 文件 1 2 3 4 5 mkdir docker-nginx mkdir nginx mkdir log mkdir html vim docker-compose.yml 2、docker-compose.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 version: '3.3' services: web: image: nginx:latest container_name: nginx volumes: - ./nginx:/etc/nginx - ./log:/var/log/nginx - ./html:/usr/share/nginx/html //网站放置目录 ports: - "8081:80" environment: - NGINX_HOST="192.168.116.10" //访问地址/域名 - NGINX_PORT="80" //访问端口 - TZ="Asia/Shanghai" //时区 restart: always 3、手动cp配置文件 由于官方image没有默认映射外部文件,需要手动把配置文件cp出来 1 2 3 4 5 6 7 8 9 # 运行官方命令创建默认容器 docker run --name nginx -p 8080:80 -d nginx #配置文件复制到nginx里,其他文件可用复制 #是个坑,路径必须是全路径 docker cp nginx:/etc/nginx /opt/docker-nginx #删除默认容器 docker stop nginx && docker rm nginx 4、修改nginx配置文件 端口号、域名,ssl等和以前配置一样,不再赘述 5、运行&测试 1 2 3 4 5 6 docker-compose up -d #查看日志 docker-compose logs -f #浏览器输入IP或域名查看是否可以访问 参考文档: 1、Docker Hub-nginx

创建: 2022-04-08 | 更新: 2024-09-28 | 字数: 123字 | 时长: 1分钟 | 作者:张三

打破信息茧房

何为信息茧房: 哈佛大学凯斯·桑斯坦教授在《信息乌托邦》一书中提出,人类社会存在一种“信息茧房”现象。他认为,在信息传播中人们自身的信息需求并非全方位的,只会注意选择想要的或能使自己愉悦的信息,久而久之接触的信息就越来越局限,越来越窄,就像蚕吐出来的丝一样,细细密密地把自己包裹起来,最终像一个蚕宝宝一样被桎梏在“信息茧房”内,失去对其他不同事物的了解能力和接触机会。当时,他的这一观点还只是作为一种推论和预测,但随着网络信息和人工智能技术的飞速发展,这种“信息茧房”现象,正越来越多地发生在现实生活中和我们的身边。 说人话就是: 在现如今的生活中,人们接受信息的来源(主要指生活在大陆,国外也差不多),主要从微信、微博、抖音、快手等中心化的平台,各家相互关闭自己的开放接口,强迫用户留在自己平台上,有时候只关注某个大V的信息,却不得不安装一个app,就这样手机上装了很多app(这些app们平均一周更新一次,要吐了)再加上平台的推荐算法,只推荐你喜欢的(兼听则明,偏信则暗),这样下去,整个人的认知无法被提高 经过一段时间的探索,搭建了RSS这套服务,RSS服务属于古老服务了,估计只有数字原住民才听说过,目前来说还可以,正在慢慢过渡,在此记录下搭建过程,方便下次迁移 RSS(英文全称:RDF Site Summary 或 Really Simple Syndication[2] ),中文译作简易信息聚合[3] ,也称聚合内容[4] ,是一种消息来源 格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。使用 RSS 后,网站订阅者便无需再手动查看网站是否有新的内容,同时 RSS 可将多个网站更新的内容进行整合,以摘要的形式呈现,有助于订阅者快速获取重要信息,并选择性地点阅查看。 ——引用wikipedia 准备: 需要一台服务器,运行linux即可 配置不用太大,我用的是阿里云的服务器,生活在大陆,国内访问比较快 用到的服务: RSSHub :一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。 TTRSS :一款基于 PHP 的免费开源 RSS 聚合阅读器。 用rsshub生成官方没有的订阅源,ttrss来管理订阅源的阅读记录,支持各端同步 一、部署RSSHub 支持docker部署,不过,我是部署到 Vercel 上的,好处是免费、国外的机子,真正连接到互联网的,国内可访问。 1、注册 Vercel 有帐户的直接可以登录部署 没有的先注册,建议用GitHub账号登录注册,github账号邮箱建议用gmail等国外的,通过率高,如果提示失败,可以和官方人员发email解封,我的当时就直接被冻结了,发了email后,一会就解封了,态度超好👍 2、成功后可以直接点去部署了,我是没有用官方的库部署,fork官方库后去授权部署的,效果一样,vercel 用默认的就行,等待一会,撒花,表示部署成功 3、直接访问域名成功打开即部署成功 4、rsshub配置环境可参考 部署 | RSSHub 配置 用户认证 日志配置 其他一些服务需要的api-key 5、在vercel 配置完 重新部署服务,才生效 更新 支持vercel自动拉取代码更新 二、部署TTRSS 部署到vps 阿里云上,支持docker、docker-composr即可 docker-compose部署 下载 docker-compose.yml 至任意目录。 更改 docker-compose.yml 中的设置,请务必更改 postgres 用户密码。 通过终端在同目录下运行 docker-compose up -d 后等待部署完成。 默认通过 181 端口访问 TTRSS,默认账户:admin 密码:password,请第一时间更改。 wangqiru/mercury-parser-api 及 wangqiru/opencc-api-server 为支持高级功能而加入的可选服务类容器,删除不会影响 TTRSS 基础功能。 SELF_URL_PATH: TTRSS 实例地址。🔴 请注意,该变量值必须与你在浏览器中用于访问 TTRSS 的 URL 保持完全一致,否则 TTRSS 将无法启动。 这里说明一下,如果没有域名就要配置为 ip:端口号 的形式 更多配置参考 官方文档 更新 推荐使用手动更新 1 2 3 4 5 6 7 #自用 docker-compose pull #官方推荐 docker pull wangqiru/ttrss:latest # docker pull wangqiru/mercury-parser-api:latest # docker pull wangqiru/opencc-api-server:latest docker-compose up -d # 如果您没有使用 docker-compose,我确信您知道该怎么做。 备份 养成定期备份的习惯,有些订阅源很重要的资料可以永久保存,避免404 复制 Postgres 数据卷 ~/postgres/data/(或者你在 docker-compose 中指定的目录)至其他任何地方作为备份,这非常重要! 执行如下命令来导出所有数据: 1 2 #docker exec postgres pg_dumpall -c -U 数据库用户名 > export....

创建: 2022-03-13 | 更新: 2024-09-28 | 字数: 248字 | 时长: 2分钟 | 作者:张三

Linux设置代理

最近遇到一个很有点麻烦的事,以前在国内机上装了clash代理,用的编译包安装的,后来感觉用的不爽,就给卸载了,服务也去了,但是proxy代理经常会自动设置,有时候手动给取消了,下次再用又有了,这次终于忍不了了,就搜了一下给解决了 1、定位bug export 查看下,有相应端口,手动取消后,再查看没有了,重启后又有了,判断是某个脚本里带相关命令 2、搜索资料 通过查找得知有个.bashrc文件也可以设置环境变量,只对当前用户有效,vim进去看了下,果然有相应命令,删除,重启,再export,代理没了,结束🎉

创建: 2022-02-18 | 更新: 2024-09-28 | 字数: 6字 | 时长: 1分钟 | 作者:张三