2012年8月23日星期四

折腾 xmpptalk

Xmpptalk 是百合仙子的一个 XMPP(比如 GTalk)多人聊天机器人。只要加该机器人为好友,就可以和其他加该机器人为好友的人聊天。机器人负责转发消息。

首先,强调这篇文章发表是 2012 年 8 月。在此之后可能会更新,所以当你看到这文章的时候,原来的程序可能已经更新不再使用这种方法了,所以请自己考虑清楚每一步。
一个 VPS 是必不可少的,怎么购买 VPS 不是本文谈论的范畴。
  1. 下载 xmpptalk 的源代码。
    git clone https://github.com/lilydjwg/xmpptalk
  2. 不要先运行 scripts/quickinstall.sh!它会毁了你的系统的!
    使用发行版自带的软件包工具安装下列软件:
    • python3.2
    • python3.2-dev
    • python2.7
    • python2.7-dev
    • mongodb (安装之后请启动服务,ArchLinux 用户貌似要手动创建 /data/db 目录)
    • mercurial (有的发行版里面叫做 hg)
    • prosody (如果你不打算使用公共的 XMPP 服务,而自己开一个 XMPP 服务器)
    • mongokit (很多发行版里面是没有这个包的,而且由于没有更新,不支持 python3,所以需要用 2to3 转换,后面介绍这个包的详细安装)
  3. 安装 mongokit。这一段的版本号全部自己变通,因为你看到文章的时候原程序可能已经更新了。
    wget http://pypi.python.org/packages/source/m/mongokit/mongokit-0.8.tar.gz
    tar xvzf mongokit-0.8.tar.gz
    cd mongokit-0.8
    原程序在安装的时候会自动下载 setuptools,但由于需要的版本 0.6c7-py2.7 已经无法下载,目前的版本是 0.6c11-py2.7,所以我们需要手工下载目前版本,并且修改名字为需要的版本。
    wget -O setuptools-0.6c7-py2.7.egg http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
    sudo python2 setup.py install
    下一步是把 python2 的模块转换为 python3。
    sudo cp -a /usr/local/lib/python2.7/dist-packages/mongokit-0.8-py2.7.egg/mongokit /usr/local/lib/python3.2/dist-packages/
    sudo 2to3 -w /usr/local/lib/python3.2/dist-packages/mongokit
    安装好了再去运行 scripts/quickinstall.sh,用 root 权限。
  4. 配置 config.py,此文件是 Python 语法,请按注释进行配置。
    一定要修改的地方有 jidrootsaltdatabase(数据库名字不要 . 等特殊符号)、settings.password
    如果要配置 Prosody,机器人的 XMPP 地址要写成自己的 VPS 的域名,等一会配置 Prosody 的时候创建你要的机器人账户。
  5. 配置 Prosody
    Prosody 的配置有一点烦人,你还需要在本地电脑上准备好 Pidgin 一类的 xmpp 聊天软件。
    Prosody 的全局配置文件在 /etc/prosody/prosody.cfg.lua
    打开后找到
    allow_registration = false;
    false 修改成 true,在完成新用户注册之后再修改回来。
    下面代码中斜体的 example.com 表示要修改成自己站点的名字。
    sudo cp /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.d/example.com.cfg.lua
    打开 /etc/prosody/conf.d/example.com.cfg.lua,删除下面这行:
    enabled = false -- Remove this line to enable this host
    然后修改所有的 example.com 为自己站点的名字。
    然后用 root 执行:
    cd /etc/prosody/certs
    openssl req -new -x509 -nodes -days 99999 -out "example.com.crt" -keyout "example.com.key"
    然后一路回车或者填写一些信息。
    最后重启 Prosody 服务,比较通用的命令是:
    sudo /etc/init.d/prosody restart
    当然如果你的发行版提供开关服务的命令,使用它,比如 ArchLinux(SysVInit)的命令是 sudo rc.d restart prosody
  6. 创建 XMPP 账户
    用你的 XMPP 客户端(比如 Pidgin)创建一个新账号,服务器填写你的 VPS 的地址,勾选“在服务器上创建此新账号”。
  7. 启动 xmpptalk
    在 xmpptalk 的目录里面,第一次需要初始化数据库,输入:
    python3 dbman.py
    然后启动机器人:
    python3 main.py
