OmniAICreator/Qiita-1.07M huggingface dataset:
Google Formsで、後から事前入力済フォームを作成する

# はじめに
Google Formsでアンケートを配布する際に、事前にいくつかの項目を入力済みにしておきたいということは、往々にしてある。
例えば、以下の画像のようなアンケートが本社から、支部の事務に届いた際、アンケートURLを支部内で再配布することになるのだが、再配布する相手は全員同じ勤務地である。そこで、1つ目の勤務地選択については、こちらで入力済のURLを再配布するほうが、間違いも少なく、良いと考えられる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197285/67a2ae94-2df6-4c4e-1ace-17a7dd2efa7f.png)

もちろん、アンケートの編集権限があれば、以下のようにメニューから事前入力したURLを発行できるものの、編集権限がない場合はどうすればいいのだろうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197285/91aed5a8-fae1-3a78-dbc5-7aeb415b42b3.png)


# 解決方法

そもそも、事前入力したURLというのは、`https://docs.google.com/forms/d/e/〇〇〇〇〇〇〇〇〇〇〇〇〇/viewform?entry.136176518=神戸本社`のようにフォーム自体のURLの後ろに、URLクエリパラメータとして、「entry.」から始まる質問の識別番号と、その答えが書かれている。つまり、識別番号さえわかれば、編集権限がなくとも、自由に事前入力したフォームのURLを生成できる。
この識別番号であるが、開発者ツールで確認すると、`data-params`属性の中に普通に書かれている。これをURLクエリパラメータとして入力しておくことで、事前入力済みのフォームのURLを生成できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197285/af9cfa08-1ac3-5573-f37f-d6da86c27e9a.png)

なお、以下のコードは、「****」の部分に、何番目の質問（0始まりに注意）か数値を入力して利用するJavascriptのコードである。開発者ツールを開き、数値を入力した上で、コピペ＆実行すると、識別番号を表示してくれる。

```js:Google Forms
Array.from(document.querySelectorAll("[role=listitem]")[****].querySelectorAll("[data-params]")).forEach(e=>console.log(JSON.parse("["+e.getAttribute("data-params").slice(4))[0][4][0][0]))
```


# 参考文献
大変、参考になった文献。

https://qiita.com/que9/items/19dd5a3b24d654be9c7c
【25卒新卒就活】プログラマー就活でやったことまとめ

# はじめに
　本記事を閲覧いただきありがとうございます。
　25卒として合計4個内定を頂き無事に就活を終えることができたため、備忘録を兼ねて就活でやったことをお伝えいたします。
　業界や内定先は念のため伏せさせていただきます。ご了承ください。

# スペック
- 国公立大学大学院理系修士卒業見込み(CS専攻)
- 学部時代はコンピュータ部に所属
- 大学入学時にプログラミングを始めた

# 就活開始までにやったこと(大学入学～2023年3月)
### コンピュータ部に所属
　幸運にも大学入学時に行きたい業界がはっきりと決まっていたこともあり、プログラミング学習のためコンピュータ部に所属し自主製作、チーム制作を積極的に行っていました。また、在籍最終年度は部長を務めていました　　
　この経験で就活に役立ったことは以下の3つです。就活のために打算的に入部したわけではないですが、下記の経験やつよつよな人たちに囲まれる刺激を得ることができたことは就活の際にとても有益だったと思います。    
 
  - ESに載せることができる成果物を2,3個作成することができた
  - プログラマの就職で聞かれがちなチーム制作の経験を積むことができた
  - 就活でよく聞かれる「人をまとめた経験」のエピソードを作ることができた

　

### B3の時点でインターンに参加
　B3の時点で自分の強みやアピールできる点を整理しM1での就活本番に備えて予行演習をする気持ちで、院進するつもりではあったもののB3の夏時点で2社のインターンに参加しました。　　
 　この経験のメリットとして、以下の3つが挙げられます。
  - 希望業界への熱意がより高まり自主製作のモチベが上がった
  - M1での就活本番の際にB3の頃作成したESのブラッシュアップをするだけでよくなった
  - 自己分析や企業選びなど就活始まってからやることをこの段階である程度終わらせることができた

  　　

###  就業型インターンに参加
  　卒論を書き終わり春休みの期間であった2023年3月に約一か月間某メガベンチャーで就業型インターンを経験しました。　
   　目的としては主に2つあり、1つは就活で話せるエピソードを作るため、2つ目は実際の仕事を通して自分が本当にその業界に適しているかどうかを見定めるためでした。　　
    　この経験は就活で話していてとても面接官の方からのウケが良かった印象があります。

# 25卒として就活開始してやったこと(2023年4月～)
### 就活サービスの登録
色んなサービスに登録していたのですが、以下のサービスがとても良かったと感じています。
#### [逆求人ナビ](https://www.studenthunting.com/)
  - 志望業界の大手企業と直接面談できた
  - 面談から選考無しでインターンに参加させていただいたこともあった
  - 実際に内定頂いた4社のうち2社はこのサービス経由でインターン参加→内定だった    
  
下記のURLで登録し、イベントに参加することでアマギフをもらえることができます。 

  https://www.studenthunting.com/ref25to26-url?pc=1997

  
#### [LabBase](https://compass.labbase.jp/)
  - 志望業界で行きたい企業はある程度絞っていたが、スカウトを頂き選択肢を増やすことができた
  - スカウト経由でたくさん面談を積むことができ社会人の方と話す練習になった

### 夏・秋インターンの参加
　内定を頂いた4社ともすべてインターン経由のルートで2023年11月~2024年2月とある程度早い段階で内定を頂くことができました。いろいろなところで言われている通りで近年はインターンに参加することによるアドバンテージがとても大きいと感じています。

### ESや面接の記録
　Notionを用いて、提出したESや受けた面接のメモは必ず残すようにしていました。個人的には選考においてES→1次面接→それ以降の一貫性が大切でありそれを徹底することで一番自分という人間が面接官の方に伝わると考えていました。そのため選考の記録を残していたことで面接前の準備で大いに役立ちました。

# 終わりに
　行きたい業界が決まっており、就活が本格的に始まる前に積極的に行動・準備していたことでM1の就活本番ではESで落ちたことが無い程度にある程度楽に就活を進めることができました。　　
　また、B3の頃のインターン参加や就業型インターンの参加は志望業界への熱意が見える行動として面接官の方からの評価が良かった印象があります。　　
  　周りの人と一斉にスタートダッシュを切る必要は無いため、私のように行きたい業界がある程度決まっている方はとりあえず行動してみることを強くお勧めします。
Vim 9.1 patchダイジェスト (2024/02)

