bruhfei.22.10.22

一夜过后,才发现昨天晚上在笔记本上跑rclone的时候,居然忘了将新建的sharepoint site的rclone配置文件参数给复制过去,现在好了,只有原来那个sharepoint site对应的文件夹上传上去了,剩下的都没有上传,基本上空置了4个小时(全恼🤔

好在它们上传得挺快的,255分钟上传了161.36GB东西,平均下来应该是10.80MB/s,与此同时度盘用了264.5分钟,它居然超过了度盘,不错🤔看来在我一顿迫真调参后,它被优化得不错,而度盘上传从某种程度上说还受限于将文件挪到内存盘这个无法忽略不计的overhead(悲🤔

其实昨天晚上上传另外一坨文件的时候,临时决定还是塞满sharepoint site为好,所以最后没有把所有东西都上传到新sharepoint site里面,而是把一个文件夹塞进了旧的里面,剩下的都塞进新的,甚至以后如果新生成了什么东西也先塞进那个里面,然后再塞进第三个site(我一晚上创建了6个🤔当然我极其尴尬地发现这些剩余的东西也比pe4010的可用空间大100GB左右,所以我这么做也可以实现上传完旧sharepoint site之后直接删掉那个161GB的文件夹,然后将最后100GB东西复制进去,接下来可以一条命令撸到底(确信🤔

为了实现这个目标,我写了一个临时函数,将两条rclone命令加了进去,然后对这个函数进行计时🤔当然每条rclone也可以设置计时,但我原计划是在第二个rclone上传的间隙,停止整个函数的运行,然后做删文件并复制新文件的事情,然后继续跑这个函数🤔现在看来,我不需要这么做了,直接跑第二条rclone就vans了🤔

barbruh

上传过程中居然出现了三次错误,而且我以前从来没见过这种错误:它提示文件在上传的过程中被修改过,所以取消了上传🤔

这个可能有两种意思,一种意思是源文件被修改过,这个很明显不大可能发生,毕竟我只是挂那儿上传,而非对其进行写入,而且哪怕这个固态真的中途出了点什么申必故障,它应该也不会被rclone感知到,比如修改日期发生了变化🤔以我面对故障固态的迫真经验,它什么metadata都不会变,只不过文件中间的一部分便乘了全0(确信🤔

另外一种意思是指onedrive上面的文件分片被修改过,至少我在网上查到的几例是这样,它们有rclone上传的,也有直接操作graph api上传的,反正解决方案全都是重试一遍就vans了🤔

那好,我就重试一遍,或者说我也不用手动重试,rclone上传完别的文件后会自动重试一遍出错的文件,并再次检查下别的文件(确信🤔但它上传完成后我还会再检查一遍,并保存下检查记录🤔

反正无论如何我应该能保证它全传了上去(确信🤔

thonk

现在有个问题,假设pe4010有可能出现故障,我如何规避它?🤔

一种方案是将8GB包复制到pe4010上时,再复制一份副本到我认为可靠的存储媒体上,比如那些2.5寸sas盘,然后在那些盘上跑checksum🤔至于在线文件的checksum,至少我的discord drive脚本会计算它的sha512,并以这个值作为分片文件的文件名,所以应该是比较好查的(确信🤔

还有一种方案,直接弃用pe4010,然后用一块1TB左右的2.5寸硬盘来上传🤔当然机械硬盘多线程上传其实效果不是很好,而且还有一个问题,那是台笔记本,它可能会出现供电问题🤔便宜而且性能好的2.5寸sas肯定用不了,别的2.5寸机械硬盘性能都不怎么样(恼🤔

thonkdrive test.22.10.21

这次onedrive上传的试验非常顺利,尽管中途换了一次机子(由于笔记本要拿出去用),我还是在1342分钟完成了693.37GB文件的上传🤔为什么不是800GB,可能pe4010上面放的koitatu sunshine我暂时还不想删了🤔

这么算下来平均速度大概是8.82MB/s,我查下那些文件夹的度盘上传记录,,,1140.5分钟,看来比度盘居然只多出了201.5分钟,也就是三个多小时,或者说17.6%🤔考虑到上传onedrive之后比度盘多出114514倍的好处,这点代价还真不算什么(迫真🤔

而我比较关心的功耗方面,不连parsec的情况下基本上在32W左右,连上parsec也不会超过50W,反正比x79省电多了就是了(确信🤔再说了,除了输命令和偶尔查看进度之外,我也不会闲得蛋疼连parsec,所以功耗就按照32W算得了(半恼🤔

thonk

目前看来,onedrive上传能够调的参数也只有两个,一个是同时上传文件的数量,另外一个是分片大小🤔它基本上可以对应上pcs-go的线程数和分片大小这两个参数(确信🤔

那么调参也许可以参照pcs-go,设置16个或者32个文件同时上传,然后分片调小一点(迫真🤔但最后我没这么搞,我还是按照onedrive的习惯撸了10个文件和80MB分片🤔

它这玩意的速度曲线基本上在分片上传即将完成和下一个分片开始上传之间会有一个肉眼可见的波谷,导致其并不像pcs-go一样能绝对用完所有上传带宽,当然这玩意在guilded上传脚本和某种类型的guilded多线程下载脚本里也能观测到🤔通过调高分片大小和同时上传的文件数,也许可以降低波谷出现的次数(确信🤔但同时上传的文件数也不能太多了,我现在设置了10个文件,每个文件已经需要两小时才能完成上传了,考虑到它没有文件内的断点续传功能,我可能得每两小时才有一次挪机器的机会(半恼🤔

但无论如何,我算是完成了一次上传,以后再做这样的上传时,至少我有点迫真经验了🤔

thonkeqing

除此之外我还撸了一个3块钱12GB(永久流量)的所谓高级梯子,用来跑parsec🤔笔记本肯定还是该用什么用什么,毕竟我可以随便换节点,但家里的梯子我在外面没法随便换,所以只能用一个绝对稳定的(恼🤔

thonkdrive.22.10.20

在我114514秒的迫真尝试之后,度盘解析脚本可以说是正式寄了(悲🤔

既然如此,我那边积压了1.5TB左右的8GB包恐怕得换种方式上传(到discord drive)了🤔比如,先上传到onedrive上?🤔

那么我前几个月买的超大号pe4010固态u盘就可以用上了🤔至少目前我可以先把那几块2.5寸sas硬盘上的玩意复制到pe4010里,然后插某台笔记本上,直接一句rclone,vans🤔

到时候就相当于这些文件已经有了一份onedrive在线副本,接下来当然是将其下载到vps上或者github actions机子上,再上传到剩下几个drive(确信🤔

thonkeqing

现在看来,不仅这些文件可以这么处理,以后再产生新的8GB压缩包文件都可以这么处理(确信🤔

毕竟我现在的迫真存储降级就是要将8GB包上传到尽可能多的在线存储上,而我肯定不会将它们一个一个一个一个都从本地上传一遍啊啊啊啊啊,肯定是先上传到某一个在线存储里,然后再从这个在线存储下载到vps或者github actions机子上,再重新上传到别处🤔

只不过由于度盘解析脚本彻底完蛋,度盘已经没法继续作为这些文件在线上的第一站(迫真)存在了,所以现在这件事得onedrive去干(确信🤔

从某种程度上来说,onedrive由于没法多线程上传,它的上传api限定了只能一个一个一个一个分片依次上传啊啊啊啊啊,所以哪怕用vps上传,它的上传速度也慢到难以忍受(恼🤔然而如果从本地开始上传onedrive的话,它的上传速度(可能存在的)上限又比本地快,而且本地可以设置4个乃至8个文件同时上传,能随便用完上传带宽(确信🤔

而且onedrive上传搞起来比度盘上传很明显方便不少,用不着什么定制脚本先将rar复制到内存盘再去上传,直接一条rclone的事情,十个甚至⑨个小时之后,那些文件就会出现在onedrive上(确信🤔

那么既然现在开始直接上传了,很明显将这些8GB包放置在机械硬盘里面不再是什么好主意,再说了,2.5寸sas硬盘只能用我那台x79台式机上传,那玩意功耗还是太大了,最少也得有个100W(恼🤔相比之下,我要是把文件放进pe4010里然后插笔记本上传onedrive,最多也就50W,甚至有可能只用掉30W,耗电直接砍掉一半(确信🤔

更进一步,如果我要把8GB包放pe4010里上传,以后甚至都用不着本地的两块固态暂存8GB包,在制作它们的时候就直接写入到pe4010里(确信🤔当然也许我也用不着这么做,反正原来的流程里占时间大头的也是原文件写入到另外一块机械硬盘,而非8GB包写入到pe4010🤔我到时候再看用哪种方式更方便些🤔

那么非常有可能以后保存数据的流程是每次备份数据的时候,将数据的量控制到900GB甚至800GB左右,写入pe4010里面,然后在onedrive上新建一个sharepoint site放置这块固态里面的所有内容,不多也不少(确信🤔再给它整一个oneindex,像度盘解析脚本一样生成下载onedrive的aria2c命令文件,然后扔进github actions里上传,可以使用原来的度盘转discord drive脚本(只不过链接是oneindex链接),也可以到时候撸一个新脚本🤔以这种方式,我基本上可以最大限度地减少人工干预环节(确信🤔

现在基本上只剩一个问题了:github actions机子上传度盘的速度如何?我可能需要评估下这个(恼🤔如果上传度盘快的话我可以用github actions上传度盘,不然恐怕我只能本地再上传一遍了(全恼🤔

barbruh.22.10.14

难以想象我又一次接近deadline impact了(恼🤔到今天三个小号的蒙德版本活动才打完一个🤔

但从乐观(迫真)的角度来看,打完一个号的版本活动总共需要花的时间居然比我预期的要少很多,那三个又臭又长的主线只需要完成第一个就可以了,这部分大概需要花两小时🤔之后就可以玩各种各样的挑战任务了,这部分全打完应该只需要最多四小时,运气好点只需要三小时半,反正我花了三个小时基本上打得只剩下连续打五处怪这种玩意,中间的路途会生成一大堆气流和推力环(忘了叫什么了),去年的雪山活动里也出现过,应该半小时就能搞定(确信🤔

这周貌似还剩三天时间,剩下两个号应该能一天搞完一个,至于最后一天,也许可以用来将剩下两个主线也撸完🤔但我记得这两个主线不玩它们也能撸满武器精炼材料,而且貌似也没有送任何绝版装饰或者诸如此类的东西🤔所以它们的优先级也许可以调低一点,实在是没时间完成了也没关系(确信🤔

thonk

今天那四个esp-01烧录器也到了,随便取出一个用,这次它能烧录esp-01s了(确信🤔那接下来就不用多说了,将前几天写好的程序灌进去,再插上温湿度传感器模组,接好供电,另外一个discord频道也出现了消息🤔

但貌似温湿度并没有显示出来🤔原来我搞错了io接口的编号,这部分改完后终于出现了温湿度数值,只不过它们和我之前那个discord温湿度计的值相差很大🤔我估计dht11作为传感器搞不好真的只能图一乐,真测温湿度还得看aht20(半恼🤔

接下来一件非常生草的事情发生了,我调试的时候将其再次插入了之前那个不能烧录的无按键烧录器上,它居然能接收到esp-01s串口发送的信息,这可能说明它不能用来烧录的原因是它从设计上就不能将esp-01s切换成烧录模式,或者它切换的功能出了故障🤔

这件事就算彻底搞完了,接下来我又买了两个esp8266玩具,反正这种东西一个才不到10块钱,就当玩具买了(迫真🤔一个什么机智云,貌似和esp-01s一样都是一家叫做安信可的厂子出的,主打低代码(大嘘)编程,不需要刷固件,原厂固件只需要写点逻辑代码就能在手机上遥控智能家居啥的,可以认为是个定制版米家(迫真🤔但从硬件来说,它最大的亮点是esp板和usb转ttl板分离,编程的时候把它们组合成一个板子,跑的时候只需要给esp板插上供电就vans了(确信🤔它还集成一个rgb led,和一个红外发射器,改造成远程空调遥控器的可能性微存?反正肯定比米家的那个蓝牙红外网关便宜得多就是了(确信🤔

我听说安信可原装的esp-01s貌似也能使用什么低代码固件,但我估计这些玩具拿到手不都得先刷个micropython,或者直接上arduino ide?🤔

除此之外我还买了个什么d1 uno r3,就是上次说的那个外观模仿arduino uno r3的玩意🤔不清楚买这个图啥,可能是图它有一个dc输入,这样也许我可以把之前写的discord温湿度计移植到上面,然后随便找个12V电源插上去,免得它占用usb口了🤔当然也有可能我有别的迫真智能家居项目,比如在阳台乃至室外也设置一个温湿度监测站🤔

话说真arduino现在还要三四十块钱,和我上大学的时候一样贵🤔当然说贵也不至于,那时更贵的有gpio功能的单片机是树莓派🤔不清楚那时有没有esp8266这种玩意,但当它出了的时候,不仅同样外观的开发板价格是arduino的三分之一,它还有远超atmega芯片的处理速度、ram和存储,甚至可以实现一部分树莓派的功能,比如几乎所有需要联网的任务🤔怎么说呢,国产芯片就是牛批(吴慈悲🤔

另外一方面,esp8266也是米家几乎所有迫真智能家居产品的核心,也是为什么那些能联网远程遥控的电饭锅啥的卖那么便宜,没有esp8266我估计就没有什么米家(确信🤔

当然,还是那句话,模拟usb hid的功能除外,但能模拟usb hid的arduino再怎么说也是装有atmega32u4的arduino leonardo,而非装有atmega328p的arduino uno,后者和esp8266一样仍然需要串口转ttl,所以说esp8266能完全替代arduino uno r3一点问题都没有(迫真🤔话说什么时候模拟usb hid的微控制器也来一个国产替代罢,我已经等不及了(大嘘🤔其实luat的air系列板子貌似就支持模拟usb hid,但目前支持的功能比较少,只支持模拟键盘输入可见字符,反正amber速射肯定是不行了(恼🤔

thonk2

刚又迫真研究了下,现在使用atmega32u4的开发板,最便宜的到了24.20,反正比我去年买的时候价格便宜了不少,那时至少得30🤔它还有一个更小的usb-a板子,可以不用数据线直接插进机子里的那种,牌子貌似叫cjmcu,不带tf卡槽的版本34,带tf卡槽的版本45🤔这些玩意我就不买了,它们还是比esp8266玩具贵多了(大嘘🤔

另外树莓派貌似出了一个叫做rp2040的mcu,定位貌似和atmega32u4差不多,也是usb直连芯片,所以也存在能用来模拟usb的可能性(确信🤔最主要的是它的价格比atmega32u4便宜多了,裸芯片只要5块钱,基本上和什么esp8266、luat air一个价,而做成的开发板好像也只要16还是17来着🤔但它的话问题是没法用arduino ide编程,这可能会成为一个问题(半恼🤔

bruhfei.22.10.12

现在我前几天买的另外一批单片机玩意也到了,这次到了一个s2 mini,也就是那个最便宜的esp32板子,一些配件,还有一个玩具一般的esp-01s和esp-01s烧录器还是啥玩意来着🤔

极其生草的是esp-01s居然连一个单独的静电袋子都没有,导致我还以为他们没有给我发,直到我开始收拾包装时才发现它夹在里面(恼🤔接下来离奇的事情发生了,我都写好了程序,然后照常插上去刷机了,结果那玩意死活连接超时,而且用了114514个烧录程序,都连接超时🤔

这就有意思了,是烧录器坏了,还是esp-01s坏了?在它里面没有写入什么正经程序的情况下我完全无法确定,所以最后只有一个结论:两个玩意我都得重新买一遍(全恼🤔

这次我应该不会买什么两块多钱的无按键ch340烧录器了,那么还有什么esp-01烧录器可选?我目前看到的有四种型号,电路板好像都一毛一样,带有一个8pin插槽,一个引出来的8pin用来插跳线,还有一个reset按键,根据其usb转串口芯片不同,分为cp2104、cp2102、ch9012以及ch340四种🤔其中cp2104被称为所谓的原版,别的是不是在它的基础上换掉了usb转串口芯片?🤔价格方面,cp2104版是14.5,cp2012版是8.5,ch9012版6.7,而ch340版最便宜,只要4.6🤔反正我在两家店把四个芯片版本的烧录器都买了一遍,顺便还买了两个新的esp-01s,我就不信这次它还不能跑起来(🤔

我估摸着这些带有reset按键的版本也许可以用来随便刷机,而我现在有的无按键版本可能需要短接几条跳线啥的🤔我懒得折腾了,等那些玩意都到了再说🤔

thonkeqing

在寻求最便宜(大嘘)的esp-01烧录器还有usb转ttl的过程中,我发现了一大堆东西免邮费的店铺🤔某宝的价格排序功能向来没什么卵用,但在我找些单片机玩意的时候由于某种申必原因居然又能照常排序了,而且免邮的被排在了前面🤔然后发现什么d1 mini什么s2 mini,甚至包括我以前用过的nodemcu,全都是一个叫做wemos的厂子做的🤔不太清楚wemos到底是个品牌,还是个开源硬件项目,反正搜wemos就能出来什么d1 mini还是d1来着🤔而且更有意思的是,有时候它也会用到一个叫做lolin的品牌名,但基本上wemos和lolin是一个意思,甚至在pcb板上也一会儿印着wemos一会儿印着lolin(迫真🤔

wemos现在有一个官网,但lolin没有,到现在我甚至查不到它背后的实体,到底是哪国公司,实在是太申必了🤔

无论如何,它目前在卖的产品倒是可以查到的,都有下面几个:

  • d1系列:
    • d1 uno r3,提供了一个dc输入,layout迫真模仿arduino uno,据说可以和arduino uno外设实现114514%兼容(当然模拟usb hid它是做不到的,因为esp系列的usb都是usb转串口,而非像arduino一样主控本身提供usb功能),本质上是esp-12外加pcb,价格大概在12左右
    • d1 uno r32,基本上相当于将上面那个的esp8266模块换成了esp32模块,18
    • d1还有一个18650电池款,顾名思义可以用18650供电(也许还能充电),21.6
    • 它也有esp32模块版,价格达到了离谱的34.7
    • d1 esp32,看上去和下面的d32使用了同款esp32模块,但layout完全不一样,而且官网没有这玩意,但它既然叫做d1-esp32了我就暂且先放这里,23.3
  • d1 mini系列:
    • d1 mini v1,本质上是esp-12外加pcb,8.75
    • d1 mini v3,esp8266ex芯片裸露放置,目前我的discord温湿度计就跑在它上面,9.3
    • 另外nodemcu系列的esp8266板子也和wemos有关,简直就像d1 mini v3换了一个layout,价格也是9.3,它还有一个esp32版,13.3
    • d1 mini v4,改成了typec,而且加上了一个i2c接口,也许可以将aht20直接用i2c线接上去,9.6
    • d1 mini pro,接口非常全,既有i2c也有电池接口,有16MB的rom可选,而且除了内置天线外还可以外接ipex天线,然后再去转sma,21
    • d1 mini lite,使用了esp8295(esp8266+板载1MB rom),基本上没什么人买,13(还要加运费
  • d32系列:使用了esp32模块的板子,甚至有16MB rom版本,国内无货(恼
  • s2系列:使用了ESP32-S2FN4R2,顺便一提这个版本的esp32是没有蓝牙的
    • s2 mini,基本上可以视为d1 mini v4的esp32版,引出的接口比d1 mini多出了一排,没有单独的i2c接口,但多出了一个io按键,什么价格都有,甚至都有一个11.45的,你是一个、一个一个一个一个esp32啊啊啊啊啊(错乱
    • s2 pico,带一个oled屏幕外加i2c,价格非常离谱,至少40(仍然比m5stick便宜
  • c3系列:使用了ESP32-C3FH4,板载一个rgb灯,国内基本上买不到,其实最便宜的esp32-c3可以去买luat的,但有人反映那玩意没法上arduino ide它只有所谓的简约版不能用arduino ide,因为它砍掉了usb转ttl,那么问题来了,在没有usb转ttl的情况下它是用什么申必方式往里面烧录程序的?esp32-c3支持模拟usb hid的可能性微存?(大嘘
  • s3系列:使用了ESP32-S3-WROOM-1,有两个typec接口,国内尽管买不到这个牌子的,但貌似可以买到和它layout一毛一样的玩意,价格在45到59之间

wiebitte

https://www.esp32.com/viewtopic.php?t=24092

什么?esp-s2和esp-s3可以模拟usb hid(如果它们的开发板没有用usb转ttl来实现usb的话,很不幸的是至少我有的esp32板子都不是这样),而esp-c3的usb功能只能用来烧录程序和调试?wiebitte?🤔

但至少esp32-c3同时支持用串口和usb烧录程序,所以这样也就解释了luat的esp32-c3板子为什么在没有usb转ttl的情况下仍然能烧录程序了(确信🤔生草的是它的usb相关功能用的是gpio18和gpio1⑨,所以我估计在那个板子上那两个gpio要么直接连着板载usb接口,要么在连接板载usb接口的时候也引出了,但至少在调试时是没法用来处理io的🤔

所以到目前用esp32板子(无论是哪种版本,c3、s2还是更贵的s3)来模拟usb hid或者任何hid是别想了(悲🤔除非掏出两个gpio口来模拟一整套usb协议(可能还要涉及一些焊接啊,电路啊等玩意),但这样的话其实esp8266就能搞定🤔当然还有一种方案是用esp32(s2之外型号)的蓝牙功能来模拟蓝牙键盘鼠标,我在m5stick上撸了一个模拟键盘的,但出于某种申必原因它不支持同时模拟鼠标和键盘,而且还存在不可忽略的丢键现象,很明显不是什么适合用来搞速射amber的选项(恼🤔再说了,arduino ide编译和烧录esp系列固件的速度实在是太寄吧慢,而编译和烧录atmega32u4固件的速度就快多了,所以最后我还是用atmega32u4搞了速射amber🤔

espAYAYA.22.10.10

今天两个版本的d1 mini,还有aht20温湿度传感器都到了🤔我可以先拿v3随便写点玩意,比如arduino ide里面自带一个http示例程序,我可以先往discord频道里发点消息🤔

由于显而易见的原因,在esp8266里使用https是非常困难的,要么得把目标网站的证书指纹提取出来硬编码进代码,要么得套用什么什么框架,要么直接使用setInsecure()不安全地连接🤔我肯定选用了最后一个,毕竟我只是要发送一些温湿度数据上去,甚至都不指望它回复什么东西🤔

好,那我就用之前在cloudflare workers上设置的discord反向代理,几秒钟后discord聊天室里出现了一条新消息,不错,这不是从我的某台电脑或者手机发出来的,而是从一块可能只有10块甚至⑨块钱的esp8266儿童玩具发出来的(确信🤔

接下来我需要将aht20和esp8266相连,并使用某种代码从里面读数据🤔它的示例代码并没有地方设置针脚,所以我估计只能按照它的默认针脚连了(悲🤔而且理论上来说我买的玩意可以同时测温湿度和气压,但我只找到读温湿度的代码,那就先跑它那个示例,不错,温湿度都从串口输出里读出了🤔

接下来我只需要将这两个代码缝合在一起了(确信🤔现在有一个问题,它那个代码里字符串和温湿度是陆续打印到串口输出里,但我要是想把它们post到discord webhook上的话,我得将其合并成一个字符串,此时它就开始报类型错误了,字符串和浮点数没法合并(恼🤔

这玩意貌似是c还是c++来着,c的话使用sprintf构造字符串,结果它的http.post()里面接受的是一个String对象,不是char*(全恼🤔更离谱的是它这里用的是一个叫做String的应该是自创的字符串对象,S是大写,不是std::string,要是自作主张地使用std字符串相关函数,肯定得吃一个类型转换不动的错误(恼🤔比如浮点数转字符串部分,std::tostring肯定是用不了的,极其生草的是它居然提供了一个叫做String(114.514, 3)的函数来将传感器读出来的浮点数转换成String对象,就にま离谱(半恼🤔

反正无论如何,现在discord聊天室里终于打出了当前的温湿度,至此discord温湿度计正式搞完了,拔下来随便找个充电器插上,我就可以将其放什么鬼地方24小时监测室温了(确信🤔discord聊天室刚好可以用来做数据记录,时间戳都能记录下来,哪天我要是想画曲线图啥的,直接将discord频道的内容拖下来做处理就vans了(确信🤔

bruh

但现在这玩意有一个非常严重的问题,每次http请求的时间实在是太たま长了(全恼🤔具体来说,我给那段程序加了一个新功能,它开始发送http请求之前开始亮灯,发送完http请求之后停止亮灯,这样理论上来说每次发送http请求时会闪烁一下(确信🤔但我观察到的是,每次亮灯居然长达七八秒,哪怕我设置的采样和发送请求间隔是两秒,discord那边也得十多秒才能收到一条消息(恼🤔

我无端猜测导致它发送http请求时间如此之长的因素,无非两点:

  • 本来往cloudflare的服务器发送请求,然后再由cloudflare workers处理下发往discord,再接收返回,就是个非常耗时的过程

  • https带来了额外开销

前者基本上被否定了,因为我本机不上梯子发送一个https post请求,也就用了平均1.3s,远远低于esp8266的表现🤔如果是http的话只有0.6s,这两个时间都不算很长(迫真🤔

所以我无端猜测绝对是https拖了后腿🤔具体来说,一次非保持连接的https请求对应的tcp请求貌似是http请求的三倍啊三倍左右,相比之下https带来的额外计算开销反而可以忽略不计(迫真🤔

既然如此,那么cloudflare可以改成支持http,换句话说把什么always https给关了,这样以http方式向cloudflare发送请求时不会302跳转https了(确信🤔

接下来esp8266上的程序也得改,除了网址去掉s外,创建http客户端对象啥的需要用另外一个类,不然的话http请求会发不出去(恼🤔我无端猜测,这两个类发出的http请求搞不好连端口号都不一样,所以不能混用🤔

改完后它每次亮灯基本上不超过一秒,尽管仍然比较长,但至少可以忍受了(迫真🤔现在,也许我设置的采样和发送间隔这个数字变得真正有意义起来,我可以设置一个比如五秒或者11.4514秒的时间,然后扔一边去了(确信🤔

espthonk.22.10.08

凌晨几点突然停电了,出门一看从楼道灯到电梯到电表,所有东西都没电(全恼🤔看来只能先去睡觉了🤔

一觉起来恢复了供电,客厅灯被开到了最大功率,大概是这个原因导致我醒来的(迫真🤔既然如此,那就重新开始压缩截图⑧🤔

神奇的是哪怕路由器啥的重启了一遍,我的破宽带仍然可以达到接近400Mbps的下载速度,它不是说只有⑨月份有提速,这个月就要恢复原来的速度吗,现在应该早就过10月账单日了🤔无论如何,我应该可以再爽几天(确信🤔

thonkeqing

接下来突然想给房间里装个智能(迫真)温湿度计啥的🤔而且作为迫真智能家居的一部分,它当然得实现记录温湿度的功能,所以恐怕我得自己写一个了(恼🤔

这玩意还是比较简单(迫真)的,买个什么dht11/dht22温湿度传感器,然后再买个esp8266,随便找个固件刷上去(比如micropython,并将其设置成局域网设备),设置好定时发送的api接口(比如discord webhook url),vans🤔而且能买到的dht11传感器还做成了适配esp-01的形状,esp-01用的串口座子都安上去了,直接插上esp-01即可(确信🤔它唯一的缺点是获取的温湿度数据有两秒的延迟,但这没什么大问题(迫真🤔

我听说还有一种更先进的温湿度传感器,叫做aht20,它能实时获取数据,而且用的是i2c接口,换句话说只占用一个io(确信🤔但我没找到适配esp-01的型号,意味着想驱动它就得整一个引出了所有io的esp8266或者esp32开发板🤔

现在这样的板子已经有114514种了,但我想找最便宜的版本🤔8266最便宜的版本仍然是nodemcu v3🤔稍微贵一点的是一个叫做d1 mini的板子,体积比nodemcu小一点,现在有三个版本,v1是焊接了esp8266模块的电路板,v3是将芯片直接放在主板上的版本,v4是v3的typec版(貌似还多了一个电池接口),但现在基本上找不到有货的(恼🤔由于某种申必原因,d1 mini有一大堆外形适配它的配件,从显示屏到tf扩展到锂电池,堪比廉价版m5stack(大嘘🤔

而esp32这边,最便宜的是d1 mini的esp32版本,叫做s2 mini🤔外观和d1 mini基本上完全一样,只不过由于esp32的io比esp8266多,外面引出的io直接便乘了两排,就非常牛批🤔

其实和两年前相比,这些小型玩具价格都没怎么变过,但由于某种申必原因,ttgo和m5stack都涨价了,ttgo带屏幕的esp32我买的时候只要38,现在涨到了70,有的店甚至涨到了100,而m5就更不用说了(恼🤔

barbruh

话说某个既卖d1 mini又卖s2 mini的卖家那里,d1 mini的两个版本都没货(恼🤔所以最后一顿迫真扯皮后,我在这里买了s2 mini和一大堆配件,在另外一个地方买了d1 mini v3🤔某宝买电子产品真寄吧费劲,当然我估计某fisch可能会更费劲🤔

bruhfei

拉寄吧倒⑧,我还是去之前看的那家买了个d1 mini v4,也许我的s2 mini也应该在那家买,这样说不定我就不用像之前那样扯皮了(恼🤔现在看来这就是个不到10块钱的玩具,我懒得关心它要多少邮费,也懒得关心我是不是一不小心把v3和v4都买了一遍🤔反正下次买这种东西之前我还是先问下有没有库存再说(🤔

barbruh.22.10.04

草神的完整技能视频终于放出来了,照例将其上传到discord上,然后发现它居然超过了50MB(悲🤔本能反应打开nacho impact(大嘘)开始上传,然后突然意识到guilded现在需要加上cookies才能正常上传,所以那个html得魔改一下🤔

但在使用xhr.setRequestHeader加cookies请求头后,它上传仍然报错未登录,而且观察请求时发现它也没有加上任何cookies头🤔查了一顿发现貌似setRequestHeader压根就不支持加cookies头,按照所谓的w3c规范,cookies这样的请求头只能由浏览器生成和控制,js脚本并没有权限(恼🤔而在给浏览器塞cookies方面,我尝试了写入document.cookie,但请求头里仍然没有出现cookies,不仅如此,浏览器的存储选项卡里也没找到写入后的cookies🤔再说了,guilded的cookies作用域还得设成什么guilded.gg,而且如果用我的存放在别的乱七八糟地方的html操纵这些cookies的话还得涉及什么跨站请求乱七八糟的,不折腾了(恼🤔

那么为了实现上传过程中带cookies,现在我恐怕只能尝试中转方案了🤔也许我可以使用cloudflare workers来搞这个,就像我搞什么nitro delegation一样,但既然我可以在pikapod的wp-content里面跑oneindex,那么我是不是可以拿php来写一个透传post请求,但只是给请求塞进去cookies请求头的玩意?🤔通过它我基本上可以实现html该怎样还是怎样,用户也能直接上传东西,而我也不用担心什么cookies泄露或者需要用户提供guilded cookies这种蛋疼的事情了🤔而且这样可能还有额外的好处,pikapod的wp容器可以将上传限制调到比如1GB,所以和借助cloudflare不同,它还能支持到上传500MB文件(确信🤔

问题是我上次写php玩意大概还是我上大学的时候,现在我早就忘了php怎么用了,更别说写一个php版curl玩意了(恼🤔

bruhfei

现在php里获取post请求原始数据的方式是file_get_contents(php://input)(又有一说是php://stdin或者常量STDIN,但我没尝试成功过)🤔接下来可能需要在php.ini里(当然对于pikapod的wp容器来说,upload.ini就是php.ini换了个叫法)加一行enable_post_data_reading = Off才能在content-type被设为multipart/form-data的时候用php://input读post请求原始数据🤔php当然也可以获取所有请求头,并在里面加入cookies项,但当我尝试将它们按照原样塞进php的curl函数里面并发送出去时,guilded返回了一个400错误,意思是我没有提供上传的文件,wiebitte?🤔

最后改了114514遍后,基本上确定问题出在哪儿了:全盘照搬发往php的请求头肯定不可取,但我懒得排查哪个请求头导致了问题,我现在基本上只知道它那么多请求头里只有一个content-type是绝对必要的,因为它里面包括了一个叫做boundary的参数,和请求体里分段的boundary得能对上🤔只需要在所有请求头里筛选出content-type,然后再加上cookies(如果愿意的话这里还可以再加一大堆请求头,什么user-agent之类的,但我不加它也能上传,那我就懒得加了,除非哪天它改版了需要这些玩意),再加上原封不动的请求体,此时再发出请求,它终于可以返回guilded链接了(悲🤔

最后还有一个巨坑,php的响应输出是响应头和响应体不分,和cgi-bin(或者说curl -i)一个德性,但和cgi-bin不一样的是它做不到直接将这坨玩意echo出去就能构成整个(返回给浏览器的)响应了,还得手动设置好响应头🤔而且更神奇的是我找了114514个办法都没法将响应头和响应体分开,所以最后我只能在这坨玩意里取最后一行作为响应体echo出来,并设置一个固定的响应头Content-type: application/json了(恼🤔

吴内鬼,来点k-kawaii nahida chan:

thonk

使用pikapod中转的好处当然是大小没有什么死🐴100MB限制,而且也用不着注册什么顶级域名🤔缺陷也是存在的,上传稍大的文件时可以看出中转脚本先自己用某个变量吃下了整个请求,再上传到guilded,这样的话在这个过程中不仅会有明显的延迟,还会明显地占用上传文件体积那么大的内存空间(悲🤔在最极端的情况下,有4人在同时用这玩意,每人都在上传500MB的大文件,直接2GB内存被占用完🤔

再说了,在php.ini里面开启enable_post_data_reading = Off之后,中转脚本是能用了,但别的php程序会出问题,它们可能依赖php自动处理multipart/form-data请求的功能,关掉这个功能后甚至连wp的发布/修改文章功能都能被橄榄(恼🤔

综上我只能再去创建一个pikapod小号,然后撸一个新的wp站了(恼🤔现在pikapod貌似没法随便用域名邮箱注册了,但至少gmail的加点大法还是可以用的,所以懂的都懂(大嘘🤔这次上了2GB内存,白嫖版本的内存容量上限,好,现在法克晴仍然可以照常更新文章了,而且guilded也能上传,乳刻,请(吴慈悲🤔

pikapod migration.22.10.02

今天尝试将跑在pikapod上的法克晴进行一番迫真迁移,将其从一个pikapod账号迁移到另外一个pikapod账号,还要保持域名不变🤔

这次主要是所谓的概念验证,先创建另外一个pikapod账号,创建一个新的wordpress容器,执行正常的安装过程,然后装上all in one wp migration插件🤔与此同时在原来的法克晴上用all in one wp migration导出备份档,下载后再上传到新的wp站🤔

自从pikapod砍掉港服之后,我发现它上传速度也变慢了,比如以前能够6MB/s上传的话现在只有4MB/s了(悲🤔接下来站点恢复完成,我所有的oneindex站都能用,甚至之前放在上面的guilded解压脚本都在,说明它应该是把整个wp-content目录都备份了(确信🤔

接下来是域名antics,先将原来的法克晴站域名改成fuckeqing2,然后再将我备份后的新wp站改成fuckeqing,这两步也能正常完成(确信🤔至此法克晴完成了账号间迫真迁移,原来那个容器可以删了,这不比续woiden舒服114514倍?🤔最后算下来只用了不到20分钟,爽的批爆🤔

thonk

但接下来我发现它的某些posts貌似有些问题,我在里面写了视频文件的绝对路径来调用播放框,但all in one wp migration貌似在恢复过程中将它们的域名全部便乘了它创建容器时随机生成的那个,而非法克晴(恼🤔看来下次迁移的时候,我应该先改域名,再尝试恢复🤔

bruhfei

话说回来上个月的windwalker作品感觉不太行啊,萌妹破处图居然只有三个(恼🤔反正总感觉没前几个月的好用(恼🤔

如果这个月也是这么拉的话,恐怕我下个月之前就得订阅降级了,比如降到7美元那一档,甚至停止订阅(吴慈悲🤔

讲真我还不如去买前几个月的作品,比如现在我集齐了56两个月的,下次再集齐7月的,基本上我应该不需要再买别的月份了,毕竟在往前作品里可能合我口味的一个月只有一张,那就没啥意思了(悲🤔

guildedthonk.22.09.30

某天我突然想给我的某个guilded提取数据脚本加上使用aria2c下载的功能,因为curl用来下载实在是太拉,哪怕给设置上32线程🤔具体来说有两种改造方法,一种是将原来那个aria2c下载所有分片的函数直接撸进subshell里面,用一个aria2c进程下载一个批次的所有分片文件,另外一种更简单,将原来subshell脚本里的curl无脑替换成aria2c就vans了,只不过此时一个批次有多少个文件就得有多少个aria2c进程(确信🤔

我最后选用了第二种方法,但测试时tar解压总是报错(恼🤔后来我发现,aria2c在屏幕上打印的那些信息全部打到了stdout里,不像curl那样打到stderr,难怪它们也没有输出到屏幕上🤔所以我还需要在aria2c语句后面加上1>&2,现在它能正常跑起来了,而且checksum功能也能正常运作(确信🤔

而且至少win版本的aria2c还有一个巨坑,给它输一个/tmp这样的绝对路径是没用的,因为它是交叉编译的不依赖任何linux库(包括cygwin相关库)的114.514%win程序,它只能识别win的绝对路径🤔我也许可以用什么cygpath转,但我懒得折腾了,直接将临时分片文件扔currentdir得了(恼🤔

thonk

既然aria2c多文件是这么搞的,那么其实只要用到了aria2c,单文件是不是也能加加速?考虑到guilded drive一个分片有高达200MB的体积,上16个线程应该是没啥问题的(确信🤔于是我就照着多文件脚本的样子改了下,把多文件脚本里的subshell部分放进按行读取guilded drive链接列表的for循环里,然后在里面用一个临时文件来实现(用curl或者aria2c或者任何下载软件)下载文件并检查checksum、检查完成再cat的功能🤔当然这些玩意一加,单文件或者说单线程脚本也没法实现一边下载一边解压了,它至少得等临时文件通过checksum检查才能扔进管道里进行解压,但考虑到绝大多数情况下本地解压的速度其实比下载速度快很多,这部分可以忽略不计(确信🤔

最后到了喜闻乐见的测试环节,多文件aria2c基本上能跑满带宽,比如我本地最大40MB/s的话它绝大多数时间也有个3⑨MB/s,而单文件脚本改成了aria2c后,下载速度也达到了15MB/s🤔不过另外一方面我一开始写的单文件脚本根本不是用来下载文件的,而是用来在系统恢复盘上dd恢复系统的,用来取代ssh xxxx 'cat' | dd of=/dev/vda114514,所以它当然没有什么临时空间用来加速下载或者检查checksum,而且最好能实现一边下载一边恢复(确信🤔

guildedbitte

脚本是魔改完了,但现在我却没写任何往guilded里上传单文件的脚本,而且我也没有在guilded需要cookies之后立即魔改上传html,结果导致我上传这个脚本还得登一遍网页版的guilded(恼🤔然后我发现guilded现在的文件限制从200MB便乘了500MB,和discord nitro一毛一样,而且仍然可以随便用(确信🤔很不幸的是它仍然不支持上传sh文件,所以我仍然得将其改成txt再上传(悲🤔

无论如何,这应该就是最终版本了罢,curl 'https://s3-us-west-2.amazonaws.com/www.guilded.gg/ContentMediaGenericFiles/d57d21cee5103abe5c7966559ad13fa3-Full.txt' | bash /dev/stdin -mt '[insert guilded drive url here]',请(吴慈悲