写点什么

Google SoC 系列:Rubyland:使用 Ruby 拓展桌面应用

  • 2007-06-28
  • 本文字数:2290 字

    阅读完需:约 8 分钟

桌面自动化技术,是一个不断在改善并且适应当前技术发展的主题。苹果公司的 Mac 平台,在很多年之前就拥有了自己的 AppleScript 技术,最近又添加了 Automator ,使用户可以在脚本代码中自定义实现特定功能的 actions 动作,让程序在某些事件发生时自动处理那些令人厌烦的重复性作业任务。同样在 Windows 操作系统下,用户可以使用 Windows Scripting Host 工具来监听并记录系统动作,而 Unix/Linux 操作系统的用户,也可以使用 DBus 工具来进行相似的操作。

Rubyland 是 得到 Google 公司暑期编程活动(Summer of Code,SoC)资助的开放源代码项目,由 Scott Ostler 发起。Rubyland 项目使用 Ruby 语言编写逻辑处理脚本,实现跨平台自动化脚本处理的重用方式。Scott 在 Rubyland 项目中实 现的处理机制可以通过事件源调用处理脚本,事件源可以是文件系统(比方说,当存在于 /foo 目录下的文件被更改时,激发事件处理脚本)或是邮件程序(比方 说收到 3 封新的邮件)。Scott 还给出了其他的一些例子:

尽管这个夏天我的注意力会集中在 Rubyland 项目编码的完善之中,但是我也打算编写一些初始的事件源,为的是展示 Rubyland 的功能,同时也是为了做着好玩。首先我将会实现对 Growl 消息通知的连接,目前已有越来越多的应用开始使用 Growl,并且这些应用也期望自己可以得到 Rubyland 提供的功能支持。需要实现的另外一个功能是,当文件夹里的内容发生变更时,可以使应用自动探知到变更的内容,并调用相应 Rubyland 脚本。除了这两个特性以外,我还在尝试另外一些想法,我们将看看下面项目会是如何进展的。

Growl 是一个专为苹果 Mac OS X 系统设计的通知系统,用于实现程序中通知用户某事件发生的统一消息提示。

Rubyland 的代码细节实现是基于 Ruby 语言的标准函数库,对此 Scott 这样解释道:

目前,计划将在(RubyForge 上的开源项目)EventMachine 基础之上实现 Rubyland 的核心代码,通过 dRB 或其它相似的分布式编程机制,实现事件源之间的消息通讯。很多与之相关的改进已在近期这段时间内完成,并且我可以确定的说,在未来的几周之内,人们 将会在项目不断的改进和完善中看到更多惊喜。

分布式 Ruby 库 dRB 已经包含在 Ruby 语言运行时的安装包之中,为开发者提供了一套可以使代码跨越 Ruby 运行时环境进行通讯的机制。 EventMachine 则为编写网络客户端和服务器之间的事件处理过程,提供众多函数类库的功能调用。

当然,Rubyland 实际上就是它的事件源和相应脚本的组合。Scott 希望,所有使用 Rubyland 的开发者都会感觉到,为 Rubyland 编写新组件是一件轻松而愉快的事情,对此他这样说道:

围绕着 Mac OS X 平台的 TextMate 文本编辑器所产生的一个有趣的用户群体,让我感到非常惊讶。当有人付出了一些额外的努力,将他们自己的成果打包带给其他人时,接 着就会出现一个非常神奇的网络效应,把整个社区都带动起来。对于 Rubyland 项目,我的目标是尽量实现桌面任务处理过程的简化,如果有人为完成一项处 理任务付出了大量的努力,那么对于需要同样功能的人来说,任务实现将在 Rubyland 的支持下将会变得简单。

计划中的另外一个想法是,在 Rubyland 项目中通过监控即将发生的事件,以及猜测用户当前的处理动作,来整合不同的事件源。这项功能将会对用户动作与可调用的操作系统资源之间的关联建立,起很大的帮助作用。 Eclipse 的 Mylyn 项目(前 Mylar 项目)就是实现以任务为中心编程的优秀项目范例。Mylyn 项目允许用户自定义任务,并记录过程中哪些资源(文件或源代码等等)被程序调用。如果用户决定进行另一项处理任务,任务所需的文件可以被 Mylyn 记录,并且针对所需资源提供相应的用户界面。用户在下一次继续这个任务时,必要的文件就可以相应地被 Mylyn 和这些资源相关的 UI 预先打开。在一定程度上讲,上述的实现与操作系统如何处理作业上下文转换任务非常近似。 Tasktop Technologies 目 前也正致力于将这项功能应用在桌面客户端之上。在这样的机制下,采集到事件触发源越多,行为分析的有效信息也就越多,这也正是 Rubyland 事件源机制 派得上用场的地方。由于 Rubyland 计划在跨平台情况下表现一致,这是对它的一种可能使用方式,Rubyland 允许第三方开发者撰写他们自己的分析 功能模块,针对这一点 Scott 解释道:

两年前我曾为一个计划实现类似功能的在校研究生工作。他发现这样一个问题,即便是许多运行在 Mac 平台的应用拥有大量可用来监控 应用状态的 Applescript 脚本库,仍然需要做大量的工作来为给定的应用建立工作流程和资源模型,并且需要做更繁琐的工作来整合两种不同的模型。 Rubyland 通过现成地提供基本的探测功能和一系列事件源,为问题的解决给出更多可行的途径。这是一个具有挑战性的问题,相信通过 Rubyland 帮 助开发者解决这个问题会是一件非常有意义的事情。

当问及 Scott 如何规划项目并制定开发进程时,他这样说道:

我计划在暑假的中期之前发布第一个 Rubyland 版本,并且在版本发布的时候,已建立好日常交流所需的邮件列表,并可能会有相 关的技术论坛。如果希望一直关注项目发展的状况,可以订阅 Rubytalk 的邮件列表或者关注建立在 O’Reilly 上的博客,项目有关的消息都会在这里 发布。同时,所有感兴趣 Rubyland 项目的开发者都可以随时和我取得邮件联系,内容可以是关于尝试 Rubyland 已有的功能,或是希望 Rubyland 添加的新功能,总之,我非常愿意听到来自各方面的建议。:)

需要了解更多的信息,请参考 Scott 在 O’Reilly 博客上的第一篇文章,在这篇文章中,Scott 将会给出一些 Rubyland 项目使用的示例代码。

查看英文原文: Google SoC Series: Rubyland: Extending Desktop Applications with Ruby

2007-06-28 19:301374
用户头像

发布了 74 篇内容, 共 14.1 次阅读, 收获喜欢 3 次。

关注

评论

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

TiDB 监控架构解读

TiDB 社区干货传送门

监控

小红书数据架构及 TiDB 使用场景

TiDB 社区干货传送门

DM问题处理总结

TiDB 社区干货传送门

pd集群多副本数据丢失以及修复实践

TiDB 社区干货传送门

实践案例

国产主流数据库调研

TiDB 社区干货传送门

性能调优 实践案例

TiCDC使用心得

TiDB 社区干货传送门

使用Zabbix监控TiDB(一)

TiDB 社区干货传送门

实践案例

PD api基础框架源码分析

TiDB 社区干货传送门

TiDB 底层架构

一次 meet_lock 告警异常处理过程

TiDB 社区干货传送门

实践案例 故障排查/诊断

TiDB Coprocessor 学习笔记

TiDB 社区干货传送门

TiDB 底层架构

PD api基础框架源码分析

TiDB 社区干货传送门

TiDB 底层架构

TiDB HTAP 深度解读

TiDB 社区干货传送门

微众银行数据库架构演进及 TiDB 实践经验

TiDB 社区干货传送门

实践案例

把云数据库服务变成黑盒子:ServerlessDB for HTAP丨Hacking Camp 进行时

TiDB 社区干货传送门

实践案例

Placement Rules 原理

TiDB 社区干货传送门

TiDB 底层架构

TiDB run and debug on M1

TiDB 社区干货传送门

实践案例 安装 & 部署

DM2.0初体验

TiDB 社区干货传送门

从使用者到开发者,知乎参与 TiDB 社区背后的故事

TiDB 社区干货传送门

实践案例 数据库架构选型

伴鱼数据库之SQL审核系统

TiDB 社区干货传送门

【TiDB 最佳实践系列】PD 调度策略最佳实践

TiDB 社区干货传送门

实践案例

伴鱼数据库之监控系统

TiDB 社区干货传送门

线上mysql改表操作导致tidb同步延迟解决方法

TiDB 社区干货传送门

DM同步过程问题汇总

TiDB 社区干货传送门

不定期更新,记录一些小知识

TiDB 社区干货传送门

监控 版本升级 安装 & 部署

TiDB大规模删除实践

TiDB 社区干货传送门

管理与运维

DM v1 升级v2初体验

TiDB 社区干货传送门

【TiDB 4.0 新特性系列】BR 特性及原理解读

TiDB 社区干货传送门

TiDB 4.0 新 Feature 原理及实践:统一读线程池

TiDB 社区干货传送门

docker方式部署的tidb-v3.0扩容缩容pd节点后需要滚动升级整个集群

TiDB 社区干货传送门

TiDB AutoCommit OFF 问题

TiDB 社区干货传送门

实践案例 故障排查/诊断 新版本/特性发布

Flink 最佳实践之 通过 TiCDC 将 TiDB 数据流入 Flink

TiDB 社区干货传送门

性能调优

Google SoC系列:Rubyland:使用Ruby拓展桌面应用_Ruby_Werner Schuster_InfoQ精选文章