iWangWang v0.3.0 Released

在上一个版本发布之后,过了两个月的时间,终于又有一个可以发布的版本了。

使用菜单中的“检查更新”既可完成更新,或者前往 Google Code 下载。

这次的更新如下:

  • [FIX] 修正在 Snow Leopard 中无法在 Dock 上显示未读消息数目的bug
  • [FIX] 修正在网页中点击旺旺图标无法打开聊天窗口的bug
  • [FIX] 修正无法使用“指定发送”和“添加好友”功能的bug
  • [FIX] 修正表情选择框在一些情况下引起程序崩溃的bug
  • [FIX] 修正在聊天窗口中无法指定发送功能无法使用的bug
  • [FIX] 修正一些菜单无法在所有窗口中使用的bug
  • [NEW] 现在可以使用 Ctrl+N 同时运行多个 iWangWang 来实现同时登录多个淘宝帐号
  • [NEW] 现在如果聊天时消息发送失败,可以重新输入验证码
  • [NEW] 登录后会恢复上一次退出时主窗口的位置
  • [NEW] 表情选择框现在可以用 ESC 键关闭
  • [NOTE] 有bug可以在 http://code.google.com/p/iwangwang/issues/entry 提出

这次主要修正了 iWangWang 在 Snow Leopard 下的兼容性,之前的开发环境是 Leopard,没能在 …

阅读全文 »

iWangWang for Mac v0.2.0 发布

iWangWang v0.2.0 更新日志

  • [NEW] 在 Dock 上显示未读消息的个数
  • [NEW] 在“窗口”菜单中显示已经打开聊天窗口的列表
  • [FIX] 修正即使没有勾选“记住密码”时复选框还是会被自动选中的bug
  • [FIX] 修正登录超时导致程序崩溃的bug
  • [FIX] 修正“指定发送”中发送给自己时,关闭消息框后无法继续输入用户名的bug
  • [FIX] 修正在升级时关闭窗口会导致程序崩溃的bug
  • [FIX] 更新旺旺图标聊天脚本,修正了在某些页面点击图标聊天会出现乱码的bug,请重新安装用户脚本即可,用户脚本地址请参考
  • http://www.xujiwei.com/blog/iwangwang/use-iwangwang-in-browsers/
  • [MOD] 使用邮件来代替 Google Docs 进行使用反馈
  • [MOD] 调整了一下分组按钮的背景

安装

可以使用菜单“iWangWang》检查更新”来自动安装或访问下面这个地址来下载安装:
http://iwangwang.googlecode.com/files/iWangWang-v0.2.0.zip

旺旺图标点击聊天脚本更新

这次更新的还有浏览器中旺旺图标点击聊天的脚本,修正了在淘宝宝贝详情页点击卖家旺旺图标出现乱码导致而无法聊天的bug
安装指南:
http://www.xujiwei.com/blog/iwangwang/use-iwangwang-in-browsers/

已经安装的用户可以只需要重新安装用户脚本,用户脚本地址:
https://iwangwang.googlecode.com/hg/wwprotocol.user.js

反馈

如果您有任何建议或意见,请发送邮件到 ohdarling88 # gmail dot com,谢谢:)

[HOWTO] 在 Mac 下的 Safari 中直接打开 iWangWang 进行聊天

鉴于支付宝已经发布供 Safari 使用的安全登录控件,并且 Safari 可以自动调用关联程序来打开自定义协议,所有 Safari 下的点击旺旺图标打开 iWangWang 进行聊天比较容易实现,使用一个用户脚本就行。

要实现在 Safari 中点击旺旺图标进行聊天,步骤如下:

  1. 安装 SIMBL
    下载地址:http://www.culater.net/software/SIMBL/SIMBL.php
    SIMBL 可以理解为一个扩展加载器,因为 Safari 本身并不支持扩展机制,所有 SIMBL 使用了一种 Hack 的方式来方便加载第三方扩展。
  2. 安装 GreaseKit
    下载地址:http://8-p.info/greasekit/
    GreaseKit 是一个类似于 GreaseMonkey 的扩展,可以通过它在 Safari 运行用户脚本。
    如果你的系统是 Mac OS X Leopard,那么可能会出现安装 GreaseKit 失败的情况,这时可以试试一位网友重新编译的 GreaseKit,下载地址,关于这个问题的讨论可以看这里
  3. 最后,安装 iWangWang 聊天用户脚本
    安装地址:


阅读全文 »

iWangWang v0.1.2 for Mac 发布

iWangWang 是一个在 Mac OS X 下使用的 Web 旺旺的客户端,使用 Mac 用户在淘宝购物时也可以方便地与卖家沟通,不需要每次打开 Web 旺旺,以及弥补 Web 旺旺不支持联系人列表及聊天记录的缺陷,并且目前只支持淘宝网帐号登录。

iWangWang 使用 REALbasic 编写,因为是基于 Web 旺旺的,所以 Web 旺旺不支持的功能 iWangWang 也没有实现,包括但不限于旺旺群、自定义表情、文件传送,并且和某一个联系人第一次聊天时,需要输入验证码。

注意:

  1. 这纯粹是我个人出于兴趣而制作的一个程序,与公司无关。
  2. 因为使用非公开接口,协议通过黑盒分析所得,因此有可能会由于 Web 旺旺修改通信协议而导致程序无法使用。
  3. 由于缺乏艺术细胞,因此程序界面仿照 MacQQ,如果觉得有内容侵犯了您的权利,请及时联系我修改,谢谢 :)
  4. 因为淘宝帐号涉及到金钱,所以如果不放心请不要使用这个程序 :)

