ろきメモ【ROKI MEMO】- ろきsanの備忘録 -

ろきさんの備忘録。プログラミング学習記録や開発記録、および学んだ知識等のアウトプットとシェアを目的に書いています。たまに普通のことも書きます。

モニターアームを購入 [Amazonベーシック モニターアーム シングル]

モニターアームを購入して設置した。
リモートワークになってからずっと気になっていたけど、ついに導入。
いい!

購入したのはこれ
Amazonベーシック モニターアーム シングル ディスプレイタイプ ブラック

デュアルディスプレイにしているけど、シングルのやつを買った。
少しだけ割高だけど、シングルのを2つ使用するほうがいいと思った。

デュアルアームは可動域とか制限がありそうなので、シングル2つのほうが設置する場所もそれぞれ工夫できて応用きくはず。

実際に設置してみたらそのとおり!

設置前
f:id:ahrk-izo:20210429170006p:plain:w500

設置後
f:id:ahrk-izo:20210429170141p:plain:w500

おぉ〜!デスクがスッキリ!

f:id:ahrk-izo:20210429170305p:plain:w500

高さも角度も変えられるから、腰痛くなったときは立っても作業できそう。

よしもう1つ買って、デュアルでアーム使おう。

Mac版Excelのショートカットキー集をメモ(Windowsとの違い)

ExcelといえばWindowsでよく使われるアプリだが、Macでも実はある。
f:id:ahrk-izo:20210429104921p:plain:w150

ただMacWindowsではショートカットキーが微妙に違う。
というか、MacにはcommandやらoptionやらWindowsにはないボタンがあるので、そりゃ違うだろうという話。
たまにMacでもExcel使うので、ショートカットキーのメモをここに残す。
たまにしか使わないからすぐ忘れてしまう。

基本
キー 内容 windowsの場合
command + c コピー ctrl + c
command + v ペースト ctrl +v
command + x カット ctrl + x
control + u セルの再編集 F2
control + b [ fn + delete ] セルの値の削除 delete
option + ←、→ セル内で文字列の先頭や最後に移動 Home、End
control + i セルの挿入 ctrl + shift + +
control + k セルを削除 ctrl + -
ファイル機能
command + s 保存 ctrl + s
command + shift + s 名前を付けて保存 F12
command + n 新規ブック ctrl +n
command + p 印刷 ctrl + p
command + o ファイル開く ctrl + o
command + w ウインドウ閉じる ctrl + w
書式設定
command + 1 書式設定ダイアログ ctrl + 1
command + b 太字 ctrl + b
command + i 斜体 ctrl +i
command + option + 0(ゼロ) 選択範囲に外枠をつける ctrl + shift + 6
command + option + -(マイナス) 選択範囲の罫線を消去 ctrl + shift + ろ

スポンサーリンク



選択
control + スペース 列をすべて選択 ctrl + スペース
shift + スペース 行をすべて選択 shift + スペース
option + 左右矢印キー シート切り替え ctrl + PageUp or PageDown
便利系
control + d 上のセルをコピー ctrl + d
control + r セルと同じ行で直前の値をコピー ctrl + r
command + option + リターン セル内改行 alt + enter
command + control + v 形式を選択してペースト ctrl + alt + v
control + リターン 選択範囲に入力したセルの値をコピー ctrl + enter
command + shift + n コメント入力 shift + F2
command + t 数式の絶対、相対参照切り替え F4

スポンサーリンク



Windowsにはなさそうなショートカットキー
command + option+ 矢印 セルの枠線を追加、削除 こんなのWinにない!便利!
command + k URLなどのハイパーリンクが入力 ?
option + 下矢印キー オートコンプリート候補一覧表示 ?
command + shift + > 文字サイズを大きく ?
command + shift + < 文字サイズを小さく ?
command + L 左揃え ?
command + E 中央揃え ?
command + R 右揃え ?
option + shift + 上矢印キー セル内でふりがなの編集 ?
ショートカットキーのユーザー割り当て

Macではショートカットキーをユーザーが好きなコマンドで割り当てることができる。
ツール > ショートカットキーの割り当て

f:id:ahrk-izo:20210429104044p:plain:w350

※上記では「連続データの作成」をCommand + option + i で設定(WindowsではAlt , E, I, S)

【午後は流すを徹底】やっぱり仕事は午前中に本気出す『なぜ、あなたの仕事は終わらないのか』

メルカリに出品する本を探して、本棚にあるある本に目が止まった。
なぜ、あなたの仕事は終わらないのか』

たしか2年以上前に読んだ本。
どんな内容だったけ?と思いながらパラパラ読んでみた。
これ、今の自分に必要な情報だった。

どう必要な情報だったのか、昔しっかり、今回パラパラ読んだ内容をざっくりアウトプットしてみる。

要は、

  • 朝いきなりやれ
  • メールチェックもいいから仕事にかかれ
  • 午前中は界王拳20倍くらいでやる
  • 午前中で8割の仕事終わらせて、午後は流しでよい
  • 昼寝は17分くらい
  • 眠くなったらいつでも寝ていい
  • 寝る前に明日やるタスクをすべて書き出せ(これ絶対)

(自分にとって)大事なところを抽出するとこんな感じ。


最近だいぶゆっくり仕事をしていたなと思った。
リモートワークになってもうすぐ1年経つが、1日の過ごし方はまったく逆で、
午前中ゆっくりやって、午後から本気だす。みたいな。

でも午後は本気出せないんだよね。
だからこの本を再び読んで、今週は逆にして午前中を本気出してみた。

この本の良いところは、「午後は流してよい」というところ。
他の啓発本は厳しすぎて真似しようと思わないが、これは午後はサボって流して良いってあるので、ぜひやりたいと思った。

そして午前のみ本気を出すようにしたら、仕事がどんどん進む。

ただ、想定外なことは、午後も仕事をしてしまうこと。
流すつもりが、午前でほぼ片付いたはずの仕事が気になって、クオリティーを上げようと午後も力を出してしまう。
これでは体が持たない。

疲れが出たり、エネルギーが枯渇すると結局パフォーマンスは落ちるので、午後は流すように気をつけようとしよう。



もう一度本のアウトプットを出してみる

  • 朝いきなりやれ
  • メールチェックもいいから仕事にかかれ
  • 午前中は界王拳20倍くらいでやる
  • 午前中で8割の仕事終わらせて、午後は流しでよい
  • 昼寝は17分くらい
  • 眠くなったらいつでも寝ていい
  • 寝る前に明日やるタスクをすべて書き出せ(これ絶対)

本のアウトプットってこのくらいでいいのかも。
全部出そうとすると、アウトプットできないから、このくらいでいいな。

しかも今は手元にこの本を出していない。
覚えている範囲でしかアウトプットしていない。
これでよい。

覚えている部分が自分に響いて部分。
それをアウトプットすればよい。

これからこのスタイルでのアウトプットでもよいかも


子供が生まれて1年。ガチで買ってよかったものを挙げてみる【書籍編】

子供が生まれて1年が経過。
初めてだらけの経験で、あっという間に過ぎた。

いろんな情報をもとに、いろいろなものを購入し、役立てた。
ちょっとこの機会(どの機会?)に、本当に買ってよかったものを挙げてみる。
まずは書籍から。

最新! 妊娠・出産新百科 (ベネッセ・ムック たまひよブックス たまひよ新百科シリーズ)

妊娠中、妻の体がどんな変化があるのか
赤ちゃんがどんな感じで成長し、大きくなるのか
食べていいもの、ダメなもの
出産の方法、リスク
逆子になったときなど
いろいろとわからないことだらけだったが、勉強になった。

自治体や病院のベビークラスなどで教えてくれることもあるが、1回聞いただけではわからないので、本での正しい知識は必要

最新! 育児新百科 (ベネッセ・ムック たまひよブックス たまひよ新百科シリーズ)

生まれてからの対応
とくに病気などがテンパるのでこれでも正しい知識を入れておくと、冷静に対処できる


お口の育て方 子どものきれいな歯並び、良い噛み合わせをつくるために

お口の育て方 子どものきれいな歯並び、良い噛み合わせをつくるために

お口の育て方 子どものきれいな歯並び、良い噛み合わせをつくるために

  • 作者:竹内 敬輔
  • 発売日: 2017/10/17
  • メディア: 単行本(ソフトカバー)
歯並びは3歳までで決まるらしい。
歯並びは超大事。
気をつけられることがあればやっておいたほうがいい。
あとで矯正とか必要になると、高額になるから、本で予防できるなら安いもの。
授乳の仕方や、離乳食の食べさせ方など

モンテッソーリ流「自分でできる子」の育て方

モンテッソーリ流「自分でできる子」の育て方

モンテッソーリ流「自分でできる子」の育て方

2〜3歳ごろからイヤイヤ期がくるらしい。
事前にわかっていて、どういうメカニズムなのかを知識として入れておくと、少しは冷静にいられる。
まだ本格的イヤイヤ期はきていないが、備えれれる。
子供の行動は理解しきれないが、多少はカバーできそう。




こういった情報はネットでももちろんあるが、ネットは間違った情報も多い。
ネットの情報に頼ることもあるが、正しいかどうかの判断は自分でしなければならないので、判断基準として正しい知識は必須。

子供が無事に生まれてくるか、無事に成長するかは運が左右する部分もあるが、いい方向に向かう可能性を少しでも上げることはできる。
後で後悔しないように、できること、備えられることはしておくのがよい。

【家のIoT化のために家事をやっとけ】実際に家事をやらないとアイデアは出てこない

家の暮らしを快適にしたり、家事を楽にするために、家のIoT化を勧めている。

最近はAmazonエコーを買った。
1年くらい前にかったSwitchbotのハブとスイッチと連携して快適にしている。


これも1年くらい前になるが、床を拭くお掃除ロボット「ブラーバ」を購入した。

これは床掃除はほんとに大変だから。

でも思った。
床掃除をしない人はこれを買おうと思わないだろう。

でも床掃除をして、きれいになった状態で暮らしている人は、定期的に床掃除をしたい。
そして「定期的」なので、スケジュールで決まった日時で行うことができると、すごく楽。

どんどん生活を見直したり、家事を見直すことで、テクノロジーの活用方法が見えてくる。
技術だけを追っていてもダメ。
テクノロジーの種は生活の中にある。

【家をIoT化】AmazonエコーとSwitchbotの連携でヒーター・加湿器・お湯はり

Amazonエコーを購入


久しぶりのスマートスピーカー
Googleのやつが壊れた以来なので、約1年ぶり。


SwitchBotのスイッチとハブと連携して家電のスイッチを声で押せるようにした。


ヒーターと加湿器
f:id:ahrk-izo:20210119225346j:plain:w300

お風呂のお湯はり
f:id:ahrk-izo:20210119225456j:plain:w300
※テープを貼らないと、カバーが外れてボタン押せないというダサい感じ。。。


これは便利。
「ヒーターつけて / 消して」
「加湿器つけて / 消して」
「お風呂入れて」

これでOK。

さらに時間指定もできるから、朝起きる前にヒーターと加湿器のスイッチを入れる。
快適。

それぞれ入タイマーはあるんだけど、寝る前に毎回セットするのはさすがに面倒。
Switchbotの時間指定なら、1度設定するだけでよいので、これでだいぶ楽。



家の生活で不便なところを見直して、どんどんIoT化を進めよう。

【sudoなしでDocker実行】Dockerコマンドをsudoなしで実行するための設定(Ubuntu)

前回、UbuntuにDockerをインストールして、基本的なコマンドで動作確認してきた。
ahrk-izo.hatenablog.com

が、今まで、Dockerの実行には、毎回「sudo」を付けてきた。
これがデフォルトの使い方だが、流石にいちいち「sudo」をつけるのは面倒だ。
今日は、この「sudo」を付けずに実行できるよう設定した備忘録を残す。

そのためにやることは、「docker」というグループを(なければ)作り、そのグループに自身のユーザーを所属させる。そうすれば、「sudo」なしでdocekrが実行できる。
つまりやることを目次とすると、

となる。

スポンサーリンク



1. グループ確認

$ groups
(user) sudo

※(user)は自身のユーザー名

2. deckerグルール作成

dockerグループがなければ作る

$ sudo groupadd docker

すでのdockerグループがあれば、
「groupadd: グループ 'docker' は既に存在します」
というコメントが帰ってくる

3. グループを確認してみる

グループは、/etc/group に記述されているので、lessコマンドなので出力してみる。

$ less /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
...
docker:x:998:

→「docker」グループはある。

getentコマンドならピンポイントで確認できる

$getent group docker
docker:x:998:

4. 自身のユーザをdockerグループに所属させる

$ sudo gpasswd -a $USER docker

※$USERは自身のユーザー名
※「echo $USER」などで確認してみるとよい

5. 自身のユーザが、dockerグループに所属されたか確認

もう一度getentコマンドで確認

$getent group docker
docker:x:998:(user)

→dockerグループに自身のユーザーが入った

6. リロード、再起動で反映させる

# daemonをリロード
$ sudo systemctl daemon-reload

# docker再起動
$ sudo systemctl restart docker


あとはターミナルを再起動すれば完了のはすだが、僕の場合は反映されず、PCの再起動でようやく反映された。
groupの設定のときは、PC再起動と覚えておこう。

スポンサーリンク



7. 「sudo」なしでDocker実行できるか確認してみる

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

うん。バッチリ。


参考:
qiita.com

【Dockerの基本のキ】サンプルイメージの実行から削除まで(コンテナ削除が必要)

昨日、プロキシにハマりながらもUbuntuにDockerをインストールして、サンプルである「helo-world」イメージをDocker Hub から取得して実行するまでを記述した。

ahrk-izo.hatenablog.com


せっかくなので、今日はこの実行のちょっとした補足と、この実行されたコンテナの削除、イメージの削除までを備忘録として残していく。
ということで今日の目次

スポンサーリンク



1. サンプルイメージ「hello-world」の実行

改めて実行した内容を記述する。

$ sudo docker run hello-world
[sudo] user のパスワード: 
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:fc6a51919cfeb2e6763f62b6d9e8815acbf7cd2e476ea353743570610737b752
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

これで、サンプルイメージの取得と実行までが完了している。

この出力結果のうち、

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:fc6a51919cfeb2e6763f62b6d9e8815acbf7cd2e476ea353743570610737b752
Status: Downloaded newer image for hello-world:latest

の部分は、取得の結果の表示。(パスワードの部分はsudo実行だから聞かれているやーつ)

ざっくり訳すと
「ローカルに最新の'hello-world'ないな」
「ライブラリ(Docker Hub)からhello-world(https://hub.docker.com/_/hello-world)を持ってくるよ」
「持ってきた。完了!」
「Digestはこれ」
「ステータスは、新しいイメージをダウンロードしたとこ」

つまり、ローカルになかったから、Docker Hubからそのイメージを取得している(そこにもなければエラーになる)

そして「Hello from Docker!」以降は、このhello-worldイメージをビルドして実行した結果の出力。

もう一度実行してみると、

$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

と、もうイメージは取得済みなので、結果出力の部分のみ出力している。

2. イメージの削除(失敗)

先程取得したDockerイメージのIDを確認して、削除までしてみる。
ここでは敢えて失敗する。

まず、Dockerイメージの一覧表示

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

このコマンドで、現在ローカルにあるDockerイメージの

  • REPOSITORY
  • TAG
  • IMAGE ID
  • CREATED
  • SIZE

が確認できる。

イメージの削除には、「IMAGE ID」を使う(ここでは「bf756fb1ae65」)

$ sudo docker rmi bf756fb1ae65
Error response from daemon: conflict: unable to delete bf756fb1ae65 (must be forced) - image is being used by stopped container 8fbd46b10da1

rmi : イメージ削除(参考 : https://docs.docker.jp/engine/reference/commandline/rmi.html
失敗した。
エラー文を読みと、どうやら「8fbd46b10da1」のコンテナを停止する必要があるようだ。

3. コンテナの停止

「8fbd46b10da1」はなにか?
Dockerコンテナの一覧表示をしてみる。

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
8fbd46b10da1        hello-world         "/hello"            About a minute ago   Exited (0) About a minute ago                       distracted_noyce

※ps : コンテナ一覧表示
※-a : 全コンテナ表示オプション(デフォルトは実行中のみ)
参考:https://docs.docker.jp/engine/reference/commandline/ps.html

この結果を見ると、「8fbd46b10da1」はやはり「hello-world」イメージのコンテナだね。
このコンテナというのは、「docker run」の実行によってイメージから作られたもの。

じゃ、このコンテナを停止して、改めてイメージを削除してみる。

コンテナの停止

$ sudo docker stop 8fbd46b10da1
8fbd46b10da1

停止は成功したようだ。

イメージの削除

$ sudo docker rmi bf756fb1ae65
Error response from daemon: conflict: unable to delete bf756fb1ae65 (must be forced) - image is being used by stopped container 8fbd46b10da1

また失敗

どうやら停止だけでなく、コンテナの削除も必要らしい。

スポンサーリンク



4. コンテナを削除して、イメージを削除する。

Dockerイメージを削除するには、実行によって作られたコンテナの削除が必要。
なので、コンテナ削除してから、イメージの削除を行ってみる。

コンテナの削除

$ sudo docker rm 8fbd46b10da1
8fbd46b10da1

コンテナの一覧表示

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

コンテナがなくなった。


3度目の正直。イメージ削除

$ sudo docker rmi bf756fb1ae65
Untagged: hello-world:latest
Untagged: hello-world@sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63

削除が成功した。


最後に削除されたかイメージ確認をする

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

よし、きれいになくなった。



これがサンプルイメージを使った実行と削除の基本。
次は自分でDockerファイルを作成してビルドして実行するのを残そうかな。


以上。



Dockerのおすすめ本ではこちらの本がいろんなところで紹介されている。

【プロキシにハマった】UbuntuにDockerをインストールして、プロキシ設定して動作確認する方法

Linux(Ubuntu)にDockerをインストールした際、プロキシでハマったので、インストール方法と確認方法、そしてプロキシ設定方法をあわせて備忘録として残しておこう。

というわけで今日の目次

スポンサーリンク



1. インストールのための準備

Ubuntuへのインストールはこちらから
docs.docker.com

基本的には、ここの「Install using the repository」の部分の通りに行う。
まずは、準備の部分から。なので、その中の「SET UP THE REPOSITORY」の部分。

1. apt-getのアップグレード(Update the apt package index)
とりあえず使うツールはアップグレードしとかないとね。最新がインストールできないときがよくあるから。

$ sudo apt-get update


2. aptがHTTPS経由でリポジトリを使えるように各パッケージをインストール(Install packages to allow apt to use a repository over HTTPS)
必要なパッケージを一括で取得する。

$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

※サイトにある「 \ 」は使わず全部1行で表示しています。


3. dockerの公式GPGキーを追加(Add Docker's official GPG key)
GPGキーってのがあるんだね。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


4.フィンガープリントを確認

$ sudo apt-key fingerprint 0EBFCD88

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 があればよし。


5. リポジトリの設定
安定版のリポジトリを設定する。

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

※サイトにある「 \ 」は使わず全部1行で表示しています。


ここまでが準備。
次に実際にインストールしていく。

2. Dockerのインストール

実際にインストールしていく。
上記のURLの「INSTALL DOCKER ENGINE」を見ながら行っていく。

1. apt-getのアップグレード(Update the apt package index)
さっきやったけど、書いてあるからとりあえず実行(アップグレード済みって言われる)

$ sudo apt-get update


2. Dockerインストール
最新版をインストール

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

これでインストール完了。

バージョン確認してみる。

$ docker -v
Docker version 19.03.7, build 7141c199a2

よし。インストールできてるようだ。

スポンサーリンク



3. プロキシの設定

さて、インストールも完了したので、(上記URLにも書いてあるように)動作確認でhello-worldイメージを実行してみる。

$ sudo docker run hello-world
[sudo] user のパスワード: 
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 127.0.1.1:53: no such host.
See 'docker run --help'.

あれ?エラーになった。

コレたぶんプロキシのせい。
ということでプロキシの設定をする。

参考にするのが、また公式のここのサイト
docs.docker.com

ここの「HTTP/HTTPS proxy」の部分。

やることは
1. ディレクトリ作成
2. ファイル作成
3. そのファイルにプロキシ情報書き込む
4. Docker再起動

では1つずつやっていく
1. ディレクトリ作成
/etc/systemd/system/docker.service.d というディレクトリを新規作成

$ sudo mkdir -p /etc/systemd/system/docker.service.d

※mkdir : ディレクトリ作成コマンド
※-p : 親ディレクトリなかったら作成するオプション
※sudo : 作成場所がルートディレクトリなので必要


2. ファイル作成
作成したディレクトリに、http-proxy.conf というファイルを新規作成

$ sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf

※touchは空ファイル作成


3. そのファイルにプロキシ情報書き込む
ファイルの中身は、「HTTP_PROXY」なのか「HTTPS_PROXY」なのか、その両方なのかで書く内容が変わる。
両方だったら以下のように記述する。

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"

※プロキシ情報はサンプル


4. Docker再起動
daemonのリロードとdockerの再起動して完了

daemonをリロード

$ sudo systemctl daemon-reload

docker再起動

$ sudo systemctl restart docker

プロキシ設定が反映されているか確認

$ sudo systemctl show --property=Environment docker

Environment=HTTP_PROXY=http://proxy.example.com:80 HTTPS_PROXY=https://proxy.example.com:443

表示内容がファイルに記述した内容と同じであればOK

スポンサーリンク



4. 改めてサンプルのhello-worldイメージを実行

改めて元のインストールサイト(https://docs.docker.com/engine/install/ubuntu/)に戻り、hello-worldイメージでDockerの動作確認を行う。

$ sudo docker run hello-world
[sudo] user のパスワード: 
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

無事、Dockerイメージが作成できたようだ。


Dockerイメージの確認

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB


ちなみに、取得したhello-worldイメージは、Docker Hubのこちら(https://hub.docker.com/_/hello-world


よし、今日も無事備忘録完了。
Dockerについては基本的なコマンドなどもまとめたいな。


以上。


Dockerのおすすめ本ではこちらの本がいろんなところで紹介されている。

【コマンド履歴を曖昧検索】ターミナルにfzfを導入して、コマンド実行をスムーズにする

ターミナルでコマンドを実行するときのお話。

「あれ?このときコマンドなんだっけ?」
「前も実行したけど全然思い出せない」
「メモってないし、しょうがないググるか」

というときが少なからずあると思う。

過去に実行したコマンドをすべて覚えていないし、でも毎回ググったりするのも手間。
そんなとき過去に実行したコマンドをキーワードを少し入力して探すことができる。
それが「fzf」というツール。


昨日、ターミナルの環境設定(「oh-my-zsh」から「Prezto」に変更)する備忘録を書いたけど、この設定と同時に、このコマンドの履歴検索に便利な「fzf」を導入したので、今日はそっちの導入方法の備忘録を残す。

昨日の「Prezto」の記事
ahrk-izo.hatenablog.com



fzfとは
fzfとはいろいろググっていただきたいが、ざっくり言うと、キーワードを入力してコマンドの履歴探す便利なツール。

例えば「zsh vim」というようにキーワードを入力すると、履歴の中からそのワードを使ったコマンドを候補として出してくれる。

こんな風に。大変便利。
f:id:ahrk-izo:20200729180231p:plain

今回これを導入していく

[目次]

スポンサーリンク



1. [準備] Homebrewのアップデート

今回はHomebrewを使ってインストールしていく。
(これを使わず、Gitで取得する方法もあるけど、なんとなく僕はHomebrewを使うことにした)

とりあえずHomebrewのバージョン確認

$ brew -v
Homebrew 2.1.4
Homebrew/homebrew-core (git revision 03850a; last commit 2019-06-07)
Homebrew/homebrew-cask (git revision ed3b0; last commit 2019-06-08)

f:id:ahrk-izo:20200729180840p:plain


最近アップデートしてなかった気がするからアップデートする。

$ brew update


もう一度バージョン確認

$ brew -v
Homebrew 2.4.9
Homebrew/homebrew-core (git revision 553f7; last commit 2020-07-29)
Homebrew/homebrew-cask (git revision 247c5; last commit 2020-07-29)

f:id:ahrk-izo:20200729181044p:plain
よし。上がったね。

Homebrewを取得したときの記事はこちら
ahrk-izo.hatenablog.com

2. fzfの取得

インストール元は、こちらのGitHubリポジトリ
https://github.com/junegunn/fzf

基本的に、ここの「Using Homebrew or Linuxbrew」に書いたある部分の通りに行う。
書いてあるのは、

brew install fzf

# To install useful key bindings and fuzzy completion:
$(brew --prefix)/opt/fzf/install

「$(brew --prefix)」ってのはHomebrewのインストール先のディレクト
実行してみるとわかる。

$ brew --prefix
/usr/local

f:id:ahrk-izo:20200729181743p:plain
つまり、/usr/local ってこと。(環境によって変わるかも)


ということで、実際に実行してfzfを取得してみる。

fzf取得

$ brew install fzf

f:id:ahrk-izo:20200729181932p:plain
はい。取得成功。


ちなみに、Homebrewではなく、gitを使う場合は

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

です。

2. fzfのインストール

取得したfzfをインストールする。これも書いてある通りに実行する。

fzfインストール

$ /usr/local/opt/fzf/install

※「$(brew --prefix)」は、「/usr/local」

3回Yes or No を聞かれるので、すべてYesにする。

Do you want to enable fuzzy auto-completion? ([y]/n)
→オートコンプリート有効にするかい?→Yes

Do you want to enable key bindings? ([y]/n)
キーバインド有効にするかい?→Yes

Do you want to update your shell configuration files? ([y]/n)
→シェルの設定ファイルをアップデートしたい?→Yes

まぁこんな感じ。
最後の設定ファイルの件は、(僕の場合はZshなので~/.zshrcに)

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

の1行が追記される。

f:id:ahrk-izo:20200729182149p:plain


実行結果に、

Finished. Restart your shell or reload config file.
   source ~/.bashrc  # bash
   source ~/.zshrc   # zsh

と表示されたので、有効にするにはシェルを再起動するか、sourceコマンド実行する。(まぁ再起動が確実)


スポンサーリンク



3. fzfを確認する

このインストールで、fzfとfzf-tmuxというのが使えるようになったはずなので、それぞれバージョンを確認してみる。

$ fzf --version
0.21.1 (brew)

$ fzf-tmux --version
fzf-tmux (with fzf 0.21.1 (brew))

f:id:ahrk-izo:20200729183242p:plain

よし。問題なし。

では本題の曖昧なキーワードで履歴検索してみる。

Control + R
f:id:ahrk-izo:20200729183418p:plain
で履歴表示して、

そのまま例えば「zsh」と入力すると、
f:id:ahrk-izo:20200729183534p:plain
よし。バッチリ。


[おまけ] ほかのキーバインドとか

https://github.com/junegunn/fzf の「Key bindings for command-line」の部分に書いてあるやつだけど、

Ctrl + t : カレント以下のファイル、ディレクトリ表示
Ctrl + r : コマンド履歴
Alt + c (option + c): カレント以下ディレクトリ

これはこれで便利そう。



以上。