Tag: ios

反应本地培训

Callstack.io 的 Nader Dabit 和 Mike Grabowski 专业的React Native研讨会和公司培训 。 今天,我们很高兴启动React Native Training。 毫无疑问,React Native在去年特别是在过去的几个月中确实起飞了。 尽管React Native一直是初创企业和中小型企业的可行选择,但我们现在看到越来越多的公司和企业公司正在研究和整合该技术,并使用该框架重写许多现有的本机应用程序。 在本机跨平台移动应用程序开发成本上升和效率下降的刺激下,React Native现在不仅是可行的选择,而且对于大多数用例而言,对于现实世界中的移动应用程序开发而言,它是成倍节省成本的方法。 随着受欢迎程度的提高,现有开发人员需要在尽可能短的时间内快速熟悉该框架。 像任何技术一样,没有比在该领域的顶尖人士上手进行培训更好的方法了,通常是几天之内就学会了数周或数月的时间。 我们将在北美和欧洲提供世界一流的前沿培训和课程材料,专门针对两件事:教室研讨会和现场公司培训。 如果您对我们来到您的城市感兴趣,请给我们发送电子邮件至info@reactnative.training或访问我们的网站reactnative.training。 如果您对专业的Web或移动应用程序开发或咨询感兴趣,请确保查看专门从事React和React Native开发的CallStack.io。 谢谢你的时间!

苹果手表Nike +を使った感想

Apple Watch Series 2预约开始と同时にポチりましたが,Nike +モデルは本日10月28日に発売ということで,他のSeries 2からは少し遅れた入手となりました。 苹果手表Nike + 新しいApple Watch Nike +は,内蔵GPS,しなやかなバンド,Apple Watch Series 2のすべての优れた机能を备えた,最高のランニングパートナーです 。www.apple.com Nike +は何が违うの? 多分,以下の2点が违うだけです。 耐克専用の文字盘 通気穴の空いた専用スポーツバンド(→品购入不可)→当时はそうでしたが今は単品购入もできます🎉 正直,こんなに待つより他のシリーズで良いのではと思いますが,初代Apple Watch持っていて,それとの机能差も少なめですぐ欲しい度もそこまででも无かったので,何となくデザインとか気に入ったNike +を选択しました。 系列2は初代と何が违うの? 违いはこのくらいです: GPS内蔵 デュアルコア化(系列1も初代とは违ってデュアルコア) 耐水性能アップ(IPX7等级→ISO规格22810:2010にもとづく50メートルの耐水性能) Apple Pay対応 倍スプレイが2倍明るく 0.9毫米分厚く・ 4g程度重くなった ファーストインプレッション というわけで,感想书いていきます。 外観 まず,商品写真では,蛍光色でスポーティーなデザインが気に入っていましたが,开封した时は思ったより微妙に思いました。 Rebuild.fmでのこの発言を思い出しました(・‿・`) に,身に付けるとなかなか良い感じに思えてきて,なんだかんだ気に入っています。 付属のバンドとNike +オリジナルの文字盘の组み合わせだと,「Apple Watch」というより「Nikeのスポーツウォッチ」を付けている感覚になります。逆に,バンドと文字盘を普通のに変えれば,以前通りの感覚になります(´・‿・`)

使您的发展更好。 使用代理。

