第43周 --- 第一篇周记
分类:
默认分类
简介:封面图第一篇周报就以目前拍到的人生照片作为周报的封面吧。这张照片是刚拿到大黑不到一周就冲上云顶拍追焦拍的,没想到一拍竟然变成了人生照片。虽然看不到脸,但是我自己感觉是真的帅啊!!!!!!第一次尝试写周记,没想到点开后已经是2024年的第43周了,时间过得好快啊,一年的时间这么快就要到年底了。健身这周又又又又又开始健身了,但是没有说是恢复期或者别的什么,就是正常遵守训练计划进行训练。这周就算出了差也坚持去健身了。虽然坚持了下来,但毫无疑问,这一周身上就没有不痛的时候。我觉得可能是我的计划需要进行一些调整。有的动作做完几组后还有余力,有的动作做一两组后就完成不了了。先等这个周期(一个周期是为期三周,每周五天的训练量)结束后,第二周再开始进行量上面的调整。后续我也会将我的健身项目以及健身相关的东西慢慢发出来,希望留下一些记录,最好能收到一些路人的建议~学习这周上班主要是在进行一个CH341转USB的状态灯相关的开发。具体地讲,是通过http接口,获取设备状态信息,然后根据不同状态等级,进行对应的逻辑处理。这里面涉及到了C++的httplib的使用,涉及到了一些C++的基础知识,比如 bind() 函数、map 容器的使用、枚举 类型的使用等等。更关键的是学到了一些在程序设计方面的逻辑。虽然最后给磊哥提交了一份大便一样的代码,但是还是颇有成就感的🤭,没办法嘛,毕竟我也只是个初学者。但是我也在很努力地进步啦!!!现在就看看磊哥怎么屎上雕花了😂。除了上班,这周健身的时候也是有在听播客《STYUDY ROOM 自习室》。真的很建议每个人都去听一下那个邓亚萍专栏!!真的对于在想坚持又坚持不下来、在努力却一眼望不到头,对自己的努力产生怀疑的人有很大的帮助。我发现播客这个东西,相当于以一个第三者的方式来看他人的生活,也相当于在不断吸收他人的价值观。听的节目越是杂,那么越容易在你的脑海里产生各种价值观的对抗冲击,从而能够形成属于你自己的价值观。除了“自习室”外,还有《代码之外》、《碳基生物生存指南》等节目。在之后也会逐渐列出来。其它想说的这是我自博客建立起来后的第一篇周记。由于是兴趣突然升起,所以还是有些仓促了。该有的配图没有,该有的详细点的介绍也没有。但能够写点什么,对于我而言已经是一种进步了。以后我会尽可能让我的内容充实起来,同时也会多多寻找能写想写的话题,尽可能让这个博客充实起来。
Windows下交叉编译ARM64架构的zlib库
分类:
技术向
简介:在Windows下使用Visual Studio交叉编译zlib到ARM架构的步骤指南:1. 安装必要的工具1.1 安装Visual Studio 2019/2022访问Visual Studio官网,下载并安装Visual Studio 2019或Visual Studio 2022。在安装过程中,选择Desktop development with C++工作负载。在Optional Components中确保勾选以下选项:MSVC v142/v143 VS 2019/2022 C++ ARM Build Tools(对应版本的C++工具集,v142是2019的工具,v143是2022的工具)ARM64 Build Tools:用于ARM64交叉编译。CMake tools for Windows(如果想用CMake配置项目)。1.2 安装CMake访问CMake官网,下载并安装最新版本的CMake(选择适用于Windows的安装包)。将CMake的bin路径添加到系统环境变量中,确保在命令行中可以运行cmake。1.3 下载zlib源代码访问zlib官网,下载最新版本的源码压缩包,或者使用Git克隆:git clone https://github.com/madler/zlib.git将源码解压缩到一个工作目录中,例如 C:\zlib_source。2. 使用CMake配置zlib项目2.1 创建构建目录打开命令提示符或PowerShell,在zlib源码目录的同级目录中创建一个build目录用于存放生成的构建文件。mkdir C:\zlib_build2.2 使用CMake生成Visual Studio解决方案在命令行中导航到你的build目录:cd c:\zlib_build运行以下CMake命令来生成适用于ARM架构的Visual Studio项目:cmake G "Visual Studio 16 2019" A ARM64 T host=x64 DCMAKE_SYSTEM_PROCESSOR=ARM64 DCMAKE_INSTALL_PREFIX=C:\zlib_build\install ..\zlib_source解释: G "Visual Studio 16 2019":指定使用Visual Studio 2019作为生成工具。如果是VS2022,则改为Visual Studio 17 2022。 A ARM64:目标架构为ARM64。 T host=x64:指定主机编译工具链为x64,这样我们在x64主机上交叉编译ARM64目标。 DCMAKE_SYSTEM_PROCESSOR=ARM64:指明目标系统的架构。 DCMAKE_INSTALL_PREFIX:指定安装路径,编译完成后zlib库将被安装到这里。..\zlib_source:这是zlib源码的相对路径(相对于当前的build目录)。2.3 检查CMake输出运行CMake命令后,CMake会输出关于生成过程的信息,检查是否有错误或警告。生成完成后,C:\zlib_build目录下应该有一个Visual Studio解决方案文件 zlib.sln。3. 在Visual Studio中编译zlib3.1 打开生成的解决方案双击C:\zlib_build\zlib.sln,Visual Studio将自动打开该解决方案。3.2 设置编译配置在Visual Studio的顶部工具栏,选择Release作为编译配置,ARM64作为平台配置。如果没有看到ARM64平台,请打开Configuration Manager,添加一个新的目标平台,选择ARM64。3.3 开始编译在Solution Explorer中,右键点击zlib项目,选择Build来开始编译。如果一切正常,Visual Studio将成功编译zlib库。4. 验证编译和安装4.1 验证生成的库编译完成后,zlib的库文件(如zlib.lib、zlib.dll)应该会出现在 C:\zlib_build\Release\ 目录下。这些文件将是为ARM64架构编译的,可以用于ARM64设备上。4.2 安装到指定路径如果你在CMake中指定了CMAKE_INSTALL_PREFIX,你可以在Visual Studio的Output窗口中查看安装过程。也可以在Visual Studio中选择Build > Install,将生成的文件安装到C:\zlib_build\install目录。5. 部署到ARM设备你可以将生成的zlib.lib和zlib.dll拷贝到目标ARM设备,或者将这些库文件与ARM64架构的项目进行链接和使用。注意事项调试与优化:如果你需要调试版本,可以将编译配置切换到Debug,然后重新编译。CMake选项:根据你的需求,你可以调整更多的CMake选项,如是否启用动态库或静态库。这就是在Windows下使用Visual Studio交叉编译zlib到ARM平台的详细步骤。如果在编译过程中遇到错误或不兼容的地方,可以查看CMake的错误日志或配置文件,确保安装了合适的ARM64工具链。
基于树莓派的墨水屏天气显示--Step1-开发前的准备工作
分类:
技术向
简介:硬件准备:Raspberry PI 4B大于等于36G的存储卡(我的是64G)读卡器 软件准备:Raspberry Pi Image 将存储卡插入读卡器,将读卡器连接至电脑。在进行下一步操作时,务必备份存储卡内文件。在之后的镜像写入过程中,将会抹去存储卡内所有数据。 使用管理员方式打开 Raspberry Pi Image 程序,选择 CHOOSE DEVICE 内的 Raspberry Pi 4 ,点击后会自动返回上一级界面,点击 选择操作系统 ,这里我选择的是 RASPBERRY PI 4 (64 BIT),同样,点击后会返回上一级界面。此处选择你的存储卡,然后点击下一步。 接下来选择编辑设置,配置树莓派的相关配置文件。这里可以设置通过浏览器访问的树莓派的域名、用户名和密码(SSH访问时也会用到),WIFI信息等。 注意,若要使用SSH功能(一般都会用到),则需要在SERVICE选项卡中勾选开启SSH服务选项。 点击保存后点击是。 提示将会抹去全部内容的提示,再次点击是即可启动刷写。 刷写过程中我没有遇到什么错误情况。如果有朋友按照上面步骤操作,遇到了错误情况,请在本文下方进行留言,或者发送邮件到 c_x@ik.me 与我交流探讨。 刷写完成后,将存储卡插入树莓派并上电。 我是通过网口,直接将树莓派接入路由器,以此达到接入网络的目的。如不想通过此方式接入,请自行搜索网络教程,或等待后续的文档更新(我也不确定会不会更新)。 可以在cmd中通过ping raspberrypi.local的方式来验证树莓派是否正常接入网络。 未总结的后续步骤: 用Windows远程桌面连接树莓派(详细教程)_windows远程树莓派桌面 CSDN博客 树莓派安装clash,实现科学上网 | 麦田里的熊 (panda74.fun)
如何阅读源码
分类:
技术向
简介:阅读源码前一定要明确的四个问题 & 实战: 向 VSCode 发起一个 Pull Request_哔哩哔哩_bilibili四个问题:为什么要读源码?什么时候应该读源码?项目能否读懂?具体如何读源码?为什么大家都推崇读源码对于新手小白而言,想找到较好的学习资源,或者是获得大佬指导,成本较高。所以去读经典代码,使用近乎于逆向工程的形式,揣摩其设计理念,是在所有可行的选择中,相对较好的一种学习方式。但一定要意识到:读源码基本上是最后的手段! 只要有更好的方式,就不要轻易尝试这种出力不讨好的手段。什么时候应该读源码首先先拆解一下软件项目的类型。项目通常分为两类:学术性项目 学术性项目更接近于计算机科学技术课程,比如操作系统、数据结构之类;对于这类项目,不建议直接阅读源码,因为已经有大量教科书或者论文作为资料,这些自然语言编写成的资料,通常比源码要更好理解;而且好的教科书通常也会有代码示例,结合文章理解代码的设计理念会比阅读源码要更好理解。应用型项目 应用类项目又能分为两种类型:框架工具 如果说只是为了学习框架如何使用,而不是开发框架,那么也不建议阅读框架的源码。如果为了学习一个框架的使用需要通过阅读源码来学习,那么说明这个框架的抽象设计或者文档是存在问题的,此时更好的策略是不要选择这个框架。完整的产品应用 首先要确定项目本身的质量。产品的成功和架构的成功是两回事,并不是说一个项目的名气大,就一定代码质量好。 那么如何分析一个项目的质量呢?首先要看项目最近的更新频率。随着人们对软件工程领率的不断探索,项目的最佳实践也在不断变化,尤其是在应用开发的领域。时间相隔三五年,同一个功能的写法可能完全不一样。如果一个项目过于老旧,那就得质疑其代码质量。 另外,要看项目中文档的质量。项目文档翔实,既能表明项目开发者对项目的重视,也能作为我们开发时的参考资料,降低阅读源码时的理解成本。选择符合我们能力的仓库来阅读在阅读源码前,我们需要做出一些基础的判断,让自己对这个项目的难度有个大概的预估。此外在我们了解一个新的项目时,最好不要预先设立一个太过宏大的目标,比如看懂项目架构设计之类。在没有通过对一些简单的功能修改验证自己的思路是否正确之时,贸然尝试对项目进行解读是非常危险的,我们这时并没有一个反馈的机制来验证自己的想法是对是错,一旦误入歧途,可能很久都无法将错误纠正过来。一个更好的方式是从一些简单的功能修改入手,完成一次对项目的 Pull Request,由维护者完成code review,进而验证我们对项目的理解是否正确。想要更简单一点的话,不妨我们去寻找那些社区中有一定讨论,甚至存在 PR 合并的功能。通过社区中的讨论,以及 PR 中具体的 code review,来获取当前需求下较为完整的上下文。在此之后,结合自己的认识,分析功能中是否还有可以优化的补充能力,以此作为我们第一次对此项目的功能修改。这样的方法,既保证了我们自己的参与度,同时也让项目的上手难度降到了最低。具体如何阅读源码首先,我们需要找到一些合适的切入点来分析项目。复杂的项目通常不是按顺序执行的脚本逻辑,其拥有大量的切面,因此我们很难通过顺序阅读代码来理解项目。此时快速定位逻辑、实现位置的能力是至关重要的。对于后端项目而言,我们通常要修改的,都是某个API的实现。所以一个很直观的方法是从路由层入手,看看哪个 Controller 对应了 API。如果没有思路,甚至可以在项目中直接字符串搜索,找到那些与 API 名称相关的内容,以此作为切入点。对于前端的项目,往往可以通过 F12 打开控制台,查看想要修改的元素以及对应的类名,以此为基础找到对应 UI 功能的实现。当然,如果我们能找到一个相关的社区 PR,就可以省区这些定位流程,直接确定相关功能的实现文件。这也是为什么上文中我们强调要紧跟社区PR 的原因。然后则是最为重要的一步,将项目运行起来。只有运行起来后,我们才能使用断点调试的功能,或者通过修改代码,验证功能变更的结果,进而分析我们对项目的理解是否正确。如果只是看代码的话,即使对项目的理解出现了偏差,我们也很难察觉。不必过度关注最终的效果是否符合预期,重点应该放在培养对项目运行逻辑的直觉上,面对庞大的项目,我们无法逐行理解其逻辑,因而通过这四种类似黑盒调试的方法,让我们对项目的执行流程有一个大致的估计,进而的以确定具体的代码修改方案。接下来则是具体的开发策略设计,这部分流程则会因人因项目而异。文章开头的视频后半部分举了一个例子,演示了如何修改程序以满足自己的需求,同时如何在github上向 VS Code 官方发起一个 Pull Request。