简介:Mac的快捷键

通过蓝牙连接到Mac的实际无线按钮,其大小不比键盘上的键大很多。 无需加密狗。 今天,我们很自豪地发布了Mac版Flic App。 这非常简单: 我们为Mac提供了更多按钮。 Good’ol最喜欢的按钮,但适合您的办公桌。 我们今天发布的Flic Mac App可通过两种方式用于创建快捷方式:将Flic按钮与Mac配对以快速执行您喜欢的功能 使用小部件可以从通知中心运行快捷方式,而无需Flic。 在这里下载。 如何使用它? 这是我们的想法: 主题演讲—使用Flic作为微型演示文稿答题器,而无需烦人的蓝牙加密狗 及时-使用Flics精美地报告在多个项目上花费的时间 Spotify-您知道播放/暂停功能按钮永远不会优先Spotify且TouchBar上不再存在吗? 那,但是无线和工作。 智能家居(Hue,LifX,Wink,Wemo)-在办公室中控制灯光和音乐,而不会打扰您的工作流程 IFTTT和Zapier可运行Web脚本或控制您的其他小工具。 宽松-让同事知道您有交易或要去吃午餐。 Internet请求—单击oa按钮发送REST命令。 我们的Beta测试人员想要这样做,因此我们添加了它: VLC —使用Mac作为媒体中心? Flic控制它。 ChromeCast-单击按钮即可流式传输预定义的内容。 您的孩子会喜欢它。 XCode —自动进行黑客攻击。 Web浏览器—单击以打开一个站点。 如果您错过某个功能,请在此处提出一个想法。 就像在iOS和Android的Flic应用中一样,您可以将多个Flic按钮连接到Mac。 每个Flic可以单独配置为在单击,双击并按住时执行多个命令。 在此设置中,我有一个绿色,白色和绿色的Flic(全部安装在我的外部屏幕上),一个用于控制办公室照明的小部件以及一个用于执行此操作的小部件。 访问Mac通知中心中的小部件。 如果您已经有了Flic,那就对您有好处! 新的Mac应用程序可在此处免费下载。 如果您还没有Flic,请在这里购买,或尝试不使用Flic的Mac应用中的小部件。 将我们的专业知识带入新平台 当我们在2013年发明智能按钮时,我们想创建一种工具来节省人们的时间并降低技术的复杂性。 我们考虑了几个用例。 将Flic放在家里,以控制灯光和音乐。 穿Flic发送求救消息或告诉RunKeeper开始跟踪锻炼情况。 给奶奶按钮,让您更轻松地打电话。 从远处拍摄智能手机照片。 我们提出了数百种应用程序和可通过按钮进行控制的事物,并构建了有史以来最广泛的应用程序之一,它原生存在于iOS和Android上,几乎实现了客户希望按钮所需要的所有功能。 现在,我们将所有内容连同FlicLib一起带到Mac上-可能是那里最好的蓝牙低功耗库。 希望很快会添加许多新功能,如果您有任何疑问,请随时与我们联系。 爱,弗利奇团队

核心数据基础

决定任何iOS应用程序性能的一个重要因素是其对搜索查询的响应能力。 它响应越快,性能越好。 成功的搜索结果取决于用于存储应用程序数据的数据库的效率。 您可以将Core Data视为在iOS,macOS,tvOS和watchOS应用程序中保存,跟踪,修改和过滤数据的框架,但是Core Data不是数据库。 核心数据使用SQLite作为持久存储,但框架本身不是数据库。 核心数据的功能远不止数据库,例如管理对象图,跟踪数据的变化以及更多其他事情。 核心数据可帮助您构建代表应用程序状态的应用程序模型层。 核心数据可以将模型对象的状态持久保存到磁盘。 核心数据关注对象,而不是传统的表驱动关系数据库方法。 在存储数据时,实际上是在存储对象的内容,其中对象由继承NSManagedObject类的Objective-C / Swift类表示。 一个典型的应用程序将几个对象一起使用,形成一个对象图。 核心数据和SQLite之间的区别 SQLite本身就是一个数据库,就像我们拥有MS SQL Server 。 但是CoreData是类似于ORM (对象关系模型)的框架,该框架在database和UI之间创建一个层。 它speeds-up交互process ,因为我们不必write queries ,只需使用ORM并让ORM处理后端即可。 核心数据将对象图保存在内存中。 这意味着,只有将记录加载到内存中后,它才能对记录进行操作。 这与在数据库上执行SQL查询有很大不同。 如果要删除数千条记录,Core Data首先需要将每条记录加载到内存中。 另一个限制是核心数据的线程模型。 该框架期望在单个线程上运行。 核心数据具有3个关键对象: 托管对象上下文 托管对象模型 持久性商店协调员 永久存储(存储) 设置永久容器 使用NSPersistentContainer设置核心数据栈 在上一教程中,您了解了Core Data堆栈和涉及的类。 在本教程中,我们将学习…… cocoacasts.com 动手使用Xcode piyush23dez / Swift4_CoreData_Demo Swift 4中的核心数据基础。通过在 github.com 上创建一个帐户,为piyush23dez / Swift4_CoreData_Demo开发做出了贡献。 核心数据中的实体关系 […]

