换了Arch Linux,感觉很清爽,但也有不少问题,但大多都能在Arch Wiki上面得到解决,但仍有一个问题。
  我使用slim登陆管理器,登陆后由.xinitrc启动openbox-session,没有问题。但在slim启动之前,会出现短暂的终端登陆界面,但slim登陆界面随即被启动。登陆后(slim),在命令行,who命令没有输出。执行halt命令关机时,桌面立即退出,立即显示一个终端的登陆界面(而不是关机时的相关信息),几秒钟后机器正常被关闭。
  可是为什么who命令没有输出呢?我觉得这可能是session的有关问题(但不确定),我对session的理解不是很清晰,希望知道事情真相的朋友能够帮到我,谢谢!

1
2
3
4
5
6
7
8
9
10
11
#! /bin/bash
 
xscreensaver &
rl=$(runlevel | grep -o [0-6])
 
case $rl in
	4) exec openbox-session;;
	5) exec gnome-session;;
#4) exec ck-lauch-session openbox-session;;
#5) exec ck-lauch-session gnome-session;;
esac
Tags: .

  从Ubuntu 7.04/7.10开始接触Linux,从Ubuntu 8.04开始使用Linux作为桌面,在一定程度上见证了Ubuntu的成长,更重要的是自己也在成长,感谢Ubuntu的陪伴,祝愿他一切顺利。从身边和网络上的朋友了解到,Ubuntu 11.04有了相对比较大的变化,于是我也选择了变化,即使近来本人的经历已经跌宕起伏。我选择了Arch Linux。不知Arch这个词大家是怎么是发音的,我念作/a:k/,因为Archlinux的Logo让我想到Architecture,更重要的是,我觉得这个发音很性感,像socket一样性感。嗯,我是个感官动物,我喜欢一切性感的事物,或者说我觉得我喜欢的东西都很性感。

  做为个人使用,没有X,没有桌面的系统是不食人间烟火的系统。下面要做的就是,安装Xorg, 显卡驱动(安装X时,开源驱动会被安装,没有特殊需求的话,可不用手动安装)。安装桌面环境,重量级如GNOME、KDE之流,轻量级如xfce、lxde等等。我没有直接现成的安装桌面环境,而是分别安装窗口管理器(openbox),登陆管理器(slim),文件管理器(Thunar),系统面板(tint2)等等。有了基本的桌面,还需要安装和配置系统的字体(ttf-ms-fonts, bitstream等等),中文输入法(ibus-sunpinyin), 无线网络管理利器(wicd)。

  再最后,就是安装最常用的应用程序了,虚拟终端(urxvt),浏览器(chromium),编辑器(vim/gvim/gedit),媒体播放器(mplayer, smplayer, audacious),pdf阅读器(evince, xpdf),图片查看/编辑器(eog, feh, Gimp),邮件客户端(mutt, Thunderbird),即时通讯工具(Pidgin),不啦不啦。

Tags: .
1
2
3
4
5
6
7
8
9
10
vpath % /home/dutor/
vpath rc /home/dutor/.lftp/
vpath vsftpd.conf /etc/
vpath openbox /home/dutor/.config/
vpath tint2 /home/dutor/.config/
 
BACKUP: .vimrc .vim .bashrc .Xresources .xbindkeysrc .gitconfig .bin .screenrc \
.wordump.txt vsftpd.conf openbox .tmux.conf .conkyrc tint2
	dcp $?
	touch BACKUP

  其中,vpath是make的命令,用于指定文件的搜索目录。BACKUP是一个空文件,每当完成备份时,使用touch命令更新其时间戳。dcp是一个脚本,将其参数指明的文件拷贝到Dotfiles目录,$?是make的自动变量,代表依赖关系中比目标更新的依赖。

Tags: ,.

  参加了三次百度公司的面试,遇到了些面试题,根据记忆,列到这里,如果你对某些题有想法,不妨回复讨论一下。

  1. 谈一下static关键词,C&C++:文件域,函数域,类域
  2. 说说volatile
  3. static成员(变量/函数,尤其是变量)需要注意哪些问题:static变量需在类外,通常为.cpp文件中显式声明,否则会有链接错误
  4. STL由哪些部件组成:容器,迭代器,算法,仿函数,各类适配器等等
  5. STL标准容器有哪些,特性是什么:vector,deque, list, map/multimap, set/multiset
  6. vector的插入操作过程中会发生什么:内存分配/重分配/释放,元素构造/析构……
  7. 谈谈对适配容器的理解:stack, queue, priority_queue,对标准容器的适配/封装
  8. 谈谈C++
  9. 进程间通讯有哪些方式:内存共享,socket(包括Unix Domain),消息
  10. 两相同行数文件,每行一列,使用awk按列合并之: awk ‘{t = $1; getline <"file2"; print t, $1}' file2
  11. 你该如何实现tail命令:lseek, read, write….
  12. 实现atoi:指针有效性,字符有效性,整数溢出,错误状态
  13. memcpy与memmove有何区别:overlap
  14. 列出你所知道的排序方法及其复杂度、稳定性和适用情形
  15. 非递归实现快速排序
  16. 快速排序的复杂度证明
  17. 非递归实现二叉树的后续遍历
  18. 判断单链表是否存在环,环从何开始:老题了
  19. 仅知道单链表中某非尾节点的地址,O(1)删除该节点:节点覆盖
  20. 某文件大小为10G,每行保存一个整数,内存不可完全容纳,排序之:分段排序,然后败者树归并
  21. 简单描述虚拟内存机制
  22. 简单描述Linux进程模型(即包含哪些段,作用是什么,有何特性)
  23. 软、硬链接有何区别
  24. 一个系统,维护id->value的信息,信息量巨大,需多台服务器存储。系统可支持信息的增、删、改、查询及批量查询,每日增删该约千万次,查询约10亿次。设计该系统
