MyerList:创造你的实时活动

今年的 iPhone 14 Pro 系列上的灵动岛可谓抢足了眼球,从发布会上的惊艳到发售后的诸多议论,注定这不是一个大众都能认可的软硬件功能。不过别 ” 本末倒置 “了,灵动岛背后的核心,应该是今年 iOS 系统带来的「实时活动」(Live Activity),尽管 WWDC 上已经做了介绍了,但直到 iOS 16.1 上,我们开发者才得以使用 ActivityKit + WidgetKit 来实现。新 app MyerList 的灵感来源于前段时间坐了不少城际高铁的经历。

2022 年做 Apple 多平台开发,SwiftUI 能独当一面吗?

在 2021 年的一月,我发布了一篇文章 ——「MyerSplash 完成了全平台的目标」。MyerSplash 完成了全平台的目标所谓的全平台,是包括 Windows、Android、iOS、iPadOS、macOS 在内的全平台。但是一共有三套代码库 ——UWP/XAML,Android 原生 Framework 以及使用 UIKit + Mac Catalyst。是的,Apple 平台本身是只有一套代码库,完全是靠 UIKit 来开发,同时使用 Mac

MyerTidy 新版本上新:支持合成「延时切片」功能

时间切片 Time Slice 是延时摄影的静态表现形式:你通过固定机位并在特定的时间间隔内拍摄一系列照片,得到一组静态照片,然后在后期的时候按照时间顺序,取每一张照片的局部,然后拼接起来,便得到一个名为时间切片的照片。2022 年 7 月份在梧桐山顶拍摄了一组日落时分的延时照片,并在后期导入电脑并使用 DaVinci Resolve 合成延时视频的时候,我突然想起一个朋友在 2013 年输出的一个时间切片照片。于是也想给我这组照片制作一个时间切片。后期制作时间切片是一道很复杂的工程(比如,可以参考这里),随着照片数目的增多,操作步骤会越多。在正式使用 Photoshop 尝试制作时间切片之前,我就直接有个想法,要不自己实现一把?事实上,

【ONE-THOUGHT】关于开发难度中心转移的问题

软件工程之所以叫软件工程,是因为这不是一个人的事情。哪怕是一个简单的 App,从你上层的业务逻辑到所使用的官方库(UIKit、Android Framework 等),都能组合成一个复杂的软件架构,但如果上层业务简单,那么难度重心就在给上层提供支持的 Framework 里,如果是一个复杂的 App,那么也有可能偏向上层。但这终究只是偏向的问题,如果你所处的团队或者公司,已经是一个有着相当复杂的业务(哪怕在用户眼里,其实没那么复杂),那么这些想法可能是错的:我们复杂的东西没有难度,不需要做极致的优化因为做的东西没难度,甚至也没有涉及到高深的算法,因此做的事情没有价值正如前面说的,不同层级的难度其实是不一样的,因为他们的「客户」是不一样的,但基本都是给上层业务服务。但作为软件工程的一个分子,

【ONE-THOUGHT】关于滤镜的思考

现实里我不太喜欢别人问我一些照片是不是「加滤镜」,特别是这些照片是经过你精心调整后的情况。因为各类拍照和修图 App 的出现,导致很多人认为滤镜就是一个魔法,你一个照片好看,那你就是套了一个滤镜——滤镜是输入源,好看的照片是产物,所以他们俩是等同的——但就是一个认知错误。下面我就以我的认知澄清一下这个概念:摄影后期创作里的滤镜,是对一系列对图像的处理进行「封装」后的概念。所谓封装,目的就是给你隐藏实现细节——而这些实现细节则可能是:一个 LUT(Lookup Table),一个对一系列色彩参数的调节(高光加多少,阴影减去多少,黑色添加什么颜色,等)理解了「封装」的概念,

【ONE-THOUGHT】关于消费级航拍无人机的一些购买建议

DJI 航拍无人机本身的性能和价格区间划分已经比较清晰了,如果你有非常固定而且浮动范围很小的预算,那么其实可选择的不是很多,按照你能接受的价格买即可。但抛开价格外,选购航拍无人机还是有些需要考虑的部分。按照买新不买旧的原则,目前适合大众消费者购买的几款航拍无人机,无非就是以下几款:DJI Mavic 3 / DJI Mavic 3 CineDJI Air 2SDJI Mini 3 ProDJI Mini 2DJI Mini SE事实上,他们之间的价格区间重叠率还是不太高的——这意味着,事实上拥有不同预算和需求的用户,其实是能相对比较精准地选择出适合自己的产品的。在选择的时候,抛开产品价格外,你需要考虑的几个维度:

MacBook Pro + XDR 屏幕使用达芬奇设置、预览和导出 HDR 视频

随着越来越多的设备支持拍摄和回放 HDR 视频,制作 HDR 视频已经不是一件「少数派」玩家的事情了。特别地,如果你拥有 Apple 生态的设备,那么你已经具备了完备的软硬件环境了。在 iPhone 里直接对视频编辑固然可以,但你可能会有一天想通过 AirDrop 把视频传到你的 MacBook,然后把你使用 iPhone 录制的 HDR 视频作为一个 B-Roll 加入到你的作品里。此时,你可能需要一个适用于原素材为 HDR 并导出 HDR 视频的方法。

