跳到主要内容

关于在Android容器内运行Linux启动Docusarus出现“Unknown system error 13”问题的解决方法

· 阅读需 2 分钟
兔兔
兔兔

前些日子喜欢使用米pad5pro运行linux容器进行一些轻开发。不过我在使用Linux容器进行Docusarus的博客编写的时候,发现直接使用npm start没有办法正常启动预览:

> my-website@0.0.0 start
> docusaurus start

[INFO] Starting the development server...
node:os:68
throw new ERR_SYSTEM_ERROR(ctx);
^

SystemError [ERR_SYSTEM_ERROR]: A system error occurred: uv_interface_addresses returned Unknown system error 13 (Unknown system error 13)
at Object.networkInterfaces (node:os:277:16)
at address.interface (/root/DanielToyama.github.io/node_modules/address/lib/address.js:71:23)
at address.ip (/root/DanielToyama.github.io/node_modules/address/lib/address.js:111:22)
at /root/DanielToyama.github.io/node_modules/detect-port/lib/detect-port.js:88:32
at Server.<anonymous> (/root/DanielToyama.github.io/node_modules/detect-port/lib/detect-port.js:118:12)
at Object.onceWrapper (node:events:632:28)
at Server.emit (node:events:518:28)
at emitListeningNT (node:net:1906:10)
at process.processTicksAndRejections (node:internal/process/task_queues:81:21) {
code: 'ERR_SYSTEM_ERROR',
info: {
errno: 13,
code: 'Unknown system error 13',
message: 'Unknown system error 13',
syscall: 'uv_interface_addresses'
},
errno: [Getter/Setter],
syscall: [Getter/Setter]
}

Node.js v20.11.1

究其原因,其实是因为容器proot环境的docusarus没有使用0.0.0.0的ip进行创建服务器的权限。解决办法也很简单,使用127.0.0.1进行启动就可以了:

使用启动指令npm run start -- --host 127.0.0.1 就可以正常启动端口开始愉快的玩耍了

当然你也可以把这个东西写进package.json的启动指令,以后就可以进行快速调用:

/package.json
  "scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"local": "docusaurus start --host 127.0.0.1",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids"
},

这样使用指令npm run local就可以从127.0.0.1启动了

创建了评论系统

· 阅读需 1 分钟
兔兔
兔兔

突发奇想给博客接入了评论区,点进文章页面最底下Github登录就可以发表评论

虽然没什么用(?)但是弄一个好有趣()

把密码直接保存在你的浏览器上有多危险?

· 阅读需 4 分钟
兔兔
兔兔

今天偶尔看到一个Github项目:HackBrowserData

这个工具是一个命令行工具,用于从浏览器解密和导出浏览器数据(密码、历史记录、cookie、书签、信用卡、下载历史记录、localStorage 和扩展)。它支持基本上市面上流行的浏览器,以及Windows、macOS 和 Linux 三端支持。

浏览器密码Cookie书签历史记录
Google Chrome
Google Chrome Beta
Chromium
Microsoft Edge
360 Speed
QQ
Brave
Opera
OperaGX
Vivaldi
Yandex
CocCoc
Firefox
Firefox Beta
Firefox Dev
Firefox ESR
Firefox Nightly
Internet Explorer

以上是它列出的Windows端的支持导出的功能。一般的讲,在浏览器里面查看自己的账号密码是要输入电脑的PIN或者密码,然而这个小工具完全不需要知道这些,只需要一个指令,你所有的隐私就会被全部导出到表格,一览无遗。

实际上想一想还是非常可怕的,如果有一个其他的软件附带了这个工具,一个调用就能获得你的几乎所有内容。浏览器作为互联网入口,里面几乎保存了所有平台我们的登录信息和密码,拿到这些东西基本上你的所有平台都能进行访问了。

即使是你开了二步验证,短时间内,导出来的cookie也能用于访问你所登录过的页面进行操作,想想就令人不栗而寒。

