OmniAICreator/Qiita-1.07M huggingface dataset:
4.24 (標準) 多変量正規分布の積率母関数

## 方針

Xをそのまま

```math
\begin{align}
\mathbb{E}[\exp({}^\top {\bf tX}]&= \mathbb{E}[\exp(t_1X_1+…t_nX_n)]\\
&= \mathbb{E}[e^{t_1X_1}…e^{t_nX_n}]
\end{align}
```

と計算しようとすると，ここで手詰まりになる (X_1,...,X_nが独立でないため積の期待値を期待値の積に変形できない) ．そこで，独立な確率変数Z_1,...,Z_nを用意してこれの変数変換という形でXを捉えてあげると上手くいく．

## 答案

![4.-40.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/00e9ccf7-4274-92e1-3f63-88202e2c170e.jpeg)
![4.-41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/15b259b0-0b16-fbd9-bbcf-ed87a27303fa.jpeg)


## 参考文献

- 『[現代数理統計学の基礎](https://www.kyoritsu-pub.co.jp/bookdetail/9784320111660)』(久保川達也　著)
FreeType で OpenCV に日本語を putText する機能を追加しようとしたら Surrogate-pair と 異体字 IVS 対応が地味に面倒だったので備忘録

# 観え方(グリフ)が同じでも文字列中のコードが同じとは限らない & Variation Selector が曲者

(もちろん別の意味で使われているが VS と言っても Variation Selector だったり Variation Sequence だったり)

1. 文字列中のコードが同じでも観え方(グリフ)が同じとは限らない
2. 観え方(グリフ)が同じでも文字列中のコードが同じとは限らない

※ここで言っている「観え方」とは glyph index (FT_Face_GetCharVariantIndex や FT_Get_Char_Index の戻り値から render 後の字形まで) のことを指す (同一ファイル内の glyph index であっても対応するコードが複数存在する場合がある)

* 異体字とは前者(1)だと思っていたが後者(2)と前者(1)どちらも存在する

つまりフォントの選択や表示するソフトウェアの選択が全て正しくても逆変換が元の文字と一致するとは限らないということ(いわゆるunicode自身の正規化等とは無関係)

(IVS は対応出来た SVS は多分まだ)

- OpenCV 用

https://gist.github.com/nomissbowling/5367fc4c6bccf33325a6017436fb2f4d

- console (test) 用

https://gist.github.com/nomissbowling/ce9307ef94e7e06f9abdfee44eb8aacf


## 異体字「祇󠄀(u7947 ue0100) 祇󠄁(u7947 ue0101)」

|異体字|unicode|utf-16 (BE)|実際の表示|
|--:|:--|:--|:--|
|祇󠄀|u7947 + ue0100|79 47 db 40 dd 00|祇󠄀 (選択フォントによっては祇󠄁)|
|祇󠄁|u7947 + ue0101|79 47 db 40 dd 01|祇󠄁 (選択フォントによっては祇󠄀)|
|祇|u7947|79 47|祇󠄁 (選択フォントによっては祇󠄀)|

## 別の字「祗(u7957)」 別の字「衹(u8879)」 等の表示について

|別の字|unicode|utf-16 (BE)|実際の表示|
|--:|:--|:--|:--|
|祗|u7957|79 57|祗|

|別の字|unicode|utf-16 (BE)|実際の表示|
|--:|:--|:--|:--|
|衹|u8879|88 79|衹 (選択フォントによっては豆腐)|


## テストしたフォント

- IPAex IPA font https://moji.or.jp/ipafont/
ipaexm.ttf
ipaexg.ttf

- Migu font https://mix-mplus-ipa.osdn.jp/migu/
migu-1m-regular.ttf
migmix-1m-regular.ttf
バージョンによって結果が変わります
特に JIS2004漢字字形 https://mix-mplus-ipa.osdn.jp/migu/#jis2004

- MS 標準
msgothic.ttc
Oracle Autonomous DatabaseのApplication Continuity(AC)、Transparent Application Continuity(TAC)設定

# はじめに
アプリケーション・コンティニュイティ（AC）は、リカバリ可能なシステム停止の後に実行中のデータベース・セッションをリカバリすることでシステム停止がエンドユーザーやアプリケーションに関知されないようにする機能であり,システム停止の後にその影響を受けたデータベース・セッションの実行中の作業がリカバリされるため、エンドユーザーやアプリケーションはシステムが停止したことに気づきません。このリカバリはアプリケーションの背後で実行されるため、アプリケーションからはこの停止が短時間の実行遅延のように見えます。

※上記の説明は下記の資料から抜粋:
https://www.oracle.com/jp/database/technologies/high-availability/app-continuity.html


AC、TAC はOracle Autonomous Databaseもに搭載されています。AC、TACの詳細について下記の資料をご参照ください。
https://oracle-japan.github.io/ocidocs/database/oracle%20database%20technology%20night/application-continuity/

# ラボ環境
Autonomous Database (ATP) 19c
対象サービス名：
GB97D9D33012F31_ATPPUBTEST_low.adb.oraclecloud.com

# Oracle Autonomous DatabaseのAC有効化/無効化
下記の作業は`ADMIN`ユーザーで行います。

## 事前確認

```
SELECT  NAME,FAILOVER_TYPE FROM DBA_SERVICES WHERE NAME LIKE '%low%';
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/596f382e-4fb1-986d-6a7a-a4b39cd0b850.png)


`FAILOVER_TYPE` は`NULL` or `NONE`になっていること確認 

## AC有効化
DBMS_CLOUD_ADMIN.ENABLE_APP_CONTを実行
```
BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_APP_CONT(
        service_name => 'GB97D9D33012F31_ATPPUBTEST_low.adb.oraclecloud.com'
    );
END;

```

## AC有効化後確認

```
SELECT  NAME,FAILOVER_TYPE, DRAIN_TIMEOUT FROM DBA_SERVICES WHERE NAME LIKE '%low%';
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/a2819d87-8076-044b-5fd2-005745f3ea26.png)

`FAILOVER_TYPE` は`TRANSACTION`になっていること確認 

## AC無効化

DBMS_CLOUD_ADMIN.DISABLE_APP_CONTを実行
```

BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_APP_CONT(
        service_name => 'GB97D9D33012F31_ATPPUBTEST_low.adb.oraclecloud.com'
    );
END;

```

## AC無効化後確認

```
SELECT  NAME,FAILOVER_TYPE　FROM DBA_SERVICES WHERE NAME LIKE '%low%';
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/9c9161d2-dd02-f626-9e0c-93533df532b1.png)
`FAILOVER_TYPE` は`NONE`になっていること確認 


# Oracle Autonomous DatabaseのTAC有効化
下記の作業は`ADMIN`ユーザーで行います。

## 事前確認

```
SELECT  NAME,FAILOVER_TYPE FROM DBA_SERVICES WHERE NAME LIKE '%low%';
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/9c9161d2-dd02-f626-9e0c-93533df532b1.png)

`FAILOVER_TYPE` は`NULL` or `NONE`になっていること確認 

## TAC有効化
DBMS_APP_CONT_ADMIN.ENABLE_TACを実行
```
BEGIN
  DBMS_APP_CONT_ADMIN.ENABLE_TAC('GB97D9D33012F31_ATPPUBTEST_low.adb.oraclecloud.com','AUTO',1200) ;
END;
```

## TAC有効化後確認

```
SELECT  NAME,FAILOVER_TYPE　FROM DBA_SERVICES WHERE NAME LIKE '%low%';
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/b56ff07f-9159-b3c6-9307-7b49b3a1113d.png)


`FAILOVER_TYPE` は`AUTO`になっていること確認 

## TAC無効化
DBMS_APP_CONT_ADMIN.DISABLE_FAILOVERを実行
```
BEGIN
  DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('GB97D9D33012F31_ATPPUBTEST_low.adb.oraclecloud.com') ;
END;
```

## TAC無効化後確認

```
SELECT  NAME,FAILOVER_TYPE　FROM DBA_SERVICES WHERE NAME LIKE '%low%';
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/9c9161d2-dd02-f626-9e0c-93533df532b1.png)
`FAILOVER_TYPE` は`NONE`になっていること確認
Chromeフリーズ【テキストカーソルインジケーター】

# テキストカーソルインジケーターONでChromeフリーズ
Windows10でChromeを開くと特定のページだけフリーズする事象発生。

・google speed Insights
・WordPressテーマ「THE THOR」カスタマイズ画面

## 検証の結果　テキストカーソルインジケーターONが原因
OFFで解消。

![テキストカーソルインジケーター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2664599/5020c2d9-0ce8-57b2-d981-888b27a548fa.png)

備忘録として。
[Rails] [haml] link_toに文字とfontawesome両方を使って表示させる

## はじめに
hamlにてlink_toを使って文字の後ろにfontawesomeのアイコンを置きたかったのですが、調べてもなかなか見つからなかったので記事にしました。

