编程开发

Kotlin/Android 检测文本编码

最近在做 Android 版本的落格输入法,在导入码表的时候我犯了难。因为落格输入法的码表是支持 utf8 和 gb18030 两种编码格式的,甚至我自己内置的码表也是混用这两种格式的。在 Swift 或者 Python 中,如果你使用错误的编码去解码文本,就会收到报错。利用这个办法,我可以轻松实现[……]

点击跳转以继续阅读

macOS 使用 atos 命令解析任意崩溃记录和采样数据

最近落格输入法遇到了几个比较难以复现的问题——关键是它不会导致崩溃。这就让崩溃统计功能根本无效,具体表现为在某些情况下输入法会突然卡住几秒,叫人十分恼火。后来我想到,macOS自带活动管理器中,有个“采样”功能,可以看到对应进程当前的执行(调用)状态,那我是不是可以用它来分析错误原因呢?

在和[……]

点击跳转以继续阅读

clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9

通常,你会在安装某个 Python 包时遇到这个错误,这个包肯定是一个包含了 C++ 代码的包。

这是由于 macOS 更新后出现的不兼容,一般来说,这个包的维护者应该已经对这个特殊情况做出了兼容:

这样在 macOS 上就[……]

点击跳转以继续阅读

Python 实时检测自身内存占用

最近在做文本统计,用 Python 实现,遇到了一个比较有意思的难题——如何保存统计结果。

直接写入内存实在是放不下,十几个小时后内存耗尽,程序被迫关闭。如果直接写入数据库吧,每次写入又太慢了,本来就十几个小时了,这样下去就要往星期上数了,也不是个办法。

最后,我想到了一个两者兼顾的方案[……]

点击跳转以继续阅读

Swift Python 互通 Json 数据签名

最近很流行自签证书进行 HTTPS 解密,然后就有不少人通过修改苹果的内购回执实现对 App 的破解。实际上验证购买应该是 App 连接服务器,服务器来和苹果的服务器进行通信,然后将结果发送给 App 的——但不少开发者(包括个人开发者以及企业开发者)懒得去专门维护服务器,所以直接用 App 和苹果[……]

点击跳转以继续阅读

正确使用 PIP 安装 Python 包 避免 TypeError: ‘module’ object is not callable

在此之前,我一直是这样在 macOS 上安装和使用 pip 的:

后来,这个方法失效了,变成了这样:

终于有一天,pip 提示我它需要更新,于是:
[cray[……]

点击跳转以继续阅读

从 cns11643 中文标准全字库生成仓颉和速成官方码表

一直以来,我对仓颉速成这对难兄难弟是很有意见的……网上流传的码表版本繁多,但名字都叫“仓颉”,和五笔对比起来,好歹五笔还分个 86 和 98,再新一点还有 新世纪 等等,但仓颉没有,不论什么版本的仓颉,都叫“仓颉”。

这就很尴尬,每个人用的仓颉码表都不一样,但不一样在哪里,他自己也不知道。

总[……]

点击跳转以继续阅读

落格输入法是如何处理按键消息的

要做一款移动设备上的软键盘,那么怎么处理用户的点击位置,就是你遇到的第一个难题,在这个问题上,我也走了很长的路。

我把落格输入法开发以来的触控逻辑大致分类为三个阶段,现在分别来讲讲设计思路,希望能够对你有所帮助。

第一代触控引擎

显然,对于一个初学者来说,没什么比系统控件更好用的了,功能全[……]

点击跳转以继续阅读

Swift 里的数组去重方案

在使用 Swift 进行开发落格输入法时,我遇到了一个很有意思的问题——去重

众所周知,输入法的候选在计算出来后总会有可能是重复的选项(比如码表和词库中都有某个词,也许他们编码不同,但字是一样的之类),这时候就需要去重,但又要保持候选的先后顺序不变。

别人的解决方案

如果你去网上找,那么[……]

点击跳转以继续阅读