如何编写踢屁股拉请求

适量亵渎的Git入门指南 通过Akash Shah 对于新手开发人员(至少,那些想与其他人一起从事项目工作的人),编写提交和请求请求是必不可少的。 如果有效完成,它们最终将节省时间和精力,不仅对您有利,对您团队中的其他开发人员,项目经理和客户也是如此。 在进入美好的提交和拉取请求世界之前,退后一步来了解应用程序实际上是有帮助的 。 无需再费周折: 应用程序是功能的集合,这些功能可以共同帮助用户实现目标,无论是寻找新的住宿地点,与朋友联系还是浪费时间。 功能虽然差异很大,但具有一些特征: 每个功能都有一个单独的功能。 每个功能可以独立运行,也可以相互依赖。 每个功能都包括帮助其接收信息,解析信息然后进行传递的代码。 在大多数情况下,该代码仍然是单独的,其他功能无法访问。 文档作者,我们可以快点了吗? 我想做个很烂的狗屎! –你 嘘,年轻的Padewan。 我们到了那里。 现在,为什么我们要经历有关功能的整个讨论? 好吧,无论何时使用新功能或修复现有功能,都可以创建一个单独的分支,并将相关代码提交到该分支。 完成后,您将提交拉取请求 。 注意不要在一个分支中使用多个功能或修复。 提交 开发功能时,无需从一开始就构建其最终迭代。 您逐步构建它。 您可以从简单地激活功能开始,然后提供信息,依此类推,直到功能完成。 但是,您如何决定提交什么和何时提交? 这很简单。 提交步骤! 提交这些步骤可以使不熟悉您的代码的人轻松了解您的操作以及操作方式。 您可以做一些其他的事情来使您的提交变得更好: 说明 应该用一句话形容您的所作所为。 如果您需要更多,也许您应该拆分提交。 摘要应该描述提交的目标。 你想做什么? 将数据转换成字符串? 重构什么? 修复您之前弄糟的东西? (嘿,狗屎发生了。我没有判断!) 不要害怕经常犯错! 您做得越多,您就会学到更多。 确保您没有对Master做出任何承诺,除非您的项目负责人给予了此荣誉。 温馨提示:除非您喜欢使项目负责人的头部爆炸,否则请尽量不要使用空格。 哇,文档作者,您刚刚在使用gif时获得了一些严肃的信誉! –你 谢谢读者。 我努力 现在开始请求。 拉取请求 拉取请求用于准备好审查代码的情况。 如果一切正常,您的项目负责人会将其合并到Master Branch中 […]

架构A / B实验(iOS)

对产品进行实验是公司获得其客户最佳响应的最强大的技术之一。 但是有时候,尤其是当它们同时超过2个或3个时,对于在整个项目中找到实验块的开发人员来说,这可能会有些沮丧。 在本文中,我将解释一种简单的体系结构方法来保持我们的代码干净和动态。 什么是A / B测试? 假设我们要改善应用程序的功能,以吸引更多用户使用它。 我们几乎没有改善它的想法(涉及设计,可见性等),但是我们不确切知道哪一个最能使用户获得最大响应。 解决方案是设置A / B测试 。 A / B测试是根据特定版本随机分配用户的实验。 让我们看看它是如何工作的: 假设我们想知道哪个是最好的价格,我们应该出售我们的高级会员才能获得最高的收入。 我们决定设置3种变化: 原始价格变化 :15,00 $; 变化A :25,00 $; 方案B :40,00 $。 通过特定API(即Apptimize API)使用我们应用程序的每个用户都将被分配为这些变体之一,并且该服务将向我们的客户返回已分配用户的变体。 此时,根据选择的变体,我们将执行一段代码而不是另一段代码。 在上面的示例中,用户将看到为其分配的变体选择的价格。请注意, 实验必须始终包含原始变体 ,换句话说,就是开始实验之前存在的变体,否则我们永远不会知道这是否是最好的解决方案,或者实际上是否还不够好。 做得好,实验正在运行! 现在,我们只需要等待任意时间即可获得结果。 好的,已经过去了一周,我们发现了以下结果: 原始变体: 1000个用户支付了15,00 $-> 15.000,00 $的收入 ; 变体A: 800个用户支付了25,00 $-> 20.000,00 $的收入 ; 变体B: 300个用户支付了40,00美元-> 12.000,00美元的收入 ; 请注意,最低价或最高价均未赢得! 实际上, 变体A […]

Convertigo — MADP和&MBaaS

