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後面接的是該閘道器所屬的網絡卡的名稱。