0条留言

PureLayout 是面向iOS开发人员的库,可轻松在其后的代码中创建UI视图。借助PureLayout.Net,此选项现在可用于Xamarin.iOS。

由于PureLayout.Net基于在代码中定义UI的思想,因此您可能会被诱惑,特别是作为C#开发人员,将其视为完全不好的主意。因为在代码中定义UI是不行吗?好吧,实际上不是,不是在iOS下。 iOS下的标准方法是使用故事板来定义您的UI和屏幕流。刚开始时这很棒,因为它非常类似于Windows Forms,并且具有良好的拖放优势。问题出现在两个方面:

  1. 由多个人来编辑情节提要
  2. 在整个用户界面上共享标准值(例如边距)

TL; DR; 以可重用的方式定义UI,从而可以共享设计标准并减少UI工作中的重复项。通过使用启用UI上的协作而无需担心合并冲突 。净。您将能够 立即使用.

由于情节提要是一个大的(生成的)XML文件。用户界面的任何更改都存储在一个位置。在较大的项目中,这意味着每当两个或两个以上的人想要对UI进行更改时,就会发生合并冲突。如果出现合并冲突……总之,您很不幸。由于生成了XML,因此合并起来并不友好。合并时出错将导致应用程序的整个UI破烂不堪。现在,可以通过使用XIB在某种程度上减轻这一问题。但是那些带有一些额外的粘合代码来使其运行。另外,还有第二点。

如果您正在开发更大的应用程序,则将(想要)拥有某种样式指南。在其中,您将为颜色,边距,文本大小,字体等定义一组定义的常量。使用Storyboard或XIB设计器将无法为您提供中央编码的样式文件。定义和分发样式的唯一方法是在书面文本文档中,例如Word,PDF文件或Wiki页面。这种方法归结于需要了解此文档的每个在UI上工作的人。我可以在当前版本中添加和应用样式。至少可以说这是一个挑战。

使用PureLayout.Net可以轻松避免所有这些情况。 -我希望现在不要感到惊讶 眨眼的微笑

从哪里获得

只需添加 NuGet包 到您的iOS项目,您将一切准备就绪:

Install-Package 。净

如何开始

入门指南可以在 项目GitHub页面.

谢谢

我想指出的是,PureLayout.Net只是现有的编写为Objective-C的PureLayout库的包装。因此,非常感谢 泰勒·福克斯 创建者和 米奇·里斯 当前正在维护的库。

我还要感谢 塞缪尔·德布吕因(Samuel Debruyn) 在他的帮助下在包装纸方面帮助了我很多 博客文章 .

0条留言

使用预设为j2的VSCO处理

在里面 以前的帖子 我们看到了如何使用bet188地址实现方法即函数。函数不仅是一种结构化代码以供重用的好方法,而且还允许创建更大的脚本。每当编写最终用于生产的代码时,始终必须确保代码按预期运行。当脚本较小或不调用任何长期运行的服务时,我们可以通过执行脚本来非常简单地完成此操作。但是,脚本变得越复杂或集成到长时间运行的进程中,越难确保脚本在更改后仍按预期运行。

在这里,自动化测试可以确保功能正确性,而无需任何强大的用户交互来执行多个测试方案。

编写自动化测试

电源外壳带有自己的测试框架,称为 纠缠 。 Windows 10的每个安装均附带了事实上的标准bet188地址测试框架,Pester遵循了行为驱动开发(BDD)测试开发风格。我将由您来决定测试驱动开发(TDD)和BDD之间的区别,因为它通常会在对测试更加人性化的描述中显示出来。
让我们开始看看在C#上下文中要做什么。

对于C#示例,我们将使用 xUnit.net 遵循的框架 xUnit模式。假设我们要测试以下课程:

我们可以通过以下测试来验证功能:

对于bet188地址,相同的功能可能如下所示:

相应的测试函数如下所示:

从结构上有很多共同点。

