苹果的融合计划: MacOS 将加入「捷径」,Apple Watch 可用来「解锁更多」

还有一个多月,今年的苹果全球开发者大会(WWDC)就要来了。

这一次,让不同平台间的联系更紧密可能会成为一大主题。MacOS 将迎来更多更新。

9To5Mac 援引知情人士的说法称, 即将在 WWDC 上发布的 Mac 操作系统 macOS 10.15 将会加入可由 Siri 控制的「捷径」和「屏幕时间」功能。

知情人士称,苹果在 Mac 版「捷径」上的研发已经超过两年。和 iOS 一样,Mac 版「捷径」将有一个独立的 app,用户需要在 App Store 下载。它还支持用户定制 Siri 指令,以使用语音快速唤醒。

2 月份,彭博曾报道了苹果的内部代号为「Marzipan」(杏仁糖)的计划,该计划的目的是整合 iOS 和 macOS,具体为苹果将在 2021 发布一个新的应用开发套件,以便开发者创建同时适用于 iPhone、iPad 和 Mac 等不同设备的应用程序。

知情人士称,只有支持 Marzipan 的 app 才能接入 Mac 上的「捷径」。

另一个和 iOS 相似的功能是「屏幕时间」(Screen Time),这个功能在 iOS 12 正式引入。你可以看到不同时段使用手机的具体情况、具体软件使用时长、手机拿起次数以及通知次数等的分析。

除了对使用时间的统计,「屏幕时间」还可以帮助你治疗自己的「手机成瘾」,你可以对特定的应用或某个类别的应用(如社交软件)设置使用时间限制。对容易沉迷于手机的未成年人来说,家长进行这样的限制是非常有必要的。

Mac 的「屏幕时间」将和 iOS 的功能类似,系统的「偏好设置」中会增加这个选项。

在 iOS 12 中,iPhone 的「屏幕时间」已经可以通过 iCloud 和 iPad、iPod Touch 实现互通,这一次的更新将让这个功能更加完善。

关于 macOS 10.15 还有一个值得期待的变化:据 9To5Mac 得到消息,除了解锁 Mac,Apple Watch 将可用来进行更多的验证操作

2016 年的 WWDC 推出的 WatchOS 3 加入了解锁 Mac 的功能,佩戴 Apple Watch 的用户在靠近自己的 Mac 时,电脑能直接解锁。在 Mac 上使用 Apple Pay 时,用户也可以通过操作 Apple Watch 来完成支付。

目前,指纹识别在 Mac 上承担了更大的作用。在带有触控条的 Macbook Pro 和最新的 Macbook Air 上,用户可以通过 Touch ID 解锁电脑、支付、快速填充帐号密码等操作。

尽管 Apple Watch 可以在 MacOS 上进行哪些验证还不得而知,但一个概率很高的猜测是,它能够和 Touch ID 承担同样的功能。

苹果曾经在去年的 WWDC 上否认过打通 iOS 和 macOS,让两个平台的应用完成融合的消息,原因很简单:强行统一两个不同属性的硬件,会带来不好的体验。

不过,加强设备和平台间的联系,减轻开发者的负担是苹果乐见的事情。苹果可能会在今年的 WWDC 上发布一个新套件,开发者可以快速将 iPad 的应用移植到 macOS 平台上。

而把 Apple Watch 这个可穿戴设备作为用户的「身份证」,也是个非常有想象力的做法。苹果用户会在不同设备获得更自然、更统一的体验,也更加难以离开这个生态。

发表在 产品 | 标签为 | 留下评论

2019年初级程序员必备书单:《代码整洁之道》《重构》等

编者按:在程序员的职业生涯中,总是需要学习新知识(也许不光是程序员)。本文作者Khalil Stemmler最喜欢的学习方法之一就是看书,他总结了业内人士高度评价的9本书,希望能给程序员带来启发。原文标题Books that Junior Developers should read in 2019。

无论你是刚入行的新人,还是经验丰富的程序员,你都会意识到工作并非你提高自己编程技能和知识的最佳途径。

你在业余时间所做的事情、你掌握自己所学知识的方法……是这些因素最终决定你在这个行业能否成功。这就是为什么对我们程序员来说,增长的心态如此重要。

