I'm TualatriX - RSS Feed

Hello! This is TualatriX's blog

Latest articles

Manico 八周年小记

今天看到备忘,发现 Manico 已经 8 岁了。2013 年 7 月 23 日我写过一篇《写在Manico 1.0正式发布后》,记录了围绕 Manico 前前后后的一些事情。记得我是从这款作品开始给自己贴上「独立开发」的标签的,作为我的第一款 macOS 上的收费软件作品,八年后再看这篇文章,回顾当时仍有不少亮点,也可以看到略显稚嫩的部分。今天,就当温故而知新,以此再展望一下未来吧。 一次真正的独立开发+独立销售 「独立开发」这个词,近来我已不太多提了。一来是觉得老贴个标签意义不太,二来是将重点转向做更好的产品,而不是强调什么独不独立。在 2013 的时候,做一个独立开发确实是一件新鲜且很酷的事情,现在回想,当时我做了真的很多工作,不仅是独立开发,还因为有独立销售。 Manico 的初个版本因为有一些技术上的问题没有解决,所以当时没办法上架...

PasteNow 1.6 正式发布:增加粘贴项目并提前的选项,完善搜索粘贴体验

继上个版本 1.5 后刚好两周,今天 PasteNow 1.6 又发布了。这个版本针对部分用户更习惯于将用过的内容提前的行为增加了相关选项,并且优化了搜索并粘贴的体验。现在 PasteNow 用起来更便捷了。让我来详细介绍一下吧! 将最近用过的项目提至最前 在 PasteNow 的最近几个版本中,我收集到不少用户的反馈,想要最近用过的项目移至最前这个行为。因为最近用过的内容有几率可能再被用到,所以重新排序是比较合理的。而且从剪贴板历史记录按时间排序的角度也很合理:被写入过剪贴板的内容,无论是不是以前也产生过的内容,此刻它就是一条新的内容。 PasteNow 一开始没有做成这样,是因为我一开始就把 PasteNow 设计为「顺序/逆序粘贴」的场景下去使用了。比如我常常会复制几条内容,然后会立刻去对应的...

PasteNow 1.5:完善多屏幕支持+撤消删除功能+清空剪贴板支持

继 4 月 23 日发布了 PasteNow 1.3 版本后(见《PasteNow 1.3:完善快捷键体验+未来计划》),过去三周, PasteNow 又迭代了三个版本,目前最新版本是 1.5.1。过去几个版本,PasteNow 按之前的所计划的那样,完善了多屏幕方面的支持,同时也带来了其他未在计划中的不少新特性。就让我在本篇中详细介绍一下吧! 多屏幕下的体验完善 PasteNow 刚刚发布的时候,我就了解到有不少用户是在多显示器下的环境下工作的,大多用户都是一台 MacBook Pro 加一台外接显示器,有时候可能会用「随航」功能把 iPad 做为第二个或第三个屏幕。而我因为最近的使用习惯是只用单屏幕(一个 4K 的外接显示器),因而在开发过程中没能发现 PasteNow 在多屏幕下的一些问题。...

PasteNow 1.3:完善快捷键体验+未来计划

半个月前我发布 PasteNow 之后,在头几个版本中,我解决了一些比较严重的、优先级比较高的问题,同时收到了大量的非常有用的反馈。这些反馈让我知道了大家对一款优秀的剪贴板工具有什么样的期望,这些期望也足矣让我在未来的几个月好好去消化、设计并打造出一个更好用的 PasteNow。 今天这个 1.3 版本则把重点放在了完善快捷键体验上。借着这个版本发布之际,我也要分享一下大家关心的未来(iOS)计划。 1.3 版本的全快捷键体验 剪贴板工具的最首要目标就是提升日常操作效率,我也收到了很多用户对很多快捷键操作的反馈,因此最近几个版本,我专注在提供原生快捷键操作的体验上。到 1.3 版本为止,PasteNow 已经是一款可以几乎可以用全键盘操作来完成的剪贴版工具了,也就是说,你可以双手不离键盘完成以下操作:...

PasteNow 1.0 正式发布:剪贴板工具的新选择

今天很高兴和大家宣布我的新产品,它的名字叫 PasteNow,这是一款面向 macOS 平台的剪贴板工具。就如名字所表达的那样,它是一款能让用户便捷地完成「Paste」这个操作的工具。本篇我想好好介绍一下 PasteNow 是什么,以及开发它的背景故事。 开发 PasteNow 的背景故事 PasteNow 是一个剪贴板管理工具,它可以扩展你的剪贴板,从一份变成无限份,通过在后台自动保存你的所有剪贴板数据,改变日常使用或记录临时数据的习惯,使工作效率更上一层楼。 在日常使用电脑的过程中,无论是开发者与代码打交道,还是文字工作者处理文本,还是设计师操作图像,我们都会在有意无意间用到剪贴板,将其作为一个临时的数据中转站去使用。通过「复制」和「粘贴」这两步操作,我们在这个临时空间中保存和读取数据,就完成了对它的主要使用过程。...

SwiftUI Previews 不工作时的一种解法

去年 11 月末,我在写 SwiftUI 代码时,常常遇到 Previews 不工作的问题。用 SwiftUI 就是为了预览方便,因此 Previews 不工作是不能忍的。当时用了一个 Workaround 来解决这个问题,没想到今天在 Xcode 12.5 beta 2 又发生了类似情况,之前的 Workaround 依然有效,于是写篇记录。 SwiftUI Previews 不工作的现象是: 省略掉的文字大约是:XXXTests.swift must belong to at least one target in the current scheme in order to use previews 非常诡异,我的这个 XXXTests.swift 明明是隶属于 Tests 这个...

如何正确地使用 Clubhouse

2021-03-06 更新 当你看到这篇文章的时候,我已经不再使用 Clubhouse 了。 最近我手机的屏幕时间被 Clubhouse 彻底夺走了,讽刺的是,这是一款实时语音聊天的 App:它应该是放在后台听,不该占用屏幕时间才对。 在我几乎天天花很多时间打开它、浏览 Room、看看大家都在哪里聊什么或听什么的时候,我想真的很久很久没有一款社交型 App 能如此持续地夺走我的注意力了,这场景很像十年前初玩社交网络时的状态,每天都要不停地刷刷刷。而它更可怕一些:文字照片类社交网络的内容,是会刷完的(当然刷完后也可以去关注新的),而它作为实时的语音聊天,时刻都有人在聊各种话题,有些话题从早聊到晚,换了一波又一波的人,几乎没有停止的可能——就像看电视,只要你想看东西,不停地转台就可以了,上百个频道任君挑选。...

谈谈如何合理地为 App 与 Web 项目制定维护计划

上周我有两项工作内容是和产品维护有关的,刚好一个是 App 项目,一个是 Web 项目,每个项目都遇到了一点问题,于是借此我决定好好梳理一下如何为 App 与 Web 项目制定合理的维护计划,让项目能在持续良性运作与节省维护成本之间找到一个平衡。 App 项目的维护计划 我的 App 项目就是我发布于 2013 年的 macOS 桌面效率工具——Manico,目前它的最新版本是 2.8.1,更新于 2020 年 12 月,目前可以运行在 macOS 10.12 及以上更新的系统。 作为开发者,我自然希望我的产品可以尽可能多的运行在更多的设备与平台上,因此它支持 macOS 10.12,这个发布于 2016 年,整整五年前的操作系统版本。 然而过去几个月,大概是 macOS Big Sur...

使 Django 在搜索 Char 类型的 ArrayField 时不区分大小写

很久以前用 Django 做的一个外包项目,我用了 PostgreSQL 的 ArrayField 套 CharField,非常方便的实现了基于 Tag 的搜索。最近客户反应了一个小问题,问能不能让搜索 Tag 时可以不区分大小写,我简单的研究了一下,发现是可行的。 首先,这个 Field 是这样定义的: tags = ArrayField(models.CharField(max_length=32), blank=True, null=True, verbose_name="标签") 然后,搜索时是这样调用的: queryset.filter(tags__contains=[query]) 问题来了,用这种方式,不仅没办法实现不区分大小写的搜索,甚至 Tag 必须得全匹配,少输一个字母都不行。所以,要如何实现搜索时不区分大小写?很简单,在搜索时改成这样的代码即可:...

如何判断 SwiftUI Previews 环境以条件运行相关代码

最近在写 macOS 产品,不知道从什么时候开始,在 Xcode 里进行 SwiftUI Previews 时会把 App 也跑起来,导致总是打断我写 SwiftUI 代码。从 Xcode 的视角就是,它执行 SwiftUI Previews 的过程中,把 AppDelegate 给完整地跑了一遍。 我去测试了之前用过 SwiftUI 的两个项目,发现也是这样。但是我新建的干净 Xcode 项目,无论是 AppDelegate 的 Life Cycle 模式还是 SwiftUI 的 Life Cyle,却没有这样的问题。 在我找到真实的原因之前,我用了一招 Workaround 解决了这个问题,那就是利用环境变量XCODE_RUNNING_FOR_PREVIEWS 来判断是不是 Xcode...

Discover, share and read the best on the web

Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!