写点什么

看一看 Buzzword 拼写检查的实现

  • 2007-12-18
  • 本文字数:1247 字

    阅读完需:约 4 分钟

Buzzword 在九月份的发布中对在线文字处理器加入了由 Adobe Flex 框架实现的拼写检查。Buzzword 团队成员 David Coletta 上星期在他的博客“深入Buzzword 拼写检查”中与我们分享了这部分的实现细节。

Buzzword 的核心拼写检查引擎是 Grant Skinner’s Spelling Plus Library (SPL) 。SPL 是一个完全采用 ActionScript 3(Flash / Flex 的编程语言)实现的商业产品。

Coletta 在这篇博客中谈到:

我们通过使用 Grant Skinner 卓越的 SPL 为我们的编辑者提供字典查询并提供建议。SPL 完全由 ActionScript 3 实现,它非常小而且快,并且能够在启动应用的时候在后台下载字典并解压,而客户不用等待这个过程。除了提供使拼写检查可以方便集成到 Flex 和 Flash 组件的高级接口外,SPL 还为单词查询和建议提供了低级的 API(我们正在使用它)。有一个完全在客户端实现的解决方案非常好,这样就可以用在我们支持的离线功能时候。

这个博文中,Coletta 讨论了 Flash 运行时单线程天性所带来的挑战:

Buzzword 为了保持用户响应,必须对每一次键盘敲击做尽可能少的工作,但我们无法奢望使用后台线程,因为 Flash 对 ActionScript 只支持一个线程(通过使用定时器和 frameEnter 时间,也可以实现后台处理,但你必须自己小心管理这些时间处理程序和“主线程”。)在 Buzzword 中,我们的所有拼写检查都是同步处理的。我们曾试图通过保持一个文档的脏区域列表,然后在无操作的时候通过定时器处理这个脏列表,用以达到后台运行的效果,但这将大大增加程序设计的复杂度和不确定性,所以我们决定先看看完全实现在前台会怎么样。最后证明这个方法还是完全满足需要的。

除了在单线程环境中实现拼写检查,Coletta 还谈到了在性能方面的挑战:

我们要保证尽可能快的启动 Buzzword,其中要做的一件事情是在后台加载并解压主要的拼写检查字典。(事实上,SPL 已经实现了这个功能,所有的用户都能使用。)然而,后台字典加载有一个缺点:它在字典加载和文档编辑之间制造了一种竞争状况,一个熟练的用户用五秒或十秒钟就能完成工作,而此时字典可能还没有下载完。要让用户再等五或十秒是不行的。我们在文档打开时通常只检查有标记的单词,但在这种特殊情况下,我们必须在字典加载后重新扫描整个文档,因为客户已经在没有实时检查的情况下编辑了一些时间了。

请到 David Coletta 的博文继续读下去吧,他还讨论了在Buzzword 的协作功能中添加拼写检查的挑战。当与更传统的服务器端框架比较时,实现像Buzzword 这样的RIA 显然会有很多新的挑战。对于Flash 应用来说,挑战通常来自于平台提供的新功能——Flash 的客户端编程。

查看英文原文: A Look at the Buzzword Spell Checker Implementation - - - - - -

译者简介:戴垚,2000 年计算机硕士毕业后一直从事软件开发管理工作,目前在一家大型外企担任开发部门经理。关心软件技术和相关工具的动态,深信技术的使用应以创造价值为根本。目前致力于 SOA 的研究,希望能对业已复杂的企业环境有所帮助。参与 InfoQ 中文站内容建设,请邮件至 china-editorial@infoq.com

2007-12-18 21:021220

评论

发布
暂无评论
发现更多内容

历史命令被黑客删除?教你实时备份

运维研习社

Linux 4月日更 服务器安全

智能取色-为多元化的产品场景选择完美的色彩组合

百度贴吧技术团队

智能取色 个性化 视觉策略 沉浸感

大厂面试必须掌握的 Linux 性能优化题

倪朋飞

Linux 面试 性能优化

源中瑞智慧平安社区--为平安生活助力

13530558032

朱嘉明:《量子时代和数字经济2.0 》推荐序

CECBC

数字经济

新动能 · 新机遇:SaaS软件提供商 Zoho 25 周年战略再升级

科创人

莫高窟永不褪色的微笑,照耀在华为未曾止步的数据保护征程

脑极体

Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文

Java redis 程序员 架构 计算机

I'm Back

小天同学

思考 个人感悟 4月日更

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

钟奕礼

Java 编程 程序员 架构 面试

gorm源码阅读之schema

werbenhu

Go 语言 gorm

WebRtc学习之旅 —— 初认识

小驰笔记

区块链的创新技术给奢侈品行业带来了新的机会

CECBC

奢侈品

零基础学Tableau系列 | 01—Tableau简介、条形图与直方图

不温卜火

数据可视化 数据清洗 4月日更

从0开始的支付业务架构演进之路

誰敢得罪我

2021阿里面试通关手册必备:5000字面经解析(技术/攻克)

比伯

Java 架构 面试 程序人生 计算机

百家号在线视频编辑器的技术演进

百度Geek说

大前端

Golang 泛型浅析

D

开源 云原生 编译器 语言 Go 语言

可能是最糟糕的愚人节玩笑:科技史上的美式疯狂

脑极体

访问控制相关概念及常见模型

龙归科技

身份和访问管理

WebRtc学习之旅 —— Android端应用开发

小驰笔记

Redis 期中测试

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

探索js让你的网页“自己开口说话”

云小梦

JavaScript 音视频 audioContext API

Java高级研发:2021阿里天猫、中间件、蚂蚁金服JD要求+面题答案

钟奕礼

Java 编程 程序员 架构 面试

美团点评高级1234面:算法+HashMap+Zookeeper+线程+Redis+kafka

钟奕礼

Java 编程 程序员 架构 面试

区块链电子合同--赋能企业数字化转型

13530558032

1.4 Go语言从入门到精通:Go代理goproxy

xcbeyond

Go 语言 4月日更 goproxy

勇做全球区块链“分布式存储”领航

CECBC

分布式

拥抱云原生,基于eBPF技术实现Serverless节点访问K8S Service

UCloud技术

容器 云原生 k8s serverles

架构培训作业

肖春

架构师训练营

Rust:范型使用trait限定的一点总结

Microwood

rust Trait 范型 范型约束Output Add

看一看Buzzword拼写检查的实现_Java_Jon Rose_InfoQ精选文章