OmniAICreator/Qiita-1.07M huggingface dataset:
Laravel環境を作るときにLaravelのバージョンを指定する方法

以前、Laravel11でDocker(sail)環境を作る記事を作成しました。

https://qiita.com/curacao/items/892109e579c377b9b4b8

これは2024/10月現在最新のLaravel11を使いたかったので良かったのですが、今回はLaravel10を使用してくださいと指示され、どう指定するのかわからなかったので調べた備忘録になります。

# 結論
Laravelプロジェクトを作成するコマンドでバージョン指定するだけでよかった
```
composer create-project laravel/laravel hoge-app "10.*
```
上の例でいうと`10.*`の部分がバージョンを指定する方法です。
これだけで完了です。
10の部分を使いたい系統の数字に置き換えてください！

# インストールされたLaravelのバージョンを確認する方法
実際にインストールをしてみてきちんと指定したバージョンかどうかを調べてみます。
先ほどのコマンドで`hoge-app`ができているとしたときにまずはこのディレクトリに入ります。
```
cd hoge-app
```
次にバージョンの確認ですが、Laravelプロジェクトのディレクトリ内でできます。
先ほど移動して既にプロジェクトディレクトリの中にいると思うのでそこで
```
php artisan -V
```
をしてみます。
すると
> Laravel Framework 10.48.22
などとバージョンが表示されるのでこれで確認完了です！

# Laravel Sailを使っている時にバージョンの確認をしたい時
冒頭で紹介した記事のように既にLaravel Sailを使っていてバージョンを確認したい時には、単純にコマンドの`php`を置き換えるだけで大丈夫です
```
./vendor/bin/sail artisan -V
```
という感じです。
`sail`をエイリアスで登録している時には
```
sail artisan -V
```
だけで出来ます。

エイリアスの登録に関しては、

[Laravel11の開発環境をDockerで構築する方法 - ./vendor/bin/sailって打つの面倒くさい](https://qiita.com/curacao/items/892109e579c377b9b4b8#vendorbinsail%E3%81%A3%E3%81%A6%E6%89%93%E3%81%A4%E3%81%AE%E9%9D%A2%E5%80%92%E3%81%8F%E3%81%95%E3%81%84)

こちらのリンクから確認してください

# Laravelでどのバージョン選択するか
どのバージョンを使用するのが良いか簡単にわかるサイトがあるので、こちらを利用してみてください。

https://laravelversions.com/ja

期限なども書いているので、参考にしてみてください。

# 終わりに
基本的には最新バージョンがいいと思いますが、注意が必要な場合もあります。
バージョンアップで仕様がごろっと変わることもあるので、信頼できるサイトなども調べながら採択するのが良いかと思います。
PHPのバージョン要求に対し、サーバー側の提供バージョンが低いなどの問題だったり、リリースされたばかりのバージョンだと逆に問題ばかりというケースも別の物で見てきたので、リリース日やコミュニティの情報も参考にしてみてください。

https://laravel.com/docs/11.x/releases

https://readouble.com/laravel/11.x/ja/releases.html

https://readouble.com/laravel/11.x/ja/installation.html
Advocate Delhi High Court – Nidhi Rajoura & Associates

Legal challenges can be daunting, but with the right representation, they become manageable. At Nidhi Rajoura & Associates, we offer expert legal services to individuals and businesses seeking representation in the <a href="https://advocatenidhirajoura.com/"><b>Advocate Delhi High Court</b></a>. Our experienced team, led by Nidhi Rajoura, is committed to providing top-notch legal solutions that are tailored to meet each client’s unique needs. Whether you're dealing with civil, criminal, or corporate matters, our firm is here to ensure your legal rights are protected and your case is handled with care and precision.
ChatGPTのプロンプトの書き方

## 概要
- ChatGPTはOpenAIが開発した Generative Pre-Training(GPT:生成的事前学習)を利用した言語モデルです
- GPTモデルはバージョンアップのたびに、大量のテキストデータを学習しています


| バージョン | 学習データ量 |
|:------------:|----------------:|
| GPT-1      | 1.17億         |
| GPT-2      | 15億          |
| GPT-3      | 1750億        |
| GPT-4      | 推定100兆     |


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483440/336bae2a-a6a3-e331-8507-fd6bc3ea85da.png)
- 最新のGPT-4oではGPT-4よりも多いデータ量で学習されているとされています
(様々な意見あり)
- そのため、多様で自然な文章を生成することができます

## 📝プロンプトを書く時に意識すること
私がChatGPTでプロンプトを書くときに一番意識していることは
### 「**どうやったら伝わるか**」
<br>です。
仕事を引き継ぐ際に後輩へ「その業務はどんな背景があって、何が課題で、どこをどうすれば完成なのか」などを説明してから頼むのと同様に、ChatGPTに対しても詳細な情報を与えることで、より正確な回答を得ることができます。
### **伝え方の工夫が重要です！**
ChatGPTは質問の仕方によって答え方が全く異なります。
この記事では参考になりそうなプロンプトを紹介しているため、ぜひ、これを機会にChatGPTを利用してみてください！

## 📄プロンプト例
### GoogleSpreadSheetで株価を取得するツールを作ってほしいとき
```
# 命令
GASを使って株価を取得して設定値よりも低い値になったらメールで通知するツールをGoogleSpreadSheetで作りたいです。
以下の条件を見てコードを作ってください。

# 条件
・1行目はヘッダーでA列から順に「株名」「設定額」「現在額」「前日額」となるようにしてほしいです。
・A列は株名が入っていて、それに対応する株価をC(実行時の額)、D(実行時の1時間前の額)、B列には設定値を入力するようにしたいです。
・取得してくるURLは`https://finance.yahoo.co.jp/quote/`でURLの後ろに株名に対応する銘柄コードを書くことで対象のページを開くことができます。
・URLを開いたときの<span class="StyledNumber__value__3rXW"></span>で囲われてるデータが株価になるので、そのデータを取得してきてほしいです。
・メール送信関数を実行時に現在額が設定額より低い値になったかどうか判断し、低くなった場合のみメールを送信するようにしてください。
・メールは「testtest@gmail.com」に送信してください。トリガーはこちらで設定します。
```

このようにプロンプトを工夫することで、具体的なツールを簡単に作成できます。

## 🎯プロンプト作成のポイント 

### 基本構成

プロンプトは以下の構成を意識すると良いです。

1. **命令文**: ChatGPTに何をしてほしいのかを明確に指示します。
2. **条件**: 命令を実行する際の詳細な条件を記載します。

また、マークダウン形式を活用するとプロンプトが見やすくなり、ChatGPTも理解しやすくなるため、回答の精度が高くなる傾向にあります。

https://note.com/d1c_makke372/n/n6799673f0ad8

#### ⚠️注意点 
- **社外秘の情報は含めないようにしましょう。**
- 出力例があると、より精度の高い結果が得られます。

#### 以下では私がよく使用しているプロンプトを分類して、<br>例題を載せているので参考にしてみてください。

## 📊プロンプトの分類について
私がChatGPTで利用しているプロンプトを分類すると以下の4つになります。それぞれで記事を作成しているのでそれぞれのシーンに分けてプロンプトの参考にしてみてください。
それぞれの項目ごとに記事を書きました。
実際にChatGPTで利用できるプロンプトになっているので、試しに使ってみてください:relaxed:

### ❓質問・解決型プロンプト
疑問に感じたこと、自分の知識では解決できないようなことを知りたいときによく利用します。

https://qiita.com/hibt_29/private/58a74c477e7cadaedb88

（例）
- 坂本龍馬は何をした人ですか？
- 添付のエラーの解決方法を教えてください。
- Pythonの`print(f'test: {test}')`とは何か説明していただけますか？

### 🧑‍💻指示・作業型プロンプト
やろうと思えば自分でできるが、めんどくさいと感じる作業のときによく利用します。

https://qiita.com/hibt_29/items/24e2fc1b042c642695b2

（例）
- ～～というメールが来たのでその返信文を考えてください
- 添付の文章を要約してください
- 以下の文章をだ・である調に変換してください

### 💡創作・発案型プロンプト
ブレインストーミング的にアイデア出しをしたいときやイメージ図をデザインしてほしいときによく利用します。

https://qiita.com/hibt_29/items/769309ee705ab0ccd0bf

（例）
- windowsで動いている環境をすべて洗い出したいです。洗い出すべき情報をすべて書き出してください
- 〇〇(製品名)を売り出すときのキャッチコピーをいくつか考えてください
- 社内で会議をしている図をデザインしてください
<img width="250" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483440/8467a9d6-0541-946f-15a9-ae94f3103423.png">

### ➗計算型プロンプト
複雑な数式の解法(課金する必要あり)や単純な計算をしてほしいときに使いますが、信ぴょう性が低いためあまり利用しません
- $∫e^xsinx\hspace{5px}dx$ の解法を教えてください
- `[231,531,642,236,743,752,234,643]`このリストの平均、標準偏差、分散を計算してください

### ✅まとめ
ChatGPTを活用するには、具体的で明確なプロンプトが重要です。本記事で紹介したプロンプト作成のポイントや例を参考にして、さまざまな場面で活用してみてください！ 🤖

#### 📚付録：プロンプト列挙してみた

https://qiita.com/hibt_29/items/9401c5a6891ef7a17e43
Swift: Pythagoras 数の計算

## プログラム

```swift:pythagoras.swift
// -----------------------------------------------------------------
//
//	pythagoras.swift
//
//						Oct/17/2024
// -----------------------------------------------------------------
import Foundation

print("*** 開始 ***")

var aa: [Double] = []
let nmax = 50 
for xt in 1...nmax{
	let xt2 = xt * xt
	for yt in xt...nmax{
	let yt2 = yt * yt
	let xtyt2 = xt2 + yt2
	let kt = Int(sqrt(Double(xtyt2)))
	let kt2 = kt * kt
	if (xtyt2 == kt2){
		let ratio = Double(xt) / Double(yt)
		if ( !aa.contains(ratio)){
			print(xt,yt,kt,ratio)
			aa.append(ratio)
			}
		}
	}
}

print(aa.count)