我是如何使用 Notion 运用 PARA 模型来整理我的第二大脑

关于 Building a Second Brain 的概述前段时间阅读了 Building a Second Brain 一书。正如名字所写的,这是一本教你如何打造第二大脑的书。而打造第二大脑后,就能释放我们的第一大脑,让我们的大脑本身应用在更为有价值的事情上。第二大脑本身,能够帮助我们:让我们的想法以更为具体的方式记录下来,并且能帮助我们让他们之间产生联系,从而能够在未来以某种形式来孵化出新的想法。Building a Second Brain 遵循这么一个模型,简称为 CODE:Capture, Organize, Distill, Express,总结来说:

仙剑客栈二评测

仙剑客栈二评测系列介绍仙剑客栈是一款以仙剑奇侠传为背景的模拟经营游戏,借用了仙剑的背景和角色,剧情时间在《仙剑奇侠传》之前,但由于属于小品外传性质,所以本作的剧情对全系列不产生任何影响。玩家将扮演李逍遥和赵灵儿、林月如、阿奴一起管理客栈。游戏中也包含了角色扮演和恋爱养成等要素 —— 维基百科。就在 2001 年 8 月 31 日,在发售第一部「仙剑奇侠传」六年后,「仙剑客栈」第一部发售了。跟大家以往熟悉的回合制探索迷宫类的玩法不一样的是,「仙剑客栈」是一个经营类的游戏,在游戏里你将扮演正传里的李逍遥和赵灵儿、林月如、阿奴一起管理客栈,你所做的事情有:主线是经营客栈,目标是提升客栈等级,

MyerTidy × OneDrive 帮助你整理历史素材

MyerTidy 是一个帮助你在 macOS 和 iPadOS 上整理素材(文件)的 App,你可以根据文件扩展名、创建日期、媒体长宽比等分类方式对文件夹的素材进行操作:归类到一个文件夹或者进行删除操作。很适合在从相机导入到 Mac、iPad 后在进行二次创作或者云同步之前进行整理。v1.0.2 版本更新MyerTidy 已经上线 App Store 有一段时间了,期间它帮助了我进行了好几次摄影活动输出的素材整理:这几次个人摄影活动都是靠 MyerTidy 来帮助整理的想知道 MyerTidy 的更多介绍,可以见:导出素材后的第一步:

导出素材后的第一步:MyerTidy 帮助简化你的工作流

尽管我们越来越多地使用手机来记录生活,就连「修图」这个事情也在移动设备端完成,我们可能只会使用电脑来接收通过 AirDrop 传来的单张图片,然后来进行「精修」。但对于媒体工作者、个人摄影师以及更加专业的影视行业工作者而言,他们需要在电脑上完成他们的工作,而素材的产生,会来自以下设备:手机专业相机运动相机无人机等等而把这些设备的素材导入电脑,我们通常有以下步骤:把存储卡拔下,插到电脑,然后把素材拷贝出来,放到某个文件夹需要按照素材拍摄日期进行分组,把不同拍摄日期(甚至是地点)的素材,放到一个文件夹里因为素材类型也有很多,JPG, Raw 和 MP4 格式的素材经常混在一起,也需要手动分开,方便在文件管理里浏览素材这一系列操作都比较机械,尽管可以通过文件管理器的搜索过滤等操作来手动完成,一次两次其实还好,

iPad Pro 妙控键盘体验

总算还是入手了 iPad Pro 的妙控键盘了,尽管还是通过二手的形式入的,但总体体验来说,还是可以的,除了一个小插曲:卖家之前贴了膜,我在问清楚之前直接撕了,导致留下了非常难看同时手感很差的痕迹。不知道怎么地想起来小时候拿橡皮擦擦内存条的经验,于是下楼买了两个(我还真怕一个不够),然后使用了以下方式来解决:首先直接用橡皮擦用力擦把橡皮擦用手清理干净后,拿毛巾湿水擦拿干毛巾擦干上面步骤反复几次然后自然风干等干了后,如果还有一些小的痕迹,那么可以直接用干的手指涂…在简单使用了后,已经能输出一些自己的一些心得了。硬件方面首先,从硬件方面看,键盘的质感还是不错的,当然 Apple 的败笔之作——蝶式键盘可真是害人不浅,目前公司给我用的旧电脑也还是蝶式键盘,可谓是一大祸害。当然这个键盘本身其实用得不是特别习惯,别说 MacBook

谈谈 Android 渲染机制:如何绘制并显示一帧图像?

本文将介绍 Android 的渲染机制。了解 Android 的渲染机制不论是对日常的开发,还是渲染问题排查都会有帮助。本文希望能带你了解 Android 是如何绘制并显示一帧图像的,同时会涉及 Perfetto UI 的使用,以及带来一些延伸的思考问题,感兴趣的可以在阅读的同时同步使用 Perfetto UI 进行尝试。经典问题 :如何在正确的时机获取 View 的尺寸?先看一个经典的例子,如何获取一个 View 的尺寸?很简单是吗?val w = view.width val

