OmniAICreator/Qiita-1.07M huggingface dataset:
Docker　基礎知識②

## そもそもDockerfileとは？
Dockerイメージをそのまま使うのではなく、必要なパッケージやアプリ、各種設定を含んだDockerイメージを自分で作成して使用するケースが出てくる。
その場合、Dockerfileを作成し、それを使用して必要なDockerイメージを作成することができる。
Dockerfileには、ベースとするDockerイメージに対して実行する内容を記述する必要がある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609668/6638f713-e12e-543a-b595-cf96c1fd7ed8.png)

### Dockerfileメリット

__・Dockerコンテナの仕様をファイルで管理することができる__
__・Dockerコンテナの変更プロセスを自動化することができる__
__・コンテナイメージに、変更内容を履歴として保持することができる__
__・コンテナイメージの履歴を層（レイヤー）として管理することで、イメージを最小化することができる__
__・元となるコンテナのバージョンアップにもすぐに対応できる__

### Dockerfile作成
Dockerイメージを作成する方法は２つ
`・「docker commit」コマンドで「コンテナ」からイメージを作成`
`・「docker build」コマンドで「Dockerfile」からイメージを作成`

__「コンテナ」からイメージを作成__
　ベースとなるイメージからコンテナを起動して、そのコンテナに対して、docker execでシェルに入って操作したり、docker cpでファイルをコピーしたりして調整を加える。最終的にdocker commitコマンドでイメージ化。

__「Dockerfile」からイメージを作成__
　ベースとなるイメージと、そのイメージに対して、どのような操作をするのかを記したDockerfileと呼ばれるファイルを用意し、そのDockerfile通りにコンテナに対して変更やファイルコピーを加えることによって、イメージ作成をする。その際のコマンドは`docker build`。

### Dockerfileを使用して、Dockerイメージを作成
作成したDockerfileを使ってDockerイメージを作成。Dockerfileのあるディレクトリに移動して、Dockerビルド（Dockerイメージを作成するコマンド）を実行。


### なるべくまとめて実行する
ファイルの容量を減らしたと言われたが、はて？どのように？と疑問がうまれた。容量が大きくなる原因は、Dockerfileの各コマンドごとにレイヤーが作成されるため、その分Dockerイメージのサイズが大きくなってしまうのが原因。
なので、今回の答えは　__なるべく1コマンドで実行できるものは、まとめて実行する__ である。
(これはメリットの一つでもある)

作成できるレイヤーには上限（128レイヤー）があることも注意！！

## Docker Compose
Docker Composeとはオーケストレーションツールで、複数のコンテナから構成されるアプリをどう展開するかを定義することができる。
このときに、設定を書くファイルを`docker-compose.yml`と言う。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609668/6dd032f9-115d-c9cf-271a-b962bdd8e863.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609668/4666d1fb-145c-f5e5-5c4b-5d109debc725.png)

### Docker Composのメリット
__・長い引数からの解放__
__・複数コンテナの連動__
__・まとめての停止・破棄__
__・コンテナの起動時の初期化やファイルコピー__

### docker-compose.ymlの書き方
「サービス」「ネットワーク」「ボリューム」の3つを定義

(1)サービス
　全体を構成する1つ1つのコンテナのこと。Docker Composeにおいてサービスとは、コンテナのことだと言い換えてほぼ問題ない。
※ここでほぼというのは、scaleオプション指定をすると、1つのサービスに対して複数のコンテナを起動することができるため。つまり、サービスに対してコンテナが1対多の関係である。

(2)ネットワーク
　サービス(コンテナ)が参加するネットワークの定義

(3)ボリューム
　サービスが利用するボリュームを定義



## 用語集
__・オーケストレーションツール__：コンピュータシステム、アプリケーション、およびサービスにおける、設定、管理、調整の自動化
__・レイヤー__：何らかの装置やソフトウェア、システム、ネットワークの構造を説明する際、構成要素が階層状に積み上がった構造になっている場合にそれぞれの要素のこと
【Rails】カラム名と異なるアソシエーションを設定する（belongs_to等のforeign_keyオプション）

## はじめに
STIであるモデルが絡んだ場合など、たまにタイトルのようにカラム名と異なるアソシエーションを設定したくなる場合がある。その方法について記録する。

## 結論
例えば、`ユーザ（User）一人一人に対し、複数の著書(Book)が属している`ような場合に、`その著書（Book）から、ユーザ（User）を取得する関連を「author(著者)」`としたい場合には、


```
class User < ApplicationRecord
  has_many :books
end
```


```
class Book < ApplicationRecord
  belongs_to :author, class_name: "User", foreign_key: "user_id"
end
```

と、`foreign_key: "user_id"`でカラム名を指定する。

### 詳細

`foreign_key`でカラム名を指定しない場合、デフォルトではアソシエーション名に`_id`が追加されたカラムが参照される。
今回の例だと、Bookテーブルの`author_id`カラムをRailsは参照するが、実際にあるのは、`user_id`カラムなのでエラーとなる。
`foreign_key`オプションを使い、BookテーブルでUserテーブルの外部キーとなっている`user_id`を明示的に指定することで解決する。

## おわりに
アソシエーションはオプションが色々あり、都度詳細は調べているような形になってしまっているので、調べずに済むよう理解を深めていきたい。
【vscode/Unity】補完が消えた&useGlobalMonoがなくなって混乱している人へ

# useGlobalMonoが消えちゃった原因

vscodeでC#の開発をするのに次の拡張機能を入れているはずです．
![](https://storage.googleapis.com/zenn-user-upload/705b7cff0251-20220528.png)
この拡張機能をインストールすると，Monoという.NET Core環境に必須のやつが付属してきます．
ただし，これは**最小限の**ものであり，完成品ではありません．
この付属のMonoについて次の声明が出されました．

https://github.com/OmniSharp/omnisharp-roslyn/issues/2339

簡単にまとめるとv1.25.0にて
「この付属のMono一番人気のUnityで使えないし，本家と同期するのもしんどいのでもう消します．」
というわけで**付属のMonoは消えました．**

Unityでは本家Monoを使うためにuseGlobalMonoをtrueに設定する必要があったのですが，付属のMonoが消えたので**設定自体が不要になって消されました．**

# 補完が消えちゃった原因

v1.25.0でdefaultで

```
'omnisharp.useModernNet': true
```

の設定にされるからです．こいつが悪さをしています．

## 生じているであろうエラーコード

おそらくOmniSharp Logを確認すると次のようなエラーが大量に出ていると思います．
```
Error: This project targets .NET version that requires reference assemblies that are not installed (e.g. .NET Framework). The most common solution is to make sure Mono is fully updated on your machine (https://mono-project.com/download/) and that you are running the .NET Framework build of OmniSharp (e.g. 'omnisharp.useModernNet': false in C# Extension for VS Code).
```

このエラー文通り，setting.jsonを

```
'omnisharp.useModernNet': false
```

にすれば治ります．
（つまり，ここがtrueなのがいけない．)

## どうしてuseModernNetをtrueにしてはいけないのか

https://github.com/OmniSharp/omnisharp-vscode/issues/5120

このlogを追いましたが，どうも原因は掴めませんでした．
falseにしていることが心配な方は次の公式アナウンスによく注意しておいた方が良いと思います．
falseの状態で放置するとまたいつかおかしくなります．

# というか...

>I understand the need for breaking software changes like this, but please consider communicating this change in a more clear way to end-users. I have the latest mono installed, but OmniSharp server would completely silently fail and give no indication of what was wrong. Not every user of VS code would think to check this github page when that happens. Maybe a popup in vs-code linking to this announcement would be helpful?
For more details -- I am on Ubuntu, latest version of mono installed, using vs-code with mono. My OmniSharp server would fail to even start, show no output at all in VS code. No icon in the bottom tray. Ctrl + Shift + P -> Restart OmniSharp Server is the top google result, and that would silently fail. Running OmniSharp: Analyze Current Project would throw a OmniSharp server is not running error, but top google results send you in a wrong direction. Finally, I found this page, and going to Settings and setting UseModernNet to false fixed my error.
Thank you for all the work your team does!

私も公式アナウンスしっかり見よ...
CrystalでAtCoder（ABC253）

CrystalでAtcoderに参加しているtamura2004です。
本日のABC253を題材に、競技プログラミングにおけるCrystalの小ネタを書こうと思います。