在本文中,我想描述如何使用Charles桌面应用程序设置代理。 我相信你们中的许多人都使用API​​或使用一些REST服务。 如果您还没有听说过代理,我相信这篇文章中的知识将对您的未来发展有用。 以下示例涉及iOS环境以及在macOS系统上进行配置。 什么是代理? 为了告诉您什么是代理服务器,我使用在Charles文档中找到的定义 HTTP代理是一种服务器,它从您的Web浏览器接收请求,然后代表您向Internet发送请求。 然后将结果返回到您的浏览器。 因此,Charles应用程序是一种监视器,用于检查您的网络流量,代表您执行所有请求并将响应返回给您。 我真的需要吗? 是! 当您创建使用某些API的应用程序时,它可能会对您有所帮助。 您将可以查看服务器的请求和响应。 此外,Charles应用程序允许您为端点设置断点,并允许您编辑请求或响应正文,因此您可以为应用程序测试各种方案。 同样,您可以看到您的应用程序确实有多少请求。 如何配置Charles? 首先,转到Charles网站并下载安装文件。 安装过程完成后,您将看到应用程序的主屏幕。 开始时,我建议选择顶部的“ Sequence选项卡。 一段时间后,您应该会在Mac上看到所有您执行的请求。 现在,我们有两种方法来配置Charles。 第一种方法是为iOS Simulator配置它。 第二个选项是为iOS设备配置Charles。 iOS Simluator配置 单击帮助-> SSL代理->在iOS Simualator中安装Charles Root证书。 您将看到提示: 然后单击确定,并确保您应该重新启动模拟器。 完成上述步骤后,Charles便已配置好并可以与您的模拟器一起使用。 iOS设备配置 在设备的Wi-Fi连接设置中,选择与Mac使用的连接,然后点击。 然后向下滑动,然后选择“代理设置为手动”。 在IP字段中,请输入您Mac Wi-Fi使用的相同IP地址。 在port字段中,输入8888 。 要在Mac上查看Wi-Fi的IP地址,请执行以下操作: 在Mac上的wifi图标上用选项按钮右键单击 然后在您的iOS设备上访问http://www.charlesproxy.com/getssl/并安装证书。 我建议通过Safari进行操作,因为它会将您从URL重定向到iOS设备上的“证书设置”。 然后只需安装证书。 安装过程完成后,您将能够在Mac上的Charles应用程序中查看来自iOS设备的所有请求。 好的,所有配置都可以,但是如何使用呢? 配置流程完成后,您将看到Charles主窗口以及您的网络数据。 出于这篇文章的目的,我编写了一个简单的应用程序,该应用程序使用了免费的rest API https://www.freegeoip.net/ 。 该API为我们提供了有关任何域的一些地理信息。 例如: […]

我们如何通过使用主队列来避免线程问题

有时,问题的最佳解决方案是根本不解决所有问题,这对于编程来说尤其如此。 多线程是一个有很多陷阱的方面。 这不仅是理解多线程及其工作方式的问题,而且还因为我们不了解底层系统或硬件的工作情况而导致错误如何蔓延。 但是,这些问题并不需要每次都解决。 如果我们的约束允许,我们可以简单地避免使用它们,而对于GCD而言,更是如此,我们可以利用队列来完成工作。 在NoctaCam,我们尝试将大多数代码保留在mainQueue中,并使用许多技巧来避免使用其他队列。 这并不是说我们在性能或用户体验上有所妥协,但我们意识到我们根本不需要这样做。 这篇文章是关于我们如何做的。 首先,将代码放入主队列的优点: 调试:如果要从拥有单线程代码的所有优点中选择一个,这将是最重要的因素。 如果可以容易地预测程序的状态和执行流程,则调试很容易。 更快的开发:在启动环境中,我们需要快速构建,快速推送和迭代。 多线程问题阻碍了开发速度和发布周期。 更简单的代码:任何编写多线程代码的人都知道,要使其正常工作,还需要多少额外的代码。 团队成员尝试避免使用其他成员编写的代码,因为锁和其他同步原语使其难以阅读和理解。 那么我们该怎么做呢? 通过尽可能利用GCD API。 通过在主队列中运行所有代码并不意味着并行性和性能受到损害。 可以以并行化的方式编写代码的瓶颈,但不会削弱代码的其他方面。 例如: 这是map函数的一个版本,它并行执行处理,但同步返回结果,从而在代码的关键方面提高了性能。 对于可以异步运行的代码,不要使用后台队列,只需将其异步提交到主队列即可。 您可以使用以下包装器功能: 假定它们不再长时间运行,那么在程序执行过程中在后台重复执行的任务也可以在主队列中完成: 只需将异步重复提交同一任务到mainQueue即可,但要有一些延迟。 这看起来像递归,但并非如此,因为updateUI函数在将自身提交给mainQueue之后每次都会返回。 NSNotifications和KVO调用需要注意。 不能依靠他们被主队列调用。 另外,有几种iOS方法的回调在任意的后台队列中返回。 因此,当文档说它将在后台队列中或不清楚时,请跳至主队列。 陷阱 当然,这不是灵丹妙药,我们需要添加一些监视以记录是否有任何任务花费很长时间,这可能会阻塞主队列。 在处理主队列时,唯一需要遵循的规则是在任何情况下都不应阻止它。 这意味着不能对主队列进行任何实时处理。

QuarkXPress 2017

Een nieuw jaar,een nieuwe QuarkXPress。 2015年Sinds峰会Quark jaarlijks遇见了henie neuie versie op de proppen。 更多信息,请稍等。 Ook zo在QuarkXPress 2017中。 无损图像编辑 满足了QuarkXPress 2017的Quark gestaag verder aan omvattende全集成解决方案的整个设计。 通过2016年的geïntroduceerde功能“转换为QuarkXPress对象”可知,PDF格式的AI-由本机对象提供。 在操作区中没有其他说明的夸克翻译。 Je hoeft dus niet langer te switchen tussen programma’s om by’Curves’je visual wat te lichten。 仅此而已 Je kan通过QuarkXPress中的“导出图片”查看。 Daarnaast的QuarXPress bij op vlak van effecten设置了uitgebreide设置了透明混合模式,实现了多色渐变(je kan nooit genoeg渐变hebben,dat是geweten)。 还不错,XPress是传统的sterk punt van,这是入门级的入门功能,它具有Text […]

