colorful

zc qq:1337220912

 

vi / vim

为什么这些死脑筋们在用 VI ?

http://www.oschina.net/news/25882/why-they-are-using-vi?from=20120226
看起来是个好文章,不过现在我还不适合看,记下来以后看

手册
http://vimcdoc.sourceforge.net/doc/usr_01.html

posted @ 2012-04-18 15:40 多彩人生 阅读(253) | 评论 (0)编辑 收藏

there are stopped jobs

Dealing with Stopped Jobs
Sometimes when you try to logout, you'll get a message saying there are "stopped jobs". These stopped jobs are programs or processes which have been suspended by a ^Z (Ctrl - Z) command. You have to either make the job active again, or get it running properly in the "background" before you can logout.

Stopping a program is useful if you want to temporarily suspend working on one program so you can do something else.

To see a list of stopped jobs, type:

jobs

You will see a list of the stopped programs. Here's an example showing a stopped "learn" session:

[1] + Stopped learn


You can kill this stopped job by typing:

kill %1 (where %1 is the number of the job
to be killed>


Or you can make the program active again by typing:

fg %1 (where %1 is the number of the job)


fg stands for foreground. (You are bringing the program from suspended status back to the foreground.) Once brought back to the foreground, you can continue the program or quit in a normal manner.

posted @ 2012-04-18 14:57 多彩人生 阅读(529) | 评论 (0)编辑 收藏

linux command

查看当前路径: pwd

posted @ 2012-04-18 10:57 多彩人生 阅读(262) | 评论 (0)编辑 收藏

fcitx

输入法切换用ctrl+shift

Ubuntu自带的输入法不太尽如人意思,用起来也不方便,我在Ubuntu和FC中都是用Fcitx,很好用!

安装配置如下:

1. 安装 fcitx

  sudo apt-get install fcitx

 

2. 配置默认输入法为 fcitx

  im-switch -s fcitx  // 注意无须加 sudo


3. 重启 x-window

  重启之后,fcitx 输入法应当正常启动,输入条将显示在屏幕最上面,不过输入框中文显示可能是 “口口”,需要小小的改动。

 

4. 修改配置文件

  gedit ~/.fcitx/config

  //如果没有配置gedit 支持GB18030编码,打开后文件会是乱码(此处针对9.10前版本,9.10无需配置已支持)

  修改如下几项:

  显示字体(中)=YaHei Consolas Hybrid   //主要是看你的OpenOffice中有什么字体,加进来就行

  Enter键行为=1 # =1表示回车时清除输入框中输入的内容,随个人喜好设置

  上一页=, # 使用 , . 翻页,随个人喜好设置

  下一页=.

  [输入法]

  使用拼音=0

  拼音名称=智能拼音

  使用双拼=0

  双拼名称=智能双拼

  默认双拼方案=自然码

  使用区位=0

  区位名称=区位

  使用码表=1

  提示词库中的词组=1

  其他输入法=

5. 修改码表文件

  sudo gedit /usr/share/fcitx/data/tables.conf

  由于五笔拼音已经完全够用,其它输入法就没必要出现了,文件中只需留下如下内容,其它配置段可以清除或注释掉。

  [码表]

  名称=五笔拼音

  码表=wbpy.mb

  调频=2

  拼音=1

  拼音键=z

  自动上屏=-1

  空码自动上屏=-1
  自动词组=1
  精确匹配=0
  提示编码=0
6、重启 x-window
  重启 x-window 之后,小企鹅输入法中文显示将完全正常,且只有“五笔拼音”,免去了在多个输入法中来回切换的麻烦。

 

Note: Restart 后小企鹅面板不是最上面,我们也以用[Ctrl+Alt+h]来把它调上来。

posted @ 2012-04-17 20:12 多彩人生 阅读(775) | 评论 (0)编辑 收藏

ubuntu gcc g++ make

sudo apt-get install make gcc g++
再装上函数手册
sudo apt-get install manpages-dev

另一方法:
sudo apt-get install build-essential
执行完后,完成了gcc,g++,make的安装。
build-essential 是一整套工具,gcc,libc等等

函数手册的使用:
是的,比如man scanf。
偶尔会有同名的,比如printf就有两个,一个在脚本下用,一个在c里面用,可以用
代码:
man -a printf

这样会显示出第一个,按q退出后接着显示第二个。
当然,如果你知道你要查的帮助属于哪一类的话也可以直接加类别号,如:
代码:
man 1 printf
man 3 printf

第一个显示的就是脚本下用的printf,第二个显示的是c的。
编译运行:
安装好后必要的工具后,运行
代码:
gcc xxx.c

运行编译好的程序,用
代码:
./xxx.out

gcc有很多参数,可以看看
代码:
gcc --help


代码:
man gcc
或:
$chmod +x a.out
$./a.out


用gcc的话加-lstdc++参数

posted @ 2012-04-17 20:10 多彩人生 阅读(1573) | 评论 (0)编辑 收藏

extern c

时常在cpp的代码之中看到这样的代码:

#ifdef __cplusplus
extern "C" {
#endif

//一段代码

#ifdef __cplusplus
}
#endif

  这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。

  要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返 回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的.

  比如下面的一段简单的函数,我们看看加入和不加入extern "C"产生的汇编代码都有哪些变化:

int f(void)
{
return 1;
}

  在加入extern "C"的时候产生的汇编代码是:

.file "test.cxx"
.text
.align 2
.globl _f
.def _f; .scl 2; .type 32; .endef
_f:
pushl %ebp
movl %esp, %ebp
movl $1, %eax
popl %ebp
ret

  但是不加入了extern "C"之后

.file "test.cxx"
.text
.align 2
.globl __Z1fv
.def __Z1fv; .scl 2; .type 32; .endef
__Z1fv:
pushl %ebp
movl %esp, %ebp
movl $1, %eax
popl %ebp
ret

  两段汇编代码同样都是使用gcc -S命令产生的,所有的地方都是一样的,唯独是产生的函数名,一个是_f,一个是__Z1fv。

  明白了加入与不加入extern "C"之后对函数名称产生的影响,我们继续我们的讨论:为什么需要使用extern "C"呢?C++之父在设计C++之时,考虑到当时已经存在了大量的C代码,为了支持原来的C代码和已经写好C库,需要在C++中尽可能的支持C,而 extern "C"就是其中的一个策略。

  试想这样的情况:一个库文件已经用C写好了而且运行得很良好,这个时候我们需要使用这个库文件,但是我们需要使用C++来写这个新的代码。如果这个代 码使用的是C++的方式链接这个C库文件的话,那么就会出现链接错误.我们来看一段代码:首先,我们使用C的处理方式来写一个函数,也就是说假设这个函数 当时是用C写成的:

//f1.c
extern "C"
{
void f1()
{
return;
}
}

  编译命令是:gcc -c f1.c -o f1.o 产生了一个叫f1.o的库文件。再写一段代码调用这个f1函数:

// test.cxx
//这个extern表示f1函数在别的地方定义,这样可以通过
//编译,但是链接的时候还是需要
//链接上原来的库文件.
extern void f1();

int main()
{
f1();

return 0;
}

  通过gcc -c test.cxx -o test.o 产生一个叫test.o的文件。然后,我们使用gcc test.o f1.o来链接两个文件,可是出错了,错误的提示是:

test.o(.text + 0x1f):test.cxx: undefine reference to 'f1()'
  也就是说,在编译test.cxx的时候编译器是使用C++的方式来处理f1()函数的,但是实际上链接的库文件却是用C的方式来处理函数的,所以就会出现链接过不去的错误:因为链接器找不到函数。

  因此,为了在C++代码中调用用C写成的库文件,就需要用extern "C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。

  比如,现在我们有了一个C库文件,它的头文件是f.h,产生的lib文件是f.lib,那么我们如果要在C++中使用这个库文件,我们需要这样写:

extern "C"
{
#include "f.h"
}

  回到上面的问题,如果要改正链接错误,我们需要这样子改写test.cxx:

extern "C"
{
extern void f1();
}

int main()
{
f1();

return 0;
}

  重新编译并且链接就可以过去了.

  总结


  C和C++对函数的处理方式是不同的.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明

posted @ 2012-04-17 19:12 多彩人生 阅读(227) | 评论 (0)编辑 收藏

string

stl string 里没有format
可用 stringstream   来格式化你要的东西。

http://www.cnblogs.com/lzjsky/archive/2011/01/04/1925538.html

输入输出的头文件 <iostream>
string流的头文件 <sstream>
文件流的头文件   <fstream>

stringstream的用法

1.利用输入输出做数据转换

stringstream ss_stream;
ss_stream << i; // 将int输入流中
ss_stream >> str; // 将ss_stream中的数值输出到str中

//注意:如果做多次数据转换;必须调用clear()来设置转换模式
ss_stream << "456";
ss_stream >> i; // 首先将字符串转换为int
ss_stream.clear();
ss_stream << true;
ss_stream >> i; // 然后将bool型转换为int;假如之前没有做clear,那么i会出错

//运行clear的结果
i = 456
i = 1
//没有运行clear的结果
i = 456
i = 8800090900

 

 

2.支持char*的输入和输出

char sz_buf[20];
ss_stream << 8888;
ss_stream >> sz_buf; // 直接将数输出到sz_buf字符数组中

 

3.来存储可变数据的列表

stringstream ss_stream;
ss_stream << "字符串一" << endl;
ss_stream << "字符串二" << endl;
ss_stream << "字符串三" << endl;
ss_stream << "字符串四" << endl;
ss_stream << "字符串五" << endl;

char buffer[100];
while ( ss_stream.getline(buffer, sizeof(buffer))
{
printf("msg=%s\n", buffer);
}
ss_stream("");// 释放字符串流中的资源

// 或者用string来接收
stringstream ss_stream;
string stemp;
while ( getline(ss_stream, stemp) )
{
task_download(stemp.c_str(), relate.c_str());
}

posted @ 2012-04-16 17:14 多彩人生 阅读(160) | 评论 (0)编辑 收藏

time

函数简介
 函数名: time
头文件:time.h
函数原型:time_t time(time_t * timer)
功 能: [1]获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从UTC(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)
到当前时刻的秒数。然后调用localtime将time_t所表示的UTC时间转换为本地时间(我们是+8区,比UTC多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。
补充说明:time函数的原型也可以理解为 long time(long *tloc),
因为在time.h这个头文件中time_t实际上就是:
 #ifndef _TIME_T_DEFINED
typedef long time_t; /* time value */
#define _TIME_T_DEFINED /* avoid multiple def's of time_t */
#endif
即long。
函数应用举例
程序例1: time函数获得日历时间。日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。
这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,
这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,
但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。
#include <time.h>
#include <stdio.h>
#include <dos.h>
 int main(void)
{
 time_t t;
t = time(NULL);
printf("The number of seconds since January 1, 1970 is %ld",t);
 return 0;
}
程序例2:
 //time函数也常用于随机数的生成,用日历时间作为种子。
#include <stdio.h>
 #include <time.h>
 #include<stdlib.h>
 int main(void)
{
 int i;
 srand((unsigned) time(NULL));
 printf("ten random numbers from 0 to 99\n\n");
 for(i=0;i<10;i++)
 {
 printf("%d\n",rand()%100);
 }
 return 0;
}
程序例3:
用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。
#include <stdio.h>
 #include <stddef.h>
 #include <time.h>
 int main(void)
{
 time_t timer;//time_t就是long int 类型
struct tm *tblock;
timer = time(NULL);//这一句也可以改成time(&timer);
tblock = localtime(&timer);
printf("Local time is: %s\n",asctime(tblock));
 return 0;
 }

posted @ 2012-04-15 23:45 多彩人生 阅读(232) | 评论 (0)编辑 收藏

vmware

Failed to initialize remote display subsystem【VMware】
错误:
启动虚拟机后弹出“Failed to initialize remote display subsystem”错误提示,点击确定后虚拟机中的操作系统关闭,无论如何也无法启动。

原因:
虚拟机在安装时自动添加了一个“__vmware_user__”帐户,不小心删掉这个帐户后虚拟机中的操作系统就会启动失败。

解决:
进入DOS命令窗口,输入“net user __vmware_user__  /add”命令添加这个虚拟机帐户即可。

posted @ 2012-04-13 19:37 多彩人生 阅读(264) | 评论 (0)编辑 收藏

shared_ptr

//null-pointer-with-boostshared-ptr
http://stackoverflow.com/questions/621220/null-pointer-with-boostshared-ptr

shared_from_this 几个值得注意的地方
http://www.cnblogs.com/lzjsky/archive/2011/09/09/2172469.html

posted @ 2012-04-07 15:45 多彩人生 阅读(203) | 评论 (0)编辑 收藏

仅列出标题
共25页: First 17 18 19 20 21 22 23 24 25 

导航

统计

常用链接

留言簿(3)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