特色

Web 开发笔记

作为分类目录的一个补充,在这里按照功能类别对 Web 开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

HTML & CSS
JavaScript & jQuery & JSON & AngularJS
Python
PHP
SQL
XML
正则表达式
特色

.NET 开发笔记

作为分类目录的一个补充,在这里按照功能类别对 .NET 开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

Entity Framework

Web

特色

Java 开发笔记

作为分类目录的一个补充,在这里按照功能类别对 Java 开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

基本

线程

垃圾回收

其他

特色

Android 开发笔记

作为分类目录的一个补充,在这里按照功能类别对Android开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

基本

控件使用

资源调用

声音和图像

用户界面

活动 线程 服务

设备控制

SQLite

Android Studio

其他

特色

Android中文开发文档目录

开发者指南

 

API 指南

  • 简介
    • 应用程序基础
    • 设备兼容性
    • 系统权限
  • 应用程序组件
    • 意图与意图过滤器
    • 活动
    • 服务
    • 内容提供者
    • 应用程序小工具
    • 进程与线程
  • 应用程序资源
    • 概览
    • 提供资源
    • 访问资源
    • 处理运行中的改变
    • 本地化
    •  资源类型
      • 动画
      • 色彩状态列表
      • 可绘制资源
      • 布局
      • 菜单
      • 字符串
      • 风格
      • 更多类型
  • 应用程序 Manifest
    • <action>
    • <activity>
    • <activity-alias>
    • <application>
    • <category>
    • <compatible-screens>
    • <data>
    • <grant-uri-permission>
    • <instrumentation>
    • <intent-filter>
    • <manifest>
    • <meta-data>
    • <path-permission>
    • <permission>
    • <permission-group>
    • <permission-tree>
    • <provider>
    • <receiver>
    • <service>
    • <supports-gl-texture>
    • <supports-screens>
    • <uses-configuration>
    • <uses-feature>
    • <uses-library>
    • <uses-permission>
    • <uses-permission-sdk-23>
    • <uses-sdk>
  • 用户界面
    • 概览
    • 布局
    • 输入控件
    • 输入事件
    • 菜单
    • 设置
    • 对话框
    • 通知
    • Toasts 通知
    • 搜索
    • 拖拽与释放
    • 可访问性
    • 风格与主题
    • 自定义组件
  • 动画与图形
  • 计算
  • 媒体与相机
  • 位置与传感器
  • 连接功能
  • 文本与输入
  • 数据存储
  • 管理
  • Web 应用程序
  • 最佳实践

 

Android 设计

 

更新日期:2015-11-15

说明:限于时间、精力和个人水平,翻译进度有限,也可能存在不少谬误之处,欢迎指正。另外由于Android官方开发文档常常会随着SDK版本更新而更新,可能不能马上更新至最新版的翻译(甚至需要等待较长时间,目前以完成第一遍全部文档的翻译为最优先事项)。翻译的发布原则是一旦开始新的文章翻译随即发布,之后逐步完善,因此如果通过RSS订阅本博客,可能会收到仅有文首的翻译文章。

关于进行Android开发文档翻译的初衷,可以参见这篇文章,另外还有关于翻译的几点说明。值得高兴的是,似乎最近Android开发者网站已经能够在大陆被正常访问了(笑)。

本作品采用知识共享 署名-非商业性使用-禁止演绎 3.0 Unported许可协议进行许可。

最后 · 最初 ——索尼(Sony)Xperia XZ3 使用感想

去年9月,索尼在 IFA2018 发布了系列首款搭载 OLED 屏幕的 Xperia 智能手机 XZ3。恰好家里有手机换机需求,便首发购入波尔多红与森绿两台。这一次和以往不同,虽然在初期和平时也会经常借用,自己并非这两部手机的实际日常使用者。不过正因为此,本文的视角也会不同以往,更多基于对索尼没有特别偏好,对技术和数码兴趣不大的普通用户。由于 XZ3 与上半年的 XZ2 外形与配置十分相似,系统版本目前也同为 Android 9 Pie,因此本文对 Xperia XZ2 亦或有一定参考价值。

本文基于中国大陆地区所售 Xperia XZ3 写成,产品型号 H9493。本机支持主卡 4G 副卡 3G 网络双卡双待,完整支持中国移动联通双 4G 网络所有频段,国行固件支持移动联通电信的 VoLTE 网络,可在支持电信 VoTLE 的地区通话与收发短信,支持国内所有运营商的 2G GSM 网络,不支持中国移动 TD-SCDMA 3G 网络与中国电信 3/4G 网络。由于硬件一致,该型号可以与包括香港、台湾地区版本在内的系统固件通刷。

_

最后的 Ambient Flow

索尼移动在 MWC2018 上发布了采用全新设计语言 Ambient Flow 的智能手机 Xperia XZ2,并在年中推出同样设计语言的2018年度旗舰 Xperia XZ2 Premium。Ambient Flow 是之前 Loop Surface 设计语言的后继,然而,这是一个既不叫好也不叫座的设计,2018年下半年推出的 Xperia XZ3 则是该设计的最后一款机型。相比之前约三年一换的设计语言,Ambient Flow 在商业上是彻底的失败。不过,这并不意味着 XZ3 的设计毫无亮点。

Xperia 2018年新采用的设计语言,强调明暗变化与流性线条的 Ambient Flow
–图片引用自 https://www.sonymobile.co.jp/xperia/docomo/so-01l/design.html

Ambient Flow 的设计思想是技术与环境和人的融合共存,并以流动的形状和典雅的表面处理来体现这份和谐。

机身颜色方面,XZ2 选择了类比水面反射的流体银,表现夜晚湖面微光的流体白,深海中略带青色得深绿以及温和柔软得灰粉四色。Xperia XZ3 的色彩选择依然沿袭该理念,波尔多红、澈黑、银白与森绿四色的灵感皆来源于自然风光。

Xperia XZ3 提供了波尔多红、澈黑、银白与森绿 四种色彩
–图片引用自 https://www.sonymobile.co.jp/xperia/docomo/so-01l/design.html

Ambient Flow 另一大特征则是完全曲面的背面设计,可以很好地贴合手掌,提供比先前设计,尤其是全平衡设计(OmniBalance)更好的握持感。同时,系列经典的玻璃材质背面在复杂流线设计的加持下,实现了不同角度光线照射时机身颜色的细微变化,并呈现出独特的曲线,在2018年相当千篇一律的智能手机产品线中是一抹独树一帜的靓丽。

可惜的是,Ambient Flow 的真正魅力并不能从产品渲染图上体现
–图片引用自 https://www.sonymobile.co.jp/xperia/docomo/so-01l/design.html

Xperia XZ3 的 Ambient Flow 设计在 XZ2 的基础上进一步改良。边框厚度从6.5mm进一步压缩到3mm,因此,尽管中央最厚处仍有9.9mm,拿在手中的感觉却异常纤薄,毫无厚重感。158 x 73mm、193g 的机身尺寸和重量在同尺寸手机里也算不过不失。

Xperia XZ3 是系列首次采用曲面 OLED 的型号,屏幕两侧可以弯曲,既减少了左右边框宽度,又降低了两侧厚度。同时,为了增强观看内容时的沉浸感,正面面板皆为黑色

2018年也是各类所谓全面屏手机层出不穷的一年。屏占比(屏幕占机身正面面积比例)成为了业界炒作的热点,为了提高屏占比,采用各式各样的异形屏、增加额外的机械结构、削弱正面摄像头的规格与性能、减小扬声器的尺寸与功率、选择显示效果不佳但可弯曲的低端 OLED 来缩小上下边框尺寸…一切固有设计都可以为了屏占比这一个因素妥协,似乎屏占比就是一台智能手机的一切。尤其在互联网上,没有过分追求屏占比的厂商只能收到大量的嘲笑与贬低。

即使如此,索尼也没有盲目追求屏占比。高性能的可以在弱光环境下得到良好成像效果的前置摄像头、音量充沛的上下立体声扬声器,足够强度的防水 USB 接口,都是 Xperia 的坚持。在不降低硬件规格的基础上,XZ3 的上下边框依然控制在了较小的宽度,和2017年的 Xperia XZ Premium 不同,实际上手并不会觉得明显落后时代。如果没有在第一眼就被具有质感的做工和变化的光泽所吸引的话。

屏幕下方的 SONY Logo 较为暗淡,下方是大体积的扬声器和麦克风与 USB Type-C 接口。索尼比较有趣的一点是,自信之作的 Logo 通常不明显,无奈之作的 Logo 则会明显较为突出(笑)

Xperia XZ3 正面上下边框皆为约1cm宽,在实际使用时不但不会觉得多余,反而无论是单手还是双手持机,拇指都有更充分的面积稳定机身,而不会造成误触。当然,这个宽度还有一些可以改善的空间,但不应成为否决 XZ3 的理由。

屏幕上方则是大尺寸的1320万像素 Exmor RS for mobile 摄像头与听筒,可以看到机身顶部还有另一个麦克风以及 SIM/SD 卡槽

Ambient Flow 的秘密在机身背面。XZ3 在背面钢化玻璃之下施加了多达四层不同反射效果的色彩涂层,于是,随着光线照射和观察角度的不同,机身将展现出出截然不同的色彩,行云流水,宛如光线在流动。

