OmniAICreator/Qiita-1.07M huggingface dataset:
[ImageJ] OIRファイルをTIFFに変換する

# Background
ImageJを用いてオリンパス（現 エビデント）の顕微鏡ファイルを開く方法は複数あるが、そのうちの"Open Microscopy Environment"の規格を利用したPlugin（プリインストール）を利用する方法が広く用いられている（気がする）（[1]など）。

複数のファイルを扱いやすいTIFFファイルに変換するコマンドを作成した。

# Command
作成の際、基本となるコマンドとして[2]を参考にした。
```

//フォルダを選択
showMessage("Select Open Folder"); 
openDir = getDirectory("Choose a Directory"); 
showMessage("Select Save Folder");
saveDir = getDirectory("Choose a Directory"); 
list = getFileList(openDir);

//配列「list」の中身をチラ見
Array.show(list); 

//ループを回して全画像を順次処理する
for (i=0; i<list.length; i++){
	
	//指定した場所の画像を開く
	name=openDir+list[i];
	run("Bio-Formats Importer", "open=&name color_mode=Default rois_import=[ROI manager] view=Hyperstack stack_order=XYCZT");
	
	//拡張子よりも前側のファイル名を取得
	name = getTitle();
	dotIndex = lastIndexOf(name,".");
	title = substring(name,0,dotIndex);

	//取得したファイル名を使って、新たな拡張子tifのファイル名を作成
	newname = title + ".tif";
	
	//tifで保存
	saveAs("Tiff", saveDir + newname);

	//画像は処理が終わったらその都度閉じる
	close();
	}
```


# Reference
[1] https://note.com/eiko_dokusho/n/ne31fd8589b63, visited on 2024/05/27.
[2] https://imagej-jisui.hatenablog.com/entry/2021/04/29/181820, visited on 2024/05/27.
単純挿入法(挿入ソート)

## 単純挿入法(挿入ソート)とは

データを並べる整列アルゴリズムの一つ。
要素を一つずつ順番に、正しい位置に挿入していくことで、最終的に全体を昇順または降順に並べ替える。

### 対象データ

以下の配列を昇順に並べ替える

```php
$array = [5, 3, 4, 1, 2];
```

### フローチャート

挿入するデータを`x`に代入。
`x`に代入され、空いた要素の添字を`k`に代入。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/82b2fc0b-4893-5cf4-89fd-fe93e0c2a021.png)

#### 手順

①挿入したいデータは別に変数を用意して代入しておく
②変数のデータを、整列済みデータと順番に比較していく
③変数のデータより小さいデータが見つかったら、その後ろの要素に変数のデータを代入する
UiPathの表抽出で軽くハマってコマった件


初めてUiPathで表抽出を使った前回

https://qiita.com/tantanshio/items/a6722af15ad33b96921c


何気ない処理で軽くハマった、そんなひとコマ。



# やろうとしていたこと

「人気」情報を取得し、メッセージに表示させる　をしようと

![説明001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/fa84d4ee-b956-fa99-2c38-b047814c53b6.jpeg)



実行すると。。。。

![説明002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/2db774ef-d7fc-88d8-78ea-397ad8a9e895.jpeg)


### メッセージが出ず、なんだかところどころ赤い・・・。



結論、表抽出したタイトル名は

「人気」ではなく「人 気」だったため、

UiPathは「人気なんてデータ情報ないよー」とエラーを吐き出したのだ。


# やったこと
表データ抽出をいじっていたら、取得情報見れた

「≡」をクリック
「抽出をテスト」をクリック
![説明003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/e0ea13eb-fb9d-1ce6-21f9-75d32352bb39.jpeg)

しばらく待ち
![説明004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/5c1aacca-6d9c-260c-09af-613380313328.jpeg)

取得情報のプレビューが確認できた
※横にスクロールずらしても確認できるが、CSV出して確認してみる

「CSVとしてエクスポート」をクリック
![説明005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/7f33c033-0456-a940-83ca-1d9ef7ac11f9.jpeg)


CSVの保存先を設定
![説明006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/014f41c0-b1cd-6cec-f3e6-eea7d76cd062.jpeg)


保存したCSVを確認、解決！


![説明007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/a565bacc-19cd-bc14-6810-93dcec3cb312.jpeg)
※画像では間違って「天 気」を範囲選択で色付けしてましたが、人気も「人 気」になってました。





# 修正して、再実行
![説明008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/2075cf61-c01b-4666-c788-59620c1b0a5d.jpeg)

無事、1行目の人気　「１」を取得し、メッセージ表示成功
40代エンジニア志望、TypeScript はじめの一歩

## はじめに

こんにちは！

