OmniAICreator/Qiita-1.07M huggingface dataset:
【Suno AIでつくった楽曲】しろぶりゅーの歌 ver.3 (3拍子、口笛、朝焼け、日向敏文さん風編曲)【動画 3分06秒】【YouTubeチャンネルからの転記です】

この記事は、わたしの[YouTubeチャンネル](https://bit.ly/Yamanaka-YouTube "Living without things. 持たない生き方 手放す生き方")にある公開動画を転記しております。
( どこかのタイミングで、プログラミング-Google Apps Script or iPaaS-Zapier をつかって自動転記させる予定です )

転記のための時間コストを少なくしたいので、文字装飾( Markdown記法 )を極力つかわずに書いております。

こちらが動画内容です👇

***

![01 YouTube再生中の画像 Suno AI _ しろぶりゅーの歌 ver.3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386308/c2ba02fd-5a39-5c05-579f-43f889834fac.png)



* # 動画URL
    * https://youtu.be/lqxpE5ZFkz0

<br>

* # 動画タイトル
    * 【Suno AIでつくった楽曲】しろぶりゅーの歌 ver.3 (3拍子、口笛、朝焼け、日向敏文さん風編曲)【動画 3分06秒】

<br>

* # 動画の説明欄(一部を抜粋)

📅撮影日 = 2024-07-21(日)

Suno AIとは、文章から音楽を生成することができるAI( Text-to-Music-AI )です。
わたしは、2024-04-02(火)に初めてSuno AIで有償プランを契約してから、時々楽曲をつくって遊んでいます。

🎦【Suno AI】文章から音楽を生成するAI( Text-to-Music-AI )で、3分間で2曲、6分間で4曲作りました【試聴可能】1)伴侶の曲 2)税理士の曲【動画 16分11秒】
https://youtu.be/QKfhk4HgQ_g

🎦“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe

🎦“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


今回は、Suno AIでつくった曲を WAV で出力してから、動画編集いたしました。

スロージョギングの途中に、早朝の中目黒で偶然出会った「しろぶりゅー」-ShiroBrew-のテーマソング( イメージソングは和製英語です )を、1人のファンとして自主的につくりました。
つまり「しろぶりゅー」のファンメイドテーマソングです。

ぜひ聴いてみてください。
そして、ぜひみなさんも、あなたが大好きなお店やブランドや企業のために楽曲をつくってみてください！

作曲日:
2024-07-20(土)

Suno AI 契約の種類:
Pro Plan

楽曲の正式名称:
しろぶりゅーの歌 #3

Suno AI Library URL:
https://bit.ly/ShiroBrew-03

Custom Mode: On

Audio Inputs: Not Used

With Vocals:


---


Lyrics(without Meta tags):

真っ白な心

そよ風感じる

コーヒーの香りと
真っ白な心


---


Lyrics & Meta tags:

[Break]

[Intro]

[Whistling]

[Scat]

[Verse]
真っ白な心

[Verse 2]
そよ風感じる

[Chorus]
コーヒーの香りと
真っ白な心

[Whistling]

[Outro]


---


Suno AIへの指示文章( プロンプト/Prompt ): Custom Modeの場合は”Style of Music”を指定します。


🇬🇧English

[Waltz][lo-fi][japanese][Female][City Pop]


🇯🇵日本語訳

[ワルツ][ローファイ][日本語][女性][シティポップ]


---


Suno AI 公式URL
https://accounts.suno.ai


SHIROノMONO 公式URL - Instagram
https://www.instagram.com/shiro_nomono


---


✓ 🎥この動画と関連が強いわたしの動画 ↙
　・“Suno AIでつくった楽曲”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe


　・“効果的にSuno AIを活用するヒント”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


　・“Suno AIで3拍子”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghNy-xIeeMZV6D2YAnax9Nzw


　・“しろぶりゅー ファンメイドソング”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghPk5-_YwWl499DNAOVKlcvZ


✓ 🎥Shortened URL for this video | この動画の短縮URL ↙
　https://bit.ly/3Scp1Jl
備忘録 ffmpegでカロッツェリア用の動画

# 目的
嫁はんが、スマホで撮った歌の先生の動画をカーナビで見られるようにしてほしいというのでffmpegで変換した。その備忘録。NVIDIAのGPUを使う。
以前はXmediaというフリーソフトを使っていたが、バージョンアップが進んで、いつの間にか変換は出来るがカーナビで再生できなくなってしまった。前からGPUが使えない※1とか不満があったので、この際、ffmpegの変換に切り替える。それにしてもカーナビ側の許容範囲が小さいというか安定域が狭いというか。その割に巷の情報少ないし。試行錯誤で1日潰した。

※1　正確に言うとGPUは使えるが、GPUを使ったモードでは、カーナビで再生できる動画を生成でなきない。細かい設定をしたくてもGUIからは出来ない。使いにくいならGUIを使う意味無いし。

# 対象機種
Pioneer AVIC-RZ801
# バッチファイル

```ffmpeg_caro.bat 

set OUTF="%~n1_nv.mp4"
ffmpeg.exe -y -async 2 -i %1 -f mp4 -vcodec h264_nvenc -profile:v baseline -fpre "preset_sd_crrozeria.txt" -s 600x338 -r 24000/1001 -b:v 500k -bt 500k -maxrate 500k -b:a 128k -bufsize 256k -acodec aac -strict experimental -ac 2 -ar 48000 -ab 128k -threads 2 %OUTF%
 ```
カーナビの狭い画面に合わせて、かなり小さい解像度とビットレートにしてある。この辺は上げてもいいと思うけど、そんなに凝視して見るシチュエーションではないので。
このバッチをファイルエクスプローラーのフローティングメニューに仕込む。右クリック一発なので便利。
 
# プリセットファイル
 ```preset_sd_crrozeria.txt
level=30
crf=25
coder=0
flags=+loop
bf=0
weightp=0
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=7
me_range=16
g=250
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=1
qmin=10
rc_eq='blurCplx^(1-qComp)'
bidir_refine=1
deblock='0:0'
refs=1
qmax=51
 ```
# 参考情報
https://minkara.carview.co.jp/userid/626726/car/535629/2490823/note.aspx

https://jpn.pioneer/ja/support/s-manual.php?main_cd=001&sub_cd=099&model=&product_no=00009486&sort=1&bmp_type=AVIC-RZ801-D&disp=s-year.php

https://www.suwatsu.com/hobby/report/report_2022.htm

https://www.ffmpeg.org/ffmpeg.html

# 注意事項
運転中、動画を見てはいけません。
Databricksアシスタントでの自然言語によるデータフィルタリングのサポート

こちらのアップデートです。

[**Filter data outputs using natural language prompts**](https://docs.databricks.com/en/release-notes/product/2024/july.html#filter-data-outputs-using-natural-language-prompts)
> 自然言語を用いて、データの出力をフィルタリングするためにDatabricksアシスタントを活用できるようになりました。例えば、Titanicの生存者データテーブルにおいては、“Show me only males over 70”と指定します。

マニュアルはこちら

https://docs.databricks.com/ja/notebooks/use-databricks-assistant.html#filter-data-with-natural-language-prompts

SQLの`SELECT`文や、`display`関数でデータを表示します。右側にあるフィルタリングアイコンをクリックします。
![Screenshot 2024-07-21 at 9.24.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/31141277-393f-3509-6528-9e3febb55ef2.png)

プロンプト入力ボックスが表示されます。
![Screenshot 2024-07-21 at 9.24.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f1c6f339-99aa-35ce-6e63-f6c42156da22.png)

地方で絞り込んでみます。
![Screenshot 2024-07-21 at 9.24.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3a35cb78-c5bb-515f-357d-03efa02021cd.png)

条件が追加されました。
![Screenshot 2024-07-21 at 9.24.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/7cde1d12-43fa-6cff-4f6f-d3a3c7571e0c.png)

プロンプトを追加することもできます。
![Screenshot 2024-07-21 at 9.25.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0bcc8d69-69d0-0fe8-e8f5-3dcf3ca72175.png)
![Screenshot 2024-07-21 at 9.25.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/04479bc4-6242-ec41-536c-e5ed4ab6b1ae.png)

ただ、試したところ列名は元のものを明示的に指定した方が良いです。上の例で、列名を指定しなかったり、Prefectureではなく都道府県としてもうまく認識されませんでした。データの構成にもよるかもしれません。

### はじめてのDatabricks

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

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)
ER図に関する事

## はじめに
ER図作成にあたり下記記事を作成しました。今回は2つの内容を一つにまとめることで見やすくしてみました。ER図についても改めて確認したいと思います。

https://qiita.com/wa-chan222/items/481512e7da2940a70b8b

https://qiita.com/wa-chan222/items/f27e07542efed455bbfe