什么是MADP和MBaaS? MADP MADP代表“移动应用程序开发平台”,它使组织可以轻松地跨许多移动设备和后端体系结构构建应用程序。 MADP允许组织通过重用以前的一些代码来添加越来越多的应用程序。 MADP包括对已部署应用程序的管理,从而可以控制其自定义移动解决方案的整个生命周期。 MADP有两处吐痰: 移动前端框架(例如,Ionic) 中间件服务器/服务,不存储任何数据,而是在移动前端中填充数据; 在检查授权请求时。 MBaaS 移动后端即服务(MBaaS),也称为“后端即服务”(BaaS),是一种模型,用于为Web应用程序和移动应用程序开发人员提供一种将其应用程序链接到后端暴露的后端云存储和API的方法。应用程序,同时还提供用户管理,推送通知以及与社交网络服务集成等功能。 — 维基百科 Convertigo : Convertigo是第一个一起提出将企业级移动平台作为开源的软件供应商。 Convertigo为具有以下功能的移动平台提供了完整的端到端极端敏捷性: 1.通过MBaaS“连接”并利用企业和合作伙伴业务后端应用程序的永久发展 2.将业务逻辑集中到基于云的服务器或本地服务器中。 3.允许在多种不断变化的设备和OS上下文中部署和管理移动应用程序。 Convertigo提供自己的基于云或内部部署的移动应用程序开发平台(MADP)作为开源,这是您开发移动应用程序平台的一种解决方案。 它集成了快速的跨平台移动开发工具(MADP)和功能强大的无代码移动后端即服务(MBaaS)。 Convertigo功能: Convertigo使您可以创建具有不同中间件类型的连接器的各种平台移动应用程序。 它还包括特定于移动设备的功能,例如推送通知 , OAuth等。 还有一些与社区版不捆绑的高级权益: 本机客户端SDK许可证 负载均衡的多实例 本地缓存 离线FullSync数据 扩展连接器(WEB,大型机,SAP) Convertigo Studio: 它带有集成的tomcat服务器,可让您在编写代码时进行测试。 向Convertigo注册后,您将获得免费试用的Convertigo云 空间。您可以使用它来部署中间件项目。 ( 注意:此试用版空间可能对其他Convertigo试用版用户可见,因此在部署到试用版云帐户时要小心 ) Convertigo Studio使您可以在一个界面中开发和测试移动应用程序和中间件 ,如下所示, 您还可以预览适用于不同平台(例如iOS,Android)的移动应用,如下所示: 要测试中间件逻辑,可以使用本地数据库服务器。 设计中间件时,Convertigo允许您映射API的首选输出内容类型。 (例如, “ application / json,application / xml” ) […]

我偶然成名。

您和Typany之间有什么日常故事吗? 个人资料:我叫Margo,来自24岁的泰国。 我说4种语言:英语,中文,老挝语,泰语。 我热爱自然和艺术。 当我在咖啡厅与朋友聊天时。 她在游戏商店中说,我看到我的朋友使用非常可爱漂亮的键盘向其他人发短信,我问她从哪里得到这种键盘的。 当时我在想,也许她为这个漂亮的键盘花了很多钱,因为我曾经下载这种类型的键盘应用程序,而这并不是免费的。 但是我的朋友说这款Typany键盘是完全免费的,不再收取任何费用,令我感到惊讶的是,为什么我从来不知道完全免费提供如此出色的键盘,所以我马上就下载了。 您认识Typany多久了? 从下载当天开始,大约需要5个月的时间 您最喜欢Typany的哪个功能?为什么? 我喜欢DIY键盘功能,因为我可以创建自己的键盘和键盘,当您看到自己喜欢的图片时,将其保存到相册中,然后将其用作键盘主题,我认为每次键入时都能看到自己喜欢的照片很酷 使用Typany时,最常用的功能是哪一个? 表情符号,Typany上有很多可爱的表情符号,其中有很多除了typany都找不到。 当她提到Typany时,她微笑着告诉我们“ Typany是独特的出色键盘”。 用户体验绝对会吸引我们的更多注意力-不好时要好。 如果您想成为Typany的发言人/女士,请随时 与我们联系 !

Maple Lawn Guide登陆由Revista支持的iOS App Store

