I am LAZY bones?
AN ancient AND boring SITE

Google Storage

Google Storage是一个Google旗下的云存储服务,其数据存于美国的数个数据中心。主要面向开发者,免费提供100G的空间和300G的流量,当然,如果你愿意出点钱,可以获得更多。但是目前还处于测试阶段,不能直接注册,可以在这里申请,运气好的话,过几天就会收到试用邀请了。
我有幸获得了试用资格,体验了一下,就在这里记一下感想。

首先,Google Storage把所有存在上面的数据都放在一个个的“Bucket”里面,而这个bucket的名字,是所有用户共享的,也就是说,我建了个叫bones的bucket以后,其他人就不能再建这名的bucket了。
然后bucket里,就是一个个的object了。也就是说数据其实只有 bucket/object 两层,并没有常见文件树的嵌套目录结构。幸好object的名字可以带斜杆,而且web操作上也确实可以用带斜杆的object name来模拟目录结构。

其实,Google Storage采用Key/secret对的形式来进行权限管理,一个google账号可以同时建立5个Key/secret对。这样,在保证安全性的同时,也最大程度地提供了便利性。
权限这块,好像还可以把某个bucket的权限开放给指定的用户和组(就是google group),这个要用下面介绍的 GSUtil。

另外,Google Storage还提供了一个python写的命令行工具GSUtil,不过只有linux版和mac版,当我windows下安个cygwin还是可以跑的,呵呵。安装这个工具也很方便,直接下载解压到任意目录,然后配置一下环境变量,让系统能找到gsutil及相应的库就可以了,详见这里
首次运行gsutil,程序会让你输入Key/secret对,你把web上生成的信息输入进去,就可以使用了。
目前,使用这个工具可以建立/删除 bucket和object,以及上传或重命名文件;还可以用于设置权限等。

就玩了这么多,不过它还有个python的开发库,应该是可以重点研究的,如果能写个东西把这100G空间挂载到本地目录,应该还是蛮好玩的,呵呵。

个性鼠标


这其实是一个鼠标,前几天在网上无意中看到的,觉得挺有意思,就买了来。
刚拆包的时候,感觉第一印象是做工很一般,不过想想才15块钱,也差不多就这样了吧。
试用了一下,目前感觉还不是很习惯,呵呵,左右键还可以,但是要在鼠标移动的时候双击之类的,就会有点困难了,而且移动的时候经常定位不准。
不过也有个好处就是打开一个很长的网页以后,手可以脱离桌面来操纵滚轮,这点不错。
另外,这个滚轮没法按下,这对win可能没啥,但对linux来说,就无法简单地粘帖了。。。幸好同时按下左右键这个操作还算比较方便,弥补了一下。
另外,虽然宣传说可以边用鼠标边打字,但是其实一个手指被套牢以后,打字还是会很别扭的。
为了试试可用性,特意用这鼠标去win下打了局魔兽(冰封王座,不是魔兽世界),以我这极菜的水平,还是可以勉强打赢一个简单的电脑,哈哈,就说明这个还是有潜力的。
再贴张使用时候的图:

虽然这玩意不算很完美,但是多少体现出一种创新吧,还是蛮赞的~
多一些这种个性产品,生活也会更美好的。

Chromed Bird ── Chromium下的twitter客户端

这段时间,我偶尔用pino上推,但是大部分时间都是直接用官方的web客户端了。其实感觉官方的web客户端也是挺好用的,当然前提是你要有web翻墙的手段,比如ssh或者VPN。
然后,我打算近期把主浏览器从firefox迁移到chromium,在装上了Proxy Switchy!AdBlock以后,基本的应用就没问题了,于是自然而然地试着找twitter客户端了,于是就被我发现了这个Chromed Bird,装上一看,真是有相见很晚的感觉,早知道我就早点用chromium了~
先上图:

装完以后,地址栏右边就会多出一只鸟,点击就可以开始使用了。
这个客户端,基本上包含了所有必要的优点:界面简洁、反应快速、提示合理、支持url缩短和展开,支持官方和非官方RT、连地标和list等都支持、还支持实时搜索、自定义功能强大、还同时支持API和Oauth。
总之很优秀~

========补两张图========

cryptsetup – 分区加密工具

cryptsetup是linux下的一个分区加密工具,和之前介绍过的eCryptfs不同的是:eCryptfs是文件系统级别的加密,而cryptsetup是分区级别的,比文件系统级别工作在更底层的位置,是在经过加密的块设备上,再创建文件系统,再挂载使用。这应该是纯软件能达到的最底层的加密了吧。
我折腾这玩意,是因为上篇文章说到,我要把/home的数据备份到另一个硬盘,而那个硬盘的物理安全性并不能得到充分地保证,所以只有通过加密来确保数据的安全了。如果当年陈老师也用这玩意的话,想必不会捅出这么大的篓子,呵呵。

废话不说,简单说说安装和使用的方法。
如果你是用ubuntu这类发行版的话,安装部分就很简单了,基本就是直接安装cryptsetup这个包,就完事了。
但是如果你和我一样也是用自己编译内核的发行版,比如gentoo的话,使用中可能会出现以下错误:

