各位同学大家好,今天这期呢给大家推荐一个团队协作开发的托管平台,叫做 giki, 这个平台呢是我今年才开始有在使用的,包括我们公司的一些项目呢,我也会搭建在自己的服务器上面。那首先呢,我们先来看一下这个 gate 的官方网站, 那么它是一个轻量级的开发平台,就是整个的软件呢,在服务器上面运行占用的内存是非常小的, 同时呢他也支持了非常多的,就是我们产品的开发计划到成型的产, 整个的生命周期啊,会有各种各样的一些技术上面的支持。那么更重要的呢是它是基于 m i t 协议的,所以我们在使用的时候呢,就是这些开源的协议呢,就更加的灵活一些。 那说一下我为什么会选择这个平台啊?公司的项目呢,在最开始的时候可能只有几个老师,然后有参与,但是我们现在一些就是这种平台呢,比如说马云啊,我也经常用,我是马云的重度用户, 当我们用马云的时候呢,他在这种呃项目团队人数不超过五人的时候,都是可以正常的去使用的,但是一旦参与到这个项目的人更多的时候,那他 他的这个人数呢,就没有办法再增加了,但是我们的项目的话,就是会有这种各种各样的老师参与啊,所以今年遇到这个项目可能人数上就超了。 那用其他的平台呢,也尝试过,比如说也用过 gate lab, 包括 gate lab 的这个中文版,我当时呢在服气上面有搭建,这个 是一个基于宝塔的服务器哈,在宝塔的服务器当中呢,有内置 get lab 的,就是这种快速部署的功能吧,我当时呢最早的时候也是这样去用的 啊,那么用的过程当中呢,也没有什么太大的问题,但后面呢,有一次宝塔升级的时候,他检测到这个 good lab 呢有一些漏洞,就把这个软件呢相当 禁用了啊。我再再次去搭服务器,然后说要重新装这个 gitlab 的时候呢,就已经装不上了,所以后面呢我就想着看看有没有其他的一些好用的平台啊,后面呢就找到了这个 gt, 那当我研究完这个平台之后呢,我把这个相当于搭建在我们自己的服务器上面,然后呢就托管了非常多的项目啊,包括给我们嗯公司代课的一些老师,他所带的班级,然后呢也有去推广这个东西。 那后面也是因为就是上个月啊,我们有一个班毕业班,毕业班的一个同学呢,他在去进到公司的时候,刚好公司的这个主管让他呢去搭一个这种代码的托管平台,那么他 啊,因为在学校的话,实际上他嗯可能没有接触到这种东西啊,因为一般像这种平台的呃服务的搭建呢,可能公司他实际上是有的,就是你去到一家公司的时候,可能人家就有自己非常熟悉的这种平台 啊,已经是打好打好的,但是他呢刚好就遇到一个就是没有这种托管平台的情况,所以当时呢他找到我,我就给他推荐了这个 kitty, 那么通过就是我们大概 嗯就是一个小时半个小时的这样一个说明和讲解哈,他很快呢就在自己的公司的服务器上面把这个平台搭起来了, 个人觉得呢,整个这个过程还是呃,没有什么太大的难度的。那后面如果说大家有在公司的这些服务器上面,还有遇到说需要搭建 自己的一些代码托管平台,然然后给各个就是公司的小伙伴,然后去用啊,那么我也比较推荐这个东西啊,那么安装的时候呢,也非常方便。 那么我也在就是服务器和服务器之间迁移过这个 gate 的平台,总体来说哈,就是,嗯,还是比较容易的,也没有太大的问题。 好,那后面呢,我也会出一个关于 gate 搭建的教程,如果想对这方面有更多了解的同学呢,也可以关注我后续的视频。好,今天的分享呢就到这里 啊,那关注我呢,后期呢给大家带来更多的这种实用的网站的介绍和工具的介绍。好,今天就到这里,拜拜。
粉丝12获赞104