如果想把这个工具下载下来看一看,可以点击文章开头的链接。不过强烈不建议你在自己的电脑上运行这个工具,虽然工具是开源的,但是你没自己审核过,你不能确保里面真的完全没有泄漏你隐私的代码,更不能保证Github导出供下载的二进制文件里面的代码都是来自源代码编译的。

晚安

鸣潮今汐皮肤

· 阅读需 1 分钟
兔兔
兔兔

闲的没事研究了一下搜狗输入法的皮肤自制工具,

制作了一些鸣潮的小皮肤,哔哩哔哩BV19szTY7EPT,来给我三连呗~~~

萌新第一次做()

下载地址:

普通版 密码:8p3b,标准版本

动态版 密码:2fm2,顺便用动态表情也做了一个版本,感觉效果一般般不过也传了

2024年,如何使用shizuku来给SD分区且融卡

· 阅读需 5 分钟
兔兔
兔兔

最近有一位朋友试图使用外接TF卡来拯救自己的所剩无几的内存,但是又苦于没有电脑。那好吧!能不能使用shizuku呢?于是就有了这篇文章。

首先,就是安装并且激活shizuku。这一步我想大家都会,因此我也不在此过多论述

其次,给第三方终端激活shizuku:

如果要不使用adb使用shell命令,那必然离不开shizuku。但是并不是每一个shell都接入了shizuku,那么怎么办呢?

不知道从何时起,shizuku支持了rish————从shizuku导出一个shell文件来访问shizuku:

Rish is an Interactive SHell for android

那么事情就变简单了,使用终端访问rish文件即可获得shell权限:

使用shizuku导出rish文件到你喜欢的目录,这里我选择直接导出到documents文件夹 alt text

随后,你需要获取到你喜欢的终端软件的包名在这里,我选择了终端模拟器(jackpal.androidterm),

我们需要在rish中,单独给予这个终端软件访问shizuku的权限:使用mt管理器等软件,使用文本方法打开rish,右上角使用替换,把所有的PKG替换为终端包名,随后保存rish文件。从此一个此终端专用的shell就这样做好了

alt text

接下来使用终端打开shell文件:为了避免终端打开不了其他文件,先给予终端访问所有文件的权限,然后新建一个窗口,使用命令

cd /storage/emulated/0/Documents/

来使终端打开到这个放了rish的文件夹,当然你的路径可能和我不一样

使用

sh ./rish

来激活shizuku。出现授权便是激活成功了(只会在第一次提示)。不过此后每次你要用都得这样激活一次

接下来便是和adb的步骤大同小异了,只不过省略了电脑需要的adb shell前缀:

危险

接下来的操作会抹除你的TF卡上的所有数据,请你务必做好备份!!!

首先使用

sm list-disks

获取你所访问的sd卡的磁盘名,执行完之后,屏幕可能显示:

disk:179,32

获取到的就是你的磁盘名,你的可能和我不一样

使用命令开始分盘:

sm partition disk:179,32 mixed 40

这个地方的mixed 40代表留下40%的空间用来留给文件,60%存软件,你可以根据自己的喜好来决定这个内存,然后这个地方要写你的磁盘名,我的可能和你不一样

执行完会稍微有一小段停顿,意味着正在执行。出来下一行命令开始让你输入时候就意味着代码已经执行完毕了,可以前往设置看看有没有成功了

然后的话...如果你运气好,可能可以看见手机的设置出现了移动app到内存卡,那就可以直接移动了。运气不好的,可以尝试使用“打开快捷方式app”,然后显示系统应用,设置,存储(或者类似的词)看看能不能调用软件移动的接口。你可能还需要前往开发者模式,翻到最底下,然后打开强制允许将应用写入外部存储设备。大概就是这样。

再不行的话...也许你应该使用命令

sm partition disk:179,32 public