Mustachio先生可在iOS上下载!

最初于 2016年10月15日 发布在 shobhitsamaria.com 上。 Mustachio先生已到达iOS App商店! 当游戏最终在App Store上发布时,您会获得令人难以置信的感觉! 该游戏已在商店中发布,并且在第一天就自己播放了1500多个网格。 这给了我极大的鼓舞和相信,这是朝着正确方向迈出的一步。 但是这项工作还远远没有结束,我真的很希望听到社区中有关如何进一步改进游戏的信息。 我正在进行一些更新,但是来自玩家的实际反馈至关重要。 我希望大家尝试游戏并提供评论 。 Mustachio先生现在也在ProductHunt上 。 如果您喜欢这款游戏并觉得值得,那就给它一个赞 ! ‘先生。 《 Mustachio》的核心是一个小型而简单的游戏。 我刚刚使用了基本的加法减法概念,将它们放在网格中,以几种颜色抛出,并以某种方式设法将其与胡须😀:D关联起来。 希望它是一个有趣且具有挑战性的游戏。 它既可以用于教育目的,也可以用于脑部训练 。 尽管年轻人可能会更喜欢它,但游戏确实提供了4种不同的难度级别 ,因此各个年龄段的人都可以享受它! 当前,似乎有更多的人正在使用更简单的模式。 我希望更多的人能够在困难难度级别接受挑战the 我整理了一个小的Presskit ,可在网站上找到。 通过此链接可以随时与我联系 。 或直接发送电子邮件至contact@shobhitsamaria.com。 或者,您可以在Twitter上打我- @samzgamz 。 期待您的回音。

从零到英雄:ImmobilienScout24 III上本地应用程序开发的故事

