Archive for October, 2009

Date: October 19th, 2009
Cate: Blog
15 msgs

在GAE上安装Jaiku Engine

不知道这个教程到底有没有用,看见有人问,我就花了点时间写几句。话说大三真的忙多了,很久没上博客了,当然,也因为我变懒了。不说废话了。

Jaiku Engine是在Google App Engine上运行的一个微博平台(Microblogging),和时下流行的Twitter类似。Jaiku(http://www.jaiku.com/)2007年被Google收购,基本上停止开发,2009年重新登录GAE并公布源代码,取名Jaiku Engine,每个人都可以用它来假设自己的微博平台。

  • 下载源代码

首先安装一个SVN客户端,比如TortoiseSVN ,然后Checkout Jaiku Engine的源代码,地址是:http://jaikuengine.googlecode.com/svn/trunk/ ,不会用或者懒得用SVN的人可以下载我下载好的压缩包,不过这样以后就不好更新。

  • 安装Google App Engine SDK for Python和Python 2.6

GAE SDK的下载地址是http://code.google.com/appengine/downloads.html ,最新版本1.2.7,Python的下载地址是http://www.python.org/download/ 这个网址最近刚被莫名其妙地封了,请自己想办法下载。记得下载2.6版本,而不是3.1,因为它不向下兼容。

  • 配置Jaiku Engine

用文本编辑器打开settings.py。要配置的某些地方如下

    1. 第27行:管理员昵称和邮箱,这个现在还没有用,所以默认也是被注释了的
    2. 第133行:你的网站的名称
    3. 第140行:根用户,相当于管理员吧,填你想要的用户名,每个新注册的用户都会自动添加这个用户为联系人。格式root@example.com,example.com就是下面会讲到的NS_Domain
    4. 第145行:你的appspot.com网站的地址
    5. 第149行:是否使用自定义的域名,比如我的judes.me。使用的话填True,否则填False,使用GAE提供的appspot.com
    6. 第154行:如果使用自定义域名,需要改这个。填你的裸域名,比如judes.me,而不是micro.judes.me
    7. 第157行:使用自定义域名的二级域名,比如我的就是micro。
    8. 第159行:NS Domain,每个注册的用户的数据的存储格式都是nickname@ns_domain.com,不明白开发者这样的意图是什么。这里的NS_Domain可以随便填个域名,比如你的appspot.com的域名或者自己的域名,或者gmail.com等等根本无关的网站,填什么的可以,但注意,一旦使用之后就不要再更改,我上面说过了,数据库里的数据都是用nickname@ns_domain.com的格式存储的,如果你改了NS_Domain的话,之前生成的数据就都不能读取了。
    9. 第177和178行:是否使用泛域名,也就是jude.micro.judes.me或者jude.micro-jude.appspot.com这样的形式。appspot.com现在是支持泛域名的,但是如果你使用自定义域名的话就不支持了。Update: 现在自定义的域名也已经支持泛域名解析了,还可以使用m.micro.judes.me访问移动版的微博。
    10. 第215行:是否在网站底部显示你的博客,填True的话就在下面第218行填上博客地址。
    11. 第289行:是否启用IM bot,这样用户就可以通过Gtalk等聊天工具更新微博。
    12. 第293行:IM bot地址,格式是app_id@appspot.com
    13. 第336行:是否启用导入Google帐户中联系人的功能,我是打开了的。
    14. 第359行:允许上传头像的最大尺寸,单位KB,最大1024.

上面弄好之后再打开cmd,用进入jaiku engine所在的目录,运行命令 manage.py config --write-to-file 程序会先将源码打包,然后要求你依次输入下面的配置

    1. 网站名称,同上面的settings.py中的第133行。
    2. 密匙,不知道有什么用。
    3. 你的在appspot.com上的完整的域名,例如micro-jude.appspot.com
    4. 是否启用自定义域名,yes或者no
    5. 你的自定义域名的裸域名,例如judes.me这样的形式
    6. Namespace,就是上面提到的NS_Domain。
    7. 根用户名,同上面提到的第140行
    8. 是否使用安全登录,如果选是,使用自定义域名登录时会跳转到appspot.com
    9. 发送邮件的地址,即为你申请该AppID的Gmail的地址

程序会把刚才的配置写在jaiku根目录下local_settings.py这个文件,如果你使用自定义域名的话,还有写小问题。使用文本编辑器打开这个local_settings.py,其中DOMAIN和COOKIE_DOMAIN被自动写成了www.domain.com的形式,但应该没人是把Jaiku Engine放在www这个二级域名下吧?所以你需要手动把这两个地方改成实际使用的二级域名。 保存之后再在cmd中运行命令manage.py update 或者 appcfg.py update ..\jaiku

OK,大功告成,打开浏览器开始享受你的一个人的微博之旅吧,如果你不觉得寂寞的话。这是我的:http://micro.judes.me/ 欢迎注册用户,这样我才不会太寂寞。

Date: October 7th, 2009
Cate: Blog
6 msgs

Opera对话框中使用的命令和用法

Opera几乎所有的功能都可以通过在按钮、菜单、快捷键、鼠标手势甚至语音中添加命令来完成,但有时还是必须用到对话框来设置,而即使必须用到对话框,我们还是可以通过命令的组合来自动完成想要的功能。例如在访问某个网站时,想要在站点首选项中对该网站禁用Javascript,就可以把下面的命令放到菜单中或者做成 按钮

edit site preferences,,,disable site js,blocked & cycle to previous page & cycle to previous page & uncheck item & ok

只要命令使用得正确,应该说Opera所有对话框中的操作都可以通过这种方式自动完成。我收集整理了 部分 常使用到的命令:

首先是打开想要的对话框的命令:

Show preferences(,0) 首选项常规或者上一次使用的选项卡
Show preferences,1 表单
Show preferences,2 搜索
Show preferences,3 网页
Show preferences,4 高级
Show preferences,10 标签页
Show preferences,11 浏览
Show preferences,12 通知
Show preferences,13 内容
Show preferences,14
Show preferences,15
Show preferences,16 字体
Show preferences,17 下载
Show preferences,18 程序
Show preferences,19 历史
Show preferences,20 Cookie
Show preferences,21 安全性
Show preferences,22 网络
Show preferences,23 工具栏
Show preferences,24
Show preferences,25 快捷键
Show preferences,26
Show preferences,27 语音
Customize toolbars 外观
Customize toolbars,-1 皮肤
Customize toolbars,1 面板
Customize toolbars,2 工具栏
Edit site preferences 站点首选项
Edit properties 点击右键时出现的属性对话框
  • 外观对话框中没有“按钮”选项卡的参数,可以使用customize toolbars & cycle to next page来达到。
  • 可以使用show preferences & show proxy servers直接进入代理设置对话框

对话框中的命令:

Cancel 取消
Check all 勾选全部复选框或者单选框(似乎并不管用)
Check item 勾选当前的复选框或者单选框
Click button 模拟点击按钮
Click default button 模拟点击默认的按钮,一般为“确定”,等效于“Ok”
Close dropdown 关闭下拉框
Cycle to next page 转到下一个(右边的)选项卡
Cycle to previous page 转到上一个(左边的)选项卡
Delay,x 延迟x毫秒,然后执行下一个命令
Focus next widget 跳到下一个元素,相当于手动按Tab键
Focus previous widget 跳到上一个元素,相当于手动按Shift+Tab键
Go to end 跳到列表中的最后一个元素
Go to start 跳到列表中的第一个元素
Move item down 下移选中的元素
Move item up 上移选中元素
Next item 在下拉框/列表中跳到下一个元素
Ok 确定
Previous item 在下拉框/列表中跳到上一个元素
Select item 选择元素
Show dropdown 显示下拉框
Uncheck item 取消勾选复选框或者单选框

 

然后是一些在输入框中常用到的命令:

Copy 拷贝到剪切板中
Paste 粘贴剪切板中的内容
Cut 剪切
Insert 插入。逗号后加上要插入的内容,一定要放在引号内
Clear 清除输入框中的内容
  • Opera关于输入框中文字的操作命令还有很多,完全可以精确到某个单词或者某个字母的操作,不过似乎没多大必要。

下面用一些具体例子说明用法;

把代理设置为127.0.0.1:80,并且启用 按钮

disable proxy servers & show preferences & show proxy servers & check item & focus next widget & insert,"127.0.0.1” & focus next widget & insert,"80" & focus next widget & check item & focus next widget & insert,"127.0.0.1” & focus next widget & insert,"80" & ok & delay,10 & cancel

说明:先禁用代理,再用show preferences & show proxy ser
vers打开设置代理的对话框,这时默认的位置是第一个复选框(即“HTTP”),用check item命令勾选上,然后用focus next widget跳到输入框,用insert命令插入代理IP127.0.0.1,跳到下一个输入框,插入代理端口80,然后再跳到下一个复选框“HTTPS”,重复上面的命令,把HTTPS的代理也设置好,再用ok命令保存设置(此处也可以用click default button命令)。这时我们回到了首选项对话框,再用Cancel命令退出首选项。之所以用delay延时命令,是因为保存设置时需要一定的时间,如果不延时,可能前一个的保存命令还没有执行完,后一个Cancel命令就已经执行了。

  • 很多时候需要重复多个focus next widge或者focus previous widget命令才能跳转到需要的元素上,可以手动打开对话框,然后按Tab或者Shift+Tab键,需要按多少次键就表示需要重复多少次focus命令。
  • 使用set preferences,”proxy|http servers=127.0.0.1:80″也可以达到同样的效果,但Opera有一个小毛病,就是使用set preferences命令时浏览器就会卡上一两秒中。为了操作的流畅性,我宁愿麻烦一点。

设置浏览器最大总连接数为64(可能没什么用处,不过主要通过这个说明下拉框的用法) 按钮

show preferences,22 & focus previous widget & focus previous widget & focus previous widget & focus previous widget & show dropdown & go to end & previous item & select item & ok

说明:先通过show preferences和focus命令的组合定位到“最大总连接数”的设置位置,用show dropdown命令打开下拉框,用go to end定位到下拉框的最后一个元素(128),再用previous item命令向上移一位定位到64,用select item选择当前定位的元素,然后ok保存

注意:

  • 使用了多个&运算符后基本上就不能再用”|”或者”>”运算符。这是因为Opera要在用”|”或者”>”连接的多个命令中找出一个当前为真的,然后执行该命令的下一个命令,而很多个用”&”连接的命令导致Opera无法判断哪个区段的命令为真,所以也就不知道该执行什么。不过可以用一个单命令来搭配多个”&”组成的命令组。比如 diable proxy servers | disable proxy servers & show preferences & show proxy servers & check item & focus next widget & paste & focus next widget & insert,"80" & focus next widget & check item & focus next widget & paste & focus next widget & insert,"80" & ok & delay,10 & cancel