# A - Median?
[問題へのリンク](https://atcoder.jp/contests/abc253/tasks/abc253_a)

## 比較演算子の連鎖
PythonやJuliaには比較演算子の連鎖があり、3つ以上の変数を数学的に記述できます。Rubyではできなくてちょっと悔しかったんですが、Crystal ではできます。

## コード
```crystal
a, b, c = gets.to_s.split.map(&.to_i)
puts a <= b <= c || a >= b >= c ? "Yes" : "No"
```

## デバッグマクロ`pp!`

Crystalにはデバッグに便利なマクロ`pp!`があります。
変数`x`をデバッグするときに、Rubyであれば、

```ruby
x = 10
puts "x = #{x}" # => x = 10
```

こんな風に変数名などを記述しますが、Crystalのマクロでは、引数を構文木から参照できるので、

```crystal
x = 10
pp! x # => x = 10
```

のように変数名を表示することができます。
引数に式を与えた場合は、

```crystal
pp! 2 | 1 << 4 - 3 # => 2 | (1 << (4 - 3)) # => 2
pp! 1 < 2 < 3 # => 1 < 2 && 2 < 3
```

こんな感じに演算子の優先順位による括弧付けなどが表示されます。比較演算子の連鎖はシンタックスシュガーであって、複数の比較分の&&による結合であることが分かります。

# B - Distance Between Tokens

[問題へのリンク](https://atcoder.jp/contests/abc253/tasks/abc253_b)

## オープンクラス

Crystalの標準ライブラリはCrystal自身で記述されており、オープンクラス（ユーザーがメソッドを追加できる）です。
例えば、直交座標を複素数で表すとして、標準クラスのComplexにマンハッタン距離のメソッドを追加して解くことができます。

## コード
```crystal
require "complex"

struct Complex
  def manhattan
    real.abs + imag.abs
  end
end

h, w = gets.to_s.split.map(&.to_i64)
s = Array.new(h) { gets.to_s }
cnt = [] of Complex
h.times do |y|
  w.times do |x|
    if s[y][x] == 'o'
      cnt << y.i + x
    end
  end
end

cnt[-1] *= -1
ans = cnt.sum.manhattan.to_i
pp ans

```

# C - Max - Min Query

[問題へのリンク](https://atcoder.jp/contests/abc253/tasks/abc253_c)

## Multiset

PythonやRubyなどMultisetを持たないと少々困る系の問題です。
Crystalの場合、Arrayのinsert, deleteの内部処理にlibcのmemmoveを使用しており、定数倍が早いので、強引にArrayで解くことができます。

## コード
```crystal
q = gets.to_s.to_i

cnt = {} of Int64 => Int64
xs = [] of Int64

q.times do
  query = gets.to_s

  case query
  when /^1/
    _, x = query.split.map(&.to_i64)

    if cnt.has_key?(x) && cnt[x] > 0
      cnt[x] += 1
    else
      i = xs.bsearch_index(&.> x) || xs.size
      xs.insert(i, x)
      cnt[x] = 1_i64
    end
  when /^2/
    _, x, c = query.split.map(&.to_i64)
    
    next if !cnt.has_key?(x)
    cnt[x] -= Math.min(c, cnt[x])
    
    next if 0 < cnt[x]
    xs.bsearch_index(&.>= x).try do |i|
      xs.delete_at(i)
    end
  when /^3/
    puts xs[-1] - xs[0]
  end
end
```

# D - FizzBuzz Sum Hard

[問題へのリンク](https://atcoder.jp/contests/abc253/tasks/abc253_d)

## Range#sum

[前の記事](https://qiita.com/tamura2004/items/e5828162db074bb664a7)で書いたら早速出題されました。CrystalのRange#sumはO(1)なので、以下のように素朴に書いてもTLEにならずACできます。

## コード
```crystal
n,a,b = gets.to_s.split.map(&.to_i64)
ans = (1_i64..n).sum
ans -= (1_i64..n//a).sum * a
ans -= (1_i64..n//b).sum * b
c = a.lcm(b)
ans += (1_i64..n//c).sum * c
pp ans
```
.NET MAUI (Hallo, World!～Androidアプリ編～)

# MAUIでWindowsアプリのHallo World!
[前回](https://qiita.com/kashin777/items/eae43a555dc28867926f)、Visual Studio 2022 17.3 (Preview)時点のMAUIで、WindowsアプリのHallo Worldを試しました。

https://qiita.com/kashin777/items/eae43a555dc28867926f

# MAUIでAndroidアプリのHallo World!
今回は、Androidアプリを実行します。

## ビルド対象にAndroidアプリを追加する
前回、Windowsアプリだけを対象にしたので、Androidアプリを追加します。
これで、WindowsアプリとAndroidアプリを同時に開発できます。

.csprojファイルを編集します。
```XML
		<!--
		<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
		-->
		<TargetFrameworks>net6.0-android</TargetFrameworks>
		<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
		<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
		<!-- <TargetFrameworks>$(TargetFrameworks);net6.0-tizen</TargetFrameworks> -->
```

## AndroidアプリでHallo World!
:::note info
Android SDKがインストールされていない場合、ツールバーの[Windows Machine]を[Android Emulator]にすると、Android SDKとEmuratorのインストールがウィザードされます。
[手順](https://docs.microsoft.com/ja-jp/dotnet/maui/get-started/first-app?pivots=devices-android#get-started-with-visual-studio-2022-173-preview "") は公式参照
:::

ツールバーに作成したEmuratorが表示された状態でクリックすれば、Emuratorが起動しアプリが実行されます。
※右側に[Android デバイスマネージャ][Android SDK マネージャ]があるので、SDKやEmuratorを変更できます。
※USBデバッグを有効にした実機をUSB接続すれば、[Android Local Device]から選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/b39ca570-5e77-4312-a59f-c2d41df3ae0c.png)

起動しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/1d265648-0add-30ad-9101-bbaa3c2970e5.png)

## 余談：ホットリロードに対応
最近は当たり前ですが、ホットリロード対応です。(Windowsアプリでも)
アプリケーションを起動したままメインページを編集して保存します。

変更前
```XML
            <Button 
                x:Name="CounterBtn"
                Text="Click me"
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Center" />
```
変更後
```XML
            <Button 
                x:Name="CounterBtn"
                Text="クリックミー"
                Background="red"
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Center" />
```

アプリケーションを再起動することなく編集内容が反映されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/a2333163-d814-07aa-519d-bb143208ed08.png)
Power Apps で Excel のようなレイアウトを表現してみる

※2022/07/14 追記
コンポーネントで作る記事になっていますが、コンポーネントの代わりにコンテナでも作れることが分かりました。

下記のような Excel を用意して、これを Power Apps で表現していきます。
Excel テンプレートは下記からダウンロードして、適当なデータを3件入力しています。
https://www.microsoft.com/ja-jp/office/pipc/template/result.aspx?id=14487&th=31
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/4da11d25-9af4-a913-f6ee-30989ab79bcb.png)
このデータを表現するため下記のような SharePoint リストを作って、データを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/4c3d8679-b10c-0147-1db3-de2168878ae9.png)
Power Apps でキャンバスアプリを作って、データの追加で SharePointリストを追加し、縦の空 Gallery の Items に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/d0f3d5d3-631f-9d4b-1522-a04b243249b1.png)
一つ一つ対応する項目を追加します。今回はラベルで追加しました。入力したい場合はテキスト入力でもいいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/0f2ed384-c41a-f99e-a446-2ca81c2d2b0d.png)
Gallery の端までくるとドラッグアンドドロップで移動できないので x値を入力して調整します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/eb7e186a-52ae-d9f6-2842-d596143a449c.png)
項目が多いので見切れる項目が出てきます。そのままだと横スクロールバーが出ないので一度コンポーネント化してから水平コンテナにいれていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/f8a57a8e-61b4-31a2-f21a-c0124e604b14.png)
Component の下に作った Gallery を移植していきます。外部からテーブルを設定できるようにカスタムプロパティで DataSource を作成し、SharePointリストを設定し、Gallery の Items に DataSource を設定します。 Componet のサイズは何でも構いませんがここでは 1800 × 300 にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/20551117-84c9-2e62-863b-6761062de720.png)
Gallery のサイズは Parent.Height、Parent.Width にしてコンポーネントのサイズに合わせます。スクロールバーの表示をONにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/be1498d0-550e-f4f7-7255-247a8e877d1c.png)
Gallery のテンプレートパディングを0にして詰めて、各項目の罫線を1にしてセルを表現します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/24450cc2-aa4c-6ab1-288b-40c6d5f671d4.png)
作成したコンポーネントを水平コンテナに入れて、水平方向のオーバーフローをスクロールにすることで項目が多くても横スクロールで見ることが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/fa241e42-f020-4456-d44e-0c6ea357921c.png)
同様にヘッダーをコンポーネントで作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/fb223f24-7f9f-de6b-a9b3-f7de6cd6464c.png)
コンポーネントを水平コンテナに入れるとヘッダずれを起こさない表が出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/3fbe319f-d82c-5c73-4d24-cb8c6be439f7.png)
あとはタイトルと現在日時を表示するラベルを追加すれば完成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3247/04574445-3988-3c63-6024-7dd42f6018b3.png)
GASの配列操作をPythonのようにしたい(自分用メモ)

