leoatchina的博客

一个折腾控写字的地方,生信小菜鸟弱弱地打怪升级中。


  • 首页

  • 分类

  • 标签
leoatchina的博客

rpkm-tpm

发表于 2017-10-18

rpkm-tpm的区别

  1. rpkm是normalize,再divided by count;tmp是先divided by count,再normalize
  2. tpm总和是million
  3. tpm能表现出某个基因的reads的比例
leoatchina的博客

osx_software

发表于 2017-10-17

Mac下的推荐软件

spotlight

这个不是第三方软件,是系统自带了,默认ctrl+space启动,相当一个快速启动+搜索利器
比如你要启动终端,那么按ctrl+space后,再输入termina....就会看到出来

Iterm2 && oh-my-zsh

见安装iterm2和oh-my-zsh
Iterm2代替系统的终端,比原生的好太多。
oh-my-zsh是一个zshshell的主题,这两个结合起来届面友好度大大提升

顺带安装homebrew

karabiner

定义鼠标、按键功能,官方网站
参照使用 Karabiner 替代 Scroll Reverser 设置鼠标滚动方向反转来设置鼠标反转

aria2gui

下载利器,配合baiduexporter可以破百度云限速
aria2gui
baiduExporter

atom和vscode

现在基本能代替sublime了,免费,看情况装
其中,装好插件后,Atom能作为一个很强的 markdown写作利器

PDF Expert

阅读pdf的利器

Dash

程序员百科全书,和alfred结合非常好

Moom

类似windows下win键+方向键移动窗口的软件

Pasta

加强版的剪贴本

Alfred

超级软件 ,加强版的spotlight,内置增强的剪贴本工具,不喜欢安装太多软件的可以用内置的代替上面的paste

spf13-vim-leoatchina

我修改的vim配置 spf13-vim-leoatchina,看文档

leoatchina的博客

leoatchina的vim配置文件

发表于 2017-10-15

leoatchina的vim配置文件

This is leoatchina’s vim config forked from spf13-vim:steve francia’s vim distribution.I sincerely thank him for great job. To meet my needs,I have changed lots of settings and plugins.

            __ _ _____              _
 ___ _ __  / _/ |___ /      __   __(_)_ __ ___
