VIM的自动补全

VIM的自动补全

VIM是linux下面我最喜欢的代码编写工具,今天就说它的自动补全功能。

Vim自身不具有自动补全功能的,需要额外的插件来完成,需要手动的按住 ctrl+P才能给出提示,但是每次多按一下,然后再通过上下键选择,最后回车,效率不高。这里推荐一款自动补全的插件

YouCompletMe

可以自动提示匹配的内容,然后tab键选择,和Windows下面的VisualStudio的助手非常像。

不过YouCompletMe的安装真是有点复杂。Vim的大部分的插件都是直接从官网下载,然后将对应的文件拷贝到

~/.vim/plugins

就可以了。但是YouCompletMe需要先安装

Vundle

这是个管理vim插件的插件。

设置编译环境,然后编译。如果自己下载YouCompletme的源代码,然后编译,是不能工作的,或者需要额外更多的步骤,反正我是没有成功了。

安装Vundle,这个比较简单直接vim的插件官网:

https://github.com/VundleVim/Vundle.vim

可以看到推荐的安装方法:

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html

Plugin 'Valloric/YouCompleteMe'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

继续阅读

Posted in VIM | Leave a comment

ffmpeg Provided packet is too small, needs to be

ffmpeg Provided packet is too small, needs to be

我们在调用

avcodec_encode_xxxx

的时候,会出现上面的错误,原因是没有初始化

AVPacket

例如:

ret = avcodec_encode_audio2( pEncCodecCtx, &encPkt, encFrame, &got_output);

也就是说encPkt没有初始化,ffmpeg为初始化提供了一个api

继续阅读

Posted in FFMpeg | Leave a comment

操作firewalld

操作firewalld

前面已有文章大概介绍了firewalld,这个Centos 7新引入的组件,

Centos7引入了新的防火墙firewalld, iptables被取代

启动,停止,或者查看状态,使用service或者centos 7新引入的systemd

$> sudo service firewalld [start|stop|restart|status]

$> sudo systemd [start|stop|restart|status] firewalld

除了使用service或者systemd的status选型来查看状态,还可以firewall-cmd

$> firewall-cmd –state

running

会直接告诉你firewalld是否运行,

firewalld引入2个重要的概念,zone(域)和service(服务),zone是来一些列规则的集合,service表示了这些规则中一条。zone有默认的zone。这些概念有些复杂,这里我们暂且不去讨论这些概念,看看如何简单添加我们需要的端口,例如我们要添加tcp的8080端口

$> sudo firewall-cmd --zone=public --add-port=8080/tcp

success

上面命令就有个zone,名字是public,这个firewalld初始就有的zone,并且是默认的域。下面查看我们刚才添加的端口是否成功:

$> firewall-cmd --list-ports
8080/tcp

可以看到8080已经添加成功。

下面我们添加udp的端口,下面是端口范围,当然udp可以换成tcp

$> sudo firewall-cmd --zone=public --add-port=8000-8010/udp

下面再查看添加的端口:

$> firewall-cmd --list-ports

8000-8010/udp 8080/tcp

上面的添加都是零时的,系统重启后,都将消失,为了永久添加,使用 permanent参数,例如:

$> sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp

下面简单提一下zone

列出所有的zone

firewall-cmd --list-all-zones | less

继续阅读

Posted in Linux系统学习 | Leave a comment

vim 搜索大小写

vim 搜索大小写

默认情况下,vim的搜索是大小写敏感的,但是很多时候,我们希望时候他是不敏感的。因此会在

.vimrc

文件中设置

set smartcase

为了检测是不是大小写敏感,确切的说查看是否设置了smartcase,可以使用下面的vim命令

:set smartcase?

继续阅读

Posted in VIM | Leave a comment

ffmpeg lib库显示版本和编译信息

ffmpeg lib库显示版本和编译信息

如果你有ffmpeg或者ffplay那么显示版本信息或者编译时的选项是很直接的,直接 运行这2个命令中的任何一个就可以:

$>ffmpeg

ffmpeg version N-75563-g235381e Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-9)
  configuration: –enable-gpl –enable-libx264 –enable-shared
  libavutil      55.  2.100 / 55.  2.100
  libavcodec     57.  3.100 / 57.  3.100
  libavformat    57.  2.100 / 57.  2.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6.  8.100 /  6.  8.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.100 /  2.  0.100
  libpostproc    54.  0.100 / 54.  0.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]… {[outfile options] outfile}…

继续阅读

Posted in FFMpeg | Leave a comment

Yii 2.x生成搜索功能

Yii 2.x生成搜索功能

我记得在Yii的1.1时代,是自动生成搜索框,但是2.x年代怎么不自动了变成手动了,好在不是很麻烦了。下面就说怎么手动添加这个功能。

说手动不确切,因为很大一部分还是自动生成,

1. 访问Gii

http://localhost/gii

继续阅读

Posted in php框架 - Yii | Leave a comment

SELinux is preventing httpd from using the execstack access on a process

 SELinux is preventing httpd from using the execstack access on a process

软件环境:

  • Linux – Centos 7
  • Webserver – httpd
  • SELinux enabled

使用下面的命令来查看httpd的运行状态:

$> sudo systemctl status httpd

输出如下结果:

httpd.service – The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active:
active (running) since Fri 2016-06-03 10:09:25 SGT; 15min ago
 Main PID: 1824 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1824 /usr/sbin/httpd -DFOREGROUND
           ├─3271 /usr/sbin/httpd -DFOREGROUND
           ├─3272 /usr/sbin/httpd -DFOREGROUND
           ├─3273 /usr/sbin/httpd -DFOREGROUND
           ├─3274 /usr/sbin/httpd -DFOREGROUND
           └─3275 /usr/sbin/httpd -DFOREGROUND

继续阅读

Posted in Linux系统学习 | Leave a comment

Yii的Gii生成Oracle的modal时候出错

Yii的Gii生成Oracle的modal时候出错

先说一下,本文提到的问题涉及的环境:

  1. Linux Centos 7
  2. Oracle 12c
  3. Yii 2.0.8
  4. httpd

使用Yii的Gii生成modal的时候遇到下面的错误

Database Exception – yii\db\Exception
ORA-00942: table or view does not exist
The SQL being executed was: SELECT username
FROM dba_users u
WHERE EXISTS (
SELECT 1
FROM dba_objects o
WHERE o.owner = u.username )
AND default_tablespace not in ('SYSTEM','SYSAUX')

Caused by: PDOException
ORA-00942: table or view does not exist

继续阅读

Posted in php框架 - Yii | Leave a comment

Yii 2 enablePrettyUrl后不能访问gii

Yii 2 enablePrettyUrl后不能访问gii

本篇我们谈谈在enablePrettyUrl后不能访问gii的问题。关于gii 是什么,不在我们讨论的范围,这里只给出官网的一个链接

http://www.yiiframework.com/doc-2.0/guide-start-gii.html

Generating Code with Gii – Getting Started – The Definitive Guide to Yii …

为什么要使用enablePrettyUrl,在之前的博文中有提到

Yii 2.x 简化URL

继续阅读

Posted in php框架 - Yii | Leave a comment

Yii 2.x 简化URL

Yii 2.x 简化URL

之前写过一篇文章介绍如何简化Yii 1.1 的URL,

Yii 1.1 简化URL

今天使用Yii 2.x发现这部分有变动,所以跟大家共享跟新内容。

在默认的情况下,Yii开发的web应用的URL特别怪异,如默认的首页

继续阅读

Posted in 杂项 | Leave a comment