## まずはER図について
- ER図は、データベースの構造を視覚的に表現するための図
- エンティティ（データの項目）とリレーションシップ（それらの項目間の関係）を示すことで、データベースの設計を明確にするため、使われる

| 項目 | 説明 |
| - | - |
| エンティティ（Entity） | データベース内の独立したオブジェクト。<br>例：ユーザー、注文、商品など |
| 属性（Attribute） | エンティティが持つデータの項目。<br>例：ユーザーの名前、注文の日付など |
| リレーションシップ（Relationship） | エンティティ間の関連性。<br>例：ユーザーが注文をする、商品が注文に含まれるなど |
| プライマリーキー（Primary Key） | エンティティを一意に識別するための属性。<br>例：ユーザーID、注文IDなど |
| 外部キー（Foreign Key） | 他のエンティティのプライマリーキーを参照するための属性。<br>例：注文テーブルのユーザーIDなど |

##### どういうときに必要か？
- データベース設計時: データの構造を明確にするために。
- チーム開発時: 他のメンバーとデータ構造を共有するために。
- 既存システムの理解: 既存のデータベースを理解するために。
###### いつ必要になるか？
- プロジェクトの初期段階: 設計フェーズでデータベースの構造を決めるとき。
- 変更がある場合: データベースの構造を変更するとき。
- ドキュメント作成時: ドキュメントにデータベースの構造を含めるとき。

##### ER図を作成するにあたり便利な公式サイト

Draw.io: https://www.draw.io/
無料で使えるオンラインのダイアグラム作成ツール

Lucidchart: https://www.lucidchart.com/
直感的なインターフェースでER図を作成できる

dbdiagram.io: https://dbdiagram.io/
DBMLを使って簡単にER図を生成できるサイト

ERDPlus: https://erdplus.com/
ER図だけでなく、リレーショナルスキーマやUMLクラス図なども作成できる

Creately: https://creately.com/
コラボレーション機能が充実しているダイアグラム作成ツール

Gliffy: https://www.gliffy.com/
シンプルなインターフェースで、ER図を簡単に作成できる



## 早速表で確認してみよう 

| 項目 | DBML（Database Markup Language） | Mermaid |
| - | - | - |
| 目的 | データベーススキーマの定義・設計 | 	ダイアグラムの生成（フローチャート、シーケンス図など） |
| 主な利用分野 | データベース設計、ER図の生成 | ソフトウェア設計、プロセスの可視化 |
| 利点 | データベースに特化、簡潔な記述 | 多様なダイアグラムを生成可能、視覚的に理解しやすい |
| 欠点 | データベース以外の用途には不向き | 	複雑なデータベーススキーマの表現には不向き |
| 記法の特徴 | データベースのテーブル、カラム、リレーションを記述 | ノードとエッジを使ったダイアグラムの記述 |
| 適切な場面 | データベースの設計・ドキュメント化 | プロジェクトのフロー、プロセスの可視化、UMLダイアグラム |


## コードでも違いを確認してみよう
- **DBMLの例**
```java
Table users {
  id int [pk, increment]
  name varchar
  email varchar
  created_at timestamp
}

Table posts {
  id int [pk, increment]
  user_id int [ref: > users.id]
  title varchar
  body text
  created_at timestamp
}
```
このコードは、usersとpostsの2つのテーブルを定義している
usersテーブルにはid、name、email、created_atのカラムがある
postsテーブルにはid、user_id、title、body、created_atのカラムがある
user_idはusersテーブルのidに参照（外部キー）している

- Mermaid記法の例
```java
erDiagram
  USERS {
    int id PK "increment"
    varchar name
    varchar email
    timestamp created_at
  }

  POSTS {
    int id PK "increment"
    int user_id FK "ref: > users.id"
    varchar title
    text body
    timestamp created_at
  }

  USERS ||--o{ POSTS: "has many"
```
USERSとPOSTSの2つのエンティティ（テーブル）を定義している
それぞれのフィールド（カラム）をリストし、USERSがPOSTSを「多く持つ」というリレーションを表現している
||--o{ の部分で、USERSからPOSTSへの1対多のリレーションを示している
PKはプライマリーキー（主キー）で、FKはフォーリンキー（外部キー）を示している


## さいごに
ER図作成にあたり一般的にひろく知られているであろうサイトも掲載してみました。私自身はシックなデザインのdbdiagramのみ使用しただけです。フリープランのものもあれば有料会員になることでできる幅も広がってくるサイトもあるのでご自身の環境に合わせて選択するのがいいかと思います。
DBMLとMerimaidに関しても個人なら自分のつかいやすい方でいいかと思いますが、チームの場合は誰かが先頭だって決めるものになるのか？
今回の記事が参考になれば幸いです:relaxed:
TaniumとDeep Instinctの連携方法

TaniumとDeep Instinctの連携方法について説明します。以下は一般的な手順ですが、特定の環境やバージョンによっては異なる場合がありますので、公式ドキュメントを参照するか、サポートに問い合わせることをお勧めします。

**1. 準備**
Taniumのセットアップ: Taniumサーバーとエージェントが正しくインストールされていることを確認します。
Deep Instinctのセットアップ: Deep Instinctサーバーとエージェントが正しくインストールされていることを確認します。

**2. APIの有効化**
Tanium APIの有効化: Tanium Serverの管理コンソールでAPIを有効化します。
Deep Instinct APIの有効化: Deep Instinct管理コンソールでAPIを有効化します。

**3. 認証情報の取得**
Tanium: APIキーや必要な認証情報を取得します。
Deep Instinct: APIキーや必要な認証情報を取得します。

**4. スクリプトの作成**
以下のようなPythonスクリプトを作成して、TaniumとDeep InstinctのAPIを使用して連携を実現します。

`例: Pythonスクリプト`
```ruby:python

import requests

# Tanium API認証情報
tanium_url = "https://tanium.server/api/v2/"
tanium_api_key = "your_tanium_api_key"

# Deep Instinct API認証情報
deep_instinct_url = "https://deepinstinct.server/api/"
deep_instinct_api_key = "your_deep_instinct_api_key"

# Taniumからエンドポイントデータを取得
def get_tanium_endpoints():
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {tanium_api_key}'
    }
    response = requests.get(f'{tanium_url}endpoints', headers=headers)
    return response.json()

# Deep Instinctにエンドポイントデータを送信
def send_to_deep_instinct(endpoints):
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {deep_instinct_api_key}'
    }
    for endpoint in endpoints:
        data = {
            "endpoint_id": endpoint["id"],
            "hostname": endpoint["hostname"],
            # 他の必要なフィールドを追加
        }
        response = requests.post(f'{deep_instinct_url}endpoints', headers=headers, json=data)
        print(response.status_code, response.text)

# メイン処理
if __name__ == "__main__":
    tanium_endpoints = get_tanium_endpoints()
    send_to_deep_instinct(tanium_endpoints["data"])

```
**5. スクリプトの実行**
作成したスクリプトをサーバー上で実行し、Taniumから取得したエンドポイントデータをDeep Instinctに送信します。

**6. 自動化の設定**
スクリプトを定期的に実行するために、cronジョブや他のスケジューリングツールを使用します。

**注意点**
- **APIレート制限**：TaniumおよびDeep InstinctのAPIにはレート制限がある場合があるため、注意が必要です。
- **セキュリティ**：認証情報は安全に管理し、外部に漏れないようにします。

これで、TaniumとDeep Instinctの基本的な連携が実現できます。詳細な設定や特定の要件に応じたカスタマイズが必要な場合は、それぞれの公式ドキュメントを参照してください。
液晶)サウンドオシロスコープのまとめ(オシロ)(ATM0177B5等)


----------------------------------------------------


![o_coq177.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/bd357f20-c0f9-a188-854c-714730179095.jpeg)



----------------------------------------------------

●　しくみ

https://qiita.com/caa45040/items/846e066637f1b334648c


●　Arduino UNO R3 + ATM0177B5 (ST7735S(P))


折れ線グラフ風

1ch


https://qiita.com/caa45040/items/024a63d78550c134b209


2ch


https://qiita.com/caa45040/items/f860f02daa48e526f24c


+-オシロ風表示


1ch


https://qiita.com/caa45040/items/cc136267b80c33b2c489


2ch


https://qiita.com/caa45040/items/9beead2923cdf552a101


棒グラフ風


1ch


https://qiita.com/caa45040/items/7a0ebc9232892f1b208e



●　STM32G071 + X-NUCLEO-GFX01M1 (ILI9341)


+-オシロ風表示


1ch


https://qiita.com/caa45040/items/2d2991d3ec610507d6ed


2ch


https://qiita.com/caa45040/items/bae5503722347de44019
firebase deploy で"HTTP Error: 401, Request had invalid authentication credentials."が出る

