10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:301432
用户头像

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

关注

评论

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

YARN工作流程

穿过生命散发芬芳

YARN 10月月更

Spring IOC和AOP

Studying_swz

spring 10月月更

一文带你入门微服务,通俗易懂

wljslmz

架构 微服务 10月月更 单体服务

eeui安卓开发--如此简单

江拥羡橙

android Weex 安卓 10月月更

Databend 存储架构总览

Databend

Linux学习-常用指令

可口也可樂

后端 Linux Kenel 10月月更

担时代任务 与国家同频 | 九科信息创始人万正勇:自主可控是中国超级自动化技术发展的必要条件

九科Ninetech

RPA 信创

前端JavaScript小技巧【建议收藏】

江拥羡橙

JavaScript ES6 10月月更

Linux学习-权限的理解

可口也可樂

后端 Linux Kenel linux 文件权限控制 10月月更

ios苹果打包——超详细的教程分享

江拥羡橙

ios CocoaPods 苹果 Weex 10月月更

Node.js入门

Studying_swz

Node 10月月更

成功建设私有云需要考虑这些关键点

阿泽🧸

私有云 10月月更

【kafka原理】kafka Log存储解析以及索引机制

石臻臻的杂货铺

kafka 10月月更

Linux学习-开发工具yum/vim/gcc/g++/gdb

可口也可樂

开发工具 Linux Kenel 10月月更

Mybatis学习

Studying_swz

10月月更

【Java深入学习】一个关于“锁”的程序-中

Geek_65222d

10月月更

leetcode 450. Delete Node in a BST 删除二叉搜索树中的节点 (中等)

okokabcd

LeetCode 数据结构与算法

“程”风破浪的开发者|国产之光,鸿蒙系统

急需上岸的小谢

OpenHarmony “程”风破浪的开发者

2022-10-21:你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。 你要用 所有的火柴棍 拼成一个正方形。 你 不能折断 任何一根火柴

福大大架构师每日一题

算法 rust 福大大

【kubernetes技术专题】Kubernetes架构分析介绍篇(入门篇)

码界西柚

Kubernetes k8s Kubernetes Serverless 10月月更

程”风破浪的开发者|个人信息管理

CODA

学习方法 信息管理 10月月更 “程”风破浪的开发者

一起学习 Go 语言设计模式之建造者模式

宇宙之一粟

设计模式 建造者模式 Go 语言 10月月更

促双碳|AIRIOT智慧能源管理解决方案

AIRIOT

物联网 智慧能源

正向代理与反向代理

急需上岸的小谢

10月月更

Spring事务传播机制

急需上岸的小谢

10月月更

【kafka原理】 消费者偏移量__consumer_offsets_相关解析

石臻臻的杂货铺

kafka 10月月更

spring用到的设计模式

急需上岸的小谢

10月月更

Spring Boot「10」Propety 验证

Samson

Java spring 学习笔记 spring-boot 10月月更

企业如何添加内嵌式的帮助文档

Baklib

帮助文档

docker学习笔记

Glibc---_IO_do_write函数逻辑分析

桑榆

源码刨析 10月月更 C++

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