大家好,这里是零度,话不多说,我们直接开始,首先打开评论区指定的这个链接,能上 get up 的 就上 get up, 不 能上 get up 的 直接去 get e。 马云这里就点这个瑞士这里最新的一个,直接下载就好了, 如果两个都上不了的话,直接进群吧,你会放在评论区上,然后我们下载好,下载好之后找一个非中文的,非中文的文件夹里面解压缩,解压缩之后里面有几个文件, 双击这个打开之后,第一次打开是这样子的,我们直接添加服务器,在这里,你的名称你自己改一下,然后路径你自己也看着,需要改一下,你自己改改这里,然后我们创建,点击创建,点击创建之后,我们服务器是没有东西的, 这时候我们点更新服务器,在这里需要说一下,这个游戏的服务器文件很大,有五到六级,为什么他那么大呢?给你们看一下,为什么 把这些技能的演示视频也全都放在了服务端,而不是玩家的客户端,所以玩家的客户端也就大概应该是十几 g 吧,这个服务端他有五到六 g, 然后这五到六 g 里面有一半都是这个演示视频,所以说他服务端是比较大的,下载的时候要费 长一段时间,因为云服务器它的宽带也不是很大,整个下载完可能得二十多,二十多分钟,半个小时这样子,在我本地的电脑里更新都要十呃,十分钟,接近十分钟, 所以在云服务器的话,它更新速度会更慢。我们下载成功之后,我们点击启动服务器。好,因为我们是第一次下载,第一次安装,然后也是第一次启动,所以我们需要 让它自动关闭,然后我们进行配置,点击我们的服务器连接配置,在这里我们就可以调整我们相关的配置了。你想要的比如说这里名字啊改成了, 改成你想要的什么名字,我这里加个一什么的都可以,中文的话也可以的。然后这里是连接的端口,它默认是八七七七,查询端口默认是二七零幺五,这里都是些默认的设置,然后这个地图选择的话,你可以在这里选,就两个地图默认是 p v 啊,设置好之后你又点文件保存 是这里如果有多个的话,你注意一定要选选对,不然的话会覆盖另一个服务器的设置,然后点保存就好了。这里的话服务器哦不管理员密码最好是设置一下, 你作为辅助,你肯定是要进去,呃,调整一些参数啊,或者是踢人封人之类的,一定要弄个管理员密码,到时候你 才能打开那个管理员面板,后面的我们后面再说,我们先保存,然后我们再启动就好了。这个游戏它完全加载服务器,它也要很长挺长一段时间的,需要耐心等待,完全加载后就可以在游戏里面进行连接。现在我们看一下 它控制台,它现在还是在初步化,它启动成功大概需要五分钟时间,也不需要五分钟吧,三到五分钟,如果运行的太久的话,会加载的更慢。这些这些东西 你可以按照自己的需要去改,给它调整一下,或者是直接输入嘛,这个连接端口就是如果你要直连游戏的话,就需要用这个连接端口, 比如说我现在是本地使用的这个软件,我就是幺二七点零点零一,如果你是云服务器的话,那就用到你的云服务器的公网 ip, 比如说我这里的公网 ip 就是 这个幺幺六 什么的,就输入这里,这里此盘,呃,此盘内存保存间隔可以不用,不用动,不用改。然后这里自动保存数呢?我默认是五,你要调多一点的话,你就给他调多一点。自动保存数是什么意思?自动保存数就是服务器文件夹里面,这里 w s word, 这里,这里就是雨林地图,这个 word 就是 你的存档地图存档这个自动保存数,因为我们这里设置了自动保存间隔是十分钟,这里是十分钟,他就会每十分钟就 会多一份。多一份副本或也不是副本吧,就是多一份你的地图的存档,但是这个名字肯定就不是 word 副本的,是 另外一个有时间显示的这个 d b 文件,这个就是十分钟之后,它会自动保存一一次,也就是备份嘛。然后自动保存数就是它有多少个备份,如果超过这个数量的备份的话,它会从最 最旧的开始删,删到只剩下五个备份哦,四个备份再加上这个 word 就是 五份嘛。自动保存数往上调的话就七份啊,多少份,你自己想调多少调多少吧。现在开始我们看这个,这个地图成长,它是很小的,就四十 k, 到后面的话你的存档会很大。这个自动保存间隔是服务器、游戏服务器他自带的一个参数, 但是这个自动保存数啊,删除删除存档间隔服,游戏服务器是没有的,这个是我这里新加的一个功能,如果没有使用这个软件的朋友需要注意一下,如果你使用了自动保存间隔的话,他这里的存档他是不会,他是不会自动删除的。如果你有很多个这个存档, 开始还好,就四十 k 一个,但是如果到最后的话,到最后的话给大家看一下我这个服务器,我这个服务器他到最后已经到四十五十二兆,每一个存档几十兆。如果你很多存档,但是没有删除,没有去删除的话,到最后可能会爆盘,然后你云服务器只能是重装或者之类的, 直接把它删一下,他应该是启动成功了。看到这个 server list register server so so master and succeed 就是 可以了,可以了之后我们在游戏里面给它连接。回头看一下啊,密码刚 刚说过了,监听端口的话他也不用管,这用到挑。 net 的, 不过最好就不用不用挑。 net 吧,那个有点有点老旧了, 而且跳。 net 就 只能是就只能是在本电脑中操作。如果你是云服务器的话,你想在自己的电脑上去控制这个云服务器里面的服务器他是用不了的,只能用这个路由。这个路由端口的话就是我们来到主 界面可以点这个路由远控,然后这个端口是默认是幺九零零零,然后我们点击连接一下连接,连接成功之后我们就可以对服务器发一些命令,我们发一下系统聊天。哎, 这就是系统里面的提示,系统的全幅发话,这里的话也可以反发中文,如果你用 tina 的 话,你发中文是不行的,它会变成几很多个问号,用一下啊,这个指定是 say 你 好,那它就变成问号,就变成了问号,你发的东西也是问号,你中发的中文也是问号。 所以说最好就不要用 tina 在 这里连接就行。你设置的密码,比如说一二三四五六,呃,保存之后你输入连接就好了,然后这些这是部分指定,部分能用的上的,有一些指定我觉得没什么必要的,就没有添加在上面。如果你想看到底有多有多少个指定的话,你可以直接 发个帮助指令,这里就是给你列出来一堆指令,一共有三,一共有三页,如果你要翻页的话,就在这个二,然后点这个空白指令,空白指令就是他要发空白指令,然后发个二才能翻页,第二页翻到第三页,然后就没了。一共有三十九个三十九条指令,但是有一些指令我们 大概率是用不到的,所以我就没添加进去,都有备注,如果要用的话,你们在自己仔细看吧。断开连接 关掉。哦哦,说一下,如果你是用如果用这个关闭服务器,关闭服务器的话,后面要加参数的,加个一,在后面的参数是多少的话,那就是多少秒之后关闭服务器。如果是一的话,他过一秒他就会关闭吗?但是关闭服务器的时候,他连这个 recorn 的 连接也会断开,如果你 输入了一的话,他马上关闭,关闭服务器,关闭没看端口,那么这个软件会不会闪退?这个我后面再解决一下吧,基础的设置都已经说过了,后面我说了一个,就是这个比较重要一点就是服务器集群这个问题,服 务器集群也就是服务器互通的功能,我这里也不针对谁吧,我只能说有一次商家啊,就是那些租服 服务器的时候,只给你一个网页浏览器打开,然后让你开关服务器的,也不知道是谁到处宣宣传说如果要互通的话,要买两个服务器,但是如果你是大牌,比如说阿里云呐,金龙云呐,腾讯云呐之类的,能给你这个远控 远控界面的,那就不用买。第二个服务器被他们搞的一传十十传百,搞的乱糟糟的。呃,我这边演示一下吧。首先我们现在有一个服务器了,然后我们现在创建第二个服务器,好给他改名 一下。创建了之后我这里就不下载了,给大家演示一下导入服务器的功能。我们也知道服务器下载的话是很慢的嘛,如果要创多个服务器的话,一个个下载会很折磨,那我们就可以直接导入这个已有的服务器,现在我们已经创好了一个服务器 另一个服务器了,然后我们点击导入服务器,会弹出一个窗口。一般的话你们一开始就是用 steam c m d 嘛,如果是用到了 force install directory 这个命令的话,那就可以找到你到时候你那时候 force 的 那个文件夹,比如说 force install directory so mask, 就是 这个文件夹,把这个文件夹直接拖到这里,然后点确认,要等它导入,导入成功的话会弹出提示导入成功。如果是没有用 force install 呃 directory 的 话,那你就直接来到 c m d 的 这个文件夹,把这个 steam app 给它整个拖到里面 也是一样的,也是跟之前第一个方法是一样的,反正就是把 force 的 那个文件夹或者是 steam app 文件夹拖到里面就可以了。 确定之后我们可以看一下服务器文件夹,服务器文件夹已经导入了这里,就刚刚已经有的这个服务器设置也是差不多的,但是有一些设置还要自己改一下,所以我们点击这个服务器连接配呃,编辑器。哦,他这里我这是没有启动过的,启动过的话一般就不会弹这个窗口,他显示这个的话,我 我们需要启动一次服务器。好,看到这个这个界面,看到这个界面就说明这个服务器它的设置里面它的端口或者是之类的东西有问题。看到这个界面之后,我们点击这个服务器连接编辑, 看到了吧,这里是八七七七,我们第一个服务器,它这里端口也是八七七七,所以这就是端口冲突了,它就弹刚刚那个窗口,如果这个服务器没开的情况下的话,它是不会 马上退出了,因为没有冲突吗?因为你这个服务器的连接的端口它已经关掉了,就能适就释放出来,能用了就不会弹了,所以这里我们要给它改一下二七七,然后名字也是改一下,弹端口改一下,然后 款端口改一下地图 p v e, 这后面的不用改,要管理员密码好给他保存一下,记得保存在这里。好,现在我们有两个服务器了嘛,先把你想作为主服务器点一下,然后点服务器连接配编编辑,这里餐饮服务器集群作为主服务器保存,我们的这个主服务器保存 好,这里已经呃多了一个,多了一个主服务器就是把进西西把它关掉。第二个点这里关于服务器机型和副服务器,点一下选,选好,选好之后保存好,保存好了之后我们就直接启动服务 器,两个服务器都启动之后进去服务器,然后打开。呃,打开那个管理员面板 gmp, 然后刚刚的管理员密码打开了,打开之后点这个,打开系数设置右边看右边还有一个跨服功能, 一般初使的服务器他是没有开跨服功能的,所以我们要把他跨服功能打开,然后退出,然后去到神秘岛,然后跨服列表。需要说一下,就是如果你是本地作为服务器,也就是说你自己的电脑作为服务器的话, 是跨不了服的,这挺很遗憾,是跨不了服的,如果你是云服务器的话,跨服功能是肯定有问题的。 连啊,你看他这里连接,连接这个主服务器失败,在这里如果你的副服务器不想连到你现在这个云服务器里面的主服务器的话,你可以点手动输入公网 ip, 比如说直接填一二七点零点一, 那就是本服务器,你想跟别的服主去进行互通,或者是你买了另外一个服务器,但是他的公网 ip 不是 这个公网 ip 的 话,你就点这个手动输入公网 ip, 然后输入公网 ip 就 可以了。 一般的话,一般的话是不用开的,因为已经使用接口去获取你你的公网 ip 了,这个公网 ip 是 我电脑的公网 ip, 但是我电脑是没有公网 ip 的, 所以这这个公网 ip 并不是真的,但是一般的云服务器里面它的公网 ip 都是固定的嘛, 所以他这里的公网 ip 获取到的公网 ip 都是确实是这个公网 ip 的, 但是如果不对的话,你就可以点这个手动输入,呃,输入公网 ip, 你 去给他输入就行了,或者是你干脆就直接一点啊,一二七点零点零点 一嘛。好,第二个服务器已经启动,启动好了,但是呢,因为我们这是本地建的服务器,所以说是互通不了的。给你看一下,已经有互通了的 服务器,就算你使用的是樱樱花 f r p 或者是呃, redmi 来创建隧道局域网的,也不能互通,所以说这个也没办法,我试了很多次了啊,现在我们就可以互通了。然后就是说一下,如果你有两个雨林嘛,一个浮沙,那么你在雨林的时候就只能看到浮沙的服务器,看不到 另一个雨林的服务器。如果你在浮沙的服务器的话,你就能看到另外一个雨林服务器。就是说你在浮沙能看到两个 服务器吗?比如说我在这里一个雨林两个浮沙,我能看到一个浮沙,还有另外一个浮沙,这就是另外一个浮沙的,不过一般就 一张浮沙,一张雨林也就够用了。 mod 的 话,呃,如果你想要在服务器里面安装 mod 的 话,就需要你去游戏里的 在工房里面找到你想要安装的 mod, 找到这个 mod id, 把这个 id 复制过来放进去。如果你有多个 mod 的 话,就要用英文的绰号去翻开英文的啊,这个是中文的,中文中文他会隔开很大的空间,英文的话就会贴的很紧,就是这个才是英文 的。如果你有多个服务器互通的服务器,你的 mod 列表最好是一样的,不然的话会有概率会崩溃,你传服的时候出现奇奇怪怪的问题。还有说一下这个在软件设置里面, 你可以启动自动重启功能,你有服务器运行久了的话,运行久了的话最好还是重启一下,如如果不想手动重启的话,那就起用一下自动重启功能, 然后给它设置成四点钟吧,标准时间凌晨四点钟,然后保点保存,然后就可以了,不想启动的话我给他关了就行。好,关于这个软件的介绍到此结束。

