Ubuntu常用配置指南

前言

Ubuntu是我非常喜欢的一款开源操作系统。自从在大学学习安装Ubuntu 8.04后,从此一发不可收拾,喜欢上了这个有着朋友圈图标的Linux发行版。工作多年,几乎都是在Linux/Unix 环境下工作。每次到了一个新环境都会遇到安装新系统的需求,基本上会把工作的电脑换成自己喜欢的Ubuntu系统。写这篇文章是为了记录自己经常会用到的配置。

系统安装

Ubuntu发行版每半年会发布一个新的版本,并且会为了系统取一个名字,大多数以动物的名称为代号。比如最新的18.04 长期支持版本的代号是Beaver,河狸是一种啮齿动物。你可以从官网下载到最新的镜像。建议安装选择Long Term Support的版本,比如18.04,有5年的支持周期,足够满足你的日常工作需求。下面是我的日常开发常用的配置。

常用配置

SSH

工作中经常会有登录跳板机的需求。但每次都需要输入密码的话,使用起来,不是很方便。我们需要想要一些办法来自动化这个过程。我们期望的是,只需要输入一次密码,后续直接登录,不用每次都需要输入密码。

下面通过ssh的config配置,自定义主机登录实现这个操作。

cat ~/.ssh/config
host m
    User matt
    Hostname ssh.domain.com
    Port 22
    ControlMaster auto
    ControlPath /tmp/%r@%h:%p
    ServerAliveInterval 30
    ServerAliveCountMax 60

这段配置通过ControlMaster来开启共享Session,主要应用在复用同一个网络连接的socket,而不需要每次建立新的连接。ControlPath为socket的唯一路径标识,尽量保持每一个主机是唯一的,这里我们是以%r 远程登录用户名+%h 远程主机名+%p 远程主机端口 保持唯一的。

实际应用场景是这样子的:开发或者运维通过跳板机或者堡垒机,作为跳板登录目标机器,执行相关的操作。每次跳板机都是重新输入密码的,并且通常情况下都是不支持ssh key登录的。采用上面方式,只需要第一次登录后,后续新建终端登录跳板机是不需要再次输入密码的。

那么正确的使用方式如下:

  1. 首先打开你的终端,新建2个标签页面
  2. 在第一个标签页面,输入ssh m
  3. 第一次会要求你输入密码,输入正确的密码登录。
  4. 然后在第二个标签页面,直接ssh m,这时候你就不需要输入密码了。
  5. 这样就达到了免输入密码的操作。

Git

设置常用的git配置,当前使用的用户以及常用命令别名等。

#配置用户名和邮箱
git config --global user.name "username"
git config --global user.email "email"

git config --global core.editor "vim"
git config --global core.filemode false
git config --global core.quotepath false
git config --global color.ui true

git config --global gui.spellingdictionary none

#alias 创建命令别名
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.cp cherry-pick
git config --global alias.st status
git config --global alias.br branch
git config --global alias.r rebase
git config --global alias.ri rebase -i
git config --global alias.l '!git --no-pager log --graph --pretty=format:"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit --date=relative'
git config --global alias.lg 'log --graph --pretty=format:"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit --date=relative'

我觉得几个比较重要配置 :

core.editor vim

命令行经常使用的编辑器是vim

core.filemode false

不记录文件的属性变更

core.quotepath false

对中文名的文件或路径不进行转义

color.ui true

对git diff 进行颜色显示

gui.spellingdictionary none

不对提交进行拼写检查,主要用于解决Git GUI的错误提示”Spell checking is unavable”。

另外对一些常用的命令进行别名,这样就可以少输入几个字符了。

Sublime Text

我最喜欢的编辑器是Sublime Text 3,下面是我的日常工作设置:

{
  "default_line_ending": "unix",
  "draw_white_space": "all",
  "ensure_newline_at_eof_on_save": true,
  "font_face": "Ubuntu Mono",
  "font_size": 14,
  "rulers":[80],
  "show_encoding": true,
  "show_line_endings": true,
  "translate_tabs_to_spaces": true,
  "trim_trailing_white_space_on_save": true,
  "word_wrap": true
}

