升C小调狂想曲

<递归的忧伤>
posts - 10, comments - 71, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Command the world! 命令整个世界

Posted on 2009-06-02 16:27 陈坤 阅读(1967) 评论(9)  编辑 收藏 引用 所属分类: Flashing Ideas

每当我们打开电脑,我们可能经常会做一些习惯性的动作。例如查一下邮件啦,看看新闻啦,观察一下股票走向啦。仔细想一下就发现,这里面有很多动作是我们每天都会重复的。有没有可能更方便一点呢?

有。很简单,身为程序员的我们,为每种固定的操作写个小程序就好了。但这样一来会带来几个问题:

1. 小程序写多了,很难统一管理。而且有些带参数的程序(例如按照一定股票编号去查询价格的程序),使用起来并不一定方便。

2. 我们可能经常使用不同的电脑,那么要同步这些小程序会非常头疼。

3. 你也写,我也写,大家写了大量重复的小程序,很浪费资源。

为了应对这些问题,我提出了一个叫JustType的框架,我们可以在http://justtype.cloudapp.net 访问它。

JustType的界面就是一个文本框,一切都在这个文本框中进行。在JustType框架中,每个小程序都对应一个命令,命令可带参数。写好的小程序会保存在服务器,每一个人都可以选择是否要公开自己的小程序。这样大家可以很方便地共享自己的成果。

让我们来逐一看看JustType拥有的功能。

首先,最基本的,你可以在JustType中输入一个网址,一按回车就会访问该网址。

image

当然,仅仅是这样的话,很傻。因为浏览器的地址栏更好用多了。但是,JustType远远不止这点。

我们可以为一个命令设置一个别名,例如:

image

经过这样的设置后,下次我只要打cppblog就会自动进入http://www.cppblog.com 了。

还有很多时候,我们会遇到一些小小的计算问题。Windows那个计算器实在很不好用,让我们看看JustType:

image

image

这个calc命令会将后面的表达式求值并显示出来。实际上,这里这个表达式是Python的表达式,JustType中所有的小程序都运行在IronPython上,并且可以使用.net framework类库中的大多数功能。

当然,除了简单的表达式以外,我们还可以执行更复杂的脚本:

image

输入这个命令之后,界面就会变成下面的样子:

image

MultiLineTextMode是一个预定义函数,功能是将主界面上的文本框变成多行模式,这样我们就可以输入更复杂的脚本了。下面我们试试使用一些.net framework中的功能:

image

输出结果如下:

image

SetTextBoxText也是一个预定义函数,可以改变主界面中文本框内的文本。更多的预定义函数描述可以在http://justtype.cloudapp.net/Help.aspx 中看到。

除了临时执行脚本以外,我们也可以将脚本写成小程序保存起来。输入newcommand命令,就会进入创建命令的页面。我们将这个小程序命名为translate,然后输入以下代码:

import System
import System.Web

def OnCommand(command):
    GoToURL("http://dict.youdao.com/search?q=" + System.Web.HttpUtility.UrlEncode(command))
    return True

程序依然是用IronPython写,其实Python语法很简单。http://www.python.org 感兴趣的用户可以去看看。这个OnCommand函数就是用来接收消息的。当JustType收到命令后,会找到这个命令对应的脚本,并将参数传给脚本的OnCommand函数来执行。我们看到,这里程序调用了GoToURL函数,转向了有道词典的页面。在创建了这个程序后,我们就可以在JustType的文本框中输入下面的命令:

image

一按回车,就会转向翻译结果:

image

类似地,我们可以写出很多很多方便实用的小程序。在我们创建程序时,我们可以选择是否要公开。如果公开的话,别的用户就可以通过“你的用户名.程序名”来调用你的程序。例如我的用户名是ck,那么其他用户就可以输入ck.translate来调用我的程序,当然他喜欢的话也可以用setalias来设置一个方便的别名。如果所有公开的程序中,只有我这个程序叫做translate,那么其他用户不打ck.translate而直接打translate也可以成功调用。

另外,JustType提供一种简单的数据存储。每一个程序在一个用户的账户中会有一个独立的存储空间,可以存储1000行数据。例如我利用这个特性开发了一个叫做note的小程序,可以临时记录一些小笔记:

image

那么之后我就可以看到我的笔记:

image

所有的程序和数据,都存放在服务器端,用户不用担心不同机器的问题。无论你走到哪里,都可以像在一台机器上一样访问所有服务和数据。

新服务刚刚搭建好,欢迎大家试用和提供意见喔。网址是http://justtype.cloudapp.net

Feedback

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-02 17:14 by guest
- = 和POWERSHELL比有啥优点?

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-02 17:34 by 陈坤
@guest

主要就是我文章开头提到的3点。你可以轻易地与他人分享你写的程序,也可以轻松地使用其他人开发的小程序。另外,程序和数据都在服务器端,你不用担心不同机器上使用的问题。

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-02 19:33 by Acumon
建议集成到Ubiquity中去~造福万民

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-02 19:47 by 陈坤
@Acumon

据你介绍,我去看了一下Ubiquity,感觉初衷很相似。不过JustType鼓励大家自己写命令,并与他人分享自己的程序。另外JustType不受浏览器约束,记录的数据也不受机器约束,某些程度上比Ubiquity更方便点,呵呵。
我会去看一看如何扩展Ubiquity的,如果可以的话,集成进去确实会很好。

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-02 21:14 by 星绽紫辉
不错~

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-03 16:56 by guest
想法是不错的,但能不能为每个用户模拟一个OS环境,包含一些APP以及存储空间等等。

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-03 18:44 by 陈坤
@guest

存储空间每一个用户都是有的,每个程序在每个用户帐户中可以储存1000行任意数据,但是由于服务器那边的问题,无法提供类似IO操作这种底层的接口。

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-03 20:54 by 54sun
lz居然能自己想出这个创意,的确不简单。
和楼上建议一样,改为集成到ubiquity里面。
ubiquity开发到现在,已经有大量的命令集成在里面了,可以做很多事情,而且配合firefox很好。个人感觉一般技术人员都比较偏向于firefox吧,毕竟addson很多。


当然,可能lz的初衷和ubiquity并不一样,纯粹个人意见。

# re: Command the world! 命令整个世界  回复  更多评论   

2009-06-08 11:32 by 梦在天涯
好主意,可以看看luncy.net

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理