/proc/misc: No entry for device-mapper found
Is device-mapper driver missing from kernel?
Failure to communicate with kernel device-mapper driver.
Cannot initialize device-mapper. Is dm_mod kernel module loaded?
Command failed with code 22: Cannot initialize device-mapper. Is dm_mod kernel module loaded?

这时候你不要急着去安装 device-mapper ,因为现在 device-mapper 已经并入到更强大的 lvm2 里面了,所以你要确保装了 lvm2 和在内核选项里选择了CONFIG_DM_CRYPT,如下:

-> Device Drivers
  -> Multiple devices driver support
    -> Device mapper support
      -> Crypt target support

另外,还建议选取大文件支持的CONFIG_LBDAF和CONFIG_CRYPTO_AES两个内核选项,我这边不选取前者,会无法打开加密分区(虽然说LBDAF是2T+的单文件支持,而我的硬盘一共只有80G);后者是一个内核里的加密算法API,我们就用这个算法来加密(也可以用其他的算法)。

说说怎么使用:
建立一个加密的分区,很简单,执行下面的命令:

sudo cryptsetup --verbose --verify-passphrase -c aes-cbc-plain luksFormat /dev/sdb1

我的外接硬盘在 /dev/sdb1 ,因为这个命令会摧毁这个分区的所有数据,所以程序会让你确认,输入大写的YES,回车,就会让你输入两次密码,输完就搞定了。
话外音:其实cryptsetup不仅支持用密码加密,还支持用文件来加密,可以是任意类型的文件,不过解密的时候,要确保文件一个字节都不差,用这个特性可以方便地构建解密U盘。

好了,加密完分区以后,要使用的话,可以这样:

sudo cryptsetup luksOpen /dev/sdb1 back

其中最后的“back”,可以是任意字符串,程序会提示输入之前设置的密码,输对密码以后,文件系统里就会多出一个 /dev/mapper/back ,接下来就可以像使用 /dev/sdXX 一样地使用这个 /dev/mapper/back 了。
比如,建立一个ext4文件系统,挂载,复制文件之类:

sudo mkfs.ext4 /dev/mapper/back
sudo mount /dev/mapper/back /mnt/back/
sudo cp XXX /mnt/back/
....

使用完以后,可以这样显式地关闭加密分区:

sudo cryptsetup luksClose /dev/mapper/back

看看如果别人偷你加密后的硬盘,想挂载看你的艳照时,会怎么样?哈哈:

$ sudo mount /dev/sdb1 /mnt/back/
mount: unknown filesystem type 'crypto_LUKS'

PS: 现在ubuntu的易用性确实越来越好了,ubuntu里插入加密的硬盘后会自动判断,并直接弹出输入密码的窗口,输完自动挂载分区。

买了个硬盘转接器

之前在淘宝上买了一个硬盘转接器,昨天到货了,今天试了了一下,感觉还可以。
我买的是UNITEK的Y-1031,本来想拍个图传上来的,结果发现相机扔老家了以后,身边居然没有一个可以拍照的设备,呃,看来得买个新手机了?
不过好在现在有搜索引擎,拿型号随便一搜就有图片了,所以也省得我拍了。

还是说说使用感受:这玩意的特点是小巧,然后支持2.5寸和3.5寸的IDE以及SATA接口的设备,包括硬盘和光驱之类的。
现在好了,我可以把压箱底的80G大硬盘拿出来做/home的全量备份了,哈哈。还有下回买个1T的盘,放视频文件之类的大家伙。因为刻录的光盘实在太多了,我的光盘包都要爆满了,是时候换种存储方式了。
不过,在我看来,这个并不适合当移动硬盘,虽然转接器不大,但是带个电源加上硬盘,又都是外置的,移动用的话,不方便也不稳定。还是比较适合备份。

另外,全量备份的/home,因为涉及隐私(我倒是没有什么艳照,但不少密码都是明文保存的呢),然后硬盘的丢失概率又大些,所以采用了加密分区,关于这个加密分区,等我下文仔细说说吧~

这个是80G老硬盘的读写速度测试图,呵呵:

记一下我的ubuntu升级到10.04时遇到都问题

今天,为了测试一下阿里拼音,很难得地进了一次ubuntu,后来发现居然还是9.10的版本,看不下去了,就顺手升级了一下。
本以为这种升级历史上已经做过很多次,应该不会有什么问题的,但是今天还是遇到问题了,就在这里记一下吧。
我升级的思路比较老土,就是先

sudo sed 's/karmic/lucid/g' -i /etc/apt/sources.list

再apt-get update,再一直交替进行upgrade和dist-upgrade,直到完全没有错误,再重启。如果中间遇到某个包有问题,一般是先卸载这个包,升级完成以后再给安装上就好了。
但是今天遇到一个无法先卸载的包,到某步的时候,出来这样一个错误:

E: Could not perform immediate configuration on ‘util-linux’.Please see man 5 apt.conf under APT::Immediate-Configure for details. (2)