<img width="200" alt="写真" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577648/6170975f-e94a-727c-7417-bbe595772cb6.png">

とても簡単だったので需要があるのかわかりませんがよろしくお願いします！
⚠fontawesomeが使える状態を前提としています。

## 結論
hamlの場合↓
```haml:posts/index.html.haml
= link_to users_path do
  こちらがリンクです
  %i.far.fa-hand-point-right
```

erbの場合↓
```erb:posts/index.html.erb
<%= link_to users_path do %>
  こちらがリンクです<i class="far fa-hand-point-right"></i>
<% end %>
```
もちろんアイコンを文字の手前に持っていきたければ`<i class= " ~ ">`の部分を先に記述するだけです。

## 最後に
簡単すぎましたがどなたかのお役に立てれば嬉しいです。
閲覧頂きましてありがとうございました🐎！
名前ベースのNginxリバースプロキシ

80番ポートを複数のWEBサーバーで切り替えたい場合。

## docker-compose だけで実現するには

* http://httpd1.local 
* http://httpd2.local 


```yaml:docker-compose.yml
version: '3'
services:

  # --------------------------------------------
  nginx:
    container_name: nginx
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  # --------------------------------------------
  httpd1:
    container_name: httpd1
    image: nginx
    volumes:
      - ./httpd1/:/usr/share/nginx/html/
    environment:
      - VIRTUAL_HOST=httpd1.local

  # --------------------------------------------
  httpd2:
    container_name: httpd2
    image: nginx
    volumes:
      - ./httpd2/:/usr/share/nginx/html/
    environment:
      - VIRTUAL_HOST=httpd2.local
```

* VIRTUAL_PORT という設定値もある様子


## nginxの設定

### アクセスしてきたものを任意のコンテナに飛ばす方法

```nginx:/etc/nginx/conf.d/php.conf
server {
    listen       80;
    server_name  _;
    location / {

        proxy_set_header Host                   $host;
        proxy_set_header X-Forwarded-Host       $host;
        proxy_set_header X-Real-IP              $remote_addr;
        proxy_set_header X-Forwarded-For        $remote_addr;
        proxy_redirect off;
        proxy_pass   http://php:80;

    }
}
```

### code-serverの場合

以下が必要だった。

```nginx:/etc/nginx/conf.d/code.server.conf
server {
    listen       80;
    server_name  code.server;
    location / {

        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
        proxy_pass   http://code.server:8443;

    }
}
```

### gogs, giteaの場合

ファイルサイズの上限を増やさないと以下エラーが出た。

> error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
> fatal: the remote end hung up unexpectedly

`client_max_body_size`値を指定する。

```nginx:conf.d/gogs.conf
server {
    listen       80;
    server_name  gogs.localhost;
    client_max_body_size 500M;
    location / {

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass   http://gogs:3000;

    }
}
```

### その他便利機能

```go
location / {
	allow 192.168.100.0/24;
	allow 8.8.8.8;
	deny all;                                                                                                                                                                                                                                                                                                           
	# hide version
	server_tokens off;
}
```
【sessionStorage】1億万回煎じの「JSON文字列⇔オブジェクト」変換

# JSON文字列とオブジェクト
JavaScriptのオブジェクト（Pythonではdictionary型）とは以下のようにkeyとvalueを持たせたデータ形式で、同じkey名で別の変数として扱うことができる。
各valueには、**文字列**、**数値**、**null**、**bool値**、**オブジェクト**、**配列**を入れることができる。
```javascript
json1 = {
  name: hoge,
  email: hoge@mail,
}
json2 = {
  name: hige,
  email: hige@mail,
}
```
JSON文字列は上記を文字列にしたもの（valueの型は全て**文字列**になる）で、sessionStorageなどに格納するときなどに使用する。

# JSON文字列→オブジェクト
早速。
```javascript
let json_data = JSON.parse(sessionStorage.getItem("KeyName"));
```
# オブジェクト→JSON文字列
いよっ！
```javascript
const jsonString = JSON.stringify(json_data);
sessionStorage.setItem("KeyName", jsonString);
```
フロントエンジニアにおすすめのChrome 拡張機能5選！！

最近チームの朝会でおすすめの拡張機能を披露しあう機会があり、自分が便利だと思って使っている拡張が意外と使われていない事がわかったので、布教がてらこちらにもメモ程度にまとめておこうと思います。

## 1. Pesticide 

僕の一押しの拡張機能です！こちらは機能をオンにする事で、サイト内全ての要素にアウトラインを追加して、余白などを見やすくしてくれます。意図した通りの css が当たっているか、おかしな箇所がないかなど一目で確認する事ができて便利です！

👇 qiitaのマイページだとこんな感じ
![スクリーンショット 2022-01-25 11.48.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442365/af0e2774-7b00-ded2-248b-7aace15fa5b0.png)

Pesticide for Chrome (without hover bar) - Chrome ウェブストア
https://chrome.google.com/webstore/detail/pesticide-for-chrome-with/neonnmencpneifkhlmhmfhfiklgjmloi


## 2. WhatFont

こちらはWebサイト上の文字をクリックすると、選択した要素で使われているフォント、フォントサイズ、line height を知る事が出来る拡張機能です。適応したフォントがちゃんと当たっているかの確認やウェブサイトのをみていてこのフォントなんだろ？ っと気になった時にさっと調べられるのでとても便利です。

👇 拡張機能を ON にして文字をクリックするとこんな感じで文字情報が表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442365/75ec68c3-88b5-b87c-ddc2-5d2e56522aa6.png" width="800"/>

WhatFont - Chrome ウェブストア
https://chrome.google.com/webstore/detail/whatfont/jabopobgcpjmedljpbcaablpmlmfcogm?hl=ja


## 3. GoFullPage

ページのスクリーンショットを簡単に撮る事ができる拡張機能です！ ページの一部の SS を撮りたい時は、標準の SS 機能を利用しますが、 web ページ全体を撮りたい時にとても便利です。画像はもちろんPDFとしても保存する事が出来るのでどこかで役にたつかも？

👇 こんな感じの SS を取る事が出来ます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442365/d5db00b0-fa08-92d7-bf0e-1b2e24a2bc48.png" width='300' height="100" />

GoFullPage - Full Page Screen Capture - Chrome ウェブストア
https://chrome.google.com/webstore/detail/gofullpage-full-page-scre/fdpohaocaechififmbbbbbknoalclacl

## 4. TabCopy

ページのタイトルと URLを markdown 形式でクリップボードにコピーしてくれる拡張機能です！ Web ページをシェアしたい時に重宝しています。
👇 いろんな形式があり、デフォルトだとこんな感じのリンクをコピーする事が出来ます。

[Expanded]
TabCopy - Chrome ウェブストア
https://chrome.google.com/webstore/detail/tabcopy/micdllihgoppmejpecmkilggmaagfdmb?hl=ja

[Compact]
TabCopy - Chrome ウェブストア: https://chrome.google.com/webstore/detail/tabcopy/micdllihgoppmejpecmkilggmaagfdmb?hl=ja

[Link] (RTF形式)
TabCopy - Chrome ウェブストア

## 5 ColorPick Eyedropper

ページで使われている色を確認する事ができる拡張機能です！!　サイトで使われている色は devtool からでも確認できると思うのですが、こちらは画像の色も確認する事が出来るので、このロゴの色何色なんだろ？っと気になった時にパッと調べられてとても便利です。

👇 試しに僕のアイコンのペンギンの色を取得してみた例になります。
![スクリーンショット 2022-05-13 13.15.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442365/4230fe22-449a-0426-b6f6-ee1f0f69bdb0.png)


## あとがき

以上5つが僕のおすすめの拡張機能になります！ 皆さんの一押しの拡張機能も是非教えてください！！
業務やシステムを見える化するフレームワークIPO,SIPOCとは？

## はじめに
「今やってる仕事、〇〇さんに引き継ぎしといて〜」
「今実装してる機能、誰のなんの作業のためにやってるか、わかってる？」

こんなことを言われて「え、わかんないっす。どうしたらいいすか？」ってなっているあなた。
業務やシステムは複雑なように見えて、1つ1つ単純なプロセスに分解していけば、理解しやすくなります。

この記事では、業務やシステムを理解するのに役立つフレームワークであるIPOやSIPOCについて解説します。

## 対象者
この記事は下記のような人を対象にしています。

- 駆け出しエンジニア
- プログラミング初学者
- 資料作れと言われても困る...となってる人
- この仕事、誰のなんのためにやってるのかわからん人

## 結論
IPOやSIPOCを使えば、複雑な業務やシステムを理解することができる！

:::note
**IPO**とは
**Inputs** インプット(入力)
**Process** プロセス(作業)
**Outputs** アウトプット(出力)
:::
:::note
**SIPOC**とは
**Suppliers** サプライヤー(供給者)
**Inputs** インプット(入力)
**Process** プロセス(作業)
**Outputs** アウトプット(出力)
**Customers** カスタマー(顧客)
:::

