OmniAICreator/Qiita-1.07M huggingface dataset:
Nautobotのデバイスとケーブル接続


# はじめに
NautobotというイケてるSoT(Source of Truth)ツールを使ってみたいものの、各コア機能の中身がわからないので、調べてみようと思いました。
今回は「デバイスとケーブル接続」について進めていきます。

# TL;DL
- 現実世界に近い形でモデリングされている
- 最初に定義するのが大変？
- これでケーブル結線表ともおさらばしたい

# [デバイスとケーブル接続](https://nautobot.readthedocs.io/en/stable/core-functionality/devices/)

## デバイス
- デバイスの高さはラックユニット(U)単位で計測
- 深さは、fullかhalfの２種類
- 高さ0Uは、垂直に取り付けられたPDUなどを指す
- U8からU10を占める3Uデバイスは、U8に取り付けられていると処理される
- 各デバイスはデバイスタイプからインスタンス化される
    - デフォルトコンポーネントが自動的に作成される
        - コンソールポート
        - 電源ポート
        - インターフェースなど
- デバイス名はサイト内で一意である必要がある

## デバイスの役割
- ユーザ定義で自由にカスタマイズ可能
    - コアスイッチ
    - ディストリビューションスイッチ
    - アクセススイッチなど

## プラットフォーム
- デバイス、VMで実行されるソフトウェアのタイプを定義
    - 異なるバージョン、機能セットで区別が可能
- デバイスタイプは同じでもOSが違うなど
- NautobotがNAPALMなどを使う際にも使用される

# [デバイスコンポーネント](https://nautobot.readthedocs.io/en/stable/core-functionality/devices/#device-components)

## コンソールポート
- 物理タイプを設定可能
- コンソールサーバまたはパススルーポートにケーブル接続可能

## コンソールサーバのポート
- 物理タイプを設定可能
- コンソールポートまたはパススルーポートにケーブル接続可能

## 電源ポート
- 物理タイプ、ワット数などを設定可能
    - これらにより、給電の使用率を計算できる
- ダウンストリームデバイスに電力を供給する場合、最大ドロー数は空白のままにすること
- ケーブルは、電源コンセント・電源フィードのみに接続可能

## 電源コンセント
- PDUなどのコンセントを表す
- 物理タイプを設定でき、特定の上流電源ポートに関連付けが可能

## インターフェース
- イーサネット以外もサポート
- オプション
    - MACアドレス
    - MTU
    - IEEE802.1Q
    - enable/disable
    - 帯域外の指定
- 物理インターフェイス
    - ケーブルと接続可能
    - LAGに配置され、親LAGインターフェイスに関連付けられる

## フロントポート
- パススルーポート
    - 例：タッチパネル
- 同じデバイスの特定のリアポートにマップする必要がある

## リアポート
- フロントポート同様に、パススルーポート
- あるケーブルから次のケーブルへのパスの継続を表す
- 光のMPOケーブルを使う際に活用できる？

## デバイスベイ
- 子デバイスをインストールできる親デバイスのスペース・スロットのこと
    - 例：2Uシャーシ(4台のブレードサーバーを収容可能)
    - 中の各サーバーは0Uデバイスとして定義される
- 子デバイスは独立しており、親とコントロールプレーンを共有しない


:::note info
 デバイスベイ、はラインカードのモデリングには不向き。
⇒親デバイスのコントロールプレーンに依存しているため。
代わりに、デバイス内のインベントリアイテムとしてもモデル化し、関連するインターフェイスをデバイスに直接割り当てる
:::

## インベントリアイテム
- デバイス内にインストールされているハードウェアコンポーネントを表す
    - 電源ユニット
    - CPU
    - ラインカード
- 主に在庫管理の目的で使用
    - 製造元
    - 部品ID
    - シリアル番号
    - 資産タグ

## 仮想シャーシ
- コントロールプレーンを共有する一連のデバイスを表す
    - SWのスタック
- 名前、ドメインを割り当て可能
- VCマスター、メンバー
    - 位置、優先順位の割り当て可能

> 仮想シャーシとシャーシベースのデバイスの違いを認識することが重要です。仮想シャーシは、ラインカードが物理的に自律的なデバイスではないため、リムーバブルラインカード（Juniper EX9208など）を使用したシャーシベースのスイッチのモデリングには適していません。

# [ケーブル](https://nautobot.readthedocs.io/en/stable/core-functionality/devices/#cables)
- 2つのエンドポイント間の直接的な物理接続を表す
    - コンソールポート<=> パッチパネル
    - インターフェイス　<=> インターフェイス
- エンドポイントをAとBと呼ぶが、方向性はない
- ケーブルが接続可能なオブジェクト
    - 回路の終端
    - コンソールポート
    - コンソールサーバのポート
    - インターフェイス
    - パススルーポート(前面と背面)
    - 給電
    - 電源コンセント
    - 電源ポート
- ケーブルの属性
    - タイプ
    - ラベル
    - 長さ
    - 色
    - ステータス
        - アクティブ
        - 予定
        - 廃止措置
【Django&A-Frame】お店探しのWebARを作りました。

# はじめに
### WebARってなに？
文字通りWeb上で機能するARのことです。
WebARは「Webアプリ」に位置付けられ、スマホにインストールして使う「ネイティブアプリ」とよく比較されます。

### WebARのいいところってなに？
一言で言えば、手間が無くなることに尽きると思います。
ネイティブアプリの場合、ユーザはアプリを入手する手間があり、開発者はデバイス毎にアプリを開発する手間があります。Webアプリでは、この手間がさっぱりなくなるのです。

2022年現在では、操作性と応答性が優れてるネイティブアプリが主流ですが、後者の課題は5Gの実現に伴いWebアプリでも十分なパフォーマンスを得ることができると思います。
操作性が追いつけば、小中規模のアプリはWebアプリへ、オフラインでも動かしたいまたは大規模なアプリはネイティブアプリと言ったように棲み分けがされるのではないでしょうか。



### 開発の動機
WebARを開発してみたい。
お店探しアプリって店名よりお店の情報を一覧で分かればいいよね？と常々思っていたので。

# 記事の目的

開発中に感じたことは、WebARの実装について日本語の情報が少ない・・・。
少なくとも個人レベルで開発するのにstackoverflowを始め海外サイトで調べまくる必要があります。そこで自分の経験が誰かの役に立ってくれたらいいなと思って投稿をしました。
実装面の記事を追加で書いていく予定ですので、ARの発展の一助になれば幸いです。

