隆重介绍 Stan

April 18, 2020 • 12:00 AM

自从上班以来,自己写 app 的时间就少的可怜——其实也不是真的没时间写,但是上了八小时班,回家总要歇歇。万万没想到倒是疫情把时间空出来了,这短短一个月的 progress 真的能顶过去一年的。

丑媳妇要拉出来见公婆了——你可以在 App Store 下载 Stan 2.0.1,一个模拟胶片效果的相机 app:

Stan 是你口袋中的即拍即得相机。效果拔群的胶片预设让你跳过后期的繁琐,一键即可获得适合分享的照片。

胶片预设效果惊艳——

  • 相机: Ascend——默认的可免费使用的现代风格胶片相机。这款相机颜色丰富、细节突出并接近真实,是你日常出街的好伙伴。
  • 相机: Helix——含蓄的暖色调万用相机,通过调整画面的色彩平衡和提亮中心曝光来获得不一样的色彩效果。这款精心调校的相机完全能胜任风景、静物和人像拍摄。
  • 相机: 帕斯卡——高亮度的黑白相机适合拍摄人像特写。独特的中心高亮曝光让你的被摄对象在画面中明亮清晰。
  • 相机: 55 B——高对比度的黑白相机拥有超强的戏剧效果。通过去除颜色的干扰,这款相机对画面结构、线条和纹理进行着重强调,适合拍摄建筑和反差强烈的风光构图。
  • 相机: 圣克鲁斯——复古风格胶片相机,拥有增强的暖色调褪色效果。你的照片会像上世纪 60 年代的作品,颜色温暖而慵懒却不失鲜明的细节。
  • 相机: Mini Q 800——装配鱼眼镜头的玩具相机可以把所有东西都拍成球形。低质量的颜色效果让乐趣翻番,让你的作品显得怀旧却活泼。

导入之前的照片——在 iOS 相册中把照片加入到 “Stan” 相簿即可在 app 中查看并编辑。你可以用 Stan 为自己的老照片注入新的活力。

包含最新科技——

  • iOS 照片库整合:Stan 利用 iOS 照片库功能,允许你将照片的保存、编辑、整理和删除同步到 iOS 相册。如果你使用 iCloud 同步照片库,你的编辑和修改也会在任何设备中呈现。
  • 非破坏性编辑:你在 Stan 中进行的任何编辑和操作都是完全可逆的——甚至包括你在 app 相机中拍摄的照片。
  • 地理位置标记:Stan 使用 GPS 将你的照片进行标记。你可以在 iOS 相册中看到拍摄每一张照片的地理位置。
  • HEIC 支持:Stan 使用 HEIC 保存照片,让你能够保存更多的照片作品,并在图像压缩时获得更好的效果。

顺便送大家五个内购全部解锁的兑换码,自己用完也可以馈赠亲友——

7TKHLM69N6RY
HW9LNNHA4XTF
ALAYPRLM4TY6
4FYFLAKWMNPF
M6FP4ANFKX7M

一些讨论

一年没发东西我发现自己有很多技术和心得要探讨——

SwiftUI 尚不成熟

过去的一年时间很多都花在了研究 SwiftUI 这个新框架上。抛开任何新框架固有的问题不谈——支持文档不足、开发包少、网上的范例少都是意料之中的事情——SwiftUI 框架的功能只能实现 UIKit 很少的一部分。剩下的内容要么需要 UIKit 进行拼接(通过 UIViewRepresentable),或者需要一些刚刚出现的第三方包进行补充(比如和 UICollectionView 对标的第三方包 “QGrid”)。SwiftUI 的逻辑决定它的子 View 无法知晓任何父 View 的尺寸信息,除非使用非常蹩脚的 GeometryReader……相对 UIKit 使用的 Layout Constraint 的思路而言,SwiftUI 确实能控制信息的单向流动,但是在实现 UI 界面效果上远没有那么灵活。

剩下的时间大量花在了调查 SwiftUI 的 bug 上,比如为什么 popup 和 sheet 的表现在 iPhone 和 iPad 上并不一致,或者为什么边到边的 View 在一些情况下会有一条狭窄的白边……

甚至连 Xcode 的 compiler 都不能胜任复杂的 View 结构,compiler 会直接抱怨 “Xcode could not finish compiling within reasonable time“;一处的代码稍有不对,Xcode 直接在最外层的 View struct 级别报错,对具体的 debugging 过程毫无帮助……

SwiftUI 画了一个很好看的饼,但是吃到嘴里一点都不香。如果你想完全扔掉 Storyboard 进行 UI 设计,并且已经有了足够的经验而无需依赖视觉辅助,完全可以徒手写 UIViewController 的 subclass ——这也是我从 Stan 新版本开始做的事情,没有遇到任何障碍。如果你是因为需要开发时能够实时预览界面的模样,趁早买个 Sketch 自己用手画吧,UI / UX 设计弯道超车早晚栽倒沟里。

