回归基础:理解源代码

任何对创建和维护软件感兴趣的人,都应该了解代码的重要性以及编码原则的逻辑和设计模式。

译自 Back to the Basics: Understanding Source Code,作者 Robert Curlee。

无论你是在浏览网站、观看电视节目、在你的手机上使用一个程序还是甚至是在你的汽车上打开空调,源代码是所有这些能力背后的驱动力。

开发者使用源代码来描述计算机中电子设备的行为。但编码不再仅仅是程序员的工作。由于计算机几乎是所有现代化设备的核心,编程已经变得更加普遍。对于软件创建和维护的基本原理感兴趣的任何人不仅需要了解代码为何重要,还需要理解编码原理中的逻辑概念和设计模式。

源代码是编程人员编写的一组逻辑指令,用于创建软件。这些构成算法的指令使用特定编程语言编写,如 JavaScript、HTML、CSS、Python、Java 或 C#。这些指令充当计算机遵循的详细配方,制定执行一系列任务所需的每一项操作。这些任务收集在一个称为程序的文件中,该文件使用人能理解的语言编写。

正如 DNA 承载决定细胞如何生长和运作的指令一样,可以将源代码视为你使用的每件软件的 DNA。代码有助于软件创建、维护和增强。它是我们所有数字工具、应用程序和系统的核心。

无论是计算基本的数学还是运行数十亿笔交易的复杂系统(例如股票交易所),源代码都是我们日常使用的设备和技术中软件的基础。

源代码对于软件维护至关重要,包括修补问题、优化问题,以及以新方式对其进行增强。通过开源项目,软件开发者集合开发应用程序和共享的可重复利用功能库,促进创新并加速技术进步。

编码的一个最关键方面是安全性。识别并解决代码中的漏洞可以防止攻击者利用应用程序。了解代码中哪些构成威胁通常非常困难,也是构建安全稳定应用程序时的一项挑战。

虽然有多种方法对源代码进行分类,但最常见的方法是:

  • 开源与专有:顾名思义,开源代码可供任何人使用或修改。它由社区集体所有,对所有人免费。经常地,开源代码的作者放弃其权利,以便代码可以不受限制地使用。开源运动非常强大,因为它促进了创新,技术进步立即惠及每个人。专有或闭源代码是私有的,只能由所有者使用。拥有专有代码的公司或个人只允许在获得明确许可的情况下对其进行修改或使用。将代码保密是为了保护所有者的知识产权,常常是为了盈利。
  • 编译与解释:代码不仅可以按语言分类,还可以按语言编译成可执行应用程序还是由解释器执行来分类。对于已编译语言,编译器将高级源代码转换为 CPU 可理解的 1 和 0 机器代码指令,并将它们打包到独立应用程序中。然后,计算机可以直接读取和执行该应用程序。另一方面,解释型语言(如 JavaScript)是由解释器在运行时读取并转换为 CPU 指令的。解释型语言允许更大的灵活性并且更容易测试,但与编译后的应用程序相比,性能通常较差。

让我们快速查看一些 JavaScript 和 C 代码示例,了解它们的差异。两个示例都定义一个函数,将两个数字相加到一个变量中,然后打印和返回和。如果你不熟悉这个概念,一个函数是一组可重复的指令,一个程序使用。

JavaScript

开发者通常使用 JavaScript 来构建 Web 和服务器应用程序。这里所示的功能采用两个参数,计算参数的总和,并使用内置方法 console.log 显示总和。您会看到 console.log 的参数利用 JavaScript 方便的字符串连接,通过向名为 sum 的变量添加一个静态字符串来实现。

C

开发人员经常使用 C 语言用于系统软件(运行其他软件的平台)和嵌入式系统。此 C 函数执行与以上 JavaScript 函数相同的操作。但是,它使用 C 标准库函数 printf 输出求和结果。printf 语句中的 %d 是整数求和结果的占位符,演示了 C 对输出进行特定类型格式化的能力。

初看之下,这两个函数的语法看起来非常相似,但当你注意的微妙之处越多,你将看到这两种语言有多么不同。

编码工具帮助开发人员创建、管理、分析和改进代码质量,同时帮助他们更有效地工作。许多自动化工具可以检测代码中的问题,这些问题会导致错误、安全漏洞和代码异味。借助这些工具,开发人员可以从他们的代码中获得最大的价值。