# 作ったもの
[WebAR × お店探し　WeBar (仮)](https://murmuring-falls-18449.herokuapp.com/)
会員登録も不要なので気軽に使ってみて下さい。

お店の情報がカメラ越しに表示されます。
![IMG_6658.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433898/9abe7e69-6852-a1a2-87a5-dcce649300a7.png)


# 開発概要
#### 環境
Webアプリケーションフレームワーク Django
ARフレームワーク A-frame
プラットフォーム heroku

#### システム構成
![スクリーンショット 2022-05-28 22.34.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433898/65278e6e-91b1-956c-10d2-cf66ef877fc6.png)


#### ソースコード
[https://github.com/KarT1994/WeBar](https://github.com/KarT1994/WeBar)

# 設計・実装



今後追記予定です。
* Djangoの参考書の紹介（結構いろんな記事があるので参考程度にします。）
私は[Django for Beginners: Learn web development with Django 2.0](https://www.amazon.co.jp/Django-Beginners-Learn-web-development/dp/1980377898)で勉強しました。洋書ですがとても簡単な文で書かれているので、英語が苦手な人にもおすすめです。開発からデプロイまで体系的に学ぶことができる良書で、正直これ一冊あればほぼ基礎は理解できるのと思います。
英語が苦手だよって方は、[Django girls](https://tutorial.djangogirls.org/ja/)がおすすめです。

*  A-frameの実装（フロントエンド周り）
[https://qiita.com/KarT1994/items/bb3224283e6213b2c0d0](https://qiita.com/KarT1994/items/bb3224283e6213b2c0d0)

* DjangoでWebsocketの実装
[https://qiita.com/KarT1994/items/c0324f4a89a8854aa1c1](https://qiita.com/KarT1994/items/c0324f4a89a8854aa1c1)
私（PHPド初級者）が陥った、セッション変数が消える現象の「盲点」

# 結論ファースト
先輩のコードでは大文字で書かれているものは、自分も大文字で書いたほうが良い。
セッション変数は`$_session['xxx']`ではなく`$_SESSION['xxx']`にすべき。

# 細かいストーリー（読み飛ばしてください）

プログラミングの練習のために、簡易的なSNSを作る機会ってありますよね。
そうすると、絶対に「ログイン機能を実装したい」と思うはず。

ログイン機能を実装するうえで初心者が悩むポイントといえば、やはり「セッション」。
**セッション変数を定義したはずなのに、別ページにリダイレクトした瞬間に
Chromeくんから「undefined variableですよ！！」と叱られまくり**、
しばらくドツボにハマっていました。

夕方4時くらいに悩みはじめ、解決したのが夜の10時過ぎ。
~~途中、日曜劇場『マイファミリー』を見て、俳優さんってすごいなあとか感心してましたが、~~
実に6時間くらい、パソコンの前でうんうん唸っていました。

### よく紹介されている「解決策」
- `session_start();`はphpファイルの先頭of先頭に。
- php.iniファイルの設定をいじってみる。
- ブラウザの設定を確認する。
- `session_regenerate_id`の呼び出しすぎを避ける。
- 別のブラウザで試してみる。
- その他いろいろ

……でも、どれをやっても、全然うまくいかなかった！！！！！


### 結局どうしたか
6時間くらい悩み、「試しに`$_session['xxx']`を`$_SESSION['xxx']`にしてみよう」と、
藁にもすがる思いで、コードをいじってみました。

それまでの私は、**「大文字で書いても小文字で書いても一緒でしょ」** と思っていました。
JavaScriptの「イベント」に関しては、大文字or小文字が挙動に影響するのは知っていましたが、
PHPにおいては、そういう話は聞いたことがありませんでしたし。

というわけで、あきらめ半分、期待半分で`$_SESSION['xxx']`に書き直した結果。

**これまでの大量のエラーが一掃された** ではありませんか！！！

### むすび
「大文字・小文字をバカしてはいけない」。
熟練のプログラマなら当然のことなのかもしれませんが、ド初級者の私にとっては、6時間を犠牲にして得られた、貴重な教訓だったのでした。
【Android】個人的によく使うアノテーションについてのメモ part2

# はじめに
前回の[【Android】個人的によく使うアノテーションについてのメモ](https://qiita.com/Tsubasa12/items/e02458af070748d20cb4)
に引き続き　使用したものを調べたので記事にまとめます

# アノテーション表

※”＠”をつけるとアドレス認識になってしまうので省略

|アノテーション|意味|
|:---|:---|
|Module|Provideをまとめたクラス|
|Provide|インスタンスを提供(Provide)するメソッド|
|Component|Moduleをどのクラスで使うかを紐付けるインターフェース|
|AndroidEntryPoint|これが付けられた他の Android クラスに依存関係を提供できるようなる|


# 最後に
part2では Dagger の基本のようなものを残しました
今後も何かの実装のたびに見つけたアノテーションを調べてまとめていこうと思います！
【C++】Sqlite3でQStringをbindする方法（QSQLを使わない場合）

勉強目的などで生でsqliteを触りたい人用情報となります。
~~そもそもQSQLを使えばこんな問題は起きないという。。。~~

↓こんな感じになります（.constData()はなくても大丈夫かも）。

```c++:
sqlite3_bind_text(stmt, 1, m_userID.toUtf8().constData(), -1, SQLITE_TRANSIENT); // m_userIDはQString型
```

sqlite3では文字列はutf-8で受け取るため、受け渡したいQStringをtoUtf8()で変換します。
また、この変換された文字列は一時的なものなので、SQL文の実行時まで保持されないようです。
その場合はsqlite3_bind_textの末尾のオプションでSQLITE_TRANSIENTを指定し、
sqlite側にこの文字列をコピーして持っておくように伝えておく必要があります。
sqliteのサンプルではよくSQLITE_STATICが指定されていますが、
こちらを指定するとおかしな文字列がDBに保存されてしまいます。
typescript  の「as」について（型アサーション(Type Assertion)）

## はじめに

typescriptのasについて、その意味はわかっていたが、使用する場面について理解していなかったので調べた際の記録。

## 結論

`as` は基本使わない。

`as`を使っていいのは書いたコードが正しいのにも関わらず、TypeScriptがそれを推論できていない場合のみ。

`as`をもし使うとしても、その影響範囲を小さい関数に閉じ込める。

### 詳細

まず、`as`は型情報を強制的に修正するものである。(型アサーション(Type Assertion)）

例えば、以下のような引数に渡したオブジェクトをコピーして新しいオブジェクトをつくる関数があるとする。

```typescript
function shallowCopy<T extends object>(obj: T): T {
  const result = {};
  for (const key in obj) {
    result[key] = obj[key];
  }
  return result;
}
```

パッと見は問題なさそうだが、TypeScriptでエラーがでる。

`Type 'Extract<keyof T, string>' cannot be used to index type '{}'.` 
↓
`const result = {};` の時点で`result`は`{}`だと推論しているので、その`index`に`'Extract<keyof T, string>'`　は使用できない

この部分については[別の記事]([https://qiita.com/penpen22/items/f0541d6a72506bee3f93](https://qiita.com/penpen22/items/f0541d6a72506bee3f93))に詳細を書きました。

`Type '{}' is not assignable to type 'T'. '{}' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'object'.`
↓
型'{}'は型'T'に割り当て可能ではありません。'{}'は型'T'の制約に割り当て可能ですが、'T'は制約'object'の異なるサブタイプでインスタンス化される可能性があります。

のエラーがでます。

要は、`return result;`している`result`が`function shallowCopy<T extends object>(obj: T): T`の型定義ではTとなっているが、関数内では`{}`に推論されている為に出ているエラーです。

## 解決

これは、「書いたコードが正しいのにも関わらず、TypeScriptがそれを推論できていない場合」の場合に該当するため、`as`を使って解決しても良さそう。

`const result = {} as T;`

と型アサーション(Type Assertion)を使って`result`の型をTに上書きすることで上記のエラーが解決する。

## おわりに

なんとなく「あまり使ってはいけないもの」という印象があったが、その通りであり、その理由もよくわかった。

同時に`Extract`などの理解も得られて為になった。
【SQL】WHERE 1 = 1

`WHERE 1 = 1` とは、SQLで複数の条件からレコードを抽出する際に便利な書き方。 

`WHERE 1 = 1 `は常に真になるため、`1 = 1`自体には何も意味はない。

しかし、複数の`WHERE`による条件が追加される可能性がある場合、条件式に`WHERE`を書く必要がなくなり、`AND`だけを追加すればよくなるため、プログラムが書きやすくなる。  

## 例  
下記のような`id`と`name`がある`user`テーブルがある場合を想定して、`id`と`name`の条件式の有り無しよって作成されるSQLがどう変わるか確認。

|  id  |  name  |
| ---- | ---- |
|  1  |  hoge  |
|  2  |  fuga |
|  3  |  piyo  |

### WHERE 1 = 1 を使わない場合  

```c#
public string GetSQL(int id, string name){

    var sql = "SELECT * FROM user" 

    if(id != ""){  //idの条件が有る
        sql += $" WHERE id = {id}"
    }

    if(id == "" && name != ""){  //idの条件が無く、nameの条件が有る
        sql += $" WHERE name = {name}"
    }else if(id != "" && name != ""){  //idの条件が有り、nameの条件が有る
        sql += $" AND name = {name}"
    }

    return sql;
}
```
### WHERE 1 = 1 を使う場合
```c#
public string GetSQL(int id, string name){

    var sql = "SELECT * FROM user WHERE 1 = 1" 

    if(id != ""){//idの条件が有る
        sql += $" AND id = {id}"
    }

    if(name != ""){//nameの条件がある
        sql += $" AND name = {name}"
    }

    return sql;
}
```

`WHERE 1 = 1`を使った方がすべてANDで繋げられるため、クエリが書きやすくなる。

## まとめ  
SQLで複数の条件式が追加される可能性がある場合、`WHERE 1 = 1` をつけることで条件式の2番目以降が`WHERE`なのか`AND`なのかを判定する処理が不要になり、クエリが書きやすくなる。


## 参考
- [「WHERE 1=1」は条件付きSQL文が書きやすくなる魔法の言葉](https://kinocolog.com/where11/)
- [WHERE 1=1って？](https://www.earthlink.co.jp/engineerblog/technology-engineerblog/7522/)
WordPressの基礎

# WordPress

[WordPress Codex 日本語版](http://wpdocs.osdn.jp/Main_Page)

# 【最重要】テンプレートタグ・関数

## テンプレートタグ

- ワードプレス固有のphpタグのこと

## wp_head,wp_footer

- それぞれheadの締めタグ、bodeの締めタグの直前に記述しなけらばならない

## 必須

```php
~~~

<?php wp_head(); ?>
</head>

~~~

<?php wp_footer(); ?>
</body>
```

- wordpressのテーマとして認識してもらうために必須のテンプレートタグ

## 分岐、ループ系

```php
<?php if (have_posts()) : ?>
   <?php while (have_posts()): the_post(); ?>
       <?php the_title(); ?>
       <?php the_date(); ?>
```

- have_postsはルwordpressクエリでループ可能なものを返す
    - 投稿があるかどうかをチェックしている
- the_postはhave_postを一つ進める
    - 厳密には「ループを次の投稿へ進める」
- the_titleは投稿タイトル
- the_dateは投稿日時（形式はダッシュボードの設定で変えれる）
    - ただ同じ日付の投稿は最初の一件だけしか日付が表示されない
    - 同じ日付でも表示したい場合は `the_time()`を使用する↓
    - `<?php the_time(get_option('date_format')); ?>`

## [エラー] the_title();が表示されない

- この記事で解決

[『<?php the_title(); ?>で記事のタイトルが表示されない』](https://ameblo.jp/spyder-5615/entry-11019419502.html)

- 設定→表示設定→フロントページの表示で、固定ページから最新の投稿に変更する
- 自分のケースは元々なってたけど、もう一回同じことをして変更保存したら治った

## if分岐

```php
<?php if (have_posts()) : ?>
~~~
<?php else : ?>
~~~
<?php endif; ?>
```

## Whileループ

```php
<?php while (have_posts()): the_post(); ?>
 <?php the_title(); ?>
 <?php the_date(); ?>
<?php endwhile; ?>
```

- 各投稿ごとのタイトルと日付を、投稿してる分だけ繰り返している。

## 抜粋

```php
<h3 class="post-subtitle">
      <?php the_excerpt(); ?>
      </h3>
```

- 記事の抜粋約200文字（HTMLタグ（太字の修飾とか）と画像は取り除かれる）くらいを表示する
- 投稿の右側の蘭から抜粋を選択すると、抜粋だけを入力できる項目がある。これを使うべし

## 著者名

```php
<p class="post-meta">
          Posted by
    <?php the_author(); ?>
```

- ダッシュボードのユーザー→ユーザー一覧でその設定を変更することができる

## 個別投稿ページの作成

```php
<div class="post-preview">
    <a href="<?php the_permalink(); ?>">
```

## パーツファイル（共通部分をまとめておく）

```php
<head>
    <?php get_header(); ?>
</head>

~~~
<body>

~~~

<?php get_footer(); ?>
<?php get_sidebar(); ?>
</body>
```

- header.php（htmlのheadタグの中身だけ）
- footer.php（bodyタグ終盤のコアの部分からwp_footerまで）
- sideber.php(使わないならなくても良い)

## header,footerでのテンプレートファイルのパス取得

```php

<link href="<?php echo get_template_directory_uri(); ?>/css/styles.css" rel="stylesheet" />

<!-- google fontsとか外部のサイトからとってきてる場合は、先頭の通信プロトコルを記載しないでおく -->
<link href="//fonts.google....."/>

```

- これで相対パス的な運用が可能となる

## 上記以外でのテンプレートファイルの取得

```php
<?php get_template_part("includes/header"); ?>
```

- 共通パーツ化したいものは、includesフォルダのheader.phpに移設してある

## 投稿の詳細ページに各情報を出力する

1. もし投稿があったら`<?php if (have_posts()): ?>` 
2. 投稿の分だけ（確定で1つ）`<?php while (have_posts()) : the_post(); ?>`
    1. タイトル`<h1><?php the_title(); ?></h1>`
    2. 筆者`<?php the_author(); ?>`
    3. 日付`<?php the_date(); ?>`
    4. 内容を出力する`<?php the_content(); ?>`
React,TypeScript,Next.jsをYouTubeで学んでみた

# はじめに
娯楽要素が強いイメージであるYouTubeですが、プログラミングを学習できる**無料**プラットフォームでもあります。
今回は業務で使用することになったReact,TypeScript,Next.jsのおすすめ動画を紹介したいと思います。
筆者のレベル感ですが、これら3つすべて初めて触った初心者です。

# React

Reactは、**ユーザインターフェース構築のためのJavaScriptライブラリ**です。公式ドキュメントは[こちら](https://ja.reactjs.org/docs/getting-started.html)。
そんなReactの基礎を学ぶことができる動画はこちら↓

https://youtu.be/pCA4qpQDZD8

ReactでTodoアプリを作ることができます。
クラスコンポーネントではなく、関数コンポーネントを用いているので、教材の内容が古い！なんてことありません。
React hooksの中で

* useState
* useEffect

の使い方を学ぶことができます。

# TypeScript

TypeScriptは、JavaScriptに型を定義できるようにした言語です。公式ドキュメントは[こちら](https://www.typescriptlang.org/)。
そんなTypeScriptを学べる動画はこちら↓

https://youtu.be/BCg4U1FzODs

この動画では

* TypeScriptで書かれたファイルがどのようにJavaScriptにトランスパイルされるか理解することができる
* TypeScriptの基礎、例えば以下のようなことを学ぶことができます(詳細はYouTubeの概要欄を参照)。
    * 環境構築
    * 型の基礎
    * ReactにTypeScriptを導入

先ほど紹介したReactのみで作ったTodoアプリにTypeScriptを導入してみましたので、[こちら](https://github.com/4649rixxxz/react-ts-todos)から参考にしてみてください。
[Reactのみで作ったTodoアプリ](https://github.com/4649rixxxz/react-todo)と比較してわかったことは、TypeScriptは可読性を上げてくれるということです。すぐに好きになってしまいました(笑)
YouTubeではないのですが、わからないことがあったら[サバイバルTypeScript](https://typescriptbook.jp/)という記事を参考にすればおおよそのことは解決できます！

## 疑問に感じた点

* typeとinterface、どっち使えばいいの？
    * https://zenn.dev/luvmini511/articles/6c6f69481c2d17
    * typeの方が個人的にはいいなと感じました。interfaceの「知らないうちに拡張される可能性がある」点は記事に書かれている通り、結構困りそうだなと。
* コーディング規約どうなっているんだろ？
    * https://typescript-jp.gitbook.io/deep-dive/styleguide

# Next.js

Next.jsは、Reactのフレームワークです。公式ドキュメントは[こちら](https://nextjs.org/)。
公式のDocsを見ていただけるとわかると思うのですが、すごくチュートリアルが充実しています。
そんなチュートリアルをさらに充実にしてくれるのがこちら↓

https://youtu.be/F77RUjHZEAc

シリーズものになってまして、全部で12回あります。
公式の内容をわかりやすくしてくれる内容となっておりますので、とてもおすすめです。

## 疑問に感じた点 

* ディレクトリ構成
    * https://qiita.com/kentt/items/c86782b481ec175a57e2
* SPA、SSR、SSGについて整理する
    * https://yutaro-blog.net/2021/12/03/spa-csr-ssr-ssg-sg/

# その他の教材

## TypeScript + Next.js + Laravelのハンズオン

YouTubeではないですが、[こちら](https://yutaro-blog.net/2022/02/17/typescript-nextjs-laravel-hands-on/)はLaravelを普段使っている方におすすめです。

# さいごに
無料で学ぶことができるっていいですよね。
時間あったら、おすすめチャンネルまとめてみようと思います。
AirPods ProがWindowsパソコンと接続できない問題を解決する方法

# 環境
Winows 11 Home、AirPods Pro(2019年モデル)

# 問題
AirPodsをWindowsパソコンとペアリングし接続しようとすると３秒ほどで接続が切れてしまい、音声を再生することができない。

# 解決法
1. デバイスマネージャーを開く。
2. Bluetoothのプルダウンメニューを選択。
3. 「AirPods Pro」及び「AirPods Pro Avrcp トランスポート」をそれぞれ右クリックし、デバイスのアンインストールを選択する。
4. コンピュータを再起動する。

# 参考にした記事
Microsoftコミュニティ
https://answers.microsoft.com/en-us/windows/forum/all/airpods-keeps-disconnecting-windows-10/4c9940b4-ba71-4e6a-94d1-30c1ba668ce6
アドレスとポインタの理解方法

# 前提
　ある金曜日の夜、自社の若手がアドレスとポインタについて悩んでいる。もしかしたら月曜日に質問が行くかもの打診から始まった。
　IT業界にはいるが、脳内はコンピューティングな論理的思考やプログラミングに関してはど素人みたいな自分が説明できるのか？
　心配をよそに聞かれたときに答えられないのも恰好が悪いなということで、自分なりに説明できるように考えてみた。
　しっかりITのために学んだ人からすれば、「えっ」と思われるかもしれないけど、そんなに的は外れいていないと思うので、
　ITをかじり始めた人が躓いたときの一助になればと思い、投稿します。

# アドレスとは
メモリ上で、処理は動きますそのため、プログラム上で`int n=10`と書かれている場合、メモリ上のどこかに配置され、`n`と名前を持ちます。
ピンときた人は、この先は読まなくても良いのですが、ピンとこなかった人は、こういう風に書かれていたらどうですか？

メモリとかはいったん忘れて、（和訳すると）アドレス＝住所ですよね。
ある人`n`の住所は、`東京都○○区××`で、ある人`n`は、`10`という数字を持っています。と言われたらどうですか？
図にするとこんな感じですかね。
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518581/d4e48f4f-1aaa-c032-42e0-13bdc7f937e0.png)

# ポインタとは
アドレスを格納するための変数をポインタと言います。メモリ内のある変数の場所を参照することができる変数となります。
ピンと来た人はこの先は読まなくても良いのですが、ピンとこなかった人は、アドレスの時と同様に、こんな風に書かれていたらどうですか？

ある人`n`の住所は、`東京都○○区××`である人`n`は`10`という数字を持っていますが、このある人`n`の住所を知っている人`p`がいて、`p`が`n`の居場所を教えてくれるですよ。と言われたらどうですか？
図にするとこんな感じですかね。

　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518581/7bda2f2a-7ed3-cb59-71e1-7c7f36cc316c.png)

# 最後に
これらは考え方をイメージでとらえるためにまとめたもので、プログラムでの書き方等は入れていないので気を付けてください。
アドレスやポインタの概念をとらえるのに苦戦している人向けだということでご了承ください。
Anaconda Prompt　で　conda 仮想環境のリストを取得　アクティブ化


https://deepblue-ts.co.jp/python/conda-comand-basic/

conda 仮想環境のリストを取得する場合

Anaconda Promptで

https://tonari-it.com/python-anaconda-prompt/


```
conda info -e
```
で確認できます

通常、次のコマンドを使用してconda環境をアクティブ化します

```
source activate env_name
```
私が作成したkerasの環境をアクティブ化します

```
conda activate keras_env
```


conda環境　にインストール

```
#conda activate keras_env We ran the following in the virtual environment! 

#conda install notebook

#conda install -c conda-forge lightgbm

#conda install -c conda-forge xgboost

#conda install -c conda-forge pandas-profiling

#conda install -c conda-forge optuna

#conda install scikit-learn

#conda install -c conda-forge pycaret 
```
プロキシがある環境でのpipのSSLエラー対策について

# 環境
Windows 10 ビルド XXXX(忘れたのであとで確認)
Python 3.10.4
pip 22.X.X(忘れたのであとで確認)

# 対策方法について
他の記事で、trusted-hostにするといいとあったが、そもそも設定ファイルの保存場所がよくわからず、CLIでの設定についてはあまり記載がなかったためこちらにまとめた。

まず、プロキシ環境下など、標準の証明書にないサーバを経由している場合は、エラーメッセージとして次のようなものが出るはず。

```terminal
C:\Users\myname>pip install request
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
Could not fetch URL https://pypi.org/simple/request/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/request/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)) - skipping
ERROR: Could not find a version that satisfies the requirement request (from versions: none)
ERROR: No matching distribution found for request
```

### 証明書を設定する場合
Chrome・IE・Edgeなどでプロキシの証明書を取得して、pipで利用するように設定する。
正直GUIだとどこかわからないこともあるので、こちらの方法がおすすめ。

```terminal
C:\Users\myname>　pip config set global.cert path/to/your-cert
Writing to C:\Users\myname\AppData\Roaming\pip\pip.ini
```
作成すると、ファイルの作成場所を教えてくれるようで大変ありがたい。

### 接続先を信頼する場合
接続先を信頼できる（ライブラリ取得先ならまぁ基本的に問題ない）として、CLIから設定する。
よくわからないサイトに接続する際は、この方法は使わないこと。

接続先は3種類（最近は2つしか接続で使ってない様子？ 要確認）ある。次の通り。
1. pypi.org
2. files.pythonhosted.org
3. pypi.python.org


```terminal
C:\Users\myname>pip config set global.trusted-host "pypi.org files.pythonhosted.org pypi.python.org"
Writing to C:\Users\myname\AppData\Roaming\pip\pip.ini
```


# 終わりに
pipのリファレンスを見ればきっちり書いてあるので、こちらをよく確認するとよさそう。 
 https://pip.pypa.io/en/stable/cli/pip_config/


最近こまったことでPowershellで `pip` と打つと何故かファイルを開く際のアプリケーションを選ぶウィンドウが出てきて困っていたが `pip3` と打つとちゃんと起動した。エイリアスを `pip` にしてやれば普通に使えそう。
ここらへんPowershell(というかWindows)の仕組みがよくわかってないなあと感じたこの頃。
複数のEC2を指定された時間に自動的に停止及び起動

# 要件
複数のEC2を指定された時間に自動的に停止及び起動をさせる。実行が失敗した際に、SNSでメールを送信する必要があるとする。

# STEP1:IAMロールの作成
■　IAMのロール作成の画面を開く
■　ユースケース⇒「他のAWSのサービスのユースケース」に「Systems Manager」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/a7f251a9-63be-fd1a-b609-bf68681e0fff.png)

■　許可ポリシーを追加：
AWSの管理ポリシー：AmazonSSMAutomationRoleをアタッチする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/dff837b7-11bf-b6d6-4f2c-f84a6a90511b.png)

■　ロール名と説明部分を入力する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/86d20470-c1fa-d7a1-b2c7-c1f49458edca.png)

■　ロールを作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/fd74e6a4-8c9f-2eb3-bf0a-1adc76e64fc1.png)

■　信頼関係のポリシーを編集する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/922a07b8-1e8b-37bc-9792-ac13ef079704.png)


```bash
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

# STEP2:CloudWatch イベントのルールの作成

■　CloudWatch⇒ルール⇒CloudWatch Eventに戻るを順にクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/9864a93f-1b8e-cc73-b4b6-e3298c28a43e.png)

■左側：
・イベントソース：スケジュールを選択する
・Cron式：今回は「15 11 * * ? *」を入力し、毎日 11:15 UTC 時間 にイベントを発火させる。
　Cron式の参考ページ：https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions

右側：
・ターゲット：SSM Automation
・ドキュメント：
         　　　　⇒インスタンス停止：AWS-StopEC2Instance
　　　　⇒インスタンス起動：AWS-StartEC2Instance
・定数⇒InstanceId:
  ※１つのインスタンスの場合：
```bash
i-06fbf5xxxxxxxxxxxxxx
```
　※複数インスタンスの場合：

```bash
["i-0155xxxxxxxxxx", "i-05f477cb8xxxxxxxx", "i-0aeb0be818xxxxxxxx"]
```
・既存のルールを使用：今回作成したIAMロールを選択する


```bash
test-auto-stop-and-start-ec2
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/0d1de900-3ec2-e2a5-8b03-686146d40f96.png)

# Step3: イベントの実施が失敗したときのSNS通信対応
左側：
イベントソース：
・イベントパターン：
　⇒サービス名：Systems Manager
 　⇒イベントタイプ：Automation
・特定の詳細タイプ：EC2 Automation Execution Status-change Notification
・特定のステータス：Failed、TimeOut、Cancelled

右側：
SNSのトピックを選択：(別途作成必要)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/18db7d23-4e3e-a6bc-d39a-fe44c7438d3d.png)


# Step4: テスト
指定されているお時間になると、EC2は自動停止　or 起動ができました。（今回の例は停止）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/80f89966-8a23-c2d0-544d-b8a4a091a7a0.png)

失敗したSNSの通信テストも成功した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457891/a6c2b05d-88d3-4c40-0369-bde1b7c400d4.png)
【Ubuntu+PostgreSQL】postgres以外のユーザでクラスタを作成して起動する

# この記事について
Ubuntu環境でPostgreSQLのクラスタ（≒インスタンス）作成時にはまった箇所がありますので、対処法を記録に残したいと思います。
クラスタとは、データベースを区分けする単位のことで、今回、複数サービスを1サーバで起動する運用を考えているため、PostgreSQLをサービスごとにクラスタ分けしてデータベースを使用しようと考えました。

# 対象読者
* PostgreSQLでクラスタ分けしてデータベース管理を行いたい方
* サーバOSにUbuntu、データベースにPostgreSQLを使用している方

# 環境
```
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"

$ psql --version
psql (PostgreSQL) 12.11 (Ubuntu 12.11-0ubuntu0.20.04.1)
```

# インストール
[Ubuntu 20.04にPostgreSQLをインストールする方法 [クイックスタート]](https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart-ja)を参考にUbuntuにPostgreSQLをインストールします。

```
$ sudo apt install postgresql postgresql-contrib
```

# クラスタの作成
Ubuntuでは、 `initdb` コマンドが使用できないため、[資料編：Ubuntu特有のPostgreSQL用コマンド](https://lets.postgresql.jp/documents/tutorial/ubuntu/5)を参考に、`pg_createcluster` コマンドでPostgreSQLのクラスタを作成します。
`-p` はクラスタを起動するポートです（デフォルトは5432で、複数クラスタを作成する際は5432、5433、5434...の順で割り当てられる）。
```
sudo pg_createcluster 12 sample_cluster -p 6000 -u クラスタの管理者となるユーザ -g クラスタの管理者となるユーザの主グループ
```

# クラスタ起動
```
$ sudo systemctl start postgresql@12-sample_cluster
```
以下コマンドで6000ポート上でクラスタが起動している（online）ことが確認できます。
```
$ pg_lsclusters
Ver Cluster           Port  Status Owner                   Data directory                           Log file
12  sample_cluster 6000 online クラスタの管理者となるユーザ /var/lib/postgresql/12/sample_cluster /var/log/postgresql/postgresql-12-sample_cluster.log
```

# 起動したクラスタにログイン
ここではまったのですが、上記で作成したクラスタ内へログインするには、psqlコマンドに `-h /tmp` オプションをつける必要があります。
[資料編：Ubuntu特有のPostgreSQL用コマンド](https://lets.postgresql.jp/documents/tutorial/ubuntu/5)にも記載があったのですが、postgresユーザ以外のユーザをクラスタの管理者に指定した場合は、 `/tmp` ディレクトリをhostnameとして指定する必要があるようです。
> ローカル接続用にpostmaster(1) サーバがUnixソケットを格納するディレクトリを明示的に設定します。デフォルトは、postgres ユーザが所有するクラスタの場合は　/var/run/postgresql/、それ以外のユーザが所有するデータベースの場合は /tmp です。
```
$ sudo -i -u クラスタの管理者となっているユーザ
$ psql -h /tmp -p 6000 -d 使用するデータベース名 -f 実行したいSQLファイルのパス
```
「クラスタの管理者となっているユーザ」でpsqlコマンド実行後にPostgreSQLにログインしてクラスタに入れていれば完了です。

# 参考
[Ubuntu 20.04にPostgreSQLをインストールする方法 [クイックスタート]](https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart-ja)
[資料編：Ubuntu特有のPostgreSQL用コマンド](https://lets.postgresql.jp/documents/tutorial/ubuntu/5)
Description of the AUTOSAR standard errors, No.377, AUTOSAR R21-11(265) CP

Description of the AUTOSAR standard errors, No.377, 2021-11

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

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

AUTOSAR 21-11,160文書読んだ。2022年5月中に全部読み。

https://qiita.com/kaizen_nagoya/items/9935c9e58bf82e1e63d2

AUTOSAR 21-11, 62文書読んだ。2022年5月中に半分到達予定。

https://qiita.com/kaizen_nagoya/items/648b32867635993410c8

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

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

# 用語(terms)
|Term|Description|
|:--|:--|
|Detection |This describes how the module detects or is notified of this error case.
|Reaction |This indicates the internal reaction of the module (e.g. internal state changes).
|Report |This indicates how the error is notified to other modules in the stack or to the AUTOSAR infrastructure.
|Recovery |This indicates how / if the error is recovered or mitigated by the module.
## 英日
日本語は仮訳

T.B.D.

# 参考(reference)
CAN Driver
 CAN State Manager
 CAN Interface
Communication Manager
AUTOSAR COM
RTE
SWC
CANTP
DCM
PDUR
Flash driver
 Memory Abstraction Interface
 NVRAM Manager
Flash Eeprom emulation
BSW State Manager
アドレス・ベース・レジストリ（日本町字マスターデータセット）をCSVファイルをクエリからExcelファイルにインポート


>ベース・レジストリのパイロット事業における実証サイトの公開を開始しました
公開日:
2022年4月22日
最終更新日:
2022年5月26日

https://registry-catalog.registries.digital.go.jp/dataset/o1-000000_g2-000003

![スクリーンショット 2022-05-29 215036.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/c918d7a0-37b2-ea75-0509-19dc567bde29.jpeg)

![スクリーンショット 2022-05-29 215136.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/c4a05706-908a-7abd-a431-c7bfeeb98989.jpeg)

![スクリーンショット 2022-05-29 215259.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/7dc348bd-7034-5e89-f826-a71b3aaa9d97.jpeg)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/b8a5235b-18c9-8f02-22fc-fa49861f3702.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/a5815259-6d92-31b6-e48e-5b66f04a1766.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/f9d982b6-c15c-17fd-52b2-c05cd118e762.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/c1f3cd9d-ced5-e673-bf53-9fcbd6496ba6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/80ba890f-f6c9-3bb1-7fa5-c4577e388245.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499761/eadcc87b-59bf-7fc7-6aad-a2f6e18ca1ab.png)


APIを利用して、必要なデータを取得出来るようになりたいです。

>ベース・レジストリ データカタログサイトは、アプリ、新サービス等の開発者等が、本サイトで提供するメタデータを二次利用し、アプリ、新サービス等を開発するために必要なAPI情報を提供しています。
※API: Application Programming Interface
TwitterのDMを本気でカスタマイズ

# DMの自動送信
Account Activity APIで実装可能です
これはかなり複雑なので別記事で

https://qiita.com/_SNQ/items/1d2773d3ef513f817d0c

# 「メッセージで送信」ボタン
![スクリーンショット 2022-04-19 14.03.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1ab3a684-cc5e-78ed-38c9-5bf18bf74e7f.png)

**必須事項**
・IDを調べる
・DMを解放する

https://tweeterid.com/

↑こちらのサイトで自分のアカウントのIDを調べてください

https://applimura.com/twitter-dm-open/

↑DM解放のやり方はこちらのサイトが詳しく解説してありました

IDをXXXXXXXXXXXXに入れて完成したリンクをツイートすると「メッセージで送信」ボタンの完成です

```
# 基本
https://twitter.com/messages/compose?recipient_id=XXXXXXXXXXXX
```
[基本-サンプル](https://twitter.com/messages/compose?recipient_id=1468966997438640128)

```
# デフォルトテキスト
https://twitter.com/messages/compose?recipient_id=XXXXXXXXXXXX&text=TEST
```
[デフォルトテキスト-サンプル](https://twitter.com/messages/compose?recipient_id=1468966997438640128&text=TEST)

```
# ウェルカムメッセージ
https://twitter.com/messages/compose?recipient_id=XXXXXXXXXXXX&welcome_message_id=YYYYYYYYYYYYYY
```
[ウェルカムメッセージ-サンプル](https://twitter.com/messages/compose?recipient_id=1468966997438640128&welcome_message_id=1478600031121063942)

# ウェルカムメッセージ
ウェルカムメッセージはこんな感じのものです
![Videotogif](https://user-images.githubusercontent.com/84154073/170869636-87c56443-46fd-460c-b037-0a88b24375da.gif)

ウェルカムメッセージはAPIを操作して設定することも可能ですが、
こちらのツールを使用して設定する方が簡単です。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

https://irucabot.com/tools/ueel/about.html
【文系出身初心者】年収について結婚・独身の関係性を予測してみた

- はじめに
Aidemy Premiumにて「データ分析コース」を６ヶ月受講いたしました。
Aidemy Premiumを受講したのは、データ分析、機械学習、Pythonをしっかりと学びそれを活かして仕事をしていきたいと思ったことが、きっかけでした。
実際に行ってみると難しく、理解を深めることができているのか疑心暗鬼になることが多々ありました。
今回記事を書かせて頂きますが、コード文や拙い内容となりますが宜しくお願いいたします。

- 実行環境
Kaggle Notebook

- 目的
今回の目的は、二項分類を実行して、結婚している人は給与が $50,000 より大きいかどうかを予測することです。

- 使用するデータ
kaggle：Income Dataset
URL:https://www.kaggle.com/datasets/mastmustu/income

- データの中身
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/9b87985c-51f8-c62e-1c93-7891bd6ad109.png)
今回は使用、年齢・性別・婚姻状況を使用して予測をしていきます。

- データの前処理①
データ内に同じ人物や欠損があるか確認していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/35ae2904-743e-45fd-3a3b-51512cda49d6.png)

- データの前処理②
使用するデータが、文字で表記されているため、数字に変化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/0dae8622-2df4-60a6-1b92-855c7da5ca43.png)

- 予測モデルを構築（ロジスティック回帰）
①婚姻状況
まず、年収に対して婚姻状況だけで見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/57ac60cf-7610-d947-69d3-b16c2061f14e.png)

②婚姻状況×性別
次に年収に対して婚姻状況・性別で見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/cedb430e-b1ec-25ff-246e-e5e8019dd2ee.png)

③婚姻状況×性別×年齢
次に年収に対して婚姻状況・性別・年齢で見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/e6c91de8-3ce4-7ead-5a26-a8f01b6105c0.png)

- 予測モデルを構築（非線形SVM）
①婚姻状況
まず、年収に対して婚姻状況だけで見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/b70cf4b6-584b-ad3a-6428-d4f9edb0a897.png)

②婚姻状況×性別
次に年収に対して婚姻状況・性別で見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/a18981a5-d45f-eb3a-c73a-79eadbad5476.png)

③婚姻状況×性別×年齢
次に年収に対して婚姻状況・性別・年齢で見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/786954d6-4802-7cef-eda2-fe2bcda6dc40.png)

- 予測モデルを構築（決定木）
①婚姻状況
まず、年収に対して婚姻状況だけで見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/a07eb280-fab5-be6a-bc73-fd1fb182eb8f.png)

②婚姻状況×性別
次に年収に対して婚姻状況・性別で見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/fc82bfd6-389d-1a7c-8abb-79632410fae4.png)

③婚姻状況×性別×年齢
次に年収に対して婚姻状況・性別・年齢で見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/7e603160-6a76-7411-d0ab-985836397da4.png)

- 婚姻状況×性別×年齢×教育の相関係数を確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696954/6baf87ed-4aef-e9cc-01e6-aa36a16ccf6c.png)

- まとめ
各モデルの予測結果の正解率を見てみると、婚姻状況のみ・婚姻状況と性別の結果は76~77%の正解率になったが、ロジスティック回帰モデルの婚姻状況と性別・年齢だと、73%に低下しました。
また、婚姻状況・性別・年齢で相関係数を出した際、「年齢と年収」「教育と年収」で正の相関がみられました。しかし、「婚姻状況・年齢」「婚姻状況・収入」「婚姻状況・性別」から負の相関がみられました。
この結果から、収入に関係することは、年齢と教育が観察されたことから、自身が考えていた結婚が年収に関係がないことがわかりました。ですが、今回比較する要因がすくないため他の観点からみると違う結果になると思われます。今後は、他の要因も含めてどんな人ほど年収が高くなるのかを予測するモデルを構築したいと思いました。
本日の積み上げ#3

# python学習内容
リストを学習
リストに格納した数字は左から0,1,2と数える。右からは-1,-2というふうにできる。
↓の内容で行くとa=０番目、c=2番目というふうに。

```diff_Python
List[a,b,c,d,]
```

また、
```diff_python
List.append
```
を使って、リストの中に要素を追加することができる。

```diff_python
len(リスト名)　
```
でリストの中に要素がいくつあるのかを調べることができる。
【AWS】CloudWatchのログが出力できない時の対処

よくある**CloudWatch**が出力されない問題の対処です。
尚、以下はAMIコピーで作成したインスタンスでログが出力されなかった時の内容です。
（つまり旧インスタンスでいろいろやれている状態:imp:）

## 前提
今回のケースではロググループが異なったため、
**awslogs.conf**を書き換えました。

```
vi /var/awslogs/etc/awslogs.conf
```
ここで下記の箇所を書き換えます
```
log_group_name = 
```
書き換えたらサービス再起動
```
systemctl start awslogsd
```

## 1、ログの確認
エラー時の基本です。
とりあえず下記ログファイル確認しましょう。
**tail**とかでよいと思います。

```
tail -f /var/awslogs/etc/awslogs.log 
```

## 2、ロールの確認
EC2のロールに付与されていない可能性があるので、これを確認します。

基本的には**EC2→IAMロール**に、**CloudWatchLogsFullAccess**があればOKです。
権限を絞ってたり違うパターンの可能性もあるので、詳細は確認した方がよいです。

## ３、クレデンシャル情報の確認
AMIの作成元で登録されていたりすると、これが原因でアクセスできない場合などがあります。

**パターン① credentialsに登録されてるパターン**
**AWS CLI**での操作です。
**credentials**に記載されている情報をコメントアウト、もしくは削除します。

```
vi ~/.aws/credentials
```
```
#aws_secret_access_key = XXX
#aws_access_key_id = XXX
```

**パターン② aws.confに登録されているパターン**
①と同じく、コメントアウトか削除します。
（コメントアウトだとダメで削除じゃないといけなかったかも...）
```
#　vi /var/awslogs/etc/awslogs.conf
```

### ４、サービス再起動
対処したら**awslogsd**を再起動です。

```
systemctl start awslogsd
```

以上です。このへんもまたメンバーに詳しい方がいて、
特にハマることもなく、対処できました。感謝です:pray:

次おこったらすぐ自分がすぐ対処できますように:pray::pray:
OutSystemsにUML手法を導入

# Ⅰ. OutSystemsの紹介
OutSystemsとは
・ローコード開発プラットフォーム
・多様なアプリケーションが素早く作成できる
・様々なデバイス向けに作成できる
・システム設計情報やソースコードが自動生成できる

# Ⅱ. 必要なUML知識
１．四つの道具（UMLの道具は10種類以上がある）
・ユーズケース図
・アクティビティ図
・シーケンス図
・クラス図

２. ドメインモデリング
システムに関する業務知識（ドメイン）を簡潔に整理（要約・モデル化）し、その関係性がわかるようにすること

３．ロバストネス図
基本的にUMLコミュニケーション/コラボレーション図を単純化したもの
・アクター
・バウンダリ
・コントロール
・エンティティ
・ユースケース

# Ⅲ. OutSystemsの開発プロセス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697792/52023863-3995-aad7-07da-43f92b79ec4b.png)


# Ⅳ. OutSystemsの開発フェーズとUMLの開発プロセス
１．OutSystemsの開発フェーズ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697792/64a55ad5-71a0-1ed2-fee4-da298aee602f.png)

２．UMLの開発プロセス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697792/ae50d87b-0c78-ca51-55b5-863c6fa2ad04.png)

３．OutSystemsの開発フェーズとUMLの開発プロセスの対応関係
<dl>
  <dt>全体</dt>
  <dd>ドメインモデリング<br>ロバストネス図<br></dd>
  <dt>プロセス</dt>
  <dd>初心者は使わないでもいい</dd>
  <dt>インターフェース</dt>
  <dd>ユーズケース図<br>アクティビティ図<br>シーケンス図</dd>
  <dt>ロジェック</dt>
  <dd>シーケンス図</dd>
  <dt>データ</dt>
  <dd>クラス図</dd>
</dl>

# Ⅴ. 参考文献
ローコード革命｜篠田ヒロシ
UMLによる一気通貫DBシステム設計｜細川努
[boost::property_tree] second.get_optional()を使用する際の存在チェックについて

# 解決法
boost::noneで存在チェックを行う
``` c++
if(obj->second.get_optional<std::string>("<xmlattr>.type") == boost::none)
    continue;
auto type = obj->second.get_optional<std::string>("<xmlattr>.type");
```

# 詳細
xmlファイルはboostライブラリのproperty_treeで読み込むことができる。
例えば
``` xml
<node name="b_Root" id="b_Root" sid="b_Root" type="JOINT">
</node>
```
という記述があったとして、type属性を読み込むには
``` c++
auto type = obj->second.get_optional<std::string>("<xmlattr>.type");
```
などとすれば取得できるが、もしnodeにtype属性がなかった場合上記関数を実行するとランタイムエラーとなり、プログラムが停止してしまうので、あらかじめ属性の存在チェックを行っておく必要がある。
get_optionalのコメント文には
``` c++
boost::null
```
と記載されているが、正しくは
``` c++
boost::none
```
を用いることによって存在チェックが行える。
参考：
https://boostjp.github.io/tips/optional.html
【Wordpress】リバースプロキシを利用し、自宅のラズパイでWordpress環境を構築してみた③

## 独自ドメイン取得・設定とRoute 53の設定方法
　今回は、独自ドメインを取得し、その設定方法とRoute 53の設定方法について、まとめました。
少々長文となってしまったため、詳細については、noteに投稿した内容をご確認いただければと思います。
・[【Wordpress】リバースプロキシを利用し、自宅のラズパイでWordpress環境を構築してみた③](https://note.com/lively_jacana308/n/n1f0a682ee1bf)
ReactNativeのMainActivity.javaとかで"class、interfaceまたはenumがありません"が出るときの対処

# 症状
MainApplication.javaとかMainActivity.javaでこんなエラーが出る
```
...MainApplication.java:4: エラー: class、interfaceまたはenumがありません
package com.hoge.hoge;
```
(error: class, interface, or enum expected)
# 原因
packageが先頭じゃなくなってる

# 解決
packageを先頭に移動する

```java:MainApplication/MainActivity.java
import hoge.fuga.hoge;
...
package com.hoge.hoge;
import hoge.piyo.hoge;
...
```
↓
```java:MainApplication/MainActivity.java
package com.hoge.hoge;
import hoge.fuga.hoge;
import hoge.piyo.hoge;
...
```
Rock Pi 4C Plusを試す

# 1. はじめに
これは~~大~~失敗談だよ！

Raspberry Piを使うことはよくあるのだが、その他のPiシリーズに関してはよく知らない。
何かに手を出すかと考えていたところ、こんなものが出るよと知り合いからPock Pi 4Cの発売記事を紹介されたので、どうせRaspberry Piの構成と似たようなものだとよく見もせずに購入した。(Allnet Chinaで取り寄せた)
何に使うか使えるかは気にしていなかったが、これが多分失敗のもとだろう。

# 2. 動かそうとする
買ったからにはとりあえず動かしてみる。とりあえず動かすのに必要なものは？

## 2.1. 情報源
公式サイト
https://rockpi.org/

Wiki？
https://wiki.radxa.com/Home

## 2.2 Raspberry Pi(RPi)との違いなど
とりあえず・・・

### 2.2.1 電源
電源が9Vって書いてある。RPiのときはPCからとったり、使いまわしの5V ACアダプタがあったが、使えないな。
USB Power Delivery(PD)やQuick Charge(QC)とか書いてあるので、RPiとは互換がない？
コネクタがUSB Type-Cなので、とりあえずMac Book Airのアダプタを使いまわすことにした。

### 2.2.2 ストレージ
Wikiとかみると、eMMCが載っていてOSはそこにインストール。適当なSDカードを使うつもりだったが、インストール時にしか使わない可能性が出てきた。

### 2.2.3 熱
6コアと書いてあるし、ヒートシンクで調べたら妙に大きなヒートシンクが公式？から販売されている模様。
最初はヒートシンクなしで、あとから適当なものでも取り付けようかと思っていたが、大きなものがいいかも？
※Rock Pi 4C用と書かれたヒートシンク買ったらCPUの向きが合わなかった。4Cと4C Plusは違うのだ・・・

# 3. 起動を試す
## 3.1. 1回目
マイクロSDカードは、Gigastone 32GB を使用した。
https://wiki.radxa.com/Rockpi4/downloads からダウンロードした。
とりあえずDebian選んだ。
rockpis_debian_buster_server_arm64_20210924_0412-gpt.img.gz

伸長したら「rockpis_debian_buster_server_arm64_20210924_0412-gpt.img」が入っているので
「Win32 Disk Imager」でマイクロSDカードに書く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1865486/a7fe6b13-1b2a-2042-a216-f287654db423.png)

書き込みが終わったらマイクロSDカードはRock Pi本体のスロットに挿す。
電源いれたらGreen LEDが光るけどHDMI(コネクタは2K側使った)でつないだモニタには何も表示されない。
* SDカードだけで起動できない？ ←後述の通りSDカードだけで起動できる。
* というか、ボードの裏みたらeMMCのコネクタだけがある。チップは載ってない。価格考えたら当然？
* M2コネクタはあるがSSDなんて当然載ってない。
何も考えずに購入して、たいして調べもせずどうせラズパイ互換っしょって甘い考えでした。 

## 3.2. 2回目
マイクロSDカードは、SAMSUNG EVO 64GB を使用した。
OSは、Armbian for Rock Pi 4Cを選択。
起動してもやはり出力がなかったので、4K側のHDMIコネクタにつないだらセットアップらしきCUIが出ていた。
4K側がデフォルトなのか？それともモニタのせいか？
いずれにせよマイクロSDカードだけでも起動できることが確認できた。
SDカードを変更したせいかもしれないので、改めてGigastone 32GBで同じ条件で試す予定。

# 4. 今後
2230のM2 SSD貸してくれる人がいるのでそれで試す。ダメなら正規品のeMMCモジュールを取り寄せる。
SDカードに相性があるのかもしれないので、いくつか試してみる。
結果が出たらこの記事を追記、修正予定。
GASのOAuth1ライブラリでform-dataフォーマットが使えない理由

# 背景
GASで画像を投稿する際、私が確認できたサイトで、[OAuth1ライブラリ](https://github.com/googleworkspace/apps-script-oauth1)を使用している物は全て画像をbase64エンコードしてアップロードしています。

それはOAuth1ライブラリを用いて`multipart/form-data`で投稿しようとすると認証エラーが発生するからです。

しかし`multipart/form-data`で投稿したほうが通信量も少なければbase64エンコードする時間も節約できるので出来れば`multipart/form-data`で投稿がしたい。

そこで、なぜOAuth1ライブラリを使用すると、`multipart/form-data`で投稿が出来ないのか調査しました。

# 原因
GASの[UrlFetchApp.fetch](https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app?hl=en#fetch(String,Object))はcontentTypeの指定が無いかつpayloadにBlobインスタンスが含まれていると自動で`multipart/form-data`フォーマットしてくれる優れものです。

が、原因はこの「contentTypeの指定が無い」の部分にあります。

[OAuth1ライブラリのfetch部分の実装](https://github.com/googleworkspace/apps-script-oauth1/blob/28e135507593d52d2c5bd9c3a4dcbf36fb3e83eb/src/Service.gs#L396)を見ると以下のようなコードがあります。([419行目](https://github.com/googleworkspace/apps-script-oauth1/blob/28e135507593d52d2c5bd9c3a4dcbf36fb3e83eb/src/Service.gs#L419)と[446行目](https://github.com/googleworkspace/apps-script-oauth1/blob/28e135507593d52d2c5bd9c3a4dcbf36fb3e83eb/src/Service.gs#L446))
```js
if (params.payload && (!params.contentType ||
      params.contentType == 'application/x-www-form-urlencoded')) {
   //続く
```

これすなわちcontentTypeの指定が無い場合とcontentTypeが`application/x-www-form-urlencoded`の場合の処理が同じということです。

payloadにBlobインスタンスがある場合もcontentTypeの指定が無ければ`application/x-www-form-urlencoded`と同様に処理がされて、payloadは`application/x-www-form-urlencoded`にフォーマットがされます。

つまり、ユーザーが`multipart/form-data`でPOSTしようと思ってcontentTypeを空にしても、実際は`application/x-www-form-urlencoded`でPOSTがされて、エラーが発生するという訳です。

# 対処法
[OAuth1ライブラリ](https://github.com/googleworkspace/apps-script-oauth1)を少し改良します。
[distファイルのOAuth1.gs](https://github.com/googleworkspace/apps-script-oauth1/blob/master/dist/OAuth1.gs)が統合ファイル(多分)なのでそれをGASにコピペしてください。
## 方法1.contentTypeが空の場合はそのままスルーさせる
貼り付けたファイルの536,563行目を以下のようにします。
```diff
-if (params.payload && (!params.contentType ||
- params.contentType == 'application/x-www-form-urlencoded'))
+if (params.payload && params.contentType == 'application/x-www-form-urlencoded')
```

以下のようにしてPOSTします。
```js
service.fetch("https://upload.twitter.com/1.1/media/upload.json",{
  method:"post",
  payload:{
    media:<Blob>
  }
})
```

しかし、`application/x-www-form-urlencoded`の場合もcontentTypeの指定が必須になるので、そこは注意してください。
## 方法2.contentTypeがmultipart/form-data指定の時はcontentTypeを空にする
ライブラリにはスルーさせて、UrlFetchAppにフォーマットを任せたいので、UrlFetchApp.fetchの直前にcontentTypeが特定のワードだった時にcontentTypeを削除するようにします。
```diff
    params.escaping = false;
  }
+ if(params.contentType==="multipart/form-data")
+   delete params.contentType
  return UrlFetchApp.fetch(url, params);
```
以下のようにしてPOSTします
```js
service.fetch("https://upload.twitter.com/1.1/media/upload.json",{
  method:"post",
  payload:{
    media:<Blob>
  },
  contentType:"multipart/form-data"
})
```
こっちの場合は`application/x-www-form-urlencoded`の場合は従来通りにcontentTypeを省略できます。


# 最後に
Google様のライブラリが原因なんて思ってもいませんでした。
案外疑ってみるものですね。
【AWS】AMIコピーからのEC2作成時に設定したpemキーでログインできない問題

AMIコピーで、インスタンスを作成したとき、
新規に作成したpemキーでログインできない場合があります。
その対処法を記載します。

## １、新pemキーからpubキーを作成する
```
$ ssh-keygen -y -f ~/.ssh/新pem名.pem > 新pem名.pub
```
ここでpubキーの中のデータをコピーしておきます

## ２、authorized_keysの書き換え
**①旧pemキーでインスタンスにログインします。**

**②authorized_keysを編集します。**
```
vi ~./.ssh/authorized_keys
```

中身を１でコピーした内容に差し替えます。
差し替えなのでauthorized_keysは、
cpとかでバックアップしといた方がいいかもしれません。

以上です。このあたりの処理もAWS側がやってくれるといいのですが、
なんらかの理由があってauthorized_keysを書き換えられないのでしょう。

ちょっとだけ鍵の仕組みを知る機会になったのでよしとします:smirk:
Raspberry Piを使ってみる

# はじめに
今までWindowsしか使ったことがなかったのですが、都合により、Raspberry Piや組み込みLinuxの知識が必要となったので、その習得を行うことにしました。

# やりたいこと
下記のことができるようになることを目標にします。
+ Raspberry PiでGUIアプリケーションを作れるようになる
+ 組み込みLinuxの開発方法を身に着ける
+ Raspberry Piと組み込みLinuxを連携して何かを作成する

# 目標
2022年　基本を習得する。
2022年　応用力を身に着けるために何を作るか考える。
2023年　Raspberry Piと組み込みLinuxの連携

# 使用機器
||型格|メーカ|
|:-:|:-:|:-:|
|Raspberry Pi|Raspberry Pi 4 ModelB 4GB|Raspberry Pi|
|Linux基板|STM32MP157F-DK2|STマイクロエレクトロニクス社|

# Raspberry Piの準備
ラズベリーパイはRaspberry Pi Imagerをダウンロードすれば簡単に行うことができました。
手順は検索すれば詳しく説明させれているので、説明に従うことで簡単でした。
最新のバージョンではデフォルトのPiユーザーは削除されたそうです。

Windowsで使用しているウイルスバスターやノートンは使用できないようなので、無料のアンチウィルスソフトをインストールします。こちらも詳しい解説があり助かりました。

# 分かったこと
下記を作業フォルダとして使用する。
/home/＜ユーザ名＞

# 参考サイト
[ラズベリーパイの初期化](https://sozorablog.com/reinstall/)
[デフォルトユーザー](https://raspida.com/del-defaultuser-pi)
[Raspberry Pi 4にアンチウィルスソフトをインストールする](https://linuxfun.org/2020/11/15/raspberry-pi-4-clamav/)
[ホームディレクトリ](https://eng-entrance.com/linux-user-home)
Specification of Standard Types, No.49, AUTOSAR R21-11(264) CP

Specification of Standard Types, No.49, 2021-11

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

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

AUTOSAR 21-11,160文書読んだ。2022年5月中に全部読み。

https://qiita.com/kaizen_nagoya/items/9935c9e58bf82e1e63d2

AUTOSAR 21-11, 62文書読んだ。2022年5月中に半分到達予定。

https://qiita.com/kaizen_nagoya/items/648b32867635993410c8

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

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

# 用語(terms)
|Term|Description|
|:--|:--|
|API |Application Programming Interface
|OSEK/VDX| Offene Systeme und deren Schnittstellen fuer die Elektronik
im Kraftfahrzeug
|STD |Standard

## 英日
日本語は仮訳

T.B.D.

# 参考(reference)

[1] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral
[2] General Requirements on SPAL
AUTOSAR_SRS_SPALGeneral
[3] Specification of RTE Software
AUTOSAR_SWS_RTE
[4] Requirements on Basic Software Module Description Template
AUTOSAR_RS_BSWModuleDescriptionTemplate
[5] List of Basic Software Modules
AUTOSAR_TR_BSWModuleList
[6] ISO 17356-3: Road vehicles – Open interface for embedded automotive applications – Part 3: OSEK/VDX Operating System (OS)
Android12対応でexported調整後でも怒られてしまう場合の対応方法

# はじめに
Android12対応、やることも多く現状でも対応が進んでいないプロジェクトも多いのではないでしょうか？
今回はAndroid12で対応必須なexportedですが、こちらプロジェクト内のexportedを対応してもビルドエラーになってしまうことがあります。
この原因は主にライブラリが絡んでいるのですが、どのライブラリが問題になっているのか調べる方法があるのでご紹介したいと思います。

# 確認方法
まずマニフェストを開き、エディター下部の以下タブから赤枠のあるMerged Manifestを選択します。
![スクリーンショット 2022-05-29 20.31.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/a232e177-7b10-b4ad-7a9b-04ae100d02a7.png)

選択後、以下スクショのようにライブラリが持つマニフェスト一覧が表示されます。
![スクリーンショット 2022-05-29 20.37.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/044b267f-f6ea-9a05-562c-38257b61a28e.png)

リストの項目を選択する事で、ライブラリが持つマニフェストの定義を確認できるので、exportedの設定を確認していきます。
exportedの設定がないものが見つかれば、対象のライブラリをアップデートし、最新で定義されている事を確認します。

最新でも定義されていなければ対応を待つか、ライブラリを使用しない方向で調整する必要があります。
アップデート後全て定義されていればexportedでビルドができない問題は解消しているかと思います。

# さいごに
そもそもライブラリを常に最新にアップデートしていれば問題にならない可能性が高いので、できる限り最新を保つように努力していきたいですね。
また、個人のライブラリ等を使っている場合はアップデートしても解消されない可能性があるので、ライブラリの選定は慎重に行っていきたいところです。
Specification of Platform Types, No.48, AUTOSAR R21-11(263) CP

Specification of Platform Types, No.48, 2021-11

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

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

AUTOSAR 21-11,160文書読んだ。2022年5月中に全部読み。

https://qiita.com/kaizen_nagoya/items/9935c9e58bf82e1e63d2

AUTOSAR 21-11, 62文書読んだ。2022年5月中に半分到達予定。

https://qiita.com/kaizen_nagoya/items/648b32867635993410c8

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

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

# 用語(terms)
|Term|Description|
|:--|:--|
|Rollover mechanism| The following example sequence is called ’rollover’: • An unsigned char has the value of 255. • It is incremented by 1. • The result is 0.
|SDU| Service Data Unit (payload)
|int |Integer
## 英日
日本語は仮訳

T.B.D.

# 参考(reference)

[1] General Specification of Basic Software Modules
AUTOSAR_SWS_BSWGeneral
[2] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral
[3] Cosmic C Cross Compiler User’s Guide for Motorola MC68HC12, V4.5
[4] Metrowerks CodeWarrior 4.0 for Freescale HC9S12X/XGATE (V5.0.25)
Motorola HC12 Assembler, 2.6.2004
[5] Metrowerks CodeWarrior 4.0 for Freescale HC9S12X/XGATE (V5.0.25)
Motorola HC12 Compiler, 2.6.2004
[6] Metrowerks CodeWarrior 4.0 for Freescale HC9S12X/XGATE (V5.0.25)
Smart Linker, 2.4.2004
[7] TASKING for ST10 V8.5
C166/ST10 v8.5 C Cross-Compiler User’s Manual, V5.16
[8] TASKING for ST10 V8.5
C166/ST10 v8.5 C Cross-Assembler, Linker/Locator, Utilities User’s Manual, V5.16
[9] GreenHills MULTI for V850 V4.0.5
Building Applications for Embedded V800, V4.0, 30.1.2004
[10] Wind River (Diab Data) for PowerPC Version 5.2.1, Wind River Compiler for Power PC - Getting Started, Edition 2, 8.5.2004
[11] Wind River (Diab Data) for PowerPC Version 5.2.1
Wind River Compiler for Power PC - User’s Guide,Edition 2, 11.5.2004
[12] TASKING for TriCore TC1796 V2.1R1
TriCore v2.0 C Cross-Compiler, Assembler, Linker User’s Guide V1.2
[13] ARM ADS compiler manual
状態変数(@Binding)を初期化する際には_(アンダースコア)が必要らしい

<h1>状態変数(@Binding)を初期化する際には_(アンダースコア)が必要らしい</h1>

```swift:TextArea.swift
struct TextArea: View {
    @Binding var text : String
    let placeholder : String
    
    init(placeholder : String , text: Binding<String>){
        self.placeholder = placeholder
        //変数名の前に_(アンダースコア)が必要
        self._text = text
        UITextView.appearance().backgroundColor = .clear
    }
}
```