软件开发的四大悖论
Infoworld 特约撰稿人 Nick Hodges 发布了一篇名为 “Four paradoxes of software development” 的文章,阐述了他眼中的软件开发领域的四大悖论。 全文内容如下: 桥梁建设 vs 软件开发:四个令人困惑的悖论 土木工程师可以理直气壮地说,世界上没有两座完全相同的桥梁。然而,桥梁共享许多已知特性,其建筑材料也有明确参数。桥梁建设涉及大量已知的已知项,未知的未知项远比人们想象的少得多。 我并非土木工程师,对设计和建造桥梁的杰出人士充满敬意。但我想通过这种对比说明:编写优秀、可运行的软件极其困难。软件开发团队承接的每个项目都是独一无二的。尽管项目之间存在相似性,但每个软件项目都有其独特的细微差别、需求,以及大量的未知未知项。 或者说,软件开发充满了难以处理的悖论。以下是四个典型案例: 悖论一:无人知晓工期,但客户坚持要交付日期 坦率地说,这可能是软件开发组织面临的最大挑战。我们根本无法确定任何项目需要多长时间。当然,我们可以估算,但结果几乎总是大错特错 ——...
PyPy、Numba 与 Cython,哪个是最佳 Python运算解决方案?
正如Python之父说:“大部分觉得Python慢的应用都是没有正确地使用Python。” 由于Python由于要在运行时编译和解释执行字节码,而且这个过程中参与了很多类似运行时类型检查的操作等一系列其他操作,从而产生了很多额外开销,降低了性能。 为了让这门语言变得完美,PyPy、Numba、Cython解决方案应用而生。 PyPy PyPy是用RPython(CPython的子集)实现的Python,根据官网的基准测试数据,它比CPython实现的Python要快6倍以上。快的原因是使用了Just-in-Time(JIT)编译器,即动态编译器,与静态编译器(如gcc,javac等)不同,它是利用程序运行的过程的数据进行优化。 **适用场景:**PyPy最适合纯Python应用程序,不适用于C扩展 Numba Numba 是 python 的即时(Just-in-time)编译器,即当您调用 python 函数时,您的全部或部分代码就会被转换为“即时”执行的机器码,它将以您的本地机器码速度运行。 python 代码的编译过程包括四个阶段:词法分析 -> 语法分析...
在你的html页面里执行python
💚 pyodide 介绍 Pyodide是CPython到WebAssembly/Emscripten的一个接口,主要在浏览器中使用。 Pyodide在浏览器中使用micropip安装和运行Python包。它附带了一个健壮的Javascript⟺ Python外部函数接口,这样您就可以在代码中自由地混合这两种语言,而不会产生太大的摩擦。这包括对错误处理(用一种语言抛出错误,用另一种语言捕获错误)、异步/等待等的完全支持。在浏览器中使用时,Python可以完全访问Web API。 💚 在浏览器使用python repl 体验地址 http://pyodide.org/en/stable 页面截图如下 首先在你的html代码里加入这行,引入pyodide 1https:///pyodide/v0.20.0/full/pyodide.js pyodide.js文件定义了一个名为loadPyodide的异步函数,该函数设置Python环境并返回Pyodide顶级名称空间。 123456789async function main() { let pyodide...
前端Cypress自动化测试全网详解
Cypress 自动化测试详解:从安装到实战 Cypress 是一个强大的端到端(End-to-End, E2E)功能测试框架,基于 Node.js 构建,支持本地浏览器直接模拟测试,并具有测试录屏功能,极大地方便了测试失败时的场景重现与问题定位。本文将详细介绍 Cypress 的安装、配置以及一个实际的自动化测试示例。 一、安装 Cypress 安装 Node.js 首先,你需要安装 Node.js。Node.js 的安装包可以从其官方网站(https://nodejs.org/en/download/ )下载。下载完成后,按照提示进行安装。 安装完成后,打开命令行工具(cmd 或 PowerShell),输入以下命令以确认安装成功: 12node -vnpm -v 安装 Cypress 接下来,我们需要安装 Cypress。首先,在你的工作目录中创建一个新的文件夹 例如 Ui_test,然后使用 cd 命令进入该文件夹。 12mkdir Ui_testcd Ui_test 执行以下命令以安装 Cypress: 12npm init -ynpm...
为什么要写测试用例,测试用例写给谁看?
“为什么要编写测试用例,测试用例写给谁看”,这个问题看似简单,但却涵盖了一系列复杂的考虑因素,并不太好回答。 为了向各位学测试的同学们解释清楚“为什么编写测试用例是至关重要的”,我将通过以下5个方面进行展开: 1、为什么要写测试用例? 2、测试用例写给谁看? 3、测试用例使用案例分享 4、测试用例在测试工作中的地位分享 5、测试用例学习资源分享 好,现在我们开始。 一、为什么需要编写测试用例?5大原因 测试用例是为特定测试目的设计的测试执行文档,它包括测试输入、执行步骤和预期结果,用于验证软件在不同情景下的行为。 为什么需要测试用例,以下是一些重要原因: 发现问题: 编写测试用例有助于发现潜在的缺陷和错误。它们允许测试人员模拟各种使用情况,确保软件质量。 验证需求: 测试用例可以用来验证软件是否满足规格和需求。它们帮助确保软件功能按照规划和设计的方式工作。 防止漏测: 测试用例可以防止遗漏关键功能或场景,充当了一个详尽的检查清单,确保了对软件各个方面的全面测试。 实施测试的标准:...
Web前端自动化测试Cypress实践总结
Excerpt 本文主要首先主要介绍了什么是自动化测试,接着对常用的自动化测试框架进行了对比分析,最后,介绍了如果将自动化测试框架Cypress运用在项目中。 ...
python虚拟环境venv直接复制迁移的方法
python虚拟环境venv迁移布署有很多的方法,大家自行搜索。这里只介绍一种:直接复制的方法 1、将整个文件夹复制到新的电脑 2、修改pyvenv.cfg文件内的home为你新电脑python的安装路径。 3、 如果你使用vscode,还需要修改vscode的配置文件launch.json,这样就可以在新的电脑上调试了。 4、修改程序目录下Scripts\activate文件(可以用记事本打开) VIRTUAL_ENV="E:\your_folder"改为你新电脑的位置 5、修改程序目录下Scripts\activate.bat文件(可以用记事本打开) set VIRTUAL_ENV=E:\mySourse\anzhi4改为你新电脑的位置 6、运行程序目录下Scripts\activate.bat文件,激活虚拟环境。
技术人的大模型应用初学指南
Excerpt 随着人工智能技术的快速发展,检索增强生成(RAG)作为一种结合检索与生成的创新技术,正在重新定义信息检索的方式。本文深入探讨了 RAG 的核心原理及其在实际应用中的挑战与解决方案。文章首先分析了通用大模型在知识局限性、幻觉问题和数据安全性等方面的不足,随后详细介绍了 RAG 通过 “检索 + 生成” 模式如何有效解决这些问题。具体而言,RAG 利用向量数据库高效存储与检索目标知识,并结合大模型生成合理答案。此外,文章还对 RAG 的关键技术进行了全面解析,包括文本清洗、文本切块、向量嵌入、召回优化及提示词工程等环节。最后,针对 RAG 系统的召回效果与模型回答质量,本文提出了多种评估方法,为实际开发提供了重要参考。通过本文,读者可以全面了解 RAG 技术的原理、实现路径及其在信息检索领域的革命性意义。 前言 人工智能(AI)时代的到来为技术人员提供了丰富的学习和发展机会。对于没有算法背景的技术同学来说,迎接这种新兴机遇与挑战并做好应对准备和知识储备是非常重要的。 结合笔者这一段对于大模型和 AI 技术的一些学习以及对基于 AI...
软件工程的 13 条法则
1、帕金森定律:工作会膨胀以填满可用的时间。 2、霍夫斯塔特定律:事情总是比你预期的要长,即使你已经考虑了霍夫斯塔特定律。 3、布鲁克斯定律:向一个已经延期的软件项目增加人力只会让它更加延期。 4、康威定律(及逆康威定律):组织做的设计往往是其内部沟通结构的复制品。 5、坎宁安定律:在互联网上获得正确答案的最佳方式不是提问,而是发布一个错误答案。 6、斯特金定律:90% 的东西都是垃圾。 7、扎温斯基定律:每个程序都试图扩展,直到能够读取邮件。那些无法如此扩展的程序会被能够做到的程序所取代。 8、海勒姆定律:当 API 的用户数量足够多时,你在合约中承诺什么并不重要:系统的所有可观察行为都会被某些人所依赖。 9、普赖斯定律:在任何群体中,50%...
OpenDroneMap:无人机摄影测量入门教程
无人机摄影测量简介 无人机摄影测量是一种利用无人机搭载的摄影设备,通过获取地面物体的图像信息,进行测量和分析的技术。它广泛应用于地形测绘、农业监测、灾害评估等领域。 1.1 无人机摄影测量的原理 无人机摄影测量基于光学成像原理,通过无人机上的相机捕捉地表图像,然后利用图像处理技术提取所需信息。这一过程通常包括图像获取、预处理、特征提取和数据分析等步骤。 1.2 无人机摄影测量的应用 无人机摄影测量在多个行业都有显著的应用,例如: 地形测绘:通过无人机摄影获取的高分辨率图像,可以制作出精确的地形图。 农业监测:无人机摄影可以帮助监测作物生长情况,评估病虫害。 灾害评估:在自然灾害发生后,无人机摄影可以快速评估受灾情况,为救援提供数据支持。 12345678910111213141516171819202122232425262728293031323334# 以下是一个简单的无人机摄影测量数据处理示例import cv2import numpy as np# 假设我们已经获取了一张无人机拍摄的图像image_path =...