# 概要
pythonの配列操作は慣れてきたが、GASにおいてJavascriptを使用してコーディングする際に、配列操作の違いについて考えるうちに時間が溶けた。今後簡単に思い出せるために、自分用メモを残しておく`(※全然体系的にはまとめていません)`。
本記事はPythonとJavascriptの違いを対比しながら説明していく。

# 配列について
配列とは、[]で囲まれた複数の値のまとまりであり、$[1,2,3,4]$とかで表される。
JavaScriptではそのまま「配列」と呼ばれるが、Pythonでは名前が違い「リスト」と呼ばれる。ややこしいので、本稿においては双方ともに`「配列」`と統一して呼ぶことにする。配列から数値を取り出したり、追加したりするわけだが、PythonとJavaScriptでは若干違う。

# 配列の要素をループにおいて取り出したいとき
- pythonでは`in [配列]`を使う
- JavaScriptでは`of [配列]`や`list.forEach(function([配列]){})`を使う
```python:python
list = [5,9,6]
for elem in list:
   print(elem)
# 5
# 9
# 6
```
のようにpythonでは`in [配列]`と記述することで配列(リスト)の要素分だけループすることができる

一方、JavaScriptでは、
```javascript:javascript
list = [5,9,6];
for (var elem of list){
   console.log(elem);
}
// 5
// 9
// 6
```
と`of [配列]`を使用すれば同一の結果となる。
別解として、以下のようにforEachメソッドを使う方法もある。
```javascript:javascript
list = [5,9,6];
list.forEach (function(elem)){
   console.log(elem);
}
// 5
// 9
// 6
```

:::note warn
Javascriptにおいて`in [配列]`を使うと、配列のインデックス番号を取り出すことになる。(使い所は不明)
:::
```javascript:javascript
list = [5,9,6];
for (var elem in list){
   console.log(elem);
}
// '0'
// '1'
// '2'
```

# インデックス番号と配列要素どちらも取り出したいとき
- pythonでは`enumerate(list)`を使う
- JavaScriptでは`forEach(function(◯,◯){...})`を使う
```python:python
list = [5,9,6]
for i, elem in enumerate(list):
   print(i, elem)
# 0 5
# 1 9
# 2 6
```
とenumerateを使用することで簡単に２つの要素を取り出せる。
一方、JavaScriptは、
```javascript:javascript
list = [5,9,6];
list.forEach (function(elem, i){
   console.log(i, elem);
});
// 0 5
// 1 9
// 2 6
```
とforEachメソッドを使用する。


:::note info
forEachメソッドには3つの引数を渡せる。文法は`list.forEach( function( value, index, array ) { 繰り返し処理を書く });`である。valueは要素の値、indexはインデックス番号、arrayは現在処理中の配列の値が取り出せる。
:::

# 配列の特定の範囲を取り出す(スライス)
- pythonでは`:`を使って取り出す
- Javascriptは`.slice`メソッドを使って取り出す。
```python:python
list = [5,9,6,8,4,2,7]
tmp_list1 = list[3:]
tmp_list2 = list[2:4]
print(tmp_list1, tmp_list2)
# [8,4,2,7] [6,8]
```
とコロンと開始インデックス番号と終了インデックス番号を使用することで簡単にスライスできる。〇〇以降の配列を取り出したければ、終了インデックスを省略すれば良い(〇〇以前は開始インデックスを省略)。
一方、JavaScriptでは、
```javascript:javascript
list = [5,9,6];
tmp_list1 = list.slice(3)
tmp_list2 = list.slice(2,4)
   console.log(tmp_list1, tmp_list2);
});
// [8,4,2,7] [6,8]
```
と開始と終了を指定してあげれば取り出せる。
基本的な使い方は開始・終了インデックスを指定するだけなのでほぼ一緒。

# 最後に
配列操作は基本的なものが多いが、言語をまたぐと途端に作業が失速する。
しっかりとまとめて次に備えたいと思う。余裕があれば追記する。
Lone Mersenne Hunters(LMH)に参加してみよう

> 素数を見つけたからと言って、あるいは、素数でないことが判明したからと言って、何も変わらない。私の前には、やらなければならない仕事が、相変わらず山積みになっている。 ―― *小川洋子『博士の愛した数式』*[^1]

# Lone Mersenne Hunters とは

Lone Mersenne Hunters(LMH) は、メルセンヌ数の素因数を見つけ出そうという試みである。メルセンヌ数とは、$M_q=2^q-1$の形の自然数のことで、特に$M_q$が素数のとき、メルセンヌ素数と呼ばれる。メルセンヌ数にはLucas-Lehmerテストと呼ばれる確定的な素数判定アルゴリズムが存在するため、最近の大きな素数ランキング上位は軒並みメルセンヌ素数である。このメルセンヌ素数を見つけようという分散コンピューティングプロジェクトがGreat Internet Mersenne Prime Search(GIMPS)なのだが、Lucas-Lehmerテストでは素数か合成数かは分かっても、合成数のとき「素因数は何か？」という情報は何も得られない。そこで、既にメルセンヌ合成数と判明したメルセンヌ数に対して、具体的な素因数を見つけようというのが、LMHの目的である[^2]。

ここまで説明すると、大抵の人には「何のためにそんなことをするの？」という疑問が浮かんでくる。メルセンヌ数の素因数が分かったところで、お金が貰えるわけでもない[^3]。あるいは、世界のどこかにいる誰かが救われるわけでもないし、未来の数学者たちから感謝されることもないだろう。「何のため」と訊かれれば、純粋に「自己満足のため」と答えるしかない、まったく不毛な営みだ。

そういう理由で、LMHに取り組む人は極限られている。そもそも素数に興味を持つということ自体、一般人には到底理解できない嗜好であって、それでもメルセンヌ素数を探索する人たちはそこそこいるが、LMHに取り組もうとする人となるとさらに限定されるのだ。

# ソフトウェアの導入

素因数を発見するアルゴリズムは複数あるが、ここでは最も原始的な試し割の方法を紹介しよう。試し割は、GPUを使った方が圧倒的に速く、コスパも良いので、GPUの利用が強く推奨されている。メルセンヌ数の試し割をGPUで行うソフトとして次が存在する。

* Mfaktc (nvidia)
* Mfakto (AMD)
* Mlucas (その他)

ここではMfaktcを紹介する。