/ __| '_ \| |_| | |_ \ _____\ \ / /| | '_ ` _ \
\__ \ |_) |  _| |___) |_____|\ V / | | | | | | |
|___/ .__/|_| |_|____/        \_/  |_|_| |_| |_|
    |_|

spf13对他自己作品的介绍

spf13-vim is a distribution of vim plugins and resources for Vim, Gvim and MacVim.
It is a good starting point for anyone intending to use VIM for development running equally well on Windows, Linux, *nix and Mac.
The distribution is completely customisable using a ~/.vimrc.local, ~/.vimrc.bundles.local, and ~/.vimrc.before.local Vim RC files.

背景

本人是生信工程师,主要使用的语文是python,R,perl,shell,经常要ssh到远程服务器上写代码,因此学习了vim,后来发现了spf13-vim:steve francia’s vim distribution,大大提高了写代码的效率。但是,原配置仍然有很多插件和配置不符合我的需要,因此,fork后进行了大量的修改.请访问leoatchina的vim配置文件.由于本人水平所限,一定有很多错误和bug,望各位指正.
注意使本配置文件后可能会影响vim运行流畅度.

对使用者的要求

掌握vim的大部分操作,了解leader,map,hjkl,d,w,s,i,u,:,\等操作命令

配置文件

各配置文件执行次序

  • .vimrc.before # 参数配置文件
  • .vimrc.before.local
  • .vimrc.bundles # 插件管理文件
  • .vimrc.bundles.local
  • .vimrc # 最主要的配置文件,配色、快捷键、显示方式等参数都在这里设置
  • .vimrc.local

安装

安装本配置 需要 Git 1.7+ 和 Vim 7.3+(编译时加入对lua和python的支持),部分插件如Nvim-R,AsyncRun,需要Vim8.0
如果要安装neocomplete, 需要vim with lua.

Linux, *nix, Mac OSX 下的安装

1
2
3
git clone https://github.com/leoatchina/spf13-vim-leoatchina.git
cd spf13-vim-leoatchina
bash bootstrap.sh

windows下的安装

1
2
3
git clone https://github.com/leoatchina/spf13-vim-leoatchina.git
cd spf13-vim-leoatchina
点击install.cmd

升级到最新版本

1
2
vim +BundleUpdate
或者在vim里直接 :BundleUpdate

一些功能

  • 复制内容直接放到系统剪贴本
  • 显示行号,多种语法高亮
  • 修改文档后马上生效
  • Visual模式下用>,<移动文字不会取消选择
  • 不生成backup文件
  • 关闭拼写检查
  • 关闭声音
  • 关闭列光标加亮
  • 关闭行光标加亮
  • 允许折行
  • 不代码折叠
  • 开启实时搜索功能
  • 显示光标当前位置
  • 高亮显示搜索结果
  • 折叠模式下翻页的改进
  • 智能缩进
  • 没有滚动条
  • 没有菜单和工具条
  • 总是显示状态栏

主要改动

我在spf13的基础上,做了一些微小的工作

  1. 去除了一些比较冗余的插件,如wildfire,并加入了自己喜欢的插件
  2. 修改了安装代码,变成直接从clone的目录中软链接到用户目录下,不再支持XP
  3. 按自己习惯修改了大量插件的快捷键
  4. 去除了原来定义的一些函数
  5. 重点修改了代码补全插件YouCompleteMe、Neocomplete的配置和快捷键
  6. 去除了fork功能,仅保留before功能
  7. 增加对R和Markdown的支持,不过要在~/.vimrc.before.local里开启
  8. 默认不进行代码补全,要使用者在 ~/.vimrc.before.local里进行配置,如我加入了对youcompletme的配置,也可以使用neocomplte和neocomplcache
  9. 我的~/.vimrc.before.local,可以看到有对python,R,markdown的支持
    1
    let g:spf13_bundle_groups=['general', 'programming', 'python', 'youcompleteme','php', 'javascript', 'html','R','markdown','material']

基本快捷键

  • <leader>键改为空格键,这个在键盘上最大的按键就有了更强的作用;<localleader>改为\,\在R编写调试时使用率比较高
  • ~作为进入ex模式的快捷键,Q键map为<Nop>
  • F1: 为:h,方便启动帮助
  • F2: 打开关闭代码折叠 或 <leader>wd
  • F3: 打开关闭换行 或 <leader>fd
  • F4: 打开关闭搜索高亮 或 <leader>hl
  • F5: 运行脚本(python、perl、c等)或 <leader>R;Shift+F5:运行脚本并记录时间;<leader>+F5: AsyncRun
  • F11: 全屏切换,如果是windows下的gvim,要把本目录下的gvim_fullscreen.dll放到gvim的安装目录下
  • F12: 切换paste模式,或者<leader>tg
  • <leader>fc:fixed confict markers
  • <leader>fw:对当前光标下文字进行搜索
  • <leader>mk:markdown调用chrome生成markdown preview
  • 在Visual模式下按.为退出Visual模式
  • 标签页控制

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    nnoremap <silent>- : tabprevious<CR>
    nnoremap <silent>= : tabnext<CR>
    nnoremap <leader>tf : tabfirst<CR>
    nnoremap <Leader>tl : tablast<CR>
    nnoremap <leader>tn : tabnew<CR>
    nnoremap <Leader>ts : tabs<CR>
    nnoremap <Leader>tp : tab split<CR>
    nnoremap <Leader>te : tabe<SPACE>
    nnoremap <Leader>tm : tabm<SPACE>
    nnoremap <silent>_ : tabm -1<CR>
    nnoremap <silent>+ : tabm +1<CR>
  • Ctrl+e移到一行的结尾;Ctrl+y移到一行的开头

  • Ctrl+m括号之间跳转
  • <leader>w保存当前文件;<leader>W保存所有文件
  • <leader>q关闭当然文件;Q为:qa,不过给你反悔的机会不直接按下回车
  • 复制粘贴等

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    " 设置快捷键将选中文本块复制至系统剪贴板
    vnoremap <leader>y "+y
    nnoremap <leader>y "+y
    nnoremap <leader>Y "+yg
    nnoremap <leader>yy "+yy
    " Yank from the cursor to the end of the line
    nnoremap Y y$
    " p and P for paste
    nnoremap <leader>p "+p
    nnoremap <leader>P "+P
    vnoremap <leader>p "+p
    vnoremap <leader>P "+P
  • 其他一些快捷键

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    " buffer switch
    nnoremap <leader>bn :bn<CR>
    nnoremap <leader>bp :bp<CR>
    " 定义快捷键保存当前窗口内容
    nmap <Leader>w :w<CR>
    nmap <Leader>W :wq!<CR>
    " 定义快捷键保存所有窗口内容并退出 vim
    nmap <Leader>WQ :wa<CR>:q<CR>
    " 定义快捷键关闭当前窗口
    nmap <Leader>q :q<CR>
    " 不做任何保存,直接退出 vim
    nmap <Leader>Q :qa!<CR>
    " 设置分割页面
    nmap <Leader>- :split<Space>
    nmap <leader>\ :vsplit<Space>
    nmap <leader>= <C-W>=
    "设置垂直高度减增
    nmap <Leader>{ :resize -3<CR>
    nmap <Leader>} :resize +3<CR>
    "设置水平宽度减增
    nmap <Leader>[ :vertical resize -3<CR>
    nmap <Leader>] :vertical resize +3<CR>
    "至左方的子窗口
    nnoremap <Leader>H <C-W>H
    "至右方的子窗口
    nnoremap <Leader>L <C-W>L
    "至上方的子窗口
    nnoremap <Leader>K <C-W>K
    "至下方的子窗口
    nnoremap <Leader>J <C-W>J
    " Visual shifting (does not exit Visual mode)
    vnoremap < <gv
    vnoremap > >gv
    " Ctrl-m for switch between brackets
    map <C-m> %

spf13设计了一系列巧妙的配置变量,在.vimrc.before.local里写入配置变量后,可打开/关闭某些配置
如,关闭自动cd到某个目录

1
echo let g:spf13_no_autochdir = 1 >> ~/.vimrc.before.local

在 ~/.vimrc.before文件里可以看到各个变量详细说明

插件系统

强大的插件系统是spf13-vim的突出优点,通过这些插件,将原版的vim的功能作了极大的丰富。让界面更加美观,操作更加方便。在原有的基础上,我加入了很多自己用的插件和对配置文件进行了修改
spf13没有选用pathongen作为插件管理器,还是选用经典的vundle

使用的插件

内置两套颜色主题

tyrannicaltoucan/vim-quantum

这是我在mac下的iterm2终端下使用的主题,material配色,配合半透明效果看起来很酷炫。

但要求终端支持True Color,如果不支持,效果会惨不忍睹。因此改成手动开启,方法:在~/.vimrc.before.local里的g:spf13_bundle_groups列表里加入material

altercation/vim-colors-solarized

经典主题,默认开启,给一张官方的图

还有三套内置配色方案ir_black,molokai,peaksea,通过:color命令开启

scrooloose/nerdtree

在侧边显示当前目录,Toggle快捷键为Ctrl-N或者<leader>nn

majutsushi/tagbar

显示文档结构,在python,vim里肯定有用,要求在系统里安装ctags
用Ctrl+T or <leader>tt切换在测边显示文档结构.在bar窗口里按F1调出帮助窗口

vim-voom/VOoM

另一个显示文档结构的插件,和TagBar逻辑不一样,python里肯定有用,其他语言我还没有测试出来。快捷键<leader>vo打开 :Voom命令;<leader>vt为:VoomTogglevoom状态切换

mbbill/undotree

undotree顾名思义,增强版的回退插件,快捷键<leader>u

airline

漂亮的状态栏,能够显示很多状态。

ywvim中文输入法

ywvim中文输入法,直接在vim里内置,无意中发现要和fcitx配合使用否则会有bug,在insert模式下通过CTRL+@或CTRL+\开启,CTRL+^进行配置.;临时英文输入法;注意,默认只输入英文状态的标点,而且首选是五笔;z临时拼音;,.-=上下翻页;

markdown

默认开户对markdown语言的高亮支持,如.vimrc.before.local里指定markdown支持,按<leadr>mk调用chrome打开markdown预览,不过这个功能还要仔细测试过.

fugitive

对git的支持,具体可以看官方说明,不过我就设置了快捷键<leader>gi :Git<Space>,操作体验接近终端下输入git命令

scrooloose/nerdcommenter

注释插件,神器,直接上官方的快捷键,最常用的是<leader>c<space>

  • [count]<leader>cc |NERDComComment|
    Comment out the current line or text selected in visual mode.
  • [count]<leader>cn |NERDComNestedComment|
    Same as cc but forces nesting.
  • [count]<leader>c<space> |NERDComToggleComment|
    Toggles the comment state of the selected line(s). If the topmost selected line is commented, all selected lines are uncommented and vice versa.
  • [count]<leader>cm |NERDComMinimalComment|
    Comments the given lines using only one set of multipart delimiters.
  • [count]<leader>ci |NERDComInvertComment|
    Toggles the comment state of the selected line(s) individually.
  • [count]<leader>cs |NERDComSexyComment|
    Comments out the selected lines with a pretty block formatted layout.
  • [count]<leader>cy |NERDComYankComment|
    Same as cc except that the commented line(s) are yanked first.
  • <leader>c$ |NERDComEOLComment|
    Comments the current line from the cursor to the end of line.
  • <leader>cA |NERDComAppendComment|
    Adds comment delimiters to the end of line and goes into insert mode between them.
  • |NERDComInsertComment|
    Adds comment delimiters at the current cursor position and inserts between. Disabled by default.
  • <leader>ca |NERDComAltDelim|
    Switches to the alternative set of delimiters.
  • [count]<leader>cl
    [count]<leader>cb |NERDComAlignedComment|
    Same as |NERDComComment| except that the delimiters are aligned down the left side (<leader>cl) or both sides (<leader>cb).
  • [count]<leader>cu |NERDComUncommentLine|
    Uncomments the selected line(s).

rking/ag.vim

Ag是一个非常快的文件/文本搜索工具,通过<leader>ag开遍文本搜索,<leader>af文件搜索

Tabularize

自动按特定的符号对齐,快捷键见.vimrc里的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nmap <Leader>a& :Tabularize /&<CR>
vmap <Leader>a& :Tabularize /&<CR>
nmap <Leader>a= :Tabularize /^[^=]*\zs=<CR>
vmap <Leader>a= :Tabularize /^[^=]*\zs=<CR>
nmap <Leader>a=> :Tabularize /=><CR>
vmap <Leader>a=> :Tabularize /=><CR>
nmap <Leader>a: :Tabularize /:<CR>
vmap <Leader>a: :Tabularize /:<CR>
nmap <Leader>a:: :Tabularize /:\zs<CR>
vmap <Leader>a:: :Tabularize /:\zs<CR>
nmap <Leader>a, :Tabularize /,<CR>
vmap <Leader>a, :Tabularize /,<CR>
nmap <Leader>a,, :Tabularize /,\zs<CR>
vmap <Leader>a,, :Tabularize /,\zs<CR>
nmap <Leader>a<Bar> :Tabularize /<Bar><CR>
vmap <Leader>a<Bar> :Tabularize /<Bar><CR>

sessionman

sessionmanager,<leader>sl显示session列表;<leader>ss保存session;<leader>sc关闭session

ctrlp

杀手级插件,引用网上的一段话对它的介绍

在 VIM 世界里,有人是分窗口编辑文件的忠实拥护者,有人则是多文件 tab 页的死忠骨灰粉。但无论哪种人, 在一些大项目内进行编辑工作时,如果要快速打开 ‘./lib/foo/bar/comm/base_utils.py’ 这类藏在大山深处的文件,都需像剥粽子一样,一层一层往下找,让人头疼。

ctrlp.vim 则完美帮你解决了这个痛点,当你想打开某个文件时,只要按下 Ctrl + p 快捷键,输入文件名。 所有和这个文件名匹配的文件都会被按照优先级列出来,按下 enter 或者 Ctrl + t 就可以在当前 buffer 或者新 tab 页打开你要的文件了。

网上找来的图

ctrl+p启动插件,<leader>fu启动funksky函数查询功能,在启动后,用Ctrl+f,Ctrl+b在不同模式中切换.
在文件列表中,Ctrl+k/j或者方向键向上/下选择文件,t在新标签里打开文件.其他快捷键见ctrlp中文介绍

Pymode

python用的插件,具有语法检查,调试等功能.F9: python语法检查,S+F9切换语法是否检查.<leader>R:运行脚本;<leader>T:track_point toggle

surround

给一段文字加上括号的插件,下面说明文字引用自vim中的杀手级别的插件:surround

1
2
3
4
5
6
7
8
Old text Command New text
"Hello *world!" ds" Hello world!
[123+4*56]/2 cs]) (123+456)/2
"Look ma, I'm *HTML!" cs"<q> <q>Look ma, I'm HTML!</q>
if *x>3 { ysW( if ( x>3 ) {
my $str = *whee!; vlllls' my $str = 'whee!';
<div>Yo!*</div> dst Yo!
<div>Yo!*</div> cst<p> <p>Yo!</p>

如上面代码块所示,添加替换时使用后半括号)]},添加的括号和内容间就没有空格(如第2个示例),反之会在内容前后添加一个空格(如第4个实例)。第6个示例中的t代表一对HTML或者xml tag。其他表示范围的符号:w代表word, W代表WORD(被空格分开的连续的字符窜),p代表paragraph。

命令列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Normal mode
-----------
ds - delete a surrounding
cs - change a surrounding
ys - add a surrounding
yS - add a surrounding and place the surrounded text on a new line + indent it
yss - add a surrounding to the whole line
ySs - add a surrounding to the whole line, place it on a new line + indent it
ySS - same as ySs
Visual mode
-----------
s - in visual mode, add a surrounding
S - in visual mode, add a surrounding but place text on new line + indent it
Insert mode "不建议使用
-----------
<CTRL-s> - in insert mode, add a surrounding
<CTRL-s><CTRL-s> - in insert mode, add a new line + surrounding + indent
<CTRL-g>s - same as <CTRL-s>
<CTRL-g>S - same as <CTRL-s><CTRL-s>

PIV

The most feature complete and up to date PHP Integration for Vim with proper support for PHP 5.3+ including latest syntax, functions, better fold support, etc.

PIV provides:

  • PHP 5.3 support
  • Auto generation of PHP Doc (,pd on (function, variable, class) definition line)
  • Autocomplete of classes, functions, variables, constants and language keywords
  • Better indenting
  • Full PHP documentation manual (hit K on any function for full docs)

Nvim-R

支持R语言的插件,需要Vim8.0+并在.vimrc.before.local里加入R.通过<leader>rr激活界面,<leader>rq退出R程序


快捷键极多,请自行:h nvim-r查询

EasyMotion

又一个杀手级别的插件

  1. 跳转到当前光标前后,快捷键<leader><leader>w和<leader><leader>b
  2. 搜索跳转,<leader><leader>s,然后输入要搜索的字母
  3. 行间/行内级别跳转,<leader><leader>再hjkl不解释
  4. 重复上一次的动作,<leader><leader>.
  5. 还可以<leader><leader>f和<leader><leader>t,不过不建议使用

代码补全插件

  • 用了三种补全插件,要在~/.vimrc.before.local里加入youcomplteme或neocomplte或neocomplcache来激活安装。
  • 基本快捷键统一为Tab、Shift-Tab为向下,向上翻页,ctrl-n/p也能进行翻页.enter或Ctrl+k激活补全。ctrl+l显示各种实例可能
    YouComplteMe
    • 需要安装一系列编译用软件
    • 跳转键,Ctrl+f跳转到下一个待补全处,Ctrl+b中转到上一个待补全处。
    • 具体可参考Vim 自动补全插件 YouCompleteMe 安装与配置.
    • 在安装好各种编译用的工具后
      1
      2
      cd ~/.vim/bundle/YouCompleteMe
      python2 install.py #可能仅支持python等不需要编译的语言
neocomplete&&neocomplcache
  • 这两者是同一个作者编写,neocomplte需要lua的支持
leoatchina的博客

leoatchina的第一篇hexo博客

发表于 2017-08-26

leoatchina第一次用hexo进行博客写作,使用了next主题
leoatchina是用atom进行博客写作,可以在官方网站atom.io上下载
之所以用这个软件,原因

  1. 免费
  2. 配置可以用github进行同步
  3. 插件丰富,我主要用到的有
    • markdown-preview-plus
    • markdown-writer
    • markdown-previwe-opener //自动打开markdown preview
    • markdown-scroll-sync //进行markdown写作时,写作区和预览区同步滚动
    • atom-hexo //hexo命令
    • vim-mode // 习惯vim的操作模式了
    • markclip,//这个是利器 见下面
  4. 写作时插入图片的方法
    1. 首先,在主配置目录的_config.yml里,设置 post_asset_folder: true
    2. 按正常的markdown语言进行写作
    3. 写作时正常截图,在安装了markclip之后,在文章里直接按ctrl+v,就可以在source/_posts目录下,建立一个和当前编辑的文件同名的文件夹,你的截图文件会自动放入这个文件夹,并在你markdown文件中插入这个图片的链接,如下

  5. hexo clean | hexo g | hexo d,完成布置
leoatchina的博客

安装新版htslib、bcftools、samtools

发表于 2017-08-26
官方网站和github上的INSTALL/README有问题,要按照下面的方法安装develop版本的
1
2
3
4
5
git clone --branch=develop git://github.com/samtools/htslib.git
git clone --branch=develop git://github.com/samtools/bcftools.git
git clone --branch=develop git://github.com/samtools/samtools.git
cd bcftools && make && make install
cd ../samtools && make && make install
leoatchina的博客

sslocal+proxychains4解决阿里云vps访问github过慢问题

发表于 2017-08-26 | 分类于 翻墙

阿里云从github clone一些软件后再编译安装 ,速度都很慢。
试过改host或者设置 git的proxy,效果都不好,后来用 sslocal+proxychains4解决问题。

1. 安装pip

wget -c https://bootstrap.pypa.io/get-pip.py
python get-pip.py

2. 安装 sslocal

pip install shadowsocks

3. 配置sslocal

vim ~/sslocal.json

1
2
3
4
5
6
7
8
{
"server":"1.1.1.1", #可以使用的ss服务器IP
"server_port":1035, #ss服务器端口
"local_address": "0.0.0.0", #本地ip 注意:不要使用127.0.0.1或192.168.1.100等ip
"local_port":1080,#本地端口
"password":"password",#连接ss服务器密码
"timeout":600,#等待超时
"method":"rc4-md5"#加密方式

4. 启动sslocal,并加入开机启动

nohup sslocal -c ~/sslocal .json >/dev/null 2>&1 &
echo “ nohup sslocal -c ~/sslocal .json >/dev/null 2>&1 &” >/etc/rc.local

5. 编译安装最新版 proxychains4

wget -c https://github.com/rofl0r/proxychains-ng/releases/download/v4.11/proxychains-ng-5.11.tar.bz2o
tar zxf proxychains-ng-4.11.tar.bz2
cd proxychains-ng-4.11
./configure && make && make install && make install-config

6. 编辑proxychains4配置文件

vim /usr/local/etc/proxychains.conf
更改 socks4 127.0.0.1 9050为socks5 127.0.0.1 1080

7. 测试下你的代理

proxychains4 curl https://api.ipify.org/?format=json

如果配置正确,返回你的ss服务器的ip地址

8. 用proxychain4+git下载

proxychains4 git clone https://github.com/xxxxx/xxxxx.git

下面是我的一个测试结果,速度从4k提升到了1.5m

1
2
3
4
5
6
7
8
9
[proxychains] DLL init: proxychains-ng 4.11
[proxychains] Strict chain ... 127.0.0.1:1080 ... github.com:443 ... OK
[proxychains] DLL init: proxychains-ng 4.11
[proxychains] Strict chain ... 127.0.0.1:1080 ... github.com:443 ... OK
remote: Counting objects: 120391, done.
[proxychains] DLL init: proxychains-ng 4.11
remote: Total 120391 (delta 0), reused 0 (delta 0), pack-reused 120390
Receiving objects: 100% (120391/120391), 84.22 MiB | 1.51 MiB/s, done.
Resolving deltas: 100% (81308/81308), done.

leoatchina的博客

一个缩写,让你的git log命令界面更加直观和酷炫

发表于 2017-03-19

转自微信公众号,AndroidDevelper

告诉大家一个比较屌的命令,输入

1
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

然后日志这样了
Paste_Image.png

是不是比较清晰,整个分支的走向也很明确,但是每次都要输这么一大串是不是也很烦?这时候你就该想到 alias 啊。

这样以后直接输入 git lg 就行了。

1
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"

还有其他常用的缩写

1
2
3
4
5
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.cim 'commit -m'
git config --global alias.br branch

leoatchina的博客

ubuntu服务器samba、ftp、timemachine配置过程

发表于 2017-03-05

作为家里htpc服务器的ubuntu电脑由于前面操作不慎,系统出了一些非常影响检验的总是,特别是owncloud功能挂了,最后决定重装。
重装后先把最重要的 samba,ftp,timemachine功能给恢复回来,其他以后慢慢搞。
在这过程中,又重新看了以前的笔记,查了一些资料,在实践中发现无论原来的笔记,人家的经验都有一些繁琐,或不是非常正确的地方, 这里记录下自己的配置备参考 。

电脑硬盘和目录

有一个ssd和一个hdd,hdd mount成 /mnt/。
这里有一个非常容易忽视的设置,要把 /mnt/和其子目录设置成 samba帐号 可读写和执行,否则samba服务会报权限错误

1
sudo chmod 770 -R /mnt

我的/mnt下面的文件夹分配

1
2
3
4
5
6
7
8
9
10
11
# htpc @ htpc in /mnt [10:48:35]
$ ls -alh
total 36K
drwxrwxrwx 8 htpc htpc 4.0K 3月 4 22:30 .
drwxr-xr-x 24 root root 4.0K 3月 4 10:39 ..
drwxrwx--- 4 htpc htpc 4.0K 3月 4 09:39 backup
drwxrwx--- 5 htpc htpc 4.0K 3月 4 11:16 config
dr-xr-x--- 5 share htpc 4.0K 3月 4 22:31 ftp # ftp主目录
drwxrwx--- 4 www-data htpc 4.0K 2月 21 22:02 owncloud # owncloud目录
drwxrwx--- 10 share htpc 4.0K 3月 4 22:43 share # 这个是samba的
drwxrwx--- 8 tm htpc 4.0K 3月 5 10:48 timemachine # mac用的timemachine目录

其中, share目录通过修改 /etc/fstab 开机mount到 /mnt/ftp/share中去。在这个文件最后加这样一句

1
/mnt/share /mnt/ftp/share none bind 0 0

为什么要这么做,是因为vsftp的要求:不能在ftp的根目录可写,所以ftp这个目录的权限也要设置成 550

用户

samba和ftp的share帐号

1
sudo useradd share -d /mnt/ftp -s /usr/sbin/nologin -g htpc

说明下

  • -d 主目录,为了ftp服务
  • -s 设置shell为 nologin,就是不能远程登陆
  • -g 设置成htpc组,这个其实是为了htpc这个主账号登陆上去后管理方便,不是一定要设置

samba

安装

1
sudo apt-get install samba

配置

sudo vim /etc/samba/smb.conf

网上的教程太冗余,我先贴我的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[global]
netbios name = htpc #局域网显示名称
server string = Samba Server Version %v
workgroup = workgroup #局域网共享分组
load printers = no
security = user # 这个比较重要,设计成user是根据你linux内帐户权限对共享目录进行访问
log level = 8
log file = /var/log/samba/samba.log
max log size = 50
unix charset = utf8 #这个也比较重要
map hidden = no
[share]
comment = share
path = /mnt/share # 路径
browseable = yes #这个其实比较重要的,如果设置成no,你的这个目录在共享里是看不到的,除非输入路径
writable = yes
read only = no
valid users = share,@htpc # 允许访问的用户和用户组
write list = share,@htpc # 允许写入的用户和用户组

重启服务

sudo service smbd restart

再强调一次,设置samba目录时,要把父目录也设置成share帐户可读入,否则不能访问samba目录

ftp,其实就是vsftp

安装

sudo apt-get install vsftpd

配置

sudo vim /etc/vsftp
还是一句话,网上的配置太麻烦,贴我的,其实就几个地方比较重要

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
listen=YES
anonymous_enable=NO
local_enable=YES #用本地帐户登陆
write_enable=YES
local_umask=022
local_root=/mnt/ftp # 主目录
max_clients=5
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
idle_session_timeout=600
data_connection_timeout=120
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
rsa_cert_file=/etc/ssl/private/vsftpd.pem
chroot_local_user=YES #限制在ftp 主目录内,这也是前面 mount share目录的原因

重启和登陆ftp

sudo service vsftpd restart

然后你用 ubuntu share账户就可以登陆了

timemachine

这里我必须吐槽一下, 网上找到很多教程,装这个装那个,配这个配那个,其实在最新版的ubuntu下面,avahi服务是自带的,根本不用装,而且一般人要用到的配置也很简单,抄来抄去写那么多干什么。

安装 ,就装这个就行了

sudo apt-get install netatalk

配置,就改最后两行就够了

sudo vim /etc/netatalk/AppleVolumes.default

注释掉 "Home Directory",加上这么一句 /mnt/timemachine/ "TimeMachine" volsizelimit:600000 options:tm
然后呢,最多对 /mnt/timemachine目录设置一个专门帐号,就行了

重启和访问

sudo service netatalk restart

在finder里,按 cmd+k,输入 afp://ip 访问你的TimeMachine服务器,然后你打开timemachine设置选择你的 TimeMachine

leoatchina的博客

用ubuntu+owncloud+nginx+php-fpm+mysql+aria2打造私有云+远程下载器

发表于 2017-03-02

起由

  • 由于最近的“净网”行动,很多网盘包括我一直在使用的快盘关停,仍然存活的百度云、360云等又没有linux客户端,用Dropbox等国外网盘受空间和墙的限制比较大。
  • 同时又有一定的收集高清电影在局域网里共享播放的需要。家里是百兆电信宽带,平时空时可以用来下载,所以有了自建以私有云为基础的服务器的想法。
  • 私有云方案有多种方案,出于可扩展功能的需要,选择了Ubuntu14.04+Owncloud的方案,使用者要有一点的linux操作和vi编辑经验。
  • 顺带要把mysql和phpmyadmin也配置好

主机配置

  • 主机放于家庭电视机柜中,24小时开机,乔思伯V3 ITX HTPC机箱
    乔思伯V3机箱
  • 内存2G x 2,系统装在一块64Gssd上,另外有一块4T的硬盘作主力盘
  • 主板集成J1800 CPU,无风扇,TDP 15w,足够放1080p X264编码的高清电影,不过现在建议用更高级的J3455主板,能放4k的高清。
    J1800主板
  • 不算硬盘,HTPC的资金投入是 主板250+内存100+机箱200+电源150=700

带端口映射的智能路由器

  • 一般情况下,家庭局域网出口在公网环境下是没有固定ip,所以路由要有动态域名解析功能,能从公网环境中反向通过家庭路由访问到局域网
  • 由于电信封了80和8080端口,同时又要把对路由公网ip的访问转到HTPC上,所以要有端口映射功能
  • 又有其他翻墙、路由分离功能
  • openwrt是一个比较好的方案,我的方案是淘宝上这一款 841N 五口 OpenWrt 无线路由器 16M 64M 双天线,体积小,拆掉天线后放入弱电箱,无线功能靠二级路由实现,要注意要把二级跟帖的ip段设置的和主路由一样。
     841N 五口 OpenWrt 无线路由器
  • 现在换成了斐讯k2 k2路由器 请去刷入 padavan系统

开启路由器的端口映射

  • 首先要确定你的机器(下面统称HTPC)的静态IP
  • 在web界面,网络-防火墙-端口转发里,增加以下几条转发到此静态IP的规则

    1
    2
    3
    4
    5
    6
    21->21:#For FTP
    20->20:#For FTP
    22->22:#For SSH remote login
    443->443:#For Https
    6800->6800:#For Aria2
    6801->6801:#For Aria2
  • 你们可以注意到没有规则对80转发或者转发到80端口

开启动态域名

  • 可以在 changeip.com去申请,比如我申请了一个 testdomain.changeip.com,这样在外网环境中结合上述端口映射,可以直接对内网中的HTPC进行操作,安装软件、修改服务。

出人意料的NTFS权限问题

  • 这个是历史遗留问题:
    曾经我的三块硬盘在放到htpc里时全是ntfs格式,上面都有数据,不能无损转成EXT4
  • owncloud的存贮路径是在其中一块硬盘上,原来是直接mount到/mnt目录下,在后面配置owncloud时指定存贮目录时,出现权限770问题
  • 数据太多,不能格盘,在owncloud的官方网站上找了好久,找出是mount时出的 用户权限分配问题,后来通过修改 /etc/fstab 指定 mount时的uid等来解决
    /dev/sdb5 /mnt/disk1 ntfs locale=zh_CN.UTF-8,uid=33,gid=33,dmask=007,windows_names 0 0
  • 上面的uid=33,gid=33分别对应远行nginx的用户 www-data 和用户组 www-data

安装samba和vsftp

  • ssh到HTPC后自行安装,并设置好目录

安装mysql

  • sudo apt-get install mysql-server mysql-client

安装nginx和php-fpm

  • 请给你的mysql设置一个比较强的root密码,并且为owncloud创建专有用户

    sudo apt-get install nginx
    sudo add-apt-repository ppa:ondrej/php
    sudo apt-get update
    sudo apt-get install php7.0 php-fpm php-mysql php-mbstring

安装phpmyadmin和owncloud

  • 直接从网上下载,解压到web服务目录
  • 我的web服务根目录是 /home/test/www
  • 改变目录拥有者 sudo chown www-data -R /home/test/www
  • 改变权限 sudo chmod 755 -R /home/test/www
配置phpmyadmin
  • 备份原始配置文件

    cd /home/test/www/phpmyadmin
    cp config.sample.inc.php config.inc.php

  • 修改phpmyadmin的配置文件

    vi /home/test/www/phpmyadmin/config.inc.php
    配置 $cfg['blowfish_secret'] = '$#%#$%#$%#$^#^ETETR'; 就是一个加密信息,越乱越好

  • 配置另一个config文件

    cd /home/test/www/phpmyadmin/libraries
    vi config.default.php
    同样配置$cfg['blowfish_secret']

  • 其他用默认
配置php7-fpm

php7.0的 配置环境在 /etc/php/7.0/fpm里,有php-fpm.conf和php.ini两个重要的配置文件

php.ini
  • 设置
    = On```
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    - ```extension_dir = "/usr/lib/php/20151012"```,目录通过``catfish``搜索``mysql.so``找到,用于安装各种扩展,应该是``apt-get install``时自动放入。
    - 开启对mysql的支持:``extension=mysqli.so``,``extension=pdo_mysql.so``
    - 设置``cgi.fix_pathinfo=0``
    ###### **php-fpm.conf:**
    可以看到 ``include=/etc/php/7.0/fpm/pool.d/*.conf``,里面有``www.conf``文件
    > - 配置``listen``: ``listen = /run/php/php7.0-fpm.sock``,配置nginx时会用到
    - 重启php-fpm:``sudo service php7-fpm restart``
    #### nginx开启https,两种方案
    owncloud9.0强制要求https服务,需要对自己web站进行认证,实际中我试过两种方案,最后用的是第一种方案
    ##### 用自签名的SSL证书
    > - 采用自验证方案,借用廖雪峰大神的脚本[给Nginx配置一个自签名的SSL证书](http://www.liaoxuefeng.com/article/0014189023237367e8d42829de24b6eaf893ca47df4fb5e000)
    > - 运行这个脚本后,把生成的key文件和crt文件复制到``/etc/nginx/ssl/``目录
    如``/etc/nginx/ssl/testdomain.changeip.com.crt``
    和``/etc/nginx/ssl/testdomain.changeip.com.key``
    配置nginx时要用到,或者你直接在后面写nginx文件时指向这两个文件
    ##### 用letsencypt加密自己的服务器
    > - 被大牛吐槽自授权是错误的价值观,在他的建议下换成 [Let’s Encrypt](https://letsencrypt.org/)(是一个免费、自动化、开放的证书颁发机构,由网络安全研究小组运作)的免费授权系统,主要参考了[Let's Encrypt SSL证书配置](http://www.jianshu.com/p/eaac0d082ba2)和[折腾Let‘s Encrypt免费SSL证书](https://xiaoai.me/?p=223)
    - 下载安装

git clone https://github.com/certbot/certbot.git
cd certbot
./letsencrypt-auto –help

1
- 生成密钥,在这之前要**停止nginx**

./letsencrypt-auto certonly -d testdomain.changip.com -m testdomain@gmail.com

1
2
3
4
5
- 这样,会生成
/etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem /etc/letsencrypt/live/testdomain.changeip.com/privkey.pem
两个文件,不用移动位置
- 生成2048位 DH parameters:
```sudo openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048

  • 美中不足的是,这种方案只有90天的有效期,要到时候运行脚本renew

owncloud

  • 前面已经提到了很多owncloud的配置,都为实践中一一摸索得来,主要有
    1. 专用mysql用户
    • https证书
    • php.ini配置
    • 文件夹权限
    • 端口映射
    • 特别要强调,要把owncloud的数据文件目录的用户改成 www-data,权限也要改770

aria2和yaaw

  • aria2可以apt-get安装或者编译安装,参考网上教程,至少能安装到1.19版本
  • yaaw下载后直接解压缩到/home/kodi/yaaw下
  • aria2的教程网上很多,我这里贴出我的配置,放在~/.aria2/aria2.conf里

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    rpc-secret=secret #token加密方式
    enable-rpc=true
    rpc-allow-origin-all=true
    rpc-listen-all=true
    rpc-listen-port=6800#nginx里有个转发到这个端口的设置
    rpc-secure=true
    rpc-certificate=/etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem
    rpc-private-key=/etc/letsencrypt/live/testdomain.changeip.com/privkey.pem
    max-concurrent-downloads=5
    continue=true
    max-connection-per-server=5
    min-split-size=10M
    split=10
    max-overall-download-limit=3M
    max-download-limit=0
    max-overall-upload-limit=256K
    max-upload-limit=0
    dir=/mnt/disk2/Downloads
    disk-cache=32M
    file-allocation=prealloc
    input-file=/home/kodi/.aria2/aria2.session
    save-session=/home/kodi/.aria2/aria2.session
  • 在配置yaaw是关键一步,在setting后,要把JSON-RPC Path设置成

    1
    https://token:secret@testdomain.changeip.com:6801/jsonrpc #请注意https和6801

nginx配置

  • 这一步配的头大,后来参考了owncloud官方配置文件才写出来
  • 实际使用过程中又进行了不断的调整
  • 你们可以注意到有个对 6801进行ssl加密又转发到6800端口的配置 ,这是为了让yaaw在全站加密的情况下,突破aria2c的server对https的兼容性问题
  • 要解释的东西太多了,有些我还看不懂,以后一一写来
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    upstream php5-handler {
    server unix:/var/run/php5-fpm.sock;
    }
    upstream php7-handler {
    server unix:/run/php/php7.0-fpm.sock;
    }
    server{
    listen 6801 ssl;
    server_name testdomain.changeip.com;
    ssl_certificate /etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/testdomain.changeip.com/privkey.pem;
    ssl_dhparam /etc/nginx/ssl/dhparams.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;
    location / {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:6800;
    }
    }
    server {
    listen 443 ssl;
    server_name testdomain.changeip.com 192.168.10.150;
    ssl_certificate /etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/testdomain.changeip.com/privkey.pem;
    ssl_dhparam /etc/nginx/ssl/dhparams.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;
    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    # Path to the root of your installation
    root /home/kodi/www/;
    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }
    location /luci{
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass https://192.168.10.1;
    }
    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /owncloud/public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /owncloud/public.php?service=host-meta-json last;
    location = /.well-known/carddav { return 301 $scheme://$host/owncloud/remote.php/dav; }
    location = /.well-known/caldav { return 301 $scheme://$host/owncloud/remote.php/dav; }
    location /.well-known/acme-challenge { }
    location ^~ /phpmyadmin{
    location /phpmyadmin{
    server_name_in_redirect off;
    index index.php;
    }
    location ~ ^/phpmyadmin/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
    }
    location ~ ^/phpmyadmin/(?:\.|autotest|occ|issue|indie|console) {
    deny all;
    }
    location ~ "^\/phpmyadmin\/.*\.php$" {
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
    fastcgi_param front_controller_active true;
    fastcgi_pass php5-handler;
    fastcgi_intercept_errors on;
    # fastcgi_request_buffering off;
    }
    location ~ "^\/phpmyadmin\/.*\.\(htm|html|gif|jpg|png|js|css\)$" {
    root /home/kodi/www;
    }
    }
    location ^~ /owncloud {
    # set max upload size
    client_max_body_size 51200M;
    fastcgi_buffers 64 4K;
    # Disable gzip to avoid the removal of the ETag header
    gzip off;
    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;
    location /owncloud {
    rewrite ^ /owncloud/index.php$uri;
    }
    location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
    }
    location ~ ^/owncloud/(?:\.|autotest|occ|issue|indie|db_|console) {
    deny all;
    }
    location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;Gggg
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
    fastcgi_param front_controller_active true;
    fastcgi_pass php5-handler;
    fastcgi_intercept_errors on;
    # fastcgi_request_buffering off;
    }
    location ~ ^/owncloud/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri/ =404;
    index index.php;
    }
    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* \.(?:css|js)$ {
    try_files $uri /owncloud/index.php$uri$is_args$args;
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
    # Before enabling Strict-Transport-Security headers please read into this topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    # Optional: Don't log access to assets
    access_log off;
    }
    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
    try_files $uri /owncloud/index.php$uri$is_args$args;
    # Optional: Don't log access to other assets
    access_log off;
    }
    }
    }
leoatchina的博客

linux下 各种解压文件使用方法

发表于 2017-03-02

.xz

1
2
解包:tar xvf FileName.tar.xz
打包:tar cvf FileName.tar DirName

.tar

1
2
3
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)

.gz

1
2
3
  解压1:gunzip FileName.gz
  解压2:gzip -d FileName.gz
  压缩:gzip FileName

.tar.gz 和 .tgz

1
2
  解压:tar zxvf FileName.tar.gz
  压缩:tar zcvf FileName.tar.gz DirName

.bz2

1
2
3
  解压1:bzip2 -d FileName.bz2
  解压2:bunzip2 FileName.bz2
  压缩: bzip2 -z FileName

.tar.bz2

1
2
  解压:tar jxvf FileName.tar.bz2 或tar --bzip xvf FileName.tar.bz2
  压缩:tar jcvf FileName.tar.bz2 DirName

.bz

1
2
3
  解压1:bzip2 -d FileName.bz
  解压2:bunzip2 FileName.bz
  压缩:未知

.tar.bz

1
2
解压:tar jxvf FileName.tar.bz
压缩:未知

.Z

1
2
 解压:uncompress FileName.Z
 压缩:compress FileName

.tar.Z

1
2
  解压:tar Zxvf FileName.tar.Z
  压缩:tar Zcvf FileName.tar.Z DirName

.zip

1
2
3
  解压:unzip FileName.zip
  压缩:zip FileName.zip DirName
  压缩一个目录使用 -r 参数,-r 递归。例: $ zip -r FileName.zip DirName

.rar

1
2
3
4
5
6
  解压:rar x FileName.rar
  压缩:rar a FileName.rar DirName
  
  rar请到:http://www.rarsoft.com/download.htm 下载!
  解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp rar_static /usr/bin/rar

.lha

1
2
3
4
5
6
  解压:lha -e FileName.lha
  压缩:lha -a FileName.lha FileName
  
  lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
  >解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp lha /usr/bin/

  .rpm

1
  解包:rpm2cpio FileName.rpm | cpio -div

  .deb

1
  解包:ar p FileName.deb data.tar.gz | tar zxf -

  .tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea

1
2
3
4
5
6
7
  解压:sEx x FileName.*
  压缩:sEx a FileName.* FileName
  
  sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
  sEx请到: http://sourceforge.net/projects/sex下载!
  解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp sEx /usr/bin/

Linux下常见文件解压方法及命令

  1. 以.a为扩展名的文件:
    1
    tar xv file.a
  1. 以.z为扩展名的文件:

    1
    uncompress file.Z
  2. 以.gz为扩展名的文件:

    1
    gunzip file.gz
  3. 以.bz2为扩展名的文件:

    1
    bunzip2 file.bz2
  4. 以.tar.Z为扩展名的文件:

    1
    2
    tar xvZf file.tar.Z
    或 compress -dc file.tar.Z | tar xvf
  5. 以.tar.gz/.tgz为扩展名的文件:

    1
    2
    tar xvzf file.tar.gz
    或 gzip -dc file.tar.gz | tar xvf -
  6. 以.tar.bz2为扩展名的文件:

    1
    2
    tar xvIf file.tar.bz2
    或 bzip2 -dc file.tar.bz2 | xvf -

8.以.cpio.gz/.cgz为扩展名的文件:

1
gzip -dc file.cgz | cpio -div

9.以.cpio/cpio为扩展名的文件:

1
2
cpio -div file.cpio
或cpio -divc file.cpio

10.以.rpm为扩展名的文件安装:

1
rpm -i file.rpm

11.以.rpm为扩展名的文件解压缩:

1
rpm2cpio file.rpm | cpio -div

12.以.deb为扩展名的文件安装:

1
dpkg -i file.deb

13.以.deb为扩展名的文件解压缩:

1
2
dpkg-deb -fsys-tarfile file.deb | tar xvf - ar p
file.deb data.tar.gz | tar xvzf -

14.以.zip为扩展名的文件:

1
unzip file.zip

12
leoatchina

leoatchina

20 日志
3 分类
34 标签
RSS
Github jianshu Zhihu 生信技能树
© 2017 leoatchina
由 Hexo 强力驱动
主题 - NexT.Pisces