作为程序员,我们学习和改进的方法特别多,比如:结对编程、学习在线课程、参加聚会、更多的工作经验、做项目和联系导师。

我个人最喜欢的学习方法之一是:选择一本不错的书看,试着从那些在这个行业浸淫多年的人那里学习一些东西。

这都是我的个人建议,是我认为所有程序员(尤其是初级程序员)都应该在某些阶段来阅读的书目。业内专业人士高度评价这几本书,它们有可能对你的工作质量和你的发展、学习速度产生深远影响。

其中一些书和技术细节没关系,而更多地关注于优秀程序员也应当重视的人际关系和专业性,它们为你提供了一些实用规则。

  1. 代码整洁之道

作者:Robert C. Martin(Uncle Bob)

在你克服了开发的基本挑战,逐渐得心应手地用写代码来解决问题之后,最好看看这本书。事实证明,写出可以成功运行的代码实际上是比较容易的,最难的部分是让你的代码可读性高,这样,其他人就能轻松理解,方便未来的修改。

还记得你上一次必须看这种奇葩代码是什么时候吗?

鬼知道它到底是干嘛的啊。这样的代码可能可以运行,但当我们需要修改它的时候,我们必须祈祷写这几行代码的人还在公司,祈祷他们能够以某种方式破译这些可能已经运行了好几年的代码。

如果不注意代码的可读性和可维护性,我们最终只会得到这样的代码,每个人都不敢碰它,如果它崩溃了,我们就完了。

Uncle Bob的《代码整洁之道》通过比较整洁代码和不佳代码,教会你整洁代码应该是什么样的,并教会你如何将不佳代码转换为整洁代码。对于大多数人来说,这样的任务听起来小菜一碟,但是你会惊讶地发现,把一些简单的软件设计原则变成习惯,可以帮你写出更加专业和可扩展的代码。

我们是软件匠人。建造一座房子与建造一个应用程序在原则上没有太大的不同。我们需要注意细节,否则,如果一开始做得不对,将来要修复这些细节可能会花费不菲。

  1. 代码整洁之道:程序员的职业素养

作者:Robert C. Martin(Uncle Bob)

这本书不是一本技术书籍,它是一本教你成为业内专业人士的书——专业人士指那些在面对挑战、不确定性和压力时,将继续把开发软件视为一种工艺,并决心坚持自己的专业价值的人。

《代码整洁之道:程序员的职业素养》在评估、重构、测试、处理冲突、日程安排、避免疲劳等方面提供了很多实用的建议。这本书全都是值得信赖的建议,毕竟它的作者花了几十年时间做这件事。

它教给我们很多东西,最好的之一是:作为一名程序员,如何保持正直,何时说“不”,以及如何拒绝。

这是一本关于专业性的书。

  1. 重构 改善既有代码的设计

作者:Martin Fowler

Martin Fowler是我最喜欢的作家之一。首先是因为他很搞笑,他写书也特别Fowler,很搞笑。另一个原因是,他非常擅长用简单的话解释复杂的话题,而且可以说是非常简单,不会让读者感到疲劳。

《重构 改善既有代码的设计》是Ruby on Rails的创建者曾经推荐过的书,他说:你应该“在写另一行代码之前阅读”。Fowler能指导你重构一个简单的应用程序,并向你介绍了他在多年的咨询工作中收获的一些技术。

Fowler在书里展示了如何在编码和重构之间切换,告诉你应该多久提交一次代码、什么时候应该测试。我强烈推荐这本书。这本书的最新版本用JavaScript重写了代码范例,这对我来说是简直不能更棒了,因为它是我最喜欢的语言。

  1. 设计模式:可复用面向对象软件的基础

作者:Erich Gamma, Richard Helm, Ralph Johnson, & John Vlissides

这是一本关于设计模式的开创性著作。你可能会问,什么是设计模式?设计模式就是软件开发中常见问题的通用解决方案。如果你熟悉这些模式,你将发现你能够大大减少解决这些问题需要的时间。

良好的设计模式意识还能让你与其他程序员更有效地沟通解决方案。

