avatar
@bangbang93

使kubernetes在calico网络插件下和docker swarm共存

0x00 前景提要

云主机上跑的小服务越来越多了,而且有些是我很多年前写的,能稳定跑所以也一直没有更新,导致部分程序开始老化,在新版node或者系统环境下或多或少的会出现一些问题。所以之前一直在用的pm2大锅炖方案开始出现一些麻烦,有些新写的程序需要node18,但是有一些年代比较久远的程序,连node16都上不来(比如旧版webpack在node16上和新版openssl有些兼容问题)。最初的方


gz/lzma2/zstd 压缩率记录

原始文件:297088180Byte(284MB)

$ time gzip -k modified_CJ2400-A512823.1-CP1-CJ2400-CP1-CJ3970-9626B_C36P_8S_CP2_REV26_20211025-2022OCT24085350.std                                                           
...

2022年

不知不觉间2022年已经彻底过去了,回过神来才发现去年只写了一篇博客,于是今天总之先整个年终总结凑个数

项目

BMCLAPI

首先来点数据,OpenBMCLAPI去年承载了750TB流量,全年共计处理请求132亿次。不知不觉间BMCLAPI已经快到PB级流量了。总共有29台服务器参与了文件分发
image.png
最能抗的还是我自己的服务器

游戏

535c58a82be74256b8ae9a364dbc7be4.png

1月的时候打穿了如龙7。如龙系列其实我一直就想接触,但是又由于已经


...

写在将开发环境迁移至Linux一个月后

从毕业进有赞之后,有赞发了一台13寸的MBP作为工作机,我就开始用MacOS作为开发环境了。后续发的机器性能实在不够用,就在16款touchbar MBP发布后,买了15款顶配的MBP。MacOS开箱即用的桌面环境和靠谱的命令行工具链确实非常吸引人,当时还没有WSL,Windows底下各种魔法的bug着实有些让人头秃。
即使离开有赞后,MBP依旧是我的主力开发环境,家里的Windows基本只用来打

...

给服务器上clash透明代理

下载之类的就不在赘述了,直接从配置开始

首先在服务器上最重要的需求之一就是尽量不要影响到服务的流量性能,所以和家用代理会有一些细微的规则调整。

Clash本体

我的网关机器上原始是没有dns服务的,直接转发给114,所以现在要让clash接管53端口,但是又不希望clash进程跑在root用户下,所以需要给特殊权限
setcap 'cap_net_admin,cap_net_bind_servic

...

nestjs provider TRANSIENT作用域下获取注入目标

最近在写nestjs-bunyan的时候,想要实现decorator自动创建childLogger,记录当前class的功能,最初的实现也很简单粗暴,在decorator上记录当前类名,然后给每个类名创建一个Provider。

但是这样做缺点也很明显,在应用启动后,没法创建新的日志模块,也不能手动添加日志模块。正好最近公司基建在做日志改造,就决定优化一下这个逻辑。

经过一阵深思,觉得nestjs的

...

关于雷电3带宽,你所不知道的事情

TLDR

曾几何时,我也以为雷电3传输数据,能跑出标称的40Gbps带宽,不过仔细翻了翻文档,我才发现只传输数据,最大带宽是22Gbps。这个“40Gbps”的标称值,有点类似于电信的“3000M宽带”(1000M家庭宽带+千兆无线+千兆5G)

0x00

第一次发现这个说法,是在一篇知乎专栏中发现看到的
image.png

但是文章中并没有给出这个数据的出处,所以一开始内心也表示怀疑,于是搬出Google
image.png

Goo



...

解决Windows10 莫名端口占用,而又找不到占用应用

这个问题已经有一阵子了,最初是WebStorm启动的时候报端口占用,本来以为是WebStorm的问题,所以问了jetbrains。回复是重置winsock,好了一段时间。
不过好景不长,接着是Shadowsocks-win启动的时候又报1080端口被占用。
而用"netstat -ano|findstr 1080"命令却找不到任何占用这个端口的程序,网上一阵搜索也没找到相关的修

...

记录一下bmclapi请求量

单日请求量
单日请求量已经快两千万次了,高峰期也超过了600QPS

image.png
请求的文件其实也挺集中的,基本上就是最近几个版本的asset和libraries补全。其实根据这些特征,可以考虑下一步openbmclapi根据热度区分节点文件优先级了




...

写给BMCLAPI单日调用次数超过一千万次

image.png
本数据包括MCBBS源
今天你贡献流量了吗

最初开始做BMCLAPI的时候只是因为对BMCL的下载速度不满意,有些启动器在我之前是通过多线程分段下载加速的。至于我,就发挥老本行,自己做镜像。最初的BMCLAPI其实还没有名字,我只是用我自己的网页服务器+ftp上传文件。1.2.5时代的资源文件还很简单,游戏内F3+S就可以下载。下载完之后我再手动上传到服务器上,于是这就是最初的BMCLAPI。


