OmniAICreator/Qiita-1.07M huggingface dataset:
ドメインユーザとグローバルグループの情報を参照する




# ドメインユーザ確認
コマンド例

```
>net user [ユーザ名] /domain
この要求はドメイン XXXXXXXX のドメイン コントローラーで処理されます。

ユーザー名                           *******
フル ネーム                          *******
コメント                             
ユーザーのコメント
国/地域番号                          XXXX
アカウント有効                       Yes
アカウントの期限                     無期限

最終パスワード変更日時               20YY/MM/DD hh:mm:ss
パスワード有効期間                   20YY/MM/DD hh:mm:ss
パスワード次回変更可能日時           20YY/MM/DD hh:mm:ss
パスワードあり                       Yes
ユーザーによるパスワード変更可能     Yes

ログオン可能なワークステーション     すべて
ログオン スクリプト
ユーザー プロファイル
ホーム ディレクトリ
最終ログオン日時                     20YY/MM/DD hh:mm:ss

ログオン可能時間                     すべて

所属しているローカル グループ
所属しているグローバル グループ      ********
                                     ********
コマンドは正常に終了しました。
```

# グローバルグループ確認

コマンド例

```
>net group [グローバルグループ名] /domain
この要求はドメイン XXXXXXXX のドメイン コントローラーで処理されます。

グループ名     ************
コメント       

メンバー

-------------------------------------------------------------------------------
**********            **************
コマンドは正常に終了しました。

```
STM32G031でRS-485パケットでアナログサーボを動かす(モニター


x まだ試していない 確認済み2002/5/11 22:24

目的
STM32G031で数珠繋ぎで複数サーボを動かす
とごまで行けるかわからないがやってみる
1話にならずに複数話になる。

モニター

![o_con427.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/30badf62-45c0-d52e-b610-5eb740c630ec.jpeg)


プログラム



```c++


//ser_500kbps_mon_031_1

// tx PA14(PB6) 8PIN
// rx PC14(PB7) 1PIN

#include <Arduino.h>


#define DW   digitalWrite
#define TX1        PA11   // 4pin
#define UART_DELAY 106    // 002-110 9600bps ok 031

//仮想シリアルへの一文字出力 9600bps
void pc_putc(char ch)
{

  DW(TX1, HIGH);

  DW(TX1, LOW);//START
  delayMicroseconds(UART_DELAY); //START BIT WAIT

  for (int ii = 0; ii < 8; ii++) {
    DW(TX1, (ch >> ii) & 1  );
    delayMicroseconds(UART_DELAY); //DATA 1-8BIT WAIT
  }//for

  DW(TX1, HIGH);//Stop
  delayMicroseconds(UART_DELAY); //StOP BIT WAIT

}//pc_putc


//文字列の表示
int pc_printf(char *str1) {

  //文字の中身がゼロか
  while (*str1) {

    //一文字出力
    pc_putc(*str1 ++);

  } //while

  //戻り値
  return (0);

}//pc_printf


int u_key;      // 受信データを格納するchar型の変数
int ch_in_key() {

  // 受信データがあった時だけ、処理を行う
  while (!Serial.available()) {}      // 受信データがあるか？
  u_key = Serial.read();            // 1文字だけ読み込む

  return (u_key);
}


//初期化処理
void setup() {

  delay(3000); //not Delete

  //TXポートの初期化
  pinMode(TX1, OUTPUT);
  DW(TX1, HIGH);

  Serial.begin( 500000 ); // シリアル通信の速度を500000bpsにする。

  pc_printf("ST\r\n"); //debug

} //setup

//メインループ
void loop() {

  int ii;           //カウンター
  char out_buff[8]; //バッファー
  char x;           //一時領域

  x = (char)ch_in_key();

  char c_hex[] = {
    '0', '1', '2', '3', '4', '5', '6', '7',
    '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
  };

  //ヘキサに値を設定
  // packet move
  out_buff[0] = '[';
  out_buff[1] = c_hex[(x >> 4) & 0x0f];
  out_buff[2] = c_hex[x & 0x0f];
  out_buff[3] = ']';
  out_buff[4] = 0x00;

  //送信処理
  //send 8 byte
  pc_printf(out_buff);

  //delay(1000);

} //loop



```
【Webサイト】iOS 8でも正常に閲覧できるようにするには

# 前書き
未だにiPhone 5s（iOS 8.3）を所持している者です。

先日、パートナー用のホームページの制作・更新を行いました。正確に言うと今でも制作中ですが。。そちらについては後日お話出来ればと思います。

2022年5月11日現在では、
・iPhoneのiOSシェア率は、iOS 14以上で93%を占めているようです[^1]。
・iPadのiPadOSシェア率は、iOS 14以上で86%を占めているようです[^1]。
≫ [App Store - Support - Apple Developer](https://developer.apple.com/support/app-store/)

そんな中、Webサイトでも、iOSアプリでも、iOS ●●以上対応、iOS ●●未満はサポートしない（あるいは終了）と決めているプロジェクトも多く存在していると思います。

今回は、**敢えて時代に逆行して（？）WebサイトをiOS 8に対応させたTipsたちの紹介**です。随時更新です。


# CSS
## -webkit-（ベンダープレフィックス）はまだまだ必要
- background の `linear-gradient`
- `transition`
- `transform`
- `object-fit`
- `column`
- `@animation`

他にもあるかも知れませんが･･･上手く表示されないは -webkit- を付ける必要がある？を疑っています。
こんな感じで２つ併記しています。
```css
.element {
    background: -webkit-linear-gradient(180deg, #001540 0%, #07c 100%);
	background: linear-gradient(180deg, #001540 0%, #07c 100%);
}
```


# SSL 証明書
無料の証明書と言えば、みんな大好き！Let's Encryptですよね。

しかし、2021年にLet's Encryptのルート証明書が変更になり、iOS 10未満では閲覧できなくなっています。**勿論iOS 8でも閲覧できません。**
こちらはさくらインターネットさんが詳しく説明なさっています。
≫ [2021年にLet’s Encryptのルート証明書が変更！影響や備えておくべきこととは？ | さくらのSSL](https://ssl.sakura.ad.jp/column/letsencrypt-root-certificate/)

しかし、ZeroSSLさんであればまだiOS 8に対応してくださっています。
ただし、無料で取得できるのは月に３つまでですが。。
≫ https://zerossl.com/

あるいはまともに、有償SSLを購入するか、ですね。


# 〆

引き続きWebサイトを制作して、躓いたこと・気付いたことがあれば、このページをアップデートしていきます。

[^1]: 全端末にて。過去4年間に販売した端末に限定するとパーセンテージはもう少し上がります。
【python3】リストをintに変えて出力したい場合【標準入力】

# 前置き
python3の標準入力問題を解いているとリストの要素をint型に変えて出力したいときが頻発することが多い。
そんな時にmap関数が使えるのだ！！！

# 使用例

```python
input_list=["6","10","13"]
```

↑の要素[0]と[1]を出して整数として足し算させたい場合があるとする
期待する出力は
```python
16
```

しかしそのまま抜き出しても↓

```python
#print(input_list)すると['6','10','13']と表示される
print(input_list[0]+input_list[1])#610
```

`610`というように文字の結合になってしまう。

ではどうすればリストの要素をint型に変えて足し算することができるのか。

listにした上でmap関数の引数にintと対象のlistを入れると良いのだ

map関数を下記の様に使う！↓
```python
input_list=["6","10","13"]
int_list=list(map(int,input_list))#リストの要素を数字にする
print(int_list)#[6,10,13]
print(int_list[0]+int_list[1])#16
```
キーボードスイッチ打鍵感を静音化２

磁石の反発　シリコンチューブと色々と試したが

今回でエンドゲームとなりうる素材が見つかった。

それは『圧縮スプリング』。

勘違いしないでほしいが、
キーストロークのスプリングはそのまま使用するし、
好みのスプリングに交換できる方法だ。
キースイッチに追加加工も
接着剤や接着テープの使用しないし
取り外せば、ノーマルのキースイッチに戻る。

作業時間は1分程度で、完了する手軽さ。
その詳細を記載していこう。

今回、使用した圧縮スプリングは
株式会社 アキュレイト
商品コード　DC086 

圧縮スプリング
外径　1.8mm
線径　0.2mm
自由長　3.0mm

同じ仕様の圧縮スプリングを探して
他メーカー品を使っても良いだろう。


この圧縮スプリングを組み込むと磁石反発で作成した
キースイッチと同じ感触を再現できた。

組み込み方は
キースイッチをキースイッチオープナーで開ける

ボトムハウジング中心の穴にDC086を入れる
スプリングがとても小さいので、ピンセットを使うか
爪楊枝に刺して落とし込むと楽で良い

そのままキースイッチを閉じる

ステムのピン径が1.9mmほどのキースイッチで
この改造ができる。

Gateron Pre-lubed 3 Pins Linear Switche
Sliver
と
Tecsee Jadeite
の2種類で試作した。

Tecsee Jadeiteはボトムハウジングが透明で
スプリングの動作が良く観察できた。

キー動作は押下1mm程度は、ノーマルと変わらない。
その間はDC086は圧縮はしていない。
DC086が圧縮し始めると押し込み抵抗感が急激に
増し始める。
磁石反発で感じたトランポリン状態で
ステムがボトムハウジングに接触しないままで
押したキーを戻せる。

DC086の基準荷重が0.071kgf
これよりも軽いスプリングのキースイッチか
軽いスプリングに交換したキースイッチが対象になる。
今回の試作したキースイッチには
35g 3ステージを1ステージを短くカットした
24g 2ステージのスプリングを使っています。

試していないので、使用感は不明だが
もう少し重い(固い？)スプリングの
DC121 基準荷重　0.136kgf
圧縮スプリング
外径　1.85mm
線径　0.25mm
自由長　3.0mm
がある。

押し込み加減の好みによってはDC121が
良いかもしれない。

副次的な効果があった。
追加したスプリングが
ステムのピンを下から支える形になり
ステム全体をセンタリングするためか
戻りもスムーズになったように感じる。
STM32G031でRS-485パケットでアナログサーボを動かす(送信(その1


x まだ試していない 確認ずみ 2022/5/12 17:19


目的
STM32G031で数珠繋ぎで複数サーボを動かす
とごまで行けるかわからないがやってみる
1話にならずに複数話になる。


送信

こんなもんだ



```c++



//ser_500kbps_031_2

// tx PA14(PB6) 8PIN
// rx PC14(PB7) 1PIN

#include <Arduino.h>

//初期化処理
void setup() {

  delay(3000); //not Delete

  Serial.begin( 500000 ); // シリアル通信の速度を500000bpsにする。

} //setup

//メインループ
void loop() {

  int ii;           //カウンター
  char out_buff[8]; //バッファー

  //バケットに値を設定
  // packet move
  out_buff[0] = 0x00; //header
  out_buff[1] = 0x10; //address
  out_buff[2] = 0x00; //data1  zero Fixed
  out_buff[3] = 0x00; //data2  zero Fixed

  out_buff[4] = 0x00; //data3  zero Fixed
  out_buff[5] = 0x12; //data4 pwm  Angle of rotation 0to255
  out_buff[6] = 0x00; //Checksum
  out_buff[7] = 0xff; //footer

  //チェックサムの計算
  //Checksum
  int chk = 0;
  for (ii = 0; ii < 8; ii++) {
    chk = chk + out_buff[ii];
  }//for
  out_buff[6] = chk & 0xff;

  //送信処理
  //send 8 byte
  delay(1);
  for (ii = 0; ii < 8; ii++) {
    Serial.write(out_buff[ii]);
  }//for
  delay(1);

  delay(1000);

} //loop




```
yum install と localinstallの違い

# はじめに
環境構築の際に使う`yum`コマンド。
基本的な流れはリポジトリを追加(インストール)して、それを基にパッケージを取ってくるわけですが

環境構築方法を調べると
`yum install` と `yum localinstall`を使っているサイトがありますよね

どっちでも出来るんですが、何が違うのだろうと
ふと気になったのがきっかけ。

# 調べてみた

- [RHEL yumコマンドチートシート](https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-ja.pdf)

によれば

### yum install
> リポジトリからシステムにパッケージをインストールする

```:例
# vsftpd パッケージをインストールする
yum install vsftpd
```

うん。これはまあわかる。

### yum localinstall
> ローカルファイル、http、または ftp からパッケージをインストールする

```:例
# ローカルディレクトリから abc パッケージをインストールする
yum localinstall abc-1-1.i686.rpm
```
```:例2
# FTP サイトから abc をインストールする
yum localinstall http://myrepo/abc-1-1.i686.rpm
```


おろ？
なるほど、名前通りローカル内にあるrpmファイルからパッケージをインストールできるわけですね。
(リポジトリの追加って言った方が正しい気がする)

ローカルから出来るってことは
rpm用のディレクトリ作っておいて
```:/tmp/rpm
yum localinstall *
```
みたいにすれば一気にリポジトリが追加できますね
なるほどなるほど

例2はいつものやつですね
普通にサイトから直接とってくる奴ですね


# 比較
それじゃあ`yum install`でrpmファイルは取得できないのか？
(リポジトリは追加できないのか？)

**結論：出来る**

出来るんかーい！

じゃじゃじゃじゃあ
`yum localinstall`でパッケージのインストールはできないのか？

**結論：出来ない**

出来ないんかーい！


調べてみると、こんなのを見つけました。
[参考](https://www.web-dev-qa-db-ja.com/ja/yum/%60yum-install-ltlocal-pathgt%60%e3%81%a8-%60yum-localinstall-ltlocal-pathgt%60%e3%81%ae%e9%81%95%e3%81%84%e3%81%af%e4%bd%95%e3%81%a7%e3%81%99%e3%81%8b/959644087/)

>RHEL 5以前のバージョンでは、`yum install`は有効なリポジトリからのパッケージ名のみを受け入れ、ローカルRPMへのパスを受け入れませんでした。これらをインストールするには、`yum localinstall`を使用する必要がありました。<br>
>RHEL 6以降では、`yum install`はパッケージ名とローカルファイル名の両方を受け入れるため、`localinstall`は不要になりましたが、下位互換性のために含まれています。<br>
>RHEL 8では、`dnf localinstall`は`dnf install`の単なるエイリアスです。

なるほどー
つまり以前はrpm取得(リポジトリの追加)する際には
`yum localinstall`じゃないとダメだったけど
RHEL 6以降
`yum install`でも取ってこれるようになったと。ふむふむ。


そして
>CentOS7では微妙な違いがあることに注意してください
`Sudo yum install <alreadyExistingPackage>`
エラーが発生しますError: Nothing to do<br>
しかし<br>
`Sudo yum localinstall <alreadyExistingPackage>`
エラーは発生しません

ほー
`yum install`だとすでにリポジトリが追加されている場合、エラーが返るが
`yum localinstall`だとエラーは出ない

# 結論
ローカルにrpmファイルをあらかじめ用意しておいて
まとめて追加するとかやる以外は
基本`yum install`で良いんじゃないかと

```
# リポジトリの追加
yum install [パッケージ名(url)].rpm

# リポジトリの確認
yum repolist

# パッケージのインストール
yum install [パッケージ名]
```

注意点としては
`yum localinstall`でも出来るけど
最終的なパッケージのインストールは
`yum install`じゃないと出来ないよってことですね
<br>
<br>
結論：`yum install`で良くね？

# おまけ
```
rpm -qlp [パッケージ名].rpm
```
するとパッケージに含まれているファイル一覧が表示される

`.repo`ファイルにリポジトリURLが書かれており
`yum install [パッケージ名]`することでこのURLからパッケージがダウンロード＆インストールされる

# 参考
epelやら基本的なことにまったく触れてないですが
参考サイト様＆参考記事がわっかりやすく書いてくださっているので
こちらを見てもらえればと思います

- [Linux yum を基礎から理解する](https://www.kimullaa.com/entry/2020/01/19/101928)

- [yumが何をしているのかについて理解してみよう](https://qiita.com/taro-hida/items/1cc86a1c713e835ffb41)

- [yum (dnf) でインストールメディアやローカルに保存されているrpmを適用する方法](https://tech-mmmm.blogspot.com/2016/05/yumrpm.html)
初心者🔰がR環境を構築したら。

# はじめに
「え？そこから説明いる？」と思われるほどの本気の初心者です。

# Rのインストール
以下のURLよりRをダウンロードする。 
自分のOSとそのバージョンにあったものを選ぶ。

https://cran.r-project.org/

(個人的メモ)
macOS 10.14.6を（未だに）使っているので、R-4.2.0.pkgを選択した。(2022.5.11) 


# Rstudioのインストール
以下のURLよりRstudioをダウンロードする。
自分のOSとそのバージョンにあったものを選ぶ。


https://www.rstudio.com/products/rstudio/download/#download

(個人的メモ)
上記のURLは最新版のダウンロード用。
macOS 10.14.6では動かないので、以下のURLから古いバージョンをダウンロードした。(2022.5.11) 
自分のOSにどのバージョンをインストールすべきなのかが、パッと見で分からない:sweat_smile:
ので、1個ずつ動くかどうか試して（！）RStudio-1.2.5042をインストールした。

https://www.rstudio.com/products/rstudio/older-versions/


# tidyverseパッケージのインストール
"パッケージ"は追加でインストールすると、Rでできることが増える便利グッズ集のような存在。
細かいことは分からなくても、とりあえず初心者は"tidyverse"をインストールするとよい！（らしい）

なので、RとRstudioをインストールしたら、Rstudioを立ち上げて、
console pane（paneとは、いくつかに仕切られた窓の各々の"区画"を意味する英語。
Rstudioを立ち上げた際に出てきたwindowの中の左側の区画がconsole pane）に
以下の呪文を記載し、実行(windows:control+enter, Mac:command+enter)する。

```install.packages("tidyverse")```

しばし待つ...。

```パッケージのソースからインストールを行いますか? (コンパイルが必要です)  (Yes/no/cancel) ```

と聞かれるけれど、"no"と答えるべきらしい...。

知らずに"yes"と答えてしまい、わ！となったのだけれど、右下のpaneの"package"タブを選び、
packageリストの中から"tidyverse"を探し、"tidyverse"の左側のチェックボックスをonにしたら、
なんとかインストールされたっぽい。

インストールが終わると、以下のようなリストが出てくるけれど、
"conflict"は、もともとあったファイルを上書きしてしまった！という意味らしい。

この場合、
dplyr::filter() が stats::filter() を上書きしたので，
パッケージ名を付けずに filter() を呼び出すと、dplyr::filter() が呼び出される。
stats::filter() を使いたい場合には stats:: を付けてね。ということらしい。
（意味が分かってないけど、とりあえずメモ）


```── Attaching packages ──────────────────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.6     ✔ purrr   0.3.4
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.2     ✔ forcats 0.5.1
── Conflicts ─────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()```
【Flutter】Error解決: Command PhaseScriptExecution failed with a nonzero exit code

## Error 内容

```
../../../.pub-cache/hosted/pub.dartlang.org/carousel_slider-4.1.1/lib/carousel_slider.dart:268:7: Error: No named parameter with the name 'padEnds'.
      padEnds: widget.options.padEnds,
      ^^^^^^^
../../../fvm/versions/2.2.1/packages/flutter/lib/src/widgets/page_view.dart:664:3: Context: Found this candidate, but the arguments don't match.
  PageView.builder({
  ^^^^^^^^^^^^^^^^
../../../.pub-cache/hosted/pub.dartlang.org/firebase_crashlytics_platform_interface-3.2.0/lib/src/method_channel/utils/exception.dart:13:11: Error: Method not found: 'Error.throwWithStackTrace'.
    Error.throwWithStackTrace(exception, stackTrace);
          ^^^^^^^^^^^^^^^^^^^
../../../.pub-cache/hosted/pub.dartlang.org/firebase_crashlytics_platform_interface-3.2.0/lib/src/method_channel/utils/exception.dart:16:9: Error: Method not found: 'Error.throwWithStackTrace'.
  Error.throwWithStackTrace(
        ^^^^^^^^^^^^^^^^^^^
../../../.pub-cache/hosted/pub.dartlang.org/firebase_crashlytics_platform_interface-3.2.0/lib/src/method_channel/utils/exception.dart:11:7: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Never convertPlatformException(Object exception, StackTrace stackTrace) {
      ^

Command PhaseScriptExecution failed with a nonzero exit code
```

## 原因
Flutterのバージョンを上げて、下げた際に発生していたエラーで、パッケージのバージョンの不具合が発生していました。

## 解決方法

1. パッケージのバージョンをpubspec.yamlに記載のバージョンに戻す。
```
flutter pub downgrade
```

2. パッケージのバージョンを再度更新する。
```
flutter pub pugrade
```
Docker Tutorial をやる

# 環境
windows10 pro
Docker Desktop
WSL2

# Docker Tutorial をやる

https://zenn.dev/taichifukumoto/scraps/bfbdb56f7e5852
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/aed83980-5005-0138-d21e-31a44e95f880.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/43d6415e-5328-ef2b-d77f-a0793b2d0ae5.png)

# git clone 
左中央の水色ボタンを押すと、右側のコマンドラインでコマンドが実行される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/0c4bfd14-e765-a15f-5b0c-8bb497d1e7c0.png)

#  http://localhost 

コンテナを起動した状態で、
```
docker run -dp 80:80 docker/getting-started
```


http://localhost  を見る。

和訳記事
https://qiita.com/Michinosuke/items/5778e0d9e9c04038903c

# app.zipをDLして展開する。
Powershell/commandline などのターミナルを開く
appフォルダへ移動。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/8be968e3-c7c1-758d-be4b-93bf763e784c.png)

cd app
docker build -t getting-started .
docker run -dp 3000:3000 getting-started

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/91e9ce24-98af-a2bf-f998-7a264c6ae10b.png)

# WEBアプリの更新をする

例）画面に表示されているメッセージを変更する

src/static/js/app.js　の５６行目を変更する。
再ビルド　docker build -t getting-started .
 →　エラーになる。理由はまだ前のコンテナが動作しているため。GUIでコンテナを止める

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/ad5dc40c-fad9-98fa-e253-4b5a8d5519bd.png)

# CLIでコンテナを削除する
CLIって、コマンドラインインターフェースってこと？

# DB
このあと、DBに保存するtutorialをやった。

# docker-compose
複数のコンテナを使うDockerアプリケーションを定義・実行するツール。compo-seはアプリケーションのサービス設定に、composeファイルを使います。

# python環境の構築

https://qiita.com/jhorikawa_err/items/fb9c03c0982c29c5b6d5
https://www.utakata.work/entry/docker-python-tutorial/1

# Python の Docker イメージを探す
だいたい、dockerhubにある。condaのCondaCloudみたいな感じ。
https://hub.docker.com/

python公式イメージ　https://hub.docker.com/_/python

# windows/ Docker Desktop with CUDA

https://zenn.dev/kenn/articles/ac128ed2775370
FileMakerの開発支援ツールMBS FileMaker Plugin (3) オカレンス検索

FileMakerで開発する際にとても重宝するツールがあります。それはMBS FileMaker Pluginというものです。
MBS FileMaker Pluginは非常にたくさんの機能追加をFileMakerアプリにもたらせますが、開発環境への便利ツールも数多く提供されています。
開発に関する機能を使うだけならば、作成したアプリにプラグインを入れる必要がありません。

ここではリレーションシップとレイアウトにかかる機能を紹介します

## リレーション画面でオカレンスを検索できる


MBS FileMaker Pluginをインストールすると、リレーションマップのウィンドウ下部に検索窓ができます。
![Screen Shot 2022-05-11 at 15.13.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/68cb036f-8271-fe12-222e-a5f91f252cfc.png)

プルダウンメニューを選ぶと登録されているオカレンス名が一覧で表示されますので、そこから任意に選択しエンターキーを押します
![Screen Shot 2022-05-11 at 15.13.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/ec9d316d-51b7-d4c2-a082-f524abb1a236.png)

対象のオカレンスが選択された状態になり、見つけることができました
![Screen Shot 2022-05-11 at 15.13.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/13417a2b-1212-28b2-201e-0bdb44cd72eb.png)

プルダウンからの選択以外に、任意の文字列入力でもオカレンスを探すことができます
![Screen Shot 2022-05-11 at 15.14.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/05a668ff-e89b-21bb-a464-37a129229952.png)

文字を途中まで入れると対象となるオカレンスがあれば補完してくれます
![Screen Shot 2022-05-11 at 15.14.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/8e630f9f-92f2-b5b1-12fd-5bf8d983a452.png)

従来でも非公式でしたがリレーションのウィンドウで文字を入力することでオカレンスを探すことができましたが、検索窓にて検索することでより的確に目的のオカレンスやリレーションシップを見つけることができるでしょう。

## レイアウト一覧ウィンドウのカラム幅を変えられる

FileMakerの標準機能ではカラム幅を変えられないのですが、MBS FileMaker Pluginを用いるとカラム幅を可変にできるので、レイアウト名が見切れることなく探しやすくなります。
レイアウトIDも表示されるので識別が確実になるでしょう
![Screen Shot 2022-05-11 at 15.15.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/3784415c-3422-0065-e7f9-f275ecefe189.png)


EOF
riverpodでautoDiposeのStateNotifierを使用する時の注意点

## 問題
`autoDispose`の`StateNotifierProvider`を作って、
widgetから呼び出そうとした時、以下のエラーが発生。
```
Bad state: Tried to use StateNotifier after dispose was called
```

## 原因
`autoDispose`をつけた`provider`は初めて呼び出されたwidgetから生存開始し、
subWidgetも含め、stateを監視されている間は生き続ける。
その初回widgetが破棄されると同時にdisposeされる。それがautoの意味らしい。

ただ、どのwidgetからも監視されず、例えば毎回`ref.read`で呼び出されると、その都度disposeされてしまう。たぶん、riverpodでは、`State`を保持する必要性を`listener`がいるかで判断している。

## 解決方法
適切のところで`ref.watch`をする。
WebRTCでTURNサーバを利用しているかをRTCIceCandidateから調べる

chrome://webrtc-internals/から手動で調べる方法はあるが、JSから調べる方法がわかりづらかったのでメモ。


```js
pc.getTransceivers()[0].sender.transport.iceTransport.getSelectedCandidatePair().remote.type
```

Chromeだと、これが"relay"になっているとTURNで繋がっているとのこと。
なんかブラウザによって値が違うらしいので注意。
https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate/type

# 参考
https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate
https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate/type
https://support.skyway.io/hc/ja/articles/236031388-TURN%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
Railsにサンプルデータを作成する方法

### 1,Fakerを導入する
```
gem 'faker'
```
今回私はtest環境とdevelopment環境に反映したいので、
```
group :development, :test do
  # （略）
  gem 'faker'
end
```
### ２、```db/seed.rb```にサンプルデータを作成する処理を書く。

```rb
# 追加のユーザーをまとめて生成する
99.times do |n|
  name  = Faker::Name.name
  email = "example-#{n+1}@railstutorial.org"
  password = "password"
  User.create!(name:  name,
               email: email,
               password:              password,
               password_confirmation: password)
end
```

### 3,```rails db:seed```コマンドでデータベースにサンプルデータを反映。

必要ならば```rails db:migrate:reset```コマンドで、いまあるDBのデータを全て削除できる。
以上。
FileMakerの開発支援ツールMBS FileMaker Plugin (2) 検索窓他

FileMakerでの開発で効率アップにつながるツールとして、MBS FileMaker Pluginというものがあります。
開発を行う際にサポートしてくれる機能が豊富で、作成したシステムには影響を与えない（プラグインなしで実行できる）ところがよい点です。

MBS FileMaker Pluginはとても豊富な機能を有していますが、ここでは開発支援にかかる部分だけ紹介します。

MBS FileMaker PluginがMac、Windows共にリリースされていますが、特に開発にかかる機能はWindowsではサポートされていないところが多いのが注意点です。

## スクリプトを書くときに便利な機能　検索

プラグインを入れるとウィンドウ上部に検索窓が表されます
![Screen Shot 2022-05-11 at 12.58.16 copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/1790dbfa-33e8-5727-283a-28ff8ede2215.png)

今回は「担当者」というワードで検索してみます
そうすると、該当する行がハイライトされます
![Screen Shot 2022-05-11 at 12.56.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/5eb3ca28-164a-c623-bb5e-49e271058856.png)

対象物を探す際にとても重宝する機能と言えるでしょう

## スクリプトのフォントサイズ変更

ウィンドウ上部に　「-」「=」「＋」のボタンが表示されます
これはスクリプトの文字サイズを変更するためのボタンです

![Screen Shot 2022-05-11 at 12.57.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/366eea32-fba2-a7f6-f2da-4d3cfbe3ddfb.png)

「+」ボタンを押してスクリプトの文字サイズを大きくしてみました
![Screen Shot 2022-05-11 at 12.57.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/30029dad-091d-970b-ec2c-c0f23ea75e10.png)

小さな画面を利用している時や、視力が低めの場合は判読しやすくなるでしょう。

## スクリプトのコピー
スクリプトのコピー＆ペーストはFileMaker上では実現していますが、外部のソフトにペーストすることはできませんでした。MBS FileMaker Plugin を使えば、テキストエディタやチャットソフトなどにペーストすることができます。

ウィンドウ上部に、スクリプトテキストをコピーするボタンがあります
![Screen Shot 2022-05-11 at 12.58.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/1a38585d-d753-e5a1-59dc-f81cfdfa4f5f.png)

テキストエディタにペーストしてみました。
![Screen Shot 2022-05-11 at 14.10.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322472/27fd2738-7241-c25e-23d0-a66cf4503846.png)

スクリプトの説明などをしたい時に、スクリプトをPlain Textでそのままペーストできると、説明の効率があがることでしょう。

EOF
トランザクション処理

## トランザクション処理
<b>データベース更新時、切り離すことができない一連の処理のこと
例として、銀行の振込処理などがある。
トランザクション処理には<font color = blue>ACID特性</font>というものが求められている。
![r20_21-01b.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600460/4c3ae11c-ff7a-1eee-9e6d-c632ac8b472e.jpeg)
## 排他制御
<b>データベース更新時にデータの不整合が発生しないように、データの更新中はアクセスを制御(<font color = blue>ロック</font>)して、別のトランザクションから更新できないように処理すること。
### 共有ロックと専有ロック
<b><font color = blue>共有ロック</font>はトランザクションがデータを参照する前にかけるロック。共有ロック中のデータに対し、参照は可能だが更新はできない。
<font color = blue>専有ロック</font>はトランザクションがデータを更新する前にかけるロック。専有ロック中のデータに対しては、参照・更新共に不可。
### ロックの粒度
データを更新する時にロックの範囲を広くしてしまうと、他のトランザクションに待ち時間が多く発生して全体のスループットが低下してしまう。
## デッドロック
<b>複数のトランザクションが、互いに相手が専有ロックしているデータを要求して待ち状態となり、実行ができなくなる状態。
## 2相コミットメント
<b>分散型データベースにおいて、一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせた後、全てのサイトが確定可能であれば、更新処理を確定する方式。
全て障害なく更新できた場合は、全ての結果を確定する(<font color = blue>コミット</font>)。障害が発生した場合、その処理を強制終了(<font color = blue>アボート</font>)して、全ての結果を無効にし、更新前に戻す(<font color = blue>ロールバック</font>)
生成したQRコードが特定のQRリーダで読み込めない

# 事象
作成したQRコードが特定のQRリーダで認識されない。

QRコードは ZXing.NET というライブラリを使ってC#アプリで作成。  
スマホのQR読取アプリ「QRefine」ではQRコードの内容を読み取り可能。

# 解決策
QrCodeEncodingOptionsのパラメータに`DisableECI = true`を追加したら解決した。  
QRリーダによってはECIがあるQRコードが読めないらしい。

設定例
```csharp
Options = new QrCodeEncodingOptions
                    {
                        QrVersion = 6,
                        ErrorCorrection = ErrorCorrectionLevel.M,
                        CharacterSet = "ISO-8859-15",
                        DisableECI = true,
                        Width = 200,
                        Height = 200,
                        Margin = 2
                    }
```

# 参考
同じ事象にハマっていた人のブログ記事  
[孤独な社会人の一人遊び QR code (fc2.com)](http://yyh8.blog41.fc2.com/blog-entry-874.html)

ZXing.NET QrCodeEncodingOptionsのパラメータ詳細  
[ZXing を使ってQRコードを動的に生成して表示する - yotiky Tech Blog (hatenablog.com)](https://yotiky.hatenablog.com/entry/zxing_qrcodegenerate?msclkid=f661b556d0e311eca67774bcabc8289d)
JSON とは　参考サイトとメモ

### JSONとは？

https://and-engineer.com/articles/YUrUYBAAACUA2zGd

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典「JSON」

https://wa3.i-3-i.info/word13798.html


+ __データをやり取りするとき__ のファイルの書き方 __ルール__ のひとつ。
+ JSONファイルとは、JSONフォーマットで記述されたテキスト形式のファイルを指す。
+ JavaScriptで定義されているオブジェクト表記法の1つ。
+ 主要なプログラム言語から利用されており __データ交換__ に用いられる。


### JSONの表記形式

JSONの表記形式はシンプルで、以下の規則に従う。

表記形式：基本規則
　{ “名前”: 値 }
　{ “名前”: 値 , “名前”: 値 }
　{
　　“名前”: 値 ,
　　“名前”: 値 ,
　　“名前”: 値
　}

+ __名前と値のペア__
　データは名前と値のペアで記述します。
　名前と文字列の値はそれぞれ __”（ダブルクォーテーション）__ で括ります。
　’（シングルクォーテーション）は使用できません。

+ __｛｝（波カッコ）と:（コロン）の利用__
　データの __最初と最後__ は __｛｝（波カッコ）__ で括ります。
　__名前と値の間__ に __:（コロン）__ を入れます。

+ __名前と値のペアの間に,（カンマ）を利用__ 
　名前と値のペアが複数ある場合は、名前と値のペアの間に,（カンマ）を入れます。
+ __配列は[]（カッコ角カッコ）で、ネストは{}（波カッコ）で記述__
　値を入れ子とする場合は配列表記とネスト表記が可能です。

### JSONにはコメントを付けることができない

https://www.nxworld.net/use-comment-in-json.html

いくつか方法が挙げられていた。
自分は下記の方法を使ってみた。

```.json
"//":"コメント内容",
```
レコードタイプIＤの取得

### オブジェクトに複数のレコードタイプがある場合、作成したレコードのレコードタイプIDの取得方法

```
取引先の場合：

String recordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().
                      get('MainAccountRecordType').getRecordTypeId();

```
データの正規化

## データの正規化
<b>必要なデータ項目を整理して、データが重複しないように表を分割すること。
正規化は3段階ある。
### 非正規形
変化なし
### 第1正規形
<b>繰り返し項目を別の表に分割し、主キーを見つける。この際、他の表との関係付けを保持するために、共通する項目が必要になる。
### 第2正規形
<b>主キーになっている項目の一部だけで決定される項目を別の表に分割する。
### 第3正規形
<b>主キー以外の項目によって決定される項目を別の表に分割する。また、計算で求められる項目を削除する。

関係データベースにおいて項目Aが決まれば項目Bが決まる時、BはAに対して関数従属しているという。
SharePointの「複数の項目を取得する」を使いこなすときの参照先まとめ

タイトルのとおりです。フィルタークエリの記述っていつも検索して同じ人のブログをみにいったり
そのときは検索して見つけたのに参照先を控え忘れて次キーワード検索してもひっかからないなんてことがあります。

己のズボラさが調査時間増加につながってきてるので、いよいよまとめることにしました。


https://kurattyodiary.hatenablog.com/entry/StudyspoFilterQuery


### 比較演算子
等しい：eq
等しくない：ne
より大きい：gt
より小さい：lt
以上：ge
以下le


### Odata__ModerationStatusの値
0：承認済み

https://docs.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-wssfo3/4342322d-6fab-4dc5-8ccd-b808a5e25acf


### フィルタークエリで期間を用いるとき

https://yukushige.com/blog/?p=757

https://blog-tips.sekenkodqx.jp/2021/11/27/power-automate-yesterday-beginning-of-month-end-of-month/

### フィルタークエリで null を使うとき

''で囲まずにnullと記述するとよいようです。


https://kurattyodiary.hatenablog.com/entry/StudyspoFilterQuery


### フィルタークエリで 個人（ユーザーまたはグループ） を使うとき

なぜか 列名<b>/</b>E<b>M</b>ail とすると正常終了します。


https://twitter.com/jpnmasu/status/1386667870931673090
Modeler scriptのデバッグ・タブ

Modeler Scriptでデバッグをしたいときにはデバッグ・タブが便利です。

デバッグ・タブには、スクリプトによって (例えばエラー・メッセージ・テキストを通じて) 標準出力または標準エラーのいずれかに送信されたテキストが表示されます。

ですので、print文で任意の出力をすることができます。以下のように変数の中身の確認や、条件分岐に入ったかなどをトレースすることができます。



```python
print('hello')

a=2
print('a=%d' % a)

if a>1:
    print('a>1')
else:
    print('a<=1')
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1da231bb-e81d-5f05-8903-91cd0610f286.png)

また、以下のように、入力テキスト・フィールドにprint文を書き、Enterキーを押すと実行後のコンテキストで実行ができます。つまり上の例ですとa=2がはいっていることをprint文で確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d165a782-8865-f32c-8380-5b32ffdc9a38.png)

以下のようにprint(a)だけ実行した結果が返っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/70cf2ef5-8ff1-46fe-48fe-57f8f0788a0d.png)

この方法は、以下のように途中でエラーが発生するスクリプトでも実行可能です。

```python
a='hello'
machigai
print("end")
```
２行目でエラーが起きていますが、１行目のa='hello'は成功しています。ですのでprint(a)でaの内容を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/4575c90f-e89f-570a-04fd-1016aac69851.png)

以下のようにaに入っている'hello'が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/684563b3-22f1-a51a-8f39-e33e994fa004.png)

■テスト環境
Modeler 18.3
Windows 10 64bit

* 参考　ストリーム・スクリプト - IBM Documentation 
 
https://www.ibm.com/docs/ja/spss-modeler/SaaS?topic=language-stream-scripts

「デバッグ」タブには、デバッグ・メッセージが表示されます。このタブを使用すると、スクリプトの実行中にスクリプトの状態を評価することができます。「デバッグ」タブは、読み取り専用テキスト領域と 1 行の入力テキスト・フィールドから構成されています。テキスト領域には、スクリプトによって (例えばエラー・メッセージ・テキストを通じて) 標準出力または標準エラーのいずれかに送信されたテキストが表示されます。入力テキスト・フィールドは、ユーザーから入力を受け取ります。次に、この入力は、ダイアログ内で最後に実行されたスクリプトのコンテキスト (スクリプト・コンテキスト) 内で評価されます。テキスト領域には、ユーザーがコマンドのトレースを確認できるように、コマンドと結果の出力が表示されます。 テキスト入力フィールドには、コマンド・プロンプト (従来のスクリプトの -->) が常に表示されます。

以下の場合、新しいスクリプト・コンテキストが作成されます。

スクリプトを実行するには、「このスクリプトを実行」または「選択した行のみ実行」を使用します。
スクリプト言語を変更した場合。
新しいスクリプト・コンテキストが作成されると、テキスト領域がクリアされます。
【随時更新】個人的に参考になった記事・サイトのまとめ（PHP,Laravel,JavaScript,TypeScript,Three.js...）

# はじめに
個人的に参考になった記事・サイトのまとめです。
技術は問わずですが、主にタイトルに記載のものとなります。

随時更新していきますが、始めは基礎習得に役に立った記事を掲載していきます。

## 基礎
### [freeCodeCamp](https://www.freecodecamp.org/japanese/)
HTML,CSSのようなコーディングからVanillaJS,React,Node.jsなどのプログラミング、
DataBaseの基礎など幅広く無料で学ぶことができます。
アメリカ発のサービスのため英語版しかありませんでしたが、2022年頭から日本語版が出ました。
（翻訳してくれている方感謝です...!）


https://www.freecodecamp.org/japanese/

## PHP
### [PHPでログイン機能を実装するチュートリアル](https://qiita.com/ShibuyaKosuke/items/f114ffccf441edb2b745)

https://qiita.com/ShibuyaKosuke/items/f114ffccf441edb2b745

記事の投稿日は少し古いですが、生PHPでMVCとはなんぞやを手を動かしながら理解するにはうってつけの記事です。

### [FWを使わないOOP-PHPで少し幸せになる](https://www.ritolab.com/entry/172)

https://www.ritolab.com/entry/172

こちらの記事を読んでオレオレフレームワークの作り方を理解すれば、LaravelやCakePHPなどのフレームワークの理解が進みやすくなると思います。
自作フレームワークについてはパーフェクトPHPの7,8章を学ぶのもよいかと思います。

## Laravel

### [Laravel学習ロードマップ](https://qiita.com/nunulk/items/785749a5d184198fe712)
https://qiita.com/nunulk/items/785749a5d184198fe712

Laravelを始めて触る・少し触ったことがあるけど、どのように学んでいけば...という方に最適かと思います。

## JavaScript
### [JavaScriptPrimer](https://jsprimer.net/)
https://jsprimer.net/
基礎を学ぶにはもってこいのサイト

## TypeScript
### [サバイバルTypeScript](https://typescriptbook.jp/)
https://typescriptbook.jp/

・なぜTypeScriptが人気なのか
・JavaScriptの違い
・JavaScriptとTypeScriptの歴史

のような導入から実践→基礎と進んでいくので、非常に理解しやすい。
執筆者の皆様に感謝です。

## Three.js

### [最新版で学ぶThree.js入門](https://ics.media/entry/14771/)
https://ics.media/entry/14771/

この記事に限らず、ics.mediaの記事はとてもためになるものばかりです。



## 最後に
おすすめの記事・サイトあればご教示いただけますと幸いです。
データベース設計

## E-R図
<b>対象業務を構成する実体と実体間の関連を視覚的に表した図のこと。
実体のことを<font color = blue>エンティティ</font>、実体間の関連のことを<font color = blue>リレーションシップ</font>という。

![r20_05-03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600460/fd063f2d-90c9-5b52-c2f5-fc341588a95c.png)

## 表の設計
### 主キー
<b>表中の行を一意に識別するための列のこと。主キーの値が同じ行が複数存在することはない。(<font color = blue>一意制約</font>)また、NULLはダメで、必ず値が入力されている必要がある。(<font color = blue>非NULL制約</font>)
### 複合主キー
<b>複数の列を組み合わせて主キーにすること
### 外部キー
<b>他の表の主キーを参照している列のこと。データの追加や更新、削除時には、関係する表間で参照一貫性が維持されるよう制約される(<font color = blue>参照制約</font>)
### リレーション
<b>関係データベースでは、表間は主キーと外部キーで関係付けられていること
### インデックス
<b>どこにデータがあるかを示したもの。
4.21 (標準) 二次元確率変数の変数変換10 二変量正規分布

## 方針

(2)の式変形にはU,Vが独立でないとしてはいけない操作を多く含むので，1行ごとに確認することが重要．

## 答案

![4.-30.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/3b9859ca-7eda-7295-2a6b-b2b7d7af7118.jpeg)
![4.-31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/b27057c4-e0a1-917c-44aa-afee0fbeb4e9.jpeg)
![4.-32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/56804f1e-6f5e-ba9c-9709-5080973cd4e8.jpeg)

## 参考文献

- 『[現代数理統計学の基礎](https://www.kyoritsu-pub.co.jp/bookdetail/9784320111660)』(久保川達也　著)
．
Considering Data Centers in India to Overcome Economic Conditions

With over 658 million Internet users and Internet penetration of 47% in January 2022, India ranks as the 2nd largest online market in the World. The days are gone when our country witnessed faced concerns like lower availability of connections and bandwidth. With more prominent Data Centers (DC) providers like ESDS coming up with their multiple Data Centers in India, the industry is ready to address the growing digital needs in the coming years.

Impact of Pandemic on Indian Data Center Industry

The outbreak of the ongoing pandemic in the last 2-3 years has caused significant economic output loss due to its profound impact on manufacturing, construction, tourism, hospitality, and other sectors. Despite all these odds, the Data Center Industry in India proved its resilience in these challenging times and is now expected to grow faster than a ‘No Pandemic Scenario.’

How Government Initiatives Ease Data Center Setup Challenges

In November 2020, the Ministry of Electronics & Information Technology (MeitY), Government of India, came up with an initial draft of the Data Center Policy. This policy will play a significant role in establishing data centers. The constant power supply will boost the Data Center infrastructure by facilitating Data Center parks to develop their power generation units through renewable sources of energy.
Pan-India Data Center Policy

The Draft Data Center Policy released in November 2020 focuses on the following-

1. Ease of doing business by giving the infrastructure status to the Data Center sector, simplifying the clearances needed for setting up Data Centers in India, and Formulation of Data Center Incentivization Scheme (DCIS) for the promotion of Data Center parks

2. Enabling a favorable ecosystem that ensures reliable power, Internet connectivity, and business continuity recognizes Data Centers as a different category under the National Building Code, owing to the requirement of different norms with respect to other commercial buildings & offices

3. Data Centers to be declared as an “Essential Services” under the Essential Services Maintenance Act, 1968

4. Setting up Data Center Economic Zones (DCEZ) in India as a central sector scheme and creating an ecosystem of hyperscale Data Centers, Cloud Service Providers, IT Companies, R&D units, and other allied industries

5. Promoting indigenous technology development to encourage local manufacturing through joint ventures with international bodies, development of human resources by promoting research and capacity building

https://www.esds.co.in/blog/considering-data-centers-in-india-to-overcome-economic-conditions/
M1Ultraは機械学習に最適！？機械学習の処理スピードを比較してみた

4月の末にやっとMacStudio(M1Ultra)が届いたので、ゴールデンウィーク中に開発環境を整えることができたのですが、期待のM1Ultraが機械学習でどれほどの能力があるのか気になったので、他のデバイスと比較してみることにしました。
と言っても、自分では他に端末を持っていないので以下で紹介されているDaniel Bourke氏のテスト一式がGitHubに公開されていたのでこれを使用することにしました。
https://ainow.ai/2022/02/25/262748/
https://github.com/mrdbourke/m1-machine-learning-test

ちなみにMacStudioのスペックは以下となります。

M1Ultra 20コアCPU 64コアGPU ユニファイドメモリ128GB

それでは早速テスト結果を見て行きたいと思います。

# 1.テスト概要
今回試したのは以下となります。
### ・CIFAR10 with TinyVGG
* データ：TensorFlowのデータセットから引用したCIFAR10（32×32の画像、10クラス、50,000枚の訓練用画像、10,000枚のテスト用画像）
* モデル：TinyVGGモデル
* 学習：10エポック、バッチサイズ32

### ・EfficientNetB0 feature extractor with Food101
* データ：TensorFlowデータセットから引用したFood101 (224×224の画像、101クラス、~75,000枚の訓練用画像、 ~25,000枚のテスト用画像)
* モデル：ImageNetで事前学習したEfficientNetB0の最上層に置き換えたもの（特徴抽出）
* 学習：5エポック，バッチサイズ32

※テストの詳細は上記紹介サイトから抜粋
※テストにはtensorflow-macosとtensorflow-metalを使用しています。

# 2.テスト結果
## ・CIFAR10 with TinyVGG
![device time_per_epoch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633460/8c21c9ca-965c-a1a3-2067-bbb8c1079bd1.png)
![CIFAR10 Dataset with Tiny VGG TensorFlow Model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633460/be0c48e1-a240-ceb3-2c37-a06b74bd86fb.png)
※M1Ultra以外の結果については￼Daniel Bourke氏のテスト結果から引用しております。

M1シリーズの中では一番性能が良いようですが、TITAN RTX GPUと比較するとほぼ差はない印象です。小規模なデータセットではどのM1シリーズを選んでもそれほど違いはなさそうです。
ちょっとテストしてみたいなどの状況ではM1を選ぶとコスパの面で良さそうです。

## ・EfficientNetB0 feature extractor with Food101
![device time_per_epoch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633460/cd7c2305-c64a-8faf-ea5c-d51c003da6ed.png)
![Epoch (seconds).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633460/83e34fea-5037-3267-ee33-6df226b50f4b.png)
※M1Ultra以外の結果については￼Daniel Bourke氏のテスト結果から引用しております。

続いて大規模なデータセットによるテストについては、M1シリーズで比較するとM1Maxが２基組み合わさっているだけに２倍近い処理性能が得られており、圧倒的な処理性能ですね。
また、機械学習に特化したTITAN RTX GPUと比較してもM1Ultraは肉迫する結果となりました。

# 3.まとめ
紹介サイトでもまとめられている通りTensorFlowを用いた小規模モデルの訓練ではM1シリーズで大した性能差は見られませんでしたが、大規模モデルの訓練ではNVIDIAのTITAN RTX GPUといい勝負ができそうな感じです。
TITAN RTXの登場が2019年で、現在その後継のGeForce RTX 3090や3090Tiがあるので、それらと比べるとどれくらい差があるのか気にするなるところですが、機械学習ではテストによっては何日もマシンを動かし続けることがあると思うので、消費電力のことを考えると個人でAIやデータサイエンスを研究されている方には、MacStudioの筐体はコンパクトですし、M1Ultraは選択肢として悪くないのではと思ったりしました。
あとは価格に納得できるかどうかですかね。最新のNVIDIA GPUを搭載したPCがいくらくらいなのか詳しくない（3090一基で70万くらい？自分で組める人はもっと安い？）ので、詳しい方がおられましたら感想等いただけるとうれしいです。
￼￼
Simple Data Integrator (SDI) 実践入門：コネクション設定 (ダイレクト接続)

# ダイレクト接続の設定
Oracleを例に説明します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/257c8a96-a882-44ac-79e8-a51c9ca57ca5.png" width="300">

1. `「新規コネクション」`ボタンをクリックしてコネクション設定画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/eb0f9d6b-6be6-7107-5474-eb6ce6950591.png)

2．接続情報を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/7b05c986-966c-4e37-4016-bcc6d3469175.png)

|No|項目|説明|
|----|----|----|
| 1 |コネクション名 |コネクション名を入力、任意の名前設定できます。システムは名前の重複チェックしていないですが、管理上、ユニークの名前の設定をお勧めします。 |
| 2 |ロケーション | ダイレクト接続を選択|
| 3 |テータタイプ|Oracleを選択|
| 4 |接続情報|Oracleへ接続するための情報を入力 <br>詳細情報：<br /> https://ja.sdi.ricct.com/userguide/connectionoracle/ |
| 5 |Default schema|Default Schema指定された場合、マッピングの際、指定されたスキーマのテーブル、ビューがリストされます。<br />空白の場合、アクセスできるすべてのテーブル、ビューがリストされます。|
| 6 |接続テスト|`[接続テスト]`ボタンをクリックしてOracleへ接続できるかどうかをテストします，接続が成功する場合、下記のメッセージボックスが表示されます。<br />![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/2895baaa-276a-fd49-f9fd-163d1a3b86ea.png)|

接続テストして問題なければ　保存します。

SQLServer , MySQL , PostgreSQL , DB2 , ODBC の場合、類似の方法で設定します。

以上です。

[Simple Data Integrator (SDI) 実践入門](https://qiita.com/RiCCT/items/3dc109ff82546459a8b0 "Simple Data Integrator (SDI) 実践入門")

# 参考資料
[SDI日本語公式サイト](https://ja.sdi.ricct.com/ "SDI日本語公式サイト")
[SDI English Official Website](https://sdi.ricct.com/ "SDI English Official Website")
[Oracleコネクション設定](https://ja.sdi.ricct.com/userguide/connectionoracle/)
[SQL Serverコネクション設定](https://ja.sdi.ricct.com/userguide/connectionsqlserver/)
[MySQLコネクション設定](https://ja.sdi.ricct.com/userguide/connectionmysql/)
[PostgreSQLコネクション設定](https://ja.sdi.ricct.com/userguide/connectionpostgre/)
[PowerApps] アプリを隔離する

Power Platform 管理者が、ユーザー作成のアプリを一時的に無効にしたいということがあります。（例えばプレミアムコネクタを利用しているアプリを公開されてしまったが、削除すると問題があるケースなど）
この場合、管理者に所有権を付与してエクスポートしてから削除…などでもよいのですが、アプリを一時的に利用不可にすることができます。

# Power Apps for Admin （管理コネクタ）

Power Automateには管理者のためのコネクタ（管理コネクタ）があります。

- Power Platform for Admins
- Power Apps for Admins
- Power Automate for Admins

Power Platform for Admins コネクタで環境情報を取得し、その環境に対して Power Apps for Admins コネクタでアプリ一覧を取得する…といったように用います。

# アプリの隔離状態を設定する

環境名と PowerApps名（表示名ではなくGUIDです）を指定して隔離状態を設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/22b6c540-86b2-57d0-9840-ee5f7a967ad7.png)

隔離状態
Quarantined …隔離状態（実行できない）
Unquarantined …非隔離状態（実行できる）

隔離状態のアプリを実行しようとすると以下のように起動できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/80e3534c-91f1-723f-89b3-4eff20effb19.png)

環境名やPowerApps名の取得が必要なため、実際に運用で利用しようとするとそれなりに作りこみが必要になるとは思いますが、ご活用いただければと思います。
Salesforce Platform Developer I：検索ソリューションの基礎

# 検索ソリューションの基礎

https://trailhead.salesforce.com/ja/content/learn/modules/search_solution_basics

## 適切な検索ソリューションの選択
### APIを使用した検索への接続
・2つの主なAPI
　　Salesforce Object Query Language (SOQL)
　　Salesforce Object Search Language (SOSL)
区別下記リンク参照

https://qiita.com/joney19860716/items/5b4774265c4f6d98a17d#soql%E3%81%A8sosl%E3%81%AE%E7%9B%B8%E9%81%95%E7%82%B9%E3%81%A8%E9%A1%9E%E4%BC%BC%E7%82%B9

### プロトコルを使用したクエリの送信
Query (REST) および query() (SOAP) — 指定されたオブジェクトに対して SOQL クエリを実行し、指定された条件に一致するデータを返します。
Search (REST) および search() (SOAP) — 組織のデータに対して SOSL テキスト文字列検索を実行します。
### CHALLENGE
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424429/14b50aa7-9573-e407-8f3e-dd42a4cf88cb.png" width=50%>

## 一般的な使用事例での検索の作成
### CHALLENGE
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424429/3999424d-7946-af04-de65-9f813634253e.png" width=50%>

## 検索結果の最適化 
### オブジェクト、返す項目、並び替え、最大件数、開始行オフセット、データカテゴリによって絞り込むを指定
```FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name LIMIT 10 OFFSET 25) WITH DIVISION = 'Global'```
### 推奨結果の表示
推奨によって、ユーザが入力している内容とタイトルが一致するレコードが返されます。
・Search Suggested Records — ユーザの検索文字列に名前が一致する推奨レコードのリストを返します。推奨リソースは、ユーザが全文検索を実行する前に関連する可能性のあるレコードに直接移動できるショートカットを提供します。
・Search Suggested Article Title Matches — ユーザの検索クエリ文字列にタイトルが一致する Salesforce ナレッジ記事のリストを返します。ユーザが検索を実行する前に、関連する可能性のある記事に直接移動できるショートカットを提供します。
・SObject Suggested Articles for Case — ケースの推奨 Salesforce ナレッジ記事のリストを返します。

#### 基本構文
```/vXX.X/search/suggestTitleMatches?q=search string&language=article language&publishStatus=article publication status```
例：
```/vXX.X/search/suggestTitleMatches?q=race+tips&language=en_US&publishStatus=Online```
### シノニムグループ(同義語、類義語)
[設定] > [カスタムシノニムグループ] > [新規]
### CHALLENGE
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424429/6eebfdd5-32d6-85c9-cd6b-e0d1e2560035.png" width=50%>
Reactノート１

```javascript
  // useImperativeHandle的作用: 
  // 减少父组件获取的DOM元素属性,只暴露给父组件需要用到的DOM方法
  // 参数1: 父组件传递的ref属性
  // 参数2: 返回一个对象,父组件通过ref.current调用对象中方法
  // 官网使用建议
  // 尽量避免命令式地给ref.current赋值，尽量采用声明式的（即让React内部处理）；
  // 和forwardRef搭配使用
  useImperativeHandle(ref, () => ({
    title, desc
  }))
```
Rのメジャーアップデートに伴うライブラリ再インストール

## 目的
プロジェクトのキリの良いところでRのバージョンを3.5.2から最新版(4.2)へのアップデートを試みた．
メジャーアップデートをするとライブラリを再度インストールする必要があるため，
次回のメジャーアップデートに備えて今回の記録を残しておく．

## 概要
Bioconductorをインストール
前バージョンのライブラリ名の配列を取得
上記ライブラリ群のインストールをCRAN→Bioconductor→devtoolsの順に試す

## 環境
iMac Pro (2017)
MacOS Big Sur 11.6.5

## Rのインストール
https://cran.r-project.org/bin/macosx/
より4.2.0をダウンロード開始．しかしダウンロードが遅すぎたのでミラーサイト
https://cran.ism.ac.jp
からpkgファイルをダウンロードし，インストール

## XQuarts
バージョンを確認したところ最新版であったため，再インストールなどは行わず

## Bioconductorのインストール
Rを起動し，バージョンが4.2であることを確認．
Bioconductorのウェブサイトの記載通りにインストール
https://www.bioconductor.org/install/
```r
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install(version = "3.15")
```

## ライブラリのアップデート
### CRAN経由
3.5.2にインストールされている全ライブラリ名を参照し，`install.packages()`でまるごとインストールを試みる．
```r
libnames35 <- list.files(path = "/Library/Frameworks/R.framework/Versions/3.5/Resources/library")
install.packages(libnames35)
```

### Bioconductor経由
`install.packages()`で入らなかったライブラリを`BiocManager::install()`でインストールを試みる．
```r
libnames42 <- list.files(path = "/Library/Frameworks/R.framework/Versions/4.2/Resources/library")
not.installed <- setdiff(libnames35, libnames42)
BiocManager::install(not.installed)
```

### devtools経由
`BiocManager::install()`でもインストールされなかったライブラリを再び確認し，必要なもののみ`devtools::install_github()`で入れる．

```r
libnames42 <- list.files(path = "/Library/Frameworks/R.framework/Versions/4.2/Resources/library")
not.installed <- setdiff(libnames35, libnames42)
not.installed

[1] "BiocInstaller" "DNB"           "garnett"       "ggbiplot"      "monocle3"      "pforeach"      "SDMTools"

library("devtools")
devtools::install_github("vqv/ggbiplot")
devtools::install_github('cole-trapnell-lab/leidenbase')
devtools::install_github("cole-trapnell-lab/garnett")
devtools::install_github('cole-trapnell-lab/monocle3')
# package ‘batchelor’ is not available for this version of Rというエラーが出たのでインストール
BiocManager::install("batchelor")
devtools::install_github('cole-trapnell-lab/monocle3')
devtools::install_github("hoxo-m/pforeach")

```
M5Stack Core2を始める

ラズベリーパイと違って単独で動かせれるのが楽しそうと思って、M5StackCore2を遊んでみている
Arudinoを使ってカタカタ打ち込みたいんだけど、まずは動作確認を目標にUiFlowのBlocklyでスタートしました

### 開始手順
M5StackCore2で検索すると、たくさん出てきます
もちろん参考にできるところはたくさんあるのですが、
出ている情報が古かったりなので公式ドキュメントを見ながらがよいです

[M5StackCore2](https://docs.m5stack.com/en/quick_start/m5core/uiflow)
+ ドライバのインストール
+  M5Burnerでファームウェア書き込み
+  APIキーの設定
+  UiFlowのデスクトップ版をダウンロード、起動

### 画面更新されない
```python
start_button = M5Btn(text='record start', x=60, y=101, w=200, h=50, bg_c=0xFFFFFF, text_c=0x000000, font=FONT_MONT_24, parent=None)
# のとき

def start_button_pressed():
    start_button.set_btn_text('recording ...')
    flag.set_text(str(button_state))
    start_button.set_btn_text('record')
```
recording...は表示されない
Setするだけだから、反映されない？
Updateとかあるのかと思ったけど、Blocklyにうまく見つけられない。。
【モバイルアプリ開発】どの手法ではじめる？～ネイティブアプリ・Webアプリ・ハイブリッドアプリ～

## はじめに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112032/0f5ad18a-8505-a05f-378b-b9ab0f9cfbdc.png)

昨今、モバイルアプリ開発の手法およびそれに使用する言語は数多く存在していますね。多ければ多いほど、どれを使うべきか迷ってしまうので困りますよね・・・:upside_down:

開発手法はさまざまですが、「モバイルアプリ」は大きく分けると __3種類__ あります。それぞれ異なる __開発手法および開発言語__ について見てみましょう:eyes:

## 1. ネイティブアプリ
AndroidアプリやiOSアプリなど、アプリがインストールされた端末で動作するアプリの事です。
特に知識がなくモバイルアプリを作ろう！となるとまず考えるのがこれではないでしょうか。

ネイティブアプリを利用するには Google Play や App Store からインストールする必要があります。
開発言語は以下です。
- Androidアプリ
  - KotlinまたはJava
- iOSアプリ
  - SwiftまたはObjective-C

## 2. Webアプリ
ChromeやSafariといった、PCやスマホのブラウザから利用できるアプリの事です。
既存ブラウザから利用できるため、端末へのインストールは必要ありませんので、気軽に利用してもらうにはおすすめです。
ただし、インターネット環境がなければ動作しなかったり、端末の機能を利用できなかったりするので、継続的な利用にはあまり向かないかもしれません。
開発言語は HTML/CSS/JavaScript/PHPなどのWeb言語が主です。したがって、Webサイト等の開発経験があれば開発できるので、新しく言語習得の必要がありません。

## 3. ハイブリッドアプリ
web技術を用いて開発し、かつ端末のネイティブ機能を利用可能にしたアプリの事です。
1つのソースでクロスプラットフォーム（Android/iOS等複数プラットフォーム）に対応可能なので、
ネイティブアプリ開発に比べ開発・メンテナンスコストが非常に小さく済みます。
開発言語はWebアプリ同様、Web言語です。同じくWebサイト等の開発経験があれば開発できるので、新しく言語習得の必要がありません。

「なんだじゃあネイティブアプリよりハイブリッドアプリがいいじゃない！」と思うかもしれませんが、ちゃんとデメリットもあります。
端末のネイティブ機能を利用する場合、フレームワーク（プラグイン等）を使うことで実装可能ですが、存在するフレームワークには限りがあるため、ネイティブアプリで利用可能なすべての機能がハイブリッドアプリで利用できるわけではない点です。
とは言え、それほど複雑な動きを必要としないアプリであればハイブリッドアプリで十二分です！状況に応じて使い分けられるといいと思います。

## まとめ

結局どのアプリがいいのか？結論： __作るアプリの用途や状況に依存します__ :point_up:
例えば、

- ネイティブアプリ
  - 複雑な動作が要求されるアプリ
  - 開発に時間と費用をかけられるアプリ
- Webアプリ
  - 一時利用が想定される簡易アプリ
- ハイブリッドアプリ
  - 簡単な動作のアプリ
  - 開発・運用費用を抑えたいアプリ

という感じで、状況に応じて最善のものと選択できるといいでしょう :ok_hand:


（参考）モバイルアプリ向けバックエンドサービス（mBaaS）の [ニフクラ mobile backend](https://mbaas.nifcloud.com/) を使うことで、
__ネイティブアプリでもハイブリッドアプリでも、費用を抑えたアプリ開発が可能__ です。
__無料__ から利用可能ですので、ぜひご活用ください！

mBaaSとは | ニフクラ mobile backend 
https://mbaas.nifcloud.com/about.htm

アプリ開発パック | ニフクラ mobile backend 
https://mbaas.nifcloud.com/lp/appdev/


## 参考リンク

[モバイルアプリ開発をどの言語ではじめるか | ニフクラ mobile backend ](https://blog.mbaas.nifcloud.com/entry/2022/05/09/102326)
Solar2DアプリがAndroid端末で動画ストリーミング再生できない

## media.playVideoがリモートで動作しない
Solar2Dで開発したAndroidアプリで動画ストリーミングができない。
シミュレータとiOS端末では問題なく、Android端末のみ発生する問題。
`media.playVideo`のAPIリファレンスを見ると、ローカル、リモートどちらも再生できると記載があるが、なぜかストリーミング再生ができない。

## サンプルソース
サンプルソースをビルドし、Android端末で動かしてみる。
```main.lua
local onComplete = function( event )
    print( "video session ended" )
 end
media.playVideo( "https://coronalabs.com/video/bbb/BigBuckBunny_640x360.m4v", media.RemoteSource, true, onComplete)
```
## 解決方法
solar2d 3619でビルドした際は問題なく、solar2d 3665でビルドすると発生
バージョンかOSのセキュリティの問題か原因は不明。
ローカルに動画があれば再生できるので、ダウンロードして再生する方法で対応
```main.lua
local path
local params = {}
local function networkListener( event )
    local function onComplete()
        os.remove( path )
    end
    path = system.pathForFile( "temp.m4v", system.TemporaryDirectory )
    media.playVideo( path, true, onComplete)
end
    
network.download(
    "https://coronalabs.com/video/bbb/BigBuckBunny_640x360.m4v",
    "GET",
    networkListener,
    params,
    "temp.m4v",
    system.TemporaryDirectory
)
```
Image::Magick の convert で同アスペクト比の画像をリサイズする方法

# 試しに余計な (heightの）数字を抜いたら、画像解像度をきちんと認識して、計算してくれます

```
convert org.png -resize 3840 3840.png
convert org.png -resize 1920 1920.png
convert org.png -resize 992 992.png
```
こんな感じで、同じ比率で画像解像度が変更できます。
<source>タグにwidth heightを設定する方法

## いきさつ

横解像度最大3840に対応するサイトで

スマホ用の画像で、MVNO低速モード（200kbps）で、loading="lazy"を無視したおかしな表示をされるので

＆どくっても出てこないので

## picture source imgタグでのwidth heightの設定

```index.html
<picture>
	<source media="(min-width:2601px)" srcset="/img/3840.png" width="3840" height="1520">
	<source media="(min-width:2161px)" srcset="/img/2600.png" width="2600" height="1029">
	<source media="(min-width:1921px)" srcset="/img/2160.png" width="2160" height="855">
	<source media="(min-width:1681px)" srcset="/img/1920.png" width="1920" height="760">
	<source media="(min-width: 1284px)" srcset="/img/1680.png" width="1680" height="665">
	<source media="(min-width: 1100px)" srcset="/img/1284.png" width="1284" height="508">
	<source media="(min-width: 920px)" srcset="/img/1100.png" width="1100" height="435">
	<source media="(min-width: 810px)" srcset="/img/920.png" width="920" height="364">
	<source media="(min-width: 750px)" srcset="/img/810.png" width="810" height="321">
	<source media="(min-width: 512px)" srcset="/img/750.png" width="750" height="297">
	<source media="(min-width: 428px)" srcset="/img/512.png" width="512" height="203">
	<source media="(min-width: 414px)" srcset="/img/428.png" width="428" height="169">
	<source media="(min-width: 375px)" srcset="/img/414.png" width="414" height="164">
	<img loading="lazy" src="/img/375.png" width="375" height="148">
</picture>
```

普通に width、heightが指定できます。
超低速回線スマホでheightが正しく認識されるようになります。
Twitterでトレンドを非表示にするブックマークレット

# 不穏なトレンドで落ち込みたくない！
Twitterの右側に不穏なトレンドが多くてうんざり。
というときのためのブックマークレット作りました。
ポチポチクリックしないといけないけど👀

2022-05-11
Windows11, Google Chromeで使うことができます。

# 作り方

以下をブックマークレットに登録しましょう👀
特に変数使ったりもないので即時関数にはしなくても良いかな。

## 消しちゃいたい場合

removeしちゃいます。

```js
javascript:document.querySelectorAll('[data-testid="sidebarColumn"]')[0].remove();
```

## 非表示でいっかなって場合

display="none"で非表示に。

```js
javascript:document.querySelectorAll('[data-testid="sidebarColumn"]')[0].style.display="none";
```

## ブックマークレットの登録の仕方

コチラ↓などを参考にされるといいと思います。

https://qiita.com/aqril_1132/items/b5f9040ccb8cbc705d04