Google Reader如何查找已经读过的文章
Google Reader无疑是一款非常优秀的在线RSS阅读器,我用它订阅了100多个Blog,读到了很多有用有趣的文章,用Google Reader读取最新的Blog基本成了日常工作。Google Reader有很多不错的功能,这里有篇文章给了一个不错的技巧来查找已经读过的文章。
如果你已经登陆Google Reader,可以点击这里打开已读文章列表。实际上这个列表也有一个专门的Feed地址,只是要获得这个地址需要一点小技巧。首先要获得你在Google的USER_ID,登陆Google Reader后在地址栏输入下面的javascript代码并回车:
在弹出的对话框中就是你的USER_ID,其实也不用如此高科技,Google Reader有一个分享阅读(Shared Items)的功能,点进去后可以发现里面关于你的共享阅读的几个链接(比如:See your shared items page in a new window.)里都有一长串数字,那就是你的USER_ID。
那么你已读过的文章列表的Feed地址就是http://www.google.com/reader/atom/user/USERID/state/com.google/read,将其中的USERID替换成你实际的USER_ID,用Google Reader订阅该地址,然后在搜索框后面的下拉列表中,选择这个Feed进行查找,就可以在你已经读过的所有文章中进行查找啦。注意这个Feed必须使用对应的帐号登陆以后才有效,在其他帐号中是没有权限读取的。
你还没用过Google Reader?那赶快体验一下,用Google Reader订阅我的Blog吧^_^
卸载rpm包遭遇error: specifies multiple packages
准备在Redhat Linux系统上安装MySQL5.1,先卸载自带的低版本MySQL,结果不知怎么搞的,同一个package出现了两次,版本也都是一样的:
mysqlclient10-3.23.58-4.RHEL4.1
mysql-4.1.20-2.RHEL4.1
mysql-4.1.20-2.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
尝试卸载:
error: "mysqlclient10-3.23.58-4.RHEL4.1" specifies multiple packages
通过man rpm,发现–allmatches应该可以解决这个问题:
–allmatches
Remove all versions of the package which match PACKAGE_NAME. Normally an error is issued if PACKAGE_NAME matches
multiple packages.
rpm -e --allmatches mysql-4.1.20-2.RHEL4.1
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
ok,系统自带的旧版本MySQL卸载完成。
MySQL的conv函数
继续学习MySQL,这篇记录下conv函数。conv函数用于数字的进制转换,共有三个参数:
N是要转换的数据,from_base是原进制,to_base是目标进制。
+----------------+
| conv(16,10,16) |
+----------------+
| 10 |
+----------------+
1 row in set (0.04 sec)
如果N是有符号数字,则to_base要以负数的形式提供,否则会将N当作无符号数
+------------------+
| conv(-16,10,16) |
+------------------+
| FFFFFFFFFFFFFFF0 |
+------------------+
1 row in set (0.00 sec)
mysql> select conv(-16,10,-16);
+------------------+
| conv(-16,10,-16) |
+------------------+
| -10 |
+------------------+
1 row in set (0.00 sec)
除了conv,还有几个特定进制转换的函数,如:
- hex(N)相当于conv(N,10,16)
- oct(N)相当于conv(N,10,8)
- bin(N)相当于conv(N,10,2)
另外还有一个convert函数用于转换不同的数据类型的,不要和conv搞混淆了。
Linux中如何将文件dump成16进制值
在linux中有多种方式可以将文件dump成16进制显示,也可以将16进制值再反向成文件。
0000000 524f 2d41 3030 3036 0a30 524f 2d41 3030
0000010 3630 0a30
0000014
$ od -x test.txt
0000000 524f 2d41 3030 3036 0a30 524f 2d41 3030
0000020 3630 0a30
0000024
$ xxd test.txt
0000000: 4f52 412d 3030 3630 300a 4f52 412d 3030 ORA-00600.ORA-00
0000010: 3036 300a 060.
注意到hexdump和od出来的结果都是按实际存储的字节序,因为基于x86的linux是little-endian的,也就是高低字节是颠倒了的。但是xxd的结果是将字节序调整过了的。而IBM的Power CPU是big-endian的,所以在AIX上od的结果如下:
0000000 4f52 412d 3030 3630 300a 4f52 412d 3030
0000020 3036 300a
0000024
xxd还可以实现从16进制反向生成文件,只需要加上-r选现即可。
ORA-00600
ORA-00060
$ echo 0000000: 4f52 412d 3030 3630 300a 4f52 412d 3030 | xxd -r
ORA-00600
ORA-00
但是要注意xxd接受的是big-endian格式的16进制值,如果输入的是little-endian的,则生成的文件字符(包括换行符)是两两颠倒的。
RO-A0006
0RO-A0060
0
在vi编辑器中可以使用:%!xxd 调用xxd来将文件转换成16机制编辑模式,编辑完成后再调用:%!xxd -r转换文件模式,从而使得vi具有16进制编辑的功能,:%!其实就是调用外部shell命令,需要注意的是xxd的字节序是big-endian的,不要搞错了。
如果你的Linux系统中找不到xxd命令,那么检查下是否有安装vim-common包
vim-enhanced-6.3.046-0.40E.7
vim-X11-6.3.046-0.40E.7
vim-minimal-6.3.046-0.40E.7
vim-common-6.3.046-0.40E.7
