自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AlanHou的博客

alanhou.org

  • 博客(68)
  • 收藏
  • 关注

原创 生成式AI第一章 多媒体生成入门

生成式模型在近年来广泛流行。在阅读本文时,读者很可能已经在与生成模型进行过互动。或许是使用ChatGPT生成文本,或许是在Instagram等应用中使用风格转换,亦或是看过那些引发热议的深度伪造视频。这些都是生成式模型的实际应用!在系列文章中,我们将探索生成式模型的世界,从两大生成模型阵营——transformers和扩散模型(diffusion)的基础开始,逐步深入到更高级的话题。我们将介绍不同类型的生成模型,它们的原理,以及如何使用。我们还将探讨生成式模型的伦理和社会影响以及它们在现实世界中的应用。

2024-06-06 09:21:27 849 1

原创 大师学SwiftUI第6章 - 声明式用户界面 Part 4

在这一范式中,一组长结构体或对象定义该模型(应用的数据及状态),而连接数据的视图在屏幕上展示数据并根据用户的输入更新模型。我们的应用可能一个展示菜单的视图、一个展示内容列表的视图以及另一个显示用户所做选择信息的视图。​视图的视图中用到。借助这个宏,我们可以将任意的类转换为可观测对象,也就是说我们可以使用该对象的属性存储和管理应用的状态。对于简单的应用,我们只需要创建实例并将其赋值给视图的属性即可,如下例所示。​修饰符将对象赋值给一个视图层级的对象,因此我们必须将其应用于界面上所有视图的初始视图才能访问它。

2024-01-17 15:08:09 1300

原创 大师学SwiftUI第6章 - 声明式用户界面 Part 3

​​视图创建了一个包含标题和控件中间为弹性空间的横向布局,结果就是整个视图占满容器的横向空间,标签和控件位于两端。​​是一个绑定属性,创建与视图的双向绑定,因此我们可以读取并修改其值来激活或停用控件。这是一个表示任务在处理中的转盘,但不同于进度条,这类指示符没有隐性界限,所示无需指定任何值,如下所示。​​属性包含一个控件当前标签的视图副本,因此如果想要保留这个标签,必须在新的内容中包含这个值。​,因此开关处于打开状态并在屏幕上显示On标签,但如果点击开关,就会关闭,视图更新为显示Off标签。

2024-01-17 15:07:13 1316

原创 大师学SwiftUI第6章 - 声明式用户界面 Part 2

按钮中的图片以原始渲染模式显示 ,也就是说以原始颜色显示,但还有一种模式可以创建带图片的蒙版,以应用的着重色或赋值给控件的前景色显示。本例中,Cancel按钮加了边框,告诉用户这是一个二级操作,重要级为次级,但Send按钮为突出的,表示在点击该按钮时执行重要操作。在示例中,我们计算字符串中的字符数,如果值超出上限,我们使用​。​​视图会进行扩展,直至到5行的高度时,然后会在垂直方向上滚动来允许用户持续输入。​方法从文本的开头进行截取,并将结果赋回给属性,这会更新视图并删除文本框中多余的字符。

2024-01-05 10:35:07 1438

原创 大师学SwiftUI第6章 - 声明式用户界面 Part 1

例如,用户在输入框架中插入的字符以及示例中使用的颜色都是存储在应用中的值。在之前的系统中,这要求代码保持数据及界面同步,但在声明式语法中我们只需要声明每个状态的视图配置,系统会负责生成在屏幕上显示这些改变所需的代码。使用三元运算符来设置视图是一种推荐的实践,因为它让系统可以获取视图能响应的所有可能的状态,并在状态间产生平滑的过渡。​​),但在第5章中我们学到,在视图急剧增长时,建议将它们分别整合到独立的结构体中。​​属性相连接,因此可接收到该属性的值,但有时这种结构体实例是单独创建的,因而需要一个绑定值。

2024-01-05 10:34:03 1391

原创 云原生系列Go语言篇-标准库 Part 2

通常避免日志碎片化的建议是不在规划为库的模块中打日志,这就使用得实施上不可能做到,并且监控第三方库所执行任务也变得困难。创建这些额外接口的缺点是知道它们的存在很困难,使用类型开关来检查非常的繁琐。如果你需要更高级的特性,比如基于头部值的路由、使用正则表达式指定路径变量或更好的handler嵌套,可以用一些第三方请求路由。标准的结构化日志使得更易于编写共同协作的模块。这会是定义自定义类型的好地方,但并不完全,所有的状态码常量都是无类型整数。​实例使用,并使用适配标准库的可组合库展示了Go的设计看哲学。