print("*** 終了 ***")
// -----------------------------------------------------------------
```

## 実行結果

```text
$ swift pythagoras.swift 
*** 開始 ***
3 4 5 0.75
5 12 13 0.4166666666666667
7 24 25 0.2916666666666667
8 15 17 0.5333333333333333
9 40 41 0.225
12 35 37 0.34285714285714286
20 21 29 0.9523809523809523
28 45 53 0.6222222222222222
8
*** 終了 ***
```

## 関連情報

[Ubuntu 24.04 で Swift を使う](https://qiita.com/ekzemplaro/items/d0bfd88f873276f97a31)
Microsoft 認定試験 DP シリーズ全制覇の道

NTTデータ先端技術株式会社の原田です。

2024年10月16日に全制覇となりました Microsoft 認定試験 DP シリーズの受験記となります。

## はじめに
空白期間を挟んで足掛け2年ちょっと、PL < DP < AZ と DP シリーズもそんなに情報多くないと思いますのでご参考になれば。
2022年の内容はうろ覚えです…

## DP-300: Administering Microsoft Azure SQL Solutions
* 受験日 : 2022年7月26日
* 試験会場 : 大宮NSDビルテストセンター
* 結果 : 合格
* 得点 : 756 (合格点 : 700)
* 勉強方法 : ESI 模擬試験

DP-300 は純粋なリレーショナルデータベースとしての SQL Server の試験になります。
この試験では SQL Server の知識が問われますので Azure の知識だけでは届かないのがポイントです、振り返ってみると DP シリーズは全般的にそのような傾向があると思います。
あと対象サービスが SQL Database ・ SQL MI ・ SQL Server on VM と3つあり、それぞれに指向が全く異なるので意外と勉強範囲は広いです。
が知識問題の割合が大きいのでしっかり座学をしておけば行けるんじゃないかと。

## DP-203: Data Engineering on Microsoft Azure
* 受験日 : 2022年8月30日
* 試験会場 : 大宮NSDビルテストセンター
* 結果 : 合格
* 得点 : 803 (合格点 : 700)
* 勉強方法 : ESI 模擬試験

DP-203 はリレーショナルデータベースじゃない方 (かつ NoSQL でもない) のデータベースサービスの試験になります、乱暴に言うと Spark です。
学習ガイドには対象サービスがいくつか並んでいますが基本は Synapse です、Synapse 中心に他のサービスが周りを固めるようなイメージで学習すると理解が速いです。
あと DP-600 (以前は DP-500) があるのでこの試験はインフラがメインです、かつ DP-300 と同じく知識問題の割合が大きいので座学で挑んで行けると思います。

## DP-100: Designing and Implementing a Data Science Solution on Azure
* 受験日 : 2024年8月30日
* 試験会場 : 秋葉原昭和通り口テストセンター1
* 結果 : 合格
* 得点 : 725 (合格点 : 700)
* 勉強方法 : Microsoft Learn + ESI 模擬試験

さてここから2024年なので記憶も鮮明です。
この試験はデータサイエンティスト (データを分析して有用な洞察を引き出し、ビジネスや研究の意思決定を支援する専門家) 向けで、本質的には私のようなインフラエンジニア向けではないです。
そのため機械学習の理論や実装を問う設問がバンバン出てきます、ある程度想定はしていたものの結構な割合でしたので苦労しました。がここでも Learn がお助けくださいましたこれで潜り抜けたと言っても過言ではないです。
ただ Learn は代償として時間を捧げなければなりませんのでお気を付けください、私は最後まで手応え掴めないまま終了を迎えました。

## DP-420: Designing and Implementing Cloud-Native Applications Using Microsoft Azure Cosmos DB
* 受験日 : 2024年9月13日
* 試験会場 : 秋葉原昭和通り口テストセンター1
* 結果 : 合格
* 得点 : 742 (合格点 : 700)
* 勉強方法 : Microsoft Learn + ESI 模擬試験

DP-420 は Cosmos DB に特化した Specialty 試験になります、DP-300 でもなく DP-203 でもない NoSQL データベースですね。
先にお伝えしておきますと Specialty 試験では Learn が使えないようです、私はそれを知らず試験冒頭しばらく Learn の呼び出し口を探してました。
こちらは単一サービスの試験ですので内容は狭く深くです、開発系の設問も出てきますが言語が .NET でしたので私は助かりました。(.NET の開発者経験あり)
.NET の経験があって Json が読めれば勉強は座学でも行けますね、経験がない場合はインフラと言語の両方を追わないといけないので大変かも。

## DP-600: Implementing Analytics Solutions Using Microsoft Fabric
* 受験日 : 2024年10月16日
* 試験会場 : 秋葉原昭和通り口テストセンター1
* 結果 : 合格
* 得点 : 775 (合格点 : 700)
* 勉強方法 : Microsoft Learn + ESI 模擬試験

最後に合格したての DP-600です、こちら Microsoft Fabric とネーミングついてますが実際はほぼ Synapse 使った開発スキルを問う試験になります。
Fabric は Power BI に Synapse をくっ付けた仕立てのサービスですが、Power BI 側の設問は3割もなくひたすら Synapse ノートブックと戦い続けました。
私は Learn の支援を受けながらなんとか時間ギリギリって感じでしたが、この試験に関しては Synapse ノートブック使用した実習形式の勉強を集中的にこなした方が良いですね。設問の情報量が多いのでパッと見てポイントを掴めるかどうかで消費時間が大きく変わると思いました。
そんなこんなでいつもなら1周は回る見直しもできず、残り30秒でポチっと終了と言うところまで追い込まれた試験でした。

## おわりに
DP シリーズ終わっての感想、要求スキルの半分は開発系ですね特に機械学習と Synapse (Spark)。
インフラエンジニアとしてはなかなか厳しいものもありましたが、逆にアドオンスキルとしては面白そうだなと思いました。
次は SC シリーズ全制覇を目指します。
DatabricksのカタログエクスプローラからGenieにクイックアクセス

Databricksワークスペースのホーム画面に通知がありました。

![Screenshot 2024-10-17 at 16.43.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/adc225ed-afca-3e63-db12-3f3ff198cbc5.png)

> **カタログエクスプローラへのGenieの導入**
>
> Unity Catalogテーブルのサンプルデータタブに"Genieに聞く"ボタンを追加しました。このボタンによって、そのテーブルに対するGenieスペースを起動し、ユーザーは当該テーブルのデータに関する情報を質問するために自然言語を活用できます。

早速、カタログエクスプローラにアクセスして、テーブルの**サンプルデータ**タブにアクセスします。すると、燦然と輝く**Genieに聞く**ボタンが！

![Screenshot 2024-10-17 at 16.40.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/087e3d6e-5ebe-35e3-af3c-0ff39ffd20e8.png)

こちらをクリックすると、そのテーブルのみが設定されたGenieスペースが表示されます。

![Screenshot 2024-10-17 at 16.40.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8a4a40d1-4a7d-1658-272d-3f21398b77a0.png)

あとは日本語で色々問い合わせます。

![Screenshot 2024-10-17 at 16.40.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/699ebe56-1878-6450-b8b4-0ec02f2ba1ea.png)
![Screenshot 2024-10-17 at 16.42.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/832a16fb-93cc-2301-868a-0b785008d527.png)

一通り動かしましたが、こちらのGenieスペースは通常のものとは仕様が異なります。

- 指示の追加やテーブルの追加、変更などスペースのカスタマイズはできません。
- Genieスペースのファイルはワークスペースには表示されません。[ダッシュボードのコンパニオンGenie](https://qiita.com/taka_yayoi/items/a341abb5dd0cb191c589)と同様に、テーブルのコンパニオンGenieという位置付けだと言えます。
- 履歴は保持されます。

ですので、特定のテーブルに対してクイックに問い合わせを行いたい場合に使うというユースケースになると思います。本格的に分析する場合には、個別にGenieスペースを作成した方が良いです。

ただ、より気軽にGenieを利用できる機能ですので、是非ご活用ください！どんどん、Genieに聞いちゃってください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)
CompornentがあるGameObjectのみを検索する方法

最近まで知らなかったので備忘録として記事にしました。

3Dや2DのMAP作成時に、負荷が高いのでRigidbodyやColliderだけ消したいけどオブジェクトが多すぎて全選択に時間がかかるという時は、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3723719/ee13335b-1c9c-f1bc-19c5-abba06d68bb2.png)

このように、Hierarchyの検索枠から
```t:Collider``` ```t:Rigidbody```
と検索すればt:〇〇のConpornentが入ったGameObjectのみを表示してくれます。
この状態でShift + Aを押せば特定のConpornentのみ一気に消せてしまうというわけです。

Hierarchyに限った話でもなく、Projectの検索項目でも同じ事ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3723719/afe76f15-141b-12bf-7fd5-5df4939aa59d.png)
こっちの方がよく知られてるかもしれません。

記事にするほどでもないかもしれませんが、Unityの標準機能なのにあまり知られてなさそうだと思い作成させていただきました。

既にあったら許してください。
短くなってしまいましたが、何かの役に立てば幸いです。
@sidebase/nuxt-auth の8つの特徴

`@sidebase/nuxt-auth`は、**Nuxt 3**アプリケーション向けの認証ライブラリで、サーバーサイドとクライアントサイドで簡単に認証機能を統合できるように設計されています。このライブラリは、認証プロバイダとの連携やセッション管理を簡単に行えるようにしており、開発者が複雑な認証システムをシンプルに実装できるようサポートします。

### 主な特徴

1. **Nuxt 3との統合**:
   - **Nuxt 3**のネイティブサポートを活用し、`@sidebase/nuxt-auth`はNuxtモジュールとしてシームレスに統合できます。
   - Nuxtのプラグインやミドルウェアを使用して、認証ロジックを簡単に追加可能です。
2. **簡単なセットアップ**:
   - 設定がシンプルで、数行のコードで認証システムをセットアップできます。
   - プロバイダー（OAuth、Google、GitHubなど）をすぐに導入できるプリセットが豊富です。
3. **セッション管理**:
   - `nuxt-auth`はセッションベースの認証に対応しており、認証されたユーザーの状態を効率的に管理します。
   - サーバーサイドとクライアントサイドのセッションを管理し、持続可能なログイン状態を維持します。
4. **多様な認証プロバイダ**:
   - GoogleやGitHubなどの主要なOAuthプロバイダーとの連携をサポートしており、外部の認証サービスを簡単に導入可能です。
   - 独自の認証プロバイダも柔軟に追加可能です。
5. **認証ガード**:
   - ルートベースの認証ガードを提供しており、特定のページやAPIルートを認証が必要なユーザーのみに制限することが可能です。
   - ルートミドルウェアを使用して、認証されていないユーザーのアクセスを制御します。
6. **APIサポート**:
   - Nuxt 3のサーバーファイルやAPIルート（server/api）で、認証の検証や保護を簡単に実装できます。
   - 認証済みのユーザーだけがAPIにアクセスできるよう、サーバーサイドで認証情報を検証します。
7. **Vue 3とComposition APIのサポート**:
   - `@sidebase/nuxt-auth`は、Vue 3のComposition APIと統合されており、認証状態やユーザー情報をコンポーネント内で簡単に管理できます。
   - Reactivityを活用して、認証の状態に応じたコンポーネントの動作を動的に制御できます。
8. **セキュリティ機能**:
   - トークンの暗号化やセッションの保護など、セキュリティに配慮した機能が組み込まれています。
   - CSRF保護やクッキーベースのセッション管理にも対応。

### まとめ

`@sidebase/nuxt-auth`は、Nuxt 3アプリケーションで認証機能を簡単かつ安全に実装できる強力なライブラリです。OAuthのような外部プロバイダーを使った認証や、セッション管理、ルートの保護など、認証に必要な機能が充実しており、スケーラブルな認証ソリューションを提供します。
composerのバージョンを下げる

以下の記事を参考にwindows11にComposerをインストールしたが、バージョンが高かったため下げた時のメモ
https://weblabo.oscasierra.net/php-composer-windows-install/

```bash
composer self-update 1.10.13
```
このコマンドだけでできた

```bash
>composer -V
Composer version 2.8.1 2024-10-04 11:31:01