Xperia XZ3 在环境光照射下呈现出的流光溢彩

Ambient Flow 的曲面设计并不只有设计性,更具有功能性。随着智能手机相机功能越来越强,摄像头传感器的尺寸与厚度也越来越大。摄像头如果位于顶部,要么和屏幕组件重叠,镜头明显突出机身,要么和屏幕错开,屏幕上方不得不留出大量空间容纳摄像头。如何在避免用户感到机身厚重的同时,不突出镜头地容纳大型摄像头?Ambient Flow 的答案是把传感器放到机身中间。

可惜的是,综合来看,这一设计依然存在问题,并没有得到认可。Ambient Flow 设计注定了系列经典的侧面指纹识别要被舍弃。基于侧面指纹在美国市场受惠普公司专利限制的传言,Ambient Flow 设计的初衷就是为了回避侧面指纹也不一定。不能使用侧面指纹,也不打算使用尚不成熟,识别率相对较低的屏下指纹识别,毫无特色的背面指纹就成了唯一的选项。

Xperia XZ3 的摄像头与指纹传感器都位于背面中央,在避免摄像头镜头过分突出的同时,实现了纤薄的持机手感

然而不知为何,XZ3 的指纹传感器位置较为微妙,手指并不能下意识触及。在不看手机背面的情况下,误触到摄像头镜头是常有的事。重要的是,背面指纹无法在手机正面朝上放于桌面时使用,自己过去批评过的设计,最终还是被用在了 Xperia 上。需要多久才能适应因人而异,但对于习惯了多年侧面指纹的老用户来说,这无疑是非常痛心的倒退。

背面下方隐藏了 Xperia 的 Logo。防水 USB 接口部分特别做了加强,不会出现某些产品为了追求轻薄 但USB 口边框过细,容易断裂的问题

总的来讲,Ambient Flow 是一个失败。它也许由规避侧面指纹专利问题而被提出,又或是穷则思变,为了摆脱过往方正外形的束缚。它努力保留了 Xperia 系列一贯的双扬声器、高质量前置摄像头等特色,却也牺牲了指纹解锁体验,并失去了大量系列爱用者的支持。这或许是2018年 Xperia 销量继续雪崩的一个重要原因。

不过,值得一提的是,两位非 Xperia 粉丝的女性用户对 Ambient Flow 设计的评价倒是高于以往,认为曲线设计比棱角分明的方正机身更美观,比过去的手机更打动她们。这么一想,去年凄惨的销量更多是因为索尼移动在全球大部分市场的营销与渠道都不入流也说不定。但无论如何,Xperia XZ3 给 Ambient Flow 设计画上了休止符。

_

最初的 OLED

除了外形,Xperia XZ3 的特征恐怕就是融汇索尼 Bravia 技术经验的系列最初的 OLED 屏幕。

Xperia XZ3 搭载了一块6英寸18:9比例的 QHD 分辨率 HDR OLED 屏幕(分辨率
2880×1440),新开发了为 OLED 优化的图像处理引擎,充分发挥了 OLED 的显示性能。

和以往的旗舰 Xperia 旗舰一样,XZ3 也采用了 源自 Bravia 的 TRILUMINOS™ Display for mobile 图像处理引擎
–图片引用自 https://www.sonymobile.co.jp/xperia/docomo/so-01l/display.html

OLED 屏幕从显示原理上可以实现接近纯黑的黑色与极高的明暗对比,理论上可以实现更优的显示效果。但实际上,OLED 并非完美无缺。

智能手机用的 OLED 屏幕出现已久。最初的 OLED 饱受易于烧屏和色彩过饱和的困扰,尽管对比度高,实际观感却始终差强人意。近年来 OLED 技术不断成熟,成本也持续下降,三星和 LG 作为 OLED 面板行业的领军人物,不但在自己的产品上积极应用,也为其他厂商提供元件。然而,不同成本的 OLED 屏幕显示效果依然天差地别。在高端产品上,高品质的 OLED 面板提供了符合预期的高画质,但在中低端或是主打性价比的产品上,廉价 OLED 的显示效果简直惨不忍睹,色彩浑浊、偏色明显、暗部存在色块。

Xperia XZ3 这次采用的是 LG 提供的 POLED 面板,再经过自家经验技术调校,通过传承的 TRILUMINOS Display for mobile 广色域技术与 X-Reality for mobile 图像复原技术等,实现符合索尼水准的显示画质。此外,过去 HDR 机型中的动态对比增强及 HDR 升格等功能依然健在(目前仅支持 YouTube、Amazon prime video、Netflex 等部分应用), 为观赏影视作品提供优秀体验。

随着 OLED 的普及,频闪问题也逐渐得到重视。简单说,受限于技术,移动设备上的 OLED 屏幕在低亮度下不得不以低频率闪烁以维持正常的色彩显示,同时不影响屏幕寿命。苹果、三星等厂商的高端产品也只能做到高亮度下使用对眼睛损伤较小的 DC 调光或高屏 PWM 调光,当亮度降低到一定程度则切换至交易产生疲劳甚至不适的低频 PWM 调光。Xperia XZ3 也不例外,它以亮度的约70%为阈值切换调光方式。这是相对妥当的做法,但仍然没有避免 OLED 的弊端。

屏幕显示效果在网络文章中难以描述。如之前文章所说,用相机拍摄的照片距离肉眼所见有差距,尤其是难以表现真实的亮度与对比度,实际价值并不高。如今色温偏暖偏冷偏艳偏淡都可以通过软件调节,拿几台不同的设备放在一起合照,也说明不了问题。因此,这次对 Xperia XZ3 的屏幕依旧采用主观描述,一切都是个人的主观见解。

在去年国内外各大厂商的旗舰智能手机上市后,自己逐一去店头试用与观察,尤其是与 Xperia XZ3 的屏幕显示效果比较。简单来讲,Xperia XZ3 的 OLED 屏幕显示效果符合其定位,体现了 OLED 的特长,但也没有避免 OLED 的缺点。

在去年下半年推出的产品力,屏幕实际观感优于 Xperia XZ3 的智能手机恐怕只有苹果的 iPhone Xs 系列和三星的 Galaxy S9 系列,尤其是 S9,确实是 OLED 的标杆。在 S6 之前,自己一直对三星的 OLED 屏幕嗤之以鼻,严重的蓝绿过饱和与浑浊的色彩,完全抵消了 OLED 高对比度带来的优势。从 S6 开始,OLED 的进步肉眼可见,到了今天,显示效果已经充分优秀。过去存在的问题被遗留到了两三千元价位的产品上。

Xperia XZ3 的 OLED 屏幕经过独家调整后,在色彩等方面表现出色,却和其他一些产品一样存在同样的问题——不规则的像素排列使得屏幕精细度远低于像素密度。因此,尽管 XZ3 的屏幕分辨率高达 2880×1440,实际看起来却仅与 FHD(宽1080)相当,甚至由于钻石型的排列,水平线条需要子像素渲染,不但图案发虚,还会引入杂色。当观看距离较远时,这个问题并不显眼,优秀的色彩和明暗比占了主导,赏心悦目,但如果视力较好或观看距离较近,就会察觉问题。

个人来讲,XZ3 这块屏幕并非无可挑剔。在同价位产品中,它的色彩、屏幕精细度以及频闪控制,它都做到了胜人一筹,比中低端价位产品更是优势明显。然而,精细度的退步以及自己能感知到的频闪,最终还是抵消了 OLED 带来的好感。只能说,在目前的 OLED 屏幕中还算不赖,但还无法满足自己的标准。

_

依然的 Motion Eye

1920万像素的1/2.3寸 Exmor RS for mobile 图像传感器(像素间距1.22μm)、BIONZ for mobile 图像处理引擎、25mm广角的F2.0光圈 G 镜头。Xperia XZ3 的相机方案依然是老三样。当然,处理器和算法每年都在升级,但随着多摄像头系统的日益普及,在广角、长焦等差异场景下,Xperia 的相机竞争力受限也是事实。

Xperia 从2012年就采用的基于 AI 的高级自动模式在 XZ3 上健在,可以实时识别场景,并结合用户的运动状态(固定、移动、步行等),为美食、夜景、人像、文档、逆光、风景、微距等13种不同场景自动选择最适合的拍摄模式。基于笑脸或运动轨迹的预判拍摄、基于运动模式识别的相机快速启动等功能增强了 XZ3 的出片成功率。

从 Xperia XZs 开始提供的基于硬件的960帧超慢速录像功能的分辨率提升至 FHD(1920×1080),也算是处理性能提升后的得益。这个功能在 XZ Premium 的使用感想中做了不少介绍,不过日常使用率并不高。

视频录制依然是 Xperia 的强项,XZ3 的前后摄像头都支持源自 CyberShot 的 SteadyShot™智能主动模式(五轴防抖),视频稳定性领先。防失真快门、4K HDR 视频录制、ISO 12800 微光拍摄和 ISO 4000 微光录影也算是 Motion Eye 的传统特长,就此不多展开。

以下样片全为 XZ3 直出,没有利用辅助工具的旅行随手拍。部分照片有裁剪,并统一缩小为高度1080像素,90% JPG 压缩,无其他后期处理。

