OmniAICreator/Qiita-1.07M huggingface dataset:
ReactiveProgrammingとかRxとかReactとか何がどう違うの？

似たような用語とか言葉が多く、よくわからなかったので簡単に調べてみました。それぞれは詳しく調べてないので間違っていたらすみません。
上から順番に見ていくとそれぞれの関係性がわかるかと思います。
## 英単語としてのReactive
反応する、反発する、状況の変化に対応するなどの意味

* [reactiveの意味・使い方｜英辞郎 on the WEB：アルク](https://eow.alc.co.jp/search?q=reactive)

## Reactive Programming
reactive programmingはデータフロー指向のプログラミングパラダイム
手続き型とかオブジェクト指向とかあるけどそういうレベルで異なるコンセプトのプログラミング手法ってことかな？

* [リアクティブプログラミングへの理解がイマイチだったのでまとめてみた \- UUUM攻殻機動隊\(エンジニアブログ\)](http://system.blog.uuum.jp/entry/%E3%83%AA%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%B8%E3%81%AE%E7%90%86%E8%A7%A3%E3%81%8C%E3%82%A4%E3%83%9E%E3%82%A4%E3%83%81%E3%81%A0%E3%81%A3)

それを関数型に落とし込んだのがFRP（Functional Reactive Programming）？
* [FRPライブラリを作ってわかった、FRPの意味と意義 \- Qiita](https://qiita.com/tshinsay/items/ab83dadceacc05df0ce9)

## Rxとは
Rxはc#のライブラリであるReactiveExtentionの略
RPを実現させるためのライブラリ（正確にはちょっと違うかも？）

* [はじめてのRx超入門 \- Qiita](https://qiita.com/nomok_/items/39b5d7c61810f274768d)

ReactiveExtensionはFRPのバリエーションの一つらしい

* [関数型プログラマのための Rx 入門（前編） \- Okapies' Archive](http://okapies.hateblo.jp/entry/2015/03/04/031148)


### Rxの各言語への拡張
Rxの思想は秀逸で他の言語へも拡張
RxJS、RxJava、RxSwift…

* [リアクティブプログラミングの概観と、各言語での実装について \| ALTUS\-FIVE](https://www.altus5.co.jp/blog/reactive-programming/2016/11/17/reactive-programming/)
* [各言語に広まったRx（Reactive Extensions、ReactiveX）の現状・これから \- Build Insider](https://www.buildinsider.net/column/kawai-yoshifumi/004)
* [RxJS / Reactive Extensions とは \- Qiita](https://qiita.com/bouzuya/items/4892dd8d21d2aa98f911)

## Reactとは

* [React \- Wikipedia](https://ja.wikipedia.org/wiki/React)

Facebookが開発しているUI用のJSライブラリ（フレームワーク？）

名前の由来や関係性として、ReactもRP/FRPを表現する仕組みがあるのでReactなのかな？

* [React入門 \- Qiita](https://qiita.com/bananaumai/items/c808841cb4e0311f97d4)

あくまでFacebookのような常に状態が変更される（リアクティブ）サイトのためのライブラリだからReactなのかも

* [Why is React called React? \- Quora](https://www.quora.com/Why-is-React-called-React)

### React Native
ReactをNative系（Android、iOS、UWP）に拡張したもの
webarenaでubuntu その55

#概要

webarenaでubuntu18.04やってみた。
練習問題やってみた。

#練習問題

いいねボタンを設置せよ。

#写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/77bbd364-31b9-40f8-d044-80287672194a.png)


#サンプルコード


```
<?php
	header("Access-Control-Allow-Origin: *");
	header("Content-Type:  application/json");
	$id = "test";
	$db = new PDO("mysql:host=localhost;dbname=mydb;", 'user', 'pass');
	if (!$db)
	{
		print "connect error!! <br>";
	}
	else
	{
		$sql = "SELECT * FROM counter WHERE id='$id'";
		$rs = $db->query($sql);
		if (!$rs)
		{
			print "Error in database!! 0 <br>";
			print $sql;
		}
		else
		{
			$userData = array();
			while ($row = $rs->fetch())
			{
    			$userData[] = array('count' => $row['cnt']);
			}
			echo json_encode($userData);
		}
	}
?>
```

#成果物

http://embed.plnkr.co/PKwLyPiQP2gHurD0i0pn/

以上。
#アジャイル開発 で朝会報告の「前日やったこと」「今日やること」「困っていること」の三本立ては定番だけど「その他」「気になっていること」でも良いのでは？

# 黄金テンプレ

- 前日やったこと
- 今日やること
- 困っていること

困っていることじゃないと書けない！

「この程度で困っているとか、フザケンナ」とか自分で思って書くのをやめてしまう！

# テンプレ案1

- 前日やったこと
- 今日やること
- その他、ひとこと

味気ない！むしろ困っていることが書きづらい！

# テンプレ案2

- 前日やったこと
- 今日やること
- 困っていること、ひとこと、その他なんでも

良いんじゃない？



# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2552








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
打ち合わせで積極的になるための、声掛けの技術

転職面接や勉強会の懇親会で、なかなか自分の意見を言えないことが多く、終わってからモヤモヤするのをなんとかしたかった。
なので、自分なりにやれることをやってみることにした。

## 実践したこと
自分から挨拶する。

面接なら、「今日はお時間をいただいてありがとうございます」という。
そのあと、「今日はどのように進めて行きましょうか？」と聞く。

勉強会なら、まず同席する人に挨拶する。
今日は何か楽しみにしてる話はありますか？と聞く。
懇親会では、今日は何が面白かったですか？と聞く。

## 実践した結果
当初のように、終わってからモヤモヤすることが少なくなった。
終始アタフタして終わることの多かった面接が、30分ほどで自分の緊張が解け、視野が拡がっていくのを感じた。

## まとめ
打ち合わせ、または話し合いの場で、自分から挨拶したり、質問したりすると、即効性はないけれど後からじわじわと効いてくる感じがあった。
相手の話を聞きつつ、こちらの意見も適切に述べるように、これからも意識してゆきたい。

## 参考資料
- https://www.hito-link.jp/media/column/active-listening
- [フィードバック入門 耳の痛いことを伝えて部下と職場を立て直す技術](https://www.amazon.co.jp/dp/B06VVQ8V36/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
- [ヤフーの1on1―――部下を成長させるコミュニケーションの技法](https://www.amazon.co.jp/%E3%83%A4%E3%83%95%E3%83%BC%E3%81%AE1on1%E2%80%95%E2%80%95%E2%80%95%E9%83%A8%E4%B8%8B%E3%82%92%E6%88%90%E9%95%B7%E3%81%95%E3%81%9B%E3%82%8B%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%8A%80%E6%B3%95-%E6%9C%AC%E9%96%93-%E6%B5%A9%E8%BC%94/dp/4478069786/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=&sr=)
railsでプロジェクトを丸々コピーする

# この記事でやること

* railsで作ったプロジェクトを丸々コピーする

# 手順

* githubからレポジトリのクローン
    * https://help.github.com/ja/github/creating-cloning-and-archiving-repositories/cloning-a-repository

```
rm -rf .git
git init
```

* dbの作成（rails db:migrate）
* configに含まれているapplication.rbとroutes.rbのアプリ名の変更
iOS13からBluetoothの使用許可を求められるようになった話

#概要
iOS13が公開され、アップデート後アプリを起動すると、Bluetoothの使用許可を求められた。
アプリ上特にBluetoothの使用していないし、今まで出なかったので、なぜ？と思い調べてみることに。

#結論
アプリ内で、位置情報を使用している場合は表示されるようになった模様。
iOS13からプライバシー保護に対して徹底されるようになったことが原因のようです。

位置情報とBluetoothについて関連性がいまいち分かっていない。。。
もし、ご存じの方がいらっしゃれば教えてください。
パラメータストアからEC2に環境変数を設定する

[AWS Systems Manager パラメータストア
](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-parameter-store.html)で階層構造で登録したパラメータをEC2で利用する方法のメモです

## 前提
* EC2インスタンスのtagにName=MyApp, Env=Devが設定されている
* roleにパラメータストアの権限が付与されている
* roleにEC2のreadonly権限が付与されている
* aws cli設定済み
* [jq](https://www.google.com/search?q=jq&oq=jq&aqs=chrome.0.69i59j0j69i59j0j69i60l2.680j0j7&sourceid=chrome&ie=UTF-8)がインストール済み

## パラメータストアに登録

```bash
aws ssm put-parameter --name "/MyApp/Dev/S3_BUCKET_NAME" --value "MyAppBucket" --type String
aws ssm put-parameter --name "/MyApp/Dev/AWS_ACCESS_KEY_ID" --value "dummy_s3_access_key" --type String
aws ssm put-parameter --name "/MyApp/Dev/AWS_SECRET_ACCESS_KEY" --value "dummy_s3_secret_key" --type "SecureString"
```

確認

```bash
aws ssm get-parameters-by-path --path "/MyApp/Dev"  --with-decryption
```

## EC2上でパラメータストアの情報を利用

```bash
#!/bin/sh

# ssm parameter-store settings
INSTANCE_ID=$(curl 169.254.169.254/latest/meta-data/instance-id)
ZONE=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone)
REGION=$(echo ${ZONE/%?/})
APP_NAME=$(aws --region ${REGION} ec2 describe-instances --instance-ids ${INSTANCE_ID} --query "Reservations[0].Instances[0].Tags[?Key=='Name'].Value" --output text)
APP_ENV=$(aws --region ${REGION} ec2 describe-instances --instance-ids ${INSTANCE_ID} --query "Reservations[0].Instances[0].Tags[?Key=='Env'].Value" --output text)
FILENAME="/var/www/${APP_NAME}/.env"

# put .env file
SSM_PARAMS=$(aws --region ${REGION} ssm get-parameters-by-path --path "/${APP_NAME}/${APP_ENV}"  --with-decryption)
for params in $(echo $SSM_PARAMS | jq -r '.Parameters[] | .Name + "=" + .Value'); do
    echo ${params##*/}
done > ${FILENAME}

echo "APP_ENV=${APP_ENV}" >> ${FILENAME}
```

* EC2のinstanceIdとregionを取得
* describe-instancesでタグ情報からNameとEnvを取得
* パラメータストアからget-parameters-by-pathで階層化されたパラメータをまとめて取得
* Key=Valueの形に整形して出力

です。

```bash
S3_BUCKET_NAME=MyAppBucket
AWS_ACCESS_KEY_ID=dummy_s3_access_key
AWS_SECRET_ACCESS_KEY=dummy_s3_secret_key
APP_ENV=Dev
```
このような内容で.envが作られます

## 最後に

LambdaやECSでの記事はあったのですが、EC2で汎用的に利用する例が見つからなかったので試してみました
このスクリプトをCodeDeployのBeforeInstallに登録して、デプロイすると.envファイルが最新の状態になるようにしています。
[ユーザーデータ](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html)に登録してEC2の初期化に利用したり、export命令に変えて環境変数を設定したりもできると思います
EC2のtagとパラメータストアの名称を合わせることで環境にあったパラメータを設定できるのは楽ですね
webarenaでubuntu その54

#概要

webarenaでubuntu18.04やってみた。
練習問題やってみた。

#練習問題

画像アクセスカウンターを表示、せよ。

#サンプルコード


```
<?php
	$id = "test";
	$db = new PDO("mysql:host=localhost;dbname=mydb;", 'user', 'pass');
	if (!$db)
	{
		print "connect error!! <br>";
	}
	else
	{
		$sql = "UPDATE counter SET cnt = cnt + 1 WHERE id='$id'";
		$db->query($sql);
		$sql = "SELECT * FROM counter WHERE id='$id'";
		$rs = $db->query($sql);
		if (!$rs)
		{
			print "Error in database!! 0 <br>";
			print $sql;
		}
		else
		{
			$count = 0;
			while ($row = $rs->fetch())
			{
    			$count = $row['cnt'];
			}
			header('Content-Type: image/gif');
			$im = imagecreatetruecolor(200, 50);
			$color = imagecolorallocate($im, 255, 255, 255);
			imagestring($im, 5, 10, 10, $count, $color);
			imagegif($im);
			imagedestroy($im);
		}
	}
?>
```

#成果物

https://embed.plnkr.co/PITdnKLapRfpgIy4juzc/

以上。
PHP+MySQL忘備録


# DB作成

##テーブル作成　

    CREATE TABLE my_items (id INT,item_name TEXT,price INT);

id,priceはINT(整数)
item_nameはTEXT（文字列)


##テーブルmy itemsにいちごとその値段を挿入

    INSERT INTO my_items SET id=1 ,item_name="いちご",price=200;

##フィールド削除
    DELETE FROM `my_items` WHERE item_name = "ぶどう"

delete from `テーブル名` where フィールド名 = "抽出条件"

## update
    UPDATE my_items SET price = 3500 where id =5

id5番の値段を、3500　にしろ


#PHPとMysql連携

>PHPでは、MySQLへ接続するための選択肢が2つあります。

>mysqliとPDO_MySQLです。

>## mysqli
>mysqliは、PHPからMySQLを操作するための多くの機能を備えた拡張モジュールです。

>また、手続き型かオブジェクト指向を選択することができるのが大きな特徴の1つです。基本的にはオブジェクト指向を選択するのがモダンなや>り方ですが、古いmyql関数から移行する場合など、状況によっては手続き型の方が便利なときもあります。

>## PDO_MySQL
>PDOは、PHPからDBを操作するためのインターフェイスです。PDO_MySQLは、そのPDOインターフェイスを実装したMySQL用のドライバです。

>MySQL以外のDBドライバもあるため、DBに囚われずシステムを設計・実装することができます。

引用元https://php-junkie.net/beginner/mysql-connection/#mysql


PHPとMysql連携方法は下記①でも②でも接続可能。
※個人的には、①のほうが明示的で好き

## データベース接続方法①
```
//データベース接続
$server = "mysqlxxx.db.sakura.ne.jp";
$userName = "hogehoge";
$password = "fugafuga";
$dbName = "hogehoge_result";

$mysqli = new mysqli($server, $userName, $password,$dbName);

```
## データベース接続方法②
```
$link = mysqli_connect("server","userName","password","dbNAME");

```



## データベース接続確認

```
if(!$link){
    echo "<p>データベース接続失敗</p>";
    exit;
}else{
    echo "<p>接続成功</p>";
}
```
AWS Lambda , API Gateway でAPIを作成するために概要を調査

Lambda+APIGatewayでのAPI作成のための事前調査メモ

#Lambdaとは
サーバーをプロビジョニングしたり管理する必要なく、
コードを実行できるコンピューティングサービスです。
つまり、サーバレスで関数を実行できるサービス。
※サーバレス　→　サーバの管理をしなくていい。（AWS側が行う）

ECS（コンテナ）と同じく、コンテナ型仮想化システム。

－－－－－－－－－－－－－
ECS　　　　　　 　Lambda
高　←　自由度→　低
多　←　手間　→　少
－－－－－－－－－－－－－

###その他特徴
・実行トリガーは、イベントやCron（スケジュール起動）
・実行時間のみ課金される。
・ECSより管理（設定）が簡単だが、その分自由度が低い
　‐実行時間15分
　‐ECSより、指定できるメモリやストレージが小さい
　‐実行環境が限定されている（python,node.jsなど）
・コンテナなので、コンテナを実行するのに時間がかかる。
　ただし、コンテナを実行してから破棄されるまでの間ははやい。


#API Gatewayとは
API の公開、保守、モニタリング、セキュリティ保護を
簡単に行えるフルマネージドサービスです。

▼リクエストは以下の流れとなります。（LambdaでAPIを作成する場合）
－－－－－－－－－－－－－－－－－－－－－－
クライアント　→　API Gateway　→　Lambda
－－－－－－－－－－－－－－－－－－－－－－

サポートしているAPIは、REST API と WebSocket API。

▼REST API
単方向通信。

▼WebSocket API
単方向通信も、双方向通信も可。
クライアントからのリクエストを受け、レスポンスを返すこともあれば、
API側からクライアントへリクエストを投げることもできる。

###何ができるのか。
クライアントとLambdaの中間にあることからわかるように、
アクセスをコントロールすることができます。

▼以下特徴
・アクセス制御
・リクエスト制御
　バックエンドのトラフィックを下げる。
　必須パラメータがない場合に、バックエンドのLambdaに到達する前に
　エラーではじくなど。
・流量制御（スロットリング）
　バックエンドのトラフィックの激増を下げる。
　秒間のリクエスト数、バースト時（数秒の間）のリクエスト数を
　設定することで、指定のリクエスト数を超えた場合はバックエンドに到達する前に、
　429 HTTP レスポンスを返却する。　
・キャッシュ
・バージョン管理
・ステージング
・モニタリング（コール、レイテンシー、エラー率など）

次回は、サンプル作成と実行をやってみようと思います！
vue.js コンテンツを右寄せ、中央揃えにする

# 要素を右寄せにする

参考

bootstrap-vue-layout
https://bootstrap-vue.js.org/docs/components/layout/

Bootstrap4に用意されているクラス【flex編】
https://webnetamemo.com/coding/bootstrap4/201906138320

<img width="871" alt="スクリーンショット 2019-10-04 8.07.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287122/886fb946-e9a2-65a5-331b-c695a2decbf4.png">

もう迷わない！CSS Flexboxの使い方を徹底解説
https://webdesign-trends.net/entry/8148

***
 
### b-container
親要素に指定する
flexboxの親要素(container)として扱われる
container以下の要素は全て子要素(item)になる

### d-flex
flexboxを使用するためのクラス

### justify-content-end
子要素を右寄せにするためのクラス

```js:some_component.vue
<b-container class="d-flex justify-content-end">
  hoge
</b-container>
```

これで要素を右寄せに出来る。

中央揃えの場合は

```html

justifiy-content-center
```

を使用。
HTMLのコメント入れ子

#概要
htmlでコメントアウトをしようと思った時に、入れ子になってしまうので、何かかんたんにコメントアウトできる方法がないか探していた。

#コメントアウト方法
2パターン方法があるようでした。
###パターン1
scriptタグを使用し、/* */で囲ってコメントアウトにする。

```
<html>
    <head></head>
    <body>
        <div>
            <script>/*
                <!-- コメントアウト -->
            */</script>
        </div>
    </body>
</html>
```

###パターン2
styleタグを使用し、/* */で囲ってコメントアウトにする。

```
<html>
    <head></head>
    <body>
        <div>
            <style>/*
                <!-- コメントアウト -->
            */</style>
        </div>
    </body>
</html>
```

これで、入れ子の場合簡単にコメントアウト可能。
コーディングの際に、使うことが多そう。
GoogleスプレッドシートとExcelの違いをメッセージでご確認下さい。(Win版とAndroid版)

最近同じような投稿をしました。
#おまけ
Googleスプレッドシートの最初は、入力について
　「double enter」？で改行
　「single enter」？で編集状態になる。
excelで,F2キーばっかり押していた気がする。
①思いついたのは、誰(会社名？プログラム名?)ですか？
②慣れが必要ですか？

(参考)Googleお役立ちテクニック - Googleスプレッドシートですばやくデータを入力する 
＞「Enter」キーを押すだけで編集状態になる
https://news.mynavi.jp/article/20170807-google-tips105/

#環境
OS             :win7とAndroid7          2通り
ブラウザ:無しとie11 とchrom      3通り
表計算    :excelとspreadsheet     2通り

#５ケースを考えてみた
ケース1.win7&無し&excel
ケース2.win7&ie11&spreadsheet
ケース3.win7&chrom&spreadsheet
ケース4.android7&無し&excel(android版)
ケース5.android7&chrom&spreadsheet

#メッセージいろいろ
###ケース1.win7&無し&excel
Microsoft Excel 2013 のツールバー
「
xxx - Excel Microsoft Excel ヘルプ (F1) 最小化 最大化 閉じる
ファイル ホーム 挿入 ページ レイアウト 数式 データ 校閲 表示 アドイン
」

###ケース2.win7&ie11&spreadsheet
spreadsheet のツールバー
「
ファイル 編集 表示 挿入 表示形式 データ ツール アドオン ヘルプ 最終編集: 10 分前
」

「
処理中...
」
「
google.com は応答していません。
」
「
フィルタ ビューを初めて使用しました。
あなたのビューのみが変更されましたが、フィルタ ビューのリストは共同編集者と共有されます。
重要:データを編集すると、すべてのユーザーのデータが変更されます。
詳細 閉じる
」

「
Excel には Google スプレッドシートでは対応していない機能があり、そうした機能を使って編集された箇所に変更を加えても反映されません
詳細を表示
xxx
共有
変更
xxx xxx
xxx atmark gmail.com
プライバシー
Google アカウ
xxx xxx
xxx atmark gmail.com（デフォルト）
すべてのブランド アカウント ≫
アカウントを追加
ログアウト

ファイル 編集 表示 挿入 表示形式 データ ツール フォーム アドオン ヘルプ
ユーザー補助機能
最終編集: 31 分前
ドライブに変更を保存できませんでした
新しい変更を表示
\
%
123
デフォルト (Calibri)
ユーザー補助機能
グラフをコピー
グラフを編集
グラフを公開
グラフをダウンロード
グラフを削除
」

###ケース3.win7&chrom&spreadsheet

「
Loading,please wait.......
」
以下続く.......

#外部参照
(参考)Googleスプレッドシートの使い方や機能がわかるショートカットキー全まとめ一覧【初心者こそ必見】
https://caymezon.com/googlespreadsheet-menu-shortcutkey/#link0
cordovaアプリ(Android) 64bit化対応備忘録

初投稿です。
少し前の内容になりますが、備忘録を兼ねて投稿します。

#概要
現在アプリの開発にcordovaを使用している。
2019年8月1日以降、アプリが64bitデバイスをサポートしていることが必須となったため、Google Playにアプリをアップロードすることができなくなる。

#問題点
Androidアプリをビルドした際、32bit版としてapkファイルが生成される。

#対応
「cordova-plugin-crosswalk-webview」のプラグインを外すことで、64bitデバイスをサポートしているapkファイルの生成が可能になった。
どうやら、「cordova-plugin-crosswalk-webview」のプラグインは、Android5.0以前の端末はOS標準のブラウザがWebViewとして利用されるので、機種依存などを防ぐために使用していた模様。
CentOS6 系で squid が利用できる file descriptor の数を増やす方法

CentOS 6 系の場合です。

1. 利用可能な file descriptor 数の現在値の確認します。

1-1. システム全体

ulimit -a で open files を確認します。

```
...(snip)...
open files (-n) 1024
...(snip)...
```

1-2. squid

squid が現在利用可能な file descriptor の数を確認します。

```
$ squidclient mgr:info | grep 'file descri'
Maximum number of file descriptors:1024
Available number of file descriptors:1016
Reserved number of file descriptors: 100
```

以下の方法でも確認できます。

```
$ less /var/log/squid/cache.log
...(snip)...
With 1024 file descriptors available
...(snip)...
```

上記から分かったことなんですが、
デフォルトで squid は、1024 の file descriptor を利用できるようです。

では、この数を増やしてみましょう。
一例として、65535 にしてみます。

2. squid が利用できる file descriptor の数を増やします。

2-1. /etc/security/limits.conf に以下を追記します。

```
* - nofile 65535
```

これは、すべてのユーザーの、file descriptor の soft, hard 設定を 65535 にする、です。

ログアウトします。
ulimit -a で open files を確認します。

```
...(snip)...
open files (-n) 65535
...(snip)...
```

ここで、/etc/squid/squid.conf に以下を追加しましょう。

```
max_filedesc 65535
```

サービスを再起動します。

```
# service squid restart
```

再度、squid が現在利用可能な file descriptor の数を確認します。

```
$ squidclient mgr:info | grep 'file descri'
Maximum number of file descriptors:65535
Available number of file descriptors:65527
Reserved number of file descriptors: 100
```

以下の方法でも確認できますよ。

```
$ less /var/log/squid/cache.log
...(snip)...
With 65535 file descriptors available
...(snip)...
```

それとも、/proc/<PID>/limits でも確認できます。

利用できる file descriptor の数が増えた。

ここで、疑問なんですけど。。
以下のコマンドを実行して数を確認すると、こんなん出てきます。

```
$ cat /proc/sys/fs/file-max
386196
```

実際は、上記の file-max の値は越えられない、ってことですかね。
65535 なら、十分範囲内ですから、まあいいかな。
Visual Studio for MacでXamarin Formの最新版MvvmCrossを使う方法

# 概要
Visual Studio for Mac(2019)でXamarin FormsのMvvmCrossにおいて最新版(2019.10現在、6.4.1)を使用して開発をしたい場合に色々と苦労したので解決した際のメモ。

# 問題点
MvvmCross公式ドキュメントの導入で紹介されているVS for Mac用のテンプレートが古く、バージョン5.x用のテンプレートとなっている。
5.xと6.xでは破壊的な変更が数多くあり、単純にIDEの設定でランタイムのバージョンアップをするだけでは対応は不可。

公式ドキュメントの導入
https://www.mvvmcross.com/documentation/getting-started/getting-started

5.xと6.xへの変更方法(変更点多数)
https://www.mvvmcross.com/documentation/upgrading/upgrade-to-mvvmcross-60?scroll=2083

唯一のVS For Macのテンプレート(MvvmCross Template Pack)
http://addins.monodevelop.com/Project/Index/227

# 解決策

最終的にWindowsのVisual Studioを使用した。

1. 6.xに対応したテンプレートでプロジェクトを作成。
2. GitHubなりUSBなりでMac側に持ってきて、slnファイルをVS for Macでそのまま開く事で使うことができた。

今回は[MvxScaffolding](https://marketplace.visualstudio.com/items?itemName=Plac3Hold3r.MvxScaffolding)といったテンプレート作成のアドインを使用して作成した。
デフォルトだと最新の6.4になっていないので、あとはNugetでバージョンアップを行うことで最新バージョンのものが使用可能。
jQuery UI(Bootstrap4) オートコンプリート　候補背景色が透明になってしまう。→解決

会社の受付フォームを趣味でごりごり作成しております。
オートコンプリートを実装しようとしているのですが、候補背景色が、
透明になってしまいます。透明以外の色(白色)にしたいです。どなた様かご教授お願いします。
**⇒jQueryUI CSS を定義が必要なことがわかりました。追記したら解決しました。**

```html:form.html
↓追記したら解決しました。
<link type="text/css" rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/cupertino/jquery-ui.min.css" />

```
 

![aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433444/db50bc3c-d7e0-e2b7-51ae-b26e7eaaa103.png)

```haml:form.html
<div class="col-sm-3 mb-5">
   <input id="検索" type="text" class="form-control" placeholder="検索">
</div>
```

```js:main.js
  $(function () {
    var availableTags = [
      "ActionScript", "AppleScript", "Asp", "BASIC", "C",
      "C++", "Clojure", "COBOL", "ColdFusion", "Erlang",
      "Fortran", "Groovy", "Haskell", "Java", "JavaScript",
      "Lisp", "Perl", "PHP", "Python", "Ruby",
      "Scala", "Scheme"
    ];
    $("#検索").autocomplete({
      source: availableTags
    });
  });
```
rubyのselenium-webdriverで同じclass名の要素を取る！class名の中の空白も

ど素人がrubyのselenium-webdriverを使って七転八倒した記録です。
ただの忘れやすい個人の備忘録です。生暖かい目でご覧ください。
アドバイスとかあればよろしくお願いいたします。
selenium-webdriver 3.142.2を使ってます。

同じclass名の要素を取ろうとするとき、
driver.find_element(:class, 'クラス名').text
では、最初の要素しか取れない。

https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Find

にあるように
driver.find_elements(:class, 'クラス名').text
なら戻り値が配列で取れる。

これに数日かかった模様ｗ

xpathやcssとかでも取れるけど、タグは模様替えで簡単に変わってしまうのでできるだけ避けたかった

もう一つ。class名に空白がある場合エラーがでる。
driver.find_element(:class, '空白までのクラス名').find_element(:class, '空白後のクラス名').text

↑のようにメソッドチェーンで分けるとうまく行く
3層ニューラルネットワークの実装

#chainerを使って簡単な3層のニューラルネットワークを実装
今回はDeep Learning向けのフレームワークであるChainerを使ってモデルを作成。
1.入力層、隠れ層、出力層のノード数をそれぞれ3,2,4
2.全結合の順伝播型ニューラルネットワーク
3.活性化関数として今回はrelu関数

```python:neuralnetwork.py
import chainer
import chainer.links as L
import chainer.functions as F
import numpy as np
np.random.seed(1)
fc1 = L.Linear(3, 2)
fc2 = L.Linear(2, 4)
x = np.array([[1, 2, 3]], "f")
u1 = fc1(x)
z1 = F.relu(u1)
y = fc2(z1)
```

また重み行列Wとバイアスベクトルbの結果も表示

```
fc1.W
fc1.b
fc2.W
fc2.b
```
使用した関数のリンク
chainer.links.Linear(https://docs.chainer.org/en/stable/reference/generated/chainer.links.Linear.html#chainer.links.Linear)
chainer.functions.relu(https://docs.chainer.org/en/stable/reference/generated/chainer.functions.relu.html#chainer.functions.relu)
ARFoundationをLWRP(URP)環境下で動かす手順

#　経緯
ARFoundationを使ったアプリの中にVFX Graphを使用したパーティクル表現を導入しようとしてLightWeightRenderPipeline(LWRP)にレンダリングを切り替えたところ、ビルドするとカメラが真っ暗になり何も写されなくなった為。
#　内容
LWRP環境下でARFoundationアプリを動かす方法。
また名称が変わっただけですがUniversal Render Pipeline(URP)でも以下の記事のLWRPの部分をURPにすることで動作します。

#　環境
Unity 2019.2.5f1
AR Foundation 3.0.0-preview3 (ARFoundationのLWRPサポートは3.0.0-preview1からになります。)
AR Core XR Plugin
AR Kit XR Plugin
Light Weight RP version 6.9.1(以下の方法は5.7.2~,URPの場合は7.0.0~)

#　方法
まずAsset->Create->Rendering->LWRP->ForwardRendererを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366802/9462277b-819e-7093-9e97-93ac7c286ae4.png)
次にRenderer Features ListにAR Background Renderer Featureを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366802/84c0992a-98d7-66ba-36ba-84670e6405cc.png)
そうしたらGraphicsのScriptable Render Pipeline Settingに追加するためのRenderPipelineをAsset->Create->Rendering->LWRP->Pipeline Assetから作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366802/6e68fe62-70de-d96c-c17e-0ff920f91200.png)
Pipelineの設定でGeneralの項目のRender TypeをCustomにしDataに先ほど作ったForward Renderを適用させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366802/259b8e1e-2a83-7af5-e164-a5f6955faf67.png)
Edit->Project Setting->GraphicsのScriptable Render Pipeline Settingsに作ったPipelineを適用させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366802/8a56f9c0-1dc7-0fb3-7607-bda475438d96.png)

これでLWRP環境下でもARFoundationをつかってちゃんと描写することができます。

# 参考資料
https://forum.unity.com/threads/configuring-ar-foundation-3-0-0-preview-to-work-with-lwrp-or-urp.736583/
Next v9 + TypeScript の環境構築

`NextJS` + `TypeScript` 環境構築手順の備忘録です。バージョンは`Next9.0.7`。



公式: [Learn - TypeScript | Next.js](https://nextjs.org/learn/excel/typescript)

## 手順
プロジェクトディレクトリを作成してパッケージをインストールします。
パッケージ: `react` `react-dom` `next` `typescript` `@types/react` `@types/react-dom` `@types/node`

```terminal
mkdir next-ts
cd next-ts
mkdir pages
touch pages/index.tsx
```

```terminal
yarn add react react-dom next typescript @types/react @types/react-dom @types/node
```

`package.json` の `scripts` を追加します。

```package.json
...
"scripts": {
 "dev": "next",
 "build": "next build",
 "start": "next start"
}
...
```

## 動作確認
`pages/index.tsx`で動作を確認します。

```pages/index.tsx
const IndexPage = () => <h1>Helloworld!</h1>;
export default IndexPage;
```

```terminal
npm run dev
```

初回起動時に`next-env.d.ts`と`tsconfig.json`が生成されます。
<img width="573" alt="ts01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67707/0f7bd154-155c-d568-0116-a1b1bdb2396e.png">

## TypeScriptが効いているか確認します
タイプチェックをストリクトモードにしてみます。

```tsconfig.json
...
"strict": true,
...
```

```pages/index.tsx
const IndexPage = ({ userAgent }) => (
 <h1>Hello world! - useragent: {userAgent}</h1>
);

IndexPage.getInitialProps = async ({ req }) => {
  const userAgent = req ? req.headers['user-agent'] : navigator.userAgent;
  return { userAgent };
};

export default IndexPage;
```
`VS Code`に`TypeScript`プラグインを入れている場合はエディタ側にエラー表示がでていると思います。

サーバーを`npm run dev`で再起動します。

ブラウザとターミナル両方にエラーがでます。
<img width="500" alt="ts02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67707/f5b19cdc-02d5-75e1-3bcc-6191d0a61c98.png">


最後にタイプエラーを修正して終わりにします。

```pages/index.tsx
import { NextPage } from 'next';

const IndexPage: NextPage<{ userAgent: string }> = ({ userAgent }) => (
  <h1>Hello world! - useragent: {userAgent}</h1>
);

IndexPage.getInitialProps = async ({ req }) => {
  const userAgent = req ? req.headers['user-agent'] || '' : navigator.userAgent;
  return { userAgent };
};
export default IndexPage;
```
PSR-12 への対応状況

[PHP-FIG](https://www.php-fig.org) というPHPフレームワークなどの開発者のグループが公開している PHP Standards Recommendations (PSR) の
[PSR-12: Extended Coding Style](https://www.php-fig.org/psr/psr-12/) が 2019/08/10(土) に承認されました。
これにより2012年からあった [PSR-2: Coding Style Guide](https://www.php-fig.org/psr/psr-2/) は非推奨となっています。

PSR はPHP公式で策定されているものではないので、PSR-12 や PSR-2 は必ず守らなければならないコーディング規約というものではありませんが、有名どころのフレームワーク・パッケージで採用されており自身のプロジェクトで採用するメリットはあると思います。
参考: [PSRの誤解 \- Qiita](https://qiita.com/tadsan/items/942a381e952e12a8fa5a)

PSR-12 を採用するためのツールなどの対応状況をまとめます。

## IDE

| 名前 | 対応バージョン | リンク |
|---|---|---|
| [PhpStorm](https://www.jetbrains.com/phpstorm/) | [2019.3](https://twitter.com/phpstorm/status/1200017730348425223) |  |

## Code Quality

| 名前 | 対応バージョン | リンク |
|---|---|---|
| [PHP Coding Standards Fixer](https://cs.symfony.com/) | [2.18.0](https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/tag/v2.18.0) | [PSR\-12 Support · Issue \#4502 · FriendsOfPHP/PHP\-CS\-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues/4502) |
| [PHP_CodeSniffer](https://pear.php.net/package/PHP_CodeSniffer) | [3.5.0](https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/3.5.0) |  |
DB系用語まとめ

## 目的

- DBの勉強をしているときに理解できていない用語をまとめる。  
※どんどん追記予定

### リレーショナルデータベース(RDB)

- 関連性によって管理されるデータベースのこと。
- すべてのデータを表形式で表現する。

### テーブル

- DBのデータが入る表のこと。

### カラム

- テーブルの列のこと。

### レコード

- テーブルの行のこと。

### フィールド

- テーブル内の要素のこと。
- テーブル内の一個のセルのこと。

### SQL

- Structured Query Languageの略である。
- データベース言語のこと。

### MySQL

- Web系で主に使われているデータベースのこと。
- オープンソースデータベースの一つである。
- 使用しやすく、高速である。

### クエリ

- 命令のこと。
- DB使用者が発行するもの。

### トランザクション

- クエリの集合体である。
- 含まれる処理が完遂されたときのみ処理が確定される。
- 含まれる処理が一つでも失敗したらすべての処理が取り消される。
- データの整合性を保つための機能

### データ型

- データ自体の属性である。
- 数値、文字列、バイナリ、日付、時間、などが存在する。

### NULL値

- データが存在しないことを表す値である。
- 空文字や数値の0とは異なる。
- 空文字や数値などのはデータとして前述のものが存在するためNULL値ではない。

### SQL命令

- DDL、DML、DCLの三種類が存在する。
- DDL(Data Definition Language)はデータ定義言語でDBやテーブルを作成するときに使用する。
- DML(Data Manipulation Language)はデータ操作言語でデータを操作するときに使用する。
- DCL(DataControl Language)はデータ制御言語でトランザクション制御に使用する。

### SQLの予約語

- SQLの命令として定義されいている単語のこと。
- 半角のアルファベットが使われる。
- `CREATE`とか`ALTER`とかがそう。

### リテラル

- SQL文中に書かれる具体的なデータのこと。
- 数値リテラル、文字リテラル、日付リテラルなどがある。
- 対応するデータ型が決まっている。

|リテラル  |データ型  |
|---|---|
|数値リテラル  |TINYINT,SMALLINT,MEDIUMINT,INTEGER,BIGINTほか  |
|文字リテラル  |CHAR,VARCHAR,TEXTほか  |
|日付リテラル  |DATE,DATETIME,TIMESTAMPほか  |

### migrate(マイグレート)

- データを別環境に移したりすること。
- 新しい環境に切り替えたりすること。

### 主キー

- テーブル内のレコードの一つを必ず特定できる鍵のこと。
- 一位に識別することのできるもののこと。
- 1テーブルに一つ必ずないといけないけど、一つ以上あってもいけない。
- ユーザIDなどを指す。

### 外部キー

- テーブルに対しての制約を課すためのもの。
- 外部キーのカラムに存在しないものはテーブルに登録できない。
- テーブルにデータを登録する際の見張り番的なもの。
- 可変長文字列が入ったカラムは外部キーとしないことが一般的である。
- 別のテーブルを参照している列のこと。

### 正規化

- データ形式のこと。
- 保存するデータの冗長性を排除し、一貫性と効率性を保持する。
- 5段階存在する。
- データをDBの共通ルールにのっとった形にすること。

### 関数従属性

- 入力値をX、出力をYとしたときの、数式`X = Y`を「YはXに従属していると」言う。
- DBのテーブルにおける「X列の値を決めればY列の値が一つ決まる」ことを指す。

### インデックス

- データを見つけるためのものである。
- 身近なもので近いイメージは本の索引のページである。
- 一つの列に対して作成する。
- テーブルの列中に入っているデータの種類が多いときに能力を発揮する。(dateの列に入っている値が100種類あるときなど)
- 種類が多くても、一致しているものが多いと能力は発揮できない。(dateの列に入っている値が100種類あるが、総データの99パーセントが10月08日である場合など)
- 主キーや、列内データが一意のものに対して作成しても意味がない。
【初心者向け】Android アプリの基本：アクティビティ

###アクティビティの作り方
1. Activity クラスを継承したクラスを作る。
2. UIを定義したレイアウトファイルを用意。
3. onCreate() メソッドを定義。
4. onCreate() 内で setContentView() を使ってレイアウトファイルのビュー定義をアクティビティに追加。

###アクティビティの起動
1. インテントをインスタンス化する。

        Intent intent = new Intent(this, xxxActivity.class);

2. インテントを引数にして、startActivity()メソッドを実行する。

        startActivity(intent);

###アクティビティの起動メソッド 2種
- startActivity()：アクティビティを起動するのみ。
- startActivityForResult()：アクティビティを起動し、それが終了した際に起動元に結果を返す。

###アクティビティの終了
- finish()メソッドで終了する。<br>
【注意】finish()でアクティビティは閉じられるが、そのアクティビティが直ぐに破棄される(onDestroy()が呼ばれる)わけではない。アクティビティ破棄がスケジュールされてそれが処理されて onDestory() となる。

   


###アクティビティ間でのデータ受け渡し(例：AからBへ)
1. インテントのインスタンス生成
2. B を起動するインテントのエクストラに渡したいデータをセットする。
3. B を起動する。<br>
       ※ 起動には `startActivity()`/`startActivityForResult()` どちらを用いてもよい。
4. B にて、 `Activity#getIntent()` でインテントを取得する
5. そこからデータ(エクストラ)を取り出す。(データ型に合わせ、getXXExtraを使う)

###B(終了)→Aの遷移で、BからAのアクティビティへのデータ渡し
1. B の起動に `startActivityForResult()` を用いる。
2. B を終了する前に返したいデータをエクストラに設定したインテントを作り`Activity#setResult()` でそのインテントをセット。
3. A に戻ると A 側で `onActivityResult()` メソッドが自動で呼ばれ、その引数で B で `setResult()` したインテントが渡されるのでそこでデータを受け取る。

###アクティビティが再生成される状況(２つ)
- 端末の回転などのコンフィグレーションが変更されたとき。
- アクティビティをバックグラウンドにし、メモリ不足などでアクティビティが破棄され、そのあとフォアグラウンドに戻したとき。

###再生成後のデータの変化
- 再生成後、フィールド値は消える。
- ビューの値：消えない<br>
    標準ビューは再生成で状態を復元するようなメソッドがある。 

###アクティビティの状態を保存・復元の方法
- **保存**<br>
   - onSaveInstanceState() が onStop() の前に必ず呼ばれる。
   - onSaveInstanceState() の引数に渡される Bundle (outState) にセットすることで行う。

- **復元**<br>
   - onRestoreInstanceState() は onResume() の前だが、再生成時のときしか呼ばれない。
   - onRestoreInstanceState() または onCreate() の引数の Bundle (savedInstanceState) から取り出して行う。
 -  再生成ではない場合、onCreate() の savedInstanceState は null が渡される。
HTMLとCSSをどうやって学習すればいいか

#初心者ですが、どうやったクラウドワークスで仕事をとれるかについて
最低条件ですが、サイト運営を実施している方が多い。
そこで、どうやってそのサイト運営と自分のスキルを見つけるかについて、**サイト内で技術情報や、ツールのアプリを作ったりしている。**

当たり前な事ですが、中々難しいとかんじます。
そもそもツールってどうやってツール作るの等とか、会社帰りにそんな時間を作り出せる能力が超人的。

うらやましいと思う。世の人達は激務の中でも時間を見つけつつプログラミングでソフト作成とか
超人的なプロなのかなと思う。

愚痴をいってもしょうがないので、さらに深堀りすると、

| 順番 | 行動 |
|:-:|:-:|
|step1|個人サイトを作成   |
|step2|ポートフォリオ作成|
|step3|中身を宣伝|
|step4|クラウドワークス架空で仕事をやってみる|
|step5|売り込みを実施する。|
|step6|架空仕事の類似アプリをサイトに真似してみたで作る。|

こういった上記行動を繰り返し実施する。
webライティングは楽しいですが、慣れるまでどうやったら早くまとめて情報発信していく。
といったことが楽しいのかもしれない。

ライティングもやった方がいいと感じました。
結構頭使うし、情報収集能力が上がるから勉強効率も上がる気がいたします。

でも辛いけと、まずは、月1万円から収入を得ようと目指そうと思います。
【初心者向け】Android アプリの基本

###プロジェクトの主要なフォルダ構成
- プロジェクト名/     プロジェクトのルート
    - app/            サブプロジェクトのルート
      - libs/       サブプロジェクトのjar配置場所
      - src/
           - androidTest/    テストコード
           - main/
             - java/       Javaソースコード
             - res/        リソース
             - AndroidManifest.XML 

###4つのアプリケーションコンポーネント
- アプリケーションコンポーネントとは Android アプリの必要不可欠な構成要素。

- ＜アプリケーションコンポーネント 4種＞
    - **アクティビティ**<br>
		UI を持ち、ユーザーが操作できる画面を提供する。
    - **サービス**<br>
		UI を持たず、バックグラウンドで処理を実行する。
    - **コンテンツプロバイダ**<br>
		アプリ内のデータを他アプリに公開する。
    - **ブロードキャストレシーバ**<br>
		ブロードキャスト(システム全体に送ることができるメッセージ)を受け取る事ができる。

###アクティビティとは
- UIを持ち、1つの画面を表すコンポーネント。
- フォアグラウンドで実行状態、バックグラウンドで停止状態のように、状態によるライフサイクルを持つ。
- アクティビティ自体は「Javaクラス」で、そこにUI部品を追加することで画面が作られる。
- UI部品 2種類で以下の通り。
  - **ビュー**<br>
    		テキスト、ボタン、画像などの UI として形状を持つ部品。
  - **レイアウト**<br>
    		UI としての形状を持たずビューをグループ化し表示位置を制御する部品。
- UI 部品を定義したレイアウトファイルからビューをインスタンス化して、アクティビティに追加できる。

###アクティビティの「ライフサイクル」
- ライフサイクル<br>
        アクティビティの「生成 → 表示 → 破棄」のサイクル
- ライフサイクルメソッド<br>
    ・ライフサイクル状態に応じて呼ばれるメソッド。

###アクティビティのライフサイクル図
アクティビティの生成から、破棄するまでの過程

        +---→ 実行中 ----+
                       ↓
        onResume ←-------- onPause
        (触れる)           (触れなくなる)
        ↑              　　　　    ↓
        onStart ←--- onRestart ---- onStop
        (見える)  (見えないから見える)  (見えなくなる)
        ↑                　　　           ↓
        onCreate ←----------------------- onDestroy
        (生成される)                       (破棄される)
Docker上のJenkinsの設定で「リバースプロキシの設定がおかしいようです。」と言われたときに確認する点

Dockerコンテナ上にJenkinsを入れ、Jenkinsの設定画面に入ると、
「リバースプロキシの設定がおかしいようです。」と警告が出ていました。

この場合確認したいのが、「Jenkinsの位置」です。

## JenkinsのURL設定を確認する

Jenkinsの管理＞システムの設定にある

Jenkinsの位置＞Jenkins URL

の項目を確認してみましょう。

ここにlocalhostが設定されていると黄色く警告が出ていると思うので、Dockerの入っているPCのIPを設定してあげましょう。警告が消えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/46492/438808d2-b28c-2e4c-7dc8-7cc879362408.png)
【ネットワーク入門】tracerouteでネットワークの経路を調べる/pingで接続先の生存確認

# tracerouteコマンドとは
インターネットはいくつものルーターをたどってデータを届けています。tracerouteというコマンドを打つと、その経路を可視化することができます。

ICMPタイプ8のメッセージを送ります。このタイプはエコー要求といい、宛先に送ったメッセージをそのまま返しすよう要求します。
このコマンドはIPヘッダーの生存時間を1から一つずつ増やしていき、複数送信します。

コマンドの実行方法は以下になります。

```bash
$ traceroute ドメイン名もしくはIPアドレス
```

# googleのドメインを叩いてみる

```bash
$ traceroute google.com
traceroute to google.com (216.58.197.238), 64 hops max, 52 byte packets
 1  speedwifi-next.home ()  3.842 ms  3.201 ms  3.232 ms #（）内に表示されるのが、PCがつながっているルーターのIPアドレス
 2  * * *
 3  172.25.157.154 (172.25.157.154)  39.193 ms
    172.25.157.150 (172.25.157.150)  46.595 ms  48.179 ms
 4  172.25.157.125 (172.25.157.125)  54.287 ms  56.371 ms  74.609 ms
 5  172.25.157.177 (172.25.157.177)  54.386 ms
    172.25.157.169 (172.25.157.169)  50.008 ms  80.755 ms
 6  tmfisn003.bb.kddi.ne.jp (27.85.209.49)  51.430 ms  54.592 ms  57.281 ms
 7  27.85.199.45 (27.85.199.45)  60.875 ms
    27.85.224.133 (27.85.224.133)  39.418 ms
    27.85.224.125 (27.85.224.125)  50.795 ms
 8  27.80.241.173 (27.80.241.173)  51.860 ms  67.804 ms  82.857 ms
 9  27.86.45.230 (27.86.45.230)  53.045 ms  50.487 ms  54.367 ms
10  72.14.242.21 (72.14.242.21)  59.777 ms  61.195 ms  40.002 ms
11  * * *
12  216.239.62.24 (216.239.62.24)  51.990 ms
    108.170.233.14 (108.170.233.14)  119.021 ms
    209.85.248.112 (209.85.248.112)  39.884 ms
13  72.14.237.223 (72.14.237.223)  80.091 ms
    72.14.238.99 (72.14.238.99)  50.520 ms
    108.170.242.98 (108.170.242.98)  52.967 ms
14  216.239.43.157 (216.239.43.157)  58.999 ms
    209.85.244.37 (209.85.244.37)  53.849 ms
    nrt13s49-in-f238.1e100.net (216.58.197.238)  47.538 ms


```

ここで１４まで表示されるということは自分のPCからGoogleのサイトまでに14ものルーターを経由していることがわかります。
途中KDDIのルーターを通っていることもわかりますね。

# pingで生存確認
pingコマンドは指定したIPアドレスのホストに対してメッセージを送るコマンドです。
これを利用することで宛先のコンピュータが通信可能かどうか調べることができます。それでは先ほどtracerouteで取得したIPアドレスを用いて生存確認を行ってみます。

```bash
$ ping 216.58.197.238
PING 216.58.197.238 (216.58.197.238): 56 data bytes
64 bytes from 216.58.197.238: icmp_seq=0 ttl=49 time=91.599 ms
64 bytes from 216.58.197.238: icmp_seq=1 ttl=49 time=58.444 ms

```
タイムアウトになることもありますが、メッセージが帰ってくることで、この接続先が生きていることがわかりました。
gitのrebaseで順番を入れ替える理由

## 背景

gitのTips共有の中で、commitの順番変更を教わりました。
ただ、これまでgitは使ってきましたが順番変更ってしたことなかったなと。
commitの順番変更をよく使うと言う先輩に聞いた話が心に残ったので書きます。

## git rebaseで順番を入れ替える理由

#### Q.順番の入れ替えって、どういう時に使うのですか？

A.
コーディングしやすい順番と、レビューだったり、
後からログを見返したときに見やすい順番は必ずしも同じにならない。
だから、コーディング後に振り返りやすいコミットの順番を入れ替えることがある。

確かに...!!

#### Q.でも、、順番入れ替えちゃうとまあコンフリクトしません？

A.
まあ、だいたい前のcommitに依存しちゃうからね...
確かにめんどくさいけど、振り返りやすいコミットログのメリットもあるから。

圧倒的プロフェッショナル...!!!

## git rebaseで順番を入れ替える方法

方法についてはたくさん記事が見つかったので、こちらでは割愛します。
個人的にはこの記事はわかりやすかったです。

[rebaseでコミットログを整理(順序入れ替え, 統合, メッセージ変更)
](https://www.wakuwakubank.com/posts/382-git-rebase/)
MyBatisでまとめてinsertする方法

# 概要
- Listのデータをinsertしたいときに1件ずつinsertするのは無駄なのでデータをまとめて一括でinsertしたい
- MyBatisGeneratorで自動生成されたMapperをカスタマイズした

## 注意事項
- 再びgenerateしたら上書きされて消えるので要注意
- IDがAUTO INCREMENTの場合はやり方が違うらしい

## 環境
- Java8
  - SpringBoot v2.0.6.RELEASE
  - mybatis-spring-boot-starter v1.3.2
- MySQL v5.7.25

# 方法
やることは2つ。
1. Mapperクラスに一括insertメソッドを定義する
2. xmlに一括insertの設定を追加する

## 例
例えばこんなテーブル(MySQL)があったとする。

```sql:user_friend.sql
CREATE TABLE user_friend (
  user_id int(10) NOT NULL,
  friend_id int(10) NOT NULL
  friend_name varchar(30) NOT NULL,
  created_at datetime NOT NULL,
  updated_at datetime NOT NULL,
  PRIMARY KEY (user_id, friend_id)
);
```
## Mapperクラスにメソッドを追加する
- insertBulkのメソッドを追加する
  - 引数にinsertしたいデータのListを渡す
  - `@Param`で名前を付けるかどうかは任意

```Java:UserFriendMapper.java
int insertBulk(@Param("friendList")List<UserFriend> friendList);
```

## xmlに設定を追加する
- `UserFriendMapper.xml`に`insert id="insertBulk"`を追加する
  - `parameterType="java.util.List"`に指定する
  - Mapperで`@Param`を指定しなかった場合は`collection="list"`と指定する

```xml:UserFriendMapper.xml
<!-- これを追加する -->
<insert id="insertBulk" parameterType="java.util.List">
    insert into user_friend
      (user_id, friend_id, friend_name, created_at, updated_at)
    values
    <foreach collection="friendList" item="fr" separator=","> 
    (
      #{fr.userId,jdbcType=INTEGER}, #{fr.friendId,jdbcType=INTEGER},
      #{fr.friendName,jdbcType=VARCHAR}, #{fr.createdAt,jdbcType=TIMESTAMP},
      #{fr.updatedAt,jdbcType=TIMESTAMP}
    )
    </foreach>
</insert>
```

## Java(SpringBoot)側での使い方
Mapperクラスに追加したメソッドを呼び出すだけ。

```Java:FriendService.java
@Service
public class FriendService {

	@Autowired
	private UserFriendMapper userFriendMapper;

	/**
	 * @return int insertした件数
	 */
	public int insertFriends(int userId, List<UserFriend> saveFriends) {

		return userFriendMapper.insertBulk(saveFriends);
	}
}
```

# 参考
- [データベースアクセス（MyBatis3編）Entityの一括登録](https://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ArchitectureInDetail/DataAccessMyBatis3.html#dataaccessmybatis3howtousecreatemultiple)
未経験からIT事務員にならないための3つのこと

IT事務員とは
---------------------------------------
`IT事務員`というのは「契約書の確認」「パートナー会社調整」「依頼事の記帳管理」「データ入力」など
エンジニアやプログラマーとは違い、主に__単調な事務作業をするお仕事__をする人のことをいいます。
扱う仕事もプログラムとは全くの無縁でエクセルを扱うことが多く__エンジニアとしての成長は見込めません。__給与は__300万程度__で__市場価値も上がりにくい__とも言われています。
近年この「ITエンジニア」と類似していることから事務員を確保する為「`IT事務員`」といった名称で企業が当人の将来成長を保証しない（実質）形で募集をしているので今回はIT事務員にならない為のポイントを厳選してご紹介します。

未経験からIT事務員にならないための3つのこと
---------------------------------------
__①アポイント確認__
エンジニア、プログラマーとしての現場で行う仕事なのか、エクセル等事務的な単調的な仕事なのか面接の段階や面接前にきちんとコンタクトをとりましょう。
企業のホームページに行けば__お問い合わせフォーム__や__メールアドレス__が記載されているので事前に連絡して確認しましょう。
メールなど返信がなければ__電話__で直接採用担当に聞いてみるのも良いでしょう。

__②募集要項のキーワード確認__
__OS（Linux,Windows）__や__言語名(Python、Java)__など具体的に募集要項に記載されているか確認しよましょう。
サーバーサイドのエンジニアかプログラマー的な職種で変わりますが、きちんと募集要項に記載されている内容が専門的内容か確認しましょう。`わからない単語があればその場でググれ！`

__③やっぱり資格やポートフォリオが安全！__
なんといっても__資格__や__ポートフォリオ__は便利です。というのも__資格__に関しては取得する間に様々な知識を得ているので非常にアピールになりますし、__ポートフォリオ__はある程度のレベル感がわかるのでこちらもお薦めです。
`ただし注意してほしい`のは中には資格は勉強チックな感じが否めないので__途中で挫折する可能性が高い__です。なので個人的には仕事しながらでも__1週間__で作成できる程度のもので構わないので__ポートフォリオを作成することをお勧めします__。
中には3カ月程度かけて作る人もいるようですが、大作を作るまでにモチベーションが続かないこともあるでしょう。
ポートフォリオはまず1週間程度がよりベストかと思います。

最後に
---------------------------------------
未経験の人がきちんと`市場価値のあるITエンジニアになる為`にルートを間違えないような内容を記載させていただきました。
中には__IT事務員になってしまった__という方もいるでしょうが、自分がもしIT事務員になってしまったら__働きながら1週間程度でポートフォリオを作り転職活動__を速攻でします。
IT事務員であった経歴も「__用語には大分慣れました__」とか「__ベンダーとの調整をたくさんしました__」とか「__障害の際には大きな損害が生じることがわかったので注意して作業したい__」など__経験を隅から隅までアピールに変換__して転職活動をします。
こちらは今経験が浅い案件にしか携わっていない方にも同様です。
参考になりましたでしょうか。
それではみなさんが最高のエンジニアライフを送れることを願っています。
【初心者向け】Androidの基本

###Android OSとアーキテクチャについて

- Android OSは、LinuxをベースにしたOS
- Androidは、以下の5つのスタックで構成される。
 - Linuxカーネル層
     - Android システムを動かす OS部分。Linux をベースにしている。
 - 標準的なライブラリ層
     - 様々な機能を提供するライブラリ群。C/C++で作成されている。
 - AndroidRuntime層
      - Android アプリを動かすための実行環境。
 - アプリケーションフレームワーク層
      - アプリで利用できる開発を容易にするための様々な API 群。その中にはライブラリの機能を利用するAPIも用意されている。
 - アプリケーション層
      - アプリ開発者が作成するアプリケーション


###Androidアプリの動く仕組み
- Android アプリは Java プログラム。
- Androidアプリ は JVM をそのまま使っておらずスマホ用に改良した仮想マシン『DalvikVM』を使っている。（Android　5.0 から更に改良した『ART (Android Runtime)』になっている）

###Android誕生の歴史
- 2003年、アンディ・ルービン他が Android 社でモバイル向けOSを開発。
- 2005年、 Google が買収。
- 2008年、「Anroid 1.0 SDK」発表。世界初の商用端末「T-Mobile GT」発売。

###「Android バージョン」「APIレベル」「コードネーム」の違い
- APIレベル：フレームワークAPIのバージョンの数値
- バージョン：更新をわかりやすく数値化したもの
- コードネーム：バージョンに対応して、アルファベット順で始まる菓子の名前
 
###Android 開発に必要なツール
- Android Studio：Android アプリ開発用の IDE 環境。(チェコのJetBrains社が開発した「IntelliJ IDEA(インテリジェイ アイディア)」がベースとなっている。)
- JDK：Android Studio は Java で動作するため JDK が必要。

###Android Studio のビルドシステム
- Android プロジェクトのビルドには「Gradle」を使う。

###Android Studio でサポートするバージョン管理システム
-「CVS」「Git」「Mercurial(マーキュリアル)」「Subversion」をサポート。
C言語とC#のおまじない卒業に向けて

おまじないを卒業しよう。
ということで、ごった煮な内容でお届けしたいと思います。
詳しい説明はリンク先頼みな内容になる予定。。。
Cを混ぜたのは早くも失敗した感がしている。

気が向いたら追記していきます。

# なぜ「おまじない」のままではダメなのか
プログラミングの業界で「おまじない」というと、「よく分からないけど」とりあえず書いてみたといったニュアンスだと思います。

1文字間違えただけで致命的なバグになったりする世界で、「よく分からないけどみんな書いてるから」で書くのは恐ろしいことではないでしょうか？

基本を理解していないと、どこかでハマることになります。という事で、分からないままにするのはよろしくないと思うわけです。

# Cにおける`#include`
実際はなにをやっているのか？
⇒ 参照先ファイル(通常はヘッダファイル)の内容をただ単純にコピーして展開するもの。`#define`もただ置き換えるだけなので、そういうものだと思っておけばよいかと。
・参考サイト：  https://monozukuri-c.com/langc-include/

# C#における`using System;`とか
名前空間を省略して書けるようにするもの。
例えば`using System;`って書いておけば、`System.IntPtr`を`IntPtr`と書いてもコンパイラが探して補完くれる。
・参考サイト：  https://ufcpp.net/study/csharp/sp_namespace.html
・C#本家(英語)：  https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-directive

なお、上記は「usingディレクティブ」といい、
`using(型名 変数名=xxx){処理}`は「usingステートメント」といい、別モノです。

# C#における`[STAThread]`属性
スレッドの管理がイケてないCOM機能や、間接的にそのCOM使っている.Netのクラスを使うときは`[STAThread]`つけてね
という感じ。
つけ忘れてハマるよりは、つけておくほうが無難。
（Single-Thread ApartmentとMulti-Thread Apartmentの概念が理解できておらず、おまじないレベルから脱却できてない・・・）
参考サイト：  https://dobon.net/vb/dotnet/form/stathread.html

# メイン関数
C,C#とも、コンパイラに、最初に開始する処理がどこにあるかを判断させるために、あらかじめ決められた関数名(メソッド名)を使っている。dll作るときは別の手段を取る。
powershell で Office を捕まえてターミナルとして操作する

# 背景
COM オブジェクトを利用して Office 操作しようとすると変数のガベージコレクトが大変です。何より背後で一度アプリケーション自体が立ち上がっているので遅くてやっていられません。
そこで、 **現在開いているファイルを powershell から操作する** ようにしてみたらとても便利だったので情報共有です。

# アクティブな Office を捕まえる
事前準備として、下記コードを `$profile` に書いておくかドットソースで読み込んでおきます。

```powershell
function Get-ActiveOffice {
    <#
        .SYNOPSIS
        現在アクティブなOfficeアプリケーションを捕まえる
        .PARAMETER app
        Office ソフトウェア
    #>
    param (
        [ValidateSet("Word.Application","Excel.Application", "PowerPoint.Application")][string]$app
    )
    try {
        $office = [System.Runtime.InteropServices.Marshal]::GetActiveObject($app)
        if ($app -eq "Word.Application") {
            if ($office.Documents.Count -lt 1) {
                return $null
            }
        }
        elseif ($app -eq "Excel.Application") {
            if ($office.Sheets.Count -lt 1) {
                return $null
            }
        }
        elseif ($app -eq "PowerPoint.Application") {
            if ($office.Presentations.Count -lt 1) {
                return $null
            }
        }
        return $office
    }
    catch {
        return $null
    }
}
```

Excel を開いていてもすべてのシートが閉じられているなどの状態では何も返さないように、適宜ソフトの種類に応じて条件分岐させています。
そして以下のようにして変数に格納してしまえば、あとは開いているファイルを powershell から操作できるようになります。 **文法的には VBA と同一です。** また、 **ガベージコレクトが不要です。**

```
# Excel を操作してみる
PS > $e = Get-ActiveOffice "Excel.Application"

PS > $e.Selection.Cells.Value = "hogehoge" # 選択しているセルに「hogehoge」と入力される
```

powershell が文字通りコンソール（操作盤）となるわけです。
なお、VBA と同様に Excel を操作した場合は `Ctrl+Z` で元に戻すことができませんが、 **Word と PowerPoint ならやり直しが効きます**。

```
# Word を操作してみる
PS > $w = Get-ActiveOffice "Word.Application"

PS > $w.Selection.Font.Bold = $true # 選択している文字が太字になる（Ctrl+Zでアンドゥ可能！）

# PowerPoint を操作してみる
PS > $p = Get-ActiveOffice "PowerPoint.Application"

PS > $p.ActivePresentation.Slides.Add(1, 12) # 空白のスライドが追加される

```

そのままファイルを保存して閉じればプロセスも残りません。マクロの知識を組み合わせれば無限の可能性が開けてきます。また、よく使うマクロを `PERSONAL.xlsb` に保存しておく代わりに `.ps1` に書いておいて powershell から実行できるようになるため、 **git などによるバージョン管理なども容易になります**。

# もっと操作しやすくする
上記コマンドレットをラップして、直接 `ActiveDocument` や `ActiveSheet` を取得できるようにしました。VBA でのおなじみの書き方に近づきます。

```powershell
function Get-ActiveDocument {
    <#
        .SYNOPSIS
        現在アクティブなWord文書を捕まえるコマンドレット
    #>
    $word = Get-ActiveOffice "Word.Application"
    if (-not $word) {
        return $null
    }
    return $word.ActiveDocument
}
```

```powershell
function Get-ActiveSheet {
    <#
        .SYNOPSIS
        現在アクティブなExcelのシートを捕まえるコマンドレット
    #>
    
    $excel = Get-ActiveOffice "Excel.Application"
    if (-not $excel) {
        return $null
    }
    return $excel.ActiveWorkbook.ActiveSheet
}
```

~~PowerPoint は力尽きました……~~

# 組み込み定数
VBA の組み込み定数は使用できません。各定数の値を数値として指定する必要があります。毎度ググって入力するのも手間なので記事にまとめました。

+ [Excel VBA 組み込み定数の値一覧](https://qiita.com/AWtnb/items/1f2bc3a23ad7456e2246)
+ [Word VBA 組み込み定数の値一覧](https://qiita.com/AWtnb/items/b2bcae6c9ab62b649b67)
C++ OpenCV 動画から連番画像を出力

## 背景

サンプル画像、動画は各自で準備してください。
（ごめんなさい）

## 実装環境



## 参考コード 1

```c++:
/*　 動画から連番画像を出力　*/

#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
	Mat img;

	//動画をキャプチャ
	VideoCapture cap("sample\\3_sample_mov.mp4"); //Windowsの場合　パス中の¥は重ねて¥¥とする
	//VideoCapture cap("videos/sample.mp4"); //Macの場合

	//動画の最大フレーム数
	int max_frame = (int)cap.get(CAP_PROP_FRAME_COUNT);
	// 動画の高さ
	int img_h = (int)cap.get(CAP_PROP_FRAME_HEIGHT);
	// 動画の幅
	int img_w = (int)cap.get(CAP_PROP_FRAME_HEIGHT);
	// 動画のfps
	double fps = cap.get(CAP_PROP_FPS);

	for (int i = 0; i < max_frame; i++) {

		//1フレーム分取り出してimgに保持させる
		cap >> img;

		//現在のフレーム番号を表示
		std::cout << "フレーム番号 " << i << std::endl;

		//画像を表示
		imshow("Video", img);

		//取得した画像を連番画像で保存
		std::ostringstream oss;
		oss << std::setfill('0') << std::setw(3) << i;
		cv::imwrite("movie_img\\pic_" + oss.str() + ".png", img);

		// 表示のために30ms待つ
		waitKey(30);
	}
	//動画情報の出力
	std::cout << "フレーム番号 " << max_frame - 1 << std::endl;//345
	std::cout << "動画の高さ " << img_h << std::endl; //352
	std::cout << "動画の幅 " << img_w << std::endl;// 352
	std::cout << "動画のfps " << fps << std::endl;// 15return 0;
	
}

/*
C:\opencv\build\include
C:\opencv\build\x64\vc15\lib
opencv_world400.lib;%(AdditionalDependencies)
*/
```
## 参考コード 2
載せておいてなんなんですが、以下のコードでもできます。
数値を文字列に変換して、文字列のファイル名にドッキングさせる。

```
 //取得した画像を連番画像で保存
cv::imwrite("movie_img\\pic_" + std::to_string(i) + ".png", src);
```

## Github 

```
git clone https://github.com/yusa0827/190919_Cplus2_Training_Session
```

## 参考文献
[C++入門】文字列⇔数値に変換する方法まとめ](https://sejuku.net/blog/49199)
[C++ 数値を文字列に変換する複数の方法【int/double → string](https://marycore.jp/prog/cpp/convert-number-to-string/)
UbuntuでUnable to locate packageのエラー解決法


##E: Unable to locate packageとエラー表示された場合
Ubuntuにaptで何らかのパッケージ（ソフト）をインストールしようとした場合に、
E: Unable to locate package 
とエラー表示が出た場合の解決方法です。

##対象
Linux初級者

##作業環境
MacOS dockerコンテナ利用 
Ubuntu VERSION 18.04.2
（dockerのコンテナなのでvimさえ入っていない）

##解決方法
aptをアップデートして下さい。以上で解決しました。

```
# apt update
```
そして、任意のパッケージ（ソフト）をインストールします。

```
# apt install vim
```
以上で、E: Unable to locate package のエラーが出ないでVimをインストール出来ました。
##あとがき
Unable to locate package で検索したら、いくつか同じ解決方法が出てきますね。あと、apt-getは古いらしいので、aptを利用しました。
モデル予測制御のお気持ち

はじめまして、sacomyと申します。
日々、制御工学を勉強しているのですが、Outputできる機会が欲しいと思い、これから記事を投稿していくつもりです。
正直あまり有用な記事はかけないかと思いますが、自分のメモ代わりがてらと言った感じにしようかと思います。

---

さて、表題の通りモデル予測制御のお気持ちということで、具体的にモデル予測制御の数式や処理に関してはさておき、どんなものなのか、なぜこんな制御則を取る必要があるのかを書いていきたいと思います。

## モデル予測制御とは
システムの動的なモデルを用いて、未来の状態や出力を予測して、その予測される動きができるだけ希望に沿うように入力を決めるというもの。
モデルを使って未来を予測して制御する。
~~システムのモデルを予測して制御するものではない~~→適応制御

## なぜモデル予測制御をする必要があるのか
前項の説明の通り、未来の出力を予測して入力を決定するため、通常のPID制御などに比べて目標値の大きな変化などに影響を受けにくい。

例えば、
車輪移動体を考えた時に急旋回時に偏差が小さいままで走行が可能になる、
時間遅れがあるシステムについても目標値への追従の際のオーバーシュートを防ぐことができる。
などの利点があげられる。

## もうちょっと詳しく
離散時間システムを考える。
現時刻からある区間Mステップ(制御ホライズン)に渡って入力を変化させていくとき、
Pステップ先に渡る区間(予測ホライズン)で出力や状態がどのように変化するかをシステムの動的モデルを使って予測する。
その予測ができるだけ目標値に近くなるようにMステップに渡る入力をシステムに課せられた制約の元で最適化を行い求める。
求まったMステップに渡る入力の中で次ステップの入力のみをシステムへの入力として、次ステップの処理へと移る(この繰り返し)。

この際必要となってくるのが、
1. 出力の挙動の計算のためのモデルの構築
2. 外乱やモデル化誤差を考慮した出力の予測
3. 入力の決定

出力の予測の際には現在の時刻における実際の出力とモデルによる理想的な出力の差を取ってnステップ後のモデル化誤差として使用する方法などがある。
入力の決定の際には以下のような評価関数を用いて最適化を行う。
$ J=(y_r-y_p)^T\Lambda(y_r-y_p) + u^T\Phi u$
($\Lambda, \Phi$：重み係数を対角成分に配置した対角行列)

## あとがき
モデル予測制御のお気持ちについて軽くまとめてみました。
初投稿ということもあり、あまり内容のない記事になってしまいましたが、参考となれば幸いです。
ご質問、ご指摘等あればコメントお願いします。

## 参考文献
[プロセス制御システム(コロナ社)](http://www.coronasha.co.jp/np/isbn/9784339033144/)
[備忘録] ubuntu serverインストール - VMware Workstation - windows10

https://ubuntu.com/
18.04LTS版をダウンロード
今回はブリッジ接続でRAMは4GB、CPUは4つ
ハードディスクは15GB

***
#### セットアップ

<strong>[0/13]</strong>: Please choose your preferred language.(言語を選択してください。)
`>English  `

<strong>[2/13]</strong>: Please select your keybord layout below, or select "Identify keybord" to detect your layout automatically.(以下でキーボードレイアウトを選択するか、「キーボードを識別する」を選択してレイアウトを自動的に検出してください。)
`>Layout: japanese`
`>Variant: japanese`

<strong>[3/13]</strong>: Configure at least one interface this server can use to talk to other machines, and which preferably provides sufficient access for updates.(このサーバーが他のマシンと通信するために使用できるインターフェースを少なくとも1つ設定します。これにより、更新のための十分なアクセスが可能になります。)
`>今回はDHCPなのでデフォルトのまま`

<strong>[4/13]</strong>: If this system requires a proxy to connect to the intarnet, enter its details here.（このシステムがインターネットに接続するためにプロキシを必要とする場合、ここにその詳細を入力します。）
\>今回はデフォルトのまま

<strong>[5/13]</strong>: If you use an alternative mirror for ubuntu, enter its details here.（Ubuntuに別のミラーを使用する場合は、ここに詳細を入力します。）
`>日本なのでデフォルトのhttp://jp.archive.ubuntu.com/ubuntuパッケージリポジトリのまま`

<strong>[7/13]</strong>: the installer can guide you through partitioning an entrie disk either directory or using LVM, or, if you prefer, you can do it manually. if you choose to partition an entrie disk you will still have a chance to review and modify the results.（インストーラーは、ディレクトリまたはLVMを使用してエントリディスクをパーティション分割するか、必要に応じて手動でパーティション分割することができます。エントリディスクのパーティションを選択した場合でも、結果を確認して変更する機会があります。）
`> Use An Entrie Disk`
`> /dev/sda local disk 15.000G`<br>

selecting continue below will begin the installation process and result in the loss of data on the disks selected to be formatted. You will not be able to return to this or a previous screen once the installation has started. Are you sure you want to continue?（[続行]を選択すると、インストールプロセスが開始され、フォーマットするために選択されたディスク上のデータが失われます。インストールが開始されると、この画面または前の画面に戻ることはできません。続行しますか？）
`> continue`<br>

Enter the username and password you will use to log in to the system. You can configure SSH access on the next screen but a password is still needed for sudo.（システムへのログインに使用するユーザー名とパスワードを入力します。次の画面でSSHアクセスを設定できますが、sudoにはパスワードが必要です。）
`>フルネーム、ホスト名、ユーザ名、パスワードを入力`

<strong>[9/13]</strong>: You can choose to install the openSSH server package to enable secure remote access to your server.（openSSHサーバーパッケージをインストールして、サーバーへの安全なリモートアクセスを有効にすることができます。）
`>とりあえずインストール`

<strong>[10/13]</strong>: These are popular snaps in server environments. Select or deselect with SPACE, press Enter to see more details of the package, publisher and versions available.（これらは、サーバー環境でよく使用されるスナップです。 SPACEで選択または選択解除し、Enterを押して、利用可能なパッケージ、発行者、およびバージョンの詳細を表示します。）
`>今回は何も選択しない`

インストールが完了したらreboot選択
設定したユーザとパスワードを入力して完了

---

以下参照
https://askubuntu.com/questions/814723/whats-the-difference-between-ssh-and-openssh-packages
https://www.idcf.jp/words/lvm.html