让远程成为本地,微服务后端开发的福音

让远程成为本地,微服务后端开发的福音 2

微服务后端开发的最大痛点之一就是调试困难,非常影响我们的开发效率。

如果我们想与其他微服务进行联动调试,则需要在本地环境中启动对应的微服务模块,这可能需要大量的配置和构建时间,同时也会占用我们本地很多资源,可能还会出现”带不动“的情况。

虽然说我们可以在测试服务器上进行调试,但整个流程也是比较漫长,提交代码 -> 触发CI/CD -> 等待构建成功,可能简单的 BUG 我们提交代码打个日志就能解决问题,当遇到复杂的 BUG 时通过这个方式在服务器上调试就非常难受了,太浪费时间了,提交 -> 等待,反反复复,始终没有本地开发工具直接调试的方便。

下面介绍的工具将远程和本地融为一体,让本地开发更加流畅。

Telepresence

Telepresence 是一个开源工具,用于在本地开发环境中模拟 Kubernetes 集群中的微服务,它允许开发人员在本地开发环境中运行和调试微服务,而不必担心环境的复杂性和配置困难。

让远程成为本地,微服务后端开发的福音 4

简单来说 Telepresence 将 Kubernetes 集群中服务的流量代理到本地,Telepresence 主要有四个服务:

Telepresence Daemon: 本地的守护进程,用于集群通信和拦截流量。

Telepresence Traffic Manager: 集群中安装的流量管理器,代理所有相关的入站和出站流量,并跟踪主动拦截。

Telepresence Traffic Agent: 拦截流量的 sidecar 容器,会注入到工作负载的 POD 中。

Ambassador Cloud: SaaS 服务,结合 Telepresence 一起使用,主要是生成预览 URL 和一些增值服务。

全局流量拦截

全局流量拦截是将 Orders 的所有流量都拦截到我们本地开发机上,如下图。

让远程成为本地,微服务后端开发的福音 6

个人流量拦截

个人流量拦截允许选择性地拦截服务的部分流量,而不会干扰其余流量。这使我们可以与团队中的其他人共享一个集群,而不会干扰他们的工作。每个开发人员都可以只针对他们的请求拦截 Orders 服务,同时共享开发环境的其余部分。

个人拦截需要配合 Ambassador Cloud 使用,这是一项收费服务,免费用户可以最多拦截 3 个服务。

让远程成为本地,微服务后端开发的福音 8

结合 Telepresence 开发调试 Rainbond 上的微服务

安装 Telepresence

MacOS:

# Intel
brew install datawire/blackbird/telepresence

# M1
brew install datawire/blackbird/telepresence-arm64
复制代码

Windows:

# 使用管理员身份打开 Powershell

# 下载压缩包
Invoke-WebRequest https://app.getambassador.io/download/tel2/windows/amd64/latest/telepresence.zip -OutFile telepresence.zip

# 解压缩包
Expand-Archive -Path telepresence.zip -DestinationPath telepresenceInstaller/telepresence
Remove-Item 'telepresence.zip'
cd telepresenceInstaller/telepresence

# 安装
powershell.exe -ExecutionPolicy bypass -c " . '.\install-telepresence.ps1';"
复制代码

安装 Telepresence 流量管理器到集群中

可以使用 Telepresence 快速安装 Traffic Manager,本地需要有 kubeconfig 文件 ~/.kube/config

$ telepresence helm install
...
Traffic Manager installed successfully
复制代码

或者在 Kubernetes 集群中使用 Helm 安装 Traffic Manager

本地连接远程服务

本地使用 telepresence connect 连接远程 Kubernetes API Server,本地需要有 kubeconfig 文件 ~/.kube/config

$ telepresence connect
connected to context <your-context>
复制代码

在 Rainbond 上快速部署 Pig 微服务应用

通过 Rainbond 开源应用商店快速部署 Pig 微服务应用,部署后如下图

让远程成为本地,微服务后端开发的福音 10

后面会以 pig-auth 这个服务为例,演示本地开发调试的流程,这里需要做一些小改动:

  1. 从应用商店安装的应用默认 Workload 是字符串,需要修改 Workload 为易于查看的,这里以 pig-auth 为例,进入组件中编辑组件名称,修改组件英文名称为 auth
  2. 简单来说 telepresence 的工作原理就是代理 k8s service,默认 gateway 到 auth 是使用的 nacos 做的负载均衡,这样的话 telepresence 是无法拦截到流量的,我们需要修改 gateway 配置使用 k8s service 做负载均衡。
    • 打开 pig-register 组件的 8848 对外端口,访问 nacos,修改 pig-gateway-dev.yml 的 spring.cloud.gateway.routes.uri: http://gr795b69:3000 ,gr795b69:3000 通过 pig-auth 组件内的端口访问地址获取。
  3. 如果本地只启动一个 pig-auth 服务,pig-auth 需要连接 pig-register 和 redis,那么就需要将这俩服务的对外端口打开,并修改配置文件让本地的 pig-auth 服务可以连接远程到 pig-register 和 redis。

