大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

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

关注

评论

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

开发者有话说|谢谢当年那个埋下对科技热爱的种子那个少年

宇宙之一粟

个人成长 人生故事 9月月更

银行使用堡垒机成功案例分享一二

行云管家

银行 堡垒机 IT运维 IT资产

java多线程——CAS

StackOverflow

编程 计算机网络 9月月更

《近期BSN开发常见问题答疑(2022.9.23)》

BSN研习社

BSN 区块链、

茂名是几线城市?有正规等保测评机构吗?

行云管家

网络安全 等保测评 等级测评 茂名

OptaPlanner 开源项目

积木编程

设备健康管理“悬丝诊脉”之【石化行业往复式压缩机】

PreMaint

设备健康管理 设备预测性维护 往复式压缩机

OBCP实验全面升级|官方为你送上备考攻略+福利

OceanBase 数据库

OptaPlanner是什么

积木编程

规划问题的概念

积木编程

面试官:请实现一个JavaScript深拷贝

loveX001

JavaScript

软件测试 | 测试开发 | Vue3.0 如何写自定义指令

测吧(北京)科技有限公司

测试

计算机网络——回退N帧协议

StackOverflow

编程 计算机网络 9月月更

数据中台体系规划建设

穿过生命散发芬芳

数据中台 9月月更

低代码实现探索(五十)后台复杂业务构建扩展

零道云-混合式低代码平台

系统集成行业如何进行降本增效

Onegun

小程序 小程序容器

计算机网络——随机接入

StackOverflow

编程 计算机网络 9月月更

KaiwuDB 正式加入中国信通院数据库应用创新实验室

KaiwuDB

阿里云云通信作为CPaaS全球代表服务商,上榜Gartner报告

阿里云CloudImagine

阿里云 云通信 通信云 Gartner

不会还有程序员不知道跳槽季靠这1700道java面试题就能平淌大厂吧

Geek_0c76c3

Java 数据库 程序员 架构 面试

软件测试 | 测试开发 | 如何提高站内SEO

测吧(北京)科技有限公司

测试

Docker与Jib(maven插件版)实战

程序员欣宸

Docker 9月月更 Jib

三步“上链”,从此告别黑心假酒

旺链科技

区块链 产业区块链 企业号九月金秋榜 酒业

IPQ5018, 802.11ax,wifi 6e,QCN9074//IPQ8072A IPQ8072 IPQ8074 IPQ8074A 4x4/8x8 2.4G & 5G 802.11ax //Wallys

wallys-wifi6

IPQ8072 ipq5018 IPQ8074

9面阿里Java岗,最终定级P6拿P7工资,分享学习经验

Geek_0c76c3

Java 数据库 开源 程序员 架构

105道Java面试题,认真思考对你面试很有价值

Geek_0c76c3

Java 数据库 开源 程序员 面试

软件测试 | 测试开发 | kafka 从入门到了解

测吧(北京)科技有限公司

测试

如何保障物联网平台的安全性与健壮性

EMQ映云科技

物联网 IoT emqx SSL/TLS 9月月更

三次握手与四次挥的问题,怎么回答?

loveX001

JavaScript

基于EMR的新一代数据湖存储加速技术详解

阿里云大数据AI技术

大数据 企业号九月金秋榜

软件测试 | 测试开发 | 如何用 docker 搭建虚拟环境

测吧(北京)科技有限公司

测试

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