OmniAICreator/Qiita-1.07M huggingface dataset:
Salesforceで特定の複数ユーザのみ入力規則を適用させない方法

こんにちは。本橋孝昭です。

Salesforceには入力規則があります

#### 例：商談オブジェクトのフェーズを「Closed Lost」（失注）にさせない
![失注01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/097cf27d-f73f-5c49-94a3-0eea30bc959c.png)


ISPICKVAL(
StageName,"Closed Lost")

この入力規則を作成し有効にすればすべてのユーザは商談を「Closed Lost」（失注）にすることはできません。

しかし数式を変更することにより、特定のユーザやプロファイル、ロールは入力規則が適用されなくなる設定が可能です

今回の内容は動画でも解説しています

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

<iframe width="560" height="315" src="https://www.youtube.com/embed/qoMyULSAcvA?si=FKx_28jY_qSGWUco" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



なお、入力規則についてはこちらの解説をご参考ください

https://qiita.com/Takaa/items/6bc57c8b58f18bffbc5e


## 特定のユーザのみ入力規則の設定をさせない設定
#### 例：商談オブジェクトのフェーズを「Closed Lost」（失注）にさせない
しかしユーザの役職が「部長」の場合この入力規則は適用されません

「数式」
AND(
$User.Title <>"部長",
ISPICKVAL(
StageName,"Closed Lost"))

## 特定のプロファイルのみ入力規則の設定をさせない設定
#### 例：商談オブジェクトのフェーズを「Closed Lost」（失注）にさせない
しかしユーザのプロファイルが「システム管理者」の場合この入力規則は適用されません

「数式」
AND(
 $Profile.Name <>"システム管理者",
ISPICKVAL(
StageName,"Closed Lost"))

※なお、組織の言語設定によりプロファイル名の入力規則はうまく動かない場合があります
詳細はこちら

Salesforceで入力規則を作成するための注意点～プロファイルを設定する場合
https://qiita.com/Takaa/items/f0f863c7795dd975701c

## 特定のロールのみ入力規則の設定をさせない設定
#### 例：商談オブジェクトのフェーズを「Closed Lost」（失注）にさせない
しかしユーザのロールが「CEO」の場合この入力規則は適用されません

「数式」
AND(
 $UserRole.Name <>'CEO',
ISPICKVAL(
StageName,"Closed Lost"))


# 特定の複数ユーザのみ入力規則の設定をさせない設定

では、ロールもプロファイルもバラバラな複数ユーザ
（例：取締役鈴木さんと社長の田中さんと営業マネージャーの佐藤さん）のみ入力規則を適用させない。という場合はどうしましょうか

一案としてカスタム権限を作成し、権限セットを作成しカスタム権限を割り当てし、ユーザ（田中、鈴木、佐藤）に権限セットを割り当てれば対応可能です


## ステップ１　カスタム権限を作成

今回はカスタム権限「Opportunity」を作成します
![カスタム権限01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/ddf8e002-176c-aa60-d735-166f15b21d7f.png)

## ステップ2　権限セットを作成しカスタム権限を割り当て

権限セットを作成し割り当てます
![権限04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/f2acb7bb-1142-6af5-f75d-257d82a858c1.png)
![権限03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/b690def0-ae7a-834f-0217-936bfd668637.png)

## ステップ3　権限セットをユーザに割り当てます（田中、鈴木、佐藤）

## ステップ4 入力規則を作成します

「数式」
AND(NOT($Permission.Opportunity), 
ISPICKVAL(
StageName,"Closed Lost"))


これでステップ3で権限セットを割り当てられたユーザのみ入力規則が適用されません
Emacsで指定範囲の全角半角変換

### japanese-hankaku-region （選択範囲を半角に変換）をキーバインド

GNU Emacsの関数`japanese-hankaku-region`は、選択範囲の日本語の全角文字（JIS X0208）を（可能なら）半角に変換する。これはとても便利で頻繁に使うのでキーにバインドしておく。

`japanese-hankaku-region`は

```japan-util.el
(defun japanese-hankaku-region (from to &optional ascii-only)
  (interactive "r\nP")
```

という形になっている。引数`from`と`to`は変換範囲。3番目のオプショナルな引数`ascii-only`は、`nil`でない値を指定すれば、ASCII文字に変換可能な文字だけが変換対象となる。つまり全角の英数字や一部の記号のみASCII文字に変換し、ひらがな、カタカナなどは変換しない。`ascii-only`を指定しなかったら、ひらがなやカタカナも半角カタカナに変換される。（そう、ひらがなも！）

インタラクティブな呼び出しの際には、`interactive`の引数デスクリプタにより、`from`と`to`は現在の選択範囲となってくれる…のだが、私は3番目のオプション引数`ascii-only`として`t`を指定したい。そのためには`from`と`to`も省略せず明示的に指定するしかない（と思った）ので、`global-set-key`に指定するコマンドとしては次のようにラムダ式で記述せざるを得なかった。

```init.el
(global-set-key (kbd "C-x C-h") '(lambda ()
				   (interactive)
				   (japanese-hankaku-region (region-beginning) (region-end) t)))
```

これを`~/.emacs.d/init.el`に加えておけば、`Ctrl+x` `Ctrl+h` の打鍵で現在の選択範囲の全角文字が半角ASCIIに変換されるようになる。

### japanese-zenkaku-region （選択範囲を全角に変換）もキーバインド

`japanese-zenkaku-region`はあまり使わないけど、対称の機能なので、ついでにバインドしておく。これも`japanese-hankaku-region`と同様に

```japan-util.el
(defun japanese-zenkaku-region (from to &optional katakana-only)
  (interactive "r\nP")
```

という形になっているのだが、私には`katakana-only`の指定は必要なく、したがって、すべての引数を省略できるので、

```init.el
(global-set-key (kbd "C-x C-z") 'japanese-zenkaku-region)
```

だけでOK。

### 長音がASCIIハイフンに変換されてしまう問題

バージョンによるかもしれないが、私が使っている GNU Emacs 27.1 (build 1, x86_64-w64-mingw32) では、`ascii-only` を指定した場合でも、カナの長音「ー」がASCIIのハイフンに変換されてしまう。たとえば「アーティスト」は「ア-ティスト」になってしまう。これはよろしくない。

その原因は`japan-util.el`ファイル内の `japanese-symbol-table`にあった。このテーブルの中に `(?ー ?- ?ｰ)` があったので、これを削除して`byte-compile`して解決。
FlutterアプリをApp Store Connectに登録する時に参考にしているサイト


# App Store Connect登録手順（Flutter）

FlutterアプリをApp Store Connectに登録する際に、参考にしているサイトのリンク集です。
私が独学でFlutterを学んでいる時に、以下のサイトには大変お世話になりました:bow_tone1:
※参考にしているサイトは随時更新予定です。

## 1. Certificates Identifiers & Profiles

https://qiita.com/c_tomioka/items/af5942b7031962c3faff

https://harublog.site/developer-identifiers

##### Bundle ID
例）`com.organizationName.appName`
※organizationNameは組織名
※appNameはアプリ名

## 2. アプリをAppStore Connectに登録する
https://zenn.dev/moutend/articles/feebf0120dce6e6426fa

## 3. Xcodeでアーカイブ

https://qiita.com/sakyoyuto/items/010408e5edcdbb625f77

https://qiita.com/Labi/items/3b71b8f5ef065904c1de

※アーカイブからApp Store Connect反映までタイムラグがあります。（だいたい15分程度）
この辺りで、輸出コンプライアンスの設定をします。

https://fortee.jp/iosdc-japan-2019/proposal/a972c654-1928-47e7-ba2a-24eb5152fecc

## 4. 内部テスト

アプリをテストするときは、内部テストを利用します。

https://qiita.com/kz23szk/items/9d34f14ab08b830b5f1f
【Terraform】S3のライフサイクルルールの設定

## はじめに
TerraformでS3のライフサイクルルールを設定する方法について書きます。

:::note warn
本記事では、基本的な設定のみ紹介しております。
:::

## ライフサイクルルールとは？
- 一定時間経過した後にS3のオブジェクトを別のストレージクラスに移行させるための設定になります。
- S3のコストを抑えるために使用します。

## 前提
- 使用するTerraformのバージョン情報

```
% terraform --version
Terraform v1.1.8
on darwin_amd64
+ provider registry.terraform.io/hashicorp/aws v4.22.0

Your version of Terraform is out of date! The latest version
is 1.2.7. You can update by downloading from https://www.terraform.io/downloads.html
%
```