编辑器是日常工作用得最多的工具。

default_line_ending unix

设置默认为unix的回车符LF only。

draw_white_space all

显示所有不可见的字符

ensure_newline_at_eof_on_save true

保证每一个文件最后一行有一个空行

show_encoding true

显示文件的编码

translate_tabs_to_spaces true

转换tab键为空格

trim_trailing_white_space_on_save true

保存时删除行尾的空格

word_wrap true

自动换行

常用软件安装

#!/bin/bash
# Program:
#   从0开始,一键安装常用开发软件
# History:
# 2019-05-27 geekwho First release.
sudo apt install build-essential

sudo apt install curl zsh

sudo apt install vim

sudo apt install git
sudo apt install gitk
sudo apt install git-gui
sudo apt install git-svn

# svn
sudo apt install subversion

# php
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php
sudo apt install php-xml
sudo apt install php-mbstring
sudo apt install php-xdebug
sudo apt install php-curl

# php-cs-fixer
curl -L https://cs.symfony.com/download/php-cs-fixer-v2.phar -o php-cs-fixer
sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

# composer
wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

sudo apt install gnome-tweak-tool

#typora
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update
sudo apt-get install typora

#sublime text
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt install sublime-text

总结

每次配置新的开发环境,通常是耗时较长的步骤。为此,我将日常开发的常用配置建立了一个单独版本库进行记录,避免自己下一次用到时花费更多时间去查找相关的信息。另外一方面,我把常用的软件安装SHELL命令,优化为一键安装的脚本,方便下次直接运行。这样,下次如果初始化环境的话,会帮助我节约部分时间,不过,有可能这个脚本很久都不会用到了,但提前做些准备总是好的。所谓,万事都是可以提前准备的。

Ubuntu常用配置指南

我是如何错过财富自由的

前言

在经过多次失败了,我开始对自己投资策略进行反思,竟然发现财富自由可能离我这么近。然而,最终自己竟然没有获得相应的财富,其根本原因可能是我的认知不够。查理芒格说,让自己配得上想要的东西。想要获得财富,那么让你的能力配得上它。曾经的我,由于认知不够,错过了很多机会。我在这篇文章记录下来,时刻提醒自己,升级认知可能是投资里最需要刻意练习的技能。

错过比特币

大约是在2013年的时候,我听说了比特币。当时我去下载一个钱包下来,进行一番挖矿。然后,发现这东西有什么用。甚至在一个网站上,有人免费的派发比特币。我去看了看,没有领到比特币,最后,我就删除了这个钱包。现在想起来,突然这么后怕,我竟然离财富自由这么近。如果我认真的研究了比特币,下载节点去同步,去阅读了相关源代码,说不定,今天写文章的人,就不是我了。

当然,说了很多,这些都是如果,你的认知是无法获得你配不上的财富。连比特币的白皮书都不知道,甚至都没有去阅读一遍,怎么会有相应的认知?对自己持有的标的,都没有理解清楚,如何心安理得地投资?没有对人性的理解,对投资的本质理解,如何进行认知的变现?

错过柚子

我第一次了解到柚子,完全是意外,我的一位同事通过数字货币赚取了人生第一桶财富。从他身上,我知道了柚子。我曾经打算买10000个柚子,但我在第一次够买EOS时,发现这个事情非常复杂。因为国家已经不允许交易所买卖了。所以你必须通过C2C的方式来做。当第一次柚子,跌到5块的时候,那是2017年9月份,我打算买1000个,但C2C又太麻烦了。我甚至还想到柚子跌到3块。后来确实跌到了3块,但我却没有去关注了。后来11月份左右,主网开始上线了,柚子一路涨到120元。

