每当我们打开电脑,我们可能经常会做一些习惯性的动作。例如查一下邮件啦,看看新闻啦,观察一下股票走向啦。仔细想一下就发现,这里面有很多动作是我们每天都会重复的。有没有可能更方便一点呢?
有。很简单,身为程序员的我们,为每种固定的操作写个小程序就好了。但这样一来会带来几个问题:
1. 小程序写多了,很难统一管理。而且有些带参数的程序(例如按照一定股票编号去查询价格的程序),使用起来并不一定方便。
2. 我们可能经常使用不同的电脑,那么要同步这些小程序会非常头疼。
3. 你也写,我也写,大家写了大量重复的小程序,很浪费资源。
为了应对这些问题,我提出了一个叫JustType的框架,我们可以在http://justtype.cloudapp.net 访问它。
JustType的界面就是一个文本框,一切都在这个文本框中进行。在JustType框架中,每个小程序都对应一个命令,命令可带参数。写好的小程序会保存在服务器,每一个人都可以选择是否要公开自己的小程序。这样大家可以很方便地共享自己的成果。
让我们来逐一看看JustType拥有的功能。
首先,最基本的,你可以在JustType中输入一个网址,一按回车就会访问该网址。
当然,仅仅是这样的话,很傻。因为浏览器的地址栏更好用多了。但是,JustType远远不止这点。
我们可以为一个命令设置一个别名,例如:
经过这样的设置后,下次我只要打cppblog就会自动进入http://www.cppblog.com 了。
还有很多时候,我们会遇到一些小小的计算问题。Windows那个计算器实在很不好用,让我们看看JustType:
这个calc命令会将后面的表达式求值并显示出来。实际上,这里这个表达式是Python的表达式,JustType中所有的小程序都运行在IronPython上,并且可以使用.net framework类库中的大多数功能。
当然,除了简单的表达式以外,我们还可以执行更复杂的脚本:
输入这个命令之后,界面就会变成下面的样子:
MultiLineTextMode是一个预定义函数,功能是将主界面上的文本框变成多行模式,这样我们就可以输入更复杂的脚本了。下面我们试试使用一些.net framework中的功能:
输出结果如下:
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的文本框中输入下面的命令:
一按回车,就会转向翻译结果:
类似地,我们可以写出很多很多方便实用的小程序。在我们创建程序时,我们可以选择是否要公开。如果公开的话,别的用户就可以通过“你的用户名.程序名”来调用你的程序。例如我的用户名是ck,那么其他用户就可以输入ck.translate来调用我的程序,当然他喜欢的话也可以用setalias来设置一个方便的别名。如果所有公开的程序中,只有我这个程序叫做translate,那么其他用户不打ck.translate而直接打translate也可以成功调用。
另外,JustType提供一种简单的数据存储。每一个程序在一个用户的账户中会有一个独立的存储空间,可以存储1000行数据。例如我利用这个特性开发了一个叫做note的小程序,可以临时记录一些小笔记:
那么之后我就可以看到我的笔记:
所有的程序和数据,都存放在服务器端,用户不用担心不同机器的问题。无论你走到哪里,都可以像在一台机器上一样访问所有服务和数据。
新服务刚刚搭建好,欢迎大家试用和提供意见喔。网址是http://justtype.cloudapp.net