2024-01-04 13:23:09 1438

原创 云原生系列Go语言篇-标准库 Part 1

虽然默认功能通常已足够使用,但有时需要进行重载。尽管​​默认支持 RFC 339 格式的 JSON 字段,但可能需要处理其他时间格式。我们可以通过创建一个实现​​和​time.Timereturn nilif err!= nil {return errreturn nil我们将一个​​实例内嵌到名为​​的新结构体中,这样仍可以访问​​的其他方法。就像我们在​​指针接收器和值接收器​​中讨论的那样,读取时间值的方法对值接收器声明,而修改时间值的方法对指针接收器声明。然后,我们更改了​可在​。

2024-01-04 13:17:13 1155

原创 大师学SwiftUI第12章 - 手势 Part 2

Full Screen选项将整个屏幕传给应用,Split View选项将屏幕一分为二,左侧显示当前应用,右侧显示另一个应用,Slide Over选项将应用移到显示在另一个应用之上的浮层窗口。Description只是描述类型的文本,Identifier必须唯一,因此推荐使用反向域名,就像示例中寻样,Conforms To选项是一个紧密匹配我们的类型的预定义的​。就像前面的手势一样,如果希望用户多次执行手势,就需要存储两个状态,一个为当前旋转,另一个是最终旋转。​修饰符,用户可以将照片拖到另一个应用中。

2023-12-18 11:44:50 1347

原创 大师学SwiftUI第12章 - 手势 Part 1

​​属性存储当前状态,也会在手势结束时重置为其初始值,因此应确保初始值为属性应当具备的初始值。应用哪个方法取决于手势和希望完成的任务,而这些方法所接收到值取决我们所使用的手势识别器的类型。结柳体和修饰符有同样的功能,并且能定义识别为手势的点击次数,因为没有即时的变化上报,仅能使用​。​​视图定义背景来定义识别点击手势的区域。​动画,持续1.5秒,所以弹窗会在图片完全消失前打开,给用户一些必要的反馈来知晓他们要等待处理完成。​​视图应用手势识别器时,在用户触碰视图所占据的任意区域时会识别手势。

2023-12-18 11:43:28 1269

原创 大师学SwiftUI第18章Part2 - 存储图片和自定义相机

​​控制器通过AV Foundation框架中定义的类构建。该框架提供了处理媒体资源和控制输入设备所需的代码。因此可以使用框架中的类直接构建自己的控制器以及自定义处理流程和界面。创建访问相机从输入设备获取信息的自定义控制器,要求多系统的协同,我们需要配置相机和麦克风的输入、处理通过这些输入接收到数据、对用户提供预览并生成图片、实时图片、视频或音频形式的输出。图18-7所有相关的元素。图18-7捕获媒体资源的系统构建之初我们需要确定输入设备。AV Foundation框架为此定义了​​类。

2023-12-10 22:57:13 1935

原创 visionOS空间计算实战开发教程Day 9 打造“任意门”

​中演示了attachment的实现,本节的知识点是portal。portal相当于哆啦A梦里的任意门,它让我们可以打开另一个世界,这个世界独立于当前的世界,具有单独的光照系统并且由portal几何图形进行遮罩。​),在其中可以添加自己的实体。接着创建portal并将其关联至刚刚创建的世界。要创建portal,首先就需要创建一个世界(​。​文件请见我们的代码仓库。

2023-12-07 10:25:17 579

原创 visionOS空间计算实战开发教程Day 8 附属视图和动画

​​用于指定盒子所处的位置,同样是按人所处位置为参照坐标,​。​​可用于实现实体对象和场景的动画,方式为逐渐修改参数值。​​参数)来创建附属视图,但附属视图并不会自动添加到​。​​为蓝色,位于我们的左侧,为方便标识,我们通过​。​​相对应,我们只添加了两个文本视图,并通过​。​​指定在点击相应盒子时执行前面所定义的​。​​表示动画结束时的属性值,也可以通过​。​​中并没有什么区别,所以重点来看​。​​值让框架来计算动画结束时的值。​​用于创建动画效果,传入的参数​。​​用于指定所创建盒子的名称,​。

2023-12-07 10:22:42 759

原创 大师学SwiftUI第18章Part3 - 自定义视频播放器

