归档 2009

最后更新于 .

呵呵,这里说的不是在终端中怎么用tabnew来打开一个新标签,而是说怎么在windows下,用gvim新打开的文件,会默认在gvim的标签页中打开。 这里主要有两种方法,其实原理是一样的(即gvim执行命令的参数是一样的),只是用windows的实现有些区别。

一.利用windows的发送到。

像emeditor之类的编辑器都会在安装之后默认在发送到里面添加自己的快捷方式,而vim是在右键菜单里面直接有一个用vim编辑,而为了不和这个默认的快捷方式冲突,我们就用这个发送到来实现我们想要的在标签页中打开新文件的功能。

1)开始->运行,输入sendto

2)在弹出的窗口中,单击右键,选择新建快捷方式。

3)在需要填入项目位置处(即gvim.exe的路径,以及执行参数),输入

"C:\Vim\vim72\gvim.exe" -p --remote-tab-silent "%*"

注意:需要在路径上加上引号,如默认的安装路径就是在C:\Program Files下,那么需要在路径上加上引号,即

"C:\Program FilesVim\vim72\gvim.exe" -p --remote-tab-silent "%*"

4)输入名字,Vim标签页

5)同时选中两个文件 ...

最后更新于 .

最近项目小组在去除代码中的warning,在修正代码的过程中看到了对结构体不正确的初始化方式:
假设有一个如下的struct定义:

struct astruct
{
    int a;
    int b;
};
struct astruct test = {0};

即使astruct中都是基础类型的成员这样的初始化话也是不正确的。
这种初始化仅仅是把a变量设置为了0,而未对b变量做初始化。
产生这样错误的原因,大概是收到数组初始化的影响。数组是可以这么初始化话的,而且初始化的值只能是0!
对结构体的初始化,可以有一下三种。

struct test
{
    int a;
    int b;
};
int main()
{
    struct test t1 = {0, 0}; 
    struct test t2 = { 
        .a=2, 
        .b=3
    };  
    struct test t3 = { 
        a:12345,
        b:567890
    };  
    printf("t1.a = %d, t1.b ...

最后更新于 .

前段时间无聊的找出了尘封许久的ipod shuffle,听了n多遍所有的歌之后终于忍不住想要来次大换血,但是又不想用iTunes(你总不能逼我在家里装一次,到公司再重注册一次吧……)
    呵呵,其实解决方案也简单啦,公司有位大拿写了一个小软件,直接放到ipod里执行,就可以把所有音乐转化成ipod要求的格式啦,原文在此。

使用iTunes太麻烦,关键是它极其缓慢的启动速度,对于iPod Shuffle来说,拷贝歌曲以后直接就可以听是最方便的。经过对iPod Shuffle文件格式的研究,写了一个软件,可以代替iTurns向iPod Shuffle里面传送歌曲。
使用方法:把MiniTunes拷贝到iPod上,把歌直接拷贝到iPod上,歌曲可以放任意文件夹,但必须是英文的,运行MiniTunes即可。
但需要注意:
iPod不支持中文,所以MiniTunes会自动重命名所有的中文歌曲和中文目录,但仅仅是mp3文件。这个应该也是iPod需要iTunes才能传输歌曲的原因。
MiniTunes会搜索当前目录下的所有歌曲以及子文件夹里面的歌曲。由于中文的原因,MiniTunes是不能放到中文目录下用的。

截图如下:

1245828774_capture

下载MiniTunes

 

最后更新于 .

Linux进程管理命令详解(ps和top)
1.ps命令
作用:ps命令主要查看系统中进程的状态。
格式:ps [选项]
主要选项如下。

-A:显示系统中所有进程的信息。
-e:显示所有进程的信息。
-f:显示进程的所有信息。
-l:以长格式显示进程信息。
-r:只显示正在运行的进程。
-u:显示面向用户的格式(包括用户名、CPU及内存使用情况等信息)。
-x:显示所有非控制终端上的进程信息。
-p:显示由进程ID指定的进程的信息。
-t:显示指定终端上的进程的信息。

说明:要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。根据显示的信息可以确定哪个进程正在运行、哪个进程被挂起、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标志号(PID)。所有这些信息对用户都很有用,对于系统管理员来说更为重要。使用”ps -aux”命令可以获得终端上所有用户的有关进程的所有信息,下面结合图讲解进程的基本信息。

130727331

图中第二行代码中,USER表示启动进程用户。PID表示进程标志号。%CPU表示运行该进程占用CPU的时间与该进程总的运行时间的比例。%MEM表示该进程占用内存和总内存的比例。VSZ表示占用的虚拟内存大小,以KB为单位 ...

最后更新于 .

之前有用正则表达式写过一个重复两行压缩成一行的命令,今天我们来看一个讲重复多行压缩成一行的命令。 首先,我们先考虑怎么查出多个重复行。 有两种方法,但是有一种是有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:29118 spp_xyserver.cpp

确认无误后,撤销29118版本的改动 ...

最后更新于 .

查看错误代码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

每月存档

明年

2010