存档在 2014年1月

Git中常见变量

2014年1月20日

HEAD: 表示最近一次的 commit。
MERGE_HEAD: 如果是 merge 产生的 commit,那么它表示除 HEAD 之外的另一个父母分支。
FETCH_HEAD: 使用 git-fetch 获得的 object 和 ref 的信息都存储在这里,这些信息是为日后 git-merge 准备的。
ORIG_HEAD:保存父节点的SHA-1值
HEAD^: 表示 HEAD 父母的信息
HEAD^^: 表示 HEAD 父母的父母的信息
HEAD~4: 表示 HEAD 上溯四代的信息
HEAD^1: 表示 HEAD 的第一个父母的信息
HEAD^2: 表示 HEAD 的第二个父母的信息
COMMIT_EDITMSG: 最后一次 commit 时的提交信息。

寒假

2014年1月17日

    日子已经到了1月中旬,寒假即将到来,最重要的是快过年了。说实话,11月份开始就过得浑浑噩噩,工作找好了,感觉自己没有了以前那种打了鸡血的战斗力。在305玩游戏时间多了,现在到了国防这边,新环境还不适应,也没能静下心来学习。

    很多技术性东西,不管未来能否用上,多学点确实可以增强对事情的宏观把握能力,别太在乎未来,做你现在想做的事情吧。
    假期快乐!

Fedora系列如何查找mozjs185并安装

2014年1月16日

安装某个软件,configure的时候,报错如下

-- checking for module 'mozjs185'
--   package 'mozjs185' not found

如往常,copy这个module的名字,然后

# yum search mozjs185

结果是Not Found,直接到网上找结果。
很多地方可以通过内容找到各种package(我使用的是这个),进入后,搜索”pkgconfig(mozjs185)”,可以找到一系列结果。
我使用的是fedora,可以发现mozjs185所在的rpm包及其所在位置:

download.fedora.redhat.com/pub/fedora/linux/development/19/x86_64/os/Packages/j/js-devel-1.8.5-13.fc19.x86_64.rpm

只要执行

# yum install js-devel -y

Fedora 20增加任务栏或其他扩展办法

2014年1月16日

1.首先安装gnome-tweak-tool

yum install gnome-tweak-tool

2.在应用管理器中依次打开 工具->优化工具
3.按照软件提示进行配置,在安装扩展时点击在线搜索扩展链接进行安装后即可配置。

我的VIM IDE配置

2014年1月15日

搬到了新实验室,接踵而来的是繁琐的系统安装与配置。就Vim来说,为了更像IDE,特列出以下插件,方便以后再次安装时使用,避免重复造车。

1.安装使用Ctags

Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol), 如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。这里介绍从源代码包安装,安装步骤跟大多数软件的从源代码安装步骤一样。

1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,
2)然后进入源代码根目录执行./configure,
3)然后执行make,
4)编译成功后执行make install。
5)在~/.vimrc中增加以下这行:

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

到此,Ctags已安装成功。
使用Ctags的也很简单。 进入我们的项目代码根目录,执行以下命令:

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .

在Vim中配置了Ctrl-F12组合快捷键,所以我们也可以进入代码根目录后,打开Vim,按下Ctrl-F12快捷键自动生成tags文件。命令执行完后,会在源代码目录生成tags文件。Vim默认会自动读取当前目录下的tags文件,所以不需要修改~/.vimrc文件。此时,我们已经具有定义跳转的功能了。有两组快捷键是最常用的。

 

Ctrl-]    跳转到光标所在符号的定义。
Ctrl-t    回到上次跳转前的位置。

更多功能通过命令man ctags或在Vim命令行下运行help ctags查询。

2.安装使用Taglist

Taglist是vim的一个插件,提供源代码符号的结构化视图。

1)从http://www.vim.org/scripts/script.php?script_id=273下载安装包,也可以从http://vim-taglist.sourceforge.net/index.html下载。
2)进入~/.vim目录,将Taglist安装包解压,解压后会在~/.vim目录中生成几个新子目录,如plugin和doc(安装其它插件时,可能还会新建autoload等其它目录)。
3)进入~/.vim/doc目录,在Vim下运行”helptags .”命令。此步骤是将doc下的帮助文档加入到Vim的帮助主题中,这样我们就可以通过在Vim中运行“help taglist.txt”查看taglist帮助。
4)打开配置文件~/.vimrc,加入以下两行即可。

let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1

到此安装已经完成,在Vim命令行下运行TlistToggle命令就可以打开Taglist窗口,再次运行TlistToggle则关闭。我们可以通过Ctrl-w快捷键或鼠标点击在Taglist窗口和编辑区之间切换焦点,在Taglist窗口用鼠标或键盘选择某个符号,然后点击或回车,就可以跳转到该符号定义的位置,更多功能可通过在Vim命令行下运行help taglist.txt查询。

 

3.安装使用Cscope