在本地调试 auth 服务

使用 IDEA 或 VScode 在本地启动 pig-auth 服务。

在本地使用 telepresence 拦截 pig-auth 流量,命令如下:

$ telepresence intercept <workload> --port <local-port>:<service port name> -n <namespace>
复制代码

命令拆解:

# <workload>
# 需要拦截流量的服务 workload
$ kubectl get deploy -n zq
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
pig-auth       1/1     1            1           146m

# <local-port> 本地端口

# <service port name>
# 需要拦截流量的服务的 service port name
$ kubectl get svc gr795b69 -n zq -o yaml
...
  ports:
  - name: http-3000
    port: 3000
    protocol: TCP
    targetPort: 3000
...

# <namespace> 命名空间
复制代码

最终命令:

$ telepresence intercept pig-auth --port 3000:http-3000 -n zq
Using Deployment pig-auth
intercepted
   Intercept name         : pig-auth-zq
   State                  : ACTIVE
   Workload kind          : Deployment
   Destination            : 127.0.0.1:3000
   Service Port Identifier: http-3000
   Volume Mount Error     : sshfs is not installed on your local machine
   Intercepting           : all TCP requests
复制代码

我们在本地给退出登陆这块逻辑打上断点,然后通过线上的前端退出登陆,打到我们本地 IDEA上,整体效果如下:

让远程成为本地,微服务后端开发的福音 12

最后

Telepresence 可以帮助我们简化本地开发流程,同时保证代码的正确性和可靠性。还能使我们在集群中轻松调试和测试代码,提高开发效率。结合 Rainbond 的部署简化,从开发到部署都非常的简单,让我们专注于代码编写。

本文来自投稿,不代表商机洞察立场,如若转载,请注明出处:https://www.315965.com/n/54213.html

Like (0)