如何用 doctor 安装一个 get server? 这个文件是从 jt 的官方网站复制下来的,把 doctor 文件放置目标目录, 只是那个 misco 的版本需要改一下。本机的 misco 的是八点二, 可以看一下这个文件,这里是八点二,其他都用默认的就行了。 构建并运行, 运行之后这三个目 路自动创建出来的,现在这个环境也已经搭起来了。从三千端口进 这里,直接点, 随便输入密码创建。第一个用户是管理员,这里可以创建组织, 在组织里可以创建代码仓库, 基本上填默认值就可以。

使用 tanoos 在 家庭网络部署代码仓库, 登录 tanoos, 进入客户端,打开命令终端,启动 gtr 我 的应用创建公网地址访问 gtr。 通过公网地址访问 gtr, 完成配置 测试,创建代码仓库, 测试代码仓库 clone 和提交。

我们先拉个镜像,最小的测试镜像 像这个拉的是是从服务端拉过来的, 我们把这个存到就是我们自己的私服去。那这个怎么弄?应该就是类似这个音, 先 tap 一下,再把它弄进去, 就是这一块, 这时候还要把那个 pose 上 push 上去, 没有这个你直接点启动, 正常的启动。

大家周末好, gtr 怎么用作 docker 镜像的私服呢?就相当于自己建了一个 h u b 点地 o c k e r 点 com。 好,我们先这里来试一下看。 首先呢,我们要在 host 里面加一个网址,应该已经加好了, 在这里加了一个, 如果你新加的, 那需要刷新一下,刷新需要用那个管理员权限, 需要用管理员权限,这样 flash 就好了,它就生效了这个配置。然后还要配置 doctor, 我们可以看一下,我已经配好了, 就需要把这块加上去。 我们就先用 h t t p 来试一下, 主要是需要支持 doctor poo push。 然后怎么使用它呢?我们可以看一下,你配置好了就应该可以用。嗯,这里一样啊,如果这里是刚刚改的话,要重启一下 doctor 服务, 先停止一下,为正常启动的 doctor 服务。

