使用vimdiff比较两个文件并合并文件(转)

如果你工作在linux,如果你没有svn乌龟(那个可视化svn工具)来进行文件比较,如果你想进行两个文件的合并,请使用vimdiff。linux自带工具,比什么meld之类好多了。

本文转自 http://www.ibm.com/developerworks/cn/linux/l-vimdiff/,原文作者为 高 延斌

各种 IDE 大行其道的同时,传统的命令行工具以其短小精悍,随手可得的特点仍有很大的生存空间,这篇短文介绍了一个文本比较和合并的小工具:vimdiff。希望能对在 Unix/Linux 系统上进行开发的朋友有所帮助。

源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分。现在市场上很多功能很强大的专用比较和合并工具,比如 BeyondCompare;很多IDE 或者软件配置管理系统,比如Eclipse, Rational ClearCase都提供了内建的功能来支持文件的比较和合并。

当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如diff。可惜diff的功能有限,使用起来也不是很方便。作为命令行的比较工具,我们仍然希望能拥有简单明了的界面,可以使我们能够对比较结果一目了然;我们还希望能够在比较出来的多处差异之间快速定位,希望能够很容易的进行文件合并……。而Vim提供的diff模式,通常称作vimdiff,就是这样一个能满足所有这些需求,甚至能够提供更多的强力工具。在最近的工作中,因为需要做很多的文件比较和合并的工作,因此对Vimdiff的使用做了一个简单的总结。我们先来看看vimdiff的基本使用。

继续阅读“使用vimdiff比较两个文件并合并文件(转)”

在linux下使用java(jni)读取硬盘序列号

    在linux下读取硬盘序列号相比在windows下简单一些,主要还是打开系统文件并获取相对应的序列号即可。
    以下代码为linux读取硬盘序列号的c++代码:

int get_hd_sn(const char* szDevName, char* szSN, int limit) {
	struct hd_driveid id;
	int fd = open(szDevName, O_RDONLY);
	if (fd < 0) {
		perror("打开失败:");
		return -1;
	}
	//这句话是关键
	if (!ioctl(fd, HDIO_GET_IDENTITY, &id)) {
		strncpy(szSN, (const char*) id.serial_no, limit);
		return 0;
	}
	return -1;
}

    有了以上代码,那么我们的jni方法就很好写了,只要定义一下相对应的方法,并返回代码值即可。如下所示的定义:

	public native int readSn(String s, char[] cs);

    其中 s表示传递的硬盘标识,一般为/dev/sda,cs为填充的硬盘序列号,在传递时只需要new一个传递过去即可。而返回值,表示了读取是否成功,当为0时,读取成功。否则失败。

继续阅读“在linux下使用java(jni)读取硬盘序列号”

在fedora下使用google yum源来安装chrome

    参考文章:http://yylogo.com/blog/fedora-chrome/
    首先将google的yum源下载下来,google并没有直接提供yum源,而是以sh文件的方式提供。那么就下载这个文件,使用以下地址来下载文件

https://dl-ssl.google.com/linux/google-repo-setup.sh

    下载下来之后,使用su用户执行这段脚本

sudo sh google-repo-setup.sh

    执行之后,即会在yum.rep.d下面生成一个google.repo文件了。现在使用以下命令:

yum install google-chrome-stable

    即可安装chrome了。不过最开始笔者安装下来的版本为7.0,不过没关系。再执行一下yum update,即可升级到最新的版本了。

在fedora 15中使用源码自定义安装路径安装mysql5.5.12

    近段时间安装了最新的fedora15,将硬盘重新划分了个data区,用于安装数据库软件。由于默认使用fedora中的yum去安装,只能安装在默认的usr/lib和usr/share数据,而不能自定义安装路径。所以尝试从源代码进行安装,以指定安装目录进行安装。

    从mysql中下载了最新的社区版mysql-5.5.12.tar.gz,解压之,开始安装。
    如果以前安装过mysql server,则需要删除以前删除的,并删除/usr/lib/mysql目录,/usr/share/mysql目录,避免重新安装的mysql跟以前相冲突。

    首先要下载几个用于安装之前所必需要的包:

cmake	用于进行项目配置,即相当于以前的auto_tools
ncurses-devel
bison
gcc-c++	用于源码编译

    使用cmake进行项目预配置:(在copy时请先copy至一个文本中,将其中的换行符去掉)

cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DDEFAULT_CHARSET=UTF8 -DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=all 
-DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQLD_USER=mysql -DWITH_DEBUG=0 
-DWITH_INNOBASE_STORAGE_ENGINE=1 .

    其中 -D表示往cmake传递相应的参数。
    CMAKE_INSTALL_PREFIX    安装路径,相当于以前的prefix
    DEFAULT_CHARSET    默认数据库语言
    DEFAULT_COLLATION    默认的数据库字符集(这个不指定,后面在安装数据库时会报错误)
    EXTRA_CHARSETS    支持其它语言
    MYSQL_TCP_PORT    服务启动端口
    MYSQL_UNIX_ADDR    端口锁定文件
    MYSQLD_USER    启动mysql的用户
    WITH_DEBUG    不使用调试模式
    WITH_INNOBASE_STORAGE_ENGINE    支持innodb数据库

    然后就是make 和make install了,后面的直接引用自官网。

cd /data/mysql	#进入到
chown -R mysql .	#改变当前目录拥有者
chgrp -R mysql .	#改变当前目录组
scripts/mysql_install_db --user=mysql	安装
chown -R root .	#重新改变当前目录拥有者
chown -R mysql data		#将data目录,即数据存放区修改为mysql拥有
#可选操作
cp support-files/my-medium.cnf /etc/my.cnf	#使用一个medium的配置文件替换默认的配置文件
bin/mysqld_safe --user=mysql &	#启动mysql


fedora15中在gcc4.6环境下安装oracle10g

    升级到fedora15之后,本来想安装oracle 10g进行项目开发。待下载了oracle 10g之后,直接按照原来的安装模式进行安装。即像fedora14中安装一样进行安装,如 http://www.iflym.com/index.php/linux-develop/install-oracle10g-on-fedora14-or-centos5-5.html。然后在安装过程中,即报了如下一个错误:错误如下所示:

"Unrecognized option (gcc) -no_cpprt"

    错误发生在oracle安装大概63%过程当中。网上找了半天,原来即是gcc4.6之后,已不再支持no_cpprt选项,而在gcc3.X上,此命令也是正确的。那么即可安装gcc3.X版本,进行安装。但实际上并不需要降级安装gcc3.X,而只需要安装compat-gcc-34。如下所示:

yum install compat-gcc-34

    在安装之后,即会在/usr/bin下有一个gcc34的命令,此命令即可接受no_cpprt选项,实际上即是gcc3.X的兼容命令。现在只需要将gcc转换为gcc34即可。详细命令如下:

mv gcc gcc46
ln -s gcc34 gcc

    这只是将gcc 4.6版本暂时替换成gcc34版本,现在再进行安装,oracle 10g即安装成功了。接下来即是和原来的使用一样了。待安装完成之后,再将gcc原来为gcc46即可。

使用linux askmethod从硬盘安装fedora 15

    fedora15已经发布了,笔者在第一时间就从各个镜像下载了最新的dvd镜像,比如sohu的http://mirrors.sohu.com/fedora/releases/15/Fedora/i386/iso/Fedora-15-i386-DVD.iso,在下载之后,马上解压相应的isolinux,kernel+initrd,最后boot,结果问题出来了。在安装过程中,fedora始终不提示从哪个安装媒介中安装,结果始终要连网进行安装。可惜了,正是fedora15刚刚发布的日子,各个feodra mirror直接就访问不了,网络连接了半天也最终没有安装上。
    最后从一个论坛上,看到了一个人说的方法,是在初始安装过程中追加一个参数,即askmethod,完整的命令如下所示:

kernel (hd0,8)/vmlinuz linux askmethod

initrd (hd0,8)/initrd.img

boot

    请注意上面中的linux askmethod方法,在输入完kernel xxxvmlinuz之后,再输入 <空格>linux askmethod,剩下的就和原来的一样,在安装过程中时,就会出现一个选择安装介质的选项框了。这时就可以选择从local disk进行安装了。

继续阅读“使用linux askmethod从硬盘安装fedora 15”