项目放在github上, 主页在: http://pangwa.github.io/bae-message

现在只实现了邮件功能, 以后可能会增加一些新的基于BAE云消息模块的功能.
用法比较简单, 参见github上的例子就会了

// load Bae module
var BaeMessage = require('bae-message');
// initialize BaeMessage with key/secret/queue
// You can find your key/secret at: [BAE Page](http://developer.baidu.com/bae/ref/key/)
var bae = new BaeMessage({
  key : 'your key',
  secret : 'your secret',
  queue: 'queue ID'
});

bae.mail('fromAddress', 'to', 'subject', 'mail body');

也可以通过 npm install bae-message 来直接安装这个模块.

有关百度云消息的介绍可以参考: http://developer.baidu.com/cloud/mq

不得不说现在百度云的问题还是有些问题, 调了好大会才出来.

October 6th, 2012DirectUI 及相关UI 库

这两天偶然发现了DirectUI相关的技术介绍, 当然这都是很老的技术了(六七年前就有讨论).

技术的原理基本就是用DirectX直接绘制控件, 可以实现很好的视觉效果, 一些动画的支持也不错, 找了一下DirectUI的开源项目, 貌似能找到的就只有DuiLIb了, 它的一些例子很不错, 实现的效果比较帅(像仿360安全卫士/QQ界面).

既然有基于DirectX的库, 那么是不是也有基于另一个图形库-OpenGL的类似项目呢? 再搜索了一下, 果然也有不少. 比如:BeGUI 库.不过这个项目基本已经停工了.

这些项目确实实现了一些很好的特性, 比如很容易支持皮肤, 速度较快等. 可以一试, 不过个人认为这些项目在设计上仍需创新, 理想的C++ GUI框架应该能够大大简化界面开发的复杂度, 而现在用C++写界面的最大困扰就是实在是太麻烦了. 当然QT确实不错, 已经很简单了.

August 1st, 2012Yii Unicode设置

其中最重要的一点就是,

把所有文件以Utf-8 无BOM格式编码保存.

看清楚, 只是utf-8格式保存是不对地!, 要utf-8 bom, 今天花了一晚上才发现这个奇怪的编码问题.

最好保证所有的文件都是这个编码, 否则在有些对编码要求很严格的程序中会出现错误……

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

“自己动手, 丰衣足食”

经历了十几分钟的搜索后, 终于决定使用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遥控器套装, 等它到货就可以使用遥控器远程控制玩了, 嘿嘿.

August 29th, 2010我的黑苹果

我的这个yy半年之久的黑苹果计划终于在这个月初实现了.
基本配置如下:
主板:  GA-P55A-UD3R x1
CPU:  Intel i5 760
显卡:  铭瑄HD5770 1G   x1
内存:  金士顿DDR3 1600 2G x1
硬盘:  希捷7200转 500G  x1
无线网卡: TP-Link TL-WN851N (在10.6.4下不工作!) x1
显示器:  Dell U2311H x1

机箱电源就不说了.

现在这个配置下在Snow Leopard 10.6.4下面已经可以全部正常运行. 其中需要注意的是 显卡使用的一个有点问题的驱动, 只能工作在32位模式下并需要同时接两条dvi线到显示器上才能正常显示(貌似运行warcraft有点问题, 运行台湾版WOW正常), 板载网卡刚刚使用了tonymacx86.com刚发布的驱动(内测版), 另外无线网卡不工作(非常杯剧, 当时还特地查了一下, 看到网上很多人说能工作, 但貌似是工作在SL之前的系统上….). 另外显示器的显示效果也很赞的说.

另外由于暂时还离不开Win, 所以搞了在硬盘上同时安装了Win7+OSX, 引导使用的EasyBCD (win7 多引导的管理工具), 另外在osx的分区上装了变色龙(Chameleon).
安装过程参考了以下文章:
BIOS设置: http://lnx2mac.blogspot.com/2010/06/updating-gigabyte-bios.html
论坛: http://www.tonymacx86.com/
http://www.insanelymac.com/
安装过程我使用的稍微和上面的有所不同, 因为为了节省预算机器上没有配光驱, 不过还好之前已经有一个能运行的osx, 所以很多准备工作都是在已有的OSX上进行的并且使用usb引导安装.
另外在使用usb引导安装的时候如果遇到waiting for device的错误不妨试试 改一下启动的参数指定root device编号(磁盘编号可能会因为你使用了USB-HDD引导而和你在启动界面里看到的不一样.).

另外用新电脑的感觉倍爽, 特别是在看到解压大文件仅有10%不到的CPU占用率时:)

再另外, 由于为了节省预算内存少了点, 过段时间考虑加条一样的内存, 这样也算能有双通道了…

April 14th, 2010猥琐病毒的解决方案

这两天朋友电脑出现了一奇怪了症状: C盘空间貌似在不断减少, 疑似U盘有毒, 于是拿来看了下.

然后就发现了这个猥琐的病毒, 它的工作原理貌似很简单: 把自身的图标设置成与文件夹图标一模一样, 所以如果你没注意你是看不出来它是程序还是一个文件夹的, 另外它把U盘根目录下所有的文件夹隐藏(设置系统+隐藏属性, 所以即使你打开显示隐藏的文件与目录也看不到这些被隐藏的文件夹), 同时它创建一个与该文件夹同名的.exe文件.  而当毫不知情的用户点击运行这个病毒的时候它会打开与之对应的文件夹, 同时创建一个名为update.exe进程. 然后便向用户主目录下appdata(Win7下)的某个目录里狂写东西. 至于其他的坏事暂时还没发现.

鉴于这个病毒相对简单, 所以自己写了一个批处理来干掉它, 方法也很简单就是枚举磁盘根目录下所有的文件夹, 看是不是有同名的.exe存在, 如果有则删除并去除此文件夹的系统和隐藏属性. (在Win7下试用通过)

@echo off
setlocal 

:BEGIN
set ROOT=
set /P ROOT=输入要清除的盘符(输入0退出): %=%
if %ROOT%==0 goto END

echo 正在清除驱动器 %ROOT%: 
rem kill the update.exe process
taskkill /IM update.exe 2>NUL
for /F "usebackq delims==" %%i in (`dir /AD /B %ROOT%:`) do if exist "%ROOT%:\%%i.exe" if not exist "%ROOT%:\%%i.exe\NUL" (
echo 删除 %ROOT%:\%%i.exe 并去除目录%ROOT%:\%%i的系统与隐藏属性
del "%ROOT%:\%%i.exe"
attrib -H -S "%ROOT%:\%%i"
)

goto BEGIN

:END

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