请注意,Pester强烈要求开发人员遵循文件的某种命名模式。当函数位于名为 Something.ps1,相应的测试应在文件中 Something.Tests.ps1.

当我们从bet188地址 IDE控制台窗格执行bet188地址测试时,在bet188地址窗口中得到以下结果。

显示testrunner的控制台输出(以VS Code执行)

您可以在pesper中使用多个断言,如以下概述所示:

  • 应该
  • 应该准确
  • 应该为NullOrEmpty
  • 应该匹配
  • 应该完全匹配
  • 应该存在
  • 应包含
  • 应该包含确切
  • 应该扔


模拟外部依赖

在编写自动化测试时,很快就会出现一个主题,那就是如何管理对外界的依赖。在编写自动化测试时,我们可以将它们分为不同的类别:

类别 描述
单元测试测试代码的核心逻辑。测试是否已按照规范实施了逻辑,并确保核心构建块正常工作。不依赖于其他代码,例如bet188地址中的模块。应该构成项目中的大多数自动化测试。
整合测试测试应用程序的一部分,即脚本。确保测试的部分协同工作,这可能涉及在脚本本身之外调用服务。
这些测试通常最容易实现,但比单元测试更脆弱。错误可能是由其他系统或脚本中的逻辑错误引起的。在大型项目中,单元测试应该比集成测试更多。
系统测试端到端测试整个用例场景。这些测试应运行脚本的场景,例如“设置新的Web服务器实例”,“设置新的数据库实例”。它们通常需要很长时间才能运行,并且可能需要有关基础架构(即登台/测试环境)的前期工作。
通常,您仅应使用系统测试来测试核心方案。他们通常需要大量的前期投资来创建环境,并且还需要大量维护,因为一旦对系统进行了更改,就必须对其进行调整。

由于bet188地址主要是为了自动执行基础结构任务而创建的,因此您要编写的大多数代码都是与一种或多种系统交互。只要我们的脚本只在阅读,我们可能就不会觉得需要模拟我们的服务,即只要它们不会过慢。但是,当我们开始编写生产系统时,我们当然希望确定我们的脚本能够按预期运行。这就是进行模拟的地方。在C#下,有多个用于模拟类的外部依赖关系的库。最小起订量是最受欢迎的(也是我个人最喜欢的)。

因此,假设我们要模拟一个外部依赖关系,该依赖关系将向我们返回目录中的所有条目。我们会用C#编写这样的代码(我知道有点长...):

现在在bet188地址中,我们将如下实现该功能:

纠缠 提供了方便的模拟功能:

这不仅是测试代码的一种好方法,而不必实际位于文件系统上,它还显示了我们如何模拟其他依赖项,例如系统时钟(午夜测试任何人?),网络调用等,这将确保该脚本实际上并未调用任何外部源。您最有可能看到的另一个好处是可以加快执行时间。由于一切都在内存中运行(又名快速 眨眼的微笑)没有网络或磁盘延迟。有关模拟的更多信息和选项,请查看 官方文件 佩斯特。

执行测试

我们还可以使用以下命令从命令行执行测试:

调用方

可以使用描述的参数扩展该命令 这里 。浏览参数时,您可能会注意到它们将提供为bet188地址脚本启用持续集成(CI)的方法。在这种情况下,我们可以通过添加具有以下参数的bet188地址步骤来向Visual Studio Team Service(VSTS)或Team Foundation Server(TFS)构建配置添加一个步骤:

如果您已经建立了构建服务器(可以在几分钟之内免费获得VSTS…。),则可以轻松地为脚本设置CI作业。 CI可以真正解决睡眠问题-因此,如果我能以便宜的价格买到它,答案是肯定的 Smile

概要

在本文中,我们介绍了如何使用bet188地址编写测试并执行它们。此外,我们看到了如何模拟依赖关系。我们进一步研究了如何不仅在开发过程中执行测试,而且还研究了如何在自动化构建过程(即持续集成(CI)环境)中执行测试。

参考文献

