一直在爱下电子书下些爽书看,不知道什么时候开始屏蔽了大陆的访问,然后下载也只有繁体,于是有了下面的代码。这段代码来自网络,无法确定出处,贴上来纯粹是把环境交代下,如果你有使用到可以参考。 Python 版本:3.9 Opencc库:pip install opencc-python-reimplemented==0.1.4
1 | # Copyright 2022 ljmold.cn All rights reserved |
一直在爱下电子书下些爽书看,不知道什么时候开始屏蔽了大陆的访问,然后下载也只有繁体,于是有了下面的代码。这段代码来自网络,无法确定出处,贴上来纯粹是把环境交代下,如果你有使用到可以参考。 Python 版本:3.9 Opencc库:pip install opencc-python-reimplemented==0.1.4
1 | # Copyright 2022 ljmold.cn All rights reserved |

最近上传了大量图片,因为有AI标签,5万张照片要三天才能索引好,结果一周后就挂了,一看是usb hub爆掉了,估计是主板温度高哪里脱焊了。这个板子是2012年的,2017年入手,已经服役五年,可以退役了。
大概看了下垃圾频道,发现性价比还是1xx系列最高,也就是从三代u升级到6代,目前最新是12代,12代差不多要8百块,玩过nas的都知道,代差其实对性能影响没那么大,只有cpu的选型差距才大。比如上了服务器用的E3E5那肯定爆表,可是功率也是可怕的,J和N开头的低功率芯片能力又实在拉胯(如果没有很重的计算,只是看片和文件共享足够了),我选的是G系列,大概在50-60w,前面J系列大概是10-20w。cpu这次没有选丐版,而是升级到G4400,就是上图。
目前还比较新,垃圾的性价比不高,下一代可以上
这是个好东西,但是主板上服务器版本就是成本会翻倍,细细考虑下确实不需要就放弃了。
Wireguard + vmess组网经验和Netmaker弃坑

起因是zerotier挂掉了,到了经常不可用的状态,这个就头疼了,毕竟谁没几台服务器呢。 于是开始上openvpn,大名鼎鼎,但是配置过于复杂,好多好多警告,还有error,程序员真的忍不了。 折腾openvpn累的时候偶然看到了wireguard,立马被它精简的设计理念所吸引,于是马上上马。 配置过程非常顺利,但是从2peers到5peers的时候发现mesh有点机械重复的工作,想着应该有人解决这个问题,于是掉进netmaker这个惊天大坑。 蛋疼的是netmaker名气还挺大,所以爬坑的时候我还一步三回头,血泪啊。
wg非常容易识别,虽然咱不干坏事,但是容易被殃及池鱼,所以海外主机的组网最好通过vmess走。 建议,虽然理论上不必要,跨外网的最好另建一个net,比如我的组网方式就是大陆abc服务器是一个net,然后abc和海外d主机零件一个hub 中继网络。 这里就体现出wg强大的地方了,精简的设置外,可以通过叠加多个网路实现复杂的路由功能,虽然很死板,但是类似netmaker这样的总有一天能开窍,知道自己正确的roadmap足可以解决手动配置的痛苦。
本来linux dns管理挺麻烦的,wg顺带支持的这个小功能可以很稳定的重写服务器dns配置,然后就舒坦了。
Drone 加速一: 解决Clone速度慢的问题 (drone v2)

应该不少小伙伴是把drone和git托管放在一起的,这时候默认的clone可能只是几秒钟,那请忽略本文。但如果跟我一样不在一个服务器上,而且有的项目比较大的时候可能手动clone会更好一些。
1 | kind: pipeline |
Drone 加速二: 解决Build占用资源过高的问题 (drone v2)

