OmniAICreator/Qiita-1.07M huggingface dataset:
【Linuxコマンド】 cp コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 cp コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## cp コマンドとは
ファイルやディレクトリをコピーする時に使うLinuxコマンドです。
"cp"は"copy"の略です。



###  コマンドの使い方
```zsh
$ cp コピー元 コピー先

#同じディレクトリ内にコピー
$ cp test.txt test2.txt

#別のディレクトリ(testディレクトリ)へコピー
$ cp test.txt /home/hoge/test2/test2.txt

#別のディレクトリ(testディレクトリ)へ同じ名前でコピー
$ cp コピー元 コピー先のディレクトリ名
$ cp test.txt test2

#複数ファイルをコピー
$ cp コピー元その1 コピー元その2 コピー先のディレクトリ名
$ cp test.txt test2.txt test3
```


## cp コマンドのオプション一覧
| オプション      |説明                      |
|:-------------|:------------------------|
| -a            |元ファイルの属性とディレクトリの構成を保持してコピーする。|
| -b            |上書きされるファイルのバックアップを作成する|
| -d            |シンボリックリンクをコピーする際に実体をコピーする|
| -f            |コピー先に同じ名前のファイルがある際に警告なしで上書きをする。|
| -i            |上書きされるファイルがある際に確認が入る。|
| -l            |ハードリンクを作成する|
| -P            |ディレクトリ構造ごとコピーする|
| -p            |元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持|
| -r            |コピー元にディレクトリを指定した場合、再帰的に（サブディレクトリも含めて）コピーする|
| -s            |コピーの代わりにシンボリックリンクを作成する|
| -u            |保存先が同じファイル名のファイルだったとき、タイムスタンプを確認して、新しいor同じだったときコピーしない。|
| -v            |実行内容を表示|



### -rオプション
```zsh:/home/hoge
#ディレクトリごとコピーする
$ cp -r コピー元ディレクトリ コピー先ディレクトリ

#testディレクトリをtest2ディレクトリ配下へコピー
$ cp -r test /home/hoge/test2
```

### -sオプション
```zsh
#シンボリックリンクを作成する
$ cp -s 元ファイル シンボリックリンク

#test.txtのシンボリックリンクを作成
$ cp -s test.txt test_symbolic.txt
```


## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 touch コマンド オプション 一覧 【初学者必見】 

# 【Linuxコマンド】 touch コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## touch コマンドとは
タイムスタンプを変更するためのLinuxコマンドです。
また、存在しないファイル名を指定することで、ファイルを新規作成する機能も持っています。

### コマンドの使い方
```zsh
$ touch ファイル名

#testファイルのタイムスタンプを現在にする
$ touch test.txt

#存在しないファイル名を指定してファイル新規作成
$ touch testoooooooo.txt
```


## touchコマンドのオプション一覧

| オプション          |        説明        |
|:-----------------|:------------------|
| -d               |日時を指定する|
| -c               |ファイルを新規作成しない|
| -r               |指定したファイルのタイムスタンプに合わせる|
| -a               |最終アクセス日時のみ変更する|
| -m               |最終更新日時のみ変更する|
| -h               |シンボリックリンクの場合、リンク先ではなくシンボリックそのもののタイムスタンプを変更する|


### -d オプション
```zsh
$ touch -d 日付 ファイル名

#ファイルtest.txtのタイムスタンプを2020年1月1日21:30に指定する。
$ touch -d "2020-1-1 21:30" test.txt
```



### -c オプション
```zsh
$ touch -c ファイル名

#ファイルtest.txtのファイルが存在しなければ新規作成、存在していればタイムスタンプを書き換える。
$ touch -c test.txt
```



### -r オプション
```zsh
$ touch -r 既存のファイル名 対象ファイル名

#ファイルtest.txtのタイムスタンプをファイルtest2.txtのタイムスタンプと同一にする。
$ touch -r test2.txt test.txt
```


## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 less コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 less コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)

## less コマンドとは
ファイルの中身を確認する為のLinuxコマンドです。 

###  コマンドの使い方
```zsh:/home/hoge
$ less '確認したいファイル名'

# hoge fileを確認する例
$ less hoge
```



## man コマンドのオプション一覧
| オプション      |説明                      |
|:-------------|:------------------------|
| -F             |1画面以下の行しかないファイルの場合lessを終了する　　　　　　|
| --help             |ヘルプ画面の表示         |
| -i          |検索時に大文字小文字の判別をしない           |
| -N    |行番号の表示|
| -r             |エスケープシーケンスをそのまま出力する|
| -R       |色以外のエスケープシーケンスをそのまま出力する|
|-S       |折り返しせず表示し、横にもスクロールできるようにする  |
|--version|バージョンを表示する  |
|-X |画面をclearせずに最後の状態を保ったままlessを終了する |


### -X オプション


```zsh:/home/hoge
# 終了時の画面を維持する
$ less -X hoge.txt
hogehoge #内容が残ったままです
```

### --version オプション


```zsh
# less コマンドのバージョンを確認する
$ less --version
```

## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 mkdir コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 mkdir コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## mkdir コマンドとは
ディレクトリを新規作成するLinuxコマンドです。
"mkdir" は "make directory"の略です。

### コマンドの使い方
```zsh
$ mkdir ディレクトリ名

#hogeディレクトリ作成
$ mkdir hoge
```


## mkdirコマンドのオプション一覧

| オプション          |        説明        |
|:-----------------|:------------------|
| -m               |パーミッションを指定しディレクトリを作成する|
| -p               |エラーを表示せず記述したディレクトリが存在しなければ作成する|
| -v               |ディレクトリを作成した結果のメッセージを表示する|



### -m オプション
```zsh
$ mkdir -m パーミッション指定 ディレクトリ名

#パーミッションが666のhogeディレクトリを作成する。
$ mkdir -m 666 hoge
```



### -p オプション
mkdirは作成しようとしているディレクトリが存在していると、エラーになりディレクトリが作成されない。ディレクトリがすでにあるにもかかわらず再度作成すると、そのディレクトリ内容も削除されてしまうからです。また、mkdirは作成する親ディレクトリが存在していなくてもエラーになり子ディレクトリが作成されません。
これらを解決するのが-pオプションです。-pを指定することで、ディレクトリが存在していてもエラーメッセージを表示せず、現在あるディレクトリはそのままにして新規に作成することはなく子ディレクトリを作成することができます。


```zsh
$ mkdir -p ディレクトリ名

#現在hogeディレクトリがある場合は無視し、ない場合はhogeディレクトリを作成する。
$ mkdir -p hoge
```

## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 rm コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 rm コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)

## rm コマンドとは
ファイルやディレクトリを削除するLinuxコマンドです。 
"rm" は "remove"の略です。

###  コマンドの使い方
```zsh:/home/hoge
# ディレクトリの中身の確認
$ ls -l
-rw-r--r-- 1 hoge hoge   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2

# hoge.txt を削除する
$ rm hoge.txt

# 削除されていることの確認
$ ls -l
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2
```



## man コマンドのオプション一覧
| オプション      |説明                      |
|:-------------|:------------------------|
| -f             |エラーメッセージを表示せず実行する(危険)　　　　　　|
| -i             |削除前に確認する         |
| -I             |削除対象が４つ以上のときのみ、削除前に確認する　　　　　　|
| -r             |ディレクトリも削除対象に含める         |
| -v             |削除の詳細を表示する　　　　　　|



