档案日期2009的47

2009年11月23日 - 2009年11月29日

最后更新于 .

之前有用正则表达式写过一个重复两行压缩成一行的命令,今天我们来看一个讲重复多行压缩成一行的命令。 首先,我们先考虑怎么查出多个重复行。 有两种方法,但是有一种是有bug的,罗列如下:

1)

^\(.*\)\(\n\1\)\+$

2)

^\(.*\n\)\(\1\)\+

详细讲解一下:\+是代表匹配>1个,\1代表是前面的匹配,那么可以看出: 第1种方法是匹配了整个行(不包括换行符),然后加上\n\1,匹配\n\1 >1次,最后匹配到最后一个重复行行尾的换行符,从而匹配到所有重复行。 如图:

删除重复行1

第2种方法则是先匹配了整个行(包括换行符),然后匹配\1 >1次,最后匹配到所有重复行。 如图: 删除重复行2

但是实际上第二种匹配规则是有bug的,即假设最后一个重复行后面再也没有换行符的话,那么是匹配不到的,如图: 第一种方法:

删除重复行3

第二种方法:

删除重复行4

到此为止,既然查找的方法已经出来了,那么替换的方法也就有了

:%s/^\(.*\)\(\n\1\)\+$/\1/

OK,就到这里啦~~~ 

最后更新于 .

一.关于gdb调试core文件总是一堆问号的问题
问题描述:已经在编译选项中加入了-g,但是查看core文件时,还是一堆问号,使用的命令为:

gdb -c core

解决方案:由于gdb -c core这样的使用在有些系统下支持不是很好,所以推荐用如下两种方法:

1)gdb exe

(gdb) core-file core

2)gdb -c core

(gdb) file exe

而其中第二种方法在某些系统上也是不好用的,所以就用第一种即可。

二.回滚svn版本
今天很无聊的改代码,结果把正确的版本给修改掉了,因为实在linux终端上,没有图形界面的svn,所以只能用命令……

首先保证我们拿到的是最新代码,运行svn up,发现目前是29118版本。 然后找出要撤销的确切版本:

svn log spp_xyserver.cpp

根据log发现前面一个版本是29062,比较一下:

svn diff -r 29062 ...

最后更新于 .

查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值, 不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。
以下来自linux 的内核代码中的/usr/include/asm/errno.h


#ifndef _I386_ERRNO_H
#define _I386_ERRNO_H
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such process */
#define EINTR 4 /* Interrupted system call */
#define EIO 5 ...

最后更新于 .

STL比较出名的有如下三个:

一个是SGI STL。STL之父离开HP之后就去了SGI(当然不是去搞侏罗纪公园),然后和Matt Austern这些STL大牛一起搞了SGI STL。SGI STL技术比较新,很规范(但是代码读起来未必好懂) 像concept checking这些技术用的不少,boost graph library的想法也是在这其中产生的。后来有人觉得sgi stl很好,兼容性不够(其实现在已经很不错了),就弄了个stlport项目,顺便提供咨询服务赚点小钱。

一个是RougeWave STL,是Borland C++ Builder 5.0及以前版本采用的STL实现(6.0以后改用stlport)。RougeWave公司在C++程序库领域应该说是鼎鼎大名,在C++标准化过程中出力甚多(比如IOStream)。不过这个STL版本似乎老了点,更新不太勤快,关键是贵(RougeWave 的东西一向如此),所以被Borland一脚踢了。

一个是Visual C++里的STL,作者P.J. Plauger,所以一般也说pj stl。其实这份STL是他公司的产品(他这个公司一共也就3个人,所以人均GDP一定很高),不过他跟MS的关系实在是好得有点古怪 ...

最后更新于 .

这个pdf是我同事的一次分享的,写的很诙谐有趣,但是又精准的抓住要害,突出了vim的优势和便利之处,所以就放在这里和大家分享一下,当然版权是归我同事所有啦~~ 唉,又要费我4兆的空间啊…… vim-hacks下载   转载请注明出处.https://www.vimer.cn

最后更新于 .

    开源文本编辑器Vim的作者Bram Moolenaar推出了新的编程语言Zimbu,一种不拐弯抹角直截了当的实验性编程语言。Moolenaar表示Zimbu集现有语言的优点于一身,同时避开它们的不足。Zimbu代码清晰易读,使用范围广泛——既能写OS kernel,又能写脚本,还能写大的GUI程序,可以编译和运行在几乎所有系统上。Zimbu代码托管在Google Code上,采用Apache License 2.0许可证。     这是前几天在晚上看到的一篇报道,后面也有了一些评论,无非就是一些诋毁之类的文字,发现大众除了乱喷之外还真是一点别人的优点都看不到~     说起来,因为这个我特地仔细的看了一下这位vim作者的介绍:居住在荷兰,从事开源软件的开发,大部分收入来自开源软件使用者的捐赠,还把大量的捐款送给了乌干达的孩子们。的确很厉害的一个人,我突然想起之前在一篇博客里看到的一段话,有的软件,不花钱你都懒得用,而有的软件,你会忍不住想捐赠作者来支持她的开发。而vim真的就是这样一款软件。     已经用vim 4年了,从大学开始一直到上班,写的代码越来越不一样,用的编辑器却从来没有变过。     我在努力,希望能在我成功的时候,亲自好好答谢我这位老朋友。 转载请注明出处.https://www.vimer.cn

每日归档

上周

2009年度第 46 周

下周

2009年度第 48 周

归档