至此结束。你还可以配置机器人来达到更多的功能,另外建议开启 Prosody 的加密功能,具体配置可以在 /etc/prosody/prosody.cfg.lua 中找到。

Tips: 如果发现重新启动服务器之后 mongodb 迟迟不肯工作,试试看删除 /var/lib/mongodb/mongod.lock,然后重新启动 mongodb 服务即可。

Update 2012-08-31: 今天发布了我自己的 chatlist。依赖项只有一个 SleekXMPP
安装 SleekXMPP 的命令放在下面:

git clone https://github.com/fritzy/SleekXMPP.git
cd SleekXMPP
sudo python3 setup.py install
请记住全程用 Python 3(如果你机器默认的 Python 是 Python 2 的话)。

2012年8月16日星期四

Linuxer 的 Windows 入门指南

本文章的灵感来自 Linuxer 的 Windows 生存指南,旨在带领 Linux 用户通过本指南得到 Windows 的入门。

现在 Linux 世界正在发生一些动荡。你可能正打算避避风头,暂时迁移到 Windows。而由于你没有操作 Windows 的经验(或者忘记了),会遇到很多麻烦。本指南希望能够让你顺利迁移到 Windows。

磁盘

每一个磁盘卷在 Windows 中一般情况下有一个盘符,用一个字母表示,比如 /dev/sda1 在 Windows 中称作 C:C: 也是 Windows 的系统盘。
以后的分区一般安顺序分排为 D:E: 一直到 Z:。但是往往 Z:Y: 等是用来挂载网络驱动器的。
Windows 中的软驱,/dev/fd0 称为 A:/dev/fd1 称为 B:。光驱没有特殊的称呼,也只占用一个普通的盘符。

基本桌面操作

如果你曾经是 LXDE 用户,那么基本桌面操作部分可以跳过。如果你曾经是 KDE 用户,那么这部分可以大略阅读一下。
当你登录进入 Windows 时,你面对的应该是 Windows 桌面。如果你面对的是一个 Metro 风格的“开始”屏幕,你需要点击“桌面”磁贴来进入传统 Windows 桌面。
屏幕最左下角是“开始”按钮,你可能会看到一个 Windows 标志,点击它,你的 Windows 旅程将会从单击这里开始
点击“开始”按钮之后,将显示“开始”屏幕或者“开始”菜单。你可以在其中浏览你安装的应用程序。
紧临着“开始”按钮的一整个工具条,叫做任务栏。任务栏当中显示了你当前正在运行的应用程序。
任务栏的最右端叫做托盘区域。读取系统时间也是在那里。
桌面上默认有一个“回收站”图标。你可以定制桌面来符合自己的喜好,比如很多人喜欢把“计算机”、个人文档、浏览器图标放在桌面上。
打开这样一个图标使用双击,打开“计算机”将会带出来一个文件管理器,名字叫做“资源管理器”,他的功能相当于 Nautilus、Dolphin、Thunar、Pcmanfm。你可以看到电脑当中的所有盘符,并且打开它们浏览。

各种路径

下面列出 Windows 的各种常用路径和 Linux 中等效的路径。

Windows 路径Linux 等效注释
C:\/你的系统盘
C:\WINDOWS\system32/bin/lib各种命令和 DLL 的所在地
C:\Program Files/usr/lib/usr/share各种应用程序的安装地
C:\Users/home个人文档的存放地,但由于不能单独分区,一般都不把文档存在这里
C:\Users\用户名\Local Settings\Temp/tmp临时文件放在这里,但是不像 Linux 那样存在内存里,关机时也不会自动清理
看到这里,你应该发现了,Windows 的路径分割用的是 \ 而不是 /,而且文件名不区分大小写。