>composer self-update 1.10.13
Upgrading to version 1.10.13 (stable channel).

Use composer self-update --rollback to return to version 2.8.1

>composer -V
Composer version 1.10.13 2020-09-09 11:46:34
SwiftUIで複数の条件に基づいてアラートを表示する簡単な方法

SwiftUIでは、通常1つの`Bool`値を使用してアラートを表示しますが、アプリケーションによっては複数の条件に基づいてアラートを表示する必要があることがあります。この記事では、複数の条件をシンプルに扱いながら、1つのアラートとして表示する方法を紹介します。

## アラートの基本的な仕組み

SwiftUIでは`alert`モディファイアを使ってアラートを表示します。このモディファイアは、`@Binding<Bool>`を必要とし、`true`になるとアラートが表示されます。しかし、2つ以上の条件に基づいてアラートを表示したい場合、これを1つの`Bool`として扱う方法が必要です。

### 実装の概要

2つの条件 `conditionA` と `conditionB` のどちらかが `true` になった場合にアラートを表示し、どちらも `false` になればアラートを非表示にするようにします。

## コード例
```swift
import SwiftUI

struct ContentView: View {
    @State private var conditionA = false
    @State private var conditionB = false

    // 2つの条件をまとめて1つのBool値として扱う
    var shouldShowAlert: Bool {
        return conditionA || conditionB
    }

    var body: some View {
        VStack {
            Button("Condition A True") {
                conditionA = true
            }
            .padding()

            Button("Condition B True") {
                conditionB = true
            }
            .padding()

        }
        .alert(isPresented: .constant(shouldShowAlert)) {
            Alert(
                title: Text("アラート"),
                message: Text("Condition A または Condition B が true です"),
                dismissButton: .default(Text("OK")) {
                    conditionA = false
                    conditionB = false
                }
            )
        }
    }
}
```
## コードのポイント

### 1. `shouldShowAlert`プロパティ
```swift
var shouldShowAlert: Bool {
    return conditionA || conditionB
}
```
この計算プロパティは、2つの`Bool`値を組み合わせて1つの値にまとめています。`conditionA`または`conditionB`が`true`の場合、`shouldShowAlert`が`true`になります。

### 2. `.constant()`の使用
```swift
.alert(isPresented: .constant(shouldShowAlert)) {
```
SwiftUIの`alert`モディファイアは`@Binding<Bool>`を必要としますが、計算プロパティは直接バインディングできないため、`.constant()`を使ってバインディングを作成しています。

### 3. アラートの解除
```swift
dismissButton: .default(Text("OK")) {
    conditionA = false
    conditionB = false
}
```
アラートのOKボタンを押すと、`conditionA`と`conditionB`を`false`にしてアラートを非表示にします。

## 応用のアイデア

このテクニックは、複数の条件に基づいてアラートを表示したい場合に非常に便利です。以下のような応用が考えられます：

- **複数のエラーメッセージを一度に表示**: エラーチェックを複数行い、その結果に基づいてアラートを表示する場合。
- **複数の条件に応じたアクション**: 条件ごとに異なるメッセージやアクションを表示したい場合に応用可能です。

## まとめ

この方法を使えば、複数の条件に基づいてアラートを簡単に表示することができます。SwiftUIでアラートを管理する際には、1つの`Bool`にまとめてシンプルにすることで、コードの可読性とメンテナンス性が向上します。ぜひ、あなたのアプリでも活用してみてください！
MongoDB



## MongoDBにおける日付の比較

MongoDBでは、日付を扱う際にさまざまな演算子や機能を使用して、日付の比較や範囲検索を行うことができます。以下に、日付に関する主要な演算子とその使用例を示します。

**** 日付の比較演算子

- **$eq**: 指定した日付と等しい値と一致します。
  
- **$ne**: 指定した日付と等しくないすべての値と一致します。
  
- **$gt**: 指定した日付を超える値と一致します。
  
- **$gte**: 指定した日付以上の値と一致します。
  
- **$lt**: 指定した日付未満の値と一致します。
  
- **$lte**: 指定した日付以下の値と一致します。

- **$in**: 配列内の指定した日付のいずれかと一致します。

- **$nin**: 配列内の指定した日付のいずれとも一致しません。

## 日付範囲の検索

MongoDBでは、特定の日付範囲内のドキュメントを検索するために、上記の演算子を組み合わせて使用することができます。以下は、特定の日付範囲内でドキュメントを取得する例です。

```javascript
// 2022年1月1日から2022年2月10日の間に作成されたドキュメントを検索
db.products.find({
  createddate: {
    $gt: ISODate("2022-01-01"),
    $lt: ISODate("2022-02-10")
  }
});
```

このクエリは、`createddate`フィールドが指定された範囲内にあるドキュメントを取得します。

## 月や年での比較

特定の月や年でドキュメントを検索する場合は、MongoDBの集約パイプラインを使用することが効果的です。以下は、特定の月に更新されたドキュメントを検索する例です。

```javascript
// 3月に更新された製品を検索
db.products.aggregate([
  { $addFields: { month: { $month: "$updateddate" } } },
  { $match: { month: 3 } }
]);
```

また、特定の年でフィルタリングする場合は、次のように`$year`演算子を使用します。

```javascript
// 2022年に提出された料金書類を検索
db.student.find({
  $expr: {
    $eq: [{ $year: "$FeeSubmission" }, 2022]
  }
});
```

## 日付オブジェクトの操作

MongoDBでは、ISODate()関数を使用して日付オブジェクトを作成し、その後さまざまな演算子で操作できます。これにより、データベース内の日付データを柔軟かつ効率的に扱うことが可能です。
【Ruby】継承とmoduleの使い分け

# はじめに
こんにちは、progateでRubyを勉強したのち「ゼロからわかるRuby超入門」を勉強しています。
その中でもスーパークラスの要素を子クラスに引き継ぐ継承と、`module`の両方を勉強すると、「`module`なくても継承だけでよくない？」と思うようになったのでその違いや使い分けについて本日は解説していきたいと思います

# 継承とは
継承は、あるクラスが他のクラスの属性やメソッドを「引き継ぐ」仕組みです。
サブクラス (子クラス) がスーパークラス (親クラス) のすべてのメソッドや定数を継承し、必要に応じてオーバーライドすることができます。
継承の特徴は以下の通りです
* Rubyでは1つのクラスしか継承できない
* クラス間に明確な親子関係があり、サブクラスはスーパークラスのすべての機能を継承する
* サブクラスで親クラスのメソッドを上書きできる(オーバーライド)
* スーパークラスのメソッドや定数が引き継がれる
※ここで、注意点としてインスタンス変数は自動で引き継がれません。スーパークラスのインスタンス変数を引き継ぐためには`super`メソッドを使用する必要があります
```ruby:instance_variable.rb
class Animal
  def initialize
    @name = "Animal"
  end

  def name
    @name
  end
end

class Dog < Animal
  def initialize
    super  # Animalクラスのinitializeを呼び出す
    @breed = "Bulldog"
  end

  def breed
    @breed
  end
end

dog = Dog.new
puts dog.name  # => "Animal"
puts dog.breed  # => "Bulldog"
```

`super`を使用することで、本来はスーパークラスから継承されていないインスタンス変数を子クラスに引き継ぐことができます


では、継承はどのような場合に使うのでしょうか
* 自然な親子関係があるとき
たとえば、「犬」や「猫」などの動物が「動物」という概念に含まれるとき。
* 属性を共有する必要があるとき
親クラスが持っているデータや振る舞いをサブクラスが「必ず」持っているとき

継承という名の通り、同じようなものである必要があるのでパンとスマホとか全く関係ない要素同士の場合は継承をしない方がよいということです。
```ruby:inheritance.rb
class Animal
  def speak
    "動物の鳴き声"
  end
end

class Dog < Animal
  def speak
    "ワンワン"
  end
end

class Cat < Animal
  def speak
    "ニャーニャー"
  end
end
```
この例では、Animal クラスは speak という共通のメソッドを持っており、それを Dog と Cat というサブクラスが「それぞれの鳴き声」に合わせてオーバーライドしています。
<strong>「犬は動物である」</strong>という明確な親子関係があるので、継承は理にかなっています。

