写这个教程的起因是自己有时候家里的沙发上听着豆瓣电台的音乐, 用过豆瓣电台的朋友们知道, 它提供一个有用的按钮: 加心 – 遇到喜欢的歌儿可以给它加红心. 可是对于坐在沙发上的我, 如果听到一首很喜欢的歌想要去点那个加心按钮, 我需要站起身, 跑到电脑前面, 然后按下按钮, 再回到座位上 — 这个过程对于想好好听歌休息的人来讲会比较烦人.

“自己动手, 丰衣足食”

经历了十几分钟的搜索后, 终于决定使用EventGhost作为工具来实现我上面的需求. (不是软文, 那个软件都是开源地).选择它有以下原因:

  • 免费
  • 支持键盘/游戏控制器/遥控器(这一点比较重要, 这个在后几天准备会用MCE遥控器来控制电脑)
  • 可以架设一个web服务器来接收控制 (这让我在没有遥控器的情况下也可以使用手机作为临时遥控器了:-) )
  • 其他启动程序的事件也可以做为触发器
  • 支持查找窗口, 打开程序, 模拟键盘/鼠标动作等
  • 支持Python脚本扩展
  • 支持自己写插件

好了, 去EventGhost网站上下载最新版本的程序并安装上吧. 下面来开始设置并使用了.

启动EventGhost后, 通过菜单File->New, 开始新的设置. 它的窗口布局分为如下所示的左右两边: 左边的是日志窗口, 所有的窗口事件都显示这里面, 每个事件为单独的一行, 注意每一行都是可以拖动的 (我们会在后面用到), 右面是具体的事件/触发配置的窗口.

由于暂时没有遥控器, 我们先实现使用手机来控制电脑, 在右面窗口的AutoStart节点上右键并点击Add Plugin菜单, (注: 通过autostart可以设置一些在程序启动时自动加载/启动的服务插件等).

在弹出的插件选择窗口里选择Dynamic WebServer:

在接下来的配置窗口里填上监听的端口和web文件存放的根目录, 这里有个认证的选项, 简单起见我们留空(无认证).

在你的web文件目录里创建一个名为index.html的文件, 内容如下:

<head>
<title>douban 控制</title>
</head>
<body>
<a href=”index.html?Love”>加心</a>
</body>

这里我们简单的创建了一个按钮, 它指向一个”index.html?Love”, 这里EventGhost会把问号后面的参数作为动作的名字识别出来. 在自己的电脑上访问http://127.0.0.1:8080并且点击加心按钮, 你会发现在EvenGhost左侧的事件列表里会多出一个Http.Love的事件如下图所示:

好了, 我们已经可以通过访问网页来触发EventGhost的事件了, 接下来就是定制事件发生后我们要做的事情了, 这里我习惯单独使用Chrome浏览器打开douban.fm, 所以当事件发生后我们需要做以下事情:

1. 找到豆瓣电台所在的窗口并激活它

2. 定位鼠标到加心的按钮

3. 点击加心按钮

下面就开始吧, 首先在右侧窗口中添加一个Folder (Folder主要是为了整理结构用的, 没有什么实际功能上的影响), 右键菜单, 选择Add Macro, 并在Add Macro窗口的Window列表里选择Find Window, 找到Chrome中的豆瓣电台所在的窗口, 然后修窗口名字为”{*}豆瓣FM{*}”, 我们使用了{*}通配符来匹配所有字符, 这是因为豆瓣电台的窗口的标题会动态更新为当前的歌曲名称, 我们只选择固定的”豆瓣FM”. 完成后把这个宏的名称重命名为DoubanFm.

在Doubanfm节点上右键通过菜单”Add Action”, 并选择”Bring To Front”, Bring to Front会使用之前找到的窗口并把它激活为当前窗口.

为了简单起见, 我们这里直接认为豆瓣电台的窗口位置是固定的, 所以那个心的按钮位置也固定 (最后是写个脚本来通过图片匹配找到对应的位置, 相对复杂了点儿),

继续右键DoubanFm, 通过右键菜单”Add Action”, 在Mouse分类里选择Move Mouse to, 把x, y 设置为心号按钮所在的位置, 我们这里是1630, 700 (这里的值应该是你窗口上对应的坐标).

继续右键DoubanFM, 通过右键菜单”Add Action”, 在Mouse分类里选择Left Mouse button.

完成后的窗口会如下所示:

这时时候再右键DoubanFm, 通过菜单”Execute item”来你的脚本是否工作正常. 如果一切正常的话你会发现豆瓣电台窗口会被激活, 并且那个心号按钮会被点击.

一切正常后, 我们下面就要把点击网页的事件和我们定制好后的行为关联起来了, 在左侧的事件窗口里找到HTTP.Love一项(我们之前就触发了这个事件), 选中它并拖到右侧窗口里的DoubanFM节点里, 把它拖到DoubanFm的第一个子节点.

基本完工, 先通过浏览器打开http://127.0.0.1, 点击一下链接测试吧.

继续通过手机浏览器访问你电脑的地址, 就可以了. 当然, 如果你嫌我们之前的网页太过丑陋的话, 可以自己写一些好看的配色来, 这里我使用的是ajaxian提供的iphone的配色. 在手机中的效果如下(请原谅我用的不是iphone…):

