分类 软件技巧 下的文章 - 🥝 E 家 分 享 🥝
首页
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
搜 索
1
自动提取 ChromeGo 一键翻墙包内的免费节点
301 阅读
2
GigaFile - 日本免费大文件加密分享服务,最长保留文档100天
213 阅读
3
【汇总:免费节点 - 每周更新】
184 阅读
4
CloudFlare WARP 免费 VPN 搭建教程
109 阅读
5
【E家分享月刊系列】2024-12
92 阅读
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
登录
搜 索
标签搜索
WordPress
脚本
GitHub
科学上网
哈佛管理导师
E家分享月刊系列
V2ray
Mac软件
AI
Cloudflare
Docker
免费节点
建站在线工具
Excel技巧
Notion
Nginx
ChatGPT
图像编辑
免费图床
网盘资源
E家之长
累计撰写
195
篇文章
累计收到
246
条评论
首页
栏目
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
页面
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
用户登录
登录
找到
59
篇与
软件技巧
相关的结果
2023-08-01
前端页面部署方式的全面解析与比较
本文作者:Expo 转载地址:https://sspai.com/post/81564前端页面简介部署前端页面有多种方法,你可以选择最适合你项目需求和你自己技术背景的方式。以下是一些常见的部署方式:FTP上传: 这是最传统的方式,将你的前端文件(HTML,CSS,JavaScript等)上传到你的web服务器。大多数的web主机提供FTP访问,这也是小型项目的快速部署方式。使用Git: 如果你的服务器支持Git,你可以设置一个Git仓库,并使用**git push**命令部署你的前端页面。这种方式方便版本控制,也支持多人协作。使用SSH: 可以通过SSH将你的文件推送到你的服务器,这个过程可以通过脚本自动化。使用云服务: 像AWS S3,Google Cloud Storage,Azure Storage等服务可以托管静态网站,通常它们提供了很好的性能和安全性。使用专门的前端部署服务: 服务如Netlify,Vercel等,这些平台通常提供一站式服务,包括版本控制,持续集成,HTTPS和CDN等。使用CDN服务: 这些服务可以将你的站点部署到全球的服务器上,加速访问速度。例如,Cloudflare,Akamai等。容器化部署: 使用如Docker等工具,将前端应用容器化,然后在Kubernetes等容器编排平台进行部署。以上的部署方式有的适合小型项目,有的适合大型项目,有的需要更多的技术知识,选择哪一种方式取决于你的具体需求。Nginx配置 Nginx 来为前端页面提供服务通常需要以下步骤:步骤1:上传代码首先,你需要将你的前端代码上传到服务器上的某个目录,比如 **/var/www/mywebsite**。步骤2:创建 Nginx 配置文件Nginx 的配置文件通常位于 **/etc/nginx/** 目录下,具体路径可能会因服务器的不同而略有不同。在该目录下,你通常会找到一个叫做 **sites-available** 的目录。在这个目录下,你可以为每个网站创建一个配置文件。例如,你可以创建一个新的配置文件,命名为 **mywebsite**:sudo nano /etc/nginx/sites-available/mywebsite步骤3:编辑 Nginx 配置文件在新建的配置文件中,你可以输入以下内容来配置你的前端页面:server { listen 80; server_name your_domain_or_IP; location / { root /var/www/mywebsite; index index.html; try_files $uri $uri/ =404; } }其中 **your_domain_or_IP** 应该替换为你的域名或者IP地址,**/var/www/mywebsite** 应该替换为你的代码所在的目录。此配置意味着 Nginx 将监听80端口,并为所有指向你的域名或IP地址的请求提供服务。默认文档为 index.html,如果请求的文件不存在,Nginx 将返回 404 状态码。步骤4:启用网站创建并编辑完配置文件后,你需要创建一个到 **sites-enabled** 目录的符号链接来启用你的网站:sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/步骤5:检查配置文件在重启 Nginx 之前,你应该检查你的配置文件有没有语法错误:sudo nginx -t如果没有错误,你会看到类似这样的输出:nginx: configuration file /etc/nginx/nginx.conf test is successful步骤6:重启 Nginx最后,你需要重启 Nginx 来使你的配置生效:sudo service nginx restart现在你的前端页面应该可以通过你的域名或IP地址访问了。注意,如果你的服务器有防火墙,你可能需要配置防火墙来允许 HTTP 和 HTTPS 流量。更完整的 Nginx 配置首先,你需要为你的域名获取一个 SSL 证书,你可以使用 Let's Encrypt 提供的免费证书。配置文件可能如下:server { listen 80; server_name your_domain_or_IP; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name your_domain_or_IP; ssl_certificate /etc/letsencrypt/live/your_domain_or_IP/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain_or_IP/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; location / { root /var/www/mywebsite; index index.html; try_files $uri $uri/ =404; } location ~* \\.(jpg|jpeg|png|gif|ico|css|js|pdf)$ { expires 30d; } gzip on; gzip_vary on; gzip_min_length 10240; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml; gzip_disable "MSIE [1-6]\\."; }以下是这个配置的一些解释:第一个 **server** 块监听80端口,也就是HTTP的默认端口,然后把所有的请求重定向到HTTPS。第二个 **server** 块监听443端口,也就是HTTPS的默认端口。**ssl_certificate** 和 **ssl_certificate_key** 指向你的SSL证书和私钥的位置。**ssl_protocols** 和 **ssl_ciphers** 定义了你服务器支持的SSL协议和加密套件。**location /** 块定义了你的网站的根目录和默认文件,以及如何处理不存在的路径。**location ~* \\.(jpg|jpeg|png|gif|ico|css|js|pdf)$** 块定义了对于静态文件如图片,CSS文件,JavaScript文件等,客户端应该缓存30天。**gzip** 相关的行启用了gzip压缩,并定义了哪些类型的文件应该被压缩。这只是一个基本的配置样例,你可以根据你的需求进行修改。有许多其他的选项可以配置,例如负载均衡,反向代理,HTTP/2 支持等。你可以查看 Nginx 的文档来了解更多信息。负载均衡使用 Nginx 来做负载均衡的实现非常直接。以下是一个简单的示例来说明如何配置 Nginx 来实现对多个服务器的负载均衡。假设你有两个或更多的应用服务器实例,它们分别托管在不同的 IP 地址或主机名下**。你可以在 Nginx 配置文件中设置一个 upstream 模块,然后在 server 模块中将请求反向代理到这个 upstream。**首先,你需要在你的 Nginx 配置文件(一般位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录下的某个文件)中定义一个 upstream。例如:http { upstream myapp { server app1.example.com; server app2.example.com; } ... }在这个例子中,myapp 是你定义的 upstream 的名字,app1.example.com 和 app2.example.com 是你的应用服务器的地址。然后,在 server 模块中,你可以将来自客户端的请求代理到这个 upstream:server { listen 80; location / { proxy_pass <http://myapp>; } }在这个例子中,所有来自客户端的 HTTP 请求(即 :80 端口的请求)都会被 Nginx 转发到定义的 upstream(即 myapp)。Nginx 默认使用**轮询(round-robin)算法将请求分配给 upstream 中的服务器,你也可以配置其他的负载均衡算法,如最少连接(least\_conn)**或 IP 哈希(ip\_hash)。这样,Nginx 就会把请求均衡地转发到你的各个应用服务器实例上,实现负载均衡。注意这个配置对于前端静态页面来说可能不太必要,因为静态页面通常不会对服务器产生太大负载,但对于动态应用来说是非常有用的。Docker使用 Docker 来部署前端应用是一种很好的方式,因为它可以将你的应用及其依赖项打包到一个独立、可移植的容器中,可以在任何安装了 Docker 的环境中运行。以下是使用 Docker 部署一个基本的静态前端页面的步骤:步骤1:创建 Dockerfile在你的项目根目录中,创建一个名为"Dockerfile"的文件。这个文件是用来定义你的 Docker 镜像的,可以看作是一个自动化的脚本。以下是一个简单的 Dockerfile 示例,其中使用了官方的 Nginx 镜像来部署静态页面:# 使用官方的 Nginx 镜像 FROM nginx:latest # 删除 Nginx 默认的静态资源 RUN rm -rf /usr/share/nginx/html/* # 将你的静态资源复制到 Nginx 的静态资源目录下 COPY ./dist /usr/share/nginx/html # 暴露 80 端口 EXPOSE 80 # 启动 Nginx CMD ["nginx", "-g", "daemon off;"]步骤2:构建 Docker 镜像在项目根目录下,你可以使用 **docker build** 命令来根据 Dockerfile 构建 Docker 镜像:docker build -t my-frontend-app .其中,**-t my-frontend-app** 参数用于给你的 Docker 镜像命名,**.** 指定了 Dockerfile 所在的位置(在这里,它在当前目录下)。步骤3:运行 Docker 容器你现在可以使用 **docker run** 命令来运行你刚刚构建的 Docker 镜像:docker run -p 80:80 -d my-frontend-app**p 80:80** 参数指定了将容器的 80 端口映射到宿主机的 80 端口,**d** 参数指定了以后台模式运行容器。现在你应该可以在你的浏览器中通过访问 **http://localhost** 来查看你的前端页面了。如果你的前端应用更复杂,或者需要与后端服务进行交互,你可能需要进行更复杂的配置,比如使用 Docker Compose 来管理多个服务,或者使用环境变量来配置你的应用。负载均衡如果你的前端应用使用 Docker 部署,有多种方式可以实现负载均衡。以下是一些常见的方法:1. 使用 Docker Swarm:Docker Swarm 是 Docker 的原生集群管理和编排工具。在 Swarm 集群中,你可以创建一个服务,然后指定服务的副本数量。Swarm 会自动在集群的节点间分配这些副本,实现负载均衡。以下是一个简单的 Docker Swarm 服务创建命令:docker service create --name my-frontend-app --publish 80:80 --replicas 3 my-frontend-app在这个命令中,**--name my-frontend-app** 指定了服务的名称,**--publish 80:80** 指定了将容器的 80 端口映射到宿主机的 80 端口,**--replicas 3** 指定了创建 3 个副本,**my-frontend-app** 是你的 Docker 镜像的名称。2. 使用 Kubernetes:Kubernetes 是一个更强大的容器编排平台,它也支持负载均衡。在 Kubernetes 中,你可以创建一个 Deployment 和一个 Service,Kubernetes 会自动为你的应用提供负载均衡。以下是一个简单的 Kubernetes Deployment 和 Service 的定义:apiVersion: apps/v1 kind: Deployment metadata: name: my-frontend-app spec: replicas: 3 selector: matchLabels: app: my-frontend-app template: metadata: labels: app: my-frontend-app spec: containers: - name: my-frontend-app image: my-frontend-app ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: my-frontend-app spec: type: LoadBalancer ports: - port: 80 selector: app: my-frontend-app在这个定义中,Deployment 创建了 3 个前端应用的副本,Service 为这些副本提供了一个负载均衡器。3. 使用云服务提供商的负载均衡器:如果你的应用部署在云环境(如 AWS, Google Cloud, Azure 等),你可以使用云服务提供商的负载均衡服务。这些负载均衡服务通常提供了更强大的功能,比如自动扩缩容,健康检查,SSL 终结等。以上都是实现 Docker 负载均衡的一些方式,你可以根据你的具体需求和环境选择最合适的方式。PM2PM2 主要用于管理和维护 Node.js 应用,但是你也可以使用 PM2 来运行一个静态服务器,用来部署你的前端页面。这可以通过使用像 **http-server** 这样的简单的静态文件服务器来完成。以下是使用 PM2 部署前端页面的步骤:安装 http-server首先,你需要在你的项目中安装 **http-server**。你可以使用 **npm** 来安装它:npm install http-server --save创建 PM2 配置文件接下来,你需要创建一个 PM2 的配置文件,例如 **ecosystem.config.js**。在这个文件中,你需要指定 **http-server** 的路径和你的前端页面的路径:javascriptCopy code module.exports = { apps: [ { name: 'frontend', script: 'node_modules/http-server/bin/http-server', args: './dist -p 8080', // 这里的 ./dist 是你的前端页面的路径,-p 8080 是你要监听的端口 instances: 'max', exec_mode: 'cluster', watch: true, // 如果你希望在文件改变时自动重启服务器,可以设置 watch 为 true env: { NODE_ENV: 'production', }, }, ], };使用 PM2 启动你的前端页面现在,你可以使用 PM2 来启动你的前端页面了:pm2 start ecosystem.config.js通过以上步骤,你就可以使用 PM2 和 **http-server** 来部署你的前端页面了。这种方式的好处是你可以利用 PM2 提供的特性,例如应用的自动重启和负载均衡。但需要注意的是,**http-server** 是一个非常简单的静态文件服务器,如果你需要更复杂的功能(例如 SSL、反向代理等),你可能需要考虑使用更强大的服务器软件,例如 Nginx 或 Express.js。部署方式比较技术优点缺点出现时间适合场景不适合场景Nginx轻量级,高性能,可作为反向代理和负载均衡器需要手动配置和管理2004年任何需要静态页面服务的项目需要动态服务器端渲染的项目PM2 Serve可以使用PM2来管理静态服务进程不包含反向代理或负载均衡器PM2:2014年需要简单的静态文件服务需要复杂的HTTP请求处理或负载均衡的项目Docker容器化,跨平台需要手动管理容器和镜像,比其他选项复杂2013年任何需要跨平台部署或以统一方式部署多种服务的项目小规模或简单的项目,因为Docker可能引入不必要的复杂性GitHub Pages免费,支持自定义域名,集成GitHub功能有限,仅支持静态内容2008年简单的个人、项目或组织页面复杂的、需要后端的应用Netlify/Vercel提供自动部署,函数即服务等免费版有一些限制Netlify:2014年, Vercel:2015年静态网站和Jamstack应用大规模、复杂的后端应用云存储服务 (AWS S3, Google Cloud Storage)简单,可扩展,集成CDN需要配置权限和CDNAWS S3:2006年, Google Cloud Storage:2010年静态网站,或需要大规模存储的应用需要后端逻辑的应用同样,你应该根据你的具体需求来选择最适合的部署方法。例如,如果你的网站很简单,GitHub Pages 可能就足够了。如果你需要一些后端逻辑,但不想管理服务器,那么 Netlify 或 Vercel 可能是一个好选择。如果你需要完全的控制和可扩展性,Docker 或云存储服务可能更合适。Node 应用简介部署 Node.js 应用也有多种方法,选择哪一种取决于你的项目需求和技术背景。以下是一些常见的部署方式:手动部署: 这是最基本的方式,你需要在你的服务器上安装Node.js,然后通过FTP或者SCP将你的代码上传到服务器,然后运行你的应用。使用版本控制系统(如Git): 你可以在服务器上设置一个Git仓库,并通过**git push**命令来部署你的应用。你还需要在服务器上设置一个脚本来自动运行你的应用。使用PM2: PM2是一个带有负载均衡功能的Node应用的进程管理器,可以让你的应用后台运行,如果应用崩溃了,PM2会自动重启应用。使用Docker: Docker让你可以在一个隔离的容器中运行你的应用,这可以避免很多系统依赖问题。你可以将你的Node.js应用“Docker化”,并在任何支持Docker的平台上运行。使用云服务: 许多云服务提供了Node.js的支持,比如AWS Elastic Beanstalk,Google App Engine,Heroku,Azure App Service等。这些服务通常会处理大部分部署细节,让你可以专注于编写代码。使用PaaS平台: 例如Heroku,它为部署Node.js应用提供了非常方便的平台。你只需要将你的代码推送到Heroku的Git仓库,然后Heroku就会自动为你的应用分配资源,并启动你的应用。使用Serverless架构: 如AWS Lambda,Azure Functions,Google Cloud Functions等,你只需要编写处理请求的函数,然后上传到服务提供商的平台,服务提供商会为你处理扩容、负载均衡等问题。选择适合你的方式,主要取决于你的应用规模,预期的访问量,以及你希望多大程度上控制你的服务器和部署过程。PM2PM2 是一个非常流行的 Node.js 应用程序的生产过程管理器,可以让你保持应用的持续运行,可以让你在应用崩溃时自动重启,也可以使你的应用运行在多个 CPU 核心上,从而提高性能。以下是使用 PM2 部署 Node.js 应用的步骤:安装 PM2首先,你需要在你的服务器上安装 PM2。你可以使用 npm(Node.js 的包管理器)来安装 PM2:npm install -g pm2这个命令会全局安装 PM2,所以你可以在任何地方运行 pm2 命令。启动你的应用有了 PM2,你就可以使用它来启动你的 Node.js 应用了。假设你的入口文件是 **app.js**,你可以运行以下命令来启动你的应用:pm2 start app.js你的应用现在就在 PM2 的管理下运行了。如果你的应用崩溃,PM2 会自动重启它。你也可以使用 PM2 的其他命令来查看应用的状态,查看日志,停止或重启应用等。配置应用对于更复杂的应用,你可能需要进行更多的配置。例如,你可能希望你的应用在服务器启动时自动启动,或者你可能希望在多个 CPU 核心上运行你的应用。PM2 允许你创建一个配置文件(通常是一个名为 **ecosystem.config.js** 的文件),在这个文件中,你可以定义你的应用的配置。以下是一个简单的配置文件示例:javascriptCopy code module.exports = { apps: [{ name: "my-app", script: "app.js", instances: "max", exec_mode: "cluster" }] }在这个配置中,**name** 属性定义了应用的名称,**script** 属性定义了应用的入口文件,**instances** 属性定义了应用的实例数量(在这个例子中,"max" 表示在所有可用的 CPU 核心上运行应用),**exec_mode** 属性定义了应用的执行模式(**cluster** 表示启用集群模式)。然后,你可以使用 **pm2 start ecosystem.config.js** 命令来按照这个配置启动你的应用。开启日志PM2 还提供了一些方便的工具来帮助你监视你的应用。例如,你可以使用 **pm2 logs** 命令来查看你的应用的日志,使用 **pm2 monit** 命令来查看每个应用的 CPU 和内存使用情况。以上就是使用 PM2 部署 Node.js 应用的基本步骤。需要注意的是,虽然 PM2 可以帮助你管理你的应用,但它并不能解决所有问题。例如,你可能还需要配置你的服务器防火墙,配置你的域名解析,安装和配置 SSL 证书等。高级应用PM2 是一个强大的 Node.js 应用进程管理器,除了基本的启动、监控和重启应用,它还提供了许多高级的特性和功能。以下是一些可以使用的高级功能:热重载(Hot Reload): 热重载可以在不停机的情况下重启应用。这对于需要长时间运行的应用来说非常有用,因为它可以在不影响用户的情况下进行更新。你可以使用 **pm2 reload <app_name>** 来进行热重载。应用监控(Monitoring): 使用 **pm2 monit** 命令,你可以看到所有由 PM2 管理的应用的 CPU 和内存使用情况,还可以看到每个应用的日志和其它信息。这个功能可以帮助你实时监控应用的性能并快速定位问题。日志管理(Log Management): PM2 会自动捕获你的应用的标准输出(stdout)和标准错误(stderr),并将它们保存到日志文件中。你可以使用 **pm2 logs** 命令来查看这些日志。集群模式(Cluster Mode): 在集群模式下,PM2 会启动多个应用实例,并自动负载均衡到所有可用的 CPU 核心。这可以极大地提高多核服务器的性能。启动文件(Startup Script): PM2 可以生成一个启动脚本,这样你的应用就可以在服务器启动时自动启动。你可以使用 **pm2 startup** 命令来生成这个脚本。自定义日志、PID 和应用列表路径: PM2 允许你自定义日志文件、PID 文件和应用列表文件的路径,这可以帮助你更好地组织你的文件。源代码变更自动重启(Watch & Restart): PM2 可以监听你的文件变化,并在文件变化时自动重启应用。你可以在启动应用时添加 **-watch** 参数来启用这个功能,或者在配置文件中设置 **watch** 属性。部署系统(Deployment System): PM2 提供了一个简单的部署系统,可以让你更容易地更新你的应用并追踪版本。你需要在配置文件中设置 **deploy** 属性来使用这个功能。这些高级功能可以让你更好地管理你的 Node.js 应用,并帮助你提高应用的性能和可靠性。如果你想了解更多关于 PM2 的信息,你可以查看 PM2 的官方文档。exec\_mode 有哪些模式PM2 提供两种执行模式,即 "fork" 和 "cluster"。这两种模式的主要区别在于它们处理 Node.js 应用的方式,以及它们如何利用多核 CPU。Fork Mode(分支模式): Fork mode 是 PM2 的默认执行模式。在这种模式下,每个 Node.js 应用都运行在自己的单独进程中。这意味着每个应用都有自己独立的内存空间,并且不能直接与其他应用共享状态。这种模式适合运行多个不同的 Node.js 应用。Cluster Mode(集群模式): 在集群模式下,PM2 会启动多个应用的实例,并自动进行负载均衡,让所有可用的 CPU 核心都被利用起来。这可以极大地提高多核服务器的性能。集群模式利用了 Node.js 的内建集群模块,因此你的 Node.js 应用不需要做任何修改就可以在集群模式下运行。如果你想在启动应用时指定执行模式,你可以在 **pm2 start** 命令后添加 **--exec-mode** 参数。例如,以下命令会在集群模式下启动 app.js:pm2 start app.js --exec-mode cluster如果你想在配置文件中指定执行模式,你可以设置 **exec_mode** 属性。例如,以下配置会在集群模式下启动 app.js:module.exports = { apps : [{ name: "app", script: "app.js", exec_mode: "cluster" }] }需要注意的是,虽然集群模式可以提高性能,但它也有一些限制。例如,因为每个应用实例都运行在自己的进程中,它们不能直接共享状态。如果你的应用需要维护共享状态,你可能需要使用外部服务(如 Redis)或者使用 IPC 通信。负载均衡使用 PM2 部署 Node.js 应用时,你可以利用其内建的集群模式(cluster mode)来实现负载均衡。在这种模式下,PM2 会创建多个应用实例,并自动将进入的请求分发到各个实例,从而实现负载均衡。以下是使用 PM2 实现负载均衡的步骤:确定应用实例的数量你可以选择让 PM2 自动根据 CPU 的核心数量来创建应用实例。你只需要将 instances 属性设置为 "max",PM2 就会创建与 CPU 核心数量相等的应用实例:module.exports = { apps : [{ name: "app", script: "app.js", instances: "max", exec_mode: "cluster" }] }你也可以手动指定实例的数量。只需要将 instances 属性设置为你想要的数字即可:module.exports = { apps : [{ name: "app", script: "app.js", instances: 4, // 创建4个实例 exec_mode: "cluster" }] }设置执行模式要启用集群模式,你需要将 exec\_mode 属性设置为 "cluster"。启动应用在你的配置文件设置好之后,你可以使用 pm2 start 命令启动你的应用:pm2 start ecosystem.config.js现在,你的 Node.js 应用已经在 PM2 的集群模式下运行了,PM2 会自动实现负载均衡。如果有任何应用实例崩溃,PM2 也会自动重启它。注意,虽然 PM2 的集群模式可以提高多核服务器的性能,但它并不是一个全功能的负载均衡解决方案。例如,它不支持会话粘性(session stickiness),这意味着如果你的应用需要维护用户会话,用户的每个请求可能会被路由到不同的应用实例。在这种情况下,你可能需要使用其他的负载均衡解决方案,例如 Nginx 或 HAProxy。PM2 + Nginx以下是使用 PM2 和 Nginx 部署 Node.js 应用并实现负载均衡的步骤:安装和配置PM2首先,你需要在服务器上安装 Node.js 和 PM2。你可以使用 NPM(Node Package Manager)来安装 PM2:npm install -g pm2然后,你可以使用 PM2 来启动你的 Node.js 应用。假设你的入口文件叫做 **app.js**,你可以使用以下命令来启动你的应用:pm2 start app.js -i max上述命令中的 **-i max** 参数将会告诉 PM2 启动尽可能多的应用实例来利用所有的CPU核心,这将帮助你实现负载均衡。安装和配置Nginx然后,你需要在服务器上安装 Nginx。在 Ubuntu 或 Debian 上,你可以使用以下命令来安装 Nginx:sudo apt-get update sudo apt-get install nginx接下来,你需要配置 Nginx 作为你的 Node.js 应用的反向代理。你需要编辑 Nginx 的配置文件(通常位于 **/etc/nginx/sites-available/default**)并添加以下内容:upstream myapp { server 127.0.0.1:3000; keepalive 64; } server { listen 80; location / { proxy_pass <http://myapp>; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }在上述配置中,**upstream模块定义了一个服务器组,Nginx将会在该服务器组中进行负载均衡。proxy_pass 指令告诉 Nginx 将所有的请求转发到 myapp** 服务器组。注意:你需要将 **server 127.0.0.1:3000 中的3000**替换为你的 Node.js 应用实际监听的端口。重启Nginx保存配置文件后,你需要重启Nginx以使新的配置生效:sudo systemctl restart nginx现在,你的 Node.js 应用应该可以通过 http://your-server-ip 访问了,同时,你已经成功地实现了负载均衡。记住,你需要为每一个 Node.js 应用的实例配置一个独立的**server条目。你可以将这些server条目添加到upstream模块中以实现负载均衡。如果你的应用在多台服务器上运行,你可以将每个服务器的地址添加到upstream**模块中。Docker为了使用 Docker 来部署一个 Node.js 应用,你需要创建一个 Dockerfile,这是一个用来构建 Docker 镜像的文本文件。然后你可以运行这个 Docker 镜像以启动你的应用。以下是一个基本的 Dockerfile 的示例,它描述了如何创建一个包含 Node.js 应用的 Docker 镜像:# 使用官方 Node.js 作为基础镜像 FROM node:14 # 设置工作目录 WORKDIR /usr/src/app # 复制 package.json 和 package-lock.json COPY package*.json ./ # 安装你的应用的依赖 RUN npm install # 复制你的应用的源码 COPY . . # 暴露你的应用监听的端口 EXPOSE 8080 # 启动你的应用 CMD [ "node", "app.js" ]这个 Dockerfile 假设你的应用在 "app.js" 中定义。你可能需要根据你的应用修改这个文件名。一旦你的 Dockerfile 创建好了,你可以使用以下命令来在 Dockerfile 所在的目录中构建你的 Docker 镜像:docker build -t my-node-app .然后你可以使用以下命令来运行你的 Docker 镜像:docker run -p 8080:8080 -d my-node-app这个命令会启动一个新的 Docker 容器,并将容器的 8080 端口映射到宿主机的 8080 端口。**-d** 选项会让 Docker 在后台运行这个容器。这是使用 Docker 部署一个 Node.js 应用的基本步骤。根据你的应用和环境,你可能需要进行更复杂的 Docker 配置。Docker + Docker Swarm果你希望在 Docker 环境中部署 Node.js 应用并实现负载均衡,但是不想使用 Nginx,你可以考虑使用 Docker 的内置工具如 Docker Swarm 或者第三方工具如 Traefik 和 HAProxy。以下是一个使用 Docker Swarm 实现负载均衡的例子:创建 Dockerfile你需要创建一个 Dockerfile 来定义你的 Node.js 应用的镜像。以下是一个简单的 Dockerfile 例子:FROM node:14 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "node", "server.js" ]构建 Docker 镜像在你的 Dockerfile 所在的目录中运行以下命令来构建你的 Docker 镜像:bashCopy code docker build -t my-node-app .初始化 Docker Swarm在你的服务器上运行以下命令来初始化 Docker Swarm:docker swarm init部署你的 Node.js 应用你可以使用 Docker Service 来部署你的 Node.js 应用。以下命令将会启动三个你的 Node.js 应用的实例,并在端口8080上公开服务:docker service create --name my-node-service --publish published=8080,target=8080 --replicas=3 my-node-appDocker Swarm 将会自动在这三个实例之间实现负载均衡。以上步骤提供了使用 Docker Swarm 进行负载均衡的基础步骤。如果你希望进行更复杂的负载均衡配置,你可能需要查阅更多的 Docker Swarm 文档或者考虑使用更专业的负载均衡工具如 Traefik 和 HAProxy。Docker + k8s使用 Docker 部署 Node.js 应用,并使用 Kubernetes(k8s)实现负载均衡,你需要创建 Dockerfile、构建和推送 Docker 镜像、然后在 Kubernetes 上创建 Deployment 和 Service。以下是具体的步骤:创建 Dockerfile首先,创建一个 Dockerfile 来定义你的 Node.js 应用的 Docker 镜像:FROM node:14 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "node", "server.js" ]构建 Docker 镜像在你的 Dockerfile 所在的目录中运行以下命令来构建你的 Docker 镜像:docker build -t my-node-app .推送 Docker 镜像到镜像仓库然后,你需要将你的 Docker 镜像推送到一个可以被你的 Kubernetes 集群访问的镜像仓库中,例如 Docker Hub。首先,登录你的 Docker Hub 帐户:docker login然后,标记并推送你的镜像:docker tag my-node-app:latest yourusername/my-node-app:latest docker push yourusername/my-node-app:latest记住,你需要将 **yourusername** 替换为你的 Docker Hub 用户名。创建 Kubernetes Deployment然后,你需要在 Kubernetes 上创建一个 Deployment 以运行你的 Node.js 应用。创建一个名为**my-node-app-deployment.yaml**的文件,然后添加以下内容:yamlCopy code apiVersion: apps/v1 kind: Deployment metadata: name: my-node-app spec: replicas: 3 selector: matchLabels: app: my-node-app template: metadata: labels: app: my-node-app spec: containers: - name: my-node-app image: yourusername/my-node-app:latest ports: - containerPort: 8080在这个文件中,**replicas: 3**意味着 Kubernetes 将运行三个你的应用的副本。然后,运行以下命令来创建 Deployment:kubectl apply -f my-node-app-deployment.yaml创建 Kubernetes Service最后,你需要创建一个 Kubernetes Service 来公开你的应用。创建一个名为**my-node-app-service.yaml**的文件,然后添加以下内容:apiVersion: v1 kind: Service metadata: name: my-node-app spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: my-node-app在这个文件中,**type: LoadBalancer**意味着 Kubernetes 将创建一个云提供商的负载均衡器,并将公网流量导向你的应用。然后,运行以下命令来创建 Service:kubectl apply -f my-node-app-service.yaml现在,你的 Node.js 应用应该已经在 Kubernetes 上运行,并且已经实现了负载均衡。你可以运行以下命令来检查你的 Service 的状态:kubectl get svc my-node-app在输出中,你应该可以看到你的 Service 的外部IP地址,你可以通过这个IP地址访问你的应用。Docker 还有必要使用 pm2 吗PM2 是一个流行的进程管理器,它可以让你保持你的应用始终在线,自动重启在异常情况下崩溃的应用,并且可以方便地管理你的应用的日志。然而,当你的应用运行在 Docker 容器中时,你可能并不总是需要 PM2。在 Docker 的哲学中,通常每个容器只运行一个进程,当这个进程结束时,容器就会停止。因此,如果你的应用崩溃,Docker 可以自动重启容器,这就提供了 PM2 的部分功能。此外,Docker 也提供了日志管理的功能,你可以使用**docker logs**命令来查看你的应用的输出。然而,PM2 还提供了其他一些功能,例如集群模式,它可以启动多个你的应用的实例来充分利用多核CPU。如果你的应用需要这种功能,并且你不打算使用其他的负载均衡解决方案,那么在 Docker 容器中使用 PM2 可能是有价值的。总的来说,是否在 Docker 中使用 PM2 取决于你的具体需求。如果 Docker 的内建功能已经足够满足你的需求,那么你可能不需要 PM2。但是,如果你需要 PM2 的某些特定功能,那么你可能会希望在你的 Docker 容器中使用 PM2。Docker+Nginx 为什么 不适合场景 负载均衡的项目首先,我要澄清一点,Docker+Nginx 是可以实现负载均衡的。当你在 Docker 中启动多个应用实例,然后使用 Nginx 作为反向代理来分发流量时,就实现了负载均衡。我的表述可能有些误导,对此我感到非常抱歉。然而,使用 Docker+Nginx 实现负载均衡有一个局限性,那就是配置的复杂性。**在一个动态环境中,你可能会经常启动和停止 Docker 容器,这就需要你不断地更新 Nginx 的配置以反映这些变化。**这个过程可以手动完成,但在一个大型系统中,这可能会变得非常繁琐和容易出错。此外,Nginx 并不直接支持一些更高级的负载均衡策略,例如基于请求的路由或基于会话的持久性。这些功能通常需要使用更专业的负载均衡器或服务网格来实现。所以,当我说 Docker+Nginx 可能不适合需要复杂负载均衡的项目时,我是指对于那些需要更高级负载均衡功能或者需要在动态环境中自动处理容器变化的项目,可能需要考虑使用如 Kubernetes 或 Docker Swarm 这样的工具,因为它们提供了更强大和灵活的负载均衡能力,并能更好地处理容器的动态性。部署方式比较技术优点缺点出现时间适合场景不适合场景PM2进程管理,自动重启,负载均衡不处理反向代理或容器化2014年单体应用,小规模项目大规模或需要高度可配置的项目PM2+Nginx进程管理,自动重启,负载均衡,反向代理,静态文件服务不处理容器化PM2:2014年,Nginx:2004年单体应用,需要处理HTTP请求的项目需要容器化的项目Docker容器化,跨平台不直接提供进程管理,反向代理,或负载均衡2013年任何大小的项目,需要跨平台的项目无特殊需求的小型项目,因为 Docker 可能引入不必要的复杂性Docker+Nginx容器化,反向代理,静态文件服务,可以配置为负载均衡需要手动维护Nginx配置以反映容器变化,可能不能提供更高级的负载均衡功能Docker:2013年,Nginx:2004年需要处理HTTP请求和基本负载均衡的项目,需要跨平台的项目需要自动处理容器变化或需要高级负载均衡的项目Docker Swarm容器化,服务发现,负载均衡,集群管理功能可能不如 Kubernetes 丰富2016年中等规模的项目,需要集群管理的项目大规模或需要高度可配置的项目Docker+K8s容器化,服务发现,负载均衡,自动扩缩容,滚动更新,自愈,集群管理相对复杂,学习曲线陡峭Docker:2013年,K8s:2015年大规模或复杂的微服务架构的项目小规模项目,因为 Kubernetes 可能引入不必要的复杂性选择哪种部署方式主要取决于你的应用的特性和需求,以及你和你的团队的技能和资源。对于小规模的单体应用,PM2 或者 PM2+Nginx 可能就足够了。如果你的应用需要在多台服务器或云环境中部署,那么你可能需要考虑使用 Docker。如果你的应用是一个大规模或复杂的微服务架构的项目,那么你可能需要考虑使用 Kubernetes。【END】
2023年08月01日
18 阅读
0 评论
0 点赞
2023-07-22
Badge制作指北 - 手把手教你制作Badge
本文作者:NowScott 转载地址:https://sspai.com/post/81310前前言本文并非正规指南,看完本文只能保证你可以像我一样做出各种各样的Badge,但深层原理并不会讲解,也不会教你如何在自己的服务器上渲染自己的Badge。前言标题中的Badge,是什么意思呢?你或许也见过类似这种的小图标:点击的时候还会跳转到其他的链接。不知道你是否像我第一次见到这类图标时一样,觉得这小东西蛮有意思,利用很小的一部分空间就简洁地说明了很多事。介绍 Badge最开始我以为这只是一张带着链接的图片,但是深挖之后发现,这确实是一张带着链接的图片,只不过这张图片是实时渲染出来的。事实上你所看到的大部分Badge都来自badge/shields这个项目,这是一个开源项目,提供了一个用于生成Badge的工具和服务,旨在帮助开发人员和项目所有者在GitHub项目中创建各种样式和内容的自定义徽章。(后文我就用徽章来代替Badge)这个项目的核心功能是通过生成svg格式的徽章,来展示各种项目指标和状态,这些指标可以包括构建状态、代码覆盖率、下载数量、版本号等等。同时因为这是一张图片,所以也可以用来画点其他的东西,例如:不开玩笑,这个小徽章能做的事还是非常多的,接下来正式进入教学。组成看起来徽标只是分成了左右两个部分,但实际上还有更多的内容。首先是左侧的label,一般会在label上表明这个徽章是做什么的,接着把具体要展示的数值放在右侧的message上。在Label中可以显示一个logo,并且可以调节logo的颜色,然后徽章两侧的颜色也都可以通过labelColor和color来调节,整体的风格style也可以选择一个预设。还有通过cacheSeconds参数来确定保存在缓存中的时间,可以通过延长在缓存中的时间来减小服务器的压力,也可以通过缩减在缓存中的时间来快速响应。最后在这个徽章上附上要跳转的link,整个徽章的组成就是这些了。注意:就我目前所学来看,左侧的label是可以没有的,而右侧的message是一定存在的。简单制作了解了组成之后,那么就可以开始制作了。制作徽章是通过shields.io这个网站进入的,点击Get started,就可以开始制作了。进入之后默认是到静态徽章(没有数据需要更新的徽章)的页面,入门我们先尝试做一个静态徽章。现在看到左侧这部分(今晚测试用Google Chrome不知道为啥出不来右边这部分,换到Safari就没问题了):这部分要填写的就是徽章内容,按照label、message、color这样的顺序进行填写。其中用-分隔不同的内容,用_或%20来代替空格,如果你想要输入一个真的-,那么用两个--来表示一个真的-例如:当我输入Now--Scott-Happy_birthday-red,点击Execute,就生成了如下图标:此时我们就学会的最基础的静态徽章的制作。在上一部分我说过,label是可以省略的,怎么体现呢?那就是当我只输入两个内容,例如:Happy_birthday-red,这个时候并不会因为缺少一个内容报错,而是生成如下图标:但是message和color是不可缺少的,不然就会404报错。学会了基础的制作以后,让我们来试试在基础上增加一些内容。点击这里,让我们看看其他参数的设置会带来怎样的效果。例如我做出如下的设置:得到的结果就是这样:简单制作部分到这里就结束了,其余的参数可以自行设置练习。高阶制作说成高阶制作,其实也没高阶到哪里去(自嘲)。这部分主要讲的是这个项目支持配置的内容,非常的丰富,可以通过预设,加上修改几个简单的参数,就做好一个徽章。还是回到这个网站刚进来的界面,这次看左边这一列:这其中包含了非常多的预设,我拿Analysis/GitHub top language来举例:我是需要输入两个信息:就可以得到这样一个徽标:这个页面中的预设非常多,涵盖GitHub上的很多内容,还有一些其他的内容,剩余的部分就留给大家自行探索吧,临时需要哪个找不到了可以在右上角进行检索。拓展像徽章这种类似的实时变化的图片链接其实还有很多,我也只是接触了一小部分,接下来我就给大家介绍一下这两个:第一个是这个Star History网址是:star-history通过这个网站你可以做出这样的手绘风格的图片,用来记录获得星星的历史。第二个是github-profile-summary-cards网址是:github-profile-summary-cards通过这个网站,我们可以做出这样的效果图,放在个人主页也是蛮好的。相关Markdown语法在Markdown中,直接插入图片是:而插入链接的方法是:[描述文字](网页链接)那么将两者结合起来,做为一个图片链接,就是这样:[](网页链接)没错,就是将两者结合。而且在Markdown中实际上是支持链接引用的,这可以让你的链接更加简洁易读,同时也可以在一处一起修改和设置所有被引用的链接。具体的语法如下:[引用名]:链接 "注释" [baidu]:https://www.baidu.com "baidu-url"因此,当你声明完图片链接和网页链接,就可以使用这样的形式来设置一个徽章[![描述文字][image-url]][web-url](后面两个换成对应的引用名)这样可以使你的README.md文件在代码模式下更易读,也更容易修改。同时,Markdown也是支持HTML的代码的,可以通过一些HTML代码来让你的徽章更加美观,在此就不多说了。结尾如果你通过我的文章有多学到一点知识,那我的目的就达成了。如果发现本文有什么错误可以在评论区发出来,我会虚心接受并及时改正。【END】
2023年07月22日
7 阅读
0 评论
0 点赞
2023-07-12
Midjourney 零基础设计角色一致性
本文作者:yaoyao 转载地址:https://sspai.com/post/80999前言Midjourney 作为目前一款最火的 AIGC 绘图软件,在生成图片时,让人很惊艳,但是由于随机性很强,对于生成角色人物时,就面临一个很大的难题:如何保持角色输出的一致性呢?今天这篇文章,就带大家从基础的角色类型六大方向聊起,到摄影的构图光影,再到稳定角色的五大方法,绝对干货满满。一、角色类型六大方向1. Midjourney 角色万能公式Midjourney 是一种 AI 扩散模型,它通过我们输入的书面提示词,从噪音中创建图像。Midjourney 在创作人物角色万能公式:「角色描述」+「视角」+「距离」+「情绪」+「服装」+「风格」+「光源」2. 角色类型六大方向可以看到上面的万能公式中,包括角色构图的视角、距离、光源、角色情绪、角色服饰、风格,这也就是接下来我们要聊的角色类型的六大方向。其中三个方向是摄影方面的基础知识,后三个方向是角色情绪氛围感的营造。1)角色构图的视角人物构图的视角可以根据拍摄角度的高低和拍摄距离的远近来分类。在我自己整理的「AIGC关键词」库中选取几个有代表性的构图视角,来看一下 Midjounrney 的效果吧。① 正视角正视角是指在人像构图时,拍摄对象正对着相机的姿态,使人像呈现出正面的视角。咒语关键词:Front view② 后视角从人物背后拍摄,突出人物的背影和轮廓,通常用于创造出一种神秘、不可知或者留有想象空间的感觉。咒语关键词:Back View③ 侧视角侧面视角将人物的侧脸或侧身呈现出来,突出人物的轮廓和线条。这种视角常用于突出人物的特征、情绪或者用于展现人物的神秘感。咒语关键词:Side view④ 俯视视角从较高的位置向下拍摄人物。这种视角可以使人物显得较为渺小或弱小,适用于表现人物的脆弱性、无助感或者用于突出人物在环境中的位置。咒语关键词:High Angle⑤ 仰视视角从较低的位置向上拍摄人物。这种视角可以使人物显得更加强大、威严或者突出人物的自信和权威感。咒语关键词:Low Angle2)角色镜头的距离① 全景人物将整个人物的身体完整地包括在画面中。这种距离适用于需要展示人物的整体形象和服装风格的情况,例如时尚摄影或人物在特定环境中的定位。咒语关键词:Full-length Shot② 半身人物将人物的腰部或大腿以上的部分包括在画面中。这种距离通常用于展示人物的上半身,突出人物的表情、动作和姿势。咒语关键词:Half-length Shot③ 大头照将人物的头部和肩部包括在画面中。这种距离主要关注人物的面部特征、表情和眼神,常用于肖像摄影和艺术照。咒语关键词:Headshot④ 特写人物将人物的面部或某个局部特写出来,如脸部、眼睛、嘴唇等。这种距离能够突出人物的细节和情感,强调人物的表情和眼神。咒语关键词:Close-up Shot⑤ 细节特写将人物的局部细节或特定对象特写出来,如手部、鞋子、首饰等。这种距离可以突出细节和个性,用于强调人物的个人风格和特征。咒语关键词:Detail Shot3)角色光源的氛围感摄影中的光源对于人物摄影起着至关重要的作用,它可以影响照片的氛围、表达情感以及突出人物的特征。在选择光源时,要考虑到拍摄环境、主题和所需的效果。每种光源都有其独特的特点和应用场景,灵活运用不同的光源可以为人物摄影带来丰富的表现力和创意。在 Midjourney 中,一般不写灯光的描述,出图的质感也是很棒的,所以灯光的参数很容易被忽略。在我自己整理的「AIGC关键词」库中选取几个有代表性的灯光参数,来观察一下对角色氛围感的影响。① 暖光源暖光源通常呈现出较低的色温,呈现橙色或黄色调。它可以营造出温暖、舒适的氛围,增加照片的情感和温馨感。暖光源适合用于人物肖像、情感表达和温暖场景的拍摄。咒语关键词:Warm Light② 柔光源柔光源是一种能够产生柔和、均匀光线的灯光工具。它可以通过柔光箱、反射板或扩散器来实现,使光线更加柔和,减少阴影的硬度。柔光源适合用于人物肖像摄影,可以产生柔滑的肌肤效果和平滑的过渡。咒语关键词:Soft Light③ 冷光源冷光源的颜色温度较高,通常呈现出蓝色或白色调。它可以营造冷静、现代的氛围,适合用于时尚、商业等类型的人物摄影。咒语关键词:Cool Light④ 霓虹光源霓虹灯是一种具有鲜艳亮丽色彩的光源,常用于城市夜景或时尚摄影中。霓虹光源在人物摄影中可以产生独特的视觉效果和氛围,为照片增添了艺术感和时尚感。在 Midjourney 中使用较为广泛,让画面效果更加具有视觉冲击力。咒语关键词:Neon Lights⑤ 伦勃朗光伦勃朗光是一种经典的照明技术,以17世纪荷兰画家伦勃朗的绘画作品而得名。这种照明技术在人物摄影中可以产生独特的效果,突出人物的面部轮廓和表情。咒语关键词:Rembrandt light4)角色的情绪表情是拍摄人物时非常重要的一部分,它能够传达情感、故事和与观众的连接。① 微笑微笑是最常见和受欢迎的表情之一。它能够给人一种友善、亲切和开朗的感觉。咒语关键词:Smile② 内敛内敛的表情可以传达出思考、沉思、冷静或者严肃的感觉。这种表情适合用于突出人物的深度、内在世界或者专注于某个任务的情境。咒语关键词:Serious Expression③ 悲伤哀伤和忧郁的表情能够传达出悲伤、忧伤或者沉重的情感。这种表情适用于拍摄艺术作品、文化题材或者探索情感的摄影作品。咒语关键词:Sad④ 神秘神秘和迷惑的表情可以激发观众的好奇心和探索欲望。这种表情适合用于艺术摄影、时尚摄影或者表达复杂情感的作品。咒语关键词:Mysterious⑤ 哭泣咒语关键词:Cry5)角色的服装服装也是一个很专业的领域,需要学习很多服装相关的知识。① 传统风格传统风格的服饰通常是基于特定地区、文化或历史时期的传统服饰。它们可以是古代民族服饰、民俗服装或宗教仪式上的服饰,反映着传统价值观和身份认同。咒语关键词:Chinese Traditional style② 时尚风格时尚风格的服饰追随当前的时尚潮流和流行趋势。它们可能来自于时尚设计师的最新系列,注重时尚、前卫和个性化,常常以创新的方式演绎经典元素。咒语关键词:Fashionable style③ 正装风格正装风格的服饰适用于正式场合和商业环境,例如西装、套装和礼服。它们通常注重修身剪裁、优雅简约和专业形象。咒语关键词:Formal style④ 朋克风格朋克风格的服饰具有叛逆、个性和反主流的特点。它们可能包括皮革、铆钉、鱼网袜、涂鸦等元素,表达个人独立和反叛的态度。咒语关键词:Punk style⑤ 街头风格街头风格的服饰受到年轻人、街头文化和街头艺术的影响。它们常常包括休闲、运动和街舞风格的服装,注重舒适性和自由感。咒语关键词:Street style6)角色的风格Midjourney 可以模仿不同的绘画风格,并生成与该风格相似的绘画作品。这个时候,我们需要懂得基本的艺术家的风格和流派,提高创造性和审美决策来产生真正独特的 AI 艺术作品。下面分享一些 Midjourney 上很火的风格:① 写实人物写实人物风格在绘画中的作用是追求对人物形象的高度还原和真实性,创造出具有强烈共鸣力和艺术感的作品。咒语关键词:90s Hong Kong-style street② 日本漫画风日本漫画风格在绘画中具有独特的表现方式和艺术特点。它能够塑造出个性鲜明的角色形象,表达丰富的情感和情节,营造活泼有趣的画面,并推动创意和想象力的发挥。咒语关键词:Japanese comics③ 泡泡玛特泡泡玛特风格是成立于2010年的潮流文化娱乐品牌。盲盒风格在 Midjourney 中特别火热。咒语关键词:Popmart blind box④ 中国风中国风绘画注重表现自然景观和人文情怀。它常常通过描绘山水、花鸟、人物、建筑等元素,传达出对自然环境和人类生活的热爱与赞美,以及对和谐共生的追求。咒语关键词:Tradition Chinese Ink Painting style⑤ 赛博朋克赛博朋克绘画强调科技和未来感的表现。它常常描绘高科技设备、虚拟现实、机械增强等元素,营造出充满科幻和未来主义氛围的画面。咒语关键词:Cyberpunk3. 结语生成一张角色图片需要输入简洁精准的文字描述,这里总结复习一下 Midjourney 在创作人物角色万能公式:「角色描述」+「视角」+「距离」+「情绪」+「服装」+「风格」+「光源」你也可以只选取部分描述词,也会得到满意的图片,在输出图片时,不单单是一个段描述词就可以得到想要的效果,需要不断调整修改描述词,逐步完成效果。二、控制角色一致性五种方法接下来具体介绍五种利用 MIdjourney 输出统一性角色的方法,方法有简到繁,涉及到一些操作、后缀参数、prompt,适合有一定基础的同学查看。新手也可以点击我的主页查看我上一篇零基础的文章《Midjourney从零基础到落地实践》,速度学习一下再看下文会更加友好哦。Midjourney 是一种 AI 扩散模型,从噪音中创建图像。随机性比较强,即使输入相同的命令,每次输出的结果都会不同。我们可以通过垫图、控制提示词的方式调整它输出较为稳定的角色。如果要求训练模型并将其用于特定需求,Stable Diffusion 创建一致的角色要更加专业简单。1. 垫图法1)第一步:关键词生成角色在 Midjourney 中输出关键词,创建一个自己喜欢的角色,选择自己喜欢的图片,选择U3 。描述词:Blind box style, Cute little girl with rabbit ears hat, Full body, Look at the camera, Pop mart, octane rendering, ultra details, edgelighting, chibi, The best quality, HD, C4D, chiaroscuro, 8K2)第二步:复制图片链接选择自己喜欢的图片,点击U3 放大图像,右键获取网址(URL)复制链接。3)第三步:记住万能公式:图片URL+关键词+iw 2在命令框中输入「/imagine」在描述词前面加上URL,在结尾加上– iw2 。描述词:图片链接 Blind box style, Cute little girl with rabbit ears hat, Full body, Look at the camera, Pop mart, octane rendering, ultra details, edgelighting, chibi, The best quality, HD, C4D, chiaroscuro, 8K –iw 24)第四步:效果对比大家可以对比一下原图与本次生成的图像,我们可以看出该方法生出角色的一致性很高,风格和整体氛围基本一致。2. Seed值法这个方法可以利用一张图片,生成一系列图片。1)第一步:关键词生成角色这一步与前一个方法一样,在 Midjourney 中输出关键词,创建一个自己喜欢的角色,选择U3作为垫图生成相似的角色,复制URL 。描述词:Blind box style, Cute little girl with rabbit ears hat, Full body, Look at the camera, Pop mart, octane rendering, ultra details, edgelighting, chibi, The best quality, HD, C4D, chiaroscuro, 8K2)第二步:找到图片seed值在生成的四宫格界面右上角,点击表情图标。在搜索框中输入:envelope,找到信封图标,点击它。3)第三步:复制seed值这时候你就会收到 Midjourney Bot 的消息,在私信中,打开消息你就会获得 seed 值,复制图片的 seed 值。4)第四步:记住万能公式:替换关键词+seed值修改你的关键词把「ears hat」改成「 ears hat 」,并且在最后加上 –seed 1668584462 。描述词:Blind box style, Cute little girl with cat ears hat, Full body, Look at the camera, Pop mart, octane rendering, ultra details, edgelighting, chibi, The best quality, HD, C4D, chiaroscuro, 8K –seed 16685844625)第五步:效果对比可以看到效果还是很好的,快来试一试吧。当然这也是初级方法,接下来还会分享一些高级技巧。3. Panels动作法这个方法可以帮助创建连续的动作。1)生成不同的动作:N panels with different poses我们输入 「 4 panels with different poses + 描述词 」得到不同动作的角色图。描述词:4 panels with different poses,Blind box style, Cute little girl with cat ears hat, Full body, Look at the camera, Pop mart, octane rendering, ultra details, edgelighting, chibi, The best quality, HD, C4D, chiaroscuro, 8K2)生成连续的动作:N panels with continuous doing我们输入 「 4 panels with continuous dancing + 描述词 」可以得到跳舞的一系列动作角色图。描述词:4 panels with continuous dancing,Blind box style, Cute little girl with cat ears hat, Full body, Look at the camera, Pop mart, octane rendering, ultra details, edgelighting, chibi, The best quality, HD, C4D, chiaroscuro, 8K3)生成多视角动作:character sheet当我们输入 「character sheet with multiful pose and expressions + 描述词 」可以得到多视角动作,多种姿势和表情的角色图。描述词:character sheet with multiful pose and expressions,a super cute girl,dreamy cute hair accessories,pop mart,blind box,octane rendering,edgelighting,edgelighting, chibi, The best quality, HD, C4D, chiaroscuro, 8K4. Emoji表情法Emoji 代表着表情包,Express sheet是各种表情的组合,通过 Midjourney 的 「emoji + expression sheet」,可以轻松制作角色一系列表情包。描述词:3D emoji,expression sheet,Super cute girl,IP by popmart, Disney style,Pixar style,Scenesin spring,pastel color, surroundedby flowersfine luster, gentered composition,3D render, Soft focusoc, blender描述词:3D emoji,expression sheet,a cute girl,furry clothes,full body,pop mart,chibi,C4D,octane rendering,edgelighting, depth,ultra details,The best quality, HD –ar 1:15. Shoot镜头法这个方法可以一次出图,多张像电影分镜一样的连续画面。介绍万能公式:「 魔法前缀 + 关键词组 + 图像比例9:16 」1)开头:描述词【children’s illustration 儿童插图】【random film stills of dreamWorks animation 梦工厂动画随机电影剧照 】【Cartoon animation charactor 卡通动画人物】2)中间:描述词中间任何位置加入【ContinuousShooting 连续性拍摄】或 【Sequence shot 序列镜头】或【front side back three view 前侧后三视图】或者三者全加,出分镜的概率100%3)结尾:– ar 9:16描述词:animation style,Cartoon animation charactor,random film stills of dreamWorks animation,front side back three view,fantasy animeenvironment,the full body 3d artwok of cute chinese girl,chinese style,in the style of romantic soft focus and etherel light,sandara tang,oshare kei,study 3d game art, fisheye lens,syudio light the focal length of the backgrond is 35mm f1.4 –ar 9:16 –s 4006. 总结方法一:垫图法【图片URL】+ 关键词 +【 –iw 2】方法二:Seed值法【替换关键词】 + 【–seed 值】方法三:Panels动作法生成不同的动作:N panels with different poses生成不同的动作生成连续的动作:N panels with continuous doing生成多视角动作:character sheet方法四: Emoji表情法【emoji】+【expression sheet各种表情的组合】方法五: Shoot镜头法【children’s illustration 儿童插图/random film stills of dreamWorks animation 梦工厂动画随机电影剧照/Cartoon animation charactor 卡通动画人物】+【ContinuousShooting 连续性拍摄/Sequence shot 序列镜头/front side back three view 前侧后三视图】+【–ar 9:16】三、Midjourney基本参数复习1. Midjourney基本指令一览表1. /imagine 【prompt】最基本的文生图绘画指令,在后面输入提示词就可以生成图片。2. /describe 【image】最新的图生文指令,上传图片,图片生成四段描述词。3. /settings 进行模式设定,包括模型版本、样式值、质量值和升级器版本等。4. /subscribe 购买会员服务的链接,管理订阅。5. /ask 【question】获取问题答案。6. /blend 混合模式,该指令允许你上传2-5张图片,然后将这些图片合成新的图片效果。7. /info 查看你的用户信息,有关当前排队或正在运行的作业、订阅类型、续订日期等信息。8. /help 指南及基本的帮助信息。9. /prefer option set 创建或管理一个自定义选项。10. /prefer option list 查看你当前的自定义选项。11. /prefer suffix 指定一个后缀,添加到每个提示的末尾。12. /show 重现自己的画作。13. /fast 切换到快速模式。14. /relax 切换到放松模式,比 Fast 慢,一般付费用完 Fast 之后会自动切换到 Relax 。15. /private 私人创作,作品不会放在公开空间。16. /stealth 切换到隐身模式(对于专业计划的用户 60 美金/月),生成的图片不在社区展示。17. /piblic 切换到公共模式(对于专业计划的用户 60 美金/月)。2. Midjourney基本后缀一览表1. 宽长比:–aspect,或–ar调整图片的宽长比。2. 混乱:–chaos 改变结果的多样性。较高的值会产生更多不寻常和意外的效果。3. 负面提示:–no,–no plants表示会尝试从图像中移除植物。4. 质量:–quality <.25, .5, 1, or 2>,或–q <.25, .5, 1, or 2>您要花费多少渲染质量时间。默认值为 1。值越高成本越高,值越低成本越低。5. 种子:–seed Midjourney 机器人使用种子编号创建视觉噪声场,如电视静态,作为生成初始图像网格的起点。种子编号是为每个图像随机生成的,但可以使用 –seed 或 –sameseed 参数指定。使用相同的种子编号和提示将产生相似的结束图像。6. 停止:–stop 使用–stop参数在流程中途完成作业。以较早的百分比停止作业会产生更模糊、更不详细的结果。7. 风格:–style <4a, 4b or 4c>在 Midjourney模型版本4的版本之间切换8. 程式化:–stylize ,或–s 参数会影响 Midjourney 的默认美学风格应用于作业的强度。9. 升频器:–uplight 选择 U 按钮时使用替代的“轻型”升频器。结果更接近原始网格图像。放大后的图像细节更少,更平滑。–upbeta 选择 U 按钮时使用替代的 beta 升频器。结果更接近原始网格图像。放大后的图像添加的细节明显更少。3. Midjourney 提示词大全整体的关键词条我们大致的分为:主体、媒介、环境、构图、灯光、氛围、风格、材质、后缀等做输入来控制我们的画面结果。根据这个分类我汇总了一批关键词,关注“姚十八设计”公众号回复“AIGC 关键词”获得关键词表格文件,后期我也会持续更新维护表格,希望对大家 AI 绘画上有帮助。MidJourney AI 绘画描述词提示:风格:抽象、现实主义、写实、幻想、超现实主义、古典主义、新艺术运动。光线:强光、柔光、阴影、明暗对比、逆光、光影交错。画质:细节丰富、色彩饱满、清晰锐利、磨砂质感、立体感强烈、真实感十足、笔触生动。画家:Hiroshi Yoshida、Salvador Dali、Thomas Kinkade、Pablo Picasso、Wassily Kandinsky、Rene Magritte、Giorgio de Chirico、Italo Calvino、Norman Rockwell、Marc Simonetti。风格:赛博朋克、写实主义、超现实主义、梦幻、抽象表现主义、幻想主义、表现主义、前卫艺术、极简主义、印象派。视角:鸟瞰、虫瞰、侧面、仰角、俯角、倾斜、近景。渲染引擎:Blender、Maya、3ds Max、Cinema4D、V-Ray、Arnold、Redshift、Octane Render。材质:金属、玻璃、水、石头、木材、塑料、纱绸、皮革、云彩、星光。色调:复古褐、暖色调、冷色调、鲜艳色彩、黑白灰、单色调、鲜艳色彩、原色、淡雅色彩、鲜花色彩、柔和色彩。画质:8K分辨率、高画质细节、纹理丰富、高光表现、真实阴影、色彩还原度高、光线逼真、高清晰度、画面流畅、线条清晰、自然柔和的阴影、高级抗锯齿、物体细节精细、高级环境渲染、真实光照效果、高级纹理渲染、景深效果突出、模拟真实光线的光线追踪、高质量的反射和折射效果。四、结语Midjourney 控制角色一致性,要想达成自己期望的效果,不单单是一个段描述词就可以得到想要的效果,需要不断调整后缀参数,修改描述词,逐步完成效果。希望大家在日常不要光收集咒语和提示词,多思考多积累不同风格流派,学习一些基础的摄影知识,多看展多交流,提高自己的艺术审美。接下来我会分享更多 AI 绘画知识。愿我的分享对你有帮助。推荐阅读:1-《Midjourney从零基础到落地实践》【END】
2023年07月12日
7 阅读
0 评论
0 点赞
2023-06-19
课程视频一键转 PPT 讲义实用技巧
本文作者:邓锄头 转载地址:https://sspai.com/post/804060)背景概述大家应该都遇到网上看到一个很不错的教程视频或者论坛的直播回放,苦于想要老师的ppt,但老师不提供或者没有获取的渠道的情况,本文介绍一个方法可以直接基于有的视频课程,快速的抓取里面的ppt内容自动截图,转换为pdf文件可以用来日常做课程笔记或者转换成ppt文件为自己所用的问题。1)准备物料软件「Gleamoe Peanut 2023」:课程扣pdf使用,下载地址:Gleamoe Peanut 2023 软件手册 ,目前只支持window系统软件「UPDF」:图片pdf转OCR可检索使用,下载地址:https://www.updf.cn/ ,需要vip会员2)视频导出PDF文件准备要转pdf讲义文件的视频、安装Gleamoe Peanut 2023 准备好的视频.mp4 转换工具3)配置导出pdf参数(详情见GP2023软件手册)手动定位:选择ppt的图框位置选择好后,手动定位部分就会显示坐标及图片大小设置导出名称:与视频名字一致即可4)导出并检查PDF文件点击预览输出,等待幻灯片提取导出成功,确认幻灯片内容正常(主要内容没有遮挡,没有缺失) 处理进度5)PDF文件进行OCR识别用UPDF打开导出文件,点击OCR功能配置OCR参数选择页面图像下的文本文档语言选择简体中文和英语执行OCR并确认文本可检索通过UPDF打开OCR生成的PDF文件,使用检索功能查看识别效果,确认可用,文件备用。【END】
2023年06月19日
12 阅读
0 评论
0 点赞
2023-06-03
exping|地图组织方式的新探索
exping|地图组织方式的新探索本文作者:一只兔子先生 转载地址:https://sspai.com/post/79902前言春天是出行的季节,exping v1.4 版本带来全新的「地图分组」和「多人实时协作编辑 Beta」功能,现在你可以与好友一起创作地图,利用分组功能创作出具有丰富主题内容的地图。借着新版本发布,我想和你分享地图分组功能背后的一些故事。关联阅读:exping:一个地图创作工具是怎么诞生的?探索不止,发现地图创作的更多可能性一张丰富的地图创作者每天都会在 exping 上创建各式各样的地图。对于 exping 而言,我们始终在思考的问题是:一张丰富有趣的地图,需要提供给读者什么样的信息?地点和路线肯定是必不可少的,它们是地图上最基础的元素。创作者标记的地点是他们希望表达的核心内容,这些地点就像是文章中的每一个词汇。而由地点组合成的路线,则在时间、顺序、空间上连接了地点,让原本扁平的地点变得更加立体,就像是文章中的图画一样,给读者更多的画面感。光有地点和路线,这还不足以灵活表达作者的创作意图。我们发现地图上展示的信息通常是有主题的,比如美食地图、购物地图、景点地图等。主题可以使地图变得更加有层次和深度,一个好的地图应该涵盖多种多样的主题信息。例如一个城市地图可以包含多个主题,如文化、历史、美食、购物等,以便用户可以了解城市的多个方面。所以我们认为一张丰富有趣的地图需要涵盖不同主题和信息,以便用户更好地了解地点之间的关系和联系,从而提供更全面的信息和视角。地图组织方式要实现这样的内容,需要 exping 有更好的地图组织方式,一方面帮助创作者更好地呈现内容,另一方面帮助用户快速准确地找到他们所需要的信息。目前 exping 采用的主题组织方式是路线,但是将路线作为分组的方式并不是那么合理,因为主题不一定总是遵循特定的路线或顺序。举个例子,如果我们想要展示一张城市中的艺术画廊地图,或者一个主题为露营的地图,其中可能没有一个明确的路线或顺序,这时用路线作为分组方式就会显得不太合适。因为它们不具备路线的属性,而只是某一类相近的点的集合,路线的连接展现对主题表达产生的影响是负面的。一些优秀的创作者会尝试通过修改地点的emoji标志来实现某一主题的划分,例如在上海吃喝玩乐地图中将咖啡店都用「☕️」标志,所有日料店都是用「?」标志。这也是一种能够很好的表达出主题信息的方式,但是要快速检索这一类内容,仍然没有一个方便的方式。地图的组织和导航易用性是地图设计中至关重要的因素。一个好的地图应该能够帮助读者快速准确地找到他们所需要的信息,并提供直观易懂的导航。相反,如果缺乏地图的组织和导航不易用,会容易让读者迷失在茫茫的地点信息中,这将降低地图的实用性和吸引力。全新的地图分组功能我们认为 exping 在主题信息的组织方面还有进步的空间,因此我们新增了分组功能,让创作者可以更加自由地对路线和地点进行分类管理,不再受限于特定的路线或顺序,方便创作出不同的主题内容。在 exping v1.4 中,原来路线所在的位置已经被替换成了分组标签,你可以根据喜好创建不同的分组,自由命名和划分主题内容,最高支持20个分组的展示。创建完后,你可以将地图中已有的地点和路线加入到分组中,你也可以在地图中长按选择路线和地点,移入对应的分组中。分组就像是一个筛选标签一样,帮你快速过滤和展现特定的主题内容。在地图故事 Curation 中同样可以看到全新设计的分组卡片,创作者和读者都可以通过分组来快速找到对应的路线和地点信息。通过将地点和路线按照不同的主题进行分类和分组,使得地图的层级性更加明显,从而提高地图的导航性。分组对主题表达的帮助地图分组让地图创作有了更多想象空间,也有了更多内容组织方式。提到在地图中拆分主题,我们会很自然的想到在「广府美食一点通」中,把值得推荐的美食店分类为「早茶」「糖水」「砂锅粥」「粤菜」等分组,让每个想要品尝广东美食的人,都能选中最吸引人的品类。之前 exping 上有一个非常火爆的宠物友好医院地图,有了分组之后,就可以把单一的宠物医院地图扩展成「爱宠生活地图」,把宠物店、宠物医院、宠物美容院、宠物友好餐厅、宠物散步公园等地方归类到不同的分组中,读者便能够在一张地图中获取到更完整的宠物相关信息,让地图变成了一本「宠物生活周边指南」。分组还有很多可以发掘的场景分级展示对于同一种主题的信息,在分组功能下可以展现为分级展示。例如制作一张「广州托尼理发店指南地图」,里面可以将所有推荐和收藏的理发店,按照价格分为「天花板」,「人均100」,「平价快剪」几个分组,这样对于不同读者来说,能够快速导航定位到想要的价格区间。骑行用户还可以为「骑行地图」中划分不同「地狱难度」「老司机专线」「新手入门」等难度分组,让每个读者都能直观地选择适合自己的骑行路线。日程展示分组在处理时效性的主题时也有不错的发挥,例如在「旅行计划地图」中,就可以把分组设置为「第一天」,「第二天」,「第三天」……按照日程来安排好出行计划。对于展览和活动的主办方来说,也可以通过对日期分组,以更直观的方式表达每日的展位信息,便于观众更好的获取信息。追踪访问情况有了分组,你甚至可以把「必打卡的手冲咖啡店」中已经去过的店标记为「已打卡」分组,然后把未去过的店标记为「未打卡」分组,这样你就可以很清晰地追踪自己的访问情况,就像是一张地图版本的 Todo 清单。对于商业用户来说,同样可以将这种分组方式运用在客户管理中,例如「客户拜访地图」、「客户成交情况地图」等。分组能做的远不止这些:如果你是一个书迷,可以创建一个「读书地图」,把你经常去的书店、咖啡馆、公园等地点,分到「闲读空间」「文艺小店」「绿野仙踪」几个分组,甚至可以做「古旧书坊」分组,收集有故事的老书店。如果你有运动的习惯,可以创建一个「训练地图」,将附近的跑步路径、骑行道、健身房等地点分到「跑步」「骑行」「瑜伽」「重训练」几个分组,随时寻找适合的运动去处。如果你是带娃的奶爸,可以创建一个「亲子地图」,将游乐场、儿童博物馆、亲子餐厅等家长常去的地方分组,方便周末带孩子出去玩。如果你是一个摄影师,可以创建自己的「摄影地图」,将集街头涂鸦与壁画做成「城市色彩」分组,将城建楼宇做成「城市风光」分组,将步行街和文化社区做成「城市人文」分组。每次出门拍照前,就可以打开这个地图,根据心情选择一个分组,轻松找到附近的好去处。更出色的浏览体验exping 网页端浏览从上线至今广受好评,创作者和读者喜欢在大屏幕上浏览可交互的动态地图。随着 exping v1.4 的上线,我们也带来了更出色的 exping 网页端浏览体验。在地图故事 Curation 中,路线将会以更加精美的形式展现,交通工具和路程的呈现也更加符合直觉。你还可以在 Curation 中直接查看地点的详情,无需跳转到额外的网页。不仅如此,得益于网页框架的优化,我们正式支持在 Notion 文档中直接嵌入 Embed 来自 exping 的地图,把你收藏的地点和地图以可交互画面的形式展现在文档中。我们相信这会使得你的个人资料库和笔记分享变得更具创意。不止于浏览,更要创造分组功能使得创作者能够高度自定义地图的分类和呈现方式,不再局限于路线。生活在这个信息过载的时代,我们总会感到选择困难。分组功能可以让你在茫茫地点海洋中划出几个清晰的区域,找到最吸引你的方向。你也可以利用分组,根据时间、季节、主题等不同维度,把地点和路线串联成更立体的画面。exping 的愿景一直都是:Everyone is curator,人人都是地图创作者。因此我们希望正在浏览这些地图的读者,也能来尝试创建自己的地图,和我们分享你们眼中不一样的世界,借用地图讲述那些不一样的故事。exping v1.4 还加入了「多人实时协作编辑 Beta」,现在你可以邀请你的朋友一起创作地图,在同一张地图中,留下更多人的足迹和分享。如有你有任何使用上的问题或反馈,欢迎通过邮件 hello@exping.world 联系我们。exping|快捷指令—地点互动的新起点2023-07-07 更新 转载地址:https://sspai.com/post/80906前言exping v1.5 版本中带来了全新的「快捷指令」功能,快捷指令将为创作者和用户提供方便的入口,允许用户直达地点相关的扩展信息,从浏览到行动的转化将变得更加便捷。这让地图不止于信息的展示,地点真正拥有了可操作的交互能力。这大大提升了用户的阅读体验,并给创作者提供更广阔的创作空间。借着这个机会,我们想和你分享,全新地点互动背后的故事。关联阅读:exping:一个地图创作工具是怎么诞生的?探索不止,发现地图创作的更多可能性exping|地图组织方式的新探索信息可交互性创作者们喜欢用地图来展现计划和故事。在地图上标记地点和绘制路线就像是画家挥洒画笔涂抹的颜色,构建出了地图的全貌。然而,地图不应该只是一张扁平的画面,躺在橱窗中让人静静观赏。如果信息无法在虚拟世界中实现导航的作用,那么它仍然只是一种信息展示手段,无法真正实现虚拟与现实的连接。过去,一张好地图的标准是能直接找到目的地。现在,我们依旧认为好的地图应具备直接带你到达目的地的“导航”能力,区别在于,这种导航能力不仅是线下,更应该在线上。Image by rawpixel.com手机定位导航位能够带我们随时找到真实世界的「地方」,我们也希望在虚拟网络世界中的地图,能够直接带我们去到虚拟世界的每个角落。就像我们在现实生活中遨游城市,可以自由走到任何路口和,在线地图也应该能够响应用户的点击和操作,直接将其带到指定的位置。快捷指令功能正是基于这样的理念而开发的,它可以让每一个地点都连接实际的互动和体验,为用户打开一扇通往虚拟目的地的大门。从现在开始,地图中的地点将会拥有交互式按钮,你可以通过快捷指令将联系方式、报名表单、外卖点单、购买链接、注册报名链接等信息直接嵌入地点,让用户能够一键直达操作,打破地图和现实之间的鸿沟,真正将虚拟与现实衔接。如何使用快捷指令快捷指令支持将网址(URL)、电话号码、邮件地址、文本口令和应用URL scheme等5种类型的内容解析,并匹配对应的快捷行为。使用的方法很简单,只需要复制你想要的内容粘贴到快捷指令中,系统会自动开始解析这段内容, 解析成功后会根据内容类型为快捷指令选择对应的行动,并附上对应图标作为行为提示。你只需要为快捷指令起一个简洁明了的行为,例如“去购买”、“立即订票”、“联系我”、“下载介绍”、“观看简介视频”等。这将直观地告知用户快捷指令的行为,并引导他们完成操作。对于浏览地图的用户,在任何地点上都可以看到快捷指令的入口。点击快捷指令即可直接跳转到指定网址、拨打电话、发送邮件、报名注册、下单订购甚至是跳转到对应的日常应用等。举几个例子:将淘口令链接粘贴到快捷指令并命名为“去购买”,读者点击后直接跳转到淘宝首页。将电话号码 186-1234-5678 粘贴到快捷指令并命名为“联系客服”,用户点击后会直接拨打该电话号码。将邮件地址 hello**@exping.world** 粘贴到快捷指令并命名为“产品咨询”,用户点击后会直接跳转到邮件编辑界面,向该邮箱发送邮件。将应用 URL-Scheme 例如 snssdk1128://live?room\_id=XXXXXXXX粘贴到快捷指令并命名为“进入直播间”,用户点击后会直接唤起抖音,并加入到直播间中。将文本“口令xxxxxxxx”粘贴到快捷指令并命名为“复制口令”,用户点击后会将该文本粘贴到剪贴板中,再去对应的应用中粘贴查询。对创者者的价值对个人创作者:个性品味的传播旅行爱好者是 exping 创作者团体中的重要组成部分,我们也邀请了部分旅行者提前体验了快捷指令功能,并从他们口中收获了一些使用反馈: ? 乔治:作为一个喜欢旅行的人,我经常会与好友一起出游。每次出行前,我都会负责线路的规划。我会在 exping 地图上标注感兴趣的景点和目的地,收集大众点评、小红书等平台上的信息和推荐,然后分享给好友。现在,快捷指令功能让我的地图变得更富有互动性。我可以直接在地图标注中嵌入这些地点的美食推荐、最佳拍照位置的小红书链接、目的地的抖音短视频等。当好友浏览我分享的线路时,只需要点击快捷指令就可以直接打开这些内容,获取更加丰富的旅行信息。这样就可以提前了解景点的美食和拍照攻略,我们也可以就此进行更深入的探讨。青岛旅游攻略(乔治)制作出行路线规划地图时,创作者可以在快捷指令中放置景点的官网、购票页面等相关网页链接,方便其他浏览者整理需要的信息。读者可以快速跳转到指定网页,获取详尽的出行信息。创作者可以在指定景点或目的地处标记当地的联系人信息,如酒店前台、导游联系方式等。当读者实际前往该目的地时,可以方便地联系接应人,避免出现找不到景点或语言障碍的情况。得益于链接的通用性,作者可以将整理好的文字攻略、景点详细资料等打包成下载链接,放在快捷指令中。浏览地图的用户可以直接点击快捷链接下载你整理的资料,进行更加深入的行前准备。这也是一种方便自己和读者的互动方式。视频也是非常有效的地点介绍方式,创作者可以把在Bilibili,抖音中制作的视频链接通过快捷指令放在地点中,这样读者可以直接点击观看视频,增加视频的转化率。这也方便了读者能够更深一层的了解地点的全貌。中国世界文化遗产图鉴通过快捷指令,创作者可以更加便捷地与读者进行互动,不仅是简单的信息展示,更可以在虚拟世界中打通实际的体验渠道。读者也能够通过快捷指令快速找到感兴趣的信息和渠道,真正实现从浏览到行动的转变。这为个人创作者带来的不仅是更广阔的创作空间,也让内容具有更高的交互性和实用性。对商业创作者:品牌与客户的桥梁我们发现很多民宿老板和房地产中介都在 exping上制作属于自己的地图,然后将其发布在私有空间中展示。他们直接会将房源信息标注在地图对应的位置上,并且附上房源照片,写明房源周边的情况,以便潜在客户能够轻松浏览房源。创作者的使用方式给了我们很多灵感。在使用快捷指令后,民宿老板和地产中介可以直接在地点的快捷指令中添加房屋的预定链接,潜在的客户看到「立即预定」后就可以轻松完成预定。快捷指令为商业用户打开了全新的客户获取渠道。它可以将电话、网页、视频等不同媒介有机结合,通过地图直接触达目标用户,并引导他们完成从浏览到购买的转变。相比传统电话营销和网络营销,快捷指令可以实现更加直观和便捷的互动,让每个地点都变成一个营销的节点。exping 有很多从事展会活动策划的创作者,他们会在地图中标记展会与附近的配套设施,会把活动的每个站点清晰的呈现在地图上。有了快捷指令,他们可以直接将展会的报名表单和链接放置在地点上,并且给地点加上现场导览联系方式。参与者可以通过点击快捷链接直接进行预定、报名和查询,这无疑可以显著提高企业的用户获取率和参与度。电商创作者来可以将店铺预订链接、订购页面链接等直接放置在地图标注的店铺位置上。这样浏览地图的用户可以直接点击快捷指令完成预定或购买,实现从浏览到消费的转变,这无疑可以提高企业的交易转换率。线下门店可以在地图中直接放置店铺的联系电话、微信二维码等联系方式。这样用户可以直接通过地图与店铺取得联系,询问营业时间、商品信息等,大大提高了企业与用户的互动频率,也方便了用户获取信息。杭州露营地点合集品牌方可以将店铺或产品的视频介绍加入到快捷指令中。通过视频让用户在浏览地图的同时获得更加直观和详尽的信息,产生更高的参与兴趣,这在旅游景区、酒店推广等行业应用广阔。或许地图不只是一种信息展示工具,更是一种直接连通目标客户的新渠道,一种激发用户参与兴趣和行动的有效方式,让地图成为连接品牌与客户的重要桥梁。exping 支持在 Notion 中直接嵌入 Embed 地图,把收藏的地点和路线以可交互画面的形式展现在文档中。企业和个人都可以借助 Notion 来快速搭建内容的展览页面,发挥其简单可定制化的特性。对于品牌客户、社会性组织而言,exping 是一种成本更低的 No Code 商业工具,无需额外开发和定制,即可嵌入地图网页,利用地图来展现连锁店、加盟店、活动场地、公益设施,通过快捷指令给予观众更直接的体验,实现用户的转化和沟通。成都第31届大运会攻略新的互动,新的期待我们相信,快捷指令功能的加入将改变人与地图的互动方式。地图不只是信息的载体,更是现实与虚拟的连接桥梁,这将打破浏览与行动之间的界限,每一个地点都散发着无限的可能,每个地点都连接多元的互动形式。地图的所有内容都可以一键转化为行动,信息不再只是内容,更是一种引领你探索的方式。或许当你打开一张地图的时候,你会对地点中的快捷指令有所期待,期待着这个快捷指令会把你带到什么有趣的地方,就像是一个任意门一样,给你带来惊喜。快捷指令将信息 information 转化为邀请 invitation,将内容转化为体验,让地图真正成为了连接创作者与用户的重要桥梁。对于 exping 而言,我们希望有更多创作者来分享你们的故事和内容,因此我们邀请每一个热爱创作和分享的人,来体验快捷指令,在地图中开启与读者的新对话。你可以在 App Store、Play Store 和国内各大安卓应用市场下载 exping 1.5版本。我们期待更加丰富有趣的地图和内容从你的手中诞生。【END】
2023年06月03日
8 阅读
0 评论
0 点赞
1
...
5
6
7
...
12