[Vim](http://www.vim.org/)のリリースされた[patch](https://github.com/vim/vim/commits/master)の説明です。
([9.1.0068](https://github.com/vim/vim/commit/59bafc8171b08cf326ed40ccb4ee917f9643290e) ～ [9.1.0145](https://github.com/vim/vim/commit/062141b1a70cf5364e6983ec901282e0111745c1))
**新機能、大幅な仕様変更には、:four_leaf_clover:が付いています。**
runtimeファイルも直接commitされるようになりました。ただ、数が多いので基本的にはここでは取り扱わないことにします。

* [9.1.0137](https://github.com/vim/vim/commit/ff2b79d23956263ab0120623c37e0b4498be01db): コマンドライン時、`<Del>`で合成文字が削除できない件を修正しました。
* [9.1.0120](https://github.com/vim/vim/commit/3f905ab3c4f66562f4a224bf00f49d98a0b0da91): :four_leaf_clover:`getregion()`を追加しました。バッファの {pos1} から {pos2} までの文字列のリストを返します。(関連patch: [9.1.0122](https://github.com/vim/vim/commit/9ca335aad295fdaf4b75d3969b093422c1cc48ee), [9.1.0126](https://github.com/vim/vim/commit/421b597470c118871c7081de00dd065e0e000b7e), etc........)
* [9.1.0117](https://github.com/vim/vim/commit/96cc4aef3d47d0fd70e68908af3d48a0dce8ea70): `win_splitmove()`が、新しいウィンドウを作成しない場合でも、`WinNewPre`イベント や `WinNew`イベントをトリガーすることがあった件を修正しました。
* [runtime(misc)](https://github.com/vim/vim/commit/f9ca139e3aa12dd03177ebba5eedcee4f0836f27): :alien:いくつかのruntimeファイル更新時のGitHubアカウントへの通知先を変更しました。(Dr.Chip(cecamp)さんの名前がすべて消えた)
* [9.1.0106](https://github.com/vim/vim/commit/34e4a05d02a016fe230495be8f6c60ddd56f9567): デフォルトカラースキームと`'termguicolors'`の組み合わせで、ビジュアルモード選択箇所の文字が認識し難い件を修正しました。
* [runtime(vim)](https://github.com/vim/vim/commit/9b53c052d58f73f2078c61a74622687306e51c17): :four_leaf_clover:`runtime/syntax/vim`生成スクリプトを同梱しました。(関連URL: [vim-jp/syntax-vim-ex](https://github.com/vim-jp/syntax-vim-ex)) (関連patch: [runtime(vim)](https://github.com/vim/vim/commit/5c3855bcab425be39e2934fede14d1124466c55a), etc...)
* [9.1.0098](https://github.com/vim/vim/commit/0d3c0a66a39570cbc52b9536604c39e324b989b3): 補完時、一致する項目がない場合に、CompletChanged イベントがトリガーされない件を修正しました。
* [9.1.0090](https://github.com/vim/vim/commit/45932c5c4a9ec01f7c2aa09b1574430853dafb4b): 端末からのOSCレスポンスのコード10, 11 (文字色/背景色のRGBカラー)のパース時、G(緑)とB(青)の値取得が逆になっていた件を修正しました。
* [9.1.0088](https://github.com/vim/vim/commit/c9e79e52845d51f48f5ea3753a62ab3fe0e40184): `:norm!`コマンド実行時に `TextChanged`イベントがトリガーされない件を修正しました。
* [9.1.0071](https://github.com/vim/vim/commit/fa37835b8c0ed0f83952978fca4c332335ca7c46): :four_leaf_clover:`diff()` を追加しました。Vimの内部diffライブラリを使用して差分情報を生成します。(関連patch: [9.1.0096](https://github.com/vim/vim/commit/be156a31c5400eb12025e480c477b1df88244801), [9.1.0099](https://github.com/vim/vim/commit/a0010a186d93187d2b69b857d75db8a1e01049bb))

---
#### 凡例

|表記|意味|
|:------|:------|
|:four_leaf_clover:|新機能、大幅な仕様変更|
|:alien:|Vim開発者向けの追加、変更|
|`'hoge'`|オプション (`:h options`参照)|
|`:hoge`|Exコマンド (`:h :index`参照)|
|`hoge()`|組み込み関数 (`:h functions`参照)|
|`v:hoge`|Vim定義済変数 (`:h v:`参照)|
|`+hoge`|feature (`:h +feature-list`参照)|

---
#### 方針
[こちら](http://qiita.com/h_east/items/23cd0d10932505072e6b#%E6%96%B9%E9%87%9D)を参照。
GitHub Pagesでmicro:bitのソースコードをブロック表示する

# ソースコードをブロック形式で表示する

Microsoft MakeCode for micro:bitは、Git Hub Pagesで、ソースコードをブロック表示するツールを提供しています。

https://makecode.microbit.org/blocks-embed#githubpages

# 表示方法（公式）

`README.md` の末尾に次の内容を記述します。

```md: (README.md)

<script src="https://makecode.com/gh-pages-embed.js"></script>
<script>makeCodeRender("{{ site.makecode.home_url }}", "{{ site.github.owner_name }}/{{ site.github.repository_name }}");</script>

```

`_config.yml` は、次のような内容になっていることを確認します。特に、`makecode`の`home_url`が、`https://makecode.microbit.org/`であることを確認してください。

```yml:_config.yml
makecode:
  target: microbit
  platform: microbit
  home_url: https://makecode.microbit.org/
theme: jekyll-theme-slate
include:
  - assets
  - README.md

```

````md: (README.md)

```blocks
input.onButtonPressed(Button.A, function () {
    basic.showNumber(custom.baz())
})
input.onButtonPressed(Button.B, function () {
    basic.showNumber(custom.bar())
})
```

````

# 拡張機能の表示方法（非公式）

公式の表示方法では、任意の拡張機能のブロックを表示できず、テキスト表示のブロックとして表示されます。
任意の拡張機能のブロックを表示するには、`README.md` の末尾に記述した内容を次のように書き換えます。

```md: (README.md)

<script src="https://cdn.jsdelivr.net/gh/jp-rad/pxt-ubit-extension@0.5.0/.github/statics/gh-pages-embed.js"></script>
<script>makeCodeRender("{{ site.makecode.home_url }}", [ "custom=github:jp-rad/pxt-ubit-extension", ]);</script>

```

次のように、GitHub Pagesとして生成されたページは、`blocks`で記述したソースコードがテキスト形式からブロック形式に置き換えられて表示されます。

https://jp-rad.github.io/pxt-ubit-extension/


[**makeCodeRender関数**](https://github.com/jp-rad/pxt-ubit-extension/blob/master/.github/statics/gh-pages-embed.js#L1-L8)

| 引数 | 説明 | 備考 |
|------|------|-----|
|targetURL| MakeCodeのURL |`"{{ site.makecode.home_url }}"`固定|
|renderBlocksPackage | 拡張機能の情報 | 文字列もしくは文字列の配列 |

## makeCodeRenderの第2引数

例とした拡張機能は、その名前空間が`custom`であり、GitHubの`jp-rad/pxt-ubit-extension`リポジトリで管理されています。この情報をmakeCodeRenderの第2引数で渡しています（配列の１つ目の要素）。

例えば、[pxt-neopixel](https://github.com/microsoft/pxt-neopixel)の場合は、`neopixel=github:microsoft/pxt-neopixel` を配列の要素として渡します(置き換えもしくは追加)。

```md: (README.md)

<script src="https://cdn.jsdelivr.net/gh/jp-rad/pxt-ubit-extension@0.5.0/.github/statics/gh-pages-embed.js"></script>
<script>makeCodeRender("{{ site.makecode.home_url }}", [
    "custom=github:jp-rad/pxt-ubit-extension",
    "neopixel=github:microsoft/pxt-neopixel",
]);
</script>

```

**ソースコードの例(`blocks`)**

````md: (README.md)

```blocks
let strip = neopixel.create(DigitalPin.P0, 24, NeoPixelMode.RGB)
strip.setPixelColor(0, NeoPixelColors.White)
custom.foo(4, "Hello", MyEnum.One)

```

````

**ブロック形式での表示**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/0ae75192-c7ee-d1d4-2732-eb4101e21851.png)

# まとめ

[`Blocks embed`機能（サービス）](https://makecode.microbit.org/blocks-embed)を利用することにより、GitHub Pages上で、micro:bitのソースコードをブロック形式で表示することができます。
また、[拡張機能の表示方法（非公式）](#拡張機能の表示方法非公式)の方法で、任意の拡張機能のブロックも表示することができます。
最近気になったトピック：2024/04/07


Xのブクマを供養（不定期）

## baselime.io
https://baselime.io/

- サーバーレスとか分散システムに強いトレーシング的なサービス？
- Datadogみたいなものか？
- 正直よくわからないのと、現職の技術スタックでは使い所がないかも

https://x.com/techtalkjp/status/1776490404046852423

## laravel brink logger
https://github.com/ucan-lab/laravel-blink-logger

- 界隈に帰ってきたu-canさん
- SQLとかリクエスト／レスポンスのログをいい感じに出力してくれる
- 開発環境ではこういうの重宝するのでrequire --devで入れとくと良さそう

## ふりかえりカタログ
https://qiita.com/viva_tweet_x/items/cc3bad3bd298406b6cc7

- ふりかえりエバンジェリスト、ビバさんのふりかえりカタログ
- いろんなふりかえり手法が紹介されているのでリファレンスとして良さそう

## mabl
https://codezine.jp/article/detail/19155

- テスト自動化プラットフォーム
- ぱっと見Aurifyの競合？差別化ポイントはわからない
- PDFとかメール送信とかも確認できるのは良さそう

## ビジネスとエンジニアリングの接合点 そしてコード品質がそこに及ぼす影響
https://speakerdeck.com/mtx2s/the-intersections-of-business-and-engineering-and-the-impact-of-code-quality-there-v1-dot-1

- 先日参加しそびれたFindyさんのやつ
- ログラス社のEMの方資料、とてもわかりやすい
- こういう説明をできるようにならんといかんのだなぁ


## DuckDB
https://duckdb.org/

- 無償の分析用DB（?）
- CSVとかJSONとか読めるらしい
- ユースケースとしてはS3とかに貯めたログを漁ったりみたいな感じかな？

## エンジニア基礎
https://speakerdeck.com/kotomin_m/ensiniaji-chu-2024nian-du-ensiniaxin-zu-yan-xiu-8571fa94-7ebf-44fc-a5cd-302763118aee

- めっちゃバズってたやつ、ことみんすぎょい
- 中身もいい話が詰まっている
- 枝葉のところで多少ツッコミは入っているけど、いい資料

## ふりかえり研修2024
https://speakerdeck.com/pokotyamu/furikaeri-2024-95ceb97e-d587-4c4b-a4ec-5e52672644f6

- 経験に複利を効かせるというワードがめっちゃよい
- 前向きに、建設的に考えるためのヒントがいっぱい
- たまにはいいことだけを考える
[Python / pytorch] CUDA error: device-side assert triggered CUDA kernel errors の原因調査

# エラー内容

目についたエラーはこちら。

```bash
RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
```

他にもこんなメッセージが出ていた。

```bash
 from the models weights: update the call to weights.transforms(antialias=True).
  warnings.warn(
../aten/src/ATen/native/cuda/Loss.cu:250: nll_loss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [11,0,0] Assertion `t >= 0 && t < n_classes` failed.
../aten/src/ATen/native/cuda/Loss.cu:250: nll_loss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [14,0,0] Assertion `t >= 0 && t < n_classes` failed.
../aten/src/ATen/native/cuda/Loss.cu:250: nll_loss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [16,0,0] Assertion `t >= 0 && t < n_classes` failed.
../aten/src/ATen/native/cuda/Loss.cu:250: nll_loss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [27,0,0] Assertion `t >= 0 && t < n_classes` failed.
```

# 原因

正解ラベルの ID に `-1` を設定していたのが原因だった。

エラー文に書かれている制限事項|意味
--|--
t >= 0|負の値は正解ラベルにできないらしい。|
t < n_classes|正解ラベル `t` は、正解クラス数 `n_classes` よりも小さい値でなければいけないらしい。<br>つまり、正解ラベルの番号が、飛び飛びになってもいけない、ということだろう。


# 解決策

ラベル ID の値を 0 と正の整数のみにしたら解決した。


# 関連記事

https://discuss.pytorch.org/t/runtimeerror-cuda-error-device-side-assert-triggered-cuda-kernel-errors-might-be-asynchronously-reported-at-some-other-api-call-so-the-stacktrace-below-might-be-incorrect/139735/4

この記事では、クラス(ラベル)のIDは `[0, nb_classes-1]` の間しか許容されていないと書かれている。
エラー文の記載とも辻褄があっている。


https://yuiga.dev/blog/posts/pytorchcuda_error_device-side_assert_triggered_%E8%A7%A3%E6%B1%BA%E3%81%AE%E6%89%8B%E5%BC%95%E3%81%8D/
firebase.jsonのsource .は何を表しているのか

# はじめに

firebase.jsonの設定がよくわからずに利用していて、なぜかうまいっている状態だったので調べてみたのでまとめていきます

# 問題

```
$ firebase init hosting
```

ここで以下のような選択でYesを選択すると自動で`source: .`が設定されます

```
=== Hosting Setup
? Do you want to use a web framework? (experimental) (y/N) 
```

```json:firebase.json
{
  "hosting": {
    "source": ".",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "frameworksBackend": {
      "region": "asia-east1"
    }
  }
}
```

ここで、他の方は以下のようにやっています

```json:firebase.json
{
  "hosting": {
    "public": "out",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}
```

ここでの違いは何かあるのでしょうか？またなぜ`source: .`でうまくデプロイがされるのか謎だったので調べました

# 解決方法

先程の質問でyesとすることfirebase-webframework-toolsを利用することが可能です

https://github.com/FirebaseExtended/firebase-framework-tools

これを利用すると、`source: .`とすることでReactやNext.jsなどのプロジェクトを認識していい感じにデプロイすることが可能になっていました

意識しなくても設定できるのはとてもよいですね

# おわりに

長年の疑問が晴れてよかったです。よりfirebaseを使いやすくなりました
【ChatGPT＋DALL-E3】に服装のコメントを書いてもらう。


　どうも、カーブミラーです。

　今回は、ChatGPTに服装のコメントを書いてもらいますよ。

:::note info
本記事は、ChatGPT（有料版）
＋DALL-E3で行なっております。
画像はありません。あしからず。
:::

　まずは、ニュース。

　ChatGPTに、新機能ふたつ。

　ひとつめは、
　　リンクの表示について。
[ネット検索時のリンクに関して](https://twitter.com/OpenAI/status/1773738074041717109?t=CuR_7a4Y5_ZsopcV_mXMrQ&s=19)
　DeepL翻訳
***
ChatGPTがインターネットを閲覧する際、リンクをより目立つようにしています。 これにより、ChatGPTの応答により多くの文脈を与え、ユーザーがパブリッシャーやクリエイターのコンテンツを発見しやすくなります。 ブラウズはChatGPTプラス、チーム、エンタープライズで利用可能です。
***

　ふたつめは、
　　「ダイナミックオプション」
[ダイナミックオプションについて](https://twitter.com/ctgptlb/status/1776532786779984183?t=6YP_SPPenZRNugAsuooXyg&s=19)

　こちらは、
　　プロンプトを判断して
　　　ChatGPTが自動的に
　　　　GPT-3.5 TurboとGPT-4を
　　　　　切り替える機能、とのこと。

　これにより、
　　GPT-4の利用を
　　　有効的に活用できる。

　すべてのプロンプト処理を
　　GPT-4だけにする必要はないが、
　　　切り替える人は少ない。
　　　　かくいう私もだ。

　しかし、
　　これは、
　　　セッションごとの
　　　　切り替えなのかも
　　　　　しれない。

　一回のセッションの中で
　　ころころ変えるのは
　　　効率が悪いように思われる。

　ならば、
　　セッション最初で
　　　切り替える方が
　　　　理に適うかも？

　どちらにせよ、
　　画像生成には、
　　　GPT-4固定でいいだろう。

　そうしたオプションも
　　あるようだし。
***
　さて、本題です。

　企画をしているのは
　　お知らせしましたね。
　　　今日（2024/04/07）の
　　　　24時までです。

　初めての方でも
　　挨拶抜きで
　　　参加していただけますよ。

　まぁ、それは本題ではなくw

　ファッション企画その１で
　　集まった服装を
　　　モデルに着せて、
　　　　ポストしています。

　その反応が
　　面白かったので、
　　　それについて書きます。

　返信をもらえるのは
　　応募してくださった方の
　　　一部です。
***
　応募のほとんどは
　　イラスト風なものばかりなので、
　　　それをそのまま人間に
　　　　着せるとどうなるのか、が
　　　　　わかりません。

　また、
　　ほとんどの方が
　　　全身画像を出してきません。
　　　　腰上、胸上です。

　それは
　　靴を指定していないことが
　　　原因のようです。

　DALL-E3でも
　　靴の指定がないと、
　　　全身を描いてくれません。

　靴なんて
　　ChatGPTさんが
　　　適当に設定してくれれば
　　　　ありがたいのですが、
　　　　　そうはしないみたいです。

　とにかく、
　　それを踏まえて、
　　　こちらも想像を膨らませて、
　　　　リアルモデルに
　　　　　服を着せます。

　それを見た人の反応は、
　　基本的に
　　　“こうなるんだ”という
　　　　驚きと納得ですね。

　また、
　　どうしても
　　　コピれないような服装だったら
　　　　できるだけ、そのデザインを
　　　　　取り入れて、
　　　　　　アップしました。
　　　　　　　（まだだった）

　こちらは
　　これからなので
　　　反応があるはずもなく😅
***
　それと反応のあるのが
　　与えられた画像からの
　　　服装の解析です。

　“よくそこまでわかりますね”と
　　お声をいただきます。

　ChatGPTさんが
　　解析して、出してくれますからね😅

　私はそれを
　　編集しているだけ。

　たまに
　　解析結果が
　　　間違えたりもするので
　　　　チェックしたりもします。

　帽子なんかが
　　間違えやすいものです。
　　　間違えというよりは
　　　　“そりゃ、仕方ないよな”という
　　　　　どうともとれる場合です。

　とにかく
　　そうやって、コメントを書くと、
　　　さっきのような返答が
　　　　あるわけです。

　自分ですべてを
　　書くのは無理なので
　　　（知識もそれほどありませんし）

　ここまでのことが
　　みなさんの作品制作の
　　　糧になれば、幸いです。

　今回は、ここまで。
仕様を満たさない端末を強制的にWIN11にする

#### 方法は知ってたので実験してみた。

至って簡単で、
1.MSのサイトからWin11_23H2_Japanese_x64v2.isoをD.L.
2.展開して 全ファイルをローカルにコピー
3.sources ディレクトリ内のappraiserrs.dllファイルをメモ帳で開いてバイナリがでるが全て選択して消して上書き
4. Setup.exeの実行
5. ネットオークションで200円くらいで売ってるライセンスキー(合法)を購入して認証受けて完了。

::: note
・今後のUpdateで動かなくなる可能性もあり。
・動作不良等、当方責任は持てません。必ずインストールできる保証もなし。
・この手法はMPUが64Bitである必要があったりある程度制約がある。
:::

i5-7600Kは仕様を満たしていないが動いている.
![P1440460.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821882/8429e497-7422-6207-5ede-f7d6495e2bd4.jpeg)

1時間程掛かった.
![P1440459.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821882/4afa2f97-f66c-2bc2-517d-83e25908c444.jpeg)
<HR>

### 1.OpenShell入れて「スタート」をWinXP風にする
(秀丸スタートメニューというのもある)
![新規 ビットマップ イメージ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821882/26fd01f5-aa71-7678-b4e9-c73aed44e7df.jpeg)

・WIN2K風にもできる。
![1 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821882/a8e338f1-148f-91bf-bcc0-3973282a32f6.jpeg)

<HR>

### 2.Classic Context Menu

これも便利。ファイルを選択して右クリックで出てくるメニューをW10風にする。
使い勝手が慣れてるW10と同様なのでラクラク。

https://forest.watch.impress.co.jp/docs/serial/win11must/1363937.html
<HR>

### 3.W10のMSPAINTを使用する方法
W11のPAINTは慣れてないせいか使い辛い。
Classic Context Menuと併用するとjpg右クリック -> E で旧MSPAINTで編集できる。

https://win7games.com/#mspaint

### 4.Windowのコーナを四角にする方法
https://www.gigafree.net/system/theme/Corner-Sharpness.html
配列関数・３回目

## はじめに

配列関数の整理。3回目。

### usort

標準的なソート関数では表現できない順序に基づいてソートする

```php:usort.php
$keys = ['十', '百', '千', '万', '億', '兆', '京', '垓', '秭', '穣', '溝',
 '澗', '正', '載', '極', '恒河沙', '阿僧祇', '那由他', '不可思議', '無量大数' ];

$data = ['那由他', '京', '垓', '億', '無量大数' ];

usort($data, function($a, $b) use ($keys) {
    return array_search($a, $keys) <=> array_search($b, $keys);
}); // ['億', '京', '垓', '無量大数', '那由他']
```

### array_walk

配列から順に要素を取得＆処理する


```php:array_walk.php
$data = ['高江' => '男', '掛谷' => '女', '日尾' => '男', '薄井' => '女', '和田' => '男'];

array_walk($data, 
    function ($value, $key, $suffix) {
        print "{$key}：{$value}{$suffix}";
    }, '<br />'
);
// 高江：男<br />掛谷：女<br />日尾：男<br />薄井：女<br />和田：男<br />
```

元の配列の内容を変更する

```php:array_walk_ref.php
$data = ['高江', '掛谷', '日尾', '薄井', '和田'];

array_walk($data, 
    function (&$value) {
        $value = "New{$value}";
    }
);
print_r($data); // ['New高江', 'New掛谷', 'New日尾', 'New薄井', 'New和田']
```

### array_walk_recursive

入れ子の配列を再帰的に処理する

```php:array_walk_recursive.php
$sum = 0;
$count = 0;
$data = [5, 1, [10, -3]];

array_walk_recursive($data,
    function ($value) use(&$sum, &$count){
        $sum += $value;
        $count++;
    }
);

$average = $sum / $count;
print "要素の個数: {$count}"; // 4
print "合計値: {$sum}"; // 13
print "平均値: {$average}"; // 3.25
```
気ままに勉強会で初登壇した話

先月、気ままに勉強会で初登壇をさせていただきましたので記事を投稿いたします。

https://kimamani.connpass.com/

## そもそもアウトプットを始めた理由
樺沢紫苑さんの著書「アウトプット大全」では、アウトプットをすることで始めて
現実世界に変化や影響を及ぼす（すなわち自己成長する）と明記されてます。

https://www.kinokuniya.co.jp/f/dsg-01-9784801400559

その内容を知ってから、Twitter（現時点ではX）でアウトプットを始めました。
SNSは情報発信と交流。内向的な性格なのでTwitterでさえも最初勇気が入りましたが
当時何もスキルが無かった私は、気づけばTwitterを続けておりました。



## 登壇を考える

- [ ] コミュニティで教わった内容を実際に試す
- [ ] Twitterに投稿する

こちらを繰り返すうちに、一度コミュニティで登壇してみたいと考えるようになりました。
ただ、登壇されている方のスキルは凄過ぎて（よわよわな）私でも登壇してもよいのか
ずっと躊躇いがありました。

そんなときに「気ままに勉強会」主催のたなさんに「冬の陣」でお会いして
  　**登壇は考えてませんか？相談に乗りますよ。** 
 と温かいお言葉を頂きました。
 去年「気ままに勉強会」にたくさん助けていただいたことから
 私も何か役に立つ内容を共有できればと考えるようになりました。



## 登壇の内容
Power Automateのフロー、Power Appsのアプリは去年たくさん作成しましたが
確実に知識として定着していなかった部分があり、もう少し知識を付けてからという思いがありました。
※今であればPower Apps、Power AutomateもLT登壇できるのではないかと考えています。

色々と考えたところ、**SharePoint Listからデータを取得する話**であれば
去年色々とはまったことに対して、試行錯誤して自分なりの解決策を出せたので
役に立つ内容が話せると考えました。



## 事前打合せのおかげで
登壇が初めてで、たなさん、ふらりさんに、事前打合せをしていただきました。
掲載資料の著作権の話や、登壇時の設定、時間配分などたくさんお教えいただきありがとうございます🙇‍♂️

あまり人前で話をしたことがなく、登壇前に緊張してしまいました。
**経験が共感しますよ。** とアドバイスいただき本当にありがとうございます。

daiさんからもアドバイスありがとうございます。

https://x.com/dai_keiba_73/status/1767874664595128507

当初、**知識共有をベース**に話そうと考えておりましたが、**実体験ベース**で話そうと変更しました。


## 登壇の感想
あまり覚えていないです。
チャットを見る余裕がなくて、リハーサルたくさんしたにも関わらず
後半時間大丈夫かどうかが気になって、少し焦ってしまいました。

**話したいことをゆっくり話して大丈夫**
とアドバイスいただいたにも関わらず、焦ってしまってすみません。
今後登壇をさせていただく際に活かします。

内容もこのようなもので良かったか、気になりましたが
「試行錯誤の話はためになる」「躓きの共有非常に助かる」などお言葉をいただき
嬉しかったです。

**このような機会を頂き、本当にありがとうございます。**

「気ままに勉強会」は初学者の私でも温かく登壇を迎えてくださいました。
初登壇を行う私にとって、安心して登壇ができました。
一息ついてまたLT登壇したいという気持ちが出てきております。

※登壇資料はこちらです。

https://www.docswell.com/s/8181214906/K98399-2024-03-17-112340
AIにWEB技術を5ちゃんねるっぽく解説してもらうサービスを作りました

# きっかけ
AIに5ちゃんねるのやり取りを生成させたツイートが話題になっていました。

![image_2024-04-07_11-41-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140146/bb310c88-054d-b631-14f5-9d308cb9374e.png)

このツイートが面白かったので、WEB技術についてやり取りしてもらったら実用的なのでは🤔と思いました！

# 生成してみる

「レスポンシブデザイン」について生成してもらい、使える部分を切り取ってまとめっぽくしてみました。

![image_2024-04-07_11-36-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140146/3531126a-ade9-2414-71d5-ce64dc8786e8.png)


なんかそれっぽい！
それにメリットとかも話してくれて参考になる😲

# 作成したサービス
参考になったので他の技術やアップデート情報なども5ちゃんねる風にしてまとめにしました。面白いと思った方はぜひ見てみてください！
[WWW無人速報→](https://service.webgoto.net/www-mujin/)

https://service.webgoto.net/www-mujin/
AZ-204学習メモ

## はじめに
AZ-204取ったので、苦手な部分を復習がてら記事化。

https://learn.microsoft.com/ja-jp/credentials/certifications/resources/study-guides/az-204


## Azure Container Instances
Dockerコンテナーを実行できる。単純なアプリケーション向き。オーケストレーション不要……というかオーケストレーションしたいならAKS使おう。

### 再起動ポリシー
Always…コンテナを常に再起動する。実行時間の長いタスク向き。
Never…コンテナを再起動しない。コンテナは1回のみ実行される。
OnFailure…コンテナで実行されたプロセスが失敗した場合のみ、コンテナを再起動する。コンテナは少なくととも1回実行される。実行時間の短いタスク向き。

## Azure Functions
関数をサーバレスで実行できる。他サービスと連携させる上で**トリガー**と**バインド**が重要。
トリガーは関数の呼び出し方法、バインドは関数に別のリソースを接続する方法のこと。入力バインドと出力バインドの2種類ある。バインドはfunction.jsonで定義する。

https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-triggers-bindings?tabs=isolated-process%2Cpython-v2&pivots=programming-language-csharp

### function.json
バインドの定義ファイル。 他サービスから関数にデータ連携("direction":"in")させたり、関数から他サービスにデータ連携("direction":"out")させたりできる。
認証情報はfunction.jsonにハードコードせず、App settingsで定義してfunction.jsonから参照させるのがセキュリティ的に安全。

https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-expressions-patterns

## Cosmos DB
DP-420がCosmos DB特化試験なのでその対策も兼ねて気持ち厚め

NoSQLデータベースだけど以下のドキュメントにはリレーショナル、ベクトルデータベースとも書いてある。IoTやリアルタイム分析のデータベースとして使ったりする。CosmosDBのLearnはサンドボックス付きのハンズオンが色々あるのでやってみるとイメージが掴めると思う。

https://learn.microsoft.com/ja-jp/azure/cosmos-db/introduction

Learn

https://learn.microsoft.com/ja-jp/training/paths/integrate-azure-cosmos-db-sql-api-azure-services/

### 変更フィード
データの追加、編集、消去といったイベントの記録。変更フィードトリガーでAzure Functionsをキックしたりできる。(=コンテナに変更が加えられたら関数を実行できる)
だいたいのケースでは変更フィードプロセッサ(プッシュモデル)で変更フィードを処理するけど、特定のパーティションキーから変更を読み取りたい、変更フィードの読み取りペースを制御したい、といった場合にはプルモデルが使われることもある。

#### 変更フィードプロセッサのコンポーネント
**監視対象コンテナー**…読んで字のごとくだけど、このコンテナーへの変更がフィードに記録される。
**リースコンテナー**…複数のworker間で状態を維持し、動的スケーリングを調整する。 Azure Functionsで自動作成できるが、手動で作成することも可能。
**デリゲート**…変更フィードを読み取って何をするかを定義するコード。 
**コンピューティング インスタンス**…変更フィードプロセッサをホストするインスタンス。

https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/change-feed-design-patterns?tabs=latest-version

### 整合性レベル
データのレプリカ間でどのくらいデータの一貫性を厳密に求めるかを設定できる。厳密さとスループットはトレードオフ。Cosmos DBでは5段階の整合性レベルがある。デフォルトの整合性レベルを設定できるが、要求レベルで整合性を上書きして緩和することも可能。より厳密にしたい場合はCosmos DBアカウント側でデフォルトの整合性レベルを変更する。
設定のスコープはパーティションキー範囲か論理パーティション。

5段階のレベルについては以下の音符の例が分かりやすいのでここでは割愛。

https://learn.microsoft.com/ja-jp/azure/cosmos-db/consistency-levels

## おわりに(学習してみての所感)

Cosmos DBは奥が深いのでドキュメントを全部読もうとするといくら時間あっても足りない……公式のプラクティス評価の解説の粒度で理解できればいったんはOK、くらいの割り切りはしたほうがいいかも
ChromeリモートデスクトップでChromebookの英数キーにWindowsキーを割り当てる

# はじめに
Chromebookを普段のメインマシンにし、WindowsデスクトップにはWindows上で開発をしたりするときだけChromeリモートデスクトップで入るという使い方をしています。
このとき不便に感じていたのが、ChromebookではWindowsキーを使えないことです。Ctrl+Escキーでスタートメニューを開くことはできますが、Win+D（デスクトップ表示）、Win+R（ファイル名を指定して実行）などよく使うショートカットが使えないのは非常に不便で効率が悪いです。
そこで、ChromebookのキーボードにWindowsキーを割り当てる方法をご紹介します。

# Chromebookのキー配列
Chromebookのキー配列は各社異なりますが、私の使用しているHP Chromebook x360シリーズはSpaceキーの左隣に「英数」キーがあり、Acerなども同様のようです。様々なキー割り当てが可能ですが、Windowsキーの配列にも近いこの英数キーにWindowsキーを割り当てることにしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184078/83f0f7a7-82dc-ce5c-a6a8-e5f9163dbe2d.png)
（https://jp.ext.hp.com/campaign/personal/notebooks/keyboard/ より引用）

# 設定方法
Chromebookリモートデスクトップの右側にあるメニューから [キーマッピングを設定] をクリックしてください。
<img width="500" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184078/f403364c-57bf-e0e0-c00d-88cca94ca159.png">

次に、「マッピング元のキー」に「NonConvert」、「マッピング先のキー」に「MetaLeft」と入力し、完了ボタンを押してください。
<img width="500" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184078/01f758f1-10d4-da6b-f484-ba751d60aa36.png">

これでChromebookの英数キーがWindowsキーとして動作するようになります。
<img width="500" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184078/a06a97dd-e407-08e9-7e7a-fd8c182753b3.png">

# うまくいかない場合は
こちらがキー割り当てで使うKeyCodeのリストが載っているページとなります。
https://www.w3.org/TR/DOM-Level-3-Events-code/#key-alphanumeric-functional

HP Chromebook x360シリーズの英数キーは当然「Eisu」かと思いきや、いくつか試すうちに「NonConvert」つまり無変換キーのKeyCodeが送られていることがわかりました。
ほかにも「Convert」、「Lang1」、「Lang2」など候補になりそうなKeyCodeがありますので、ご自身のChromebookのKeyCodeを色々試して割り当てていただければと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184078/adc0378d-6a82-1e2f-0a1a-804ffe96cfa3.png)
(https://www.w3.org/TR/DOM-Level-3-Events-code/#key-alphanumeric-functional
 より引用)
AdSpamBlock を使って、LINE の広告を非表示にする。(無料)

### 追記

以下の記事は 2024 年 4 月 に書いたものですが、1 週間程度で対策され、 2024 年 5 月 現在では、トーク画面の一番上の広告はフィルタ対象になりません。😱

---

今週、[AdSpamBlock](https://adspamblock.com/) という、無料で広告をブロックしてくれるアプリの存在を知りました。👍

[AdGuard Pro](https://apps.apple.com/jp/app/adguard-pro/id1126386264) と同様に、ブラックリストを自由に追加できます。🤩

この記事では、[AdSpamBlock](https://adspamblock.com/) を使用して、[LINE](https://line.me/ja/) の広告をブロックする方法を紹介します。✍️

## 手順 1. iPhone / iPad に AdSpamBlock をインストールする

以下のリンクから [AdSpamBlock](https://apps.apple.com/jp/app/adspamblock/id1581743170) をインストールしてください。

https://apps.apple.com/jp/app/adspamblock/id1581743170

## 手順 2. 広告ブロック用のブラックリストを追加する

AdSpamBlock の設定画面で以下の URL を追加してください。  
これで設定は終了です。👍

```
a.line.me
gw.line.naver.jp
obs.line-scdn.net
scdn.line-apps.com
sch.line.me
```

## 参考記事

https://note.com/minimalist_meme/n/n4232fbdf6767

https://note.com/minimalist_meme/n/n5350edde43dc

https://note.com/m130/n/ne457a29acd82

https://bacon-epix.hatenablog.com/entry/2020/09/15/162034
ターミナル起動時に自動でコマンドを実行する

設定ファイルの読み込みなど、ターミナル起動時に行いたいコマンドがある時にこちらの設定をすると便利です。

## 現在のシェルの確認

使用しているシェルによって設定を行うファイルが異なるので、今使用しているシェルの確認をします。

```shell
$ echo $SHELL
```

- `/bin/bash` → bash
- `/bin/zsh` → zsh

## 実行コマンドの記述

シェル起動時に自動で読み込まれるファイルがあるので、そこに起動時に行いたいコマンドを入力します。

```shell
// bash
$ vi ~/.bashrc

// zsh
$ vi ~/.zshrc
```

修正後、ファイルの保存をします。

```shell
// bash
$ source ~/.bashrc

// zsh
$ source ~/.zshrc
```

`source`を使えば保存されて問題ないですが、念の為再起動をしてきちんと実行されていれば完了です。

## 参考

https://qiita.com/pocomoco/items/4e306095dce13d307fee

https://take-engineer.com/zsh_setting/
Pythonで比較演算子を再定義する

## 問題

以下の問題を解きたい。


> Find the most frequent K words in the list of words.
> **_If there are multiple words with the same frequency, prioritize the lexicographically smaller one._**
> Returned array does not need to be sorted.

## 解答

以下のようにヒープを使いたい。

```py
def top_k_words(words, k):
    top_words = [] # as min heap length k.

    for word, cnt in Counter(words).items():
        # ヒープの中の要素数がkより多くなったら、以下の優先順位で要素をヒープからpopしたい。
        # - 出現回数の少ないもの
        # - その中では辞書順で後ろ側のもの
        heappush(top_words, (cnt, - word)) ###
        if k < len(top_words):
            heappop(top_words)

    return [- neg_word for _, neg_word in top_words]
```

しかし、`- word`(stringのマイナス)なんてできない。
(与えられた配列の要素が数字であればこれで可能。)
どうするべきか？
-> heapの要素のためのクラスを定義し、その中で比較演算子を再実装すればいい。

```py
class WordCnt:
    def __init__(self, word, cnt):
        self.word = word
        self.cnt = cnt

    def __lt__(self, other):
        if self.cnt != other.cnt:
            return self.cnt < other.cnt

        return self.word > other.word # 比較演算子を逆にした

def top_k_words(words, k):
    top_words = [] # as min heap length k.

    for word, cnt in Counter(words).items():
        # 出現回数がkより多くなったら、以下の優先順位で要素をヒープからpopしたい。
        # - 出現回数の少ないもの
        # - その中では辞書順で後ろ側のもの
        heappush(top_words, WordCnt(word, cnt))
        if k < len(top_words):
            heappop(top_words)

    return [wc.word for wc in top_words]
```

## 考察

Pythonの比較演算子は、以下がある。


| 演算子 | 実装するメソッド | 注意 |
|:-:|:-:|:-:|
|<   | `__lt__` | 未実装時に、もし `比較相手.__gt__()`されていれば、それが使用される|
|<=   | `__le__`  | TODO: 調べる。 ⚠️ `__lt__` or `__eq__`ではない。|
|==   | `__eq__`  | TODO: 調べる。 |
|>=   | `__ge__`  | TODO: 調べる。 ⚠️ `__gt__` or `__eq__`ではない。|
|>   |  `__gt__` | 未実装時にもし `比較相手.__lt__()`定義されていれば、それが使用される|

パッと確認したところ、heapqの内部では、__eq__は使用されていなさそう。
heapの要素は、`__lt__()`さえ実装してあれば良さそう。




## Ref.

https://leetcode.com/problems/top-k-frequent-words

https://stackoverflow.com/questions/58714310/python-max-heap-of-strings

https://stackoverflow.com/questions/73483350/why-defining-only-lt-makes-operation-possible
WSL:Ubuntu環境でnodeのアップデートで詰まった

## 環境
osはwindows11でwsl2を用いて、Ubuntuを使用しています。

## 警告文が表示される
```terminal
npm v10.5.1 does not support Node.js v18.16.0. This version of npm supports the following node versions: `^18.17.0 || >=20.5.0`. You can find the latest version at https://nodejs.org/.
```
要約すると、
あなたのnpm v10.5.1はnode v18.16.0をサポートしてないよ。
だから、nodeのバージョンをv18.17.0かv20.5.0以上にアップグレードしてください。
って感じです。

## アップデートに詰まる
じゃあ、アップデートすれば終わりやんと思って
```terminal
sudo apt update && sudo apt upgrade
node -v
sudo apt-get install nodejs
node -v
```
で解決！
とはなりませんでした。

## 解決方法
wsl2環境下では、以下の方法で実施すると上手くアップデートでされます。
```terminal
sudo apt update && sudo apt upgrade
command -v nvm
```
まず上記のコマンドを入力して
command -v nvm　の戻りがnvmなら

```terminal
nvm ls
nvm install --lts
nvm ls
```
これでnode（安定版）にアップデートできます。
もし、command -v nvmコマンドを打って何も返ってこない場合は、
```terminal
sudo apt-get install curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
```
上記コマンドを入力してnvmをインストールしてください。
>参考記事
>[Node.js を Linux 用 Windows サブシステム (WSL2) にインストールする]( https://learn.microsoft.com/ja-jp/windows/dev-environment/javascript/nodejs-on-wsl)

## さいごに
今回アップデートの対処に1時間近くかかったのですが、
公式を最初に確認すれば直ぐに解決できる内容でした。
まずは公式ドキュメントを見てからQiitaとかZennで同様についての事象を探すのが、問題解決する最短ルートかなと思いました。
【Storybook】Storybookでエイリアス設定をしていないで困った話

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回はNext.jsを使って開発している時に困ったことについての備忘録として記事を作成しました。

# 困ったこと

Storybookを使用して開発していた時に、以下のエラーがでてStorybookの画面に作成したコンポーネントがでてこなくて困りました。

```
Module not found: Error: Can't resolve '@/components/'で困った話
```

# 結論

https://qiita.com/nkn-ms/items/fe99187897de45122fd8

Storybookの設定ファイルの`.storybook/main.ts`に以下を書き足すことで解決しました。

```ts
  "webpackFinal": async (config) => {
    if (config.resolve) {
      config.resolve.alias = {
        ...config.resolve.alias,
        '@': path.resolve(__dirname, '../src'),
      };
    }
    return config;
  },
```

# 何が起きていたか

Next.jsではaliasの設定をしていたので、`@`表記で認識することができましたが、
Storybookには何も設定していなかったので、`@`を認識することができない状態でした。

そのため、Storybookの設定に`@`のエイリアスの設定をしてあげることで解決することができました。

# おわりに

この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。

最後まで読んでいただきありがとうございました！

# 参考

https://qiita.com/nkn-ms/items/fe99187897de45122fd8
シェルスクリプトからSlackにメッセージを送る

シェルスクリプトからSlackへのメッセージを送る手法になります。
すぐできるので所要時間としては15分あればいけると思います。

## 事前注意

現在（2024年4月6日現在）、Slackでのカスタムインテグレーションは非推奨となっています。
以下のようなカスタムインテグレーションがありましたが、新しい機能がなく将来的には非推奨となり廃止される可能性があるので、今回はSlack Appを使用します。

- `Incoming Webhook`: 外部からSlackにメッセージを投稿できる
- `Outgoing Webhook`: Slackメッセージを外部に送信できる
- `Bots`
- `Slash Commands`

> Using legacy custom integrations is an outdated way for teams to integrate with Slack. Legacy custom integrations lack newer features and will be deprecated and possibly removed in the future. We do not recommend their use.

https://api.slack.com/legacy/custom-integrations#migrating_to_apps

## 準備

### 1. Slack Appの作成

Slack Appを作成し、Webhookを利用してSlackへの投稿を行います。
以下のクイックスタートドキュメントを参考に設定していきます。

https://api.slack.com/start/quickstart

`Go to Your Apps`からSlack Appを作成し、書いてある順番の通りに設定をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1953754/d25d8403-a6d5-a844-7880-4a1c0e7eeafd.png)

`Incomming Webhooks > Activate Incoming Webhooks`をONにし、`Add New Webhook to Wordspace`から通知したいチャンネルのWebhookを作成します。

![Capture-2024-04-07-100929.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1953754/f7541939-aed3-96ef-4362-334c49563fd5.png)

### 2. Slack通知テキストを作成

Slackに送信するメッセージのテキストを作成します。JSON形式で記述しますが、SlackのBlock Kit Builderを使用すると簡単に作成できます。

https://app.slack.com/block-kit-builder

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1953754/d72952c4-565c-2806-08af-faf2a0bed35b.png)

## 実装

以下のcurlコマンドを使用して、curlリクエストを送信します。

- JSONテキスト
- Webhook URL

を作成したものに変えていただければ問題ないです。

```bash
$ curl -X POST -H 'Content-type: application/json' --data JSONテキスト WebhookURL
```

## 参考

https://chariosan.com/2020/02/01/slack_webhook_shellscript/

https://zenn.dev/hotaka_noda/articles/4a6f0ccee73a18
includes()とべき乗

ES2016(ES7)から実装された2つの機能をまとめる

### TypedArray.prototype.includes()
配列内に指定した要素が含まれているかどうかを調べる。返り値はBoolean。
includesメソッドに第2引数を指定すると配列内で調べ始める位置をインデックス指定できる。また、負の整数を指定すると調べ始める位置を後ろから指定できる。

```javascript
const array = ['cat', 33, 'dog', 91, 30, 'bird'];

array.includes('dog');     // true
array.includes('dog', 2);  // true
array.includes('dog', 3);  // false
array.includes(91, -3); // true
array.includes(91, -2); // false
```

### べき乗計算(Exponentiation Operator)

べき乗計算はもともとMath.pow()で行なっていたが、新しく`**`でも行えるようになった。右結合なので、計算の順番に注意する。

[優先度と結合性](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_precedence#%E5%84%AA%E5%85%88%E5%BA%A6%E3%81%A8%E7%B5%90%E5%90%88%E6%80%A7)

```javascript
Math.pow(5, 2) // 25
5 ** 2         // 25

(5 ** 2) ** 3) // 15625
5 ** 2 ** 3    // 390625
```

#### 参考

https://qiita.com/ozoneboy/items/9c11ac3323ca94919052

https://qiita.com/nobuaki0331/items/ab8cce068d78cc579ad2
m2 Macでdocker-composeが動かせない

## 概要
Intelチップからm2に移行した際にdocker-composeが動かせなくなって沼ったのでその解決方法を書いておきます。

## 解決方法
私は以下でダウンロードを行うことで解決しました。
```
sudo curl -L sudo curl -L "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-darwin-aarch64" -o /usr/local/bin/docker-compose
```

リンクの部分は、https://github.com/docker/compose/releases の最新版のAssetsからダウンロードしたいダウンロードリンクをコピーして置き換えてください。
カスタムCSSでX(Twitter)「〇〇さんのリポスト」を消す・置き換える

:::note warn
2024/04/15
当方のスマホ版Xでは反映されないスタイルだったので修正しました。
上手く適用されない場合にチェックする修正箇所メモを追加しました。
:::
---

※ブラウザの拡張機能「Control Panel for Twitter」を使用してコントロールできる個所は扱いません。

https://qiita.com/BoEo_stms/items/4a2a72117456b970ae24


こちらの拡張機能では制御しきれない部分をStylusなどのカスタムCSSで消します。

※自分用に使っているものを紹介しているため、セレクタ指定がややいい加減です。問題が出ればその都度書き換えています。



## 〇〇さんのリポスト の表示を消す

```css
.r-18kxxzh:has(svg.r-??? path[d^="M4.75 3.79l4.603"])+div a {
    display: none;
}
/* svg.r-???の部分は 使用されてるカラーテーマによって変わります。 */
svg.r-14j79pv /* デフォルト(ホワイト) */
svg.r-115tad6 /* ダークブルー */
svg.r-1bwzh9t /* ブラック */
```
:::note warn
一番最初のクラス指定 `.r-18kxxzh` は汎用クラスとして使われているため、環境によってはスタイルが適用されないかもしれません。下記解説をご覧ください。
:::

この消し方だと、リンクを含む文字部分が消え、RTアイコンは残ります。

それさえいらない方ならセレクタはもっとシンプルになりますが、こうしているのにはワケがあります。

> 「あなたのRTを誰かがRTしました」という通知を邪魔に感じてる人も多い。
私は相手に通知をわざわざ送りたくないので、RTはRTだと分かったほうがいい。
RTするときは本人のページへ飛ぶなど一手間かけます。
一番楽なのは、ポストの日付リンクをクリックして生のポストに飛び、そこからRTすることらしい。

---

RTアイコンだけだと余白が気になるので、空いた部分に文字を付け足してみる。(SVGカラー: デフォルトの例)
```css
.r-18kxxzh:has(svg.r-14j79pv path[d^="M4.75 3.79l4.603"])+div::after
	{
		content:"誰かがリポスト";
		color: gray;
		font-size: small;
	}
```
「誰かがリポスト」の部分や、文字の装飾部分は自由。

最終的にこのような感じになります。

![240407誰かがリポスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660037/3b2c0fe6-6996-aeb0-291a-8220ea8fdc34.png)




---

### 解説

:::note
CSSのプロならもっといいクラス指定が出来ると思います。あくまで参考にどうぞ。
:::

「RTアイコンに使われている灰色指定のSVG」を含むDIV要素…、
その隣(兄弟要素)に、Aリンクで囲まれた目当ての「〇〇さんのリポスト」があります。


#### `.r-18kxxzh:has(...)`
- RTアイコンのSVGの **1つ上の親要素div** を指定したいのですが、付与されてるクラスはいずれも汎用で他にも使われてしまっているようです。X全体がそういうルールで組まれています。
  
  狙いたいdivに当てられてるクラスは次のとおり。

  ```css
  /* PC/SP共通クラス */
  .r-18kxxzh {flex-grow: 0;}
  .r-obd0qt {align-items: flex-end;}
  .r-1777fci {justify-content: center;}
  .r-1kb76zh {margin-right: 8px;}

  /* PC版X */
  .r-onrtq4 {frex-basis: 40px;}

  /* スマホ版X - 環境で異なる可能性あり */
  .r-a2axhi {flex-basis: 38px;}
  ```
  
この中から最も他に影響がないものを先頭の`.r-XXXXXX:has(...)`に指定できればこのカスタムCSSは完成に至るはずです…


 
#### `path[d^="M4.75 3.79l4.603"]`
- RTアイコンSVGのパス形状(前方一致)

#### `svg.r-14j79pv`
最初にも書きましたがご使用のカラーテーマによって変わります。
- `svg.r-14j79pv` - デフォルト(ホワイト)
- `svg.r-115tad6` - ダークブルー
- `svg.r-1bwzh9t` - ブラック

色変更に使われている`.r-XXX...`を指定しなくてもTLには問題ないのですが、通知欄に使用されているグリーンのRTアイコンに支障が出てしまいます。
※一番最初のURL指定で twitter.com 全体を指定しているためです。 

- 通知ページを除外できるならばこのカラー指定はいりません。正規表現などを使えば twitter.com/notifications を除外できるでしょうが、面倒なので私はやりませんでした。
- 他人のユーザーページは当然その人のRTしか存在しないため、カスタムCSS適用外でも構わない気もします。
  その場合はURL指定を完全一致にしてホームTLのみ適用でもいいですね。



## 通知欄からアイコンや名前を消す(過去の記事)

https://qiita.com/BoEo_stms/items/7ecafb4fd4f5aae06076

通知欄のカスタムは他にも
- いいね / RT / フォロー それぞれの通知を個別に消す。

これもまた次の機会にご紹介してもいいかもしれません。

手法は簡単で、SVGアイコンに使用されてる各種カラー、いいねなら赤、RTなら緑、フォローは青……を指定しているクラスを開発者ツールで見つけ出し、その上の階層のdivやarticleを非表示にするものです。

　
 
リプライ通知だけは欲しい場合に使えるのではないかと思ったのですが、リプライタブが既にありますね……。
通知をミュートすると、その期間の一切の通知は後で確認できない（記録に残らないっぽい）ので、記録はほしいけど今は見たくないという場合に有効かもしれません。
Minecraft Script APIのbetaが使えないときの対処法

# はじめに
`TypeScript`を用いてScriptを作成されている方に限ります.
以下に**TypeScriptの環境構築手順**が記された公式のドキュメントを添付しておきます.

https://learn.microsoft.com/en-us/minecraft/creator/documents/scriptinggettingstarted?view=minecraft-bedrock-stable

# @minecraf/server

https://www.npmjs.com/package/@minecraft/server?activeTab=versions

上記のサイトに現在公開されているAPIのVersion情報がまとめられています.

1. お求めのVersionをコピーしてください(例`1.12.0-beta.1.21.0-preview.20`)

1. `cotta`フォルダ内でターミナルを開き`npm install @minecraft/server@[Version]`を実行してください(例`npm install @minecraft/server@1.12.0-beta.1.21.0-preview.20`)
1. その後は**behavior_pack**の`manifest.json`を編集して完了です

``` manifest.josn
{
  "format_version": 2,
  "header": {
    "name": "[名前を設定]",
    "description": "[説明を記述]",
    "uuid": "[uuidを設定]",
    "version": [1, 0, 0],
    "min_engine_version": [1, 20, 70]
  },
  "modules": [
    {
      "description": "[説明を記述]",
      "language": "javascript",
      "type": "script",
      "uuid": "[uuidを設定]",
      "version": [1, 0, 0],
      "entry": "scripts/main.js"
    }
  ],
  "dependencies": [
    {
      "module_name": "@minecraft/server",
      "version": "1.12.0-beta" // <- ここを任意のversionに書き換える.
    }
  ]
}
```
Oracle LiveLabs:Autonomous Database 15 Minute Quick Startを試しました!

少し触れてみましたので結果をシェアします。
これなら小さな成功体験の蓄積が出来そうです。
皆様も宜しければぜひ！（サンプルクエリーも添付します）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/91ad3eb8-8996-294f-d3d8-7b920f7d98ab.png)


## Session Name
### Autonomous Database 15 Minute Quick Start

# Introduction
About this Workshop:
Autonomous Database provides a complete and easy to use platform for database applications. This workshop introduces deploying a database optimized for data warehousing workloads, integrating that warehouse with a data lake and then analyzing data using rich Oracle SQL capabilities.

## Objectives
In the next 15 minutes, you will:

* Deploy an Autonomous Database instance that is optimized for data warehousing workloads
* Use Autonomous Database tools to load data from object storage
* Use advanced SQL to uncover issues and possibilities

### URL
https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=928&clear=RR,180&session=2712688403158

### サンプルクエリー
```
select country, count(*) as total from 
CUSTOMER group by country order by total DESC;
```

<details><summary>実施結果</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/ca582a3b-af36-765b-772a-189cb2d3e2ca.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/4368afee-e240-5060-f046-130b3d3ede7c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/1f42c80c-65c3-aa47-60a1-8c0e70d86733.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/45f84980-ef4c-30e8-f4ea-410cf1f38d62.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/170f7a57-314a-1a78-6964-33b4452e6212.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/163ef427-c406-1c10-eb5f-0517f22eee72.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/ef4ebede-eacb-5e01-beac-bcd4d973b41d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/497db296-d3aa-63d0-25de-fdc5af962aa8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/1d56c894-b839-5768-0017-02ba3cf884be.png)
</details>

### 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160387/118745d4-1638-bc1c-537c-0457dd1ff3af.png)

以上です、宜しければぜひ！
KPT振り返りで気をつけていること

## はじめに

◆この記事は何？
KPT振り返りをするときに私が気をつけていることを紹介する記事です。

振り返りを活性化させる具体的な方法や考え方をお伝えします。

◆対象は？
・振り返りを有効に活用したい人
・振り返りのマンネリを打開したい人

## 先に結論
- 視座/視野/切り口を変える質問で、場をほぐしてマンネリ化を防ぐ
- Tryを挙げやすくするコツ
    - 義務付けないことでハードルを下げる
    - 仕事を減らすには？を考えて、まずは仕事量を減らす
    - 見つけ損にしないカルチャーで改善を挙げやすくする

## KPT振り返りとは

KPT振り返りは、振り返りフレームワークの一つです。
スプリントレトロスペクティブなどの振り返りのタイミングで使われます。

私は次のように解釈しています。

- Keep
    - 良かったところ
- Problem
    - 改善点
- Try
    - 試すこと

KPTの解釈は他にもあると思いますが、上記の解釈がうまくハマりました。
ポジティブな表現が良かったです。

## 「何も出ない」を避ける

KPT振り返りを続けていくと、マンネリ化することがあります。
人によっては何も挙げられない、ということもあります。

私がファシリテーションをするとき、次のような質問で場をほぐすようにしています。

### ①視座を変える質問
「個人の観点ではどうでしたか？」
「チームの観点ではどうでしたか？」
「組織で見たときにどうでしたか？」

など、視座を変えるような質問をします。

視座を変えてみることで、気づきが生まれやすくなります。

### ②視野を変える質問
「ユーザーから見たときはどうでしょうか？」
「ステークホルダーから見たときはどうでしょうか？」

など視野を変える質問をします。

### ③切り口を変える質問
「運用保守の観点ではどうですか？」
「テストアクティビティとしてはどうでしたか？」
「コーディングでうまくいったことはありましたか？」

など、振り返りの切り口を変えます。

## Tryが全く出ないことを避ける

私は「Tryが全く出なくなる」を失敗の一つと定義し、Tryが出やすくなるように工夫しています。

### ①Tryを出してくれることに感謝する

参加者がTryを挙げてくれたら、どんなに小さいことでも、効果が薄いと思うことでも、間違っていたとしても、まずはお礼を言います。

Tryを出してくれること自体が嬉しいこと、良いことと考えているためです。

### ②Tryが実行されないことを許容する

Tryを挙げても実行されないことは多々あります。

反対意見もあるかと思いますが、まずはこの状況を許容します。

「Tryを挙げても実行されない」などと否定してしまうと、Tryが挙がらなくなるためです。

実行されないTryがある程度溜まってきた場合は、優先度を考えて整理するようにします。
「Tryがあるけど実行できていない」という不安を取り除きます。

### ③成果の定量化を義務付けない

Tryを出しやすくするために、「Tryの結果、生産性がX%向上した」や「X時間の削減になった」などの効果の定量化を義務付けないようにしています。

成果の定量化を義務付けてしまうと、定量化しにくい改善が挙がりにくくなります。

また、定量化されると分かっていると発言しにくくなることもあります。

結果として定量化できるものは定量化して、Tryの結果を喜ぶようにします。

### ④仕事を減らすには？という切り口を入れる

「どうすればやることを減らせますか？」と質問するように心がけています。

改善しようとすると一時的に仕事量が増えることがあります。
まずは仕事を減らすことから考えるようにすることで、ポジティブに改善できるようにします。

仕事を減らす工夫の後に、「その分、プロダクトを良くするためにXXをやってみます」というさらにポジティブなTryが挙がることもよくあります。

### ⑤見つけ損にしない

「XXのような改善点がある」と改善点を見つけてくれた人に、なし崩し的に対応をお願いしないようにしています。

見つけ損になるためです。
見つけ損が当たり前のチームでは、次第にTryが挙がらなくなります。

Tryを挙げてくれた参加者の主体性を大事にしつつも、リーダーやマネージャーが考え、「チームのTry」として扱います。そしてチームを巻き込みながら推進していきます。

[「ソフトウェアテストのセオリー」](https://amzn.asia/d/fhLTk7X)では次のような一説があります。
> ソフトウェアに関する事象を発見した際に、その原因分析や対応を、なし崩し的に発見者に担当させることは行ってはいけません。これでは事象を多く発見した人が、より多くのタスクを抱え込むと言う「見つけ損」の状態になってしまい、組織内で事象を発見しようと言うモチベーションを損なうでしょう。

Tryを挙げてもらうためには、見つけ損にしない文化が重要です。

## おわりに

この記事では、KPT振り返りの実践例について紹介しました。

皆さんの振り返りの工夫も教えていただけると幸いです。

それでは。
【競プロ】dfsの行きがけ順と帰りがけ順の違い

毎回解説とかで、わからなくなるので、備忘録として記載。

## 帰りがけ順 (Post-order Traversal)
帰りがけ順では、あるノードvに対してその子ノードの探索（dfs）をすべて終えた後に、そのノードvを処理します。これをコードで表現すると、以下のようになります（depはノードを処理するための関数や値を保持する配列などを想定しています）

```python
def dfs(v, parent):
    ope = 0
    for child in children_of(v):
        if child != parent:  # 親ノード以外を探索
            ope = dfs(child, v)
    # 子ノードの探索が全て終わった後にノードvを処理
    dep[v] = ope
```

先に1番深い子から処理していく。最後に親ノードが処理される

## 行きがけ順 (Pre-order Traversal)
行きがけ順では、あるノードvをその子ノードを探索する前に処理します。これは、ノードvに最初に到達した時点で何らかの操作を行うことを意味します。コードでの表現は以下の通りです

```python
def dfs(v, parent):
    dep[v] = dep[parent] + 1  # ノードvを処理
    for child in children_of(v):
        if child != parent:  # 親ノード以外を探索
            dfs(child, v)
```

先に親ノードから処理していく。最後に末端の子ノードが処理される
EUC-JP環境下のGitで日本語を扱う



# 背景
UTF-8でないシステムでGitを使おうとすると、日本語が化ける。  
不便なので解決したい。  

:::note info
EUC-JPなシステムでの記述です。適宜文字コードを読み替えてください。  
Linux環境、git version 2.34.1 で動作確認済み。  
:::


# 結論
```
git config core.pager "LESSCHARSET=iso8859 less"  # diffとかlogとか（ページャ）
git config core.quotepath false                   # 日本語ファイル名
git config i18n.commitEncoding iso8859            # コミットメッセージ
```


# diffとかlogとか（ページャ）
## 現象
```
$ git diff
diff --git a/readme b/readme
index 4472dd6..82a7901 100644
--- a/readme
+++ b/readme
@@ -1,2 +1 @@
 Please read me.
 -<C6><C9><A4><F3><A4><C7><A4><CD>
 ```

## 対策
``` .gitconfig
[core]
  pager = "LESSCHARSET=iso8859 less"
```

## 備考
`nkf`を使って文字コードを変換する方法もあるけど、これが楽。  
あと、開発環境に`nkf`が入っていなかったり…ね。  


# 日本語ファイル名
## 現象
```
$ git status
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        readme
        "\245\352\241\274\245\311\245\337\241\274"

nothing added to commit but untracked files present (use "git add" to track)
```

## 対策
``` .gitconfig
[core]
  quotepath = false
```


# コミットメッセージ
## 現象
```
 $ git commit -m "初期コミット" --allow-empty
 Warning: commit message did not conform to UTF-8.
 You may want to amend it after fixing the message, or set the config
 variable i18n.commitencoding to the encoding your project uses.
 [main (root-commit) 397339b] 遜辿卒端促続促潺奪
 $ git log --oneline
  397339b (HEAD -> main) <C2><BD><C3><A9><C2><B4><C3><BC><C2><A5><C2><B3><C2><A5><DF><A5><C3><A5><C3><88>
```

## 対策
``` .gitconfig
[i18n]
  commitEncoding = iso8859
```

## 備考
`git log`, `git show`, `git blame`に使われる `i18n.logOutputEncoding`っていう設定項目もあるらしい。  
設定がなければ`i18n.commitEncoding`と同じ値が使われるようなので、 特段の理由がなければこちらの設定は不要。  

## 余談
コミット時の警告、会社の開発環境で出てたかな…  
何年も悩んでようやく辿り着いた答えなのに…  


# まとめ
リファレンスはちゃんと読もう。
Fedora39でminikube - クラスタと連携(1)

[Fedora39でminikube - インストールと起動(2)](https://qiita.com/intrajp/items/053509b11abcf97ce90d)からの続きです。

クラスタの状況をブラウザで確認するところまでやってみます。

```BASH
@fedora:~$ which kubectl
/usr/bin/kubectl
@fedora:~$ kubectl get po -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-5dd5756b68-6qrg5           1/1     Running   0             14m
kube-system   coredns-5dd5756b68-q96ww           1/1     Running   0             14m
kube-system   etcd-minikube                      1/1     Running   0             14m
kube-system   kube-apiserver-minikube            1/1     Running   0             14m
kube-system   kube-controller-manager-minikube   1/1     Running   0             14m
kube-system   kube-proxy-49nh9                   1/1     Running   0             14m
kube-system   kube-scheduler-minikube            1/1     Running   0             14m
kube-system   storage-provisioner                1/1     Running   1 (14m ago)   14m
fujiwara@fedora:~$ minikube kubectl -- get po -A
    > kubectl.sha256:  64 B / 64 B [-------------------------] 100.00% ? p/s 0s
    > kubectl:  47.56 MiB / 47.56 MiB [--------------] 100.00% 2.63 MiB p/s 18s
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-5dd5756b68-6qrg5           1/1     Running   0             16m
kube-system   coredns-5dd5756b68-q96ww           1/1     Running   0             16m
kube-system   etcd-minikube                      1/1     Running   0             16m
kube-system   kube-apiserver-minikube            1/1     Running   0             16m
kube-system   kube-controller-manager-minikube   1/1     Running   0             16m
kube-system   kube-proxy-49nh9                   1/1     Running   0             16m
kube-system   kube-scheduler-minikube            1/1     Running   0             16m
kube-system   storage-provisioner                1/1     Running   1 (15m ago)   16m
fujiwara@fedora:~$ minikube dashboard
🔌  ダッシュボードを有効化しています...
    ▪ docker.io/kubernetesui/dashboard:v2.7.0 イメージを使用しています
    ▪ docker.io/kubernetesui/metrics-scraper:v1.0.8 イメージを使用しています
💡  いくつかのダッシュボード機能は metrics-server アドオンを必要とします。全機能を有効にするためには、次のコマンドを実行します:

	minikube addons enable metrics-server	


🤔  ダッシュボードの状態を検証しています...
🚀  プロキシーを起動しています...
🤔  プロキシーの状態を検証しています...
🎉  デフォルトブラウザーで http://127.0.0.1:44283/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ を開いています...
```
ブラウザが開いて、クラスとの状況を確認できました。
aliasを実行しておきます。

```BASH
@fedora:~$ alias kubectl_m="minikube kubectl --"
```

永続設定をおこないます。

```BASH
@fedora:~$ vim ~/.bashrc

##For minikube
alias kubectl_m = "minikube kubectl --"
```

現在たち上がっているサービスを確認します。

```
@fedora:~$ kubectl_m get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   8d
```

ClusterIPサービスだけが立ち上がっています。

(参考)[minikube sgtart](https://minikube.sigs.k8s.io/docs/start/)
[Fedora39でminikube - nodeにssh接続(1)](https://qiita.com/intrajp/items/9dab0d53cded70ac3fd0)につづく