接下来你就可以打开豆瓣电台, 然后跑到床上听歌爽去了, 当然要时不时的点一下加心才过瘾~

这不是终点, 前面的只是为了我们接下来的使用遥控器做的准备, 咱已经定购了微软MCE遥控器套装, 等它到货就可以使用遥控器远程控制玩了, 嘿嘿.

May 10th, 2011迁徙的时代

远古的时代, 有一群远古人类聚居在一起, 这里食物充足, 野兽少见, 多数人安然的居住在这里, 只有其中一小拨人, 与生俱来的好奇感让他们对山的那一边充满了遐想, 这边的生活终于无法再满足他们, 某一天, 他们开始尝试翻过山, 到达了那一边. 于是第一次迁徙发生了.

当然, 第一次的人类的迁徙或许根本就没这么美好, 许是突如其来的坏气候逼得人类寻找下一个适合居住的地点, 过程当然艰难, 死伤难免.

迁徙的人们对原本居住的地方称为故乡. 他们偶尔会怀念故乡的风景和时光. 他们也会给年轻的一代讲述在故乡发生的故事.有些故事辈辈流传, 而更多的则随着时光消散了.

第一次有迁徙这个概念大约是在小时候, 晚饭时听父母讨论举家搬到东北的设想, 父亲说去了东北可以承包好大一块田地, 收成好的话, 可以多赚不少钱. 那个时候, 父母说到东北充满了希望. 而那个时候的我对东北没有什么想法, 只知道离家里很远很远, 至于搬到东北, 我更担心的是去了之后还会不会再回到这里, 我成长的地方, 毕竟还有很多玩伴儿在.

不过最后, 家没搬成, 我还生生长在家乡, 直到大学.

不知道是不是小时候关于东北的讨论影响了我选择大学的决定, 那个时候我最想的是就是去一个离家很远的地方, 然后再想了想, 于是选择了东北, 第一志愿, 第二志愿, 第三志愿就这样全填上了东北的学校. 或许这是第一次自己选择了命运的走向, 或许这本就是冥冥中注定的.

再后来毕业, 来到上海, 实习, 工作. 换工作, 然后去年离职, 去北京暂留了几个月, 可是最后因为总总原因再次回到上海继续工作. 回想起这几年, 真不知道有几分是由得自己选择的.或许是老天给了我们一个选择题, 可惜看上去正确的答案只有一个, 其他的要么是荒诞不经, 要么是以我们的人生经历来看绝对是错误的, 于是聪明的我们就聪明地选择了那个正确答案. 只是有些时候私下里会想, 如果, 仅仅是如果, 我们选择了2B, 那么结果会是什么.

扯远了, 其实想到这个题目的时候, 是想到了朋友们, 很多人的父辈是从其他的地方移居而来, 而现在的他们也各自换到了新的城市, 或许几十年后, 我们的子辈也会再去到另外一个城市,  于是我们每个人都完成了一个人的迁徙 —刚开始还对这多少有些伤感, 为什么我们要离开我们熟知的土地, 去一个崭新的地方, 为什么我们要离开我们的亲友, 去换一个新的城市, 这些个问题在有关东北的讨论的时候就已经在自己脑子里浮现, 真是小孩子的想法. 其实每个人的迁徙对于参与其中的本人来说何尝不是史诗般的壮阔. 这或许根本就与时代无关,初想到标题的时候还以为是时代造成的, 现在想想, 这或许是人类的天性本就是这样, 为了更美好的生活, 为了希望, 我们选择了这样.

无论如何, 祝愿大家都找到安身立命之所.

May 7th, 2011面子问题

中国人大都是尤其要面子的. 所以大家说要抵制蒙牛的时候, 我表示十分理解: 虽然事实确实是这样, 大家也都知道, 可是你居然把它在大庭广众之下说了出来, 这可是一件让大家大大地丢了面子的事. 况且大家都是读过书的人, 面子都是十分金贵的, 蒙牛的此种行径无疑和当众煽耳光相差无几, 真是婶可忍叔不可忍也.

于是大家号召起抵制蒙牛来, 我不是太有所谓, 因为牛奶我是不怎么喝的, 至于奶牛, 如果牛奶卖不出去, 少了人去挤奶, 也许奶牛们会涨奶涨的厉害. 无论如何, 这些事儿都和我关系不大.

抵制后, 大家的面子就找回了多半, 于是乎我们就又可以捧着十分金面行走在路上, 连和人打个招呼都精神了许多, 与同事们聊天的时候聊起抵制的事情来都有十二分精神 – 毕竟这关系着大家的面子问题. 即使喝着X鹿奶粉, 啃着毒馒头, 吃着地沟油, 这些都问题不大, 因为大家的面子都还是在的.

去超市的时候忽然发现天杀的蒙牛酸奶在做促销, 比平时便宜了好多, tmd, 我恨恨的买了一瓶. 嘘, 我不说出去, 这样就伤不到大家的面子了.


© 2007 pangwa's Blog | iKon Wordpress Theme by Windows Vista Administration | Powered by Wordpress