1. [サイト](https://www.mersenneforum.org/mfaktc/)から最新版をダウンロードする。
2. 適当な場所に解凍し、(windowsなら)exeファイルを実行すれば動き出す。

プログラムは動き出すと、同じフォルダの`worktodo.txt`にあるタスクを処理し、`results.txt`に結果を書き込む。プログラムの実行中にタスクを追加したい場合は、`worktodo.add`にタスクを書き込んでおくことで、定期的[^4]に`worktodo.txt`に取り込まれる。

# タスクを選ぶ

試し割の現状は [ここ](https://www.mersenne.ca/status/tf/0/0/1/0) から確認できる。基本的に、$2^b$まで試し割が完了していれば$b$の列にカウントされている。興味がある範囲をクリックしていくと、`www.mersenne.org`のページに飛ぶので、`Output TF worktodo format`にチェックを入れて、数値を指定し`Get Data`を押すと、`worktodo.txt`に指定するフォーマットでタスクが表示される。タスクのフォーマットは、

```
Factor=N/A,q,b,c
```

という形式であり、これで$M_q$を$2^b$から$2^c$まで試し割をするタスクとなる。これを`worktodo.txt`あるいは`worktodo.add`に貼り付ければよい。`results.txt`に書き込まれた結果を、 [ここ](https://www.mersenne.org/manual_result/) に貼り付けることで提出することができる。

タスクの実行時間を見積もるには、GIMPS内で使われている`GHz-days`という単位が一定の指標になる。$M_q$を$2^{b-1}$から$2^b$まで試し割する計算量は、
```math
1680C \times 2^{b-48} / q \mbox{ [GHz-days]}
```
と、計算される。ただし、
```math
C = 
\begin{cases}
0.016968, &\mbox{if}& 65 \le b\\
0.017832, &\mbox{if}& 63 \le b \le 64\\
0.011160, &\mbox{if}& b \le 62
\end{cases}
```

である。よって、自分が実行したいタスクの`GHz-days`を計算し、自分のGPUが1日にどのくらい`GHz-days`を稼げるかを知っていれば、1日に何タスクを実行できるかが分かる。自分のGPUが果たして1日に何`GHz-days`稼げるのか、というのは個々のGPUの性能に依る。参考までに、私の場合、GeForce GTX 1650 で1日に大体900[GHz-days]台が稼げている。

[^1]: 小川洋子『博士の愛した数式』新潮社, 2005, ISBN: 978-4-10-121523-5
[^2]: なお、GIMPSでもLucas-Lehmerテストを実施する前に、足切りを目的として試し割などが行われるが、それとは目的が異なる。
[^3]: メルセンヌ素数を発見すれば3,000ドルがGIMPSから授与される。
[^4]: 取り込む時間の間隔は`mfaktc.ini`から設定ができる。
🔰【初学者用】本当に初歩の初歩の初歩的なLinuxコマンドまとめてみた。

# はじめに
毎日Qiita投稿2日目
今日は初学者でも覚えておいて損はないLinuxコマンドをまとめてみます！
Linuxってなんだ？という方でも一度目を通してこんなことが出来るのか〜ってくらいにはしておいたほうがいいです！
# Linuとは?
まず簡単にLinuxについて説明します。ほんとにざっくり。
LinuxはWindowsやMacなどと同じOSで、コンピューターのすべてのハードウェアを管理しているソフトウェアのことです。
Linuxの操作はWindowsやMacのようにマウスで操作するGUI（グラフィカルユーザインタフェース）方式ではなく、キーボードからコマンド打って操作するCUI（キャラクタユーザインタフェース）方式になります。
もっと簡単に説明するとGUI操作はマウスでカーソルをクリックしてページを開く。マウスでリンクをクリックして特定のページに遷移するなど、いつもQiitaの記事を見る時もみんあGUI操作で記事のページを開いているはず。
CUI操作はターミナルなどにコマンドを打つことでファイルを作成したり、ディレクトリを移動したりする操作。
開発に関わる際は必須の知識。最低限これくらいは覚えておきたいというのをまとめていきます。
# 初学者用Linuxコマンド一覧 
ますは最低限これから覚えましょう。以下のコマンドは本当に初歩の初歩です。
|コマンド|説明| 使用例|
|:-----------|:------------|:------------|
| cd         | フォルダ移動| cd 移動したいフォルダ名|
| ls     | フォルダの中身を確認 | 中身を見たいフォルダでls       |
| mv       | ファイルを移動 | mv 移動元ファイル名またはフォルダ名　 移動先ファイル名またはフォルダ名        |
| cp         | フォルダやファイルをコピーする | cp 移動元フォルダまたはフォルダ名 |
| mkdir       | フォルダの作成       | mkdir フォルダ名       |
| rm   | ファイルやフォルダを削除する     | rm ディレクトリ名またはフォルダ名      |
| touch    | ファイル作成     | touch ファイル名      |
| pwd    | 現在地を表示する     | pwd      |
| find    | ファイルの検索をする     | find / -name ファイル名      |
| cat    | ファイルの内容を表示する     | cat ファイル名      |
| touch    | ファイル作成     | touch ファイル名      |
| less    | スクロールでファイルの中身確認     | less ファイル名      |

# 終わりに
上記にも書いてありますが、これが本当に初歩の初歩。なんならこれでも初歩と言えない。
でも3ヶ月前まではLinux?なにそれ美味しいの?状態でしたから。その時に比べると、継続は力なりですね！

※プログラミングを始めてまだ月日も浅い初学者が投稿しています。誤字脱字等ありましたら申し訳ないです。何か間違いがあればご指摘いただけると助かります。
【Salesforce】【資格】Salesforce 認定上級アドミニストレーター 合格までのあれこれ

当記事は受験体験記です。
※2022年5月（Spring ‘22）時点の情報です。
※あくまでもぴえさん個人の考えです。

# Salesforce 認定上級アドミニストレーター とは　（ざっくり）
・アドミンの上位資格
・受験資格：Salesforce 認定アドミニストレーター資格
・Salesforceのユーザが利用できる機能、システム管理者が利用できる設定など幅広い出題範囲
・受験料：税込22,000円
・105分60問（合格基準は65％以上）
・選択式
・試験終了後、即座に合否がわかる

# ぴえさんの受験記録
【受験日程とバージョン】
日時：2022/5/28　14:30
受験方法：オンサイト受験（最寄りの会場）
バージョン：Spring ‘22

【受験データ】
ウェブアセッサーのスクショ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461666/6e1c97bd-4bc6-2335-7a6e-429fd07197c8.png)

分かりにくいので表にしました↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461666/26b1b8ae-0441-26c2-c23c-47cce2c96b2d.png)

【感想】
・前回SalesCloudコンサルタントで痛い目を見たので、オンサイト試験一択でした。
・試験勉強は3日前くらいから始めました。さすがにいくつも試験重ねると試験対策も馴れてきたと思います。
・コンサルタント試験よりも分かる言葉が多くて、試験終了後は手ごたえありました。
・いつもギリギリで合格していたので、これまでの結果に比べると良い出来ではと思います。

# 勉強方法

１．受験ガイドを読む
　　　[資格一覧ページ](https://tandc.salesforce.com/credentials)から取得できます。模擬問題で試験の雰囲気をつかみます。
２．無料ウェビナー（できるだけ新しめ）を受ける
　　　[Salesforce資格の無料ウェビナー開催情報](https://www.salesforce.com/jp/campaign/trailhead-academy/certification-days/)で確認できます。大事なところを教えてくれるので重宝しています。
　　　2割引クーポンももらえます。受けるしか。
３．個人が出している練習問題を解く
　　SalesCloudコンサルタントのとき同様、[Salesforce過去問と解説](https://note.com/salesforce777)にお世話になりました。
　　※購入まではしていないのでどういう解説をしているか不明ではありますが、いくつか不正解のものもありました。
４．２～３で分からない単語や疑問点を、ヘルプを読んで確実に解消する
　　[コードではなくてクリックによる Salesforce の拡張](https://help.salesforce.com/s/articleView?id=sf.extend_click_intro.htm&type=5)
　　[Sales Cloud の基本](https://help.salesforce.com/s/articleView?id=sf.sales_core.htm&type=5)
　　[Service Cloud](https://help.salesforce.com/s/articleView?id=sf.service_cloud.htm&type=5)

Salesforceの他資格についてはこちらの記事にまとめています↓

https://qiita.com/piepie1231/items/78a0dd6bdfa2c64568cd
【Salesforce】【資格】Salesforce 認定 Sales Cloud コンサルタント 合格までのあれこれ

当記事は受験体験記です。
※2022年4月（Winter ‘22）時点の情報です。
※あくまでもぴえさん個人の考えです。

# Salesforce 認定 Sales Cloud コンサルタント とは　（ざっくり）
・コンサルタント向け資格？
・受験資格：Salesforce 認定アドミニストレーター資格
・おもにSales Cloudについて出題
・受験料：税込22,000円
・105分60問（合格基準は62％以上）
・選択式
・試験終了後、即座に合否がわかる

# ぴえさんの受験記録
【受験日程とバージョン】
初めてオンライン試験で申し込んだのですが、試験開始ができず最終的にオンサイト試験に振り替えになりました。

1回目
日時：2022/2/27
受験方法：オンライン受験
→試験ソフトで試験が開始されず中止、日本語サポートにメールで問い合わせて振り替えを依頼

2回目
日時：2022/3/17
受験方法：オンライン受験
→試験ソフトで試験が開始されず中止、Chatサポートでリアルタイムに問い合わせてオンサイト受験に切り替えを依頼

3回目
日時：2022/4/2
受験方法：オンサイト受験（最寄りの会場）
バージョン：Winter ‘22

【受験データ】
ウェブアセッサーのスクショ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461666/221555f5-4032-0ef9-a37f-64fe55360fb3.png)

分かりにくいので表にしました↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461666/67e9f687-5158-e755-b868-0a4fee96e18a.png)

【感想】
・初めてオンライン受験を試してみましたが、もう二度と受けないことを心に誓いました。
※試験用ソフトのインストール、ネット環境確認、ファイアウォール無効化等はもちろん準備していました。
※1回目が中止になったあとにディスプレイドライバのインストールもありました。
・せっかく勉強して試験に挑むのに不具合で試験を開始できないという状況がかなりストレスでした。
・近場に会場があるなら迷わずオンサイト受験することをおすすめします。
・試験勉強は最初は1週間くらいやって、2回目3回目は1日前だけ徹夜しました。
・対策していたとはいえ「推奨されるソリューションはどれか？」といったこれまでのアドミン試験やデベロッパー試験では出ないタイプの出題はとても戸惑いました。
・時間も得点もギリギリでしたが、受かってよかったです。（徹夜する必要がなくなって良かったとほっとしました。）

# 勉強方法

１．受験ガイドを読む
　　　[資格一覧ページ](https://tandc.salesforce.com/credentials)から取得できます。模擬問題で試験の雰囲気をつかみます。
２．無料ウェビナー（できるだけ新しめ）を受ける
　　　[Salesforce資格の無料ウェビナー開催情報](https://www.salesforce.com/jp/campaign/trailhead-academy/certification-days/)で確認できます。わかりやすく説明してくれるので助かっています。
３．個人が出している練習問題を解く
　　[Salesforce過去問と解説](https://note.com/salesforce777)にお世話になりました。
　　※購入まではしていないのでどういう解説をしているか不明ではありますが、いくつか不正解のものもありました。
４．２～３で分からない単語や疑問点を、ヘルプを読んで確実に解消する
　　[Sales Cloud の基本](https://help.salesforce.com/s/articleView?id=sf.sales_core.htm&type=5)

Salesforceの他資格についてはこちらの記事にまとめています↓

https://qiita.com/piepie1231/items/78a0dd6bdfa2c64568cd
Pythonの仮想環境の作り方 Mac/venv

ディレクトリを作る
```terminal:手順1
  $ mkdir project_name
```

作ったディレクトリに移動する
```terminal:手順2
  $ cd project_name
```

仮想環境作成コマンド
```terminal:手順3
  $ python3 -m venv フォルダ名
```

仮想環境を起動
```terminal:手順4
  $ source フォルダ名/bin/activate
```

仮想環境を終了
```terminal:手順5
  (フォルダ名) project_name $ deactivate
```


番外編

パッケージの入れ方

```terminal:
  $ pip install superjson
```

パッケージの確認
```terminal:
  (フォルダ名) project_name $ pip freeze
  superjson==0.0.13
```
【VSCode/Unity】useGlobalMono が消えて補完が効かなくなったときの対処法

# 環境
- macOS 12.1
- Unity 2020.3.32.f1
- Visual Studio Code 1.67.2
- OmniSharp 1.25.1
- Mono 6.12.0

VSCode で補完が効かなくなり、調べると `omnisharp.useGlobalMono` を `always` にすれば直ると出てきたが、すでにそう設定してあった。困ったので再起動すると、`omnisharp.useGlobalMono` の項目が消えていて、C# ファイルを開くと `Some projects have trouble loading. Please review the output for more details.` のエラーが止まらない。

# 対処法
OmniSharp の v1.25.0 で `omnisharp.useGlobalMono` の設定が消されている。
代わりに `Omnisharp: Use Modern Net` のチェックを外せば良い。
私の環境だと
```text
[ERROR] Error: Unable to find Mono. Ensure that Mono's '/bin' folder is added to your environment's PATH variable.
```
が出てきたので、
```text
$ export PATH=$PATH:/Library/Frameworks/Mono.framework/Versions/6.12.0/bin
$ source ~/.zshrc
```
をすると解決した。
Specification of PWM Driver, No.37, AUTOSAR R21-11(240) CP

Specification of PWM Driver, No.37, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SWS_PWMDriver.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)

|Term|Description|
|:--|:--|
|PWM Channel| Numeric identifier linked to a hardware PWM.
|PWM Output State| Defines the output state for a PWM signal. It could be:- High. - Low.
|PWM Idle State |The idle state represents the output state of the PWM channel after the call of Pwm_SetOutputToIdle or Pwm_DeInit
|PWM Polarity| Defines the starting output state of each PWM channel
|PWM Duty cycle| Defines a percentage of the starting level (could be high or low) related to the period.
|PWM period |Defines the period of the PWM signal.
|PWM |Pulse Width Modulation.
|DEM |Diagnostic Event Manager.
|DET| Default Error Tracer.
|MCU |Microcontroller Unit.
|PLL| Phase Locked Loop.
|ISR| Interrupt Service Routine

## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)

[1] Layered Software Architecture
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[2] General Requirements on SPAL
AUTOSAR_SRS_SPALGeneral.pdf
[3] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral.pdf
[4] Specification of Default Error Tracer
AUTOSAR_SWS_DefaultErrorTracer.pdf
[5] Specification of MCU Driver
AUTOSAR_SWS_MCUDriver.pdf
[6] Specification of ECU Configuration,
AUTOSAR_TPS_ECUConfiguration.pdf
[7] Basic Software Module Description Template,
AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
[8] List of Basic Software Modules
AUTOSAR_TR_BSWModuleList
[9] General Specification of Basic Software Modules
AUTOSAR_SWS_BSWGeneral.pdf

# 更新資料　Abstract Platform, Vehicle Modelへの対応版は(2)

Specification of PWM Driver, AUTOSAR R22-11, CP, No.37

https://qiita.com/kaizen_nagoya/items/c87498f36db219a2c0f4


Specification of PWM Driver, AUTOSAR R22-11, CP, No.37(2)

https://qiita.com/kaizen_nagoya/items/f00307c9abfd3b8dfd34
[ Laravel ] 良いコードとは・・・

## 初めに
自分は6月からサーバーサイドエンジニアとして働くことになりました。
エンジニアとしてプロジェクトに参画する前に、`ただ動くコード`ではなく、`良いコード`について学んでおきたいなと思ったので、以下の記事を参考に良いコードとは・・・についてまとめてみました！

https://php-junkie.net/beginner/coding/


## 良いコードとは・・・
大きく分けると、
1.プロジェクトのコーディング規約
2.フレームワークのコーディング規約
3.PSR-2（コーディングスタイルのガイド）
4.自分で決めたコーディングスタイル
5.関数や変数の命名
6.コードの共通化

## コーディング規約
良いコードの一つとして挙げられるのが`コードの可読性（読みやすいコードになっているか）。`
　コードの可読性を向上させるにはコーディングスタイルを統一する必要があり、プロジェクトごとに異なった複数のコーディング規約が定められている。

### 1.プロジェクトのコーディング規約
多人数が参画するプロジェクトでは予めコーディング規約が定められている場合がある。
予め規約が定められている場合は、その規約に従ってコーディングする。

### 2.フレームワークのコーディング規約
フレームワークにはコーディング規約が定められている。
フレームワークに定められた規約に反したコーディングをしてしまうと、面倒な設定をしなくてはいけなくなってしまう場合がある。
既存プロジェクトに予め規約が定められてない場合には、フレームワークに定められた規約に従うと良い。

### 3.PSR-2（コーディングスタイルのガイド）
PHPには、標準的なコーディングスタイルのガイドとして、PSR-2（ https://www.php-fig.org/psr/psr-2/） がある。

### 4.自分で決めたコーディング規約
こだわりや理由があるときは、自分で決めたコーディング規約で行うのもあり。

## 変数や関数の命名
### 5.変数
変数名は何の値が代入されるのかを具体的に`単数形の名詞`で表す。
その変数が配列であれば`複数形の名称`にする。

### 5.関数
関数・メソッドは何かしらの処理を実行するので`動詞`で表す。
基本的に何の処理を実行させたいのかわかるように命名してあげる。
（例）フルーツの値を取得する関数→getFruits()

## コードの共通化
### 6.重複してるコードを共通化する
実行したい処理内容と意図が同じようなコードに関しては、共通のコードをまとめて共通化してあげることで、何か修正点があった時にまとめたコードのみ修正すれば良いためメンテナンス性や変更容易性を向上させることができる。
Unity Package Error  An error occurred while resolving packages: Project has invalid dependencies:のエラーが出た時の対処法（備忘録）

unityを起動するたびに
```
Unity Package Error 
An error occurred while resolving packages:
Project has invalid dependencies:
```
というエラーが出てきた時の対処法について

# 解決方法
①プロジェクトを新規作成して、エラーが出ないか確認する
②新規作成した方のプロジェクトのフォルダをエクスプローラーから探して、Packagesの中にある`manifest.json`を全コピ
③エラーが出たプロジェクトのフォルダをエクスプローラーから探して、さっきコピーしたのを該当の`manifest.json`に全文ペースト
④保存すると以下のエラー分が出たので、unityのプロジェクトの再起動

```
NullReferenceException: Object reference not set to an instance of an object UnityEditor.Graphs.AnimationStateMachine.Graph.GenerateConnectionKey
```

**⑤治った！**


# 参考

https://unity-yuji.xyz/unityeditor-graphs-edge-cs-114/

https://teratail.com/questions/264856
Requirements on PWM Driver, No.113, AUTOSAR R21-11(239) CP

Requirements on PWM Driver, No.113, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SRS_PWMDriver.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)

|Term|Description|
|:--|:--|
|CS| Chip Select
|DIO |Digital Input Output
|ECU |Electric Control Unit
|DMA |Direct Memory Access
|ICU |Input Capture Unit
|MAL| Old name of Microcontroller Abstraction Layer (replaced by MCAL because ‘MAL’ is a french term meaning ‘bad’)
|MCAL| Microcontroller Abstraction Layer
|MCU |Microcontroller Unit
|MISO |Master Input Slave Output
|MMU| Memory Management Unit
|MOSI| Master Output Slave Input
|Master |A device controlling other devices (slaves, see below)
|Slave |A device being completely controlled by a master device
|NMI| Non Maskable Interrupt
|OS |Operating System
|PLL |Phase Locked Loop
PWM Pulse Width Modulation
RX Reception (in the context of bus communication)
SPAL The name of this working group
SFR Special Function Register
RTE RunTime Environment
Abbreviation: Description:
STD Standard
REQ Requirement
UNINIT Uninitialized (= not initialized)
## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)

[1] List of Basic Software Modules
AUTOSAR_TR_BSWModuleList.pdf
[2] Layered Software Architecture
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[3] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral.pdf
[4] General Requirements on SPAL
AUTOSAR_SRS_SPALGeneral.pdf
[5] Software Standardization Template
AUTOSAR_TPS_StandardizationTemplate.pdf
Specification of Time Service, No.624, AUTOSAR R21-11(238) CP

Specification of Time Service, No.624,  2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SWS_TimeService.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)

|Term|Description|
|:--|:--|
|nop |No Operation
|GPT Predef Timer |A GPT Predef Timer is a free running up counter provided by the GPT driver.Which GPT Predef Timer(s) are available depends on hardware (clock, hardware timers, prescaler, width of timer register, …) and configuration. A GPT Predef Timer has predefined physical time unit and range.
|Time Service Predef Timer| A Time Service Predef Timer is a free running up counter with predefined physical time unit and range. The hardware timer functionality is based on the corresponding GPT Predef Timer. For each Predef Timer a set of API services is provided by the Time Service module. The user can instantiate any timers (only limited by available memory) and can use the instances completely independently of each other.
|Timer instance| A timer instance is a data object of an API data type Tm_PredefTimer…bitType, this means it is an instantiation of a Time Service Predef Timer on user software level. The user can instantiate any timers (only limited by available memory). The timer instances can be used completely independently of each other by methodes provided as API services.
|Reference time |The reference time is a time value stored for each timer instance. It’s an implementation specific element of the API data types Tm_PredefTimer…bitType.

## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)

[1] List of Basic Software Modules,
AUTOSAR_TR_BSWModuleList.pdf
[2] Layered Software Architecture,
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[3] General Requirements on Basic Software Modules,
AUTOSAR_SRS_BSWGeneral.pdf
[4] Specification of Standard Types,
AUTOSAR_SWS_StandardTypes.pdf
[5] Specification of Default Error Tracer,
AUTOSAR_SWS_ DefaultErrorTracer.pdf
[6] Specification of ECU Configuration,
AUTOSAR_TPS_ECUConfiguration.pdf
[7] Requirements on Time Service,
AUTOSAR_SRS_TimeService.pdf
[8] Glossary,AUTOSAR_TR_Glossary.pdf
https://www.autosar.org/fileadmin/standards/foundation/21-11/AUTOSAR_TR_Glossary.pdf
[9] Basic Software Module Description Template,
AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
[10] General Specification of Basic Software Modules,
AUTOSAR_SWS_BSWGeneral.pdf
[11] Specification of GPT Driver,
AUTOSAR_SWS_GPTDriver.pdf
[12] IEC 7498-1 The Basic Model, IEC Norm, 1994
Specification of Hardware Test Manager on start up and shutdown, No.703, AUTOSAR R21-11(237) CP

Specification of Hardware Test Manager on start up and shutdown, No.703,  2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SWS_HWTestManager.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)

|Term|Description|
|:--|:--|
|ADC |Analog to Digital converter
|BIST| Built In Self Test
|BSW |Basic Software
|DET|Default error tracer
|ECU |Electronic Control Unit
|ECUM| Electronic Control Unit Manager
|HTMSS |Hardware Test Management startup shutdown
|MCU |Micro Controller Unit
|MSTP |Microcontroller Specific Test Package
|RTE |Run Time Environment
## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)

[1] List of Basic Software Modules
AUTOSAR_BasicSoftwareModules.pdf
[2] AUTOSAR Layered Software Architecture
AUTOSAR_LayeredSoftwareArchitecture.pdf
[3] AUTOSAR General Specification for Basic Software Modules
AUTOSAR_SWS_BSWGeneral.pdf
[4] Specification of Memory Mapping
AUTOSAR_SWS_MemoryMapping.pdf
[5] Specification of RTE
AUTOSAR_SWS_RTE.pdf
[6] Specification of ECU state manager
AUTOSAR_SWS_ECUStateManager.pdf
[7] Requirements on HTMSS
AUTOSAR_SRS_HTMSS.pdf
[8] Technical Report on HTMSS
AUTOSAR_TR_HWTestManagementIntegrationGuide.pdf
[5] IEC 7498-1 The Basic Model, IEC Norm, 1994
Specification of Default Error Tracer, No.17, AUTOSAR R21-11(236) CP

Specification of Default Error Tracer, No.17, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SWS_DefaultErrorTracer.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)
no

## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)

[1] Glossary
AUTOSAR_TR_Glossary
[2] General Specification of Basic Software Modules
AUTOSAR_SWS_BSWGeneral
[3] Requirements on Diagnostics
AUTOSAR_RS_Diagnostics
[4] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral
Requirements on Operating System, No.8, AUTOSAR R21-11(234) CP

Requirements on Operating System, No.8, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SRS_OS.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)

|Term|Description|
|:--|:--|
|API| Application Programming Interface
|BSW| Basic Software
|COM| Communications
|ECU |Electronic Control Unit
|HW |Hardware
|ISR |Interrupt Service Routine
|MC |Multi-Core
|MCU| Microcontroller Unit
|MPU |Memory Protection Unit
|NM |Network Management
|OIL| OSEK Implementation Language [2]
|OS |Operating System
|OSEK/VDX |Offene Systeme und deren Schnittstellen für die Elektronik |im| Kraftfahrzeug
|SC |Single-Core
|SW |Software
|SWC |Software Component
## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)
[1] Standardization Template
AUTOSAR_TPS_StandardizationTemplate
[2] ISO 17356-6: Road vehicles – Open interface for embedded automotive applications – Part 6: OSEK/VDX Implementation Language (OIL)
[3] Glossary
AUTOSAR_TR_Glossary
[4] ISO 17356-3: Road vehicles – Open interface for embedded automotive applications – Part 3: OSEK/VDX Operating System (OS)
[5] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral
Requirements on Hardware Test Manager on start up and shutdown, No.760, AUTOSAR R21-11(233) CP

Requirements on Hardware Test Manager on start up and shutdown, No.760, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SRS_HWTestManager.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)

|Term|Description|
|:--|:--|
|ADC |Analog to Digital converter
|BIST |Built In Self Test
|BSW |Basic Software
|ECU |Electronic Control Unit
|ECUM |Electronic Control Unit Manager
|HTMSS |Hardware Test Management startup shutdown
|MCU| Micro Controller Unit
|MSTP| Microcontroller Specific Test Package
## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)

[1] Layered Software Architecture
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[2] Technical report HTMSS
TR_HWTestManagementIntegrationGuide.pdf
[3] Specification of HTMSS
AUTOSAR_SWS_HTMSS.pdf
The ISO26262 part 5 chapter 8 requirements for hardware architecture metrics.
Specification and Integration of Hardware Test Management at start up and shutdown, No.804, AUTOSAR R21-11(232) CP

Specification and Integration of Hardware Test Management at start up and shutdown, No.804, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_TR_HWTestManagementIntegrationGuide.pdf


AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11, 200文書読んだ。2022年5月に全部到達。

https://qiita.com/kaizen_nagoya/items/4043e8414f850ce266a4

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)

|Term|Description|
|:--|:--|
|HTMSS |Hardware Tests Management Start up and Shutdown
|DEM| Diagnostic Event Manager
|ECU |Electronic Control Unit
|BIST| Built-In Self Tests
|CDD |Complex Device Driver
|MSTP |Microcontroller Specific Test Package
## 英日単語帳
日本語は仮訳

T.B.D.

# 参考(reference)

[1] Specification of ECU State Manager
AUTOSAR_SWS_ECUStateManager.pdf
[2] Specification of MCU Driver
AUTOSAR_SWS_MCUDriver.pdf
[3] Specification of BSW Mode Manager
AUTOSAR_SWS_BSWModeManager.pdf
[4] Specification of Hardware test management start up and shutdown
AUTOSAR_SWS_HTMSS.pdf
ムームードメインで取得したドメインをさくらVPSのサーバで使用する

# この記事について
個人開発でさくらVPSを使用していますが、ドメイン取得はムームードメインで行いました。
その際、取得したドメインを使用するには、ムームードメイン側とさくらVPS側でひと手間必要だったため、その記録を残したいと思います。
**この手順では、ドメインを取得するのみで、SSL通信ができるようになるわけではないためご注意ください。**
SSL証明書を発行してSSL通信可能とするための手順は、[【Ubuntu+Nginx】Let's EncryptでSSL証明書を発行してhttps通信を行う](https://qiita.com/shin4488/items/8738e13b92143c88aab6)に記載しました。

# 対象読者
* （さくらVPS以外のレジストラで）ドメインを取得して、取得したドメインをさくらVPSで使用したい方
* ムームードメインのアカウント・さくらVPSのアカウントの両方を取得済みの方

# ムームードメインでドメインを取得する
まずは[ムームードメインのサイト](https://muumuu-domain.com/domain/search)で自分の好きなドメインに空きがあるか確認します。

空きがある場合は、画像のように `お申込みへ` をクリックしてドメインの契約手続きを行います。
表示されている金額は1年分の金額となっており、1年後に自動更新となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/86d73f4a-a961-5013-6577-450192134c9c.png)

# 取得したドメインをさくらVPSで使用できるように設定する
## ムームードメインでさくらVPSのネームサーバを登録する
ムームードメインでドメインを取得すると、「コントロールパネル」からログインして契約中のドメイン情報を確認することができます。
この中で、さくらVPSサーバに設定したいドメインを開き、 `ネームサーバ設定変更` からネームサーバ（ドメイン名をサーバのIPアドレスに変換してくれるサーバ）をさくらVPSのネームサーバに変更するように設定が可能です。

`ネームサーバ設定変更` ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/39244043-7084-77a5-211a-5d8dc3034278.png)

`GMPペパボ以外のネームサーバを使用する` を選択し、ネームサーバ1・ネームサーバ2をそれぞれ以下のように記載します。
（参考：[ネームサーバ（オプションサービス）を利用したい](https://help.sakura.ad.jp/domain/2303/?article_anchor=js-nav-4)）
* ネームサーバ1：ns1.dns.ne.jp
* ネームサーバ2：ns2.dns.ne.jp
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/bf8f5855-35cb-7aee-085e-593b90d14ec5.png)

`ネームサーバ設定変更` をクリックしてしばらくするとムームードメイン側の設定が反映されます。

## 取得したドメインをさくらVPSに登録する
[さくらのVPSのコントロールパネル](https://secure.sakura.ad.jp/vps/login?redirect=%2Fservers)にログインして、 `DNS登録` をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/f54c7392-f738-766f-bf1f-7bac34f53f55.png)

`ネームサーバサービス` から `ネームサーバ新規登録` を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/4d974cdc-6801-34ca-a343-eba742b3c9e3.png)

先ほど取得したドメイン名を入力して、 `ドメイン名を登録する` をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/650722f8-caef-1de9-0dcc-a7f4c0c97a29.png)

