settings.txt文件夹中:
node_mirror: https://nodejs.org/dist/
npm_mirror: https://github.com/npm/cli/archive/
Monthly Archives: 6 月 2024
常用的npm命令
在使用npm(Node Package Manager)时,有一些常用命令是每个开发者都应该熟悉的,这些建立了在Node.js和前端项目中管理依赖项的基础。下面是一些常用的npm命令:
- 初始化一个新项目
npm init: 交互式创建一个package.json文件。
npm init -y: 快速创建一个package.json文件,跳过询问步骤,使用默认值。 - 安装依赖
npm install: 安装一个包,并将其添加到package.json文件的dependencies中。
npm install--save-dev: 安装一个包,并将其添加到package.json文件的devDependencies中。
npm install: 根据当前目录下的package.json文件安装所有依赖。 - 卸载依赖
npm uninstall: 从项目中移除一个包,并更新package.json和package-lock.json文件。 - 更新依赖
npm update: 更新所有模块到package.json中指定的最新版本。
npm update: 更新指定的包到最新版本。 - 查看安装的包
npm list: 查看当前项目安装的所有npm包。
npm list --global: 查看全局安装的所有npm包。
npm list: 查看特定包的版本和依赖信息。 - 运行脚本
npm run: 运行package.json中scripts对象下的指定脚本。 - 发布和管理包
npm login: 登录到npm账户。
npm publish: 发布一个包到npm仓库。
npm version: 更新你的包的版本号(update_type可以是major、minor或patch)。
npm deprecate@
" ": 弃用一个特定版本的包,并提供一个理由。 - 管理缓存
npm cache clean --force: 清除npm缓存。在某些情况下有助于解决与缓存相关的问题。 - 查看包信息
npm view: 查看一个包的详细信息,比如版本号、依赖关系等。
aws 设置实例状态检查失败警报
在CloudWatch控制台中,选择“Alarms”。
点击“Create alarm”按钮。
在“Select metric”中,选择“EC2” -> “Per-Instance Metrics” -> 选择你的实例 -> 选择“StatusCheckFailed”。
点击“Select metric”。
配置警报条件:
统计数据(Statistic):选择最小值(Minimum)。
周期(Period):选择5分钟。
条件(Conditions):大于(>)
阈值(Threshold):0
点击“Next”。
在“Configure actions”中,选择“Create new topic”或选择一个已有的SNS topic。
配置通知的接收邮箱。
点击“Next”并完成配置。
aws 实例流量告警设置
阈值类型
静态
每当 NetworkIn 为
大于/等于 (>=)
比…
10485760
这里需要写阈值(Threshold):10 MB(注意:这里单位是Bytes,需要转换,例如10 MB = 10 1024 1024 Bytes)
Response.blob() 和 Blob() 构造函数返回的一个新的 Blob 对象 之间的区别 例如:
Response.blob()方法和Blob()构造函数都可以用来创建Blob对象,但它们的使用场景和目的有所不同。
Response.blob()
Response.blob()
是Fetch API的一部分,它是在处理Fetch请求的响应时使用的。当您向一个服务器发送请求并接收到响应时,如果响应数据是二进制数据,您可以使用Response.blob()
来获取这些数据的Blob对象。
例如,如果您请求一个图片或视频文件,服务器的响应可以通过Response.blob()
转换为Blob对象。转换后的Blob对象可以用于多种用途,比如使用URL.createObjectURL()
创建一个URL来显示这个图片或视频。
这个方法是异步的,返回一个Promise对象,这意味着您需要使用.then()方法或async/await语法来处理结果。
fetch('image.png')
.then(response => response.blob())
.then(blob => {
// 使用获取到的blob对象
const imageUrl = URL.createObjectURL(blob);
document.querySelector('img').src = imageUrl;
});
Blob()构造函数
Blob()
构造函数用于直接在JavaScript中创建一个新的Blob对象。您可以提供一个数组作为第一个参数,数组中的每个元素都会成为Blob对象的一部分。这些元素可以是字符串、ArrayBuffer或者另一个Blob对象等。第二个参数是一个可选的对象,指定了Blob对象的属性,比如type
属性来指定MIME类型。
这个构造函数主要用于在程序中动态创建二进制数据。您可以使用它来创建文件、处理文本或生成媒体内容等。
const blobParts = ['<q id="a"><span id="b">hey!</span></q>']; // 一个包含单个字符串的数组
const blob = new Blob(blobParts, { type: "text/html" }); // 得到blob
// 使用创建的blob对象
const url = URL.createObjectURL(blob);
document.querySelector('iframe').src = url;
Blob(Binary Large Object)对象的应用
Blob(Binary Large Object)对象表示了一个不可变的、原始数据的类文件对象。Blob对象可以表示存储在内存中的大量数据,比如图片、视频、音频或其他二进制格式的文件。通过JavaScript,我们可以用Blob来处理这些数据,实现多种功能,比如文件下载、上传、处理和转换等。
Blob的应用场景
1. 创建和下载文件
您可以使用Blob来动态创建文件内容,并允许用户下载这些文件。例如,您可以将一个文本数组转换成Blob对象,然后通过创建一个指向该Blob的URL,并将其设置为标签的href属性,实现文件的下载功能。
2. 上传文件
在前端,Blob可以用于上传文件。Blob对象可以通过AJAX或Fetch API上传到服务器。这对于上传图片或视频文件等大型文件特别有用,因为Blob可以将文件作为二进制数据传输,提高效率。
3. 从Blob对象创建URL
可以使用URL.createObjectURL()方法从Blob对象创建一个URL。这个URL可以用于在网页上显示Blob数据,例如显示图片或视频。
const blob = new Blob([document.querySelector('textarea').value], { type: 'text/plain' });
const url = URL.createObjectURL(blob);
document.querySelector('img').src = url;
4. 处理媒体文件
Blob非常适合于处理媒体文件,比如图片,MP4视频等。例如,您可以读取用户选择的图片文件,并使用Blob来预览图片;或者,您可以通过JavaScript处理视频文件,比如截取视频的一部分或更改视频的编码格式。
5. 缓存数据
Blob也可以用于前端的数据缓存。对于从服务器获取的大型数据(如JSON数据、图片或视频文件),您可以将其存储为Blob,然后在本地缓存。当需要这些数据时,可以直接从Blob读取,避免重复从服务器加载数据,提高应用性能。
Parcel报错: Uncaught ReferenceError: parcelRequire is not defined
问题在script标签的type="module" 上.... 不加这个type就正常了
==>
当在<script>
标签中使用type="module"时,您告诉浏览器该脚本应当作JavaScript模块来处理。这意味着:
默认严格模式:模块自动处于严格模式下,您不需要在脚本顶部显式声明"use strict";。
模块作用域:在模块脚本中声明的变量、函数等不会自动成为全局作用域的一部分。它们只存在于模块作用域内,除非您显式地导出或导入它们。
支持模块导入和导出:您可以使用import和export语句在模块之间共享代码。
在使用Parcel这类构建工具时,它负责处理模块的打包和依赖管理。如果您的项目被构建为一个单一的打包文件,而您在引入这个文件时使用了type="module",那么可能会发生一些不一致的行为,因为Parcel已经将模块和其他代码转换成了浏览器可以直接执行的格式。具体表现取决于Parcel的版本和配置,以及您的项目结构。
如果不使用type="module"属性,脚本会被当作传统的JavaScript脚本来处理,这可能和Parcel构建的输出更加兼容,特别是如果Parcel已经处理了所有必要的模块转换。
如何决定是否使用type="module"?
如果您直接在HTML中编写或引入ES模块(也就是说,不通过构建工具处理),那么使用type="module"是正确和必要的。
如果您通过构建工具(如Parcel、Webpack等)构建项目,并且构建输出是一个自包含的脚本,那么通常不需要在引用构建后的脚本时使用type="module",除非您有特定的理由或构建工具的文档特别建议这样做。
查询 VPS 的实际地理位置
使用 curl 查询 IP 信息
curl http://ip-api.com/json/
使用 geoiplookup 工具
安装 geoiplookup
查询 VPS 的位置
geoiplookup $(curl -s ifconfig.me)
使用 whois 命令
whois 命令可以查询 IP 地址的注册信息,这通常包含地理位置。
安装 whois
sudo yum install whois
查询VPS的位置
whois $(curl -s ifconfig.me)
检查本地 DNS 配置
确认本地的 DNS 配置没有影响到结果。可以尝试使用不同的 DNS 服务器来验证地理位置。您可以使用 Google 的公共 DNS 服务器 8.8.8.8 和 8.8.4.4,或者 Cloudflare 的公共 DNS 服务器 1.1.1.1 和 1.0.0.1。
配置本地 DNS
编辑 /etc/resolv.conf 文件:
sudo vim /etc/resolv.conf
将内容修改为:
nameserver 8.8.8.8
nameserver 8.8.4.4
ssh 动态端口转发
SSH动态端口转发(也称为SSH隧道或SOCKS代理)是一个非常强大的功能
它能够通过SSH连接将本地计算机连接到另一个网络上的服务器,并将该服务器用作网络请求的代理。这个功能不仅可以用于安全地浏览互联网。
安全浏览
绕过网络限制: 如果你处于一个限制了访问特定网站的网络中,通过SSH动态端口转发可以安全地访问这些网站。
匿名浏览: 使用SSH隧道可以提高你浏览网站时的隐私性,因为你的网络流量会通过远程服务器转发。
开发与测试
访问受限的开发环境: 如果你需要访问部署在受限网络环境中的开发服务器,可以使用SSH隧道安全地访问这些资源。
数据库管理: 通过SSH隧道连接到远程数据库服务器,可以在本地运行数据库管理工具进行操作,而不需要直接暴露数据库端口。
远程工作
安全访问内部工具: 对于远程工作人员,通过SSH隧道可以安全地访问公司内网中的内部工具和服务。
文件传输: 虽然SCP和SFTP是更常用的SSH文件传输方法,但通过SSH隧道,你也可以安全地使用基于HTTP的文件管理界面。
游戏与娱乐
游戏:在某些情况下,使用SSH隧道可以减少游戏延迟或访问地区限制内容。
命令与配置
一个基本的SSH动态端口转发命令如下所示:
ssh -D 8080 -C -q -N 用户名@远程服务器地址
- D 8080 指定了本地端口(在这个例子中是8080),SSH客户端会监听这个端口,并将通过SSH连接转发的流量作为SOCKS代理服务。
- C 启用压缩,可以提高传输速度并减少数据使用。
- q 启用静默模式,减少日志输出。
- N 表示不执行远程命令,只进行端口转发。
Parcel 的内置处理
使用 Parcel 插件处理静态文件
npm install parcel-plugin-static-files-copy --save-dev
在项目根目录创建一个 static 文件夹,并将 flowers.jpg 文件放入其中。
创建或更新 package.json 文件:
{
"scripts": {
"start": "parcel basic-fetch.html"
},
"staticFiles": {
"staticPath": "static",
"staticOutPath": "./"
}
}
将 flowers.jpg 文件移动到 static 文件夹中:
...
运行项目