高级自动模式-识别为夜景,得益于算法升级,XZ3 对噪点的控制比一年前的 Motion Eye 大幅改进
高级自动模式-识别为风景,白天光线充足时细节丰富
高级自动模式-识别为美食,食物的色泽得到了强调
高级自动模式-识别为风景。XZ3 对风景的算法十分讨巧。在同一位置自己也用了 RX100m2 和 A6000 拍摄,在直出条件下 XZ3 的色彩还原最佳,在 OLED 屏幕上回放时效果惊艳
高级自动模式-识别为风景。继续 XZ3 的强项,水面和天空的表现恰当,没有出现有些厂商过度夸张彩度导致观感失真的问题
高级自动模式-在室内光线不足环境下,XZ3 的表现相比以往提升显著,尤其是过去为了降噪而产生的涂抹感得到了很好控制,暗部细节也得到较多保留

可以看到,尽管画质显著提高,一年前的课题仍旧存在。Xperia XZ3 上的这套 Motion Eye 依然缺少足够的可玩性,不支持全手动设置、不支持 RAW 输出、不支持 Google 相机等第三方拍照软件、没有专门的长焦与广角镜头…不过在日常使用中,只要不是智能手机明显无法应对的微光或高明暗对比场景,迄今 XZ3 和 RX100m2 同时拍摄的数百张的照片给了自己充分的自信,Xperia XZ3 足以在大部分场景下替代之前爱用的 RX100m2,提供令人满意的画质。

_

不变的 HiRes

Xperia XZ3 的音效方面的进步中规中矩。HiRes 支持、DSEE HX 音频升格引擎、LDAC/ aptX HD 高清蓝牙音频、ClearAudio+ 自适应音质增强、S-Force 环绕立体声等早就是 Xperia 旗舰标配。

得益于足够空间的屏幕上下边框,XZ3 的扬声器音量比前代 XZ2 进一步增加20%,从 XZ1 起的连续多次提升后,Xperia 的外放效果相比自己之前的 XZ Premium 有了一耳朵的改变。可惜自己几乎不用外放,对这方面无感。

从 XZ2 新增的动态振动系统也是如此。随着音乐、视频的音效节奏震动手机对自己来说并没有特别的价值,消费者似乎对此也不买账。

_

最新的 SoC

Xperia 旗舰始终采用高通当年最新 SoC,XZ3 也不例外。

高通骁龙 845 处理器与6GB内存(国际版为4GB),配合64GB UFS2.1高速闪存(支持最大512GB microSDXC扩展),Xperia XZ3 无论是日常使用还是大型游戏都应付自如。

与 Qnovo 合作开发的电池保养技术及充电长寿技术(电池标称容量3330mAh,额定容量3200mAh)、最新的 Android 9 Pie 操作系统、IPX5/8 防水溅防尘、蓝牙5.0、LTE Cat18(最高1.2Gbps下载速度)、NFC 等 Xperia 的独家功能与最新 SoC 与操作系统的特性一应俱全。

在实际使用中,国行系统的节电优能后台管理工具和 Android Pie 配合良好,即使安装数十款国产软件,包括一些恶名昭著的后台流氓,Xperia XZ3 的发热与耗电控制依然良好,日常中度一整天使用毫无问题。曾经被 810/820 处理器与国产软件折磨过的两位不谙数码的用户纷纷表示几个月来从未再遇到过去的烦恼。这样看来有了节电优能功能之后,或许让国内用户用国行系统对普通人来说才是最合适的选择吧(笑)。

Xperia XZ2 与 XZ3 还支持最高9W的快速无线充电。国行首发套装附有充电底座 WCH20,确实比传统方式更加便捷,也大幅减少了 USB 接口磨损。可惜无线充电在 Xperia 用户中并不流行,XZ3 会是短期内最后支持无线充电的机型。

_

绝唱的 XZ3

Xperia XZ 系列将在 XZ3 结束,不及 Z5 的六代产品。Ambient Flow 设计更是两代完结。XZ2/3 是索尼移动穷则思变的豪赌,只是,失败了。完败。

Xperia 的销量在2018年继续雪崩式下跌。规避侧面指纹专利没有打开美国市场,取消从外形到功能的一系列 Xperia 特色输掉了大量忠实粉丝,没有意识到日本本土市场无锁机市场的政策变化又被中低端机型抢占份额,缺乏产品亮点与营销能力不足丢了仅有的欧洲市场,中国市场本土团队令人遗憾的专业能力与工作热情让粉丝失望,国内几乎不存在的营销、渠道与售后也完全没有拉拢新用户的能力……

Xperia XZ3 不完美,但是,它决不是糟糕的产品。正相反,XZ3 有着与定位相称的优秀素质,在画质、音质、相机等智能手机的主要卖点上都有着符合定价的竞争力。大幅降价的 Xperia XZ2 近期销量大增,XZ3 恐怕也只能以这种方式结束自己的生涯。

Xperia XZ3 — Ambient Flow 设计的绝唱,XZ 系列的绝唱

不过,XZ3 不会是绝唱。

_

Xperia 1 即将来临。

_

本文相关图片版权属于各版权所有人

浅谈设立目标与计划

古人云,“凡事预则立,不预则废”。虽说真若走极端事无巨细地制定计划,不说效率有限,仅从计划赶不上变化这一铁则来讲,因频繁调整计划带来的重复劳动,及目标难以按计划实现的挫折感也会令人疲惫。如何在过度计划和缺乏计划之间取得平衡是一门有意义的课题,一方面需要从顶向下地规划自洽且能容错的体系,一方面更要亲身实践与改良,将理论应用到实际的工作与生活之中,获取成效。本文试图梳理自己的一些经验与感悟,作为自己迄今对目标计划制定的总结,及今后进一步优化的备考。

诚然,世上没有银弹。不存在绝对的普世方法,能够不加调整就适应每个人的特殊情况。寻找更具普遍意义的理论与法则是很多人的毕生追求,不过从务实的角度来讲,更为具体的定制的方法论往往能更快地提供效用,勿论这些细枝末节也许能成为更高层法则的灵感与论据。因此,即使方法固有优劣,对那些宣称高效万能的方法也应始终保持必要的谨慎,至少应先有意识地判断自己的情况是否与其适用范围相符,再根据需要采用与实践相应的方法。本文亦然。常感世间流行的热说与自己脱节,或是明显缺乏指导意义,或是由结论反证并不符合实际情况。这也是本文从一开始就不以提供普世的指导与启发为目标的根本原因。

 

繁冗铺垫之后,切入正题。

诸如新学期目标这类假期作业式的计划恐怕很多人从小就有经验。自己系统地制定目标与计划的尝试则始于中学时期。那时的计划大多指向学业,更接近中短期的学习计划,范围限定,目的单一。即使如此,制定计划也并不轻松愉快。难以具体、不易执行、追踪不便、缺乏灵活,最终无法达成…种种难题在当时就令人头痛,甚至怀疑设立目标制定计划的意义。

不具体、不实际、不可考,都属于术的问题,相对容易改进与琢磨。不灵活,则更接近略的范畴。世间唯一不变的就是改变。这意味着,制定目标与计划时,从最开始,就需要从体系上考虑到灵活,从心态上拥抱变化。这也是本文将讨论的首要问题。

灵者,迅敏,活者,可变。灵活,意即能根据情况迅速地作出改变。论迅速,大体是越快越好,又回到术,论改变,正是问题的核心,不能肆意妄为,否则不免南辕北辙,只增徒劳。身处不断变化的世界,短期计划不得不频繁调整才能适应新形势,进而积少成多,量变引起质变,中期乃至长期计划随之变化的事例也并非罕见。话虽如此,根据目标的类型,变化的频率和幅度大相径庭也是事实。不同周期的目标有不同的特征,有必要大致了解它们的性格,才能更好地制定计划。

以周或月为单位的短期目标几乎要时刻做好改变的准备。或公或私的突发事件,与他人进度的依赖关系,感冒腹泻之类的身体不适,甚至预料之外的堵车与阵雨,都可能打乱一天乃至数天的计划。

年度目标看似相对稳定,其实依然充满变数。一项新的职务,一次组织调整,又或是一份新的工作,就能让目标大幅调整,原定的计划也不再适用。搬家、买车之类的变化虽然不会影响目标,但也会对计划的实施造成不小的影响。各种因素综合,年度目标与计划很难如一而终。个人经验,一份较为细致的年度计划,最终若能达成较核心的三成内容,便可说是取得了不错的成果。

中长期的目标时间跨度可从数年至数十年,相对稳定,但仍可能被彻底颠覆。职业规划方面,或家庭生活、兴趣爱好相关的目标通常属于此类。一般而言,越是年轻无拘束,越能调转方向无负担。自己初中接触编程后想做游戏开发,高中时想当英文翻译,大学里跑去翻译日文,毕业后又成为程序员。这种程度的目标切换,想必每个人都深有体会。个人情况不同,可以想象,一方面,一些人方才毕业就已能看到退休,另一方面,有些人即使已然而立乃至不惑,开辟新战场确立新目标仍果敢无畏。中长期目标可适当拔高理想预期,同时考虑底线,一方面自我挑战,一方面接受变数。