Cscope提供交互式查询语言符号功能,如查询哪些地方使用某个变量或调用某个函数。
Cscope已经是Vim的标准特性,默认都有支持,官方网址为http://cscope.sourceforge.net/

1)在Vim下运行version查看Vim支持哪些特性,前面有前缀符号+的为支持。如果支持Cscope,则直接进入2),否则下载Cscope源代码包编译安装。步骤同Ctags安装。
2)确定Vim已支持Cscope后,将文件http://cscope.sourceforge.net/cscope_maps.vim下载到~/.vim/plugin目录。

到这里,我们就可以开始使用Cscope了。
1)使用Cscope需要生成cscope数据库文件。进入项目代码根目录运行命令:

cscope -Rbq -f path/xxx.out

命令运行后会生成xxx.out文件,即cscope数据库文件。更多用法参考man cscope文档。
2)进入项目代码根目录,在Vim下运行命令:

cscope add path/xxx.out

此命令将cscope数据库载入Vim。
3)Cscope常用快捷键

 

Ctrl-\ s 查找所有当前光标所在符号出现过位置。
Ctrl-\ c 查找所有调用当前光标所在函数的函数。

按下快捷键查找结束后会在编辑区下方出现查找结果的列表,输入结果编号并回车,就能跳转到该查找结果在源代码中的相应位置。例如,我们将光标移到变量定义的位置,然后按下”Ctrl-\ s”组合快捷键,然后选择中意的调转链接
为了界面更好看,可以把Cscope的查找结果输出到quickfix窗口,需要在~/.vimrc中加入下面这行:

set cscopequickfix=s-,c-,d-,i-,t-,e-

这样,通过快捷键查找某个符号后,会立即跳转到第一个找到的该符号出现的位置。如果你对这次默认跳转的位置不满意,在Vim命令行下运行cw命令,就能在编辑区下面quickfix窗口看到所有查找结果的列表,点击相应列表项就能跳转到相应位置。更多功能可通过命令man cscope或在Vim命令行下运行help cscope查询。

 

4.安装使用OmniCppComplete

OmniCppComplete主要提供输入时实时提供类或结构体的属性或方法的提示和补全。跟Talist一样,OmniCppComplete也是一个Vim插件,同样依赖与Ctags工具生成的tags文

件。安装步骤跟Taglist类似。从http://www.vim.org/scripts/script.php?script_id=1520下载安装包后。
1)进入~/.vim目录,将安装版解压缩
2)进入~/.vim/doc目录,在Vim命令行下运行”helptags .”
3)在~/.vimrc中加入以下几行:

set nocp
 filetype plugin on

OmniCppComplete的使用几乎跟VS下的VA一样。会自动弹出函数列表,然后用上下键选择合适的函数。更多功能通过在Vim命令行下运行”help omnicppcomplete”查询。

 

5.安装使用SuperTab

SuperTab使Tab快捷键具有更快捷的上下文提示功能。跟OmniCppComplete一样,SuperTab也是一个Vim插件。从http://www.vim.org/scripts/script.php?script_id=1643下载安装版。这个安装包跟先前的几个Vim插件不同,它是一个vba文件,即Vimball格式的安装包,这种格式安装包提供傻瓜式的安装插件的方法。

1)用Vim打开.vba安装包文件。
2)在Vim命令行下运行命令“UseVimball ~/.vim”。此命令将安装包解压缩到~/.vim目录。VImball安装方式的便利之处在于你可以在任何目录打开.vba包安装,而不用切换到安装 目的地目录。而且不用运行helptags命令安装帮助文档。
3)在~/.vimrc文件中加入以下这行:

let g:SuperTabDefaultCompletionType="context"

SuperTab使用很简单,只要在输入变量名或路径名等符号中途按Tab键,就能得到以前输入过的符号列表,并通过Tab键循环选择。

 

6.安装使用Winmanager,NERDTree和MiniBufExplorer

前面介绍的几个工具和插件,主要提供快捷的编辑功能,如定义跳转,符号查询,符号提示与补全等。这里的三个插件,主要优化布置VIm的界面。具体来 说,NERDTree提供树形浏览文件系统的界面,MiniBufExplorer提供多文件同时编辑功能,而Winmanager将这NERDTree 界面和Taglist界面整合起来,使Vim更像VS!
分别从http://www.vim.org/scripts/script.php?script_id=1658
http://www.vim.org/scripts/script.php?script_id=159
http://www.vim.org/scripts/script.php?script_id=95
下载NERDTree,MiniBufExplorer和Winmanager安装包(Winmanager还有个更新的vba版本http://www.vim.org/scripts/script.php?script_id=1440,这里选用旧版本的Winmanger)。

1)像其它插件一样,将NERDTree安装包解压到~/.vim目录。并进入doc目录,在Vim命令行下运行”helptags .”命令。
2)MiniBufExplorer只有一个.vim文件,将其拷贝到~/.vim/plugin目录。
3)在~/.vimrc文件中加入以下几行:

      let g:miniBufExplMapWindowNavVim = 1
      let g:miniBufExplMapWindowNavArrows = 1
      let g:miniBufExplMapCTabSwitchBufs = 1
      let g:miniBufExplModSelTarget = 1
      let g:miniBufExplMoreThanOne=0