Framework 的直接和间接好处

iOS SDK 的 PhotoKit 是在相册管理方面能让 iOS 和安卓拉开十万公里差距的地方,但也是一个需要很多时间投入进行学习、针对自己的 app 写 convenience layer 的地方。得益于之前 HRZN 的积累——无论是对开发包的经验和熟悉度还是之前自己写的能直接被复用的 framework——这次更新 app 在 iOS 照片库的数据处理上走得顺风顺水。在开发过程中我又加入了新的 Adobe Color Cube 的处理框架,可以读取滤镜文件进行颜色效果转换,反过来用到 HRZN 上然后修了一波 bug。

写 framework 的一个好处是自己既是用户也是开发者。很多时候要戴上不同的帽子去思考一个方法和属性该不该设置为 public,甚至需不需要存在。创作 framework 的过程也是梳理一个 app 架构的过程——得抽丝般地剥离 code base 里能够被反复利用的地方,它们也往往是不需要和别的模块写在一起的地方。最近读 Code Complete 学到了很多思路(需要单开一篇),在实践中能够对自己一年前两年前的代码进行反思,有一种复习自己学到的内容的感觉,这些都是制作 framework 带来的额外好处。

The 1-year-from-now you is the most honest and the most critical reviewer of your works. A close second is a-week-from-now you. Everyone else on the planet earth is far behind in the league.

——太正确了。

不得不承认我现在还在写 spaghetti code,代码写完的时候就知道是为了赶进度没有仔细琢磨架构和依赖,但是这留给明年的我来解决吧,他更聪明更有经验一些。

要给自己计时

过去的 20 天我在新款的 app 上花了 48h 27m。过去的 365 天,在 work from home 开始之前我在新款 app 上花了 54h 8m,包括对 SwiftUI、数据模型和系统交互 layer 的尝试。

我发现通过对自己的工作进行计时,我能更好地明白自己的工作效率,以及在各种事情上花费的时间究竟是否值得。比如——

  • Work from home 真的让每天工作时间大幅增长——从每天平均 0.16 小时翻到每天 2.42 小时(当然是有些日子一天七八个小时,有些日子一点没碰)。
  • 侧面证明 SwiftUI 的尝试很失败——整个界面重新用 UIKit 写完加上发版也不过 48 小时,而之前居然花了 54 小时去学习和试错 SwiftUI。
  • 也与开发还是比不上每天正经全职工作的时长。也许整个开发过程很值得骄傲,但仔细想想看,48小时不过六个全职工作日,或者四个 996 工作日,连一礼拜都不到。

所以说给自己的工作计时还是很有必要的,能够用具体的数字把时间上的投资进行比较。推荐一下 Mac 上的 Timing App 给大家1

用户埋点和数据追踪很重要

不管是用 Google Firebase 还是 Mixpanel 还是其他的用户事件追踪服务,能够从第一个版本就植入追踪模块真的很重要。尤其是早期的事件追踪能够针对购买行为提供更多的上下文信息,比如每一步转化操作的转化率如何,用户的转化渠道是什么,是哪个入口带来了更多转化。这些信息紧接着带来商业驱动的开发需求:转化数量多是因为转化率高还是因为入口总人数多?这会告诉我是该想办法提高提高转化率,还是应该把入口 promote 到更表层提高进入总人数。

此外一些基本的信息——用户的地理位置、推定性别和年龄、推定的兴趣点——都是帮助你了解用户群体的有效手段。通过自定义埋点,我也能了解用户用我的相机都干了什么,比如某一个滤镜似乎非常适合自拍,它同时非常畅销,那么也许我应该设计更多的类似内容;某个功能根本没人用,那么我要考虑把功能去除、折叠进二级菜单来为别的操作腾出空间,还是说因为这是一个付费转化的入口,我要把操作 promote 到表层来加大转化?

这些只是很简单的例子,不过个个都说明了埋点的重要性。独立开发没空搞社群运营,如果连埋点都不做那就真的是个瞎子开发了。

其它

  • 4K 屏真香。USB-C docking 的 4K 屏更香。
  • 我买的是飞利浦的 27 寸显示器,可旋转,可翻转到竖直状态,竖着写代码开一个新的 UIView class 香上加香。
  • MagicTrackpad 2 真香,别看 iPad 适配一团糟。面积大、颜值高,什么手势都游刃有余。
  • 两米的 Lightning 线缆做测试真香,AmazonBasics 有售,国内外的亚马逊都有。虽然这个两米的线会被朋友吐槽凌乱,但至少测试起来不会太短绊到……
  1. Timing App 至少需要 Professional 版本才能比较自由计时。也在 Setapp 上提供——欢迎使用我的邀请码免费获得一个月试用 

Let’s stay in touch!

Sign up for the weekly updates of anything that appears on this blog. You will read about my outdoor life around British Columbia, technical discussions as a Data Analyst & App Developer, as well as other random discoveries and thoughts.

Blog Posts Archive