Latest Posts

Node js 里有没有像selenium类似的framework?

在Node.js中,有一个类似于Selenium的自动化测试框架叫做Puppeteer。Puppeteer是一个由Google开发的Node.js库,提供了一个API来控制和操作浏览器。它可以用于模拟用户行为、进行页面导航、执行JavaScript、提取数据等等。 Puppeteer具有以下特点: 可以通过无头模式运行,即在没有界面的情况下运行浏览器操作。 可以与Chrome浏览器无缝集成。 支持对页面进行截图和PDF生成。 允许模拟键盘和鼠标输入。 可以进行页面自动化测试和爬虫等任务。 你可以使用Puppeteer来实现类似于Selenium的自动化测试和浏览器操作。它提供了丰富的API,使得控制和操作浏览器变得非常方便。你可以使用Puppeteer来加载网页、填写表单、点击按钮、抓取数据等等操作。 要开始使用Puppeteer,你需要先安装它。可以使用npm(Node.js的包管理器)来安装Puppeteer。在命令行中运行以下命令: 安装完成后,你可以在Node.js脚本中引入Puppeteer并开始使用它。以下是一个简单的示例,展示了如何使用Puppeteer来打开网页并截取页面截图: 这段代码会启动一个无头Chrome浏览器实例,创建一个新的页面,然后导航到指定的网址,并最后保存页面截图为example.png。 这只是Puppeteer的一个简单示例,它还有很多功能和API可以探索。你可以查阅Puppeteer的官方文档来了解更多信息和示例:https://pptr.dev/

用python给文件生成bloom filter

bloom filter是什么? Bloom filter(布隆过滤器)是一种概率型数据结构,用于判断一个元素是否属于一个集合,具有高效的插入和查询操作。它可以快速告诉你某个元素“可能存在”或“一定不存在”于一个集合中,但无法确定元素的确切存在与否。 Bloom filter 由布隆提出并在1970年发表,它基于哈希函数的应用。它的核心是一个位数组(bit array)和一组哈希函数。位数组用于表示集合,初始时所有的位都被置为0。哈希函数用于将元素映射为位数组的索引,并将对应位置的位设置为1。 插入元素时,通过对元素应用一组哈希函数,可以得到多个位数组索引,然后将这些索引对应的位设置为1。查询元素时,同样对元素应用哈希函数,得到相应的位数组索引,如果所有的索引位置的位都为1,则说明元素“可能存在”于集合中;如果任何一个索引位置的位为0,则可以确定元素“一定不存在”于集合中。 由于使用了多个哈希函数和位数组,Bloom filter 具有较低的内存占用和快速的查询速度。然而,它也存在一定的误判率(false positive),即在判断元素存在时可能会出现错误判断。这是因为不同元素的哈希函数映射到位数组时可能产生冲突,导致位数组的某些位置同时被设置为1,从而影响判断结果。 Bloom filter 主要应用于那些对查询速度要求较高、可以容忍一定的误判率的场景,例如网络缓存、大规模数据集的去重、垃圾邮件过滤等。通过适当调整位数组大小和哈希函数的数量,可以在一定程度上控制误判率和内存占用。 bloom filter 和 hash function有什么不同? Bloom filter(布隆过滤器)和哈希函数在使用方式和目的上有一些不同之处: 目的:Bloom filter 的主要目的是判断一个元素是否属于一个集合,它提供了一种快速的判断方式,可以告诉你元素“可能存在”或“一定不存在”于集合中。而哈希函数的主要目的是将数据映射为较短的固定长度值,常用于加密、数据唯一性校验、散列查找等方面。 数据结构:Bloom filter 是一种概率型数据结构,它由一个位数组(bit array)和一组哈希函数组成。位数组用于表示集合,哈希函数用于将元素映射到位数组的索引。哈希函数通常是不可逆的,将输入映射到固定长度的输出。而哈希函数本身并不包含数据结构,它只是一个单独的函数。 功能:Bloom filter 用于判断元素是否属于一个集合,具有高效的插入和查询操作。它可以给出“可能存在”或“一定不存在”的答案,但无法确定元素的确切存在与否。哈希函数则是将数据进行转换和计算,通常用于唯一标识、散列查找、数据完整性校验等。 冲突和误判:Bloom filter 可能存在哈希冲突,即不同元素经过哈希函数计算后映射到相同的位数组位置,这可能导致误判。而哈希函数应该尽量避免冲突,以确保在不同的输入上产生不同的输出,但在实际应用中,哈希冲突是难以完全避免的。 总的来说,Bloom filter 是基于哈希函数的一种数据结构,它利用哈希函数将元素映射到位数组,并通过多次哈希映射来提供快速的元素判断。哈希函数则是独立的计算函数,用于将数据映射为固定长度的值,常用于唯一标识、散列查找、数据完整性校验等场景。 用Python给文件生成bloom…
Read more