更长期的目标通常不再拘泥于具体的工作,而已然成为个人价值观的体现。想要过怎样的人生,希望成为怎样的人,直接决定了这份目标的基调。因此,尽管长期目标在年少时同样易变,但随着阅历积累,三观逐渐构筑完整,跨入成年后长期目标总能落入一个较为稳定的范围。稳定的长期目标对个人的自我认同与自我实现至关重要。它就像是企业的使命与价值观——缺失固然不意味着无法生存,但显然少了一份灵魂。自洽的、相对稳定的自我认同可使人免于因苦恼处世原则而产生的无谓的精神疲劳。更重要的是,它确保了中期目标无论如何变化,总能在大方向上与个人价值观匹配,进一步落实到短期目标,形成一个统一的整体目标体系。值得庆幸的是,自己在五年前为自己设计的人生蓝图,现在看来毫不过时,并且站在今天的立场来看,至少在今后若干年内依然适用。从事实来看,它多次在自己迷茫时找回方向,帮助自己在中短期目标不得不发生剧变时调整心态并尽快修复目标体系,意义重大。对于不安于平庸者,这样一封作给自己的答案,不管是否成文,恐怕大都不可或缺。于情于理,都应当根据自身的实际情况,较早地开始构建属于自己的长期目标,并根据环境变化与自我发展而经常性地补充、完善与调整,以应对复杂多变的世界。当然,及时行乐、得过且过也都是,如确信这是所期望的生活方式,在日常生活中能知行合一,精神负荷也会减少很多,倒不失为一种自洽的选择。只是这在很大程度上与个人性格有关,非一朝一夕形成,亦难在一夜之间改变,不可强求。

如上所述,制定目标的关键在于认识不同层级目标的意义与性格。长期目标不需要非常具体,可以仅包含抽象条目。它至关重要且相对稳定,应尽早确立。中期目标只要能与长期目标融洽,应接受并允许大幅度的调整。短期目标则需以不确定为前提设立,充分考虑灵活性的问题。

 

问题回到实际目标与计划的制定。

长期目标稳定,长期具体计划却不现实。国家与巨大企业在掌握大量一手数据时依然无法保证准确预测三至五年后的未来,判断失误的例子数不胜数,对于普通人,要断言一年后自己会处于怎样的状态就已经是高难度动作。因此,长期与中长期计划不必也无能深入细节,止于路线图级别的大纲即可。于是,长期目标与长期计划的界限相对模糊。长期计划中不会包含实际可执行的步骤,本质上是一系列细化目标的集合。逐步实现这些目标,也就是有计划地实现更高一级的目标。

例如,在确立自己相信的价值观后,长期目标可能包含确保自身和家人较自由的、较高质量的生活条件,以支持较为自主的创造性活动,并输出有一定独创性的价值,最终自我实现,诸如此类。进一步说,若致力于计算机科学与软件工程,一种可能的中长期职业目标是成为具有扎实技术背景,在某一细分领域拥有较强实力,能够带领团队完成较大规模复杂项目的专家人才。若兴趣爱好是学习外语,掌握某语言一定数量的词汇量,能正确理解与使用该语言的现代语法,具备书记报刊的阅读理解能力及新闻影视作品的听力水平,了解基本的文化背景与习俗常识,可在不借助他人帮助的情况下与母语话者正常交流等,都能作为中长期目标的内容。甚至对静态模型制作这样纯娱乐性质的项目,中期目标也能列举掌握高阶制作工具技巧的使用,理解并能实际应用各类上色手法,有模具改造及引入其他材质组件以提升细节与质感的能力,能够制作可承载若干作品的场景,等等。从个人实践来看,基于以上原则制定的五年计划,总体上可以保证一定的稳定性,给中短期计划足够的安定感。

时间跨度在两年以内的目标初具现实意义。可实现,可衡量,可追踪是保证中短期目标能有效达成的要点。

中短期目标与计划不应包含明显不可实现的内容,应根据个人实际情况量身定制。过分超出自身能力范围的计划对目标的最终达成反而有负面作用,容易半途而废,持续消极懈怠。可以说,一个可实现的目标才能导出一份可实现的计划。如何预判能否实现,一个简单有效的依据便是过往事实。对曾经完成过的项目,可适当提升预期。对自己未接触但有他人先例的项目,可分析彼此条件后选择合理的目标。前无古人的开创性事业不确定性较大,也难见于日常,这里不作深究。举例来说,如果去年一年阅读书籍册数为零,今年订10册的目标就有很大风险,要做好大幅修改目标的准备,或者根据第一个月的结果再提出具体目标。假如去年已经读完10册,今年则可以综合其他目标,考虑优先级,在这个数字上略作调整。他人的经验固然有一定的参考价值,但如果和自己的条件不同,就必须意识到不一定适合自己。如今互联网发达,虽能轻松接触到很多相隔千里的陌生人,也带来了虚夸成本低、软广告普遍、幸存者偏差被放大的副作用。鼓吹德语无法自学必须找老师的人里难免会有教育机构的托,声称零基础6个月通过日语 N1 的人大多美化了经历,即使一个论坛里通过健身获得提升的真实案例上百,也不意味着大多数人都能轻而易举做到。

可衡量也是中短期目标的必要条件。无法衡量便无法比较,无法比较便无法评判,若无法定性是否达成,目标本身的意义也会消散。为衡量目标,需要设定标准。数字通常是简单有效的标准。前文所举的读书10册便是一例。诚然,世间存在大量无法以数字衡量之事。心态是否更加乐观,生活是否更加幸福,都不会像电子游戏,可以通过一组参数一目了然。中短期目标可以从主观的抽象的感受出发,但若要落实,可以操作,最终还是需要细分到能够衡量的条目。否则,这可能不是一条合适的目标,或者说至少不属于本文讨论之列。

可追踪更多是流程问题和工具问题。政府、企业办事都有流程,良好的流程有助于减少不确定性,提高效率,并能在更短时间内建立习惯。习惯可谓生物进化过程中获得的神奇机制。它帮助大脑减负,让人的行为模式仿佛有惯性一般,无需过多外力介入也能自行运转。一旦追踪目标形成习惯,进度才能持续推进,并避免不知不觉越发偏离。那么,对于制定与追踪目标,何谓良好的流程?简单明确、有据可查、滴水不漏,或许是几个要点。个人目标的追踪相对而言较为频繁,复杂一分,日积月累就容易变成重担。这不仅是身体负担,更会成为精神负担,严重影响可持续性。因此,可以只有一条分支就只设计一条分支,可以省略一个步骤就省略一个步骤。有据可查是指追踪的数据被长期保存,将来有需要时总能迅速查找。如今大数据成为热点,无数人都想从大数据中找到价值。个人在自己制定与追踪计划过程中产生的数据,自然也弥足珍贵,信息量巨大。纸片、单独的文档,又或是零散的邮件,显然不能满足这一需求。大容量的,便于搜索与处理的,可长期保存不易丢失的方式更为推荐,各种数字化的工具会优于传统方案。滴水不漏则指流程涵盖各类场景,无论何时何地,追踪都不会受限或搁置。换句话说,不能因为不在家中就中断执行,也不能因为出门在外无法携带大件包裹而无法实施。举例来讲,制定了跑步目标,就可以考虑借助专门的运动助理软件来记录计划的执行。单一的入口与固定的操作,可以大幅提高长期坚持追踪进展的可能。数据存于云端,无论是手机还是电脑网页都能以最佳模式访问。又因为支持手机这一几乎总能随身携带的设备,追踪流程在绝大多数情况下都不会被客观因素打断。

最细粒度的计划以周还是月为单位见仁见智,不过工作之外,周计划通常不确定性较大,制定、追踪与更新的成本也高,还是月度计划更具可行性。尤其是工作多年,业已成家的情况下,不仅每日工作强度不会太小,周末也可能要承担家务或陪伴家人,业余时间不一定总能保证,更不必说依然精力充沛。个人经验,除去已成习惯的日课,或是特别简单可以在短时间内完成的任务,每个月根据当前状况专门制定的目标与计划不宜超过4项。条目数量众多不利于记忆与识别,也不利于集中力量逐一完成。精力过度分散往往最终事倍功半。月度计划应预留足够的灵活性,并对随时可能发生的变化做好准备,不必拘泥完美,让计划不但没有帮助自己,反而成了一种束缚。

最后,目标与计划的制定终究是具体的,个人的。根据个人做事风格,随着所处环境变化,恰当地调整,才能最大程度上发挥其效用。通常,在经过数十次尝试与改进后,会对自己有更深的了解,制定计划时也会更游刃有余,结果更贴合实际。

 

接触所谓 GTD 概念十数年,对自我管理的方方面面都做了大量尝试,积累经验教训无数,其中目标管理可说还是其中较为简单的一环。如何设计适合个人的整体流程、如何有效处理信息、如何选择和利用工具、如何迭代改进,无一不是更加灵活深奥的主题。

以上仅为在设立目标与计划过程中的一点心得,在此整理成文,以飨读者。如能抛砖引玉,引发一些新鲜思维的碰撞,将不胜荣幸。

 

Angular、.NET Web Api 验证(Authentication)与跨来源资源共享(Cors)

验证是任何 Web 服务都必须考虑的基础问题。关于 .NET 平台的验证与授权,按理说微软已经提供了相当充分的文档与示例代码。