这的的确确是本老书,但它仍然是当前最好的参考之一。如果你对这个话题感兴趣,想了解一些更新的东西,我还推荐Eric Freeman的《Head First设计模式(中文版)》

 

  1. 领域驱动设计 软件核心复杂性应对之道

作者:Eric Evans

要使大型代码库能够继续扩展,我们需要将代码合乎逻辑地分割成不同的部分。这样做的目的是对代码进行分区,使独立的团队能够在不影响任何人的情况下处理系统的这些部分。

支持代码向这一发展方向的基本概念是领域驱动设计(Domain-Driven Design,缩写DDD)。它是一种软件开发方法,将“问题域”(现实世界)中存在的问题建模为多个解决方案域。

如果代码库非常庞大,那么DDD就非常重要。大型企业部署DDD,将团队分配到公司代码库的各部分。

Eric Evan创造了术语“通用语言”,这个术语是开发人员、领域专家和领域中的任何其他用户或参与者之间实用的一种通用的、包罗万象的语言。通过使用通用语言,它可以确保最重要的领域概念被很好地理解,并在软件中建模。

这本书比其他几本书更具有技术性和挑战性,但是如果你熟悉这些概念,你就会很好地理解当今的大公司是如何保持代码库的可管理性和可扩展性的。

  1. 软技能 代码之外的生存指南

作者:John Sonmez

作为一名程序员,我们应该努力保持平衡。不幸的是,保持良好的平衡并不是大多数程序员拥有的品质。事实上,作为一名程序员,投资于你的学习、健康和整体幸福感是非常重要的。

“软技能”指的是编程能力之外的重要东西,比如生产力、职业目标和理财能力。Sonmez还探讨了投资、他在33岁退休的方法、黑客健身技巧和维持人际关系等内容,其中很多东西在编程界少有人涉及。

这本书的架构让你能在遇到问题时,立即翻到相关章节查阅。

  1. 架构整洁之道

作者:Robert C. Martin(Uncle Bob)

Uncle Bob第三次出现了,他的书确实很棒。

在学校里,很多人关注算法,但很少关注软件设计原则。我认为这有点不幸,因为在现实中,你不经常遇到那么多来自算法的挑战。相反,更常见的情况是:你将面临要求代码以模块化、灵活性强、可读性高的方式来组织的挑战,并且还要允许你在需要更改时快速添加新特性。

《架构整洁之道》关于基本的软件设计原则和模式,你将能够使用它们来应对这些挑战。

“整洁的架构”,谢谢Robert!

本书中最好的几个关键点是依赖关系的成本、稳定代码与非稳定代码的对比以及SOLID原则:一种编写代码的方法,使代码更容易理解、更灵活、更易于维护。

这本书其他非常有用的方面是“尖叫的软件架构”和“按组件封装”的概念,它们交给你如何组织模块,以便“尖叫”着告诉他人这些项目到底是干什么的。

这本书与领域驱动设计(DDD)密切相关,它通过使用“分层架构”或Uncle Bob所称的“整洁架构”(也称为端口和适配器)来实现。这是一本很棒的书,适合任何想要提升架构能力、想在高层次上有效地设计系统、以及要在微观层次上处理依赖关系的人。

  1. The Effective Engineer(高效工程师)

作者:Edmond Lau

时间是我们生命中唯一的、最有价值的资产,我们应该更有效地利用它。在工作中,我们很容易陷入困境,花费大量时间修复bug、浪费精力。高效的工程师能够在更短的时间内完成更多的工作,减少重复性工作。

我们可以通过一个叫做“杠杆”的框架来减少在重复性工作上浪费的时间和精力。

杠杆能够帮助你确定哪些工作的产出成果和投入时间比最差。这个框架适用于任何事情。

  1. 程序员修炼之道:从小工到专家

作者:Andrew Hunt & David Thomas

《程序员修炼之道》一书因易于遵循和理解而备受称赞,是一本应该被所有级别程序员放在桌面上的书。Andrew和David都是程序员,他们不仅从事编程多年,而且还在编程的时候浸淫于此,然后想找到做得更好的方法。

经过他们多年的反思,这本书介绍了一些在你的职业生涯中必须遵循的基本程序员哲学,比如:程序员应该有“一次性完成,或把它自动化”的哲学。