在Docker里跑datadog agent

可以运行以下命令 以下是docker run命令的各个参数的解释: -d: 表示在后台运行容器。 –name dd-agent: 为容器指定一个名称,本例中为dd-agent。 -v /var/run/docker.sock:/var/run/docker.sock:ro: 挂载主机上的Docker守护进程的Unix套接字,以便容器可以获取有关主机上运行的其他容器的信息。ro表示将套接字文件以只读方式挂载到容器中。 -v /proc/:/host/proc/:ro: 挂载主机上的/proc目录,以便容器可以访问主机的进程信息。ro表示将该目录以只读方式挂载到容器中。 -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro: 挂载主机上的/sys/fs/cgroup目录,以便容器可以访问主机的cgroup信息。ro表示将该目录以只读方式挂载到容器中。 -e DD_API_KEY=: 设置Datadog API key,这里留空,需要在运行容器之前将其替换为有效的API key。 -e DD_SITE=”us5.datadoghq.com”: 设置Datadog网站,这里设置为Datadog US5网站。 gcr.io/datadoghq/agent:7: 指定要运行的Docker镜像。本例中为Datadog Agent镜像的版本7。 -e是Envirnoment, -v是volume的意思。 总之,这个命令的目的是在Docker中启动Datadog Agent容器,并将所需的目录和文件挂载到容器中,以便容器可以访问主机上的资源和信息,并在容器中设置Datadog API key和网站。 怎样更新Docker container里的datadog.yaml? 可以在原来的Docker image基础上新建的一个image。在Dockerfile里加入

怎样查看Mac OS的某个端口(port)有没被使用

如果要看8125有没被占用,可以用以下命令 如果8125被占用了,会打印出相关信息。需要注意的是在Mac OS里要用sudo。如果不用的话不会报错,只是不打印信息出来。 lsof是什么意思? lsof 的全称是 “list open files”,它是一个用于列出当前系统打开的文件、网络连接、以及 Unix 域套接字的工具。使用 lsof 命令可以查看当前系统中打开的文件和网络连接的详细信息,包括哪些进程打开了这些文件或连接,以及这些进程的一些属性等等。 在 Mac 或者 Linux 系统中,lsof 命令是一个非常有用的工具,它可以帮助用户了解当前系统中正在运行的进程、网络连接等情况,对于排查一些网络和系统方面的问题非常有帮助。

docker-compose.yaml是什么?和dockerFile有什么关系?