这是由Immobilienscout24的移动工程师Iyad Tamer Agha撰写的由三部分组成的本地应用程序开发@ immobilienscout24系列的最后一部分 。 随时阅读第1部分和第2部分,以获取对该主题的更多见解。 非技术措施 技术方法和工具对于确保移动应用程序的质量至关重要,尽管某些非技术性措施可能会导致检测软件错误的时间更早或根本没有发生。 结对编程:我们团队中已建立的一种实践称为结对编程,结对编程是指两个程序员共同工作以共同承担编程任务。 四眼原理导致对编写代码的更多控制和更少的错误。 通过成对工作,将对代码进行更详细的讨论,从而获得更可靠的软件。 协同工作还意味着可以在团队中更好地共享知识。 经验表明,结对编程的另一个副作用是,与单独工作的同事相比,串联工作的同事被打扰的可能性较小。 Mob编程:我们团队中也使用过的成对编程的扩展形式,即mob编程,其中不仅有两个开发人员来完成一项任务,而且整个团队也一起来处理代码。 当团队希望将新功能集成到应用程序中时,该方法被证明是成功的。 这将导致团队内部就该功能代码的共同确定原则达成共识。 代码审查:确保代码质量的另一种方法是代码审查。 实施一项新功能后,团队中的一个或多个开发人员将仔细检查代码。 目的是识别任何编程错误,并检查是否遵守了编写代码的内部准则。 这也鼓励团队内部的知识共享。 我们劳动的成果 首次发布仅一年后,我们的努力就获得了回报。 发布后的第一年,我们有849,000个应用程序下载,这个数字比上一年增加了15%。 我们的App Store评分从3星提高到4星,反映了用户满意度的提高。 这些年来,团队学到了很多东西。 关键课程是: 质量不仅仅是一个技术问题 :结对编程和代码审查之类的实践与对软件质量进行持续改进的技术措施同样重要。 用户永远是对的:如果用户决定应用程序应提供哪些功能,则提供错误内容的风险非常低。 少即是多:一个好的应用不是包含所有可能功能的应用。 删除很少使用的功能并改进常用功能是值得的。 四个星期的发布周期:尽管该应用适合每两周冲刺后发布新功能,但事实证明,最好是四个星期。 这为用户提供了足够的时间来评估新功能,并且团队有机会评估发布的成功并采取适当的措施。 我们的未来方向 大多数基于软件的公司开始与小型团队一起开发移动应用程序。 但是,随着时间的流逝,它们的使用变得如此广泛,以至于对于某些产品来说,大多数流量已经从移动应用程序中产生了,例如ImmobilienScout24就是这种情况。 由于移动应用程序的快速增长,负责移动开发的中央团队的模型已不再足够。 因此,我们的未来计划是在功能团队中扩展移动开发。 我们将iOS应用程序划分为单独的软件组件(模块),以便不同的团队可以彼此独立地开发自己的应用程序需求。 我们期望减少日益重要的移动应用程序的上市时间,因为速度是使自己在竞争中脱颖而出的关键因素。

实用的iOS应用架构

最近,我一直在阅读许多有关应用程序体系结构的文章。 有很多这样的文章,有很多不同的见解和解决方案。 开发人员分享他们的经验,优缺点可能会帮助我们决定在未来的项目中走哪条路,这是很好的。 我同意,有许多很好的架构,经过精心设计,并具有很好的关注点分离,可以解决其他方法的弊端。 但是,我也认为没有适合所有项目的应用程序架构。 我们如何衡量架构对项目是否有利? 好吧,我认为此评估中有几个相关参数。 评估架构 首先,应将应用程序的组件合理组织和分离。 他们不应该对其他组件的内部细节了解太多。 其次,正如鲍伯叔叔所说的那样,体系结构应该对项目的业务领域“尖叫”。 它是运输应用程序吗? 也许一个金融机构? 这是您从项目中获得的信息,只需以新手的身份快速浏览一下代码即可。 拥有不言而喻的架构对于维护和增长产品至关重要,尤其是在增加人员时。 然后,我们当然具有可伸缩性。 添加更多功能有多容易/难? 拥有一个优雅的解决方案可能会在将来为我们节省大量时间和金钱。 另一个参数是架构如何适合业务领域的要求。 它是繁重的数据驱动的应用程序吗? 它有很多需要用户输入的表格吗? 我们将要构建的应用程序的复杂性是什么? 是“ 5个屏幕”应用程序还是“ 50个屏幕”应用程序? 需要考虑的另一件事是开发团队的效率。 团队能否迅速了解新架构和可能不同的概念? 他们将能够独立处理功能而不会阻塞自己吗? 想象一下,只有一个故事板的架构,团队中的每个人都必须在用户界面上工作。 合并地狱等待发生。 测试是体系结构决策中的另一个重要元素。 我们要测试哪些关键组件? 在测试方面,我属于认为必须只测试值得测试的零件的小组。 我不喜欢做很多无用的测试,只是增加了代码覆盖率。 代码覆盖率只是一个欺骗性的统计信息。 您可能有90%的测试覆盖率,但是错过了关键部分。 在另一个极端,我看到了设计完美的项目,这些组件具有很好的隔离性,覆盖率为零。 在决定应用程序体系结构时,这使我想到了另一个关键部分-上下文。 项目的截止日期和预算是多少? 我们必须在质量(交货时间)上进行哪些权衡? 工程师需要更多时间以最优雅的方式设计和实施项目,而销售则需要更快的时间。 每个人都有自己的利益,我们必须意识到双方的平衡。 低质量的产品不会持续很长时间,但是市场上可能不再需要后期产品。 这就是为什么我认为在进行体系结构决策时,我们需要务实,中立和对全局的理解,而对我而言,这是做出此类决策的动力。 我们不需要偏向任何一种方法,也不应抛弃其他方法。 这只会限制我们的工具集,并在做出决策时缩小我们的可能性。 好老的MVC 我很困惑为什么这么多人只是放弃了Model-View-Controller模式。 他们代表Massive View Controllers。 它不适用于大型项目。 好吧,我已经看到(并从事过)非常大的项目,这些项目很好,干净且可维护,并且遵循Model-View-Controller。 我们有很多概念和模式可以帮助我们减小视图控制器的大小,例如委派,组合,依赖注入,协议,纯函数,服务/实用程序类,导航中心。 有了这些技术,测试也不是那么困难。 […]

