OmniAICreator/Qiita-1.07M huggingface dataset:
特殊なIPアドレス

# 勉強前の理解度
**デフォルトルート**：知らない
**ループバックアドレス**：自分を指すIPアドレス
**リンクローカルアドレス**：DHCPでうまくIPアドレスを割り振れなかったときに設定されるIPアドレス

# デフォルトルート
　「0.0.0.0/0」と表記され、全てのIPアドレスにマッチするため、**ルータなどが経路表にないIPアドレスを処理するための経路**として利用される。
　(経路表にマッチするIPアドレスが複数ある場合、一致するビット列が長い方が選択される(最長一致)ため、少しでも一致するIPアドレスが経路表に存在する場合、デフォルトルートは選択されない)
　なお、転送先には隣接するルータやISP側のルータがよく指定される。

# ループバックアドレス
　「127.0.0.1」と表記される(※)。ホスト名はlocalhostで、**端末自身を表す**。外部に対して公開している機能を端末自身でアクセスしたい場合などに用いる。そのため、ループバックアドレスに対して通信を行ってもパケットは端末内で折り返し、ネットワーク上を通過しない。

※ループバックアドレスのアドレス空間は127.0.0.0/8だが、一般には127.0.0.1が用いられる。

# リンクローカルアドレス
　アドレス空間は「169.254.0.0/16」で、**DHCPによってIPアドレスを割り振ることができなかった場合に、コンピュータが自身に割り振るIPアドレス**である。プライベートIPアドレスと同様同じデータリンク内でのみ有効であるため、リンクローカルアドレスはルーターに転送されない。

### APIPA(Automatic Private IP Addressing)
　コンピュータが自身にリンクローカルアドレスを割り当てる方法。「169.254/16」のアドレス空間からランダムにIPアドレスを決定し、ARPによってデータリンク内に同じIPアドレスが存在しないことを確認する。(使用中のIPアドレスで合った場合、IPアドレスを変更して処理を繰り返す)


# 参考
[デフォルトルート（ラストリゾート）とは - 意味をわかりやすく - IT用語辞典 e-Words](https://e-words.jp/w/%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%83%AB%E3%83%BC%E3%83%88.html)
[マスタリングTCP/IP](https://www.ohmsha.co.jp/tbc/text_series_0201.htm)
[リンクローカルアドレス - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%B3%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9)
paiza.ioでelixir その15

# 概要
paiza.ioでelixirやってみた。
ニューラルネットワークやってみた。
xorを推定してみた。

# 準備

tensorflow.jsでxorを学習して、ウェイトとバイアスを取り出した。
活性化関数は、tanhとsigmoid


```
w10 = [-3.4681022, 0.379121, -1.4711456, 2.2247136, 2.3135107, 2.7624693, -1.83576, -1.1545312]
w11 = [2.1978209, 0.2895245, 2.0881913, -1.3450832, -1.4154571, 1.9255028, 3.2867477, 1.956522]
b1 = [-0.6591252, 0.3864409, 0.4982838, 0.3707547, 0.3982254, -0.3612466, 0.4284867, 0.2701645]
w2 = [1.4324994, 0.7911373, -2.3011343, -1.7614117, -2.4442003, 3.9701838, -1.837263, -1.3641325]
b2 = 0.9285715
```

# 真理値表 xor

|in|in|out
|:--|:--|:--|
|0|0|0|
|0|1|1|
|1|0|1|
|1|1|0|

# サンプルコード

```
defmodule Nn do
	def mul(a, b) do
	    Enum.map(a, fn i -> 
    	    i * b 
        end)
	end
	def add(a, b) do
	    for x <- 0..7 do
		    Enum.at(a, x) + Enum.at(b, x)
	    end
	end
	def sum(a, b) do
	    for x <- 0..7 do
		    Enum.at(a, x) * Enum.at(b, x)
	    end
	    |> Enum.sum
	end
	def tanh(v) do
		Enum.map(v, fn i -> 
		    a = :math.exp(i)
            b = :math.exp(-1 * i)
            (a - b) / (a + b)
		end)
	end
	def sigmoid(a) do
		Enum.map(a, fn i -> 
		    (1 / (1 + :math.exp(-1 * i)))
		end)
	end
end

w10 = [-3.4681022, 0.379121, -1.4711456, 2.2247136, 2.3135107, 2.7624693, -1.83576, -1.1545312]
w11 = [2.1978209, 0.2895245, 2.0881913, -1.3450832, -1.4154571, 1.9255028, 3.2867477, 1.956522]
b1 = [-0.6591252, 0.3864409, 0.4982838, 0.3707547, 0.3982254, -0.3612466, 0.4284867, 0.2701645]
w2 = [1.4324994, 0.7911373, -2.3011343, -1.7614117, -2.4442003, 3.9701838, -1.837263, -1.3641325]
b2 = 0.9285715
for i <- 0..1, j <- 0..1 do
    h = Nn.mul(w10, i)
    l = Nn.mul(w11, j)
    h = Nn.add(h, l)
    h = Nn.add(h, b1)
    h = Nn.tanh(h)
    y = Nn.sum(h, w2)
    y = y + b2
    y = Nn.sigmoid([y])
    y = Enum.at(y, 0)
    IO.puts "#{i} #{j} #{y}"
end




```

# 実行結果

```
0 0 0.009060141614711496
0 1 0.9836318400047009
1 0 0.9831985157008993
1 1 0.015668832466682565
```

# 成果物

https://paiza.io/projects/oQYd5ApX7JT5lSGew6ex7Q?language=elixir

以上。
メソッドプレフィックスメモ

メソッドプレフィックスメモ

set系
安易にsetを使いたくないのでなんかないか？

| プレフィックス | 英語の意味 |
| --- | --- |
| setup | 設定 |
| setting | 設定 |
| put | 置く |
| input | 入力 |
| init | 初期化 |
| copy | コピー |
| create | 作成 |
| assign | 割当 |
| append | 追加 |
| calc | 計算 |
| add | 追加 |
| preferences | 環境設定 |
| preparation | 準備 |
| save | 保存 |
| store | 保存 |
| commit | コミット |
| is | 〇〇か？ |
| can | 〇〇できる？ |
| should | 〇〇すべきか？ |
| has | 〇〇もっている？ |
| needs | 〇〇が必要か？ |


get系
安易にgetを使いたくないのでなにかないか？

find
search
Azure Fundamentals(AZ-900)：Azure の基礎: Azure のアーキテクチャとサービスについて説明する「Azureの条件付きアクセス」

Microsoft Learnを用いたMicrosoft Azure Fundamentals(AZ-900)の試験内容をまとめる投稿です。
この投稿ではMicrosoft Learnで学ぶ内容をできるだけ簡潔にまとめております。
Azureの勉強を一から始める方の参考になれば幸いです。

## 今回の学習内容
**◆「Azureの条件付きアクセス」**
◇対応するMicrosoft Learn ラーニングパス
[Azure の基礎: Azure のアーキテクチャとサービスについて説明する](https://learn.microsoft.com/ja-jp/training/paths/azure-fundamentals-describe-azure-architecture-services/)
◇対応するモジュール
[Azure の条件付きアクセスについて説明する](https://learn.microsoft.com/ja-jp/training/modules/describe-azure-identity-access-security/5-conditional-access)

※前回の投稿は下記から確認できます。
[Azure Fundamentals(AZ-900)：Azure の基礎: Azure のアーキテクチャとサービスについて説明する「Azureの外部ID」](https://qiita.com/fsd-jume/items/98670d565420bf9f70dc)

## Azureの条件付きアクセス
**IDの「シグナル」に基づいてリソースへのアクセスを「決定」し、「実施」する**

### シグナル → 決定 → 実施
**◆一般的なシグナル**
・特定のユーザ/グループ
・ユーザの場所(IPアドレス情報など)
・使用しているデバイス
・アクセス先のアプリ

**◆一般的な決定と実施**
・アクセス拒否
・アクセス許可(例：ユーザの場所のシグナル)
　-フルアクセスを許可(例：社内)
　-多要素認証(MFA)を追加で要求(例：社外)

### 条件付きアクセスの使用例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2851723/879255d9-b4ae-e9c7-8aaa-95821a86b81b.png)



## 次の学習内容
**◆Azureのロールベースのアクセス制御**

https://qiita.com/fsd-jume/items/d316d6b979d97c6fa6e3

## 学習内容をまとめたページの一覧

https://qiita.com/fsd-jume/items/e4ec76959adb547ac5e8
Modeler ServerでModeler Server上のファイルの読み書きする

SPSS ModelerクライアントでModeler Serverに接続して、ローカルファイルを読みます。


Modelerクライアントは初期状態ではModelerクライアント内のローカルサーバーに接続されています。そのため入出力するファイルはModelerクライアントの導入されているマシンから見えるファイルになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b1f48bbc-ebb6-39fc-f9f2-512a61295742.png)


Modeler Serverに接続すると、入出力するファイルはModeler Serverの導入されているマシンから見えるファイルになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/e93c0a94-1ec4-5b81-c629-e22271eba986.png)

# ModelerクライアントからModeler Serverに接続する

「サーバー：ローカルサーバー」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7877f76a-5c1c-989a-fe1e-b1686ee7d3be.png)

「追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1298fd71-8c2c-bb45-1b40-15820d92212a.png)

「サーバー」名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7d26e0eb-991f-2004-2464-6dcae02a80e0.png)