Tags: .

很早就注册了twitter,但一直只是观众。今天又注册了新浪微博,有兴趣的朋友可以关注一下:http://weibo.com/dutor

PS. 我不是话唠,也不喜欢关注话唠(被刷屏的感觉很压抑)。

Tags: .

  关于虚函数,需要知道:

  • 多态在C++中借助虚函数实现
  • 多态只在指针或者引用上发生
  • 虚函数机制(通常)借助虚指针vptr支持
  • 虚函数地址保存在虚函数表中
  • 一个类的所有对象共有一张vtbl
  • vtbl由vptr指向,vptr保存在每一个对象中,多继承时可能有多个vptr
  • vptr由构造函数(普通构造/copy构造)在对象初始化时隐式设定
Tags: ,.

  相信很多人经常遇到文件乱码,尤其是文本文件。如果你不是用编辑器打开一个二进制文件的话,这应该是一个编码问题,即文件的实际编码和编辑器查看该文件时所使用的编码不一致。这时候,咱们需要把文件的编码进行转化,或者修改使用该文件的程序采用的编码。后一种方法取决于咱们使用的具体的程序,无法一概而论。
  这里介绍一个工具,iconv,使用它可以将一个输入文件从一种编码转换到另一种编码,同时将转化结果输出。iconv的-f选项指定源编码,-t选项指定目标编码,-o指定输出文件:

$ iconv -f coding1 -t coding2 file1 -o file2

  若file1省略,则使用标准输入;若-o选项省略,则使用标准输出。
  例如,我想把所有GBK编码的.cue文件转化为utf8编码:

$ find . -name "*.cue" -exec iconv -f gbk -t utf8 {} -o {} \;
Tags: ,,.

  递归是一种使用相同的方法,通过解决问题的子集以达到解决整个问题的方法,是一种使用有限代码解决“无限”计算的方法。在C/C++语言中递归表现在函数对自身的直接/间接的调用上,在实现上,递归依赖于语言的运行时调用堆栈,使用堆栈来保存每一次递归调用返回时所需要的条件。递归通常具有简洁的编码和清晰的思路,但这种简洁是有代价的。一方面,是函数调用的负担;另一方面,是堆栈占用的负担(堆栈的大小是有限的)。
  避免这种负担的方法就是将递归转化为迭代。迭代的思想主要在于,在同一栈帧中不断使用现有数据计算出新的数据,然后使用新的数据来替换原有数据。递归于迭代可以相互转化。将递归转化为迭代需要做两方面的工作:显式地维护一个堆栈,在递归算法中堆栈的维护由编译器隐式地完成;使用迭代控制结构,完成出栈、入栈和相关的计算。

Tags: ,,.

  reserve内部是怎么实现的呢?当然是new了。那么在reserve操作,也就是new之后,我们程序是否立即就占用了这些内存呢?这就要看我们这里说的“内存”是什么样的内存了。什么意思呢?我们知道,现代操作系统都采用了虚拟内存的机制,内存占用也就有了虚拟内存(virtual memory)和物理内存(physical memory)之分了。
  我们又知道,Unix/Linux进程的虚拟地址空间被按用途被划分成了内核空间和用户空间。内核空间供操作系统的内核使用,用户空间供用户程序支配。其中用户空间又被划分为若干段,主要包括:代码段(.text),用来存放/映射用户程序的代码;数据段(.data),存放初始化的全局数据或静态数据,这部分在文件系统中也占据磁盘空间;.bss段(一直没找到一个亲切的翻译),存放为初始化的全局或静态数据,在程序加载时分配空间和初始化,这部分空间不占用磁盘空间(当然在可执行文件中要保留其大小);堆栈段,用来保存程序执行时的上下文(局部变量、函数参数和返回地址等),在进程建立时由操作系统分配,空间较小且在运行时不可动态调整,增长方向因机器架构而异,IA上自高地址向下增长,堆栈不占用磁盘空间;堆,供用户在运行时动态地申请和使用,空间较大,未被申请的堆空间不可使用,也不会被映射到物理空间,堆随着用户程序申请向上增长,堆不占用磁盘空间。

Tags: ,,.

基本使用:

  • \di 进入画图模式;
  • \ds 离开画图模式;
  • 上下左右方向键,移动并画图;
  • Shift+上下左右方向键,只移动光标;
  • 空格键,打开/关闭擦除模式,擦除模式下,移动光标时光标处字符被空格取代;
  • >, <, ^, v,画箭头;
  • \>, \<, \^, \v,画粗箭头;
  • 可视化模式,即Ctrl + v后加motion后选中的文本块,可以使用下面快捷键:
    • \a 画箭头,区块开始处,指向区块结束处;
    • \b 画矩形框;
    • \c 画幕布,会提示行数,列数使用&textwidth选项,默认78列;
    • \e 画椭圆;
    • \l 划线。
  • 其他参考:h DrawIt。

  建议:类似上面框图,先画好框架,然后利用Vim的替换模式(普通模式下按R)进行标识。

Tags: ,.
Page 5 of 3312345678910...2030...Last »