除了让​​视图正常工作的代码外,AVFoundation框架还提供了创建播放媒体独立组件的功能。有一个负责资源(视频或音频)的类,一个负责将媒体资源发送给播放器的类,一个播放媒体的类以及一个负责在屏幕上显示媒体的类。图18-11描述了这一结构。图18-11:播放媒体的系统待播放的媒体以资源形式提供。资源以一个或多个媒体轨道组成,包括视频、音频和字幕等。AVFoundation框架定义了一个​​AVAsset​​类来加载资源。该类包含如下初始化方法。

2023-12-06 17:44:32 2190

原创 visionOS空间计算实战开发教程Day 11 标题动画

​​协议,修饰符(modifier)应用于视图或另一个视图修饰符,生成原值的另一个版本。虽然可以直接将修饰符应用于视图,但更常见和地道的做法是使用修饰符来定义一个​。​循环,分别设置初始的光标闪烁效果以及后续逐个文字和光标交替输出的效果,最后等待片刻,标记输出结束。​,本例中的模型比较简单,仅定了三个变量,分别表示当前文本、标题输出是否完成以及最终的标题文本。我们在代码里就是这么做的,在视图中我们传入了5个变量,​。​是需要进行修改的,所以使用了​。​定义了光标,默认使用了常见的​。​中可以看到,如果​。

2023-12-06 17:41:23 476

原创 visionOS空间计算实战开发教程Day 10 照片墙