朋友们大家好,我是传奇风云,这节课呢,咱们讲一下这个 ge 引擎的微端配置, 咱们接着上节课啊,接着上节课,上节课已经把登录器生成好了,咱们接下来配置微端,打开引擎包, 隐形包里边有一个微端服务器,咱们把它复制出来, 打开,打开这个微端程序, 呃呃,咱们用上面这个就行, 然后选一下这个客户端路径, 十三周年。好,确定第一次?他这个需要更新一下啊,需要更新一下,这个补丁有点慢。 好,他一边更新咱们一边说下这个设置啊。啊,第一步把这个目录给他,换上自己的 十三周年客户端服务器地址,随便,不是随便啊。呃,就用它默认的这个服务器端口改一下,不要用它默认的改一下,比如说 八五五最大最大的端口是这个啊,不能超过这个,不能超过这个数,这个数以下的都可以,只要不冲突, 咱们用这个就这个啊。八五五,因为这个之前我配置过啊,之前配置过,所以他显示的是这个,他已经不是原来那个默认的数值了,没关系。嗯,咱们 下边这个更新密码很重要啊,更新密码,咱们打开咱们这个。呃,登录器, 登录器配置器,我在这里已经打开了,登录器配置器里边有这个更新密码, 微端更新密码给他复制一下,复制到这里, 这个跟这个对应啊。 好,接下来是这个补丁的这个名字,补丁名字是这个啊,打开咱们的这个补丁, 补丁名字是这个,复制一下,贴到这。好,这这个咱们就。嗯设置好了 这个端口啊,还有这个最后一个端口,这个端口也不要用它默认的端口,咱们给它改一下,八八六八。 好。呃,其他的,其他的不需要改啊,都用他默认的。确定 好,这已经更新完了,咱们查看一下。 呃,它这个 p a k 里面没有显示啊,我们重启一下。 我梳了你的腿,却不能 啊,他说密码错误, 打开打开,这样一看啊,他没有密码,都是报警了。红色,咱载入,载入正确的 p a k。 选地盘,咱们的这个服务端登录器 p a k 打开, 然后保存 完毕 哦,关闭,重新打开。 还有几个是错的啊?没关系啊,咱们继续一会看看啊,都是规则 更新失败十二个, 这个技能一,技能二,技能三,一直 到技能八。看一下啊,看一下那个原装的那个 p a k。 嗯嗯 啊,他没用着啊,这几个 p a k 他没用着, 他没有没,没用着,就没在这里边添加,所以他报错。咱们可以找到那个 p a k 啊,没用就把他删掉,或者给他先保存到其他地方,就不报错了,咱们找到啊,按照这个路径去找。 哎,不对,不是这个,这个, 这个技能一二三四五六七八 一二三四五六七八。咱们把它先放出来, 咱们先建个文件夹给他,先放到这里面, 暂时不用的, 做个备注。还有什么?还有几个啊?还有一个这个 m 开头的,咱们找到他, 就这个我给他剪切出来。 还有一个这样的, 直接搜索啊,把它剪出来 那个七, 呃,一个武器内关, 他这是几啊?我现在看 没有数字啊,后面没有数字。 好,这就可以了,重新启动一下, 单纯的说好不好? 好,这次没有爆错啊, 没有失败的,没有生成的,就第一次,咱们已经生成好了,所以这次没有生成, 但是他是在这里边生成一个缓存文件啊,这已经可以了啊,服务端服务器的设置已经好了。 微端服务器啊,下面咱们设置这个微端网关, 打开这个微端的网关, 微端网关配置成功,启动成功,不用管它点配置啊,这是我里边原来添加过的, 没添加过的修改就行了,如果没有三个的话,就把它添加够三个, 这个我已经做好了啊。呃,如果,如果是第一次做的话,里边可能只有一个默认的,只有一个默认的就把这个 ip 地址填进去, 看能不能把它删掉啊。 好,他里边本来有,本来只有一个啊,只有一个,只有一个,咱们再添加两个,一定要是三个啊,他 里边默认需要是三个,三个才可以,咱们咱们再添加一个移动 服务器端口,这个端口微端端口对应的是这个端口啊,这是八零六八,咱们这也填八零六八, 这个对应的是这个,一定要对应啊,不然他昨天更新不了呢,连,连不上, 再添加一个电信, 这个要改一下啊,端口要改一下,修改, 修改,修改之后他就马上就连上了,跟这个对应上,这个服务器马上就连上这个王冠了, 然后做好之后把它最小化,这里八零幺八零幺幺,咱们也改一下八零二二,就用八零幺幺吧,因为咱们,呃设置那个列表的时候,列表里边就是八零幺幺,咱们重新打开看一下啊, 防截射列表,这里这里这个微端端口,呃,上面有格式啊,微端 ip, 微端端口 对应的是这个啊。微端端口八零幺幺,这里也是八零幺幺,要对应上啊, 不然你打开那个登录器之后,他这个不更新补丁,你会黑屏。 到这咱们就微端就配置好了,把它保存 好,启动这个服务器 启动 看一下。我已经启动成功了啊,把它最小化,把这不用的关一关啊,咱们重新检查一下啊, 服务器启动好了,哎,对,这里面要说一下这个网关啊,游戏网关, 游戏网关选项基本设置基本设置这里边,这里有个登录密码,这个登录密码对应的是 登录器生成器里边这个登录密码,他俩一定要对应啊,不然你会黑屏, 他俩是一模一样的。好,确定 好,这是服务端开起来了,然后列表服务器也开起来了,他是启动成功, 然后咱们的微端服务器也开起来了,微端网关也开起来了, 咱们现在把这个生成的这个上节课生成这个登录器复制到咱们的本地。 好,复制好了,咱们打开。 呃,初次运行是否要在此目录直接运行?是 好,列表更新出来了, 证明咱们这个列表服务器运行正常。呃,这个证明这个列表服务器他是运行正常的,没问题, 这服务器连接成功,证明咱们这个服务端开起来了,咱就连上这个网关了,连上这个游戏网关了,好点,开始 好,点开时,他屏幕卡到这了,一个白色的屏幕。 白屏,这个白屏是 ge 的特色啊,先把它关掉,别的引擎它不会产生这种情况,只有 ge 把它就卡死到这了,咱把它结束掉 怎么办? 这里边有一个工具啊,可以修复一下。呃,咱们打开这个。呃,引擎包里边有这个登录器白屏修复工具, 咱们在服务器上修复的话,他有可能会报错啊。咱们直接到这个拿 到本地来修复,然后,呃,然后把咱们这个服务端打开, 然后打开咱们这服务端里边的登录器啊,把这个文件夹复制到本地 好,复制好了, 然后把这个白屏工具也复制到本地 好,复制好了,我们重新打开 好是否要运行?是的, 点了运行之后他的地盘自动生成一个文件夹, 自动生成一个传奇的根部录,他会在这里面更新咱们的补丁文件。看着啊,他现在里面是没有什么文件的,只有只有这这么几个, 我现在开始更新文件了。 好,现在就可以进来了啊,没有白屏了,咱们注册一个账户,你看你每做一次,每每做一个步骤,他里边都会生成一些文件,他从那个服务器更新过来的, 包括这里边呢,也会有他生成一些新的文件。咱们点开这个观察一下啊。 好,咱们进入游戏 必须为账户设置二级密码才能进行游戏 啊,他又更新出来这么多啊,没问题啊。嗯,正常进入游戏。 这个充值使者 游戏攻略,点击开始 新手地图,穿上这个新手装备。哇,挂了,什么情况? 刚进游戏就让我挂一次。 这是什么设计?什么逆天的设计。 这是想干嘛?这新手怪也太厉害了吧,打不过。 这是什么设计?脑残,直接回城 耗得了 我。我这个网速有点卡啊。 有点卡,有更新的慢。 嗯,他又更新出来这么多文件, 这个地图文件是在这个里面,这个里面咱们去过三张地图,他就更新三张地图, 这是怪物毒品界面。 好,这节课啊,就到这里,谢谢大家观看。