.NET Identity 框架提供了现成的数据库结构以及一系列接口,可以实现用户注册、登录登出、口令生成、邮箱的确认、密码重置等基本功能,也可以与社交媒体账户集成实现用户注册与登陆。

需要注意的是,.NET MVC 与 .NET Core 所使用的接口代码和 .NET Web Api 有所不同,如果混合阅读文档与代码,可能会造成混淆与理解上的困扰。不同版本的文档对邮箱验证等功能的处理逻辑也有差别,不可简单合并使用。

后端若部署至 Azure 等云平台,口令的生成也可能会遇到在本地不会发生的问题,报错“ The data protection operation was unsuccessful. This may have been caused by not having the user profile loaded for the current thread’s user context, which may be the case when the thread is impersonating.”。例如,.NET MVC 版示例代码在用户登录并验证邮箱后生成口令时会试图调用 /Token 接口,触发错误。网上针对此问题有一些解决方案,却都不太有效。事实上,可暂时忽略对邮箱是否得到验证的检查,直接前台调用 /Token 接口,就能避免该错误。对邮箱的确认可以在之后实际执行处理时按需进行。

微软官方的示例代码都没有涉及 Cors(cross origin resource sharing) 问题,即使是 Angular 项目模板,由于前端默认与后端共存于同一个解决方案,也不存在这一问题。然而,如果前后端分离,前端 Angular 程序的域名很可能与后端不同。

微软针对 .NET Web Api 的 Cors 有一些文档,但很遗憾,如果有接口通过 bearer token 进行验证与授权,那些文档中的解决方案很可能会引发新的问题。

  • .NET Web Api 中对 允许跨源访问:介绍多种允许 Cross origin request 的方式

由于 Chrome 等一些浏览器在一定条件下出于安全原因为首先发送 OPTIONS method 的 HTTP 请求(如 headers 中指定 “Content-Type”: “application/x-www-form-urlencoded” 时),情况变得更加复杂。

如果 OPTIONS method 没有被允许,则会遇到 405 错误代码。不当的设置可能会在允许跨源访问资源时却阻碍了用户登录等验证 API。又或是无意中重复允许 Cors origin 设置,会提示 The ‘Access-Control-Allow-Origin’ header contains multiple values 错误而无法获得资源。

网络上简单明了且实际有效的解决方案并不好找,经过反复尝试与分析,要避免所有这类问题,采用全局设置恐怕是最简单的方法之一。

  • 不要像下面这样通过 Web.config 来设置 Cors

  • 不要像下面这样通过 ApiController 属性来设置 Cors

  • 不要再 WebApiConfig 等类中通过诸如 config.EnableCors(); 等代码方式设置 Cors
  • 安装 Microsoft.Owin.Cors 的 NuGet 包
  • 在 startup.cs 的 ConfigureAuth 方法开始时调用语句 app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
  • Angular 前端发送请求时, headers 中只需指定 “Content-Type”: “application/x-www-form-urlencoded” 一项即可
  • 如果使用 RestAngular 获取资源,只需按如下方式设置 Content-Type 与 Authorization 即可

 

至此,运行于 Azure App Service 的后端 .NET Web Api 将可以与非同源的 Angular 程序交互,实现本地用户账号的注册登陆等操作,可以通过 bearer token 实现资源请求过程中的验证与授权。

两分钟了解 Node.js

本文粗略介绍 Node.js 特点与用途,以及意外地很多 Windows 用户不那么容易找到的使用 npm 的方法。

  • Node.js 是高速的服务器端单线程事件驱动异步非阻塞式 JavaScript 平台
  • 占用内存少,可无缝处理客户端与服务器端数据,适用于 SPA 或 WebSocket 应用
  • 异步处理使得连接大量客户端时性能依然较好,无需等待磁盘I/O等低速操作
  • 通过npm(node package manager)管理模块依赖

访问官方站点获取详细信息 https://nodejs.org/ 。

如无特殊需求,通过 .msi 安装包安装 Node.js 后在开始菜单启动 Node.js command prompt 即可执行命令,如,输入 npm install g @angular/cli 便能安装 Angular CLI。

 

魅惑的 4K HDR 液晶屏——索尼(Sony)Xperia XZ Premium 使用感想

2017年6月,时隔18个月,索尼的第二台冠以 Premium 之名的高阶 Xperia 智能手机 XZ Premium 终于上市,继 Xperia Z5 Premium 之后再一次代表了 Xperia 的集大成。经过半年,本文将穿插客观规格与主观体验两个角度来介绍 Xperia XZ Premium 的使用感想。

本文基于香港地区所售 Xperia XZ Premium 写成,产品型号 G8142,大陆行货名称索尼 Xperia XZ Premium。本机支持主卡 4G 副卡 3G 网络双卡双待,完整支持中国移动联通双 4G 网络所有频段,支持国内所有运营商的 2G GSM 网络,不支持中国移动 TD-SCDMA 3G 网络与中国电信 3/4G 网络。由于硬件一致,该型号可以与包括香港、台湾地区版本在内的系统固件通刷。

Premium × Design

一反 X 系列的金属风格,XZ Premium 的背盖返回了 Z 系列的镜面设计,镜面表层时刻与环境光线相映,细节精致洗练,高级感呼之欲出。其设计语言则延续了 X 系列合一设计(Unified Design),两侧棱角收敛,边框更为圆润适手,并提供有深海黑(Deepsee Black,国内称镜黑)、流光铬(Liminous Chrome,国内称镜银)、红褐粉(Bronze Pink,国内称金粉)这三种配色方案。

2017/10/19 更新:

在今年早些时候流出的红色版本今天终于正式发表——赤红(Rosso Red,国内称朱砂红)。至此,本次 XZ Premium 共有四种配色方案。

Xperia 系列自诞生伊始,便始终坚持独有的设计风格,无论是色彩还是材质,总是呈现鲜明个性。不在外形上跟风,更不会明目张胆地大幅模仿,是索尼的原则与自负。收敛而和谐的天线设计,与不同配色组合的电源键色彩,传达出索尼对细节的执着。

与前作不同,X 系列的 Premium 机型机身正面与背面同色

XZ Premium 背面整体设计简约,上下边缘与摄像头镜头仅有约半毫米的轻微突起,相比同期产品无伤大雅。可惜手头这台机器背面上下边缘并非完全平行,平放桌面时,若按下左上角/右下角能感觉到略有小半毫米的翘起,组装精度有待提高。这也是这些年 Xperia 的一个通病。

2017/12/11 更新:

今年的 XZ Premium 在采用镜面设计的同时改变了边框的设计,将原本略高出平面半毫米的边框改为了无突起的圆滑曲面。优点自然是手持手感更舒适,没有多余的尖锐触感;缺点则是摩擦力缺失,在较光滑的倾斜表面上很容易滑落。曾以为自己使用小心,几乎不会摔落手机,XZ Premium 打破了这个观念。在类似的使用习惯下,半年里手机滑落的次数很可能超过了过去十年之和。上下方较软的金属边框也留下了撞击留下的凹痕若干。如果未加额外保护,请务必小心使用。

不过,随着技术改进,Xperia 在外形范式上的保守,受到了越来越多的批评。一言蔽之,上下边框较厚导致屏幕正面占比较低,缺乏现代感与科技感。

在北美与日本市场,iPhone 长期占据绝对主导地位,索尼似乎也始终以 iPhone 为假想敌。于是,在 iPhone 不那么领先之处,自然也不追求先进。如果全球数以亿计的用户能接受这种程度的上下边框,那它就并不是一个问题——这恐怕是 Xperia 至今能沉住气的一大原因。

窄边框,事实上是一项技术权衡。自己曾经拆解过一台闲置的 Xperia,背盖之下,锂离子聚合物电池占据了整块屏幕的面积,摄像头、闪光灯与其他传感器模块、振动马达、屏幕控制模块则充满了上下边框——目前的技术无法实现高像素摄像头、上下窄边框、薄型机身、大容量电池与摄像头不突起的五全齐美。作为解决方案,大多数厂商选择了放弃摄像头不突起,另一些不采用高像素摄像头,或是,而索尼选择了维持不削减上下边框,仅此而已。

根据自己多年实际使用的体验,Xperia 较宽的上下与两侧边框,其实有利有弊,并非一无是处:

  • 目前高像素摄像头元件的厚度越来越大,充分的上部边框可以避免液晶屏幕与摄像头抢占空间,有效减少摄像头从背盖突起
  • 作为目前唯一坚持双阶段物理相机快门键的手机厂商,适当的下部边框确保用户可以稳定地单手操作并按下快门拍照
  • 下边框较宽,使得拇指可以较轻松地操作底部功能键,而不至于手机重心失衡
  • 鉴于当前软件条件下很难准确判断边缘操作是否只是误触,适当的两侧边框可以减少误触发生

当然,宽边框的缺点同样明显:

  • 同样尺寸的屏幕,机身面积更大,便携性较差
  • 由于下部边框较宽,拇指难以触及上半部屏幕,增加了单手操作的难度
  • 正面视觉冲击力小,与高屏占比机型对比时会有强烈的落伍感

个人来讲,目前的曲面屏存在容易误触以及会在播放图片、视频时扭曲边缘内容等问题,绝非最完美的解决方案。期望 Xperia 能在今后解决技术障碍,在不牺牲外形整体感与相机快门键易用性的前提下提高正面屏占比,增加产品的竞争力。