以下是最常见的编码工具类型:

  • 集成开发环境 (IDE),例如 VS Code、Visual Studio 和 IntelliJ,对于帮助开发人员进行软件开发 至关重要。IDE 包括一个专门的文本编辑器,它会在您键入时注释代码,识别代码中的语法或其他问题。它们还与代码库和构建管道集成,以在您开发时管理版本控制。
  • DevOps CI/CD 工具,例如 GitHub、GitLab、BitBucket 和 Azure DevOps,包括代码库,这些代码库将您的代码存储在一个单一的事实来源中,以便开发团队成员可以轻松访问和共享。此外,存储库跟踪源代码中的更改,因此您可以管理不同的版本并撤消更改。分支和合并功能存在,因此开发人员可以在开发时同时处理代码,而无需担心相互覆盖工作或破坏稳定代码。DevOps 工具包括构建过程的自动化,以便可以快速轻松地发布更改。
  • 静态代码分析器在开发人员工作流程中无缝运行,以检测代码中的问题,这些问题会导致错误、漏洞和技术债务,而无需构建和执行应用程序。这些分析器允许开发人员在应用程序经过测试并发布到生产环境之前,在开发过程的最早阶段捕获编码错误。其他好处包括帮助执行编码标准和最佳实践,减少手动代码审查,并教育开发人员如何正确编码,这有助于提高他们的技能。

源代码工具不仅仅检测问题。它们有助于使开发人员变得更好并提高他们的工作质量,从而导致企业重视的更可靠、更安全的软件。像 SonarQube、SonarCloud 和 SonarLint 这样的工具和解决方案可以提高代码质量,并帮助开发人员从他们最重要的资产中获得最大的价值:源代码。

源代码质量可以决定对我们日常生活和工作至关重要的应用程序和系统的成功或失败。作为一名开发人员,您不仅要了解编码概念,还要确保您使用正确的开发和测试工具。通过集成这些基本组件,您将有效地生产高质量的工作,确保您的成功。

手把手教你爬取天堂网1920*1080大图片(批量下载)——实战篇

/1 前言/

上篇文章 手把手教你爬取天堂网1920*1080大图片(批量下载)——理论篇我们谈及了天堂网站图片抓取的理论,这篇文章将针对上篇文章的未尽事宜进行完善,完成图片的批量抓取。

/2 图片网址解析/

1. 我们首先来分析一下这个图片的地址在哪里。我们选择图片,然后右击网页检查,可以看到图片的路径,如下图所示。

2. 将其单独放出来,如下图所示。

3. 可以看到<a href>就是图片的链接,而src就图片的地址,所以我们可以找它的上一级标签<ul>。如果再找不到那就再找上一级以此类推(找到越详细内容更准确)。使用选择器xpath,获取到src的值(网址后缀)之后,将后缀加上“https前缀”就可以得到每一个网址,如下图所示:

4. 之后尝试运行,如下图所示,可以获取到具体的网址。

5. 我们再对这个网址进行请求(参考一个请求的方法)分析数据。

6. 我们以这个鱼的图片为例,点击它来到二级页面。

7. 右键检查 可以看到我们要获取的是src的地址,如下图所示。

8. 获取图片的源码,如下图所示。

9. Xpath 获取到路径,为了方便区分图片的名字,如下图所示。

/3 下载图片/

1. 为方便储存,新建一个filename来作为保存的路径,如下图所示。

2. 也就是说你需要在Python代码的同级目录,提前新建一个文件夹,名叫“天堂网爬的图片”,如果没有这个文件夹的话,将会报下图的错。

3. 使用with函数进行文件的打开和写入,下方代码的含义是创建一个文件,代码框里边有具体的注释。

4. 下面是各个编码代表的含义,可以学习一下。

5. 基于以上代码,基本上就可实现批量下载。接下来,我们继续优化一下。我们导入一个叫fake_useragent的库 fake_useragent第三方库,来实现随机请求头的设置。

6. 我们可以再初始化init方法,添加ua.random,让它随机的产生;其中UserAgent代码如图:(这里设置随机产生50个挑选其中一个进行请求)

7. 最终实现的效果图,终端显示如下图所示。

8. 将图片自动下载到本地后的效果图,高清的噢~

9. 至此,针对解析出来的图片地址予以批量下载的任务已经完成,接下来自己可以开心的去浏览图片啦。

10. 不建议大家爬取太多数据,这样会给服务器增大负载,浅尝辄止即可。

/4 小结/

本文基于理论篇,通过Python 中的爬虫库 requestslxmlfake_useragent,带大家进行网页结构的分析以及网页图片地址数据的提取,并且针对解析出来的图片地址予以批量下载,方法行之有效,欢迎大家积极尝试。

如果需要本文源码的话,请在公众号【Python爬虫与数据挖掘】后台回复“高清图片”四个字进行获取,觉得不错,记得给个star噢。

往期精彩文章推荐:

  • 手把手用Python教你如何发现隐藏wifi
  • 手把手教你用Python做个可视化的“剪刀石头布”小游戏
  • 手把手教你使用Python批量创建复工证明 想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。