写点什么

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

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

关注

评论

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

ARTS打卡 第14周

引花眠

微服务 ARTS 打卡计划

小小的分页引发的加班血案

架构师修行之路

架构

Ray 分布式计算框架详解

lipi

分布式 数据湖 pandas Apache Arrow

30年技术积累,技术流RTC如何成为视频直播领域的黑马?

华为云开发者联盟

云计算 AI 5G RTC 华为云

大事情!中国限制 AI 算法出口。网友:这是要阻止XX“下跪”

程序员生活志

5G边缘计算:开源架起5G MEC生态发展新通路

华为云开发者联盟

开源 5G 边缘计算 公有云 EdgeGallery

基于区块链的社会治理探索

CECBC

区块链 大数据 信息技术

SpringBoot+Tess4j实现牛逼的OCR识别工具

小隐乐乐

oeasy教您玩转linux010109clear清屏

o

pandas ~基础pandas

南辞

Python

软件产品的创新与宇宙奇点大爆炸

常平

方法论 产品思维 架构思维

LeetCode 5. Longest Palindromic Substring

liu_liu

算法 LeetCode

麦叔告诉你,Linux下安装nginx都踩了那些坑

麦洛

nginx Linux

【读书笔记一】《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》

Man

中台 阿里 中台战略

Flink检查点、保存点及状态恢复-13

小知识点

scala 大数据 flink

面经手册 · 第8篇《LinkedList插入速度比ArrayList快?你确定吗?》

小傅哥

Java 数据结构 面试 小傅哥 linkedlist

比特币挖矿到底挖的是什么?

CECBC

比特币 区块链 数字货币

程序的机器级表示-控制

引花眠

计算机基础

雪花算法把玩

ElvinYang

k8s-client-go源码剖析(二)

远鹏

Kubernetes 源码剖析 Go 语言

oeasy教您玩转linux010108到底哪个which

o

Docker 镜像的备份恢复迁移

哈喽沃德先生

Docker 容器 微服务 镜像

架构师训练营第十二周作业

张明森

架构师训练营第十二周总结

张明森

翻转链表算法、自动化测试框架robot-framework、两款iOS 在手机端debugging 工具Flex、啄木鸟、加密技术 高可用系统的度量 高可用系统的架构 高可用系统的运维 John 易筋 ARTS 打卡 Week 15

John(易筋)

ARTS 打卡计划 高可用系统的架构 翻转链表 自动化测试Robot 手机调试工具Flex

高并发系统三大利器之降级

root

JVM的早期优化与晚期优化

Edison

JVM JVM虚拟机原理

图解Node(上)——直击灵魂的十条拷问

执鸢者

大前端 原理 Node

ARTS Week14

时之虫

ARTS 打卡计划

【持续更新~】常遗忘却可以变更好的心态

01Running

个人成长

你真的懂 Java 的 main 方法吗

Rayjun

Java

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