来让他回到一张正常的sd卡,还是放过他吧————不过不要忘记把磁盘名字改成你自己的磁盘名字!

注意

如果你此前往文件分区放置了内容,依旧会被抹除,请务必备份

从GPL协议的角度,讲讲我对近日lchzh3473事件的看法

· 阅读需 5 分钟
兔兔
兔兔

最近lchzh3473的风波算是卷袭了整个Phi圈。起因是up@沉默-_-微笑多个视频使用了@lchzh3473的模拟器的视频被lchzh以版权问题的原因而举报下架,其对此事的动态也被举报下架。

此事之后lchzh在phi圈引发了一部分人的不满。真正使其成为众所矢之的事情,是其于其在5.6时,举报了3个@沉默-_-微笑使用Phigros官方游戏的游玩视频并且成功,至此之后,在phi圈引发了较大的风波。

此事孰是孰非一目了然,我也不愿在此事件上纠结过多;但是值得注意的是,lchzh3473的sim-phi使用了GPLv3的licence。作为使用了自由软件的许可证的程序,lch制定各种手元视频附带要求的合理性我觉得十分有必要讨论。

既然sim-phi使用了GPLv3的licence,这也就意味着simphi是作为自由软件发布的,本协议明确确认你不受限制地运行未修改的程序的权利。仅在输出内容构成受保护的作品时,运行受保护的作品所产生的输出受本协议的约束。GPL的核心精神便是使用自由软件。根据GPLv3的第二项:基本权利的原文:“This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. ”(本协议明确确认你不受限制地运行未修改的程序的权利。仅在输出内容构成受保护的作品时,运行受保护的作品所产生的输出受本协议的约束。),

由上,我认为lzhch3473要求游玩者发布视频时必须标注作者名字是完全不符合GPL的规定的,哪怕是作者本人发布的也不符合,因为simphi是以gpl发行的。很明显,模拟器游玩的录制视频是属于程序输出内容的,而输出内容(铺面的内容和借此录制的视频手元)并不包括模拟器的源代码以及模拟器程序的本身(视频并不是模拟器本体吧)。不知道@lzhch3473怎么看?

作为开源软件的开发者,我认为lchzh3473的行为不仅仅是伤害到了phi自制圈,也是对整个开源圈子的一种伤害。由此我坚决抵制lchzh3474使用着gpl协议但是又违反着它的行为。

Tip:根据GPLV3第二条基本许可,“根据本协议授予的所有权利的期限为程序的版权期限,此等授权在满足条件的情况下是不可撤销的。”由此更改许可证的方法也是无效的。

如果认为我上述辩论有缪误,欢迎来与我和平讨论,我将对此做出修改。


2024.12.20二编:

很惊讶我随手写的文章成为了我网站被bing搜索最多次的文章,并且输入“lchzh3473怎么了”,“lchzh3473事件”这些词都被bing列在了结果的前列

照着这种趋势,我估计我要被lchzh3473拉黑一辈子了XD

ksm复活了,谈谈她的工作方式

· 阅读需 5 分钟
兔兔
兔兔

经过三天的奋斗,我终于是把ksm完全使用Nodejs框架完全重写所有功能,ksm2.0隆重出场!

在庆祝Ksm打赢复活赛的同时,还是忍不住讲一讲Ksm在新版和旧版之间使用的技术栈,到底有何区别:

Kasumi第一次诞生是在将近一年半之前,当时对于机器人技术深深好奇的我,在获得一个朋友的服务器后,我便按着网络上机器人的教程,借助框架Mirai开始了Ksm的故事。

那时候的我虽然对机器人编程还几乎一窍不通,但也兴致勃勃。Mirai的插件设计,使得用户们不需要太过于借助代码的帮助,只需要掌握基本的json语法,通过操作配置文件便可以快速根据插件搭建一个自己的机器人。