如果安全分十分的话,我这套设计架构至少可以拿到九点九分,因为目前来讲,你找不到任何的破解漏洞。看这是客户端所谓右键运行, 精确到一千位小数位的圆周率就出来了。上期视频有网友评论说他直接改掉客户端的判断条件,让他永远为真,意思就是永远都能继续往下执行, 那你继续往下执行,你也没用。我把这一段放到服务端了,就是把这个当成云函数来执行了,所以你拿到客户端的代码,你拿到下面这一部分有什么用呢?对不对? 当然这只是一个视力啊。其实真实的业务逻辑代码可能会更复杂,但是你只要把关键的函数生成关键的数据的函数放到云端,你看放到这个云服务器这里来执行, 因为你只要放到云服务器,人家是看不到你这个代码逻辑的,他只能拿到这个函数的返回结果,看这个构建的响应字典这里直接把 结果返回给客户端,即使他完全的模拟这个客户端,他拿到的也是这个函数的结果,所以他拿不到完整的业务逻辑,他就永远都无法伪造出破解版。他即使要 挂后缀函数,或者是直接改用户判断,直接改用户判断是绝对不现实的,因为我有字签,因为我这个客户端已经翻译为二进字文件,也是拍成了点 p、 y d 格式的。在云端这里我有一个字简,也就是你改了我的客户端的二进字文件,服务端的数据件你就拿不到了。 还有就是这个用户的剩余使用条数,也就是客户端的剩余使用条数,我是在云端调用的,所以你永远改不了我云端的代码,对不对?这就是多层防护。

