iOS 平台 SQLite 性能优化

开始

在 ios 平台,数据永久化的存储方式就那么几种,比如说 coredata,比如说realm,还有nosql的几种方案,但是很遗憾,nosql的几种方案支持的功能都还是太少,这样就让对它们的选择显得十分鸡肋——毕竟,如果是简单的应用的话,那就还不如其他方案来的方便快捷——虽然nosql是趋势。

这次我们来谈谈另一种比较常见的储存方案——sqlite,这个东西很厉害,它是一个用c实现的[……]

点击跳转以继续阅读

如何自定义 落格输入法 ?

如何自定义落格输入法?

在落格输入法中,我为你提供了强大的自定义功能。不论是简单地新建一种双拼方案,还是导入一份五笔输入法的码表,它都能完成。

首先,我们从概念说起

按键映射方案

落格输入法用它来生成对应的映射方案,比如智能abc、比如自然码等等。按键映射方案有两个文件,比如“智能ABC.plist”那么就要有对应的“智能ABC_rev.plist”,后者不是必须,但如果你想开启“按键[……]

点击跳转以继续阅读

获取 中文 维基百科语料

最近在做输入法的词库,实现新的整句输入模型,(回头我会把之前的基于词的整句输入模型讲讲),新的整句输入模型是基于 HMM (也就是隐马尔可夫模型)来做的,当然了,由于我个人设备资金等有限,只做了二阶矩阵。不过即使如此,模型还是需要训练的。

当然,不是说用小说名著来训练就不好,只不过很难找到各行各业的相关小说,毕竟,它们覆盖的面积太单一了,这其实并不是高质量的语料库。说起高质量,那自然是非维基[……]

点击跳转以继续阅读

swift 中内存狂飙的问题

在使用 Swift 语言进行开发的时候,很多朋友会莫名奇妙地遇到内存爆满的问题,明明有 ARC ,明明释放了内存,却还是让程序的内存占用随着循环而一路飙升。

这里其实并不是出现了内存泄露,这其实是 ARC 的一个机制:在每一个主 Runloop 结束的时候进行清理。也就是说,它有一套必要的缓存机制——毕竟,实时释放的话谁能保证你的局部变量要不要留下来给后续的代码使用呢?

但显然,这个必[……]

点击跳转以继续阅读

SourceKitService 占用大量内存和 CPU 的解决办法

在使用 Xcode 进行 Swift 语言开发软件的时候,不少人在项目中后期都会遇到这么一个问题,如题图那样:SourceKitService 占用大量的 CPU 和内存,甚至直接导致系统卡死。

那么,这到底是怎么一回事呢? 在 StuckOverflow 上的高票答案是这么说的:

在活动监视器里找到 SourceKitService 双击它,看它打开了哪些目录,去把缓存删除然后强[……]

点击跳转以继续阅读

如何学习自然码辅码?

自然码是个比较古老的双拼方案了,有多古老?古老到现在不少用户都根本不知道它还有一套辅码方案。

自然码的辅码称不上是形码,它之所以被称为是辅码,就是因为这套方案的设计初衷还是作为辅助,所以它并不能像小牛辅码那样做到非常低的重码率——但是加上音的话,用起来还是很高效。

为什么就算如此还说它输入高效呢?因为它设计之初就是为了辅助,这就直接决定了这套方案十分容易被接受和学习!有多简单?就是偏旁[……]

点击跳转以继续阅读

让 SSH 走代理连接服务器

很多网络运维、或者站长需要通过 ssh 来管理服务器、vps,如果不凑巧,你和服务器之间相隔了一堵 GFW,那么由于 GFW 会分析 ssh 数据包,结果就是导致稍微慢一点的网络就会让命令卡一分钟。

GFW 现在完全有能力分析 ssh 流量特征,以判断你是在真的使用 ssh 配置服务器,还是使用它作为代理来浏览网页。

如果有什么好的办法让ssh像浏览器那样指定翻墙就好了。

事实上,还真有[……]

点击跳转以继续阅读

Swift 使用 InputMethodKit 写输入法

如何在 iOS 上写一款输入法?这个问题已经被很多人解答过了。你可以轻易通过 Google 找到一篇详细的教程。但是,在 macOS 上写一款输入法就没那么简单了。

好吧,严格来讲,是指用 Swift 在 macOS 上写一款输入法很难。主要的原因是 从来没有人做过这件事情 。

目前能够获取的资料,除了苹果官方的 API 说明(一点用也没有),以及官方的 demo(很详细但过时了,而且[……]

点击跳转以继续阅读

Swift 3 里的 GCD

Xcode 8 正式版已经发布,我要在第一时间迁移我的项目到 Swift 3 —— 毕竟这是趋势。

在迁移的过程当中我遇到了很多问题——比如 Xcode 提供的自动迁移工具根本没有用,在我等待了两个多小时之后,我放弃了,选择手动迁移——毕竟,Xcode 的自动更正也是很好用的。

然而——在迁移过程当中,Xcode 一直处在 “indexing” 中,功能也不怎么全……可能是由于 Swi[……]

点击跳转以继续阅读