运行时– Sam Wuu –中

为什么需要运行时: Objective-C是⼀门动态语言⾔,它替换⼀一些⼯作放在代码运⾏时才处理⽽并⾮编译时。也就是说,有很多类和成员变量在我们编译的时是不知道的,⽽在运⾏时,我们所编写的代码会转换成完整的确定的代码运⾏。 因此,编译器是不够的,我们还需要⼀个运⾏时系统(运行时系统)来处理编译后的代码。 苹果和GNU各⾃维护⼀个开源的运行时版本,这两个版本之间都在努⼒保持⼀致。 运行时常用接口方法 NSObject类定义的方法 运行时库函数的直接调用 运行时相关术语的数据结构 SEL ID IMP 运行时消息发送和消息转发 消息发送: [people writebook:@”156″];会被编译成: objc_msgSend(people, @selector(writebook:), @”156″); objc_msgSend的具体流程如下: 通过isa指针找到所属类 发现类的缓存列表 ,如果没有则下一步 发现类的“ 方法列表 ”(class_method_list) 如果能找到与选择子名称相符的方法,就跳至其实现代码 找不到,就逐步继承体系继续向上查找 如果能找到与选择子名称相符的方法,就跳至其实现代码 找不到,执行“ 消息转发 ”。 消息转发 : 动态方法解析:先问接收者所属的类 ,你看能不能动态添加个方法来处理这个“未知的消息”? 如果能,则消息转发结束。 + (BOOL)resolveInstanceMethod:(SEL)selector // selector : 那个未知的选择子 // 返回YES则结束消息转发 // 返回NO则进入备胎 后备接收者:动态方法解析失败,则调用这个方法 – (id)forwardingTargetForSelector:(SEL)selector // selector : 那个未知的消息 // 返回一个能响应该未知选择子的备胎对象 […]

iOS版Painnt简介

欢迎! 感谢您安装Painnt。 我们做了很多工作,为您提供了功能强大且易于使用的工具,可将您的照片真正变成精美的艺术品。 以下是一些基本步骤,可帮助您逐步成为一名高级数字艺术家。 对于我们有任何本文未解决的问题吗? 请联系feedback@moonlighting.io ,我们很高兴收到您的来信! 使用Painnt基本上需要4个步骤: 选择您要使用的样式 选择您的输入照片 预览和调整样式 保存并分享您的结果 警告 ! 使用Painnt可能会上瘾,并且您可能会被困几个小时! :)。 让我们详细介绍这些步骤。 1.选择一种风格 在主屏幕中,您可以浏览可用的不同样式。 任务是选择您喜欢的一个! 新样式将首先显示在主屏幕上,如果向下滚动,则会在类别(马赛克,经典,三重奏等)中找到它们。 注意:某些样式仅供订阅,并带有Gem图标标记。 对于本文,我们选择了“葡萄酒”样式。 2.选择您的输入 屏幕中间会出现一个弹出框,您可以在其中选择导入照片的来源: 照片库:从相机胶卷中选择照片 拍照:打开相机并拍摄照片以进行造型 画布:对任何绘图进行涂鸦或草绘,然后对其应用样式(仅限订阅) 选择后即可裁剪照片 拖动白色选择角以裁剪图像。 选择第三个图标(“完成”之前)以更改裁剪比例(正方形,原始,16:9等),或点击圆圈箭头以更改图像。 3.预览和调整样式 在下一个屏幕中,Painnt允许您自定义每种样式的设置并观察照片的变化。 专家提示:如果您只想跳过此步骤,只需点击右上角的“保存/共享”图标即可继续保存和共享您的结果。 Painnt是一个PRO工具,并提供许多设置来调整照片的外观! 您可以通过向下滑动并滚动预览照片下方的白色区域来查看所有设置。 在此处找到备忘单,以了解每种设置如何修改您的照片。 专家提示:您可以在预览照片和设置之间调整分隔线,以调整更多或更少的空间。 所做的更改需要一点时间才能应用,因此,如果您移动滑块,则需要一到两秒钟来进行更新。 输出将确定最终艺术品的尺寸。 这始终取决于原始图像的大小和设备的处理能力-但通常输出的大小将是: 中:700像素 高清:1200像素 FHD:1920像素( 仅限订阅 )。 4K:4000像素( 仅限订阅 )。 来源:输入的原始大小( 仅 订阅 )。 专家提示:我们有输出尺寸/高清指南,供您参考。 当您准备好查看最终结果时,请点击屏幕右上方的“保存/共享”图标以创建您的杰作。 […]

