NinGoo@Net --- Just a simple Oracle & MySQL DBA
常用标签:

Google Reader如何查找已经读过的文章

Google Reader无疑是一款非常优秀的在线RSS阅读器,我用它订阅了100多个Blog,读到了很多有用有趣的文章,用Google Reader读取最新的Blog基本成了日常工作。Google Reader有很多不错的功能,这里有篇文章给了一个不错的技巧来查找已经读过的文章。

如果你已经登陆Google Reader,可以点击这里打开已读文章列表。实际上这个列表也有一个专门的Feed地址,只是要获得这个地址需要一点小技巧。首先要获得你在Google的USER_ID,登陆Google Reader后在地址栏输入下面的javascript代码并回车:

javascript:prompt("User ID", _USER_ID);void(0);

在弹出的对话框中就是你的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出现了两次,版本也都是一样的:

rpm -qa | grep mysql
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

尝试卸载:

rpm -e 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 mysqlclient10-3.23.58-4.RHEL4.1
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函数用于数字的进制转换,共有三个参数:

CONV(N,from_base,to_base)

N是要转换的数据,from_base是原进制,to_base是目标进制。

select conv(16,10,16);
+----------------+
| conv(16,10,16) |
+----------------+
| 10       |
+----------------+
1 row in set (0.04 sec)

如果N是有符号数字,则to_base要以负数的形式提供,否则会将N当作无符号数

mysql> select conv(-16,10,16);
+------------------+
| 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,还有几个特定进制转换的函数,如:

另外还有一个convert函数用于转换不同的数据类型的,不要和conv搞混淆了。

Linux中如何将文件dump成16进制值

linux中有多种方式可以将文件dump成16进制显示,也可以将16进制值再反向成文件。

$ hexdump test.txt
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.

注意到hexdumpod出来的结果都是按实际存储的字节序,因为基于x86的linux是little-endian的,也就是高低字节是颠倒了的。但是xxd的结果是将字节序调整过了的。而IBM的Power CPU是big-endian的,所以在AIX上od的结果如下:

$od -x test.txt
0000000  4f52 412d 3030 3630 300a 4f52 412d 3030
0000020  3036 300a
0000024

xxd还可以实现从16进制反向生成文件,只需要加上-r选现即可。

xxd test.txt | xxd -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的,则生成的文件字符(包括换行符)是两两颠倒的。

$ od -x test.txt | xxd -r
RO-A0006
0RO-A0060
0

vi编辑器中可以使用:%!xxd 调用xxd来将文件转换成16机制编辑模式,编辑完成后再调用:%!xxd -r转换文件模式,从而使得vi具有16进制编辑的功能,:%!其实就是调用外部shell命令,需要注意的是xxd的字节序是big-endian的,不要搞错了。

如果你的Linux系统中找不到xxd命令,那么检查下是否有安装vim-common

rpm -qa | grep vim
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