4)将Winmanager安装包解压到~/.vim目录。
5)在~/.vimrc文件中加入以下几行:

      let g:NERDTree_title="[NERDTree]"
      let g:winManagerWindowLayout="NERDTree|TagList"
      function! NERDTree_Start()
          exec 'NERDTree'
      endfunction
      function! NERDTree_IsValid()
          return 1
      endfunction
      nmap wm :WMToggle<CR>

6)这个版本的Winmanager好像有个小bug,你在打开Winmanager界面时,会同时打开一个空的文件。这会影响后续使用,所以我们要在打开Winmanager时关掉这个空文件。在~/.vim/plugin目录下的winmanager.vim文件中找到以下函数定义并在第5行下添加第6行的内容:

     function! <SID>ToggleWindowsManager()
        if IsWinManagerVisible()
           call s:CloseWindowsManager()
        else
           call s:StartWindowsManager()
           exe 'q'
        end
     endfunction

7.快捷键修改

在~/.vimrc文件中加入以下几行:

map <F9> :WMToggle<CR>
map <F12> :NERDTreeToggle<CR>

F9打开最后安装的3个插件,F12打开树形变量和函数浏览,这个用的比较多。

 

7.完成

现在进入我们的项目目录,打开Vim,按下组合快捷键w-m就可以我们的崭新的Vim了!再次按下w-m就可关闭界面。

删除/usr/share/vim/vim73目录后恢复解决办法

2014年1月15日

将/usr/share/vim/ 目录删除后,vim启动老是一行找不到xxxx的错误,其实不影响编辑文本,关键是失去了对.c/.cpp的语法着色,令人很不愉快,查阅www.vim.org后,发现这是vim的运行库, 幸好官方还有一个ftp可以同步。
1.首先新建刚才不小心删除的目录,然后创建current软连接指向vim73,73是版本号自己可以随便改

mkdir -p /usr/share/vim/vim73
ln -s  /usr/share/vim/vim73 /usr/share/vim/current

2.然后进入vim

vim

3.在里边执行命令

:cd $VIMRUNTIME
:!rsync -avzcP --delete --exclude="dos" --exclude="spell" ftp.nluug.nl::Vim/runtime/ .

4.OK, 搞定,刚才删除/usr/share/vim 的错误消失了,默认开启了file类型的检测,直接对.c/.cpp文件进行着色了.

Linux安装Nvidia驱动时遇到问题及其解决方案

2014年1月14日

问题1:提示不能在图形界面下安装

1.在终端中输入如下命令,进入多用户模式,进入后使用root账户安装。

init 3

问题2:提示需要禁用Nouveau

关闭Nouveau:
1.把驱动加入黑名单中: /etc/modprobe.d/blacklist.conf 在后面加入:

blacklist nouveau

2) 使用 dracut重新建立initramfs image file :
* 备份 the initramfs file

$ sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

* 重新建立 the initramfs file

$ sudo dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

如果启动程序是grub2, 还需要修改/boot/grub2/grub.cfg, 在对应的启动项kernel 后面加入参数rdblacklist=nouveau nouveau.modeset=0. 当然你也可以在启动时用e 进入相应启动项来进行设置,如下所见。

linux   /vmlinuz-3.3.4-5.fc17.i686.PAE root=UUID=4cb7c1ae-93ee-48e6-9a69-1e696691f0f6 ro single SYSFONT=SYSFONT=latarcyrheb-sun16 rd.lvm=0 rd.dm=0 LANG=zh_CN.UTF-8  KEYTABLE=us rd.md=0 rd.luks=0 rhgb quiet rdblacklist=nouveau nouveau.modeset=0
                echo    '载入初始化内存盘...'
                initrd  /initramfs-3.3.4-5.fc17.i686.PAE.img

3) 重启系统至文本模式,init 3 这个可以修改/etc/inittab 文件 init 3是文本模式,
init 5是图形界面模式.重启之后,进入文本模式,其实可以发现字体变大了,也就是说驱动没有被加载,成功禁用了Nouveau

4)检查nouveau driver确保没有被加载!

$ lsmod | grep nouveau

5) 运行安装文件

$ sudo ./NVIDIA-Linux-*****.run

安装过程中根据相应提示,即可完成安装.
6)重启系统

reboot

fedora17启动显示can’t open font file true问题解决办法

2014年1月14日

fedora17启动显示can’t open font file true问题解决办法

1. 修改/etc/default/grub文件,将GRUB_CMDLINE_LINUX=行中的SYSFONT=True 改为SYSFONT=latarcyrheb-sun16
2. 执行grub2-mkconfig -o /boot/grub2/grub.cfg
3. 重启即可