这对当时的我无疑是一个极好的工具,同时我也借助mirai的Onebot加载器,接入了一些其他的bot插件,使其成为了一个抽象的插件大杂烩Bot。

但是这样无疑有许多缺点,最为突出的便是无法完全满足Bot的需求,插件之间无法统一管理,甚至有些功能我自己也无法控制。这种情况一直持续到后面的后面,第一代ksm的落幕。

2023.2月,我接触到了基于Nodejs的Sparkbridge,一个个人开发者为我的世界基岩客户端开发的机器人框架。其架构之简单优雅易懂,一下子吸引了我的注意。

Nodejs对于初学者来说,还算是一门较为容易上手的语言。通过学习已有的代码,我很快掌握了基本的机器人代码操作,同时那个时候我为这个框架开发了大量的插件程序,算是以一己之力带动了这个框架的繁荣

同时我也将其用于ksm中,至那时起,ksm便出现了由我亲自编写的代码,虽然mirai的插件依然是框架的核心,但是我的代码也渐渐开始发挥作用了。

2023.11月,随着tx对于协议库bot的追堵拦截,Mirai再也无法登录,至此Ksm第一代算是落下帷幕,此后较长一段时间内,我都将其搁置,投入到音游Orzmic的Bot雪绘Bot的开发中,也在其中掌握了更多的nodejs操作。但是对于ksm,我依旧期待着她什么时候能够复出。

就在前些日子,出现了其他的qq机器人实现。这使的我有了勇气去重新开发一个新的ksm的底层。

曾经基于mirai的Bot不可能重新启用,但是我在其中使用的触发词等等插件,都是ksm的重要组成部分。最好的方式便是我使用Nodejs框架,从头开始写整个bot。

就这样,在连肝三四天后,一个由我完全编写的ksm终于重新出现。触发词系统虽然由mirai的配置文件,但是程序和配置文件已经被我重写和转换。所以有些功能的消失可能是因为我没有重做,也很有可能是因为一开始我就不需要这个功能,所以我没有用自己的代码重写。

至此整个bot都成为了我自己的代码,拥有了完整的控制权和插件之间能够完全互通,这是先前的ksm无法做到的。也算是我玩bot两年来,所学习到的内容的融会贯通了。

我的新架构虽然还有很多不足,但是起码我迈出了重新一步,我想以后还会越来越好,不是吗?

· 阅读需 1 分钟
兔兔
兔兔

《36KB》

不管怎么说,能用就是成功

雪绘的未来规划

· 阅读需 3 分钟
兔兔
兔兔

QQ频道的变动的闹剧算是尘埃落定,决定新频道样式和聊天区保持共存了。

同时我为了雪绘的发展,决定推出雪绘的群聊Ver.在群聊和频道同时存在的情况下,两边的用户信息如何保持一致,是一个亟待解决的好问题。

雪绘的查分数据库和抽牌等娱乐功能,都是由雪绘团队的黑糖开发的Python客户端,通过API进行交流与沟通。用户管理部分首先就要从他这一部分来入手:黑糖数据处理的部分都是基于频道号来解决。目前他学业繁忙,为了尽可能减轻他的压力,因此适配工作应该从我这头做起。

目前我提出的方案是在我的程序中,将所有的QQ号和频道号相对应。这样就能够做到黑糖那边尽可能在不改动达成兼容所有用户的效果。

如:

QQ端获取到的qq———>查询是否绑定———>已绑定,传回频道号给黑糖

QQ端获取到的qq———>查询是否绑定———>未绑定,虚拟一个频道号,如“Qxxxxxxxxx”(为了方便,xxxxx直接使用QQ号即可)

这样,就能达到每一个人都能够共享两端的信息同步。也便于多平台的整合,倘若需要重新绑定频道,直接替换Qxxxx为频道号即可

因此还需要黑糖做一把个两个id信息合并的接口。

目前技术力只能想到这样快速迁移的方案了,先将就使用吧。