2017/12/10 更新:

在今年苹果(Apple)的高屏占比旗舰款 iPhone X 上市后,明年 Xperia 也会推出高屏占比机型的消息越来越多,不知道该说索尼是反应太迟钝还是对潮流做了妥协。目前流出的一些设计说实话让人担忧——妥协过多。Xperia 能否在维持现有优点与特色的基础上,解决上述窄边框的不便,值得关注。

Premium × Display

前作 Z5 Premium 将手机屏幕领进了 4K 级别,18个月过去,仍然独此一家。能超越它的,只有 XZ Premium。Xperia XZ Premium 带着世界首款 4K HDR 屏幕而来,成为了手机液晶屏幕显示水准的标杆。

在过去的文章里,附带了一些屏幕拍摄与对比的照片,却始终觉得这种方式的参考价值有限。相机拍摄的照片距离肉眼所见有差距,尤其是难以表现真实的亮度与对比度,实际价值并不高。如今色温偏暖偏冷偏艳偏淡都可以通过软件调节,拿几台不同的设备放在一起合照,说明不了问题。因此这次只谈主观,不再拍摄。

HDR (High Dynamic Range)显示技术可以大幅提高画面的明暗对比,令光线效果更为逼真,是近年热点之一,也必将成为今后高端智能手机的标配。Xperia XZ Premium 的5.5寸 16:9 比例屏幕与视频画面相同,没有黑边或画面剪切,尤其适合观赏视频。目前,海外 Amazon Prime Video、Netflex 等主流在线流媒体服务都已开始提供 4K HDR 内容以发挥 XZ Premium 的特长。YouTube 移动端也已有 4K 选项,HDR 想必也不会太远。但必须承认,国内视频网站在视频质量上一直不思进取,空有分辨率但在帧率和音质上压缩严重。此时,XZ Premium 的 4K Upscaling 技术能通过软件插值算法,呈现出高于原图的清晰度。

Z5 Premium 已经证明,撇开处理性能或电力消耗等问题,人眼事实上能够在5.5英寸的画面上感受出 4K 与 Full HD 分辨率的差别。XZ Premium 做的,是在进一步提高画面显示效果的同时,填补上一代技术留下的缺憾。与 Z5 Premium 一样,对于网页浏览、游戏或其他类型的应用,XZ Premium 将直接以 Full HD 分辨率显示,以减轻处理器负担,降低电量消耗。

如同所有 Xperia 高端机型,XZ Premium 引入了大量源于集团旗下 Bravia 液晶电视的画质增强技术:

  • TRILUMINOS Display for mobile 技术实现 138% sRGB 广色域,展现自然而细致的色彩
  • X-Reality for mobile 图像处理引擎提供画面降噪、细节增强、缺失信息补充等处理,并能以补充中间色或合成像素点这两种方式实现 4K 分辨率提升,呈现鲜明细节
  • Dynamic Contrast Enhancer 对比度增强技术同时从软硬件入手,为烟火或夜景等昏暗画面优化显示效果

得益于技术改进,更窄的像素栅栏使得 XZ Premium 的这块 4K 液晶屏幕亮度更高、可视角度更广,同等亮度下耗电与发热都得到明显改善。而处理性能的升级,也让 X-Reality for mobile 在相册中的应用速度加倍,能在大约一秒内完成画质的优化。如果不希望每次在相册中查看图片时等待该处理,可以在设置中禁用该功能。

4K HDR 显示屏是 XZ Premium 最重要的强项。这块色彩明亮艳丽、亮度与对比度优秀、画面细节极其锐利丰富的液晶屏,使在手机上浏览照片与观看视频成为一种视觉享受。曲面、黑边、全角、残缺,个人认为,不应该是提供最佳影音体验的答案——大多数人想必无法接受这样的电视机屏幕。符合当前主流视频内容画面比例的高画质矩形平面屏幕,目前来看仍是妥当的选项。

Premium × Camera

亮点是 Motion Eye —— 世界首款采用了索尼新开发 CMOS 层积型图像传感器(IMX400)的相机系统,从硬件层面实现了960帧超慢速视频拍摄与预测对焦等功能。

Motion Eye 由新型大尺寸高像素图像传感器 Exmor RS® for mobile、源于索尼自家相机部门的 BIONZ® for mobile 图像处理引擎以及全新改良的 G镜头™ 组成。

Exmor RS® for mobile 的像素从 Z 系列起最高飙升到了2300万,然而如此高的像素对于1/2.3寸传感器来说显然还是力不从心。回退至1920万像素后像素子面积得以增大至1.22μm, Xperia 的细节画质,尤其是夜景得到了显著提升,由于进光量不足而引发的涂抹降噪问题改善明显。IMX400 内建缓存且数据读取速度提升5倍,为超慢速视频录制与实时预测对焦提供了支持,同时可以改善拍摄高速运动物体时因快门速度不够而导致的画面变形问题。

BIONZ® for mobile 依然是软件实现,用于对拍摄的照片进行降噪、曝光与色彩调整。新平台更强的图像处理性能让这一过程更加迅速,高像素重处理的照片也能在瞬间完成保存。不过和以往一样,Xperia 的降噪处理仍然较为激进,为了减少手抖造成的影响,感光度被拉高后再通过涂抹降噪,因此细节会丢失不少。

新开发的 F2.0 25mm 广角 G镜头依然在画角上处于领先地位,但依然存在由大广角带来的畸变与边缘画质下降的问题。个人来讲,在广角与画质之间优先选择后者,如果无法确保有竞争力的最终成像效果,则不应强求广角。尤其是镜头畸变问题,在拍摄自然景物时尚不明显,但在拍摄与取景方向平行或垂直的几何形状时线条与纹理的扭曲十分显眼,给人的第一印象十分负面。

Motion Eye 的 960帧超慢速录像可以一次记录大约0.2秒(但在录制过程中可多次启动),并以正常速度回放约5秒,捕获到诸如花瓣飞散、水花四溅、焰火摇曳、鸟雀扑翼等人眼难以看清的动作细节。稍加创想,便能发现一些生活中隐藏的乐趣。不过这个功能也有一些局限,首先分辨率仅有720P,在大屏幕上显得模糊;其次由于每一帧的进光量较少,对拍摄场景的光线要求较高;又由于荧光灯自带频闪且刷新率远低于960帧,因此室内拍摄时会记录下灯光闪烁;最后,受限与缓存容量,一次录制仅允许0.2秒,要抓到精彩瞬间还需看准时机。

预测对焦功能是原有自动追焦功能的衍生。Motion Eye 会实时追踪取景范围内的物体运动并追踪对焦,在用户按下快门时 Xperia 会自动记录缓存在相机中的4张照片,供用户选择保存最佳时机。在拍摄高速运动的物体时,预测对焦功能有助于提高出片率。

除了 Motion Eye,Xperia XZ Premium 依然提供了丰富的基本相机功能:

  • 激光对焦传感器实现在微光环境下迅速对焦
  • RGBC-IR 传感器则通过红外识别光线色彩,得到更自然准确的白平衡
  • 最快0.5秒启动相机、0.03秒完成混合式对焦,能在大多数场景下实现按下快门即得
  • 高级自动模式能智能识别人像、夜景、逆光、美食等模式并调节至最佳设置
  • 与便携式相机相当的 ISO 12800 高感光度模式能够在光线微弱时拍出画面主体
  • 支持 4K 视频录制,且在散热良好的条件下无拍摄时长限制
  • 视频录制支持 SteadyShot™  5轴智能增强防抖,性能业界一流,边走边路也能较平稳录制
  • 允许手动设定快门速度与对焦位置
  • 易于操作的实体快门键,便于实现 AEL 操作
  • 1300万像素前置摄像头:1/3.06寸 Exmor RS® for mobile;可容纳多至5人的 F2.0 22mm 广角镜头;SteadyShot™  5轴智能增强防抖
  • AR 动画、艺术特效、短片剪辑等多彩的相机应用
  • 3D 扫描头像与物体,可供制作动画或 3D 打印(随 Android Oreo 系统升级引入)

然而,仅凭 IMX400 还无法提供足够的竞争力,尤其在画质方面。在需要变焦的场合,单摄像头的 XZ Premium 完全无法和搭载了第二颗长焦镜头的双镜头系统抗衡。实际与一些配置同级的产品比较的结论是,数码变焦完全不敌光学焦距。而时下流行的虚化人像或后对焦拍摄,单颗 IMX400 也无能为力。Xperia 的成像算法也一如既往,优先谋求白平衡和曝光充足,而牺牲画面细节。XZ Premium 的相机应付日常使用绰绰有余,仅用于随手拍网络分享,第一眼画质也算出色。连拍、慢速视频与 3D 扫描等独家特色功能在亲友聚会时也增加了很多乐趣。

以下是一些由 XZ Premium 拍摄的照片样张。受限于博客附件上传尺寸,均做了压缩处理(最短边1080像素,JPG – JPG 100%压缩比)。通常,1200万像素的照片尺寸在4MB上下,1900万像素的照片在6MB上下。如无特别说明,照片无剪裁外的后期处理。

高级自动模式-12MP-微光-识别为高 ISO 模式,拍摄场景下肉眼几乎无法看清物体,后期降噪并提亮阴影