# `module`とは
`module`は、機能 (メソッド) の「共有」を目的としています。複数のクラスで同じ機能を使いたい場合に、継承ではなく`module`をMix-inすることで、その機能を「借りる」形で利用できます。
これも上にならって特徴を見てみましょう。
* 複数の`module`を1つのクラスに取り込むことができる
* クラスの階層構造を作らない(親子関係がない)
* 複数のクラスに共通の機能を提供するのに適している
* `module`はメソッドのみを提供し、インスタンス変数を引き継がない
※基本的にはインスタンス変数を引き継がないのですが、`module`を使ってインスタンス変数を引き継ぐようにふるまわせることも可能です
```Ruby:instance_valuable.rb
module Animal
  def initialize(name)
    @name = name
  end
end

class Dog
  include Animal
end

dog = Dog.new("Rex")
p dog  # => #<Dog:0x000000012d03bff0 @name="Rex">
```

`dog`を確認すると`@name`というインスタンス変数を持っている(引き継いでいる)ことがわかります。
なので、性質としてはインスタンス変数を引き継ぎませんが、操作によって引き継がせることは可能ということです。

では`module`を使う場面についても見ていきましょう
* 複数のクラスに共通のメソッドを追加したいとき
そのメソッドはクラス間で共通していても、クラス同士の親子関係が必要ない場合。
* 機能を柔軟に追加したいとき
継承は1回だけしかできませんが、モジュールなら複数の機能を柔軟に追加できます。

親子関係が必要なく、複数のクラスで使いたい場合に使えそうだなということがここからの記述でわかりますよね。
```ruby:module.rb
module Swimmable
  def swim
    "泳いでいます"
  end
end

class Dog
  include Swimmable
end

class Human
  include Swimmable
end
```
ここでは、Dog と Human が 「泳ぐ」という共通の機能 を持っていますが、<strong>「犬は人間である」</strong>という関係はありません。
そこで、モジュールを使って `swim` メソッドを共有しています。
クラス同士に親子関係は必要なく、ただ機能を共有したいときにモジュールを使います。

# まとめ
いかがだったでしょうか。ややこしいですが、属性の違いについて着目するということが重要であると思います。
上記の内容を簡単にまとめておきます
### 継承を使うべきケース
* クラス間に明確な親子関係があるとき（「犬は動物である」など）
* サブクラスが親クラスの基本的な機能を拡張したりオーバーライドする必要があるとき

### `module`を使うべきケース
* 親子関係がない複数のクラスに共通の機能を提供したいとき（「犬は人間ではないが、どちらも泳ぐことができる」など）。
* 複数の機能を自由に追加したいとき（モジュールは複数同時に include できる）

インスタンス変数の引継ぎについては継承と`module`どちらもできるのでそれがどちらかを使う理由にはならなそうです。

最後に本記事はコメントにより一部修正しました。
独学であるため、このようなコメントはとても励みになります。
これからも記事投稿していくので何かあればコメントいただけると幸いです。
3D レーザー スキャナーの利点と課題

タイトル案: 「3Dレーザースキャナーと構造光3Dスキャナーの長所と短所：簡潔な分析」

3Dレーザースキャナーと構造光3Dスキャナーは、どちらも高精度の3Dモデリングを可能にする強力な技術です。それぞれ異なる長所と短所があり、用途に応じて使い分けることが重要です。この記事では、これら2つの技術の主な特徴を簡潔に分析します。

**1. 3Dレーザースキャナーの長所**

1. **高精度**
   3Dレーザースキャナーは、レーザーを利用して物体の形状や詳細を正確に捉え、特に複雑な構造や精密な測定に最適です。

2. **高効率**
   広範囲のデータを素早く収集できるため、建築測量や工業設計などで大幅に効率を上げることができます。

3. **非接触測定**
   デリケートな物体を損傷することなく、正確なスキャンが可能です。文化財や芸術作品の保護において、この特性は重要な役割を果たしています。
![86BEEA7B-E1BF-4767-AB18-6A150A0E57FC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3824290/0c71673f-4c1b-34e2-cb55-853a68476ad3.png)

**2. 構造光3Dスキャナーの長所**

1. **高速度**
   構造光スキャナーは、光を投影してそのパターンの変形を解析することで、物体の3D形状を短時間で取得します。特に小型の物体や近距離でのスキャンにおいて非常に高速です。

2. **コスト効率**
   構造光スキャナーは、一般的に3Dレーザースキャナーに比べて低コストです。そのため、予算に制約があるプロジェクトや中小企業向けの選択肢として適しています。

3. **優れた表面ディテール**
   特に明るい環境や安定した光条件下で、表面のディテールを非常に正確に捉えることができます。これは製品デザインや顔のスキャンにおいて大きな利点です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3824290/0102746e-0d33-2ff2-103c-6dcc1bec05f2.png)
https://www.revopoint3d.jp/pages/all-in-one-3d-scanner-miracoplus

**3. 3Dレーザースキャナーの短所**

1. **高コスト**
   高精度な3Dレーザースキャナーは、構造光スキャナーよりも設備コストが高く、中小企業や個人にとっては負担になる場合があります。

2. **表面特性の影響**
   反射性や透明な表面は、スキャンの精度に影響を及ぼし、追加の表面処理が必要になることがあります。

3. **データ処理の複雑さ**
   スキャン後のデータは大容量で、ノイズ除去やモデルの整合などの複雑な処理が求められます。

**4. 構造光3Dスキャナーの短所**

1. **外光の影響**
   構造光スキャナーは、外部の光源に非常に敏感で、明るい日光下では精度が低下する可能性があります。そのため、室内や光環境が安定している場所での使用が推奨されます。

2. **スキャン範囲の制限**
   構造光スキャナーは、一般的に小さなオブジェクトや短距離のスキャンに適しているため、大規模な構造物や遠距離の対象には不向きです。

**5. 結論**

3Dレーザースキャナーと構造光3Dスキャナーは、それぞれ異なる強みと限界があります。高精度で広範囲をスキャンする必要がある場合は3Dレーザースキャナーが適していますが、コストを抑えつつ高速にデータを取得したい場合には構造光スキャナーが優れています。用途に応じて、これらの技術を適切に選択することが重要です。
【Laravel11】Laravelの新しいMiddlewareの登録方法


最近の Laravel って Middleware の登録の仕方変わったんだね...

![スクリーンショット 2024-10-17 14.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833190/cd3b5fc0-43b7-0d51-7cbc-726034d2f8ba.png)

```bash
$ sail artisan make:middleware TestMiddleware
```

`app/Http/Middleware/TestMiddleware.php` に生成される  

グローバルに登録するときは、`bootstrap/app.php` に登録する

```php:bootstrap/app.php
    ->withMiddleware(function (Middleware $middleware) {
        // グローバル共通ルートの先頭に登録
        $middleware->prepend(AutoTransaction::class);
        // グローバル共通ルートの末尾に登録
        $middleware->append(AutoTransaction::class);

        // Webルートの末尾に追加
        $middleware->web(append: [
            AutoTransaction::class,
        ]);

        // APIルートの先頭に追加
        $middleware->api(prepend: [
            AutoTransaction::class,
        ]);
    })
```

他にも既存の Middleware の置き換え、グループ化、優先度など、メソッドは豊富に用意されているので、以前よりは楽になったのかもしれない？

https://readouble.com/laravel/11.x/ja/middleware.html

おわり
サーバーOSとは？その種類と違いについて解説

<br>

# ■ はじめに
<br>

私たちが普段使用しているPCやスマートフォンはオペレーティングシステム（以下：OS）によって管理されています。
OSは様々な種類が存在しておりPC向けにはWindowsやmacOS、スマホ向けにはAndroidやiOSが一般的です。

iPhoneではiOSの大規模なメジャーアップデートで新機能に注目されるようにもなったので、
一般の方も上記のような`クライアントOS`というものを意識する機会が多くなったのではないかと思います。

PCにはPC向けのOS、スマートフォンにはスマートフォン向けのOSがあるように、サーバーにもサーバー向けのOSが必要となります。

サーバーOS、という話の前にそもそもサーバーとは何かという話になりまして、
サーバーの語源は「サーブ（Serve）」、つまりは「何かを提供する存在」という意味です。
（ビールを提供するから「ビールサーバー」なわけですね。）

そのためコンピューターやインターネットにおける「サーバー」というのは、情報やデータなどのコンテンツを提供するコンピューターのことを表す意味になるのです。

また、OSといっても「一般利用者（クライアント）」向けの`クライアントOS`と、
「コンテンツを提供するためのサーバー」向けの`サーバーOS`が存在するということになります。

今回の記事ではその「サーバーOS」について解説します。

# ■ 目次
<br>