代客击败OS X钥匙串访问控制列表零日漏洞

我们如何使用测试驱动的开发来复制攻击向量并针对它加强代码 抬起头,我们已经搬家了! 如果您想继续了解Square的最新技术内容,请访问我们的新家https://developer.squareup.com/blog 由 Dan Federman 撰写 。 世界着火了 6月17日,The Register报告说,iOS和OS X钥匙串中存在一个零日漏洞,该漏洞破坏了钥匙串中存储的安全数据。 该文章声称,写入到钥匙串的数据可以被恶意应用程序读取。 在Square,我们编写可转移资金的iOS代码。 安全始终是我们的头等大事,我们非常重视这些要求。 如果这篇文章的主张是正确的,那么世界就着火了。 在太平洋标准时间上午8点过后,当我们意识到该漏洞时,我们立即打开了描述该攻击的文件。 我们发现该攻击的工作方式如下: 恶意应用会在钥匙串中搜索良性应用编写的密钥。 恶意应用程序可以看到密钥存在,但无法读取关联的秘密值。 恶意应用会删除良性应用编写的密钥。 然后,恶意应用将密钥重新添加到不包含值的钥匙串中,并将自身和良性应用添加到密钥的访问控制列表(ACL)中,从而允许恶意应用读取良性应用随后写入这些密钥的所有机密信息。 在这一点上,我们可以松一口气:访问控制列表仅存在于Mac OS X上,而不存在于iOS上,因此尽管出现了头条新闻,但我们的应用程序并不容易受到攻击。 但是,两周前,我们刚刚开放了开源的Valet,这是一个跨平台的钥匙链包装器,其OS X组件很容易受到攻击。 这是我们无法接受的,因此我们加强了代客抵御这种攻击的能力。 有毒的工具 Apple的钥匙串仅提供三种用于更新钥匙串的工具:添加,更新和删除。 但是我们现在知道在OS X上,更新本质上是不安全的。 我们不能相信钥匙串中的现有钥匙没有受损的访问控制列表。 因此,我们仅需添加和删除即可。 解决方案似乎很明显。 更改钥匙串中某项的值时,与其更新现有的钥匙串条目,不如删除现有的项然后添加一个新项。 但是Apple的文档非常清楚:请勿删除然后添加-始终更新。 为什么? 因为“ [删除钥匙串项目时,您将丢失用户或其他应用程序添加的所有访问控制和信任设置。”虽然听起来不祥,但这正是我们想要的效果。 更好的是,此警告不适用于Valet,后者使用安全的共享访问组而不是ACL在OS X和iOS上共享钥匙串值。 检验假设 我们的第一步是编写一个单元测试来检验我们的假设。 我们希望测试尽可能地模仿攻击。 因此,我们首先在ACL中具有多个应用程序的钥匙串中插入一个钥匙。 使用与测试VALValet相同的基本查询来添加此泄露密钥,以便我们的代客能够读取和写入该泄露密钥。 VALValet * valet = [[VALValet分配] initWithIdentifier:@“ MacOSVulnTest”可访问性:VALAccessibilityWhenUnlocked]; NSString […]