### -i オプション


```zsh:/home/hoge
# ディレクトリの中身の確認
$ ls -l
-rw-r--r-- 1 hoge hoge   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2

# hoge.txt を削除する
$ rm -i hoge.txt
remove hoge.txt? (y or n) y

# 削除されていることの確認
$ ls -l
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2
```

### -r オプション


```zsh:/home/hoge
# ディレクトリの中身の確認
$ ls -l
-rw-r--r-- 1 hoge hoge   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2

# hoge.txt を削除する
$ rm -r test

# 削除されていることの確認
$ ls -l
-rw-r--r-- 1 hoge hoge   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2
```

### -v オプション


```zsh:/home/hoge
# ディレクトリの中身の確認
$ ls -v
-rw-r--r-- 1 hoge hoge   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2

# hoge.txt を削除する
$ rm -v hoge.txt
mooooo.tx

# 削除されていることの確認
$ ls -l
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2
```

### -rf オプション(破滅の魔法)
※ 以下の作業は危険ですので絶対に真似しないで下さい。
実際には警告が出るようになっていますが、実行される際は自己責任でお願いします。

```zsh:/
# 破滅してみる
$ cd /
$ sudo rm -rf /
```

## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 cat コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 cat コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## cat コマンドとは
ファイル内容を標準出力するコマンドです。
"cat" は "concatenate"の略です。
"concatnate"=「連結する」なので本来は
「ファイル内容を標準出力する」というより「ファイル内容を連結して標準出力する」と言った方が丁寧かもしれません。

### catコマンドの使い方
```zsh:/home/hoge
$ cat 対象ファイル
```


##catコマンドのオプション一覧

| オプション          |        説明        |
|:-----------------|:------------------|
| -n             |  行番号をつけて出力 |
| -b           |            blank(空白行)を入れずに行番号をつけて出力 |
| -s             |              連続した空白行を１行の空白行にまとめて出力 |
| -E               |                各行の末尾に"$"をつけて出力 |
| -T             |             タブを"^I"に置換して出力 |

### -nオプション
行番号をつけて出力。

オプションなしの場合は

```zsh:/home/hoge/test
$ cat test.txt
hoge
hogehoge

hogehogehoge



hogehogehogehoge

```

-nオプションをつけると以下のように出力されます。

```zsh:/home/hoge/test
$ cat -n test.txt
     1	hoge
     2	hogehoge
     3
     4	hogehogehoge
     5
     6
     7
     8	hogehogehogehoge
     9
```


### -bオプション
blank(空白行)を入れずに行番号をつけて出力。

```zsh:/home/hoge/test
$ cat -b test.txt
     1	hoge
     2	hogehoge

     3	hogehogehoge



     4	hogehogehogehoge
```


### -sオプション
連続した空白行を１行の空白行にまとめて出力

```zsh:/home/hoge/test
$ cat -s test.txt
hoge
hogehoge

hogehogehoge

hogehogehogehoge

```

ちなみに、-sと-nを組み合わせると↓

```zsh:/home/hoge/test
$ cat -ns test.txt
     1	hoge
     2	hogehoge
     3
     4	hogehogehoge
     5
     6	hogehogehogehoge
     7
```

### -Eオプション
各行の末尾に"$"をつけて出力
あとで"$"をカンマに置換して配列にしたりするときなんかに便利だったりします。

```zsh:/home/hoge/test
$ cat test.txt
hoge$
hogehoge$
$
hogehogehoge$
$
$
$
hogehogehogehoge$
$
```
### -Eオプション
タブを"^I"に置換して出力

以下の場合が

```zsh:/home/hoge/test
$ cat ex.txt
hoge
    hogehoge
        hogehogehoge
```

↓こうなります。

```zsh:/home/hoge/test
$ cat ex.txt
hoge
^Ihogehoge
^I^Ihogehogehoge
```


## catコマンドの連結出力
複数のファイルを連結させて出力します。（本来のcat）

```zsh:/home/hoge/test
$ cat hoge.txt
hoge

$ cat hoge2.txt
hogehoge

$ cat hoge3.txt
hogehogehoge


$ cat hoge.txt hoge2.txt hoge3.txt
hoge
hogehoge
hogehogehoge

```

また、連結させたものを新しいファイルとして作成できます。

```zsh:/home/hoge/test
$ cat hoge.txt
hoge

$ cat hoge2.txt
hogehoge

$ cat hoge3.txt
hogehogehoge

# ３ファイルをsuperhogeとして作成
$ cat hoge.txt hoge2.txt hoge3.txt > superhoge

$ cat superhoge
hoge
hogehoge
hogehogehoge

```



## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 ls コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 ls コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## ls コマンドとは
ファイルやディレクトリの情報を表示するためのコマンドです。
"ls" は "list directory contents"の略です。

### lsコマンドの使い方
```zsh:/home/hoge
$ ls 
test hoge.txt test2 
```


## lsコマンドのオプション一覧

| オプション          |        説明        |
|:-----------------|:------------------|
| -a             |  全て表示 |
| -l           |            詳細表示 |
| -1             |              リストを縦に並べる |
| -r               |                逆順表示 |
| -t             |             更新時間順に表示 |
| -S          |           ファイルサイズ順でソートする |
| -X             |             拡張子順（ごと）に並べる |
| -R           |            ディレクトリ内容を再帰的に表示 |
| --full-time              |              タイムスタンプの詳細を表示する |
| -h               |                単位を読みやすい形式で表示する |
| -k             |             KB単位で表示する |
| -F         |           ディレクトリ名の後に ' / ', 実行可能なファイル名の後に ' * ' をつける |


### -aオプション
ファイル名の先頭にピリオドがつく隠しファイルも表示。

```zsh:/home/hoge
$ ls -a
test hoge.txt test2 .hidden
```

### -lオプション
ファイルの詳細を表示。

```zsh:/home/hoge
$ ls -l
-rw-r--r-- 1 root root   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 root root 4096 Feb 24 17:14 test
drwxr-xr-x 2 root root 4096 Feb 24 17:15 test2
```
詳細の見方ですが、一行目で説明すると

| 項目      |       説明 |
|:-----------------|:------------------|
|-rw-r--r--              |              ファイルの種類（左１文字）＋パーミッション |
| 1           |            ハードリンクの数 |
| root             |              所有者 |
| root           |            所有グループ |
| 11             |              ファイルのサイズ |
| Feb 24 17:11             |             作成日時 |
| hoge.txt             |              ファイル名 |



### -Rオプション
ディレクトリ内容を再帰的に表示。

```zsh:/home/hoge
$ ls -R
hoge.txt test test2

./test
test.txt ex.txt test.log

./test2
test2.txt ex2.txt test2.log
```

### -hオプション
ファイルサイズの単位をいい感じによろしくやってくれます。

```zsh:/home/hoge
$ ls -lh
-rw-r--r-- 1 root root  11B Feb 24 17:11 hoge.txt
drwxr-xr-x 2 root root 4.0K Feb 24 17:14 test
drwxr-xr-x 2 root root 4.0K Feb 24 17:15 test2
```
## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 cd コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 cd コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## cd コマンドとは
ディレクトリを移動するLinuxコマンドです。
"cd" は "change directory"の略です。


## cdコマンド　使い方一覧

### ルートディレクトリへ移動
```zsh:/home/hoge
$ cd /
```