查阅我以前的文章,了解如何开始使用C#开发人员的bet188地址:

您可以在他们的网站上找到有关Pester的更多详细信息 项目页面.

外部参考

0条留言

电源外壳图标

在本文中,我们将研究如何在bet188地址中使用方法。考虑方法时,势必会出现参数。在C#中,参数没有太多荣耀。但是在bet188地址中,参数确实具有一些额外的功能。从命令行调用脚本时可以重用。

在之前的文章中,我们介绍了如何进行设置,以及在第2部分中如何实现基本的命令结构。在这篇文章中,我假设您熟悉这些文章的主题。因此,如果您不熟悉bet188地址,则可能需要阅读这些文章以熟悉一些基本概念。

方法和参数

尽管bet188地址不需要任何方法。它确实提供了通过将代码放入函数中来使代码可重用的结构。

上面的C#函数可以如下转换为bet188地址。

大多数函数都带有参数,因此,让我们开始吧,再次以C#函数开头:

以及相应的bet188地址代码:

如您所见,bet188地址函数使用一个特殊的关键字。  参数名称以美元符号开头。类型信息也会添加到参数中。定义类型是可选的,如果不需要,可以简单地省略。调用该函数不需要为参数使用大括号,并且它们将默认为方法中定义的顺序。现在让我们看下面的代码:

电源外壳中的参数提供了一些有趣的方式。前面的示例展示了如何编写具有多个参数的方法。以及如何通过名称来设置参数。但是,我们只是在探索一切可能的事物。启动bet188地址脚本的常见方案是 命令行界面(CLI)。为了保持脚本的灵活性,有必要使用参数来启动它,例如服务器的IP或URI。当定义与方法中相同的构造时,我们可以有一个需要参数的脚本。

然后可以进一步调用脚本,如下所示:

请注意,参数名称已重新用于命令行参数。但是我们可以做更多的事情,让我们考虑以下方法描述:

现在,我们为三个参数分配了默认值,类似于在C#中的默认值。我们可以进一步设置参数的顺序,使参数成为强制性甚至检查参数,如下所示。

总结一下,您可以看到bet188地址提供了一个  way to 使用方法,并提供了与之交互的丰富方式 参数。编写脚本时也可以使用参数。只需将参数代码放在脚本的顶部,即可在调用脚本时设置参数。

文件处理

如果我们没有关于文件处理的小部分内容,那么关于bet188地址的任何介绍都不是完整的。写入文件就像编写以下行一样容易:

这样,我们可以轻松地保留信息,以供以后在运行时使用或检查状态。如果目标是保留bet188地址对象模型的状态。序列化将是更好的选择。序列化对象提供了以后恢复其状态的选项。允许在bet188地址的REPL中检查对象,并分析为什么某些情况可能导致失败的原因。可以使用以下命令在bet188地址中序列化对象:

反序列化对象将通过以下行执行:

通过将对象序列化为XML文件来存储状态可以作为一种优雅的解决方案,用于在计算机之间传输状态或在脚本执行过程中发生错误时回滚到先前状态。人们也可以将序列化的对象用于自动化测试,而无需接触实际的系统。让这成为我关于bet188地址的下一篇博客文章。

概要

在本文中,我们看到了如何使用bet188地址创建基本的控制结构,例如:

  • 方法和参数
  • 文件处理
  • 序列化和反序列化对象

使用这些基本的控制结构,您可以通过定义方法来创建简单的脚本并重用代码。随着bet188地址脚本开始增长,对其进行测试变得越来越困难。这就是为什么在下一篇文章中,我们将研究使用bet188地址进行自动化测试。

0条留言

在本系列的第一部分中,我们介绍了 开发环境设置 有关如何开始使用bet188地址的信息。现在,让我们深入研究一些代码。 电源外壳可以用作动态语言。对于C#开发人员而言,这可能是最令人沮丧的点之一。在这篇文章中,我们将研究以下几点:

  • 变数
  • 如果别的
  • 循环和管道
  • 方法
  • 文件处理

