蛋疼研究之使用 rsync 快速分享文件

今天要传个截图,然而 XMPP 的传文件功能又不太靠谱,因此就想到干脆传到 HTTP 服务器上吧。特写蛋疼脚本一个,供各位看官参考指正:

#!/bin/bash
 
# This is a bash script written by Jiehan Zheng, for synchronizing his file on
# his laptop with the US1 server using rsync.
 
LOCKDIR="/var/lock/rsync_with_us1"
 
cd "$( dirname "$0" )"
 
if mkdir "${LOCKDIR}"; then
    notify-send -u critical -i info "Starting to Sync" "Syncing with US1 using rsync..."
else
    notify-send -u critical -i error "Sync Aborted - Parallel Run" "Lock ${LOCKDIR} is present. Please wait until another process ends, and try again. Exiting."
    exit 1
fi
 
rsync -r -t -v --delete . us1.jiehan.org:~/jiehan.org/statics/public_html | tee rsync_log
 
rm -rf "${LOCKDIR}"
notify-send -u critical -i info "Rsync with US1 Finished" "`cat rsync_log`"

今后这个脚本不再在博客更新了。如需查看我最新的脚本,请访问 http://static.jiehan.org/SYNC

那个 cd 不属于蛋疼范围之内,因为我把这个脚本加入到快捷键里面了,每次按 Windows 徽标键 + ` 就可以自动同步啦。然而在 gnome-keybinding-properties 里面的命令没法使用“当前目录”,因此只好先 cd 到包含它的目录。哪位同学可以帮我找到运行这些命令是在源代码中哪个文件实现的?

至于 notify-send,估计不少人用过,你可能比较好奇这个 -i 参数是怎么回事。没错,是指定图标,那图标可以从什么范围内指定呢?我也一直不知道,直到今天偶然看到某国外论坛帖子有人用这个 notify-send,提到了一个 -i 的值,并且可用,我就用 locate 命令查那个值,终于找到了,你可以使用这个目录里面的图标:

/usr/share/icons/

好吧就说这么多。另外有个问题比较烦人,就是 WordPress 会把文章里的 > 全部改成 >,由于代码是包裹在 pre 里面的,这个 WP-Syntax 插件就会显示出 > 了。你没准知道可以给 pre 加一个属性 escaped="true" 来避免 WP-Syntax 再转义嘛,可是呢,在切换到可视化编辑器以后,这个 escaped="true" 会被吃掉的。

用 Ubuntu 做 AirPrint 服务器实现 iOS 无线打印

本文教你在 Ubuntu 配置 Avahi 和 CUPS,使你的 iPhone、iPad、iPod touch 可以使用 AirPrint 功能打印到连接在 Ubuntu 上的打印机。步骤在下面,完成只需 5 分钟,不骗你哦。

我正在很努力的补作业,前段时间又是忙申请,又是忙 TOEFL,还回老家什么的。眼看着几个小时前已经开学了,现在只能补作业。补作业呢,最重要的就是效率,怎么保证效率呢,那么就是借鉴和参考答案的时候别老前后翻,太慢,得想办法不用翻来翻去的才好。

怎么办呢?聪明的你大概想到了,那复印吧!复印,太 out 了吧,复印多麻烦,你得先把作业本上的笔拿下去,起身,开门,打开书房的门,把一体机的扫描盖子打开,作业本打开到答案那页折个死褶,盖上盖子按复印。多麻烦。

看来最优方案应该是这样子的:坐在椅子上,翻到答案那页,拿出你的 iPhone,给答案照张相,AirPrint 无线打印出来,再抄起无绳电话请你妈妈把答案给你从打印机上拿下来,送到你屋里。你的移动距离为 0。

于是呢,就搜索呗。家里买的是便宜打印机,肯定没法实现直接 AirPrint。用英文搜索,确实有一些解决方案,但是找到的都很麻烦,自己要改的配置文件比较多,而且不详细。那我就拿中文,把几种方法结合在一起,给大家推荐一种比较方便的 Ubuntu 作 AirPrint 服务器的方案吧。不要害怕哦,听我的,你是绝对不会碰到可怕的、黑黑的终端的。

Ubuntu maverick 本人亲自测试通过,一会儿有插图。

Ubuntu 有个零配置的网络工具,叫做 Avahi,用它可以方便地创建各种 IP 服务。牛人 Ryan Finnie 告诉我们,AirPrint 大概和 IPP 广播差不多,除了多一个 _universal subtype 和一个 TXT 记录。

你可以只通过向 Avahi 配置文件夹添加 .service 文件的方式,来添加网络服务。另一个牛人 tjfontaine 制作了 Python 脚本,自动搜索你所有设为共享的打印机并创建 .service 文件。

  1. 先在 System > Administration > Printing 通过右键菜单把你的打印机共享,然后在 Server > Settings… 里面勾上 Publish shared printers connected to this system,其它几项根据你的情况选择,但是这项是必须选的,和我们一会儿编辑配置文件有关系。
  2. 然后要调教一下 CUPS 打印服务,其实我也不知道为什么要这样做,但是不做这一步就只能找到打印机,但打印不出来。大概是因为 AirPrint 指定的主机名有问题。按 Alt-F2,输入:

    gksu gedit /etc/cups/cupsd.conf

    回车,输入密码或刷指纹,在很靠前的位置,注释“Allow remote access”的下面,添加如下一行(其实你也不一定加在它下面,只是美观整齐一些…):

    ServerAlias *

  3. 然后来折腾 Avahi,先从这个地址下载 airprint-generate.py 文件,然后扔到你方便的地方,右键,Properties > Permissions > Allow executing file as program 打勾,然后保存。
  4. 双击它,选择 Run in terminal。之后桌面会多出来一个或多个文件,这是它生成的你所有共享打印机的 .service 文件。如果没有,或出错,请安装源里面的 python 包。
  5. 按 Alt-F2,输入

    gksu nautilus /etc/avahi/services/

    回车,来启动一个 root 权限的 Nautilus 文件管理器来拷贝配置文件。把刚刚 py 程序生成的 .service 文件们拖进去。

  6. 好啦,剩下就是重启 CUPS 让刚刚第 2 步的配置文件立即生效啦,Alt-F2:

    gksu service cups restart

好了,剩下的任务就是打印和抄作业了。谢谢大家。

选择打印机和份数

选择打印机和份数

开始打印

开始打印

哦耶,开抄

哦耶,开抄

Ear Candy

日志

PulseAudio 有个软件叫 Ear Candy 可以帮它调音量,比如你在 Rhythmbox 放音乐,然后 Pidgin 来了个消息,它会自动降低 Rhythmbox 的音量… 比如你在 Flash 看视频,也可以设置它自动淡出正在播放的背景音乐。不过 maverick 源里的 0.5 有 bug,Pidgin 来消息它就自动崩溃了,natty 的 0.9 应该修复了…

后来我还是删了这个软件,等 natty 吧…

更新:直接从这儿下载吧!

在 Ubuntu 使用内置指纹识别器

Ubuntu 装到计算机之后,基本上什么驱动程序都不用装,就能完美运行,尤其是最新版本的 Ubuntu。不过指纹识别一直是个小小的遗憾。

嘿嘿大家都知道我是 GUI 控,主要是懒,本文介绍只用图形界面,为 Ubuntu 添加指纹识别器支持的方法。主要支持 ThinkPad、Vaio 等部分型号。

一、添加 PPA 软件源

在这里要感谢 David Jurenka,幕后英雄啊,给我们省了这么多事。

打开 System(系统)> Administration(管理) > Software Sources(软件源),在 Other Software(其它软件)标签下添加:

ppa:fingerprint/fprint

然后按照提示重加载软件列表。

二、安装并测试 FPrint 指纹识别软件

打开 Applications(应用程序)> Ubuntu Software Center(Ubuntu 软件中心),在搜索框搜索 fprint-demo,安装第一项。

完成后,打开 Applications(应用程序)> Accessories(附件)> fprint project demo,检查是否能够找到设备,此时不用进行登记。

若可以,那就请继续;若不行,请删除 fprint-demo,移除 PPA 源,按照这个页面的指示操作,配置 Fingerprint GUI,它包含 non-free 的包,支持更多硬件,但是和 GNOME 整体的集成更差。(经实测我觉得很山寨 …)

三、安装 PAM 模块

打开 Ubuntu Software Center,搜索并安装 libpam-fprintd

这里请仔细回忆您有没有修改过 /etc/pam.d/common-auth若没有,则不需要做别的操作,否则还请按 Ctrl-Alt-T 打开终端,运行 sudo pam-auth-update --force

四、登记指纹

打开 System(系统)> Preferences(首选项)> About Me(关于我),点选“Enable Fingerprint Login…(启用指纹登录…)”并按提示操作即可。

五、几个问题

  1. 如果您在安装的时候选择了“加密我的 /home 文件夹”,那么这种方式无法使用,因为您的指纹特征是存放在 ~/ 的,而要读取它,又必须要先用密码解密。
  2. 在有些时候,比如打开新立得软件包管理器等软件,需要管理权限,这时它们使用的是 gksu,但它有一些 bug,所以你能在下方 panel 看到新出现一个“正在启动…”的窗口,但是没有实际内容,这时候请刷指纹即可。暂无解决方案。