从这件事情后,对我的影响很大,让我明白人生的成功,不仅仅只有一种方法,应该是每个人的答案都是不同的。投资,是你必须要学会的一件事。特别是投资自己,才是最划算的。认知和践行,可能是一对孪生兄弟,两者缺一不可。有了足够的认知,却因为没有行动,也是无法获得变现的。

这让我开始对践行的思考,有了新的认识。

  1. 如何践行?
  2. 如何持续的践行?
  3. 如何深刻对自己进行反思总结?
  4. 如何持续的进行反思总结,并持续改进,促进良性循环?

还会错过区块链的什么

如果不能有效对自身的认知进行反思总结,还可能会错过亲自参与的机会吧。毕竟这是一个伟大的实验,竟然进行10+年,还没有失败。那么如何从这一次趋势获得最大的收益?这个问题答案,可能没有经历过,很难回答。那么我们尝试从逆向思维去解释,如何再一次错过区块链?我觉得有几个点:

  1. 自身认知不够
  2. 对行业没有关注
  3. 没有自身的影响力
  4. 无法理解技术的发展

大家都认为区块链,应该是下一次互联网浪潮的引爆点。区块链连接了所有的人,把数据的所有权还给本人,提升了价值传递的效率。那么知道这个趋势,你应该做什么才是最划算的?

  1. 提升自身的认知
  2. 等待机会
  3. 一击必中

总结

想到了,只是投资的万里长征的第一步,做到了,才是真正的践行。所谓的大师终究是大师,想到了且做到了。很多观点都是经历过时间的洗礼,依然闪闪发光。我等普通人,也只有仰望的权利。

如果你想获得你要的东西,那就让自己配得上它。

我是如何错过财富自由的

作为程序员,我是这样学习写作

​ 2018年1月2号,在这一天,我加入了一个神秘的组织–007不出局。这是一群梦想着,持续写作7年后,就一起去南极的一群人。正好这段时间,自己也在思考人生下一个阶段的计划,发现写作也许是一个靠谱的选择。

007不出局

​ 我是从娜姐的公众号,娜你说说吧加入到007不出局的。当初从订阅笑来老师的财富自由之路开始,发现有一个人留言特别勤奋,竟然从专栏文章的每一篇文章的留言完成了对自身成长的转变,最终得到了笑来的认可。加入007不出局后,其实是为了找到和自己一样想要改变的一群人,一起持续写作,也是为了锻炼自己的写作能力。

​ 2018年1月7号,我发表了加入007不出局后的第一篇文章。文章写得很简单,标题就是不出局就出彩。加入的初心也是想要寻找和我一样,想要成长,学习写作的战友,甚至slogan也让我心动:一个人走的快,一群人走得远。现在已经过去一年,回过头来,看看自己曾经走过的路,当初为什么要出发?

​ 这一年,我大约写了48篇文章,涉及到生活,投资,技术,学习等方面。这些文章几乎记录我的2018这一年经历全部的思考。现在回头看看,觉得非常有意义。写作记录了我的思考经历,一步一个脚印,独立思考的结果,记录着我经历的成长。这些都是宝贵的经验,不然,我们跟一只咸鱼有什么区别呢?

为什么要学习写作

其实写作这件事,我很早就开始做了。最开始在大学里看了刘未鹏的博客,思维改变生活,甚至我还亲自写了一篇文章自我剖析去说明写作的重要性。在文章中也列举了很多写作的好处:

  1. 书写是为了更好的思考。
  2. 教是最好的学。
  3. 书写是为了更好的思考,激励自己去持续的学习和思考,学会持之以恒的做一件事。

后来,看了笑来的财富自由之路,专栏的文章也从很多个角度列举了写作的好处:

  1. 写作是把自己的同一段时间重复销售很多很多次的极少数选择之一,也是相对来看最容易成为普通人起步的台阶之一。
  2. 持续写作很可能是锻炼学习能力、锻炼思考能力、锻炼分析能力、锻炼沟通能力的最直接、最低成本的方式。
  3. 想要获得财富自由的你,必须学会写作。