### ホームディレクトリへ移動
```zsh:/
$ cd ~
```
↑↓同じ意味です。

```zsh:/
$ cd 
```



### 相対パスでの移動
#### 相対パスとは
現在いるディレクトリから見たパスのことです。

```zsh:/home
$ cd hoge
```

### 絶対パスでの移動
#### 絶対パスとは
全体の一番上から見たパスのことです。

```zsh:/home/hoge
$ cd /test
```


### １つ上の階層
```zsh:/home/hoge/test
$ cd ..
```


### ２つ上の階層へ移動
```zsh:/home/hoge
$ cd ../..
```

### １つ上の階層のtaroディレクトリへ移動
```zsh:/home/hoge
$ cd ../taro
```


### -Pオプション
移動先のディレクトリがシンボリックリンクだった場合、シンボリックのターゲットに移動してくれる便利なオプション

```zsh:/home
$ cd -P hogege
```


## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
今日からGO言語 入門 〜Part2 Import 〜

## Go言語 Importについて
Importは、Goが標準で提供するライブラリ（またはパッケージ）をインポートするためのもの

例)
- fmt
- os
- time

などなど。
[パッケージの一覧はこちら](https://golang.org/pkg/)

## Importの書き方
```main.go
import "fmt"
```

複数インポートする場合は、

```main.go
import (
  "fmt"
  "time"
  "os/user"
)
```

と書くことができる

## go docを使用して、コンソールからライブラリ情報を閲覧する方法

[形式]

```console
$ go doc ライブラリー名
```

[例]

```console
$ go doc fmt
```
【Linuxコマンド】 ssh コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 ssh コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## ssh コマンドとは
sshプロトコルを利用してリモートホストにログイン、もしくはコマンドを実行するためのLinuxコマンドです。
"ssh"は"secure shell"の略です。



###  コマンドの使い方
```zsh
$ ssh ユーザ名@接続先のホスト名(IPアドレス)

#rootユーザーでIP192.168.x.xに接続する場合
$ ssh root@192.168.x.x
```


## ssh コマンドのオプション一覧
| オプション      |説明                      |
|:-------------|:------------------------|
| -p            |接続に使用するポート番号を指定する|
| -i            |接続に使用する公開鍵ファイルを指定する|
| -l            |接続に使用するユーザー名を指定する|




### -pオプション
```zsh
#接続に使用するポート番号を指定する
$ ssh -p 22 root@192.168.x.x 
```

### -iオプション
```zsh
# /home/hoge配下の公開鍵を指定
$ ssh -i /home/hoge/xxxxx root@192.168.x.x 
```

### -lオプション
```zsh
#rootユーザーでIP192.168.x.xに接続
$ ssh -l root 192.168.x.x 
```

## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
docker エラーまとめ


#dockerのエラー集
自分が出会ったdockerのエラーの解決策、エラーの意味をまとめておきます。

###dockerエラー①

```
docker run
```
```
docker: Error response from daemon: pull access denied for some-content-nginx, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
```

####意味
リポジトリないんじゃね？場合によってはログインも必要だけど。

####解決
今回はリポジトリ名のsome-content-nginxを間違えていたのが原因でした。

###dockerエラー②

```
docker run
```

```
docker: Error response from daemon: Conflict. The container name "/first-nginx" is already in use by container "dca622e0f6494cf53e6fca4d3084eb337a5d96fc7b238de3ade7a2a9cde1359f". You have to remove (or rename) that container to be able to reuse that name.
```
####意味
同じ名前のコンテナあるけどどうする？とりあえず削除か名前変更して。

####解決
今回は削除して実行することにした。
①現在の全てのコンテナを表示する。

```
docker ps -a
```
<img width="1369" alt="スクリーンショット 2020-02-24 15.03.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543154/f7f752a8-6908-0a31-ac3d-dad0b04bedf1.png">

 ②docker rm [コンテナID]で削除

```
docker rm dca622e0f649
```

###dockerエラー③
実行コマンド

```
docker run
```

```
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"/ubuntu\": stat /ubuntu: no such file or directory": unknown.
```

####意味
該当のディレクトリないけど・・・
####解決
ディレクトリのタイプミスだったので修正

今後随時更新していきます！
Bootstrap 4のNavbarにおいて、メニューを右寄せにする方法

# 記事について
日本語の情報が意外となかったので

参考：
https://stackoverflow.com/questions/40178386/bootstrap-4-navbar-items-on-right-side

# 方法
**```navbar-nav``` クラスの要素に ```ml-auto``` クラスを追加する。**

以下の例では```<ul class="navbar-nav ml-auto">```の部分

```html
<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
  </div>
</nav>
```
（コードは[公式](https://getbootstrap.com/docs/4.0/components/navbar/)から）
【Linuxコマンド】 pwd コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 pwd コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)

## pwd コマンドとは
現在の作業ディレクトリの場所をフルパスで表示するLinuxコマンドです。 
"pwd" は "print working directory"の略です。

###  コマンドの使い方
```zsh:/home/hoge
$ pwd
/home/hoge
```



## man コマンドのオプション一覧
| オプション      |説明                      |
|:-------------|:------------------------|
| -L             |シンボリックリンクを考慮せずパスを表示する　　　　　　|
| -P             |シンボリックリンクの実体へのパスを表示する         |



### -L オプション


```zsh:/home/hoge
# ディレクトリ構成の確認
$ ls -l
-rw-r--r-- 1 hoge hoge   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2
lrwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test_link -> test2

$ cd test_link
$ pwd -L
/home/hoge/test_link
```

### -P オプション


```zsh:/home/hoge
# ディレクトリ構成の確認
$ ls -l
-rw-r--r-- 1 hoge hoge   11 Feb 24 17:11 hoge.txt
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test
drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2
lrwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test_link -> test2

$ cd test_link
$ pwd -P
/home/hoge/test2
```
## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
【Linuxコマンド】 mv コマンド オプション 一覧 【初学者必見】

# 【Linuxコマンド】 mv コマンド オプション 一覧 【初学者必見】

まとめ
[Linuxコマンド一覧](https://qiita.com//web-hackers/items/55329223ca39643d950e)


## mv コマンドとは
ファイルやディレクトリを移動するためのコマンドです。
"mv" は "move"の略です。

### mvコマンドの使い方
```zsh:/home/hoge
$ mv 移動元　移動先
```


## mvコマンドのオプション一覧

| オプション          |        説明        |
|:-----------------|:------------------|
| -b             |  上書きまたは削除されるファイルのバックアップを取る |
| -f           |            確認せず上書きをする |
| -i             |              上書きの場合は確認をする |
| -n               |                移動先に同名のファイルやディレクトリがある場合は移動しない |
| -u             |             移動元の方が新しい場合のみ上書きする |
| -v             |             移動の詳細情報を表示 |

### -bオプション
mvコマンドは基本は上書きをするので-bオプションをつけると上書きされるファイルのバックアップをとってくれる。

オプションがない場合の挙動

```zsh:/home/hoge/test
$ ls
test.txt ex.txt test.log

$ mv test.txt ex.txt

$ ex.txt test.log
```
-bオプションつけた場合の挙動

```zsh:/home/hoge/test
$ ls
test.txt ex.txt test.log

$ mv -b test.txt ex.txt

$ ex.txt~ ex.txt test.log
```
ファイル名の後ろに「~」がついているのがバックアップファイルです。


### -vオプション
移動の詳細情報を表示してくれる。
複数のファイルを移動した時の確認用によく使います。

```zsh:/home/hoge/test
$ ls
test.txt ex.txt test.log

$ mv -v test.txt ex.txt test.log test2
`test.txt' -> `test2/test.txt'
`ex.txt' -> `test2/ex.txt'
`test.log' -> `test2/test.log'

$ ls

$ cd ../test2

$ ls
test.txt ex.txt test.log
```


### renameとして使う
mvコマンドは
testディレクトリ内のtest.txtを
test2ディレクトリ内のtest2.txtという名前で移動することができます。

```zsh:/home/hoge/test2
$ ls

$ cd ../test

$ mv test.txt test2/test2.txt

$ cd ../test2

$ ls
test2.txt

```
もちろん同一ディレクトリ内でもrenameとして使えます。

なぜrenameとして使えるのか
そしてなぜ１Gの大容量でもmvコマンドは一瞬で移動できてしまうのか
ここ２つは実はmvコマンドのソースを見ると面白いのでまた、別の記事で書きます。


## その他のLinuxコマンドのオプション一覧
[pwd](https://qiita.com//web-hackers/items/705a296743322ea9561b), [mkdir](https://qiita.com//web-hackers/items/e6cf2b222fc035ee6766), [cd](88514031ed45a3ec1fd4), [cat](https://qiita.com//web-hackers/items/28bd20992b5fdc57b6a7), [cp](https://qiita.com//web-hackers/items/08420eb57b1765fdc65d), [ls](0a7c46c2930a831ee759), [touch](https://qiita.com//web-hackers/items/0e44fe3fc5c894790975), [less](https://qiita.com//web-hackers/items/1048bf3f10086f1f1241), [mv](https://qiita.com//web-hackers/items/8ecca14a948d7865ae0f), [rm](https://qiita.com//web-hackers/items/7bb34a0a6228a5c10da2), [ssh](b4dd0e0da54dbb0ab043), [man](https://qiita.com//web-hackers/items/a0985c6d2a6996089d46), **随時追加中**

### 広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方は**[こちら](https://web-hackers.com/)**へどうぞ
Rails+AxiosでCSRF対策用のトークンを使う設定


Rails+WebpackerのJavaScriptでAxiosを使うときは、POSTやPATCHで送信する際にCSRF対策用のトークンを指定する必要があります。送信のたびに指定するのは面倒なので、あらかじめ設定しておきましょう。

Axiosの[Interceptors](https://github.com/axios/axios#interceptors)の機能を使います。送信前にHTTPメソッドがPOST, PUT, PATCH, DELETEだったら、meta要素からトークンを取り出してHTTPヘッダにセットします。ここではjQueryを使っています。

サンプル: https://github.com/kazubon/blog-rails6-vuejs

```javascript:app/javascript/axios_config.js
import Axios from 'axios';

Axios.interceptors.request.use((config) => {
  if(['post', 'put', 'patch', 'delete'].includes(config.method)) {
    config.headers['X-CSRF-Token'] = $('meta[name="csrf-token"]').attr('content');
  }
  return config;
}, (error) => {
  return Promise.reject(error);
});
```

このJavaScritptをどこかで動かします。とりあえずapplication.jsに入れとけばいいでしょう。

```javascript:app/javascript/packs/application.js
import '../axios_config';
```

あとは、ふつうにAxiosが使えます。

```javascript
import Axios from 'axios';

Axios.post('/entries.json', { entry: this.entry });
```
CSS: CSSをHTMLに追加する


方法1：HEADタグ内に書く方法

```html:index.html

<header>

  <div class="area1">

  <style>
    h1 {
      color: blue;
    }
    .area1 {
      color: red;
    }
  </style>

  </div>

</header>

```

方法2：外部ファイルへリンクさせる方法

```html:index.html
<header>
  <link rel="stylesheet" href="css/styles.css">
</header>

```

```css:styles.css
h1 {
  color: blue;
}
```
Laravel 6.0, MySQL8.0 にて、SQLSTATE[HY000]: General error: 1822 Failed to add the foreign key constraint

```
PDOException::("SQLSTATE[HY000]: General error: 1822 Failed to add the foreign key constraint. Missing index for constraint 'advisors_user_id_foreign' in the referenced table 'users'")
```

Laravelでマイグレーション時に外部キーをセットしようとしたが、idがPKじゃ無くなっていたことにより上記エラーが出た

$table->primary('id')を加えてあげることで解決
Windows10にRuby on Rails環境をつくってみたらコケた

#Rials環境をWindows10でも作ろう
新しくWindows10を手に入れたので、こっちでも環境を作ろうと動き出しましたが、コケまくりました。
コケまくったので、解決法を記録として残そうと思います。

##Rubyのインストール
公式サイトで以下をダウンロードします。
https://rubyinstaller.org/downloads/
![コメント 2020-02-24 193536.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591859/ec8a1da6-f657-4f51-2a48-a8080b6c6f93.png)
私の環境では「rubyinstaller-devkit-2.6.5-1-x64」をダウンロードしました。

ダウンロード後、exeファイルを実行し、各内容はデフォルトで行いました。
参考サイト: [Windows10環境にRubyとRailsをインストールしてみた](https://qiita.com/Akari_Hara/items/0478a85c9c9b3974b083 "Windows10環境にRubyとRailsをインストールしてみた")
途中Toolkitのインストールがあったので、チェックを付けてインストール。

コマンドプロンプトかPower Shellを起動して、[ruby -v]でバージョンを確認します。

```
>ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x64-mingw32]
```

##Railsをインストール
先程立ち上げたコマンドプロンプトかPower Shwlleに[gem install rails]を入力してEnter

```
>gem install rails
```
そのままインストールが始まって勝手に終わります。
時間がかかるのでちょっと放置。。。

Railsをインストールしたら、バージョンを確認します。

```
>rails -v
Rails 6.0.2.1
```

##Bundlerのインストール
[gem install bundler]を入力してインストールします。

```
>gem install bundler
```

インストールが終わったらお決まりのバージョンの確認

```
>bundler -v
Bundler version 2.1.4
```

##Sqlite3もインストール
だいたいの説明がここが抜けてたりして、[Rails new]してSqlite3でコケる。。。
ので、これも忘れず行います。

```
>gem install sqlite3 --platform ruby
```

大丈夫だとは思うのですが、Path通してやるのが良いかもです。
色々としすぎて途中でpathを追加したので、そのままインストールして出来るのかわかりません。
###pathの通し方
↓サイトがわかりやすいです。
参考サイト:[Windows10で実行ファイルへのパスを通す手順](https://qiita.com/shuhey/items/7ee0d25f14a997c9e285 "Windows10で実行ファイルへのパスを通す手順")


```
>sqlite3 --version
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6
```

で、終わりかと思ったら。。。
これでrails newしたらnode.jsでコケたりします・・・・

なので、node.js入れます。

##Node.jsをインストールする
[Node.jsインストールページ](https://nodejs.org/ja/download/ "Node.jsインストールページ")
![コメント 2020-02-24 1935.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591859/6bc17982-5021-e104-20c8-3b9f765c8220.png)
私は『推奨版』のインストーラーでインストールしました。
node.jsのバージョンと同梱のnpmのバージョンを確認します。

```
>node -v
v12.16.1
>npm -v
6.13.4
```

もしバージョン確認ができなかった場合は、上で書いたpathを追加します。
自動で出来たような気もしますが、色々とやりすぎて記憶が曖昧なので一応追記しておきます。

追加するpathは

`C:\Program Files\nodejs\`
バックスラッシュになっていますが、Windowsなので「￥」です。
後ろの￥を忘れずに。。。

で、Yarnのインストール
先ほど入れた同梱のnpmでインストールします。

```
>npm install -g yarn
```

そして確認のための

```
>yarn -v
1.22.0
```

これで大丈夫！！！

##Railsアプリケーションを作る
アプリケーションの作り方は [Railsチュートリアル](https://railstutorial.jp/) を参考にします。

チュートリアルの[最初のアプリケーション](https://railstutorial.jp/chapters/beginning?version=5.1#sec-the_hello_application)通りにしてみます。

rails newはバージョンをしていせずにしました。

```
>rails new hello_app
```
めっちゃ時間かかります。。。。

```
>cd hello_app
```

でディレクトリを移動してから

```
>bundle install
```

したら

```
>rails server
```

http://localhost:3000/

で
![riding_rails_4th_edition_aws.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591859/34c89241-b307-9193-4bbc-1fe8d7747ceb.png)
が表示されてば完了です！！！


**お疲れさまでした！！！** 

昨日(2020/02/23)にやっと解決したのですが、それまで色々やりすぎて ~~何回も書きすぎ~~ うろ覚えもあります。
やらなくて良いこともあると良いのですが、エラー出まくったのを一つ一つ解決していったところ、この様になった次第です。
参考になると嬉しいです♪
Autonomous Database で DRCP（データベース常駐接続プーリング）が使えるようになったので、お試ししてみる。

表題の通り Autonomous Database で DRCP（データベース常駐接続プーリング）が使えるようになりますた。
使うのも非常に簡単なんで、お試ししてみるやで！彡(ﾟ)(ﾟ)

# 1. DRCP （データベース常駐接続プーリング）とは？

Oracle Database はマルチプロセス型のアーキテクチャなんですが、接続時の一連の処理(プロセス生成など)が高負荷です。
これを補うのがコネクション・プーリングですが、一般的にはAP層で用意するコネクション・プーリングをDB層で実装したものが DRCP です。

 > 5.2 データベース常駐接続プーリングの理解
 > https://docs.oracle.com/cd/F19136_01/admin/managing-processes.html#GUID-BB76E57C-3F16-4C85-AEF6-BA14FC1B4777

# 2. Autonomous Database の DRCP

Autonomous Database の DRCP は下記マニュアルに記載があります。

 > Use Database Resident Connection Pooling with Autonomous Database
 > https://docs.oracle.com/en/cloud/paas/atp-cloud/atpug/connect-drcp.html#GUID-E1337EC6-4A78-4199-84F0-A2739055F3FA

使い方は簡単で、ウォレットの接続文字列に「(SERVER=POOLED)」を書き足すだけです。用意した環境に、以下のような接続文字列をコピペで tnsnames.ora に書き足してみました。

```sql
aysatp_tp_drcp = (description= (retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)(host=adb.xx-xxxxx-x.oraclecloud.com))
(connect_data=(service_name=xxxxxxxxxxxxxxxx_aysatp_tp.atp.oraclecloud.com)
(SERVER=POOLED))
^^^^^^^^^^^^^^^ここを書き足した
(security=(ssl_server_cert_dn="CN=adb.xx-xxxxx-x.oraclecloud.com,OU=Oracle ADB XXXXX,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
```

# 3. DB接続を300回ループして計測するシェル

DB接続を300回ループするシェルを書いてみて、掛かった時間を計測してみます。

```sh
#!/bin/bash

#log file
LOG_FILE="/home/opc/work/loopcon_$$.log"
: > ${LOG_FILE}

#start time
TIME1=`date +%s.%N`
echo ${TIME1} >> ${LOG_FILE}

#connection test
for i in `seq 1 300`
do
sqlplus /nolog << EOF >> /dev/null 2>&1
SET TIMING ON
CONNECT ADMIN/xxxxxxxxxxxxxx@aysatp_tp_drcp
SET TIMING OFF
EXIT
EOF
done;

#end time
TIME2=`date +%s.%N`
echo ${TIME2} >> ${LOG_FILE}

#duration
DURATION=`echo "${TIME2} - ${TIME1}" | bc`
echo "Duration is ${DURATION} sec." >> ${LOG_FILE}
```

時刻計算の部分は、下記の記事を参考にさせて貰いました。

> dateコマンドを使って１秒未満のプログラム実行時間を計測する
> https://qiita.com/kaw/items/6d71d0b57aaf57fc9059

# 4. DRCP無し／有りでの接続時間(300回)の割合を比較

実際に掛かった時間を直接出すと色々とアレなので、接続時間(300回)の合計を割合で比較してみます。下記の環境で実行しました。

> Public Compute(踏み台) → Private Compute(※) → SGW → ATP(18c)
> ※18.5 Instant Client, ココでshellを実行

DRCP無しの時の接続時間(300回)を 100 とした時に、DRCP有りの接続時間(300回)の割合を出しています。
※下記は個人が独自計測した数値で、この数値をその他環境で保証するものではありません。
![adb_drcp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/a4e225bf-63c0-d7d5-a803-41511e1f3d45.jpeg)

うーん、25%改善ってところでしょうか。もう一声！彡(ﾟ)(ﾟ)

# 5. まとめ

もう少し改善するかと思ったら、DRCPで良くなるプロセス生成以外の処理が重いんですかね。暗号化部分とか……(ﾟεﾟ )
とまれ、どんどん良くなる Autonomous Database！ 出た当初比で、接続廻りは色々と改善されている感じです。体感なんですが、詰まりにくくなった。

皆さん、Autonomous Database をどんどん使って下さいやで彡(^)(^)
ゼロで割ったときの警告【invalid value encountered in true_divide】を回避する

#はじめに
　Pythonの学習メモです。

#問題
　numpyで作成した配列に0があった場合、0で割ると警告が出ます。（当たり前）

``` python:problem.py
import numpy as np

A = np.array([0, 1, 2])
B = np.array([0, 1, 1])

print(A/B)
```
```
出力> RuntimeWarning: invalid value encountered in true_divide
  print(A/B)
[nan  1.  2.]
```

　警告が出て、ゼロで割った箇所がnanになっています。

#解決方法

```python:solved.py
import numpy as np

A = np.array([0, 1, 2], dtype=float)
B = np.array([0, 1, 1], dtype=float)

C = np.divide(A, B, out=np.zeros_like(A), where=B!=0)
print(C)
```
```
出力> [0.  1.  2.]
```
　np.zeros_like(A)は、Aと同じ形のゼロで埋められた配列を返します。また、np.divide(A,B)でAをBで割る演算を行えます。ドキュメントによると、outは結果を保存する場所、whereは全入力に対して条件を指定するオプションです。whereが偽となる箇所（この場合はB[0]）の計算結果には0が代入されます。

#おわりに
　確かに警告はなくなりましたが、それに助けられることもあるので、本当に解決して良かったのかは疑問です。

　ご覧いただきありがとうございました。ご指摘等ございましたらコメント欄にお願いします。

#参考URL
https://stackoverflow.com/questions/26248654/how-to-return-0-with-divide-by-zero (2020年2月24日閲覧)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.divide.html(2020年2月24日閲覧)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros_like.html(2020年2月24日閲覧)
今日からGO言語 入門 〜Part1 Hello World 〜

## Go言語(Golang)とは
Go言語は、「Go」や「golang」とも呼ばれています。
2009年にGoogleが開発したオープンソースの静的型付プログラミング言語であり、Google社内におけるソフトウェア開発の生産性や拡張性のために開発されました。
Go言語の特徴として、

- 実行速度が速い
-  並列処理に強い
-  拡張性が高い
-  消費リソースが少ない
-  シンプルな言語構造

などなど、日本ではまだまだ少ないですが、今後伸びてくる言語だと私は思っています。
[Go言語についての詳細はこちら](https://proengineer.internous.co.jp/content/columnfeature/13619)

Go言語の学習のため、投稿してアプトプットして行こうかなと思っています。


## Go言語をインストールする

Go言語のインストール方法については、下記のリンクの公式サイトからファイルをダウンロードし、インストールしてください。
[公式サイト](https://golang.org/dl/)

インストールが完了したら、Windowsならコマンドライン、Macならターミナルを起動し、以下のコマンドを入力してください。
Goのバージョンが表示されていれば、インストールが完了しています。

```console
$ go version
go version go1.13.4 darwin/amd64

```

## 実際にプログラミングして動かしてみる

とりあえず、最初なのでHello Worldをコンソールに表示させたいと思います。

下記のソースをコピーしてファイルに貼り付けます。

そして、ファイルの名前をmain.goという名前で保存します。

```main.go
package main

import "fmt"

func main(){
  fmt.Prilnt("Hello World")
}
```

下記のコマンドを実行すれば、Hello Worldがコンソールに表示されます。

少しだけ、説明すると、fmtというのは、Go言語が提供する標準のライブラリのようなもので、

今回の場合、コンソールに表示するために使用しています。

またGo言語は、C言語とかと同じように、func mainを書かないとエラーに

なってしまいます。

```console
$ go run main.go
Hello World
```
Figma UIデザイン

ブラウザ上で使えるチームデザインツール(デスクトップアプリも有)である[**Figma**](https://www.figma.com/)の基本的な使い方の備忘

##ショートカットキー(一部)

```
M -> Move: カーソル
F -> Frame: フレーム
S -> Slice: 切り取り
R -> Rectangle: 矩形・長方形
L -> Line: 線
T -> Text: 文字列
C -> Comment: 注釈
```

##フレーム
Frameを選択すると通常のDesktopサイズはもちろん、Macbook ProやiPhone, Androidといったフレームサイズがデフォルトで用意されているので用途に合わせて選ぶ。

##正方形
Rectangle を選択し、Shift を押しながらドラッグ&ドロップすることで正方形を作れる。
Design タブの H(Height)の横のリンクアイコン(Constrain Propotions)をクリックすることで縦横比を固定できるので、そのうえで H,W の数値を丸める。
複数の正方形を作り、すべての正方形を選択し、右ペインDesign タブのプルダウンでDistribute Horizontal Spacingをクリックすることで均等な距離で配置できる。

##カラー
Fillがオブジェクトの塗りつぶし、Strokeが線の色を指定。また、色に変数を付けることができる。
オブジェクトの色を変更後、右ペインからCreateStyle設定。さらに左メニューLibraries -> Publish でチームで共通化できる。

##プロトタイプ
右ペインの Prototype タブで各ページ遷移のリンクを矢印をつかって視覚的に表現できる。
MLIR を Vulkan で動かすメモ(mlir-vulkan-runner)

## 背景

MLIR を Vulkan で動かしたい

LLVM Adds MLIR-Vulkan-Runner To Run MLIR On Vulkan-Enabled GPUs
https://www.phoronix.com/scan.php?page=news_item&px=LLVM-MLIR-Vulkan-Runner

mlir-vulkan-runner が追加されたので, これを試してみます.

## 試す

https://mlir.llvm.org/getting_started/

を参考にして, 一式ビルドします.

```
git clone https://github.com/llvm/llvm-project.git
mkdir llvm-project/build
cd llvm-project/build
cmake -G Ninja ../llvm \
   -DLLVM_ENABLE_PROJECTS=mlir \
   -DLLVM_BUILD_EXAMPLES=ON \
   -DLLVM_TARGETS_TO_BUILD="X86;NVPTX;AMDGPU" \
   -DCMAKE_BUILD_TYPE=Release \
   -DLLVM_ENABLE_ASSERTIONS=ON \
  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_LLD=ON
```

Vulkan 実行だけなら, NVPTX, AMDGPU ターゲットは不要かもしれません

cmake に, `-DMLIR_VULKAN_RUNNER_ENABLED=1` を追加しておきます.

ビルドには, vulkan ライブラリのインストールが必要かもしれません(Ubuntu なら apt で入る)

Ryzen9 3950X で, 4 分 45 秒くらいでした(clang, lld 利用)

ビルドできれば `bin/mlir-vulkan-runner` ができているはずです!

サンプルを動かしてみます.

```
$ ./bin/mlir-vulkan-runner ../mlir/test/mlir-vulkan-runner/addf.mlir  --shared-libs=lib/libvulkan-runtime-wrappers.so,lib/libmlir_runner_utils.so --entry-point-result=void
Emitting via RTDyldObjectLinkingLayer:
{ ("main", [Callable]), ("_mlir_main", [Callable]) }
Unranked Memref rank = 1 descriptor@ = 0x7ffe6d0ff900
Memref base@ = 0x32478d0 rank = 1 offset = 0 sizes = [8] strides = [1] data =
[3.3,  3.3,  3.3,  3.3,  3.3,  3.3,  3.3,  3.3]
```

Voala!

内部としては, LLVM が SPIR-V コード生成, mlir-vulkan-runner が Vulkan API いろいろ呼び出して, SPIR-V カーネルを実行, という感じになっています(IREE などは使っていない)

## SwiftShader で動かす

サーバで動かしているなど, Vulkan 対応 GPU がないときは, SwiftShader で動かせます!

冬到来! SwiftShader を使い人類史上最速で Vulkan プログラミングをはじめよう!
https://qiita.com/syoyo/items/ef5518f8c3638e50a6b9  

## Windows でビルドする.

Windows で llvm-project のビルドは, **llvm-tblgen の処理がとっっっても遅いです!** ビルドに 1 時間くらい時間かかります(しかもなぜか並列実行してくれない)

VULKAN_SDK 環境変数で Vulkan の場所を設定することで, Vulkan あり(mlir-vulan-runner)でビルドまでできるのを確認しました.
現状 mlir-vulkan-runner の unit test で memory allocation error あたりを出して落ちます.
しばし待てば治りそうです.


Windows の場合, LunarG の Vulkan SDK をインストールするのが手っ取り早いでしょうか.
ただ, Windows では LunarG Vulkan SDK は, installer 形式(exe)しかありません.

CI でビルドしたいなどの場合, Header(Vulkan-Headers)/Lib(Vulan-Loaders)をマニュアルで指定したい(self-contained でビルドしたい)場合は

SwiftShader の Software Vulkan 実装で自前 Vulkan アプリを作る準備(Linux)
https://qiita.com/syoyo/items/17a74b6809ebf1577ce7

にある vulkan-minimal-compute swiftshader branch https://github.com/syoyo/vulkan_minimal_compute/tree/swiftshader を参照するとよいでしょう.


## 今後に期待...?

**途中でプロジェクトキャンセルのリスク**はありますが, うまく開発が継続されれば, MLIR Vulkan で, 学習まで Vulkan でできる日は近いかもしれません(AMDGPU では, ROCm 不要で動かすことができる)
【EC2】Linuxを触れる程度のエンジニアが唐突にAWS界に放り込まれたときの横文字ガイド

## EC2
AWS版VPS｡
普通にSSHして､環境構築して使うコンピュータ
## Region/リージョン
国レベルのAWSの拠点の分け方｡
国外のアクセスからの速度を気にする必要があるなら検討する｡
関係ないなら､とりあえず東京リージョン
## AZ/アベイラビリティーゾーン
インスタンスをデプロイするDC（データセンター）を選ぶ｡物理的な分け方
複数のAZを選択しておくと､障害が起きてDCが落ちたときにパケットが残りのAZにあるインスタンスへ回される｡
## VPC/仮想プライベートクラウド
AZと異なりこちらは論理的な区分｡AWS内で自分専用のネットワークを構築するのに必要｡EC２を作成しても､VPCを定義しないと設置できない｡
また､インターネットゲートウェイ(WAN)を設置しないとインターネットに出れない｡
## サブネット
VPC内でサブネットを定義できる｡
## セキュリティグループ
ファイアウォール
EC2以外にもロードバランサーなどにも割り当てられる｡
## ELB/ElasticLoadBalancer
ロードバランサー｡EC2などのインスタンスはプライベートサブネット（WAN未割り当て）に配置して､ロードバランサーはパブリックサブネット（WAN割り当て済み）に配置するのが通常のやり方｡
## ターゲットグループ
ロードバランサーに対する､転送候補先をまとめたもの｡
ロードバランスするときに､ターゲットグループ内のインスタンスに対しアルゴリズムに応じて転送される｡
## リスナー
ロードバランサーの受信ポート｡ルールを設定でき､URLのパスに応じた転送先を指定できる｡
AP

CC(Common Criteria，情報セキュリティ国際評価基準)は、IT製品やシステムのセキュリティ機能を評価し認証するための基準を定めた規格です。ほぼそのままの形でISO 15408(日本版では JIS X 5070)として国際標準化されています。

ISO/IEC 15408は、情報技術の製品及びシステムのセキュリティ特性を評価するための国際規格です(JIS版は JIS X 5070)。評価対象はソフトウェアだけでなく、ハードウェア、ファームウェア、あるいは、システム全体も含まれます。また、製品の形態としては、ファイアウォールのように、直接セキュリティに関係する機能を提供する製品に限らず、オペレーティングシステム、データベース、あるいはグループウェアなど、保護すべき資源を保有する製品はすべて評価対象となります。
日本では ISO/IEC 15408に基づいて第三者機関が評価する「ITセキュリティ評価及び認証制度(JISEC)」がIPAにより運営されています。また、製品やシステムのセキュリティ特性は評価保証レベル(EAL: Evaluation Assurance Level)により7段階(EAL1～EAL7)に分類されています。

ISMS適合性評価制度における詳細管理策の基となった国際規格はどれか。
ISO/IEC 17799は、情報セキュリティ対策を行う際の実践規範を記したものであり、ベストプラクティスとして様々な管理策が記載されています。ISO/IEC17799:2000は、JIS X 5080:2002としてJIS化され、ISMS適合性評価制度におけるISMS認証基準のベースになりました。その後JIS Q 27002としてJIS規格化されています。
ISO 9001は、組織の品質マネジメントシステムの要求事項を定めた国際標準規格です。
ISO 14001は、組織の環境マネジメントシステムの要求事項を定めた国際標準規格です。
ISO/IEC 15408は、情報技術の製品及びシステムのセキュリティ特性を評価するための標準を定めた国際規格です。

著作権は、著作物を創作したものに対して認められる権利です。このため請負契約では、原則として請負業者が開発したプログラムの著作権は受託した請負業者に帰属します。これに対して派遣契約では、派遣先企業の指揮命令下で開発業務が行われるので、派遣元企業の従業員が開発したプログラムであっても、その著作権は派遣先に帰属します。
また企業の業務活動にて生産したプログラムの著作権は、個人ではなく企業に帰属します。

つまり、請負→発注先、派遣→派遣先
Githubが草を生やしてくれなくなった

バイト先で同じチームのリードエンジニアの方に
「毎日Githubに草を生やす気概はあるか。」
問われ、黙り込んでしまった。

今日から毎日Githubに草生やすぞ！

と意気込み、Githubに新規作成したリポジトリへpushした矢先に事件は起きた。

草が生えない。。。

これまで機嫌よく草を生やしてくれていたGithubの急な反抗に戸惑いつつも、しっかりと対応した。


(注 : 草とはGithubにおけるコントリビューションのことです。)
![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382190/2cf950af-35a5-a84c-457f-daa1bcf458e3.png)　←　これ


##草を生やしてくれる条件
色々調べてみたところ、Githubには草を生やす(コントリビューションが反映される)条件というものがしっかりと決まっているようでした。

以下の三つは草を生やすための絶対条件で、

```
①コミットに使用されるメールアドレスがGitHubアカウントと連携されていること
②フォークされたリポジトリではなく、独立したリポジトリでコミットされること
③デフォルトブランチもしくはProject Pages sitesでのコミットであること
```


さらに以下のうちどれか一つの条件を満たす必要があるみたいです。

```
⑤リポジトリの参加者もしくはリポジトリを所有しているチームのメンバーであること.
⑥フォークされたリポジトリを持っていること
⑦リポジトリにオープンなプルリクエストまたはイシューを持っていること
⑧スターをつけられたリポジトリを持っていること。
```

*Project Pages sites : Githubが提供する静的なウェブページをホスティングするサービス

③にもあるように、ブランチを切って作業しているコミットは反映されないようです。切ったブランチがデフォルトブランチにマージされることでやっとコントリビューションに反映されるらしい。

しかし今回の場合、
そもそも自分で作ったリポジトリのデフォルトブランチ(master)にcommitしていたので、疑われる部分は①の、

コミットに使用されるメールアドレスがGitHubアカウントと連携されていること

の部分だけだったため、ここを調べてみることにした。

##Githubは本当に自分を認識してくれているのか？

Githubと自分のメールアドレスが紐づいているかどうかをチェックできる方法があるようだったので以下の方法調べてみた。

1、まずcommitsの一覧画面から該当コミット(草を生やして欲しかったコミット)をクリックしurlを開く。

2、urlの語尾に `.patch` を付け足し読み込み。

するとコミットの情報がでてきます。
この画面の一番上のほうにある、 FROM と書いてある部分にGithubに登録しているメールアドレスが記載されていないといけないみたいだったのですが、これがありませんでした。

なんならコミットしているアカウントが個人のものではなく、バイト先で使用しているものになっていたこともここで判明しました。

<img width="791" alt="スクリーンショット 2020-02-24 19.46.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382190/85253980-ddfa-22c8-f777-d3d9d7ff6422.png">

なので、ターミナルで以下の実行をしてアカウント名とメールアドレスそれぞれ自分のアカウントのものに変更する。

```
$ git config —-global user.name "アカウント名" 
```

```
$ git config -—global user.email "Githubに登録しているメールアドレス" 
```

これで再びプッシュすると、ちゃんと草を生やしてくれるようになりました。

バイト先で使用しているアカウントと自分のアカウントを行ったり来たりしていたのが原因だったみたいです。

アカウントのアバター画像も全然違うのにコミット一覧をみた時にさえ気づかなかった自分が一番自分を認識できていなかった、
Githubのせいにしてしまってすみませんでした。
HTML5 の pattern 属性で全角英数と半角ｶﾀｶﾅを排除するバリデーションの正規表現サンプル

## サンプルコード

サンプルコード前半の input 要素にて、全角英数と半角ｶﾀｶﾅを排除するバリデーションを実施。
サンプルコード後半の script 要素にて、排除する範囲の文字を表示。

```html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>The pattern attribute</title>
</head>
<body>
  <form method="get">
    <input
      type="text"
      name="foo"
      size="32"
      title="全角英数と半角ｶﾀｶﾅは入力不可"
      placeholder="ｱｲｳｴｵ１２３４５"
      pattern="^[^\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF61-\uFF9F]*$"
      required
    >
    <input type="submit" value="送信">
  </form>

<script>
document.write('全角数字: ');
for(let c=0xFF10; c<=0xFF19; c++){
  document.write(String.fromCodePoint(c));
}
document.write('<br>');
document.write('全角英字(大文字): ');
for(let c=0xFF21; c<=0xFF3A; c++){
  document.write(String.fromCodePoint(c));
}
document.write('<br>');
document.write('全角英字(小文字): ');
for(let c=0xFF41; c<=0xFF5A; c++){
  document.write(String.fromCodePoint(c));
}
document.write('<br>');
document.write('半角カタカナ: ');
for(let c=0xFF61; c<=0xFF9F; c++){
  document.write(String.fromCodePoint(c));
}
document.write('<br>');
</script>
</body>
</html>
```

## 実行結果

実行環境: macOS Catalina + Google Chrome 79.0.3945.130

### 入力前の表示

<img width="624" alt="html5-input-pattern-1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139365/94db9b53-fb8f-4a2f-0613-2b2681a8ba1c.png">

### 未入力で送信ボタンを押した場合

<img width="624" alt="html5-input-pattern-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139365/7333eba3-de9a-ec41-3019-fa3f75825e40.png">

### 排除する文字が含まれている状態で送信ボタンを押した場合

<img width="624" alt="html5-input-pattern-3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139365/9c3e3de9-8a94-b990-ebbb-9216c802bdc1.png">

この例では title 属性で指定したテキストも表示されているが、このあたりの表示デザイン等はブラウザ依存になっている。「指定されている形式で入力してください。」が他のブラウザでは異なる文言になっていたり、「全角英数と半角ｶﾀｶﾅは入力不可」というテキストが表示されなかったりするので注意。

## 排除する範囲の文字

今回のバリデーションで排除する文字の一覧 (サンプルが script 要素で出力している内容)。

```
全角数字: ０１２３４５６７８９
全角英字(大文字): ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ
全角英字(小文字): ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ
半角カタカナ: ｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ
```

Unicode コードポイントによる範囲。

- 全角数字: 0xFF10 〜 0xFF19
- 全角英字(大文字): 0xFF21 〜 0xFF3A
- 全角英字(小文字): 0xFF41 〜 0xFF5A
- 半角カタカナ: 0xFF61 〜 0xFF9F

## 参考資料

- [HTML Standard \- The pattern attribute](https://html.spec.whatwg.org/multipage/input.html#the-pattern-attribute)
- [HTML5におけるinput要素のpattern、type属性のおさらい \- Qiita](https://qiita.com/ka215/items/795a179041c705bef03b)
- [Unicode一覧 F000\-FFFF \- Wikipedia](https://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_F000-FFFF)
- [半角カナ \- Wikipedia](https://ja.wikipedia.org/wiki/%E5%8D%8A%E8%A7%92%E3%82%AB%E3%83%8A)
deviseのユーザー登録失敗後にビューがずれる。

#登録画面ビュー
通常の登録画面でapp/view/devise/registrations/new.html.hamlにCSSを当てたもの
<img width="866" alt="スクリーンショット 2020-02-24 19.37.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566841/b7a6d7bc-450c-01a4-d0f5-3ff5a1637cf4.png">

これにフォームに空などの無効な値を入れると以下のようになる。
#登録失敗後のビュー
<img width="864" alt="スクリーンショット 2020-02-24 19.38.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566841/54d019db-d31d-95f2-7c2b-9dda58fe9ae5.png">

```
//登録失敗時のnickname部分のHTML
<span class="nickname">
<div class="field_with_errors"><label for="user_nickname">ニックネーム</label></div>
<div class="field_with_errors"><input type="text" value="" name="user[nickname]" id="user_nickname"></div>
</span>
```
"field_with_errors"クラスが自動生成されてしまっていることが原因

```registrations.scss
.field_with_errors {
  display: contents;
}
```
上記のCSSを追記して解決
D-Waveの量子コンピュータクラウド環境Leapを無料の範囲で使ってみる(1. アカウント登録)

## 1. はじめに
D-Waveが量子コンピュータ(量子アニーリング方式)のクラウド環境Leapを2018年10月にリリースしました。
最近、量子コンピュータをニュースでよく見かけるので、無料の範囲でLeapを使ってみようと思います。
今回はアカウントの登録について報告します。

## 2. 必要事項の入力
[アカウント登録のページ](https://cloud.dwavesys.com/leap/signup/)へ移動し、以下の項目を入力します。
- FIRST NAME (名)
- LAST NAME (姓)
- EMAIL (メールアドレス)
- I AM A... (職業)
- JOB TITLE (職名)
- COMPANY (会社)
- INDUSTRY (業界)
- COUNTRY (国)
- I AM INTERESTED IN QUANTUM COMPUTING FOR (～のための量子コンピュータに興味がある)
- PASSWORD (パスワード)
- TERMS AND CONDITIONS (規約と条件)

職業は"Independent developer"を選択、職名は"Engineer"を入力、会社は記載任意のため入力せず、業界は"Other"を選択、国は"Japan"を選択しました。
パスワードは8文字以上で、数字、アルファベット大文字、アルファベット小文字、記号がそれぞれ1文字以上含まれている必要があります。
また、規約と条件のところにある、Yes, I want to be kept in the loop about Leap and other offers and events from D-Wave (D-WaveからLeapやその他のオファーやイベントについての情報を共有したい)についてはチェック任意のためチェックをしませんでした。

入力が終わったら"SIGN UP"をクリックします。

## 3. メールによる通知
"SIGN UP"をクリックすると、登録したメールアドレスにD-Waveからアカウント作成確認のメールが届きます。
メールの文中のリンクをクリックすると、アカウントが作成されます。

## 4. おわりに
アカウント登録が完了すると、Trial Plan(試用プラン)としてLeapの環境が有効期限1ヶ月間で合計60秒使えるようになります。
量子コンピュータにより最適化問題を非常に短い時間(1ミリ秒程度)で解くことができるので、60秒とはいえ何回も実行できます。

[プランのページ](https://cloud.dwavesys.com/leap/plans/)によると、Trial Planが終わっても、Developer Planに移行することで、無料で毎月合計60秒使うことができるようです。
ただし、Developer Planでは、GitHubとの連携やソースコードの公開が求められているようです。
Developer Planに移行した際には移行方法や使い勝手がどう変わるかを報告しようと思います。