登録したサーバーを選択し、ユーザーIDとパスワードを入力して、「OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/77f5ec00-d3ff-7bbe-8ae5-6773a9c0fedd.png)

Modeler Serverに接続できるとサーバーの表示がユーザー名@サーバー名:ポート番号になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/156fc51a-a012-fbf1-2382-06da639eed59.png)

# Modeler Server上のファイルの参照する
入出力ファイルのパスはModeler Server上から見えるパスになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/e9f5ad80-25a4-39b9-a0cc-07b98a2c4f63.png)

このiris.csvというファイルはModelerクライアント上のファイルではなく、Modeler Server上のファイルになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/e1c32ea6-f6dc-b866-4c15-1306800770fa.png)


同じModeler Serverを利用するユーザーは同じファイルを参照することになります。

* テスト環境
    * Modeler 18.4
    * Windows 11 64bit
    * Modeler Server 18.4
    * Windows Server 2019 64bit
macのメモが消えた気がする時（初歩的）

## macのメモが全部消えた気がする
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731109/19ef6ef0-b2b9-14d9-4ff7-40ea4b44591f.png"/>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731109/a7100c0f-3c87-baaf-c6fe-f23ad8e72be1.png" width="500"/>

- このアプリの中のメモが全部消えた気がする...
- いつもなら横に伸ばせば一覧が左側に出てくるのに出てこない...

## 調べるとよく出てくること
「appleIDのアカウント変えちゃうと消えちゃうよー？メモをiCloudに入れておけばあるかもね」

...前から変えたことないし、このmacにメモ保存してた気がするからiCouldには上がってないな

## 答え

上のメニューバー > 表示 > フォルダを表示　
（ショートカット：Option + Command + s ）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731109/81a8f2c6-90a6-997e-14cc-fe117711644d.png" width="500"/>

よかった
【Blue Prism】コレクションから任意の列を抽出する方法

## はじめに
取得したコレクションの「これとこれとこの列だけ使いたいなぁ。ほしい列だけのコレクション作れないかな」となったことはありませんか？
本記事では「コレクションから任意の列を抽出する方法」をご紹介します。

(コレクションから必要な条件に一致するものを抽出したい方は[こちらの記事](https://qiita.com/Aberyuu/items/2dd73d6d5fd6d47c2a5f)が参考になるかと思います。)

## 「Utility - Collection Manipulation::Split Collection」を使用する
コレクションから任意の列を抽出するために「Utility - Collection Manipulation::Split Collection」を使用していきます。
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/8ae79357-a82c-e267-407d-0b1bad3d0e99.png)

「Utility - Collection Manipulation::Split Collection」を使用するとコレクションを異なる列に分割することができます。

## やり方
以下の実装の情報コレクションからフィールド1、フィールド3、フィールド5だけを抽出して新たなコレクションを作成したいと思います。

【実装】
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/beb41843-a929-5269-da51-c771a35f5d41.png)
【情報コレクション】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/1b9c1e56-8693-963b-9dbd-72ce9a0a4d17.png)

### 必要なコレクションを用意する
必要なコレクションは、
・メインコレクション(情報コレクション)
・メインコレクションから分割する列名が記載されているコレクション(分割コレクション)
・分割した列を保存するコレクション(保存コレクション)
になります。

### メインコレクションから分割する列名が記載されているコレクション(分割コレクション)の設定
今回はメインコレクションである情報コレクションからフィールド1、フィールド3、フィールド5を抽出したいので分割コレクションは以下のように設定します。
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/5278a262-bd83-f5b2-b11c-63c4206000a5.png)
予めフィールドを設定したコレクションは、データが少なくとも1行必要なので初期値タブをクリックし、右下の追加ボタンから行を追加しておきましょう。
これを忘れると「System Exception : Template collection cannot be empty」というエラーが発生して分割してくれなくなります。
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/9ab998a3-e6af-84c8-d4bc-2d59e6aa6acc.png)

### 分割した列を保存する保存コレクション
今回の実装では分割した列を保存するために「保存コレクション」という名前の空のコレクションを用意しています。
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/a8d433ea-9fa6-bc72-13ce-f1937a3a58f1.png)

### Utility - Collection Manipulation::Split Collectionの設定
続いて、Utility - Collection Manipulation::Split Collectionの設定を行います。
Collection1には、メインコレクションを設定します。(情報コレクション)
Collection2 Templateには、メインコレクションから分割する列名が記載されているコレクションを設定します。(分割コレクション)
Collection3 TemplateにもCollection2 Templateと同様に分割コレクションを設定します。入力が必須のパラメータであるためCollection2 Templateと同じコレクションを設定しています。設定していない場合、System Exception : Template collection cannot be emptyというエラーが発生します。
![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/a24fd778-95d3-1f7a-2eb7-9f0c4b8044d5.png)

次に「出力タブ」をクリックして、保存先の設定をします。
Collection2の保存先に「保存コレクション」を設定します。Collection3については、Collection2と同様の設定をしているため保存先を入力する必要はありません。
![画像7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/6cf85c2f-d6f6-179d-8408-f9bc0c293da5.png)

右下の「OKボタン」をクリックして、設定が完了になります。

### 実行
実行してきます。
実行が完了したら保存コレクションの中身を確認していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2820916/de1a1f3f-09ad-cff1-6648-5b6ea40cb68e.png)
情報コレクションからフィールド1、フィールド3、フィールド5の抽出ができました！


## まとめ
コレクションから任意の列だけを抽出し、空のコレクションに保存する方法を紹介してきました。
「Utility - Collection Manipulation::Split Collection」を使用することでメインコレクションの列を分割し、任意の列を抽出することができます。
今回はメインコレクションからフィールド1、3、5を抽出するのみだったためSplit Collectionの入力パラメータCollection2 Template、Collection3 Templateには同様の分割コレクションを設定しましたが、異なる名前のコレクションを設定することで複数のコレクションに任意の列を抽出することが可能です。
本記事が、ご参考になれば幸いです。
Azure App Serviceで'Cannot use the SKU Basic with File Change Audit for site'が出力した際の対処法

Azure App Service for Container(Linux)でPremiumプランからBasicプランに変更しようとしたときに出力したエラーです。
Azure App Serviceの診断設定ログでは、Premiumプラン以上でないと利用できないログの種類があります。

* [Report Antivirus Audit Logs] と [Site Content Change Audit Logs] が有効な状態では、Premium⇒Basicプランに変更することはできません

* Azure PortalのApp Service画面から、[診断設定]→[設定の編集]の順に選択し、[Report Antivirus Audit Logs] と [Site Content Change Audit Logs]を無効状態にして保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/76f4a764-8c88-2549-9a14-2ad046428efb.png)

* 本設定で'Cannot use the SKU Basic with File Change Audit for site'エラーは解消されました。

* Premiumレベル以上でのみ利用可能な診断ログのリストは[こちら](https://learn.microsoft.com/ja-JP/azure/app-service/troubleshoot-diagnostic-logs#supported-log-types)です。ファイル変更監査系のログがPremiumプラン以上でしか使えないようですね。

以上
PowerAutomate sharepointでExcelを新規作成する方法

# 手順
1. sharepointでBook.xlsxをアップロード、ファイルコンテンツを取得する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/a97113cf-0c06-7057-8f0e-fc0761444f58.png)

2. 取得したファイルコンテンツをコピー、sharepoint上のBook.xlsxを削除する
ファイルコンテンツを取得するActionも要らないので、削除する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/ae9a64ef-27c8-7f31-e18d-8c6db54dcd9e.png)

3. データ操作ACTIONを追加し、取得したファイルコンテンツをペーストする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/2ead830b-1b0e-5ce5-c8aa-80792f044bf6.png)

4. EXCELファイル名を入力し、データ操作ACTIONの内容はファイルコンテンツに入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/8a3e8cdb-3687-9ca5-3ac9-7214c1b19f22.png)

5. Excelファイルは作成されていることが確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/7d517791-a10b-bcbb-b622-223e5ba02597.png)

# 参考サイト
https://www.youtube.com/watch?v=RB_ySjhm9Sg&ab_channel=DamoBird365
ファクトリーボットにアクティブストレージを記述する。

　モデルの単体テストを行う場合、ファクトリーボットにテスト項目を載せるわけだが、アクティブストレージを使用した際にどうやってテストを行ったか書いておこうと思う。
① ![スクリーンショット 2022-10-27 13.03.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884270/67bf33d8-4c5a-137e-8395-28bdf7d66735.png)
こんな感じで、fixturesフォルダを手動で作成し、その下にfilesフォルダを作成する。
② filesフォルダに、なんでも良いのでtest_image.jpgという名前で画像を配置する。
③ Furima>specmodel>item_spec.rbに以下のように記述。
```ruby
RSpec.describe Item, type: :model do
  before do
    @item = FactoryBot.build(:item)
    @item.image = fixture_file_upload("/files/test_image.jpg")
  end
  describe '商品出品機能' do
    context 'できる時' do
      it '全て問題の無い状態であれば登録に成功する' do
        expect(@item).to be_valid
      end
    end
```
④ これで正常系のテストは通ったので、大丈夫だと思う。
⑤ あとは異常系テストをする

こんな感じ。
JP1/AJS3 WebConsole 超初心者が操作する前に知っておくべきこと

JP1/AJS3 WebConsole 初心者の私が最初に困った2点を記載します。
他の初心者の方がこれを読んで多少の時間の節約になれば幸いです。

### 1. ウィンドウの起動モードを確認する
起動モードによって、画面表示・操作が大きく異なります。
これを知らずに手順書を見たり、電話越しで指示を受けたりすると、指示している側と操作している側で食い違いが発生します。
起動モードの種類と確認/変更方法は、下記Link先を参照ください。
- [JP1/Automatic Job Management System 3 操作ガイド: JP1/AJS3 - View ウィンドウの起動モード](https://itpfdoc.hitachi.co.jp/manuals/3020/30203S0933/AJSV0021.HTM)

なお、起動モードの変更を反映するには、JP1/AJS3 WebConsoleを起動しなおす必要があります。

  
### 2. 最初に「機能メニュー」で目的の操作を選択する。
標準モードでの操作時の注意点です。
最初に左側のペインにある「機能メニュー」で目的の操作を選択する必要があります。
![2022_10_27_12_30_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104408/fc79ff25-667f-693c-38ae-09ad9af62b32.png)

例えば、機能メニューで「ジョブネット定義」を選択している状態では、「ジョブの実行登録/登録解除」はできません。

参考: [JP1/Automatic Job Management System 3 操作ガイド: 4.2.1 標準モード](https://itpfdoc.hitachi.co.jp/manuals/3020/30203S0933/AJSV0023.HTM#ID00072)

以上
ファクトリーボットにアクティブハッシュを設定する

　ファクトリーボットにアクティブハッシュを設定する場合どうしたらよいのかわからなかったので記録。
前提として、作成しているのはフリマアプリで、ユーザーモデルとアソシエーションを組んでいる。
　なのでファクトリーボットにもアソシエーションの記述を忘れずに。
　結論からいえば、ファクトリーボットにそのまま〜_idと書いてよいようだ。
ただし、{}の中身は1にすると---がでてしまうので、1以外で。
いつかはフェイカーをつかってもっと一般的に表せるようになりたい。

```ruby
FactoryBot.define do
  factory :item do
    product_name { "てすと" }
    product_description {'test'}
    price {1000}
    category_id {2}
    condition_id {2}
    contribution_id {2}
    prefecture_id {2}
    day_id {2}
   
    association :user 
  end
end
```
Engines fueled by natural gas, ボッシュ自動車handbook 11版(68) p.894

Gasoline-engine operation with alternative fuels, Engines fueled by natural gas , ボッシュ自動車handbook 11版(68)

人生で影響を受けた本100冊。
https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e

に掲載した本のうち、「新人プログラマ応援」企画で「私の推薦書３３冊」として３３冊紹介した。

新人プログラマ応援　私の推薦書３３冊
http://qiita.com/kaizen_nagoya/items/98c62f051dbdb4f8aca2
残りの６７冊から、順に過去の読書感想を引用し、新たな読書感想文を追記する。

 <この項は書きかけです。順次追記します。>


# ボッシュ自動車ハンドブック version 11, 2022

Automotive Handbook  May 2, 2022

https://www.amazon.co.jp/dp/1119911907/

ボッシュ自動車handbook(英語)11版(0)＜エンジニア夏休み企画>【読書感想文】

https://qiita.com/kaizen_nagoya/items/dfa35aa6f669e5df983e
# Contents
Motor vehicle, 28
Basic principles, 32
Mathematics and methods, 204
Materials, 258
Machine parts, 354
Joining and bonding techniques, 426
Vehicle physics, 462
Operating fluids, 538
Refrigerants for air-conditioning systems, 591
Drivetrain(駆動系), 594
Internal-combustion engines(内燃機関),642
Management for spark-ignition engines,800
Gasoline-engine operation with alternative fuels, 886
# Engines fueled by natural gas
p.894
## Applications 
## Design 
## Components 
# Reference
[1] https://www.erdgas.info/erdgas-mobil/
Zukunft Gas e. V.

[2] https://www.gas-tankstellen.de 

[3] https://www.autogastanken.de

[4]




# 自己参考資料(self reference)

ボッシュ自動車ハンドブック 

https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
ボッシュ自動車handbook(英語)10版　目次

https://qiita.com/kaizen_nagoya/items/57c799ff544c96efdea9

自動車工学とBosch Vehicle Handbook

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

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 　20221027

### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
####  Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
React ReduxのTypescriptテンプレートを使った開発について

# 目的
- Redux＋Typescriptのテンプレートの理解する
- Reduxのデザインパターンを確認し、コンポーネントを追加するときの開発の指針を立てる

# Redux＋Typescriptテンプレート概要
- Redux Toolkit と React Redux の React コンポーネントを統合したReactアプリのテンプレートで[Reduxの公式ドキュメント](https://redux.js.org/introduction/getting-started)で推奨されている
- 下記のコマンドでテンプレートをインストールできる
`npx create-react-app my-app --template redux-typescript`
- 参考：[Reduxのコンセプト・Dataflow](https://lethediana.sakura.ne.jp/tech/archives/summary-ja/1059/)

# テンプレートの構造
- ディレクトリ、ファイル構成（コーディングに関係なさそうなファイルは割愛）
```
├── src
│   ├── index.tsx     # Rootコンポーネントを呼び出す
│   ├── App.tsx       # Rootとなるコンポーネント
│   ├── <略>
│   ├── app                # アプリ全体で利用するオブジェクト、typeの定義
│   │   ├── hooks.ts       ## Hookのtype定義
│   │   └── store.ts       ## Hook（DispatchとSelector）のtype、RootStateの定義
│   └── features                 # 機能ごとのコンポーネント
│       └── counter              ## counter機能のコンポーネント
│           ├── counterSlice.ts  ### Slice stateとActionのtype定義
│           └── Counter.ts       ### コンポーネント本体
```
- ざっくり言うとappディレクトリ内のコードでRootStateを準備して、各featureごとにSliceを作り、RootStateを呼び出すような構造
- 各ファイルの詳細調査は下記参照
    - [index.tsx](https://lethediana.sakura.ne.jp/tech/archives/summary/1072/)
    - [App.tsx](https://lethediana.sakura.ne.jp/tech/archives/summary/1076/)
    - [app/hooks.ts](https://lethediana.sakura.ne.jp/tech/archives/summary/1091/)
    - [app/store.ts](https://lethediana.sakura.ne.jp/tech/archives/summary/1083/)
    - [features/counter/counterSlice.ts](https://lethediana.sakura.ne.jp/tech/archives/summary/1096/)
    - [features/counter/Counter.ts](https://lethediana.sakura.ne.jp/tech/archives/summary/1081/)

# コンポーネント追加時の流れ（案）
1. 追加したいページをどんなコンポーネント（機能）に分けるべきか検討
2. 各コンポーネントのフォルダをfeatures配下に作成
3. コンポーネント本体のファイルとSliceファイルを2.のフォルダに作成
4. 新しいコンポーネントで参照するstateのSelector、DispatchをSliceファイルに記述
    - 同期処理はreducerに
    - 非同期処理・ややこしい処理はextraReducerに（必要ならThunkActionを作成）
5. 4. をコンポーネント本体のファイルでimportして使う
AWSクラウドプラクティショナーに一か月で合格するためのロードマップ　

# AWSクラウドプラクティショナーに一か月で合格するためのロードマップ　

AWSクラウドプラクティショナーに業務未経験IT業界一年未満で挑戦しました。
仕事の合間の学習で約3週間でとれたので合格までの流れと資料を解説します。


## 事前知識
プログラミングスクールにて半年間勉強(HTML/CSS, Java Script, PHP(Laravel))
Web制作会社にて業務経験3か月未満(PHP)
Java Silver SE8所持
AWSは実務未経験
ポートフォリオ作成の際にS3のサービスを使用
基本的な環境構築はチュートリアルをみてハンズオンで実施済み

## 使った参考書
### 参考書
[AWS認定資格試験テキスト　AWS認定 クラウドプラクティショナー](https://www.amazon.co.jp/-/en/%E5%B1%B1%E4%B8%8B-%E5%85%89%E6%B4%8B-ebook/dp/B07QX45RXM/ref=sr_1_6?crid=5Z3UDP3R7W54&keywords=aws&qid=1666839674&qu=eyJxc2MiOiI2LjQzIiwicXNhIjoiNS43MiIsInFzcCI6IjUuNDgifQ%3D%3D&sprefix=aw%2Caps%2C177&sr=8-6)

基本的な主要サービスの解説が載っています。
ただし、これを網羅したとしても試験に合格するのは難しいです。
試験ではこの本に記載のないサービスに関しての設問もあるため問題集で捕捉する必要があります。

### 無料アプリ

[AWS認定 クラウドプラクティショナー模擬試験](https://apps.apple.com/jp/app/aws%E8%AA%8D%E5%AE%9A-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC%E6%A8%A1%E6%93%AC%E8%A9%A6%E9%A8%93/id1509436492)

[AWS Cloud Practitioner対策](https://apps.apple.com/jp/app/aws-cloud-practitioner%E5%AF%BE%E7%AD%96/id1626612527)

通勤中に使いました。

### 問題集

[AWSの公式無料試験](https://explore.skillbuilder.aws/)
本番を想定した問題が20問でます。


以下の問題集を使いました。
10回分の過去問と解説が載っています。
どちらもアマゾンのkindleアンリミテッドで読むことができます。

[AWS認定　クラウドプラクティショナー　模擬問題集](https://www.amazon.co.jp/-/en/%E5%B1%B1%E4%B8%8B-%E5%85%89%E6%B4%8B-ebook/dp/B07QX45RXM/ref=sr_1_6?crid=5Z3UDP3R7W54&keywords=aws&qid=1666839674&qu=eyJxc2MiOiI2LjQzIiwicXNhIjoiNS43MiIsInFzcCI6IjUuNDgifQ%3D%3D&sprefix=aw%2Caps%2C177&sr=8-6)

2回分の過去問と解説が載っています。

[AWS認定 クラウドプラクティショナー 模擬問題集 650問 （65問 × 10セット）キーフレーズ集付き クラウド認定試験模擬問題集シリーズ](https://www.amazon.co.jp/-/en/%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93%E7%A0%94%E7%A9%B6%E4%BC%9A-ebook/dp/B09QK1MDMM/ref=sr_1_3?crid=3F2LN7AH76O3&keywords=aws+%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC%E5%95%8F%E9%A1%8C%E9%9B%86&qid=1666839952&qu=eyJxc2MiOiIyLjMzIiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=aws+%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC%E5%95%8F%E9%A1%8C%E9%9B%86%2Caps%2C170&sr=8-3)


## 勉強の流れ

まずは参考書を二周ほどして基礎を固める。通勤時間でアプリの問題を解く（約15時間ほど）

↓

ひたすらkindleの過去問を解いていきます。（約20時間ほど）
過去問は一セットにつき一時間くらいでできるので試験が近くなったらひたすら解きます。
さまざまなサービスが出てくるので、わからないサービスは検索して概要を捕らえていく作業をひたすら行います。

トータルでは約40時間程度の勉強時間で合格しました。

## 結果
合格

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670485/68589fd8-2830-48fc-6648-13469c71de06.png)


試験は全体的に過去問に出てきたものが2/3ほどありました。あとは全く初めて見るサービスも2,3個ありましたが消去法で解いていきました。

## 感想
約三週間の期間で合格しました。
平日は通勤中（往復1時間）と家での1時間の学習
土日も予定がありましたが併せて2時間くらいの学習時間をとりました。

次はソリューションアーキテクトのアソシエイトを一か月で取得できるように挑戦していきます。
UbuntuにATOMをインストールする

# はじめに

今回はLinux環境でATOMのインストールを行ったので、わかりやすく書いていきたいと思います。
インストールしたいと思った動機は、なんとなく見た目がきれいだったからという理由です！！


# インストールファイルのダウンロード

以下のサイトから.debファイルをダウンロードします。
[ATOM](https://atom.io/)

端末に合わせたファイルが表示されるかと思うので、もしかしたら.debファイルではないかもしれません。
今回は.debファイルの場合のみ記載します。

> 補足：debファイルと.rpmファイルの違いを記載します
>> .deb
Debianから派生したLinuxディストリビューション(Ubuntu、Linux Mintなど)用のファイル
.rpm
Radhatベースのディストリビューション(Fedora、CentOS、RHEL)から派生したディストリビューションとopenSuSEディストリビューション用のファイル

# ATOMのインストール

ダウンロードが完了したら、以下のコマンドでパッケージをインストールします。

<font color=blue>$ sudo dpkg -i atom-amd64.deb</font>

これを行うことでインストールが始まります。

> 私はこの時"dpkgの依存関係の問題でインストールできません"というエラーが出てしまったのでその解消法についても記載しておきます。
>> 以下のコマンドで解消できました！（理由はわからないので、わかり次第編集します）
<font color=blue>$ sudo apt --fix-broken install</font>
これで追加のパッケージがインストールされて、無事にインストールされました

# ATOMの起動

以下のコマンドを入力することでATOMを立ち上げることができます。

<font color=blue>$ atom</font>

# ATOMの日本語設定

ATOMをインストールできたら日本語の設定をしていきます。
まず、<font color=blue>Help</font>タブから<font color=blue>Welcome Guide</font>を選択します。

![Screenshot from 2022-10-27 11-59-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949441/7f4c6871-1405-aa89-1b94-07548445c676.png)

スクロールしていき<font color=blue>install a Package</font>を選択します。
![Screenshot from 2022-10-27 11-59-53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949441/debacc9a-e1d2-db5d-af67-c23b9ccd11cb.png)


検索ボックスで<font color=blue>atom-i18n-beta</font>を入力し、インストールします。
> 今回は<font color=blue>atom-i18n-beta</font>をインストールしましたが、ほかにもソフトがあるようです。自分に合うものを使ってください。

![Screenshot from 2022-10-27 12-04-54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949441/a3d94d58-214f-8cb9-37ab-39e7ee42095e.png)

スクロールして<font color=blue>Language</font>のプルダウンメニューから<font color=blue>日本語ja</font>を選択します。

ATOMエディタが再起動し、日本語表示になります。


以上です。稚拙な文章で読みづらくてすみません。
GAE×Flaskでpip installに失敗する

## 事象
GitHubにコミットしたソースをCloud Buildを使用してGAEに自動デプロイする仕組みのFlask(Python)アプリケーションで数ヶ月前に更新した際は問題なくビルドできていたのに急にビルドエラーとなってしまいました。
※修正内容は設定変更のみ

## 原因
結論から言うと、Pythonのバージョン指定不足でした・・・
`app.yaml`ではバージョンを指定していたものの`cloudbuild.yaml`で指定したバージョンがインストールされるようです。

## 修正前の設定
```app.yaml
runtime: python310
env: standard
　 ：
（省略）
　 ：
```
ここではpythonのバージョンをしっかりと指定しています。


```cloudbuild.yaml
steps:
  - name: python
    entrypoint: pip
    args: ['install', '-r', 'requirements.txt', '--user']
　 ：
（省略）
　 ：
```
ここではpythonのバージョンは未指定です。

Cloud Buildのログを見てみると・・・
```
Step #0: Status: Downloaded newer image for python:latest
```
最新バージョンのpythonイメージをダウンロードしていました😱
あくまで`app.yaml`はアプリケーションの設定なので、ビルドの設定である`cloudbuild.yaml`でもしっかりとバージョン指定をしないといけないということですね。

## 修正後の設定
```cloudbuild.yaml
steps:
  - name: python:3.10
    entrypoint: pip
    args: ['install', '-r', 'requirements.txt', '--user']
　 ：
（省略）
　 ：
```
バージョンの指定方法は[こちら](https://cloud.google.com/build/docs/interacting-with-dockerhub-images?hl=ja)を参照

## 最後に
設定変えただけでビルド通らないとかどゆことー！とかなりハマってしまいました。。。
ちゃんとドキュメントは読まないとダメですね。
【pytorch】forループで作ったtensorを空のリストを作らずに結合

# 解決策
```Python:グラフ特徴量の計算を行う関数の一部
for i in range(num_nodes):
    ############省略############
    edge_idx, edge_att = coalesce(edge_idx, edge_att, num_nodes, num_nodes)
    try:
        edge_idx_list = torch.stack((edge_idx_list, edge_idx), dim = 0)
    except:
        edge_idx_list = edge_idx

```

## 個人的なメモ:問題
GNNの入力のためにエッジのインデックスとエッジ特徴量の配列をグラフごとに計算し、datasetにぶち込むためにそれぞれを一つのtensorに収めようとした。
計算後のtensorを空のリストにappendして最後にtorchに変換する方法を試みたが、リスト内の要素の型がtorch.tensorになっていたりリストからtorch.tensorに変換しようとするのにうまい方法が分からなかった

# 参照
- [How to append to a tensor in a loop](https://discuss.pytorch.org/t/how-to-append-to-a-tensor-in-a-loop/135559)
AIXが認識しているhdiskのサイズを実際のディスクサイズに修正する

例えば、20GBのディスクを100GBのディスクにddコマンドでコピーした場合、AIXでコピー後のディスクはhdiskX 20GBと認識されます。
AIXで以下のコマンドを実行すると、このディスクを100GBと認識させることができます。
```
cfgmgr
chvg -g rootvg
```

普段Linuxを使っている私は、「fdiskコマンドでパーティションの終端シリンダを更新すれば良いはず。AIXでfdiskの代わりになるコマンドは・・・」と調べました。
しかし、AIXは1ディスクに複数のパーティションを作ることは想定していないため、上述のコマンドでhdiskおよびvolume groupの情報を更新すれば良いだけでした。
簡単 Elixirシリーズ ~ ランダムに質問者を決める簡単なお仕事 ~

この記事は「[Elixir Advent Calendar 2022](https://qiita.com/advent-calendar/2022/elixir)」2日目の記事です
Elixir
東京にいるけどfukuokaexのYOSUKEです。

簡単 Elixirシリーズでは小ネタをサクッと書いていこう。というコンセプトで作っていきます。

仕事柄、ライトニングトークをしてもらい、その内容に質問をしてもらう。といった事をよくします。ただ、その際に質問ある人を募集しても中々手を上げてくれません。なので、先に質問者を決めて質問するつもりで聞いてもらうといった事をしてます。その時にサクッと質問者を公平に決めたい。という小ネタ（そう、この記事はサクッとがコンセプトW）


```elixir
iex> list = ~w（名前１　名前2 名前3 名前4 名前5 名前6 名前7 名前8 名前9）
["名前１", "名前2", "名前3", "名前4", "名前5", "名前6", "名前7",
 "名前8", "名前9"]
iex> Enum.shuffle(list) |> Enum.at(0)
"名前9"
```

シギル ~w を使って、空白開けて文字を記入するとリスト化されるので""で囲みながら書かなくて良いので便利です。
やってる事はシンプルでリストの順番をシャッフルして、Enum.at(list, 0)で0番目の要素を取得してるだけです。

パイプで繋げると第一引数は|>Enum.at(0)に自動的に引き継がれるので、第二引数の取得したい要素数を入れてます。
EC2上で起動したSpringBootを停止したいのに停止しないときに確認すること

## 概要
EC2上でSpring Bootのプロジェクトを停止する方法について

## 前提
gradleを使用している｡

## 停止してみる
`cmd + c`で停止させることが可能です｡
ただ､下記添付のように入力しているのに反応しない､､､｡
![CleanShot 2022-10-27 at 12.59.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/239cfb2e-079b-fbaf-259d-b0cedc6b4bda.png)

## 原因
原因はCPUの使用率でした｡
一番EC2のインスタンスタイプは一番低いt2.microを使用していたのが原因でした｡
t2.smallに変更してみたところサクサク動くようになりました｡

![cleanshot_2022-10-27_at_12.17.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/318b7294-dc36-1f2d-2e8b-f9c1df3d53c7.png)
t2.microのときのCPU使用率は約98%まで｡

![CleanShot 2022-10-27 at 13.03.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/46daa572-8f35-183b-488c-5d9072d4d999.png)
t2.smallのときのCPU使用率は約15%まで｡

## 合わせて調べたこと
t2 = インスタンスファミリー(2とは世代のこと)
micro = インスタンスサイズ
【Google Spread Sheets】SUMIFS関数を使って、別シートでテーブルを成型する


## SUMIFS関数とは
複数の条件に一致するセルを検索し、
見つかったセルと同じ行または列にある[合計対象範囲]のセルの数値の合計を求める。
※参考：[SUMIFS関数で複数の条件を指定して数値を合計する](https://dekiru.net/article/4365/)

■入力方法
```SUMIFS(合計対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)```

・合計範囲 ：合計する範囲。
・条件範囲1：条件1に対して検証する範囲。
・条件1　　：条件範囲1に適用するパターン。
・条件範囲2：条件2に対して検証する範囲。
・条件2　　：条件範囲2に適用するパターン。



## 実用方法及び、業務でどのように使用したか。
DBやDWHからスプレッドシートにテーブルをインポートし、
テーブルの形でインポートした表の成型・月別集計を行った。

### 手順
#### 1)BigQueryやTreasureDataからスプレッドシートにテーブルをエクスポートする
テーブル形式でインポートする。

||A|B|C|D|
|:-:|:-:|:-:|:-:|:-:|
1|date| id |name|匹|
2|2022-01-01|1|犬|2|
3|2022-01-03|2|猫|3|
4|2022-02-01|3|馬|4|
5|2022-04-11|4|羊|5|
6|2022-04-11|5|象|3|

※この表は、Google Spread Sheets内で`匹数シート`と名付けているとする。

#### 2)上記とは別のシートで、SUMIFS関数で成型する。
1)でテーブル形式でインポートしたものを、
下記のように、月別で匹数を表示するなどができる。

||A|B|C|D|E|
|:-:|:-:|:-:|:-:|:-:|:-:|
|1|月|1月|2月|3月|4月|
|2|月別匹数|5|4 |0|8|

* 1行目のB列以降のデータ
└B列：`2022/01/01`として日付型で格納し、表示形式を`1月`としている。
└C列：`2022/02/01`として日付型で格納し、表示形式を`2月`としている。
└D列：`2022/03/01`として日付型で格納し、表示形式を`3月`としている。
└E列：`2022/04/01`として日付型で格納し、表示形式を`4月`としている。
※`表示形式＞数字＞m月`で、表示形式の変更が可能


* 2行目のB列以降のデータ
└B列：`=SUMIFS('匹数シート'!$D$1:$D$6, '匹数シート'!$A$1:$A$6, ">=" & B$1, '匹数シート'!$A$1:$A$6, "<=" & DATE(YEAR(B$1), MONTH(B$1)+1, DAY(B$1)-1))`
└C列：`=SUMIFS('匹数シート'!$D$1:$D$6, '匹数シート'!$A$1:$A$6, ">=" & C$1, '匹数シート'!$A$1:$A$6, "<=" & DATE(YEAR(C$1), MONTH(C$1)+1, DAY(C$1)-1))`
└D列：`=SUMIFS('匹数シート'!$D$1:$D$6, '匹数シート'!$A$1:$A$6, ">=" & D$1, '匹数シート'!$A$1:$A$6, "<=" & DATE(YEAR(D$1), MONTH(D$1)+1, DAY(D$1)-1))`
└E列：`=SUMIFS('匹数シート'!$D$1:$D$6, '匹数シート'!$A$1:$A$6, ">=" & E$1, '匹数シート'!$A$1:$A$6, "<=" & DATE(YEAR(E$1), MONTH(E$1)+1, DAY(E$1)-1))`


##### ※上記のSUMIFS関数の補足
* 範囲指定の直前に、`'シート名'!`をつけると、別のシートのを参照し、範囲指定をすることができる。
└IMPORTRANGE関数でURLを指定すれば、別のスプレッドシートを参照することも可能。
--https://media.rakumo.com/2022_02_22_3119/
* `">=" & セル名`で、指定した「セル名」以上の値を抽出することができる。（等号、不等号記号はカンマで括り、`&`で結合している。）
* `DATE(YEAR(B$1), MONTH(B$1)+1, DAY(B$1)-1)`で、B列に格納されている日付の月末を指定することができる。（翌月の前日を表すことができるため。）
* セルの絶対参照
└`=$A$1`で「A1」を絶対参照して行と列を固定。
└`=A$1`で「A1」の行を固定。
└`=$A1`で「A1」の列を固定。
※オートフィルを使用する時に便利
Jetpack ComposeのComposeを区切る場所について

# 初めに
今回は、自分が業務で`JetpackCompose`を触ってみた時に気になったどこでファイルを分けるか問題を記事にしていこうと思います。
### 本文
まず、前提として`JetpackCompose`は従来の`xml`と違い同一の画面で使う場合でも小分けにViewを宣言することができます。
自分が実装をしていて気になったのが、表示物や機能が多い画面では小分けにしないと1つのファイルの記述量がとんでもない量になるということです。
そこで、どう区切るのが一番可読性が高く、綺麗にかけるのかを考えてみました。
最初に考えたのが***Viewごとに区切る***です。
しかし、そうしてしまうと逆にファイルの量がバカにならないですし、何より位置の相互関係などが設定がしづらいです。
次に考えたのが***機能などのグループごとに区切る***ことです。
しかし、そうなってくると入れ子の量が増える可能性もあり、不要なデータなどを上の階層におかないといけなくなるのであまり好ましくありません。
そこでチームで話し合って出たのが***データクラスなどのデータごとに区切る***です
そうすることで不要なデータを入れておくこともなくなり、可読性も高くなりました。
### 最後に
今回は自分の経験をもとにJetpackComposeでの区切り方を記事にしてみました。
何かオススメの区切り方などがあればぜひ教えていただけると嬉しいです
【AWS Lambda レイヤー】設定したときにハマった話

# 初めに
AWS Lambda でBoto3の最新バージョンを使いたくて、レイヤーを設定する際にハマった箇所の備忘録です。

### (そもそも)なぜレイヤーを使う？
AWS Lambda でPythonのBoto3を使うとき、
* デフォルトでのBoto3は __Ver.1.20.32__
* 最新のBoto3は __Ver.1.25.1__


となっていました。何が問題かというと、公式ドキュメントに書かれているサンプルコードの通りに実装しても動かないんです！！（ひどい落とし穴）

### 前提
この辺りを参考にしながら進めました。とてもに参考になります。
本記事ではレイヤーの作成方法は記載しませんので、レイヤーの作成方法自体わからないという方は下記サイトをまずはご覧ください。

https://dev.classmethod.jp/articles/lambda-boto3-layer/

https://qiita.com/shimajiri/items/e0e41f2c7a8ac99f3253



# 本題
## 罠１：フォルダパス
### 動かなかったもの
```
boto3.zip
|-- boto3/
   |-- boto3/
   |-- boto3-1.25.2.dist-info/
   |-- botocore/
   |-- etc...
```
### 動いたもの
```
boto3.zip
|-- python/
   |-- boto3/
   |-- boto3-1.25.2.dist-info/
   |-- botocore/
   |-- etc...
```

は？　って感じでした。
でも[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html)にしれっと書いてありました。
つまり、Zip化する前のトップフォルダは、名前を"Python"にしておかなければいけないということですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2618997/19f1df52-3501-d9fc-1c6c-99f229100f94.png)


## 罠２：zip コマンド
### Windows上でもZipファイルを作成できる
Linuxで作成すべしという風潮がありましたが、Windows上で簡単に作成できました。
いくつかのサイトを見たところLinux系の"zip"コマンドを使用しており、これが存在しないWindowsでは作成できない。なのでLinux上でZipファイルを作成するという風潮がありました。
試しにGitbushでzipコマンドを実行してみたのですが、やっぱりなかったです。gzipコマンドでは再帰圧縮しかできず、個別のファイルを.gzにしてしまうのでダメでした。

### Windows上でZipファイルを作成する手順
１．Gitbushで下記のコマンドを打つ
```
mkdir python
pip install -t python/ boto3
```
２．エクスプローラーで該当箇所を開いて、右クリック⇒「ZIPファイルに圧縮する」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2618997/38469ddb-3c57-a1d0-6956-b9d109df8c73.png)
３．作成されたZipファイルをLayerにアップロード

これでOKでした。


これに気づく前は、EC2上でpipインストールして、Boto3インストールして、zipコマンドインストールして、圧縮して、WindowsPCに転送して、Lambdaにアップロードして……
という七面倒な手順を使っていましたが、そんなこと必要ありませんでしたね。


# 最後に
レイヤーについてはまだまだ理解が足りておりませんので、間違い等ありましたら是非ともご教示お願います。
PowerAutomate soap api を叩く方法

# PostmanでAPIをテスト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/dcef7d67-5950-f42d-fb37-a7c03ee8dc9a.png)

# powerautomateのカスタムコネクタを作成
1. Postmanでテスト済のAPIプロジェクトをエクスポートし、jsonファイルがローカルに保存する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/9e3315e7-2fe1-4e4b-9614-a851d1badf9b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/61da6612-cb12-f3ed-7d1b-d1cb30f006fc.png)

2. powerautomateのカスタムコネクタを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/52220b5f-0841-de6d-2adc-5f6acb619881.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/03de6d0c-4f38-7c51-c62b-710b84793a28.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/e1b2834f-9ef2-aa3b-6cf1-9a9327ff8f49.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/d2a0f033-5685-3413-1414-9387b4564360.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/0aed5d21-0155-6450-ab6a-e0f216483192.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/3e16fe0c-878f-1494-30d7-82f67bb1a82c.png)
# カスタムコネクタは作成ししましたので、テストしてみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/c7c05d9e-f59e-1dfd-05c9-62b70e0ea112.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/f8e270fc-88af-d693-c82e-b43a6d6ab06a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/4a81a2cc-98d0-df7a-e07f-20f516ed32a0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/982fb67e-04fe-e81d-155f-333545f9be1b.png)

# 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/56cb98f0-795a-1124-ce33-ef60b624565b.png)

# 参考サイト
https://www.youtube.com/watch?v=h3BIF08Yp6g&ab_channel=M365TechHelp

test用のAPIサイト:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName

API:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
Header:
Content-Type: text/xml; charset=utf-8
SOAPAction: http://WebXml.com.cn/getWeatherbyCityName
body:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/bf7945d9-1cec-11b5-5229-9cb3ec88ff6b.png)
【Tableau】テキスト表の列幅が変更できないときに確認すること

# はじめに
こんにちは。
今回は小ネタとして、Tableauの画面開発時に私がうっかりハマった内容を共有したいと思います。
※ver2021.3を使用

# テキスト表の列幅を変更できない
タイトルそのままですが、
以前Tableauでテキスト表を作成した際、マーク内テキストに配置した数値項目の列幅が変更できなくなることがありました。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192521/614e42a7-bbfb-4f78-b9b5-2ae0c3fc9472.png)
※データソースは皆さんご存じの「サンプルスーパーストア」(ダミーデータ)を使用。

私がうっかりハマったときは、表の右端の線にカーソルを合わせても「⇔」に変わらず、幅の変更ができませんでした。

▼本来はカーソルが「⇔」に変わり、列幅が変えられる
 ![Animation2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192521/f086fcba-4bf1-50b6-d90d-f0eb293ec0b8.gif)
▼カーソルが「⇔」に変わらず、列幅が変えられない
 ![Animation1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192521/35a9ee32-1c83-040c-6b50-780b358e4403.gif)
この違いは何なのでしょうか。

# 原因
どうやらテキスト表の右側に**余白がないとカーソルが変わらない**ようです。
以下のように、**横スクロールがなくなるまで**余白をあけた状態でテキスト表の右端の線にカーソルを合わせると、カーソルが変わり列幅を広げることができました。
 ![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192521/49de1ce4-7ecc-3d6a-ffae-703a0b0cdb94.gif)


# おわりに
今回は、私がうっかりハマった内容を紹介しました。
人により作業環境(モニターの有無や画面サイズなど)が異なると、同じ表でも余白の有無が変わってくると思うので、複数人で開発をしていると同じ事象が起きやすいかもしれません。

以上となります。
最後までご覧いただきありがとうございました。
タスクスケジューラでAccessファイル起動する時のファイルパス注意点

:::note warn
例外の再現ができなかったので、あくまで参考情報となります。
:::

# 現象

1. タスクスケジューラでbatファイル起動。
1. batファイルはAccessファイルを起動。（諸事情によりタスクスケジューラから直にAccessファイル起動せ起動せずに、batをかませている）
1. Access内ではFileSystemObjectを使ったファイルコピーを行っている。
1. ファイルコピー先パスがドライブレターから始まってる。
1. ファイルコピーの時に『エラー番号76 パスが見つかりません』の例外。
1. Accessをダブルクリックで開くと問題無く動作する。
1. しかし、タスクスケジューラ経由で実行すると例外になる。
1. ファイルコピー先のパスの先頭を『\\\\IPアドレス\』のように変更したら、タスクスケジューラで実行しても例外にならなくなった。

# まとめ

タスクスケジューラで実行するシステムは、 **タスクスケジューラの右クリック ⇒ 実行する** で動作確認（テスト）した方がいいです。

**より本番に近い状況で確認（テスト）** しましょう。

さらにできるなら、本番の初回実行後に結果を確認しておいた方がよいです。

# バージョン

Windows 10 Pro 21H2 OSビルド 19044.2130
Microsoft Access for Microsoft 365 MSO (バージョン 2209 ビルド 16.0.15629.20196) 32 ビット
TrOCRのモデルをONNX化するのにハマった点

# decoderとencoder別々でONNX化しなければならなかった。
TrOCRのモデルをONNX formatに変換するときにハマったのでメモ。
[Pytorchのチュートリアル「EXPORTING A MODEL FROM PYTORCH TO ONNX AND RUNNING IT USING ONNX RUNTIME」](https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html) をみると`torch.onnx.export`に作ったモデルを通せば良いんだなーとだけ思っていたが、TrOCRのようなtransfomerが入ってるモデルだと、エンコーダーとデコーダーでそれぞれ`torch.onnx.export`する必要がある。例えばこんな感じ↓　
```
torch.onnx.export(trocr_encoder,               
                  x,   
                  "trocr_encoder.onnx",   
                  export_params=True,
                  opset_version=10, 
                  do_constant_folding=True, 
                  input_names = ['input'],
                  output_names = ['output'],
                  dynamic_axes={'input' : {0 : 'batch_size'},
                                'output' : {0 : 'batch_size'}})


```
```
with torch.no_grad():
    torch.onnx.export(
        trocr_decoder,
        args=(input_ids, attention_mask, encoder_hidden_states),
        f='trocr_decoder.onnx',
        opset_version=15,
        input_names=[
            "input_ids",
            "attention_mask",
            "encoder_hidden_states",
        ],
        output_names=["logits"],
        dynamic_axes={
            "input_ids": {0:'batch', 1:'sequence_length'},
            "attention_mask": {0:'batch', 1:'sequence_length'},
            "encoder_hidden_states": {0:'batch'},
            "logits": {0:'batch'},
        },
        do_constant_folding=True,
    )
```
これだけで数時間を無駄にした。
# 参考
https://colab.research.google.com/drive/1PApn7yl4E5RX0rz4AnxHqD0IqSOmpY9-?usp=sharing#scrollTo=k0lEEDhqXfqg
本当に騙されやすい偽メールが届いた。

# 概要
これは、本当に引っ掛かりやすい。あやしいメールが届いた。
amazon.co.jp noreplymail@basokuah.com
あなたの amazon.co.jp アカウントで異常なアクティビティが発生しました。アクションが必要です: 
パスワードを変更しようとしています。 ケース ID:͏ xxxxxx
親愛なる xxxxxxx@xxxxxxx,
あなたの電話にアクセスできる誰かが、あなたのアカウントのパスワードを変更しようとしています.
デバイス：Google Chrome Windows 7
近く: Congo
ログイン アカウントを更新するには______
私たちのシステムは、不適切な行動を検出します。
できるだけ早くパスワードを変更してください。
上記のリンクをクリックし、再度ログインしてプロンプトに従います。
請求書を更新し、デビット カードまたはクレジット カードを再確認する必要がある場合があります。
----------------------------------------------------------------------------------------------
アマゾンを騙る、このようなメールは、本当に引っ掛かりやすいです。気をつけましょう。
パスワードは絶対に入力しないことです。マカフィーのようなセキュリティソフトでも検知できていません
でした。自分で守るしかないようです。
# 文面をチェック
そもそも、アマゾン側であやしい偽ユーザと判断したら、わざわざ真の
ユーザーへパスワードの変更を依頼するメールなどを送る必要はない。
また、偽ユーザーがパスワードを変更しようとしているということは
その前にすでにログインしていなければ、パスワードの変更はできないので、偽ユーザーはその人のパスワードを知っていることになる。
それなら、わざわざ真のユーザーへパスワード変更を依頼することもない。まったく、おかしな文面である。
# メールサーバのドメイン名
basokuah.comというドメイン名もおかしい。
アマゾンであれば、Amazon.co.jpのようなドメインと思われる。
# ログインボタン
ログインボタンのリンク情報は表示していませんが、いかにも偽サイトと思われるURLでした。アマゾンのログインサイトとは異なるものです。
このボタンは絶対にクリックしないようにしたいものです。
# あとがき
このようなメールは、日常茶飯事で、いそがしい時はついうっかりログインしてしまうかもしれない。そこで、メールにあるログインボタンは絶対にクリックせず、ログインは必ず、真のサイトのログインボタンからクリックするように習慣づけておくとよいと思う。
html{font-size: 62.5%; }、html{font-size: 1vw; }、font-size: calc(10 / 375 * 100vw);の違い


`html{font-size: 62.5%; }div{font-size:2rem;} span {font-size:2em;}とした時`

remとemについて(remはhtml基準、emは親要素基準)


https://jsbin.com/gekehumuca/edit?html,css
https://output.jsbin.com/gekehumuca
ブラウザの文字サイズ設定中の時＝16pxの0.625==>10px基準で、1.6remとすると16px扱い

https://i.gyazo.com/f5dd4b0233b5da1ba74ffb7788e78f01.png
https://i.gyazo.com/235eb45538351c3c828007004a2fbbc7.png
https://i.gyazo.com/5e62762a52a6bfa36955137790a19d27.png

---

`html{font-size: 1vw; }div{font-size:2rem;} span {font-size:2em;}とした時`

https://jsbin.com/gimipuduzu/edit?html,css
https://output.jsbin.com/gimipuduzu

https://i.gyazo.com/8e2504230224691e68e28392363a87a6.png
https://i.gyazo.com/c50510ffbb5c1925e31feecc536a532e.png
https://i.gyazo.com/945b0aeaf0e9edf33d3743cedd43fe24.png

https://i.gyazo.com/6a660a94fd9819adee757d7a3196bd4f.png
https://i.gyazo.com/7f68c33497d80e676de8b7da89485c9e.png
https://i.gyazo.com/5a0151055dd49e2c6348d3264edf4635.png

https://i.gyazo.com/a5b79467b5baf9732eff845fbb2d0347.png
https://i.gyazo.com/19d238d112d7133ebd8173ae8f30f66d.png


---

`font-size: calc(10 / 375 * 100vw);div{font-size:2rem;} span {font-size:2em;}とした時`

https://jsbin.com/huhekurido/edit?html,css,output
https://output.jsbin.com/huhekurido


https://i.gyazo.com/9be93436f9054428b6f65dbaeae1e19d.png
https://i.gyazo.com/fc743eeebf5e76d67a5ae303d2944cb3.png
https://i.gyazo.com/94e126747fbab4447b61bb134fb7273c.png
https://i.gyazo.com/9f836f3f2b7906efed8e251f8dbe780b.png
https://i.gyazo.com/d5ff68e8808a112f9c885d2d5a478be0.png
https://i.gyazo.com/a83b216e0da4fcae07e35b99d462c1cf.png
【Xcode】Macアプリをリリースしようとしたらアイコン関係でエラー出た

# 状況
**xcodeバージョン**
14.1 Release Candidate 2

ちなみにRC版だからかと思ってリリース版の14.0でも試してみましたがダメでした

# エラー
![スクリーンショット 2022-10-26 20.09.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/37666a6c-5c59-b67b-a743-1c67709c832d.png)
```
Missing required icon. The application bundle does not contain an icon in ICNS format, containing both a 512x512 and a 512x512@2x image. For further assistance, see the Apple Human Interface Guidelines at https://developer.apple.com/macos/human-interface-guidelines/icons-and-images/app-icon (ID: 1fbe109c-5108-4ff3-9ad9-07d19a9a98bc)
```

# 原因
不明

# 解決方法
icon.icnsを作成して設定する

### icon.icnsを作成する
どこでも良いので`icon.iconset`という名前でフォルダを作成します
![スクリーンショット 2022-10-26 20.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d20a26ed-76b7-a6c1-2dc0-3f31d1fccc18.png)

512x512サイズのアイコンを`icon_512x512.png`
1024x1024サイズのアイコンを`icon_512x512@2x.png`

という名前で`icon.iconset`の中にいれます。

![スクリーンショット 2022-10-26 20.17.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/46661498-cbe3-4002-3ded-aec621db1361.png)

`icon.iconset`があるディレクトリに移動します
![スクリーンショット 2022-10-26 20.21.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/f1a8484a-ff92-8a8d-f7e2-ccd279c3ac35.png)

下記のコマンドを実行します
![スクリーンショット 2022-10-26 20.21.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/456d67ab-1c4c-e56a-5003-62dcbf0e44fc.png)
```
iconutil --convert icns icon.iconset
```
作成できました
![スクリーンショット 2022-10-26 20.22.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c729de07-2548-71b9-bf97-2bffaac17edf.png)

### icon.icnsを設定する
Assets内にあるAppIconを削除します
![スクリーンショット 2022-10-26 20.25.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/28b50f19-e7cc-7588-772d-7d9c87e815a2.png)
削除しました
![スクリーンショット 2022-10-26 20.25.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/bd6bcdba-187b-0103-3124-20b0f4673dc4.png)

先ほど作成した`icon.icns`をXcode内にドラッグします
![スクリーンショット 2022-10-26 20.26.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/51ab8d86-e98e-e9e3-0d0c-f06a3955d9f3.png)
下記の設定にして「Finish」を選択します
![スクリーンショット 2022-10-26 20.26.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/59e5c629-2c7a-8db0-cc2a-6df78221331f.png)
`Info.plist`に`Icon file`を追加します
![スクリーンショット 2022-10-26 20.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/191a4a66-ac45-08a7-e42f-b59b15b8ac0a.png)
`Icon file`に`icon.icns`を設定します
![スクリーンショット 2022-10-26 20.29.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7b37ea62-11c0-727d-c983-a2caa9c3daab.png)

# おわり
この対策方法が正しいかはわかりませんがエラーは出なくなりました
式の変形「2022年関西医科大学・医(医)第Ⅱ問」をsympyでできませんでした。

y=(6*x**2+17*x+10)/(3*x-2)

オリジナル

https://ameblo.jp/mathisii/entry-12766079452.html

大学入試数学問題集成＞未登録

# wolframAlphaで
**グラフのため**

https://www.wolframalpha.com/input?i=%286x2%2B17x%2B10%29%2F%283x-2%29&lang=ja

**(1)**
　(6x2+17x+10)/(3x-2)>0

https://www.wolframalpha.com/input?i=%286x2%2B17x%2B10%29%2F%283x-2%29%3E0&lang=ja

　解 x>2/3 -2<x<-5/6 
**(2)**
　Apart[(6x2+17x+10)/(3x-2)]

https://www.wolframalpha.com/input?i=Apart%5B%286x2%2B17x%2B10%29%2F%283x-2%29%5D&lang=ja

　結果 (6 x^2 + 17 x + 10)/(3 x - 2) = 2 x + 24/(3 x - 2) + 7

**(3)** (1)と同じ

　整数解　x = -1



# sympyで,できる方法。
(勉強中)


# sympyで,できませんでした。
```python
from sympy import *
from sympy.solvers.inequalities import reduce_rational_inequalities
var('x')
y=(6*x**2+17*x+10)/(3*x-2)
print("#(1)",reduce_rational_inequalities([[y>0]], x))
print("#(2)",apart(y))
# var('n')
n =Symbol('n' ,Integer=True)
yn=Symbol('yn',Integer=True)
yn=(6*n**2+17*n+10)/(3*n-2)
print("#(3)",reduce_rational_inequalities([[yn>0]], n))
# plot(y,(x,-5,5))
#(1) ((-2 < x) & (x < -5/6)) | ((2/3 < x) & (x < oo))
#(2) 2*x + 7 + 24/(3*x - 2)
#(3) ((-2 < n) & (n < -5/6)) | ((2/3 < n) & (n < oo))
```
Azure Fundamentals(AZ-900)：Azure の基礎: Azure のアーキテクチャとサービスについて説明する「Azureの外部ID」

Microsoft Learnを用いたMicrosoft Azure Fundamentals(AZ-900)の試験内容をまとめる投稿です。
この投稿ではMicrosoft Learnで学ぶ内容をできるだけ簡潔にまとめております。
Azureの勉強を一から始める方の参考になれば幸いです。

## 今回の学習内容
**◆「Azureの外部ID」**
◇対応するMicrosoft Learn ラーニングパス
[Azure の基礎: Azure のアーキテクチャとサービスについて説明する](https://learn.microsoft.com/ja-jp/training/paths/azure-fundamentals-describe-azure-architecture-services/)
◇対応するモジュール
[Azure の外部 ID について説明する](https://learn.microsoft.com/ja-jp/training/modules/describe-azure-identity-access-security/4-external-identities)

※前回の投稿は下記から確認できます。
[Azure Fundamentals(AZ-900)：Azure の基礎: Azure のアーキテクチャとサービスについて説明する「Azureの認証方法」](https://qiita.com/fsd-jume/items/466923ea5d53c2fcd380)

## Azureの外部ID(Azure AD External Identities)
**組織外のユーザと安全に対話できるすべての方法**
・外部ユーザは自身の独自の資格情報(ID)を使用してサインイン可能
・リソースを保護するためには、Azure AD、またはAzure AD B2Cを使用してアプリへのアクセスを管理
・ゲストアカウントの評価や変更、削除が容易に可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2851723/b2512770-d29e-2ed8-f406-06da642c6467.png)

## 次の学習内容
**◆Azureの条件付きアクセス**

https://qiita.com/fsd-jume/items/5c5d5dc86350cf3d3ea1

## 学習内容をまとめたページの一覧

https://qiita.com/fsd-jume/items/e4ec76959adb547ac5e8
secure boot は　ubuntu で乗り切る [おまけ: 古いPCで　nvme のフォーマットやクローン]



https://wiki.archlinux.jp/index.php/%E3%82%BB%E3%82%AD%E3%83%A5%E3%82%A2%E3%83%96%E3%83%BC%E3%83%88

は　むつかし過ぎます

で

https://kledgeb.blogspot.com/2020/06/ubuntu-2004-74-ubuntuuefi.html

これですくわれます

事実

https://www.youtube.com/watch?v=KaZW93OYJsI

です

一番最初のところで　

**sevure boot** が　**enabled** になってますよね

なおこのパソコンは　windows 10 と　ubuntu のdual boot です



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


nvmeのフォーマットとか　クローンは
古い古いサーバー（MBR）の　pci express X4
でできます
ubuntuインストール用の　USBメモリで起動してするのがらくです

![pci.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211097/c22c5bf2-a2e9-aad9-cbd3-9f888c2581cb.jpeg)

![Photo Marker_20221101_104016.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211097/0f413e14-e847-a4fd-3262-c696de110359.jpeg)

![pci-e.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211097/27943bc8-f0d6-de92-07e0-07835cac489e.jpeg)

詳しくは
https://www.pasonisan.com/pc-interface/pci-express.html
Power Apps Ideas機能一般提供の開始！

こんにちは。
プレビューだったPower Apps Ideasが一般提供開始されることが、10/26に発表されました。

# Power Apps Ideasとは
Power Platform共通の関数であるPower Fxは、Excelの数式を書くことと同じくらいのスキルで記述できます。
しかし、最初は学習が必要であったり、デバックに時間がかかったり、経験豊富なPower Fxユーザーであっても、数式を書くのは簡単ではありません。
しかし、今回発表されたPower Apps Ideasを使用すると自然言語や例を使ってPower Fxの数式を簡単に書くことができるようになります。

https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/power-apps-ideas

## 今回の提供開始のタイミングでアップデートされたこと
より多くのコントロールとプロパティをカバーする数式パターンが増えました。UI も改善され、コンテキストに応じたアイデアを促し、新しく大きなパネルにアイデアを表示できるようになります。
旧アイデアパネル（詳細タブの横）はまだしばらく残りますが、いずれ廃止していく予定です。


# 使い方
使い方は2種類あります。１つが自然言語を利用する方法、１つが表示例を利用する方法です。
## 1. 文章から数式を生成する
どのように表示させたいか、例を**入力**することで自動で数式を書いてくれる機能です。
裏側の AI モデルが目的の入力からパターンを検出し、数式を生成し、そこから選択することができます。
現段階で、日本語では新パネルがまだ出てきてなかったので旧パネルで試します。（新パネルの様子はその下に示します。）
コントロールを選択して、左のメニューでアイデアタブを開きますと、一番上に表示例をテキストで入力する欄が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/dd9c24d9-baef-d2d9-9b09-5a5387e9ac85.png)

テキスト型の文字を組み合わせて入力して、[GetIdeas]ボタンを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/de2be10c-9f3a-ec1d-97d5-8eb6d687d1c4.png)
すると「回答」の一番下に数式が出てきます。
[適用]ボタンを押すとアプリに適用されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/211ad7a6-bba6-dd7d-0ec3-e61a6c6f9c45.png)

新パネルの様子
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/197b33b0-12d5-eac6-cda9-a5e079e10a02.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d20c432b-5231-0fc6-21cd-167f3d5d9e50.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/df0e3e9e-2b41-0f92-b0fb-823462ae5127.png)


## 2. 例題から数式を生成する
どのように表示させたいか、例を**選択**することで自動で数式を書いてくれる機能です。典型的な例を表示してくれてそこから選ぶ方式です。
例えば、画像のようにギャラリーの中のコンポーネントをクリックするとアイデアメニューが表示されます。ここで「データの書式設定」を開くと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/a3ec78ff-6066-2f6d-31ac-438d89c95759.png)
右側に大きなパネルが出てきます。一番上に例を指定する箇所があります。
（下には他の列を候補として出してくれてます。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/e4ce2601-7ccd-984a-f159-6bf1f350290f.png)

左の現在の形式が表示されており、右でどのように表示されたいかを選べます。今回、日付型のデータ型なので、ドロップダウンには日付型で変換できる候補が並んでいます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/f55e50c9-2ab3-759b-fad5-1c97e3814780.png" width=70%>

ここで１つ選択すると、この変換をするための数式が表示されますのでこれを選択し、適用ボタンを押すと、、、
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/bc339cce-88a3-2e8d-30ea-fc8e447b5aed.png" width=50%>
数式バーに自動で入力がされ、ギャラリーにも反映されていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/0dbc680e-f6ee-38f9-936f-96f60cc0da8a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/e61def09-688f-c84f-0498-ace8068ca721.png)


# まとめ
今回新機能として提供開始されたPower Apps Ideasですが、市民開発者向けの機能として、とても良い機能だと思います。どんどん活用して、アプリ開発をより快適なものにしていきましょう！