Apple Silicon 移动端开发填坑记录(持续更新)

尽管网络上已经有很多关于使用了 Apple Silicon: M1 设备(包括 MacBook Air,MacBook Pro 和 Mac mini)的开箱 & 介绍和性能评测,但评测毕竟是评测,如果你作为一个目标用户,那么可能还是想看点对你购入和日常开发有帮助的而且容易检索的内容。于是便有了本文。先说一下 Mac mini 使用体验:非常安静。使用几天下来,编译我司 Android 项目完全没声音,个人项目更加不用说了。使用以往的 MacBook Pro,

【DevTips】使用最相符的 Rx 流

如果你在盲目地使用 Observable,那么需要注意下,Rx 里的流也是很多类型的:FlowableObservableSingleMaybeCompletable如果你需要对外提供 API,准确地,对外提供一些方法,那么准确地使用跟业务场景最相符的 Rx 流,能有效地减少调用方的学习成本,降低出错几率。具体地:使用 Flowable,如果你需要支持 back pressure,也就是说,你上游的数据可能会发射非常频繁,而下游可能会处理不过来;使用 Observable,如果你的上游可能不太频繁地发射多次数据,下游都能处理过来;使用 Single,以表示上游的操作只有两种结果:成功和异常;一个例子是,发起网络请求,

【DevTips】谈谈 Kotlin 里构建对象

Builder 模式大家想必也都知道。但是应该在什么时候使用呢?如果满足以下条件,那么应该使用:需要构建的对象是 Immutable 的,也就是说,这个对象的实例属性应该是不能被更改的。需要构建的对象的可设置属性非常多,以致在 constructor 里塞下所有参数对调用方来说会非常麻烦。那么 Java 里常见的 Builder 模式再简单不过了(以下例子做了缩短,同时用了 Kotlin 来表达):class AppRequest { private var uid: String? = null private var appId:

android

【DevTips】Kotlin Coroutines Recipes

说起来,也有用 Kotlin Coroutines 一段时间了,多多少少会有些经验和想法。刚好前些天参加了一个 Kotlin Everywhere 的开发者会议,所以也打算就 Kotlin Coroutines 聊聊一些经验。文章标题名为 Kotlin Coroutines Recipes,Recipes 是菜谱的意思,这里不会去翻译官网上的文档,翻译这种事情很多人做过了,这里我主要结合一些例子去提供一些实践的经验。当然了,这里写的不一定就是对的,所以请保留态度地阅读,非常欢迎讨论。同时,没有特别说明,下面的例子会使用 Kotlin 标准库里的方法和类,不使用

journey

库布齐沙漠指北

端午期间去了个地方——库布齐沙漠。在很早之前就想去走一趟沙漠,刚好之前有朋友去过,于是咨询了下后,赶紧报了个团就出发了。接下来我会以「浅体验的角度」分享一下徒步沙漠的一些注意事项以及关于摄影相关的内容。一些背景如果忽略「天漠」的话,那么「库布齐」可以说是距离北京最近的一个沙漠了吧。「库布齐沙漠」位于内蒙古鄂尔多斯市郊,距离包头和鄂尔多斯都比较近,从北京出发的话约需要 8 小时到达。此沙漠长 400 公里,宽 50 公里,说小不小,说大不大。能看到一望无际的沙漠景观吗?如果你站在最高的山丘处,那么还是能看到远处的山,甚至是郊区的小房子。

More of RxJava

这是一系列文章的第一篇,这个系列没有什么非常明确的主题,可以看做是日常开发和协作里悟出来的一些技术相关的事情——或者说是技术方面的随笔。这一篇是关于 RxJava。曾经看到这么一篇文章,称赞 Kotlin Coroutine 大好,RxJava 可以直接丢弃了;也曾经看到一篇文章(事实上正是我刚开始学习 RxJava 的时候看的),称 RxJava 的本质就是异步。如果把这两篇文章放在一起看,那么似乎 “合理”:Kotlin Coroutine 解决了 JVM 世界里过去的 Callback 形式的异步回调,而 RxJava 的本质就是处理异步,

vlog

VLOG 000:北京,北京

很久之前就想做一个视频,或者说是现在大家喜欢说的 VLOG。但是做关于什么的视频呢?说实话心里不是非常有底——如果你有留意我社交账号的描述,可以看到这么一句简单的描述——拿相机的程序员。尽管我认为我「程序员」的属性可能还是占多数,但是在日常里我还是挺乐意拾起相机去拍摄生活的一些日常和非日常的事情——注意,这里用的是词是「拍摄」。关于摄像我一直很少有刻意去做。究其原因,如果追求质量的话,录制视频显然比拍摄静态照片难度高不少,技术上做到稳定不抖,题材上要做到有意思,再加上最后的剪辑,其实足以让人产生放弃的想法(没错,我已经挣扎很久了)。尽管如此,我还是决定在视频方面做一些尝试,因此这是一段一分多钟的我定义还算是 VLOG 的 VLOG。既然是第一段,我自我要求没有多高,