《枫树草坪指南》现已在iOS App Store中发布,对马里兰州富尔顿市的当地人来说是个好消息! 这本对消费者友好的指南是第一个由Revista提供支持的应用程序,它是Gloto的购物中心,零售区和其他大型场所的访客互动平台。 《枫树草坪指南》令人兴奋地初步了解了Gloto计划如何使用Revista连接本地企业和访客。 与使用Revista平台的所有应用程序一样,《枫叶草坪指南》包括交互式地图,分类目录和信息丰富的新闻源。 您可以在Revista的最新发布公告中了解有关完整功能集的更多信息。 《 Maple Lawn Guide》的发布对于访客和新兴社区的成员来说是个好消息,他们现在可以轻松地掌握Maple Lawn不断发展的零售区中的交易和事件的最新信息。 包括卢尼(Looney’s)酒馆,西达摩(Sidamo)咖啡和茶和宠物谷仓(Pet Barn)等当地美食,这里有很多您不容错过的新闻。 例如,您是否有兴趣在Purevida Medspa节省20%的费用,或在The Grille抢半价汉堡? 卢尼的微缩啤酒怎么样? 《枫树草坪指南》是确保您不会错过此类优惠的最佳方式。 立即下载适用于iPhone的应用程序,并与Maple Lawn保持联系!

赛车经理

Hoy quiero hablar de la app que mas tiempo meestácomiendo en laúltimasemana。 在App Store和应用商店中的外观和外观都非常不错。 赛车经理 。 普通话,普通话,普通话,普通话,普通话和普通话的管理者。 Este es de los segundos。 从事战略游戏的大豆迷:“足球经理”,“主题医院”,“主题公园”………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… 从汽车上购买装备的权利,请立即取消。 ¡在iPad上玩游戏! 西班牙语翻译成西班牙语的西班牙语。 现存的类别,名称和类别的绝对名称。 建设者组织的合作伙伴关系 公交车上的一名骑警,飞行员,飞行员和教练。 Tendrásdos pilotos。 不适用于任何实际需要的干草,当地法人的实际补贴。 卢旺达民主共和国临时法院判决书,由冈比亚埃尔库索-洛斯阿科泰克-米科斯决定。 营销反转广告(pilotos,赞助商或粉丝)。 Los GP cuentan con laclasificacióny la propia carrera。 Tus patrocinadores tepoolránobjetivos que debes cumplir para conseguirmásdinero。 En mi caso,los retos patrocinados […]

使用Interface Builder的主题警报

UIAlertController可以通过许多方式进行配置,但是它不是主题化的。 有很多库可以代替UIAlertController ,并且可以作为主题使用 。 但是,如果您需要的只是一个带有标题,消息和2个按钮的“简单”模式警报,该怎么办? 为此值得引入并配置整个库吗? Interface Builder中的一个简单的主题警报 没有! 让我们自己动手做一件事情,用任何额外的行李就可以完成工作。 这是Interface Builder中的外观: 深色背景视图是警报的父视图。 它的黑色背景的alpha设置为0.5。 不需要,但是它有助于集中用户的注意力,使警报下的所有内容变暗。 其余的警报使用“自动布局”以简单的方式进行布局。 两个按钮的宽度相等,并且有预定的宽度和边距。 警报本身位于其父级的中心。 使其反应? 我对此警报的使用案例之一是在警报消息中显示活动计时器。 有多种方法可以执行此操作,但是我喜欢在警报出口上使用反应性绑定(使用Bond和ReactiveKit)。 为此,我们将为它配置一个视图模型,并根据视图模型的更新自动更新文本。 包起来 您无需导入大型库或编写大量代码即可创建两按钮式主题主题模式警报。 您可以改为定义一个新类,使用情节提要并根据需要对其进行完全布局,然后只需将其推入另一个视图控制器即可。

点亮iOS TestFlight教程

1. 检查您的电子邮件中是否有标题为“ TestFlight”的邮件。 到您的信箱可接受标题为“ TestFlight”的信件。 2. 单击“在TestFlight中查看”。 点击红框处的“在TestFlight中查看”。 3. 使用Safari打开。 精选Safari打开。 4. 复制您的兑换代码。 复制您的兑换代码。 5. 单击“来自App Store的TestFlight”。 点选「来自App Store的TestFlight」。 6. 下载并打开“ TestFlight”,单击“兑换”。 下载并打开“ TestFlight” app,并点选“ Redeem”。 7. 粘贴您的兑换代码,然后按“兑换”。 贴上您刚刚复制的兑换代码后点兑换。 8. 下载并打开“ Lit”。 下载并打开“ Lit” app。 9. 登录即可点亮! 登录,恭喜您成功加入Lit啦! 10. 您可以通过转到“ TestFlight”应用程序并单击“发送Beta反馈”来发送Beta反馈。 谢谢! 若您愿意回馈测试结果,请前往「TestFlight」app的介面后,点选「Send Beta Feedback」,即可提供您的回馈。Lit团队感谢您!