`さくらのDNSに設定する（簡単設定）` の欄に、さくらVPSのサーバのIPアドレスを入力し、 `追加して設定` をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/bda2db6e-5f82-9dc9-1ceb-522d90d86c8f.png)

以下のようにNSレコード・Aレコードが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234275/54e15382-c331-6d45-63e4-a9dc389c33a4.png)

<details><summary>動作確認用HTML</summary><div>

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>ドメインテスト</title>
  </head>

  <body>
    ドメインの動作確認
  </body>
</html>
```
</div></details>

上記のようなサンプルのHTMLファイルをサーバ上に配置して表示設定を行い、ブラウザ上でドメイン指定でアクセスした際に、このHTMLの内容が表示されれば完了です。
**ドメインを取得したのみで、SSL通信ができるようになったわけではないためご注意ください。**

# 参考
[『さくらのVPS+ムームードメイン』〜独自ドメインを利用する方法〜](http://vdeep.net/sakuravps-muumuu)
[独自ドメインの設定 - さくらVPS設定マニュアル](https://www.sakura-vps.net/original-domain-settings-for-sakura-vps/)
【AWS】ネットワークACLとセキュリティグループの違いについて

## 目的
ネットワークACLとセキュリティグループについて、どのような共通点があり、どのような点が異なるかを整理する。

## 想定読者
ネットワークACLとセキュリティグループの共通点、違いを整理したい方。

## 共通点
- ネットワークACLとセキュリティグループ、どちらもファイアーウォールとなる。
具体的には、通信経路のポート番号を「許可」することが可能。

- 予めデフォルト用に用意されているフォーマットでは、全ての通信が許可されている。

## 異なる点
### ネットワークACL
- サブネット単位でポート番号を制御することが可能。
- 新規作成する際、デフォルト設定は、全ての通信が許可されている。
- ステートレスのため、戻りの通信で使用するポート番号を考慮する必要がある。
- 通信経路のポート番号を「拒否」することが可能。
- 最も低い番号のルールから順にルールを処理される。

### セキュリティグループ
- EC2インスタンス単位で制御することが可能。
- 新規作成する際、デフォルト設定は、全ての通信が許可されていない。
- ステートフルのため、戻りの通信で使用するポート番号を考慮する必要がない。
- 通信経路のポート番号を「拒否」することが出来ない。
- 設定したルールは全て適用される。

## 優先度について
どちらが優先されるということはない。
なぜなら、ネットワークACLはサブネット単位で動作し、セキュリティグループはインスタンス単位で動作しているため、通信を制御する場所が異なるためである。使用したい通信に応じてどちらも許可する必要がある。

## どのように設定すれば良いか？
結論としては、基本的にはセキュリティグループにて通信制御を細かく設定し、ネットワークACLは全開放(デフォルト設定)でも良いと考える。厳しいトラフィック要件が存在する場合は、ネットワークACLの設定を行う方針で問題ないと想定する。
どちらも出来ることは「ポート番号の制御」となるため、どちらかを設定することで「ポート番号の制御」に関してのセキュリティは担保出来る。では、どちらを使用するかを検討した時に、セキュリティグループは、送信元や送信先にセキュリティグループを設定することが出来、細かい通信制御が可能となる。また、戻りの通信で使用する際のポート番号を考慮しなくて済むため、基本的には、セキュリティグループで通信制御を細かく行う方針が良いと考える。

## 参考情報
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Security.html
https://dev.classmethod.jp/articles/why-i-prefer-sg-to-nacl/
.NET MAUI (環境構築からHallo, World!～Windowsアプリ編～)

# .NET MAUIとは

https://docs.microsoft.com/ja-jp/dotnet/maui/what-is-maui

> .NET Multi-Platform App UI (.NET MAUI) は、C# と XAML を使用して、ネイティブのモバイル アプリやデスクトップ アプリを作成するためのクロスプラットフォーム フレームワークです。

# 開発環境
* Windows 11
※Windowsの開発者モードを有効にする必要あり
* Visual Studio 2022 17.3 (Preview)

取り急ぎWindowsアプリだけ動けばよいので、Android SDKは入れてません。
※ iOS／Macアプリには開発環境としてMacが必要です。

# Visual Studio 2022 17.3 (Preview) をインストール

<b>[ここ](https://docs.microsoft.com/ja-jp/dotnet/maui/get-started/first-app?pivots=devices-windows#get-started-with-visual-studio-2022-173-preview "")</b> からダウンロードして、Visual Studio Installerを起動する。

「.NET Multi-platform App UI development」を選択された状態でインストール開始する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/4ec1c991-4816-19ee-195b-fff00ec1df74.png)

# MAUIプロジェクトの新規作成

インストールが完了するとVisual Studioが起動します。

[新しいプロジェクトの作成]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/4dcb2be9-59c1-9108-85df-fd30957c9c85.png)

「.NET MAUI アプリ」を選択して[次へ]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/4d43eb40-f314-c60b-f708-10201925af1b.png)

プロジェクトの名前を入力して[作成]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/275a1c83-5f73-f68c-c856-175ed5d770e5.png)

# とりあえずHallo, World!

.csprojファイルを編集して、ビルド対象をWindowsアプリだけに変更する。
TizenやLinuxもサポートされるようです。
```xml