docker-compose.yaml是用于定义和运行多个Docker容器的YAML文件,它提供了一种声明式的方式来定义应用程序的各个组件之间的关系,并将它们作为一个整体来管理。通过docker-compose.yaml,可以轻松地定义和管理多个Docker容器之间的依赖关系,以及它们的运行配置。 在docker-compose.yaml中,可以指定多个服务,并定义每个服务所需的Docker镜像、端口映射、环境变量等参数,以及它们之间的关系。在创建和运行多个Docker容器时,可以使用docker-compose命令来自动化执行多个Docker容器的启动、配置和连接等操作。 Dockerfile是用于定义Docker镜像构建过程的文件。它包含了一系列的指令,用于指定构建过程中需要执行的操作,例如安装软件、配置环境变量、复制文件等。通过Dockerfile,可以定义一个自定义的Docker镜像,并在创建Docker容器时使用这个镜像。 docker-compose.yaml和Dockerfile的关系在于,docker-compose.yaml可以引用一个或多个Docker镜像,其中可以包括使用Dockerfile构建的自定义镜像。通过docker-compose.yaml和Dockerfile的组合,可以实现定义和管理复杂的多容器应用程序。 能用python小程序给个例子示范一下怎样用dockerfile和docker-compose.yaml吗? 当然可以,以下是一个示例程序: 首先是 Dockerfile 文件,它用于构建一个基于 Python 3.8 的 Docker 镜像,其中包含一个简单的 Python 应用程序: 然后是 docker-compose.yaml 文件,它定义了一个服务,使用上面构建的自定义镜像运行 Python 应用程序: 最后是一个简单的 Python 应用程序,它使用 Flask 框架创建了一个简单的 Web 服务: 在当前目录下,有一个名为 requirements.txt 的文件,它列出了 Flask 框架的依赖包: 现在可以在命令行中运行 docker-compose up 命令启动服务。Docker Compose 将会使用上述的 Dockerfile…
Read more

Nginx是什么?

nginx是什么,和apache有什么不同? Nginx是一款高性能的Web服务器和反向代理服务器。它是一款轻量级、可靠性高、扩展性好的开源软件,广泛用于构建高性能的Web应用程序和服务。 与 Apache 相比,Nginx 具有以下几个不同之处: 资源消耗:Nginx 是一款轻量级的服务器软件,它的内存和 CPU 资源消耗要比 Apache 更少,特别是在高并发环境下表现更佳。 可扩展性:Nginx 能够支持更多的并发连接,因此在高负载情况下,它可以更好地处理请求,而不会降低性能。 配置:Nginx 的配置文件比 Apache 更易于阅读和理解,它使用的是基于块的配置语法,具有更好的可读性和可维护性。 模块:Nginx 具有强大的模块系统,支持动态模块加载和卸载。这使得用户可以根据自己的需要定制和扩展 Nginx 的功能,从而更好地满足自己的需求。 静态文件服务:在处理静态文件时,Nginx 的性能比 Apache 更好,这是因为 Nginx 的文件处理方式更加简单和高效。 总的来说,Nginx 的性能、可扩展性和配置灵活性都比 Apache 更优秀,尤其是在高负载环境下,Nginx 更能够稳定地处理大量并发请求。 nginx和apache是同一类型的软件吗? 是的,Nginx和Apache都是Web服务器软件,它们都用于提供 Web 服务并响应客户端请求。它们都支持HTTP和HTTPS协议,并提供了一系列的模块和插件来增强其功能,如URL重写、反向代理、缓存、SSL等。 不过,虽然Nginx和Apache都是Web服务器软件,但它们的设计理念和架构方式却有所不同。Nginx是一款高性能、低消耗的服务器,它的核心设计目标是为了处理高并发请求;而Apache则是一款更为灵活的服务器,它提供了广泛的功能和模块,可以用于处理各种不同的Web服务需求。 因此,在实际应用中,选择使用Nginx还是Apache,取决于具体的应用场景和需求。如果你的应用需要高性能和处理大量并发请求,那么Nginx可能更适合;如果你需要更加灵活的功能和模块,那么Apache可能更适合。 nginx支持php吗?…
Read more

怎样计算cosine similarity? Python实例

1 使用Tensorflow / Keras Keras提供的loss function有cosine similarity 输出结果 需要注意的是,Keras算出来的结果是负的。因为它是作为一种loss function,如果2个向量越相似,他们越接近1,所以loss越小,那么Keras就把一般意义上的Consine similarity加了个负号。 2 只使用Raw Python 只用Raw Python写个函数也不难,代码如下 输出结果 这样就没有负数问题了。

