JB家的IDE在Linux下无法保存FTP/数据库的密码的解决方案

前言

事情的缘由是这样的——某天我开开心心的打开computer想要码一会砖,然后万恶的Phpstorm一直在询问我sftp的登录用户名和密码。即便我输入的时候选中了记住密码,在程序重启之后这货又会再次询问。之后发现Datagrip也犯了一样的毛病,一直询问我数据库登录信息……

这里必须要吐槽一下JB家IDE的脑残设计——明知道是缺少依赖软件包,为啥就不能直接在前端抛一个错误呢?搞得我还得一点一点的翻程序日志,我太难了=_=…

错误原因

错误原因很简单,就是前面说的:缺少依赖包。具体缺少的是一个叫做gnome-keyring的包,这个包是用来保存各种密码的。

解决方案

安装之。以下列出常见的三个系列发行版下的安装方式,其他发行版的同学使用各自的包管理器直接安装就行,这个包通常都是集成在官方源里的。

Ubuntu/Debian

sudo apt install gnome-keyring

Fedora/CentOS

sudo yum install gnome-keyring

Arch/Manjaro

sudo pacman -S gnome-keyring

整理下我的VIM配置文件

以下是我个人使用的VIM配置文件内容,记录在这里,方便日后查阅。

"打开语法高亮
syntax on
set t_Co=256
"打开文件类型检测功能
filetype on
"不同文件类型采用不同缩进
filetype indent on
"允许使用插件
filetype plugin on
filetype plugin indent on
"关闭vi模式
set nocp
"与windows共享剪贴板
set clipboard+=unnamed
"取消VI兼容,VI键盘模式不易用
set nocompatible
"显示行号, 或set number
set nu
"历史命令保存行数
set history=100
"当文件被外部改变时自动读取
set autoread
"取消自动备份及产生swp文件
set nobackup
set nowb
set noswapfile
"允许使用鼠标点击定位
set mouse=a
"允许区域选择
set selection=exclusive
set selectmode=mouse,key
"高亮光标所在行
set cursorline
"取消光标闪烁
set novisualbell
"总是显示状态行
set laststatus=2
"状态栏显示当前执行的命令
set showcmd
"标尺功能,显示当前光标所在行列号
set ruler
"粘贴时保持格式
set paste
"高亮显示匹配的括号
set showmatch
"在搜索的时候忽略大小写
set ignorecase
"高亮被搜索的句子
set hlsearch
"在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
"继承前一行的缩进方式,特别适用于多行注释
set autoindent
"为C程序提供自动缩进
set smartindent
"使用C样式的缩进
set cindent
"制表符为4
set tabstop=4
set expandtab
"%retab!
"统一缩进为4
set softtabstop=4
set shiftwidth=4
"允许使用退格键,或set backspace=2
set backspace=eol,start,indent
set whichwrap+=<,>,h,l
"取消换行
set nowrap
"启动的时候不显示那个援助索马里儿童的提示
set shortmess=atI
"在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
"光标移动到buffer的顶部和底部时保持3行距离, 或set so=3
set scrolloff=3
"设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
"设定字体
set guifont=Courier_New:h11:cANSI
set guifontwide=新宋体:h11:cGB2312
"设定编码
set enc=utf-8
set fileencodings=ucs-bom,utf-8,chinese
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"自动补全
filetype plugin indent on
set completeopt=longest,menu
"自动补全命令时候使用菜单式匹配列表
set wildmenu
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType java set omnifunc=javacomplete#Complet

CentOS7安装完后更改字符界面大小(调屏幕分辨率)

前言

使用虚拟机安装完CentOS7之后,那个超级巨大的字符界面分辨率已经把VMware虚拟机的窗口撑得屏幕都装不下了,严重影响我对系统的配置。

解决方法

在百度上看了很多方法,找到比较靠谱的一种——修改GRUB引导的配置文件。这样,下次重启的时候,分辨率就变小啦。
以下是我更改分辨率后的效果(比CentOS6的字符界面还是大了许多)
CentOS7字符界面更改后的大小.PNG