各种命令

你可能离不开各种命令,Windows 也有命令解释器,它的名字叫做“命令提示符”。
要打开“命令提示符”,请在“开始”菜单中打开“所有程序”,依次打开“附件”、“命令提示符”,你也可以用路径 C:\WINDOWS\system32\cmd.exe 来启动它。
接下来你能够看到一个 80x25 的黑色窗口,它的名字叫做控制台(console)。
现在在控制台里面试试看这些命令吧。
Windows 命令行Linux 等效命令注释
cdcd切换当前目录
cd(不带参数)pwd查看当前目录
D:切换当前盘符
copycp复制文件
movemv移动文件
ren重命名文件
delrm删除文件(可以使用通配符,但展开通配符的不是命令提示符,而是 del 程序自身)
mdmkdir创建目录
rdrmdir删除空目录
rd /s /qrm -Rf清空并删除目录
pingping测试网络连通
tracerttraceroute追踪路由
nslookupnslookupDNS 查询与诊断
shutdownshutdown关机、重启
你应该也看到了,命令行参数是用 / 开头的,而不是 -,短选项不可以合并,长选项也是简单的一个 / 开头。获取帮助可以用 /help 选项。(然而 pingtracertnslookupshutdown 等命令仍然是 Unix 风格,因为 Windows 的网络功能差不多就是从 BSD 抄过来的)

安装软件

Windows 不提供软件包管理,所以软件需要自己安装。
请到官方网站下在安装包或者到信任的软件下载站下载。
安装包可以是 .exe 格式的可执行文件,也可以是 .msi 格式文件。双击打开就可以安装。
安装过程当中需要确认很恶心的最终用户许可协议,还需要一直点击“下一步”。
安装的目的地建议设置到 D: 盘,这样可以避免把 C: 盘占满。

选择软件

选择软件建议(摘录自 Linuxer 的 Windows 生存指南):
  • 选择跨平台软件
    跨平台软件可以让你在 Linux 和 Windows 中找到熟悉的软件,很快适应全新的工作环境。
  • 选择自由软件
    在长期的 Linux 世界生活,继续使用自由软件来管理很多事务,能够让自己在 Windows 世界依然体会到自由软件的乐趣。你仍然可以向开发者提交 bug 报告,或者协助写补丁等等。
  • 不要惧怕商业软件
    使用 Windows 就不要惧怕商业软件,Donʼt panic。商业软件也有很多优秀的。
  • 慎用中国产软件
    理由不用我说了吧。除非你用沙盒来运行程序。

安全

在 Windows 世界,你需要一个安全软件,不能再像在 Linux 那边那样裸奔了。
安全软件比如杀毒软件、防火墙软件都是必须的。
不要使用号称免费的安全软件,天下没有免费的午餐。

我的软件选择

浏览器:Google Chrome
文书处理:LibreOffice / Microsoft Office
开发:gVim
及时通讯:Pidgin
SSH 连接:Putty / Bitvise Tunnelier
模拟 Unix 环境:Cygwin / MSYS
虚拟机:Oracle VirtualBox / vmware Workstation
网络隧道:OpenVPN / Putty / MyEnTunnel

Unix 环境

在 Windows 下模拟 Unix 环境并非难事。一个小小的 Cygwin 就能解决问题。但是由于 Windows 进程创建的开销极大,所以一个 ./configure 下来,电脑基本吃不消了。
替代的方案有,连接到远程 SSH,或者使用虚拟机。我个人偏向后者。

提示

不要以为 Windows 的自动保存功能能够帮助你!Windows 程序一般不会自动保存你的文档,即使自动保存了,那个功能也是废物!
养成手动 Ctrl-S 的习惯,不要等到找不到备份的时候再悲愤!