<!-- TargetFrameworksをnet6.0-Windowsだけにする。
<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
-->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
<!-- <TargetFrameworks>$(TargetFrameworks);net6.0-tizen</TargetFrameworks> -->

```

そのままビルドすると配置を有効にしろと怒られるので、有効にする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/f7490d8d-c3f9-7be8-9496-d3e9f4371d76.png)

アプリを実行してみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/1fa8cbab-05ef-b27c-34bb-7b7bc919703e.png)

# プロジェクトの中身
## 構成
プラットフォームごとのフォルダがあり、専用の処理やリソースを配置できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/086f3b8c-d243-5703-5b98-94fc416775aa.png)

## メインページのXAML
XAML デザイナー(XAMLのプレビュー表示＆GUIでの編集)がないみたいですが、リリース版では対応されるでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515556/e7e136cd-2108-cb00-3ef7-234b3e1dfbe9.png)

## メインページのコード
```c#
namespace MauiAppDemo;

public partial class MainPage : ContentPage
{
	int count = 0;

	public MainPage()
	{
		InitializeComponent();
	}

	private void OnCounterClicked(object sender, EventArgs e)
	{
		count++;

		if (count == 1)
			CounterBtn.Text = $"Clicked {count} time";
		else
			CounterBtn.Text = $"Clicked {count} times";

		SemanticScreenReader.Announce(CounterBtn.Text);
	}
}
```
※SemanticScreenReader.Announceは音声読み上げだそうです。

# 参考
https://docs.microsoft.com/ja-jp/dotnet/maui/what-is-maui

https://docs.microsoft.com/ja-jp/dotnet/maui/get-started/first-app?pivots=devices-windows

https://docs.microsoft.com/ja-jp/dotnet/maui/
【Wordpress】リバースプロキシを利用し、自宅のラズパイでWordpress環境を構築してみた②

## 前回までの振り返り
　[**前回の投稿**](https://qiita.com/daimaru_engineer/items/60cc2008fb7a91fb41f9)でお話させていただいた自宅にあるラズパイをウェブサーバ、AWSのEC2サーバをリバースプロキシとして利用し、Wordpress環境を構築しました。
　今回、この環境構築で紆余曲折しながらも対応したことをリストにして記載させていただきます。

**（対応したこと）**
　**１：1ドメインで複数ウェブサーバの立ち上げ**　※今回の投稿はこの内容
　２：EC2に独自ドメインを割り当て、アクセスしてきたドメイン名によって、指定のウェブサーバに振り分け（LB）の実施
　３：Wordpressのへのアップロードファイルサイズの上限容量変更
　４：プラグインのAll-in-one migrationが100%で止まっている時の対処法
　５：リバースプロキシ環境でのWordpressのSSL化対応
　６：Wordpressのバックアップファイル自動作成術
　７：複数サーバの複数サイトのデータを自動バックアップ

　正直、そこまで対応したことは多くなかったです。元々個人的にJavascriptやPHP、HTML/CSSの勉強目的でウェブアプリを作っていたので、ある程度環境は整っておりました。今回は、No.1の対応を投稿し、後日、No.2以降を順に投稿していこうと思います。

## １つのドメインで複数のウェブサーバに制御してみた（LB）
　ドメインで複数のウェブサーバに振り分けた方法について、説明します。まず初めに、nginxのConfig修正を実施しました。
**１：nginxのConfigを修正**
　　　Nginxのnginx.confの設定を変更する必要があります。変更後のConfigやnginx.confの保存場所は下記の通りとなります。

```
・nginx.confの保存場所：/etc/nginx/nginx.conf
< 変更後のConfig内容> 
　　　server{
　　　　listen 80;
              server_name <ここにサーバのドメイン名を記載>
              location /{　※デフォルトのドメイン名でアクセス可能となる設定                           
                resolver 8.8.8.8;
                proxy_pass http://<IP アドレスA>
              }
              location /<server A>{　※Server A  に振り分け                
                resolver 8.8.8.8;
                proxy_pass http://<IP アドレスA>
              }
              location /<server B>{　※Server Bに振り分け                            
                resolver 8.8.8.8;
                proxy_pass http://<IP アドレスB>
              }
           }
