0%

byobuを使うと、一つのターミナルで複数のプロンプトが使えます。

実行と同時にリソースの消費具合を確認したいから、右側にnmon、左側でvim、なんて事が出来る様になります。

内部ではtmux(ターミナルマルチプレクサー)又はscreenが動いていて、
byobuはtmuxをショートカットベースで使いやすくしてくれます。

byobu

環境

  • Ubuntu 18.04

インストール

1
2
$ apt update
$ apt install byobu -y

使い方

byobuを起動する

1
$ byobu

以降の全てのショートカットはbyobuを起動した状態で行います。

画面を垂直に分割する

トップの画像はターミナルを垂直に分割した物です。

Ctrl-F2

垂直に分割

画面を水平に分割する

Shift-F2

水平に分割

分割された他のプロンプトにフォーカスを移動

操作するプロンプトを変更したい時に

  • 次へ
    • Ctrl-F4
  • 前へ
    • Ctrl-F3

フォーカス移動前
フォーカス移動後

分割されたプロンプトの移動

  • 次へ
    • Shift-F4
  • 前へ
    • Shift-F3

移動前
移動後

新しいウィンドウを作成

F2

新規ウィンドウ

他のウィンドウに移動

  • 次へ
    • F4
  • 前へ
    • F3

ウィンドウのフォーカス移動
ウィンドウのフォーカス移動

分割されたプロンプト(ウィンドウ)を終了

終了したいプロンプトにフォーカスし、exitします。

1
$ exit

終了
終了後

画面の共有

他の人と同じ所にSSHした状態でbyobuを起動すると、同じ画面(セッション)を共有できます。

気になる方は試してみてください。

環境

  • LinuxMint19 Mate

手順

anyenvをインストール

anyenvをclone

1
$ git clone https://github.com/riywo/anyenv ~/.anyenv

パスを通す

ターミナル起動時にanyenvのパスを通す設定を書く

1
2
3
4
5
6
7
$ echo 'PATH=${PATH}:${HOME}/.anyenv/bin' >> ~/.bashrc
$ echo 'eval "$(anyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

anyenv用のインストールフォルダを作成する
一度だけ実行する必要がある
$ anyenv install --init

インストール出来るenvを確認

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ anyenv install -l
Renv
crenv
denv
erlenv
exenv
goenv
hsenv
jenv
luaenv
nodenv
phpenv
plenv
pyenv
rbenv
sbtenv
scalaenv
swiftenv
tfenv

好きなenvをインストール

今回はrbenvをインストールします

1
2
3
$ anyenv install rbenv
インストール後、シェルを再起動させる必要がある様なので以下実行
$ exec $SHELL -l

rbenvが使える事を確認

1
$ rbenv --version

anyenvでインストールしたenvの確認

1
2
$ anyenv local -l
rbenv: no local version configured for this directory

envをアンインストール

1
2
3
4
$ anyenv uninstall rbenv
rbenvが使えなくなる
$ rbenv
anyenv: env `rbenv' not installed

環境

  • LinuxMint19 Mate

手順

nodenvをインストール

1
$ git clone https://github.com/nodenv/nodenv.git ~/.nodenv

nodenvのパスを通す

ターミナル起動時にパスを通す様に設定

1
$ echo 'PATH=${PATH}:${HOME}/.nodenv/bin' >> ~/.bashrc

initする

ターミナル起動時にinitする様に設定

1
echo 'eval "$(nodenv init -)"'

nodenvコマンドは使えるが、nodenv installコマンドはまだ使えない

1
$ nodenv install 12.14.1

nodenvのinstallコマンドをインストール

installコマンドやuninstallコマンドを使うためにはnode-buildが必要らしい

1
2
$ git clone https://github.com/nodenv/node-build.git /usr/local/src/
$ echo 'sudo PREFIX=/usr/local /usr/local/src/install.sh' >> ~/.bashrc

nodenvでnodeをインストール

ターミナルを起動し直し、以下コマンドを実行

1
2
$ nodenv install 12.14.1
$ nodenv global 12.14.1

nodeとnpmのバージョンを確認する

1
2
3
4
$ node -v
v12.14.1
$ npm -v
6.13.4

vim-lspをインストールする所まで
この手順では、python3.7.2をインストールするためにpyenvを入れています

環境

  • Ubuntu18.04

手順

Pythonとpipをインストールする

~/.bashrcに以下を追記する

1
2
3
4
5
6
7
8
9
10
11
## pyenv init and install
PYENV_ROOT="${HOME}/.pyenv/bin"
PATH="${PATH}:${PYENV_ROOT}"
pyenv --version > /dev/null || {
git clone https://github.com/pyenv/pyenv ${HOME}/.pyenv
sudo ${HOME}/.pyenv/plugins/python-build/install.sh
pyenv install 3.7.2
pyenv rehash
pyenv global 3.7.2
}
eval "$(pyenv init -)"

~/.bashrcを読み込み直す

1
$ source ~/.bashrc

Neovimをインストールする

~/.bashrcに以下を追記する

1
2
3
4
5
6
7
8
9
10
11
## neovim init and install
XDG_CONFIG_HOME="${HOME}/.config"
XDG_CACHE_HOME="${HOME}/.cache"
nvim --version > /dev/null || {
sudo add-apt-repository ppa:neovim-ppa/stable -y
sudo apt-get update
sudo apt-get install neovim -y
mkdir -p ${XDG_CONFIG_HOME}/nvim
touch ${XDG_CONFIG_HOME}/nvim/init.vim
}
pip install neovim

~/.bashrcを読み込みなおす

1
$ source ~/.bashrc

vim-lspをインストールする

~/.config/nvim/init.vimを以下の内容にする

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if has('vim_starting')
set rtp+=~/.vim/plugged/vim-plug
if !isdirectory(expand('~/.vim/plugged/vim-plug'))
echo 'install vim-plug...'
call system('mkdir -p ~/.vim/plugged/vim-plug')
call system('git clone https://github.com/junegunn/vim-plug.git ~/.vim/plugged/vim-plug/autoload')
end
endif

call plug#begin('~/.vim/plugged')
Plug 'junegunn/vim-plug',{'dir': '~/.vim/plugged/vim-plug/autoload'}
Plug 'prabirshrestha/async.vim'
Plug 'prabirshrestha/vim-lsp'
Plug 'mattn/vim-lsp-settings'
call plug#end()

上記設定ではNeovim起動時にvim-plugが無ければインストール、
その後async.vim,vim-lsp,vim-lsp-settingsをインストールしています。

Neovimを起動

1
$ nvim

コマンド「:PlugInstall」を実行し、上記プラグインをインストールする

その後「:PlugStatus」を実行し、全てOKになっていれば問題なし、qキーでステータス画面を抜ける

nodejsやgolang、pythonのlspをインストールする場合は、
init.vimに設定を追記、必要なモジュールをインストールするなど、それぞれlspに合わせた設定が必要となる

CMSを作りたくて、この動画を見ながら試してみました。

ponzuとは

Goで作られているヘッドレスCMS

ponzu - GitHub

環境

  • Go 1.13.5

使い方

インストール

1
$ go get -u https://github.com/ponzu-cms/ponzu/...

ponzuプロジェクト作成

以下コマンドでGOPATH/src以下にプロジェクトが作成される

1
$ ponzu new github.com/sakkuntyo/ponzu-project

以下cd先にプロジェクトが作られている

1
2
3
$ cd ${GOPATH}/src/github.com/sakkuntyo/ponzu-project
$ ls
CONTRIBUTING.md Dockerfile LICENSE README.md addons cmd content deployment docs examples ponzu-banner.png

この後の操作はこのデイレクトリ内で行う

テンプレコードを作成

1
2
3
4
テンプレートコード作成
ponzu generate content コンテンツ名 コンテンツ内のデータ名:データ型:[入力方法] [コンテンツ内のデータ名:データ型:[入力方法]] ..
$ ponzu generate content author name:string photo:string:file bio:string:richtext
これでテンプレートコード(content/author.go)が作成される

ponzuをビルド

1
2
$ ponzu build
これでponzu-server、及び実行に必要なライブラリ(cmd以下)が配置される

ponzu起動

1
2
3
4
5
6
$ ponzu run
何故かうまくいかないが、もう一度実行すると起動できる
$ ponzu run
Server listening at localhost:8080 for HTTP requests...

Visit '/admin' to get started.

起動中にlocalhost:8080/adminにアクセスする事でCMSのGUIが表示される

CMSで出来ること

記事の追加

左メニューからコンテンツを選び、NEWを選択する事で、記事が書ける

SAVEをすると、内容がsystem.db(BoltDB)に保存される

書いた記事の参照

json形式で記事が参照できる、確認してみる

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Authorをgenerate、記事追加したとして、以下コマンドで確認
$ curl "localhost:8080/api/content?type=Author&id=1"
{
"data": [
{
"bio": "ponzu\u305f\u3081\u3057\u3066\u307f\u305fbio",
"id": 1,
"name": "ponzu\u305f\u3081\u3057\u3066\u307f\u305f",
"photo": "/api/uploads/2020/02/4fd4c0e572a4fed83f1d1dc5e64a2ab8600.jpg",
"slug": "author-77f9980f-db1e-421b-bd3b-ce0879e9d670",
"timestamp": 1580577064000,
"updated": 1580577184147,
"uuid": "77f9980f-db1e-421b-bd3b-ce0879e9d670"
}
]
}

これをブラウザ側でプレビューしてあげたりするとブログっぽくなるのかな

今まで、hexoやexpress-generatorのコマンドラインツールを使用するためには、
npm install -g をしてプロジェクト外にインストールする必要がありました。
npm5.2.0ではnpxが追加され、プロジェクト内にインストールした場合でも使用出来る様になりました。

これからは、プロジェクト内にhexoやexpress-generator等をインストールしておけば使えます。

環境

  • Ubuntu18.04

npxを使わない場合

1
2
3
4
5
6
7
8
expressが見つからないと言われる
$ express express-project

グローバルインストールする
$ npm install -g express-generator

コマンドが使える様になる
$ express express-project

npxを使う場合

1
2
3
4
5
6
7
8
expressが見つからないと言われる
$ express express-project

プロジェクトにインストールする
$ npm install express-generator

npxでプロジェクト内のexpressを実行
$ npx express express-project

basenameの初めて見る使い方を見たのでメモ

環境

  • Ubuntu18.04
    • bash

出来ること

パスで指定されたファイルやフォルダの名前だけを出力する

以下の様にファイルが配置されているとします。

1
2
3
4
5
6
7
8
$ mkdir test
$ cd test
$ mkdir dir1
$ touch dir1/test.sh
$ find
.
./dir1
./dir1/test.sh

ファイル名を出力する

パスは要らない時などに使える。

1
2
$ basename ./dir/test.sh
test.sh

ファイル名の末尾文字を削除し出力する

これで拡張子を消したりできる。

1
2
$ basename ./dir/test.sh .sh
test

Google検索エンジンの検索に出すために、
記事を追加する度にサーチコンソールにURLを登録していました、
sitemap.xmlを登録する事で、都度登録する必要がなくなります。

手順

sitemap.xml生成プラグインをインストール

1
2
3
$ npm install hexo-generator-seo-friendly-sitemap --save
package.jsonをgitに追加します
$ git add package.json

_config.ymlに追記

以下の行をHexoプロジェクト直下の_config.ymlに追記する事で、
hexo generate時にsitemapが作成される様になります。

1
2
sitemap:
path: sitemap.xml

hexo generateをしてみます

1
2
3
4
5
6
7
8
$ hexo generate
INFO Start processing
INFO Files loaded in 614 ms
INFO Generated: post-sitemap.xml
INFO Generated: sitemap.xml
INFO Generated: tag-sitemap.xml
INFO Generated: index.html
INFO 5 files generated in 1.14 s

今回幾つかsitemapが作成された事がわかります。

  • post-sitemap.xml
    • 記事毎のページが記載されたsitemap
  • tag-sitemap.xml
    • タグ毎のページが記載されたsitemap
  • sitemap.xml
    • 内容見てもよくわからない(?)

sitemapをサーチコンソールに登録

sitemapの登録はここから行えます。

登録に失敗する場合は、
_config.ymlに記述しているURL部分が間違っている可能性があります。
このURLはデプロイ後にアクセスするページのURLを指定しておく必要があります。

以下例

1
url: https://sakkuntyo.github.io

go installしてたら「gcc.exe」が無いとビルドできないぞ!
と言われたので、mingw64のバイナリから持ってくる方法を覚えました。

前提

  • Windows10
    • Git

手順

Gitをインストール

Windows向けのGitはここからインストーラを入手できます。

起動し、全て「はい」を選択したとして次の手順に進みます。

MinGW-w64のバイナリをダウンロード

ここの下の方にあるx86_64-win32-sjljを選択しダウンロードします。

このファイルはダウンロードフォルダに置いておいてください。
解凍するために、7zipをインストールします。

7-zipのインストール

ここからダウンロードし、インストールします。

解凍

GitBashを管理者権限で開き、以下コマンドを実行して解凍します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ cd ~/Downloads
前半は7z.exeのパス、xはeXtractのx、最後は7zipファイルのファイル名
$ /c/Program\ Files/7-Zip/7z.exe x x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z
7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive for archives:
1 file, 52785774 bytes (51 MiB)

Extracting archive: x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z
--
Path = x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z
Type = 7z
Physical Size = 52785774
Headers Size = 109370
Method = LZMA2:26 LZMA:20 BCJ2
Solid = +
Blocks = 2

Everything is Ok

Folders: 340
Files: 13669
Size: 527855563
Compressed: 52785774

解凍が終わると、またコマンドが打てる様になるため、mingw64フォルダが作成されている事を確認します。

1
2
$ ls
mingw64 x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z

gccなどをGitのインストールディレクトリにコピー

GitBashを管理者権限で開き、以下のコマンドを実行します。

1
2
3
4
解凍してできたmingw64フォルダ内のbinフォルダに移動
$ cd ~/Downloads/mingw64/bin
tarで既存のファイルに上書きはしないオプションを付けて、Gitのmingw64/binにコピー
$ tar -cvf - . | tar -xvf - --keep-newer-files -C /c/Program\ Files/Git/mingw64/bin/

この後GitBashを起動し直すと、gccが使用出来る様になっています。

WSLのUbuntuを使っていて、sudoの度に「めんどくさいなあ」と思っていた時に見つけた方法です。

環境

  • Windows 10
    • Ubuntu18.04(WSL)
    • Ubuntu16.04(WSL)

手順

Windowsの機能「Windows Subsystem for Linux」を有効化する

Windowsキー -> 「機能の有効化」と検索し、「Windowsの機能の有効化または無効化」を開く -> Windows Subsystem for Linuxを探してチェックする

その後、再起動する

Windows StoreからUbuntuをインストールする

スタートメニューから「Microsoft Store」を開く -> どれでもよいのでUbuntuをインストール

初期ユーザー名を「root」で指定する

スタートメニューからUbuntuを開き、ユーザー名を聞かれたら「root」と入力

既に存在しているユーザーです!(英語)と言われるが、そのまま閉じる

再度Ubuntuを起動する

なんと、rootでログインしています。