luminethonk.22.07.31

昨天除了撸出了多线程guilded drive外,我还把那些将近1TB的种子按照传统discord drive搞法打包成了分卷rar,做了checksum,然后用一代脚本上传到了discord drive上🤔这部分玩意自然没个十个甚至⑨个小时是传不完的(恼🤔

所以,接下来我们做什么?要不把discord drive也便乘流式文件夹上传得了(🤔只不过这个脚本应该比单文件discord drive简单多了,它只会生成一个链接列表文件,下载时只需要按照这个列表来curl然后流式tar解包就vans了(确信🤔最多我只需要加一个单独的checksum文件,或者我也可以将这两部分放进同一个文件里,用某个符号隔开(确信🤔

但discord drive和guilded drive不同之处在于,除了单文件大小外,discord drive是可以有文件名信息的,这部分信息我填什么?🤔

AYAYA

在11451.4秒的瞎鸡巴折腾后,这玩意也被我撸出来了,而且我还把它移植到了cygwin最小环境里🤔最后分片文件名决定用分片的checksum,这样我就不用在列表文件里再加一个字段记录checksum了🤔而链接列表文件上传时文件名是最初扔进tar的文件夹名,外加日期,搞定🤔

其实这个脚本比单文件discord drive简单多了,因为它是基于多线程guilded目录上传脚本魔改的,而非任何discord drive脚本🤔而且由于这类目录上传脚本,就像我上一篇里说明的原理那样,它们是tar制作好某个大小的包,才会去调用subshell脚本来单线程或者多线程上传,我也完全用不着写什么多线程调度,因为本来就没什么东西需要调度,每次生成的小段数据流肯定能被所有线程一次性上传完毕🤔那么也就没有一大堆临时文件,它基本上只有两个临时文件,一个是这一部分数据流的暂存文件,一个暂存链接列表,没了🤔

不过这个时候,那个cygwin最小环境是不是应该改名discorddrive了?因为它不再只有singlefilediscorddrive了🤔管它呢,我可不想改一大堆脚本(恼🤔

接下来我还需要写一个对应的下载脚本🤔基本上拿guilded目录下载脚本魔改一顿就vans了,无非是由于discord drive不像guilded drive那样可以直接下,需要写一个不用代理的版本和用代理的版本而已🤔什么?guilded也有两个版本?那没事了(确信🤔

话说为啥我有三个guilded下载脚本?🤔原来第一个脚本是几天前搭配powershell用的,我当时发现powershell的管道有问题,导致解压速度慢的批爆,所以最后放弃了纯powershell,转而搞半powershell半bash,那玩意就是当时的产物🤔而某种程度上来说我往guilded drive里面加了114514个新内容,考虑到向后兼容,那玩意被保留了起来(确信🤔

但无论如何,这四天收获还是挺大的,从尝试powershell化bash脚本(然后几乎失败)开始,到最后我把几乎所有的discord antics和guilded antics都便乘了批处理版本(迫真),考虑到这个月一开始我就在研究guilded antics,可以说是最好的结束这个月的方式了(大嘘🤔

pikapods

撸完discord drive(现在是不是该叫第三代了?)逛某个叫做lowendspirit的vps垃圾佬论坛(lowendtalk据说卖给某个申必金主了,所以这个新论坛是上个垃圾佬论坛的精神续作),想在里面找个ipv6 vps玩玩🤔它有一家1TB的存储vps,两年48美元,问题是只给了一个月4TB流量,wiebitte?🤔以我玩存储vps的经验,如果它的流量没有硬盘大小的10倍的话,那么它最后只能放着吃灰🤔拿来挂pt都不怎么行,我当年挂u2的时候一个月随便用掉30TB流量🤔

然后我发现了一个叫pikapods的玩意,它是个怎么说呢,容器服务,但不是那种用docker hub上的镜像生成容器的服务,而是有它自己的容器仓库🤔比如它有wordpress容器,开启之后还能搞一个二级域名,然后用cname来绑自己的域名,但我没尝试成功过(半恼🤔

但我要说的是,现在它每个注册账号能白嫖5美元,不用绑信用卡啥的,直接注册🤔按照它目前的收费,撸一个wp容器只要1.64美元一个月,拥有1/4核的u,512MB内存和10GB存储,反正比我现在用的那个便宜多了(确信🤔这要是白嫖的话,可以嫖三个月,而且和域名不一样,到期了直接导出wp所有玩意,然后再开个账号,导入就vans了(确信🤔

fun fakt:我试图将它的资源分配拉到我的存储vps那么多的级别,也就是两个核心、2GB内存和1TB存储,收费11.41美元🤔有意思,这价格和我目前用的存储vps相比有没有可比性暂且不提,它的硬盘114514%是ssd,1TB的ssd可实在是太牛批了,除了不能命令行跑discord drive之外🤔

所以我目前暂时开了一个wp容器,登上去感觉还行,只需要填一个用户名和密码就能完成设置,装md插件也能随便装🤔装了另外一个md插件,发现它的在线编辑器仍然能被thonk表情卡住,这就非常尴尬了🤔

试了下wp自带的导出和导入,基本上能导入所有文章和相关metadata,除了文章的内容不是md格式,而是html🤔草,那这不导了个寂寞🤔

thonkeqing

不过如果是wp的话,其实可以通过装插件来备份和恢复全站,不仅包括文章啥的,整个数据库和整个webroot(包括插件和主题)都能包括在内🤔

我试了两个这种插件,其中一个叫做什么all in one wp migration的,只能备份不能压缩,而且只能浏览器下载和上传,我尝试(往那个容器里)上传备份档时遇到了上传限制(恼🤔但另外一个叫做backup migration的插件不仅能备份和压缩,还能用网站自己的http服务器提供一个链接,在目标站也装这个插件,然后输入这个链接,就能从源站下载备份档并开始恢复🤔

它这个恢复过程貌似有点慢的离谱,可能是因为它只有1/4个u⑧🤔我要不重新开一个核心数和内存大的,然后看它支不支持中途缩配置🤔

barbruh

草,换了台双核8GB的容器(它的白嫖账号能开的最大容器)10分钟了,它才恢复了个66%?wiebitte?🤔实在是难绷🤔我记得这玩意只有1/4核时也能随便打开和编辑页面啊🤔不过这备份档的wp_posts有十万甚至⑨万行可还行,我无端猜测用php来恢复这么多行数据库项可能也的确没有mysql命令行乃至直接dd镜像快就是了(确信🤔

看来,搞不好这破容器的确不太适合跑wp这种上古webapp,考虑到如果只是想用md,而且外链啥的全部挂在了discord drive或者guilded drive上,是不是可以考虑一些比较轻量级的webapp?🤔但它的blog分类webapp真的只有一个wp,别的玩意也许支持md,也许轻量级,但它们不是blog(恼🤔

bruhfei

在长达20分钟的恢复过程中,这玩意居然中途出错了,原因是内存空间耗尽,而且更生草的是它居然只给wp分配了64MB内存🤔这简直比某带学的jsp教务系统还要傻逼,什么脑瘫配置(全恼🤔

我用sftp登上去一看,它有一个upload.ini文件,可以配置占用内存和运行时间啥的,都往大里改,然后重启下容器,再跑一遍恢复🤔大约半个小时后,这次终于恢复完成了,再次刷新后它彻底便乘了源站🤔除了固定链接那里需要重新设置下,然后点一次保存,不然固定链接就是没法正常运作,wp老毛病了(半恼🤔

这么说吧,这玩意尽管作为白嫖资源貌似没什么github actions(只能跑6小时)或者hax/woiden(需要每周续一次)好玩,毕竟它连个ssh access都没有,但拿它做站的话实在是最好不过了,一次可以撸三个月(确信🤔三个月后它有没有倒闭还是个问题呢(🤔

thonkeqing.22.07.30

这几天bash脚本批处理化(迫真)的antics还在继续,guilded上传脚本也被我魔改好了🤔

但它现在至少存在两个问题:

  • 上传速度实在是太慢了,哪怕梯子加速后还是⑧行🤔毕竟这玩意是流式上传的,所以至少目前,它只能搞成单线程,我这边加上梯子最高也只有3MB/s,反正比discord drive差远了(悲🤔

  • 由于路径转换的问题,尤其是涉及到win到linux的转换,输进tar命令的路径都便乘了绝对路径🤔但tar的话,在我知道如何进一步设置前,如果输进去了绝对路径,它会把这一大坨路径除去根目录的/都保存起来的,到时候解压的时候也全部解压出来🤔而我更想达到的效果是只保存那个目录本身🤔到此解决方案是要么看tar有没有啥设置搞这个,要么cd到这个绝对路径的上一层目录,然后在那里tar那个目录,这样tar记录下来的目录结构就是我要的了(确信🤔

但这么搞可能会产生新的问题,tar之后split还需要在一个subshell里执行上传的脚本,那个脚本的当前目录会便乘什么?🤔如果它会便乘比如我们要处理的目录相关的玩意的话,那么上一个脚本里的当前目录这个参数,我们是不是要给它传进去?🤔

thonk

另外,我觉得用guilded drive来大规模保存之前下的将近1TB的种子,可能是一个好主意🤔因为种子自然是一个种子下载出一个目录(有时候种子下载出来的只有一个文件,但我在的pt强制要求一个种子必须建立一个目录),而guilded流式上传脚本刚好可以将一个目录便乘一个guilded drive链接,所以一个种子就便乘了一个链接,到时候下载时也是一个链接便乘了一个种子对应的目录,完美🤔

而discord drive就没那么方便了,对于旧discord drive来说,我还得对每一个目录手动rar,手动验checksum,还要手动上传,尽管我当时处理u2的时候的确写了一个半自动化玩意,但它还是麻烦🤔单文件discord drive?它只能拆分单文件,我是不是还得将一个种子对应的目录手动压缩成单个rar文件?(恼🤔

而guilded drive就没那么多麻烦,直接对着一个目录写一个for循环,将每一个子目录塞进脚本撸就vans了(确信🤔

现在已经搞了好几个小时了,平均下来20MB/s,一分钟1.2GB,基本上和旧discord drive的1GB到1.5GB一分钟持平了(确信🤔当然,旧discord drive可是有验证每个包checksum的功能的,不然50MB/s都能随便上🤔

至于guilded drive生成的链接没有任何信息这一点,,,其实我每次处理前将ls出来的目录列表贴在discord频道里就vans了,由于for循环肯定是顺序执行的,贴出来的目录顺序肯定和生成的guilded drive链接顺序是完全一样的,到时候按照顺序找某个资源对应的链接就vans了(确信🤔

fischlthonk

guilded drive流式目录上传还有没有优化的空间?比如,流式上传也实现多线程?🤔

首先,guilded drive能实现流式上传,是因为tar打包后的数据流被塞进了split里,它被设置成每到它接收的数据流达到了一定大小(比如200MB-114514字节),它就会在subshell里调用另外一个脚本,将这些数据流塞进这个脚本里上传🤔

那么,如果想要上传这个功能便乘多线程的话,它首先需要实现一个计数器,使得每一个subshell里跑的上传脚本都知道这段要上传的数据流属于全部数据流的第几个part🤔然后,这些subshell需要能并行跑起来,而非像现在这样每tar到某个大小后会阻塞到上传脚本完成上传为止🤔

当然,也许它存在一个相对比较简单的方法,以4线程为例,将800MB数据流传给subshell,而subshell里的上传脚本会将其保存到某个临时文件夹或者tmpfs里,再将保存的文件用单文件discord drive同款方法(tail | head)四线程上传就vans了,只要确保这四个文件上传后的链接顺序是对的(比如第一个分片文件上传后的链接在四行里的第一行),甚至都不用记录它是总数据流的第几个part🤔

这样,主脚本基本上不需要改,最多加几个参数(确信🤔

AYAYA

在又一个1145.14秒后,目录打包guilded drive终于便乘了多线程上传版本🤔subshell脚本被我扩写了一番,考虑到subshell脚本通常是主脚本生成的,它发生了一系列生草的事情🤔比如上次我也许说过的,在那里面写的变量在写入subshell脚本前会进行一番变量替换🤔但更生草的是里面写的命令替换部分(用来将上传结果赋予一个变量,因为我需要将那个返回的链接和partno一块输出)也会先执行一遍命令替换再写入subshell脚本,实在是草🤔所以最后我只能将\$和```全部给转义了,现在subshell脚本终于恢复了正常(确信🤔

接下来多线程部分也极其生草,一般来说在for循环里面写一个花括号然后里面写入要多线程执行的命令,后面再加一个&,它们在for循环执行完后会全部后台执行,而主脚本也会继续执行,除非done后面加一行wait🤔但如果我在done后面跟一个管道的话,它会等这些线程执行完,然后将它们的输出结果汇总起来,再扔进管道里🤔有点意思🤔

所以,我在for循环的内层,先让一个初始值为0的计数器(表示partno)加1,然后将partno的值连同临时文件的offset(也就是从第几个字节开始上传🤔至于上传多少字节?这部分由主脚本的变量决定,就像我之前说的,生成subshell脚本的过程中会搞变量替换,这样它就会写进subshell脚本里面)传进上传函数里面🤔而上传函数并不会像之前那样直接打印出上传后guilded返回的链接,它需要先保存这个链接,然后将其和之前那个计数器变量以partno|link的形式合并输出🤔

输出之后我在for循环的末尾加上管道,来一个sort -n,实测哪怕它是上面那种格式,也能在线程数超过⑨的情况下正确输出从1到最后一个线程的链接🤔那么,再用cut提取出链接,写入到某个文件,这个多线程脚本就搞完了(确信🤔

以相同的思路,我们也可以往discord drive里流式上传目录,此时每一个线程对应一个webhook url🤔只不过每次二三十个线程同时开火,怎么看都不像是什么高效的上传方法就是了(恼🤔

现在,压力来到了cygwin最小环境这边(确信🤔

JAJAJAJAJA

在又一番瞎鸡巴折腾后,cygwin最小环境里也可以使用多线程guilded drive了🤔https://s3-us-west-2.amazonaws.com/www.guilded.gg/ContentMediaGenericFiles/5f8b4d775b5bc0eadb7deb0e17f41d81-Full.zip
,请(吴慈悲🤔

上传速度还行,至少比我之前撸的单线程guilded drive快多了,哪怕用upload.barbruh.lol这个完全没有梯子加速的上传api,也能达到最高⑨0Mbps(确信🤔不错,这事终于告一段落了(迫真🤔

bruhfei.22.07.29

实在是受够了某垃圾nas(迫真)运行clash的速度了,切换个节点都需要好几秒🤔

所以,我突然想复活之前用的星级X牛nas了🤔在1145.14秒的瞎鸡巴折腾后,这玩意,,,插电了启动不起来🤔

不错,看来我只能接着用那台垃圾nas(迫真)了(恼🤔

cloudflare antics

与此同时,我发现cloudflare(在处理range请求头与否这个问题上)基本上只管文件扩展名,而不管它实际的mimetype🤔所以,我只需要对一个mp4文件用ln命令创建链接(最好还是创建硬链接,符号链接只有相同目录才能用在http服务器上,局限性很大),将其便乘txt文件,接下来我就可以随便下了,估计扔进mpv应该也没啥问题(确信🤔

而且没错,mpv的确可以流式观看txt(大嘘)格式的视频🤔作为一款万能命令行播放器,它再怎么说,也能自动识别视频(或者txt文件)容器的格式啥的🤔

bruhfei

话说为啥现在的梯子都只有ipv4,我想挂梯子加速视频播放,它就会直接报错,因为貌似我那几个cloudflare站全部解析成ipv6了(全恼🤔既然如此,我就只能彻底关掉本机的ipv6了,或者我在hosts里面将我的几个域名直接填成ipv4的cloudflare节点地址(🤔

当然,关掉ipv6也不是啥大问题,毕竟早些时候我所有的vps都被我配置成了双栈,因为那时流行的玩法就是双栈vps配置nginx提供双栈web服务,dns同时添加a记录和aaaa记录🤔所以我只需要用那些vps开二级代理(它们本身肯定是走代理才连上去的,不然卡到输命令都没法愉快地输),然后连接hax那群机子的时候走这些二级代理就vans了(确信🤔

不过我好像也不是很有必要用梯子加速,毕竟cloudflare走ipv6完全可以在不上梯子的情况下跑到物理上限(确信🤔难怪我这几天可以不上梯子爽各种玩意,从guilded drive到自建网站,原来因为我开了好几天ipv6啊(迫真🤔只有跑到物理上限,单线程还是得加速(恼🤔

顺便我把最近买的几台vps也配置了一顿双栈,这玩意还是比较简单的,改改配置然后重启下network或者就重启下机子就vans了🤔我某个vps居然有/64的ipv6地址用,无论如何,感谢(迫真)ipv6,我现在终于可以将114:514:1919:810设成ip地址的一部分了(大嘘🤔

thonkeqing

现在guilded的上传脚本我也想撸进cygwin最小环境🤔原版脚本通过生成另外一个bash脚本来实现split里对每一个分片进行流式文件上传的功能,但如果我把所有东西打包好了的话,其实我完全可以打包两个脚本进去,一个是流式上传单文件的,一个是利用前者进行分片上传的(确信🤔而bat调用的是后者🤔

当然,它需要将相对路径改成绝对路径啥的,现在问题来了,对分片脚本来说进入脚本后的当前路径是啥很好理解,对它要调用的那个脚本来说,它是啥就不好理解了(全恼🤔而且考虑到和discord上传脚本一样,我需要拖一个文件进去,那么它有可能被解析称相对路径,有可能被解析称绝对路径,反正我需要转换就是了🤔

barbruh.22.07.28

这几天度盘一直在抽风,我的两个超会小号都403,我估计就算买一个新的号,它要么给我403,要么更糟糕,解析到一半403(恼🤔

所以,这几天我就不搞了,等我需要搞的最新文件再次积压到不得不搞了再说🤔

所以到今天,我大概把截图基本上全搞定了,照片的话,应该还剩8个小号,也就是大概15TB到16TB的玩意没搞完(悲🤔

guildedthonk

另外guilded drive实在是太寄吧好使了,甚至在我的aria2c完全不上梯子的情况下,它仍然能跑满带宽🤔那真滴牛批,我可能得考虑写一个discord drive转guilded drive的玩意了(确信🤔

另外有没有可能,这玩意在powershell里面跑起来?我就不信它非得装个bash环境才能用🤔假设aria2c.exe和tar.exe已经放进了system32目录,或者不放进去也行,毕竟我们永远可以用guilded drive将这两个可执行文件先下载下来🤔

barbruh

在我一番迫真折腾之后,我发现powershell的管道或者说数据流实现貌似有那么亿点点问题,比如将for循环输出到stdout里的东西要么重定向到文件要么管道到一个不依赖cygwin1.dll的tar实现(貌似叫做bsdtar)里时,它的速度会慢到难以忍受(悲🤔基本上只有十几MB/s,对比cygwin的tar在ramdisk里光速完成解包,可以说是龟速了(全恼🤔

所以,恐怕我只能接着像上次(?)那样,想办法撸一个cygwin最小环境出来了🤔在又一番迫真折腾后,这个powershell(迫真)脚本终于撸出来了,它会先尝试下载一个4MB的zip包,解压后里面是我整的cygwin最小环境,然后它会先将guilded drive的列表文件下到那个cygwin目录里,然后执行里面的bash.exe,参数是sh脚本的位置🤔接下来就非常熟悉了,就是那个原版bash脚本删去wget、rm等powershell自带的函数(确信🤔

但这个脚本它tar解包的速度也慢到难以忍受,经过我一番迫真排除后,最终确定就是那个bsdtar有问题(恼🤔将其替换成cygwin版的tar后(我cygwin1.dll都放进去了,不用白不用),它解包的速度基本上和完整版cygwin一样快了(确信🤔

现在,guilded drive终于普照到了win系统(大嘘🤔下一步是什么?bat?🤔

thonkeqing

又改了一顿脚本,这次将rm.exe也加了进去,所以它现在可以像一代discord drive那样,将guilded drive列表文件拖进bat文件就能自动下载并解压了(确信🤔而且这坨玩意也兼容之前那个powershell版脚本🤔

当然,除了拖文件外,它也可以做一个接受参数是列表文件链接的bat,下载列表文件可以接着用aria2c(确信🤔只不过此时就没法拖什么东西进去了🤔或者我们可以让这个bat来处理一个装满guilded drive列表文件链接的列表文件,此时就可以接着拖了,而且一次性可以处理一大堆(确信🤔

好,到此我已经完成了bash批处理powershell三修(确信🤔

luminethonk

所以我现在懂了,如何将单文件discord drive或者guilded drive的上传脚本普及到win系统?🤔只需要撸一个cygwin最小环境,只带什么curl、aria2c等程序,然后用一个bat作为bash脚本的入口,接下来就可以该怎么用怎么用(大嘘🤔https://s3-us-west-2.amazonaws.com/www.guilded.gg/ContentMediaGenericFiles/fb4b1f769bb8de2d93fc3242c593395f-Full.zip,请(吴慈悲🤔

考虑到本次魔改原脚本花了一大把时间,这还是个只有几行的脚本,这要是去魔改单文件discord drive这种庞然大物的话,我不得寄:barbruh:

thonkcord

最后我还是撸了一个单文件discord drive的cygwin最小系统版🤔前后改了11451.4秒,我也是闲得寄吧蛋疼(🤔

当然,和guilded的上传api一样,我给discord的上传api也整了一波cloudflare antics🤔但discord貌似也用的是cloudflare,而且禁止它的域名被设置成cname🤔所以,我只能用workers来整它的上传antics了(🤔

最后效果还行,不上梯子可以达到平均50Mbps上传🤔

既然上传都搞了,下载要不也来搞一搞🤔当然那个单文件discord drive下载函数已经充满了一系列对下载下来的脚本施加的后处理,而如果它想在这个cygwin最小环境里也跑起来的话,那么它还得再加一层后处理,比如至少把里面用到的那些命令全部改成绝对路径⑧🤔当然,函数本身也得改,反正又一个11451.4秒过去了,现在,它一个压缩包即可以上传discord drive,又可以下载discord drive了,好耶🤔

conclusions

现在来看,它相比原来的脚本,除了将命令的相对路径全部替换成绝对路径外,还是做了亿点点魔改的,比如原来我用file命令来获取文件的mimetype,但那个file.exe移植到cygwin最小环境时,它需要的依赖项多到离谱🤔最后和guilded类似,我上传个连扩展名都没有的文件分片整什么乱七八糟的mimetype,直接设成text/plain就vans了,我非常怀疑这个file玩意是曾经写的试验脚本的遗留🤔脚本某处还用了一下awk,但它也只是做了一个在ls的结果里提取文件大小的事情,其实cut就能搞定,这里用awk实在是太大材小用了🤔当然还不是因为awk移植过去需要的依赖项多的批爆🤔

但当我开始移植cygwin版curl时,那才叫一个蛋疼,前后复制了十几个dll,它还是缺这个缺那个🤔最后,我干脆下了一个win版的curl.exe,一个可执行文件搞定所有东西(恼🤔之前不用bsdtar是因为它太慢,但curl又没有这种问题(当然它在单文件discord drive的实现里也是通过管道传数据的,但至少我目前没有观测到明显的性能下降🤔但cygwin版tar又没多少依赖项,我记得它最多依赖一个cygwin1.dll,不像curl(🤔

当然,这个最小系统或者最小环境的概念,在github actions里面也是能用到的,毕竟它每一个runner只有128GB总空间,如果我能用什么申必玩意将其清理到系统只占几个GB,那我不是可以拿它挂100GB这个级别的种子了?🤔甚至,如果我想的话,还可以拿它挂u2,或者任何不限制客户端数量的pt,或者任意bt🤔

sas2usb.22.07.24

在批乎上查国内dns服务器,结果发现有人在sas硬盘相关问题讨论里回复了我🤔说现在已经有sas转usb的适配器了🤔

w-wiebitte?🤔赶紧搜了下,草,这玩意真的存在啊,而且它居然只(迫真)要800,反正比上次我看到的那个原型机便宜多了🤔对了,那个sff8088转usb3的原型机现在还挂在那儿,但能不能买就不清楚了,再说了我也没兴趣花3500买个这玩意(恼🤔

而且现在搜sas转usb3,还能找到至少三款类似的玩意,价格从550到800都有🤔估计它们用了同样的解决方案,至少它们一眼看上去连主板的form factor都极其雷同(确信🤔

所以,这玩意到底是用什么芯片实现的?🤔反正它肯定不是sas转pcie加定制pcie转usb,这套玩意成本都比1000贵🤔那么是不是意味着,传说中的sas转usb的单芯片方案真的被搞出来了呢?🤔又是哪家头铁的芯片厂商做出了这种方案?realtek?jmicro?asmedia?还是lsibroadcom?🤔

现在我还没搜到拆机视频或者诸如此类的,这实在是太申必了🤔但我估计也没几个壬想在笔记本或者路由器上面使用sas罢🤔我现在也是笔记本壬了,但我也没什么笔记本接机械硬盘的需求,无论是sas还是sata,2.5寸还是3.5寸,这么说吧,我早就不是带学生了(半恼🤔

bruhfei

草,我就不应该上批乎键政区(全恼🤔突然想起来了,几个月前彻底戒掉批乎是有原因的🤔就是因为我一看批乎键政区或者批乎cuties impact讨论区,就像瘾君子磕海洛因一样沉迷,好家伙,原计划今天晚上打完boss的,现在好了,我连每日都没打完(悲🤔

而且我的度盘antics三个小时前就搞完了,现在我也忘了搞下一波🤔不过这个好说,我开搞就vans了,明天中午再去整理文件🤔

dudiskbitte.22.07.23

今天处理另外500GB的cuties impact客户端备份,但在此之前,我需要将这几天上传的东西全部转到discord drive上去,我才能将本地2.5寸sas上的压缩包删了(恼🤔

所以,这次我选择用bash的&来开多线程解析,而非像以前那样开八九个窗口🤔效果非常的可以,也许因为我解析的东西少,每次只解析一个文件夹,⑨个线程没有一个文件解析不出来🤔那还有什么好说的,撸就vans了(确信🤔

这次度盘转discord drive之后,我又感觉这玩意非常的行了(至少和前几个月相比),还想再弄一波🤔那就从前几天没搞完的部分来⑧,今天先折腾一个号的🤔这次平均每个线程解析25个文件,还是全搞定🤔

但接下来我不打算手动将所有线程生成的文件整均匀了,反正无论如何,每次生成完discord drive链接我都得手动归类它们,这次我干脆直接将所有线程的下载链接合并成一个带文件得了,由于它一个文件严格对应6行(包括一个换行符),直接用经典split8函数处理就vans了(确信🤔除了这玩意可能得改一下,不多加一行,也不多加6行,如果它生成了第⑨个文件,难道我没有第⑨个线程吗🤔最后生成的discord drive链接我也合并成一个带文件,然后grep出相应的分类(确信🤔

AYAYA

第三次解析整个账号,撸出来1⑨个线程,每个线程解析一个文件夹,一分钟后,所有线程都解析出了结果🤔这实在是太牛批了,这可是1⑨个线程啊,1⑨个🤔

看来,我貌似已经彻底摆脱了403问题(确信🤔基本上意味着我再也不用每天花4块钱买号了,我可以买一些长期的共享度盘会员,现在就坐看那个号解析多少TB的文件开始限速🤔

另外,从ip的角度讲,度盘解析最好在自家的本地机子干,vps这种固定ip机子很容易被橄榄,更别说vps离度盘的服务器很远了,干个啥都得一秒以上(恼🤔而在本地,又离度盘的服务器近(基本上几十到十几毫秒),又可以随便切换ip,还可以用本地十几个核心的cpu开十几个线程,这不比vps爽114514倍?🤔

barbruh.22.07.22

一夜过后,我发现我昨天晚上写的cloudflare worker转发amazon s3玩意基本上没啥卵用,首先amazon s3完全就没有被墙,扔进批信里也可以做到直接打开,而非像我的下载cdn域名dl.barbruh.lol一样弹出一个确认框(恼🤔再说了,和fegelein.xyz一样,barbruh.lol到时候也会被年抛,如果我现在用了大量的dl.barbruh.lol文件链接,现在是一时爽了,一年后呢?那时我连它原来长啥样都不见得记得(恼🤔

而我那玩意,刚开始也许用起来还行,但到现在,短短几个小时它就基本上打不开了,要么限速要么超时(全恼🤔而且上传html入口u.barbruh.lol也貌似遭到了类似待遇🤔

thonkeqing

不过奇怪的是我那几个长域名guilded.barbruh.loldownload.barbruh.lol都没被橄榄可还行🤔外加我现在手头的输出各种链接的html实在是太多了,是时候将其合并成一个html了(确信🤔

折腾了1145.14秒后,终于将几个html缝合在了一块,现在同一个html里安排了两个上传按钮,对应不同的上传api,这样它既可以用media.guilded.gg上传,也可以用upload.barbruh.lol上传🤔我之所以需要做此区分,而非直接用某一个替换掉另外一个,主要是由于白嫖版cloudflare单次post请求的大小最大只能是100MB,也就意味着通过upload.barbruh.lol上传的文件最大只能达到100MB,考虑到上传文件的post请求里其实还有其他玩意,最后估计文件大小比100MB少几百个字节(恼🤔所以,在没有墙的地方,比如砂糖群或者某个cuties impact群,我会直接建议他们点右边那个,通过guilded.gg上传(确信🤔

上传后的结果,我会将其处理成三种链接,一种是它服务器返回的amazon s3链接,一种是将其中一大堆常量替换成download.barbruh.lol的短链接,最后一个是替换成dl.barbruh.lol的最短链接🤔当然,我也挂上了三种可以点的链接(方便直接用复制链接地址功能复制)和三种媒体预览框🤔这样它还能非常直观地看到三种链接加载的速度,尽管我在很多手机上做了测试,不加梯子的情况下基本上只有第一个链接能正常加载(悲🤔

现在,它便乘了我那玩意的index.html,所以https://guilded.barbruh.lol,请(吴慈悲🤔和下载cdn一样,这部分我也做了好几个入口,比如https://g.barbruh.lolhttps://u.barbruh.lol,而且它们的速度其实也是不太一样的(确信🤔

到此我觉得基本上算是开发完了,如果没有什么大的功能需要添加进去,我基本上不会再改它了(确信🤔话说要不要给司马nacho做一个特别版?尽管现在封面萌妹早就从yukari chan便乘了barbruh irl,但我还是忍不住想乳怹🤔

nacho impact

行嘛,我专门给怹做了一个圣殿,不对,单独的cloudflare page域名,而且我也不放什么yukari chan图片了,直接上nacho语录(确信🤔我寻思是不是还可以搞一个标题特效,用怹的语录每秒钟轮换一次?🤔

反正无论如何,https://nachoimpact.barbruh.lol/,请(吴慈悲🤔

顺便我还学到了一样东西,叫做opengraph meta tags,它可以实现一个链接发送到discord频道后,discord显示这个链接相关的信息(确信🤔用meta property="og:xxxx" content="xxxx"标签就可以设置它们了,最常用的是title、description和image🤔

但我估计别的属性应该也是存在的,搞不好还可以用来插入一个hls视频框(确信🤔

barbruh.22.07.21

今天突然想买一个barbruh相关的域名,看见一个叫做barbruh.lol的相当生草,而且只要1.5美元,那就是它了🤔

然而信用卡根本支付不动,掏出paypal才支付完成🤔我以为这件事算vans的时候,信用卡突然扣了1.5美元🤔wiebitte?🤔

再一看我的帐号credit也多出了1.5美元,所以原来它给充credit里面了🤔有意思🤔

thonk

但由于某种申必原因,这域名注册了却添加不进cloudflare,直接访问也显示无法解析🤔看来我恐怕只能等一等了🤔

与此同时我准备找点别的乐子,比如cloudflare推出了一个全新的功能,叫做cloudflare pages,它有点像github pages,而且也许能用来部署原来部署在github pages上的静态博客什么的(确信🤔

但对我来说,它最大的用途难道不是用来放置我那guilded antics html吗?🤔

https://guildedantics.pages.dev/guildedantics,请(吴慈悲🤔

当然和之前那个从discord webhook html魔改出来的版本相比,我还是往里面添加了点东西的🤔比如它能根据上传文件的扩展名来选择两个上传api之一🤔它那个支持的文件列表我还是从guilded的网页源码里读出来的🤔

但如果上传了它不支持的文件类型(比如exe),它会怎么做呢?🤔我那个玩意的处理方法是将上传的文件便乘txt,只需要在将文件append进form对象的时候再加一个参数,指定文件名为wiebitte114514.txt即可(确信🤔

现在,这不比我用自己的vps或者discord drive托管方便多了?🤔

wiebitte

在我进一步调试这玩意的时候,我发现不同的媒体文件需要的上传api居然是不太一样的,比如视频和图片用的是upload,而音乐居然和txt、rar、zip等共用file_upload🤔wiebitte?音乐不是媒体吗?🤔没个2147483647年脑血栓绝对写不出这种脑瘫代码(恼😅

无论如何,总算改完了,而且还加了另外一样东西,根据媒体类型的不同,下载完后显示的媒体框也不同,图片的话插入一个image标签,视频的话插入一个video标签,而音乐的话自然就插入一个audio标签🤔当然,非媒体文件上传完后就不插入任何媒体标签了,提供一个链接就vans了(确信🤔

对了,现在barbruh.lol也上线了,https://guilded.barbruh.lol/antics,请(吴慈悲

话说我都很多年不玩perusona了,这个html的封面萌妹怎么还是yukari chan(半恼🤔原来这个html的第一版是我1⑨年写的啊,那没事了(确信🤔

不过说到yukari chan,或者说封面标语"k-kawaii yukari chan is my waifu! "的出处,我忍不住又想乳nacho了,我专门为怹做了一个特别版,https://guilded.barbruh.lol/antics.sarcastic,请(吴慈悲🤔

ayaya

出于某种申必原因,我还想给我这坑爹脚本做个墙内版🤔之前我们说过,让backblaze走cloudflare网络而不计下载流量的方法是将其域名写成我们在cloudflare上挂着的域名的cname记录🤔而这招对上传也好用,将media.guilded.gg挂在barbruh.lol下面之后,它现在上传也不会被墙了(确信🤔

而且我发现至少批信内置浏览器里,它上传后amazon s3的文件居然没有被墙🤔有意思,看来我干脆将这个html里的两个图重新上传到guilded里得了🤔现在,墙内也能正常使用这套玩意,https://guilded.barbruh.lol/antics.alt,还有https://guilded.barbruh.lol/antics.sarcastic.alt,请(吴慈悲🤔

thonkeqing

cloudflare居然还有转发电子邮件的申必功能,这是我做梦都没想到的🤔这么说吧,只要有一个顶级域名,现在建个站还是干啥,全程一台vps都不用买了,甚至都用不上woiden(确信🤔展示静态页面有cloudflare pages,跑动态内容有cloudflare workers,跑重型任务有github actions,存储文件完全可以白嫖discord drive和guilded drive,现在连收邮件都能用自己的其他邮箱收了🤔比如epic games,用一个域名注册114514个账号都没啥问题(确信🤔cloudflare就像几年前的vestacp一样,用一个域名收纳所有你能想象到的web服务,而且比vestacp牛批的是,它不需要一台vps来跑(🤔

我去,我刚开始玩网的时候怎么没这种好东西(全恼🤔

bruhfei.22.07.21

昨天处理了一下午图像和截图,准备在吃晚饭前运动上个半小时,结果不清楚怎么搞的便乘了公园半日游(半恼🤔毕竟车程不到20分钟(迫真)就有好几个超大的沿河公园,随便就能转好几个小时,反正回去太阳都快落了🤔当然,如果有树有河就叫公园的话,那么我家旁边也有一个公园,只不过是小型的(迫真🤔说是旁边,也得有个至少5分钟车程,没车我还是不会去的(恼🤔

这几天几乎每天都是好天气,而且更离谱的是晴天还不热,简直像是在这个月的前半个月就热完了一样(迫真🤔所以我从公园回来后还去了趟楼顶,然后发现隔壁单元顶层那几个迫真复式,居然装修上了🤔

有意思,哪个冤大头买了这几套房?🤔我赶紧去隔壁单元然后上顶层🤔好家伙,他们不仅装修完了,还住了进去,甚至还在外面摆放了一套茶具🤔

话说我上次来这儿,还是20年初🤔那时我也看上了这鬼地方,毕竟天台就是阳台的特级待遇谁不爱(恼🤔然而这个小区的房主开出了一套极其离谱的价格,由于这几个房子是复式,所以房价按照小区均价的两倍算🤔先不说这迫真复式只有4.2m高,算个锤子复式(我记得不是5m才算复式吗),恁想钱想魔怔了⑧,还2.0倍均价,恁寄吧谁啊,2.0倍为什么我不去一环买,或者去郊区买真·带别野?(全恼🤔

但到今天,如果有壬买了它们,要么是他们真的掏了两倍价格,要么是那死🐴房主在卖不出去114514年后终于改变主意了🤔当然我还是觉得后者的可能性高,这要真是前者的话也太生草了吧,这鬼地方真的值两倍吗🤔但我和这玩意基本上没啥关系了,我已经买了另外一个小区的套三🤔

现在看来,我还是挺羡慕他们的,尽管我那玩意的确是个正经套三,而且还是南北通透的那种,从功能性上比他们这傻逼户型高级2147483647倍,但他们有超大阳台啊(恼🤔一整个楼层的天台都是他们的阳台,视野180度全覆盖,更何况那还是24层那么高的阳台,空中别野了属于是,甚至比我去的那几个公园里的别野还要高级114514倍,它们有24层高吗(吴慈悲🤔除非像我今天那样跑去拍夕阳,不然根本不会有什么壬打扰他们🤔这种待遇在中修基本上算是花钱都很难买到,我知道这个也仅仅是因为我たま就住在这儿,而且我刚好有天台摄影的爱好(🤔

又让我想到我有一个初中同学,家里买的房子在四层,而那个四层由于某种申必原因阳台下面刚好有一个三层建筑,所以他们直接用那个建筑的天台延伸了他们的阳台,撸出了我估计有四五百平的超大花园🤔总之,这种待遇基本上得看运气就是了🤔

再说了,这一大片阳台也好,花园也好算是送(迫真)了,但装修费用可是不免的,尤其是那个复式,没个二三十万估计装不下来(🤔要是按照什么智能家居的思路装,再将智能whatever玩意覆盖到室外阳台去,可能就五六十万了(悲🤔我大致推测了下,我的那套玩意装完智能家居也得25万以上,当然也许我把新台式机和服务器也算进家具价格里了?🤔

thonkeqing

我突然发现cloudflare基本上只对mp4这一种格式或者某几种有限的格式的文件,才会不处理range请求头🤔举个例子,bdmv的m2ts文件就照常处理range头,无论是aria2c多线程下载还是mpv播放调进度,都可以随便搞(确信🤔

所以,我便有个大胆的想法,如果我把一个mp4视频的扩展名改成txt,或者改成m2ts,或者干脆用ffmpeg将其便乘m2ts容器得了,它是不是就能随便mpv了?🤔

另外,既然我前几天搞出了文件夹流式上传guilded drive,我们是不是可以将这套玩意扔进github actions里?比如和那个下种子用的github actions workflow联动?🤔反正我的那两台vps现在上传下载guilded不清楚为啥速度都不行,github actions搞不好会比它们快很多(确信🤔

bruhactions

草,github actions对export的实现有问题,所以split的filter参数接收不到我写的上传函数🤔那么我只能将上传的那两个函数输出为另外一个sh文件,然后再让split调用(恼🤔

但此时它就出现了另外一个问题,原来函数里写成双引号的变量在将函数内容打印成文件时居然完成了一次变量替换,便乘了空字符串,难怪它上传半天都上传不了任何东西(全恼🤔但本来guilded上传请求体里的文件名和mime type基本上就是常量,反正一个设成什么都没用,一个恒定text/plain就vans了,我反正懒得折腾什么单双引号antics了(全恼🤔替换成对应的常量后,上传完成,继而整个workflow也能跑起来了(确信🤔

最后guilded文件夹上传脚本便乘了这样,第一个参数是文件夹相对路径,会被直接传进tar,所以和tar的路径规则相同🤔第二个参数是discord webhook url,或者guilded webhook也许也是支持的,加了这个参数会将链接发到webhook对应频段,否则在屏幕上打出来:

https://cdn.discordapp.com/attachments/524633631012945922/999419432076070921/guilded_dir.sh

吴内鬼,来点sara chan:

curl -s https://cdn.discordapp.com/attachments/524633631012945922/999410468542234664/guilded_extract_dir.sh | bash /dev/stdin https://s3-us-west-2.amazonaws.com/www.guilded.gg/ContentMediaGenericFiles/560b74235ada8a46cd3dd3e0f1d175fa-Full.txt

想多线程下载的话在上述命令的后面加上-mt即可(确信🤔

没错,这玩意长得不像sara chan,但执行一遍后它真的能解压出sara chan的cosplay porn(确信🤔

finally.22.07.20

终于,我有机会压缩下截图了🤔这几天活动一个接着一个,我甚至都动用了某块300GB的垃圾2.5寸sas来存截图了(全恼🤔而且我基本上只有偶数天才会去压缩截图,所以积压到今天,恐怕压缩后这坨玩意也会超过180GB(恼🤔

看来为图省事,恐怕压缩一完成我就得准备将其上传到度盘了🤔接下来我先安排一波图像处理(迫真),后天再安排一波图像处理,应该就vans了(确信🤔

aot2thonk

话说这几天的海岛活动下来,我总是觉得它的某个bgm里的某段旋律像极了另外一款萌妹游戏的bgm,只不过我一直想不起来🤔

今天我终于想起来了,原来它是attack on titan 2的主城bgm啊(意味深🤔这可真是太草了🤔

上次玩那游戏还是1⑨年的七八月份,将近三年前了(确信🤔做梦都没想到cuties impact除了perusona外,居然还能和aot联系起来(🤔

conclusions

既然海岛活动的主线剧情部分基本上结束了,是时候写个总结了:

这次海岛活动对上次海岛活动旧地图的复用水平是相当高的,尽管活动正式开始之前,整个地图完全就是上次的地图,没有任何变化,可能也就去掉了之前的所有箱子和机关,然后填充了六个和上次基本上没啥差别的冲浪挑战(迫真🤔

但活动一开始,几个对应人物主题的岛基本上都被重新设计了一遍,添加了一系列的对应主题新机关🤔而到fischl chan和mona chan的岛时,岛内部也被挖空了,铺上了对应的内部装饰,这可真是屌寄吧爆了🤔

而在游玩形式上,重新设计的开放世界场景也和非开放世界的秘境有着非常好的联动,比如kazuha impact里能使那两个岛改变样式的玩意同时也是剧情里万叶想造盆栽需要的玩意(它的设定就是万叶造了怎样的盆栽,那两个岛就便乘什么样),就需要从岛上找,而且需要来回很多次🤔xinyan impact里也是秘境里的两个花需要浇水,我们就得去秘境外的开放世界岛上疏通水源,顺便又玩了一次拿岛奏乐,甚至奏乐cg也又放了一遍,和上次活动一毛一样,感觉这复用的东西有点多啊(半恼🤔

剩下两个impact就不找东西塞进秘境了,外面的东西直接就是进入秘境不同部分的方式(确信🤔总之,它们都强调秘境和秘境外主题岛的多次互动(确信🤔

而在主线剧情结束后,这些玩意还有大量的内容等着玩,比如kazuha impact的主题岛两边各有三种样式,差不多意味着能雷普三次🤔xinyan impact岛也能变换至少一次样式,也就意味着至少有两种岛等着雷普🤔而fischl impact岛里有大量由鸟组成的支线剧情,mona impact岛我主线完成后没进去过,但估计也差不多(确信🤔

在主题岛和剧情之外,这个活动的内容就不多了,上次活动中各种相对隐藏的玩意基本上被彻底移除了,比如离几个岛都极其远的宝箱和海螺,还有什么qq壬壁画啥的(确信🤔还有什么稻妻海盗船碎片之类的,现在基本上只剩一个模型了🤔取而代之的是愚人众主题海螺收集,数量貌似也变少了(🤔我现在已经搜集了20个海螺里的17个,还有一个在mona chan的秘境里,但如果剩下两个也像上次一样藏在极其阴间的位置的话,其实也没什么奇怪的(确信🤔等等,是不是在愚人众主题岛上?那个地方我还没怎么去过🤔

albedo貌似在xinyan impact岛的某个内部空间里留下了点东西,万叶貌似认识albedo(因为他们在2.6的稻妻文化节里貌似见过面),mona chan和fischl chan自不用说,但辛焱貌似不认识🤔但很难说琴酱、barbruh、diluc和razor有没有留下什么🤔另外在上次活动的最后一个岛,也是这次活动的第一个岛上,有个上次活动的彩蛋,几个qq壬围着上次活动用来扔球进去的圈跳舞🤔话说上次活动的道具我的大号可是有的,小号也可以在蒙德以高达25万mora的价格买,我好奇要是往里面扔个球进去的话,会发生什么,一个箱子突然出现?🤔

pttime r18

草,终于可以上pttime的r18区了🤔里面还是有点有意思的资源的,比如sakimichan全集啥的🤔

顺便,我发现搜书盘上传速度实在是太屑,所以我又想折腾guilded drive了🤔但这次我们上传的是一个含有几百个文件的文件夹🤔

但此时我们还是可以流式处理这坨玩意的,因为linux里面的打包工具tar也是支持流式处理的,将其管道到guilded流式上传函数里就vans了🤔接下来,我们就可以看到极其生草的景象了(如果打开tar的-v选项的话),tar刚打包了几个文件,curl就开始了上传,然后tar接着打包文件,然后curl接着上传🤔这不比先压缩成rar再上传搜书盘好使114514倍?🤔

其实搜书盘的上传脚本也许也能改造成流式上传,反正它上传的时候也是一个一个一个一个片段上传的啊啊啊啊啊🤔拉寄吧倒⑧,搜书盘上传时需要明确指定文件大小,上传到那个大小之后才能完成上传,根本别想流式上传,因为流式上传不可能知道stdin输进去的东西到底有多少(确信🤔

tar解包的时候也支持流式解包,换句话说,它不会等所有包都下下来之后才解,而是边下边解(确信🤔但这么搞有一个问题,它对网络的稳定性要求还是比较高的,如果网有点问题,导致curl的某个包下载中断了,那么这个包相关的所有文件都要寄(恼🤔貌似加什么timeout和retry也没有什么卵用,至少对梯子断连没有什么卵用🤔再说了,这样单线程下载,速度也不会很快,我好几个梯子都只有10MB/s🤔

所以,这玩意其实和下载dd镜像一样,也可以搞成多线程,只不过会占据一份临时空间罢了🤔所有文件片段下载完成后,它也可以流式tar解包,甚至可以一边解包一边删片段,如果需要的话(确信🤔

usbitte

开始做图像处理(迫真)了,读卡器插usb扩展卡上,居然一点反应都没有,重启和换接口都没啥用🤔

看来,这说明这狗逼扩展卡彻底坏掉了🤔现在无论我愿意与否,我也只能将读卡器插在主板内置usb口上了🤔

我记得几年前我将所有东西挪出主板内置口,就是因为那玩意在图像处理(迫真)的时候checksum对应不上(恼🤔但那时我的电源还是那个垃圾玩意,现在我换电源了,问题应该会好很多(迫真🤔

但既然如此,那个屑usb扩展卡以pcie x2占据x16的日子也大概结束了⑧,通往pcie拆分的王道征途(大嘘)也随之开启(确信🤔只不过我现在没啥兴趣而已🤔