## IPOとは
IPOは下記の3つの頭文字を立った略称です。

:::note
**IPO**とは
**Inputs** インプット(入力)
**Process** プロセス(作業)
**Outputs** アウトプット(出力)
:::

プログラマーであれば、関数を実装する際に必ず考えると思いますが、「入力>作業>出力」と言う考え方です。
一つの関数の考え方をもっと複雑なシステムや業務にも使えるんですよ、と言う話です。

クライアントからの修正依頼が来た時の業務をIPO分析してみます。

:::note
**修正依頼のIPO分析**
Input1：クライアントから修正依頼
Process1：自分でコードを書き、gitlabにpush→上司がレビュー
OutPut1：修正をマージして本番デプロイ
Input2：クライアントに修正完了報告
Process2：クライアントが修正確認
OutPut2：「全然違う！」とクライアントからお怒りのご連絡
:::

さて、どの部分に問題があったのでしょうか。
IPOでまとめておけば、下記のように一つ一つ原因を特定できますね。
- クライアントからの依頼がふんわりしていたのか？
- 自分のコードがよくなかったのか？上司のレビュー不足か？
- 修正完了報告が間違っていたのか？
- クライアントの修正確認方法が間違っていたのか？


## SIPOCとは
SIPOCは下記の5つの頭文字を立った略称です。

:::note
**SIPOC**とは
**Suppliers** サプライヤー(供給者)
**Inputs** インプット(入力)
**Process** プロセス(作業)
**Outputs** アウトプット(出力)
**Customers** カスタマー(顧客)
:::

IPOにさらに関係者を加えたフレームワークになります。
詳細をまとめるわけではなく、システムや業務の大枠を捉えるために利用されます。
関係者が集まって認識を擦り合わせたり、改善おアイデアをブレストしやすくするのに活用されるフレームワークです。

### Suppliers(サプライヤー)とは？
インプットを供給する人、チーム、企業。

### Inputs(インプット)とは？
プロセスを機能させるのに必要なデータや物。

### Process(プロセス)とは？
システムや業務を細かく分けた1つ1つの作業。

### Outputs(アウトプット)とは？
プロセスを実行した結果、得られるデータや物。

### Customers(カスタマー)とは？
アウトプットを得る人、チーム、企業。

### SIPOCの具体例
例えば、楽天やYahooショッピングのようなECサイトを制作しているとしましょう。
このECサイトをSIPOCで整理してみます。

:::note
**ECサイトのSIPOC**
- **Suppliers**
    - ECサイト利用客
    - 倉庫の管理企業
    - ECサイト店舗運営企業
    - ECサイト運営企業
    - etc...
- **Inputs**
    - ECサイト利用客の配送情報(名前、住所、電話番号)
    - 商品コード
    - セール情報
    - 店舗コード
    - etc...
- **Process**
    - ECサイトのカートから購入
    - 利用客のユーザー登録
    - 請求書作成
    - 梱包作業
    - etc...
- **Outputs**
    - 利用客が商品を受け取る
    - 店舗が代金を受け取る
    - ECサイト運営企業が手数料を受け取る
    - etc...
- **Customers**
    - ECサイト利用客
    - 倉庫の管理企業
    - ECサイト店舗運営企業
    - ECサイト運営企業
    - etc... 
:::

このように、フレームワークがあると複雑なシステムが少し理解しやすくなりましたね。
ここから課題を出したり、改善点を出すのは以前よりも楽になったはずです。

## おわりに
業務やシステムを見える化するフレームワークIPO,SIPOCについてまとめました。

:::note
**IPO**とは
**Inputs** インプット(入力)
**Process** プロセス(作業)
**Outputs** アウトプット(出力)
:::
:::note
**SIPOC**とは
**Suppliers** サプライヤー(供給者)
**Inputs** インプット(入力)
**Process** プロセス(作業)
**Outputs** アウトプット(出力)
**Customers** カスタマー(顧客)
:::


## 参考記事
[SIPOC ダイアグラムとは？ビジネスプロセスをマッピングして理解する 7 つのステップ](https://asana.com/ja/resources/sipoc-diagram)
バッチファイルの保存場所（新人向け）

# 概要
いろいろなプロジェクトに参加するとどこのフォルダに何があるか、いつも使う処理をどれだけ効率的にできるかで仕事のスピードが変わってくる。
バッチファイルを作っておくと何かと便利なのでその保存場所と使い方を紹介する。
参考記事→https://atmarkit.itmedia.co.jp/ait/articles/1506/26/news026.html#prepare
# いつも使うフォルダを一発で呼び出す方法
会議時に新人にパソコン操作をお願いしていると指定のファイルにたどり着くまでに時間がかかる。
みんなその時間に黙ってしまうので覚えておくと会議が円滑に進むようになるので便利。
- 作成したバッチファイルについて
今回はプロジェクトフォルダを開くバッチファイルを紹介する。
```bat:hoge.bat
start C:\foo\hoge
```
このバッチファイルを使うとhogeフォルダをwindowsexplolerで表示してくれる。
これで何が嬉しいかというと、ドキュメント→プロジェクト→○○テスト→hogeというフォルダの迷路を進まなくても一発で表示ができる。
以下では、お使いのPC画面がどのような状態でもhogeと打ち込むだけでhogeフォルダが表示できるようになるまでの流れを説明する。
- 保存場所
```
C:\command
```
- 環境変数の設定
上記作成までだと、このバッチファイルを使うまでに時間がかかってしまい意味がない。
一瞬でこのバッチファイルを実行するために環境変数の設定を行う。（上記記事が参考になる。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172184/2b41bdcf-11d2-fe24-24c1-9a5486663585.png)

- ファイル名を指定して実行する魔法のキーコマンド
windows+Rを押すと以下のような画面が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172184/ebc02228-67ed-8c9c-a2fb-6a6a1e80f443.png)
この画面にhogeと打ち込む。
これだけで先ほどのhogeフォルダが開かれる。

- 補足
pathが通っているため、コマンドプロンプトやwindowsexplolerに直接打ち込んでもbatファイルの実行は可能。
4.22 (標準) ディリクレ分布

## 方針

Z=1-X-Yなので，実質二変数である．

```math 
1-x-y=(1-x)(1-\frac{y}{1-x})
```

なる変形を知っておけばあとは計算を頑張るだけ．

## 答案

![4.-33.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/3c11154d-5831-2b5c-c893-e6c1f1c78ffb.jpeg)
![4.-34.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/f6bae51c-88a9-e27e-4358-3079f7c7c497.jpeg)
![4.-35.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/3f389487-16e3-aa5e-df17-c8a86fe9737a.jpeg)
![4.-36.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/9aa4551d-6f49-a439-8dd8-7420dce24a84.jpeg)
![4.-37.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/05d9572f-42b0-76f0-d87b-226dfbd10305.jpeg)


## 参考文献

- 『[現代数理統計学の基礎](https://www.kyoritsu-pub.co.jp/bookdetail/9784320111660)』(久保川達也　著)
ウォーターフォールでキャッシュフローを分析

## 1. 目的
[Yellowfin](https://yellowfin.co.jp/) [BI](https://yellowfin.co.jp/blog/2019/11/21-blog2-summary-of-bi-tools) のウォーターフォール (滝) チャートを活用して、先日2021年度の決算発表があった、[ソニー株式会社](https://www.sony.co.jp/)の2021年度キャッシュフローを分析してみたいと思います。

## 2. レポートの作成
2021年度 (2021年4月～2022年3月) のキャッシュフローを分析するためには、まずは期初時点 (2021年3月末) のキャッシュ残高を算出し、そこから年度内に発生したキャッシュの流れを追う形になります。そのため、例えば以下のようなテーブルを作成します。データの構造によって、この先の手順は異なってきます。下記は手順の一例とお考え下さい。

「年度」「CF」「項目」「金額」の4列からなるデータソースを JOIN して、以下のようなテーブルを作成しました。[サブクエリー]( https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2293818)を使って処理しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/e807740b-e4a2-3bd1-8226-ba752b30c421.png)

[グラフ] ステップに移行し、滝 (ウォーターフォール) を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/c130efbb-0cec-252b-2faa-fc031df603a2.png)

軸や色にそれぞれ以下を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/da12da67-ea21-d5d1-56a7-585b83d6894c.png)

〇 横軸
キャッシュフローの各項目を表す列を追加します。今回の例では 「営業キャッシュフロー → 投資キャッシュフロー → その他」 の順に並べたいので、並び順を事前に設定しておきました。並び順を設定する方法はいくつかありますが、[参照コード]( https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2294020)を利用することも可能です。データべース側に並び順の定義に利用できる列があれば、それを活用することももちろん可能です。

〇 縦軸
2021年度のキャッシュフロー各項目の数値を示す列を指定します。

〇 色
キャッシュの増減を示す色を指定します。規定では青と赤が選択されます。

〇 開始
前年度からの繰り越しキャッシュに関する数値を指定し、開始時点の棒の高さを決めます。

## 3. 分析
作成したチャートを使って分析を行います。

〇期初
期初時点で3,500億円強のキャッシュがありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/bf834dc1-6793-edf4-a6e2-bd81a0c9ebcc.png)
〇キャッシュの増加要因
2021年度に1兆2,023を超える営業利益を稼いだことが話題になりましたが、キャッシュとしても1兆円を超す税引き前利益が計上されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/c126a87d-7d12-9658-8ca1-6f73b42c3cd1.png)
会計上は費用として計上されている償却費ですが、実際にはキャッシュの流出を伴っていません。今回のように損益計算書から[間接法]()でキャッシュフローを算出している場合は、プラスのキャッシュとして扱います。会計上の数値との差異が出がちな部分なので、キャッシュフローを分析することが重要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/468d5ff9-0d58-5f0f-491d-4ef53f485a0f.png)
〇キャッシュの減少要因
上記以外の営業キャッシュフロー、投資キャッシュフロー、その他の各項目に関しては、キャッシュを減少させています。例えば、コンテンツ資産の増加に伴うキャッシュの減少は、ソニーがエンターテイメントやゲームに力を入れていることも大きく寄与していると思われます。自社株買や配当で株主還元していることも分かりますね。ちなみに、チャート上部の図は [デザイン](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2293869) ステップで追加しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/d4f74bbb-d9b5-b0a9-9415-dcf3e94b9179.png)
〇期末
結果、2021年度末のキャッシュは2,442億円となりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/829c1e16-debb-3a61-7069-86c1b244e55d.png) 

## 4. 最後に
キャッシュフローを可視化すると、増減がとても分かりやすくなります。
ソニー以外にも、IR 投資家向けの説明資料で、ウォーターフォールを使っている企業がたくさんあります。便利なチャートなんで、是非皆さんも活用してみてください。
では、良いデータ分析を! Cheers!!
windows で docker image のterraformを使ってみる

# 目的

TerraformをWindows上で実行したいけど、わざわざ、コマンドはインストールしたくないので、Dockerイメージですませられないかと思った。

そこでハマった。。。。


# Docker Image

https://hub.docker.com/r/hashicorp/terraform/

```hashicorp```が作成しているので安心

使い方として、

```bash
docker run -i -t hashicorp/terraform:latest plan
```

が記載されているが、これがミスリードを誘う。


# 実行する。

チュートリアルを見ながら実行する
https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started

適当なディレクトリで```main.tf```を作成する。

```bash

C:\dev\test\teraform>docker run -i -t  hashicorp/terraform:latest init
Terraform initialized in an empty directory!

The directory has no Terraform configuration files. You may begin working
with Terraform immediately by creating Terraform configuration files.    

C:\dev\test\teraform>
```

失敗。。。汗

調べると、誰もハマっているようで。。。
https://stackoverflow.com/questions/62250930/terraform-official-docker-image-cant-see-my-files

```bash
C:\dev\test\teraform>docker run -v "c:\dev\test\teraform":/work -w /work hashicorp/terraform:latest init

Initializing the backend...

Initializing provider plugins...
- Reusing previous version of kreuzwerker/docker from the dependency lock file
- Using previously-installed kreuzwerker/docker v2.16.0

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see  
any changes that are required for your infrastructure. All Terraform commands  
should now work.

If you ever set or change modules or backend configuration for Terraform,      
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

C:\dev\test\teraform>
 ```

できた！
既存のECSクラスタでもContainer Insightsが使いたい

CopilotでECSクラスタ生成した後、コンテナのタスクのメトリクスがみたいなぁと思ったときに対応方法わからんかったので、調べたことメモ。

# AWS ECSでCloudWatch Container Insightsを有効化
- Amazon ECS → アカウント設定に移動
- Container Insightsのチェックボックスをオン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3442/7d06aa7a-bcff-56f0-0e96-55d11af5063a.png)

# 既存のECSクラスタに設定反映
新規クラスタ作成時は、Container Insightsの利用確認する設定があるみたいだけど、既存はコマンドからしかできないみたい。

```
aws ecs update-cluster-settings --cluster awesomeCluster --settings name=containerInsights,value=enabled
```

## 動作確認
（動作確認前に、タスク実行してから）
CloudWatch → インサイト → Container Insightsに移動したら見れるはず

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3442/a1b45a23-de37-5ae0-ea84-655be935e7ab.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3442/a24ff9b2-396c-8b36-2abe-e1f707532226.png)


## 参考

[ECSやEKSのメトリクスを一括取得するContainer Insightsが一般公開！既存ECSクラスタも追加設定可能に！ \| DevelopersIO](https://dev.classmethod.jp/articles/container-insights-ga/)
includePathを更新してください　を解決した時の話

<h1> 出来事 <h1>
<h5>言語はC++、Mingwでgccインストールしてます。<br>
急に「includePathを更新しろ！」と出てエラーになったので<br>
更新してあげました<h5>

<h3>エラーが出た段階<h3>

![スクリーンショット (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828135/29e7bd29-4750-ec2a-7a54-66689b7341e8.png)


<h1>解決した方法<h1>
<h5>①該当エラーの波線部をクリック。<br>
電球を押して「"includePath"設定の編集」をクリック！！
<h5>

![スクリーンショット (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828135/4dd91a08-c21e-ad92-3736-7ee09fbd1403.png)

<h5>②この画面に遷移したら下のほうにスクロール。<br>
コンパイラパスのパスを変更する。<br>
自分は"C:/MinGW/bin/gcc.exe"に変更した。
<h5>

![スクリーンショット (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828135/ce68a936-3cc5-bade-cff8-4b65bea3e1a8.png)

<h5>③元の画面に戻るとあら不思議エラーが消えてる！<br>
補完機能も働いている！！ <br>
ちゃんと実行もできました。
<h5>

![スクリーンショット(33).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828135/430824fc-b244-b171-2138-1455a779cc1a.png)

<h1>終わりに<h1>
<h5>実は投稿前日にvisualstdio2022をインストールしていた。<br>
Pathもvisualstdio2022のほうになっているから・・？
次同じようなことが起きた時はもっとスムーズに解決したい。
<h5>
kintone 算式自動採番 複数項目の自動採番

[算式自動採番プラグイン](https://qiita.com/rex0220/items/2e40a57d2d08023affde) で、複数項目の自動採番を行ってみます。
ステータス毎の月別採番や、区分毎などいろいろな組み合わせで自動採番が可能です。

# アプリの自動採番例

ステータス（案件、見積、注文、納品、請求）毎の自動採番と区分（A,B,C,D）毎の通番の例です。

- レコード詳細
![2022-05-13_11h08_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4fbd6f6b-3c07-d805-dab1-c709563c99c0.png)

- 新規レコード追加
![2022-05-13_12h45_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/e3bd184f-b799-3725-96ca-e3017404c647.png)

- レコード編集
![2022-05-13_12h47_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/1cbfe0b3-7d80-6b30-629c-29339885053f.png)


ステータス遷移と自動採番の操作例

![2022-05-13_11h17_13.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/1958a553-aa69-28d0-6ad9-2ec77ae20939.gif)

# アプリのフォーム設定

番号ごとに、番号（文字列）、採番キー（文字列）、連番（数値）を用意します。

![2022-05-13_11h24_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/6b9d3b33-367e-d2ac-3056-77a8c09ab9ed.png)

# プロセス管理

案件、見積、注文、納品、請求、完了のステータスを設定

![2022-05-13_11h27_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/3282c5dd-266d-4ced-5032-215cfdd86a7f.png)

# 算式採番プラグインの設定

番号の種類ごとに、番号、採番キー、連番を割り当て、計算式を指定します。
採番キー、連番は、通常は非表示にします。

![2022-05-13_11h21_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/928dfc00-2a62-f995-c704-3150261da967.png)

# 採番方法

計算式で文字列と日付、項目の値などを組み合わせて採番キーを作成し、
採番キーで対象アプリの最大値を取得して、自動採番します。

- 案件番号：　レコード追加時に自動採番
    - 採番 計算式："案件-"&区分&DATE_FORMAT("TODAY","YYYYMM")&"-@@@@"
        - 区分と当日の年月毎の採番。番号は４桁
    - 採番条件：　レコード追加時の自動採番は、未設定
- 見積番号：　ステータスが"見積"時に自動採番
    - 採番 計算式："見積-"&区分&DATE_FORMAT("TODAY","YYYYMM")&"-@@@@"
        - 区分と当日の年月毎の採番。番号は４桁
    - 採番条件：　ステータス="見積"
        - ステータスが"見積"時に自動採番
- 注文、納品、請求の番号は、見積番号と同様
- 区分別番号：　レコード追加時に自動採番
    - 採番 計算式：区分&"-@@@@@@@"
        - 区分毎の採番。番号は７桁

# 案件番号の自動採番例

計算式：　"案件-"&区分&DATE_FORMAT("TODAY","YYYYMM")&"-@@@@"
区分"A"で、当日 2022-05-12 で計算すると、
- 採番キー：　「案件-A202205-@@@@」
"@@@@"は、自動採番する桁数を@ の数で指定しています。

※年月が変わると、採番キーが変わるので、連番も初期値から採番されます。

採番キー「案件-A202205-@@@@」で、連番が最大のレコードを取得して+1して採番

![2022-05-13_11h55_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/ec089576-4648-4455-ec96-6e1a96a8090a.png)

# 区分別番号の自動採番例

計算式：　区分&"-@@@@@@@"
区分"A"で、で計算すると、
- 採番キー：　「A-@@@@@@@」

※区分毎に、採番キーが変わるので、区分ごとに初期値から採番されます。
Webプラットフォームの最新についていけていない人はこの動画を見よう

https://io.google/2022/program/3c60e411-5340-4c54-a037-3aceb2825b16/

Google I/O 2022 Keynoteの1つの、「What's new for the web platform」の紹介です。

パフォーマンス、セキュリティ、プライバシー、JavaScript、CSSなど、この1年で新たにできるようになった機能や、Interopが改善された機能などが30分で網羅的に紹介されています。

Interopの取り組みや、実験的な機能も含めて紹介されているので、今後にワクワクできます。

Youtubeの方のDescriptionに記載されていますが、詳しく知りたい方は参考資料がありますのでこちらで学べます。

## [UI](https://youtu.be/5b4YcLB4DVI&t=51s)

- [CSS accent-color](https://goo.gle/399xjOz)
- [CSS color-scheme](https://goo.gle/3N1kpRe)
- [dialog](https://goo.gle/3L07LjR)
- [selectmenu](https://goo.gle/3M5jVt8)
- [Selectmenu demos](https://goo.gle/3wftMGh)
- [Input datetime-local](https://goo.gle/3ysFCzj)
- [COLRv1 fonts](https://goo.gle/3L2zeS3)


## [Peformance](https://youtu.be/5b4YcLB4DVI?t=334)
- [Back/forward cache](https://goo.gle/39SJgbJ)
- [loading="lazy"](https://goo.gle/3w3DigU)
- [CSS aspect-ratio](https://goo.gle/3M2a6fK)
- [CSS containment](https://goo.gle/396F080)
- [Content visibility](https://goo.gle/3yAFcqC)
- [Priority hints](https://goo.gle/3M4O388)
- [CSS size-adjust](https://goo.gle/3w3E25G)
- [SIMD](https://goo.gle/3Fy57Rj)
- [Interaction to next paint](https://goo.gle/3NaAyUF)

## [Privacy and Security](https://youtu.be/5b4YcLB4DVI?t=750)
- [CHIPS](https://goo.gle/3wpBEFk)
- [Topics API](https://goo.gle/3ytEsDL)
- [UA client hints](https://goo.gle/3L1Pov4)
- [Webauthn](https://goo.gle/3wlrGVc)
- [Webauthn passkeys](https://goo.gle/3M6MuGA)

## [Web app capabilities](https://youtu.be/5b4YcLB4DVI?t=983)

- [Media session API](https://goo.gle/3FwwbAC)
- [Window controls overlay](https://goo.gle/3L3xbNM)
- [Navigation API](https://goo.gle/3KVQGru)
- [Page transition API](https://goo.gle/3kVBFLF)
- [Themes in manifests](https://goo.gle/3ynnhUu)
- [Eyedropper API](https://goo.gle/3w1spfk)
- [Virtual keyboard API](https://goo.gle/3yx0CVI)

## [Scripting primitives](https://youtu.be/5b4YcLB4DVI?t=1252)

- [structuredClone](https://goo.gle/3M2DQc9)
- [createImageBitmap](https://goo.gle/38jXyBI)
- [Top level await](https://goo.gle/39VD8zz)
- [Private fields](https://goo.gle/3ytxPBi)
- [array.at](https://goo.gle/3yrenoU)
- [SharedArrayBuffer](https://goo.gle/3L3J2vb)
- [URLPattern](https://goo.gle/3P5e2y2)
- [Web codecs API](https://goo.gle/3Pnl2GS)

## [CSS](https://youtu.be/5b4YcLB4DVI?t=1484)

- [CSS cascade layers](https://goo.gle/3M58Ubc)
- [CSS :has()](https://goo.gle/38cggeF)
- [CSS container queries](https://goo.gle/3FA9Odx)
- [Container query polyfill](https://goo.gle/3ytfjJy)
- [Interop 2022](https://goo.gle/3rjw0Tf)

まだ各ブラウザの最新バージョンでしか有効化されていないものもあったり、一部のブラウザのみでしか使えない機能もありますが、[Interop 2022](https://goo.gle/3rjw0Tf)の取り組みも行われているので、今後の当たり前になっていくかもしれません。

## 最後に

リストを見返してみると、知らないものが結構あったので詳しく調べて別の記事にできたらと思います。
vbsの作法 その51

# 概要
vbsの作法、調べてみた。
htaでhtml5testやってみた。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/6a388abb-74b0-0af8-a88a-212e25517ff9.png)

# 環境

windows 10 64bit

# サンプルコード

```
<html>
<head>
<meta http-equiv="x-ua-compatible" content="IE=9">
<title>test</title>
<hta:application navigable="yes">
<script type="text/javascript">
location.assign("http://html5test.com/");
</script>
</head>
<body></body>
</html>

```


以上。
【ServiceNow】2要素認証設定

本記事ではServiceNowが標準で提供しているPluginを使用して、2要素認証設定を実装します。

バージョンとUI情報は以下となります。
バージョン：Sandiego
UI：旧版（Quebec以前）より

以下が目次です。
・Plugin有効化
・MFA有効化
・MFA適用条件の設定（Roleベース）
・ユーザへの適用設定
・ログイン検証

# Plugin有効化の確認

手順1
admin権限を保持するユーザでログインします。

手順2
アプリケーションナビゲータに"Plugin"と入力し、"System Definition" > "Plugins"を選択します。

手順3
ALL Applicationsより、検索欄に"MFA"と入力し、"Integration - Multifactor Authentication"がInstalledとなっていることを確認します。
※インストールされていない場合はActivation処理を実行してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/398f83da-7e88-7983-f658-09fae46a50ec.png)

# MFA有効化
Plugin有効後、機能の有効化を実施する必要があります。以下手順です。

手順1
アプリケーションナビゲータに"Multi-factor Authentication"と入力し、"Properties"を選択します。
※検索キーワードは略語でも問題ありません。

手順2
Enable Multi-factor AuthenticationをYES（チェック付与）し、Saveします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/62353052-c7e0-61fc-c231-0271a698a1be.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/1d12abc2-569d-bbff-0913-ba8566fa5514.png)

# Roleベース設定
標準設定の場合、以下のRoleが付与されているユーザにMFAが有効化されます。
これでは管理者のみとなってしまうため、個別にtest_mfaロールを追加、このロールが付与されているユーザをMFA有効化対象とします。
※Roleの追加は別途実施しておいてください。

- 標準
user_admin
security_admin
admin

手順1
既存のRoleを左側の×をクリックし削除し、test_mfaロールを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/2d74b45c-614f-ba10-6aed-1168e6081d6c.png)

# ユーザへのRole付与
ユーザへのRole付与を実施します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/5ddcb028-a15c-4a52-849b-c4b82098cd90.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/7f388527-19d9-41ea-c6ca-4cab1ec6d4c4.png)

# ログイン検証
以下の手順でログインの検証を実施します。

手順1
ServiceNowへMFA有効化ユーザでログインします。

手順2
Enable　Multi-factor authentication(MFA)画面が開きます。
この画面が開きましたら、
AuthenticatorツールでQRコードを読み込むorQRコード配下にあるコード情報（文字列）をコピーします。

-メモ
ここでAuthenticatortoolの紹介をします。
私が使用しているのは以下です。メインはMicrosoft Authenticatorです。
IOS版は別途検索してください。

Google Authenticator
https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=ja&gl=US

Microsoft Authenticator
https://play.google.com/store/apps/details?id=com.azure.authenticator&hl=ja&gl=US

-ここまで

手順3
QRコードで読み取り、コードの入力を行うと6桁の認証コードを取得可能です。
その値を以下画像のステップ3の枠に入力し、認証します。

手順4
ログインできたことを確認します。
Role付与した際のユーザとログイン検証時のユーザが異なっていますが、adminでも実施したためご容赦ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/bb559813-a7fa-bdde-c20c-9321f3618ec5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/0a19ce2c-84b6-dfa2-35bd-d532ef2c0391.png)

以上です。

ServiceNowではPluginの導入と簡単な設定のみ（ノーコード）で2要素認証の導入が可能です。
導入にはPC/スマホへのAuthenticator Tool導入などハードルはありますが、セキュリティ向上に対する費用対効果は絶大と考えます。

参考
Multi-factor authentication (MFA)
https://docs.servicenow.com/ja-JP/bundle/sandiego-platform-administration/page/integrate/authentication/concept/c_MultifactorAuthentication.html
Google Tag Managerのプレビュー(Tag Assistant)を別タブで開く

# やりたいこと

GTMのプレビューでタグの確認するとき、別ウィンドウで開いてしまい面倒。
DevToolも別ウィンドウで開くのでさらに面倒。
手軽にタブ化して幸せになりたい。

# 解決策1　Chrome拡張機能で対応

## 拡張機能をインストール

Tag Assistant Companion
https://chrome.google.com/webstore/detail/tag-assistant-companion/jmekfmbnaedfebfnmakmokmlfpblbfdm

## Chromeでプレビューを開く

![Untitled1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533120/a1cd9a87-3aac-d223-5ef6-2ded35fbb29c.png)

拡張機能を入れたあとは、プレビューが別タブで開くようになる。

# 解決策2 Chromeのメニューバーから対応

## Chromeでプレビューを開く

まずは、いつもどおりに別ウィンドウでプレビューを開く

![Untitled1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533120/a1cd9a87-3aac-d223-5ef6-2ded35fbb29c.png)

## Chromeのメニューからタブ化

メニューから「ウィンドウ　>　タブで表示」でウィンドウをタブ化。

![Untitled2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533120/2df1c358-371a-8c19-d7b4-b89a18563cd6.png)
【Flutter】Androidの感覚で実装してiOSで起こした不具合

# 不具合発覚
iOSの端末で名前が入力できないとの問い合わせから判明しました。

# 調査
以前、showCupertinoModalPopup を使った際に、Focus と Cursor の挙動がおかしくなったことがあったので似たような問題かな？と思ったが違いました。

連絡をくれた方とやり取りすると、日本語が入力できないとのことだったのでキーボードの設定周りを中心に調査するようにしました。

# 原因

以下の条件で再現することがわかりました。

- キーボードを絵文字と Gboard のような他社製キーボードのみにしている
- TextField の `inputType` に `TextInputType.name` を設定している

`TextInputType.name` を指定すると、iOS では　`keyboardType` に `namePhonePad` が設定されるのですが、他社製キーボードのみにしていると、該当のキーボードがないため日本語を入力するキーボードが選択できないため入力できなくなってしまっていました。

# 対応

`inputType`　を　`TextInputType.name`　-> `TextInputType.text` に変更し、
連絡をくれた方には暫定的に標準のキーボードを一時的に追加してもらいました。

# 雑感

正直、iOS のバグじゃね？ってなりました。
Android の開発の際は `android:inputType` は意識的に設定するようにしてたので
`TextInputType.name` が原因で不具合になるとは思ってもいなかったわけです。
 
調べてみると、iOS のキーボードタイプに関するバグの記事は結構見つかります。

iOS を開発している人に聞いてみても、
「`email` しか設定しない」
「ほぼ設定しない。`email` と　`numberPad` は使うけど　`numPad` も微妙に使えない。。。」
というような回答が。

確かに、`TextInputType.number` を指定した際、iOS では次へとかのアクションボタンが表示できなくて、色々実装したな。。。
Digital Experiencesとの格闘（疲れます）

[Trailhead関係　個別の課題別 に戻る](https://qiita.com/Keiji_otsubo/items/56eb7a90bb72138ece1f)

プロファイルの設定をできるようにメニューに追加したい。（ただそれだけですが、1時間経過）


メニューを追加したいが分からない。自分が作ったプログラムは全くいけてないけど、人が作ったものは理解すらできん。目的の場所にたどり着けないし、エラーの意味も分からない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/c98230c9-1c82-9a86-8a3e-f2940baaa8f8.png)

とりあえず、矢印のところをクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/d882e650-de15-053f-9847-bbf0572be984.png)
ここも矢印のところをクリック


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/6fce1e73-fda9-2f8a-84aa-3e568b41314e.png)
ここも矢印をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ebe15fbc-9f22-14db-e980-e1528106e073.png)
緑の枠のように入力して保存ボタンを押すと... エラーだ。
ああ、なんか以前によく見たエラー。そのときも意味が分からん。解決しなかったような気がします。


The URL for Profile requires one or more parameters. Please replace each parameter with the appropriate value.

[メニュー項目を追加するときのコミュニティビルダーのナビゲーションメニューエラー](https://developer.salesforce.com/forums/?id=9060G000000I6imQAC)
以下を参照しろと書いてある。

[クラウドサイトの「ナビゲーション」メニューパラメータエラーを体験する](https://help.salesforce.com/s/articleView?id=000335703&type=1)

これを入力すると保存できた。
```
/profile/home
```
RubyのC拡張で例外クラスを定義する方法

## はじめに

Ruby言語では、StandardErrorを継承して例外を定義する。

```ruby
class NoIndexError < StandardError; end
```

RubyのC拡張ライブラリ(Ruby C extension)で例外クラスを定義したい。

## やり方

### 例外クラスを定義する

C拡張を書く時もRuby言語とまったく同じように、StandardErrorを継承したクラスを定義すればよい。
以下のようにして例外を定義できた。

```c
VALUE rb_Bio;
VALUE rb_CGRanges;
VALUE rb_eNoIndexError;

void Init_cgranges(void)
{
  rb_Bio = rb_define_module("Bio");
  rb_CGRanges = rb_define_class_under(rb_Bio, "CGRanges", rb_cObject);
  rb_eIndexedError = rb_define_class_under(rb_CGRanges, "IndexedError", rb_eStandardError);
// 以下略
```

### 例外を呼び出す

`rb_raise` を使えばよい。
ここでは、インスタンス変数 `@indexed` をチェックして、`true` だった場合には例外を発生させる。
`RTEST` は、true/false を判定してくれる。

```c
  if (RTEST(rb_ivar_get(self, rb_intern("@indexed"))))
  {
    rb_raise(rb_eIndexedError, "Cannot add intervals to an indexed CGRanges");
    return Qnil;
  }
```

### 動作を確認する

test/unit を使っているので、下記のようにテストを作成した。
期待通り例外を発生させることができた。

```ruby
    cgranges.index
    assert_raises(Bio::CGRanges::IndexedError) do
      cgranges.add("chr1", 10, 20, 0)
    end
```

この記事は以上です。

よい一日を。
【Python】複数拡張子を指定して、ファイル一覧を取得する

# 概要
特定のディレクトリから、複数の拡張子を対象としてファイル一覧を取得したい場合のメモ。

特定のディレクトリに格納されているファイル一覧を取得したい際には、`glob`モジュールを使用する。

## ソースコード
```Python
import glob

file_list = [] # 対象ファイル一覧
TARGET_EXTENSIONS = ("mp4", "mov", "avi") # 対象拡張子

for ext in TARGET_EXTENSIONS:
  # 取得対象のファイルパス(今回は./hogeを対象とする)
  target_filepath = f"./hoge/*.{ext}"
  # ファイル一覧取得
  file_list.extend(glob.glob(target_filepath))

```

おわり
自分用メモ: empty可変長引数Ver.

## まえがき
`isset()`は可変長引数対応なのに`empty()`は対応してない！どうして！と思ったので。  
n番煎じだったらゆるして

## コード
```php:function_emptyAny.php
function emptyAny(mixed ...$vars) {
    foreach ($vars as $v) {
        if (empty($v)) return true;
    }
    return false;
}
```

## あとがき
`emptyAny()`は引数のうち一つでも空のものがあれば`true`、すべて格納されていれば`false`を返す。  
アンケートフォームのサーバーサイドバリデーションにつかいました！！！

## コメントより
コメント欄に`array_filter()`使ったもっと便利な方法あるから見て！！！ありがとうございます！！
リストアイテムの登録日時、更新日時の中身を調べてみた



### リストの列名と形式

|外部名（表示名）|内部名|値の形式|
|---|---|---|
|登録日時|Created|2022-03-11T09:32:54Z|
|更新日時|Modified|2022-03-17T10:24:30Z|
rootkit ってなに？

## 勉強前イメージ

アンドロイドのなんかやったようなきがする
気のせい？

## 調査

### rootkit とは

不正アクセスに成功した攻撃者が侵入した後
管理者に気づかれずに遠隔操作するためのツールを指します。
例えば、遠隔操作の際にログを残さないようにするものだったり
他のマルウェアが刺入して攻撃するのを補助するようなツールも含まれています。

これらは一般的なセキュリティソフトでも検知が難しい。
理由としてはrootkit自体が自身の存在を隠蔽する機能を持っているので検出が困難といわてています。

rootkitは [ダークウェブ](https://qiita.com/miyuki_samitani/items/3518a865324e294643e8) で取引されて
悪意のある攻撃者にわかっていると言われています。

### rootkitのツール

rootkitには以下のようなツールが含まれています。

- ログ改ざんツール

侵入を隠蔽、rootkit自体の存在を隠して検知をさせなくする

- バックドア生成ツール

rootkitの侵入経路を塞がれたとしても、再度侵入できるように裏口(バックドア)を仕掛ける

- トラフィック監視ツール

ネットワークを介したデータを盗聴する

- キーロガーツール

入力データを盗み見て機密情報を抽出

### rootkitのモード

rootkitには以下のようなモードがあります。

- ユーザモード

アプリケーションの乗っ取りやメモリの上書きを行う

- カーネルモード

これに感染してしまうと全て完全に自由に制御されてしまう

## 勉強後イメージ

全然違うやん・・・・
しかもrootkitでいろいろ仕掛けられると、もうすべて見られてるようなものか

## 参考

- [ルートキットはなぜ危険なのか？どのような対策が必要とされるのか?](https://eset-info.canon-its.jp/malware_info/special/detail/200630.html)
- [ルートキットとは？攻撃手法から予防策までカンタンに解説！](https://it-trend.jp/anti_virus/article/cyber_attack_series)
IBM Cloudダッシュボードからリソース・リストの表示方法

IBM Cloudダッシュボードからリソース・リストの表示方法です。
リソース・リストはIBM Cloudのリソース一覧が表示でき、リソース名をクリックすることで、詳細画面が表示できます。
UIはコロコロ変わるので、これは2022/05/13時点での情報です。

# 1. IBM Cloudにログイン　
https://cloud.ibm.com/ からIBM Cloudのコンソールにログインし、ダッシュボードを表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/82895aeb-6007-1f73-865e-90943d59d343.png)

# 2. 左上のナビゲーション・メニューをクリックし、「リソース・リスト」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/f0a10bb6-65c7-0c42-88e3-e03171191b87.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/6163d4c8-de64-d3b5-cb5c-d9a111b686e3.png)

またはダッシュボードの「リソースの要約」にある「すべて表示」をクリックでも同じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8a171889-e61c-8d22-ce86-a05d41e7990d.png)

リソース・リストが表示されました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/d54762c6-88bf-5600-0d08-5fb2490628aa.png)

以上です。
ミシュランと製品・研究開発におけるAI

応用数学とデータの活用は、常に製品の研究開発の一部となっています。とくにミシュランでは、R&D部門は30年以上のシミュレーションの歴史があり、材料の分子がどのように相互作用するか、製品が道路上でどのように作用し、摩耗し、性能を発揮するかなど、あらゆることをモデリングしています。 このように製品開発や研究開発におけるAIの応用の可能性は広いですが、機械学習と製品の専門家はどのように連携してこれらの応用を実現できるのでしょうか。
ミシュランは過去5年間、タイヤの設計とテストのプロセスに、より多くの機械学習を取り入れることに取り組んできました。Dataikuの研究担当副社長でAIラボの責任者であるLéo Dreyfus-Schmidtが、ミシュランのAIとデータサイエンスに関するシニアフェローであるFrançois Deheeger氏と、対談でその詳細について話しました。
<font color="LightSeaGreen">→ミシュランの取り組みについて、ビデオ（英語）は[こちら](https://play.vidyard.com/a4aDZziWJy9NcMxfizDAoX.jpg)</font>

”私たちは、（データの）背後に機械学習モデルを置こうと取り組んできており、この取り組みは順調です。もちろん、データを収集し、適切なパラメータや特徴を使用するために多くの作業が必要ですが、コンセプトはうまく機能しています。一方、モデルの品質については多くの疑問があります。例えば、新しいアイデアを得るために役立つのであれば、機械学習モデルの使用自体はそれでいいのですが、目標やゴールは、モデルを通じて製品に対する確信を持つことです。つまり、どの自動車メーカーに行っても、「うちのモデルはこう予測していますので、信頼していただけますよ」と言えることが我々の究極の目標になります。”
*ー ミシュラン AI・データサイエンス シニアフェロー フランソワ・ドゥヘーガー氏*


## 製品開発・研究開発プロセスにAIを浸透させるには

機械学習モデルによって製品に対する確信を持つ、という目標を達成するために、ミシュランは4つの領域で開発に取り組んでいます。

1. **より優れたモデルの構築** チームはビッグデータ環境にいるわけではなく、経験豊富なエンジニアによる多くの物理的知識を持っています。このような制約と資産がある中で、精度と加速を追求するハイブリッドシミュレーションに移行するために、どのように深い知識と専門知識を利用してモデルを構築すればよいでしょうか。
2. **良いモデルとは何かを定義する** これには、予測の不確実性と不正利用領域の評価を通じて、エンジニアに信頼されるAIソリューションを提供することが含まれます。
3. **ソリューションを考え出す** エンジニアは、すべての可能な組み合わせの予測を求めているわけではありません。彼らは解決策を求めています。チームは、定義されたパラメータ内の最良のトレードオフを迅速に評価する方法を提供する必要があります。
4. **質問に答える** 「これは事実ですか？」 予測された性能は、顧客が目にしている性能と関連しているでしょうか。製造や使用方法など、実際の使用の不確実性についてソリューションの堅牢性を評価し、現実のパフォーマンスを予測すべきことを意味します。


詳しくは、こちらのビデオ[「ミシュランが機械学習とAI技術（ディープラーニングを含む）を製品開発とR&Dプロセスにどのように組み込んでいるか」（英語）](https://videos.dataiku.com/watch/a4aDZziWJy9NcMxfizDAoX?)をご覧ください。


## DataikuのAIラボについて
MITの論文で、コンピュータサイエンス研究者のJeannette Wingは、"因果関係は、AIや機械学習の次のフロンティアである"と述べています。このテクニカルEBOOKでは、因果関係の推論とその特質、そして因果関係の効果を推論するために通常のMLを使うことの危険性について、心をこめて解き明かします。
[EBOOKのダウンロードはこちら](https://pages.dataiku.com/causal-inference)


<br>
<br>


原文：[*AI in Product Development and R&D*](https://blog.dataiku.com/ai-product-development-rd-michelin)
iPadのSwift Playgroundsだけでswift初心者の高校教師がアプリの開発に挑戦してみる　＜その1＞

## はじめに

### 自己紹介

私は高校で教員をしています。

2022年度は高校現場を離れて、大学でICT教育の研究をしています。研究課題の一つとして「プログラミング教育」を設定しているので、まずは、プロのエンジニアではない自分が自身の力だけでiPadのみを用いてアプリの開発というものがどこまでできるのか試してみることにしました。

ちなみに、私はプログラミングが全くの未経験というわけではありません。教員として働く以前はソフト会社で組み込みエンジニアをしていた経験があるので、C言語だけはすこし分かります。とは言っても、もう10年以上はプログラムのコーディングなどはしていませんし、GUIを伴うアプリケーションの開発はしたことがありませんので、その分野については正真正銘の初心者です。

### 経緯

私が勤務している高校では、2022年度から入学してくる1年生が1人1台iPadを持っています。iPadだけでアプリの開発、配信までできるのであれば、その実践を授業に取り入れることができると考え、今回の取り組みを決めました。

そして、同じようなことを考えている方の参考になればと思い、備忘録も兼ねてこの記事を書くことにしました。

というか、実は4月の後半からこの取り組みは始めているのですが、分からないことが出てくると、その都度ネットで検索して解決して少しずつ前に進めています。その時に、よくお世話になっているのが、この「Qiita」です。

https://qiita.com/

まだまだ、これからたくさんお世話になると思いますが、私もこれから記事を書くことで恩返しすると同時に、もっと助けてもらおうという希望を持っています。

ということで、プロのエンジニアの皆様、私が独学で進めていく過程をこれから記事に残していきますので、「それをするなら、まずはこのドキュメントを読んだ方がいいよ。」など、具体的なアドバイスがありましたらどしどしコメントを下さると大変嬉しく思います。

## swiftとは？

Appleが2014年に作った比較的新しいプログラミング言語のことです。

それまで、AppleではObjective-Cというプログラミング言語を使ってアプリの開発をしていました。しかし、Objective-Cは複雑で習得が難しい言語だった為、iOSやMac OSのアプリ開発者を増やすためにシンプルで、初心者の人にも学習しやすいSwiftが作られました。

基本的にはSwiftを用いてアプリの開発を行う場合、Mac AppのXcodeというアプリを使います。

しかし、今回はMacを使わず、高校生が持っているiPadだけで押し切ろうという試みです。

## 開発の環境を整える

https://apps.apple.com/jp/app/swift-playgrounds/id908519492

まずは、Swift PlaygroundsをiPadにインストールします。

前述の通り、XcodeはMac AppなのでもちろんiPadでは動作しません。

### Swift Playgroundsとは？

Swift Playgroundsは楽しみながらプログラミングを学び、本物のAppを作ることまでできるとAppleがうたっているiPadでも動作するApple純正のアプリで、もちろん無料です。

今回の私の目的には打って付けのアプリです。というか、このアプリを最近知ったのでこの取り組みを始めたんです。

https://ascii.jp/elem/000/004/081/4081131/

Swift Playgroundsは2016年に登場以来、着実に進化を続けてきており、2021年12月にバージョンアップしたSwift Playgrounds 4において、はじめてオリジナルのアプリを作成する実践的な機能を追加しました。

これは大きなニュースだったようで、これに関する記事は調べればたくさん出てきて、プログラミングに精通したエンジニアの方が使ってみた感想などは数多く聞くことができます。

しかしながら、実際に本当の素人がこのアプリを使ってプログラミングの学習を始める所から、具体的にアプリの開発、配信までを行う記事は見当たらなかったので、私がその先駆者になろうというわけです。

ちなみに、ハード面の環境は以下の通りです。

- 12.9インチiPad Pro
- Magic Mouse 2
- Magic keyboard JIS A1644

事前に調べたところ、やはりキーボードは必須ということで購入しました。実際、物理的なキーボードなしで、プログラムのコーディングを継続的に行う事は不可能だと感じました。12.9インチのiPadを使用しているので画面が大きいにも関わらず、ソフトウェアキーボードの圧迫感は我慢できません。

![30D88F67-4FA8-4144-B82C-79B3A1BD7C66.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661763/35911cd5-2cda-3f25-74bb-498ddc282856.jpeg)

また、マウスの使用も「できれば」ではなく必須であると感じます。コーディング中に繊細な画面のタッチ操作が必要になることは大きなストレスとなり、著しく生産性を落とす要因となります。

つまり、iPadであってもコーディング作業はパソコンスタイルでなければ取り組み続けることはできないということが分かりました。

![私の開発環境](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661763/590a747f-9f2a-f0ce-1b68-a5bee551d61c.jpeg)

プログラミングが義務教育化していく流れの中で、間違いなく学ぶ人口は増えていきます。その一方で、プログラミングを嫌いになる子どもが出てくることが弊害とならないかが疑問視されています。

まずは、プログラミングを通して子どもたちに楽しい体験をしてもらうために、環境の構築はとても大切だということです。

プログラミング教育の本質とは違うところで、プログラミングを嫌いにさせてしまっては元も子もありませんから。

長くなってきたので、今回はここまで。次回から具体的な取り組みを進めていきます。

https://qiita.com/kerikerijy/items/15c1333ecdd6df22d67e
「拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜」を参考にWolframAlphaでやってみた。

オリジナル

https://qiita.com/drken/items/b97ff231e43bce50199a


distinct:明確(deepl翻訳より）

# 1-1. ユークリッドの互除法のやり方

https://www.wolframalpha.com/input?i=gcd%28300%2C780%29


Result
60
Prime factorizations
300 = 2^2×3×5^2 (5 prime factors, 3 distinct)
780 = 2^2×3×5×13 (5 prime factors, 4 distinct)


# 1-2. ユークリッドの互除法がなぜ必要か

https://www.wolframalpha.com/input?i=gcd%28160%2C1200%29

Result
80
Prime factorizations
160 = 2^5×5 (6 prime factors, 2 distinct)
1200 = 2^4×3×5^2 (7 prime factors, 3 distinct)


# 計算ステップ回数が最悪になるケース

https://www.wolframalpha.com/input?i=gcd%2889%2C144%29

Result
1
Prime factorizations
89 is prime
144 = 2^4×3^2 (6 prime factors, 2 distinct)


# 3-2. 一次不定方程式 ax + by = c の整数解を求める具体例

https://www.wolframalpha.com/input?i=11x%2B30y%3D12

Integer solution
x = 30 n + 12, y = -11 n - 4, n element Z

https://www.wolframalpha.com/input?i=11x%2B30y%3D12+over+the+integer

Result
x = -6 (5 n + 3) and y = 11 n + 7 and n element Z
Examples of integer solutions
y = 18 and x = -48
(つづく)



# 3-4. 拡張ユークリッドの互除法のアルゴリズム的記述

https://www.wolframalpha.com/input?i=111x%2B30y%3D3

Integer solution
x = 10 n + 3, y = -37 n - 11, n element Z


https://www.wolframalpha.com/input?i=111x%2B30y%3D3+over+the+integer

Result
x = -10 n - 7 and y = 37 n + 26 and n element Z
Examples of integer solutions
y = 63 and x = -17
(つづく)

# 参考

https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%AF%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E4%BA%92%E9%99%A4%E6%B3%95
[C言語] K&R、ANSIとは

## K&R C

`K&R`自体は**プログラミング言語C**という、Brian KernighanとDennis Ritchieによって書かれたC言語についての書籍の初版を指す様。（つまり、C言語の一番最初のときのこと）
その書籍で提唱されたC言語が`K&R C`。

`K&R C`での関数の例は以下。

```c:K&Rの例
area(width, height)
int width;
int height;
{
  return width * height;
}
```

また、`K&Rスタイル`は字下げスタイルのことで、他にもいくつかある様。（上記のコード）
→ [字下げスタイル - Wikipedia](https://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B%E3%81%92%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB)

`K&R`ではC言語の公式な標準が定められておらず、その後、ANSIでの標準化がされたものが`ANSI C`。

## ANSI C

ANSI、ISOが発行したC言語の標準のこと。

C言語には以下のようにバージョンがあり、

- C89
- C90
- C95
- C99
- C11
- C17

単に`ANSI C`という場合は`C89`, `C90`を指す。

`K&R`で書いた関数の例をANSI Cで書くと以下のようになる。

```c:ANSI Cの例
int area(int width, int height)
{
  return width * height;
}
```

`K&R C`と`ANSI C`の違いについては、
[付録 G K&R Sun C と Sun ANSI C の違い (C ユーザーズガイド)](https://docs.oracle.com/cd/E19957-01/805-7885/6j7dqggde/index.html)
を参照。（`K&R Sun C`と`Sun ANSI C`なので、SunのCコンパイラでの場合の違い）

`gcc`では`-ansi`, `-pedantic`オプションをつけることで、ANSIと互換性のないGCCの機能は無効になる。ただし、仕様に従っていないコードに対してすべて警告が出るわけではない様。
（[Warning Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#Warning-Options)の`-Wpedantic -pedantic`を参照）

```
$ gcc -Og -Wall -ansi -pedantic -o main main.c
```

## Ref

- [プログラミング言語C - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9EC)
- [ANSI C - Wikipedia](https://ja.wikipedia.org/wiki/ANSI_C)
- [O'Reilly Japan - C実践プログラミング 第3版](https://www.oreilly.co.jp/books/4900900648/)
- [付録 G K&R Sun C と Sun ANSI C の違い (C ユーザーズガイド)](https://docs.oracle.com/cd/E19957-01/805-7885/6j7dqggde/index.html)
- [字下げスタイル - Wikipedia](https://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B%E3%81%92%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB)
- [C Dialect Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/C-Dialect-Options.html#C-Dialect-Options)
- [Warning Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#Warning-Options)
- [日記/2010/01/06/プロトタイプ宣言の引数型の格上げとかK&Rとか、 gccの"-traditional", "-ansi", "-pedantic"オプションとか。 - Glamenv-Septzen.net](https://www.glamenv-septzen.net/view/537)
- [C言語関係](http://roadman.gozaru.jp/clanguagetext1.html)
- [C言語 - Wikipedia](https://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E)
- [C (programming language) - Wikipedia](https://en.wikipedia.org/wiki/C_%28programming_language%29)
サーモグラフィ(AMG-8833)で実測

# 背景
自宅でシミュレーションと実測を比較できないかなぁと考えていたところ、サーモグラフィセンサが売られている事を知った。
シミュレーションとの比較を目標に今回はAMG-8833の起動確認を行った。
# 使用したアイテム
- ラズパイ4
- AMG-8833
- windows10
# AMG-8833の仕様とコードについて
以下を参考に。
https://qiita.com/tm_nagoya/items/32d7e5becf73ba8a6110
https://raspi-katsuyou.com/index.php/2020/09/05/13/20/40/1728/
https://www.pc-koubou.jp/magazine/45197
github→https://github.com/mcast2016/AMG-8833test.git
# 結果と今後の課題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172184/83ade56c-71da-fa02-946f-5651973dc0f0.png)
無事起動確認ができた。
上記画像はアイスコーヒーを真ん中に置いており、その部分だけ温度が低い。

今後は以下の課題に取り組んでいく。
- 何か熱の出る部品を測定する環境
今回は撮影しただけで再現性もないので測定しやすい環境を作る予定。
- 放射率の設定
測定したい物質によって放射率が異なるはずなので必要に応じて放射率で温度補正を行わなければならない。