步骤

1、使用文本编辑器打开/etc/grub2.cfg文件,这文件就是GRUB的配置文件。

[root@localhost ~]# vim /etc/grub2.cfg

2、在配置文件中搜索关键字linux16 /vmlinuz

可以找到类似如下内容(其中vmlinuz-3.10.0-123.el7.x86_64为你当前所用的系统内核的版本号,若搜索到多个内核,则要确定你的系统当前所使用的是哪个内核):

 linux16 /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=7b8ab34a-2d48-41d0-a20f-63356da5d6f6 ro rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=us rhgb quiet LANG=zh_CN.UTF-8

3、编辑配置文件

讲光标定位到这一行末尾,加一个空格之后填上vga=32A,保存并退出。
如图所示
.jpg

4、重启系统

搞定。

BIND为任意长掩码的网段做反向解析

前言

当初做BIND实验的时候在网上搜到的资料全部是以24位掩码来做反向解析实验的,搞得我一直以为BIND反向解析时只能使用24位掩码。然而,事实上BIND支持任意长度掩码的网段的反向解析。

本文将以16位掩码为例子,演示配置过程。

实验目的

使BIND可以正确为192.168.0.0/16网段做反向解析,并正确解析出192.168.10.254这个IP地址对应的域“www.ibadboy.net”。

配置方法

1、创建16位掩码的反向解析区域

2018-06-21 09-48-19屏幕截图.png

2、编辑反向解析数据库文件

注意,这里的254.10是10.254的倒写!!!这里是重点!必须倒写!
2018-06-21 09-47-09屏幕截图.png

3、验证结果

如下图,已经按照实验预期通过192.168.10.254解析出了www.ibadboy.net。
2018-06-21 09-48-44屏幕截图.png

Linux下VMware虚拟机报Could not open /dev/vmmon: No such file or directory. Please make sure that the kernel module `vmmon’ is loaded.错误的解决方法

问题描述

Linux下的VMware虚拟机在启动时报Could not open /dev/vmmon: No such file or directory.
Please make sure that the kernel module `vmmon’ is loaded.错误。

解决办法

重新编译模块。

$sudo vmware-modconfig --console --install-all

再次运行即可。

Linux下VMware虚拟机启动时报Kernel headers for version 4.x-xxxx were not found. If you installed them[…]的错误的解决方法

问题表现

在Linux下安装完VMware虚拟机后启动虚拟机报:Kernel headers for version 4.x-xxxx were not found. If you installed them[…],具体报错如下图所示。
2018-02-20 08-50-33屏幕截图.png

解决方法

安装系统内核对应版本的linux-headers
例如,我的系统的内核版本是4.14.19,操作系统是Archlinux,就执行如下命令来安装。

$ sudo pacman -S linux-headers

之后再根据命令提示选择与内核版本对应的linux-headers
Ubuntu和Fedora用户则使用各自的包管理工具安装正确的linux-headers版本

安装后再次启动VMware会看到如下提示。
2018-02-20 16-50-27屏幕截图.png
点击install并按要求输入管理员密码即可。

Fcitx输入法第二个候选词显示为…的解决方法

问题表现

Fcitx输入法第二个候选词显示为…,因为在输入状态下给输入法截屏不太方便,所以这里就不放图啦。

产生的原因

这是因为Fcitx启用了“云拼音”导致的,“云拼音”本该是一个非常方便的一个功能,但Fcitx的“云拼音”默认使用的是谷歌的服务,由于众所周知的原因,所以在国内是使用不了的。

解决方法

打开Fcitx的配置窗口,选择“附加组件”,找到并选中“云拼音”
2018-02-09 22-18-22屏幕截图.png
点击“配置”,找到“Cloud Pinyin Source”(云拼音源)选项,将其的值改为“Baidu”,默认是“Google”。
2018-02-09 22-20-19屏幕截图.png
修改后点击“确定”并关闭FCitx的配置窗口即可。

minicom报Device /dev/ttyS1 lock failed: Operation not permitted.的解决方法

问题表现

启动minicom时报如下错误:

Device /dev/ttyS1 lock failed: Operation not permitted.

问题产生的原因

这是因为minicom程序没有被正确关闭,导致串口锁未被解开,解决办法自然是终止仍在进行的minicom进程。

解决方法

使用ps命令配合管道命令来查看minicom的进程号。
2018-02-02 09-32-25屏幕截图.png
如上图,进程ID是20209,使用kill命令杀死之。

$ sudo kill -9 29209

推荐一个桌面Linux发行版-Linux Mint

对于学习计算机的同学来讲,装一个Linux来作为日常使用的操作系统是再好不过的事了。但Linux下的发行版本众多,如何选择一个适合自己的发行版就成了一门学问。
这里我个人推荐下Linux Mint,这个发行版基本做到了“开箱即用”,完全不需要像Fedora那样折腾,又不会时不时出现Ubuntu下恼人的各种系统崩溃,其易用性仅次于deepin而又不似deepin那样BUG无数。
同时,Linux Mint对笔记本等高分辨率的屏幕支持比较好,这也是我选择这一发行版的重要原因。

Linux Mint除了集成了大量实用的工具外还自主开发了一些很好用的东西,例如:
一键清理软件包卸载后的残留配置。
2018-02-01 11-45-54屏幕截图.png
第一次启动系统时弹出来的“欢迎界面”。
2018-02-01 11-47-46屏幕截图.png
以及算不上美观,也没有什么帅炸了的特效,但足够方便好用的Cinnamon桌面环境~
2018-02-01 12-01-16屏幕截图.png

简而言之,Linux Mint是我接触Linux以来最满意的一个发行版,我对她的评价是:真正的易用、实用。

2018年3月14日补充:

Linux Mint的软件仓库中的软件包版本简直是上古时代的。。。

Ubuntu安装GCC7.2

$sudo add-apt-repository ppa:ubuntu-toolchain-r/test # 添加ppa源
$sudo apt-get update # 更新软件列表
$sudo apt-get install gcc-7 # 安装GCC7.2

成功安装后使用`gcc-7`命令调用GCC7.2编译器。直接使用`gcc`命令将调用系统原本的GCC编译器。 如果想将默认编译器换成GCC7.2则执行如下命令:

$sudo rm -f /usr/bin/gcc # 删除原本的软连接
$sudo ln /usr/bin/gcc-7 /usr/bin/gcc # 创建指向gcc-7的软连接

如果不想保留旧版本的编译器则执行如下命令:

$sudo apt-get remove gcc-5 && apt-get autoremove # 卸载gcc-5并卸载掉不再需要的依赖包
$sudo ln /usr/bin/gcc-7 /usr/bin/gcc # 因为卸载GCC时会自动删除/usr/bin/gcc链接,所以这里需要再次创建

解决Win10中Linux子系统的控制台字体修改后重启控制台复原的问题

前言

听说Win10内置了Linux子系统,这可把我高兴坏了————再也不用有事没事挂着个虚拟机了!
怀着激动的心情在我的电脑上配置好这项功能之后,却发现Windows控制台的那令人看着头皮发麻的恶心字体真是刺的我眼睛疼,毫无Ubuntu原生桌面环境下Shell终端字体的美感。

失败的尝试

emmm…改一个字体吧,虽然我不喜欢折腾,但默认的新宋体实在是超出了我的忍耐极限。

修改Win10子系统的控制台字体

but,改完字体后我重启了下控制台,为什么又回到了令人生厌的新宋体?一脸懵逼的我反反复复改了三遍。

比较完美的解决方法

不得已只好求助于度娘,找到如下解决办法:
安装Microsoft YaHei Mono字体,该字体是微软雅黑和consolas字体的集合(个人感觉很漂亮哦)。

安装后的效果图

Microsoft YaHei Mono字体效果图

下载及安装Microsoft YaHei Mono字体

点我下载Microsoft YaHei Mono字体

下载后解压压缩包,双击字体文件,点击“安装”即可。
Q8ARCCH4@Q`PAW$U8D1V$F1.png

补充

Microsoft YaHei Mono字体的英文字符宽度比consolas字体窄了一个像素,如果看着碍眼可以将字体大小从16改成17。

CentOS 7下配置网卡信息

1、编辑网卡配置文件

CentOS 7的网卡命名规则与CentOS 6中的不一样,下面列出CentOS 7中的网卡命名规则,只要了解即可,不必深究。

  • 规则1:如果Firmware或者BIOS提供的设备索引信息可用就用此命名。比如eno1。否则使用规则2
  • 规则2:如果Firmware或Bios的PCI-E扩展插槽可用就用此命名。比如ens1,否则使用规则3
  • 规则3:如果硬件接口的位置信息可用就用此命名。比如enp2s0
  • 规则4:根据MAC地址命名,比如enx7d3e9f。默认不开启。
  • 规则5:上述均不可用时回归传统命名方式
  • 上面的所有命名规则需要依赖于一个安装包:biosdevname

使用vim文本编辑器打开网卡配置文件,

[root@localhost home]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

CentOS 7中的网卡配置信息的写法和CentOS 6中的也稍有不同,主要体现在:新加的各个选项后面都要加上一个“0”,不知为何~

以下为网卡完整配置信息,新增及修改内容已着重标记(写配置文件的时候请不要把我加的注释也写上去=_=…)。

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static                           //IP获取方式,由原来的dhcp修改为static(手动指定)
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=a7b862e4-5d61-468e-a6ab-31c7ee01d790
DEVICE=enp0s3
ONBOOT=yes                                //开机时是否启用网卡,由原来的no改为yes
--------------------------------------------------------------------------------------------
                                     以下为添加的配置内容
--------------------------------------------------------------------------------------------
IPADDR0=192.168.162.27                    //配置IP地址,注意IPADDR后面有一个0
NETMASK0=255.255.255.0                    //配置子网掩码,注意NETMASK后面有一个0
GATEWAY0=192.168.162.254                  //配置网关地址,注意GATEWAY后面有一个0
DNS1=114.114.114.114                      //配置首选DNS
DNS2=8.8.8.8                              //配置备用DNS

2、重启网络

[root@localhost ~]# service network restart
Restarting network (via systemctl): [ OK ]

3、验证配置

查看网络配置信息参考此篇文章。

https://www.ibadboy.net/archives/2099.html

验证网路是否连通可以尝试ping一下www.baidu.com。

[root@localhost home]# ping -c 4 www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=54 time=19.3 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=54 time=19.4 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=54 time=19.5 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=54 time=19.6 ms
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3033ms
rtt min/avg/max/mdev = 19.396/19.508/19.674/0.107 ms

在局域网下则可以尝试ping一下网关或同网段下的其他计算机,再或者ping自己的本地IP也行。。。

CentOS 7下查看网络配置信息

导语:

本文中介绍在CentOS 7下查看IP、MAC、DNS、网关等常用网络配置信息的方法

查看网卡IP及MAC:

CentOS7中默认不提供ifconfig命令,那么该如何查看网卡信息呢?

可以使用ip addr命令,如下所示:

[root@localhost ~]# ip addr
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN qlen 1
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host
 valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 08:00:27:8d:54:2e brd ff:ff:ff:ff:ff:ff
 inet 192.168.162.27/24 brd 192.168.162.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet6 fe80::26dd:b64f:6c1c:508f/64 scope link
 valid_lft forever preferred_lft forever

其中,lo为本地回环网卡,enp0s3为第一块网卡的名称。

每块网卡区域中,link后面跟的是网卡的MAC地址,inet后面跟的是该网卡的IP v4地址,inet6后面跟的是IP v6地址。

查看DNS:

[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8

其中,每个nameserver关键字后面接的都是DNS地址,排在上方的优先级高。

查看网关:

[root@localhost ~]# ip route
default via 192.168.162.254 dev enp0s3 proto static metric 100
192.168.162.0/24 dev enp0s3 proto kernel scope link src 192.168.162.41 metric 100

default via后面接的就是网关地址,其后的dev后面接的是该网关所属的网卡的名称。