所以我们开始吧 Smile

变数

当我们看一个简单的C#程序时,它可能看起来像这样。

使用 系统 ;
命名空间 控制台应用程序
{
上市 程序
{
上市 静态的 虚空 主要 ( [] args )
{
名称 = "哈维·斯佩克特";
整型 = 42;
Console.WriteLine( $“ 您好 {名称} ,您的电话号码是 {数} " );
}
}
}

现在相比之下,这里是等效的bet188地址代码。

请注意,我们不需要任何类或方法即可开始。只需开始编写脚本即可。现在,在bet188地址下变量很有趣。让我们向bet188地址代码中添加更多信息,以检索变量的类型。分配值时,将为变量分配类型。由于未编译bet188地址,典型的C#开发人员可能会遇到一些潜在的漏洞。对于初学者来说,这是一个完全有效的声明。

结果如下:

分配字符串的类型为String之后,变量首先是Int32类型的。

在bet188地址中,我们可以通过定义变量的类型来更加严格,这将使第二次分配非法。但这需要您付出额外的努力。

如果我们执行严格的分配,我们将收到一条错误消息,它更像是C#开发人员所习惯的。

还有一件事。即使变量 $从未定义 从来没有定义。好了,我们仍然可以访问它的值,而不会引发异常或错误。

电源外壳输出显示变量$ neverDefined仅显示一个空字符串

在开发过程中请记住这一点,因为它们可能会出现并在以后将您缠住。

条件运算符

用C#编写条件代码时,标准选择是使用if和else或对于多个选项使用开关/大小写。因此,一种可能的选择是按如下方式使用它们:

向所有需要轮班工作的读者致歉 眨眼的微笑 让我们看看如何在bet188地址中实现相同的代码:

没有太大的变化或惊喜,所以这里没有惊喜。主要区别在于if检查中的等号。这是您在C#和bet188地址中找到的等号的小转换表:

目的

C#

电源外壳

等于

==

-eq

不平等

!=

-ne

然后更大

>

-gt

少于

<

-lt

大于或等于

>=

-ge

更少或平等

<=

-le

循环和管道

C#中有许多不同的循环构造:for,while,do和 每次 。因此,如果我们看一下C#中所有不同类型的循环:

在bet188地址中,等效项可以这样实现:

现在 每次 当必须遍历项目列表时,循环确实很棒。这通常是我们最终要做的事情,例如“遍历人员列表按城市进行计数”或更多bet188地址y“遍历主机信息的数量以确保一切正常,并且无需采取任何措施”。虽然我们可以使用上面的for循环编写该代码,但是有一个称为管道的bet188地址。通过管道,我们可以进行收集并将其转发到下一个操作。我们可以重写 每次 示例如下:

很酷不是吗? Smile 我们甚至可以使用 每次 构造循环转发的每个项目:

请注意,$ _始终是我们要处理的当前项目 每次 循环。 C#中的等价构造是通过扩展方法实现的。管道可以极大地提高可读性,因为可以看到流程。但这也会使代码更难调试,因此请确保在此处保持平衡。

注意: 即使 前言 是的别名 每个对象 他们的行为有所不同。使用时 前言 在以下情况下,操作将暂停直到所有要处理的元素都存在 每个对象 它将处理进来的物品。这可能会导致一些意外的副作用……

概要

在本博文中,我们了解了bet188地址中的基本编程结构与C#中将如何实现这些结构。请记住,与C#相比,bet188地址在运行时更具动态性和宽容性,这可能会导致一些不必要的副作用。在下一篇文章中,我们将研究如何实现方法并使用参数,这些方法不仅对方法很方便,而且对命令行界面参数也很方便。

参考文献

此博客文章系列中还有更多内容:

0条留言

WikiPedia的Windows Powershell的屏幕截图

最近,我一直在使用bet188地址做一些工作。在任务自动化方面,bet188地址在Windows IT Pro领域是众所周知的。在当今快节奏的世界中,使日常工作自动化的想法很有吸引力。 电源外壳提出了自动化的基本工具集,不仅是平凡的任务,而且还设置了整个环境。由于我大部分时间都是使用C#进行工作,因此我想分享一些使用bet188地址开发的见解。哪一个足以惹麻烦 眨眼的微笑

 

开发环境

在Windows 7或更高版本的计算机上,bet188地址开箱即用,甚至带有自己的编辑器bet188地址 Integrated Scripting Environment(bet188地址 ISE)。 电源外壳 ISE允许您编辑包含代码突出显示和IntelliSense的bet188地址文件,并在调试模式(F5)或运行选定的代码部分(F8)中运行它们。甚至可以设置断点(F9),这将使C#开发人员感到宾至如归。

image

交互式bet188地址将显示正在运行的脚本的输出。在调试代码时,shell也会派上用场。在给定的断点处,您可以通过在控制台中键入变量的名称来检查变量。我对bet188地址 ISE的唯一抱怨是不会重置控制台。达到此目的的唯一方法是重新启动编辑器,然后必须再次打开(所有)文件。

视觉工作室

作为C#开发人员,日常驱动程序通常是Visual Studio。如果您不愿意使用其他编辑器。好吧,你被覆盖。体验非常类似于bet188地址 ISE。因此,如果您有任何Visual Studio插件,例如 VsVim 您不想错过这可能是您的首选路线。

 

如果您在Visual Studio的初始安装过程中未安装bet188地址,您可以通过修改Visual Studio安装来添加bet188地址。打开 程序和特点,选择Visual Studio,然后选择 更改 。在对话框中选择 修改 然后选择 适用于Visual Studio的bet188地址工具。最后选择 下一个。 在安装过程中,您可能想喝一杯自己喜欢的饮料。

视觉工作室将创建它的常规解决方案和项目文件。这将导致一些普通的bet188地址开发人员可能无法识别的混乱情况。当您将这些文件检入存储库时,请记住这一点。

超越Windows

电源外壳通常在.Net Framework之上运行。到目前为止,bet188地址还支持在.Net Core上运行。这意味着您的bet188地址脚本不限于Windows。您也可以为Apple和Linux机器编写它们。对于Linux和Mac,选择的bet188地址编辑器之一是 视觉工作室程式码电源外壳插件 为了它。

image

您可以在屏幕上看到有关如何将bet188地址与Visual Studio Code一起使用的详细说明。 msdn 网站。

为什么选择bet188地址而不是C#或 C脚本

反应为什么莱恩雷诺兹,但为什么

由于bet188地址在.Net Framework上运行,因此为什么首先要使用bet188地址?首先用C#编写代码会更容易吗?我认为,最好的论据之一来自bet188地址之所以成为这样的原因。它从一开始就被设计为自动执行IT任务。操作系统或其他主要服务中有很多挂钩。 Active Directory,IIS,Exchange等提供了可以通过bet188地址使用的接口。因此,如果您的任务是使Windows环境自动化,那么bet188地址将能够使用许多现有的API并与之交互。使任务更轻松,更省时。

一个有趣的事实是,用于配置IIS的UI实际上在后台执行bet188地址命令。通过bet188地址脚本调用它们时,将使用相同的命令。

由于我们正在编写基础结构代码,因此Ops人员很有可能最终对其进行维护。这个人很有可能对学习bet188地址感兴趣。由于这是他们的日常工作,因此寻求bet188地址在他们的日常任务中启用它们。

第三,进入一种新的编程语言总是很有趣。最后,bet188地址可以与C#进行交互。因此,如果有必要以良好的旧C#方式完成工作,则没有什么可以阻止您 Smile

您好bet188地址

在结束本文之前,让我们看一下Hello World示例:

echo "您好bet188地址"

Jup就是这样,一行就完成了。

在里面 下一篇 我们将深入介绍编写bet188地址代码的基础。

参考文献

此博客文章系列中还有更多内容: