Author name: 哈呜

python 正则匹配任意字符的一个坑

错误: .* 是匹配除了换行符\n以外的所有字符。 正确: 正确匹配任意字符的表达式应该是 [\s\S]* 或 [\d\D]* 或 [\w\W]*。(中括号 [] 表示字符集合,匹配集合中的任意字符。) 错误: 另一种错误表达式是 (.|\s)* 。这个乍一看是没有问题的,但在执行 findall() 匹配的时,可能会遇到无法终止的情况。举一个例子看看: #!/usr/bin/python2 # […]

Sublime Text 修改插件代码

原因: 最近升级到了 Sublime Text 4,却发现 Compare Side-By-Side 插件在 Sublime 4 中有一个 BUG:对比窗口无法分列显示两个代码。 在它的代码仓库中找到了修复该问题的 Pull Request,但是原作者还没合并。所以只得自己动手去修改本地的代码。 Sublime Text 的插件包有两种存储方式: 1. Packed,大部分的插件都被打包成

鼠须管输入法配置

基本概念 Rime 是一个输入法框架,并不是狭义上的“输入法”,而是将各种输入法的共性抽象出来的算法框架。通过不同的配置文件,Rime 可以支持多种输入方案(Schema),这个所谓的输入方案就是我们狭义上的“输入法”。比如朙月拼音输入法就是 Rime 自带的一种输入方案,另外还有比如四叶草输入法(https://github.com/fkxxyz/rime-cloverpinyin)等等。 鼠须管、小狼毫、中州韵分别是 Rime 在不同操作系统下的实现程序。 Rime 的配置、词库文件均使用文本方式,便于修改。所有文件均要求以 UTF-8 编码。 在配置文件中,以 # 号开头表示注释。 配置文件所在的目录 Rime 有两个重要的配置目录: 共享配置目录

SwiftUI – 奇怪的 NSColorPanel

Base on macOS 10.15, Xcode 11.7.   1、首先,NSColorPanel 有一个静态“单例”对象:NSColorPanel.shared。我们可以直接使用这个静态对象。这个静态对象也可以被多个组件共享,但要注意如果共享的话,获得的 color 值也是共享的。   2、但 NSColorPanel 又不纯粹的“单例”模式,它允许我们手动新建 NSColorPanel 对象,而不使用 shared 静态对象。 (手动新建对象之前,最好调用一次

SwiftUI Bug – PlainButtonStyle Button 触发次数异常

Base on macOS 10.15, Xcode 11.7. 异常描述 1、当程序运行在非活跃状态时,且 NSWindow 为默认样式(可关闭、缩放、有标题栏等)。 此时如果点击 NSWindow 中的按钮,一般情况下会将该 NSWindow 变成活跃状态,同时触发按钮的 action 一次。但对于 PlainButtonStyle 样式的按钮,却无法触发其事件函数! 2、当程序运行在非活跃状态时,且

Countdown – A countdown task App on macOS 🎉 正式发布 🎉

这两个月初学 SwiftUI,做了一个练手的项目:Countdown。 这是一个运行在 macOS 上的倒计时程序,仿照着 Moment 和 ‎Countdown Timer Plus 这两个程序做的。你可以在列表中管理倒计时任务,可以将倒计时“便签”显示在桌面。   🎉 下载链接 🎉

SwiftUI Bug – NSWindow.setContentSize 获取到错误 size

发现这个问题的起因是我想实现一个 macOS App 的设置窗口,窗口大小自动随内部视图变化尺寸,并且是能平滑地有动画效果的变换尺寸。期望效果如下图所示: 这张 GIF 中的窗口来自 Preferences 。它的底层实现是利用点击 NSToolbar 上的 NSToolbarItem,来改变窗口内的视图,并根据新视图的大小设置窗口尺寸( NSWindow.animator().setFrame() )。但是这些都是基于 AppKit 中的类与函数,我希望能够简单的利用 SwiftUI 来实现类似的效果。 1、简单模型 我用 SwiftUI

SwfitUI 进阶 – View 与 NSView 互相转换

开发环境: macOS 10.15.5 Xcode 11.7 我其实挺喜欢 SwiftUI 的,首先 Swift 语言代码简练,SwfitUI 可以直接用代码进行布局且方便预览,很符合现代开发的习惯。而不是像 Objective-C 那样,语句繁复,还要用 Xib 这种可视化工具进行拖拽布局。 但不幸的是,由于 SwfitUI 是2019年才正式发布的,所以还有很多欠缺的功能,以及莫名其妙的 Bug。为了弥补这些不足,我们可以将成熟的 AppKit