...

升级windows 10 1903 时遇到 Intel® Rapid Storage Technology (Intel® RST) 驱动版本错误

最近在升级到windows 10 1903时遇到了驱动错误,具体报错如下图

之后我发了条微博吐槽这件事情https://weibo.com/1457585272/HFKVVzYaa

结果发现不少人也有同样的问题,而且Google和百度也并没有找到靠谱的方案。我来记录一下我的解决过程,希望能帮助到有同样报错的人吧。

不过我也不确定我的方法能够适用于所有情况,不过据微博的反应来看应该似乎是可以的,由


...

爱发电赞助名单生成脚本

自从bmclapi赞助开始用起爱发电,就一直在手动维护赞助名单,随着名单越来越长,每次维护名单的时候都要手动添加然后人肉去重。问了一下官方,也暂时没有打算做webhook。
每次手动维护名单实在好烦,于是花几分钟研究了一下赞助名单接口,又花了几分钟糊了个脚本,来自动生成赞助名单的markdown。
以下代码只要打开爱发电的网页,登陆后打开开发者工具,粘贴执行即可得到对应的赞助名单

!async f

...

Todoist,让你的生活井井有条

很久以前我就在寻找一款靠谱的todo list应用,但是一直没有找到一个彻底满意的。
在此之前也陆陆续续跟朋友一起用过Habitica。但是Habitica有一些缺陷,以至于一直无法让我把它作为一款生产力工具对待。比如

  • 虽然有移动端APP,但是对弱网支持不好,没网的时候连想看下有些什么事情都不行。
  • 没有定时提醒
  • 分组功能太鸡肋
  • 定期任务不能改日再做

中间也考虑过自己动手丰衣足食,但是自己搞还要

...

socket.io的一个“坑”

0x00 背景

厂里有一个推送服务,负责网页推送和数据同步,基于socket.io。
网页推送通过rabbitmq监听队列实现组织成员变化和对应socket.io房间用户的同步。

0x01 表现

新建一个组织后,立即邀请一个用户B,则当前用户A(不是被邀请的,是邀请别人的)用户也会收到目标用户的邀请通知推送,但是由于A并不是这个通知的接收人,所以点开会丢出403。
正常情况下用户A根本不应该收到这

...

搭建私有邮件服务器——从入门到放弃

0x00 为什么要搭建私有服务器

最近看到了LWL的https://blog.lwl12.com/read/mta-of-the-elite.html

于是也计划了一下自己的邮件服务器,由于饱受各类垃圾邮件骚扰,所以一直想要一个支持wildcard收信的邮件服务。
而国内各类公开的邮件服务,无论是付费的也好,收费的也罢,似乎都并没有退出这个功能的计划,于是就想趁这个机会一起搞定。

0x01 准备工

...

nginx使用h2c协议时会导致http/1.1失效

最近有个朋友问我nginx反代什么都变成了下载。
第一反应当然是content-type的问题,于是用命令行访问先检查一下返回的content-type到底是啥,结果
图片
难道是httpie的问题,于是又试了试curl
图片
这就很尴尬了
图片
查看一下返回的hexdump,基本和httpie的报错是一样的
那让我们回退最原始的telnet
图片
结果依旧令人崩溃,而且nginx的access log以及err









...

有生之年又踩到了tengine的bug

今天新上线一个项目的时候用到了一个上传的接口,在本地测试和内网环境下都正常,上服务器以后一直504,应用log显示文件没有被上传上来,而浏览器log却显示文件正常上传。
初步推断是tengine上没把请求转发完全,导致后端一直在等待剩下的body,直到90s超时。

图片

于是在服务器上架起了ssh隧道,通过本地直传服务器,就能够正常上传,于是将问题确定在了反代的tengine上

最初以"ng

...

node.js的v8.serialize和v8.deserialize

这两天翻nodejs的api文档时发现了两个新API,v8.serialize和v8.deserialzie,官方给出的说明是这样的

The serialization API provides means of serializing JavaScript values in a way that is compatible with the HTML structured clone alg

...

BOSS直聘认证bug

最近我厂准备招人,所以我也搞了个BOSS直聘准备看看人选。
不过在准备BOSS认证的时候,发现输完姓名和身份证号后点击下一步没反应了

在与客服一阵交流后,我觉得效率太低了,等他们修好我再用都要过年了,于是拎起logcat先看看报错
有趣的是,报错没找见,却发现


有个js文件的log,打开这个文件,简单看了一下内容(没混淆),刨除格式验证的代码后,就是拿着用户名和身份证号请求后端,后端返回了一个




...