- コード適用の流れについては省きます。
    - コード適用迄の流れを知りたい方は、以下の記事をご覧下さい。
    - [【Terraform】コード作成〜クラウド環境に適用するまでの流れ](https://qiita.com/masato930/items/066cafb3166462f31123)


- 本記事では、コードの一部分のみの紹介になります。

## コード
- S3バケット全体のオブジェクトを以下のように別のストレージクラスへ移行させるための設定になります。
    - 30日後: `STANDARD_IA`に移行
    - 60日後: `GLACIER`に移行

```terraform:s3.tf
resource "aws_s3_bucket" "s3_bucket" {
  bucket = "testbucket0717"

  tags = {
    Name = "dev"
  }

}

resource "aws_s3_bucket_acl" "s3_bucket_acl" {
  bucket = aws_s3_bucket.s3_bucket.id
  acl    = "private"
}

resource "aws_s3_bucket_lifecycle_configuration" "s3_bucket_lifecycle" {
  bucket = aws_s3_bucket.s3_bucket.id

  rule {
    id     = "test_rule"
    status = "Enabled"

    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    transition {
      days          = 60
      storage_class = "GLACIER"
    }
  }

}
```

- filter設定を追加した場合、ライフサイクルに指定するオブジェクトを設定することも可能
    - 以下の例では、`/Log`を指定

```terraform:s3.tf(一部抜粋)
resource "aws_s3_bucket_lifecycle_configuration" "s3_bucket_lifecycle" {
  bucket = aws_s3_bucket.s3_bucket.id

  rule {
    id     = "test_rule"
    status = "Enabled"

    filter {
      prefix = "/Log"
    }

    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    transition {
      days          = 60
      storage_class = "GLACIER"
    }
  }

}
```

## AWS Consoleでのライフサイクルルールの確認
作成したS3の `Lifecycle configuration` から確認することが可能。

### バケット全体のオブジェクトを指定した場合の例
- Lifecycle rule configuration
    ![lifecycle_rule.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/6497afcb-fcff-f067-eec2-071a204f043c.jpeg)


- Review transition and expiration actions 
    ![review_transition.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/9e613313-e622-e038-52c0-3809228001d3.jpeg)

### バケット内のオブジェクトを指定する場合の例
`Lifecycle rule configuration` のみ抜粋
※他の設定は「バケット全体のオブジェクトを指定した場合の例」と同様であるため

![Scope.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/4313566d-4b61-ca21-ef77-bfb0001cc28e.jpeg)

## 参考
- Terraform公式ドキュメント
    - [Resource: aws_s3_bucket_lifecycle_configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_lifecycle_configuration)
    - [transition](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_lifecycle_configuration#storage_class)
- AWS公式ドキュメント
    - [ストレージのライフサイクルの管理](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)
超初心者のための『勢いで学ぶPython』

# 超初心者のための『勢いで学ぶPython』
Google ColabでPythonの教材を作成しています。
もう少し内容を充実させて行きたいのですが、一旦放出します〜
今後の展望としては、データサイエンス系の応用編を作ろうか、セキュリティ系の内容にしようかで迷っています☺
（というかちゃんとcolabの共有できてんのかな）

## 座学編
https://colab.research.google.com/drive/1T0ShC1owgOFLxV0QbkbIPdrFYkEg-x5f?usp=sharing

## 演習編
https://colab.research.google.com/drive/1oIxrU5DK4IAfAyHtKKfoTgbiXjm3qIoa?usp=sharing
Git/GitHubのコミット、プッシュ単位

※本記事は、完全な私見であるためあくまでも参考程度に考えていただければと思います。

## 本記事の対象者
- Git/Githubのコミット、プッシュ単位に関してお困りの方

## 結論
この問題に唯一無二の正解はないです。個人によって考え方がありますし、プロジェクトによってもやり方が異なると思うのである程度の基礎を抑えた上であとは自分のいる環境に合わせて柔軟に対応していくのみです。

## 他の方の意見
- [ソニックガーデン伊藤さん(チェリー本の著者)　外部リンク↗](https://qiita.com/jnchito/items/40e0c7d32fde352607be)

引用させていただくと、伊藤さんはこちらの記事の中で以下の通りまとめております。
> - 何かあったらここまで戻りたい！という単位でコミット
> - あとから振り返ったときに「変更の意図や目的」がわかる単位でコミット
> - 正常に動く単位でコミット
> - ロールバックしたらプログラムが壊れた！とならないように
> - TODOリストのTODOが1つ片付いたらコミット
> - 大きな機能を実装する場合はまず機能ブランチを切って、最後にマージ（pull request）する
> - 場合によっては複数のコミットを1コミットにsquashする
>   - Rails本体の開発など

こちらの意見、非常に参考になりましたがでもやっぱりまだ頭の中でうまく整理することができませんでした。そこで色々調べたり、検索してみた結果の私の意見をこちらにまとめてしまう。

## 私の意見
プログラミング初心者の私ごときが伊藤さんの意見に対して反対するわけではないです。伊藤さんのまとめておられる意見に私なりの解釈を加えてみました。
- 後から後悔するくらいなら、なるべく細かい粒度でとりあえずコミットをしておく
- コミットメッセージに何かしらの法則を設定する
  - 機能追加であればコミットメッセージの最初に[Function]と必ずつける...等
- 要は、やらないよりはとりあえずやっておくというのが良い。

## おわりに
私の意見は私の性格に大きく関連していると思います。心配性であるためとにかく細かく保存しておかないとなくなった時が不安です。加えて私の場合は、趣味の範囲で自分ひとりで開発をしています。それなので、中途半端なところで手を一旦止めてしばらく放置してからまた再開ということが頻繁にあります。この中でたまに途中まで開発が進んだところがパアになってしまうということが何度かありました。それを防ぐためにも余裕があるときにはとにかく細かくやっておけば問題ないかと思います。

執筆：2022年8月14日(日)
『LeanとDevOpsの科学』を読んだ感想

# 読んだ書籍

『LeanとDevOpsの科学［Accelerate］ テクノロジーの戦略的活用が組織変革を加速する』

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595926/f8ec9dbe-8772-238a-5210-c22c7fc9f6c3.png)

著：Nicole Forsgren Ph.D / Jez Humble / Gene Kim
訳：武舎 広幸 / 武舎 るみ
出版：株式会社インプレイス

https://book.impress.co.jp/books/1118101029

# 書籍の概要

ソフトウェアの開発とデリバリを高速化し、ひいては組織全体への価値提供をも高速化する効果が高いのは、どのようなプラクティスとケイパビリティなのか。
全世界の組織を対象にしたアンケート調査の回答を厳格な研究方法で分析し、これを明らかにしている。

# 構成

1. 調査研究の結果
2. 調査方法（統計、分析）
3. 改善努力の実際（オランダの金融機関 ING の例）

:::note warn
今回は「2. 調査方法（統計、分析）」の部分は読み飛ばした。
統計・分析の専門知識が無いので、この部分は機会があれば改めて。
:::

# 全体の感想

ソフトウェア開発に関わってきた経験から感覚的には分かっている部分が多かったが、それに対してきちんとした調査・分析に基づく裏付けが得られたことが大きい。

特に収益や株価などの企業業績や、職務満足度や文化などの労働環境との関連が明らかになったことにより、ソフトウェアデリバリへの投資について理解が得られやすくなるように思う。

「アンケート回答者の主観」「ソフトウェアデリバリに限る」[^1]という点には注意が必要だが、個人的な感覚よりもずっと有効だと思う。
いろいろな角度からのこうした分析が増えることを期待したい。
[^1]:Martin Fowler氏の「本書に寄せて」より 

# 分析結果について

気になった部分をいくつかピックアップ。

## 組織文化のモデル化

良い文化とはどういうものか？文化の良し悪しをどう測るのか？
こうした疑問について「情報の流れの良し悪しで予測することができる」と知れた。

## 内製か外注か

:::note info
ローパフォーマーは「構築中のソフトウェアは、他社が開発したカスタムソフトウェアである」と回答する傾向が強い。
:::

これを受注して開発していた立場としても、非常にパフォーマンスが悪いと思う。
こうした事実も踏まえて、内製すべきか外注すべきかの検討が必要。

## 開発者の人数増加とデプロイ頻度

:::note info
開発者の人数が増えるにつれて、

- ローパフォーマーではデプロイ頻度が落ちる
- ミディアムパフォーマーではデプロイ頻度が変わらない
- ハイパフォーマーではデプロイ頻度が有意に上がる
:::

安易に人を増やすとむしろスピードが落ちるイメージだが、正しく投資していればちゃんと増員の効果を得られる。

## 変更管理プロセスについて

:::note info
本番環境に対する変更についてチーム外の人や組織の承認が必要となるプロセスは、システムの安定性は**向上せず**、むしろ**確実に作業の後れを招いてしまう**。変更承認のプロセスが無いほうがまだまし。
:::

内部の人間にとっても複雑なシステムを外部の人間が把握できる事はなく、もはや政治的な意味合いしか見いだせない。
「スピードが遅くなれば質も低下する」という点を踏まえると、中・長期的には安定性も下がっていくのだろう。

# オランダの金融機関 ING の改善努力について

良い情報が組織のヨコ方向とタテ方向に流れるようにして、「学ぶ組織」が構築されているのが印象的だった。

重要なのは単純にプラクティスを実践するのではなく、常に学びを得て変化していく仕組み。

# まとめ

ソフトウェアデリバリのパフォーマンスは、組織のパフォーマンスと関連する。
「改善促進効果の高い24のケイパビリティ」に投資することで、組織全体への価値提供をも高速化させることができる。
単純にプラクティスを実践するのではなく、学習する仕組みを備えて変化に対応していくことが重要。
GitHub備忘録[三心編]

# はじめに
　GitHubの扱い方にも心得が生まれてきたものの、誰かとの交流が全くないせいでGitHubを使っているのが全世界で僕だけな錯覚を覚え始めた今日この頃。もはやGitHubはマスターしたも同然だろうと思っていると、そこに新たな謎という刺客が現れました。
　てなわけで、今日はその謎さんを解き明かした備忘録第三回目です。

# 謎さん

　自分で作成したリポジトリをクローンしてくると、そのクローン内には.gitが隠れていやがります。プッシュした時に設定が残るものなのか、それともGitHubが自動的に生成するものかはわかりませんがそれのせいで、クローンしてきたやつを別のリポジトリにプッシュしようとするときに問題が発生します。

```
git add -A
git remote add origin 自分のGitHubのリポジトリURL

fatal: remote origin already exists.
失敗:リモートオリジンはすでに存在してます。
```

　と言われるわけです。
　そもそもクローンしてきてから別のリポジトリに上げ直したいという状況がなかなかないのかもしれませんが、僕にとってはよくある問題です！
　てなわけで解決編。

# コマンド

```
git add -A
git commit -m "first commit"
git remote rm origin
git remote add origin 自分のGitHubのリポジトリURL
git branch -M main
git push -u origin main
```

　単純にoriginが決定されてしまったのならぶっ壊しちまえば良いという話です。
　それ以外は基本的なGitHubのプッシュ方法と同じ。
朝からtwitterのデザイン変更を対応した話

twitterがinstagramになってる…
そんな日曜の朝を迎えた私は、ゲームをするか、この問題に取り組むか考えつつコーヒーを入れました。

結果として取り組んだのですが、これはtwitterライフを満喫するためにChrome拡張を作った話になります。

ネタ投稿です、あしからず。

## 起こった問題

twitterのデザイン変更があり、PC上で画像が正方形表示になりました。
フィードにおいて画像が正方形に表示されると、PC画面が1枚の画像で埋め尽くされ、一度の画面に表示される投稿量が少なくなってしまいます。(1〜2ツイートのみ)

個人的なtwitterの使い方として、タブキーで画面スクロールを行い、1画面単位で投稿内容を確認しています。
つまり何度もタブキーをクリックしなければいけなくなりました。

## 開発の決意

私もサービスを提供する一人としてデザインが変更されるのは分かります。
ABテストの結果か広告のお金のためかどちらかだろう…

とはいえ、1ユーザーとしては耐えられるものではない。
ということでChrome拡張を開発しようと思った次第です。

## 実際の開発

Chrome拡張を始めて作ろうと思い軽く調べてみたところ、どうやら思った以上に必要な知識が多いようです。
ただ、(ゲームの世界の)ヒロインが僕に「お願い…早く世界を救って」と囁いてきているので、それほど時間はかけられません。

どうせ次のバージョンアップには使えなくなる可能性(開発後の問題点1)があるのでサクッと開発していきます。

作ったファイルはこの二つです。
同フォルダに保存し、 [chrome://extensions/](chrome://extensions/) の「パッケージ化されていない拡張機能を読み込む」から読み込みます。


```manifest.json
{
  "name": "twitter-rollback",
  "version": "1.0",
  "manifest_version": 3,
  "content_scripts": [
    {
      "matches": ["https://twitter.com/home"],
      "js": ["script.js"]
    }
  ]
}
```

```script.js
setInterval(() => {
  // ツイート画像のクラス名を取得
  const tweets = document.getElementsByClassName("r-1udh08x r-1adg3ll");
  for (t of tweets) {
    // 高さを250pxに変更
    t.style.height = "250px";
  }
}, 1 * 1000);
```

その後 [https://twitter.com/](https://twitter.com/)を開くとあら不思議！
画像の縦幅が半分程度になり、僕は幸せになれました。

## 開発後の問題点

現時点でこのChrome拡張には多くの問題点があります。

1. twitterがバージョンアップすると使えない (たぶん)
class名が難読化された結果の名前だと思われるので、次バージョンがリリースされた際には別名に変わっている可能性があります。
もう明日には使えなくなっているかもしれません。

2. フィード再読み込みが走らないことがある
フィードの高さを変更してしまっているため、フィードの再読み込みが走らない場合があります。
ちょっと画面を上に戻し、また下にスクロールすると読み込まれます。

3. アイコンが崩れる
classのターゲット指定にアイコンが入ってしまっています。
アイコンがバグりますが、アイコンは普段見ないからいいこととします…

4. 1秒に1回スクリプトを走る処理はエンジニアとしてどうなんだ
「Chromeタブがアクティブな時のみ動作」など何かしら処理が軽くなるやり方があるはず。
ただ、僕には救わなければいけない(ゲームの)世界が待っているので(略

## 最後に

ネタ投稿ですが、この問題点を解決してくれる方を熱望しています。
素敵なtwitterライフを満喫したい。

閲覧いただきありがとうございました：）

こちらの記事が楽しめた方がいればフォローお願いします。
https://twitter.com/iminux
Azure DatabricksにおけるDatabricks SQLサーバレスコンピュートのプレビューの発表

[Announcing the Preview of Serverless Compute for Databricks SQL on Azure Databricks \- The Databricks Blog](https://www.databricks.com/blog/2022/08/03/announcing-the-preview-of-serverless-compute-for-databricks-sql-on-azure-databricks.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

Azure Databricksにおける[Databricks SQL](https://databricks.com/jp/product/databricks-sql)(DBSQL)のサーバレスコンピュートがプレビューになったことを発表できて嬉しく思っています。DB SQLサーバレスを用いることで、レイクハウスでデータウェアハウスの作業を容易にスタートできるようになります。サーバレスを用いることで、時間を解放し、コストを引き下げ、そして、インフラストラクチャの管理ではなくあなたのビジネスに最大の価値をもたらすことにフォーカスできるようになります。この記事では、DBSQLサーバレスのメリットに触れ、強力な分析能力を活用し、お手元のデータから洞察を引き出すためにMicrosoft Power BIのような人気のBIツールとどのようにインテグレーションできるのかを説明します。

Databricks SQLのサーバレスコンピュートは、お客さまが直面している計算資源、管理、インフラストラクチャのコストに関する課題の解決に役立ちます。

- **インスタントかつ柔軟**: サーバレスコンピュートは、あなたのニーズに合わせてすぐに利用できスケールする、真に弾力性のある常時稼働の環境を提供します。アイドル時間の課金を心配することなしに、シンプルな使用量ベースの課金によるメリットを得ることができます。クエリーを実行できるようになるまでクラスターを待つ必要がなくなることや、使用量のスパイクに対応するためにリソースを過剰に配備することがなくなることを想像してみてください。Databricks SQLサーバレスは、あなたが実行するいかなるワークロードに対応するために動的に拡大、縮退します。
- **管理のオーバーヘッドの削減**: サーバレスはDBSQLを完全なマネージドサービスにし、キャパシティ管理、クラスターのパッチ、アップグレード、パフォーマンスの最適化が不要となります。あなたはデータとデータに含まれる洞察にのみフォーカスできるようになります。 さらに、シンプルな課金モデルは、使用量に基づくコストを確認するための請求書が一つのみであることを意味します。
- **インフラストラクチャコストの低減**: あなたがリソースを必要とした際、内部ではサーバレスコンピュートプラットフォームは適切な計算リソースを提供し、スケールさせるために機械学習アルゴリズムを活用します。これによって、手動でクラスターをシャットダウンすることなしに、劇的にコストを削減することが可能となります。Scribdのようなお客様は、サーバレスを導入することで自身のSQLウェアハウスの利用率を向上し、インフラストラクチャのコストを劇的に削減できることを発見しました。

# Power BIとDatabricks SQLを活用する

管理者がお使いのAzure Databricksワークスペースでサーバレスを有効化すると、SQLウェアハウスを作成する際にサーバレスのオプションを利用できるようになります。

以下のショートビデオでは、どのようにサーバレスSQLウェアハウスを作成し、Power BIに接続するのかを説明しています。シームレスなインテグレーションによって、インフラストラクチャの管理に心配することなしに、お手元のデータを分析、可視化、洞察の抽出を行うために、Databricks SQLとPower BIを活用することが可能となります。

https://vimeo.com/735983185?embedded=true&source=vimeo_logo&owner=40921445

# 使い始める

Databricks SQLのサーバレスコンピュートは数日中にAzure East US 2、Azure East US、Azure West Europeでロールアウトされます。AzureでDBSQLサーバレスを使い始めるにはリクエストを[提出](https://bit.ly/DBSQLServerless-Azure)してください。Databricks SQLウェアハウスにPower BIを接続する手順に関しては、[Power BI documentation page](https://docs.microsoft.com/en-us/azure/databricks/integrations/bi/power-bi)をご覧ください。

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)
カレントディレクトリの全てのzipファイルを解凍する

## 方法

`ls | grep zip | xargs -n 1 unzip`

## 解説
- `ls`でカレントディレクトリのファイルを表示
- `|`で結果の受け渡し
- `grep`で`zip`とつくファイルだけを表示
- `xargs -n 1 unzip`で`grep`でしぼられたzipファイルを1つずつ`unzip`コマンドに渡して解凍
Django VS. Flask by OSS Insight

## はじめに

PythonのWebアプリフレームワークとして有名なDjangoとFlask。
OSS Insightを使って、その使用状況を比較してみます。

## OSS Insightとは

- OSSの動向を分析し可視化してくれる、PingCAP社謹製のインサイトツール
- OSSプロジェクトを分析/比較し、様々な視点から洞察を見つけてくれる
- GitHubリポジトリのカスタム分析ツールとしても使える

※ PingCAP社の記事を参照: [OSS Insightとは？](https://qiita.com/PingCAP/items/2d6a72acf455f72c216b)

## Djangoとは、Flaskとは

- Django
    - フルスペック(ユーザ管理機能など内容)の、Webアプリケーションフレームワーク
    - 中大規模の開発向け? エンタープライズ用?

- Flask
    - 必要最低限の機能を揃えている、軽量Webアプリケーションフレームワーク
    - 小規模の開発向け? 個人学習用?

## OSS Insightから見るDjangoとFlask

- DjangoとFlaskのプロジェクト比較結果は以下を参照
https://ossinsight.io/analyze/django/django?vs=pallets%2Fflask

### 人気度比較

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/8ac3bd42-d1e5-6461-b9ce-014492d0baed.png)

Starsからは、両者ともに人気があるように感じますが、
Djangoのほうが、Commitsが圧倒的に多く、Issuesが少ない。

### Pull Requestランキング

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/ceccc017-880f-6ca2-c5fa-455e4dad3b1c.png)

Djangoが圧倒的に多い。
コミュニティアクティビティが活発に行われ、
コードメンテナンスが継続的に行われている証拠でもあります。

### 企業別Pull Requestランキング

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/d5f9260e-aa74-8ccf-ddf2-f95d627bede7.png)

DjangoもFlaskも、コードのメンテナンスには、
企業規模問わず、幅広く貢献されているようです。

## おわりに

OSS Insightサービスを使って、DjangoとFlaskプロジェクトの最新状況を確認しました。
特に結論は出ませんが、いろんな側面から両者の最新動向を把握できたきがしました。
Python,Ruby,PHP,Java,JavaScript,Perlのif文の比較 | プログラミング言語比較

<a href="https://qiita.com/yuki_kimoto/items/f9c2454e7f9130ddb003">Qiita > プログラミング言語の比較</a>

プログラミング言語Python,Ruby,PHP,Java,JavaScript,Perlのif文の比較

# Python

https://qiita.com/Morio/items/1e06e7ac768758af5ffe

# Ruby

https://qiita.com/qwtr/items/60c99d5559a732c404a4

# PHP

https://qiita.com/miriwo/items/5639d88aa724216e56a1

# Java

https://qiita.com/koukonko/items/97de6e490fcc0e23cc26

# JavaScript

https://qiita.com/miriwo/items/75ac0c9438b409730a4b

# Perl

https://perlzemi.com/blog/20080317120577.html
設定でData Category Setup が表示できない


元の質問 : ["Data Category Setup" option not visible](https://trailhead.salesforce.com/en/trailblazer-community/feed/0D54S00000HEvcqSAD)

これに沿って設定したんだけど、Data Category Setupが表示されませんね。

[Lightning Knowledge のアクセス権の設定](https://trailhead.salesforce.com/content/learn/projects/set-up-salesforce-knowledge/set-access-for-lightning-knowledge)

Data Category Setupには Enable Lightning Knowledgeが必要だったようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/11691054-e43c-f8c9-6cf0-0420327d29e9.png)


また、Activate Validation Status fieldにチェックを入れないと以下の設定が出てきません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/298083fc-22e4-77ec-cfe0-2889a818b35f.png)
A5M2（A5:SQL Mk-2）を macOS で起動させてみる

# はじめに

**A5M2**（**A5:SQL Mk-2**）を macOS で起動させるまでの手順をまとめます。

## A5M2（A5:SQL Mk-2）とは

> A5:SQL Mk-2は複雑化するデータベース開発を支援するために開発されたフリーのSQLクライアントです。
> 
>
> 高機能かつ軽量で、使い方が分かりやすいことを目標に開発されています。
> 
> SQLを実行したり、テーブルを編集するほかに、SQLの実行計画を取得したり、ER図を作成したりすることが出来ます。
> 

https://a5m2.mmatsubara.com/

<br>

<br>

A5M2 を使ってみようと思ったのは、先日、こちらの記事を投稿した際のコメントで、経験豊富そうな方から教えていただいたことがきっかけです。

https://qiita.com/ryamate/items/3779418172c4f5a83212

起動させたら、こんな感じのことがしたい。

```mermaid
flowchart LR
	subgraph A5M2
		direction LR
		id1[ER図] --> DDL --> id2[テーブル] -->|リバース生成| id1
	end
```

<br>

※ 2022/08/15 追記
A5M2 での ER図の自動生成 の記事を投稿しました。

https://qiita.com/ryamate/items/12bd8cd819079c28644c

## 環境

- macOS（Intel） Big Sur バージョン: 11.6
- Homebrew バージョン: 3.5.4
- A5:SQL Mk-2(x64 edition) バージョン: 2.17.2

<br><br>

## 参考ページ

起動するまでの参考にさせていただいたページは、下記の2つの記事です。

https://qiita.com/Eternal_door/items/bb4854bfa62be3a113ee

https://a5m2.mmatsubara.com/wp/?p=8950

<br><br>

## 手順のもくじ

1. [A5M2 のダウンロード](#1-a5m2-のダウンロード)
1. [Wine のインストール（Homebrewで）](#2-wine-のインストールhomebrewで)
1. [Wine のライブラリのインストール](#3-wine-のライブラリのインストール)

# 1. A5M2 のダウンロード

A5M2 をサイトからダウンロードします。

https://www.vector.co.jp/soft/dl/winnt/business/se422726.html

私の環境では、 [Vector](https://www.vector.co.jp/soft/dl/winnt/business/se422726.html) から「A5:SQL Mk-2(x64 edition)2.17.2」を選択してダウンロードしました。

# 2. Wine のインストール（Homebrewで）

Homebrew で Wine のインストールするため、下記のコマンドを実行します。

```bash:ターミナル
brew install --cask --no-quarantine gcenx/wine/wine-crossover
```

Wine は、 Mac で Windows のアプリケーションを動作できるようにするシステムのようです。

https://www.winehq.org/

# 3. Wine のライブラリのインストール

続いて、日本語の文字化けを解消するために、下記のコマンドを実行します。

```bash:ターミナル
brew install winetricks
```

```bash
winetricks fakejapanese_ipamona
```

Winetricks が Wine のライブラリを管理するツールで、

fakejapanese_ipamona がＭＳゴシック等の代替フォントとのことです。

https://wiki.winehq.org/Winetricks

<br>

<br>

# 起動させてみる

インストールが完了したら、A5M2 を起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/2104ae9c-d70b-389e-d181-9a784e443c5e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/eff2db5c-1bfe-65fb-8870-3a8f3be9ca36.png)

「レジストリ」を押すと、データベースの接続に進みます。

以上で使い始められる状態になりました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/e6ceb8ec-8e85-0f2d-53ff-f458f5b5df02.png)

# おわりに

**A5M2**（**A5:SQL Mk-2**）を macOS で起動するまでの手順をまとめました。

A5M2 は開発を開始してから25周年を迎えるとのことで、メンテナンスもされていて現役のご様子です。これだけの長い期間、使われるツールとして進化し続けていることがすごいと思いました！…

ありがとうございました。
テーブル定義からFlask,Vueを使ったwebアプリを自動生成するマクロを作ってみました。

新たな業界に移り二年ちょい、地道に「自分で手を動かす」実績を積み重ねています。pythonの文章チェックツールや、FAXをオープンのOCRでデータ化し基幹に取込む仕組などいくつかのアプリを開発し、次はWebアプリを要望されています。

Webアプリの開発環境を決めメンバーにいくつか実装してもらった時点で、繰返し作業を自動化できないかと思っていました。デザインポケットさんの[VBAでテーブル仕様書からDDL文を自動生成する](https://design-pocket.com/vba/2020120901/)を参考に、アプリ自動生成をお盆休みにトライしました。

マクロと生成したソースはこちら⇒[Qiita共有](https://1drv.ms/f/s!Aq-xgHoKrXPfgQPuuDtpL811_ytR)
※2022/9/25下記改善を行いました。
・詳細画面の照会データの取得を一覧照会の照会データの取得と別に詳細の検索はユニークキーを用いる
・一覧から詳細へのリンクを追加、ユニークキー項目の内容を引き継ぐ
・一覧照会のsqlにソートを追加

利用方法はExcelに記載しています。テーブルのクリエイト文の生成と、アプリ生成はSELECT・INSERT・UPDATE・DELETEのSQLを生成してから、それらを組み込んだクライアントhtml・サーバサイドpyを生成します。axiosライブラリを利用したシングルページアプリです。テーブル定義のExcelを読み込むpythonプログラムにしたかったのですが、まずはVBAで。

## 環境
<table>
<tr>
  <td>OS</td>
  <td>windows10Home</td>
</tr>
<tr>
  <td>python</td>
  <td>Winpython64-3.7.7.1dot.exe</td>
</tr>
<tr>
  <td>python追加モジュール</td>
  <td>Flask 2.2.2</td>
</tr>
<tr>
  <td>クライアントJavaScript</td>
  <td>vue2.6.14<br>
    axios0.27.2<br>
    element-ui<br>
    vue-good-table2.16.3<br>
  </td>
</tr>

</table>

## 配置
<pre>

WPy64-3771
└─intra
  ├─Data
  ├─Pgm(生成されたサーバサイドの.pyを配置)
  │
  ├─static
  │ └─dist(クライアントのJavaScriptライブラリcdnから中に取り込んでます。)
  │    ├─axios
  │    ├─element-ui
  │    ├─vue
  │    ├─vue-good-table
  │    └─vue-select
  └─templates(.htlmを配置)

</pre>

一年8ｶ月振りの投稿でした。
CloudTrailの証跡を作成する

AWSのDay1対応の1つである、CloudTrailの有効化として、CloudTrailの証跡を作成します。
初期設定では、ログは90日間で削除されてしまいます。
ログをS3に保存されるように、証跡を作成します。

AWSマネジメントコンソールを表示し、CloudTrailを検索します。
検索した結果から、[CloudTrail] - [証跡] をクリックしてください。
![スクリーンショット 2022-08-14 7.26.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/445f9d18-f141-6c3d-bafa-296c09a54177.png)

[証跡の作成]をクリックしてください。
![スクリーンショット 2022-08-14 7.28.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/a766ac73-fd7a-25de-9f85-81d7b03c3266.png)

証跡属性の選択画面が表示されます。
[証跡名]に、任意の名前を入力してください。
今回は証跡を作成する手順を試すだけのため、ログファイルの暗号化は行わず、[ログファイルのSSE-KMS暗号化]のチェックを外します。
その他は、デフォルトの設定のまま、[次へ]をクリックしてください。
![スクリーンショット 2022-08-14 7.33.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/c3508969-cc89-0010-4385-4f329a810186.png)

ログイベントの設定画面が表示されます。
　イベントタイプは、実際の運用では、すべてチェックするのですが、追加料金が適用されてしまうため、今回は、デフォルトの設定のままとします。
![スクリーンショット 2022-08-14 7.38.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/be5507f2-680c-4828-d7ee-22e6f808f368.png)

管理イベントもデフォルトの設定のままとします。
[次へ]をクリックしてください。
![スクリーンショット 2022-08-14 7.38.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/99bbc51d-6533-0779-8ae9-0844495a1093.png)

確認と作成画面が表示されます。
設定の内容を確認し、[証跡の作成]をクリックしてください。

以上で、証跡が作成できました。
Setup LTFS diary

1. Get a driver for your own HPE LTO drive on Windows 10.
    * [\* RECOMMENDED \* HPE StoreEver Tape driver for Microsoft Windows](https://support.hpe.com/connect/s/softwaredetails?language=ja&softwareId=MTX_b2c71cf805a84271bb8de79a89)
    * Ref: [LTOテープライブラリ・オートローダーを使う（Windows）](https://htlab.net/computer/hardware/lto-tape-library-windows/)
2. Install the driver
3. Check the device driver in your PC whether the LTO drive was installed
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291673/87cc01a9-10f7-bc5d-cc26-fe52919bd9e5.png)    
4. For getting the LTFS software from HPE, Register HPE 
5. Download the StoreOpen Software
    * [HPE StoreOpen Software (Microsoft Windows 64bit](https://support.hpe.com/connect/s/softwaredetails?language=ja&softwareId=MTX_2d9369cb0bf4495f8840a4a8a2)
6. Install the StoreOpen Software
7. Mapping the drive letter for manipulating the LTO drive in your PC
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291673/10a67588-106b-9526-9f60-69609a2c0d5f.png)
    * If you want to store the index captures in another location, you can set it by **[Advanced options...]**![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291673/aba69d54-2078-1740-9f2a-4fa16c986fe7.png)
8. Done
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291673/1576b239-4776-5b2e-8200-bdc6cf9798f1.png)
STM32G031とDS1307で時計プログラム(ソフトウェアシリアル出力100bps)(I2C i2c(PA_12, PA_11);)


x 過去ログを見よ
x PA_0をOBでGPIOに出来る人むけ
x STM32G031は、秋月で売っているSTM32G031J6M6の事

目的
秋月のDS1307ZN+T&R I-06950



![o_con668.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/193d2d5e-2775-5ccb-5fb3-c095062448e7.jpeg)


![o_con669.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/23a02904-6a52-dbd7-ec19-59c59f83f1bb.jpeg)

![o_con670.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/1ab94f64-5689-5206-6755-67d35899c9ec.jpeg)


![o_con671.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a7ef5a91-1661-0a47-b6bf-c538403a9ffa.jpeg)


![o_con672.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a35227de-28fb-ae5e-5865-52c001b23092.jpeg)



```c++


//i2c_ds1307_S_SER_031_1

#include "mbed.h"

DigitalOut TX1(PA_0);


//仮想シリアルへの一文字出力 1000bps
// 10 100bps
//  5
//  2
//  1 1000bps
int pc_putc(char ch)
{
    TX1=1;
    TX1=0;//Start
    wait_us(1000*10);

    for(int ii=0; ii<8; ii++) { //Data x 8
        TX1=(ch>>ii)&1;
        wait_us(1000*10);
    }; //for

    TX1=1;//Stop
    wait_us(1000*10);

    return(0);
} //pc_putc

//        sda   scl
I2C i2c(PA_12, PA_11); //010

int main() {

    char data_read[7]; //リードバッファー

    while(1) {

        //時間の読み込み
        i2c.write( (0xD0), "\000", 1);
        i2c.read(  (0xD0) | 1, data_read, 7);

        ///時間の表示
        pc_putc( '0'+(data_read[2] >> 4)  );
        pc_putc( '0'+(data_read[2] & 0xf) );
        pc_putc( '.' );
        pc_putc( '0'+(data_read[1] >> 4)  );
        pc_putc( '0'+(data_read[1] & 0xf) );
        pc_putc( '.' );
        pc_putc( '0'+(data_read[0] >> 4)  );
        pc_putc( '0'+(data_read[0] & 0xf) );
        pc_putc('\r');
        pc_putc('\n');

        // 1秒待つ
        wait_us(1000*10);
  
    }//while

}//main




```
「第I幕　Netscape：マネージャー」からの学びメモ(2)(リーダーの作法／マイケル・ロップ)

マイケル・ロップ氏の「リーダーの作法　ささいなことをていねいに」を読み解きながら、メモを残しています。

:::note info
各章ごとにまとめていますが、章の原題ではなく**私にとってのまとめ**をタイトルにつけなおしています。
:::

https://www.oreilly.co.jp/books/9784873119892/

この本との出会いと、アウトプットしながら読み解く経緯はこちらの記事で。

:::note warn
本文で登場する「ランズ」は、ロップ氏のネット上のハンドルネームです。
「はじめに」で、自身を「ロップ」とも「ランズ」とも呼ぶと宣言しています。
:::

https://qiita.com/w2mjra555/items/73fcac51e65dc20e8cba

# 第I幕　『人の気持ちが分かる』基本的で難しいこと

「リーダーの作法　ささいなことをていねいに」は、大きくは3部構成になっています。

- 第I幕　Netscape：マネージャー
- 第II幕　Apple：ディレクター
- 第III幕　Slack：エグゼクティブ

今回は **「第I幕　Netscape：マネージャー」の4章～6章**について学びメモを残します。

```
第I幕　Netscape：マネージャー

4章　様子を見る、場をつかむ、味見をする
    4.1　様子を見る
    4.2　場をつかむ
    4.3　味見をする

5章　虫の知らせ
    5.1　虫の知らせとは何か
    5.2　待って、何？ それがエッセンスなの？ ちゃんと仕事しろってだけ？ さよなら、ロップ
    5.3　虫の知らせを信じる
    5.4　何かが起きているが、何が起きているかはわからない

6章　プロフェッショナルとしての成長をはかる質問表
    6.1　プロフェッショナルとしての成長をはかる質問表
    6.2　常に前進
    6.3　具体的なフォローアップ
```

## 前の記事

https://qiita.com/w2mjra555/items/a88107545822b9cf9a79

## 4章　リーダーは、よきファシリテーターでもある

ロップ氏は**様子を見る、場をつかむ、味見をする**ことを推奨しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/ec267392-4771-0ff3-d63e-899d47061daf.png)

この章で語られるリーダーシップは、**ファシリテーションスキル**とも重なるようです。
とくに**様子を見て、場をつかむ**という部分は、**よきファシリテーターそのもの**ですね。

ただ、この章の真骨頂は**味見をする**だと思います。
- アイデアの大事な部分を**味わうことは、リーダーの仕事**である。
- 実際に味わい、よい質問することは、**チームに敬意を示す**ことにもなる。
- **口にするまで味はわからない**ものと心得る。
- 味見で**舌が鋭く**なる。

おや？　こうしてブレークダウンしてみると…。
**味見をする**とは**実際に起きたことを大切にすること**とも言えそうです。
あるいは、**ふりかえりをする**ことのたとえでしょうか？
だとすれば、これも実は**よきファシリテーターそのもの**かも。

:::note info
**味見をしない**リーダーはマイクロマネジメントに傾倒しやすくなる。
そして**安全性のない環境**を生むとされていることが、ある意味答え合わせですね。
:::

## 5章　違和感はとことん大切に

ロップ氏は**気になることは掘り下げる**ことを推奨しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/84460df3-0ce6-3e1e-3072-ef4d6128478d.png)

リーダーは、**情報が足りない状況でも**瞬時の判断をしなくてはなりません。
判断には、経験から培われた**違和感のアンテナ**が重要な役割を果たします。
リスクに対処し最悪の事態を回避するには、**違和感をとことん大切にする**こと。

優れたアンテナがキャッチする違和感は**言語化より先に脳に届きます。**
これは**光が音よりも早く届くのと似ている**気がします。

> 怪しい。間違った。ヤバい。そう、このつたない言葉の中にも真実があります。

とっさに言語化できないのは、**脳が高速処理し、先に結論を出してくれた**から。
むしろ**本当に「ヤバい」ことほど**そうなりがち。
無視せずとことん掘り下げると、言語化は**ほぼ必ず遅れて**やってきます。

まれに空振りもあります。それでも**誰かが感じた違和感なら検証する**ことが大切。
**空振りと明らかにすること自体にも、メリット**があります。
**チームの安全性を高める**…これだけでもかなり大きい！

:::note info
4章の**味見をする**とは、先入観なしに経験と省察を積み重ねることで、**違和感のアンテナ**の感度を高めること、とも言えそうです。
:::

## 6章　成長は自分で問い続けないと間に合わない

ロップ氏は**自身の成長への投資について、毎月ふりかえる**ことを推奨しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/986cb203-1a33-e79c-3062-d001411bb98c.png)

- プロフェッショナルの成長とは、本来**毎日起こるほど目まぐるしい。**
- それに対して、多くの人が**公式に得られる評価フィードバックのスパンは長すぎる。**
- だから、**評価基準を自分で持ち、年に何度も問い直す**とよい。

:::note info
(実際にはめったに訪れない)**チャンスが訪れたとき、自分のキャリアプランにとって妥当な判断をくだす**ことにもつながります。
:::

## ここまでの雑感

この本の目次を目にしたとき、たしかに **「刺さった！」** と直感しました。
なにが刺さったのかまでは、**はっきり言語化**できていませんでした。
これも一種の **「経験を通じて、反射的に働く知恵」** なのかもしれません。

知識欲を満たすのではなく、**語り合いたい**種類の本。
誰かと内容について話すというより(それもよいですが)、**本そのものと対話したい**本。
今思えば、そんな出合いの高揚感がありました。

そう、**言語化は直感のあとからやってくる。**

## 続きの記事

https://qiita.com/w2mjra555/items/323ab3cc2769df12013e
【夏休み企画】#IT用語一問一答【毎朝投稿7日目】XSS

# この記事を読むと、、
- 「関連用語」を使って「XSS」を説明できるようになる

# 関連用語
Stored XSS / Reflected XSS / DOM based XSS

[**復習用**] 記事の内容を見る前に上記の言葉でXSSを説明してみよう！

# 企画説明
- クラウドって何？って人に聞かれて説明してるけど俺もよく知らないや、、
- ドキュメント読んでみてるけど半分くらい何言ってるか分かんない、、
- 今日の夕飯はナスの炒めものにしよっかな〜、あれ、NASってなんだっけ？

みたいなことが結構あったので、知ったかしていたIT用語を毎日一個ずつちゃんと学んでいこうっていう企画です！

昨日の記事はこちら↓

https://qiita.com/acta/items/17d6eddc339af5e949ec

# XSSとは
XSS = Cross-Site Scripting = 悪意のあるスクリプトをwebサイトに埋め込むことで、サイトを訪問したユーザーのブラウザ上で個人情報を抜き取るなどする攻撃手法
　
**Stored XSS** = **Persistent XSS** = **Type-I XSS** = 注入されたスクリプトがサーバーに永続的に保存されているXSS

**Blind XSS** = 悪意のあるスクリプトがサイト訪問時に実行されるため、攻撃者自身もその実行タイミングを知らないStored XSS

**Reflected XSS** = **Non-Persistent XSS** = **Type-II XSS** = メールや他サイト上のリンクなどから、悪意のあるスクリプトが埋め込まれたサイトへ誘導するXSS

**DOM Based XSS** = **Type-0 XSS** = 悪意のあるスクリプトによってクライアント側でDOM構造を書き換えられて実行されるXSS
- DOM Based XSSではHTTPレスポンス自体は書き換えられていない

　   



# 参考資料
- https://owasp.org/www-community/attacks/xss/#
- https://www.geeksforgeeks.org/understanding-blind-xss-for-bug-bounty-hunting/#
- https://owasp.org/www-community/Types_of_Cross-Site_Scripting#DOM_Based_XSS_.28AKA_Type-0.29
Linux カーネルモジュール・デバイスについて（自分用メモ

D-Bus（Desktop Bus）は、プログラム同士が情報を伝達するプロセス間通信機構のひとつです。Linuxではdbus-daemonなどがプロセス間通信の中継を行います。この機能により、例えば新しいデバイスの認識情報を他のアプリケーションに伝達し、そのアプリケーションが新しいデバイスをすぐに使えるようになるなどのシステム管理上の利便性も向上


●カーネルモジュールとは、カーネルで扱うべき色々な機能を独立した部品のようなものです。モジュールとしてカーネルから切り離すことでカーネル本体のサイズを小さくし、必要な機能だけをロードしたり、不要な機能はアンロードするというように使用できます。

※例えばカーネルモジュールとして提供されているデバイスドライバを組み込む場合、もしくは不要となったので取り外す場合、modprobeコマンドを使用

※例えばカーネルモジュールとして提供されているデバイスドライバを組み込む場合、insmodコマンドを使用

例）test.koモジュールをロードする
insmod test.ko

正常にロードできた場合は何も出力されません。

modprobeコマンドを使っても依存関係を自動的に解決したスマートなモジュールロードを行うことができます

※例えばカーネルモジュールとして提供されているデバイスドライバを不要となったので取り外す場合、rmmodコマンドを使用します。

例）test.koモジュールをアンロードする
rmmod test.ko

正常にアンロードできた場合は何も出力されません。

なお、modprobeコマンドは依存関係を自動的に解決したスマートなモジュールのアンロードを行うことができます。Red Hatなどではrmmodコマンドではなく、依存関係を考慮するmodprobe -rを使用することが推奨されています


●周辺機器(デバイス)にはコールドプラグデバイスとホットプラグデバイスの2つがあります。

・コールドプラグデバイス
システムが停止している状態でのみデバイスの差し替えができるデバイスのことです。システムは起動時にデバイスを認識します。
コールドプラグデバイスにはRAIDカードなどがあります。

・ホットプラグデバイス
システムが起動している状態でもデバイスの差し替えができるデバイスのことです。これらはプラグアンドプレイデバイスとも呼ばれます。
ホットプラグデバイスにはUSBがあります。

なお、ホットプラグデバイスの制御はudev(Userspace DEVice management)によって行われます。
カーネルはデバイスを検知すると「/sys」以下（sysfsと呼ばれます）の情報を更新しますが、その更新をudevは検知し、/dev以下にデバイスファイルを動的に作成します。
デバイスファイル作成時の動作は、「/etc/udev/rules.d」ディレクトリに配置された設定ファイル（拡張子「.rules」）に記述された情報に基づいて行われます。

※ホットプラグデバイスを接続した際に、デバイスファイルを動的に作成するのはudev


●大量のデータのための記憶装置を「大容量記憶装置（mass storage device）」といいます。OSをインストールして起動ディスクとして使用したり、大容量のデータを保管するために使用します。

大容量記憶装置には主に以下のものがあります。

・HDD（Hard Disk Drive）
容量が大きくコストパフォーマンスが高い記憶装置です。データの記録には磁気を使用します。
コンピュータに内蔵できるものと外付けできるものがあります。装置内部の「プラッタ」という回転する円盤に対してデータの読み書きを行いますので、衝撃によりプラッタに傷がついてデータが破損する場合があります。そのため、慎重に取り扱う必要があります。

・USBフラッシュドライブ
「USBメモリ」とも呼ばれる記憶装置です。内部の「フラッシュメモリ（不揮発性の半導体メモリ）」にデータの読み書きを行います。
小型で軽量なことからデータの持ち運びによく利用されています。フラッシュメモリには書き換え回数やデータ保持期間に制限があり、長期保存には向いていません。

・SSD（Solid State Drive）
ディスクという名前がついていますが、記憶装置として半導体メモリを用いており、実際にはフラッシュメモリに属する機器です。USBフラッシュドライブと同様に、書き換え回数やデータ保持期間の制限があるため、長期保存には向いていません。
ランダムアクセス性能に優れており、省電力で静音、非接触メディアであるため耐振動・衝撃性が高く、近年ではHDDの代わりに使用されることも多くなりました。フラッシュメモリの高速性を引き出すため、SATAより高速な「NVMe」インターフェースで接続するタイプのものもあります。
PlatformIOの問題点(2022/8)

使っていくうちにいろいろ問題点が見えてきたので、書いておきます。

1\. 古いバージョンでパッケージがインストールできない

Pythonの制約でEl CapitanにはVer 4のPlatformIOが入っているのですが、パッケージのサイトが変更されていて、パッケージのインストールができません。一度ビルドしていればパッケージが入っているので大丈夫ですが、新規のアーキテクチャの開発ができません。

2\. frameworkなどがバージョンアップされて再現性がなくなる

開発していたソースをgithubとかにあげて、別の環境でもビルドする場合、フレームワークはその時点で最新がダウンロードされて、ビルドされるので、元とは違うものがビルドされる可能性があります。toolchainも同じことが起こりえます。platformio.iniにバージョンを指定する方法もありますが、デフォルトでは指定されてません。

3\. Bearmetalでの開発ができない

toolchainだけを使ってframeworkを使わない開発ができません。フレームワークが巨大化して、小さいflashのターゲットに入らなくなることもあり、bearmetalでの開発ができるといいです。

4\. pic32のターゲットが大きなリソースのチップしかない

pic32の開発環境はPenguinoというものがあって、これは秋月で取り扱いのあるPIC32MX220F032などもサーポートしていたのですが、現在のPlatformIOは128K以上のターゲットしかありません。

5\. ツールのバージョンがへん

pic32progはオリジナルが2.0.xなのにPlatformIOのパッケージには2.1.xが入ってます。どこから出てきたものでしょうか？

6\. upgradeすると動かなくなる環境にもメッセージが表示される。

El Capitanの4を使ってると不定期に下記のメッセージが表示されますがupgradeすると動かなくなります。

```
********************************************************************************
There is a new version 6.1.4 of PlatformIO available.
Please upgrade it via `platformio upgrade` or `pip install -U platformio` command.
Changes: https://docs.platformio.org/en/latest/history.html
********************************************************************************
```

7\. Pythonをupdateすると消える

Pythonを3.8から3.9に変えたら無くなりました。3.8のディレクトリにインストールされてるからなんですが、どうするのがいいのでしょうか？

8\. pic32mxがmicrochipの環境と互換がない

xc32にはplib.hというファイルがあるが、これがない。これはChipKitの問題なのだが、[このリポジトリ](https://github.com/biomurph/chipKIT-core-prebuilt)を見るとどうも当初はChipKitはmicrochipのGPLソースからヘッダーやライブラリを作っていたようなのだが、Arduinoに寄せるためこれをやめてしまったように思われる。このためXC32で作ったものの移行が困難。

現状のプロジェクトの方針だと、ホビーユースでは問題ないでしょうが、業務で組み込み開発での利用はかなり厳しい気がします。
devcontainerのディスクのパフォーマンス改善

devcontainerでnode_modulesのようなパッケージがインストールされるディレクトリは容量が大きくホストにマウントしているとDockerの動作が遅くなる。

そのため、node_modulesをマウントから外す必要がある。以下のように記載することで`node_modules`を`try-node_modueles`というVolumeに保存できる。

```
"mounts": [
    "source=try-node-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume"
],
```

匿名Volumeに保存したい場合の設定は以下のように記載する。

```
"mounts": [
    "target=${containerWorkspaceFolder}/node_modules,type=volume"
],
```


devcontainer.jsonの全体は以下のようになる。
```devcontainer.json
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.241.1/containers/javascript-node
{
	"name": "Node.js",
	"build": {
		"dockerfile": "Dockerfile",
		// Update 'VARIANT' to pick a Node version: 18, 16, 14.
		// Append -bullseye or -buster to pin to an OS version.
		// Use -bullseye variants on local arm64/Apple Silicon.
		"args": {
			"VARIANT": "16-bullseye"
		}
	},
	// Configure tool-specific properties.
	"customizations": {
		// Configure properties specific to VS Code.
		"vscode": {
			// Add the IDs of extensions you want installed when the container is created.
			"extensions": [
				"dbaeumer.vscode-eslint"
			]
		}
	},
	"mounts": [
		"source=try-node-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume"
	],
	"postCreateCommand": "sudo chown node node_modules",
	// Use 'forwardPorts' to make a list of ports inside the container available locally.
	// "forwardPorts": [],
	// Use 'postCreateCommand' to run commands after the container is created.
	// "postCreateCommand": "yarn install",
	// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
	"remoteUser": "node"
}
```

コンテナ内の`node_modules`にファイルがあるが、ローカルホスト上にはファイルがないことを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2458996/6ec3b59b-5747-1ab2-5984-392c3f4ef35a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2458996/49b98a38-2314-bd24-41d5-d04991441367.png)

docker-composeの場合はこのようにする。

```
services:
  database:
    image: postgres
    container_name: database
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: laravel_docker
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    ports:
      - '5433:5432'
  php-apache:
    container_name: php-apache
    build:
      context: .
      dockerfile: ./php/Dockerfile
    ports:
        - '8080:80'
    volumes:
      - ./src:/var/www/laravel_docker
      - /var/www/laravel_docker/node_modules # Library should not Mount Local Volume for Performance
      - /var/www/laravel_docker/vendor # Library should not Mount Local Volume for Perfomance
      - ./apache/default.conf:/etc/apache2/sites-enabled/000-default.conf
    depends_on:
      - database
```

# 参考文献
https://code.visualstudio.com/remote/advancedcontainers/improve-performance
https://github.com/microsoft/vscode-remote-try-node/issues/11
【JavaScript】非同期処理② 〜コールバックを用いた非同期処理〜

# 概要
JavaScriptを学習、理解を深めるため「[JavaScript Primer 迷わないための入門書](https://jsprimer.net/)」を読み、
理解した内容等を記載していく。

「[【JavaScript】JavaScript入門一覧](https://qiita.com/andota05/items/22fae452225b785fd405)」に他の記事をまとめています。

# この記事で理解できること
* コールバック関数を用いた非同期処理
* コールバック関数を用いた非同期処理における例外処理の方法

# コールバック関数を用いた非同期処理
* ある非同期処理を行う関数などに、非同期処理が完了したタイミングで実行する関数(コールバック関数)を登録しておく。
* 非同期処理の中で、さらに非同期処理を行いたい場合は、コールバックをネストすることで実行可能。

```js
/** 定義 */
// 非同期処理を行う関数を定義(今回はsetTimeout関数で処理が2秒かかる想定で実行)
function asyncFunc(result, callback) {
  console.log("非同期処理を開始します");
  
  setTimeout(() => {
    const result = true; // 色々と処理を経て取得した結果の想定

    // 登録されたコールバックを呼び出す
    callback(result); 
  }, 2000);
}

/** 実行 */
console.log("同期処理1");

// 非同期処理(関数)を実行
// 第2引数に渡している(result)..から始まる部分がコールバック関数(アロー関数形式)を登録している(渡している)部分
asyncFunc(true, (result) => {
  if (result) {
    console.log(`結果は${result}か。よし後続の処理を行うぞ...`);
  } else {
    console.log(`非同期処理が失敗しました`);
  }
});

console.log("同期処理2");
console.log("同期処理3");

// => 同期処理1
// => 非同期処理を開始します
// => 同期処理2
// => 同期処理3
// => (非同期処理開始2秒後..)結果はtrueか。よし後続の処理を行うぞ...
```

# エラーファーストコールバック
* ES2015より前までは、`非同期処理中に発生した例外を扱う方法`として広く使われていた。
* エラーファーストコールバックとは、次のような非同期処理におけるコールバック関数の呼び出し方を決めたルール
    * 処理が失敗した場合
        * コールバック関数の第一引数に`エラーオブジェクト`を渡して呼び出す。
    * 処理が成功した場合
        * コールバック関数の第一引数には`null`を渡し、第二引数に`成功時の結果`を渡して呼び出す。
* 非同期処理における`エラーハンドリングの書き方を決めたルール`であって仕様ではない。

```js
function errorFirstCallBack(result, callback) {
  setTimeout(() => {
    // resultは何らかの処理の結果(今回は直接bool値を渡し条件分岐している)
    if (result) {
      // 成功の場合、コールバック関数の第一引数はnull、第二引数に結果としてオブジェクトを指定
      callback(null, {result: result});
    } else {
      // 失敗の場合、コールバック関数の第一引数はエラーの内容を指定
      callback(new Error("エラーが発生しました"))
    }
  }, 1000);
}

// 非同期処理が成功した想定の処理
errorFirstCallBack(true, (error, response) => {
  if (error) {
    console.log(error.message);
  } else {
    console.log(response);
  }
})
// => { result: true }

// 非同期処理中にエラーが発生した想定の処理
errorFirstCallBack(false, (error, response) => {
  if (error) {
    console.log(error.message);
  } else {
    console.log(response);
  }
})
// => エラーが発生しました
```

前述の通り`エラーハンドリングの書き方を決めたルール`であって仕様ではないため、それっぽい書き方をしても問題になるわけではない。

```js
function errorFirstCallBack(result, reject, response) {
  setTimeout(() => {
    // resultは何らかの処理の結果(今回は直接bool値を渡し条件分岐している)
    if (result) {
      // 成功の場合、コールバック関数の第一引数はnull、第二引数に結果としてオブジェクトを指定
      response({result: result});
    } else {
      // 失敗の場合、コールバック関数の第一引数はエラーの内容を指定
      reject(new Error("エラーが発生しました"))
    }
  }, 1000);
}

function rejectFunc(error) {
  console.log(error.message);
}

function successFunc(result) {
  console.log(result);
}

// 成功した想定の処理
errorFirstCallBack(true, rejectFunc, successFunc); // => { result: true }
```
adsfでyarnをinstallした際にエラーとなる

# 概要

asdfにyarnをインストールしたときのエラーについて、解決方法を書いています。


# エラー内容

```bash
% asdf install yarn latest
⛔ Missing one or more of the following dependencies: tar, gpg

```

# 解決方法

```bash
% brew install gpg
```

その後、再度、yarnをインストールする。

```bash
% asdf install yarn latest
% asdf global yarn latest
% asdf current yarn
yarn            1.22.19         ${HOME}/.tool-versions
```
Ubuntu22.04 リモートの開発環境Djangoにアクセスできないときに確認したこと

## 概要
自宅サーバのUbuntu22.04にインストールしたDjango3.2.15でrunserverしましたが、作業用PCのブラウザですんなりアクセスできなかったので、アクセスできないときに確認するサーバ側の設定をまとめました。nginxなどWebサーバは使用しておらず、Djangoデフォルトの開発用のWebサーバを使用しています。

環境
Ubuntu22.04 IP 192.168.88.15/24
Django 8000番ポート
作業用PC 192.168.88.1/24

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744334/6a218c85-1938-a962-20aa-78cc1b45d46e.png)
## ufwを確認
8000番ポートが開いているか確認します。
```
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
55055                      LIMIT       Anywhere
55055 (v6)                 LIMIT       Anywhere (v6)
```
私の環境では55055番ポート以外、アクセスできない設定になっていたので、8000番ポートを開けます。
```
$ sudo ufw allow 8000
Rule added
Rule added (v6)
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
55055                      LIMIT       Anywhere
8000                       ALLOW       Anywhere
55055 (v6)                 LIMIT       Anywhere (v6)
8000 (v6)                  ALLOW       Anywhere (v6)
```
ufwを設定(sudo ufw enable)していない場合は、全ポート開いているので確認・ポートを開ける必要はありません。

## setting.pyを確認
WebサーバのIPまたはホスト名をリストで入力します。クライアントから送られたHTTPリクエストのホストヘッダーに、ALLOWED_HOSTSで指定したものがあればレスポンスを返します。
```settings.py
ALLOWED_HOSTS = ['192.168.88.15']
```

## runserverコマンドの実行
DjangoへのアクセスをUbuntu22.04のすべてのネットワークインターフェース(私の環境だと192.168.88.15と127.0.0.1)で待ち受けるようにしてrunserverします。(runserverのコマンドをそのまま実行すると、Djangoは127.0.0.1:8000でアクセスを待ち受けます。)
```
$ python manage.py runserver 0.0.0.0:8000
```
UbuntuのIPアドレスでも大丈夫でした。192.168.88.15:8000でアクセスを待ち受けます。
```
$ python manage.py runserver 192.168.88.15:8000
```
アクセス可能になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744334/65dbe7e1-859d-00e3-a411-5395e5b1979f.png)
Djangoのチュートリアル2でタイムゾーンがずれて現在の時間が正確でない

Djangoチュートリアル2（https://docs.djangoproject.com/ja/4.1/intro/tutorial02/）
のとこまで進めたところで、Djangoでの現在の時間と実際の時間とに9時間のずれがあった。その解決法を記す（超簡単）。

下記のページ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780454/02325bd5-d1cf-ed38-9abb-c6eb14e11ecd.png)


# 解決法
```mysite/settings.py
TIME_ZONE = 'Asia/Tokyo'
```
TIME_ZONEのところを日本に変えるそれだけ！以上！
2022/8/14主にITとかセキュリティの記事

選挙を狙うサイバー攻撃、CISAが無償のツールキット公開して防御を呼びかけ(8/12)
https://news.mynavi.jp/techplus/article/20220812-2423279/

あなたが頑張っているセキュリティ対策は？(8/12)
https://news.nicovideo.jp/watch/nw11292511

サイバー攻撃を受けている業界第1位は「教育・研究」業界、業界平均の2倍超え(8/12)
https://news.mynavi.jp/techplus/article/20220812-2422485/

KDDI障害とウクライナ侵攻サイバー戦で露呈、日本の縦割り行政が招いた「通信の致命的弱点」(8/12)
https://diamond.jp/articles/-/307604

7月マルウェアランキング、Microsoft Officeのマクロ無効化の影響で順位変動(8/12)
https://news.mynavi.jp/techplus/article/20220812-2423130/

ポリゴン（Polygon）分散アプリ数が400%増加(8/12)
https://nextmoney.jp/?p=52283

サイバーセキュリティで最も弱いのは人、文化を変えないと企業は守れない(8/12)
https://news.mynavi.jp/techplus/article/20220812-2420938/

ITセキュリティの専門家が警鐘を鳴らす「サプライチェーンリスク」とは(8/12)
https://japan.zdnet.com/article/35191790/

PayPayが「送る・受け取る」機能を利用したトラブルへ注意喚起(8/12)
https://news.biglobe.ne.jp/it/0812/imm_220812_6433711794.html

PayPay機能利用トラブル注意喚起(8/12)
https://news.biglobe.ne.jp/topics/it/0812/45052.html

「Visual Studio」の中の人が作ったプログラマー向け十徳ナイフ「DevToys」【再掲】
今までググって探していたツールがひとまとめに(8/12)
https://forest.watch.impress.co.jp/docs/shseri/readitnow/1426154.html

Twitter、電話番号やメルアドに関連付けられたアカウントの収集を認める(8/12)
https://www.zaikei.co.jp/article/20220812/685039.html

シスコ製品に重要な脆弱性、アップデートを(8/12)
https://news.mynavi.jp/techplus/article/20220812-2423675/

Meta、「Messenger」のエンドツーエンド暗号化機能をテストへ(8/12)
https://japan.cnet.com/article/35191789/

InstagramのiOSアプリは独自ブラウザでユーザーを追跡していると開発者が指摘(8/12)
https://www.itmedia.co.jp/news/articles/2208/12/news057.html

Flutterとは？　【ITワード365】Fast Pair／DAO／SBOM／ペアレンタルコントロール／グループウェア／DeepL(8/12)
https://atmarkit.itmedia.co.jp/ait/articles/2208/12/news012.html

「ICTサイバーセキュリティ総合対策2022」（案）に対する意見募集の結果及び「ICTサイバーセキュリティ総合対策2022」の公表(8/12)
https://www.soumu.go.jp/menu_news/s-news/01cyber01_02000001_00142.html

「選挙関連メールをスパム認定されないようにする」というGoogleの提案が承認、「Gmailが共和党議員のメールをより多くスパム認定している」という調査結果(8/12)
https://gunosy.com/articles/eIbnA

IT部門が顧客体験にも口を出すべき時が来た(8/12)
https://japan.zdnet.com/article/35191673/
VAIO Duo 13 に Ubuntu 20.04

# はじめに
使われなくなった、VAIO Duo 13 に Linux をインストールして使おうと思った記録です。
Linux は、Ubuntu 20.04 にしました。

VAIO Duo 13 はクセのあるPCで、大分苦戦しました。

スペックは、CPU COREi5, SSD 128GB, メモリ 4GB

まず、SSD の容量を増やそうと思っても、
SSD を交換するには、すごい分解が必要です。

また、BIOS画面を表示するには、[ASSIST]ボタンを押して一旦起動する特殊性があり、
SSDに直接Linuxをインストールするとか、
SSDを新品に交換するとかは得策ではありません。

それにせっかく、今の構成でWindows10のライセンスが登録されているので、構成はそのままにして、外付けSSDにLinuxをインストールすることにしました。

# 多分結論

このVAIOは、
USB 3.0 が有効だと、外付けSSDからブートできない。
純粋に外付けSSDだけでブートできない。
内蔵SSDにブート領域(GRUB)の書き込みが必要（というか書き込まれてしまう）

# 紆余曲折

live CD の ISO をUSBメモリに書き込み、そこから起動して、
外付けSSDにLinuxをインストール。

https://qiita.com/koba-jon/items/019a3b4eac4f60ca89c9

何回やっても、外付けSSDから起動できない。
※GRUB コンソールが表示される。何これ？Windowsも起動出来ない。終わった？
[ASSIST]ボタンを押して、レスキューからWindowsを起動すると、Windows起動に戻りました。

パーティションの切り方、設定に問題があるのか、色々調べます。

動画を上げてる人が Linux Mint で出来てたので、
**Linux Mint**に変更。
:link: [外付けSDD/HDDにLinuxをインストール～内部ストレージに影響を与えずに安全に試せます～【LinuxMintで試す】](http://distronanakey.livedoor.blog/archives/13014112.html)
しかし、何回やっても、外付けSSDから起動できない。

調べていくと、sdaにブート領域が書き込まれてしまうとの情報。
仮想環境でストレージなしにしてインストール。
**VirtualBox**・・・USB 2.0 以上を使うには拡張パックを別途インストール
live CD から、画面が全然表示されない。ずっと黒画面。
**VM Ware Workstation Player**・・・UEFIブートするには、ファイルを直接編集
こちらでは、live CDの画面が表示された。仮想環境のデフォルトの違いだった。
VM Ware では、CPU:2 メモリ:2G
Virtual BOXでは、CPU:1 メモリ:1G
何とここでもGRUBコンソールが表示された。
調べてみると、コマンド入力でOSを起動できるようだ。
やっと、仮想環境なら外付けSSDのLinuxを起動できた。

:link: [GRUBコンソールからDebianを起動](https://nanbu.marune205.net/2021/12/grub-console.html?m=1)

これをPCから直接起動！出来ない。
結局、何回やってもPCから外付けSSDを起動できない。

調べていくと、VAIO Duoでは、USB 3.0 が有効だと外付けからブート出来ない。
GRUBコンソールでも、外付けSSDを認識出来てないようだ。
BIOSでUSB 3.0を無効化。
やっと外付けSSDから起動できました。

:link: 参考リンク失念

しかし、ここで問題が。
Linux Mint 安定せず。
それに GRUB が内蔵SSDに書かれてるのもかっこ悪いし、
**Debian**に変更。

内蔵SSDに書かれたGRUB、消せるんですね。知ってる人すごい！

:link: [旧ブートローダの削除](https://qiita.com/koba-jon/items/019a3b4eac4f60ca89c9#%E6%97%A7%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%81%AE%E5%89%8A%E9%99%A4 "Ubuntu 20.04 LTS インストール方法（外付けドライブ用）")


Debianでは、パーティションを細かく指定できます。
MBR or GPT, boot, legacy_boot, bios_grub...???調べる
結局、仮想環境からなら起動出来ますが、PCから起動出来ません。

最終的に、内蔵SSDのGRUBから外付けSSDのUbuntu起動（USB 3.0 無効）
となりました。
さすが、Ubuntuは安定してます。