# はじめに
**Next.js×TypeScript**で作成したプロジェクトをfirebase deploy したところ、*"HTTP Error: 401, Request had invalid authentication credentials."のエラーが出たので解決方法をまとめます。
# 問題
今回の401エラーは、**Firebaseのデプロイ時に認証エラーが発生している**ことを指しています。
私の場合は、**すでにGoogle Cloudで権限の設定をしている＋ログインもしている　にもかかわらず、このようなエラーが出ました。**
# 解決方法
下記のコマンドで再ログインをすると解決しました。
```
firebase login --reauth
```
# おわりに
Reactプロジェクトだとこのような再ログインを求められることはなかったのですが、Next.jsのプロジェクトでは何回か引っかかります。謎です。
【Suno AIでつくった楽曲】しろぶりゅーの歌 ver.2 (3拍子 + 吉田日出子さん 上海バンスキング風編曲)【動画 2分06秒】【YouTubeチャンネルからの転記です】

この記事は、わたしの[YouTubeチャンネル](https://bit.ly/Yamanaka-YouTube "Living without things. 持たない生き方 手放す生き方")にある公開動画を転記しております。
( どこかのタイミングで、プログラミング-Google Apps Script or iPaaS-Zapier をつかって自動転記させる予定です )

転記のための時間コストを少なくしたいので、文字装飾( Markdown記法 )を極力つかわずに書いております。

こちらが動画内容です👇

***

![01 YouTube再生中の画像 Suno AI _ しろぶりゅーの歌 ver.2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386308/7f33a9a9-a696-18e7-55cc-509fe7568678.png)



* # 動画URL
    * https://youtu.be/yo5e06TgtSo

<br>

* # 動画タイトル
    * 【Suno AIでつくった楽曲】しろぶりゅーの歌 ver.2 (3拍子 + 吉田日出子さん 上海バンスキング風編曲)【動画 2分06秒】

<br>

* # 動画の説明欄(一部を抜粋)

📅撮影日 = 2024-07-21(日)

Suno AIとは、文章から音楽を生成することができるAI( Text-to-Music-AI )です。
わたしは、2024-04-02(火)に初めてSuno AIで有償プランを契約してから、時々楽曲をつくって遊んでいます。

🎦【Suno AI】文章から音楽を生成するAI( Text-to-Music-AI )で、3分間で2曲、6分間で4曲作りました【試聴可能】1)伴侶の曲 2)税理士の曲【動画 16分11秒】
https://youtu.be/QKfhk4HgQ_g

🎦“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe

🎦“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


今回は、Suno AIでつくった曲を WAV で出力してから、動画編集いたしました。

スロージョギングの途中に、早朝の中目黒で偶然出会った「しろぶりゅー」-ShiroBrew-のテーマソング( イメージソングは和製英語です )を、1人のファンとして自主的につくりました。
つまり「しろぶりゅー」のファンメイドテーマソングです。

ぜひ聴いてみてください。
そして、ぜひみなさんも、あなたが大好きなお店やブランドや企業のために楽曲をつくってみてください！

作曲日:
2024-07-20(土)

Suno AI 契約の種類:
Pro Plan

楽曲の正式名称:
しろぶりゅーの歌 #2

Suno AI Library URL:
https://bit.ly/ShiroBrew-02

Custom Mode: On

Audio Inputs: Not Used

With Vocals:


---


Lyrics(without Meta tags):

真っ白な心

そよ風感じる

コーヒーの香りと
真っ白な心


---


Lyrics & Meta tags:

[Break]

[Intro]

[Whistling]

[Verse]
真っ白な心

[Verse 2]
そよ風感じる

[Chorus]
コーヒーの香りと
真っ白な心

[Scat]

[Chuckles]

[Outro]


---


Suno AIへの指示文章( プロンプト/Prompt ): Custom Modeの場合は”Style of Music”を指定します。


🇬🇧English

[Waltz][180 seconds][Lo-fi][Female voice][Strings]


🇯🇵日本語訳

[ワルツ][180秒][ローファイ][女性の声][弦楽器]


---


Suno AI 公式URL
https://accounts.suno.ai


SHIROノMONO 公式URL - Instagram
https://www.instagram.com/shiro_nomono


---


✓ 🎥この動画と関連が強いわたしの動画 ↙
　・“Suno AIでつくった楽曲”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe


　・“効果的にSuno AIを活用するヒント”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


　・“Suno AIで3拍子”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghNy-xIeeMZV6D2YAnax9Nzw


　・“しろぶりゅー ファンメイドソング”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghPk5-_YwWl499DNAOVKlcvZ


✓ 🎥Shortened URL for this video | この動画の短縮URL ↙
　https://bit.ly/4bUGUn1
SwiftUI　fullScreenCoverを使用した画面遷移方法

SwiftUIでfullScreenCoverを利用した画面遷移方法です。

# 完成イメージ
![Videotogif (6).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/60b54a63-e275-556c-0223-8370e97b6828.gif)


# コード内容

```.swift
struct HomeView: View {
    @State var showFullScreenCover: Bool = false

    var body: some View {
        NavigationView {
            Button("fullScreenCover遷移サンプル"){
                showFullScreenCover.toggle()
            }       
            .navigationTitle("実装サンプル")
        }
        .fullScreenCover(isPresented: $showFullScreenCover) {
            Text("fullScreenCover遷移サンプル")
        }
    }
}
```

`@State var showFullScreenCover: Bool = false`
こちらで表示、非表示の状態を管理する変数を定義しておきます。

```
.fullScreenCover(isPresented: $showFullScreenCover) {
    Text("fullScreenCover遷移サンプル")
}
```
`isPresented`に先ほど定義したシートの状態を管理する変数を設定します。
`Text("fullScreenCover遷移サンプル")`こちらは表示したい画面に変えてください。

以上でfullScreenCoverを使用した画面遷移ができます。
Vue Routerのコンポーネントリロードを実現する