高级自动模式-12MP-户外晴天-识别为风景并强调了蓝色和绿色。后期处理了曲线和细节

高级自动模式-12MP-夕阳-识别为风景,后期调整了曲线、细节、并做了XY轴变形与剪裁

高级自动模式-12MP-室内灯光-识别为美食,能够方便而稳定地单手按下快门键拍摄照片是 Xperia 的坚持

高级自动模式-12MP-识别为夜景。夜景下依然没有光学防抖的 XZ Premium 为了保证亮度而大幅牺牲细节。尽管小尺寸下感官尚可,但禁不起放大,油画般的涂抹感长期为人诟病

高级自动模式-12MP-识别为风景,强调了海的色彩。天空和大海等自然风景都是 Xperia 善于识别并增加的对象。由于拍摄时尚未得到修复,海平面可见轻微的畸变

高级自动模式-12MP,光线充足时夜景的画质足以令大部分人满意

高级自动模式-12MP-识别为夜景,在画面整体较暗时会启用夜景算法,除了涂抹感,明亮的光源也容易因手抖而模糊

高级自动模式-12MP,夜间室内照明下明暗和色彩的表现尚可,符合定位

高级自动模式-12MP-识别为夜景,后期调整了曲线细节并剪裁。不支持 RAW 格式少了很多可玩性,但总体而言还算能救回不少

高级自动模式-12MP-识别为美食,强调了色泽。Xperia 的美食识别一如既往惊人准确

尽管索尼本家在小型相机传感器市场上独占鳌头,Xperia 的拍照质量却一直不够优秀。Z 系列时代所追求的高像素是一大原因。即使率先使用了与便携式相机相同的1/2.3寸大尺寸传感器,也难以弥补单个像素进光量不足而引发的一连串画质下降。进入 X 系列之后,Xperia 的相机素质得到了很大改善。色彩准确、对焦迅速,相机的易用性已经令人满意,只要不放大原图检查,照片的整体质量上佳。但不可否认,它的画质与相机功能仍有不小的改进空间。改善镜头畸变、引入光学防抖、改进降噪算法、开放更多手动设置、提供 RAW 格式输出等都是今后的课题。

2017/10/31 更新:

近日提供的系统升级为相机增加了畸变修正功能,变形问题得到了极大改善,尤其是原本多次扭曲的波浪状变形改为了单次弧线变形,除非参照物明显,否则感官上不易察觉,令人欣慰。

Premium × Sound

Xperia 虽然一直强调娱乐性能,却始终没有从硬件上对音质做优化。XZ Premium 仍然延续了这一路线,主要通过软件增强音质。唯一的硬件支持为从三年前 Xperia Z2 开始为旗舰机型标配的数字降噪功能。不过,也许是出于商业考虑,即使耳机相同,Xperia 的实际降噪效果明显逊于 Walkman 一级,底噪明显,也无法自动根据场景切换降噪算法,实在可惜。

作为 HiRes 高解析度音频的主推者,XZ Premium 支持 LPCM, FLAC, ALAC, DSD 等多种格式 HiRes 音源的播放,以 CD 音频3-6倍的信息量表现更为细腻的声音细节与余韵。招牌的 DSEE HX 数字声音增强引擎可以对无损及以下码率的音源软件插值至 HiRes 级别。实际中,该技术能有效改善从网络等渠道下载的(不足256kpbs)较低码率的音乐音质,减少声音的刺耳感。对于原本质量尚可的音频,从听感上来讲主要是强调了高音的纤细。不过,与 Walkman 不同,Xperia 上的 DSEE HX 仅能在使用有线耳机时启用,且无法与 ClearAudio+ 技术同时使用,可用性受到很大局限。

索尼在音乐风格分析处理领域的经验与积累已经超过十年。从对乐曲旋律、节奏、乐器进行分析归类的12音解析(12 Tone Analysis)技术,根据时间、情景与心境自动选择曲目的 SenseMe Channel 技术,到如今广泛应用于 Walkman 与 Xperia 上的 ClearAudio+。ClearAudio+ 是索尼独有的音质增强技术,能够自动识别乐曲类型并自动设置合适的均衡器设置,突出乐曲风格,增强实际听感。对于绝大多数普通人来说,调节均衡器设置或许是耳朵最容易实际感受音质变化的方式了吧。

Xperia 在无线音乐上也有自己的优势。在 Android Oreo(8.0) 尚未普及的今天,支持 LDAC 高解析度蓝牙音频技术的智能手机只有 Xperia。配合支持 LDAC 的耳机,Xperia 便能够以传统蓝牙音频协议(Bluetooth® A2DP SBC 328kbps 44.1kHz)3倍的码率以高达990kbps的速率传输信息,使蓝牙耳机不再与高音质无缘,即使无线也能享受较高解析度的音乐。不过,为了推广该技术以期 LDAC 成为高解析度蓝牙音频的事实标准,索尼与 Google 深入合作将其纳入了 Android Oreo 的内置蓝牙选项,Xperia 尝鲜了一两年的这一优势也将逐渐淡去。

离开耳机,前置立体声扬声器与 S-Force 环绕声技术也是 Xperia 的传统,确保了声音外放的效果。但一直以来 Xperia 的外放音量与音质都只能说中规中矩,该设计的主要意义只有双扬声器提供的更宽广的声场而已。

此外,Xperia 在声音方面还提供了耳机音质自动适配与基于降噪耳机的人头录音(Binaural Recording)这两个特色功能。

总的来讲,XZ Premium 的音质体验更多依托软件增强,最大的优势是 LDAC 无线音乐。虽然保留了 3.5mm 耳机插孔,有线音乐播放的素质平庸。

Premium × Experience

作为全球首发(上市日期第三位)搭载高通骁龙 835 处理器的智能手机,Xperia XZ Premium 的性能表现在公布伊始便受到瞩目,并获得了 MWC2017 最佳智能手机的殊荣。尽管算不上含金量很高的荣誉,也在一定程度上证明了其产品水准受到肯定。

采用了 10nm 制造工艺的骁龙 835 在性能和功耗上都比前代大幅改进,CPU 性能提升至 820 的1.2倍,GPU 提升至1.25倍。尤其是功耗控制远胜 810/820 系列,实际的使用体验得到了很大提升。如今,性能并不在是智能手机的主要痛点,中端型号处理器亦能提供令绝大多数人满足的运算能力。因此,追求高性能而忽视了功耗与发热问题的骁龙 810/820 饱受批评。纵使在实验环境下能取得高性能分,日常使用中如果频繁因发热降频导致卡顿,使用体验也会极大受损。而这一问题,在中国大陆的安卓软件生态中尤为严重。

Xperia XZ Premium 首次在系列中使用了 UFS2.1 高速闪存,提供3倍于传统技术,高达1.5GB/s的数据访问性能,系统运行与程序处理的速度相比以往的 eMMC 机型得到了质的飞跃。日常使用中响应迅速,无论是切换程序还是启动相机,都没有丝毫拖泥带水。4GB内存作为当前高端机型的主流配置,除却系统占用与全套 Google 服务框架外还能剩余超过1GB,也算是与定位相符。

不过在国内,则是另一个故事。由于众所周知的原因,中国大陆无法正常使用 Google 服务,国内行货手机大多也会预先去除 Google 服务框架及相关应用。由 Google 监管的 Android 官方应用商店,Play 商店也在国内无法正常访问与购买或下载应用。另一方面,国内软件开发商出于或是技术原因,或是商业考虑,无视 Google 为确保 Android 应用体验而提出的多种建议与规范,不遵循性能与电池优化的最佳实践,为收集用户设备数据而滥用设备权限并以提供的垄断级服务相要挟强迫用户接受,执意使用热更新替换二进制文件使用户可能受到劫持而感染恶意文件等。恶的联盟一旦形成,便会劣币驱逐良币,市场秩序被严重扰乱,生态发展进入恶性循环。

借着国内移动互联网与智能手机普及的东风,国产手机厂商在竞争中不断完善着应对这一糟糕生态的机制,各类应用权限与启动管理成为了国产定制安卓系统的标配。虽然这些对策并非完美,偶有无效或过度起效而影响使用的情况,至少从系统层面抑制了问题的严重性。而索尼等国外厂商却在这几年里没有对此做出很好的对应,用户流失与口碑下降严重。这一问题的现状如下:

  • 对于国际版机型,即将到来的 Android Oreo 系统升级会带来更完备的后台进程限制功能,制约程序在后台执行处理并影响系统性能
  • 对于在中国大陆销售的行货机型,索尼终于针对国情添加了应用自启动管理工具,能有效限制国产软件肆意相互启动并在后台执行处理的问题
  • 第三方应用绿色守护可以在用户关闭屏幕时清除仍然驻留在后台的不必要的程序,改善待机时的耗电与发热问题
  • 第三方应用黑域可以阻止程序间不必要的相互唤醒与启动,大幅改善手机使用时的耗电与发热

至于系统本身的功能与逻辑,XZ Premium 继承了 Xperia 的一贯风格——在原生 Android 的基础上加入一些最基本的运行内存自动清理、智能主题模式等便捷功能,并统一了界面交互的设计风格。每一代 Xperia 都有自己的界面设计主题。今年 XZ 系列的主题是环。画面背景中的动态的环形光晕会随着指纹解锁、屏幕操作与电池余量等状态表现出不同的形态,简约、自然、实用,为日常使用增添一份趣味。