很明显,这个是 util-linux 包出问题了,但是这个包太底层了,如果卸了这个,整个ubuntu就差不多没了,我可不敢保证我还能给折腾回去。
解决问题的思路:
先试着手工dpkg安装这个包:

sudo dpkg -i /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb
dpkg:对于含 util-linux 的文件 .../util-linux_2.17.2-0ubuntu1_i386.deb 来说,有预依赖(pre-dependency)方面的问题:
 util-linux 预依赖于 libc6 (>= 2.11)
  已安装了 libc6,不过安装的版本是 2.10.1-0ubuntu17。
dpkg:处理 /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb (--install)时出错:
 预依赖(pre-dependency)问题 - 将不安装util-linux
在处理时有错误发生:
 /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb

看来其实是libc6这个包版本有问题,于是查到这个包及其依赖包的deb,手动下载并安装:

wget http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.11.1-0ubuntu7.2_i386.deb
wget http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-bin_2.11.1-0ubuntu7.2_i386.deb
sudo dpkg -i libc6_2.11.1-0ubuntu7.2_i386.deb libc-bin_2.11.1-0ubuntu7.2_i386.deb

这样成功以后,就比较好办了,虽然直接dist-upgrade仍然不行,但是执行

sudo apt-get dist-upgrade -f

就可以成功解决此问题了。

现在分析看来应该是由于我的sources.list里面没有security部分造成的,如果在里加上

deb http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse

应该就不会错了吧~

都说ubuntu的大版本升级比较折腾,看来还真是,呵呵。幸好咱也算老手了,不然遇到这种问题,还不被整成重装啊?

阿里拼音输入法

今天有幸试用了一下阿里拼音输入法的linux版本,写个简单地评测吧。
不过事先申明噢,别问我要下载地址,因为这输入法目前还不开源,只是进行内部试用,所以我也没办法公开。。。
我得到的也只是一个32位的deb包,24M大,基于SCIM。
幸好我常年不用的ubuntu还是可以用的,进来安上以后,随便打了几个字,感觉还行。但是和它的windows版本比,差距还是很大的,特别是易用性方面,比如输入拼音,在没上屏之前,不能通过左右箭头移动光标进行修改等等。(难道这个是SCIM框架就不支持?)
设置界面的截图,可以看到也没有什么高级的特性:

运行时的几个截图:



从我用这个输入法写这篇博文的感觉来说,词库的准确率还算可以,但是功能还是不够强大,也没有网络词库之类的,流畅程度上也有点欠缺,稍稍有点卡的感觉。所以就这个版本来看,我们不能寄予太大的希望,但是凭借阿里的实力,如果继续开发后续版本,并给公开的话,将是广大linuxer的又一福音。

启用新域名

我,是个怀旧的人,用过的东西都不怎么舍得扔掉,所以,换域名对我来说,是要做蛮久的思想工作的。
但是,由于众所周知的原因,用着祖国母亲的cn域名,总是让我觉得有种压迫感和不安。
这种不安在我的域名已经部分获得了GFW认证之后,达到了前所未有的程度。
于是,无奈之下,开始思考其他域名:虽然老域名还不致于被DNS污染之类的,但是我总得有个准备吧。
现在,我准备好了,一个全新的域名隆重登场了:luy.li,欢迎大家访问。
不过,由于我还是怀旧,原来的 li2z.cn 我也会继续使用,希望有一天,能有一个新的组织来管理天朝的cn后缀域名。

简单说说WP换域名的步骤,其实还是挺简单的,在网络提供商那里设置好域名指向以后,应该就可以用新域名访问主页了;
然后在后台的“设置”那里修改博客地址那项,各页面的用久链接就应该正确指向新的域名了;
但是数据库里,经常还会有写在内容里的内部链接,对于这种可以用命令行登录mysql用以下语句搞定:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'href="http://li2z.cn', 'href="https://luy.li') WHERE post_content LIKE '%href="http://li2z.cn%';
UPDATE wp_posts SET post_content = REPLACE(post_content, 'src="http://li2z.cn', 'src="https://luy.li') WHERE post_content LIKE '%src="http://li2z.cn%';
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'http://li2z.cn', 'https://luy.li') WHERE comment_author_url LIKE 'http://li2z.cn%';

执行完这个,就算是搞定了吧。剩下的就是社会工程学范畴的工作了,比如通知朋友修改你的友链地址等等。
当然,我不知道这样会不会影响页面PR或者搜索引擎收录之类的,不过我不是很关心这个,一是由于做为一个个人笔记性质的blog,这些没啥意义;二是由于原域名短期内还是可以访问的,应该也影响不大。

PS:推荐的RSS地址不变,还是:http://feeds.feedburner.com/bones7456

bones7456 version 2.0 released!

好消息~ 在经过长达10天的跳票以后,我们终于迎来了 bones7456 version 2.0。
鼓掌~~~ 撒花!*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。
以下是 screenshot 一枚:

其实这应该是昨天下午的消息,也就是距bones7456第一版本发布整整26年的日子(农历纪年),哈哈。
不过,由于最近上网的时间很不固定,所以现在才发文~~

田园生活

安静的午后,适中的阳光,搬个小凳子,边拿ipod上网,边照看家里养的鸡: