美文网首页
Weekly 1: # Leveling Up

Weekly 1: # Leveling Up

作者: 欧文睡不着 | 来源:发表于2018-01-13 19:18 被阅读0次

The iPhone X

John Gruber 在使用 iPhone X 两个月之后的评测。

文章开头回顾了一下上个世纪九十年代中期 Mac 的发展瓶颈,随着 Mac 的畅销 Apple 不停地往 Mac 系统里添加新功能,导致其系统越来越复杂,渐渐的将这个平台带入困境。

那时候的 Mac 系统跑单线程才是效率最高的,系统没有受保护的内存区域,意味着运行的每一个线程都可以在 RAM 的任意位置进行读写操作。(包括其他线程的内存空间和系统自己的内存空间)
对于当时 8Mhz CPU 和 128KB RAM (kilobytes!) 的硬件配置来说,让系统支持多线程也是不可行的,所以当时 Apple 面临的困境就是迫切需要对系统进行大改,在不打破现有软件生态环境的情况下进行系统升级(改革)是一件非常困难的事情。

Apple 的解决方案是在新的 Mac 系统里面运行着一套虚拟的旧 Mac 系统环境,才能使原来的软件能在新系统上正常运行。
Apple 需要开发者逐渐将自己的软件兼容到新系统,这个转换用了将近十年的时间才完成,整个过程对用户、开发者和苹果自己都非常痛苦。

作者举 Mac 的例子为了说明 iPhone X 也算是 iPhone 产品线一次空前的升级,但是由于 Apple 对 iPhone 生态圈的软硬件环境控制得很好,这次升级并没有像当年的 Mac 一样带来痛苦。
然后接下来的篇幅作者就全在细数 iPhone X 的各项革命性优点。

首先回顾一下 iPhone 十年进化的里程碑事件:

  • iPhone 4 (2010): Retina display.
  • iPhone 5 (2012): Aspect ratio changes from 3:2 to 16:9.
  • iPhone 5S (2013): Touch ID.
  • iOS 7 (2013): Cosmetic reboot of user interface.
  • iPhone 6 and 6 Plus (2014): Larger screens.

作者认为有两个版本的 iOS 11:iPhone X 上的 "iOS 11 X" 和其他机型上的 "iOS 11 Classic"。

iPhone Home 键可以实现的功能:

  • 锁屏时单击:唤醒设备
  • 解锁状态下的单击:退出到 Home Screen
  • 双击:多任务管理界面
  • 三次连按:Accessibility 功能的快捷访问
  • 手指轻碰:指纹识别解锁
  • 手指连续两次轻触(不按下去):唤醒 Reachability
  • 长按并按住:唤醒 Siri

取消 Home 键之后以上所有这些功能在 iPhone X 上的实现都交给了手势操作和侧面的实体按键,起初作者使用还不习惯,然而在使用了两个多月之后,作者问:"What's a Home button?" 😂
John Gruber 基本上全篇除了希望 Home Indicator 的视觉效果可以改成半透明的之外其它都是对 iPhone X 在每一个细节上的赞美。

Leveling Up — Learning New Skills

一个比较有经验的工程师问:“怎样学习才能掌握众多开发技术的细节知识?有什么进阶的学习方法?”

本文作者已经作为专业程序员工作了 23 年,结合自己的从业经验,总结出几项提升开发技能的学习方法:

  1. 大量地阅读。
    通过阅读书籍,博客,官方开发文档,让更多的信息去填充你的大脑。
    阅读不要只局限在自己常用或已经掌握的技术领域,也需要浏览一下之前从未接触过的框架和技术,或许当下你在项目中不会使用到它,但它可能潜移默化的会带给你一些开发上的灵感和考虑问题的不同角度。作者在项目开发之余自己就试着读了一些编译/调试方面的文档。
  2. 认真剖析程序执行过程,搞清楚各个框架或者模块之间是如何工作的。
    作者介绍了几款剖析程序的常用工具:DTrace,class-dump,Hopper Disassembler,Instruments。
  3. 做实验,Make your hands dirty.
    写大量的代码去验证新学到的知识,梳理出各个模块之间的联系和工作模式。
  4. 吸收。总结思考,然后再重复练习。

要想深入学习一项技能是一个非常非常漫长的过程。

Growing a Code Review Culture

Big Nerd Ranch 团队非常重视代码审查,这是一个很有价值的事情,在审查的同时可以相互分享知识,为项目提供最佳实践,为代码编写规范一套标准,这是参与代码审核的每一个人都可以学习的好机会。
要让代码审核长期有效执行下去,需要领导者把团队 code review 这种文化放到一个比较高的优先级。

代码审核需要做到以下几点:

  1. 要把代码审核当作开发流程的一部分,审核间隔周期要短,并且单次代码审核的时间要短,这样有利于程序员保持对代码的熟悉程度。
  2. 作为代码的作者,每次提交 PR 的文件数要少,提交的日志信息要描述清楚且逻辑连贯,使其具有可读性,并时刻注意保持代码整洁。
  3. 作为代码审核者,必须要是项目参与者,使得其对代码审核这件事有责任感。主持代码审核的主要目的是同时提高代码质量和程序员的能力。
  4. 代码审核者应该集中精力优化程序的逻辑和架构一类的事情,诸如代码格式化、单词拼写检查等可以自动化的事情就交给机器去处理吧。
  5. 代码审核的过程中,所有参与者应该积极思考总结,擅于提问比解决问题更有价值。

The Mac Pro has failed, and we don’t know what Apple will try next

Apple 高层公开承认 Mac Pro 产品失败,并在 2017 年 4 月做了一件不寻常的事情:苹果三个副总级别的高管和五个知名科技博客作者坐在一起讨论 Mac 产品线的现状。

这场讨论的中心是 Mac Pro:为什么苹果放弃了 Mac Pro 这款产品?

John Gruber 说目前在专业用户群体里有一套理论认为 Apple 其实已经不再关心 Mac Pro 的用户了,Apple 想要把每个人都转移到 iPad 上来。John Gruber 表示不赞同这套理论,但 Apple 在 Mac 产品线的一系列举措并没有显示出对 Mac 的未来有足够的信心。
Craig Federighi(Apple 软件部门资深副总裁)说 Mac 产品线仍然是 Apple 未来的重要组成部分,对其的研发资源投入也并没有减少。

( 然而失败的原因究竟是什么,这篇文章并没有说清楚。🤷‍♀️)

How Base64 Encoding Works

这篇文章介绍了 Base64 编码的基本原理,文章开头用 email 来作比喻解释为什么需要 Base64 编码。
Base64 是 MIME 标准。

Base64 编码主要分以下步骤:

  1. 将字符串 StringA 以每 3 个字符分为一组(即 3 个字节);
  2. 将这 3 个字符按 ASCII 表转换成对应的 3 个数字;
  3. 将这 3 个数字转换成二进制格式,占 24 位(3*8=24);
  4. 将这 24 位二进制数据重组,按顺序从高位到低位每 6 位分为一组,最后得出 4 组二进制数(4*6=24);
  5. 将这 4 组二进制数转换成 4 个十进制数,高位补零;
  6. 将这 4 个十进制数通过查找 Base64 编码表找出对应的字符,用 A~Z, a~z, 0~9,"+", "/" 这 64 个字符表示;

字符串 StringA 以每 3 个字符为一组重复步骤 2~6 直到字符串结束,通过查找 Base64 编码表得到的字符就是最后的 Base64 编码字符,如果字符串 StringA 的长度不是 3 的倍数,最后的 Base64 字符末位用 "=" 号填充。

举个例子,字符串 owen:

o w e n
ASCII 111 119 101 110
二进制 01101111 01110111 01100101 01101110 00000000 00000000
重组 011011 110111 011101 100101 011011 100000 000000 000000
十进制 27 55 29 37 27 32 0 0

Base64: b3dlbg==

EOF.

相关文章

网友评论

      本文标题:Weekly 1: # Leveling Up

      本文链接:https://www.haomeiwen.com/subject/lpfhoxtx.html