怪獣８号のアニメ制作会社、Production I.Gやないか！と最近やっと気がついた[@nyakako13](https://qiita.com/nyakako13 "Qiita ページ") です。

アニメ本編では全然気づかなくて、飛ばしていたオープニングをたまたま見て、めっちゃ攻殻機動隊っぽい！と思って調べたらProduction I.Gでしたw

今思えば、PSYCHO-PASS(サイコパス)1期〜2期を10年くらい前に見てから、アニメにハマった気がします。PSYCHO-PASSは刑事モノドラマや近未来系の映画好きでも楽しめる作品で大人にもオススメです！

<br>


さて本題です。

参加中の[JISOU](https://projisou.jp/ "JISOU")の課題として、React×TypeScriptでアプリを作ったので感想や気づきを残したいと思います。


## 作成したもの（シン・学習記録アプリ）
![upload_9c17588b4cdac633e3f24cd1a4942f54.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2539365/df38add8-a133-ecb9-06e6-c94ac5ec8257.gif)


↑gifは[【chrome capture】](https://chromewebstore.google.com/detail/ggaabchcecdbomdcnbahdfddfikjmphe)で収録

https://github.com/nyakako/react-ts-shin-study-record

- 機能
  - 学習記録を一覧でみることができる
  - 新しい記録を登録できる
      - 入力フォームのバリデーション
  - 記録の編集ができる
  - 記録の削除ができる

[前回のアプリ](https://qiita.com/nyakako13/items/ec4603b7f1aeda8fdfa4)と機能には大差ありませんが、Chakra UIで見た目はだいぶ良くなりました！w


## 使用技術

- Frontend:
    - React 18.20.2
    - **react-hook-form 7.51.4** new!
    - **TypeScript 5.4.5** new!
    - **chakra-ui/react 2.8.2** new!

- Backend:
    - Supabase

- Test：
    - Jest 29.7
    - testing-library/react 15.0.7

CI/CD：

- Github Actions

Deploy:

- Firebase Hosting



## 気づき
### ①TypeScriptの導入について
正直、まだ全然慣れませんが、開発中に型推論を活かせたり、事前にエラーがわかるのはやはり良いなと感じました。

エラーが増えまくることで、ここもう少し融通できんのか？と思う事もあったので、今後tsconfigについても勉強していきたいです。


### ②react-hook-formの導入について
バリデーションが楽！
レンダリング回数を減らせる！
reactでフォーム使うなら必須だなと感じました。
まだまだ機能をつかいこなせていないので、引き続き活用していきたいです。


### ③chakra-uiの導入について
簡単にいい感じのデザインを当てられるので、デザインに時間や労力をかけたくない時は良いなと思いました。

でも良いことばかりではなく、他のライブラリとの関係でいろいろ面倒になることも・・・
今回はモーダルを開いたときにインプット要素にフォーカスを当てたかったのがうまくいきませんでした。（フォーカス自体はできるのですが、記録編集時デフォルト値をsetしようとすると競合してしまう）
時間がかかりそうだったので今回は断念しました。またチャレンジしたいです。

あと、chakraに限った話ではないかもですが、importがかなり長くなるのが、ちょっとイマイチ・・・

![upload_da5184462a778e5a44abdd4a40f7b6f4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2539365/8698127c-4915-f835-4014-ffeedd0b7909.jpeg)




## 今後改善したい点
今回の開発ではMVPにはそこまで時間がかからなかったのですが、細かい部分に時間をかけてしまうことが何度かありました。

次からは全体、フェーズ毎に開発期間を設定して、「MVP以外の内容は時間的に余裕があれば取り組む」というスタンスでやっていこうと思います。


## おわりに
よかったら[X(@nyakako13)](https://twitter.com/nyakako13 "Xプロフィール")もフォローしてもらえると嬉しいです。

[Qiita100投稿](https://qiita.com/nyakako13/items/03ad61cfb82a1582b5d1)まで残り86！

未経験や浅経験、厳しいと言われている年代でエンジニアへの転職活動されている方、負けずにがんばりましょう！！

# JISOUのメンバー募集中！
プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
実践的なカリキュラムで、あなたのエンジニアとしてのキャリアを最短で飛躍させましょう！
興味のある方は、ぜひホームページからお気軽にカウンセリングをお申し込みください！
▼▼▼

https://projisou.jp 



## 参考
[【永久保存版】0からReactを勉強するならこのロードマップに従え！](https://qiita.com/Sicut_study/items/78910cd8d103b8d45a73)
N_0_IoTとは？_flipper's circuit Project -電子工作人口を増やすためのプロジェクト-

電子工作をこれから始めるうえでまだ早い話題かもしれませんが、いろいろな「やりたいこと」をみなさんに聞いてみると「IoT」がゴールだったりするので、まずはIoTについて綴りたいと思います。
ほぼ己への備忘録的な目的のまとめ記事です（専門家ではないので解釈ずれてるところありましたらご容赦ください）。

# IoTとはなんぞや

まずは大御所NTTコミュニケーションズさんの表現する「IoTとは」
> IoT（Internet of Things）は、あらゆるモノをインターネット（あるいはネットワーク）に接続する技術であり、日本語ではモノのインターネットと訳されます。

出典：https://www.ntt.com/bizon/glossary/e-i/iot.html

インターネットの技術を経由して物理デバイスで何らかの動作をさせる、データをとる、そのような技術のようです。とはいえ「IoT」というものは最近できたものでもなく、昔は「データロガー」という名前があったそう。今でもデータを集めて保存するシステムがそう呼ばれていますね。

遠隔で、何かをコントロールする、何かを動かす。そのためにインターネット経由で通信しているものとでもざっくりイメージできればいいと思います。

# 電子工作の上でこれから進めるIoTのイメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/b2cd5a4e-10cd-13be-eab1-952bbc25d37a.png)

世の中の企業様方が作っているIoTはこのとおり、インターネットを介して「モノ」（センサやアクチュエータ、ほかにも人や家電、さまざまな物理的なもの）を動かしています。インターネットでいろいろな情報を集め、処理するような構造です。むずかしいっすね。

いきなり個人レベルでここまでのものは作れないので（予算や時間や手間が際限ない）、小さくこんなイメージで組み立てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/c22b1581-4fb5-2b45-bff7-d38ae670ac74.png)

**【IoTエッジ】** 各種センサやスイッチ、カメラなどの入力デバイス、リレーやRCサーボなど各種操作器、ほかラズパイやArduinoなどの処理装置に接続してデータ収集、制御実行します。

**【ゲートウェイ（センター装置）との接続】** 有線、無線など各種通信システムを使用。IoTエッジから直接クラウドに接続する構成もあります。

**【ゲートウェイ（センター装置）】** パソコンやラズパイなどを使用し、複数のIotエッジからの情報を収集します。アプリケーションで処理した後で、IoTエッジの制御実行することもあります。

**【クラウド】** データをインターネット公開することで、どこからでもデータ監視できるようにします。（個人的になるべく無償のでやりたいです）

# IoTシステムに必要な技術範囲

進めていくうえで獲得していきたい技術をざっくりまとめます（書籍に書かれていることの抜粋）。こういうものの知見を得ていくよ、いきなり製品作るは無理だよ、てニュアンス伝わりますように。実際は少しずつ体験して、理解して、一歩ずつ進めましょう（自分に言い聞かせ）

### 1 IoTデバイス（IoTエッジ）の開発

・ハードウェア開発では、マイコンなどの小規模プロセッサ技術が必要になる
・小型電池で長時間動作させるための低消費電力化技術が必要になる場合もある
・外部インタフェース開発には、アナログ回路、各種の信号変換回路技術、シリアル通信技術も必要となる
・ソフトウェア開発では、組み込みソフト技術が基本となる。LinuxなどのOS技術が必要となる場合もある

### 2 通信システムの開発

・有線通信、無線通信いずれも使われる
・通信距離、通信速度、消費電力、実装方法など、特に無線通信では特有の技術が必要になる

### 3 ゲートウェイの開発

・ハードウェア開発では、IoTデバイス側との通信技術、上位側とのインターネットを含めたネットワーク技術が重要になる
・ソフトウェア開発ではOSの技術が必要
・プログラミングもネットワークを使う技術が必要となる
・クラウドとの接続では、セキュリティ技術が必要

### 4 クラウドとの接続

・クラウドが提供する機能でアプリケーションを作成する技術が必要
・各種のネットワークサービスを使う技術が必要
・セキュリティの技術が必要
・場合によってはビックデータを扱う技術が必要

# IoTエッジについて

IoTシステムを構築する場合にまず必要なのが、IoTエッジ機器です。
ここではセンサやアクチュエータ自身は含みません。
IoTエッジ機器では、次のような機能が必要となります。

### 1 センサやアクチュエータを接続し制御する機能

・アナログ入力、I2C、SPIなどのシリアルインタフェース機能
・オンオフ制御や、PWMなどの操作機器の制御機能
・カメラの画像転送処理機能

### 2 上位システムとの通信機能

・単純なシリアル通信、イーサネットLANなどの有線通信機能
・Wi-Fiなどの高速無線通信機能

### 3 データ処理

・収集したデータの集計、保存などの処理機能

### 4 表示機能

・センサやデータ、状態などの表示機能

> これらの機能について網羅したワンボードマイコンについては、次の記事にまとめます。

# ゲートウェイ（センター）で使われる機器

センター装置の基本機能として必要な機能は次のようなものになると想定されます。切れ以外に、それぞれのアプリケーションとして必要な処理はありますがいったん省略します。

### 1 IoTエッジ機器を接続する機能

・基本的に通信することになりますので、シリアル通信やLAN,Wi-Fiなどの有線・無線の通信機能が必要
・距離が離れている場合や多数のIoTエッジを接続する場合には、LoRa、LPWAなどの長距離無線が必要

### 2 上位のサーバやクラウドとの通信機能

・インターネット経由での接続になる場合が多いので、LANやWi-Fi機能が必要
・セキュリティ対策も必要

### 3 データ処理

・多数のデータの集計、保存や統計処理などが必要
・上記のデータをつかって、何らかの予測をすることもあり得る

### 4 表示処理

・データの処理や予測結果などの通知に、グラフ表示など高度な表示処理が必要

> センター装置で使われるのは、ここではPCやラズパイです。

長くなりましたがそれぞれIoTに必要なもの、必要な機能などをまとめました。
次の記事にてエッジ側で使われるデバイスについてまとめます。
Python3: Moodleの「参加者」の「詳細レポート」で、小テストを実施した回数をカウントする

# はじめの前のおねがい
できれば「いいね♡」をお願いします。励みになります。

# はじめに
このコードは**Python3**に対応したMoodleの「参加者」の **「詳細レポート」** から、**小テストを実施した回数**をカウントするためのものです。

# このコードの目的
Moodleは低コストで課題や小テストなどが運用できるのは良いのですが、データベースが **学生さんごとに表示されることを前提**としていて、なんとなくカード型データベースっぽい感じがします。学生さん1人1人を見るときにはそれで良いのですが、授業運営をする場合には**小テスト**の最高点がどうなのか、受験回数はどうなのかといった統計値を出す必要があるわけで、基本的にはサイドバーの「評定」を使用して得点状況については一覧性のあるデータを抽出できるわけですが、正直言って小テストが多ければ多いほど、学生さんが増えれば増えるほどスクロールも増え、どうも統計値を出すのにExcel（あるいはNumbers）の方が使い勝手が良くなります。

その場合、**何度受験しても構わないし、その中で最高点を評価として使用する**というある意味アメリカ型（？）の方式をとる場合、学生さんによっては百何回、何百回と小テストを実施する人が出てきます。

とりわけ語学教育の場合を考えると、高得点を1回取ったとしても、放却曲線を考慮に入れた場合、小テストの実施回数は非常に重要な要素となります。そのため、小テストの実施回数そのものも科目担当教員にとって、計算値に組み込みたいというケースが出てくるかと思われます。

このコードはExcelやその他、表計算ソフトやデータベースソフトにコピペできるように、**小テストを実施した回数**を文字列としてクリップボードにコピーするものです。

# 本コードを実行するとどうなるか
本コードを実行すると
1. クリップボード内に入っている文字情報を読み取る
1. その文字のうち「受験」から始まる文字列を検知してカウント
1. 除外条件で指定された文字列のカウントをスキップ
1. バグフィックスなどのため検知状況を表示
1. 結果を表示
1. クリップボードに結果の数値のみを文字列形式でコピー

となります。つまり、その結果をExcelなどにペーストできるようになっています。

# こちら側で行う作業
### 実行前
コードを実行する前に、下記の準備をしておきましょう。
1. 実行結果をペーストするための表（e.g. Excelの学生管理のファイルなど）
1. Moodleの「参加者」から「詳細レポート」のページを出しておく（複数名分をあらかじめ新しいタブ（またはウィンドウ）に表示しておくと便利です）
1. ページを出したら「すべてを選択」→「コピー」しておく（{control} + {A} → {control} + {C}）

### 実行後
コードを実行した後で、その実行結果をペーストするための表（e.g. Excelの学生管理のファイルなど）にペーストします。

# 必要なモジュール
必要なモジュールはPyperClipです。
```plaintext
pip install pyperclip
```

# ソースコード
```python:Count_Quizes.py
import pyperclip

def count_exam_lines():
    try:
        # 除外条件の文字列をここで指定
        # 最初の' 0/'は「100/」や「10/」などがカウントするのを防止するために必要
        exclusion_strings = [' 0/', '進行中', '期限切れ']
        
        # クリップボードの内容を取得
        clipboard_content = pyperclip.paste()
        lines = clipboard_content.split('\n')  # 内容を行に分割
        count = 0

        # 各行が「受験」で始まり、除外条件の文字列を含まないか確認
        for line in lines:
            if line.startswith('受験'):
                if not any(exclusion_string in line for exclusion_string in exclusion_strings):
                    count += 1
                    print(f"({count}): {line}")  # カウント対象の行を出力
                else:
                    for exclusion_string in exclusion_strings:
                        if exclusion_string in line:
                            print(f"(-): {line} ({exclusion_string}を含む)")  # 除外された行を出力
                            break
            elif line.startswith('小テスト 小テスト:'):
                print(f"(T): {line}")  # 「小テスト 小テスト:」で始まる行を出力
            # else:
            #     print(f"(-): {line}")  # その他の行を表示したい場合はコメントアウトを解除
        
        return count, exclusion_strings
    except pyperclip.PyperclipException as e:
        # クリップボードへのアクセスに失敗した場合の処理
        print(f"クリップボードへのアクセスに失敗しました: {e}")
        return None, None

# クリップボードの内容から「受験」で始まる行のうち、除外条件の文字列を含まない行の数をカウントして出力
count, exclusion_strings = count_exam_lines()
if count is not None:
    print()  # 空行を追加
    print(f"クリップボードには「受験」で始まり、除外条件の文字列を含まない行が {count} 行あります。")
    print(f"除外条件の文字列: {exclusion_strings}")
    # 結果をクリップボードにコピー
    pyperclip.copy(str(count))
```
以上です。お役に立てれば幸いです。
毎日ABC day4【c++】ABC342 A-C問題解説【ACコード付き】

# AtCoder Beginner Contest 342

https://atcoder.jp/contests/abc342

## A - Yay!
1文字だけ異なるアルファベットが紛れ込んだ文字列$S$が与えられる。何文字目が異なる文字かを出力せよ。

解説では2重ループで調べる方法が載っていますが、ここでは1文字目と2文字目が異なった場合とそうで無い場合に分岐して、1重のループで終わるように(結果的に)工夫しています。

```cpp
int main()
{
	string S;
	cin >> S;
	char c = S[0];
	if (S[1] != c)
	{
		if (S[2] == c)
		{
			cout << 2 << endl;
			return 0;
		}
		else
		{
			cout << 1 << endl;
			return 0;
		}
	}
	for (int i = 2; i < S.size(); i++)
	{
		if (S[i] != c)
		{
			cout << i + 1 << endl;
			return 0;
		}
	}
	return 0;
}
```

## B - Which is ahead?

$N$人が順番に並んでいる。二人の人が$Q$回与えられるので、どちらが列の前に並んでいるかを出力せよ、という問題。

どの人が列の何番目に並んでいるかをvectorに記憶しておき、二人が列の前から何番目かが$O(1)$で調べられるようにしておく。

```cpp
int N, Q;
int P[109];
int P_place[109];
int A[109];
int B[109];
vector<pair<int, int>> people;

int main()
{
	// 入力
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> P[i];
		people.push_back(make_pair(P[i], i + 1));
	}
	sort(people.begin(), people.end());
	for (int i = 0; i < N; i++)
	{
		P[i] = people[i].second;
	}
	cin >> Q;
	for (int i = 0; i < Q; i++)
	{
		cin >> A[i] >> B[i];
		if (P[A[i] - 1] < P[B[i] - 1]) cout << A[i] << endl;
		else cout << B[i] << endl;
	}
	return 0;
}
```

## C - Many Replacement

文字列$S$が与えられる。あるアルファベットを別のアルファベットに置き換える指定の操作を$Q$回行った後の文字列を出力せよ、という問題。

毎回のクエリで文字列を直接操作するのではなく、アルファベット26文字が最終的にどのアルファベットに変わるのかを記録しておき、最後の出力の時に文字列を操作するのがミソ。

```cpp
int N, Q;
string S;
char C[109];
char D[109];
char Alpha[26];

int main()
{
	// 入力
	cin >> N >> S >> Q;
	// 初期化
	for (int i = 0; i < 26; i++) Alpha[i] = i + 'a';
	// どの文字がどの文字に置き換わるかを記録
	for (int i = 1; i <= Q; i++)
	{
		cin >> C[i] >> D[i];
		for (int j = 0; j < 26; j++)
		{
			if (Alpha[j] == C[i])
			{
				Alpha[j] = D[i];
			}
		}
	}
	// 出力
	for (int i = 0; i < N; i++)
	{
		cout << Alpha[S[i] - 'a'];
	}
	cout << endl;
	return 0;
}
```
トヨタ自動車プログラミングコンテスト2024#5 (AHC033) 参加録


# 本記事の内容
- 自分の解法
- 期間中の動き
- (反省点)

# 問題

https://atcoder.jp/contests/ahc033/tasks/ahc033_a

# (途中の)結果
- プレテスト 247th /1100
- 最終テスト 244th

## 自分の解法

基本的にゴールにコンテナを動かすクレーンは一つだけ
他のクレーンは追従させる

- 三段階
    - 五つのクレーンを並行に動かし全ての列のコンテナを取り出す
    - ゴールに動かすときは空いた部分を後ろから詰めるようにする
    - コンテナの取り方は深さ10までの枝狩りBFS

![vis (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292016/da9243e7-3c51-db3e-0120-a9cdef45055e.gif)


## コンテスト期間中やった事
### 初日~二日目
- 三段階中の二段階目まで実装

### 三日目~七日目
- BFS部分の実装
- この時点で100/600位

### 七日目~最終日
- プレテスト内に存在しないケースのバグとり
    - 一部ケースの工程数が悪すぎる事に気が付く
- いきなり全人類が本気を出してきた
    - 250/1000位
    - ここまで更新されるのはクレーンの複数操縦くらい


## 次に向けた反省点
- 拡張性がない実装になってしまった
    - 複数のクレーンをうまく動かせていない状態で点数に結びつきづらい
- バグとりをするタイミングを早くする
    - 点数の伸びが悪い部分を見つけたが対策する時間がなかった

- よく寝る
    - 後半の状態が良くなかった
MAGNeTで音楽を生成する

# はじめに

MAGNeTはメタ社が開発したテキストから音楽を生成するモデルで、モデルファイルとコードが公開されているため、ローカルで実行することが出来ます。

https://arxiv.org/abs/2401.04577

# セットアップ

本家のGitHubにWebUIのデモが含まれているので、それを使用します。

https://github.com/facebookresearch/audiocraft

まず、以下の様にDockerfileとdocker-compose.ymlを作成します。

* Dockerfile
* 
  ```
  FROM pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime

  RUN apt update && \
      apt install -y --no-install-recommends git ffmpeg && \
      apt clean && \
      rm -rf /var/lib/apt/lists/*

  RUN git clone https://github.com/facebookresearch/audiocraft.git .
  RUN pip install -e .

  EXPOSE 7860
  ENTRYPOINT ["python3"]
  CMD ["demos/magnet_app.py", "--listen", "0.0.0.0"]
  ```

* docker-compose.yml
* 
  ```yaml
  services:
    audiocraft:
      build: .
      image: audiocraft
      ports:
        - 7860:7860
      volumes:
        - $HOME/.cache:/root/.cache
      deploy:
        resources:
          reservations:
            devices:
              - driver: nvidia
                count: all
                capabilities: [gpu]
  ```

両ファイルを同一フォルダに置いて、以下を実行するとGUIが立ち上がります。

```sh
docker compose up -d
```

終了させる時には、以下を実行します

```sh
docker compose down
```

# 音楽生成

http\://localhost:7860/ にアクセスするとMAGNeTのWebUIが開きます。

![magnet_webui](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791334/5a55e885-0dfa-152f-3ad7-8d1083f4ac58.png)

プロンプトを入力し、モデルを選択して、Submitを押すと生成が始まります。

![magnet_webui](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791334/d92a7cb6-1bd1-4ea1-5477-c50f88c707b7.png)

モデルは6種類の中から選択できます。

|モデル名|モデルサイズ|生成される音楽の長さ|生成対象|
|:-:|:-:|:-:|:-:|
|magnet-small-10secs |300M|10秒| 音楽 |
|magnet-medium-10sec |1.5B|10秒| 音楽 |
|magnet-small-30secs |300M|10秒| 音楽 |
|magnet-medium-30secs|1.5B|30秒| 音楽 |
|audio-magnet-small  |300M| -  |効果音|
|audio-magnet-medium |1.5B| -  |効果音|

プロンプトとモデルは下部のExamplesから選択すこともできます。

Submitを押して、暫く待つと生成された音楽が右側に現れ、再生やダウンロードができます。
プロンプトに従って雰囲気のある音楽が生成されました。

# まとめ

MAGNeTで音楽を生成してみました。プロントに従ってそれっぽい音楽が生成できることを確認しました。
マイクロUSBコネクタを補修

IchigoJamのマイクロUSBコネクタがもげてしまったので補修しました。

![写真（2024-05-27 16.20）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/7e7e9a3c-bee0-4165-4083-eacff29b3a14.jpeg)

いったんコネクタを外して、コネクタ下を削りグランドのパターンを露出させ、コネクタをべったりハンダ付けしました。ハンダを露出させた基板のグランドとコネクタにうっすら乗せて、裏返して位置決めして、コネクタをハンダごてで温めて付けました。

DCジャックにしようかとも考えたのですが、穴を開けるのが面倒なので、元のままマイクロUSBコネクタにしました。

コネクタにはプラスチックの部品が入っているので、あまり熱を加えると壊れます。

またコネクタの中にハンダが入るとケーブルが接続できなくなるので注意が必要です。

検索すると参考になるサイトがありましたが、この方法は見かけませんでした。

この手のマイクロUSBコネクタはあまり頻繁に抜き差ししないほうが良いようです。
EX-80のNTSC出力

EX-80のテレビ出力をコンポジットにして、macamでキャプチャしているのですが、暗くて見にくいです。

![ng.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/34c9abc4-4e75-a98f-b8ec-d0f2c79ff43a.jpeg)

回路はこのようになっていて、RFモジュレータの前で信号を拾っています。

![写真（2024-05-27 17.55）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/92590e32-47e0-535a-3484-accde5d828d8.jpeg)

取り出した信号はこれに入れています。

![EX-Comp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/7266a842-6f9e-49fe-72da-f3140917c9c1.png)

抵抗は間違えてません。

![写真（2024-05-26 16.28）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/0b0582ad-78dd-f719-6521-2041c80fbf52.jpeg)

タイミングを制御しているTC5003Pはカラーに対応したチップなので、NTSCが壊れているとは考えにくいです。

RFモジュレータの前の回路は分圧回路なので、そもそも電圧が低すぎるのではないかと思い、分圧前のR11の前（写真の上側）で信号を拾ってみました。

![ok.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/a2b09336-9d0c-2b61-446f-b7e34c4873cf.jpeg)

良い感じになりました。

プログラム例題集の（３）マイコン白版を実行してみました。

![WB.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/504c49a1-4134-03b4-ca7a-bf4e2fd122cf.jpeg)

CがMになっていますが、私のタイポではなくて、誤植のようです。
ビジネス法務2024年7月号「各法令における個人情報保護法のエッセンス」を読んだメモ

# 概要
- [ビジネス法務2024年7月号](https://www.biz-book.jp/isbn/402407)「各法令における個人情報保護法のエッセンス」を読みました。
- 民法、労働法、刑事法、etc...と、個人情報保護法との関連性について整理されていました。個人的に面白いと思った点を書いておきます。
- 内容の正確性は保証しません。リンク先の書籍にて確認をお願いします

# 各法令における個人情報保護法のエッセンス
## 民法と個人情報(個人との契約)
- メモ
    - 民法では契約能力を**18歳**から認めており、それ以下の場合は保護者同意が必要
    - 個人情報保護法では本人同意が必要で、保護者同意だけでは不十分
    - 個別検討が必要ではあるものの、**12-15歳以下**は同意能力が不十分、保護者等同意が必要、という[Q&A](https://www.ppc.go.jp/all_faq_index/faq1-q1-62/)がある
- 感想
    -  高校生あたりの、16,17歳あたりの年齢層のユーザーを想定して、個人情報の取得を行うようなサービスの利用規約を作成するときには、注意が必要
    -  本人同意と、保護者同意の両方が必要？

## 民法と個人情報（業務委託）
- メモ
    - 委託先での個人情報流出の際、債務不履行として損害賠償請求ができるかどうか、という論点がよくある
    - 個人情報保護法にて、**安全管理措置は義務付けられているが、具体的な対応方法に関する記載はない**。債務不履行かどうか判定は手間
    - 契約で定めておけば、それが安全管理措置となる
- 感想
    - 何らかの形で、安全管理措置を具体化しておくと良さそう

## 消費者関連法と個人情報保護法
- メモ
    - 収集したメールアドレスの取り扱い時は、**特定電子メール法**に留意
    - 広告や営業メール（特定電子メール）は同意取得した連絡先にのみ送信可
    - 「個人情報保護法に準拠した同意」の取得に加え、「特定電子メール法に準拠した特定メール送信に関する同意」を取得する必要がある場合がある
- 感想
    - 「特定電子メール」という概念を知らなかった

## 労働法と個人情報保護法
- メモ
    - [職安法指針](https://www.mhlw.go.jp/content/001003997.pdf): 求職者本人から公開されている個人情報の収集はOK
        - 同意は不要なのかな
        - 本人確認は必要
    - 退職者情報は一定期間保持の必要性（労働基準法: 関連情報5年間保存）
        - 前職調査やリファレンスチェックは本人同意があればOK
        - 5年経過後は情報が破棄されている可能性
- 感想
    - SNS裏アカ調査、の事例があるが、公開情報からの本人に関する情報の収集は問題ない、ということか
    - ただしそのアカウントが本人であることの確認・保証が必要

## 競争法と個人情報保護法
- メモ
    - 委託先・再委託先へのセキュリティ基準遵守要求は独占禁止法に留意
        - 再委託先が小規模事業者であり、セキュリティ施策準拠が困難である...ことを承知の上で再委託したとしても、合理性があると判断される可能性あり
    - 委託先の従業員の個人情報取得時は、下請法の「優越的地位の濫用」に注意
        - 委託先での説明負荷あり
        - 従業員の安全管理や体調管理目的でのスマートフォン持たせての個人情報取得は、それだけでは優越的地位の濫用に当たらない。が、委託先での説明不可には注意
- 感想
    - セキュリティ基準、委託先でも絶対遵守なものかと思っていました

# その他
- 連載「AIガバナンス相談室」が面白そう
    - 掲載されているバックナンバーを読んでおきます
AWS資格試験（SOA/DVA/DOP）合格

# AWS資格試験（SOA/DVA/DOP）合格した話

## はじめに

2024年3月〜5月までにSOA/DVA/DOPに合格しました。情報などまとめていきたいと思います。

### 3月時点でのスペック

* AWSの利用歴は10年超え
* ネットワーク/セキュリティ/ソリューションアーキテクトプロフェッショナル/データベース/データ分析のAWS資格は取得済み
* Oracle Java Goldなどプログラミング系の資格なども保持

## 結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501815/7b69c130-a0e2-fb5e-0a53-f3ec7281831a.png)

すべて一回で見事合格できました！


## 試験共通

基本的にはUdemy（会社で契約してるので）を利用しました。

* Stephane MaarekさんとNeal Davisさんが配信している模擬試験を利用。

### SOA-C02

対策本としては以下を利用しました。概要を押さえるのにだいぶ良かったです。

* [AWS認定資格試験テキスト AWS認定SysOpsアドミニストレーター - アソシエイト AWS認定資格試験テキスト](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9ASysOps%E3%82%A2%E3%83%89%E3%83%9F%E3%83%8B%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC-%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-NRI%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/481560908X/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1TMTL6MXLEL7I&dib=eyJ2IjoiMSJ9.njX03LHwTo17ZlHtgwFMnl-dfPoEjrH7cL4RNherUIK2uU-E24pXO7-ZxgmTF9TxFjWhuZsbwnqfVBB6TfQl3A.3Iasiauehkp4T973CatrvyHZ67giKHKFv4k_fo1hsp0&dib_tag=se&keywords=SOA-C02&qid=1716798825&s=books&sprefix=soa-c02%2Cstripbooks%2C150&sr=1-2)

そんなに難しくなかろうと踏んだ２週間ぐらいの勉強期間で挑みました。

### DVA-C02

対策本としては以下を利用しました。SOAと同じシリーズで揃えようと思いました。。なさそうでした。

* [ポケットスタディ AWS認定デベロッパーアソシエイト](https://www.amazon.co.jp/%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3-AWS%E8%AA%8D%E5%AE%9A%E3%83%87%E3%83%99%E3%83%AD%E3%83%83%E3%83%91%E3%83%BC%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-%EF%BC%BBDVA-C02%E5%AF%BE%E5%BF%9C%EF%BC%BD-%E5%B1%B1%E4%B8%8B%E5%85%89%E6%B4%8B/dp/4798070696/ref=sr_1_2_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1UBYFWCH3W7OV&dib=eyJ2IjoiMSJ9.wYUM_MpRlmeEiKmNWqLtigrguDTCqokL0XYbo2UyoGztXnrkpbm2wENKSDNB4sqMjkEfRJFXx_MMhxgvndSv_L5A9DDNfCUibCGTyB9dVRI3DEPZq35RzjnVf44jheqT.Slv494UhpnofJxkiij7bRx6cUHtNlEzI98zgqlpEB7M&dib_tag=se&keywords=DVA-C02&qid=1716799103&s=books&sprefix=dva-c02%2Cstripbooks%2C155&sr=1-2-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1)

こちらは3週間ぐらいの勉強期間で挑みました。

注意としては模擬試験で出題されていた「Elastic BeansTalk」はあまり出題されたイメージがなかったです。注力しなくてもよいかなと。

### DOP-C02

対策本がないため、BlackBeltの動画をいろいろみました。

* [【AWS Black Belt Online Seminar】AWS CodeDeploy](https://www.youtube.com/watch?v=cXa2S2kS0TU)
* [【AWS Black Belt Online Seminar】Amazon API Gateway](https://www.youtube.com/watch?v=EpEETIox03s&t=2171s)
* [【AWS Black Belt Online Seminar】AWS Serverless Application Model](https://www.youtube.com/watch?v=xQbLiqkI1Mw)


こちらは4週間ぐらいの勉強期間で挑みました。

DVA-C02と同様ですが、「Elastic BeansTalk」はあまり出題されたイメージがなかったです。注力しなくてもよいかなと。

問題文も答えも長いのでなかなか体力使います。

CodeArtifactとECRが細々出た気がするので、仕様を押さえといた方がよいです。（私は全然おさえてなかった。。）

## 終わりに

結構急ピッチで資格取得に挑みましたが、なかなか大変でした。
自動化は面白いので、仕事でも導入できるようにがんばります！
排他制御とは

- [1.排他制御とは](#排他制御とは)
    - [1.1.定義と基本概念](#定義と基本概念)
    - [1.2.排他制御の必要性](#排他制御の必要性)
- [2.日常生活における排他制御の例](日常生活における排他制御の例)
- [3.排他制御の基本原則](#排他制御の基本原則)
    - [3.1.クリティカルセクションとは](クリティカルセクションとは)
    - [3.2.排他制御の条件](排他制御の条件)
- [4.排他制御の実装方法](#排他制御の実装方法)
    - [4.1.ロック機構](#ロック機構)
    - [4.2.セマフォとモニタ](#セマフォとモニタ)
    - [4.3.パイプとメッセージキュー](#パイプとメッセージキュー)
- [5.排他制御の具体例](#排他制御の具体例)
    - [5.1.マルチスレッドプログラミングにおける排他制御](#マルチスレッドプログラミングにおける排他制御)

# 排他制御とは
排他制御（Mutual Exclusion）は、マルチタスク処理環境において、データの衝突やリソース競合を避けるために、共有リソースへのアクセスを調整し管理する技術です。
排他制御は同時に一つのプロセスまたはスレッドだけが特定のリソースにアクセスできることを保証します。

## 定義と基本概念
排他制御の基本概念は、ある機構を通じて共有リソースがいつでも一つのプロセスだけによってアクセスできることを確保することです。この機構はロック、セマフォ、モニターなどがあります。
## 排他制御の必要性
マルチタスクオペレーティングシステムでは、複数のプロセスやスレッドが同時に共有リソースにアクセスして変更することがあります。適切な制御がないと、データ競合や不整合が発生し、システムの安定性と信頼性に影響を及ぼす可能性があります。

# 日常生活における排他制御の例
日常生活では、排他制御に似た概念がよく見られます。例えば：
- 洗濯機の使用：一つの共有洗濯機があるコインランドリーでは、一人が使用中の場合、他の人は待たなければなりません
- ATMの使用：同時に一つのATMしか一人の利用者にサービスを提供できず、他の利用者は列に並ばなければなりません

# 排他制御の基本原則
## クリティカルセクションとは
クリティカルセクションとは、独占的にアクセスする必要がある共有リソースやコードセグメントを指します。データの整合性を保つため、临界区には一度に只一つのプロセスまたはスレッドしか入ることができません。
## 排他制御の条件
- 相互排他：いつでも、最多で一つのプロセスまたはスレッドしか临界区に入れません
- 入場の保証：临界区に入ることを要求したプロセスまたはスレッドは、最终的には入ることができます
- 待機の保証：临界区への入場を待つ時間は有限であり、無期限に待たされることはありません

# 排他制御の実装方法

## ロック機構
ロック（Lock）機構は、基本的な排他制御方法であり、ロックとアンロックの操作を通じて、同じ时间に只一つのプロセスまたはスレッドが共有リソースにアクセスできるようにします。

## セマフォとモニタ
セマフォ（Semaphore）：カウンターを使用して共有リソースへのアクセスを制御し、複数のリソースの場面に適しています。

## パイプとメッセージキュー
モニタ（Monitor）：高度な同期メカニズムであり、共有リソースとそのアクセスプロセスをカプセル化し、排他制御の実装を簡素化します。
その他のファイルシステム

# メモリベースのファイルシステム
保存したデータは電源を切ると無くなってしまいますが、ストレージデバイスへのアクセスが一切発生しないため、高速でアクセスできます。

# ネットワークファイルシステム
ネットワークを介してつながっているリモートホスト上のでデータに、ファイルシステムのインターフェースを使ってアクセスする「ネットワークファイルシステム」というものがあります。「Network File System」（NFS)や「Common Internet File System」（CIFS）は、リモートにあるファイルシステムをローカルからファイルシステムとして操作できます。

# procfs
システムに存在するプロセスについての情報を取得する為に「procfs」というファイルシステムが存在します。
...
ps,sar,freeなどのOSが提供する各種情報を表示するコマンドは、procfsから情報を取得しています。

# sysfs
プロセスに関するもの以外のカーネルが保持する雑多な情報がrocfsに際限なく置かれるようになりました。procfsのさらなる乱用を防ぐために、これらの情報を配置する場所として作られたのが「sysfs」です。

# 出典
https://gihyo.jp/book/2022/978-4-297-13148-7

# 感想
メモリベースやネットワークのファイルシステムはローカルのストレージデバイスではない場所にあるのか。
procfs,sysfsに関しては情報を整理するための作られたファイルシステムなのか。
自分の好きなアーティストと似ているアーティストを出力するWebアプリケーションの開発 part3-2 Git初期設定・SSHキー生成・GitHub公開鍵登録

## はじめに
大学の授業で、入力されたアーティストと近しいアーティストのネットワーク図を作成するシステムを作ったので、今回は個人的な趣味で、そのシステムを発展させてWebアプリケーションを開発しました。その際の備忘録を残します。
part3は、GitHubを使ったプロジェクト管理についてまとめます。
前回の[part3-1](https://qiita.com/k-suna/items/bbdec14a5ef4ea9d6470)では、GitHubのアカウント登録とGitのインストール方法をまとめました。
今回のpart3-2では、Gitの初期設定・SSHキーの生成・GitHub公開鍵登録についてまとめます。

## 前提
今回は以下を前提としています。
- GitHubアカウント登録済み
- Gitインストール済み

まだの場合は、前回記事の[part3-1](https://qiita.com/k-suna/items/bbdec14a5ef4ea9d6470)を参考に登録してください。

## 手順
### 1. Gitの初期設定
GitHubアカウント作成時のユーザネームとメールアドレスを使って、GitBashで以下のコマンドを実行する
```text:ユーザ名の設定コマンド
$ git config --global user.name "ここにユーザネームを入力"
```
```text:メールアドレスの設定コマンド
$ git config --global user.email "ここにメールアドレスを入力"
```

### 2. 公開鍵・秘密鍵の生成
1.以下のコマンドで鍵を保存するフォルダに移動する
```
$ cd ~/.ssh
```

2.以下のコマンドを実行して公開鍵・秘密鍵（SSHキー）を発行する
```
$ ssh-keygen -t rsa
```

3.ファイルの保存場所やパスワードを指定するように求められるが、何も入力せずEnterを3回押す
「passphrase]はパスワードの登録だが、何も入力せずにEnterを押すとパスワード無しでsshキーが生成される。        
```
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
```

4.sshキー生成の確認
lsコマンドで「id_rsa」と「is_rsa.pub」があることを確認する
```
$ ls
```

### 3. 公開鍵をGitHubにアップする
1. GitHubの「setting」をクリック
![GitHub_setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553476/b7458fb3-ffbd-84c1-e341-b2aa3694881e.png)

2. 「SSH and GPG keys」をクリック
![GitHub_SSHandGPGkeys.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553476/2d407715-64c1-daa6-45a0-d4b2d1648cea.png)

3. 「New SSH key」をクリック
![Github_newSSHkey.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553476/1b4872b4-d531-330f-7eef-fbb3f2a42676.png)

4. 「Title」には公開鍵の名前を、「Key type」には「Authentication Key」を、「Key」には公開鍵の中身を入れる。完了したら下の「Add SSH key」をクリック
![スクリーンショット 2024-05-27 172008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553476/9a787357-2492-3cfc-c16b-f8963628da3a.png)

5. 接続を確かめる
以下のコマンドを実行する。
```
$ ssh -T git@github.com
```
以下のメッセージが表示されればOK
```
Hi {ユーザ名}! You've successfully authenticated, but GitHub does not provide shell access.
```

## 終わりに
今回は、Gitの初期設定・SSHキーの生成・GitHub公開鍵登録についてまとめました。次回は、チーム開発時のGitHubの使い方についてまとめます。

## 参考文献
以下の文献を参考にしました。ありがとうございました。

https://qiita.com/shizuma/items/2b2f873a0034839e47ce
データカタログ系製品・サービスまとめ

## はじめに

データカタログ系製品をまとめています。

基本的な機能はデータ統合、メタデータ管理、データ品質テスト、ガバナンス、リネージ (データの生成から消費までの流れを可視化)などです (製品によっては利用できない機能もあります)。

生成AIの発展もあり日進月歩ですので、随時更新していけたらと思います。

## OSS
### OpenMetadata

https://open-metadata.org/

OSSということで無料 (サーバは別途用意が必要) ですが、かなり機能も豊富です。
一部機能 (PIIデータの自動検出など) が英語のみ対応となるので日本語データを扱う場合は要注意。

データソース側・出力側ともに対応した連携先が豊富です。

Airflow と連携されており、データ取得時の処理手順やスケジューリングなどのカスタマイズ性も高いです。

デメリットとしては OSS であるが故に導入や運用の負担がマネージドサービスと比べると高いこと、日本語資料が3大クラウドのものなどと比べると少ないことでしょうか。

Amazon Linux への導入は以下記事を参考にどうぞ。

https://qiita.com/tkawai26/items/0f333d8b7303abe92a3a

## クラウド (マネージドサービス)

### Microsoft Purview

https://learn.microsoft.com/ja-jp/purview/purview

旧称 Azure Purview。
Microsoft 365 コンプライアンスセンターと統合され、機密データ管理などのセキュリティ面の機能が強化されました。
マイナンバーや口座番号を自動検出してタグ付けや暗号化を行うなどの機能があります。
「社外秘」などのキーワードを指定して検出することも可能です。

スキャンやオーナー割り当ての状況をダッシュボードで可視化します。


### AWS Glue (Data Catalog)

https://aws.amazon.com/jp/glue/

Athena や Redshift Spectrum との親和性が高いものの、データの検索性が他の製品と比べると低いと思います (SQL をいちいち書く必要があるなど)。
カラム単位でコメントを記述することが可能ですが、テーブルやDB単位でのコメントはできないようです。コメントも長々と書くと見づらくなるので、wikiのような使い方はできなさそうです。

Amazon Q でどう進化するか注目ですね。まだ執筆時点では英語しか対応していないというハードルがあります。現状、Glueはマネジメントコンソールすら英語ですからね。

Jobの方は、GUIでETL処理を作成できるのは便利ですが、要件によっては結局 Python を書く必要に迫られるというか、大抵コーディングが必要になる気がします。

### Google Cloud Dataplex (Data Catalog)

https://cloud.google.com/data-catalog/docs/concepts/overview?hl=ja

(使う機会があれば書きます)

### Oracle Cloud Infrastructure Data Catalog

https://www.oracle.com/jp/big-data/data-catalog/

Oracle 製品との親和性が高いです。

が、調べてもそれ以上のメリットが特に見当たりませんでした...

他の理由で Oracle Cloud を利用していない限り使う機会はなさそうな印象です。

## SaaS 製品
### Insight Catalog

https://www.insight-tec.com/products/catalog/

インサイトテクノロジー社が開発しているカタログ製品。
国産製品ということもあり、日本語に特化したAIが個人情報等を自動で検出してくれることが強み (例えばOpenMetadataは英語のルールベース)。
比較的後発の製品ということもあり、(執筆時点では) 品質テストやメタデータの履歴管理などの機能は存在しないものの、かなり速いペースで機能追加等のリリースがされています。

資料やサポートも日本語という安心感があります。

### Informatica Data Catalog

https://www.informatica.com/jp/products/data-catalog.html

データ分類や関連付け、検索にAIを利用しています。

デモを見ただけなので詳細は分かりませんが、UIはOpenMetadataと似ている感じがします。wikiでのコラボレーションや品質テストなど、出来ることも近しいですね。

ダッシュボードでデータ品質を可視化できるのはいいかもしれませんね。

### HULFT DataCatalog

https://www.hulft.com/software/hulft-datacatalog

こちらもデモを見ただけですが、権限管理やリネージ可視化、コメント機能など必要最低限に絞っている印象です。

クラウド事業者のサービスが機能豊富すぎて学習コストが高いことと比べると、導入が楽な部分もあるかもしれません。

「スチュワード」ではなく「エキスパート」という言葉を使っているのが少し気になりますね。

(あと "Data Catalog" ではなく "DataCatalog" なのも気になりますね。)

## まとめ

クラウド事業者のデータカタログサービス使うなら、そもそも分析環境に用いるクラウドと合わせてしまえばよさそうな感じがします。

強いて言えば AWS だけあまり使用感よくないですかね。データエンジニアはともかくビジネスユーザーが利用することを考えると、UIや使い勝手の良さも重要だなと思いました。

あと、やはりクラウド事業者のサービスは英語データを扱う前提ですので、日本語データをうまく扱いたいなら国産のSaaSも選択肢に入ってきそうです。

OpenMetadata は無料ですが、導入・運用の人件費と、そもそも動かすための環境 (サーバー) を用意する必要があるので、要注意ですね。
[openSearch 操作(java)]

<br>
javaによるopenSearchへのアクセスとインデックスの作成方法です。


## クライアント作成
```java:openSearchClient.java
public static RestHighLevelClient createClient() {
    
    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    
    credentialsProvider.setCredentials(AuthScope.ANY,
    new UsernamePasswordCredentials("user", "test-user-password"));

    retrun new RestHighLevelClient(
        RestClient.builder(
            new HttpHost(
                endpoint
                ,port
                ,"https"))
    .setHttpClientConfigCallback(
    httpAsyncClientBuilder -> httpAsyncClientBuilder
          .setDefaultCredentialsProvider(credentialsProvider));    
}
```

## インデックス作成

今回はNgramを設定します。

```java:openSearchIndexCreate.java

public static void createIndex() {

    RestHighLevelClient restHighLevelClient = createClient();

    String index = "sample_index";
    CreateIndexRequest request = CreateIndexRequest(index);

    HashMap<String, String> tokenSetting = new HashMap<String, String>();
    tokenSetting.put( "tokenizer", "sample_tokenizer" );

    HashMap<String, Object> analyzerSetting = new HashMap<String, Object>();
    analyzerSetting.put( "sample_tokenizer", tokenSetting );

    // N-Gram設定
    HashMap<String, String> ngramSetting = new HashMap<String, String>();
    ngramSetting.put( "type", "ngram" );
    ngramSetting.put( "min_gram", "2" );
    ngramSetting.put( "max_gram", "2" );
    analyzerSetting.put( "sample_tokenizer", ngramSetting );

    // analyzer設定
    HashMap<String, Object> tokenSetting = new HashMap<String, Object>();
    tokenSetting.put( "analysis", analyzerSetting );

    request.settings(tokenSetting);

    try {
        restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
    } catch( IOException e ) {
        e.printStackTrace();
    }
}



```
JavaScriptで空の多次元配列を new Array(n) で作成する

### 結論

```javascript
const n = 4;
const arr1 = new Array(n).fill(null).map(_ => []);
```

### 理由　

fill の中身にオブジェクトを放り込むと、シャローコピーで反映されるため

```javascript
const n = 4;
const arr1 = new Array(n).fill([]);

arr1[0][0] = 1;
// [[1], [1], [1], [1]]
console.log(arr1);
```

これは仕様としてキチンと記載されている

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill

```javascript
// 配列の各スロットから参照される、単一のオブジェクト。
const arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
```

なお、fill をすっとばすと意図しない動作になる
良い書き方が思いつかなかったのでこれで妥協
【UiPath】データテーブルの列の比較(一致確認)をする

## はじめに
別のタイミングで作成・取得したデータテーブル同士を比較して同じかどうかを判定する必要が結構あってハマったのでメモします。

### やりたいこと

**こいつらは同じなのか…？を判定させたい**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/5fa166e5-e292-180a-2210-b8de4a0eb696.png)


なお、行の比較は以下の式で比較的簡単に実装可能です。

```vb:行の比較
'Dt1 データテーブル1
'Dt2 データテーブル2

'戻り値はTrue/False
'行を順番に比較していって同じかどうかを判定する
Dt1.AsEnumerable().SequenceEqual(Dt2.AsEnumerable(),DataRowComparer.Default)

```
ちなみに、この式だと最初のテーブル2つは行とその値が一緒なのでTrueになります。

列の比較が分からなかったので調べました。


### この記事でできること

- UiPathで2つのデータテーブルの列の一致・不一致を調べることができる


### この記事の対象者

- UiPath Studio開発者


### 動作環境


- Windows10
- UiPath v2023.10
    - Windows
    - VB
## 「コードを呼び出し」アクティビティ
コードを呼び出しアクティビティをシーケンス内に入れてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/c15896d6-8cb9-d5ea-ca60-e31234002c83.png)

### 引数を編集
以下のように引数を作成してください。
Valueには比較したいデータテーブルを入れてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/946c6bc0-bd5e-98ea-ed3d-156e923c19a7.png)


### コードを編集
コードを編集で次のコードをコピペしてください。

```vb:列の比較
    ' 入力引数:Dt1 データテーブル1
    ' 入力引数:Dt2 データテーブル2
    ' 出力引数:IsEqualDataTable
    
    ' 列数が異なった時点で、列名がすべて一致することはない。
    If Dt1.Columns.Count <> Dt2.Columns.Count Then
        IsEqualDataTable = False
		Return
    End If

    ' すべての列名を比較する。
    For i As Integer = 0 To Dt1.Columns.Count - 1
        ' 列名が一致しない場合、Falseを返す。
        If Dt1.Columns(i).ColumnName <> Dt2.Columns(i).ColumnName Then
            IsEqualDataTable = False
			Return
        End If
    Next

    'すべての列名が一致していればTrueを返す。
    IsEqualDataTable =  True


```

## まとめ
列だけ比較したい場合はこれだけで十分です。
行と一緒に比較したい場合は最初の式と同時使いがおすすめです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/e543d63e-3414-7f90-9b7f-06d5f5f7eabf.png)


:::note warn
データテーブルがnullの時はエラーが出るのでnull時はエスケープする必要あります。
:::
Javascriptのミニフィープログラムどれがいいか比較してみた！

# 経緯
1.こちらの質問で代替を検索した方がいいようなことを言われました。

https://qiita.com/TNTSuperMan/questions/224746e67dbbbb3ef230

2.自分の質問記事がクソみたいらしくて凹みました。

https://qiita.com/shirankedo/questions/fc2ae42b8c6b2810e45d
# 条件
圧縮率は、大まかなファイルサイズ(KB単位ぐらい)から求めた圧縮前サイズを基にした圧縮後のサイズの割合です。
この圧縮率は低い方がいいです。
```math
\frac{圧縮後の大きさ}{圧縮前の大きさ}
```
比較用に使うJavascriptソースコードはこちらにします。
[Vue3.4.27 vue.global.js](https://unpkg.com/vue@3.4.27/dist/vue.global.js)
元サイズ：508KB
[React18 react.development.js](https://unpkg.com/react@18.3.1/umd/react.development.js)
元サイズ：107KB
# オンライン系
| サービス | Vueの圧縮率 | Reactの圧縮率 |
|:-:|:-:|:-:|
| [jscompress.com](https://jscompress.com/) | 失敗 | 72.38% |
| [Toptal Javascript minifier](https://www.toptal.com/developers/javascript-minifier) | 36.8%  | 27.4% |
| [minifier.org](https://www.minifier.org/) | 64.3% | 49.9% |
| [CodeBeautify minify-js](https://codebeautify.org/minify-js) | 37.4% | 27.5% |
| [Minify JS(Terser v5.20.0)](https://minify-js.com/) | 37.3% | 27.4% |

オンラインでは[Toptal Javascript minifier](https://www.toptal.com/developers/javascript-minifier)が一番低く良かったです。
[jscompress.com](https://jscompress.com/)はVueが上手くいかなかったため申し訳ないですが非推奨です。
# オフライン系
| サービス | Vueの圧縮率 | Reactの圧縮率 |
|:-:|:-:|:-:|
| [webpack](https://webpack.js.org/) | 37.2% | 27.1% |

オフライン系があんまりよさそうなものが見つかりませんでした。
webpackは変数名とか色々圧縮しちゃうし大変なのでjsの最小化よりは製品系に向いてますね。
# 結論
[webpack](https://webpack.js.org/)は結構良い。
オンラインで手軽にするなら[Toptal Javascript minifier](https://www.toptal.com/developers/javascript-minifier)を使おう。
# 反省
minifyオンラインサービスの代替を探さずにminify-js.comに頼ろうとして申し訳ありませんでした。
初心者が音声認識を触ってみた （その２）

さて、[前の記事](https://qiita.com/deratege/items/5851aa3d9402a018e4c1)から引き続いて、マイク入力のテストをしてみます。

## マイク入力を使ったサンプルプログラムを動かしてみる

何か適当なサンプルがないか探してみると、[いい感じの記事](https://acp.amivoice.com/blog/2022-07-19-113432/)がありましたので、これを試してみます。

※ このサンプルも、前回同様にWrp_.py中でssl.wrap_socket()をコールするので、Python3.12が使えません。

音声ライブラリとして、[SoundCard](https://pypi.org/project/SoundCard/)を使っているのでインストールします。
```
pip install soundcard
```

サンプルプログラムは[Gitで配布](https://github.com/r-ichikawa-amivoice/ami_speechrecognizer_py)されているのでダウンロードして適当に展開します。

展開したしたフォルダに以下の内容でバッチファイルを書いて実行してみます。
```bat:run.bat
set AppKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
set SSL_CERT_FILE=ssl\curl-ca-bundle.crt

python main.py a=%AppKey%
```

## 実行結果

![pic2024-05-27_155431.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99561/59df3f5e-5f8d-41aa-ce36-fd8e114e2004.png)
エラーが表示されているのですが、あっさりと動きます。

ソースコードを読むと、デバイスリストの中から"pulse"を探そうとしているのですが、Windowsにはそのようなデバイス名がないのでエラー表示となるようです。でも、この状態で既定のソース？から音声を拾っているようなので、音声ミキサとかループバックを既定にするとYoutube上とかの音声とか拾えませんかね？

余談ですが、これ、停止のやり方が分かりません(www)ので、マイクをOFFにして強制的に止めます。
![pic2024-05-27_163132.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99561/de2d99a9-e025-0d68-9674-04bb99ef1437.png)
マイク動作中は通知領域にマイクのアイコンが表示されるので、これをクリックして、、、
![pic2024-05-27_160432.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99561/9784013e-4ea1-0268-436d-5e0c8a6d03f4.png)
「マイクへのアクセス」をオフにするとマイクを見失うのでエラー終了します。(www)

ここまで、マイク入力をAmiVoice APIを使ってテキストに落とせることを確認しました。

最終イメージは字幕用ファイルにすることなので、前回同様にjsonをパースすれば良さそうです。

## 参考記事

[Pythonでマイク入力の音声認識してみた - AmiVoice Teck Blog](https://acp.amivoice.com/blog/2022-07-19-113432/)

[【Python】録音と再生（SoundCard, SoundFile）](https://note.com/nagisa_hoshimori/n/nca6dcd21c23f)
[過去記事]Amazon AppFlow マッピングにCSVを使ってみる

## 情報

内容は下記と全く一緒でマッピング部分だけCSVで行ってみます！

https://qiita.com/miriwo/items/ba3830030b5fbba6cdad

## 準備

転送転送もとのCSVも引用記事と同じものを使います。

```test.csv
id,first_name,last_name,password,age,
1,Tarou,Yamada,abcd1234,20,
2,Hanako,Yamada,abcd1234,22,
3,Tarou,Satou,abcd1234,24,
4,Hanako,Satou,abcd1234,16,
```

下記の内容に沿ってフローを作成し、「マッピング方法」の選択部分の直前まで設定を進めます。

https://qiita.com/miriwo/items/ba3830030b5fbba6cdad

マッピング方法は下記の様に選択します。

- マッピング方法：マッピングされたフィールドを含む.csvファイルをアップロードする

![Create_flow_-_データフィールドをマッピング-1024x278.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/3f3e1158-0a0a-0c99-f5c3-27fe7a178dd6.png)

ここでマッピングCSVを準備します。実は「ファイルのアップロード」の横の「情報」をクリックするとマッピングCSVの書き方の説明が見れます。

![Create_flow_-_データフィールドをマッピング-1-1024x569.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/99bcd60d-ec1a-8c53-d48e-7104e3f23d57.png)

どうやら下記の様に記載すればマッピングしてくれる模様です！（ソースフィールドAをターゲットフィールドBにマッピングしたい場合）

```
ソースフィールドA,ターゲットフィールドB
```

今回は下記の様にマッピングしてみようと思います。

| ソースフィールド | ターゲットフィールド |
| --- | --- |
| id | ID |
| first_name | FIRST_NAME |
| last_name | LAST_NAME |
| password | PASSWORD |
| age | AGE |

```mapping.csv
id,ID
first_name,FIRST_NAME
last_name,LAST_NAME
password,PASSWORD
age,AGE
```

「ファイルを選択」をクリックし、mapping.csvを選びアップロードします。

![Create_flow_-_データフィールドをマッピング-2-1024x472.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/f57edfd2-4604-a5fb-22c9-ab77adb3776c.png)

mapping.csvの記載が問題なく、アップロードも正常に行われるとフィールドが表示されます。

![Create_flow_-_データフィールドをマッピング-3-1024x651.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/433b047e-7551-af7a-246f-b9149b571c23.png)

後はAppFlowの設定を保存しましょう。

## 確認

早速確認してみましょう！「フローの実行」からフローを実行しましょう。

送信先バケットの/out/test_flow/実行IDフォルダ直下をのファイルをダウンロードして確認すると、下記のようにしっかりとマッピングが反映されて転送されています！これで成功です！

```
"ID","FIRST_NAME","LAST_NAME","PASSWORD","AGE"
"1","Tarou","Yamada","abcd1234","20"
"2","Hanako","Yamada","abcd1234","22"
"3","Tarou","Satou","abcd1234","24"
"4","Hanako","Satou","abcd1234","16"
```

## おわりに

今回はAppFlowのフィールドマッピング設定をCSVを用いて行ってみました！マッピングする項目数が極端に多い場合は、今回のようにCSVを用いてマッピングを行ったほうが楽かもしれません！マッピングCSVの記載もそこまで複雑ではないのでおすすめです！
DP-600 日本語版 受験記

### はじめに

[Microsoft Learn AI Skills Challenge](https://qiita.com/fumiyaaaa/items/44669147ea06654df7f3) のクリア報酬でもらったバウチャーチケットを使って
DP-600の日本語版の試験を受けてきました。（ちなみに合格しました）



DP-600の受験記を投稿している方はまだまだ少ないので、
この記事が見ている方にとって参考になれば幸いです。

### 試験概要

こちらを参考にしてください。

https://learn.microsoft.com/ja-jp/credentials/certifications/fabric-analytics-engineer-associate/?practice-assessment-type=certification

### 学習方法

はじめはMicrosoft のトレーニングを使って概要を理解しました。

なんとなく理解できたら、
次はExamTopicsを使って[DP-600の試験問題](https://www.examtopics.com/exams/microsoft/dp-600/)をひたすら解いていきました。

-- ここでライフハック --

上のリンクの問題集では、課金しないと途中までしか閲覧することができませんが、
Microsoft の全試験の問題一覧から「DP-600」と検索していくと、
時間はかかりますがすべての問題を閲覧することができます。

https://www.examtopics.com/discussions/microsoft/

### 所感
Microsoft がレベル「中級」と定めている通り、
内容はそこまで難しくありませんでした。
データベースに触れていたら分かるような問題もいくつかありました。

また試験自体ができたばかりだからか、
問題のバリエーションが他の試験に比べて少ないように感じました。
実際に本番でもExamTopics に載っていた問題から7割くらいは出題されていたと思います。

試験が出来たばかりの今だからこそ、合格しやすいのかもしれません。
皆様もぜひ受験されてみてはいかがでしょうか？
goでプロジェクトを立ち上げる：hello, world!

### Go言語のインストール
Goの公式サイトからインストーラをダウンロードし、インストールする。
### プロジェクトのディレクトリを作成:
作業したい場所にプロジェクト用のディレクトリを作成する。
```shell:zsh
% mkdir go_sample && cd go_sample
```
### Go Modulesの初期化
プロジェクトディレクトリ内で以下のコマンドを実行し、モジュールを初期化する。
```shell:zsh
% go mod init go_sample
```
% プログラムの作成
main.go ファイルを作成し、基本的なプログラムを記述する。
```go:main.go
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
```
### ビルドと実行
プロジェクトディレクトリで以下のコマンドを実行し、プログラムをビルドして実行する。
```shell:zsh
go build
# 生成されたバイナリファイルを実行
./go_sample
```
またビルドせずに実行することも可能
```shell:zsh
go run main.go
```
【Salesforce】【最新Spring '25】リリースノートまとめのまとめ

溜まってきたのでまとめます。
リリースノートは日本語訳が出てからざっと見します。
個人的に気になるトピックなので開発系が多めです。

# Spring '25
リリースノート公開日：2024/12/31
日本語リリースノート公開日：投稿日にまだ出てなかったのでGoogle翻訳さん
バージョンアップ日：2025/2/16
まとめ投稿日：2025/2/9

https://qiita.com/piepie1231/items/68a205aaab9b63ca011b

# Winter '25
リリースノート公開日：2024/8/14
日本語リリースノート公開日：???
バージョンアップ日：2024/10/13
まとめ投稿日：2024/12/23

ちょびっとだけリリースノートの取り上げた↓

https://qiita.com/piepie1231/items/f060fb167539b4a3530a

# Summer '24
リリースノート公開日：2024/4/24
日本語リリースノート公開日：2024/5/22 ???
バージョンアップ日：2024/6/16
まとめ投稿日：2024/5/27

https://qiita.com/piepie1231/items/f3bdd612a5c98eabbdbf

# Spring '24
リリースノート公開日：2023/12/20
日本語リリースノート公開日：2024/1/20 ???
バージョンアップ日：2024/2/11
まとめ投稿日：2024/1/28

https://qiita.com/piepie1231/items/7aad318c71f1c0058e2c

# Winter '24
リリースノート公開日：2023/8/16
日本語リリースノート公開日：2023/9/5
バージョンアップ日：2023/10/15
まとめ投稿日：2023/9/7

https://qiita.com/piepie1231/items/402a014f50ed70f3be31

# Summer '23
リリースノート公開日：2023/4/26
日本語リリースノート公開日：2023/5/23
バージョンアップ日：2023/6/11
まとめ投稿日：2023/6/6

https://qiita.com/piepie1231/items/2a6393e2c5d7b789cbca

# Spring '23
リリースノート公開日：2022/12/21
日本語リリースノート公開日：2023/1/18
バージョンアップ日：2023/2/12
まとめ投稿日：（さぼった）


# Winter '23
リリースノート公開日：2022/8/17
日本語リリースノート公開日：2022/9/16
バージョンアップ日：2022/10/16
まとめ投稿日：2022/10/23

https://qiita.com/piepie1231/items/bbcca06fc76ed92245e1

# Summer '22
リリースノート公開日：2022/4/27
日本語リリースノート公開日：2022/5/30
バージョンアップ日：2022/6/12
まとめ投稿日：2022/6/29

https://qiita.com/piepie1231/items/e311fcc5f98a4a076ebc
Azure data factoryのデータフローのシンク先のファイル名の指定


シンク先はデータセットのファイル名ではなく、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269528/237b15e0-5cf2-51d6-cdb1-7feb7c281ade.png)

マッピングデータフローのシンクで指定する必要がある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269528/6e834062-aa57-e8bb-9e93-6e345310454b.png)

ここで
- 「既定」とすると、ファイル名は<part~>.<ソースファイルと同様の拡張子>
- 「パターン」とすると、<指定したファイル名-00XX>.<ソースファイルと同様の拡張子>
- 「1つのファイルへの出力」とすると、<指定したファイル名(拡張子込み)>
となる
Bit Turbo Pro Avis - Site Officiel de la Plateforme de Trading!

Si vous souhaitez faire du day trading, vous souhaiterez peut-être quelques éléments supplémentaires chez un courtier. Ce site n'est pas destiné à être utilisé dans les juridictions dans lesquelles les transactions ou les investissements décrits sont interdits et ne doit être utilisé que par les personnes et de la manière légalement autorisées. Votre investissement peut ne pas être éligible à la protection des investisseurs dans votre pays ou état de résidence, veuillez donc faire preuve de diligence raisonnable.

Nous sommes également une communauté de traders qui se soutiennent mutuellement dans notre parcours commercial quotidien. Une autre façon de sortir consiste à avoir un objectif défini et à sortir lorsque le prix atteint cet objectif. Par exemple, certains traders choisissent les niveaux de support et de résistance comme cibles. L'un des traders de forex ici sur BabyPips.com, Pip Surfer, estime qu'il est préférable d'attendre qu'une bougie se ferme avant d'entrer. Bien sûr, il existe de nombreuses autres façons pour les traders de forex de repérer les tendances, mais les moyennes mobiles sont l'une des plus simples à utiliser.
ターミナルセッション管理ツール `screen` の基本的使い方


# ターミナルセッション管理ツール `screen` 

`screen` コマンドは、LinuxやUNIX系システムで複数のターミナルセッションを同時に管理できる強力なツールです。リモートサーバー上で長時間実行されるタスクを中断せずに続行させるのに非常に役立ちます。本記事では、`screen` コマンドの基本的な使い方を解説します。

## `screen` コマンドの概要
`screen` は、複数の端末セッションを一つの端末上で同時に実行し、セッションをバックグラウンドで維持するためのツールです。例えば、SSH接続でリモートサーバーにログインし、長時間実行されるタスクをバックグラウンドで続行させることができます。

## 基本的な使い方

### セッションの開始
新しい `screen` セッションを開始するには、以下のコマンドを使用します。

```bash

screen

```

これで新しいセッションが作成され、通常のシェルプロンプトが表示されます。

### 名前付きセッションの開始
特定の名前を付けてセッションを開始するには、`-S` オプションを使用します。

```bash

screen -S my_session

```

### セッションのデタッチ
現在のセッションをデタッチ（バックグラウンドに移動）するには、以下のキーボードショートカットを使用します。

```

Ctrl + a d

```

### デタッチしたセッションへの再接続
デタッチしたセッションに再接続するには、以下のコマンドを使用します。

```bash

screen -r my_session

```

すべてのデタッチされたセッションのリストを表示するには、以下のコマンドを使用します。

```bash

screen -ls

```

## `screen` 内での操作

### 新しいウィンドウの作成
新しいウィンドウを作成するには、以下のキーボードショートカットを使用します。

```

Ctrl + a c

```

### ウィンドウの切り替え
次のウィンドウに切り替えるには、以下のキーボードショートカットを使用します。

```

Ctrl + a n

```

前のウィンドウに切り替えるには、以下のキーボードショートカットを使用します。

```

Ctrl + a p

```

### 特定のウィンドウに移動
特定のウィンドウに移動するには、以下のコマンドを使用します。

```

Ctrl + a [ウィンドウ番号]

```

## セッションの終了
`screen` セッションを終了するには、実行中のシェルを終了する（`exit` コマンドを実行する）か、以下のキーボードショートカットを使用します。

```

Ctrl + a k

```

## その他の便利なコマンド

### スクロールバック
`screen` 内でスクロールバックするには、以下のキーボードショートカットを使用します。

```

Ctrl + a [

```

これによりコピー・モードに入り、矢印キーを使ってスクロールできます。終了するには `Esc` キーを押します。

### セッションのロック
セッションをロックするには、以下のコマンドを使用します。

```

Ctrl + a x

```

## まとめ
`screen` コマンドを使えば、リモートサーバー上での作業や長時間実行されるタスクを中断することなく続行できます。
基本的には下記コマンドやショートカットがわかっていれば大丈夫です。

```

#セッション開始
screen -S my_session
#デタッチ（ショートカット）
Ctrl + a d
#セッションに再接続
screen -r my_session
#セッションリスト表示
screen -ls

```
米田埋め込みは単位的プロ函手

## 米田埋め込み
米田埋め込みを
```math
\begin{align}
\Delta^\mathbb{C}_{(a)}&:=\text{Hom}_\mathbb{C}(-,a)\\
\Delta^{(a)}_\mathbb{C}&:=\text{Hom}_\mathbb{C}(a,-)
\end{align}
```
と表す．
## Kan 拡張
Kan 拡張とエンド，コエンドには次の関係がある．
```math
\begin{align}
\text{Lan}_EF_{(d)}&=\overline{\bigoplus_{c\in\mathbb{C}}}\Delta_{(d)}^{E_{(c)}}F_{(c)} \\
\text{Ran}_EF_{(d)}&=\overline{\bigotimes_{c\in\mathbb{C}}}{\Delta^{(d)}_{E_{(c)}}}^{F_{(c)}} \\
\end{align}
```
## 米田の補題
ここで，
```math
F_{(d)}= \text{Ran}_{id}F_{(d)}
```
であるので，
```math
\begin{align}
F_{(d)} &= \text{Ran}_{id}F_{(d)} \\
&= \overline{\bigotimes_{c\in\mathbb{C}}}{\Delta^{(d)}_{id_{(c)}}}^{F_{(c)}} \\
&= \overline{\bigotimes_{c\in\mathbb{C}}}\text{Hom}\left({F_{(c)}},\Delta^{(d)}_{(c)}\right) \\
&= \text{Nat}(F_\mathbb{C},\Delta_\mathbb{C}^{(d)})
\end{align}
```
つまり，米田の補題を
```math
F_{(d)} = \overline{\bigotimes_{c\in\mathbb{C}}}{\Delta^{(d)}_{(c)}}^{F_{(c)}} \\
```
このような形式で表すことができる．
また，双対的に余米田の補題を
```math
\begin{align}
F_{(d)}&=\text{Lan}_{id}F_{(d)}\\
&=\overline{\bigoplus_{c\in\mathbb{C}}}\Delta_{(d)}^{id_{(c)}}F_{(c)}\\
&=\overline{\bigoplus_{c\in\mathbb{C}}}\Delta_{(d)}^{(c)}F_{(c)}\\
\end{align}
```
と表す．
余米田の補題はプロ函手の合成として考えると
```math
F_{(d)}=\overline{\bigoplus_{c\in\mathbb{C}}}\Delta_{(d)}^{(c)}F_{(c)}=\Delta_{(d)}^\mathbb{C}F_\mathbb{C}
```
Azure data factoryを利用してスキーマを定義せずコピーする

スキーマ定義しないメリット
-　パラメータパイプラインを利用して異なるスキーマのデータを1つのパイプラインでデータ連携可能

スキーマを定義しないデメリット
- ソースデータのスキーマ定義の変更に気づけず、後続のデータ加工、データ活用段階に影響をあり


### データフロー
- ソースデータセット、シンクデータセットのスキーマをクリアしたうえで、データセットのソースとシンクにてパラメータをセットする
- ファイル対ファイルの検証しかしていないが、シンクのマップタブの「自動マッピング」はデータフローでは同名のファイルの更新の場合ファイルの洗い替えとなるため設定しても意味なさそう

### コピーアクティビティ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269528/802ddcf5-0916-8480-7aa7-34678d23512c.png)

引用：https://learn.microsoft.com/ja-jp/azure/data-factory/copy-activity-schema-and-type-mapping#schema-mapping