如果有任何问题或建议,请联系 ohdarling88 # gmail dot com,或者点击菜单“文件》填写使用反馈”来填写反馈内容。

14:40 Update 更新下载链接,修正了接收带有自定义表情的消息时会导致程序崩溃的bug,如果已经下载,可以直接点击菜单“iWangWang > 检查更新”

阅读全文 »

HostsManager v0.4.1

使用 REALbasic 写的一个 hosts 文件管理工具,可以快速方便的管理系统中的 hosts,支持 Mac OS X 与 Windows。

注:Vista 和 Win7 需要使用管理员权限运行。

如果有bug或建议,请发送邮件到 ohdarling88 # gmail dot com

下载:

在 REALbasic 中注册 AppleEvent

之前为了注册一个自定义协议,需要通过注册 AppleEvent 来实现,在 Objective-C 中,可以很方便的使用 NSAppleEventManager 来注册 AppleEvent 句柄,但是在 REALbaisc 中,是没有办法直接去调用 NSAppleEventManager 的,所以需要通过声明然后调用 C API 来实现相应的功能。

与 NSAppleEventManager 中功能相对应的 C API 有 AEInstallEventHandler, NewAEEventHandlerUPP 等,通过这些 API 我们也可以在 REALbasic 中来注册 AppleEvent 了,再配合 Info.plist 中的 URLScheme 声明,即可实现 URL 自定义协议处理句柄。

#if TargetCarbon
    soft declare function AEInstallEventHandler Lib CarbonLib ( _
    theAEEventClass as Integer, 


阅读全文 »

博客迁移到 WordPress 平台

花了两天人肉把老博客的大部分技术文章迁移到 WordPress,评论数据不迁了,工作难度太大……

如果您是从外部链接进来的,例如 www.xujiwei.com/blog/?id=123 这样的形式,那就会找不到页面,可以使用右上角的搜索来搜索相关的文章。

以后会陆续把剩下的文章迁移过来:)

一个自动还原短网址的 Chrome 插件 AutoExpander

上 twitter 时,为了节省消息内容的长度,通常都会把网址用一些网址缩短服务进行简化,例如 bit.ly、is.gd 等,但是在有些时 候可能会碰到打不开缩短后网址的情况,例如连接 bit.ly 失败等,这个时候可以通过第三方的服务来将地址还原,但是这样会比较麻烦,要五个步骤才能 看到原来的地址,现在使用 AutoExpander 插件后,只需要直接输入短地址,插件会自动调用第三方的服务来进行短地址的还原,将“复制短地址、 粘贴到还原短地址的服务网站的输入框、点击还原、拷贝原地址到 Chrome 地址栏、回车”这样五个步骤直接缩短为“粘贴短地址到 Chrome 地址 栏、回车”这样两个步骤。当然,如果你的默认浏览器就是 Chrome,那么可以更方便地,直接点击短地址就行了,连“回车”这一步都省了。

插 件项目地址:

http://autoexpander.googlecode.com/

直接安装:

http://autoexpander.googlecode.com/files/autoexpander-0.3.crx

请 使用 Chrome 4.0 测试版安装:)

慎用 script 节点的 src 属性来传递参数

在有些使用 javascript 来渲染数据的时候,为了能动态获取不同的数据,并且保持 javascript 代码的可扩展性,会将 javascript 代码中获取数据的部分需要的参数提取出来,做为参数放在 script 节点的外部。

一般来说,传递参数到 javascript 文件内部的方法有两种,一种是将参数写在一个 script 节点中,写成全局变量的方式的传递给紧接着这个 script 节点的外部 javascript 中,Google Analytics 就是使用这样的方式:

<script type="text/javascript">
var p1 = "v1", p2 = "v2";
</script>
<script type="text/javascript" src="foo.js"></script>

另外一种是将参数直接写在 script 节点的 src 属性中,相当于一个页面的查询字符串一样:

<script type="text/javascript" src="foo.js?p1=v1&p2=v2"></script>

不过,使用 script 节点的 src 属性来传递参数需要注意一个很重要的问题,那就是动态变化的 src 属性会导致缓存失效。…

阅读全文 »

REALbasic 中使用结构体作为 Win32 API 的参数及使用 Win32 API 停止服务

在之前,我使用 ShellExecute 这个 API 来执行命令(《REALbasic 中使用 ShellExecute 执行命令》),然后通过这个方法来停止某个服务,但是今天想加服务运行状态检测,这样就可以在服务没有运行的情况下不再询问用户是否需要停止某个服务。

为了省事,我一开始决定同样使用 cmd 去执行一个命令,将服务状态输出到一个临时文件中,再通过读取这个临时文件,查找特征字符串来判断服务是否运行:

// 伪代码
ShellExecute("cmd.exe /c sc query service_name > tmpfile")
dim serviceStatus as string
serviceStatus = TextInputStream.Open(tmpfile).ReadAll()
if instr(serviceStatus, "STOPPED") < 1 then
  // 提示用户是否停止服务
end if

但是这样做不太靠谱,因为 sc 这个命令执行是要时间的,而 ShellExecute 是异步的,这就导致了在调用 ShellExecute 执行完 sc query 之后,临时文件 tmpfile 里并不是马上就有服务状态的内容了。

为了防止这个情况,我再加了一个临时文件内容的检测,如果为空的话,sleep …

阅读全文 »