嗨,欢迎回来,那么本节呢我们就来解决我们现在的这套系统中没有实现的退出登录的这样一个功能。那么首先呢,我们先回顾一下我们现在的这样一套 jwt 体系,它到底是怎样的, 这也是我之前带各位在 node js 剪映教程中学过的内容。那首先呢,我们这里有一个客户端有一个服务器,那在我们 jwt 的 这样一套规则中呢,我们在登录的时候呢会先进行服务端的交易,这里呢会把数据库中的加密后的密码和 我们的用户在客户端传过来的密码进行一些简单的校验,校验成功就会生成相应的 token 发送给我们的客户端,那么客户端呢会直接存储这样一个 token, 然后呢在发起请求的时候,直接通过这个 token 去请求我们的端点,我们的服务端呢只需要去验证这样一个 发过来的 token, 判断一下它是否被篡改,是否在有效期内,然后呢返回这样一个请求就可以了,这是一个非常非常简单的过程,那么它的好处呢就在于 我们的服务器不管怎么拓展,只要所有的服务器都存储相同的一个密钥,这样的话就能够保证任何一个服务器都可以校验从同一个密钥签名生成的这样一些 token, 这样的话就能够非常轻松的进行水平拓展,也就是这样一个逻辑,并且呢我们的服务器本身是不会保存用户的状态的,但是这样做有一个问题,我们的退出登录 它该怎么实现呢?那么这里呢我们要引入一个新的机制啊,那么可以看到在刚才我们介绍的这样一套体系中呢,我们是没有办法实现退出登录的这样一套动作的,因为我们的服务器本身呢,它是不会存储我们的 token 的, 它只会存储我们的 j w t 密钥,而我们的客户端它是会存储 我们的客户端让它去删除这个 token, 并且呢我们也不能主动的让这个 token 的 失效。那为了解决我们没有办法实现 最初登录的这个操作的问题呢,我们要引入一个新的概念,它叫做 refresh token。 我 们先来看一下,引入了 refresh token 之后呢,我们在 j w t 的 流程中呢有哪些变化, 那么这里我们以注册的这个场景为例,那么注册同样是以用户名,密码或者是邮箱来进行注册,那这个地方呢就需要注意啊,在保存用户信息的时候呢,它同时还会保存一个叫做 refresh token 的 东西,那这个 refresh token 和我们之前的 j w token 其实是 同样的,它本质上都是基于 j w t 的 token, 只不过呢,我们在生成这样一个 token 的 时候呢,它会生成两个东西,一个呢就是我们之前一直在用的这个 access token, 另一个呢就是今天我们引入的这个新的 refresh token, 并且这个 refresh token 它会存储在我们的服务器数据库中,然后呢我们把生成出来的这两个 token 呢返回给我们的客户端,客户端同样进行存储,和之前是一样的,然后呢请求的时候呢,同样带着我们的这个 access token 来进行访问,然后呢,我们只会去检验这个 access token, 然后呢返回相应的请求,看起来好像没什么大不了的,那为什么我们还要多此一举去引入这样一个 refresh token 呢?那这里需要注意啊,我们的 access token 和 refresh token, 它们虽然都是 j w t 签名生成的这样一个 token, 但是呢,它们的区别就在于,我们的 access token 也就是用来实际的访问这样一个端点的这样一个 token 呢,它的有效时间是非常短的, 我们一般可能只给它设置成一个小时,或者是最多不超过一天,又或者是几十分钟。而我们的 refresh token 它的时间是非常的长的,它的有效期可能是 一周甚至三十天都有可能。那这么做的好处呢,就在于,就算我们的 access token 它被盗了,但是因为它的有效时间非常的短,过不了多久啊,攻击者 盗取的这个 token 呢,它就无效了,但是呢,相应的,因为它的有效时间很短,所以呢,用户可能用着用着这个 access token 就 过期了,那这个时候呢,就要借助我们的 refresh token 来对我们的 access token 做一个更新的操作啊,这也是为什么它叫做 refresh token。 那么更新是具体怎么做的呢?我们来看一下。那更新的过程呢,同样基于我们的客户端和我们的服务器,那首先呢,正常来说,我们应该是通过 access token 来访问我们服务器的端点,然后呢,这个时候我们的服务器检验我们的 access token, 此时发现我们的 access token 它过期了或者是无效了,就会发送一个四零幺的 客户响应,然后呢,我们的客户端再次基于我们的 refresh token 发起一个新的请求,去请求这样一个新的端点尝试去刷新我们的 token。 这个时候呢,我们就会叫验我们的 refresh token, 并且叫验的过程啊,需要注意,它不只是叫验这个 token 本身是否是有效的,它同时呢还会和我们 数据库上存储的这个 refresh token 进行比对,因为刚才我们最开始有说过啊,我们引入 refresh token 这个过程中呢,我们是会把它存储在我们的数据库中的,而不是单纯地进行 token 的 这样一个交易,那交易通过之后呢,我们会返回这样一个更新之后的 access token, 还有 refresh token, 这两个 token 都会被更新,因为这样的话就能够同时重置我们 access token 还有 refresh token 它们两个的有效期。然后呢,我们的客户端再存储这样一个更新好的这样一些 token, 再重新的发起请求。 那么到此相信各位就了解了我们这个 refresh token 它到底是用来干什么的,但是到现在我们好像还没怎么了解它到底是怎样进行退出登录的。那么了解了 refresh token 它的存储的过程以及更新的过程之后呢,我们来看一下它删除的过程。删除的过程其实也很简单,我们的客户端发起一个 退出登录的请求,那么我们的服务器就直接把数据库上存储的这样一个 refresh token 直接给它删掉,删掉之后呢发起一个响应,那此时呢,我们也会在客户端上去删除 存储到的这样一些 token, 那 当然这个时候其实也有可能我们的 access token 或者是 refresh token 已经被盗了,我们的用户可能还浑然不知,但是因为我们在我们的服务器上把这个 refresh token 已经删掉了,所以呢其实无伤大雅。此时呢,就算我们的攻击者他拿到了 这样一些 access token 还有 refresh token, 它尝试去访问我们的服务器进行交易,但是因为我们的 refresh token 它已经被删掉了,所以呢会返回四零幺,这个时候呢,攻击者 就算偷到了这个 reflash token 还有 access token, 它也没有办法起到任何的作用,那这就是我们的 reflash token, 它起到的这样一个退出登录,并且还能够保证我们的服务安全的这样一个作用,这样的话就能够避免我们的 token 被盗用的这样一个问题。并且呢大家能够发现,只要我们的 reflash token 它的时间设置的稍微短一点,比如七天的话,那么这种情况下呢,你连续七天不登录,那么就会提示你要重新登录,因为你的 token 已经过期了,这也是一个 非常好的来防止我们的 token 令牌被盗用的一个机制。那么了解了整套机制之后呢,我们来看一下该怎么实现它, 那今天呢,我们只实现最核心的逻辑,我们先不与我们的接口和我们的业务逻辑串起来。同样的,来到本节的 项目模板,我们来到 os, 来到 os service, 具体的逻辑呢,我们就要在登录还有注册中去实现,我们注册里面呢,首先要改掉的就是这里 生成我们的 token 的 地方,那很明显我们这里要多返回一个 token, 这里呢我们叫做 refresh token, 那 它的生成逻辑和上面是一样的,寄予同一个 payload, 然后返回的类型,我们改一下,这里要多一个 refresh token, 但是呢,就像我们刚才的那个演示文稿中 所演示的那样,这里的 refresh token 还有 access token, 它们的有效时间应该是不同的,所以呢,我们要在这里对它们做不同的一些设置。那相应的来到我们的 os module, 这里的 j w t module 这个地方呢,它们的 这个有效时间呢,其实就是无效的,我们可以直接给它删掉,我们要单独的进行配置。以及呢最好啊,我们的这个 refresh token 还有 access token, 它们两个相应的这样一个签名密钥,最好也是不同的,所以呢,这个地方 我们需要去多添加一个 j w t secret, 这里呢我们就叫它 access secret, 那 下面这个呢,我就叫它 refresh secret, 我 们去获取两个不同的这样一个密钥, 好的,我们先复制其中一个,刷新一下这个网页,再复制另一个作为我们的 refresh secret, 那 此时呢会到这里,那在这个地方呢,我们该怎么去设置它呢啊?其实很简单,在后面跟上一个对象,可以看到这里的 sign a think 这个函数,它的第二个参数呢就是我们的 j w t sign options, 在 这样一个对象里,我们就可以写上,比如这里的 x expires in 这样一个配置,它呢我就设置成十五分钟。那另一个呢,我们就设置成七天吧,稍微长一点,但是呢不能非常的长。然后呢,还有它们对应的这样一个秘钥, secret, 这里我们从环境变量中去提取,上面这个呢,自然就是 refresh, ok。 那 此时呢,我们就成功地返回了一个 access token, 还有一个 refresh token。 但是呢,我们的数据库表中,我们还没有写入这样一个 refresh token, 所以呢,我们要改一下我们的 entity。 我 们在这里呢,先添加一个字段,我叫做 refresh token, 它是一个字串, 然后呢写上 property。 那 需要注意的是啊,我们这里要存储的 refresh token 呢,它是可能被删除的,也就是可能被置空的,所以呢要设置成 nullable。 同时呢 需要注意啊,它的类型也是需要改一下的,我们这里不可能直接存储铭文的这个 token, 我 们需要对它进行简单的加密,就像我们的密码一样,所以呢,这里它的长度可能是比较长的,我们给它 设置一下它的类型为 text, ok。 然后呢,我们来到 dto, dto 这个地方,我们在我们的 create 这个地方添加上这样一个新的属性字段, refresh token, 那 么它应该是可选的,给它添加上一些内容, is optional, is not empty, is string。 回到我们的 service, 那 么在注册这个地方呢,很明显,我们就应该在这个 token 生成出来之后呢,我们把这个 refresh token 呢给它 写入在我们的这个用户中,所以呢,我们需要对我们的用户进行简单的更新,那我们看一下我们的用户更新这个操作,这里的 service 我 们有没有写好,可以看到这里有报错,是吧?那这里有报错呢?我们看一下它应该是类型不匹配导致的。我们来看一下这里的错误提示啊, 上面这些白色的我们都不要看,我们直接用这个 typescriptpretty arrow 给我们生成的这样一个简化的版本,它告诉我们这个类型和下面这个类型不匹配。我们看一下是什么地方不匹配啊?这里的 email, password, refresh token 这些呢都是一样的。那很明显可以看到上面这里是 refresh token, 后面有一个问号,下面这里呢是没有这个问号的。那这里的 create user dto 呢?我们刚才是已经改过来的, 这里是没问题的,那说明是我们的 entity 类型是有问题的。我们来看一下我们的 entity。 好, 对,这里我们忘记加上问号了,这样改好之后呢,就没有任何问题了。同时呢,我们还有我们的 update, 我 们来到这里的 update 去实现它给它改为一步的函数。同样我们要先 简单地查找这里,我们直接使用当前这样一个类中我们实现的 find one, find one id, 然后呢使用我们的 entity manager 调用 assign。 啊,大家应该还记得这个方法吧,前面呢是我们要更新的这个对象,后面是我们要传入的这些数据,那当然这些操作呢,全部都是 同步的操作啊,最终我们的操作要全部写入数据库中,我们要使用 flash, 最后返回这个对象,就这么简单我们就实现了更新,那么有了更新之后呢,我们再获取 payload 的 这个地方呢,我们去对它做一些简单的操作啊,我们获取这样一个生成好的 tokens 这样一个对象,先把它返回出去, 然后呢,在获取到这样一个 token 之后,我们调用 this user service, 我 们调用 update 对 应的 id 就是 这里的 created user id, 然后呢,我们要更新的是这里的 refresh token 这样一个词段, 那需要注意啊,我们传进去的这个数据库中的 refresh token, 它是需要加密的,所以呢,我们在前面使用我们的 be crypt, 使用我们的 hash, 我 们要加密的就是这个 tokens refresh token, 然后呢加密十次,那这个 round 我 们可以给它简单的抽象一下,或给它放到最上面一会,待会我们的这两个方法应该都是要用到的,我给它直接放在文件的最上面,写成一个常量 hash round, 在这里给它改成我们刚才抽象好的 hash rounds, 然后把报错的地方给它改过来 hash round, 那 么这个加密操作同样它是一个异步的操作啊,需要注意,我们写上了 wait, 返回得到我们的 hash refresh token, 再把这个加密后的 refresh token 呢给它写进去,这样才能够保证放在我们数据库中的这个 token 它是加密好的。 ok, 那 这样呢,最后再返回我们的 token, 这样就是 没有任何问题的了。那么相应的这些操作呢,我们可以给它简单地抽象一下,不然的话可以看到这里的逻辑有点太复杂了,比如这里使用我们的 command 加 句号,我们 extract to method in class, 这个方法我就叫做 generate token by user, 应该是改下面这个,下面这个生成出来的参数就是 user, ok, 然后呢,这里读取我们的配置的地方呢,我们可以简单地把它抽离出来,这里我们叫做 access secret, 那 下面这个呢,就是 refresh secret 啊,给它替换一下, 我们简单地做一层这个保底啊,万一这两个配置读取不到呢?我们下面这里的逻辑其实还可以再给它封装一下,又或者是这里 车里的逻辑,我们还可以再给它封装一下,我们直接选中再次 extract to method 这个新的方法,我叫做 issue tokens, issue 就是 分发的意思啊,然后接收的这个对象呢,同样是 user, ok, 此时呢,我们就只需要调用这个 issue tokens 就 可以了,然后 issue tokens 呢,又会调用 generate token by user。 为什么我们把下面这两个逻辑,也就是这里的逻辑给它合在我们的 generate token by user 呢?这是因为呢,我们的 generate token by user 从它的方法名上来看,它就是生成 token 的, 它不做其他额外的操作,它只做这个 token 生成。所以呢,我不想把这些更新用户 属性或者是自断的操作呢,也给它一股脑的扔进去,这样的话就显得这个方法呢不够纯粹。那么完成了我们的注册之后呢,我们再完成我们的登录就非常简单了,还是一样啊,这里我们直接调用 return this issue token 传入我们的 user, 注意加上 await, 那 么它的这个类型 access token, 还有这个 refresh token, 这里它的类型肯定也得改过来, 那么此时呢,应该就完成了,我们简单地给它加上一些注是,不然的话可能会有些迷惑啊,这里 generate jw tokens and returning, 我 们这里 给它加上注是 generate jw t。 下面呢就是 hash the refresh token, 这里呢, update the user refresh token。 然后这里呢也给它简单地写上来啊,那这里呢就是 define environment aribos, 那 这里呢,就是生成 token 的 地方 generate j w t。 那 么到此呢,我们就算是成功地完成了这样一个 生成 refresh token 的 整个的逻辑,那么大家可以发现,只要我给各位讲清楚了这样一套生成 token 的 流程之后呢,大家是能够很清楚地知道我们该怎样去生成这个 refresh token。 那 当然可以发现,我们这里其实只实现了登录还有注册的部分,那我们具体 退出登录,还有刷新 token 的 这样两个新的端点接口呢,我们就留到下集再讲,因为一次性讲太多的话呢,各位可能会反应不过来啊,如果你觉得还是不太理解的话呢,那么请再回头看一下我视频开头讲到的这里的 refresh token, 它的这样一套流程,希望能对你的 理解呢有更多的帮助。那么以上就是本期视频的所有内容,希望你能关注或订阅我的频道,感谢你的观看,我们下期视频再见!

