OmniAICreator/Qiita-1.07M huggingface dataset:
systemctlとsysctlの違い

# systemctl
**用途：サービス(プログラム)の実行や停止など**
※ここでは例としてhttpd(Apache/webサーバーのデーモンプログラム)を対象としています。


・サービスの起動/停止
```
systemctl start httpd
#サービスを起動します
```
```
systemctl stop httpd
#サービスを停止します
```

・自動起動の設定
```
systemctl enable httpd
#システム起動時に自動起動するようにします
```
```
systemctl disable httpd
#システム起動時に自動起動しません
```
・起動状態の確認
```
systemctl is-active httpd
#現在起動しているかどうかだけを表示します
```
```
systemctl status httpd
#起動状態に関してより詳しい情報を確認できます
```

# sysctl
**用途：カーネルのパラメータを変更/表示**
　　　※パラメータ例...OSの情報や、Ctrl+Alt+Delキーを押した際の動作設定など

・パラメータの表示
```
sysctl -a
#全パラメータの表示

sysctl kernel.ostype
#OSタイプのみ表示
```

・パラメータ設定の読み込み(デフォルトでは/etc/sysctl.confから読み込む)
```
sysctl -p /etc/sysctl.conf
```
・パラメータの変更
```
sysctl -w net.ipv4.ip_forward=1
#IPフォワーディングの有効化(=0で無効化)
#IPフォワーディングとは、異なるNIC間でパケットを転送すること
```
再起動すると設定が失われます。永続的な変更を加えるには、/etc/sysctl.confに設定を記述します。
再起動するか、```sysctl -p```を実行して設定を読み込みます。
Power Automate（Cloud版）　Datavserse重複削除

Power Automate（Cloud版）に関する質問です。

Dataverseのテーブルに下記データがあります。
A列：製品名
B列：バージョン名

これを新しいバージョン（数字が大きい）だけ残して、重複している古いバージョンの行を削除したいのですが、アドバイスいただけないでしょうか。
よろしくお願いします。
シミュレーション用に組み合わせデータを生成する(SPSS Modeler データ加工逆引き9-18)

# シミュレーション用に組み合わせデータを生成する（スコアリング）

![スクリーンショット 2023-05-29 11.45.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/2ed2ebd4-795e-8e68-b153-de8eab563ac5.png)


## 1.想定される利用目的

・作成した予測モデルに組み合わせデータを適用し最適な入力を探索する
（馬力を最大化させる最も低コストのスペックパターンを求めるなど）

## 2.サンプルストリームのダウンロード

https://github.com/yoichiro0903n/blue/raw/main/scoring_round_robin.str

## 3.サンプルストリームの説明

![スクリーンショット 2023-05-01 15.16.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/54b5fa61-1911-8de7-23aa-f79cd897e8e2.png)

### 予測モデルを作成する（逆引き9-16/17と共通）

a.モデル学習用データは以下の通りです。自動車のスペックデータです。

![スクリーンショット 2023-05-01 15.32.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1107a9d8-1861-b18e-d79f-c076c7cceee4.png)

b.[データ型]ノードを編集します。馬力を[対象]にして予測します。
![スクリーンショット 2023-05-01 15.14.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f3f07ea5-10e0-da74-cd52-702fa5cbcfc3.png)

c.[ニューラルネット]ノードを実行します。

d.[ニューラルネット]モデルナゲットが作成されました。
![スクリーンショット 2023-05-01 15.36.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/70e05581-1b23-5f67-04f4-b502ac8be798.png)

e.[テーブル]ノードを表示します。学習データに馬力を予測するフィールドが追加されました。

![スクリーンショット 2023-05-01 15.13.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d942c0db-9924-fbc2-132f-b444bf0ca003.png)

### 予測モデルを新規データに適用する

f.[ユーザー入力]ノードを右クリックして次のように入力します。例えば[燃費]は最小値18.0、最大値19.0で0.1刻みの組み合わせを要求するために[18;19,0.1]と設定します。

![スクリーンショット 2023-05-29 11.41.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/be5e0cef-5206-c5ea-90ef-e532ead16cc6.png)

[プレビュー]します。1980通りの組み合わせテーブルです。

![スクリーンショット 2023-05-29 11.56.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1389a4a2-63ed-d79d-d117-4cbbbf811748.png)

[テーブル]を実行します。スコアリングされています。馬力をソートすれば馬力が最大または最小の組み合わせを知ることができます。
![スクリーンショット 2023-05-29 11.59.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f5f41959-903d-022d-1741-032ddfaa5d3c.png)


#### 注意事項

範囲と単位を誤ると爆発的に大きなテーブルを生成してしまうので注意してください。

## 4.参考情報

#### CADSを用いたスコアリングについて説明する記事

https://qiita.com/kawada2017/items/22373a49cbf7c3da9f38

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/private/4bf813e6cba84b2a1008
[PostgreSQL]ERROR:  could not drop replication slot "sub" on publisher: ERROR:  replication slot "sub" does not exist