1. [サーバーOSとは](#1-サーバーosとは)
2. [Windows系OSとUnix系OSの違い](#2-windows系osとunix系osの違い)
3. [それぞれのOSのメリットとデメリット](#3-それぞれのosのメリットとデメリット)
4. [まとめ](#4-まとめ)


## 1. サーバーOSとは
<br>

サーバーOSとは、コンピューターのOSのうちサーバー向けに設計されたOSのことです。

一般的にはPC利用者向けに設計されているOSを「クライアントOS」、
サーバー向けに設計されているOSを「サーバーOS」と呼びます。

サーバーOSの代表例としてはWindows系OSとUnix系OS（Linuxを含む）があります。

また、クライアントOSは人間が操作するため見た目や操作感を重視しているためGUI[^1]を持つことが多いですが、
サーバーOSは人間が操作するものではないため、GUIを持たないことが多いです。


## 2. Windows系OSとUnix系OSの違い
<br>

サーバーOSとして主に利用されるのは、大きく分けて以下の2つの系統です。

### Windows系OS
- Windows Server Standard Edition
- Windows Server Datacenter Edition
...など

### Unix系OS（Linuxを含む）
- Red Hat Enterprise Linux
- CentOS
- Ubuntu
- Solaris
- FreeBSD
...など
<br>

PC向けのOSではWindowsが大きなシェアを持っていますが、サーバーOSではUnix系OS（特にLinux）が圧倒的なシェアを持っています。<br>

理由としてはUnix系OSはネットワークへの接続に優れており、歴史的にもサーバーOSとして長い実績があるためです。

## 3. それぞれのOSのメリットとデメリット
<br>

|OS|メリット|デメリット|
|:---:|---|---|
|Windows系OS|・GUIで操作可能<br>・安定した機能を持つ<br>・クライアントOSであるWindowsと操作感が似ている|・ライセンス料が必要<br>・ソースコードが非公開<br>・サーバーに接続するユーザーごとに利用権が必要|
|Unix系OS|・セキュリティが高い<br>・ライセンス料が不要<br>・低スペック環境でも動作が速い|・サポートは有料<br>・CUI[^2]中心で、操作が難しい|

---

上記のようにWindows系OS、Unix系OSどちらのサーバーOSにもメリット、デメリットは存在します。

Unix系OSは無料で利用できるものの、業務で使うアプリケーションは主にWindows向けのものが多いことや、
Unix系OSでは多くのフリーソフトウェアが動作するが、Windows系OSでしか動かないソフトウェアも世の中には多く存在しているといったことなどもあるため業務内容に応じた選択が必要です。

一般的にはWindows上でしか動かないアプリや他のWindowsシステムとの連携が必要な操作であればWindows系OS、
それ以外であればUnix系OS（主にLinux）を選択するのが主流となっているため、
上記のメリット/デメリットだけでなく様々な観点から用途に応じたOSを選択する必要があります。

## 4. まとめ
<br>

- サーバーにはサーバー用のOSが存在している
- 私たちが普段使用しているのはクライアントOS
- サーバーOSにはWindows系OSとUnix系OSがある
- Unix系OSは無料でセキュリティに強いが、操作が難しい
- Windows系OSは操作が簡単で、GUIがあるがライセンス料がかかる
- 業務に必要なアプリケーションによって適切なOSを選択する必要がある

今回は通常意識しているクライアントOS以外のサーバーOSについて解説しました。
直接目にする機会は少ないかもしれませんが、是非とも頭に入れておきたい内容ですね。



[^1]:グラフィカルユーザーインターフェースの略。視覚的にわかりやすくマウスでの操作が可能。
[^2]:キャラクターユーザインタフェースの略。キーボードでの操作がメインとなる。
MicrosoftのTeamsからWorkFlowと名を変えたPowerAutomateを使う方法

## Microsoft Teamsはスーパーアプリ！

こんにちは。私はよくMicrosoft Teamsを使っています。

幸か不幸かTeamsはなんの事前周知もなしにいきなりどんどん高機能になっていきます。

その結果、今ではTeamsからWorkFlowという自動化のジョブを作成することができるようになりました(バッチ的なものととらえておいてください)

今回はWorkFlowの基本的な説明をしたいと思います。

## WorkFlowのインストール方法

### Teamsの1番下にあるアプリを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280363/43bbc9f2-db78-c273-17c5-f3c48a4e6b54.png)


### 検索バーで「workflows」を検索します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280363/bd5e0fde-8e44-0ad2-e994-692d2138bf01.png)

### こちらを探します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280363/17dfbbf7-af4c-a1e4-550c-336722582d13.png)


### 「新しいワークフロー」からPowerAutomateのようにジョブを作ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280363/f08d2476-88f7-8b4f-a383-419d120c89d2.png)


## おわりに

いかがでしたでしょうか？WorkFlowsから作ったほうがMicrosoftからの注意が来ないのでお勧めです。Teamsから動かなくても何でもできるのはすごいですが、動産が安定しない部分については今後改善してもらいたいところです。
結局リスト（List）って何なの？


IT でもよく出てくる「リスト」の意味を掴む。

多義語なので、一つずつ紹介する。これら全部を押さえておけば、次「リストって何なの」となったときも、たぶんどれかが当てはまって理解できるはず。

# 1: 箇条書き的に並べた書き方のこと

## (Before) 普通の文章
多義語なので、一つずつ紹介する。これら全部を押さえておけば、たぶん次「リストって何なの」となったときも、たぶんどれかが当てはまって理解できるはず。

## (After) リストで書いたもの
- 多義語なので、一つずつ紹介する
- これら全部を押さえておけば、
    - たぶん次「リストって何なの」となったときも、
    - たぶんどれかが当てはまって理解できるはず。

※強引な例ですみません

## 書き方は色々ある
テキストで書くにしても、以下のように色々書けるし、

```
・多義語なので、一つずつ紹介する
・これら全部を押さえておけば、
    ・たぶん次「リストって何なの」となったときも、
    ・たぶんどれかが当てはまって理解できるはず。
```

```
- 多義語なので、一つずつ紹介する
- これら全部を押さえておけば、
    - たぶん次「リストって何なの」となったときも、
    - たぶんどれかが当てはまって理解できるはず。
```

Word のようなエディタ上でも「番号なしリスト」「番号つきリスト」のような記法が用意されているだろう。

## なんでリスト？普通に文章で書けばよくない？
「ただの文章」と「箇条書き的に列挙した情報」を区別した方が何かと便利なので、そうしている。

文章は、特に記事や文書など本格的なものになると、それなりの構造が要る。「段落」や「見出し」もそうだし、「リスト」もその一つ。

## 一般的なニュアンス
- `・` のような印を先頭につける
    - 呼び方は色々ある: 「Bullet（バレット、ブレッド、ビュレット）」「ポチ」「黒ポチ」「中黒点」
- 階層性がある
    - aaa
        - bbb
        - bbb
    - aaa
        - bbb

# 2: チェックリスト、タスクリスト、品目リストなど「項目を並べたもの」
何らかの項目が並んだものをリストと呼ぶことも多い。

たとえば「これらの観点を全部一つずつチェックしろ」を要請するチェックリスト。あるいは自分が行うタスクを列挙したものをタスクリストとか TODO リストとか言ったりする。

文書や Excel でつくられることもある。「項目」なるものが並んでいるものは、何でもリストになりえる。

# 3: データ構造
データの扱い方をデータ構造という。主にプログラミングのときに使う。

スタックとキューについては以前取り上げた: [スタックとキューと FIFO と LIFO を理解する #スタック - Qiita](https://qiita.com/workhack20/items/2c200c120df8661b105c)

リストも、データ構造の一つとして言及されることがある。ここで解説しておく。

## リスト構造
**リスト（List）** とは、データ一つ分（要素）を順に繋いだ構造を指す。**配列（Array）** と呼ぶこともある。

以下はリストが空の状態。

```
---> 
```

ここに A, B, C というデータをこの順番で入れるとする。


```
---> [A]--[B]--[C]
```

Aから始めて、要素単位で連結させていることがわかる。それだけ。

新しくデータを入れるときは、基本的に後ろにつける。これを append という。また、途中に入れる場合は insert（挿入）という。たとえば B の次に D を insert すると、こうなる。

```
---> [A]--[B]--[D]--[C]
```

図で書くとシンプルだが、データ構造として実際にプログラミングすると意外と大変だったりする。というのも、各要素は「私の次はこの人です」という情報（ポインター）を持っておかないといけないから。

なので、B の次に D を insert する場合、実は以下のようなことをしている。

- まず最初に A を見る
- A は B ではないので「いや私じゃない」「私の次は B さんなので、そっち見てみて」
- B を見る
- 探しているのも B なので合っている、「私ですね」
- B の次に D を置きたいので、B は「私の次は C なんですけど、D に変えますね」
- （ここまでで A--B--D、まだ C が繋がってない）
- D はまだ次が誰もいないので、C にする

要は、コンピュータ上でちゃんと「リスト」と思しきものを表現したいなら、これくらいちゃんとやらないといけないということ。まあこれはプログラミングの話なので、通常出てくることはない。一方で、プログラミングの文脈だと、リストの話なのに「ポインター」とか「付け替え」とか「アペンド(append)」といった言葉が出たりするが、それはまさにこういうことである。
初心者のReact環境構築Windows

# WindowsでReact環境構築する
フロントエンドに疎遠だったエンジニアが勉強の為Reactの環境構築を行いました。
諸所躓いたので備忘録を残します。

# node本家へ訪問、node.jsをインストールする
↓node本家

https://nodejs.org/en/download/package-manager

![Screenshot 2024-10-17 141849.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/45c74b5e-6f77-30eb-5deb-9d017deaf855.png)

install Node.jsの右セレクトボックスでインストールしたいバージョンとインストール方法を選択すると、
それに応じたコマンドが表示されます。

今回は
バージョン：v20.18.0(LTS)
OS:windows
方法：fnm

を選択しました。

windowsパワーシェルを開いて下記コードを実行。
```powershell
winget install Schniz.fnm
//ここで環境変数にfnmを追加しておく

fnm env --use-on-cd | Out-String | Invoke-Expression
fnm use --install-if-missing 20
node -v
npm -v
```

# プロジェクトを作成、実行してみる
あとは以下でおーけーです。

```powershell
npm install create-react-app
npx create-react-app sample_project
```
![Screenshot 2024-10-17 143137.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/b2e153c6-7afd-caa8-71ef-2a81c6ae89b4.png)

![Screenshot 2024-10-17 143142.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/f6cf39b1-e1a1-6c95-833b-7ac2fb62649b.png)


# Pathが設定できていなかったら
npmが実行できなければnpmも環境変数に設定の必要があります。

私はfnmやnpmがどこにインストールされているか見失ったので下記コマンドで何度も確認しました。
フルパスを表示できます。

```powershell
Get-Command fnm | Select-Object -ExpandProperty Source
```
fnmはnpmなどに代えて実行してください。
EDB PostgreSQL17でベクトル拡張の失敗に対処する（Mac）

### EDB PostgreSQL17のインストール
homebrewでpostgresql@17を何度再インストールしてもUserがrootになってしまい、brewで起動するとerror 256なります。そこでbrewでアンインストールしてからEDB版をインストールしました。
問題なくpostgresが起動し、vector拡張を試すと、予想通りエラーになります。
```bash
postgres=# create extension vector;
ERROR: extension "vector" is not available
DETAIL: Could not open extension control file 
...
HINT: The extension must first be installed on the system where PostgreSQL is running.
```
以下は、*1で示した対処法のEDB PostgreSQL17用に焼き直したものです。
### pgvectorのインストール
```bash
git clone --branch v0.7.4 https://github.com/pgvector/pgvector.git
$cd ~/pgvector
$export PG_CONFIG=/Library/PostgreSQL/17/bin/pg_config
$make PG_CONFIG=$PG_CONFIG clean
$make PG_CONFIG=$PG_CONFIG all 
clang: error: unsupported argument 'native' to option '-march='
```
Makefileを以下のように変更します
#To compile for portability, run: make OPTFLAGS=""
#OPTFLAGS = -march=native	unsupportのためこの行をコメントアウトして次行を追加
OPTFLAGS = 

再度makeして、make installします
```bash
$make PG_CONFIG=$PG_CONFIG all 
$sudo make PG_CONFIG=$PG_CONFIG install
```
vector拡張をインストールする
```bash
$cd
$psql -U postgres    
Password for user postgres: 
psql (17.0)
Type "help" for help.

postgres=# create extension vector;
CREATE EXTENSION
```
インストールが成功しました。

参考情報：
*1 : Postgresql@16でベクトル拡張の失敗に対処する（Mac）https://qiita.com/tnagata/items/7e6ae9956bdcaf167d94
perfdhcpによるDHCPサーバの払い出し性能評価

# 課題
学校では端末が一斉に起動されるため，DHCPサーバによるアドレス払い出しが間に合わず，端末に適切なIPアドレスが設定されない場合があります．
DHCPサーバの払い出し能力を確認するには，同様のシチュエーションでテストすればいいのですが，複数台同時起動するのも大変なので，ツールを使って負荷テストにより能力を求めてみます．
# perfdhcp
iscのdhcpサーバ，keaに含まれるdhcpサーバのパフォーマンス測定ツール
## インストール
Debianだと`kea-admin`パッケージに含まれているので，パッケージをインストールします．
```sudo apt install kea-admin```
## 測定
`ip a`を実行して，インターフェイス名を確認しておく．
`sudo perfdhcp -4 -l インターフェイス名 -r 10 DHCPサーバのIP`
でIPv4を使って指定したインターフェイスから指定したサーバへrate 10でテストする．rateを指定していないと，サーバの負荷が大きくなるので，様子をみながら大きくしていく．
適当な時間が過ぎたら，Ctrl-Cで止めるとレポートが表示される．一定の時間で止めたい場合は`-p 10`もオプションに追加とすると10秒で止まる．
## Example
IPv4のDHCPサーバを測定する例
```
sudo perfdhcp -4 -xi -t 2 -r 5 -R 100 -n 100 -l wlp3s0 192.168.1.1
```
オプションの意味
+ -4 DHCPv4
+ -xi query/responseレートの表示
+ -t 2 レポートの表示間隔(秒)
+ -R 100 100デバイスによるrequestをシミュレート
+ -n 100 perfdhcpが行うリクエスト数
+ -r 5 5パケット/秒
+ -l wlp3s0 インターフェイス名
+ 192.168.1.1 DHCPサーバのIPアドレス

-n でリクエスト数を設定しているので，指定回数で終了する．-pでテスト時間を設定することも可能．リクエスト回数もしくはテスト時間を設定していないと，終了しないので，その場合はCtrl-Cで止める．
### 結果
#### -r 20での結果
```
Running: perfdhcp -4 -l wlp3s0 -r 20 -p 10 all
Scenario: basic.
Multi-thread mode enabled.
***Rate statistics***
Rate: 19.8994 4-way exchanges/second, expected rate: 20

***Malformed Packets***
Malformed packets: 0
***Statistics for: DISCOVER-OFFER***
sent packets: 199
received packets: 199
drops: 0
drops ratio: 0 %
orphans: 0
rejected leases: 0
non unique addresses: 0

min delay: 3.431 ms
avg delay: 4.509 ms
max delay: 7.590 ms
std deviation: 0.695 ms
collected packets: 0

***Statistics for: REQUEST-ACK***
sent packets: 199
received packets: 199
drops: 0
drops ratio: 0.000 %
orphans: 0
rejected leases: 0
non unique addresses: 0

min delay: 3.296 ms
avg delay: 4.655 ms
max delay: 21.791 ms
std deviation: 1.813 ms
collected packets: 0
```
#### -r 300での結果
```
Running: perfdhcp -4 -l wlp3s0 -r 300 -p 60 all
Scenario: basic.
Multi-thread mode enabled.
***Rate statistics***
Rate: 36.0498 4-way exchanges/second, expected rate: 300

***Malformed Packets***
Malformed packets: 0
***Statistics for: DISCOVER-OFFER***
sent packets: 17999
received packets: 6653
drops: 11346
drops ratio: 63.0368 %
orphans: 0
rejected leases: 0
non unique addresses: 0

min delay: 4.437 ms
avg delay: 64.997 ms
max delay: 187.634 ms
std deviation: 10.137 ms
collected packets: 9271

***Statistics for: REQUEST-ACK***
sent packets: 6653
received packets: 2163
drops: 4490
drops ratio: 67.488 %
orphans: 0
rejected leases: 0
non unique addresses: 0

min delay: 14.052 ms
avg delay: 64.587 ms
max delay: 180.496 ms
std deviation: 13.487 ms
collected packets: 1845
```
#### 比較
rateを上げることで，払い出し能力が不足し，dropが増えている．

## 参考リンク
+ [DHCP Server Test Tool (kea-admin)](https://hackmd.io/@jacy-hsu/S1qXkMU_O#DHCP-Server-Test-Tool-kea-admin)
+ [man perfdhcp.8](https://kea.readthedocs.io/en/kea-2.2.0/man/perfdhcp.8.html#perfdhcp-dhcp-benchmarking-tool)
+ [Kea DHCP4 Basic Performance Testing](https://youtu.be/IW3eXTM9skc?si=a-9EximjbsrWdZPe)
過去問道場を"賢く"使おう！応用情報技術者試験"0円"合格法！【AP勉強方法】

# はじめに
こんにちは、OhaGiです。

常日頃お金がない学生にとって **参考書代って高い** ですよね...
試験代含めると1万円超えちゃう時あるし...
そこで今回は！

[応用情報技術者試験ドットコム](https://www.ap-siken.com/"応用情報技術者試験ドットコム")を利用することでテキスト代 **0円** で **応用情報技術者試験に合格** できる方法を紹介したいと思います。
**午前問題の勉強範囲** や **午後問題の選択方法** についてもまとめておきます。
*no money* な同志の参考になれば幸いです！

::: note
※この記事は、筆者が令和6年度春期 応用情報技術者試験に合格した際の勉強方法を紹介するものであり、合格を保証するものではありません。
![APResult](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584262/954d8816-dad0-736b-de48-b702d96e0d5d.png)
:::

# :clock10:午前問題
## 効率よく勉強するために...
まず、午前問題を勉強する前に[ドットコムの統計情報ページ](https://www.ap-siken.com/aptoukei.html "応用情報技術者試験ドットコム統計情報")の **午前問題の過去問流用の統計** を見ていきましょう。

![応用午前データ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584262/c4cd90bb-3cb3-a007-9bfc-1073e3dfe3ba.png)

ここに午前問題を勉強する上での2つのポイントが隠されています。

**①直近2回を除いた過去10年分くらいからよく流用されている傾向がある**
**②直近2回からは過去問が流用されていない** 

この傾向はほとんどの回で見られます。
この2点から勉強すべき範囲を特定できますね。
つまり、**直近2回を除いてそこから過去10年分** の過去問を勉強すればよいのです。

## 学習を進める
午前問題の対策はとにかく **繰り返し演習** することが最も重要です。[過去問道場](https://www.ap-siken.com/apkakomon.php)を使い、先ほどの勉強範囲に絞って、何度も解いてみましょう。
ここでのポイントは、ただ解答を暗記するのではなく、 **なぜその選択肢が正解なのかを理解すること** です。間違えた問題は、なぜ間違えたのかを解説と照らし合わせて理解し、同じミスを繰り返さないようにしましょう。

**1周目:** 問題を解き、全体の流れや傾向を把握。
 **2周目以降:** 間違えた問題を重点的に解き直し、理解を深める。
 **直前期:** 苦手分野に絞って集中的に復習。

1周目でわからない問題が多くても焦らないでください。過去問道場では問題をランダムに出題できるので、苦手問題が何度も出てきます。繰り返すことで、次第に正答率が上がってくるはずです。

# :clock2:午後問題

## みんなが悩む科目選択
結論から言うと、 **当日の選択肢を増やすために、なるべく多くの科目を勉強しよう！** 
詳しく説明します。

例えば、下図のような難易度の試験だったと仮定します。
![応用午後選択1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584262/18588e96-89ed-59f8-0685-8fb1b6389026.png)

もし、あなたが"経営戦略"、"プログラミング"、"システムアーキテクチャ"、"組み込みシステム開発"の **4科目だけ** 勉強してきた場合は...
![応用午後選択2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584262/899cce2e-6389-3c8d-13ae-94a8e7d77bb1.png)
このように難易度が高い科目を選ばざるを得なくなってしまいます。

しかし、もしあなたが上記+"ネットワーク"、"データベース"、"情報システム開発"の **7科目** を勉強していれば...
![応用午後選択3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584262/4bc2cb58-c601-eadf-4a15-c82bf8eb9be2.png)
上図のように難易度の易しい問題を選択することが出来ます。


いやいや、 **勉強してない科目でも当日に難易度を見て選択できるでしょ** 、と思う方も多いと思います。
しかし実際には勉強していない科目は当日見ても難易度が分からない。
よって必然的に **勉強してきた科目以外選択できない** のです。

![応用午後選択4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584262/6b432022-6c02-d5c5-a651-157772c3680e.png)
※試験当日の目線ではこんな感じに見える。

応用情報技術者試験午後問題は **ガチャ** なんです。
そしてそのガチャを4連にするのか10連にするのかはあなた次第です！

## 学習を進める
午後問題では、 **記述形式の解答に慣れること** が重要です。IPA特有のキーワードやフレーズを使うことが求められるため、 **「IPA語」** をしっかり習得しましょう。これは過去問の解説を通じて、何度も解答の表現方法に触れることで身に付きます。

 **1周目:** 問題の文を丁寧に読み、出題の意図を把握。
 **解説を読み込む:** 問題文と解説を比較し、どのキーワードがポイントになっているか理解する。
 **2周目以降:** 自分の記述を見直し、解説のフレーズを意識して模範解答を作成する。

記述問題は時間配分も大事です。私は1題15分以内で解けることを目標に練習しました。

# さいごに
応用情報技術者試験は、勉強量が多く、正直大変な試験だと思います。しかし、正しい方法でしっかりと学習を積み重ねれば、必ず結果はついてきます。今回紹介した **「過去問道場」** をうまく活用し、継続して勉強を進めてみてください。
皆さんが合格できることを心から応援しています！頑張ってください！
IBM Cloudアカウントから削除したユーザーに通知メールが届く場合の確認ポイント

IBM Cloudではメンテナンスやサポートにかかる通知をメールで送る機能があります。プロジェクトからの離任などでユーザーをIBM Cloudから削除した後にこれらの通知メールを受け取るのをやめたいというご要望をいただくことがあります。通知を受け取らないためにユーザーを削除する以外に確認すべきポイントをいくつか紹介します。

なお、以下の説明では削除したユーザーから別の担当者への引き継ぎが終わり、すでに新しい担当者が通知先として登録されている想定で話をしています。引き継ぎが漏れているようなケースではユーザーの削除と同時に新しい担当者の方を登録するようにしてください。

# 確認すべきポイント (1) アカウントの通知配布リストに含まれている

[通知配布リスト](https://cloud.ibm.com/account/notifications-distribution-list)にアクセスし、Eメールアドレスが登録されていないことを確認します。下図の赤枠部分に含まれるEメール・アドレスを確認します。

<img width="900" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/133a17ed-e81b-0391-e14d-12d974cdb65e.png" />

また、通知配布リストの一覧にTypeが「Event Notifications」のものがあった場合にはその設定を確認します。説明が長くなるので後続の確認すべきポイント(2)にその確認方法を記述します。

仮にリストに削除したユーザーのEメール・アドレスが登録されていた場合には当該行の右にある「︙」アイコンをクリックして、メニューを表示して「削除」を選択します。
<img width="200" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/223df77e-99e0-b73a-9b25-7d4a50a06902.png" />

「通知配布リスト」にアクセスした際、以下のように権限がないという画面が表示された場合には権限をもったユーザー（たとえばアカウント所有者）に確認してもらう必要があります

<img width="900" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/f159a29d-47c6-fb85-99ca-fe882124780b.png" />

# 確認すべきポイント (2) 通知配布リストにEvent Notificationsサービスを含む場合

(1)の「通知配布リスト」にTypeが「Event Notification」のエントリーがあった場合にはEvent Notificationの通知先に削除したユーザーのEメール・アドレスが含まれないことを確認します。

使用しているEvent Notificationインスタンスのページを開きます（[リソース・リスト](https://cloud.ibm.com/resources)などからアクセスします）

<img width="1000" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/1c0a6dd1-fd81-1f90-a922-e8fe5c892748.png" />

続いてインスタンスの「Subscriptions」を開き、表示されるサブスクリプションの表のうち、宛先が「IBM Cloud Eメール・サービス」となっている行に対し、それぞれ宛先に削除したユーザーのアドレスがないか確認していきます。各行の右にある「︙」アイコンをクリックして、表示されたメニューから「編集」を選択します。

<img width="1000" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/ad098a0c-2f4f-fdf2-69ce-842bf1d0ec37.png" />

表示され編集画面をスクロールし、「受信者」の「アクティブ」タブを選択します。表示されたリストには通知メールを受信するユーザーのメールアドレスが含まれます。このリストに削除したユーザーの連絡先が無いか確認します。
削除する必要がある場合には「︙」アイコンをクリックして、表示されたメニューから「削除」を選択します。すべて確認を終えたら画面の最下部右にある「保存」をクリックします。

<img width="1000" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/fdfd60fc-6d6f-9b8d-a9eb-a2aeb6bd62a1.png" />


# 確認すべきポイント (3) Classic IaaS関連の連絡先に設定されている

[会社プロファイル](https://cloud.ibm.com/account/company-information)にアクセスし、アカウント所有者の「Eメール・アドレス」（下図赤矢印の `company@example.ibm.com` となっている部分を参照）になっていないかを確認ください。仮に連絡先となっていた場合には「アカウント所有者」フィールド右上部の「編集」をクイックして編集ください。
また、「不正使用報告用のEメール・アドレス」（下図青矢印の `company@example.ibm.com` となっている部分を参照）になっている場合、通知とは関係ないのですが、アカウントの関係者にその連絡が届くのは不適切と考えられるので、「不正仕様のEメール連絡先」フィールドの右上部の「編集」をクイックしてアカウント所有者など適切な連絡先に変更ください。

<img width="1000" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/870b251d-0bee-4bf4-1dee-2131f135bf3a.png" />


# まだ解決できない場合は

問題が発生しているアカウントからサポートケースを起票し、IBM Cloudサポートチームにお問い合わせください。その際、受信されているメールをいくつか添えてお問い合わせください。
[サポートセンター](https://cloud.ibm.com/supportcenter)よりサポート・ケースを作成することができます。権限がなく作成できない場合には権限を持った方（少なくともアカウント所有者は権限を有する）にご相談ください。
Bluesky に好きなウェブページを共有するボタン（ブックマークレット）を作成する 

Twitter のシェアリンク `https://twitter.com/intent/tweet?text=` を `https://bsky.app/intent/compose?text=` に置き換えれば良さそうです。

```javascript:コピペ用
javascript:open('https%3A%2F%2Fbsky.app%2Fintent%2Fcompose%3Ftext%3D'%2BencodeURIComponent(document.title)%2B'%250a'%2BencodeURIComponent(location.href))%3Bvoid(0);
```

上記をブックマークに登録してください。（※ブックマークを作成せずアドレスバーや開発者コンソールに貼り付けただけでは動作しない場合があります。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78152/9f2a3a04-7fc3-0976-068e-475257e84269.png)

ブックマークバーを常に表示しておけば、いつでも1クリックで好きなページへのリンクを投稿することができます。

# 作り方

```javascript:コード確認用（変換前・整形済み）
open(
  'https://bsky.app/intent/compose?text=' +
  encodeURIComponent(document.title) +
  '%0a' +
  encodeURIComponent(location.href)
);
```

こちらのコードを URL エンコードして、最初に javascript: を、最後に void(0) を加えたものがブックマークレットになります。

# 参考リンク

## ブックマークレット変換

ブックマークレットへの変換には次のサイトを使用させて頂きました。

https://ytyng.github.io/bookmarklet-script-compress/

## 共有ボタンについて

### Bluesky

https://eiji.page/blog/bluesky-share-button/

### Twitter

https://qiita.com/munieru_jp/items/24a4840c452c61c2dde9
プラットフォームとアーキテクチャとインフラの違い


ざっくりしたイメージの話。

文脈次第では定義なりニュアンスなりがあるので、それに従うこと。ただ、その場合でも、ここで挙げたイメージがあれば理解しやすいと思う。

# アーキテクチャは、作り手から見た全体像的な設計図
**アーキテクチャ（Architecture）** は、原義は「建築」や「構造」だが、IT では「システムの構造全体を設計したもの」という感じ。

システムも適当につくれるはずはなく、登場人物を全部洗って、その関係や連携はこうします、というのを全部決める。実際にこれに従ってつくっていく「教典」でもあるので、ここは本当にちゃんとつくらないといけなくて、技術的に一番詳しいレベルのエースやベテランが担当したりする。

より詳しいニュアンス:

- IT エンジニアなど作り手が見るもの
    - なので専門用語や記号も多用される
    - 素人が見てもわからん
- 全体像の俯瞰を重視する
    - 細かい木々よりも、森全体を重視

# インフラは、常に安定して運用されているのが当たり前の基盤
**インフラストラクチャー（Infrastructure）**、実際は **インフラ** と略すことが多いが、原義は「基盤」。経済基盤、社会基盤といった、超重要な下地って感じのニュアンスがあるが、IT でもまさにそうである。

IT のシステムはざっくり以下の三層から成る。

- 1: ソフトウェア（アプリ）
- 2: OS やミドルウェア（パソコンで言えば Windows、Mac、Android/iOS）
- 3: サーバーやネットワーク

インフラは 3 の部分を指す。文脈によっては 2 を含めることもあるが、基本 3 を指すと思えばいい。

日常生活でも電気、ガス、水道、道路といったライフラインをインフラと言ったりする。これがないと、あらゆる仕事や生活がままならなくなる。すべての前提、土台であり、ちゃんと動いて当たり前だ。実際、ちょっと停電が起きたら、私たちはもう「ふざけんな」「何してんだ」となる。

インフラは基本的に 24 時間 365 日動かしたいが、現実的にそうもいかない。IT も、結局は物理的な場所と装置でつくったものなのでメンテナンスは必要だ。道路をメンテナンスするときに封鎖するように、IT システムも（インフラの事情で）一時的に閉鎖することがある。もちろん、何らかの障害が起きて使えなくなることもある。

# プラットフォームは、みんなが出入りしている場所
**プラットフォーム（Platform）** は、原義は「舞台」や「台地」であるが、かなり多義語なので原義は無視していい。

IT におけるプラットフォームは、私たちがよく使うシステムを指す感じ。もっと言えば、色んな人が頻繁に出入りするニュアンスが強い。

たとえば Teams など Microsoft 365 で仕事をする人は多いと思うが、この Microsoft 365 もプラットフォームである。しかし、Teams だけをプラットフォームと言えるかというと、ちょっと狭い。この感覚。

日常生活で言えば、駅のことをプラットフォーム（プラットホーム）と言ったりするが、イメージとしてはわかりやすいかもしれない。多くの人が頻繁に出入りしている点が共通している。

別の言い方として、GAFAM のような企業をプラットフォーマーと呼んだりもする。私たちが普段使うプラットフォームを提供する側の組織だからだ。多くの人が出入りする場所を牛耳っているので、まあ稼げるし、権力も強い。
IBOutletのUIImageViewで画像が表示されなくなった話

# 起きた問題
タイトルの通り、IBOutletでstoryboadにて設定したUIImageViewに画像が表示されなくなったことがありました。
状況としては、コードでUIImageを設定した時に設定したはずの画像が表示されないというものです。

# 実際のコード
以下実際の画像が表示できなくなったコードです。
`ChatIconView`というカスタムViewでUIImageViewがあり、`setupMyIcon`もしくは`setupTeamMemberIcon`で画像を設定するようになっています。
しかし、`setupTeamMemberIcon`では画像が表示されません。

```swift
class ChatIconView: UIView {

	// MARK: - IBOutlet property

	@IBOutlet var iconImageView: UIImageView!

	// MARK: - initialize Methods

	required init?(coder aDecoder: NSCoder) {

		super.init(coder: aDecoder)!
		loadNib()
	}

	override init(frame: CGRect) {

		super.init(frame: frame)
		loadNib()
	}

	override class func awakeFromNib() {

		super.awakeFromNib()
	}

 // MARK: - public Methods

	func setupMyIcon(iconImage: UIImage) {

		iconImageView.image = iconImage
	}

	func setupTeamMemberIcon(imageLoader: LoadingImage) { // 問題のコード

		iconImageView = UIImageView(imageLoader)
	}
}

// MARK: - private Methods

private extension ChatIconView {

	func loadNib() {

		let view = UINib(nibName: K.Storyboad.Xib.chatIconView, bundle: nil).instantiate(withOwner: self,
		                                                                                 options: nil)
			.first as! UIView
		view.frame = self.bounds
		self.addSubview(view)
	}
 }
```

# 結論
`setupTeamMemberIcon`では、IBOutletのUIImageViewのオブジェクトをコード上で上書きしてしまっていたためでした。
UIを表示しているのはあくまでstoryboad側の方であり、IBOutletでUIImageViewを参照しているに過ぎないため、そのプロパティに別のUIImageViewを上書きするとstoryboad上のUIImageView(実際に画面に表示されている方)とは別のUIImageViewを参照することとなるためこちらに画像を設定しても画面上では表示されないということになります。

# おわり
改めて考えてみると、当たり前な内容でハマってしまいましたが、IBOutletの構造を改めて再認識できました。
paizaラーニング問題集「【全探索 2】コップの水」を、解説例に基づいて解いてみた

https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__a_cup_of_water

▼解説例の考え方

bit全探索と呼ばれる手法を使用すると、すべての小さなコップの組合せを求めることができます。以下に概要を示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881331/6ea4d65b-f604-29a0-c7d7-1968faa50004.png)

▼コード
```py
########## 処理0(準備) インプット,リスト定義 ###########

N,K = map(int,input().split())

w = [0]*N
for i in range(N):
    w[i] = int(input())

# max_ml: 大きなコップに入れられる水の最大量を格納する変数
max_ml = 0

# max_ml: 小さなコップの組合せたときの、水の合計量
tmp_ml = 0

########## 処理1 小さなコップの組合せたときの水の合計量のうち、大きなコップの容量を超えない最大値を求める ###########

for i in range(2**N):

    for j in range(N):
        if (i>>j)&1:
            tmp_ml += w[j]
        
    if tmp_ml <= K and max_ml < tmp_ml:
        max_ml = tmp_ml
    
    tmp_ml = 0

print(max_ml)
```

▼参考
以下は、本問を解説例ではなく、私の考え方に基づいて解いてみた記事です。
https://qiita.com/toytoy24/items/bc3682a32442ec593e60
画像にモザイクをかける方法を覚えました

https://www.pixiv.net/artworks/97331358

こちらを可能な限り縮小してから元のサイズに戻したら

![HonamiKotoMosaic.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880421/92f68889-1bc7-3adc-cf70-9030d8862fb6.jpeg)

こうなりました。個人的には満足です。
なぜ作ったかというと、文化祭のポスターで、イラストを描く人とは別に、私がレイアウトを担当していて、全体の配色を考える時に一回イラストをガビガビにしておきたいな、と思ってです（イラストはまだ貰ってないので、穂波殊のイラストで試しました。元の画像の原型が残ってる画像もありますがそちらは上げるのを控えさせていただきます）。

Google Colaboratoryでやったんですが、ファイルを空にしてから画像を作る使用にしちゃったんですが、いくつも作れた方が良かったな、と思ってます。ポスターの締切が近いのでそれはまた今度にしようと思っています。
BytePlus EC業界のイベントを行います。

こんちには、BytePlusセールスエンジニアリングリードの叶です。
今日はイベントの告知をさせていただきます。

11月7日に弊社渋谷ヒカリエオフィスでEC業界のイベントを行います。
日本のECが今後どう変わっていくか、お客様及びパートナー様（GMOペパボ様、AKA Virtual様、Nvidia様、クラスメソッド様、メルカリ様）と一緒に展望していきます。ネットワークキングの場も設けておりす。

ご興味をお持ちの方はぜひご参加ください。　こちらからご登録くださいませ。
https://www.event-site.info/byteplusjp-event-2024/?r=bpsales12

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110403/d9f26701-2a66-1ef6-7be2-4426cc742a7b.png)
Amazonで整備済みノートPCを買ってみた話

# 整備済み品
![スクリーンショット 2024-10-17 12.12.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32033/e4ad12a9-1a83-64bc-13bd-68d663c5829d.png)
こちらです。

実際HPのノートPCを買うとなると30万とかするので、それが4万ってなんてお得なんでしょう。

実際届いたものを見ると、ほぼ新品同様の見た目のものが来ました。

起動すると、win11のsetup画面。
ローカルアカウントで設定しようとしてうっかり無線に繋いでしまってハマりましたが、
a@a.comでログインすることで回避できた。

![スクリーンショット 2024-10-17 12.14.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32033/7250baa8-278e-965b-0f8a-bad1ce400f18.png)
reedit最高。
https://www.reddit.com/r/Windows11/comments/12g7qrx/cant_open_command_prompt_during_setup/

なぜここでコマンドプロンプトが開かなかったかはあとで知ることになる。
(Shift + F10を押すと開くといろんなサイトに書いてある）

# Sモードって何

最近のwindowsにはSモードと言って、windows storeからダウンロードしたappしか実行できないという機能があるらしい。
このSモードでは、cmd.exeは動かないのである！
なぜなんだ。
microsoftアカウントを入れたくなかったけど渋々入れて、Sモード解除
（セーフブート外すと、sモード切れるというサイトもあったが、できなかった。。）

# Chromeが何らかの組織に監視されている
無事Sモードを解除できたら、Chromeのインストール。
すると、「組織によって管理」されている。。
レジストリを削除して、chrome再インストールで消せた。


これらのことをやることで4万円PCは使えるようになった。
子供にも良さそうなのでさらに安いのを今度買ってみようと思う。
Ubuntu24.04にCiscoPacketTracerを入れる

Ubuntu24.04にpacketTracerを入れるのに少し手こずったのでメモ

# 入れ方

### 依存パッケージ情報の追加
1. ターミナルを開く
2. 管理者権限を使用し、`/etc/apt/sources.list.d/ubuntu.sources`を任意のエディタで開く
3. そのファイルに次の要素を追加し、`sudo apt update`を実行する
```
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: jammy-updates
Components: main universe
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
```


### ダウンロード,インストール
1. [公式サイト](https://www.netacad.com/resources/lab-downloads?courseLang=en-US)から Ubuntu用のdebパッケージをダウンロードする
2. 1でダウンロードしたdebパッケージを使って、インストールを実行する
```bash
$ sudo apt install ./Packet_TracerXXX_amd64_signed.deb
``` 
XXXはバージョン

# どうしてこうなったか
Ubuntu24.04には`libgl1-mesa-glx`というパッケージが存在しないらしく、エラーが発生する
そのため、過去バージョンのパッケージ情報を追加して（むりやり）インストールしてやる

あんまりいい方法じゃないかもしれないから、CiscoPacketTracerにアップデートが入ったら、変わるかもしれない
【OpenAI o1→Canvas】同じセッション内で、切り替えて使います。


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

　今回は、同じセッション内で、OpenAI  o1をCanvasに切り替えて使います。

:::note info
本記事は、ChatGPT（有料版）
で行なっております。画像は
ありません。　あしからず。
:::
　ニュースもないので、
　　さっそく本題に入ります。

　今回は、
　　同じセッション内で、
　　　OpenAI  o1をCanvasに
　　　　切り替えて使います。

　内容は、
　　考えることを
　　　o1に任せ、
　　　　その出力をもとにして
　　　　　Canvasで記事を書く、
　　　　　　というものです。

　同じセッション内で
　　切り替えて使えるのか？

　使えます。
　　上部のモデル切り替えで
　　　目的のモデルに
　　　　切り替えるだけです。

　手順
　❶o1（previewでもminiでも）
　　　であることを確認。
　❷答えて欲しいことを入力・送信。
　❸出力内容を確認
　　　ダメなら、やり取り
　　　OKならば、❹に。
　❹モデルを
　　　ChatGPT 4o with canvasに
　　　　切り替える。
　❺下記Promptを入力
```Text:出力をCanvasに入れるPrompt
上記を変更なく、Canvasに書き入れて
```
　❻送信
　❼やり取りして、整えていく。

　あとは、
　　先日の記事どおりに
　　　目次なんかを付けると
　　　　見た目や飛ばすのが
　　　　　楽になります。
[【ChatGPT Canvas】での編集を指示だけで、完成させます。](https://qiita.com/kabumira/items/93c2260f229a256504c3)

　ここで言う“楽”は
　　“読者にとって、楽”という意味です。

　紙の本であれば、
　　目次のところに指をはさんで
　　　ペラペラとめくれば、
　　　　読んだあと、目次に戻れます。
　　　　　しおりですね。

　この流れを
　　記事にも適応すれば
　　　読者は読みやすいです。

　まぁ、
　　私のような
　　　分量の少ない記事なら
　　　　目次は意味ありませんけど😅

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

　今回は、ここまで。