```

　　上記の設定を投入することで「 http://aaaa.co.jp 」や 「 http://aaaa.co.jp/serverA 」の場合、IP アドレスAのwebサーバに振り分けられます。また、「 http://aaaa.co.jp/serverB 」の場合、IP アドレスBのwebサーバに振り分けられます。この対応により、1ドメインで複数のwebサーバに振り分けることが可能です。
イメージ図は、以下の通りとなります。
![Screen Shot 2022-05-28 at 21.37.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658685/6d4170d3-95ba-a125-df7c-01f4586f9c63.png)

## nginxの再起動
　　①nginxの文法確認
　　　sudo nginx -t
　　②nginxの再起動
　　　sudo systemctl restart nginx.service
上記の①のコマンドでは、nginx.confの文法を確認し、問題があればエラー、問題がなければOKの文言が表示されます。このコマンドで確認後、問題なければ、さまざまコマンドがあるかと思いますが、②のコマンドでnginxの再起動を実施致します。この２つの対応で指定のURLとIPアドレスが紐づけられます。

```
（成功時の出力結果）
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

（失敗時の出力結果（例））
nginx: [emerg] location "/50x.html" is outside location "/serverA_blog/" in /etc/nginx/nginx.conf:66
nginx: configuration file /etc/nginx/nginx.conf test failed
```
## まとめと今後の課題
　今回、対応した内容は数ある対応方法の１つに過ぎません。より良い方法があるかもしれませんが、そこはご容赦いただければと思います。
　また、この対応を実施した後に友人のホームページはアドセンスやアフェリエイトを実施したいという背景があったため、独自ドメインを取得しないとGoogleから承認が降りづらいという話をされました。そのため、この対応は無意味となってしまいました。。。元々、極力お金をかけずに構築したいという話でしたので、コストを抑えられないかと考え対応したのですが、仕方ないですね。。。
　次回は、独自ドメインの取得からそのドメインを指定のサーバに振り分けた対応方法を投稿したいと思います。