如何从iPhone空投到Mac和从Mac空投到iPhone?

在谈论空投之前,您需要了解空投。 什么是空投? 空投是Apple设备之间的共享功能。 Airdrop在iPhone和iPad中将蓝牙与Wi-Fi结合使用,而在Mac中仅使用Wi-Fi。 在本文中,我将指导您如何设置Airdrop以将文件从Mac共享到iPhone,反之亦然。 在进行任何操作之前,请检查以下要求。 Mac和iPhone之间的空投功能要求 Airdrop不适用于所有MacBook。 因此,您必须具有Airdrop支持的Apple MacBook和其他Mac计算机。 我在此处列出了按年份列出的Airdrop支持的MacBook和其他Mac计算机型号。 MacBook Air(至少2012年或更高) MacBook Pro(至少2012年或更高) iMac(至少2012年或更高版本) Mac mini(至少2012年或更高版本) Mac Pro(2013或更高版本) iPhone 5或更高版本 iPad Pro iPad(第4代及更高版本) 小型平板电脑 在Mac上准备空投 在Mac上打开一个Finder窗口。 点击“空投”。 单击“允许我被发现”,然后选择“所有人”。 4.打开Wi-Fi和蓝牙。 在iOs设备上准备空投 打开控制中心。 确保您已经打开“空投”并将其发现给所有人。 在iPhone和Mac之间共享文件,反之亦然 如果您完成了上述所有设置,请返回Mac计算机并单击“空投”。 然后,您将看到附近的空投用户。 现在,您可以共享文件,并将要共享的文件拖到窗口中的收件人的图像上,然后单击“发送”。 如果您不想接收共享文件,只需点击“取消”即可。 从iPhone到Mac的共享过程也相同,反之亦然。 现在,您可以使用Airdrop在iPhone和Mac之间共享文件。 但是有时候,您可能会遇到连接问题。 例如,找不到或搜索任何收件人。 如果您遇到此问题,请检查以下提示。 防火墙设定 如果您在Mac的防火墙设置中阻止了所有传入通信,则无法共享文件。 因此,您需要关闭防火墙设置。 转到Apple图标菜单,然后单击“系统偏好设置”。 转到“安全和隐私”。 在“安全和隐私”窗口中有四个菜单,然后单击“防火墙”选项。 取消选中“阻止所有传入通信”,然后应用“确定”。 现在,您可以在Mac计算机中查看所有可共享收件人的iOs设备。 结论 尽管Internet上提供了Airdrop替代软件,但这是在iOs设备和Mac计算机之间共享文件的官方方式。 我建议您使用Apple提供的官方方式。 […]

24小时内的应用程序:我的React Native体验

对于最终版,我删去了一些功能,而略过了其他功能,例如菜单栏,上/下投票动画以及最重要的是语音搜索。 这是一个有趣的小项目,I̶̶a̶m̶̶c̶u̶r̶r̶e̶n̶t̶l̶y̶̶d̶e̶b̶a̶t̶i̶n̶g̶̶o̶n̶̶w̶e̶t̶h̶e̶r̶̶t̶o̶̶o̶p̶e̶nlisht̶i̶n̶t̶l̶y̶n̶-̶ React Native是一个很棒的JS框架,用于构建应用程序,我已经利用该框架构建跨平台应用程序的功能开发了我的第一个功能齐全的android应用程序。 RN非常适合真正的基本应用程序,这些应用程序在应用程序商店中占很大比例。 对于游戏或其他广泛交互和自定义应用程序等其他热门游戏,坚持使用Swift / Objective-c或Java等本地语言将是您的最佳选择。 我肯定会越来越多地使用RN,看看在2017年将带给我什么。 ✌🏾 该项目现已在Github上开源 Apple拒绝了Urban Dictionary应用程序,因为它与现有应用程序过于相似。 🤷🏽‍