与所有的失败经历一样,写作这件事情,并没有持续做下去。好消息,我竟然也持续写作一年多了。总体来说,还算一个不错的开始。在这一年持续写作里,我总结出一些方法论来帮助自己更好的写作。

怎么学习写作

我的博客里,记录了从大学到现在工作整整10年的经历。从刚开始写,显得非常笨拙,基本上是想到哪里就写到哪里。到现在为止,我基本确认了适合自己的写作基本方法论。大致会分为以下3类。

3W写作

我把这个写作的方法论称之为3W写作。

那么什么是3W写作呢?

通常情况下,我们要把一件事讲清楚有3个要点:是什么?为什么?怎么用/做?基本就能把这件事情讲清楚了。那么写作也是一样的。确认写作的主题后,就可以从这3个要点展开来讲。

比如我写的必知必会系列。我会从是什么?讲述文章中的技术概念。然后再穿插一些为什么这样选择的原因。最后添加自己在这个技术实践的经历,也就是怎么做。

当初为什么要写这个必知必会呢?在中文的领域,像必知必会系列的知识,非常少。基本上,你只有去阅读相关的中文文档,才有可能找到。碰巧有一部分有人写了,但是大部分的文章,在我看来,大多数只是讲怎么做。但没有讲是什么,为什么这样做的原因。这样的话,我自己只好亲自动手写了。

写的这些技术知识都是我过去这些年的积累,所以写起来也很快。最终的目的是,一方面对相关的知识积累进行了复习,另外一方面方便自己查漏补缺,加强记忆。

阅读笔记

很多时候,我们都听过了很多大道理,却依然感叹没有过好这一生。经过反复思考后,我得出一个结论,其实我们也看过读过很多的书,也依然没有过好这一生。最终的根本原因,可能就是我们真的只是看看而已,并没有做阅读笔记,也没有去实践其中的道理。所以过不好这一生,也是情有可原的。

因为从阅读开始到现在,你根本就没有按照书中的道理去实践过啊。所以,我会总结自己看过,阅读过的文章,然后将自己的阅读笔记写出来。

比如我在看财富自由之路时,写了很多文章专栏阅读笔记。说实话,阅读笔记真的很难写。因为很多观点都不是自己的,所以最好是结合自己的实际经验来思考,输出自己的结论。比如我的阅读笔记:

  1. 你真的理解什么是财富自由吗?
  2. 出售时间之前你要牢记的三条铁律-读后感
  3. 我们重新理解了注意力-读后感

实践经历

这类文章的套路都是一样的。就是写你怎么践行的。可以写自己投资是如何亏钱的,也可以写当初立了多少无效的flag,甚至还可以写自己如何失败的。但文章最后一定要做总结,这样的话,对自己的践行进行反思。虽然我不知道如何才能成功,但起码我总结出如何才能失败的方法。比如我写了很多文章:

  1. 如何有效的践行ARTS
  2. 如何立一个无效的flag
  3. 作为PHP程序员,我是这样学习Go语言的

总结

在这篇文章里,我总结了3个写作的方法论。这些方法论不一定适合每个人,但也值得你去尝试。写作其实就是把一个概念或者方法论讲清楚的能力。刚开始,写对别人有用的东西,可能会比较难。但随着思考的深入,你一定可以收获对自己有用的部分。写作的核心在于思考与行动。你可以记录自己成长,学习,犯错,反思的经历。但你一定要有输入。没有输入的话,就一定没有输出。输入可以是你看到文章,自己的思考,工作经历,自己曾经犯的错误等等,只有这些宝贵的经历,经过你自己的思考,反思后得出的结论,才是最终的财富。

最后,借笑来的专栏文章几句话自勉:

写吧,只要真写就只能真思考。不要怕现在的自己的笨拙,重要的是未来的你一定不差,因为曾经的你,不怕自己差,不管多差也要硬着头皮实践,久而久之,你就撞见了未来那个一点都不差的你。但行好事,莫问前程。