它包含了一些简单但细致的建议,在写新一行代码或开始一个新项目之前,你应该将这些建议牢记在心。

最后的话

作为一名初级程序员,书籍确实是提高知识和技能的最佳工具之一。书籍往往有很高的投资回报——毕竟编程还是很赚钱的😉

而这些只是当前最好的几本书,它们都不是真正的新东西,但都是编程多年来一直保持着的一般哲学和最佳实践。作为一名教授,我不得不说:“你完全能够在这个行业赚很多钱,你只需要阅读那该死的手册”。

你读过这些书吗?你觉得他们怎么样?你认为还有什么别的书也不错?请在评论中告诉我!

其他资源

这里列出了几篇非常优秀的文章,它们涵盖了上述书中的一些主题。如果你没时间看完一整本书,那你可以点开下面的链接看看,熟悉这些概念对你的编程生涯也很有帮助!

Refactoring.guru

https://refactoring.guru/

SOLID Design Principles

SOLID Design Principles Explained: The Single Responsibility Principle

DRY (Don’t Repeat Yourself)

https://en.wikipedia.org/wiki/Don%27t_repeat_yourself

NodeJS and Good Practices

https://blog.codeminer42.com/nodejs-and-good-practices-354e7d76362

Implementing the SOLID and the onion architecture in Node.js

https://dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad

Better Software Design with Clean Architecture

https://fullstackmark.com/post/11/better-software-design-with-clean-architecture

The Clean Architecture

http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

编译组出品。

发表在 研发 | 标签为 , | 留下评论

谷歌希望你可以用 Tasks 功能来管理所有的提醒事项

Google

Google Tasks(工作表)功能推出后,便受到不少人的欢迎,而为了将其进一步塑造为「G Suite 中待办事项的管理中心」,谷歌在稍早的更新中又为其加入了不少各方期待的改进。往后当你在网页版的日历中创建或编辑工作表项目时(你可以在日历的右方开启 Google Tasks 功能),你将会发现多出了一个「新增日期/时间」的选项,借此你就能为该项目设定单次或循环提醒啦。

当到了你所设定的提醒时间,桌面就会跳出通知。或者,如果你的 Android 或 iOS 设备上有安装 Tasks 的 app,你也会在手机或平板上收到通知。收到通知后,请记得要将其标记为已完成,否则隔天早上 9 点你可是会再次收到通知的。

Google

此外,这次更新后,你也可以从 Inbox、Gmail 、日历和谷歌助理导入提醒啰。往后在打开 Tasks 的 app 时,它将会询问你是否要将现有的提醒导入。当然,如果你想要的话,也是可以手动进行相关操作。你只要先造访日历,在右侧 Tasks 的菜单中选择「将提醒复制到工作表中」就可以了。但要注意的是,导入的动作只是将现有的提醒复制进来,之后对它们进行编辑,是不会同步影响到原本四散于各处的提醒的。毕竟,谷歌这回更新就是希望你使用 Tasks 来管理所有的提醒事项啊。

发表在 产品 | 标签为 | 留下评论

苹果开发中文网站Swift 5 将进一步减小 iOS 应用安装包大小

10年来,苹果开发者生态系统的最大变化是引入了 Swift 语言。在今年的 WWDC 上,我们将会看到另外一个巨大更新:在 Mac 上将支持导入第三方 UIKit 。

Swift 在2014年 WWDC 上宣布的。目前版本为4.2.1。Swift 从第一个版本以来,对用户影响最大的是 ABI 不稳定。这意味着在不同版本的 Swift 之间的代码不能兼容。解决方法是,将其兼容代码包含在 App Store 的应用程序中,这会使安装包变得很大。

在 Swift 5 中有很大可能解决 ABI 不稳定的问题。新版本支持 iOS12.2、 tvOS 12.2、watchOS 5.2 和 macOS 10.14.4 ,所有的这些版本目前都处于开发人员测试版中。当新版本的苹果系统的新版本向公众开放下载时,发布到 App Store 上,使用 Swift 5 开发的应用程序安装包将变小。