相关推荐

  • ps基础教程图文教程(ps基础教程新手入门图文教程)

    应用领域:摄影后期;海报设计;文字设计;移动界面;淘宝美工;网页设计;LOGO 一、基本操作 1、PSCC—首选项,选择界面颜色 2、新建与保存:新建—command+N,保存—command+S,放大画板—滚动鼠标。 左键移动 二、图层概念 1、图层面板“新建图层” 2、快速新建图层—command+option+shift+N 3、弹出新建图层面板—command+shift+N 三、选取工具组 1、规则选区:用途是造型及编辑图形。矩形选框—按住shift键得到正方形选区,椭圆选区,快捷键:M,shift+M切换矩形椭圆。、 四、表情包制作步骤 1、拖入素材,并用画笔工具涂掉原来的脸及文字 2、拖入人物素材,用套索工具将脸部圈出,复制(command+C),粘贴(comma 3、选中脸的图层,编辑-自由变换(command+T),调整合适大小 4、去除脸部颜色,图像-调整-去色 5、去除脸部皮肤,图像-调整-色阶 6、加上文字 五、不规则选区 用途:造型及编辑图形 1、套索工具:不规则图形,加减选区 2、多边形套索工具:带有棱角的图形 3、磁性套索:带有吸附功能,要求背景与边缘大反差 4、快捷键:L;shift+L切换矩形椭圆 六、快速选择及魔棒 用途:造型及编辑图形,主要用于抠图 快速选择:自动识别边缘 魔棒:容差=0.选择颜色相同区域;容差>0.选择颜色相近区域 快捷键:w;shift+w切换矩形椭圆 七、画笔的运用 1、笔刷的常用参数 笔尖形状可调整画笔大小、间距、方向等 形状动态可调整大小变化 散布可调整笔画的分布 颜色动态,调整画笔颜色变化,即前景色到背景色的变化 传递调整,调整画笔透明度变化 2、笔刷的制作 气泡笔刷定义 注意事项:白色不会被定义,任何颜色都会被转换为黑色 (1)新建400*400的画布 (2)新建一个椭圆选区,填空黑色 (3)用橡皮擦工具将中间擦除 (4)编辑—定义画笔预设 (5)打开散布和形状动态 3、笔刷的安装 导入画笔:画笔工具—画笔—扩展—导入画笔 八、图片处理方法 1、修复画笔的使用方法 (1)污点修复画笔工具 使用方法:直接涂抹在瑕疵处 画笔大小调整:英文输入法下的左或右中括号[] 软硬画笔调整:shift+英文输入法下的左或右中括号[] (2)修复画笔工具 使用方法:按住option键取样,在瑕疵处涂抹(注意十字位置、点涂) 项目重点:可以和周围的光源自动融合与仿制图章工具的差异 (3)修补工具 使用方法:在瑕疵处做选区直接往外拖拽 项目重点:源=去掉,目标=复制 2、仿制图章工具 使用方法:按住option键取样,在瑕疵处涂抹(注意十字位置、点涂) 项目重点:此工具可以100%复制,与修复画笔工具的差异 3、内容识别 使用方法:编辑—填充—内容识别 Pscc2019版本新增内容识别填充 使用方法:编辑—填充—内容识别填充 4、portraiture滤镜 (1)复制文件:操作系统32位复制.8bf,操作系统为64位复制64.8bf; (2)查找安装路径:在桌面上找到ps,在图标上点击右键,然后选择右键菜单中的属 击“打开文件位置” (3)查找滤镜文件:在打开的资源管理中,找到一个名为plug-ins的文件夹,存放的就是滤镜文件 (4)粘贴滤镜文件:在空白处右击并粘贴,将需要的滤镜文件粘贴在plug-ins文件夹中 (5)注册软件:启动下载文件中的注册机,点击注册机界面上的“generate”按钮,然后复制将key//中的注册码 (6)启动photoshop:在滤镜菜单中就多了一项imagenomic。选择该项子菜单中的 的注册码粘贴到下图中所出现的注册框中。 九、历史记录画笔概念 基本用途:还原操作图像未经操作前的状态 主要用途:局部修饰、调节色调 快照:记录当前状态 历史记录画笔应用—磨皮 1、拖入素材 2、滤镜—高斯模糊 3、添加快照 4、回退一步 5、使用历史记录画笔涂抹 十、橡皮擦工具 使用方法:直接涂抹不需要的地方 1、画笔:边缘比较柔和,可调整画笔笔尖形状;铅笔:边缘比较坚硬;块:正方形色块作为笔头形状。 2、不透明度为100%,像素会被完全地擦掉。降低不透明度,像素则不会被完全地擦掉。 3、流量:控制橡皮擦工具擦除颜色时,擦除的速度的快慢。 背景橡皮擦工具 用途:去除图像中的背景色,抠图 取样方式: 连续:指鼠标经过的区域都被擦除。 一次:指以第一次单击的颜色为准,只擦除跟第一次单击点相近的颜色 背景色板:只擦除图像中跟背景色相近的颜色 魔术橡皮擦 用途:可以去除与单击点相近的颜色区域 1、容差:控制颜色去除的范围大小,容差越大与单击点相近的颜色区域都会被擦除掉 相近的颜色区域才会被擦除掉。 2、连续:勾上连续,是去除与单击点相邻的区域;把连续勾去掉是在整幅图像中去除 十一、蒙版 1、图层蒙版的概念 作用:保护源图像,做图像融合 黑色—透明;白色—显示;灰色—半透明; 操作方式:在图层面板选择图层蒙版添加 (1)利用黑白软画笔做透明及还原处理(黑透白不透) (2)利用黑到白的渐变做融合(但只能执行一次)黑到透 (3)利用选区通过填充黑白的方法做透明或还原 2、剪切蒙版的概念 作用:保护原图像,做图像裁切 (1)上方图层为显示图层 (2)下方图层为最终显示外形 操作方式: (1)做图形 (2)调整图层(图像在上,图像在下) (3)按住option键将鼠标放置两个图层中间——单击 十二、PS证件照换底色 1、用魔棒工具得到背景选区 2、设置前景与背景选项,设置前景色为红色/蓝色/白色。如果是蓝色背景,颜色值可 果用红色背景,颜色值可设置为:R:255 G:0 B:0 3、设置好之后按下option+delete,然后按下command+D,就得到了换背景之后的照片 十三、钢笔工具 1、钢笔工具的运用 2、钢笔工具的操作方法 鼠标单击、鼠标按住拖住添加锚点 (1)按住shift可成45、90度走直线 (2)按住command可拖动锚点 (3)按住option可取消一边手柄 3、钢笔工具的两种模式 作用:抠图,造型 (1)形状模式:可以自动生成图层,任意修改形态及填充 (2)路径模式:路径变选区:command+回车 (3)快捷键:p 4、钢笔工具的注意事项 三原则 (1)如何定点:单弧末端定点 (2)何时取消手柄:遇角取消手柄(按住option键单击锚点) (3)保证手柄和路径相切 十四、形状工具、路径选择工具 1、形状工具的使用 作用:造型,抠图 (1)形状模式:可以自动生成图层,任意修改形态及填充 (2)路径模式:路径变选区:command+回车 (3)快捷键U 2、路径选择工具的使用 (1)黑箭头:可以移动单个路径 (2)白箭头:可以调整锚点改变路径形状 (3)快捷键A 3、形状工具的布尔运算 方式一: (1)制作A图形 (2)制作B图形 (3)将AB图形全选——command+E (4)黑箭头选择B图形—属性栏—减去顶层 方式二: (1)制作A图形 (2)选择B图形按住option键直接做减法 (3)选择B图形按住shift键直接做加法 (4)选择B图形按住shift+option交集 方式三: (1)选择A图形单击得到标准图形 (2)选择B图形同时按住option键单击(得到标准图形同时执行减法) 4、抖音图标绘制 (1)绘制260*260的圆,按住option再次绘制120*120的圆 (2)绘制330*330的圆,按住option再次绘制190*190的圆 (3)拉出参考线,使用路径选择工具移动位置 (4)矩形选框工具减去四分之三的圆,及切口 (5)矩形选框工具连接 (6)复制图层、移动,将图层叠加模式调整为线性减淡添加 十五、字符工具 1、文字工具的正确使用 打开位置:窗口——字符 (1)字间距与行间距的调整 (2)段落对齐方式 (3)段落文字避头尾法则设置 2、字符面板 输入文字:文字工具单击插入文字(一般针对较少内容) 录入文本:设计段落文字必须用文字工具做文本框…

    2022年8月16日
    3
  • 尤克里里零基础入门(尤克里里零基础入门自学)

    尤克里里入门很容易,但学精髓还是很难。至于手指不灵活的问题,因为四弦琴很小,跨度很小,我觉得不是问题。网上有很多教学视频,很容易找到。 最重要的是养成拿起钢琴的好习惯。首先要做的是使用调谐器。如果你将来熟练了,你可以用耳朵听。但是,为了准确起见,建议初学者始终使用调谐器。应该有一些理论方面的,比如钢琴的作曲,每根弦的标准音高,各个部分的名称,弹钢琴时握琴的姿势。如果入门,先从基本功开始,爬格子,然后试着在弦上弹奏简单的旋律。或者有些歌曲的某一段的基本旋律技巧,无论演奏到什么水平都要一直练习,大师也不例外。然后他学习相关的演奏技巧,比如打击弦、勾弦、滑弦、推弦、振弦。同时了解简单的乐理知识,各种调式的音阶练习,三胞胎、四胞胎、磨音阶等。然后练习右手拨弦和扫弦,再把常见的和弦分解基本上就可以自己弹唱了。当然,弹伴奏和边弹边唱是两回事。如果你是一个需要练习一段时间的完全新手,按照每天练琴30分钟到一个小时的计算,应该可以自己弹唱半年左右的一些简单歌曲。 其实尤克里里入门并不难,只要你坚持练习就行。如果不用心练习,时间可能会更长。至于你说的,你可以随意弹琴唱歌。我的理解是,你可以在大家面前自由流畅地表演一些歌曲,让听众认同你的表演。要达到这个水平,需要练习一两年。当你真正开始练习钢琴时,我祝你成功。

    2022年8月17日
    6
  • App制作教程步骤(app制作入门教程)

    一、前言 移动web时代,手机的兴起使得大部分在手机上的应用开发变得如火如荼,然而传统的app开发需要掌握的知识点繁多,开发周期特别漫长,为了解决这个问题,webapp应运而生,它使得app开发的难度大幅度降低,只要你懂前端就可以开发app;然而由于技术的更迭,不光出现了app,还有小程序以及一些网站,于是,很多人瞄准了多端应用市场,所谓多端指的是一套代码多个平台运行,比如我在DCloud上写了一个应用,我可以把它打包为小程序、网站和App,这样就减少了我们开发的难度和时间,目前最火的要属DCloud和APICloud了,由于uniapp是基于DCloud,所以咱们今天所讲的内容全部基于DCloud平台,好了,下面让我们一起进入到今天的课题中吧。 二、安装开发工具Hbuilderx 这个就是我们今天的主人翁,往后我们会一直用这个工具开发app甚至小程序和网站,下载地址: https://www.dcloud.io/hbuilderx.html,下载好后直接安装即可,安装好后界面是这样的,如图: 安装完毕之后需要我们再去申请注册一个DCloud的账号用于登录,这个很简单,就不说了。 三、创建第一个uniapp应用 首先我们新建一个目录,如图: 然后选择uniapp,如图: 此时我们先填写项目名称,然后选择项目的目录,最后我们可以选择一个合适的模板,或者是空模板,这里我们我们为了上手方便选择hello uni-app这个模板,选择的这个模板里面的内容是uni-app中的所有组件的使用方法,如图: 当我们点击创建后就会自动生成一个目录了,如图: 通过目录里面的文件夹名我们可以了解到,应用的界面其实是放在pages文件夹里的,所以我们随便点击一个pages里的文件,然后将其运行在内置浏览器中,如图: 四、打包app 当我们做完这一切之后就可以发布这个app,在发布之前我们还可以对这个App的其它设置进行一些调整,如图: 调整好之后,我们就可以来打包了,如图: 这里有三个选项,云打包、本地打包和制作应用wgt包,这三个选项是什么意思了,首先,云打包可以不用在电脑上安装任何sdk就能制作一个app,而本地打包就麻烦点,需要我们下载Android studio然后还有一些sdk才能打包好,过程比较繁琐;至于wgt包,制作好了之后可以进行同步更新并且不用用户再度下载,非常的方便。因此这里我们选择云打包,如图: 可以看到有些平台的apk打包成功了,不过有些失败的,不去纠结那么多,我们直接把这些apk安装到手机上即可使用。

    2022年8月14日
    6
  • 自媒体创作常用的十五个视频制作工具有哪些(实用工具制作视频)

      大家好,今天我给大家分享一些关于视频制作的一些干货知识,很多小伙伴们抱怨做短视频实在太麻烦了,选题、脚本、拍摄、配音、剪辑花了两三天,发出去一看100多播放量,今天呢,我就把压箱底的15个视频制作工具分享给大家,从文案脚本、视频素材、后期剪辑,到文案提取、数据分析,听完这条音频呢,相信你也能快速上手,赶紧收藏起来吧,首先来看文案和选题今日热榜,知乎、写作机器人,这三个最实用,今日热榜汇聚了各大平台的热门排行榜,想要寻找全网热点,这一个网站就够了,知乎的热榜高赞问答也非常适合作为热门选题的来源。写作机器人创作性AI辅助工具提供热点写作、提纲写作等等类型,同时还有改写、查重、纠错等功能,是自媒体的写作小能手。此外,金句类还可以去看看,句子控、句域、茶具一言第二,视频素材太多小伙们问了这个了,光场包头网有这两个就够了,工作类、日常类、生活类、风景类、电影感、氛围感、科技感的视频素材应有尽有,很多都是4K高清模式,直接下载保存到视频素材库,下次剪辑视频的时候就不愁找不到了,第三,后期剪辑我相信剪映真的足够用了,操作简单,非常适合新手,各种字体、特效、贴纸也非常多,如果剪映里实在找不到合适的音乐音效,可以去爱给网看看,这里有非常全面的音乐配乐音效可供下载,还有专供自媒体的短视频专区,关键还都是免费的,第四,视频文案提取想要分析和学习优秀视频文案,就用青岛讯飞语记,识别方法呢,是导入视频,点击提取就可以直接识别到文字。第五数据网站签瓜猩红馋妈妈可以看到热门视频里垂泪爆款、热门词搜索、流量分析、大盘数据也都可以查询到。不过对于个人博主来说,还是先去把平台里创作中心自己的数据先研究清楚再说。最后我想说,工具只是辅助,动起来才是第一步。好,今天先分享到这儿,下次再会。

    2022年10月28日
    5
  • 3dmax教程室内设计教程(3dmax室内设计自学教程)

    打开3DMax-自定义-设制单位 建一长方体-根据房间大小定尺寸 打开修改面版-反转法线 转换多边形 在边级别,选上下边点连接,分段2 再选左右的边-连接-分段1 转到点级别,框选点用移动工具进行调节 选 面删掉 选四边在左视图按SHIFT键,用移动工具拉出. 在边级别下进行切边,打开捕捉开关钩选 在前视图,调节,偏移摸式中输入100回车 选择物体下,切片 把以选面,挤出10 选地面-分离,输入名 地面其实也可不分离多设一个ID也是一样.为了多学点家伙~~呵呵怎么搞出方言了~下面为地脚线设ID1回车 再反选给墙面ID2回车 现在给点材质,大家可以自己发挥 设制数量 点子材质1调给地角线颜色 返回父级点材质2为墙面材质 另选一材质球给地板,点位图调一你喜欢的图 反射通道加个平面镜 还有漆匠~~呵呵 在前视图画一线 在前视图画矩型宽60毫米,转为曲线 点级别圆角5毫米 忧化 选点下调一点 选线删除 放样 门套完成~~ 切片做门梁 选面编辑 这里用了个3DMAX7的新工具(桥)也可用挤出焊接 然后把多余的线(移除) 木匠师傅做门~~其如隐藏 经过师傅一等砍朵,一档门以完工~~这个我就不锡匠了,大家漫漫揣摩 喧个看看~~好家伙,老板吵起来拉~~说木匠偷工减料,门头露风,嘿~~ 呵呵~搞几根木方钉好了,木匠说明天来~~ 今天吊顶,装灯,只是教大家方式,选面-插入 做两次挤出 选如图的面挤出,做灯槽 喧个看看,角上有问题,在顶视图调整 调点 再看看~好了,嘿~太罗嗦 用(管壮体)工具做个灯~~ 筒灯~~复制几个 大家可以根据自己的里理念来设计电视墙及各种摆饰

    2022年8月20日
    6
  • 黑苹果安装教程2022(黑苹果安装教程详细)

    黑苹果安装步骤 上一篇内容我们讲到了安装黑苹果前的所有准备步骤,正式安装的时候插入提前制作好的 U盘 电脑开机之后连续按 F12 键,在启动项的页面我们选择 U盘 启动。 选择 U盘 引导启动之后回车执行,来到如下图显示的引导界面之后我们选择苹果图标并回车进入。 在进入到如上图的界面之后需要一段时间的等待,而这里也是最容易出问题的地方,就是我们常说的卡代码。 如果在这里卡住了可以参考《黑苹果卡代码篇》的文章内容,一共分为三篇内容可以去找一下自己所遇到的卡代码的情况,文章里有相关解决办法。 磁盘工具安装界面 如果没有遇到卡代码的情况,那么在跑完代码之后就会来到 磁盘工具 安装界面。 磁盘工具 我们选择 磁盘工具 进入,在 磁盘工具 界面里,找到左上角的 显示 功能选择 显示所有磁盘 找到自己提前格式化好的黑苹果安装盘。 选择 抹掉磁盘 磁盘的名字可以随便输入一个,磁盘格式这里固态硬盘选择 APFS 格式,机械硬盘选择 扩展日志式 然后点击抹掉。 如果抹盘提示失败,就是我们的安装盘格式有问题,大家可以参考《黑苹果基础教程》这篇文章,来重新格式化硬盘。 安装macOS 抹盘完成之后,我们关闭 磁盘工具 在实用工具界面,点击 安装macOS 在选盘界面,选中你格式化好的黑苹果安装盘。 在进入这个安装界面之后,所有操作都默认 同意 就好了。 在电脑安装完重启后,电脑刚开机的时候连续按 F12 键还是选择 U盘启动 在引导界面选择刚才你抹掉的那个硬盘(你起名字的那个硬盘)回车进入。 就会自动进行二次安装界面。 安装完成会重启 在二次安装完成之后,黑苹果系统就安装到你的硬盘了,在电脑重启后还是选择U盘启动 在引导界面还是选择额你的抹掉的那个硬盘(你起名字的那个硬盘)进入苹果系统。 系统设置 进入之后会有一些基础设置,这里我们按照提示去进行设置就好,我也为大家准备了一些标准的设置教程,因为是长图所以发不出来,所以只能放弃了,在基础设置里不要选择联网,跳过ID账号登录,其余的默认选择同意就好。 系统引导设置 按照以上设置进入系统界面之后,我们还需要设置一下系统的开机引导设置,首先下载相对应的配置工具。 clover下载链接:https://macoshome.lanzoul.com/iheN4zaybaf密码:ci90OC下载链接:https://mackie100projects.altervista.org/download-opencore-configurator/ 下载好对应的编辑器之后,在 macOS 里打开,挂载黑苹果的硬盘,把 U盘 里的 EFI 文件复制粘贴到硬盘的 EFI 分区里,完成之后进入 BIOS 把 macOS 设置为第一启动项目即可。 最后 成功安装好黑苹果系统之后,还需要几步必须要做的事情才算是真正完成,具体的内容待我整理好内容,后续会分享给大家。 今天的文章内容就分享到这里,黑苹果的安装教程基本告一段落了,想学习更多知识的朋友不妨关注一下

    2022年8月14日
    8
  • 拜厄钢琴基本教程简谱(拜厄钢琴基本教程简谱对照书)

    钢琴入门谈—— 《拜厄钢琴基本教程》第80首练习曲 哈农、拜厄、车尔尼…… 中国钢琴初学者最耳熟能详的名字。 今天给大家带来的是拜厄,呃,不是拜厄本人咯,是他的一首基本练习曲:《拜厄钢琴基本教程》第80首。 高美玲演奏 《拜厄钢琴基本教程》中的第80首练习曲,具有轻快活泼、音乐形象诙谐风趣的艺术特点。谱子当中的速度术语提示是Allegretto(意思是小快板),左手伴奏音型标有leggiero, 意为轻快的、柔和的。一开始是两个升号的D大调,中间转为一个升号的G大调,调性色彩的对比变化,让音乐形象更加丰富,左手采用的半分解和弦伴奏,有四三节拍的韵律起伏感。右手是带有变化音的短句,弱起的语气,前倚音的装饰效果,都让音乐显得含蓄灵动。乐曲中出现的各种力度记号,使音乐的强弱对比更加明显,让音乐更加传神。第9-12小节右手与左手交叉弹奏,在音区上形成对比,让音乐形象更加幽默生动。 关于拜厄—— 拜厄,全名费迪南德·拜厄(Ferdinand Beyer,1803~1863), 是十九世纪德国的钢琴家,同时,他也是一位极为优秀的、有着丰富教学经验的钢琴教育家。 在网上搜索拜厄,你可以发现,没有哪一个钢琴教育家的介绍比他更简单的了,关于他的生平的文字,大都是寥寥数语,或许他的人生真的很平淡,平淡到没有什么可以让人大书特书的地方。其实他更像一个园丁,在钢琴教育的苗圃里默默劳作,为缤纷的钢琴艺术世界培育了无数茁壮的幼苗和希望,这个普通的身影,让无数人仰望,值得无数人尊敬,这就是平凡之中的伟大…… 我用过的教材…… 我用过的《拜厄钢琴基本教程》 我用过的《拜厄钢琴基本教程》 《拜厄钢琴基本教程》 《拜厄钢琴基本教程》写于19世纪50年代,是拜厄专门为初学钢琴者编写的一本浅易钢琴教材。作为钢琴入门教材,多年来得到极为广泛的使用,在钢琴启蒙教育方面有着举足轻重的地位,成为一代又一代钢琴人步入钢琴演奏艺术圣殿的阶梯。对初学者来说,这本教材具有由浅入深、循序渐进的特点。正如拜厄本人所说:“它是一本基础教程,为学习者提供第一年或到第二年使用的练习”。 通过这本教材的学习,可以使我们具备初级识谱能力与最基本的手指独立弹奏能力,为进一步学习钢琴打下良好的基础。除基础训练外,教材中也穿插安排了一些旋律动听的小曲,以培养学生的音乐兴趣。 《拜厄钢琴基本教程》分为第一阶段、第二阶段和附录三部分内容,主要有109首练习曲,34首附录手指练习。我们可以有选择、有计划、有针对性地选弹其中的条目。当然,在条件允许的情况下,如果有充足的练琴时间,通篇逐条弹奏,肯定会取得更大的收获。在钢琴基础学习阶段,把“拜厄”通篇作为视奏练习,也是一种有效的学琴方法。大家不妨买一本作为学习钢琴的辅助性教材来练习。 ​

    2022年8月15日
    8
  • vmware虚拟机安装教程(vmware虚拟机安装ubuntu教程)

    一、虚拟机安装 选择“自定义高级” 设置虚拟机安装目录 以下选择默认值即可 网络类型:NAT模式 二、安装虚拟机操作系统 选择CentOS映像文件 启动虚拟机 直接回车进行安装 选择Skip跳过测试 直接回车 然后进入操作系统安装图形化界面 清理磁盘空间 设置root登录密码 自定义分区 设置boot引导程序区 设置swap交换区 设置用户区 安装引导程序 三、配置虚拟机网络服务 cd /etc/sysconfig/network-scripts/ 配置IP地址、网关等 VMware编辑 > 虚拟网络编辑器:查看IP地址,可用的IP为3到254 其中192.168.28.0 网络号,192.168.28.255 广播地址,192.168.28.1 虚拟网卡地址,192.168.28.2 网关地址 重启网络服务:service network restart ping外网

    2022年8月18日
    4
  • 【前端】从 Atomic CSS 到 Tailwind:CSS 设计的未来?

    本文正在参加「金石计划」 flag:每月至少产出三篇高质量文章~ 在之前已经基于 React18+TS4.x+Webpack5 从0到1搭建了一个 React 基本项目架子,并在 npm 上发布了我们的脚手架,具体的步骤见下面四篇: 【脚手架】从0到1搭建React18+TS4.x+Webpack5项目(一)项目初始化 【脚手架】从0到1搭建React18+TS4.x+Webpack5项目(二)基础功能配置 【脚手架】从0到1搭建React18+TS4.x+Webpack5项目(三)代码质量和git提交规范 【脚手架】从0到1搭建React18+TS4.x+Webpack5项目(四)发布脚手架 【React】记一次在 React18+TS4.x+Webpack5 项目中引入 Tailwind 的 “坑” ~ 系列集成了当前比较流行的 Atomic CSS 架构思想中的当红炸子鸡框架 —— Tailwind.css。 本文则是尝试对这一当红框架背后的 Atomic CSS 架构思想的诞生及其演进做比较深入的理解。这篇文章写了很久,看了很多的资料,反反复复琢磨,改了很多遍,确信自己能有所理解,同时也能有逻辑地表达出来,并被人理解。我发现不管是国内国外,对 Tailwind 推崇备至、极尽溢美之词有之,不理解、不屑甚至反感亦有之。 但我认为,每一种新的思想或者技术,一定是为了解决当下某一个悬而未解的难题而出现的。大概是没有完美的技术,每一种新思想和新技术必定有其利与弊,而能因时因势做出权衡和选择,则是作为人和作为数字世界的造物者 —— 开发工程师的我们与 “chatGPT 们“ 唯一的区别了吧。 1、什么是 Atomic CSS? 什么是 Atomic CSS?这里先引用 Let’s Define Exactly What Atomic CSS is 这篇文章给的定义: Atomic CSS is the approach to CSS architecture that favors small, single-purpose classes with names based on visual function. Atomic CSS 是一种 CSS 架构方法,它支持小型的、用途单一的类,其名称基于视觉功能。 比如这样的: .bg-blue { background-color: lightblue; } .margin-0 { margin: 0; } 复制代码 相比于通过使用 button 或 nav 等语义化标签来解耦HTML和CSS,Atomic CSS允许你在HTML中嵌入原子实用类,如 text-white、mb-6 等等。Atomic CSS 正迅速发展,因为它提供了一种使样式更加封装、更容易编写的方法,并且还会减少整体代码。此外,Atomic CSS 在发展过程中一直在变化。像TailwindCSS、Windi CSS 和 UnoCSS 这样较新的框架正在推动原子式CSS的发展。 1.1 CSS 的简史 首先,我们需要回顾一下 CSS 的历史。Hakon Wium Lie 和 Robert Cailliau 于 1994 年创造了 CSS。他们希望有一种方法可以可靠地全局设置文档样式。当时有很多技术都想这样做,但 CSS 的独特之处在于它是级联的,这使得样式设计更容易。在这种情况下,级联意味着多个不同的样式可以应用于同一元素,并且算法决定哪个是最具体的。由于层叠等优点,CSS 在 1996 年迅速成为标准,紧随其后的是 1997 年的 CSS2。 在 CSS 中使用的第一批样式是简单明了的,通常只涉及到对元素进行非常普通的样式设计。然而,随着样式变得越来越高级,类变得越来越常用,人们开发了第一批 CSS 约定。CSS约定是组织代码的框架,如 BEM(块元素修改器)或 OCSS(面向对象的CSS)。这些约定的重点是语义化,如 title 和 title__description。语义化一直很流行,包括现在也是如此。然而,有些人想要一种新的方法来编写CSS。这就是 Atomic CSS 诞生的原因。 1.2 Atomic CSS 起源 2013 年,Thierry Koblenz 在他的文章 “Challenging CSS Best Practices”(这篇文章被广泛认为是将原子式CSS引入主流的文章) 中创造了术语 “Atomic CSS”。他自己也开发了一个这样的 CSS 框架:Atomizer(也叫 ACSS): Thierry 现已退休,拥有大规模编写 CSS 的丰富经验,之前曾在 Yahoo! 担任前端工程师,Thierry 因将 Atomic CSS 的概念引入主流而广受赞誉。那篇文章(就是上述的这篇)为后来的许多流行的 CSS 库铺平了道路。 Atomic CSS 的第一个主流框架是就是 ACSS,即 Atomizer CSS。ACSS 使用了类似于 JavaScript 函数 的语法,用 P(20px) 这样的类来设置元素的 padding: 20px;。Atomizer是一个 JavaScript CLI 和 bundler 插件,当你使用这些类时,会自动生成这些类,大大减少了你需要编写的内容。 根据 Thierry Koblenz 在 The Making of Atomic CSS: An Interview With Thierry Koblentz 文章中接受采访时说的,有天他的主管来问他有没有一种可以不改到 stylesheet 但还是可以动到页面的方法,因为他想避免把东西改坏(付费客户抱怨页面损坏,让他在对样式表进行任何更改时非常偏执)。 于是 TK 就做了一个「utility-sheet」,让工程师可以在不改到 stylesheet 的状况下依然能改到前端的样式。这个 utility-sheet 应该就是一个静态的 CSS 文件,然后里面有着各种 utility class。 接着过了几年,一个工程主管问他是否能「全部都用utility class」来改写 Yahoo! 的首页,在当时可以说是先驱中的先驱了。 最后他们写了一个纯静态(static)的CSS 并取名为 Stencil 来完成这件事(这边会讲到纯静态是为了跟等一下会出现的东西来做对比),并且从中发现了很多这样子使用的好处。 这套纯静态的 CSS 的特色之一是可以强行遵守一些 design style,例如说只写了margin-left-1、margin-left-2、margin-left-3之类的 class,然后每一个对应到的是 x4,因此你的 margin 就只有 4px、8px 和 12px 这些 4 的倍数可以用,利用这个来规范设计遵循既有的规则。 不过后来他们发现这套系统行不通。因为在现实世界中,每个 design team 都有自己不同的要求,他们想要的 padding、margin、字体、颜色全部都不同,所以静态是不行的,需要定制化,需要动态产生。比如: 于是 Atomizer 就诞生了,一个帮你产生相对应 CSS 文件的工具。一段时间后,一些人开始将这种方法称为“Functional CSS”。尽管过去曾出现过使用 Functional CSS 来描述其他内容的情况,但今天 Functional CSS 和 Atomic CSS 这两个术语可以互换使用。 2、Atomic CSS 到底要解决什么问题? 引用 Thierry Koblenz 在 Challenging CSS Best Practices 中开头说的: When…

    2023年4月11日
    3
  • 线程池优化与监控

    随着应用不断的迭代更新,零售工程内异步任务逐渐增多,包括网络请求、本地 DB 操作、轮询等任务使用的都是同一个线程池,线程池极易打满(比如网络一慢就容易阻塞线程池),导致任务堆积,造成「操作卡顿」的现象。用户看到操作没反应,可能会更频繁的尝试操作,再加上不断轮询的任务,应用的线程池队列会快速积压更多的任务,「卡顿」现象加剧,单一线的线程池已经无法支撑业务需求:

    2023年4月3日
    8