稳定、流畅是这一代 Xperia 系统的基调。前些年在 Android 5 中遇到的系统内存泄漏问题不复存在,尽管系统建议每周重启一次以保持最佳性能,除了月度的安全补丁更新需要重启设备外,XZ 无需额外重启来恢复流畅,连续工作二十天以上是常态。

2017/10/30更新:

Android Oreo 更新比预期更早到来。带来众多新特性也带来了一个显眼的 bug ——自动亮度控制逻辑过于敏感,导致屏幕亮度变化频繁且过度,同时增加耗电。在问题修复前建议暂时禁用自动亮度。

2018/3/25 更新:

Xperia XZ Premium 在获得3月安全更新的同时,终于修复了明暗传感器过于敏感导致屏幕亮度过度变化的问题。至此,Xperia XZ Premium 处于较为稳定的版本,编译版本 47.1.A.12.75。

2019/2/20 更新:

Xperia XZ Premium 香港地区定制系统终于在春节前夕获得 Android P(9.0)大版本更新。经过一段时间使用,可以体感后台任务管理和电源管理较 Android O 有了大幅提升。工作日的使用强度,公司连接WLAN时,下班时地剩余电量从升级前的50%左右提升至70%以上。不过由于港版得到的2017年产品的第一次升级,在相册内容扫描更新等细节方面性能存在一些问题。2018年产品在第二次升级后解决了问题,想必 XZ Premium 也能在不久后得到更新。

缺乏本地化功能是 Xperia 在国内的互联网舆论里饱受诟病的一点。其实,包括骚扰电话过滤与号码黄页等诉求较大的功能其实都可以通过安装相应的第三方应用实现,自启动管理也在行货版本中提供,Xperia 的系统是否真的不适应国内土壤,或许是个扑朔迷离的伪命题。一个操作系统是否应当集成所有用户可能会需要的功能,原本就见仁见智,甚至是一种哲学与价值观的问题。相比之下,用惯了全能系统的人,要改变已经熟悉的使用习惯,或许才是最让人不适应的吧。至少对自己而言,在锁屏界面默认显示风景照片并配上励志短句的类 iOS 系统,看上去更加尴尬。

Premium × Usability

  • 防水
    • 与历代 Xperia 旗舰一样,XZ Premium 支持 IP65/68 防水防尘,能够轻松抵御日常生活中的进水。同时,除了早已采用的耳机插孔与 USB 无盖防水,XZ Premium 这次又对湿手触摸识别做了优化,防水功能的实用性进一步提升。不过该标准只针对纯水,且对水流压力和进水时间有具体限制,加上防水性能可能会随着长期使用而有所下降,因此不能盲目依赖。
  • 侧边指纹识别
    • Xperia 的招牌设计,位于右侧的指纹传感器恰好在右手拇指或左手中指可以轻松触及的位置
    • 指纹识别速度与准确率均一流,轻触的同时瞬间解锁;但较难应对手汗较多的情况,实际体验的个人差异较大
  • Quick Charge 3.0
    • 快充充电器充电可在两小时内充满;经验上日常充电十分钟即可应急使用约一小时(视具体情况而定)
  • Qnovo 电池保养技术
    • 智能学习并识别充电规律,大幅延长电池寿命,确保手机可以使用两年而无明显电池性能下降
  • 正反面皆采用康宁最新大猩猩5强化玻璃( Corning® Gorilla® Glass 5),坚固耐用
  • 支持中国移动与中国联通 4G LTE 全频段网络;支持中国联通 3G UMTS HSPA+ 网络;支持 2G GSM GPRS/EDGE 网络
  • 双 SIM 卡,主卡 4G 与副卡 3G 同时待机
  • 最大支持256GB扩展 MicroSD 存储:仅能在不插入副 SIM 卡时使用
  • 支持 LTE (4G) Cat16 Gbps 级高速网络传输:最快能在1分钟内完成1GB数据的下载,然而国内网络跟进遥遥无期
  • 率先支持 Bluetooth® 5.0 无线技术
  • NFC 轻松连接
    • 可与蓝牙耳机、BRAVIA 液晶电视、家庭音响设备等其他索尼设备一触即连
  • PS4 Remote Play
    • 无线遥控 PS4 进行游戏
  • A-GNSS (GPS + 俄罗斯 GLONASS) 卫星定位
  • USB 3.1 Gen 1  / USB Type-C™,传输速度高达 5Gb/s

小结

作为十几年索尼爱立信/索尼手机的爱好者,可以确信地说,今年的 Xperia XZ Premium 是系列的一个里程碑,是进入智能手机时代以来索尼交出的最好的答卷。但可惜,它并不是在同时期业界最优秀的一次登场(这一提名要留给 Xperia Z2)。它或许是一个时代的终结,最后的传统的 Xperia。

XZ Premium 有着与定位相符的精巧质感,却在今年流行的屏幕正面占比上显得过时。它在手机液晶屏幕的画质表现上登峰造极,却在话题度上被时下推崇的 OLED 屏幕盖过。它在单摄像头的可玩性上螺丝壳里做出了道场,却终究难敌双摄像头在某些领域的强项。它引入了大量自家 Walkman 长年积累的音质优化技术,却并没有在输出功率这一最直接的规格上突出。它率先搭载了最新款的处理单元,却在内存和存储容量上丢掉了重视参数的用户。它为 Android 系统作出大量宝贵贡献,却没有为中国大陆这一世界最大的智能手机市场添加用户喜爱的本地化功能。

在日本本土,XZ Premium 得到了用户极高的评价,Xperia 的新老客户大多给予了它充分肯定。但在中国市场,归功于索尼长年放养式的管理,Xperia 的存在感接近于零。此外,撇开确实存在的不足,线上线下所流传的片面或过时的舆论进一步减少了它的受众。明明整体水准对得起定价,却仍然被认为是性价比低的花瓶;明明 4K 显示屏并未给续航和发热造成可见的影响,却有人以此作为缺点批评;明明照相和音乐功能上特长与妥协并存,却逃不过不断的嘲讽与揶揄。

Xperia XZ Premium 并不是一款能毫无顾忌向万人推荐的产品。它的外形设计过分传统,又把技术重心压在了从屏幕到摄像头传感器等方面的硬件革新,没有跟随时下的流行。然而,如果它恰好击中你的需求,会是一款能提供充分满足体验的旗舰产品。毕竟,能在掌上享受到的 4K HDR 画面只此一家,不是么。

XZ Premium 的设计或许会成为 Xperia 这一章的终结

尝试 Angular

之前做过一些 AngularJS 的小型项目,用的工具和流程却大多是过时的一套,大半精力也仍花费在后台业务逻辑。时至今日虽然晚了一些,打算跟上时代,尝试一下 Angular 的开发。

有几个关注点:

  • 以 Angular 4 入手,系统学习 Angular 框架的概念与机制
  • 完全的前后端分离
  • 使用 Angular CLI 创建模板
  • 借助 VSTS 管理项目代码与发布
  • Angular 部分完全使用 VS Code 开发

Angular 4 并不是最新版本,大版本升级的周期是每6个月,但从 Angular 2 起每个大版本都能基本兼容,Angular 4 的文档也相对丰富,故选择从这里开始。完全前后端分离可以更高效分工,带来一系列好处,如提高团队合作效率。而 Angular CLI 几乎已经成为默认的选项,这次也打算应用。至于 VSTS,最近的项目经历感觉没有最大程度发挥其价值,所以希望在也与项目中进一步探索其可能性。VS Code 虽已成为自己的常用工具,但能否完全担当起开发之职,也会是这次的一个课题。

起动步骤极为简单。

在安装 Node.js 后,通过命令行安装 Angular CLI:

CD 定位至希望的文件夹后,新建 Angular 项目:

运行新建的项目,并以 open 选项打开浏览器页面,默认端口为4200:

此时,通过 VS Code 对代码做任何修改并保存后都会立即体现在程序上。

至此,尝试 Angular 的第一步已经踏出。今后将不定期更新心得感想。

JavaScript 避免 Ajax Get 方法因缓存而返回错误数据结果的问题

代码与范例:

方法4 – 页面 meta tag

说明:Ajax 调用存在缓存,再次以相同参数调用时可能会直接调取先前结果,造成结果错误。可以用以上四种方式回避该问题。

在 Ubuntu 中安装 Jenkins

Jenkins 是目前流行的 CI 平台,终于得闲,便想到试用看看,略作笔记。

官方文档: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

Jenkins 依赖于 JDK 和 JRE,可以通过以下代码安装。

安装完成后,继续安装 Jenkins 本身。

Jenkins 的默认端口为 8080,在安装完成后即可使用。

 

在 Windows 下安装与配置 Karma

1. 安装 Karma 与相关插件

karma 与 karma-chrome-launcher 将被安装至当前工作目录下的 node_modules 并以 devDependencies 形式保存于 package.json。这样一来,其他开发者只需通过 npm install 来获取这些已经安装的依赖。之后,通过 -g 指定在全局安装 CLI 以实现命令行操作。

2. 创建配置文件
在项目的测试用例文件夹下执行以下命令

3. 启动 Karma

或在配置文件路径下执行

4. 终止 Karma