关于查找自己想要的软件的问题

这是我一年多前学会的一个方法, 关于如何找相关类型或者优秀的软件. Github上有许多的Awesome项目, 这些项目本来的目的就是推荐一些和你感兴趣技术的一些相关资源, 可以利用awesome项目来找各种各样的软件, 或者是开发套件. ...

2023年09月12日 · 1 分钟 · 272 字 · sdttttt

AdGuard Home DNS失效问题

我的软路由上一般只会开两个软件, 一个是Openclash, 还有一个是AdGuardHome. 一般会首先把ADH替换掉dnsmasq, 让DNS请求全部走到ADH这边, 我使用ADH的理由也比较简单, 就是做一个DNS日志, 然后ADH的上游设成Openclash的DNS, 我使用的clash模式是fake-ip 混合模式, UDP走TUN, TCP走直连. 一般就这么用着. fake-ip用了很长时间稳定性也不错, 基本不会遇到什么问题. ...

2023年09月08日 · 2 分钟 · 666 字 · sdttttt

2023-9-5

最近发生了很多事情, 先讲讲最近游戏上的事情吧, 30号的时候国服赛马娘公测了, 说实话还挺好玩的, 虽然我对养成没什么兴趣, 但是这个游戏是例外, 日常也挺温馨的, 很有Cy的那种感觉, 算是精神食量了. 昨天去面试了一家公司, 说实话只有薪水我比较满意, 其他都不太行, 那家公司是要做一个ERP系统, 但是我从来也没有做过, 还有的就是那边现在还没有开发人员, 我进去就是从头做起… 办公场地看起来也破破烂烂的… 交通也不是很方便… 我要不要为了这个薪水去做, 而且到底能不能胜任我也很怀疑… ...

2023年09月05日 · 1 分钟 · 254 字 · sdttttt

Web也能做种啊?

最近了解到了WebTorrent这个软件, 这个是一个基于Web技术做的一个Torrent的下载器, 还能播放视频. 挺神奇的, 这年头Web都能做种了? 因为在我的印象里, 目前的Web技术是不支持原生TCP/UDP这些网络协议. ...

2023年09月05日 · 1 分钟 · 222 字 · sdttttt

软路由趋于稳定

软路由使用的固件基本已经定型了, 目前使用的Openwrt固件是18.06版本, 内核是5.4 https://github.com/SuLingGG/OpenWrt-Rpi 该项目只维护18.06-5.4k内核版本的OpenWrt, 不过18.06已经停止支持了. 原本18.06使用的内核版本是4.14, 这个固件是一个定制版, 使用的是5.4内核, 我也没有使用过4.14内核, 也不清楚和5.4对比到底如何, 在我目前使用情况来看, 5.4内核还是比较可靠, 目前也没有出现过非常明显的网络波动以及断线的情况. ...

2023年09月02日 · 1 分钟 · 240 字 · sdttttt

2023-8-30

很长世界没有写博客了, 上个月末我回到了杭州, 在家里休息了一周之后又开始重新找工作, 这次找工作我想这先找Go开发方面的工作, 自从上海工作之后我感觉我写Go的水平熟练了不少, 想大胆试一试.

2023年08月30日 · 1 分钟 · 92 字 · sdttttt

OrangePi R1 Plus LTS

这几天没忍住,又入手了一块便宜的软路由,就是这个香橙派的R1plusLTS,这个型号的上一款R1plus和NanoPi R2S的配置一模一样,处理器和网卡内存等等都一样,这个LTS型号据说是芯片短缺的时候出现的,把网卡从RTL8211E换成了YT8531C了,内存从DDR4换成了LPDDR3, 其他还是一样,不过这两个硬件一换的话,原本R2S的固件和R1plus还能兼容,现在是没办法兼容了,网上对R1plusLTS适配的固件也比较少. 最坏的情况也得自己编译了。 ...

2023年04月25日 · 2 分钟 · 575 字 · sdttttt

关于大文件的解析

最近碰上了一个需求,要做一个桌面程序,功能是将一个文件格式解析成json,然后在图表上展示这个数据,但是这个文件可能有GB单位的大小,解析要防止爆内存,还有图形也要防止崩溃。 文件格式解析倒反而不是什么难点,主要是文件大小的问题以及格式,json是一种树状的类型,每个节点和上下文都是有关联的,如果全放内存中非常容易爆内存 ,但是这个数据结构的特性导致很难将已经解析好的一部分数据直接先持久化,不然存取是一个问题,所以持久化肯定需要一些媒介。 ...

2023年04月12日 · 1 分钟 · 439 字 · sdttttt

Rust的一个函数参数签名问题

这个问题烦了了我1个小时。 1fn parse_path_operation( 2 &mut self, 3 path: &str, 4 op: Option<Box<impl FnOnce(&mut Self) + ?Sized>>, 5 ) -> Result<bool, anyhow::Error> 6 7self.parse_path_operation(path, None::<Box<dyn FnOnce(&mut IDir)>>)?; 这里记录一下这个签名的正确用法。 下次学乖了,这种编译器大小未知的trait类型一定要用Box或者其他的智能指针包起来,我想写成这样的签名完全不行,虽然被调用方的签名能通过编译,但是调用方的签名始终有问题,网上找了半天,还是得用智能指针管用… ...

2023年04月06日 · 1 分钟 · 163 字 · sdttttt

2023-3-24

好长时间没写博客了,现在在上海开始上班,算是新的开始。 今天随便读了一下Rust死灵书,记录一下自己的领悟。 1let mut data = vec![1, 2, 3]; 2let x = &data[0]; 3data.push(4); 4println!("{}", x); 1'a: { 2 let mut data: Vec<i32> = vec![1, 2, 3]; 3 'b: { 4 // 'b 这个生命周期范围如我们所愿地小(刚好够 println!) 5 let x: &'b i32 = Index::index::<'b>(&'b data, 0); 6 'c: { 7 // 这里有一个临时作用域,我们不需要更长时间的 &mut 借用 8 Vec::push(&'c mut data, 4); 9 } 10 println!("{}", x); 11 } 12} 这里的问题更微妙、更有趣。我们希望 Rust 拒绝这个程序,理由如下:我们有一个存活的共享引用x到data的一个子集,当我们试图把data的可变引用传给push时。这将创建一个可变引用的别名,而这将违反引用的第二条规则。 ...

2023年03月24日 · 2 分钟 · 810 字 · sdttttt