# はじめに
VueでSPAを作成する際によく使われる[Vue Router](https://www.npmjs.com/package/vue-router)にて、現在のコンポーネントをリロードさせる方法について考えてみました。
クエリやパラメータなどを変更して再読み込みしたい場合など、リロードしたいケースが出てくる時はあると思います。
ただ、同じルートだと`router.push`を使用してもコンポーネントのリロードは行われないので、方法を考える必要がありますね。

調べてみると、[こちらの記事](https://qiita.com/buddypia/items/11638860eb04dfe56df7)やその他の記事で`router.go({ path: router.currentRoute.path, force: true })`でできるとありましたが、どこかで仕様が変わったのか現在(ver4.4.0)だと動作しません。
恐らくVue3になり、それに対応するver4.xから色々と変わったのだろうと思いますが…
考えて実装してみました。

# 方法
ということで早速ですが、実装したのが以下のコードです。

```app-router.vue
<script setup>
import { RouterView } from 'vue-router';
import useRouterComponentStore from './router-component-store.js';

const routerComponentStore = useRouterComponentStore();
</script>

<template>
  <RouterView :key="routerComponentStore.key"/>
</template>
```

```router-component-store.js
import { defineStore } from 'pinia';

const useRouterComponentStore = defineStore('routerComponent', () => {
  const key = ref(1);

  /** コンポーネントのリロード */
  function reload () {
    key.value *= -1;
  }

  return { key, reload };
});

export default useRouterComponentStore;
```

```index.js
import { createApp } from 'vue';
import { createRouter, createWebHashHistory } from 'vue-router';
import AppRouter from './app-router.vue';

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: '/',
      name: 'home',
      component: () => { return import('./views/home.vue'); }
    },
    {
      path: '/detail',
      name: 'detail',
      component: () => { return import('./views/detail.vue'); }
    },
    // その他ルーティング設定
  ]
});

createApp(AppRouter)
.use(router)
.mount('#app');
```

ひとまず解説をすると、`<RouterView :key="routerComponentStore.key"/>`が肝になります。
Vueの特別な属性として[`key`](https://ja.vuejs.org/api/built-in-special-attributes#key)が存在しており、これの値を変動させることでそのコンポーネントを再読み込みさせることができます。
つまり`RouterView`に`key`を設定し、リロードしたい時にその`key`の値を変更すれば現在のルートのコンポーネントをリロードできる訳ですね。

後は`key`の値を変更させる方法になります。
`v-model:key`で設定して各router内のコンポーネント側で個々にemitする方法とかもありますが、今回は[pinia](https://pinia.vuejs.org/)を使用しています。
piniaで**routerComponent**ストアを定義してそこに`key`の値を設定し、`key`を更新する`reload`関数を定義します。
関数内の処理ではとにかく`key`の値が変わればいいので、何回呼び出しても無限に値が変わるように1と-1を交互に繰り返すロジックにしてみました。

後は個々のコンポーネントで**routerComponent**ストアを呼び出し、`reload`関数を実行すればリロードできます。こんな感じ。

```detail.vue
<script setup>
import useRouterComponentStore from './router-component-store.js';

const routerComponentStore = useRouterComponentStore();
</script>

<template>
  <div>詳細</div>
  <button type="button" @click="routerComponentStore.reload()">画面更新！</button>
</template>
```

これでリロードをお好みのタイミングでできますね！

## 注意点
今更ですが、この方法は再マウントが走るので処理としては重い形になります。（よっぽどのことが無い限りは気にするほどではありませんが）
[`onBeforeRouteUpdate`](https://router.vuejs.org/guide/essentials/dynamic-matching.html#Reacting-to-Params-Changes)を使用する形で十分なのか？など、本当に必要かを考えたほうがいいですね。
paiza.ioでelixir その302

# 概要
paiza.ioでelixirやってみた。
elixirみつけたので、やってみた。

# 参考にしたページ

https://qiita.com/t-yamanashi/items/3d17a635164ac755c784

# サンプルコード

```

File.read!("/proc/cpuinfo")
|> String.split("\n")
|> Enum.filter(&String.match?(&1, ~r/cpu MHz/))
|> Enum.each(&IO.puts(&1))


```

# 実行結果

```
cpu MHz		: 2500.000
cpu MHz		: 2500.000
cpu MHz		: 2500.000
cpu MHz		: 3199.998
cpu MHz		: 2500.000
cpu MHz		: 2500.000
cpu MHz		: 2500.000
cpu MHz		: 3200.000
```

# 成果物

https://paiza.io/projects/O4yjWVPesKH92_zed2cpJg


以上。
【セッションレポート】「Amazon FSx for NetApp ONTAPのパフォーマンスチューニング要素をまとめてみた」に参加しました

# はじめに
本記事はClassmethod Odyssey(DevelopersIO 2024)のリアルイベント(7/20)において Classmethod の のんピ さんが講演された「Amazon FSx for NetApp ONTAPのパフォーマンスチューニング要素をまとめてみた」のレポートです。

# 公式セッション紹介
> このセッションではAmazon FSx for NetApp ONTAPのパフォーマンスを最適化するための主要な要素について解説します。ストレージやネットワーク、ONTAPの内部設定など、さまざまな観点からパフォーマンスチューニングの要素と設定方法を紹介します。

# 発表資料
- [Amazon FSx for NetApp ONTAPのパフォーマンスチューニング要素をまとめてみた](https://speakerdeck.com/non97/amazon-fsx-for-netapp-ontapnohahuomansutiyuninkuyao-su-womatometemita-number-cm-odyssey-number-devio2024)

# 概要／おすすめポイント
内容としてはFSxONTAPのパフォーマンスチューニングの話ですが、FSxONTAPに限らずパフォーマンスの課題があるときにどうしていくか？という普遍的な話から入られていたので、パフォーマンス問題が発生したときに立ち止まって資料を確認すると見逃がしとか次の一手が見つかるかもしれません。

もちろん、FSxONTAPでの知見も詰まっており、こんな時はこうしたら？というのが20個以上例示されていたので発表資料公開されたら保存しておきましょう！

# セッション内容の紹介

パフォーマンスチューニングなので、次のような流れででした。
1. ボトルネックの把握の話
    - なぜパフォーマンスチューニングをするのか
    - チューニングしないとどうなるか
    - チューニングしたら？
1. 負荷テストの話
    - 最小限のコストで最大限の効果
    - コストは費用そのものだけではなく設計コスト・運用コストなども含む
1. FSxONTAPのチューニング
    以下のポイントそれぞれでチューニング観点を例示
    確認はインフラ側(メトリクスとか)から、設定変更はボトルネックから
    ワークロード毎の深堀の仕方なども例示あり
    - メトリクス
    - FSxONTAPの設定
    - ネットワーク
    - クライアント
1. チューニング事例の紹介


# まとめ
セッション内容の紹介にあるように、実際のチューニングの流れから事例含めてお話されていたので、ONTAPのパフォーマンスで困ったらまずこのセッションを振り返ると良いのでは、と思いました。

発表の後に少し会話しましたが、現時点では？メトリクスなどからドリルダウンしてどのプロセスがリソースを消費しているのか、にはたどり着けないので、qosコマンドで確認する必要があるよ、という話でした。
また、特定のタイミングでロードが高くなるようなタイミングでは、eventbridgeなどでこのタイミングはアラートあげない、みたいなこともよく行われているとのことでした。


ご本人のセッション説明([[登壇レポート] Amazon FSx for NetApp ONTAPのパフォーマンスチューニング要素をまとめてみた](https://dev.classmethod.jp/articles/amazon-fsx-for-netapp-ontap-performance-tuning-devio2024/))が上がってますので、そちらもご確認ください！
SSD1306)サウンドオシロスコープのまとめ(M5Stamp S3)(オシロ)



----------------------------------------------


![o_coq210.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/860d064b-a969-ad19-d1cf-928c431abe35.jpeg)



----------------------------------------------



1ch


https://qiita.com/caa45040/items/e67577d2b9cf627e205d


2ch


https://qiita.com/caa45040/items/85c3877975a555a4abf7


3ch


https://qiita.com/caa45040/items/eb9ad2b515267a3dcbee


4ch


https://qiita.com/caa45040/items/9e027b066e63a2958156
OpenStudioのチュートリアルを試してみる　その11

# 1. はじめに
先日[OpenStudioのチュートリアルを試してみる　その10](https://qiita.com/bebebefu/items/2ae1ad27121b79c5a9fe)の記事にて、以下のリンクの動画シリーズで紹介されているOpenStudioを用いたfire station（消防署）のモデル作成・シミュレーションの12番目の動画についての手順を追っていきました。今回はこの動画シリーズの13番目の動画の手順を追っていきたいと思います。

https://www.youtube.com/playlist?list=PLRW2KXkdSVUdY2iQ6yjohNT5E5ElLVIhU

# 2. 実施環境
CPU: CORE i5 8th Gen
メモリ: 8GB
OS: Windows 11 22H2

# 3. 手順
本記事で内容・手順を追った動画（上記動画シリーズの13番目の動画）：

https://www.youtube.com/watch?v=hOfMFtyfehQ&list=PLRW2KXkdSVUdY2iQ6yjohNT5E5ElLVIhU&index=13

## 3.1 OverheadDoorの設定
解説動画では、以下の図で赤枠で囲んだSpace Tabタブをクリックした後に、黄枠で囲んだ"Subsufaces"のタブをクリックすると以下の画像が出ます。

![初期画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/f0055a08-9340-5503-2cc1-539d16cbcf1e.png)

そしてSpace Name 101の以下の図で赤枠で囲んだところ（"Surface type"はOverheadDoor）のConstructionには何も設定されていないことが確認できます。解説動画の中ではConstructionsのタブから設定できることも述べられていますが、Surface typeタブからの設定方法が解説されているので、この記事でもその方法を実施します。

![スクリーンショット 2024-07-20 081442 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/e84a8d7c-3fd4-e9c0-2096-b8ff45677855.png)

設定方法としては、まず以下の図の赤枠で囲んだ"Libarary"のタブから"Typical Insulated Metal Door R-1.43 125"を選び、黄枠で囲んだ"Subsurface Name"の"Face 10"の"Construction"ところにドラッグアンドドロップしてきます。

![doorの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/2e3a060e-6e2e-21eb-8533-a60a8833a1f2.png)

次に"Face9"と"Face11"のSpaceのところに先ほどの設定をコピーしてきます。方法としては以下の図で赤枠で囲んだチェックボックスにチェックを入れて、黄枠で囲んだ"Typical Insulated Metal Door R-1.43 125"をクリックして、青枠で囲んだ"Apply to Selected"をクリックします。

![設定のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/3d72f2ec-226c-3f6e-e034-79ae369de558.png)

## 3.2 GlassDoorの設定
Space Tabタブの"Subsufaces"のタブをクリックして表示される画面において、下にスクロールしていくと、Space Name 110においては"Glass Door"が設定されていないことが確認できます（以下の図で赤枠で囲んだところ）。

![glass空.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/59db0923-f89d-2f03-4464-7c21e68dcf2b.png)

前節ではSurface typeタブから設定しましたが、ここではConstructionsのタブから設定するため、まず以下の図の赤枠で囲んだConstructionsのタブをクリックします。

![constructionタブ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/785d2bef-0798-8b3c-db43-ea5196418d5c.png)

以下の図で赤枠で囲んだ"My Model"のタブをクリックして、"Constructions"から以下の図で黄枠で囲んだ"189.1-2009 Res 2A Window Metal framing all other"を青枠で囲んだ"Glass Doors"のところにドラッグアンドドロップしてきます。

![glassドラッグアンドドロップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/74584d0f-9021-2d4f-ad6b-a31a3bcad515.png)

この設定をした後に、Space Tabタブの"Subsufaces"のタブをクリックして表示される画面において、Space Name 110のところを確認すると、以下の図の赤枠で囲んだところのように"Glass Doors"のところに先ほどの設定が反映されていることが確認できます。

![スクリーンショット 2024-07-20 085439 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/d339d56c-9efb-eace-73ec-ac888b2d1dc0.png)

# 4. まとめ
とりあえずここまでも特にエラーなく進めることができました。
次回は動画シリーズの14番目：https://www.youtube.com/watch?v=WyTVm_trmZs&list=PLRW2KXkdSVUdY2iQ6yjohNT5E5ElLVIhU&index=14 を実施していきたいと思います。
【Python3】野球の審判 (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire

**問題: 野球のストライクとボールのコール**

**入力**: 投球数 `N` と各投球の結果 `s_1` から `s_n` (`strike` または `ball`)
**出力**:
- ストライクが 1 〜 2 つたまったとき → `"strike!"`
- ストライクが 3 つたまったとき → `"out!"`
- ボールが 1 〜 3 つたまったとき → `"ball!"`
- ボールが 4 つたまったとき → `"fourball!"`

**アプローチ**:
1. 標準入力から投球数 `N` と各投球の結果を読み込む
2. ストライクとボールのカウントを初期化
3. 各投球結果を基にカウントを更新し、適切なコールを出力

**コード**:
```python
# 標準入力からデータを読み込む
import sys
input = sys.stdin.read().strip().split()
N = int(input[0])  # 投球数
throws = input[1:N + 1]  # 投球結果リスト

# ストライクとボールのカウントを初期化
strike_count = 0
ball_count = 0

# 各投球結果に対して適切なコールを出力
for throw in throws:
    if throw == "strike":
        strike_count += 1
        if strike_count == 3:
            print("out!")
            break
        else:
            print("strike!")
    elif throw == "ball":
        ball_count += 1
        if ball_count == 4:
            print("fourball!")
            break
        else:
            print("ball!")
```

**コードの説明**:
1. **データの読み込み**:
    - `sys.stdin.read().strip().split()` で標準入力からデータを読み込み、スペース区切りで分割します。
    - 最初の値を投球数 `N` として整数に変換。
    - 残りの値を投球結果リスト `throws` に格納。

2. **カウントの初期化**:
    - `strike_count` と `ball_count` を 0 に初期化。

3. **投球結果の処理**:
    - 各投球結果 `throw` を順に処理。
    - `throw` が `"strike"` の場合、`strike_count` を増加させ、3 つに達したら `"out!"` を出力してループを終了。そうでなければ `"strike!"` を出力。
    - `throw` が `"ball"` の場合、`ball_count` を増加させ、4 つに達したら `"fourball!"` を出力してループを終了。そうでなければ `"ball!"` を出力。

このプログラムは、与えられた投球結果に基づいてストライクとボールのカウントを更新し、適切なコールを出力します。
【Python3】宝くじ (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/lottery

**問題: 宝くじの当選結果を判定**

**入力**: 当選番号 `b`、購入した宝くじの数 `n`、および購入した各宝くじの番号 `a_1` から `a_n`
**出力**: 各宝くじが何等に当選したかを出力

**アプローチ**:
1. 当選番号 `b`、購入した宝くじの数 `n`、および購入した各宝くじの番号 `a_1` から `a_n` を標準入力から読み込む
2. 各宝くじの番号を当選番号と比較して何等に当選したか判定
3. 結果を出力

**コード**:
```python
# 標準入力からデータを読み込む
import sys
input = sys.stdin.read().strip().split()
b = int(input[0])  # 当選番号
n = int(input[1])  # 購入した宝くじの数
tickets = [int(input[i+2]) for i in range(n)]  # 購入した宝くじの番号リスト

# 判定結果を格納するリスト
results = []

# 各宝くじの番号について判定
for ticket in tickets:
    if ticket == b:
        results.append("first")
    elif ticket == b - 1 or ticket == b + 1:
        results.append("adjacent")
    elif ticket % 10000 == b % 10000 and ticket != b:
        results.append("second")
    elif ticket % 1000 == b % 1000 and ticket != b and ticket % 10000 != b % 10000:
        results.append("third")
    else:
        results.append("blank")

# 結果を出力
for result in results:
    print(result)
```

**コードの説明**:
1. **データの読み込み**:
    - `sys.stdin.read().strip().split()` で標準入力からデータを読み込み、スペース区切りで分割します。
    - 最初の値を当選番号 `b` として整数に変換。
    - 次の値を購入した宝くじの数 `n` として整数に変換。
    - 残りの値を購入した宝くじの番号リスト `tickets` に格納。

2. **判定**:
    - 各宝くじの番号 `ticket` について以下の条件をチェック:
        - `ticket == b` の場合は "first"。
        - `ticket == b - 1` または `ticket == b + 1` の場合は "adjacent"。
        - 下4桁が一致し、かつ `ticket != b` の場合は "second"。
        - 下3桁が一致し、かつ `ticket != b` および下4桁が一致しない場合は "third"。
        - それ以外は "blank"。

3. **結果の出力**:
    - `results` リストに格納した判定結果を順に出力。

このプログラムは、与えられた宝くじの番号に対して各等級の判定を行い、結果を正確に出力します。
JavaScript初心者必見！ゼロから学べる実践入門

はじめに
---
JavaScriptは現代のウェブ開発において不可欠なスキルです。これからプログラミングを始めようとしている方や、基本からしっかり学びたいという方のために、本記事ではゼロからJavaScriptを学ぶための実践的なガイドを提供します。

JavaScriptとは？
---
JavaScriptは、ウェブページに動的な機能を追加するためのプログラミング言語です。クライアントサイドで実行されるため、ユーザーのブラウザで直接動作し、インタラクティブなユーザー体験を提供します。

JavaScriptの基本構文
---
```1. 変数とデータ型
let message = "Hello, World!"; // 文字列型
let number = 42; // 数値型
let isActive = true; // 真偽値型
```
``` 2.演算子
let a = 5;
let b = 10;

let sum = a + b; // 足し算
let difference = a - b; // 引き算
let product = a * b; // 掛け算
let quotient = a / b; // 割り算
```

``` 3.条件分岐
let age = 20;

if (age >= 18) {
  console.log("成人です");
} else {
  console.log("未成年です");
}
```

``` 4.ループ処理
for (let i = 0; i < 5; i++) {
  console.log(i);
}
```

``` 5.関数の理解
function add(a, b) {
    return a + b;
}

let result = add(5, 3); // resultは8になります
console.log(result);
```
```6.無名関数
let multiply = function(x, y) {
    return x * y;
};
```
``` 7.アロー関数
let divide = (x, y) => x / y;
```

``` 8.オブジェクト
let person = {
    name: "John",
    age: 30,
    greet: function() {
        console.log("Hello, " + this.name);
    }
};

console.log(person.name); // "John"
person.greet(); // "Hello, John"
```
``` 9.配列
let fruits = ["apple", "banana", "cherry"];

console.log(fruits[0]); // "apple"
fruits.push("date"); // 配列に新しい要素を追加
console.log(fruits); // ["apple", "banana", "cherry", "date"]
```


非同期処理とPromise
---
JavaScriptでは、非同期処理を扱うためのPromiseやasync/awaitがあります。これにより、時間のかかる処理を効率的に扱うことができます。
```
let promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("Done!"), 1000);
});

promise.then((message) => {
    console.log(message); // "Done!"
});
```

``` 
// async/awaitの基本例:
async function fetchData() {
    let response = await fetch('https://api.example.com/data');
    let data = await response.json();
    console.log(data);
}

fetchData();
```
DOM操作とイベント処理
---
JavaScriptを使ってHTMLの要素を操作したり、ユーザーのアクションに応じた処理を行うことができます。
```
let heading = document.getElementById("main-heading");
heading.textContent = "新しい見出し";
```
```
// イベント処理の例
<button id="clickButton">クリックしてね</button>
<script>
    document.getElementById("clickButton").addEventListener("click", () => {
        alert("ボタンがクリックされました！");
    });
</script>
```

実践的な例
---
ユーザーからの入力を受け取り、それに応じた処理を行う例です。
```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ユーザー入力</title>
</head>
<body>
    <input type="text" id="nameInput" placeholder="名前を入力してください">
    <button onclick="greetUser()">挨拶</button>
    <p id="greeting"></p>

    <script>
        function greetUser() {
            let name = document.getElementById("nameInput").value;
            let greeting = `こんにちは、${name}さん！`;
            document.getElementById("greeting").textContent = greeting;
        }
    </script>
</body>
</html>

```

まとめ
---
JavaScriptの基本を学ぶことで、ウェブ開発の基礎を築くことができます。
【Python3】Fizz Buzz (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz

**問題: 1からNまでの整数を表示するが、特定の条件で文字列を代わりに表示**

**入力**: 整数 `N`
**出力**:
- 3の倍数かつ5の倍数のときには、"Fizz Buzz"
- 3の倍数のときには、"Fizz"
- 5の倍数のときには、"Buzz"
- それ以外の数値はそのまま表示

**アプローチ**:
1. 標準入力から整数 `N` を読み込む
2. 1からNまでの整数について条件を確認し、適切な文字列を生成
3. 結果を出力

**コード**:
```python
# 標準入力から整数Nを読み込む
N = int(input().strip())

# 1からNまでの整数を順に処理
for i in range(1, N + 1):
    # 3の倍数かつ5の倍数のとき
    if i % 3 == 0 and i % 5 == 0:
        print("Fizz Buzz")
    # 3の倍数のとき
    elif i % 3 == 0:
        print("Fizz")
    # 5の倍数のとき
    elif i % 5 == 0:
        print("Buzz")
    # その他の数値のとき
    else:
        print(i)
```

**コードの説明**:
1. **整数の読み込み**:
    - `input().strip()` を使って標準入力から入力を読み込みます。
    - `int()` を使って入力された文字列を整数 `N` に変換します。

2. **数値の処理**:
    - `for` ループを使って1からNまでの整数 `i` を順に処理します。
    - 各 `i` に対して条件を確認し、適切な文字列を出力します。
    - 3の倍数かつ5の倍数の場合、`"Fizz Buzz"` を出力します。
    - 3の倍数の場合、`"Fizz"` を出力します。
    - 5の倍数の場合、`"Buzz"` を出力します。
    - それ以外の場合、数値 `i` をそのまま出力します。

このプログラムは、1からNまでの整数を順に処理し、指定された条件に従って適切な出力を行います。
JS/TSでRGBをPIXI JSのColorの数値型に変換するには?

# JS/TSでRGBをPIXI JSのColorの数値型に変換するには?

### Javascript版
```javascript
export function ToHex(R,G,B) {
  return R << 16 | G << 8 | B;
}
```

### Typescript版
```typescript
export function ToHex(R:number,G:number,B:number) {
  return R << 16 | G << 8 | B;
}
```
【Python3】【殿堂入りキャンペーン】N倍の文字列 (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_archive/square

**問題: 指定された個数の「*」を繋げた文字列を出力**

**入力**: 整数 `N`
**出力**: `N` 個の「*」を繋げた文字列

**アプローチ**:
1. 標準入力から整数 `N` を読み込む
2. `N` 個の「*」を繋げた文字列を生成
3. 結果を出力

**コード**:
```python
# 標準入力から整数Nを読み込む
N = int(input().strip())

# N個の「*」を繋げた文字列を生成
result = '*' * N

# 結果を出力
print(result)
```

**コードの説明**:
1. **整数の読み込み**:
    - `input().strip()` を使って標準入力から入力を読み込みます。
    - `int()` を使って入力された文字列を整数 `N` に変換します。

2. **文字列の生成**:
    - `'*' * N` で、N個の「*」を繋げた文字列を生成します。
    - この結果を `result` に格納します。

3. **結果の出力**:
    - `print(result)` を使って、生成した文字列を出力します。

このプログラムは、指定された個数の「*」を繋げた文字列を正確に出力します。
CSS初心者必見！ゼロから学べる実践入門

はじめに
----
CSS（Cascading Style Sheets）は、ウェブサイトのデザインを制御するための言語です。HTMLがウェブページの構造を決定するのに対し、CSSはその見た目をスタイリングします。この記事では、CSS初心者がゼロから学ぶための基本的な知識と実践的なテクニックを紹介します。

CSSとは？
---
CSSは、ウェブページのレイアウトやデザインを調整するためのスタイルシート言語です。色、フォント、レイアウト、スペーシングなどを設定することができます。HTMLと組み合わせて使用することで、視覚的に魅力的なウェブページを作成することができます。

CSSの基本構造
---
CSSは、セレクタとプロパティ、値から成り立っています。基本的な構造は以下の通りです。

```
selector {
  property: value;
}
```
`selector（セレクタ）`: スタイルを適用するHTML要素を指定します。
`property（プロパティ）`: スタイルの種類を決定します（例: color、font-size）。
`value（値）`: プロパティに設定する具体的な値です（例: red、16px）。

CSSの基本的なプロパティ
---
```
p {
  color: blue;
}
```
`color`: テキストの色を設定します。
___
```
h1 {
  font-size: 24px;
}
```
`font-size`: テキストのサイズを設定します。
___
```
.box {
  background-color: lightgray;
}
```
`background-color`: 背景の色を設定します。
___
```
.container {
  margin: 20px;
}
```
`margin`: 要素の外側の余白を設定します。

___
```
.button {
  padding: 10px 20px;
}
```
`padding`: 要素の内側の余白を設定します。
___
CSSの適用方法
---
```
<p style="color: green;">Hello World!</p>
```
インラインスタイル: HTML要素内に直接スタイルを指定します。
___
```
<style>
  body {
    font-family: Arial, sans-serif;
  }
</style>
```
内部スタイルシート: HTML文書の<head>内にスタイルを記述します。
___
```
<link rel="stylesheet" href="styles.css">
```
外部スタイルシート: 別ファイルにスタイルを記述し、HTML文書からリンクします。
___
実践的な例
---
``` .html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Simple Page</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header>
    <h1>Welcome to My Website</h1>
  </header>
  <main>
    <section>
      <p>This is a simple web page.</p>
      <button class="btn">Click Me</button>
    </section>
  </main>
  <footer>
    <p>&copy; 2024 My Website</p>
  </footer>
</body>
</html>
```
``` .css
body {
  font-family: Arial, sans-serif;
  background-color: #f4f4f4;
  color: #333;
}

header {
  background-color: #333;
  color: #fff;
  padding: 10px;
  text-align: center;
}

h1 {
  margin: 0;
}

.btn {
  background-color: #007bff;
  border: none;
  color: white;
  padding: 10px 20px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 16px;
  margin: 4px 2px;
  cursor: pointer;
  border-radius: 5px;
}

footer {
  background-color: #333;
  color: white;
  text-align: center;
  padding: 10px;
  position: fixed;
  bottom: 0;
  width: 100%;
}

```

まとめ
----
CSSの基本を押さえることで、ウェブページのデザインやレイアウトを自由にコントロールできるようになります。
【Python3】Eメールアドレス (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_archive/email_address


**問題: Eメールアドレスの構築**

**入力**: ローカル部 `s` とドメイン `t` が改行区切りで与えられる
**出力**: `s@t` の形式でEメールアドレスを出力

**アプローチ**:
1. 標準入力からローカル部 `s` とドメイン `t` を読み込む
2. `s` と `t` を `@` で結合してEメールアドレスを生成
3. 結果を出力

**コード**:
```python
# 標準入力からローカル部とドメインを読み込む
s = input().strip()
t = input().strip()

# Eメールアドレスの形式で結合
email_address = s + "@" + t

# 結果を出力
print(email_address)
```

**コードの説明**:
1. **文字列の読み込み**:
    - `input().strip()` を使って標準入力からローカル部 `s` を読み込みます。
    - もう一度 `input().strip()` を使ってドメイン `t` を読み込みます。
    - `strip()` メソッドを使って、文字列の前後にある余分な空白や改行を取り除きます。

2. **Eメールアドレスの生成**:
    - `s` と `t` を `"@"` で結合して、Eメールアドレス `email_address` を生成します。

3. **結果の出力**:
    - `print(email_address)` を使って、生成したEメールアドレスを出力します。

このプログラムは、ローカル部とドメインからEメールアドレスを構築し、正しい形式で出力します。
【Python3】足し算 (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_sample/addition

**問題: 2つの正の整数の合計を計算**

**入力**: 半角スペース区切りで2つの整数 `a` と `b`
**出力**: `a` と `b` を足した結果

**アプローチ**:
1. 標準入力から1行の文字列を読み込む
2. 半角スペースで分割して2つの整数 `a` と `b` を取得
3. 整数に変換して合計を計算
4. 結果を出力

**コード**:
```python
# 標準入力から1行の文字列を読み込む
input_line = input().strip()

# 読み込んだ文字列を半角スペースで分割して2つの整数を取得
a, b = map(int, input_line.split())

# 整数に変換して合計を計算
result = a + b

# 結果を出力
print(result)
```

**コードの説明**:
1. **文字列の読み込み**:
    - `input().strip()` を使って標準入力から1行の文字列を読み込みます。
    - `strip()` メソッドを使って、文字列の前後にある余分な空白や改行を取り除きます。

2. **文字列の分割**:
    - `split()` メソッドを使って、文字列を半角スペースで分割します。
    - `map(int, input_line.split())` を使って、分割した文字列を整数に変換します。

3. **合計の計算**:
    - `a + b` で2つの整数の合計を計算し、結果を `result` に格納します。

4. **結果の出力**:
    - `print(result)` を使って、合計を出力します。

このプログラムは、2つの整数を読み込み、その合計を計算して出力します。
【Python3】一番小さい値 (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num

**問題: 5つの正の整数のうち最も小さい数字を出力**

**入力**: 5行にわたって正の整数が1つずつ与えられる
**出力**: 最小の整数を出力

**アプローチ**:
1. 標準入力から5つの整数を読み込む
2. 最小の整数を見つけて出力

**コード**:
```python
# 5つの整数を格納するリスト
numbers = []

# 標準入力から5行の整数を読み込む
for _ in range(5):
    num = int(input())
    numbers.append(num)

# リストの中で最も小さい数を探す
min_number = min(numbers)

# 最小の整数を出力する
print(min_number)
```

**コードの説明**:
1. **リストの初期化**:
    - 5つの整数を格納するための空のリスト `numbers` を用意します。

2. **標準入力から整数を読み込む**:
    - `for` ループを使って5回繰り返し、各行から整数を読み込みリストに追加します。
    - `input()` 関数で入力を取得し、`int()` 関数で整数に変換してリスト `numbers` に追加します。

3. **最小の整数を見つける**:
    - `min()` 関数を使ってリスト `numbers` の中から最小の整数を見つけます。
    - 結果を `min_number` 変数に格納します。

4. **最小の整数を出力**:
    - `print()` 関数を使って `min_number` を出力します。

このプログラムは、5つの正の整数を読み込み、その中で最も小さい整数を出力します。
Javaで「return文」の動作を確認してみた

# 概要

Javaで「return文」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/method/index7.html

# 実装

以下のファイルを作成しました。
```JSample7_1.java
class JSample7_1{
  public static void main(String args[]){
    int data[];

    test(15, 4);
    test(7, 0);
  }

  private static void test(int n1, int n2){
    if (n2 == 0){
      System.out.println("0で割ることはできません");
      return;
    }

    System.out.println(n1 + " / " + n2 + " = " + (n1 / n2));
    return;
  }
}
```

以下のコマンドを実行しました。
```
$ javac JSample7_1.java 
$ java JSample7_1 
15 / 4 = 3
0で割ることはできません
```

# まとめ

何かの役に立てばと。
VS Codeの拡張機能「Live Preview」

## はじめに
VScodeでHTMLやCSSを編集する際、編集のたびに保存してブラウザを開いて確認をするのって面倒ですよね。そこでオススメな拡張機能を記載します。

## Live Preview とは？
Live Previewは、VS Code内でリアルタイムにHTMLファイルのプレビューを表示できる拡張機能です。この拡張機能を使うと、ブラウザを別ウィンドウで開く必要がなく、エディタ内で直接Webページの見た目や動作を確認できます。

## 使い方
VSCodeを開き、サイドバーの「拡張機能」で「LivePreview」を検索してダウンロードします。
[![Image from Gyazo](https://i.gyazo.com/2770c6925908879b8bdf13173fc1f9be.png)](https://gyazo.com/2770c6925908879b8bdf13173fc1f9be)

編集しているHTMLファイルを右クリックして「プリビューの表示」を選択するか、右上の「プリビューの表示」アイコンを押すとプリビュー画面を確認できます。
[![Image from Gyazo](https://i.gyazo.com/2db2558ef31647dbb520535d0adeddd8.gif)](https://gyazo.com/2db2558ef31647dbb520535d0adeddd8)

[![Image from Gyazo](https://i.gyazo.com/5eb363a1b6d960c55461440ef0992e41.gif)](https://gyazo.com/5eb363a1b6d960c55461440ef0992e41)

HTMLやCSSを変更するとリアルタイムでプリビュー表示されます。
[![Image from Gyazo](https://i.gyazo.com/11784259ae7b73f1e5228035aa1c3689.gif)](https://gyazo.com/11784259ae7b73f1e5228035aa1c3689)

## 使った感想
HTMLやCSSの変更がリアルタイムで分かるのは編集する際にすごく便利に感じます。
ただし、htmlの拡張子でしかプレビュー画面を見ることができないようです。
paiza Dランク問題で振り返るプログラミング学習について~paiza×Qiita×経験談~

## はじめに
この記事では、paiza×Qiitaの記事投稿キャンペーンの一環として、筆者が初めてpaiza Dランク問題を解いた頃（2021年4月）を振り返り、自分なりのプログラミング学習方法についてまとめます。

筆者がプログラミングに興味を持つきっかけとなったのはpaizaであり、その3ヶ月後（2021年6月）にQiitaの執筆を始め、色々と試行錯誤していた記憶があります。そのため、本記事は **paizaとQiitaを通じて初めてプログラミングに挑戦した経験（paiza×Qiita×経験談）** を元にしています。

この記事は、Dランクではじめてpaizaのプログラミング問題を解こうとしている方を対象としています。

## 解答例
まずは、Dランク問題の解答例を紹介します。言語はPython 3を使用します。

### N倍の文字列
```python
n = int(input())
print("*" * n)
```

### Eメールアドレス
```python
local = input()
domain = input()
email_address = f"{local}@{domain}"
print(email_address)
```

### 足し算
```python
ab_map = map(int, input().split())
ab_sum = sum(ab_map)
print(ab_sum)
```

### 一番小さい値
```python
n_list = [int(input()) for _ in range(5)]
n_min = min(n_list)
print(n_min)
```

### 文字の一致
```python
moji_a = input()
moji_b = input()

if moji_a == moji_b:
    print("OK")
else:
    print("NG")
```

## 学習方法
ここでは、個人的に思うpaizaを活用したプログラミング学習方法を紹介します。

### 別解を用いた学習
プログラミング問題の解法は一通りではありません。入力と出力さえ合っていれば、その間は自由にコーディングできます。paizaでは一度解いた問題を何度でもチャレンジできるので、自分なりの解法を考えると楽しく学べます。

例えば、以下のコードは一番小さい値を求めるものです。

```python
n_list = [int(input()) for _ in range(5)]
n_min = min(n_list)
print(n_min)
```

これを別の方法で実装することもできます。

```python
n_min = float("inf")
for _ in range(5):
    n_i = int(input())
    if n_i < n_min:
        n_min = n_i
print(n_min)
```

このように別解を考えることで、if文の使い方や[Pythonの最大値の表記方法](https://qiita.com/You-Tarin/items/eebdc39c6f8ffd2770f0)などを学ぶことができます。問題に合わせた最適な解法を模索することも学習の一環です。

### 汎用化を求めた学習
paizaの問題では、入力条件が与えられ、その条件を満たすようにコーディングします。Dランクでは限定的な値の範囲が多いですが、Cランク以上になると汎用性が求められます。

以下は、[足し算](#足し算)の問題を汎用的にコーディングした例です。

```python:汎用的
ab_map = map(int, input().split())
ab_sum = sum(ab_map)
print(ab_sum)
```

一方、以下は汎用性を意識しないコードです。

```python:汎用的でない
a, b = map(int, input().split())
print(a + b)
```

汎用性を意識したコードは、任意の入力に対応できるため、より幅広いシーンで活用できます。

paizaを通して、このような汎用化について学ぶことができます。

### 美しさを追求した学習
美しさを意識したコーディングも重要です。最初は難しいかもしれませんが、[PEP8](https://pep8-ja.readthedocs.io/ja/latest/)を参考にすることで、可読性の高いコードを書けるようになります。（PEP8については[PEP8について簡単にまとめてみた！](https://qiita.com/eric50905/items/5a98219bc9b87e732d18)も参考になります。）

例えば、[一番小さい値](#一番小さい値)のコードを見てみます。

```python
n_list = [int(input()) for _ in range(5)]
n_min = min(n_list)
print(n_min)
```

このコードでは、`_`を使用しています。`_`は使用しない変数を明示的に示す際に使う慣習があります。最初は知らないことも多いかもしれませんが、調べたり、実際にコードを書いていく中で自然に身についていきます。

実際、筆者もpaiza学習3ヶ月頃に[Qiitaで記事を投稿](https://qiita.com/yusuke_s_yusuke/items/3fc2430a22a2714197e4)した際、コメントで`_`の使い方を教えていただいた経験があります。

このようにpaiza×Qiitaの組み合わせは、プログラミング学習の場として最適だと思います。

## まとめ
この記事では、筆者の初めてのpaiza Dランク問題への取り組みと、プログラミング学習の方法について紹介しました。別解を考えること、汎用性を意識すること、コードの美しさを追求することが、学習をより深めるポイントだと思います。paizaとQiitaの組み合わせを活用し、楽しく効果的にプログラミングスキルを向上させましょう。
create.xyzの細かい修正


# create.xyz

create.xyzは，ノーコードでWebアプリを作成できるサイトです．
他のノーコードツールと比べて，このサイトは，Chat-GPTやClaude,Stable diffusionなどのAIツールのAPIを無料で使用することができます！

https://create-xyz-fyi.webflow.io/internal-tools

:::note info
有料プランもありますが，無料プランでも20プロジェクトまでは無料で作れます．
ただし，publishした時に，create.xyzのロゴが表示されるので，それが気になる場合は有料プランにする必要があります．
:::

## ノーコードツールの特徴

ノーコードツールは，プログラミングをしなくてもWebアプリを作成できるツールで，プログラミング初心者の方でも簡単にWebアプリを作成できます．

ただし，細かい部分の修正を今回のようなサイトでは，言葉で伝えるため難しい部分があります．

例えば，create.xyzでは，タイトルを変更したいだけなのに，全体のデザインが変わってしまうことがあります．

そういったノーコードツールでも細かい修正をするポイントを押さえておくと，スムーズに作業が進むと思います．

:::note info
もちろんコードをダウンロードしてという方法もありますが，create.xyzで生成したものでないと，Chat-GPTなどのAPIを無料で使用することができません．
:::

## 初めのプロンプト文の作成

はじめのプロンプト文を作る時は，自分で頑張ってプロンプトを考えずにGPTsに頼りましょう．

:::note info
GPTsは，あるタスクに特化したChatGPTであり，無料ユーザーでも現在は使うことができます．
:::

最もチャット数が多かったものとして以下のものがありました．
ランキングは変わっている可能性があるため，GPTsの検索画面で`create.xyz`と検索してみてください．

https://chatgpt.com/g/g-iJdn6hy9k-create-prompt

## 修正のポイント

create.xyzで修正する際のポイントは以下の通りです．

### 1. プロンプト文を一度全て削除してから修正する

create.xyzは現在作成されているwebアプリを元にして，プロンプトを読んで新しいwebアプリを作成しているようです．

そのため，一部分のみ変更したいなどの場合は，全てのプロンプト文を削除してから修正したい部分のみ伝えてみましょう．

### 2. ステップバイステップで修正する

一度に多くの修正をさせようとすると，（無料版だからかもしれませんが）生成が途中で止まってしまう場合があります．
フロントのコード行数で300行あたりまで行くと止まりやすくなります．（プロジェクトによって異なるとは思います．）

ただし1,2機能ずつ追加していくと，結果的には多くの行数を生成することができます．

これはおそらく，create.xyzが生成する際に，前のwebアプリの情報を用いているためだと思われます．

:::note info
途中で止まってしまった場合，`続きを書いて`とだけ入力すると続きを含めて生成してくれます．
:::

### 3. 履歴を使用

生成してもらったwebアプリが動かない時は，fix bugsと表示されますが，そのボタンを押しても修正されないことがあります．
これは，前のwebアプリの情報を用いているためだと考えられるので，このような時は，一度うまく行っていたバージョンに戻してから，再度修正を行いましょう．


:::note info
create.xyzでは生成したバージョンを自動で保存してくれます．
上の履歴っぽいアイコンを押してみましょう．
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670528/38b26806-6dc1-c2af-673f-a625161898cd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670528/37defc26-8e05-154e-f25f-8ea6c37876fe.png)


### 4. コードをそのまま貼り付ける

ノーコードツールのメリットはどこに？となりそうですが，タイトル文や，Chat-GPTへのプロンプト文を変更したいだけの場合は，生成されたコードをそのまま貼り付けて，修正したい分だけ編集してみましょう．

~~実際にコードを書くというよりかは，日本語の部分を編集するだけなので，簡単に修正できると思います．~~

:::note warn
コードをクリックすることで直接編集できました．
前のバージョンに戻って同じようなものを生成して欲しいときはコードを貼り付けるのも良いでしょう．
:::

:::note info
コードを貼り付けた場合，初めに`「このコードを生成してください．」`と書くと，プロンプトに書いたコードをそのまま生成してくれます．
たまに，インポート文を勝手に抜いたりするので，`「インポートを忘れないでください」`など書くと良いでしょう．
:::

:::note info
さらに，コードの部分を```で囲むと，より良いでしょう．
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670528/589c94bc-9de7-700d-bad8-4029053dfca7.png)

### 5. プロンプト文を整理する

プロンプト文を追加するタイプでやっていると，情報がごちゃごちゃになってしまったり，一部では変更したが，他を編集しておらず矛盾が生じることがあります．

そのため，ある程度回数を重ねたら，またGPTsなどにプロンプト文をそのまま投げて，整理してもらうと良いでしょう．

## まとめ

create.xyzは，ノーコードツールの中でもAIツールを無料で使用できるので，非常に便利です．
ノーコードツールは細かい修正が難しいという難点がありますが， この機会にぜひ使ってみましょう！
【解決しました!】Raspberry Pi Pico W + モータードライバーを使って回路を組みましたがモーターが回りません...

## はじめに

Rasberry pi pico w を利用してプラレールをラジコン化している記事を見かけて自分もやってみたい!と思い各種部品を購入しました。ブレッドボード上で回路を組んでみたのですがモーターが全く動きません... :sob: 

## 困っていること
モーターが回らない原因は何でしょうか...? もし確認すべき点などありましたら教えていただけると助かります :bow: 

## 部品

* Raspberry Pi Pico W
* [モータードライバー TB6612FNG](https://www.amazon.co.jp/TB6612FNG%E6%90%AD%E8%BC%89-%E3%83%87%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%A2%E3%83%BC%E3%82%BF%E3%83%BC%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90-%E3%83%94%E3%83%B3%E3%83%98%E3%83%83%E3%83%80%E4%BB%98%E3%81%8D-%E5%AE%9F%E8%A3%85%E6%B8%88%E3%81%A7%E3%81%99%E3%81%90%E4%BD%BF%E3%81%88%E3%81%BE%E3%81%99-1-2A%C3%972%E5%87%BA%E5%8A%9B/dp/B09C5MSYCC)
* [DCモーター](https://www.amazon.co.jp/dp/B00288BIE4)
* [電池ボックス (単4 x 2)](https://www.amazon.co.jp/gp/product/B0BZR55P98)
* 単４電池 2個
* [ブレッドボード](https://www.amazon.co.jp/dp/B08B63VNCH)
* [ジャンパー線](https://www.amazon.co.jp/dp/B08B63VNCH)

## 回路図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29755/52bda9ce-3011-548d-2bdd-47f761b82743.png)

## プログラム

Raspberry Pi Pico WをPC(Mac)に接続し、Thonny経由でプログラムを保存します。

```python
from machine import Pin, PWM

STBY = machine.Pin(13, machine.Pin.OUT)
AIN1 = machine.Pin(14, machine.Pin.OUT)
AIN2 = machine.Pin(15, machine.Pin.OUT)
PWMA = machine.PWM(machine.Pin(16))
LED = machine.Pin('LED', machine.Pin.OUT)

LED.on() # プログラムが動いているのを確認するため
STBY.on()
AIN1.on()
AIN2.off()
PWMA.duty_u16(1000)
```

## 試したこと

* Raspberry Pi Pico Wに電源は供給されているのか
    * LED点灯の実装をいれることで確認できるようにしました = 電源は供給されていました

* 電池ボックスとモーターを直接つなぐ
    * モーターは動く = モーターは壊れていない

## :new: 原因が分かりました!

### 結論
PWMで周波数の設定が漏れていました。以下の実装のように `PWMA.freq(1000)`で周波数の設定をすることで、モーターが回るようになりました! :tada:

```ruby
from machine import Pin, PWM

STBY = machine.Pin(13, machine.Pin.OUT)
AIN1 = machine.Pin(14, machine.Pin.OUT)
AIN2 = machine.Pin(15, machine.Pin.OUT)
PWMA = machine.PWM(machine.Pin(16))
PWMA.freq(1000) #  周波数の設定1kHz
LED = machine.Pin('LED', machine.Pin.OUT)

LED.on() # プログラムが動いているのを確認するため
STBY.on()
AIN1.on()
AIN2.off()

# デューティー比 = 100%(高速), 25%(低速)
# PWMA.duty_u16(65535) # Duty 100%
PWMA.duty_u16(49152) # Duty 75%
# PWMA.duty_u16(32768) # Duty 50%
# PWMA.duty_u16(16384) # Duty 25%
```

原因究明の過程でお助け相談のツイートをしましたが、３名の方から助言のコメントを頂きました。ありがとうございました!

https://twitter.com/hypermkt/status/1814865582090805732