此外,另一个好处是,应用启动时间更快,之前是因为应用程序使用的每个动态库都时都会略微增加启动时间,但新版本中,操作系统把包含的库缓存在内存中,并给所有应用程序之间共享,从而使应用启动更快。

image.png

到底能够省多少空间呢?下面我们举个例子:

Apollo for Reddit的安装包大小为 35.7 MB,其中包括 7.5 MB 的 Swift 库,当更新到 IOS 12.2 的 Swift 5时,安装包大小减少 20% 以上,为 30 MB 以下;PCalc的安装包大小为 86.8 MB,包括 7.5 MB 的 Swift 库。当更新到 Swift 5 时,安装包大小将减少 9%,降至 80 MB 以下。

Chirp 的 Apple Watch 程序安装包大小为 28.8 MB,包括 11.6 MB 的 Swift 库。当更新到 Swift 5 时,安装包大小将减少 30% 以上,降至 20 MB 以下。

根据设备的不同,其大小和节省的空间也各不相同。

当然,上面这些情况都是假定开发人员使用 Swift 5 开发应用程序,同时,为了方便开发人员便于对现有的应用程序进行维护和版本迁移,Swift 5 提供了与 Swift 4.2 代码兼容的方法。

发表在 研发 | 标签为 | 留下评论

苹果开发中文网站8 年后重登王座,Python 再度成为 TIOBE 年度编程语言

全球知名的编程语言流行度排行榜网站 TIOBE 于昨日宣布:Python 成为 2018 年度编程语言,理由如下:

2018 年,Python 语言上升了 3.62% ,其次是 Visual Basic .NET(+3.20%) 和 Java(+2.69%) 。Python 已成为当今大学中最常被教授的首选语言,在统计、AI 编程、脚本编写、系统测试等领域均排名第一。此外,Python 还在 Web 编程和科学计算领域处于领先地位。

2003-2018 年度最佳编程语言:

image.png

可以看到,Python 上一次获得此荣誉,是在 2010 年。

其他值得关注的变化还有:

  • MATLAB —— 从第 18 名升至第 11 名
  • Kotlin —— 从第 39 名升至第 31 名
  • Rust —— 从第 46 名升至第 33 名
  • Julia —— 从第 47 名升至第 37 名
  • TypeScript —— 从第 167 名升至第 49 名
  • Ruby —— 从第 11 名降至第 18 名
  • Erlang —— 从第 23 名降至第 50 名
  • F# —— 从第 40 名降至第 64 名
  • Alice —— 从第 26 名降至第 66 名

TIOBE 预测,Kotlin 将有望在 2019 年得到快速普及,进入前20名。

image.png

TOP 10 编程语言 TIOBE 指数走势(2002-2018)

image.png

第 21-50 名的数据如下:

image.png

第 51-100 名如下,由于它们之间的数值差异较小,仅以文本形式列出(按字母排序):

  • (Visual) FoxPro, ABC, ActionScript, Alice, AutoLISP, BBC BASIC, bc, Bourne shell, C shell, CL (OS/400), CoffeeScript, Common Lisp, Crystal, cT, Elixir, F#, Forth, Hack, Icon, Inform, Io, J, Korn shell, LiveCode, Maple, Mercury, ML, Modula-2, Monkey, MOO, MQL4, MS-DOS batch, NATURAL, OCaml, Occam, OpenCL, OpenEdge ABL, Oz, PostScript, Q, Ring, RPG, S, Solidity, SPARK, Standard ML, Tcl, Vala/Genie, VBScript, VHDL

TIOBE 编程社区指数(The TIOBE Programming Community index)是编程语言流行度的指标,该榜单每月更新一次,指数基于全球技术工程师、课程和第三方供应商的数量。包括流行的搜索引擎,如谷歌、必应、雅虎、维基百科、亚马逊、YouTube 和百度都用于指数计算。具体的计算方式见这里:> https://www.tiobe.com/tiobe-index/programming-languages-definition/> 。

值得注意的是,TIOBE 指数并不代表语言的好坏,开发者可以使用该榜单检查自身的编程技能是否需要更新,或者在开始构建新软件时对某一语言做出选择。

更多榜单信息可查阅 TIOBE 官网

发表在 其他 | 留下评论