Linux Dotfiles究极管理

今天终于遇到了dotfiles这个概念,并且顺利找到了管理dotfiles的方案,下面将关键步骤贴下,或可见原文 创建dotfiles repo 其基本原理是创建一个bare仓库,然后通过每次指定repo来添加在不同位置的dotfiles以及其它一些git技巧来达到版本控制的目的,当有多台主机有不同配置或者要进行配置迁移时,都十分有用。下面是创建bare repo以及添加alias的命令: git init –bare $HOME/.cfg alias config=’/usr/bin/git –git-dir=$HOME/.cfg/ –work-tree=$HOME’ config config –local status.showUntrackedFiles no echo “alias config=’/usr/bin/git –git-dir=$HOME/.cfg/ –work-tree=$HOME'” >> $HOME/.bashrc 完成上述步骤后便可以通过下面使用config add xx这种方式来进行文件版本控制 config status config add .vimrc config commit -m “Add vimrc” config add .bashrc config commit -m “Add bashrc” config push 恢复dotfiles repo 下面介绍从dotfiles repo中将dotfiels恢复到新的PC中。注意,下面方法要求删除原有dotfiles,可以先备份再进行操作,原文提供了一种批量操作的方法,但这里就不给出了。 git clone –bare […]

Config of my Oh-my-zsh

Recommending reading: https://gist.github.com/kevin-smets/8568070. It should clear in the link, and below is information to remind myself. First install zsh, then Oh-my-zsh, then install necessary plugin: zsh-autosuggestions, zsh-syntax-highlighting, theme powerlevel9k. then clone the custom .zshrc file of yourself. NOTICE: Try to install plugin using oh-my-zsh! Others related to Zsh Change default shell to zsh General solution […]

singularity镜像创建与使用

首先贴上官方文档,Singularity是一个类似与docker的软体,它允许你创建容器并复制到另一主机中利用宿主机的资源运行,这里只简单列出一些常用的命令。 安装 Ubuntu: sudo apt-get update && sudo apt-get install python dh-autoreconf build-essential Centos: sudo yum update && sudo yum groupinstall ‘Development Tools’ # clone可以选择release版本进行安装 $ git clone https://github.com/singularityware/singularity.git $ cd singularity $ ./autogen.sh $ ./configure –prefix=/usr/local –sysconfdir=/etc $ make $ sudo make install 创建容器 singularity build containerName.simg Singularity 其中,Singularity是对应的build脚本。 进入容器里面 singularity shell -n containerName.simg […]

使用scp与服务器传送文件

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。来源 命令格式 scp [参数] [原路径] [目标路径] 常用命令参数 -r 递归复制整个目录 -P port 指定传输端口 常用命令 scp local_file remote_username@remote_ip:remote_folder scp remote_username@remote_ip:remote_folder local_folder 若为文件夹则使用-r参数,另外可在目标路径指定传送后的文件名。 更多请见原文

[C++] C++11中函数声明的方式

C++11中有两种声明函数的方式,一种如同C里面继承过来的 return-type identifier ( argument-declarations… ) 另外一种是C++11中新定义的,能够配合decltype配合使用的 auto identifier ( argument-declarations… ) -> return_type 两种定义效果相同,而后者能够方便地使用decltype来推断返回类型,这在泛型编程中十分管用,详见stackoverflow 另外,在C++14中,在函数被调用前能够明确给出定义,并且所有return语句都deduce到相同返回类型,函数还允许这样的简化声明 auto identifier ( argument-declarations… )

[C++] C++11 decltype关键字

在C++11中,decltype和auto都是关于类型的关键字。auto能够在编译时自动选择变量类型(当然还有其他很多用法,这里主要记录decltype),而decltype则能够推测出变量的类型,这与typeid关键字有点相似,但两者的机制完全不同。 typeid typeid使用的是RTTI(Run-Time Type Identification)机制,由于它是在运行时进行类型确认,会影响运行效率。 decltype decltype关键字则是在编译时便确定变量类型,它有许多有用的用法,例如使用已有变量定义新变量的类型、重用匿名类型、泛型编程中结合auto追踪函数的返回值类型(例子如下)。 template <typename _Tx, typename _Ty> auto multiply(_Tx x, _Ty y)->decltype(_Tx*_Ty) { return x*y; } 详细参考原博客

[C++] emplace_back and push_back

在向容器,如std::vector中添加元素时,常常使用push_back(var),这个时候,往往元素要经过拷贝(copy)或者移动(move)才能放进容器中。 而emplace_back()方法则能够就地构造元素(参数列表与元素某个构造函数的参数列表相同,该方法直接将构造的对象放到容器中,不用经过拷贝或者移动),效率更高。 References https://stackoverflow.com/questions/4303513/push-back-vs-emplace-back https://blog.csdn.net/xiaolewennofollow/article/details/52559364