PostgreSQLでサブスクリプションを削除しようとしたら以下のエラーが発生しました。
PostgreSQLのVersionは15です。
```
publicuserdb=# DROP subscription sub ;
ERROR:  could not drop replication slot "sub" on publisher: ERROR:  replication slot "sub" does not exist
```
SRA OSS Tech Blogの[ロジカルレプリケーションの紹介 (3)](https://www.sraoss.co.jp/tech-blog/pgsql/logical-replication-3/)によると、
> パブリッシャにレプリケーションスロットが存在しない状態で、サブスクリプションを削除しようとした場合には、下記のようなエラーが出力されます。
```
second=# DROP subscription logical_sub;
ERROR:  could not drop the replication slot "logical_sub_slot" on publisher
DETAIL:  The error was: ERROR:  replication slot "logical_sub_slot" does not exist
```
>この場合にも、サブスクリプションのレプリケーションスロットを NONE に変更する必要があります。

とのことですので、
```
publicuserdb=# ALTER SUBSCRIPTION sub SET (slot_name = NONE) ;
ALTER SUBSCRIPTION
publicuserdb=# DROP subscription sub ;
DROP SUBSCRIPTION
```
として、サブスクリプションを削除できました。

以下はメモです。

そもそもなぜ「パブリッシャにレプリケーションスロットが存在しない状態」になったのか分かりませんでした。
パブリッシャのPostgreSQLを停止して起動したあとにサブスクリプションを削除しようとしたら起こったと思うのですが曖昧なので次に同じようなことがあったら追記しようと思います。
(イベント用メモ)キッズ向けのsculptglチュートリアル

# はじめに

3Dオブジェクトを彫刻のように削ったり膨らませたりできるスカルプトツールを今回利用します。ZBrush、Mudbox、3D-Coatなど様々なものがありますが、今回使うツールはこちらのsulptglというWebツールになります。

https://stephaneginier.com/sculptgl/

(ソースコードは、githubにも公開 https://github.com/stephomi/sculptgl)

ブラウザを開くとすでにこのような形で、CGを作る用意ができています。
マウスやペンタブなどを使って絵を描くように膨らませたりへこませるなど直感的な操作で、モデリングを行うことが可能となっています。
![スクリーンショット 2023-05-27 8.17.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/f97893e3-1868-e5d6-4995-654b6dbb27b0.png)


ツールをいくつか使うことで、粘土のように変形させることができます。
今回は勉強のために、3つのツールだけを使って作ってみたいと思います。

![スクリーンショット 2023-05-27 8.18.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/2c397927-5488-30c5-d171-1793d7dcc700.png)

|名前  |説明  |
|---|---|
|ブラシ  |粘土を盛る時に使います  |
|フラット化  |粘土を削ります  |
|しわ  |線で模様を描きます  |
|Move  |粘土を引っ張って形を作ります  |

以上の機能を覚えておけば、意外にいろいろな形を作ることができます。
それでは試しに作ってみます

# 基本のキャラクターを作ってみる

## 1.目を作ります

ツール -> ブラシ -> 半径30

![スクリーンショット 2023-05-26 15.49.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/57bd4ec4-5e6f-f8ec-7b8a-75cccad7755c.png)

## 2.口を作ります

ツール -> ブラシ -> 半径80
![スクリーンショット 2023-05-26 15.54.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/409570b3-07b1-4954-f0da-c7a8abd4a276.png)

## 3.鼻を作ります
![スクリーンショット 2023-05-26 15.55.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/fe6aea55-c788-95bd-4c88-b93cb13b3656.png)


## 4.ちょっと盛り過ぎちゃった！そんな時は、フラット化を選んで...
ツール -> フラット化
![スクリーンショット 2023-05-26 15.55.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/c467738a-d3bf-c878-8e72-cb2476ab1501.png)

## 5.平らにしましょう
ツール -> フラット化
![スクリーンショット 2023-05-26 15.56.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/03d18d1a-d389-d93e-1de3-883aec06f8de.png)

## 6.しわで、口とそばかすの模様を描きます
![スクリーンショット 2023-05-26 15.57.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/fc2a52b1-cdc3-411f-5ab2-ef073fb53483.png)

##7.もう一度ブラシで耳を作ります
![スクリーンショット 2023-05-26 15.58.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/c363d1cc-448c-c691-e6fd-abe42af0b844.png)

##8.フラット化を使って、平らにしてみます
![スクリーンショット 2023-05-26 15.58.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/d86e0557-d8f2-bf21-b9cb-7d9b7e7c00c8.png)

## 9.しわで模様を描いたら完成です！
![スクリーンショット 2023-05-26 16.00.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/fb056e74-a8b3-0636-1c1c-85c0bb06a6c4.png)



## 10.全体的な設定

スペックの低いパソコンで行う場合は、TOPLOGYのResolutionを低い値に設定してください。
最大400に設定すると、かなり重たくなってしまいます。
Dynamic Topologyの設定を入れておくことで、ブラシなどでオブジェクトを変更するたびにメッシュが作り直されます。

![スクリーンショット 2023-06-26 11.17.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/79688153-98e0-5952-c0a1-aded5736a501.png)
rails7.2からMySQLでprepared statemenがデフォルトで有効になる


# 背景
railsアプリのdatabase接続設定でDBアダプタが`sqlite3`と`postgresql`の場合は`prepare statement`設定はデフォルトで**有効**になっているが、`mysql2`の場合は**無効**になっていた。

https://github.com/rails/rails/issues/42975

# 対応

DBアダプタ間で設定に一貫性を保つ為に`mysql2`も`prepare statement`設定がデフォルトで**有効**になる。

https://github.com/rails/rails/pull/45945

breaking changeになるのでデフォルト値が実際に有効になるのは2世代先の7.2からで、時期バージョンの7.1では`mysql`を使用する場合に以下の`DEPRECATION WARNING`が表示されるようになります。

```
ActiveSupport::DeprecationException:
  DEPRECATION WARNING: The default value of `prepared_statements` for the mysql2 adapter will be changed from +false+ to +true+ in Rails 7.2.
#
```

## `DEPRECATION WARNING`を表示させない

`DEPRECATION WARNING`の出力処理は`prepared_statements`の`prepared_statements`が`database.yml`で指定されていない場合にフレームワークでデフォルト値を参照する際に出力されています。

https://github.com/ilianah/rails/blob/a0fd15ee7e348a0250f9dbb90c147453d193e4cd/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb#L128

そのため、以下のように`database.yml`内で値を設定することで`DEPRECATION WARNING`の出力を止めることが可能です。

### これまでの振る舞い通り`prepared_statements`を無効化したい場合

```diff:config/database.yml
default:
  adapter: mysql2
+  prepared_statements: false
```

### rails7.2以降のデフォルトに合わせて`prepared_statements`を有効化したい場合

※ rails7.2以降では`prepared_statements`のデフォルト値が`ture`に変更されるため値の指定は不要になります。

```yaml:config/database.yml

default:
  adapter: mysql2
  prepared_statements: true
```

# プリペアドステートメントについて
https://dev.mysql.com/doc/refman/8.0/ja/sql-prepared-statements.html
ST7735(パラレル)をフラットケーブルで接続したい。3(完)(部品一覧)(ATM0177B5)(STM32G071)



目的
配線の簡素化の為にマイコンとの接続をフラットケーブル化したい

-----------------------------------------------------------

●ATM0177B5

１．７７インチ　カラーグラフィックＴＦＴ　ＬＣＤ（１２８×（ＲＧＢ）×１６０ドット）　ＡＴＭ０１７７Ｂ５
[ATM0177B5]
通販コード　P-15694
発売日　2020/11/30


![o_cop554.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a7bc257f-3b90-423a-74d2-9a7a781b7653.jpeg)

超薄型ピッチ変換基板　ＦＰＣ５０Ｐ　０．８ｍｍピッチ
[AE-SB-FPC50P-0.8]
通販コード　P-15161
発売日　2020/04/28

![o_cop562.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/c3babc4c-0610-5a89-679e-c660c78fd009.jpeg)


ピンヘッダ　２×４０　（８０Ｐ）
[PH-2x40SG]
通販コード　C-00082
発売日　2002/05/31

![o_cop563.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/7e675da8-157f-5e64-0ab3-1570c55aa62b.jpeg)

-----------------------------------------------------------

●Arduinoプロトタイピング用基板

Ａｒｄｕｉｎｏ用ユニバーサル　プロトシールド基板　ガラスコンポジット　金フラッシュ
[U-PROTOSHIELD-I]
通販コード　P-07555
発売日　2014/03/17

![o_cop555.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/96b10bc1-d32f-b855-f128-c948b9f3f5aa.jpeg)

カーボン抵抗（炭素皮膜抵抗）　１／６Ｗ０Ω　（１００本入）
[RD16S 0E]
通販コード　R-16000
発売日　2002/06/11

![o_cop565.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/16a825ea-9dd6-c653-9a4b-a0ee17583ca1.jpeg)


カーボン抵抗（炭素皮膜抵抗）　１／６Ｗ３３０Ω　（１００本入）
[CF16J330RB]
通販コード　R-16331
発売日　2002/06/11

![o_cop566.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/98d68adc-f243-6738-9d91-3db144f36a1e.jpeg)

ピンヘッダ　１×４０　（４０Ｐ）
[PH-1x40SG]
通販コード　C-00167
発売日　2002/04/10

![o_cop567.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/1d38b149-5e2f-617d-6cc6-bf3bdc3cfc24.jpeg)

ピンソケット（メス）　１×６（６Ｐ）
[FH-1x6SG/RH]
通販コード　C-03784
発売日　2010/05/29

![o_cop568.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/87231bf0-9a92-8ab5-ef71-393da332d9f8.jpeg)

ピンソケット（メス）　１×８（８Ｐ）
[FH-1x8SG/RH]
通販コード　C-03785
発売日　2010/05/29

![o_cop569.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/9c607ef3-b88a-ee7d-4d8c-bf2ee049c707.jpeg)

ピンソケット（メス）　１×１０（１０Ｐ）
[FH-1x10SG/RH]
通販コード　C-03786
発売日　2011/09/27

![o_cop570.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/78892b62-9890-bbdf-fc0e-d947f03cdb45.jpeg)

耐熱電子ワイヤー　１ｍ×１０色　導体外径０．５４ｍｍ（ＡＷＧ２４相当）
[0.2sq (7/0.18) AWG24x10]
通販コード　P-10672
発売日　2016/06/09

![o_cop571.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/e40a385b-6679-f8d2-e57e-8ef82536e5fb.jpeg)

２×２０（４０Ｐ）両端コネクタ付ＩＤＣリボンケーブル（フラットケーブル）
[DG01032-0025-02]
通販コード　C-08931
発売日　2015/01/20

![o_cop572.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/f6b65bef-3462-3723-56db-c4ba28eec872.jpeg)
【Nuxt.js】layoutsに入れたheader内hamburgerメニューのトグル真偽値を親から渡す


レイアウトを使用しているときのコンポーネントの渡し方がわからなかったので、その備忘録。

nuxt@2.15.8
node: '16.2.0'
macOS M2 Ventura 13.3.1

Nuxt.jsで簡単なWebサイトを制作。

ヘッダーの機能は`TheHeader.vue`にまとめましたが、今回はたまたまあるページにはヘッダーを載せたくないという与件があったため、footerが全ページに配置されているlayouts/default.vue とは別にlayouts/childlayout.vueを作成し、そのレイアウトを通してコンポーネント`TheHeader.vue` > `TheBurger.vue`の順に値（ハンバーガーメニューのトグルtrue/false）をバケツリレーすることにしました。

```vuejs:TheHeader.vue
<template>
  <header id="header" class="header">
    <NuxtLink to="/"
      ><img class="logo_pi" src="~/assets/img/logo.png" alt="header logo"
    /></NuxtLink>
    <nav>省略</nav>
    <TheBurger :active="active" @toggle-menu="toggleActive"></TheBurger>
  </header>
</template>
<script>
export default {
  props: {
    active: {
      type: Boolean,
      required: true,
      default: true,
    },
  },
  methods: {
    toggleActive() {
      this.$emit('toggle-menu')
    },
  },
}
</script>
```


```vuejs:TheBurger.vue
<template>
  <div
    id="burger"
    :class="{
      active: active,
    }"
    @click="toggleActive"
  >
    <button type="button" class="burger_button" title="Menu">
      <span class="burger_bar burger_bar__1"></span>
      <span class="burger_bar burger_bar__2"></span>
    </button>
    <div v-show="active" class="navbarNav">
      <div class="wrapper">
        <NuxtLink to="/"
          ><img
            class="logo_pi__white"
            src="~/assets/img/logo_white.png"
            alt="header logo white"
        /></NuxtLink>
        <nav class="navbar_nav">省略</nav>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'TheBurger',
  props: {
    active: {
      type: Boolean,
      required: true,
      default: false,
    },
  },
  methods: {
    toggleActive() {
      this.$emit('toggle-menu')
    },
  },
}
</script>
```


```vuejs:childlayout.vue
<template>
  <div>
    <TheHeader :active="menuActive" @toggle-menu="toggleMenu"></TheHeader>
    <Nuxt />
    <CookieControl locale="ja"></CookieControl>
    <TheFooter />
  </div>
</template>
<script>
export default {
  data() {
    return {
      menuActive: false, // valiables for controling the menu
    }
  },
  created() {
    this.setToggleListerer()
  },
  methods: {
    setToggleListerer() {
      this.$on('toggle-menu', () => {
        this.toggleMenu()
      })
    },
    toggleMenu() {
      this.menuActive = !this.menuActive
    },
  },
}
</script>
```


参考にした記事はこちら
[【Nuxt.js】layoutsに設定をまとめつつ、タイトルはpagesから設定したい](https://qiita.com/yama-t/items/b051cd9ea802f69da118)
実装方法が古かったのと、（レイアウトを使っている）ページからのmountedは不要だったので、上記コードではその部分を省略しています。
データサイエンスのための微分積分 第13回 合成関数の極限

:::note info
本記事は数学講座[2.12合成関数の極限](https://www.matongxue.com/lessons/565/parts/1353)を勉強して投稿したメモです。詳細は元の素晴らしい講座のページをチェックしてください。
:::


# 合成関数の極限

**定義**：

```math  

\left.\begin{aligned}
    \lim_{x\to x_0}g(x)=u_0\\
    \lim_{u\to u_0}f(u)=L\\
    x\in\mathring{U}(x_0)\ \text{の時}\ y=f[\ g(x)\ ]\ \text{定義あり}\\
    x\in\mathring{U}(x_0)\ \text{の時}\ g(x)\ne u_0
\end{aligned}\right\}\implies \lim_{x\to x_0}f[\ g(x)\ ]=\lim_{u\to u_0}f(u)=L

```

## 例1：

$\displaystyle\lim_{x\to 4}\frac{\sin(x-4)^2}{(x-4)^2}$を解く。

**解く：**
```math  
\left.\begin{aligned}
    \lim_{x\to 4}g(x)=\lim_{x\to 4}(x-4)^2=0\\
    \lim_{u\to 0}f(u)=\lim_{u\to 0}\frac{\sin u}{u}=1\\
    x\in\mathring{U}(4)\ \text{の時}\ y=f[\ g(x)\ ]\ \text{定義あり}\\
    x\in\mathring{U}(4)\ \text{の時}\ g(x)\ne 0
\end{aligned}\right\}\implies \lim_{x\to 4}\frac{\sin(x-4)^2}{(x-4)^2}=\lim_{x\to 4}f[\ g(x)\ ]=\lim_{u\to 0}\frac{\sin u}{u}=1
```

## 例2：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/509d4480-05ad-53fd-e722-c290f4b4157e.png)

## 例3：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/e414d322-b3f4-3170-942c-ebfea0567499.png)

# 練習

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/ce4d05ae-65e5-2af7-200a-93c9367d8f90.png)

**練習3**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/bd0e4649-e937-3913-cdd4-4a032773ca2f.png)


# 参考情報

https://wiis.info/math/real-number/function/limit-of-composite-function/#:~:text=%E5%90%88%E6%88%90%E9%96%A2%E6%95%B0%E3%81%8C%E6%9C%89%E9%99%90%E3%81%AA,%E6%B3%95%E3%82%92%E8%A7%A3%E8%AA%AC%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
Prepare Your Salesforce Org for Users


# We couldn’t find Currency Type and Decimal with the correct information. Ensure that you have selected the correct currency type and entered the decimal information.

+ [Set Up the Exchange Rate hands-on. Challenge Not yet complete... here's what's wrong: We couldn’t find Currency Type and Decimal with the correct information. Ensure that you have selected the correct currency type and entered the decimal information.](https://developer.salesforce.com/forums/?id=9060G0000005csvQAA)

:::note
I got it to work now, this is how I did it:

1. Create a new Trailhead Playground
2. Set Corporate Currency to USD under Company Information
3. I also set Language to English, Locale to English and Timezone to Los Angeles
4. Start with Step #1 and now you should be able to pass Step #2

I'm guessing that the problem is that the Corporate Currency on a new Trailhead org is dependent on your setting so if you get a non USD-org from the start you might end up with problems.
:::

+ [Is it possible using the classic SF version to complete my tasks on 'Prepare Your Salesforce Org for Users' is causing errors?]

:::note
 I have checked the issue and it seems "Dated Exchange Rates" are not defined as per the challenge requirement. I have added the correct Exchange Rate and now the challenge is working as expected.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/dcef9647-9feb-b868-fe27-1cc2bbd8fda0.png)
To check the same, in the quick find box, search for Manage Currencies option and click on the Manage Currencies and click on Manage Dated Exchange Rates button as shown in the below screenshot:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2836bf69-b49a-7625-c907-edad379cba8e.png)

:::
Qi.rb バージョン10.0.0が登場

皆様、こんにちは。

[**Qi.rb**](https://github.com/sashite/qi.rb)の新バージョン、[`10.0.0`](https://rubygems.org/gems/qi/versions/10.0.0)をリリースいたしました。開発者の皆様からの貴重なご意見とフィードバックに感謝申し上げます。

新たな`Qi`は、ボードゲームの状態をより柔軟に管理できるよう、いくつかの機能を追加しています。特に、`commit`メソッドはゲーム状態の変更を可能にし、`captures_array`メソッドによりキャプチャされた駒を一覧化することができます。

私たちは常に改善を目指しており、引き続き皆様からのフィードバックをお待ちしております。お忙しい中、`Qi`のアップデートについて読んでくださりありがとうございました。

![qi-10-0-0-release-illustration.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16358/6150abee-cbd4-b03b-2a78-81aceb2a54e2.jpeg)
【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション デバイス追加編

# はじめに

- DRBDで対象デバイスを追加したい・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/e2708e2c-99b9-7e8f-5d62-e976cabbe37c.png)

まとめはこちら

[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション](https://qiita.com/nouernet/items/31536b9f63837b0c9001)

# 前提条件

- 2台の ubuntu 22.04
- Primary を node1、Secndary を node2 とする
- Primary/Secondary 共に /dev/sda をシステム、/dev/sdb をストレージレプリケーションとして利用
- 今回は、/dev/sdc を追加
- node1 の IPアドレスは 192.168.100.101 とする
- node2 の IPアドレスは 192.168.100.102 とする
- 既存デバイスは、/dev/drbd0 とする
- 追加デバイスは、/dev/drbd1 とする
- 既存のマウント先は /export とする
- 追加のマウント先は /export2 とする

# 手順

- DRBD の停止
- 設定の追加
- 設定の読み込み
- DRBD の停止
- メタデータの作成
- DRBD の開始
- Primary の決定　〜　自動的に同期

# DRBD の停止

- Primary/Secondary 共に

```terminal
$ sudo drbdadm down r0
$ sudo drbdadm status r0
```
# 既存の設定ファイル

```/etc/drbd.d/global_common.conf
global {
    usage-count no;
}
common {
    net {
        protocol C;
    }
}
```

```/etc/drbd.d/r0.res
resource r0 {
    device /dev/drbd0;
    disk /dev/sdb;
    meta-disk internal;
    on node1 {
        address 192.168.100.101:7789;
    }
    on node2 {
        address 192.168.100.102:7799;
    }
}
```

# デバイス追加の設定ファイル

- `volume` 記述が増えていることに注意

```/etc/drbd.d/r0.res
resource r0 {
    volume 0 {
      device /dev/drbd0;
      disk /dev/sdb;
      meta-disk internal;
    }
    volume 1 {
      device /dev/drbd1;
      disk /dev/sdc;
      meta-disk internal;
    }
    on node1 {
        address 192.168.100.101:7789;
    }
    on node2 {
        address 192.168.100.102:7799;
    }
}
```

# DRBD の設定ファイル変更の読み込み

- Primary/Secondary 共に

```terminal
$ sudo drbdadm adjust r0
```

# DRBD の停止

- Primary/Secondary 共に

```terminal
$ sudo drbdadm down r0
$ sudo drbdadm status r0
```

# 追加デバイスのメタデータの作成

- Primary/Secondary 共に
- r0/1 は今回追加したデバイス

```terminal
$ sudo drbdadm create-md r0/1
```

# DRBD の起動

- Primary/Secondary 共に

```terminal
$ sudo drbdadm up r0
$ sudo drbdadm status r0
```

# Primary 決定

- Primary だけで

```terminal
$ sudo drbdadm primary r0
$ sudo drbdadm status r0
$ sudo mount /dev/drbd0 /export
$ sudo mount /dev/drbd1 /export2
```

# さいごに

- かんたんでしたね

# 参考

[Ubuntu 22.04 man page drbdadm](https://manpages.ubuntu.com/manpages/jammy/ja/man8/drbdadm.8.html)
[Ubuntu 22.04 man page drbd](https://manpages.ubuntu.com/manpages/jammy/ja/man8/drbd.8.html)

[DRBD9 ユーザーズガイド](https://linbit.com/drbd-user-guide/drbd-guide-9_0-ja/)
[LINSTOR ユーザーズガイド](https://linbit.com/drbd-user-guide/linstor-guide-1_0-ja/)
【解決方法】Encountered a syntax error while rendering template: check とは？

Ruby on rails を学習中の方の参考にしてもらえたら嬉しいです。
アプリケーションを作成している時に出てくるエラーとその解決方法について掲載します。少しでも参考にしていただけると幸いです。
`Encountered a syntax error while rendering template: check`というエラーの解決方法をお話しします。

![スクリーンショット 2023-05-30 6.16.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/2b811163-c9fe-7d0e-9409-bba677c2712e.png)
上記のエラーを解決していきます。

## 先に結論を話します

この手のシンタックスエラー（構文ミス）を見つけるのはかなり骨の折れる作業です。
他のエラーに関してもそうですが、間違え探しというのはなかなか見つからないものです。
なので、ChatGPTにコードを入れて探してもらい、修正していくというのが早い解決法かと思います。


## エラーまでの過程を説明
今回のエラーは構文エラーです。スペルミスか記述ミスか、正しく書いたつもりのコードのどこかにタイポがあるはずです。
これを見つけていく作業になります。

## エラーの見つけ方

▼エラーがどこで起こっているのか確認するにはエラー画面のマーカーラインしているところを見ます。
今回はchatsというhtml.hamlのファイルで起こっているようです

![スクリーンショット 2023-05-30 6.17.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/8f18af12-8437-9e08-aa5a-2c945d1fc848.png)

ではこれから2枚の画像を並べます。間違えを探してください。

![スクリーンショット 2023-05-30 6.18.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/8c1398a8-dbe5-820e-e3be-324ec0c9d892.png)

![スクリーンショット 2023-05-30 6.20.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/a7c821a4-a414-6769-4eb8-8d5fc3e5b7b6.png)

間違いを探し出すのに時間がかかりますよね。
正解は`@chats.order (created _at: :desc) .each do |chat|`という一文のeachの直前に『.』ピリオドがなかったのです。
私のような初学者にはなかなか難しいです。
なので、テクノロジーを使って楽をしていきましょう。

## ChatGPTで間違えを探る
▼画像のようにコードをコピペしてタイポを探してもらいましょう。
![スクリーンショット 2023-05-30 6.19.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/251404ba-c34d-8b08-dc8d-58a9d5ae0176.png)

**はい！見つかりました！**
気をつけたいのは『説明文』と『間違えているコード箇所の指摘』にずれがありますので、回答を確認してきましょう。
ということで、`@chats.order (created _at: :desc) .each do |chat|`という一文のeachの直前に『.』ピリオドがなかったことが分かりましたので、コードを修正したエラー解決です。

## 最後に
ということで、今回はシンタックスエラー（構文エラー）を解決しました。
目で見て解決に時間がかかりそうなところはChatGPTを使って探しだす方が時間の節約になると思います。

いかがでしたでしょうか？
他にも記事を発信していきますので、私の QiitaやTwitterをフォローしていただけると嬉しいです。
個別の質問もぜひ歓迎します。
私自身、初学者ではありますが、1歩先を行くものとして回答できたらと思います。
それでは。
【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション 設定編

# はじめに

この記事では、設定周り `例: /etc/drbd.d/r0` について記載します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/e2708e2c-99b9-7e8f-5d62-e976cabbe37c.png)

まとめはこちら

[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション](https://qiita.com/nouernet/items/31536b9f63837b0c9001)

# 前提条件

- 2台の ubuntu 22.04
- Primary を node1、Secndary を node2 とする
- Primary/Secondary 共に /dev/sda をシステム、/dev/sdb をストレージレプリケーションとして利用
- 追加のデバイスは /dev/sdc, /dev/sdd と続く
- node1 の IPアドレスは 192.168.100.101 とする
- node2 の IPアドレスは 192.168.100.102 とする
- マウント先は /export とする

# 現在の設定の確認方法

```terminal
$ sudo drdbadm dump r0 -v
```

# 変更した設定の確認（ドライラン）

```terminal
$ sudo drdbadm adjust -d r0
```

# 変更した設定の反映

```terminal
$ sudo drdbadm adjust r0
```

# 単一デバイスで `Volume` を省略する場合

- 単一のデバイスを作成する場合は`Volume`記述がなくてもOK

## 例

```/etc/drbd.d/r0.res
resource r0 {
    device minor 0;
    disk "/dev/sdb";
    meta-disk internal;
    on drbd1 {
        address 192.168.100.101:7789;
    }
    on drbd2 {
        address 192.168.100.102:7889;
    }
}
```

- `device minor 0` とすることで、 `/dev/drbd0` としてデバイスが作成される
- `device minor 1` とすることで、 `/dev/drbd1` としてデバイスが作成される
- `device /dev/drbd0` とすることで、 `/dev/drbd0` としてデバイスが作成される

# `Volume` を記述する場合

## 例

```/etc/drbd.d/r0.res
resource r0 {
    volume 0 {
      device minor 0;
      disk "/dev/sdb";
      meta-disk internal;
    }
    on drbd1 {
        address 192.168.100.101:7789;
    }
    on drbd2 {
        address 192.168.100.102:7889;
    }
}
```

# ステータス確認

```terminal
$ sudo drbdadm status
```

# 参考

[Ubuntu 22.04 man page drbdadm](https://manpages.ubuntu.com/manpages/jammy/ja/man8/drbdadm.8.html)
[Ubuntu 22.04 man page drbd](https://manpages.ubuntu.com/manpages/jammy/ja/man8/drbd.8.html)
[Ubuntu 22.04 man page drbdsetup](https://manpages.ubuntu.com/manpages/jammy/ja/man8/drbdsetup.8.html)

[DRBD9 ユーザーズガイド](https://linbit.com/drbd-user-guide/drbd-guide-9_0-ja/)
[LINSTOR ユーザーズガイド](https://linbit.com/drbd-user-guide/linstor-guide-1_0-ja/)

# さいごに

かんたんでしたね
Bluetoothが勝手にダメになった問題ををBIOS無効有効で解決

# 最近この症状が再発した

つい最近この症状が再発した。そしてこのブログにたどり着いて無事対処できた。うちの環境だと、デスクトップに `restart2UEFI`というショートカットアイコンがある。これをつかえばマウスだけで問題解決できる。バックアップ用にワイヤーマウスを１つ準備しておくといいね！


# 不明なUSBデバイス状態のBluetoothをBIOS(UEFI)で無効有効にして解決する方法。

ここまでたどりつくのに大変苦労したので、備忘録と情報共有ということで・・ブルートゥースBluetoothがダメに突然なった。Windows Updateが失敗しブルートゥース機能をとばしてしまうようだ。 デバイスマネージャーでUSBデバイスのところをみると、"デバイス記述子要求の失敗"とある。ブルートゥースは出現しない。非表示のも表示するとかいうオプションを選ぶと、出てきたので、片っ端からブルートゥース関係をデバイスのアンインストールしたら、さらにひどいこととなった。Bluetoothアダプタが表示すらできなくなった。ちなみにBluetoothアダプタはIntel でワイヤレスデバイスに内蔵。オンボードです。

# デバイスマネージャーの状況

Bluetoothアダプタが消失し、代わりにUSBのところで「不明なUSBデバイス(デバイス記述子要求の失敗)」となっている。

# 人はペアリングできないっていう症状

残念ながら、キーボードやマウスなどのBluetoothデバイスとペアリングできません。

# 関連アプリのアンインストール

1.  「インテル(R) ワイヤレス Bluetooth(R)」をアンインストール
1. Windows10のデバイスマネージャーにて「不明なUSBデバイス(デバイス記述子要求の失敗)」を右クリックして「デバイスのアンインストール」を実行

# BIOSで無効有効にして解決

わたしの環境では、`restart2UEFI`というアプリが入っていたのでそれを使った。そういうアプリがない場合でも再起動＋F2などのキーを乱打すれば入れます。

```
BIOS設定画面 -> Advanced -> Devices -> 
Onboard Devices -> Bluetoothを無効にする。
```

UEFIですが、わたくしの環境ではマウスアクションでいけました。ここでWindowsを起動してください。

そのあと、もう一度UEFI画面に入ってください。二度手間ですが、ここをサボると直りません。

```
Advanced -> Devices -> Onboard Devices -> Bluetoothを有効にする
```

# 再インストール

Bluetoothアダプタのドライバーを再インストール. Windows OS がautomatically にやってくれます

# 参考文献および謝辞

[不明なUSBデバイス状態のBluetoothをBIOSで無効有効](https://blog.onk164.net/archives/5955.html)

このブログをかいてくれた人 ありがとう！！！
【2023年06月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション

# はじめに

Ubuntu22.04 上で構築する DRBD によるストレージレプリケーションの記事をまとめています。

# まとめ

[【2023年06月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション 構築編](https://qiita.com/nouernet/items/52eb00f766fae0f579ca)
[【2023年06月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション 構築（論理ディスク）編](https://qiita.com/nouernet/items/c6cb6540884c275bbdb3)
[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション 動作確認編](https://qiita.com/nouernet/items/2c0d1743711a190039ba)
[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション ステータス編](https://qiita.com/nouernet/items/b066dfdc72481c5b8e7c)
[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション 設定編](https://qiita.com/nouernet/items/b579bd501b060f9ad14e)
[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション デバイス追加編](https://qiita.com/nouernet/items/45eebb995f052b56920a)
[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション ホスト追加編](https://qiita.com/nouernet/items/cad20bc006a128ad3372)
[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション メッシュ構築編](https://qiita.com/nouernet/items/07e154f9b9fa618969a4)

# さいごに

かんたんでしたね
At most once、at least once、exactly once

### At most once
- メッセージは 1 回以上配信されない。
- メッセージが失われることはあっても、再配信されることはない。高いレベルで配信速度が速い。
- 使用例: メトリクスの監視など、少々のデータ損失は許容できるようなケース。

### At least once
- メッセージを複数回配信することを許容し、メッセージを失わない。
- 使用例: 同じメッセージが複数回配信される可能性があるため、ユーザーの観点からは理想的ではないが、データの重複が大きな問題でない、あるいはコンシューマー側で重複排除が可能なユースケースで、十分な効果を発揮する。例えば、各メッセージに一意キーがあれば、重複するデータをデータベースに書き込む際に、メッセージを拒否することができる。

### Exactly once
- 最も実装が難しい。ユーザーには優しいが、システムの性能と複雑さにコストがかかる。
- 使用例: 金融関連のユースケース（決済、取引、会計など）。重複が許されず、下流のサービスやサードパーティがidempotencyをサポートしていない場合。


## 参考
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/9eb55c43-c9a7-2746-1488-0a86705670c3.png)

図引用: [At most once, at least once, exactly once - by Alex Xu](https://blog.bytebytego.com/p/at-most-once-at-least-once-exactly)
[エンタープライズのためのAkka 〜 Akkaで信頼できるメッセージを送る - Qiita](https://qiita.com/yugolf/items/fbbdd3eeb838f0eec2a2)
[Akka Actorのメッセージデリバリーの信頼性について - Qiita](https://qiita.com/sifue/items/3e4ffb845577d0caab02)

https://learn.microsoft.com/ja-jp/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared-contrasted#foundational-capabilities
CPUの高速化技術

### 1-05CPUの高速化技術

命令は，「①命令の取り出し，②命令の解読，③実効アドレス計算，④オペランドの取り出し，⑤命令の実行，⑥演算結果の格納」
逐次制御方式　1命令ずつ順番に繰返し実行する方式です。処理効率が悪い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293109/70a6ab5a-8a55-5f1c-1f12-1aec232cae4b.png)
パイプライン方式　複数の命令を1ステージずつずらしながら並行処理することで高速化を図る方式
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293109/223fe9e0-f7ab-10a1-80c3-ddd8090f966a.png)
スーパースカラ方式　複数のパイプラインを使用して，同時に複数の命令を実行することで，高速化を図る方式
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293109/4d4610da-cfbc-020a-21eb-790097245e10.png)
マルチコアプロセッサ　一つのCPU内に複数のコアを備えたもの
GPU　行列演算を用いて3Dの画像処理を高速に実行する画像処理装置
投機実行　分岐命令の分岐先が決まる前に、予測した分岐先の命令の実行を開始する

### 1-06　半導体メモリ
RAM　読み書きできるメモリ　　発揮性
ROM　読み出し専用のメモリだった　不発揮性

#### RAM
DRAM　コンデンサ、リフレッシュ必要　低速　主記憶
SRAM　フリップフロップ回路　リフレッシュ不要　高速　キャッシュメモリ

#### ROM
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293109/f3708ff4-3a5c-aa49-d64f-1ed036ae697b.png)

#### キャッシュメモリ（缓存存储器）
プロセッサと主記憶（RAM）の間に配置され、よくアクセスされるデータを一時的に保持、アクセス高速化を図る

#### ヒット率　アクセスするデータがキャッシュメモリに存在する確率
実効アクセス時間　
キャッシュメモリのアクセス時間×ヒット率＋主記憶のアクセス時間×（1－ヒット率）

＊ ヒット率 ：70％
＊ キャッシュメモリのアクセス時間 ：10ナノ秒
＊ 主記憶装置のアクセス時間 ：60ナノ秒

で計算すると、10*0.7+60*（1-0.7）＝25ｓ


#### ライトスルー方式とライトバック方式
ライトスルー方式 
キャッシュメモリと主記憶の両方を書き込む方式
常にキャッシュメモリと主記憶の内容が一致するため，一貫性が保たれる。主記憶へのアクセスが頻繁に発生するため低速

ライトバック方式
キャッシュメモリだけ書き込み，主記憶にはデータがキャッシュメモリから追い出されるときに書き込む方式。キャッシュメモリと主記憶の内容が一致しないため，一貫性を保つための制御が複雑になる。主記憶へのアクセスが減るため高速

#### メモリインタリーブ
内存交错（Memory Interleaving）主記憶装置を複数の区画（バンク）に分け，連続するアドレスの内容を並列アクセスすることで，アクセスの高速化を図る方式

アクセス速度と容量
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293109/02d85e14-52ea-13ee-7e3e-0f0491b1ef47.png)
Azure CLI でS2P 設定する方法

公式にはPowershell の方法しか書いてないように見えたので、Azure CLIの場合を書いてみました。

公式はこちら：
https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-point-to-site-rm-ps

実行環境はWindows 内WSL です。

# Login and Subscription setting
```az login
az account show -o table
az account set --subscription "Pay-As-You-Go"
az account show -o table
```
# Declare variables
```VNetName="VNet1"
FESubName="FrontEnd"
GWSubName="GatewaySubnet"
VNetPrefix="10.1.0.0/16"
FESubPrefix="10.1.0.0/24"
GWSubPrefix="10.1.255.0/27"
VPNClientAddressPool="172.16.201.0/24"
RG="TestRG1"
Location="EastUS"
GWName="VNet1GW"
GWIPName="VNet1GWpip"
GWIPconfName="gwipconf"
DNS="10.2.1.4"
```
# Create Vnet and vnet-gateway
```az group create --name $RG --location $Location
az network vnet create --name $VNetName --resource-group $RG --location $Location --address-prefixes $VNetPrefix --dns-servers $DNS
az network vnet subnet create --name $FESubName --resource-group $RG --vnet-name $VNetName --address-prefixes $FESubPrefix
az network vnet subnet create --name $GWSubName --resource-group $RG --vnet-name $VNetName --address-prefixes $GWSubPrefix
az network vnet show --resource-group $RG -n $VNetName -o table
az network vnet subnet list --resource-group $RG --vnet-name $VNetName -o table
pip=$(az network public-ip create --name $GWIPName --resource-group $RG --location $Location --allocation-method Dynamic)
az network vnet-gateway create -g $RG -n $GWName --public-ip-address $GWIPName --vnet $VNetName --gateway-type Vpn --sku VpnGw1 --vpn-type RouteBased
az network vnet-gateway show -g $RG -n $GWName -o table
az network vnet-gateway update --resource-group $RG --name $GWName --address-prefix $VPNClientAddressPool
```
# Certification

azure cli の記述見つけられず。。Powershell 以外の方法があれば教えてください。
ひとまずPowershell で結局作業し回避。
https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-point-to-site-rm-ps#upload

# Generate VPN setting

```
az network vnet-gateway vpn-client generate --resource-group $RG --name $GWName --authentication-method "EapTls"
```
あとは上記コマンドで出力されるzip ファイルを展開して、config ファイルからAzure VPN cient でVPN接続すれば完了です。

# Conclusion
背景としては検証環境をたまに使いたいけれども余分なコストを発生したくないので、利用したいときのみVPN Gatewayを作成する仕組みを作っておきたいということからでした。
bash 化したので、これを実行するボタンを作成しておき、特定ユーザが利用したいときに検証環境を立ててそれにアクセスするというのができれば良いかなと思っています。
下記にbash はまとめてあります。
https://github.com/tetsu-m7/azure_setting/blob/main/create_s2pvpn.sh


# Reference:
https://babarmunir.wordpress.com/2018/12/29/configure-point-to-site-p2s-vpn-using-azure-cli/
Microsoft::WRL::ComPtrで起きるメモリーリークの原因 ( 実体験のみ )

:::note warn
初めての投稿です、稚拙な文章ですがご容赦ください。
まだプログラミング初心者ですので、間違いがあればご指摘いただきたいです。
:::
VisualStudioでゲーム制作をしていて、シェーダー周りのプログラミングをしている人は一度は下の画像ような状況になったことがあると思います。

↓これはComPtrでメモリーリークが起きた際の出力ログです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005854/3b249eeb-12f8-62fa-2ecc-3b656a2a0ae4.png)
ComPtrとは、ShaderResourceViewなどを扱う用のunique_ptrみたいな物です。
こういったComPtrのメモリーリークはエラーは出ないわ、出力ログにヒントは出ないわで特定が難しいですよね。

そういうことで、もし今後ComPtrでメモリーリークが起きた際にどういった原因が考えられるのか
自分用にメモしていきたいと思います。

# 1.生成(登録)の上書き
同じComPtrオブジェクトに複数回 生成している
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005854/e9bc577c-e2b5-a1b3-f494-e68da45aad2d.png)
同じオブジェクトに複数回生成する場合は~~生成する前にRelease()しておかないといけない。~~
以下の画像の様に、ComPtrのAttachメソッドを使う必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005854/5c5a48dc-cc9d-c0ea-5f56-8797c2338d99.png)


# 2.デストラクタの書き忘れ
クラスにメンバ変数としてComPtrを持たせている場合、デストラクタを定義しておかないとメモリーリークが発生する(何故かはわからない)。

# 
今のところ私が遭遇した原因は以上です。(2個しか書けず申し訳ないです)
また新しい原因に遭遇したら追加していきたいと思います。
(メモリーリークに遭遇しないように気を付けます)
WSL2 + Ubuntu20.04における bundle install時のSSL認証エラー解消法

WSL2上でUbuntu20.04を用いてRubyのプロジェクトを進めていたところ、bundle installを実行した際に以下のSSL認証エラーが発生しました。

```
username@hostname:~/environment/development/sample-app$ bundle install
Fetching gem metadata from https://rubygems.org/..
Could not verify the SSL certificate for https://rubygems.org/quick/Marshal.4.8/rails-0.8.0.gemspec.rz.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification. For information about OpenSSL certificates, see
https://railsapps.github.io/openssl-certificate-verify-failed.html.

```

この問題を解決するために以下の4つのコマンドを実行しました。

# パッケージリストの更新
まず最初にシステムのパッケージリストを最新のものに更新します。
```
sudo apt-get update
```

# システムのアップグレード
次にシステム内の全てのパッケージを最新のものにアップグレードします。
```
sudo apt-get upgrade -y
```

# CA証明書のインストール
次にCA証明書をシステムにインストールします。これによりWebサイトからの安全なデータの送受信を保証します。
```
sudo apt-get install ca-certificates
```

# CA証明書の更新
最後にシステム内のCA証明書を最新のものに更新します。
```
sudo update-ca-certificates
```
【Git】特定のファイルを管理対象から除外する方法

## ファイルを残して除外

次のコマンドを実行するとファイルを削除せずGitの管理から除外できます。

```terminal
$ git rm --cached path/to/file
```


## ファイルごと削除

次のように実行するとファイルごと削除できます。

```terminal
$ git rm path/to/file
```
NMCLIで、ルーティングテーブルの確認と追加

# 概要
サーバを構築して、うまく疎通ができない！というときは、まずはファイアウォールとルーティングを確認しよう。ルーティングを確認する際の手順。

以下コマンドで、どういうルーティングになっているかを確認できる。
```
ip route
```
出力結果

```
default via 192.168.160.1 dev br160 proto static metric 427
10.0.0.0/8 via 10.25.255.254 dev eno3.4001 proto static metric 410
10.25.0.0/16 dev eno3.4001 proto kernel scope link src 10.25.2.6 metric 410
192.168.160.0/24 dev br160 proto kernel scope link src 192.168.160.109 metric 427
```
default via となっているのが、そのサーバのデフォルトゲートウェイ。下の行に当てはまらないNW帯への通信は、ここで指定されているゲートウェイを使って通信しようとする。ここでは192.168.160.1。

見方はこんな感じ。
```
default via（デフォルトは） 192.168.160.1（ここのアドレスに） dev br160（デバイスbr160を通して通信）
```
また、目的の通信が、想定した通りのNICを通して通信しているか確認するには、以下コマンドを用いて確認する。
```
ip route get IPアドレス
```
実行結果はこんな感じ
```
8.8.8.8 via 192.168.160.1 dev br160 src 192.168.160.109 uid 30029
    cache
```
これは、
1. 8.8.8.8（送信先のIP）に、
1. 192.168.160.1を経由して、
1. デバイスbr160を通して,
1. 192.168.160.109(コマンドを実行した送信元サーバのIP)
を通して疎通を図ったという事。

これが、想定していないインターフェースに付いたアドレスを使おうとしていたら、ルーティングがうまくいっていない。

ルーティングを設定するには以下コマンド

```
nmcli c mod インターフェース名 +ipv4.routes "NW帯 GWのアドレス"
```
コマンド実行例
```
sudo nmcli c mod enp1s0f1 +ipv4.routes "10.0.0.0/8 10.14.255.254"
```
これが実行できたら、インターフェースをupさせて反映する。
```
sudo nmcli c up enp1s0f1
```
これでもう一度ip route を実行すると、ルーティングが追加されている。


# 参考

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/sec-configuring_static_routes_using_nmcli#:~:text=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E6%97%A2%E5%AD%98%E3%81%AE%E3%82%A4%E3%83%BC%E3%82%B5%E3%83%8D%E3%83%83%E3%83%88%E6%8E%A5%E7%B6%9A%E3%81%AB%E9%9D%99%E7%9A%84%E3%83%AB%E3%83%BC%E3%83%88%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20~%5D%23%20nmcli%20connection,modify%20enp1s0%20%2Bipv4.routes%20%22192.168.122.0%2F24%2010.10.10.1%22
The instance profile aws-elasticbeanstalk-ec2-role associated with the environment does not exist.

ElasticBeanstalkで環境の作成時に上記エラーで失敗したときの対処法。

# 発生したエラー
上記の`The instance profile aws-elasticbeanstalk-ec2-role associated with the environment does not exist.`というメッセージが表示され失敗した。
![スクリーンショット 2023-05-31 0.50.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675878/f69cc3f8-cbcb-40bd-ff0b-32e590c50547.png)

# 対処
`aws-elasticbeanstalk-ec2-role`というインスタンスプロファイルがないと怒られているので作成する。
下記ページの`インスタンスプロファイルの作成`を参考に、`AWSElasticBeanstalkWebTier`, `AWSElasticBeanstalkWorkerTier`, `AWSElasticBeanstalkMulticontainerDocker`というポリシーを付与する。

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html#iam-instanceprofile-create

再度やり直してみたところ、環境の作成に成功した。
c++でshared_ptrのクラス内宣言時初期化にはmake_sharedを使おう


c++のshared_ptrはコンストラクタでポインタを受け取って初期化できます。
(ref: https://cpprefjp.github.io/reference/memory/shared_ptr/op_constructor.html)
なので、例えば```new int(3)```を渡すことで、値が3で初期化されたintのshared_ptrを生成できます。


```c++
#include<iostream>
#include<memory>

int main(void){
  std::shared_ptr<int> hoge(new int(3));

  std::cout << *hoge << std::endl;
  return 0;
}
```

```sh
3
```

しかし、クラス内変数をこの方法で初期化しようとするとエラーが起きます。
（以下はg++の場合）

```c++
#include<iostream>
#include<memory>

class H{
  private:
    std::shared_ptr<int> hoge(new int(3));
  public:
    H(void){
      std::cout << *hoge << std::endl;
      return;
    };
};

int main(void){
  H h;

  return 0;
}
```

```sh
test11.cpp:6:31: error: expected identifier before ‘new’
     std::shared_ptr<int> hoge(new int(3));
                               ^~~
test11.cpp:6:31: error: expected ‘,’ or ‘...’ before ‘new’
test11.cpp: In constructor ‘H::H()’:
test11.cpp:9:21: error: invalid use of member function ‘std::shared_ptr<int> H::hoge(int)’ (did you forget the ‘()’ ?)
       std::cout << *hoge << std::endl;
                     ^~~~
```

どうやらshared_ptrを返す関数の宣言とみなされてるようです。
なので、make_sharedを使って初期化しましょう。

```c++
#include<iostream>
#include<memory>

class H{
  private:
    std::shared_ptr<int> hoge = std::make_shared<int>(3);
  public:
    H(void){
      std::cout << *hoge << std::endl;
      return;
    };
};

int main(void){
  H h;

  return 0;
}
```

```
3
```
ChatGPT-4に訊いた「単項式と多項式」

学校教育数学の問題児、「単項式と多項式」にぶち当たっている生徒を訳あって見掛けたので、個人的にChatGPT-4に訊いてみた。

## 環境

* 環境：ChatGPT Plus
* 日付：2023-05-30

## やり取り

自分「多項式とは何ですか？」

GPT-4「多項式は数学における一種の表現形式で、変数、係数、指数を使用します。基本的な形は次のようになります：

a_n * x^n + a_(n-1) * x^(n-1) + ... + a_2 * x^2 + a_1 * x + a_0 

ここで、a_n, a_(n-1), ..., a_2, a_1, a_0 は係数（実数または複素数）、x は変数、n は自然数の指数です。多項式の次数は最高次の指数として定義されます。例えば、2x^2 + 3x + 1 は次数2の多項式です。」

自分「単項式は多項式の一つですか？それとも相反する概念ですか？」

GPT-4「単項式は多項式の一種であり、名前の通り一つの項だけから構成されます。つまり、単項式は形式が a_n * x^n のような式です。ここで、a_n は係数（実数または複素数）、x は変数、n は自然数の指数です。

一方、多項式は一つ以上の項が加算または減算によって組み合わさって構成されるため、単項式は多項式の一部または特殊なケースと見ることができます。例えば、2x^2 + 3x + 1 の多項式は三つの単項式（2x^2、3x、1）から構成されています。

したがって、単項式と多項式は相反する概念ではなく、むしろ単項式は多項式の特殊な形を示すものです。」

自分「日本の学校教育において、

単項式とは項が一つの式
多項式とは項が二つ以上の式

と定義されています。あなたから見てこの定義には問題がありますか？」

GPT-4「その定義には基本的に問題はありません。実際、それは一般的な解釈に非常によく一致しています。ただし、一部の文脈では、"多項式"は一つ以上の項を持つと定義され、したがって単項式も多項式の特殊なケースと見なされます。このように、単項式と多項式の定義は、教える文脈や数学の分野により、少し異なる場合があります。

しかし、日本の学校教育において述べられたような定義は、学生がこれらの概念を理解する上で非常に有用であり、単項式と多項式を区別するための良い方法を提供しています。」

自分「抽象代数学において、多項式全体の集合は環であると見なす手法が主流だと思います。これは、単項式が多項式の特殊ケースだと思って、

(多項式)-(多項式)=(単項式)

となるときでも多項式全体の集合が加算について閉じていると言えるようにするためだと考えました。

私が先にお伝えした日本の学校教育での定義は多項式環など高度な数学への理解を阻害しませんか？」

GPT-4「ご指摘の通り、抽象代数学では多項式全体の集合を環として扱います。ここで、環は加算、減算、乗算について閉じているという性質を持つ数学的な構造です。

日本の学校教育での定義（単項式は項が一つ、多項式は項が二つ以上の式）は、初等的な数学のレベルでは非常に有用です。しかし、より高度な数学を学ぶ際には、単項式も一種の多項式として扱うべきであるという観点から見れば、それはやや混乱を招く可能性があります。

しかし、その定義が直接高度な数学への理解を阻害するわけではありません。むしろ、学生がより高度な概念を理解するためには、その定義を拡張または調整する必要があることを理解することが重要です。これは数学の多くの分野で一般的な状況で、より深い理解に進むにつれて、初期の概念が拡張、精緻化、または再解釈されることがよくあります。」

自分「なるほど。ありがとうございます。」

GPT-4「どういたしまして！何か他に質問があればいつでもお聞きください。数学についての議論はいつでも楽しいですね。」

## 所見

メジャーな数学的対象の定義は知っているみたいだけど妙にこっちに迎合的でChatGPT側の立ち位置がふらふらしているように見える……。

## 参考文献（Wikipediaを載せるのはアレだけど）

https://ja.wikipedia.org/wiki/%E5%A4%9A%E9%A0%85%E5%BC%8F%E7%92%B0
WSL　コマンド


WSL（Windows Subsystem for Linux）を使用すると、Windows上でLinuxコマンドを実行できる


## WSLの起動

```
wsl
```
デフォルトのWSLディストリビューションが起動

## WSLディストリビューションの一覧表示

```css
wsl --list
```
インストールされているWSLディストリビューションの一覧が表示される

## 特定のWSLディストリビューションの起動

```css
wsl --distribution <ディストリビューション名>
```
指定したWSLディストリビューションが起動

## WSLディストリビューションの追加

```css
wsl --install
```
WSLディストリビューションを追加できる
このコマンドは管理者権限が必要

## WSLディストリビューションの削除

```css
wsl --unregister <ディストリビューション名>
```
指定したWSLディストリビューションが削除される
いい感じのWindows Terminal環境を作ってみる

Windows Terminalは、2020年の春頃Microsoftから公開されたターミナルソフトです。
かつてのコマンドプロンプトやPowershellの標準ターミナルとは機能も見た目も大幅強化されました。
今回はそのWimdows Terminalを更に使いやすくしてみます。


## oh-my-posh
oh-my-poshはざっくり言えばターミナルをいい感じにするソフトです。
今回はPowershell Coreにインストールします。

Powershellからサッとインストールできます。
```powershell
winget install JanDeDobbeleer.OhMyPosh -s winget
```

インストールしただけではターミナルで使えないので、$PROFILEで初期化させます。
適当なエディタで開きます。notepadでもいいです。
```powershell
notepad $PROFILE
```
「そんなファイルないぞ」って言われたら作ってあげてください
```powershell
New-Item -Path $PROFILE -ItemType File -Force
```
プロファイルにoh-my-poshの初期化コマンドを書きます。
```powershell:Microsoft.PowerShell_profile.ps1
oh-my-posh init pwsh | Invoke-Expression
```
プロファイルを再読み込みします
```powershell
. $PROFILE
```

このままだと文字化けする（oh-my-poshは特殊なフォントを使っている）ので、フォントをインストールします。
この操作には管理者権限が必要です。
```powershell
oh-my-posh font install
```

Windows Terminalのフォントを変更します。
ここではデフォルトのフォント（すべてのシェルで適用）を変更します。
profiles.defaults.font.faceを"MesloLGM NF"に変更すればOKです。
```json
{
    "profiles":
    {
        "defaults":
        {
            "font":
            {
                "face": "MesloLGM NF"
            }
        }
    }
}
```

## もう少し見やすくしてみる
これはやってもやらなくてもいいと思いますが、私は各ターミナルの背景画像にそれぞれのロゴを表示させています。
視覚的にどのターミナルを使ってるかわかりやすいのと、単純にかっこいいからです。
背景色も変えておくといいです。

**cmd**
(もはや使うことはないのですが‥)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199145/c5d9be80-176f-640e-36c0-be3282b199ee.png)

**Windows Powershell**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199145/3be0ff0e-7e99-41f7-8356-8915cb89bcbb.png)

**Powershell Core**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199145/0e50fe1f-4813-e779-8aba-3c312cbd39a6.png)

**Ubuntu**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199145/bc59dfe8-fbfe-1828-21f8-3583d72302cf.png)


## まとめ
よいターミナルライフを！
cargo buildで「error: linker `link.exe` not found」をVisual Studioを使わずに解決

「scoop install rustup」でrustupをインストールして、cargo buildしたら以下のエラー
>error: linker `link.exe` not found
  |
  = note: program not found

調べてみると、Visual StudioのC++開発ツールをインストールすると解決するとのこと
だがとりあえずbuildしたいだけなので、Visual Studioをインストールするのはめんどくさい

# 解決方法
「scoop install rustup-gnu mingw」でGNU版のrustupをインストールする
　
参考にもあるようにrustupにはMSVC版とGNU版があり、「scoop install rustup」ではMSVC版がインストールされるためVisual Studioが必要になるらしい
　
# 参考
https://rust-lang.github.io/rustup/installation/windows.html
Music Kitの裏仕様

はじめに
---
Music kitを触っていて~~クソ仕様~~公式ドキュメントに書いてない仕様がいくつかあったので忘備録代わりに書き残していく。

アートワーク取得するためのURLが独自スキーマ
---
```swift
func url(
    width: Int,
    height: Int
) -> URL?
```
上記でアイテムのアートワークを取得できるURLを取得できるがURLのスキーマが
```
musickit://
```
とかいう独自スキーマになっていてswift内でのURLSessionじゃないと取得できない。
（React Nativeでアートワークを表示させようとさせたため、Swift側でViewに変換してRNに返す羽目になった）

有効回数一回だけのURLが混じる
---
上のやり方でアートワークを取得してみたら独自に作成したプレイリストのアートワークだけ最初の一回しかリクエストさせてくれなかった。
```
musicKit://artwork/transient
```
上のようなURLになっていて如何にも一回しかリクエストできないURLである。
プレイリストにアートワークを手動で設定した場合は何回でも取得できるURKが返ってきたため、アートワークを設定しない自動生成画像が設定されている場合のみこうなるようだ。

プレイリストだけartworkでnilを返さない
---
曲やアルバムのアートワークを取得する時、アートワークが設定されていない場合はシンプルにnilを返すが、プレイリストはnilを返さず無色透明の画像データが入ったartworkを返す。
資格取得に向けてCCNAについて知る

現在ネットワークエンジニアとして、案件に携わっています。自身のスキルアップと業務に関わることのできる幅を広めるために、CCNAという資格取得を目指しています。今回CCNAという資格があることを初めて知ったので、調べてまとめました。


<h3>CCNAとは</h3>

![2560px-Cisco_logo（大）（中）.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/7915b8c7-0dd6-e2a8-106d-c5b843c18675.jpeg)

CCNA（Cisco Certified Network Associate）は、ネットワークエンジニアやネットワーク管理者のための重要な資格です。ネットワークは、コンピューターやスマートフォンなどのデバイス同士がつながって情報をやり取りする仕組みです。CCNAを取得するためには、IPアドレス、ルーター、スイッチ、インターネット、セキュリティなどの基本的なトピックを学ぶ必要があります。

IPアドレスは、ネットワーク上のデバイスを識別するための番号です。ルーターは、ネットワーク上でデータを転送する役割を担っています。スイッチは、ネットワーク上のデバイス同士をつなげるための装置です。インターネットは、世界中のネットワークがつながっている大きなネットワークであり、さまざまな情報にアクセスすることができます。セキュリティは、ネットワーク上の情報を守るための対策です。

CCNAの取得には、Ciscoが定める試験に合格する必要があります。CCNA資格を持つことで、ネットワークエンジニアやネットワーク管理者としてのスキルと知識を証明することができます。さらに、より専門知識を求められるCCNPなどの上位資格もあります。

ネットワークは、現代社会において非常に重要な役割を果たしています。インターネットやクラウドサービスの普及により、デバイス同士がつながり、情報がやり取りされることがますます増えています。そのため、ネットワークの知識とスキルを持つことは、IT業界でのキャリアの発展において非常に重要です。

CCNAは、ネットワークの基本的な概念と技術を習得するためのスタート地点です、ネットワークの仕組みやデバイスの動作原理を理解し、問題解決能力やネットワーク設計のスキルを身につけることができます。

<h3>年齢不問の資格</h3>

CCNAの取得は年齢に関係なく誰にでも可能です。
ネットワークは、年齢に関係なく誰にでも学ぶことができます。実際、CCNA資格を取得するには特別な年齢制限はなく、5歳からでもネットワークの基本的な概念を理解し、CCNAのトピックを学ぶことは可能です。

世界最年少のCCNA取得者はインド在住11歳の少女だそうです。ちなみにその少女は3歳時点で、世界最高のIQに認定されているそうです。

参考書等で学習するのも良いですが、実際にネットワークに触れることで創造性を発揮し、問題解決能力を高めることができます。例えば、親しんでいるゲームやアプリケーションがどのようにインターネットを通じて動作しているのかを理解し、自分自身で新しいものを作り出すことも可能です。

実際に機器を使って学習しようとすると、機器自体の値段がすごく高いのでCisco社が提供しているサービスのCisco Packet Tracerを使用することでPC一台で実戦環境を用意することができます。学習を進めながらこのツールを使用してさらに知識を定着させたいと思います。

<h3>まとめ</h3>

CCNAの取得は、将来のITキャリアにおいて重要なステップです。ネットワークエンジニアやネットワーク管理者としてのキャリアを追求するだけでなく、情報技術に関する幅広い知識を身につけることができます。さらに、ネットワークの基礎を理解することは、現代社会でのデジタルリテラシーの重要な要素でもあります。

ネットワークは私たちの日常生活においてますます重要になっています。そのため、CCNAのトピックを通じて子供たちがネットワークの仕組みや原理を理解し、将来の可能性を広げることができるようになるでしょう。そして、彼ら自身が未来の技術の発展に貢献することも期待されています。

今後、業務の幅を広げるためにも実践ベースで知識を深めるために資格取得にも注力していきたいと思います。


***

<h3>『補足』</h3>


<h3>Cisco Packet Tracerとは</h3>

![packet000（中）.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/5569508e-66de-675f-c878-6e4b9e01b156.jpeg)

​​Cisco Packet Tracerは、Ciscoが開発したネットワーキングシミュレーションツールです。ネットワークエンジニアや学生がネットワークの設計、構築、トラブルシューティングを学ぶために使用されています。
Packet Tracerは、仮想的なネットワーク環境を作成し、さまざまなネットワーキングデバイス（ルーター、スイッチ、サーバーなど）を接続することができます。これらのデバイスを操作して設定や接続を行うことができます。
Packet Tracerは、実際のネットワーク環境を再現することで、ネットワークの動作やトラフィックフローを可視化することができます。また、トラブルシューティングの練習やネットワークの設計の実験など、実践的なスキルを習得するのに役立ちます。
さらに、Packet Tracerは教育機関やトレーニングプログラムで広く利用されており、Ciscoの認定資格試験の準備にも役立ちます。ユーザーは、Packet Tracerを使用してネットワークのシナリオを作成し、実際の環境での経験に近い形で問題を解決することができます。
Packet Tracerはインターフェースが使いやすく、初心者から上級者まで幅広いユーザーに対応しています。また、機能の追加やアップデートが定期的に行われ、最新のネットワーキングテクノロジーに対応しています。
総合的に言えば、Cisco Packet Tracerはネットワークエンジニアリングの学習や訓練において重要な役割を果たすツールであり、ネットワークの概念やスキルを実践的かつ効果的に習得するための有用なリソースです。
[AWS Q&A 365][SNS]AWSのよくある問題の毎日5選 #71

# 1. Amazon SNSのトピックにメッセージを公開する手順は何ですか？
答え：Amazon SNSのトピックにメッセージを公開する手順は以下のとおりです：
ステップ1：トピックを作成する
ステップ2：そのトピックへのサブスクリプションを作成する
ステップ3：トピックにメッセージを公開する
ステップ4：サブスクリプションとトピックを削除する

# 2. AWSマネジメントコンソールを使用してトピックにメッセージを公開する方法は？
答え：AWSマネジメントコンソールを使用してトピックにメッセージを公開するには、トピックを選択し、「メッセージを公開」ボタンをクリックし、メッセージボディフィールドにメッセージを入力し、「メッセージを公開」ボタンをクリックする必要があります。

# 3. AWS SDKを使用してトピックにメッセージを公開する方法は？
答え：AWS SDKを使用してトピックにメッセージを公開するには、使用しているプログラミング言語のAmazon SNS SDKの「Publish」APIを使用する必要があります。APIへの入力パラメータとしてトピックARNとメッセージペイロードを提供する必要があります。

# 4. Amazon SNSのトピックに公開できるメッセージペイロードの最大サイズは何ですか？
答え：Amazon SNSのトピックに公開できるメッセージペイロードの最大サイズは256 KBです。

# 5. トピックへのサブスクリプションを作成せずにトピックにメッセージを公開できますか？
答え：はい、トピックへのサブスクリプションを作成せずにトピックにメッセージを公開することができます。ただし、トピックに少なくとも1つのアクティブなサブスクリプションがなければ、メッセージはエンドポイントに配信されません。