ReSwift — Redux风格的单向数据流

ReSwift是Swift中redux哲学的实现。 如果您不熟悉Redux,那就是管理应用程序的状态。 这样它总是可以预测的。 让我们看一下下面的架构以更好地理解它。 存储 -这是应用程序整个状态所在的位置。 状态可以只是查看状态,甚至可以是数据库状态,应用程序状态等,具体取决于您要如何使用ReSwift。 我建议仅将其用于视图状态,因为ReSwift在主线程上执行。 视图 -视图部分是整个视图层或应用程序的外观 。 简而言之,视图是状态的函数,在任何时候它都只是应用程序状态的一个很好的表示。 动作 -动作是通过用户交互通过视图分派的,并且由商店使用,然后商店会更新应用程序的状态。 这里还有其他两个部分– 减速器 —减速器是纯函数。 他们消耗一个状态,一个动作并产生一个新状态。 中间件 -上面的图中显示了中间件,但是中间件在还原器之前起作用。 每个动作都必须经过中间件,并且它可以对该动作起作用。 它们对于事件记录和操作计划非常有用。 如果您能想到更多案例或想讨论中间件的用例,请在下面的评论中发表。 在普通的iOS应用程序中,ViewController倾向于承担比任何其他组件更多的责任。 随着屏幕复杂性的增加,在我们的视图控制器中维护干净的代码变得越来越困难。 您可以将其与用例联系在一起,在这些用例中,我们最终向视图控制器添加标志和枚举,以使其适用于不同的状态。 记住很难重现的错误,因为只有当您以特定组合执行某些操作时,这些错误才会浮现出来。 ViewController已经承担了很多责任。 跟踪标志,枚举和查看数据是它应该担心的最后一件事。 想象一下,每当您看到与视图相关的错误时,如果只有一种检查方法,这将是多么容易! 使用ReSwift时,View只是状态之上的皮肤。 这意味着,只要您发现视图有问题,就可以随时检查状态以检查不同的值。 同样,状态只能通过调度动作来更改,因此您可以轻松找出导致该状态的动作。 如果预测不是很简单,则可以使用中间件来记录所有已调度操作的日志。 我们知道iOS中出现了许多架构,例如MVVM,MVP,VIPER等。ReSwift以非常独特的方式将自己与这些架构区分开。 如果仔细观察,所有其他架构都将重点放在责任分离上。 ReSwift可帮助您管理应用程序的状态。 这也意味着ReSwift可以轻松地与同一应用程序中的所有这些架构共存。 基本原则 所有视图数据都应以某种状态存储。 在任何时间点-整个应用程序(如用户所见)都是该状态的“很好的表示”。 只能通过调度动作来修改状态。 对于每个视图控制器,只有一个类(通常是演示者)将侦听并响应状态更改。 与MVP并肩作战 代码示例 以下是图像库应用程序中的代码片段,展示了ReSwift框架中的语法片段。 有关完整的代码,请访问https://github.com/amreshkumar/ReSwiftDemo

如何将照片上传到社区

您是否知道您还可以与我们在线社区中其他志趣相投的“数字”艺术家分享您的照片? 就是这样! 1.点击共享图标 完成新杰作的编辑后,点击“ 共享 ”图标。 Android:右上方共享图标 Windows:左上方菜单图标 iPhone:底部三点图标 2.选择社区选项 3.字幕并允许重新过滤 现在,向您的照片添加描述性标题,然后选择其他用户是否可以重新过滤*。 * 要了解有关允许其他用户重新过滤您的照片的更多信息,请单击 此处 。 4.登录或注册 如果您已经在我们的社区中创建了用户,请登录您的个人资料,您的照片将被上传。 * 我们所有应用程序的用户配置文件都会生成一次,因此,如果您拥有Painnt,Photomontager或其他Moonlighting应用程序的配置文件,则其余部分可以使用相同的配置文件。 如果您还没有用户,请单击“我没有帐户”,然后继续执行创建新个人资料的步骤。 完成后,您将可以分享您的第一本杰作! 此外,社区中最令人惊叹的作品将出现在Moonlighting的主页上。 上传您的照片,并成为精选!