方法,借助于visionOS对沉浸式空间的支持,我们创建了三个平面,组成具有立体感的照片墙。本例选择了《天空之城》的25张照片,组成5x5的照片墙)。轴上仅以平面为基准做了小小的调整。将准备好的位置和纹理,传入。方法中构建了一个纹理数组,将这25张照片添加到数组。方法进行配置返回实体再分别添加到3个平面中。方法,其它代码与此前的示例并没什么不同。方法,在沉浸式空间内点击时会打散(中发生了Tap事件后会调用其中的。方法),再次点击又会重置收起(的值,从而生成5x5的照片,为增加趣味性,这里还定义了。

2023-11-29 11:49:01 659

原创 注视点渲染Foveated rendering是什么

注视点渲染中的静态方式,或我们所称的固定注视点渲染,假定用户的焦点是屏幕的中央(有时就是这样的)。图示中展示了固定注视点渲染在VR头显是如何通过硬编码区域对屏幕进行划分的。假定的用户注意力区域(屏幕中心的白色区域)以100%进行渲染。灰色区域以中分辨率渲染,蓝色区域以低分辨率渲染,进而减少渲染整个场景所需的资源。可以在几乎所有设备上实现静态注视点渲染,极有可能看到一定程序的资源优化,但不一定能达到最优用户体验。

2023-11-29 11:46:56 1701

原创 云原生系列Go语言篇-泛型Part 2

比如在C++中,编译器使用抽象数据类型的泛型来将运行时运算(确定所使用的实体类型)转化为编译时运算,为每种实体类型生成独立的函数。为区分传递给共享生成函数的类型,编译器添加了额外的运行时查询。就像类型元素用于指定可替换类型参数的类型一样,和类型可用于变量参数中的接口。Go也不支持函数或方法重载,那就需要为不同的类型指定不同的运算函数。Go 1.18的编译器要慢于之前的版本,但Go 1.20的编译器解决了这一问题。Go仍是一种小型且聚焦的编程语言,Go对泛型的实现并未包含部分在其它语言泛型中存在的特性。

2023-11-27 10:32:59 1315

原创 云原生系列Go语言篇-泛型Part 1

Don’t Repeat Yourself”是常见的软件工程建议。与其重新创建一个数据结构或函数,不如重用它,因为对重复的代码保持更改同步非常困难。在像 Go 这样的强类型语言中,每个函数参数及每个结构体字段的类型必须在编译时确定。这种严格性使编译器能够帮助验证代码是否正确,但有时会希望重用不同类型的函数的逻辑或在重用不同类型的结构体字段。Go 通过类型参数提供了这个功能,俗称为泛型。本章中,读者将了解为什么需要泛型,Go 的泛型实现可以做什么,不能做什么,以及如何正确使用泛型。

2023-11-27 10:30:30 1189

原创 云原生系列Go语言篇-编写测试Part 2

BenchmarkFileLen1-12基准测试的名称,中间杠,加用于测试的GOMAXPROCS的值。重要的是,你清楚提供这些数据时程序的行为,并且模糊测试会考虑到这种行为。处理数据的程序可能存在bug,而数据格式规范总会有一些边界情况,不同的开发人员的解释方式也会不同。Go 包含了分析工具,可从正在运行的程序中收集 CPU 和内存使用数据,还有用于可视化和解释生成的数据的工具。​提供了一种不依赖外部服务的测试方式,但还是应该编写集成测试、连接其它服务的自动化测试。在测试依赖于大型接口的代码,有两种模式。

2023-11-24 13:18:52 1520

原创 云原生系列Go语言篇-编写测试Part 1

2000年以来,自动化测试的广泛应用可能比任何其他软件工程技术都更能提高代码质量。Go是一种专注于提高软件质量的语言和生态系统,很自然的在其标准库中包含了测试支持。Go中测试代码非常容易,没有理由不添加测试。本章中,读者将了解如何测试Go代码,将测试分组为单元测试和集成测试,检查测试代码覆盖率,编写基准测试,并学习如何使用Go竞态检查器检测代码的并发问题。同时,还会讨论如何编写可测试的代码,以及为什么它会提高我们的代码质量。

2023-11-24 13:16:40 1600

原创 visionOS空间计算实战开发教程Day 6 拖拽和点击

这里需要说明一个本例中生成的立方体在完成拖放,隐藏后再次展开后会生成一个新的供拖放和修改颜色的模型,这时老的模型就无法再进行拖放了。​显示和隐藏的基础上让我们模型可以实现拖拽效果,同时对纯色的立方体实现点击随机换色的功能。​​变量,以便后续的拖拽和随机颜色修改操作。​​常量,用于设置一个包含多种颜色数组,以便进行随机颜色修改。​​的逻辑中,我们还是常规地生成一个​。​​属性,这部分逻辑位于​。​​参数进行随机更换(​。​​参数,并添加一个​。​​),然后赋值给​。​​也要修改为类似​。

2023-11-23 10:51:46 1078

原创 visionOS空间计算实战开发教程Day 5 纹理和材质

本文中我们会通过纹理和材质对这个立方体的六个面分别进行不同的绘制。首先我们将​​ImmersiveView​​分拆出来,先新建一个​​ImmersiveView.swift​​文件,这是一个视图文件,所以请选择User Interface下的Swift View完成创建,其中的内容待我们编写完​​ViewModel​​中的代码后再进行修改。

2023-11-22 08:49:02 1759

原创 visionOS空间计算实战开发教程Day 4 初识ImmersiveSpace

沉浸式空间为内容提供了一个无界的区域,可在空间内控制内容的大小和摆放位置。在获取用户的授权后,我们还可以使用开启了沉浸空间的ARKit来将内容集成到周遭环境中。例如,可以使用ARKit场景重建来获取家具的网格(mesh)及其附近的对象,让内容可以与网格进行交互。

2023-11-22 08:47:34 803

原创 visionOS空间计算实战开发教程Day 2 使用RealityKit显示3D素材

​中学习了如何创建一个visionOS应用,但在第一个Demo应用中我们的界面内容还是2D的,看起来和其它应用并没有什么区别。接下来我们先学习如何展示3D素材,苹果为方便开发人员,推出了RealityKit,接下来看如何使用。​​等网站获取其它的免费或付费素材,推荐的格式是usdz,这是Pixar研发开源的一种文件格式,目前根据​。可以看到Model3D和SwiftUI中其它视图的使用差别并不大,因为我们要从网络上拉取资源,所以使用​。​​页面提供了一些素材,读者也可以到​。

2023-11-21 14:17:48 757

原创 visionOS空间计算实战开发教程Day 1:环境安装和编写第一个程序

Initial Scene有两个选项:Window和Volume,基本的区别是一个二维的,一个是三维的,后者添加多了一个深度信息。比如我们可以下载Xcode 15.1 beta 2,注意Xcode 15要求系统的版本是macOS Ventura 13.5或更新,也就是说2017年的MacBook Pro基本可以勉强一战,基本上还是推荐使用M系列芯片的电脑进行开发。​​,因为这里并不需要使用RealityKit和3D素材,只需要导入​。​​可以看到默认已为我们创建了一个包含有初始3D模型和​。

2023-11-21 14:16:37 1262 1

原创 Odoo 15开发手册第九章 外部 API - 集成第三方系统

Odoo 服务端提供有外部 API,可供网页客户端和其它客户端应用使用。本章中我们将学习如何Odoo 的外部 API来实现将其Odoo服务端作为后端的外部应用。可通过编写脚本来加载或修改Odoo数据,或是集成Odoo现有的业务应用,作为对Odoo应用一种补充。我们将描述如何使用Odoo RPC调用,然后根据所学知识使用 Python为图书应用创建一个简单的命令行应用。学完本章后,读者可以创建一个简单的Python应用,使用Odoo作为后端进行查询和数据存储。

2023-11-20 13:20:30 1267

原创 Odoo 15开发手册第八章 业务逻辑 - 业务流程的支持

本章中我们探讨了ORM API的各种功能以及以及如何使用这些功能来创建动态应用与用户互动,这可以帮助用户避免错误并自动化一些单调的任务。模型验证和计算字段可以处理很多用例,但并不是所有的。我们学习了如何继承API的create, write和unlink 方法来处理更多用例。对更丰富的用户交互,我们使用了mail内核插件 mixin 来为用户添加功能,方便他们围绕文档和活动规划进行交流。向导让应用可以与用户对话,收集所需数据来运行具体进程。

2023-11-20 13:18:32 393

原创 大师学SwiftUI第18章Part1 - 图片选择器和相机

如今,个人设备主要用于处理图片、视频和声音,苹果的设备也不例外。SwiftUI可以通过​​Image​​视图显示图片,但需要其它框架的支持来处理图片、在屏幕上展示视频或是播放声音。本章中我们将展示Apple所提供的这类工具。

2023-11-18 22:53:06 2055

原创 大师学SwiftUI第16章 - UIKit框架集成

其它相关内容请见​​是一套新框架,因此并没有包含我们构建专业应用所需的所有工具。这意味着我们会需要求助于(移动设备)和(Mac电脑)等原生框架所提供的工具。我们已介绍过。它是一套在后台实现用于创建大部分视图和控件的框架。有些类用于运行应用(​​​)、加载图片(​​UIImage​​​)、管理设备(​​UIDevice​​​)及窗口(​​UIWindow​​​),而另一些定义用于设置应用和场景(​​​和​​​)的代理。当然,该框架提供了我们创建界面所需的所有工具,包括两个创建和管理视图的基本类,称为​。

2023-11-18 22:50:09 943

原创 Odoo 15开发手册第七章 记录集 - 使用模型数据

在本章中,我们学习了如何操作模型数据执行 CRUD 运算:即创建、读取、更新和删除数据,还有处理和操作数据库所需的所有技巧。这是实现我们的业务逻辑和自动化代码的基石。对于ORM API的测试,我们使用了Odoo交互式 shell 命令行。我们通过self.env环境运行了命令,该环境类似于模型方法中的环境,因此对于探索Odoo API功能很有用。该环境让我们可以查看任意Odoo模型中的数据并生成记录集。

2023-11-17 09:09:36 816

原创 Odoo 15开发手册第六章 模型 - 结构化应用数据

学习完本章,我们熟悉了各种模型类型,如临时模型和抽象模型,以及它们对于用户界面向导和mixin中间件的用处。其它的模型功能有Python和SQL约束,可用于防止数据词条错误。我们还学习了可用的字段类型,以及它们所支持的所有属性,这样可以尽可能精确的方式表示业务数据。我们也学习了关联关系字段,以及如何使用它们创建应用所需的不同实体间的关联关系。然后,我们了解到模型通常继承类,但也可以使用来创建可复用的mixin,使用来创建向导或高级用户交互对话框。我们学习了常用的模型属性,如_order用于排序,

2023-11-17 09:06:20 669

原创 Odoo 15开发手册第五章 导入、导出以及模块数据

在 XML 数据文件中,每个​id和model,并包含为对应列设置值的​​元素。id属性对应记录外部标识符,model对应目标模型。​​元素有几种赋值的方法,下面一起来看看。本章中我们学习了如何用文本文件展示数据。可用作手动向 Odoo 导入数据,或放在插件模块中作为默认或演示数据。通过学习我们可以通过网页界面导出并导入 CSV 数据文件了,以及通过外部标识符来检测并更新数据库中已有的记录。也可用作批量编辑数据,只需编辑导出的 CSV 文件再重新导入即可。

2023-11-16 09:03:11 1000

原创 Odoo 15开发手册第四章 模块继承

Odoo 的一项强大之处是无需直接修改所扩展模块的代码即可添加功能。这都归功于与自身代码组件相独立的功能继承。对模块的扩展可通过继承机制实现,以已有对象的修改层的形式。这些修改可以发生在每个层面,包括模型、视图和业务逻辑层面。我们不是直接修改原有模块,而是新建一个模块,采用所要做的修改在已有模块上新增一层。

2023-11-16 09:00:54 888

原创 Odoo 15开发手册第三章 创建第一个 Odoo 应用

Odoo 开发通常都需要创建自己的插件模块。本文中我们通过创建首个Odoo应用,学习在 Odoo 中显示、安装应用的步骤。我们将从开发工作流的基础学起,即创建、安装新模块,然后升级开发迭代中更新的代码。Odoo 采用类 MVC(Model-View-Controller)的架构,我们会深入到各层来实现一个图书应用。通过这种方法,我们会渐进学习组成应用的基本组成,并体验从零构建Odoo模块的迭代流程。

2023-11-15 11:25:38 1090

原创 Odoo 15开发手册第二章 开发环境准备

在更深入学习 Odoo 开发之前,我们需要配置好开发环境并学习相关的基础管理任务。本章中,我们将学习如何配置构建 Odoo 应用所需的环境。我们会配置一个Ubuntu 系统来托管开发服务端实例。可以使用云服务器、本地服务器或者Windows 10上的子系统。

2023-11-15 11:17:48 523

原创 Odoo 15开发手册第一章 使用开发者模式快速入门

向已有表单添加自定义字段是一种很觉的自定义,无需创建自定义模块通过用户界面就可实现。我们的to-do清单应用中,希望选择一组人共同操作to-do清单项。可以在他们的partner表单设置一个标记来进行指定。我们将通过向Contact模型添加一个标记来实现。Contact模型是Odoo内核自带的,即使未安装任何应用也可以使用。但这样就没有菜单选项来访问它了。如果在主菜单中没有Contacts应用的话,请进行安装。打开顶级菜单的Apps项,搜索该应用进行安装。

2023-11-14 12:54:41 1716

原创 大师学SwiftUI第9章Part 2 - 异步并发之Actor、异步序列、任务组和异步图像

异步任务对于希望释放资源让系统可以执行其它任务的场景非常有用,比如更新界面,但在希望同步执行两个任务时,就需要用到并发。为此,Swift标准库定义了async let语句。

2023-11-14 08:39:23 856

原创 云原生系列Go语言篇-上下文

本文来自正在规划的,欢迎关注后续文章。服务端需要一种处理单个请求元数据的方式。这些元数据可以分为两大类别:一种是在正确处理请求时所需的元数据,另一种是关于何时停止处理请求的元数据。例如,HTTP服务器可能希望使用追踪ID来标识一系列通过一组微服务的请求。它还可能希望设置一个计时器,在对其他微服务的请求时间过长时,就结束这些请求。很多语言使用变量来存储此类信息,将数据关联到特定的操作系统执行线程。但在Go语言中,这种方式不可行,因为goroutine没有可以用来查找值的唯一标识。

2023-11-13 11:40:54 311

原创 云原生系列Go语言篇-标准库Part 1

本文来自正在规划的,欢迎关注后续文章。使用Go进行开发的最大优势之一是其标准库。与Python类似,Go也采取了“内置电池”的理念,提供了构建应用程序所需的许多工具。由于Go是一种相对较新的语言,它附带了一个专注于现代编程环境中遇到的问题的库。我们无法涵盖所有标准库包,所幸也不需要,因为有许多优秀的信息源可以了解标准库,比如。我们将重点关注几个最重要的包及其设计和用法来演示地道Go语言的基本原则。一些包(errorssynccontexttestingreflect和unsafe。

2023-11-13 11:34:23 266

原创 大师学SwiftUI第20章 - 国际化

其它相关内容请见苹果的产品遍布一百多个国家,使用几十种语言和方言发行应用,但通常我们只能创建一个版本的应用,所以就需要对不同市场进行适配。这不仅仅是翻译,还有用户界面中元素的排列、数字的格式等等。这一客制化的过程称为本地化。在SwiftUI中,大多数本地化会自动完成。例如,SwiftUI视图的内容采用靠前(leading)和靠后(trailing)约束来根据文字顺序(从左到右或从右到左读)的不同来表示左和右,日期和充其量单位等值会自动根据所在地进行格式化(参见示例4-32)。但文本还是需要我们来翻译。

2023-11-12 10:42:28 791

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除