突然发现服务器反应慢了,就在granafa瞅了一眼,结果cpu96+,吓了一跳,一想也就是drone跑的没有限制资源使用。drone-runner这个名称有误导,开始以为是在这个容器中build,回念一想它定然是重新开一个container跑,结果一看真的是,所以用docker-compose中的deploy是无法限制资源的。这个所谓的runner更多的是一个agent,事实上一开始它就叫drone-agent,用于创建真正的runner。
1 | drone-runner: |
DRONE_CPU_PERIOD参数最大值100000,代表一个cpu的使用时间,如果希望单个cpu使用不超过75%则改为75000DRONE_CPU_QUOTA和上面的参数配合使用,代表了所有cpu的使用时间总和,不知为什么没有提供cpus那个参数,会好理解的多DRONE_MEMORY_LIMIT内存限制,这个很好理解,单位是byte,其中500_1024_1024*8代表500MB
说明:服务会随着使用更新,所有服务均在待机状态下,也就是非高负载均值。内存MB,cpu为双核百分比。
| 服务名 | 描述 | 内存 | CPU |
|---|---|---|---|
| nginx | 一个fastcgi站点和一个静态站 | 5.45MB | 0.3% 常驻 |
| traefik | 两个站点,开启gzip和ssl | 30.5MB | 1.63% 常驻 |
| wordpress | 主程序常见配置 | 137MB | 6% 非常驻 |
| flask | 精简程序 | 0.5MB | 0 |
| flask | 大程序,一般组件 | 31.04MB | 0.05% 常驻 |
| gitea | 25个库开启索引,如果不索引建议使用gogs | 131.9MB | 0 |
| gogs | 25个库 | 26MB | 0 |
| portainer_agent | 只有agent端 | 5.2MB | 0 |
| postgresql | 一个库,版本14 | 54.44MB | 0 |
| mysql | 四个库版本5.7 | 258MB | 0.1 常驻 |
| redis | 一个库 | 5MB | 0.09常驻 |
| haproxy | 监听一个端口 | 3.113MB | 0.01 |
| frps | 监听一个端口 | 9.578MB | 0 |
| dnsmasq | 10.81MB | 0.31% 常驻 | |
| cadvisor | 16MB | 1.4%-5% | |
| grafana | 四个仪表 | 45MB | 0.01% |
| prometheus | 七八个数据源 | 204MB | 0 |
| alertmanager | 一个提醒 | 13MB | 0.1 |
| node-exporter | 11.22MB | 0-1.5% | |
| 其他exporter | 7-9MB | 0 |
如何在git中保持一个空文件夹 / 忽略文件夹下的文件但保持文件夹本身

最近非常注重一些操作中的细节,以前总是skip一些无伤大雅的小坑,后来觉得一次skip次次skip是不行的。这个问题应该每个使用git的都有碰到过,只是搜索解决方案略显麻烦
有时候出于权限或者不希望运行中去创建文件夹的时候我们就希望保留类似node_moulds或者一些私有secrets文件夹,但是git却不支持这么操作。是的,官方就不支持空文件夹,于是就有了下面一个精彩的workround。
在根.gitignore中删除空文件夹的排除规则
在空文件夹下新建文件.gitignore,内容如下
1 | # Ignore everything in this directory |
极简升级postgresql by docker 9.4-14 稳稳的幸福
目前最新版postgresql是15beta4,正式版最新是14
pg确实好用,多年未动,最近整理服务器时pgadmin弹窗才发现最新的客户端不适配了都,于是就想着升级一下,9.4看上去像是上个时代的产物了。
下文中的9.4是我的版本号,如果你的是9.x请替换
1 |
|
1 | $ mkdir -p postgres-upgrade-testing |

必用理由就一个,它被并入linux内核,效率极高。我也是因为openvpn使用中发现警告太多,配置过于复杂,然后发现好多人转向wg,配置非常精简且灵活。
跟其他vpn不一样的是它没有严格意义上的server端或者client端,所以你既可以组建单网管的,也可以实现mesh互通。
debian安装apt install wireguard-tools 私钥生成wg genkey > privatekey 公钥生成wg pubkey < privatekey > publickey 或者一步到位生成wg genkey | tee privatekey | wg pubkey > publickey 共享密钥生成(非必要操作)wg genpsk > presharedkey 查看wg状态wg或者wg show 激活配置/开始wg-quick up wg0 关闭配置/关闭wg-quick down wg0 生成二维码cat client.conf | qrencode -o - -t UTF8 重启服务systemctl restart wg-quick@wg0 热更新配置wg syncconf wg0 <(wg-quick strip wg0)
开机启动
1 | systemctl enable wg-quick@wg0 |

因为黑人的原因,不建议再使用master作为分支名,正好在迁移自己的git库,索性一起改过来,下面是写的一个脚本,使用方法:网站上新建好库,cd到git库们所在的文件夹,touch一个upload.sh,执行. ./upload.sh 【库名】
1 | cd ./${1}.git |