Swift是开发人员中增长最快的编程语言之一。 Swift排名前15位,比我们追踪的任何其他语言都要快。 RedMonk编程语言排名 redmonk.com/sogrady/2017/03/17/… 该语言是为构建移动应用程序而创建的,现已在后端开发中流行。 但是,对于开始构建后端应用程序的Swift开发人员而言,他们现在发现自己必须管理计算基础架构才能在云中运行其应用程序。 进入无服务器云平台…☁️☁️☁️ 这些服务允许开发人员将代码(而不是VM)推送到云中。 该平台允许您将外部事件源(例如API请求或消息队列)连接到代码中的函数。 当事件发生时,您的代码将被实例化并执行以处理每个请求。 开发人员仅需为处理每个请求所需的毫秒数付费。 无服务器平台使您可以在云中运行应用程序,而不必担心基础架构。 😎 Apache OpenWhisk 是当前唯一支持Swift语言功能的无服务器平台。 让我们先看一下如何在OpenWhisk中使用Swift,然后再深入研究该平台如何实现此功能,为我们提供一些有关OpenWhisk上Swift的提示和技巧。 Swift on OpenWhisk 使用CLI 使用以下源代码创建一个Swift文件。 func main(args:[String:Any])-> [String:Any] { 如果让name = args [“ name”]为? 字符串{ return [“ greeting”:“你好\(名字)!” ] }其他{ return [“ greeting”:“你好陌生人!” ] } } 快速动作必须消耗并返回字典。 作为函数参数传递的字典将包含事件参数。 返回的字典值必须支持序列化为JSON。 使用命令行实用工具创建并调用新的OpenWhisk操作。 $ wsk action创建swift action.swift 好的:快速创建动作 $ wsk操作调用swift –result […]
四月是一个繁忙的月份! 有太多很棒的技术堆栈帖子,以至于我们很难挑选十个。 到4月为止,我们总共有20个热门帖子,其中包括10个隐藏的宝石💎。 来自Netflix , Flipboard , Slack , Twitter , Yelp , Dropbox , LinkedIn,Shopify等的帖子 。 令人惊讶的是,四月份的一个主要主题是移动开发 。 LinkedIn,Yelp和Uber都写了关于Android的用法,而Uber则用Swift分解了对应用程序的重写,Shopify则写了关于构建移动CI系统的文章。 查看以前版本的Tech Stack综述 十大技术栈文章: 我们如何构建Twitter Lite(Twitter) 如果您还没有听说过,那么Twitter Lite是一种“快速且响应迅速,使用较少数据,占用较少存储空间,并支持推送通知和在现代浏览器中脱机使用的功能”,旨在成为您在使用Twitter时使用Twitter的最佳方式。连接速度慢,不可靠,受限或昂贵。 基本上,是精简版的Twitter。 Twitter将其构建为客户端JS应用程序,并使用React,Redux,Normalizr,Globalize,Babel,Webpack,Jest,WebdriverIO和Yarn构建。 作者 : 尼古拉斯·加拉格尔(Nicolas Gallagher) 技术堆栈 : React , Redux , Normalizr , Globalize , Babel , Webpack , Jest , WebdriverIO和Yarn Slack的TypeScript(Slack) 有人在打字TypeScript …事实证明,您一直使用的Slack桌面应用程序非常复杂。 这是一个多线程应用程序,使用JavaScript与Windows,macOS和Linux的本机代码进行交互。 Slack希望能够保证一切都能融合在一起,因此他们转向TypeScript […]
从这往哪儿走 我在GitHub上的swift-lambda-app存储库包含一个在Lambda上运行Swift代码的更复杂的示例。 基于本文概述的思想和AlexaSkillsKit,它为Amazon Echo实现了自定义技能,该技术是为Echo提供支持的语音服务。 我将在以后的文章中介绍Swift中的Alexa Skills。 同时,如果您有任何疑问,可以通过Twitter与我联系。
断断续续的一年多来,我一直在尝试获取一个小的Swift Docker映像。 我发现小图像是有好处的,特别是在可伸缩的微服务架构中,容器不断地移动到不同的机器上,并且需要占用很小的空间并快速启动。 目前,基本的swift:4映像为1.3GB! 这使得难以在图像周围移动(推动和拉动)以及协调众多容器。 最初,四处搜寻使我进入ibmcom/swift-ubuntu-runtime ,它仅包含必要的运行时依赖项。 这是一个很大的改进,基本大小为338MB,仍然很大,但比基本Swift映像小了近4倍。 实现小图像的一种范例是静态链接容器的主要二进制文件,并将其FROM scratch放入图像中。 这可以通过许多不同的编译器来实现。 不幸的是,Swift编译器在静态链接标准库和Foundation时存在一些问题。 但是,使用Docker的多阶段构建功能并从基础Swift映像复制必要的共享库将使您拥有比IBM Swift运行时映像小的映像。 我编写了一个shell脚本,该脚本使用二进制文件的名称以及可选的输出文件的名称,该脚本使用ldd确定二进制文件使用的共享库,并将它们压缩为gzip压缩的tar文件。 使用此脚本,我能够从基本的Swift映像开始,构建二进制文件,并将依赖项和二进制文件复制到busybox映像中。 我用这种范例构建了两个图像:一个简单的print(“Hello, world”)程序和一个Vapor“ Hello,world”网络应用程序。 print图像为102MB,而蒸气图像为113MB,大约是ibmcom/swift-ubuntu-runtime图像的ibmcom/swift-ubuntu-runtime ! 希望很快就能解决静态链接,并且图像可能会更小。 快乐的Swift-ing / Docker-ing!
我喜欢服务器端开发,也喜欢Swift,因此很显然我对服务器端Swift感兴趣。 但是如果没有Docker,现代的后端开发是不可能的(至少是极其混乱的)。 幸运的是,我们能够在Docker容器中运行Swift应用程序。 Swift的常规Dockerfile通常看起来像: 来自swift:latest 添加。 / app WORKDIR / app 运行快速包解析 RUN快速构建-配置发布EXPOSE 8080 ENTRYPOINT .build / release / SwiftDocker 这是简单明了的示例。 但不幸的是,结果容器将很大,约为1.35G。 这使得处理图像变得困难。 至少我的Mac上只有250G,因此我必须处理此问题。 Docker支持多阶段映像。 当您在一个图像中构建某些内容并将其复制到另一个图像中时。 它提供了在完整映像中构建应用程序的可能性,但仅使用最小映像即可运行它:OS +必要的库。 我总是在Golang应用程序中使用这种技术。 Go编译器能够创建一个包含所有依赖项的可执行文件。 不幸的是,Swift编译器在静态链接标准库和Foundation时存在一些问题。 我在本文“最小化Swift Docker映像”中找到了可能的解决方案。 但是直接从文章解决方案对我没有用。 所以我修改了它。 主要思想是使用ldd确定哪些共享库需要二进制文件并将其压缩到存档中。 #!/ bin / bash BIN =“ $ 1” OUTPUT_TAR =“ $ {2:-swift_libs.tar.gz}” TAR_FLAGS =“ hczvf” DEPS = $(ldd $ […]
原始链接: GitHub行动:持续交付Swift软件包 GitHub正在推出GitHub Actions功能,该功能使开发人员无需使用任何操作即可自动执行CI / CD工作流程… shashikantjagtap.net GitHub Actions:持续交付Swift软件包– XCTEQ GitHub正在推出GitHub Actions功能,该功能使开发人员无需使用任何操作即可自动执行CI / CD工作流程… www.xcteq.co.uk GitHub正在推出GitHub Actions功能,该功能使开发人员无需使用任何其他应用程序即可自动执行CI / CD工作流程。 Github Actions可被视为Github本身内置的GitHub自己的CI / CD解决方案。 开发人员可以使用GUI编辑器或从代码创建工作流。 GitHub Actions可用于使用Apple的Swift Package Manager构建,测试和分发Swift库构建。 在本文中,我们将看到如何使用基于Docker的Github Actions为Swift软件包设置CI / CD。 在撰写本文时,GitHub Action仍处于有限的公共beta中,并且可能很快会添加更多功能。 但是,值得理解GitHub Actions和Workflows背后的概念。 有关如何配置工作流程和操作的官方开发人员文档,但是在摘要中, GitHub动作包含一个WorkFlow,其中包含各种动作。 可以使用可视编辑器或在.github/main.workflow文件内的代码中定义工作流程。 工作流必须解决特定的操作。 每个动作都在Docker容器内执行,并且可以依赖于另一个动作。 可以在Github存储库或远程Docker存储库中本地定义操作。 注册GitHub Actions的用户可以在公共存储库上使用此功能进行推送构建。 让我们不用讨论理论,而要使用由Swift Package Manager构建的Swift Packages的GitHub Actions for CI / CD。 苹果已经宣布了自己的软件包管理器来构建和分发Swift软件包。 目前,Swift软件包管理器不支持iOS平台,但可以构建和共享独立的软件包。 […]
第一部分: Seagull和服务器端Swift 。 我已经更新了海鸥版本,现在是0.1.5。 没有大的变化,只有错误修复和改进。 无论如何,Seagull已经距离理想的REST框架又近了一步) 在进行开发时,我获得了一些有关服务器端Swift的新课程。 我想分享我的经验。 Swift和Docker 在Docker容器中运行Swift项目并不像我以前想象的那么容易。 Swift还没有官方形象(真可悲)。 因此,某些项目使用自己的图像。 作为迅速尼奥。 Seagull基于swift-nio,因此我也必须使用它(进行少量修改) 在不同的linux版本上测试项目是一个非常好的主意。 幸运的是,使用docker-compose很容易。 对于Seagull,我为Ubuntu 16.04添加了默认的docker-compose文件,为14.04添加了其他文件。 它是基于Ubuntu 16.04的swift-nio docker映像的docker-compose文件。 现在,我可以使用一个命令在纯Ubuntu 16.04上运行单元测试和测试REST服务器: docker-compose -f docker / docker-compose.yaml进行单元测试 或适用于Ubuntu 14.04的版本: 只需在参数中设置Linux和Swift版本,然后构建并使用其他映像即可。 docker-compose -f docker / docker-compose.yaml -f docker / docker-compose.1404.41.yaml up res 我花了一些时间来了解它在swift-nio中的工作方式以及如何在我的项目中使用它,但是现在我有了简单而强大的工具,可以在Linux环境中测试我的Swift项目。 这非常有帮助。 测试框架 这让我感到惊讶,但是Mac上的“嵌入式” XCTest和开源Swift的XCTest有所不同。 这是XCTest中的“新型”异步测试。 简单,我真的很喜欢。 但是,当您尝试为Linux编译项目时,它不起作用。 感谢Docker,我找到了它。 老款式。 不太优雅和灵活,但可以在所有平台上使用。 可编码 我太懒了,在测试中我使用了Swift如何序列化Encodable对象的假设。 […]
先决条件: Docker 1.8或高级 电源外壳 入门手册,码头工人工作日报,Powershell的日常工作(como Administrador) 码头工人拉迅速 Lo siguienteserácrear un contenedor para poder utilizar swift,siguiendo el ejemplo de la pagina oficial(solo agregamos unparámetroadicional),tenemos: docker运行–privileged -it –name swiftfun swift / bin / bash Como se puede notar,nos tira una consola con el usuario“ root”,seguidamente entramos a la consola de swift(el binario ya esta configurado como global) […]
iOS项目分析1 使用sonarqube服务器docker映像和sonarqube扫描仪 前言: 今天的文章主要是分享,如何使用SonarQube来扫描iOS App Project, 来看看专案是否有隐藏的臭虫或怪味道(代码气味)。 主要使用到的技术与架构有: 采用docker的方式,来部署SonarQube Server在本机上(MAC OSX), 由于SonarQube需要使用一个资料库来储存扫描后的结果, 我们采用postgres资料库来做搭配,接者安装SonarQube Scanner。 最后就是扫描我们现有的iOS App Project,并查看扫描的结果。 实作过程: 首先要在MAC上安装Docker(安装参考连结),笔者使用的版本是Community Edition(CE)。 2.因为同时要使用两个docker image来做部署Sonarqube Server,所以笔者采用docker-compose的方式来做设置,将下面的程序代码存储到MAC上, 并命名为docker-compose.yml。 4.接者我们打开浏览器,连接网址『http:// localhost:9000』,已经可以连接到SonarQube Server,并使用记录帐密『admin / admin』来做登录。 5.首次登录,会出现教学模式,首先需要建立一个令牌,我们输入swift,并点击Generate。 6.这边要特别注意,这个令牌要自行保存,之后不会再次显示,如果忘记,只能删除再重新设置了。 7.接者选择后面要扫描的语言,这边我们选择其他=> macOS =>输入项目密钥=>完成 8.接者会出现后续扫描专案用的指令,也可以直接点选COPY到剪贴簿,画面有个下载按钮,点下后会连结到官方说明文件。 9.到此我们先点击跳过此教程,我们已经完成了SonarQube Server的安装。 总结: 今天介绍了采用Dokcer的方式,来部署设定SonarQube Server和Postgres DB,完成了之后要扫描iOS App Project的首要准备动作, 之后的文章里,将会实际介绍如何扫描一个专案的程式码, 并查看相关的报表,感谢您的阅读。 参考: Mac版docker Mac版Docker入门 欢迎使用Mac版Docker! Docker是用于创建容器化应用程序的完整开发平台,而Docker for Mac是… docs.docker.com 2. docker […]
在本指南的最后,您将拥有应用程序的基本后端。 为了实现此目标,我们将使用服务器端Web框架Kitura,该框架允许我们使用Swift构建用于API端点的服务器,Postgres(一种开放源代码关系数据库)来存储数据,并使用Docker来管理资源。 现在可能您是WAT ?! 什么是API端点? 我会帮你! API是一种编程接口,由一个或多个向定义好的请求-响应消息系统公开暴露的端点组成,这些端点通常以JSON表示,并通过HTTPS协议公开。 在本指南中,我们将使用HTTP而不是HTTPS,因为最后,为了支持看似无关的字母,将有许多艰巨而漫长的步骤。 最后,我们将有三个API端点。 我们将能够查询这些端点以获得JSON响应。 该数据库是由三个表组成的数据库,这些表描述了旅行应用程序的结构。 行动! 我们到了。 首先,需要一些先决条件。 对于Kitura,如果您使用的是macOS,则需要安装Xcode 9或更高版本,并在终端上运行xcode-select –install 。 如果您使用的是Linux,请遵循本指南。 要继续,您将需要在计算机上安装其他软件包。 我建议您安装Homebrew,这是一种数据包管理器,使用以前的混乱安装可以简化您的生活。 现在已经完成所有设置,通过Homebew安装Kitura: $ brew tap ibm-swift/kitura $ brew install kitura 现在是时候安装Docker,这是一个功能强大的工具,可以帮助您管理可扩展的后端并轻松进行部署。 下载Docker并按照应用内步骤进行安装。 慢慢来,安装完成后,请登录并返回此处。 恭喜,您已经安装了所需的一切! 现在我们需要一个项目文件夹。 我们的层次结构由一个名为“ MyFirstBackend”的主文件夹组成。 在其中,我们将创建另外两个文件夹:“ 后端 ”,“ 证书 ”和“ 数据库 ”。我们将使用这些文件夹存储docker容器映像的规则。 稍后,在数据库文件夹中,我们将使用规则来创建……猜测:数据库。 相反,在后端文件夹中,我们将实例化Kitura项目。 看起来很有趣,对不对? 让我们深入研究吧! Postgres,该您了! 如前所述,Docker是执行操作系统虚拟化的功能强大的程序。 我们正在使用它,因为我们会将后端部署在云上。 这样,您将不必担心内存,空间以及普通虚拟主机的所有限制。 这要归功于云及其可扩展性。 让我们现在建立数据库! 在“ […]