大家好,我是小刘,一个技术从业者。上一期我把 lifefi 桌面宠物的上下游讲清楚了,四条上游,四个下游,中间还有服务端,三道安全护栏。这一期专门讲它的原码, 十二个文件,大约九百五十行代码,四套定时器,加上撤销倒计时,五种心情,十七种动物形态,怎么实现?三道安全护栏,前端怎么接? 十二频听完不一定能让你照抄,但能让你看明白。一只能听懂自然语言,还能帮你操作网站,还不会翻车的桌面宠物,大概要写成什么样?先看文件地图。 整套桌面宠物分两层,十二个文件组建层,九个 desktop。 pet 是 大脑, pet character 是 svg 动物本体, pet bubble 是 头顶气泡。 pet chat window 是 对话框。 pet quick actions 加 pet settings 是 快捷面板和动物选择器。 加上这一期新增的三件套, pet action confirm 是 删除二次确认。卡。 pet search quick reply 是 见任务缺字断时的快速回复。卡 pet dengu banner 是 六十秒撤销倒计时条骨架层三类, pet store 是 状态总线, pet config 是 十七种动物配置, sidearm 是 ai 系统提示词,带不许异造 u i d 的 铁律。 pet chat actions 加 helpers 是 ai action 执行器, 每个文件守好自己一摊事,切到状态。它解决的问题是,宠物在哪里,心情怎样,跟用户聊了什么?这些数据散在十几个组件里,怎么不让它们互相打架? 做法是用 thosten 的 这个清亮库做一个全局。 store 叫 pestle, 十几个状态字段,动物种类、名字是否可见位置、心情三个面板开没开聊天历史通知列表?上次互动时间,所有组建都从这一个 store 拿数据再加一个 process, 中间键写到 local storage。 浏览器关了,重开心情。还在。再讲三个面板的呼斥,它解决的问题是宠物身上能弹出三种东西,快捷面板、聊天面板、设置面板同时弹三个屏幕乱成一团。做法是在 store 里写三个 toggle 函数, toggle chat, 打开了 chat, 打开聊天会顺手把另外两个关掉。 toggle settings 也一样,三个状态互相排他一行,代码搞定,不用写复杂的状态机,点宠物外面任何地方,再用一个 closeout 全部关掉。再讲表情系统,它解决的问题是五种心情, 闲置、开心、思考、警告、睡觉。加十七种动物,五乘十七等于八十五种组合。怎么不让美术死掉? 做法是把 svg 拆成六层渲染,尾巴、腿、身体、手臂、耳朵,头夹、鼻子、嘴胡子, 每一层写一个 render 函数,接动物种类做 switch, 心情控制,眼睛形状,嘴巴弧度、腮红透明度,心情切换靠 css 动画驱动,漂浮、抖动脉充弹跳、睡眠各一套。 kframe 八十五种组合,不需要八十五张图,一个 svg 矩阵就够了。再讲四套定时器, 它解决的问题是宠物要让用户感觉它活着,不能像个死图标。做法是开四个独立的 set interval, 第一个九十秒拉一次任务状态失败就 alert。 第二个每十五到三十秒随机走一段路,走完偶尔跳一下。第三个每三十秒检查用户五分钟没操作就让它睡觉。 第四个进页面,五秒后随机说一句问候语。四套定时器互不打扰,用 uefact 的 清理函数,离开页面立刻关掉,不会泄露。再讲 sse 常连接,它解决的问题是飞书消息和任务通知怎么实时推到宠物气泡? 做法是用浏览器自带的 evan source 跟服务器开一条单向流,服务端有事推过来,前端立刻收到, 比 web socket 简单,不用握手,不用心跳。浏览器自动管,但有个坑, token 失效或者网络抖动会触发 winr, 整条线就死了。我们的解法是 winr 里手动 close, 然后五秒后自动重连 stop 标志位,防止组建,卸载之后还再重连。再讲拖拽, 它解决的问题是宠物又能拖又能点,怎么区分用户是想拖动还是想点击?做法是用 pointer down 事件记录起点 pointer move 时算移动距离大于四像素才标记为拖拽中,否则算点击。 再加 set pointer capture, 把后续的 pointer 事件锁死在宠物 dom 上,哪怕鼠标拖出宠物边界,也能继续接收事件。这个四像素域值是抠出来的,再小手抖就误拖,再大点击会卡顿。再讲 ai 行内 action, 解析, 它解决的问题是 ai 既要回话,又要附带操作指令,怎么让前端区分这两块?做法是约定 ai 回话末尾可以加一段三个反引号。 action 的 代码块,里面是 json, 前端拿到回话,先用正则把 action 快 抠出来。 json 点 pass, 解析失败就当纯文字处理,解析成功就转给 execution 一个大 switch, 按 type 派发 navigate 条路,由 query 调 api batch task 循环调删除接口 create task 走护栏。 回话和动作分两层,永远不会混。顺手提一句, task 复用聊天 task id 存 local storage, 复用服务端重启返回 task 下划线零零一 就轻缓存重建重试,用户无感。再讲双兜底,它解决的问题是每次问宠物,打开任务页都要走 ai 一 遍,又慢又费 token, 怎么办? 做法是在调 ai 之前,先做两个本地快速命中,第一个 match navigation 关键词匹配跳转,第二个 match pet park 关键词匹配发圈命中了直接执行,不再调 ai。 这两个兜底,用关键词矩阵几行 if 搞定。这套设计让常用意图毫秒响应复杂自然语言才走 ai 两层兜底,性能和能力两不误。重点来了,服务端三到安全护栏前端怎么接?它解决的问题是 a i t 用户动手,万一漏字断,万一删错,万一手滑,怎么都抵。前端三件套对应三道关, 第一件 pet task quick reply, 后端 valid detection, 返回真实 agent 列表,和最近项目前端谈一张快速回复卡,用户点哪个就把 agent id 填进去再发回去, ai 不 许编 uid。 第二件 protection confirm, 破坏性操作,如删任务删密,要用一个 promise 把 request confirm 包起来,用户点确定 promise resolve 才往下执行,不然 reject。 第三件, pattern dubiner, 创建任务后,服务端发一个 六十秒 end to token, 前端开一个 set in error, 每五百毫秒重算,剩余秒数倒计时归零,自动 dismiss, 不 留此按钮。 三件套都是同一个套路, pinging x 状态机加卡片渲染,加用户确认,或者超时回到默认态,最后划一条边界线。已经实现的组建层,九个骨架层,三类 durst, 全局 store 持久化 local storage, 四套定时器 sse, 五秒重连,四像素拖拽预置 svg 六层渲染矩阵,五种心情动画,十七种动物形态 ai action 行内代码快解析双兜底关键词命中 task 副用加 task 副用加 task 零零一都抵重建加上这一期重点的三到安全护栏前端三件套 valid quick reply confirm ndu 倒计时还没接的浏览器 push 通知公众号双向多宠物同屏跑字定义皮肤上传 两期讲完,桌面宠物上下游加实现原理都拆完了。如果你对普通人 ai 创业一百天感兴趣,欢迎关注我全平台同名小刘的 ai 日记,我们下期见!

我去,我的 g t 烂完了呀,我这才发现这用了这么多年, 我是部自己部署在一个树莓派上面的,然后是用的是家庭网络 动态的一个域名绑定, 也就是说他会随着我的家里的 ip 的 变化不停地绑定域名和 ip。 但是用了这么多年我才发现 有七千多个用户啊, 有六千多个,然后都是一些搞黑厂的,打广告的,乱七八糟的仓库, 这都是干嘛呀? 都是空的仓库打广告。最诡异的还有中国人 在我这里搭了个薄客, 我真是服了。

大家好,我是幸运服务器租用安防的引购,针对于服务器集群啊,要怎么样去搭建? 有粉丝问呢,什么叫服务器的集群,服务器的集群呢,它分别其实就是指的是很多台好几台服务器集中在一起, 一起呢进行运行同一个服务哦,在客户端呢,看起来啊,从外面看起来好像只有一台服务器在运行,其实呢,它里面可以同时利用多台服务器进行计算, 从而呢获取很高的这个计算速度啊,而且呢,整个的这个集群系统啊,可以解决很多的服务器硬件故障, 例如呢,当你某一台机群里面某一台服务器啊出现故障的时候,例如 啊,硬盘呐,内存呐, cpu 啊,主板呐,还有电源故障的时候呢,运行在这一台服务器上的应用呢,就会切换到无痕的切换到其他的服务器上面去运行, 比如十万人在线的那种超大型的一个游戏或者是证券交易平台啊,他们都会使用服务器的集群系统 哦,通过资源的整合和智能的调度呢,来对外表现为一个高高性能高可用的一个超级的一个服务器,好吧, 包括我们现在的一个很多市面上的一个 ai 计算呢,对吧?啊,智能的一个智能计算平台,它其实都不是一台服务器,它是整一个集群来进行运行的啊,我是尹公,关注我服务器进行免费试用。

库卡机器人变量学习,今天我们来学习一个和空间区域相关的系统变量, x work state。 如果说软件线位开关是给机器人划了一条不能越界的线,那 x work state 就是 这条线上站着的哨兵,一旦机器人越界, 他立刻拉响警报,触发信号输出。该变量是一个信号声明变量,用于将配置好的轴特定工作空间与一个数字输出端绑定。当机器人进入或离开该工作空间时, 对应的输出端被自动置位,外部设备或 plc 可以 读取这个信号并作出相应反应。它的语法是, signal x workstate。 锁影等于 out 输出端编号,锁影一 八,最多可配置八个轴。特定工作空间输出端编号,当该工作空间被违规时,此输出端自动变为处。例如,你可以配置 x work ct 一, 监控 a 一 轴是否超出负一百六十度至正一百六十度的范围,一旦超出输出端奥体一百自动变为真。工作空间模式决定什么时候报警,有几种不同工作模式可以选择,例如 outshine, 机器人当着位于工作空间外时,至位看一下配置流程, 选择配置其他工作空间监控配置,选择编号和轴相关配置,一号轴空间, a e 轴选择负一百六十度到正一百六十度,零度表示不限制 模式,选择 outset, 其 a e 轴不在正负一百五十度的时候置为 out 信号输出,信号配置为一百,保存就配置完成。 机器人当前角度是一百五十六度在范围之内。 alt 一 零零不输出。 机器人 ae 轴正向移动,超出一百六十度以后, l o t 幺零零信号输出可以用 alt 一 百信号作为报警等或发送给 plc 等使用。