为什么我爱Apple MVC

声明:我仍在学习iOS编程,因此请将此作为学习笔记而不是教程。 干杯! MVC摇滚。 不严重,这是我见过的最干净的架构。 让我们看一下这张图: 现在告诉我这种三组分结构如何变得更清洁。 也许MVVM? 它也仅由3个组件组成。 但是,等等,现在我们有了另一层称为binding ,而不是普通的事件驱动的MVC体系结构 。 是的,绑定有其优点,但是恕我直言,它不必要地使事件流难以理解。 因此,它是比Apple MVC更复杂的体系结构。 我认为人们之所以如此讨厌Apple MVC,是因为用它编写大型视图控制器很容易。 但是首先, 大规模视图控制器有什么不好? 我的意思是,如果视图控制器职责明确且结构合理,因此非常易于维护,那么编写大型视图控制器是一种不好的做法? 对我来说,更少的代码并不等于更好的代码。 易于理解对代码而言更为重要。 可以在一种方法中配置表视图(可能是viewDidLoad() ),并带有一些UIKit closurising扩展,并使代码比将经典的委托和数据源协议应用于视图控制器本身要少得多,但实际上,维护该视图非常容易具有协议扩展的代码,而不是单一方法中的一堆多层代码。 想一想。 委托扩展是这样的: extension MyViewController: UITableViewDelegate { // Protocol implementations } 它基本上意味着MyViewController在说“我可以管理UITableView ,这就是我要管理的方式”。 换句话说, 所有与 UITableView 相关的代码都在此extension中 。 这真太了不起了。 即使您的视图控制器具有数千行代码,您也可以轻松地在此扩展中查找任何表视图问题。 对我来说,如果视图控制器过于复杂,可能是因为 一个视图控制器的职责过多。 该方法设计不良。 视图控制器中存储的属性过多。 那么如何改进呢? 确定何时使用视图控制器(而不是仅使用视图) 通常,人们认为视图控制器代表一个场景 ,因此仅在出现新场景时才应使用视图控制器。 这不是真的。 每当场景过于复杂时,都应将其分解为几个子场景-或子视图控制器。 像UINavigationController一样。 它的职责仅是管理其子视图控制器的转换 […]

仅使用iPhone对React Native应用进行编程

我是工作狂 我不会轻易说出来。 暂停开发我的应用程序对我来说是令人难以置信的压力和困难,尤其是在有很多事情要做的时候。 因此,当我发现与父母和女友进行为期10天的欧洲之行时,我非常担心牺牲宝贵的工作时间。 那应该是我对欧洲假期的最初反应吗? 可能不会。 但是我对自己下定决心,只要有空闲时间或每个人都入睡后,我仍然可以完成一些工作,因此我仍然可以取得一些进步。 这是双赢! 我仍然可以在意大利和法国旅行并享受我们的郊游,而且我仍然可以完成一些工作。 但是出现了一种新的并发症。 乘飞机的早晨,我发现无法携带笔记本电脑。 现在我们有一个问题。 我知道我必须适应。 您可能会猜到我根据标题决定尝试的内容。 没错,我可以想到的处理任何代码的唯一方法是,如果我在iPhone上找到了一种相对有效的编码方法。 这是我的方法。 进行设置 几次Google和App Store搜索后又经过几次反复试验,我确实在飞机起飞前几个小时就整理好了设置! 我需要的第一个也是最重要的应用是Github客户端,它允许我执行以下操作: 访问我的应用的私人Github存储库。 在其上添加和编辑任何文本文件。 拉,推和提交我对其所做的任何更改。 我发现有很多应用程序可以让您查看项目,但是只有少数应用程序支持编辑。 在尝试了一些选项之后,我决定使用工作副本。 它满足了我的所有要求,拥有一个性感的用户界面,拥有157个评分,平均评分为4.8星,而且我什至可以免费试用! 我非常喜欢它,我觉得值得为专业功能付费。 为了使事情变得更好,开发人员仍然非常活跃,并定期发布更新! 感谢您提供出色的移动Github客户端Anders Borum。 您值得一枚金牌! App Store链接:https://itunes.apple.com/us/app/working-copy/id896694807?mt = 8 我的移动设备设置中唯一缺少的部分是自定义键盘,可让您尽快输入代码。 物理智能手机键盘之所以售罄,是因为我们没有时间停下来购买,因此唯一的选择是下载自定义iOS键盘。 虽然我经常下载并尝试新的有趣的应用程序,但我并没有探索许多自定义键盘。 我从未感到有必要冒险超越Google的GBoard(这是最好的)。 我试用了一些开发键盘,并认为CodeKey Pro是适合该工作的键盘。 用最少的偶然键盘按键,对我来说感觉最好。 它还根据您设置的语言提供自定义快捷方式。 就我而言,我使用Javascript是因为我的应用程序是基于React Native构建的。 感谢您在我的移动开发设置上的精采,Abhinav Dimri! 应用商店链接:https://itunes.apple.com/us/app/codekey-pro-custom-keyboard-designed-for-programmers/id1054647516?mt=8 和繁荣,我准备在旅途中编写代码! 温馨提示:虽然没有必要,但在旅途中带上外接电池很方便。 “但是阿明! 您是如何测试代码的?” 我没有 这不是最佳实践,但是我所能做的就是编写代码,仔细检查拼写错误,并在回来时进行调试。 也许可以使用Expo的移动应用程序来运行该应用程序(我不使用Expo,所以我不知道),但是我的React […]

内部来源

这有什么不同? 在Impala Studios,我们从拥有共享维护权的两个团队待办事项到通常由模块化和微服务件组成的包含我们所有产品的单个待办事项。 您会看到我们的产品由应用程序,框架,第三方模块和后端服务组成。 每个模块都可以设置为特定产品。 例如,Alarm Clock HD的iOS应用程序内部具有Alarm Clock Framework。 它使用多个SDK和3rd Party模块在应用程序营销和新闻中显示广告,收集数据,并使用我们自己的气象服务来获取新气象。 在我们当前的设置中,整个应用都有一个监护人和一个产品负责人,但是没有一个模块具有特定的所有权。 基本上每个人都拥有内部维护的代码,没有人拥有由外部各方维护的代码。 由于集成产品由其每个模块(不断更新)的最新版本组成,因此创建了相当复杂的依赖关系集。 随着模块的更新,诸如App之类的集成产品将会崩溃。 我们通常也不知道有没有损坏,因为应用程序中的大多数集成都不受自动化测试的影响。 当前,查看已经存在于存储库中一段时间​​的App是否仍然有效的唯一方法是制作和测试当前版本,然后修复发现的内容。 借助Innersourcing,Alarm Clock HD将拥有一个“所有者”(即产品所有者),但是监护权现在将进入每个模块。 现在,团队将负责团队中具有监护人的所有模块。 每个人仍然可以更改这些模块,但是拥有该模块监护权的团队拥有最终批准权。 监护团队确保它使用自己的模块(例如Cocoapods)的依赖处理程序来制作其模块的新版本,然后可用于新版本。 从例子中学习 Google — 20亿行代码 使用内部外包的单个产品的最大示例可能是Google的实现。 Google的所有25,000名工程师都可以在一个存储库中访问几乎所有20亿行代码! 我们可以从Google中学到的东西: 他们将代码保存在团队拥有的“目录”中。 除目录外,任何开发人员都可以进行任何更改,您的更改必须经过所有者的批准。 分支-它们具有“基于主干”或“发布分支”的模型。 尽可能晚地制作master分支的快照,并在此基础上开发新功能。 如果主服务器上已更新了开发所需的内容,则可以将其“放入樱桃”到发行分支中(由于其大小,他们甚至没有选择与主分支保持同步)。 发布分支是生产的基础。 我们可以考虑使用GitLab Flow,当然也可以考虑使用CocoaPods冻结版本。 它们具有每次提交时运行的单元测试的代码覆盖率。 他们使用拉取请求和自动部署进行代码检查。 贝宝(Paypal)-开源和内部源之间的优势 有许多公司一直活跃在开源社区中,而不是从专有或内部源码,甚至是开源方面发生变化的公司。 Google和Facebook在开放源代码许可下拥有部分代码,Apache基金会和Ubuntu / Canonical拥有完全基于社区的软件。 Paypal是后来者,但自2014年初以来,他们在kraken.js项目上开始从Java过渡到JavaScript和Node.js时,就采用了Inner Source。 他们注意到,要为许多项目做出贡献,就必须采用一种新的工作方式。 一个重要的变化是迁移到GitHub和使用Git。 另一个是就质量标准达成共识,例如单元测试。 最后,他们注意到开放源代码贡献者的工作是分散的,而他们正在迁移到同一地点的团队。 面对面交流的缺点是,对于不了解该软件的人而言,没有文档记录,他们必须学习使用readme.txt,changelog.txt并在git中进行文明的在线公开讨论注释。 由于kraken.js是开源的,因此与外部贡献者的通信在某种程度上迫使了这一点。 O’Reilly上提供了对Paypal内源的深入了解。 […]