首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
2,512 阅读
2
推荐31个docker应用,每一个都很实用
1,312 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
931 阅读
4
一条命令,永久激活!Office 2024!
618 阅读
5
优选 Cloudflare 官方 / 中转 IP
490 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
docker部署
虚拟机
WordPress
群晖
uni-app
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
264
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
69
篇与
的结果
2024-09-23
12 个强大而实用的 JavaScript 动画库
想要提升网页设计水平?那么 JavaScript 动画库一定是你的首选。这是一个可以将静态页面转换为动态的、吸引人眼球的秘密武器。无论你是经验丰富还是刚刚入门的前端开发人员,强大又包罗万象的 JavaScript 动画库都能帮助你将创意愿景变为现实。那么,你准备好了吗?让我们有请 2024 年名声大噪的 12 大 JavaScript 动画库隆重登场!1. GSAP被誉为动画库瑞士军刀的GSAP,用途十分广泛,深受全世界前端开发者的喜爱。使用示例:gsap.to(".box", {duration: 2, x: 300, rotation: 360, ease: "bounce"});只需要简简单单的一行代码,就能让box元素向右移动 300 像素,旋转 360 度,同时具有bounce效果。实在太便捷,太好用了。2. Anime.js:简单而强大我们常说,有的时候,少即是多,Anime.js 正是如此,它虽然轻巧但在能力上却毫不逊色。使用示例:anime({ targets: '.circle', translateX: 250, scale: 2, duration: 3000 });上面的代码表示动画会在 3 秒内平滑移动并放大一个circle元素。大家可以试一试,还蛮有意思的。3. Velocity.js:速度与优雅的结合Velocity.js 大大改善性能,同时又不牺牲功能。赞!使用示例:$(".element").velocity({ translateY: "200px", rotateZ: "45deg" }, 1000);元素将向下转换 200 像素,并在一秒钟内旋转 45 度。4. Three.js:引入 3D 世界Three.js 开辟了一个全新的维度!它是我们在浏览器中创建 3D 图形的门户。使用示例:const geometry = new THREE.BoxGeometry(); const material = new THREE.MeshBasicMaterial({color: 0x00ff00}); const cube = new THREE.Mesh(geometry, material); scene.add(cube);上面的代码创建了一个绿色的 3D 立方体,你可以随心所欲地进行操作和动画制作。5. Lottie:使动画变简单Lottie 将复杂的动画变成了小菜一碟。是你口袋里的专业动画师!使用示例:lottie.loadAnimation({ container: document.getElementById('lottie-container'), renderer: 'svg', loop: true, autoplay: true, path: 'data.json' });上面的代码从 JSON 文件加载和播放 Lottie 动画。是不是看着就感觉易如反掌!6. Popmotion:最佳的灵活性Popmotion 就像变色龙——它可以轻松适应任何 JavaScript 环境。使用示例:animate({ from: 0, to: 100, onUpdate: latest => console.log(latest) });这是一个从0计数到100、记录每个值的简单动画。7. Mo.js:使动态图形变简单Mo.js 使创建动态图形就像用蜡笔绘图一样简单,但是最后的成果却不一般,可谓精妙绝伦!使用示例:const burst = new mojs.Burst({ radius: { 0: 100 }, count: 5, children: { shape: 'circle', fill: { 'cyan' : 'yellow' }, duration: 2000 } });上面的代码创建了一个burst动画,包含五个扩大和变色的圆。8. Typed.js:让文本栩栩如生Typed.js 给冷冰冰的文本增添了人情味。Nice。使用示例:new Typed('#element', { strings: ['Hello, World!', 'Welcome to my website!'], typeSpeed: 50 });代码创建了一个在两个问候语之间交替的键入动画。9. AniJSAniJS 就像魔法棒一样——无需编写任何代码即可创建动画!使用示例:<div data-anijs="if: click, do: fadeIn, to: .target"></div>上面的HTML属性会在单击时创建淡入动画。10. Framer Motion:React 的动画超级英雄Framer Motion 是 React 工具包的完美补充,它对于 React 就像薯条和番茄酱,合在一起,美味无比。使用示例:<motion.div animate={{ x: 100 }} transition={{ duration: 2 }} />这个 React 组件会在 2 秒内向右移动 100 个像素。11. ScrollMagic:基于滚动的动画大师ScrollMagic 使滚动变得有趣起来。随着用户滚动浏览网站,一部迷你电影随之呈现!相信我,真的会被惊艳到。使用示例:new ScrollMagic.Scene({ triggerElement: "#trigger", duration: 300 }) .setTween("#animate", {scale: 2.5}) .addTo(controller);以上代码创建的动画会在用户滚动时缩放元素。12. Motion One:小而强浓缩的,才是精华的,Motion One 正是如此。轻量级的它,小小的身体充满了大大的能量!使用示例:animate("#box", { x: 100 }, { duration: 1 });这条简单的线会在一秒内将一个盒子向右移动 100 像素。结束语:我们的动画之旅将在这里启程!有了这 12 个令人惊叹的 JavaScript 动画库,我们的 web 项目就能脱胎换骨,从平平无奇进化成为光彩夺目:无论是创建简单的悬停效果还是复杂的 3D 世界,这些库都能满足我们的需求。谨记,哪个库最适合取决于特定的项目需求。多多尝试才能匹配到最完美的助手。心动不如行动。让我们一起试着用这些库制作动画吧!
2024年09月23日
40 阅读
0 评论
0 点赞
2024-09-15
windows通过cmd查看端口占用,并停止该端口,杀死进程kill等命令
通过cmd查看端口占用,并停止该端口,杀死进程kill等命令首先需要打开cmd命令窗口方式一:使用 win + R 快捷键方式打开运行窗口,输入 “cmd”,然后点击确定按钮打开命令提示符;如图所示:方式二:按 win 键会弹出一个窗口,这时直接输入 “cmd”,可直接打开cmd窗口,也可以使用管理员身份打开cmd进入命令提示符窗口后,输入 netstat -ano 并按下回车执行,之后就会显示电脑上运行的 所有端口号 。【Tip:如果已知被占用的端口时,可以用命令 netstat -aon|findstr 9201 直接找到端口号为9201的进程PID 】接下来,输入 tasklist | findstr "14488" 并按下回车,查询 PID 为 14488 的进程名称,如图所示:结束指定进程,输入以下其中一种命令,按回车执行即可。命令一:根据PID进程号结束进程taskkill /pid 14488 -t -f命令二:根据进程名称结束进程taskkill /f /t /im java.exe
2024年09月15日
122 阅读
0 评论
0 点赞
2024-09-12
一条命令,永久激活!Office 2024!
微软已经率先发布 Office 2024英文版(零售版) 。众所周知,零售版是有微软正式发布的离线镜像,目前中文版的镜像微软尚未发布。而对于批量授权版,自从Office 2019开始,微软就已经不再单独发布镜像文件了。所采用的方式均为在线部署安装。很多第三方软件基于微软提供的ODT部署方式,开发了操作更加便捷的Office部署程序。但是最近收到很多小伙伴的留言提问,为什么安装了Office 2024 批量版后,显示preview字样?还是预览版吗?首先,微软至今尚未宣布正式发布Office 2024,它包含零售版和批量授权版两大类,零售版中也仅仅是英文版的Office 2024镜像已经可以在官网下载,但中文版依旧未正式发布。批量授权版的Office 2024均未正式发布,因此现在依然是预览版。其次,现在的预览版可以安装体验了吗?可以!它已经很接近正式版,是准正式版。为什么有的人安装后没有preview字样,这是怎么回事?下面先把安装过程截图展示一下~安装完毕后,默认情况显示 preview 字样,虽然还是预览版,但是当前版本自带的许可证已经包含了正式版的许可证。就好比Windows10或11系统一样,安装专业版密钥它就是专业版,安装企业版密钥它就是企业版。Office 2024这里也一样,安装正式版的密钥,它就不再显示preview字样了。下面这几个是几枚MAK密钥,看起来怪怪的,但确实能够安装。ProPlus2024:NBBBB-BBBBB-BBBBB-BBBJD-VXRPM Standard2024:V28N4-JG22K-W66P8-VTMGK-H6HGR ProjectPro2024:NBBBB-BBBBB-BBBBB-BBBH4-GX3R4 ProjectStd2024:PD3TT-NTHQQ-VC7CY-MFXK3-G87F8 VisioPro2024:NBBBB-BBBBB-BBBBB-BBBCW-6MX6T VisioStd2024:JMMVY-XFNQC-KK4HK-9H7R3-WQQTV更改密钥后,再重新打开Office,preview字样就消失了~最后,使用一条命令激活Office 2024,在 Powershell 中,首先输入以下命令,然后输入 "2" ,最后输入 "1" 即可。irm https://get.activated.win | iex注意:该命令需要联网,其原理是下载MAS激活软件的最新版,目前2.7版已经发布。MAS激活Office的方法是使用了Ohook,为永久激活!
2024年09月12日
618 阅读
0 评论
0 点赞
2024-06-18
Cloudflare橙色云启用后 Nginx Proxy Manager的IP白名单和黑名单配置指南
在使用Cloudflare的橙色云(即启用CDN功能)后,许多用户发现Nginx Proxy Manager中的Access Lists(IP地址白名单/黑名单)失效。这通常是因为Cloudflare的代理服务器屏蔽了真实的客户端IP地址,导致Nginx无法直接获取客户端的真实IP,而只能看到Cloudflare的IP地址。本文将介绍如何配置Nginx,以便它能够正确识别和使用Cloudflare传递的真实客户端IP地址,从而确保访问控制列表的正常工作。配置Cloudflare的真实IP头要解决这一问题,首先需要在Nginx中配置,以便它能够识别Cloudflare传递的真实客户端IP地址。Cloudflare通常通过CF-Connecting-IP或X-Forwarded-For头传递真实的客户端IP。以下是具体步骤:在Nginx配置文件中添加以下内容# Cloudflare IPv4 addresses set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 108.162.192.0/18; set_real_ip_from 131.0.72.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 162.158.0.0/15; set_real_ip_from 172.64.0.0/13; set_real_ip_from 173.245.48.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 190.93.240.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; # Cloudflare IPv6 addresses set_real_ip_from 2400:cb00::/32; set_real_ip_from 2606:4700::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2a06:98c0::/29; set_real_ip_from 2c0f:f248::/32; real_ip_header CF-Connecting-IP;CloudflareIP 范围 https://www.cloudflare.com/zh-tw/ips/这些IP段是Cloudflare的代理服务器IP地址,通过set_real_ip_from指令,Nginx将信任这些IP地址,并从CF-Connecting-IP头中获取真实的客户端IP。更新Nginx Proxy Manager配置确保Nginx Proxy Manager能够正确使用上述配置。如果Nginx Proxy Manager允许自定义Nginx配置片段,将上述配置片段添加到相应位置。调整访问控制列表确保你的访问控制列表(白名单/黑名单)中的IP地址策略基于真实的客户端IP,而不是Cloudflare的IP地址。实际使用场景访问控制公司A希望只允许公司内部IP地址访问其网站。他们启用了Cloudflare的CDN加速,但发现所有访问请求的IP地址都显示为Cloudflare的代理服务器IP,导致访问控制列表失效。通过上述配置,Nginx能够正确识别真实的客户端IP,从而确保只有公司内部IP地址能够访问网站。日志记录和分析公司B使用Nginx记录访问日志以进行流量分析和安全监控。在启用Cloudflare CDN后,访问日志中显示的IP地址都是Cloudflare的代理服务器IP。通过上述配置,Nginx能够记录真实的客户端IP,从而提供准确的流量分析和安全监控数据。防止DDoS攻击公司C遇到DDoS攻击,攻击流量通过Cloudflare的代理服务器进入,导致Nginx的防护措施失效。通过正确配置Nginx以识别真实的客户端IP,公司C可以更有效地应用防火墙规则,识别并阻止攻击IP,从而提升防护效果。结论通过正确配置 Nginx 以识别 Cloudflare 传递的真实客户端IP地址,可以解决因启用 Cloudflare CDN 功能导致的访问控制列表失效问题。这不仅能确保访问控制列表的正常工作,还能提升日志记录、流量分析和安全防护的准确性。希望本文对你配置 Nginx Proxy Manager 以支持 Cloudflare CDN 功能有所帮助。
2024年06月18日
250 阅读
0 评论
0 点赞
2024-05-31
植物大战僵尸杂交版v2.0来了!附最新安装教程!
今天来给大家分享最新版的植物大战僵尸杂交版,此版本由B站UP主@潜艇伟伟迷个人制作,光宣传片而论,短短十几天的时间就在B站平台爆火,达到了500w的播放量,甚至引得各大直播平台的知名主播都在闲暇之余畅玩。很多小伙伴想玩却不知道如何下载安装,今天就来教大家详细的安装步骤,感兴趣的小伙伴抓紧跟我一起来看看吧!{lamp/}{mtitle title="植物大战僵尸杂交V2.0.88最新版(安装教程)"/}{lamp/}在网盘下载电脑后,鼠标右键压缩包选择解压到当前文件夹。鼠标右键选择管理员身份运行植物大战僵尸杂交版v2.0.88安装程序。耐心等待安装完成,点击开始使用。{lamp/}{mtitle title="全屏游戏教程"/}{lamp/}回到解压后的文件夹,找到【Magpiev0.5.2】压缩包-右键【magpie】-【解压到当前文件夹】。双击运行magpie程序。按照下面进行选项进行设置。设置完成后,点击【五秒后放大】。注:部分电脑可能出现无法放大报错,原因不明。这款植物大战僵尸杂交版游戏模式创意十足,可玩性相当高,非常容易上头,感兴趣的小伙伴抓紧下载体验吧!好了,本期的分享就到这里我们下期再见!游戏获取{cloud title="植物大战僵尸杂交版v2.0.88安装程序" type="ct" url="https://www.123pan.com/s/shFiVv-UTRKA.html" password="HPhp"/}
2024年05月31日
163 阅读
0 评论
0 点赞
2024-05-28
优选 Cloudflare 官方 / 中转 IP
Cloudflare 官方的 IP 很好理解,就是各个边缘节点的 IP。哪怕在全球大部分地方使用了 Anycast 技术, 但不同 IP 在中国大陆的访问体验还是有很大差别。小站收集了很多使用官方 IP 的网站,我们可以通过 DNS 记录查询的方式得到这些 IP,并通过本地测速或者拨测的方式进行筛选。#来源:https://blog.misaka.rest/2023/08/12/pick-cf-best-domain/ #引用时删去部分无效域名 time.cloudflare.com shopify.com time.is icook.hk icook.tw ip.sb japan.com malaysia.com russia.com singapore.com skk.moe www.visa.com www.visa.com.sg www.visa.com.hk www.visa.com.tw www.visa.co.jp www.visakorea.com www.gco.gov.qa www.gov.se www.gov.ua www.digitalocean.com www.csgo.com www.shopify.com www.whoer.net www.whatismyip.com www.ipget.net www.hugedomains.com www.udacity.com www.4chan.org www.okcupid.com www.glassdoor.com www.udemy.com www.baipiao.eu.org alejandracaiccedo.com log.bpminecraft.com www.boba88slot.com gur.gov.ua www.zsu.gov.ua www.iakeys.com edtunnel-dgp.pages.dev www.d-555.com fbi.gov www.sean-now.com download.yunzhongzhuan.com whatismyipaddress.com www.ipaddress.my www.pcmag.com www.ipchicken.com www.iplocation.net iplocation.io www.who.int www.wto.org #其他选择,都是官方 IP 优选 jp.byun.eu.org un.goasa.top emby2.misakaf.org也有大佬做好了一个优选的结果,可以根据需要即取即用:https://stock.hostmonit.com/CloudFlareYes至于中转 IP,其实就是第二层「反向代理」,通过反代 Cloudflare 边缘节点提供服务。中转 IP 大都是个人自用,获取它们的方法大都是大批量的端口扫描,具体细节这里就不再展开了。也是因此,中转 IP 存活的时间都十分短暂,对于网站加速来说,除非自己拿服务器搭建反向代理,否则几乎没有使用价值。使用方法在域名解析里设置国内运营商线路 CNAME解析 到各个优选地址。
2024年05月28日
490 阅读
1 评论
0 点赞
2024-05-28
公共 DNS 服务器
公共 DNS 服务器 —— 国内腾讯的 DNSPod腾讯旗下的 DNSPod 在 DNS 服务领域近年发展迅速,其提供的公共 DNS 服务可用性非常不错,值得一试。IPv4 地址:119.29.29.29、182.254.116.116、119.28.28.28、182.254.118.118 IPv6 地址:2402:4e00:: DoH 地址:https://doh.pub/dns-query https://1.12.12.12/dns-query https://120.53.53.53/dns-query DoH(国密) 地址:https://sm2.doh.pub/dns-query DoT 地址:dot.pub、1.12.12.12、120.53.53.53阿里云的公共 DNS阿里云作为国内云计算的老大哥,其提供的公共 DNS 几乎是国内上网的首选。选择阿里云的 DNS 大多数时候速度和准确性都是不错的。IPv4 地址:223.5.5.5 或 223.6.6.6 IPv6 地址:2400:3200::1 或 2400:3200:baba::1 DoH 地址:dns.alidns.com DoT 地址:dns.alidns.com牙木网络(电信)牙木网络提供的电信 DNS 服务,具有良好的稳定性和可靠性。IPv4 地址:1.1.8.8、1.1.8.9360DNS360DNS 除了提供稳定的 DNS 服务,还支持 DoH 和 DoT,可以满足用户对于更高安全性的需求。DoH 地址:https://doh.360.cn/dns-query DoT 地址:dot.360.cnCFIEC DNSCFIEC DNS 提供了稳定的 DNS 服务,并支持 DoH 和 DoT,貌似需要纯 ipv6 环境,或者手动设置本地 IP,不然解析不出来。DoH 地址:https://dns.cfiec.net/dns-query DoT 地址:dns.cfiec.net火山引擎 DNS火山引擎 DNS 提供了高效稳定的 DNS 服务。IPv4 地址:180.184.1.1、180.184.2.2CNNIC SDNSCNNIC SDNS 是中国互联网络信息中心提供的公共 DNS 服务,可靠性和安全性都相当不错。IPv4 地址:1.2.4.8、210.2.4.8OneDNSOneDNS 提供拦截版和纯净版的 DNS 服务,满足用户的不同需求。家庭版的 DNS 服务也很实用。IPv4 地址: 117.50.11.11 、52.80.66.66(拦截版) 117.50.10.10 、52.80.52.52(纯净版) 117.50.60.30 、52.80.60.30(家庭版)DNS PAIDNS PAI 提供稳定的 DNS 服务。IPv4 地址:101.226.4.6 、218.30.118.6(电信/移动/铁通) 123.125.81.6 、140.207.198.6(联通)除此之外,还有以下服务器可供选择。#南京信风 114.114.114.114、114.114.115.115(公共版) 114.114.114.119、114.114.115.119(安全版) 114.114.114.110、114.114.115.110(家庭版) #百度 180.76.76.76 2400:da00::6666 #红鱼 https://rubyfish.cn/dns-query #MoeDNS - 无污染的公共DNS服务 #这是一个基于AdGuard Home的公共递归DNS,以专线落地作为解析,并确保数据全程处于中国内地的公共DNS服务。 #DNS 221.131.165.165 36.156.184.156 #DoH https://pdns.itxe.net/dns-query #DoT tls://pdns.itxe.net:853 #DoQ quic://pdns.itxe.net:853公共 DNS 服务器 —— 国外Google Public DNSGoogle 不用多说。IPv4 地址:8.8.8.8 或 8.8.4.4 IPv6 地址:2001:4860:4860::8888 或 2001:4860:4860::8844 DoH 地址:https://dns.google/dns-query DoT 地址:dns.google:853Cloudflare DNS国外老牌DNS,它家CDN很好。IPv4 地址:1.1.1.1 或 1.0.0.1 IPv6 地址:2606:4700:4700::1111 或 2606:4700:4700::1001 DoH 地址:https://cloudflare-dns.com/dns-query DoT 地址:1.1.1.1:853 或 1.0.0.1:853OpenDNSIPv4 地址:208.67.222.222 或 208.67.220.220 DoH 地址:https://doh.opendns.com/DNS.SBIPv4 地址:185.222.222.222 或 45.11.45.11 IPv6 地址:2a09:: 或 2a11:: DoH 地址 :https://doh.dns.sb/dns-query DoT 地址 :dot.sb:853同样,这里也记录其他的 DNS 服务器,不做单独介绍。#quad9 9.9.9.9 149.112.112.112 2620:fe::fe 2620:fe::9 https://dns.quad9.net/dns-query tls://dns.quad9.net #adguard 94.140.14.14 94.140.15.15 2a10:50c0::ad1:ff 2a10:50c0::ad2:ff dns.adguard.com/dns-query #DNS-over-HTTPS dns.adguard.com #DNS-over-TLS quic://dns.adguard.com #DNS-over-QUIC #Tiarap Resolver 自带去广告、隐私优先、提供额外端口 IPv4: 174.138.21.128 / 188.166.206.224 - port 53 or port 5003 IPv6: [2400:6180:0:d0::5f6e:4001] - port 53 or port 5003 dot.tiar.app #DNS-over-TLS怎么使用这些 DNS?(仅 IPv4)Windows通过 【开始】 菜单或者 Windows 搜索来打开控制面板先找【网络和 Internet】 菜单项,然后点击 【网络和共享中心】点击左边侧边栏【更改适配器设置】右键你已经连接网络的网络连接, 选择 【属性】在列表中找到并选择 【Internet 协议版本 4 (TCP/IPv4)】 , 点击 【属性】选择【使用下面的 DNS 服务器地址】 , 然后输入你的 DNS 服务器地址。macOS点击苹果图标,点击进入 [系统偏好设置]点击 [网络] 点击列表中第一个连接选项后,点击 [高级]选择 [DNS] 选项卡。输入你的 DNS 服务器地址。安卓在 Android 主屏幕菜单点击【设置】点击菜单中的 Wi-Fi。 所有可用的网络将会被显示 (移动互联不允许设置自定义 DNS,但可以借助代理软件实现)长按您连接的网络,点击【修改网络】在某些设备上,您点击【高级设置】后,才能看到更多选项。为了调整 Android DNS 设置,您需要把【IP 设置】从【DHCP】 改成【静态】。然后输入你的 DNS 服务器地址。iOS在主界面中点击 【设置】在左侧菜单中选择 【Wi-Fi】(注意:为移动网络无法配置 DNS,但可以借助代理软件实现)点击正在连接的网络在【DNS】一栏输入 DNS 服务器地址即可。Ubuntu点击 “网络图标”(位于右上角默认面板)。点击 “编辑连接” 打开网络连接管理器。找到您的链接类型,加亮突出它并点击 “编辑 “。现在点击 “IPv4 设置” 标签,将 “方式” 选项改为 “自动获取地址”(DHCP)。在 “DNS 服务器 “ 键入用逗号分隔的 DNS 服务器地址路由器打开您的路由器设置。通常可在浏览器中输入 URL(例如 http://192.168.0.1/ 或 http://192.168.1.1/)访问它。可能会要求您输入密码,如您忘记密码,通常可以按路由器上的重置按钮重置密码。某些路由器会有特殊应用程序。在这种情况下,该应用程序要早已安装到您的计算机上。查找 DNS 设置,寻找 “DNS” 字符旁边有可输入二到三个数列的字符串。每个数列分四组,一组包括一到三个数。在此输入 DNS 服务器地址。
2024年05月28日
70 阅读
0 评论
0 点赞
2024-05-28
使用OpenAI API搭建AI助理的JavaScript实现
前言今天我们来聊聊如何使用OpenAI和JavaScript的json-server技术来搭建一个独属于你的AI助理用来解决你提出各种请求,这项功能在传统的后端项目中是不可能实现的但是现在我们有了大模型这一利器我们可以使用大模型来快速的分析并处理我们给出的请求。在AI时代我们可以使用JavaScript来快速构建一个独属于我们的AI助理,使用json-server技术将json文件快速变成后端数据,后端再调用OpenAI的接口来对你所发出的请求进行处理。话不多说,直接开干。准备工作第一次看本文章的朋友们,建议先仔细阅读前文:使用OpenAI API进行情感分析的JavaScript实现一文教你使用Node.js脚本调用OpenAi API接口实现对话功能一: 创建项目文件打开vscode,新建三个文件夹。这三个文件夹的作用分别是: Ai服务,后端目录,前端目录 ,文件夹结构如图所示:二:初始化工程初始化后端项目工程 npm init -y创建好了项目所需的文件夹后,右键进入backend文件夹的终端,进入到终端。端输入指令 npm init -y 将项目初始为后端工程。初始化成功后会出现 packager.json 文件,如图所示:引入json-server继续在当前终端中输入指令 npm i json-server 导入成功后,我们会在 package.json 文件夹中看到已经成功引入了 json-server 的依赖。如图所示:导入后端数据打开 package.json 文件,将 "scripts" 中的内容修改为: "dev": "json-server users.json"新建一个名为 users.json 的文件,该文件中的内容则为本项目所需要用到的数据最终结构如下图所示:进入到 users.json 文件中输入需要用到的数据这里给出本项目中用到的数据:{ "users": [ { "id": 1, "name": "科比·布莱恩特", "hometown": "费城" }, { "id": 2, "name": "坤坤", "hometown": "温州" }, { "id": 3, "name": "阿伦·艾弗森", "hometown": "费城" }, { "id": 4, "name": "丁真珍珠", "hometown": "理塘" } ] }到此,该项目的后端数据就构建好了。此时,继续在命令行输入指令 npm run dev ,将后端项目运行起来。此时可以在控制台看到后端地址。打开浏览器,访问该地址可以看到 users.json 文件中的数据。访问该地址的不同 id 时,可以看到该id对应的人物信息OpenAI的接入来到 ai_server 文件夹,右键进入到该文件的终端。一. 初始化后端工程 npm init -y该操作和上一步一致二.导入项目所需要的库npm i openai该指令用于在项目中安装 openai 这个包,有了这个包就可以使用OpenAI的API接口了。 执行这个命令会做以下几件事:下载和安装包:从npm仓库下载 openai 包及其依赖到项目的 node_modules 目录。更新 package.json:执行完这个命令会将 openai 添加到 dependencies 字段,记录为项目依赖。如图所示:npm i dotenv该指令用于安装 dotenv 这个包,有了这个包,可以使用 .env 配置文件,加载 .env 文件中的环境变量到 process.env 对象中。将项目的私密内容封装到 .env 文件中不向外处暴露,可以很大的提高项目的安全性能。 如下所示:至此该项目所需的环境已经搭建完毕,下面我将为大家介绍如何编写代码实现。代码编写http服务的搭建(项目的核心部分)来到 ai_server 文件夹,新建一个名为 main.js 的 js 文件,输入以下js代码:// ai openai, :8888/users?question= // node 的内置模块 // - 搭建http服务 const http = require('http'); const url = require('url'); const OpenAI = require('openai'); require('dotenv').config(); const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, // proxy baseURL: 'https://api.chatanywhere.tech/v1' }) const server = http.createServer(async function (req, res) { res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有来源访问,也可以指定具体的域名,如'http://example.com' res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); // 允许的请求方法 res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // http 基于请求响应的简单协议 req 请求 res 响应 if (req.url.indexOf('/users') >= 0) { // users ai 服务 const parsedUrl = url.parse(req.url, true); // console.log(parsedUrl); const { question, users } = parsedUrl.query; console.log(question, users) const prompt = ` ${users} 请根据以上用户的json数据,回答${question}这个问题. 如果回答不了,就返回不清楚,谢谢。 ` const response = await client.chat.completions.create({ model: 'gpt-3.5-turbo', messages: [{ role: "user", content: prompt }], temperature: 0, // 控制输出的随机性,0表示更确定的输出 }); const result = response.choices[0].message.content || ''; console.log(result); let info = { message: result } res.statusCode = 200; res.setHeader('Content-Type', 'text/json'); res.end(JSON.stringify(info)) } }) server.listen(8888, function () { console.log('服务器启动了') })代码详解以上代码主要作用是搭建一个基于 Node.js 的简单 HTTP 服务器,使用了 Node.js 的内置 http 模块和第三方模块 url、OpenAI 以及 dotenv 来创建一个能够与 OpenAI 的 GPT 模型交互的服务,以处理特定的 HTTP GET 请求并返回 AI 生成的响应。下面是代码的详细解析:导入模块和配置http: Node.js的内置模块,用于创建HTTP服务器。url: Node.js的内置模块,用于URL解析。OpenAI: 块用于与OpenAI API交互,主要是用来调用gpt-3.5-turbo模型。dotenv: 用于加载.env文件中的环境变量,用于读取封装的OpenAI的API密钥。通过 require 语句导入这些模块,并使用 dotenv.config() 加载环境变量,然后实例化 OpenAI客户端,其中 baseURL 指定了代理的 API端点。创建HTTP服务器使用 http.createServer() 方法创建一个 HTTP服务器,传入一个异步函数作为回调处理请求和响应。设置响应头允许跨域访问,允许 任何源('*'),允许 GET、POST 和 OPTIONS 请求方法,以及指定允许的请求头。 res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有来源访问,也可以指定具体的域名 res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); // 允许的请求方法 res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');请求逻辑处理判断请求 URL 是否包含 /users 路径,如果是,则继续处理。if (req.url.indexOf('/users') >= 0)使用 url.parse() 解析请求 URL 的查询参数。const parsedUrl = url.parse(req.url, true);解构出 question 和 users 两个查询参数。 const { question, users } = parsedUrl.query;构造一个 prompt,包含提供的 JSON 数据和问题,要求 AI 模型根据这些信息回答提出的问题。使用 await client.chat.completions.create() 异步调用 OpenAI API,传递模型类型(gpt-3.5-turbo)、消息内容(包含构造的prompt)以及控制输出随机性的temperature参数。从API响应中提取第一选择的回复内容。将回复内容封装成 JSON 对象 info,设置响应状态码为 200(成功),响应头为 Content-Type: text/json,最后使用 res.end() 发送JSON格式的响应给客户端。启动服务器调用 server.listen(8888) 使服务器在本地 8888 端口上监听 HTTP 请求。总结该服务器的核心功能是接收包含用户数据和问题的 HTTP GET 请求,利用 gpt-3.5-turbo 模型生成针对该问题的回答,然后将这个回答作为JSON响应返回给客户端。用于构建HTML页面中的AI助理功能,根据用户提供的一系列用户数据和问题,返回相应的解答。前端代码来到 frontend 文件夹中,新建一个名为 index.html 的文件,在该文件中输入以下代码:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>AI全栈</title> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row col-md-6 col-md-offset-3"> <h1>AI全栈</h1> <table class="table table-striped" id="user_table"> <thead> <tr> <th>ID</th> <th>姓名</th> <th>家乡</th> </tr> </thead> <tbody> </tbody> </table> <form name="aiForm" method="get" action="http://www.baidu.com"> <div class="form-group"> <label for="questionInput">向AI助理提问:</label> <input type="text" name="question" class="form-control" id="questionInput" placeholder="请输入您想问的users相关问题"> </div> <button type="submit" class="btn btn-default">提交</button> </form> <div class="row" id="message"></div> </div> </div> <script> const oMessage = document.querySelector('#message'); const oBody = document.querySelector('#user_table tbody'); const oForm = document.forms['aiForm']; let usersDate = [] fetch('http://localhost:3000/users') .then(data => data.json()) .then(users => { usersDate = users; oBody.innerHTML = users.map(user => ` <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.hometown}</td> </tr> `).join('') }) oForm.addEventListener('submit', function (event) { // 阻止页面提交 阻止表单的默认行为 event.preventDefault(); // name 属性去找 性能更好 const question = this["question"].value.trim(); console.log(question); fetch(`http://localhost:8888/users?question=${question}&users=${JSON.stringify(usersDate)}`) .then(data => data.json()) .then(res => { // console.log(res); document.querySelector('#message').innerHTML = res.message; }) }) </script> </body> </html>代码详解该项目的 HTML 页面结合了 Bootstrap 框架和 JavaScript(使用fetch API)来实现一个用户信息展示和交互的示例。获取用户数据使用 fetch() 从http://localhost:3000/users(该地址为后端项目封装数据的地址,查询方式见上文) 获取数据。数据返回后,将其转换为JSON格式,并将结果赋值给 usersDate。遍历 usersDate,动态创建表格行()并添加到 oBody 中。表单提交处理给表单添加事件监听器到表单,当表单被提交时触发。使用 event.preventDefault() 阻止表单的默认提交行为(防止页面跳转)。获取用户在 questionInput 输入框中输入的问题。使用 fetch() 向http://localhost:8888/users发送问题和用户数据的GET请求。(注意:这里需要将用户数据信息转为json格式)fetch(`http://localhost:8888/users?question=${question}&users=${JSON.stringify(usersDate)}`)服务器返回的数据转为 JSON格式,并且从中获取 message 属性,最后将其内容显示在 oMessage 元素内。总结前端的 HTML 页面与后端的 Node.js 服务器代码配合工作,用户可以在界面上查看用户数据,输入问题,然后获取 AI 的回复。项目运行效果展示来到 ai_server 文件夹的终端,运行 main.js 来启动后端服务器。打开项目的前端页面,输入指令: 请问有哪些同学是老乡后端在接收到用户给出的请求时,调用 OpenAi 的接口立马给出了问题的答案。本篇文章就到此为止啦,希望通过这篇文章能对你了解使用 OpenAI API 搭建 AI助理 有所帮助,本人水平有限难免会有纰漏,欢迎大家指正。如觉得这篇文章对你有帮助的话,欢迎点赞收藏加关注,感谢支持🌹🌹。
2024年05月28日
50 阅读
0 评论
0 点赞
2024-02-09
幻兽帕鲁Palworld服务端一键搭建教程
本文所使用一键脚本基于Docker,理论上适用于所有x86架构的主流Linux系统(不支持ARM架构),推荐Debian11 12 Ubuntu20.04 22.04现在内存泄漏在大多数脚本已经带有释放内存的插件了如果你是使用windows搭建,可以尝试使用Mem Reduct可在不重启服务端下,释放内存!一键项目地址:https://github.com/miaowmint/palworld拥有web可视化控制的项目:https://github.com/Hoshinonyaruko/palworld-go以下教程原创 猫猫摸大鱼简要搭建方法:境外机运行一键脚本curl -o palinstall.sh https://raw.githubusercontent.com/miaowmint/palworld/main/install.sh && chmod +x palinstall.sh && bash palinstall.sh如果是境内机访问不了 github ,可以使用我托管的一键脚本curl -o palinstall.sh https://blog.iloli.love/install.sh && chmod +x palinstall.sh && bash palinstall.shtips:第一次运行需要使用一键安装脚本,后续可以直接输入 palworld 进行管理后续都是废话可以不看了脚本使用的是我自己构建的镜像,如果不需要其他功能只是简单开服的话也可以直接运行 docker run -dit --name steamcmd --net host miaowmint/palworld 不需要运行其它任何命令就可以连接服务器了如果想要自行构建镜像可以使用 main 分支里的 Dockerfile详细使用说明运行一键脚本输入 1 安装幻兽帕鲁服务端装成功,此时已经可以连接了(正常需要拉取镜像,约2.9G,我这里已经拉取)修改服务端配置(后续全部为可选步骤,不配置不影响游玩)运行命令 palworld 接下来输入 4 修改服务端配置此时不要乱输入,先前往 https://www.xuehaiwu.com/Pal/ 进行可视化配置,配置完成后点击页面最下方的 生成配置文件 ,并复制如图框选区域的 数字 将这串数字直接粘贴到 shell 然后回车,服务端配置修改就完成了~~导入幻兽帕鲁存档及配置如果你在其他的服务器有存档,想要导入的话,就可以使用这个功能(仅验证了linux开服的存档,windows的和单人存档不保证有效)运行命令 palworld ,输入数字 8 ,开始导入幻兽帕鲁存档及配置。如果你运行过此脚本的导出功能,并且没有删除备份的话,直接回车即可如果你是在运行此脚本前已经搭建好了服务端的,并且是按照我之前写的那四条命令的教程搭建的,可以使用此脚本进行导出然后导入回档至于其他方法搭建的服务端的 Saved 文件夹在哪,(我不知道)导出幻兽帕鲁存档及配置运行命令 palworld ,输入数字 9 。不到一秒钟就导出完成了,导出的存档文件夹为位于 /data/palworld/ 下的 Saved 文件夹。至于其它的配置项就没什么需要额外注意的点了,在这里就不过多赘述了。欢迎大家来使用这个一键脚本 😎
2024年02月09日
65 阅读
0 评论
0 点赞
2024-01-29
使用 FFmpeg 为视频添加字幕
编入视频流(内嵌字幕|硬字幕)要在视频流上面加上字幕,就得使用一个叫做 subtitles 的滤镜,要使用这个滤镜,在命令中写上 -vf subtitles=字幕文件名 ,还是要注意,如果文件名包含空格或其他特殊字符,得用半角引号包起来:-vf subtitles="字幕 文件名"。因为这个操作改写了视频流,所以视频流必须得重新编码。使用 subtitles 滤镜为视频添加字幕(将字幕合成到视频流中,输出文件中不含字幕流):ffmpeg -i input.mkv -vf subtitles=subtitles.srt output.mkv将 input.mkv 中的字幕(默认)嵌入到 output.mp4 文件ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4将 input.mkv 中的字幕(第二个)嵌入到 output.mp4 文件ffmpeg -i input.mkv -vf subtitles=input.mkv:si=1 output.mp4关于 [subtitles] 滤镜的详细用法:http://ffmpeg.org/ffmpeg-all.html#subtitles-1还可以使用 ass滤镜 ,用法和 subtitles 滤镜几乎一样,但它只用于 ASS (Advanced Substation Alpha) 字幕文件,可以先进行字幕转换,再使用它:ffmpeg -i subtitles.srt subtitles.assffmpeg -i input.mkv -vf ass=subtitles.ass output.mp4关于 ass滤镜 的说明:http://ffmpeg.org/ffmpeg-all.html#ass在实际使用中发现 ass 和 subtitles 最终效果并无区别,但 ass 只能使用 ASS 字幕文件,不可以直接使用容器中的字幕流,所以直接使用 subtitles 即可,省去了手动提取和转换的过程。作为字幕流(内封字幕|软字幕)将字幕封装到容器中,就是所谓的字幕流,和视频流、音频流同等地位。值得说明的是,并非所有的容器都支持字幕流,先进的 MKV 是支持的,MP4 目前我只知道支持苹果的 MOV text。MKV 封装工具: MKVToolNix MKV 提取工具: gMKVExtractGUI 使用图形化工具更方便。以下都是废话将字幕封装到容器中ffmpeg -i input.mkv -i subtitles.srt -c copy output.mkv从容器中提取字幕流ffmpeg -i input.mkv output.srt例子中生成的是 srt 格式的,可以任意生成所需的格式,改一下扩展名即可。参考:Windows 下使用 ffmpeg 为视频添加字幕使用 FFmpeg 将字幕文件集成到视频文件如何使用 FFmpeg 进行视频转码:字幕
2024年01月29日
26 阅读
0 评论
0 点赞
1
2
3
4
...
7