美国的三大有名都会区:DFW、RTP和DMV介绍

美国是一个拥有众多世界级城市和都会区的国家。这些都会区不仅是经济中心,也是文化、政治和科技创新的中心。在本文中,我们将介绍美国几个有名的都会区,包括DFW、RTP和DMV。 DFW都会区 也就是大达拉斯地区。 DFW(Dallas-Fort Worth)都会区位于得克萨斯州中北部,包括达拉斯市(Dallas, TX)和沃斯堡市(Fort Worth, TX),以及周边的城市和社区。该地区是美国第四大都会区,拥有强大的经济实力和多元化的产业,包括能源、航空、金融和科技等。此外,DFW地区还是一个文化多样性和历史悠久的地区,拥有众多博物馆、艺术中心和历史遗迹。当地著名大学有位于Richardson, TX的UT Dallas。著名大公司有德州仪器(Texas Instruments)。UT Dallas的前身为德州仪器旗下的科研机构。 RTP科研三角区 RTP(Research Triangle Park)位于北卡罗来纳州(North Carolina)的三角洲地区,包括罗利(Raleigh, NC)、达勒姆(Durham, NC)和教堂山市(Chapel Hill, NC)。值得一题的是作为罗利都会区的一部分的Cary市。Cary在过去几十年里经历了快速的发展,成为一个充满活力、安全友善、自然环境优美、教育系统优秀和文化多元化的城市,现在为北卡罗来纳州最受欢迎的居住城市之一。 RTP地区是美国最大的高科技研究和开发中心之一,拥有世界著名的研究机构和高科技公司,如IBM、微软和思科等。RTP地区的经济实力主要集中在信息技术、生命科学和环保等领域,是美国创新和科技发展的重要基地之一。当地著名大学有杜克大学(Duke University)和北卡大学教堂山分校(UNC Chapel Hill)。 DMV地区 DMV(District of Columbia, Maryland and Virginia)地区包括美国首都华盛顿特区(Washington DC)和周边的马里兰州和弗吉尼亚州的城市和社区。该地区是美国政治和文化的中心,拥有许多政府机构、大学和国际组织,如国务院、白宫和世界银行等。此外,DMV地区还是一个拥有丰富历史和文化遗产的地区,拥有众多博物馆、纪念碑和艺术中心。著名大学有”美国人民大学“:乔治敦大学(Georgetown University),前总统比尔克林顿毕业的本科母校。

DEI是什么?

DEI为“Diversity, equity, and inclusion“的首字母缩写。 例句:那个教授只是表面上支持DEI。 DEI,即多元化、平等和包容性,是一种在组织中推行的重要价值观和实践。它旨在创造一个多元化、包容性和公平的工作环境,使每个员工都能充分发挥自己的潜力,同时也能获得公平的机会和待遇。 多元化意味着在组织中包容各种不同背景、文化和生活经历的人员。这不仅仅是一种道德责任,也是创造更高绩效的关键因素。研究表明,多元化的团队可以创造更创新、更具竞争力的解决方案,提高生产力并提高员工满意度。 平等是指每个人都有同等的机会和待遇,不受任何歧视或偏见的影响。平等不只是在法律上体现,也应该在组织文化中得到重视和实践。这将有助于建立一个公平、开放和透明的工作环境。 包容性则是要保证每个员工都能感到自己被接纳和认可。这意味着必须尊重每个人的差异和独特性,并为他们提供一个舒适和支持的工作环境。这样,员工就能够更好地融入组织,发挥他们的潜力。 在现代组织中,DEI已经成为了一个关键的主题。组织需要在招聘、培训、晋升和薪酬等方面实践DEI,以确保每个员工都能获得公平和平等的待遇。同时,组织也需要持续不断地反思自己的文化和实践,以确保他们真正实践了DEI价值观,并积极创造一个更加多元化、包容性和公平的工作环境。