iOS自动化测试:Xcode UI测试入门

如何编写iOS自动化测试? 如何使用Xcode UI测试框架通过Screen Object Pattern编写可靠且可维护的测试? 阅读本文以了解答案。 XCUITest框架简介 第一步,我们需要选择自动化框架。 在本教程中,我们将利用XCUITest Framework。 一个允许测试用户与屏幕实际交互的框架。 它由Apple开发,为用户界面和集成测试提供了强大的功能。 设置Xcode项目以进行UI测试 Xcode UI测试要求访问应用程序源代码,并且必须在计算机上安装Xcode。 首先,我们需要创建UI测试目标: 打开Xcode项目 文件>新建>目标 选择iOS UI测试套件 输入您的组织信息并选择一种编程语言(本教程中将使用Swift) 使用XCUI Test Recorder编写第一个测试 XCUI Test Recorder允许我们记录用户与屏幕的交互并在测试中使用生成的代码: 导航到测试导航器 选择要记录的测试功能 按下UI记录器按钮 在设备上执行测试 为了完成我们的测试,我们应该添加断言来进行验证,以确保预期元素显示在主屏幕上 //预期显示的元素 让玩家= app.collectionViews.staticTexts [“测试”] //声明该元素已显示 XCTAssertTrue(player.exists) 使用辅助功能检查器检查元素 XCUI测试记录器非常适合简单的测试,但是记录器生成的代码需要修改,有时它不能为Element提供正确的定位器。 更好的方法是使用辅助功能检查器: 开放辅助功能检查器 单击开始检查按钮 检查元素以定义定位器 当我们知道Element调试描述时,我们可以根据该值编写Locator: 让playerBalance = app.staticTexts [“ $ 99.999”] 获取屏幕调试描述的另一种方法是在Xcode控制台中打印可访问性层次结构: print(app.debugDescription) 屏幕对象模式简介 在编写用户界面和集成测试时,我们希望使用可读代码创建可维护的测试。 […]

在UIWebView中禁用点击延迟

从历史上看,使混合移动应用感到有点“偏离”的差异之一是,使用简单的click事件处理程序处理UI元素上的轻击时会有所滞后。 创建了诸如Fastclick之类的库来通过使用原始触摸事件立即触发事件处理程序来缓解这种情况。 尽管它们用于基本用途,但为触摸事件增加了JavaScript执行开销,这导致了麻烦。 最近,Android上的Chrome和iOS上的Safari都取消了对不可扩展页面的限制。 这是单次点击延迟的根本原因-无法知道用户是尝试双击还是单次点击,因此浏览器必须在第一次点击后等待才能看到如果另一个来了。 我以为这适用于应用程序中嵌入的Web视图,但是我很失望地看到Quip的行为在iOS 9.3或10.0上并没有改善(对于大多数事件处理程序,我们都有自己的类似Fastclick的包装器,但不适用于到复选框,然后仍然很落后)。 进一步的研究表明,该改进不适用于UIWebView (用于将Web视图嵌入iOS应用程序的较旧机制WKWebView较现代,但仍存在一些局限性,因此Quip尚未迁移到该应用程序)。 有关改进的WebKit博客文章包括一些与相关的跟踪错误相关的链接(如前所述, WKWebView是完全开源的,仍然不错)。 深入研究关联的提交之一,这似乎是要调整多个UIGestureRecognizer实例之间的交互。 通常,处理单次点击的操作必须等待处理两次的操作失败,然后才能触发其动作。 由于一次敲击要花费350毫秒来确定一次敲击是否跟随另一次敲击,因此单次敲击需要很长时间才能失败。 Apple所做的更改是为不可缩放的页面禁用了第二个手势识别器。 UIWebView不是开源的,但我认为其实现必须类似。 为了验证这一点,我添加了一个小代码段以转储其视图层次结构的所有手势识别器(由[self dumpGestureRecognizers:uiWebView level:0]触发: -(void)dumpGestureRecognizers:[UIView *)view level:(int)level { NSMutableString *前缀= [NSMutableString新]; for(int i = 0; i <level; i ++){ [前缀appendString:@“”]; } NSLog(@“%@视图:%@”,前缀,视图); 如果(view.gestureRecognizers.count){ NSLog(@“%@ gestureRecognizers”,前缀); 的(UIGestureRecognizer * gestureRecognizer in view.gestureRecognizers){ NSLog(@“%@%@”,前缀,gestureRecognizer); } } 对于(UIView * view.subviews中的subview){ [self dumpGestureRecognizers:subview级别:level +1]; } […]