在ArisuBot项目中,需要加载各个功能,这总不可能使用硬编码来使吧……就想到了注解。尝试只用一个注解就可以加载类,写一下一些坑:
0x0 类扫描 0x00 初版 其实是AI给出的主意,大体看起来貌似没什么毛病:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public List<Class> loadClassByLoader (ClassLoader loader) throws URISyntaxException, IOException, ClassNotFoundException { List<Class> out = new ArrayList <>(); Enumeration<URL> urls; urls = loader.getResources("" ); while (urls.hasMoreElements()) { URL url = urls.nextElement(); if (!url.getProtocol().equals("file" )) { ArisuBot.INSTANCE.getLogger().verbose(url.getFile()); break ; }; File urlTarget = new File (url.toURI()); out.addAll(loadClassByPath(null , urlTarget.getPath(), out, loader)); } return out; } public List<Class> loadClassByPath (String root, String path, List<Class> list, ClassLoader loader) throws ClassNotFoundException { List<Class> out = new ArrayList <>(list); File f = new File (path); if (root == null ) root = f.getPath(); if (f.isFile() && f.getName().matches("^.*\\.class$" ) && f.getPath().contains("base" )) { String classPath = f.getPath(); String className = classPath.substring(root.length() + 1 , classPath.length() - 6 ).replace("/" , "." ).replace("\\" , "." ); try { out.add(loader.loadClass(className)); return out; } catch (ClassNotFoundException e) { throw e; } } else { File[] fs = f.listFiles(); if (fs == null ) return out; for (File file : fs) loadClassByPath(root, file.getPath(), list, loader); return out; } }
实际这个样子不太行,具体问题出在这里:
1 2 3 4 if (!url.getProtocol().equals("file" )) { break ; } File urlTarget = new File (url.toURI());
事实上加载出来的是jar包的形式,协议是jar而非file,而jar协议会报错not hierarchal
等会儿手搓一份看起来没问题的。
0x01 来自知乎佬的讲解
Read More
10月18日,开源社区迎来了一个重磅炸弹:Linus和Greg在毫无预兆的情况下,以一个含糊其词的原因开除了数十名邮箱域名为.ru的开发者。这对开源社区无疑是晴天霹雳。
Greg Kroah-Hartman, Fri, 18 Oct 2024:
Remove some entries due to various compliance requirements. They can come back in the future if sufficient documentation is provided.
个人翻译:
由于一些合规要求移除了一些(开发者)条目。他们可以在提交了充足的文档材料之后可以回来。
这之后,Linus 批准了这个请求并且合并到了主版本6.12-rc4中。但是,这些开发者基本回不来了:
考虑到 Linus Torvalds 与 Greg K-H 均受雇于 The Linux Foundation,后者为注册在美国的 501©(6) 组织,“某些合规性要求”为何显而易见。
原文:安同开源社区有关 Linux 基金会及其职员不当行为的谴责 | 安同开源社区 (AOSC)
Linus对于revert提交(撤销这次删除开发者的提交)如是说:
Ok, lots of Russian trolls out and about.
It’s entirely clear why the change was done, it’s not getting reverted, and using multiple random anonymous accounts to try to “grass root” it by Russian troll factories isn’t going to change anything.
And FYI for the actual innocent bystanders who aren’t troll farm accounts - the “various compliance requirements” are not just a US thing.
If you haven’t heard of Russian sanctions yet, you should try to read the news some day. And by “news”, I don’t mean Russian state-sponsored spam.
As to sending me a revert patch - please use whatever mush you call brains. I’m Finnish. Did you think I’d be supporting Russian aggression? Apparently it’s not just lack of real news, it’s lack of history knowledge too.
Read More
说来话长,个人有些喜欢网络安全方面,于是接触了Kali。众所周知Kali也算Debian系,所以对Debian(系操作系统)颇有好感(笑) 但是Kali对日用,虽说不是不行,但终究也是专用系统,日用会有意想不到的奇妙bug,因此还是转回了Debian。 欸有人就会说了,啊Debian这么落后的软件包,不如用Ubuntu,我的评价是:因为我贱,怎么,你不服气?
0x0 安装操作系统 操作系统安装也是非常简单啊(来自没有被Arch拷打的自信发言),只要下载一个Debian Bookworm的镜像,就可以了。从Linux底下部署安装盘 甚至比我想的还要简单。 你甚至只需要先下载映像(.iso)文件,然后卸载U盘,然后
1 2 cp debian.iso /dev/sdXsync
注意是直接写入到设备,而非如/dev/sdXn
这样的分区 就搞定啦,别写到自己的硬盘里就行 然后重启,进行一个U盘的插入,一个系统安装器的引导,一个安装器的设置就搞定了,都有中文的,找找就有了,写的很直白 我个人用的是KDE桌面管理系统,非常舒服;gnome有奇怪的适配问题,Xfce……埋了吧,简单倒是真的,但是功能和美化的便捷性不及KDE。
0x1 美化,启动! zsh终端美化 Kali的zsh配置既方便又好看,非常好用,拿来吧你!
然后
Read More
Pwnagotchi 官网 这个小东西可耗精力了,不知道为什么老是有问题,或许是我墨水屏买新了?以及进不去MANU mode,可能是驱动? 不知道,以后再说吧。
0x0 买 需要买的:
0x1 焊 焊GPIO的时候可以先焊两边再焊中间,平衡之后焊起来会很方便
微雪V3已经有GPIO焊好了,直接插上去就行,记得屏是覆盖住Zero的,不是呈Z状凸出的,插反了的话小心坏掉
UPS-Lite是弹簧针脚,直接放上去按紧拧好螺丝和螺母就OK了
Read More
寻思要给自己搞一个能上网的GLM2-6B,就在GLM官网 找有没有友链,正好找到了这么一条:ChatGLM-6B-Engineering ,于是就打算在本地部署一下(我是比较讨厌语言模型不在本地的那种)。坑有点多,于是用几乎是0基础的方式写了这么一篇教程。 本篇文章使用venv来创建虚拟环境,conda创建环境的可以找别人了。
0x0 拉代码 到这个工程的仓库拉下代码,解压到一个文件夹。 创建一个命令行窗口,然后cd到你的目录。
1 2 cd /D D:\path \to\your\workspace
0x1 创建环境 然后创建python虚拟环境(有些人极度讨厌虚拟环境可以跳过,此处使用venv而不是conda是因为我比较讨厌conda):
确保缓存的盘足够,如果不能的话,就会报pip没有足够的空间安装,你需要这么做:
Read More
Day 1 我们组选了个B题,同轴电缆长度与终端负载检测 上午还真没啥事,8点等题,上午买买器材,吃个午饭
同轴电缆长度测定原理:
向同轴电缆发一道脉冲,由于一端开路,同轴电缆会反弹一道脉冲,这就意味着在同轴线一端测量波形,我们能得到两个波形:一个是发射波,一个是反弹波。
GitHub上捞了个代码 ,但是ChibiOS/os/hal/ports/STM32/STM32F0xx/hal_lld.c报错,换成另一个 就搞定了(第二个现在还在更新,而且两个差别其实不是特别大,我们就可以比较方便地套用了)
主要是仪器还没到,不能刷固件确认。其实只要固件有了,基本都没什么太大问题,然后就是写论文了。 我们也是有能干起来的活的,比如测量的UI,不知道我能不能帮的上忙。(我C稀碎,而且python也是完全不会)
睡觉了,等第二天器材到了就开始忙了。
Day 2 快递早上就到了,接下来就是用micropython对NanoVNA的操作了。
之前没搞过micropython,踩了一些坑,跟着这篇文章 走了一遍,就能上了。 首先是环境,安装所需的requirements,然后看到有个模块叫machine 这个模块是micropython生成的,所以应该这么搞: 进入虚拟环境:
Read More
第一篇博客 这个GitHub的个人主页可以说是存在已久,但是最近想捞出来一用,于是就搞了个博客。
随便记点东西,可能会把容小狸Bot的更新日志发上来,也可能记载一些奇奇怪怪的教程与心得吧。
着实希望未来可期。
Read More