OmniAICreator/Qiita-1.07M huggingface dataset:
GitHub Actions で NuGet パッケージを作るための覚書

本来コレはこうするべき、という部分をすっ飛ばしてとにかく動けばいいというアクションを作る方法です。


- [`on.workflow_dispatch` と `on.workflow_call`](#onworkflow_dispatch-と-onworkflow_call)
- [`on.workflow_call` は `jobs.*.uses` 限定](#onworkflow_call-は-jobsuses-限定)
- [真の決定論的ビルドの有効化方法](#真の決定論的ビルドの有効化方法)
- [`git` おまじない](#git-おまじない)
- [リモートリポジトリがあればプルして無ければ新しく作る](#リモートリポジトリがあればプルして無ければ新しく作る)
- [変更があればプッシュしてプルリクエストを作る](#変更があればプッシュしてプルリクエストを作る)
- [ジョブ間／アクション間のデータのやり取り](#ジョブ間アクション間のデータのやり取り)



## `on.workflow_dispatch` と `on.workflow_call`

dispatch はウェブの Actions ページから起動するためのモノで、call は再利用可能なアクションとして利用するためのモノ。

`inputs` の内容はコピペで共用可能。dispatch に inputs があるとウェブページから値の設定が可能になる。

GitHub でリリースを作ったら、、、まで踏み込まないがカスタマイズはしたい、出力先のブランチ名を設定したい等の時に使える。



## `on.workflow_call` は `jobs.*.uses` 限定

`workflow_call` は チェックアウト後に `jobs.*.uses` からのみ利用可能。`jobs.*.steps.uses` では使えない。

（ジョブの `steps` から `uses` するとエラー。ジョブ直下の `uses` でのみ使える。紛らわしいので注意）



## 真の決定論的ビルドの有効化方法

C# プロジェクトの設定で決定論的ビルドを有効化していても実際には同一バイナリが出力されない。

同一バイナリを出力するにはビルド時に `-p:ContinuousIntegrationBuild=true` を設定する必要がある。

```bash
dotnet build -c Release --no-restore  -p:ContinuousIntegrationBuild=true
```

設定すると git リポジトリ全体に変更が無ければ同一バイナリが出力される。これは、`.cs` ファイルに変更が無くても `.github/workflows/*` に変更があれば出力されるバイナリが変わるということ。

（おそらく `.nupkg` のコンパイル元の同一性を保証したいとかそういう理由で、ドキュメント含めリポジトリの内容が完全に一致しないと同一バイナリを生成できない）



## `git` おまじない

ボットに作業させる手続き。

```bash
git config --global user.name  "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
```

プッシュしたら自動的にリモートリポジトリを追跡するように設定する方法。

```bash
git config --global --add --bool push.autoSetupRemote true
```


## リモートリポジトリがあればプルして無ければ新しく作る

ネットを探すとこうすれば出来ます！ こういう場合はこうです！ 適切にやるには！ が見つかるが `git checkout` 時代や `git switch` 時代など情報の鮮度がまちまち。とりあえず以下で良い。


```bash
git fetch

# リポジトリのスイッチに失敗したら新しく作る（-c）
git switch release/${{ inputs.release_ver }} || git switch -c release/${{ inputs.release_ver }}

# リモートからプル（新しく作った場合は失敗するので || true する）
git pull || true
```


## 変更があればプッシュしてプルリクエストを作る

まずは GitHub CLI の有効化を行う。

```bash
env:
  GH_TOKEN: ${{ github.token }}  # for github CLI
```

続いてコミットしてプッシュして PR を作る。

変更がない場合はコミットが失敗しプッシュも失敗するので `|| true` し、プルリクエストが既に存在する場合も失敗するのでコチラも `|| true` する。

```bash
# リポジトリの操作...
# ...

git commit -m "Precompiled Assembly for Unity" || true
git push || true
gh pr create -B main -t 'release/${{ inputs.release_ver }}' -b '' || true
```


## ジョブ間／アクション間のデータのやり取り

GitHub Actions では同一アクション（`.yml`）内でもジョブが違うとデータの共有が出来ない。なので、

https://github.com/actions/upload-artifact

してから

https://github.com/actions/download-artifact

する。または、

https://github.com/actions/cache

を使う。





--

リモートにリポジトリがあるか確認する方法はありますが、とりあえずで良い状況ならエラー時に別コマンドを実行する `||` で繋げてしまうのも一つの手です。

以上です。お疲れ様でした。
rex0220 計算式プラグイン テーブルに合計行を設定

計算式プラグインで、テーブルに合計行を設定してみます。

# 概要

テーブルに合計行を設定し、自動計算する例です。
[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)で合計計算。
[項目検証プラグイン](https://qiita.com/rex0220/items/be20fd879f5e1bc9e035)で、合計行を入力不可。
[ちょっと便利なプラグイン](https://qiita.com/rex0220/items/45883f15ccd34a68b8af)で、テーブルの背景色を設定。

![2024-07-30_12h26_57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/53bb57ad-0647-ecb8-9038-c62421a184e5.png)


# 操作例

![2024-07-30_12h29_40.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/078d1790-c16e-9861-a7e2-26cddb03bf81.gif)

# 計算式プラグイン設定

- テーブルに合計行が無い場合は、行を追加
- 最終行なら、合計計算

![2024-07-30_12h30_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/3e78cc56-fb77-7680-3aa0-fceeb0fde83c.png)

```.js
OPTION: 循環参照を許可

// テーブル SUBTABLE (editable)
IF(CONTAINS(担当者番号,"９９ 合計"),0,COUNTROW(テーブル)+1)

// テーブル.担当者番号 SINGLE_LINE_TEXT (editable)
IFS(
  COUNTROW(テーブル)=ROWNO(テーブル)+1,"９９ 合計",
  担当者番号="９９ 合計","",
  担当者番号,担当者番号
)

// テーブル.４月 NUMBER (editable)
IFS(担当者番号="９９ 合計",
  SUMIF(担当者番号!="９９ 合計",４月),
  担当者番号="","",
  ４月
)

// テーブル.５月 NUMBER (editable)
IFS(担当者番号="９９ 合計",
  SUMIF(担当者番号!="９９ 合計",５月),
  担当者番号="","",
  ５月
)
```

# 項目検証プラグイン設定

合計行なら、入力不可

![2024-07-30_12h33_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/db562cd8-37dc-e0f7-2d49-e7f21855e955.png)

# ちょっと便利なプラグイン設定

![2024-07-30_12h34_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/d36d2191-8d74-d89f-569f-1337d8fa59ae.png)
【マインクラフト（統合版）】Websocketサーバーを使って「スウィープロッド（範囲攻撃）」を作ってみました

# はじめに

以下のように「スウィープロッド」をメインハンドに持った状態で「ダッシュ＋スニーク」操作を実行する事で範囲攻撃が発動します。
![対牛発動](https://socket-manager.github.io/document/minecraft-contents/img/sweep-rod/survival_cow.gif "対牛発動")

射程距離は５ブロックで、発動時に範囲内にいるモブに大ダメージを与えます。
ダメージ付与ポイントは現在１５ポイントに設定していますので牛や羊などのモブは一撃で倒せます。

対ハスクの場合は２回の連続攻撃で倒せます。
以下の２回目の攻撃のように空中でも発動します。
![対ハスク発動](https://socket-manager.github.io/document/minecraft-contents/img/sweep-rod/survival_husk.gif "対ハスク発動")


# 動作環境

<dl>
    <dt>プラットフォーム</dt>
    <dd>Windows10</dd>
    <dt>マインクラフト（統合版）</dt>
    <dd>Windows Edition v1.21.2</dd>
    <dt>socket-manager</dt>
    <dd>v1.13.3</dd>
    <dt>言語</dt>
    <dd>PHP v8.2.4（v8.1.0以降）</dd>
</dl>


# 「スウィープロッド」の取得

socket-manager環境のビヘイビアパック／リソースパックなどのアドオンパックを適用しておけば、以下の方法でユニークアイテムとして「スウィープロッド」が手に入ります。

### ショップで購入する場合

以下のショップで購入できます。

https://qiita.com/glasses_seven/items/e77bfb43baf55e35680b/

### コマンドで取得する場合

以下はワールドオーナーやシステム組み込み用としてコマンドで取得する方法です。
<img src="https://socket-manager.github.io/document/minecraft-contents/img/sweep-rod/command_rod.png" height="600px" width="728px">

<img src="https://socket-manager.github.io/document/minecraft-contents/img/sweep-rod/get_rod.png" height="600px" width="728px">
あとはsocket-managerでWebsocketサーバーを起動後、マインクラフトからの接続が完了すれば「スウィープロッド」を含めた各種コンテンツが使えるようになります。

:::note info
socket-managerの導入方法やアドオンパックの所在については以下のページでご紹介していますのでご興味のある方はご覧ください。
:::

https://qiita.com/glasses_seven/items/433ac9d9fcbdb72c6d18/

:::note info
アドオンパックの適用方法については以下のページでご紹介しています。
:::

https://qiita.com/glasses_seven/items/a7d276b44c9437e7b0a4/


# サーバー側の実装

今回は二段ジャンプの実装でも使っていた"PlayerTravelled"というサブスクライブイベントを使用しています。
`travelMethod`の値（7:スニーク、8:ダッシュ）をみてそのイベントがスニークなのかダッシュなのかを判断できるようになっています。

:::note info
サブスクライブイベントの処理内容については以下のページでご紹介しています。
:::

https://socket-manager.github.io/document/extra-minecraft.html

注意しないといけないのが、この"PlayerTravelled"はイベントが発生した時に１回だけ発行されるわけではありません。
プレイヤーの移動距離に応じて複数回イベントが発生しています。

実装内容の詳細は他のコンテンツも含めて以下のページでご紹介していますのでご興味のある方はご覧ください。

https://socket-manager.github.io/document/minecraft-contents/sweep-rod.html


# おわりに

今回の実装で思わぬ副産物がありました。

攻撃発動時に「ダッシュ＋スニーク」操作でクリティカルのパーティクルを出しているのですが、以下のようにメインハンドで発動対象のアイテムを持っていなくてもパーティクルが表示されています。
![パーティクル表示](https://socket-manager.github.io/document/minecraft-contents/img/sweep-rod/critical_sneak.gif "パーティクル表示")

もちろん「スウィープロッド」は持っていないので攻撃は発動していませんが、これはこれでカッコイイのでそのまま残しておきますｗ

今回の実装は以下の実装でも活用しています。

https://qiita.com/glasses_seven/items/b45a80c91243177ff37f/

https://qiita.com/glasses_seven/items/cd55c6bd721a9ced1f06/

https://qiita.com/glasses_seven/items/d48d8716eb80daa2a518/
Beginners CTF 2022に参加してみた話。

はじめまして

下書きに保存されていたので2022年の内容ですが投稿します。

----------------------------------------
![CTF.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666899/d8c6580c-b020-1188-49f0-2c45936ceec8.png)
----------------------------------------
CTFとは
>CTF（Capture The Flag）とは、旗取りゲームのことです。情報セキュリティの分野では専門知識や技術を駆使して、隠されているFlag（答え）を見つけ出し、時間内に獲得した合計点数を競うものをCTF形式のハッキングコンテストと呼びます。クイズ形式の問題を解くほか、ネットワーク内で疑似的な攻防戦も行ったりすることもあります。(引用:https://www.nri-secure.co.jp/glossary/ctf)


所属チームは(881チーム中)44位でした。
![CTF rank.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666899/4916038a-c12b-6c44-c477-67a751eb4339.png)

---
Workato：Web上から簡単にファイルをダウンロードする

# はじめに

WorkatoでHTTP操作（HTTPリクエスト）を行う際、通常はHTTPコネクタが使用されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/716dc9bb-6a2c-de21-3765-42f9000f004f.png)

HTTPコネクタは汎用的に使える便利な機能ではありますが、コネクション設定が必要なため、Web上に一般公開されたオープンデータのようなパブリックなファイルをダウンロードする用途においてはやや手軽さに欠けます。

そのようなファイルをダウンロードする際は、HTTPコネクタではなく、File tools by Workatoコネクタを利用するのが手軽で便利です。

https://docs.workato.com/features/handling-binary-files.html

# File tools by Workatoを使うメリット

HTTPコネクタではなくFile tools by Workatoを使うメリットとして、次の点が挙げられます。

- コネクション設定が不要
- ファイル内容のエンコーディングを指定できる
- 関数を必要とすることなくBase64エンコーディングが行える
- ファイルストリーミングに対応しているため、1024MBを超えるファイルのダウンロードも可能

# 利用方法

## １．File tools by Workatoコネクタをレシピ上に追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/7afe526c-10cd-0ae3-1715-2925131ebdf1.png)

## ２．Get file from URLアクションを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/1316e915-5513-949f-7be8-50214d163c8d.png)

## ３．必要なパラメータを設定します。

Base64 encodingを「Yes」にした場合、指定されたURLからダウンロードした結果がBase64エンコードされた形で返されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/c6b37e6d-a8b0-8bbd-0c53-383a2717a993.png)

# 実行結果

このコネクタを実行すると、次の通りダウンロードしたファイルの中身とファイルサイズが返されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/d725e58f-9e8f-b965-0d33-3aff9151cdab.png)
入社して1か月後に基本情報技術者試験を受けた話

# はじめに
4月に入社して、1か月後に基本情報技術者試験を受験した話をさせていただきます。私と同じく新入社員で基本情報を受ける方々がいると思うので、試験当日までの学習内容をまとめたいと思います。

# 基本情報技術者試験
出題される問題はITの基本知識を問い、IT試験のベーシックな資格試験です。

| 内容 | 試験時間 |  出題数 | 合格基準 |
| ---- | ----     | ---- | ---- |
| 科目A | 90分    | 60問|60%以上 |
| 科目B | 100分  | 20問|60%以上 |

科目Aと科目Bともに60%以上の正答が必要です。科目Aは四択択一式、科目Bは多肢択一式です。また、出題範囲も広く、PCのハードウェアから経営に関する問題まで幅広く出題されます。

# 受験までの流れ
### 1. 受験日の設定
私のように、だらだら勉強してしまう人はまず受験日を設定することをおすすめします。基本情報の勉強時間は、全くの未経験者で**200時間**程度、経験者で**50時間**程度といわれています。私は大学で少しITを学んでいたので、**100時間**勉強することを目安に受験日を設定しました。受験日は三日前までであれば変更可能なので、不安があれば都度調整しましょう。なお、不合格の場合、受験後30日以降に再度受験できます。

### 2. 科目Aの勉強内容
私は参考書と過去問を使って勉強しました。基本的に過去問を解き、わからないところは参考書を使って勉強するという繰り返しです。基本情報は過去問と一字一句同じ問題が出るため、実際に私が受けた際も1~2割が過去問と同じ問題でした。過去問ベースでの勉強が一番効率良いと感じます。過去問は基本情報受験者御用達の「過去問道場」を使いました。

[過去問道場](https://www.fe-siken.com/fekakomon.php)

令和２年以降過去問は公式に公開されておらず、過去問道場での問題は模擬試験になりますが、以前に公開されていた問題を採用していたりと十分に解く価値はあります。
令和5年の問題からさかのぼり、平成29年まで勉強しました。初見で6割を超えるのは難しいですが、間違えた問題の回答例を理解しながら参考書を使ってインプットすると、初見の過去問でも7割、8割取れるようになります。そして、二周目で9割以上正答できるようになると十分です。

私の場合は、参考書を使ってインプットしましたが、正直必須ではないです。というのもWebサイトで検索すると、わかりやすい図示された例はいっぱいあるのでそれで問題ないです。chatgptでもいいかも

参考までに使った参考書を載せます。

[【令和６年度】 いちばんやさしい 基本情報技術者　絶対合格の教科書＋出る順問題集](https://www.amazon.co.jp/%E3%80%90%E4%BB%A4%E5%92%8C%EF%BC%96%E5%B9%B4%E5%BA%A6%E3%80%91-%E3%81%84%E3%81%A1%E3%81%B0%E3%82%93%E3%82%84%E3%81%95%E3%81%97%E3%81%84-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E7%B5%B6%E5%AF%BE%E5%90%88%E6%A0%BC%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8%EF%BC%8B%E5%87%BA%E3%82%8B%E9%A0%86%E5%95%8F%E9%A1%8C%E9%9B%86-%E9%AB%98%E6%A9%8B-%E4%BA%AC%E4%BB%8B/dp/4815624267/ref=asc_df_4815624267/?tag=jpgo-22&linkCode=df0&hvadid=676036410708&hvpos=&hvnetw=g&hvrand=14794579688348810829&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009250&hvtargid=pla-2265254305609&psc=1&mcid=8e1bcfc090a13d5789f65b35a87c5b13&th=1&psc=1&gad_source=1)

###  3. 科目Bの勉強内容
正直、こちらはほとんど勉強していません。IPAのサンプル問題を二回解いただけです。科目Bの出題は疑似コードを使った問題で、軽くプログラミングをやったことがある人なら大丈夫です。サンプル問題を解いて7割以上取れれば問題ありません。

ただし、科目Bが苦手な方にはYouTubeやUdemyを使った学習をおすすめします。過去問で勉強したいかといると思いますが、科目Bは令和2年に問題の傾向が変わり、それ以前の過去問とは全く異なるものになっています。私も一つ解いてみましたが正答率はたったの2割でした。

同じく基本情報を受けている人の中で、科目Bの勉強を以下のUdemyでしている人がいたので、参考にしてください。

[令和6年版：参考書の著者直伝！【基本情報技術者試験　科目B】Javaプログラミング言語を使った、科目B対策専門コース](https://www.udemy.com/course/kihon_joho_b/)

### 4. 試験日
試験当日は、科目AとBともに8割取るつもりで受験しましたが、実際は7割程度でした。科目Aでは過去問の出題が多いですが、見たことのない問題も出てくるので、心の準備をしておくと良いです。科目Bは時間に余裕があるので、十分に正答できると思います。また、試験時間が合計で190分あるにもかかわらず、間に10分ほどの休憩しかないので、前日はしっかり休息を取り、万全な状態で受けることをおすすめします。

# まとめ
総じて、ITを広く浅く問う資格試験なので、慣れてしまえば難しい試験ではありません。それに正答も6割以上であることから、比較的余裕をもって受験できると思います。
この記事が皆様の役立つと幸いです。
【ChatGPT＋Code Interpreter】で単語を傾けます。


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

　今回は、単語を傾けます。

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

　前回は
　　文字を回転・移動させての
　　　アニメしました。
[【ChatGPT＋Code Interpreter】で文字の回転をさせるアニメを作る。](https://qiita.com/kabumira/items/fe8623f01a28f2b70e29)

　今回は、
　　文字列を傾けます。
　　　文字を傾けるのは
　　　　前回やりましたので、
　　　　　その応用になりますかね。

　文字を傾けられるなら
　　単語も傾けられるはずです。

　今回は、
　　アニメにしません。

　では
　　そのPromptです。
```Text:単語を傾けるPrompt
CodeInterpreterで、以下の処理を行なってください。

画像サイズは512:512ピクセル、背景は白、文字色は黒、お願いします。
画像中央に単語“Work”を15度上げて、描画してください。
ダウンロードリンクを表示してください。
```
![work_text_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/5f4cf5cf-9a5f-233a-8e13-173bbe042b1a.png)

　残念ながら、
　　このPromptでは
　　　画像サイズを固定できません。

　指示どおりに
　　なる場合もありますけどね。

　今のところ、
　　固定方法がわかりません。
　　　わかったら、お知らせしますね。

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

　今回は、ここまで。
Gitでコミットしようとしたら、'user.name' と 'user.email' の設定が必要だと言われて、コミットできません。どうすればいいですか？

`"Make sure you configure your ‘user.name’ and ‘user.email’ in git"` というエラーが表示されるのは、Gitの設定が正しく行われていないためです。これを解決するためには、Gitの設定を行う必要があります。以下の手順で設定できます。

### Gitの設定手順

1. **Git Bashを開く**（またはターミナル）:
   - Windowsの場合は「Git Bash」や「PowerShell」など。
   - macOSやLinuxの場合は「Terminal」。

2. **ユーザー名とメールアドレスを設定する**:
   以下のコマンドを実行して、ユーザー名とメールアドレスを設定します。これらはあなたのGitのコミットに使用されます。

   ```sh
   git config --global user.name "Your Name"
   git config --global user.email "your.email@example.com"
   ```

   ここで `Your Name` と `your.email@example.com` をあなたの名前とメールアドレスに置き換えてください。

3. **設定が反映されたことを確認する**:
   設定が正しく反映されているか確認するために、以下のコマンドを実行します。

   ```sh
   git config --global --list
   ```

   これで、`user.name` と `user.email` が設定されていることが確認できるはずです。
Mac環境でのanacondaのsite-packagesの場所

## はじめに
こちらの記事に付随して、Macでのanaconsaの仮装環境のsite-packagesの場所が分からなかったため、書き留めておく

https://qiita.com/dorayakin/items/c45600df69a6ae6e5a39

## 結論
Macの場合は、以下の場所
```
 /Users/ユーザー名/opt/anaconda3/envs/仮装環境名/lib/pythonのバージョン/site-packages
```
Powershellでファイル結合（その１）


param (
    [string]$outputFile,
    [string]$inputFiles
)

# 引数のチェック
if (-not $outputFile -or -not $inputFiles) {
    Write-Host "Usage: script.ps1 -outputFile outputfile.txt -inputFiles inputfile1.txt,inputfile2.txt"
    exit 1
}

# 出力ファイルの初期化
if (Test-Path $outputFile) {
    Remove-Item $outputFile
}

# 入力ファイル名をカンマで分割して配列に格納
$inputFileArray = $inputFiles -split ','

# 配列の内容を処理
foreach ($inputFile in $inputFileArray) {
    if (-not (Test-Path $inputFile)) {
        Write-Host "Error: Input file $inputFile not found."
        exit 1
    }

    # 入力ファイルの内容を出力ファイルに追加
    Get-Content $inputFile | Add-Content $outputFile
}

Write-Host "Files combined successfully into $outputFile."
forkせずにDocker環境を構築する方法

## 初めに
さまざまなライブラリをgithubからみつけて味見をしている。
- Dockerは不可欠
    - Dockerなしでは、環境を壊しまくってしまう。
    - 同僚が簡単に手順をトレースすることができなくなってしまう。
    - venvでは、pythonのライブラリしか対応できない。

## forkせずにDocker環境を構築する方法
### 利用したいリポジトリ：
`git@github.com:foo/bar.git`

### 自作のリポジトリ
`git@github.com:baz/bar-docker.git`

- Dockerfile を作成する。
- この中で`git clone git@github.com:foo/bar.git`する。
- 利用したいリポジトリの中で必要とされている`apt install`, `python3 -m pip install アプリケーション名`を記述する。

- docker build, docker run を実行する。

## この方法の利点
- オリジナルのリポジトリをgit fork する必要がない。
- git fork しないから、オリジナルのリポジトリとの差分がどう生じているのかを気にしなくていい。
    - 間違えて、自分のローカルの変更をオリジナルに対してbranchをコミットしてしまおうとすることがない。
    - オリジナルのリポジトリの変更をgit pull しなくてよい。
- 自作のリポジトリには、オリジナルのコードを含まないので、リポジトリ構成が単純になる。
    - 自分の行なっている作業に関する最小限のコードが残る。
    - 自分の行なっている作業がわかりやすい。

## 私の利用状況
- いくつかのプロジェクトをJetson AGX Orinの環境に移植する際に使っている。
- Docker環境で作業し味見を終えて使わなくなっても、Docker環境構築用の自作のリポジトリが残っていれば、簡単に環境の再構築ができている。
ESCの非表示設定、Patchバージョンチェック、Prod環境の管理、WorkSpaceの項目非表示

## 1
ServiceNowコミュニティにはいろいろな記事が投稿されています。
その中で本日見たもので、自分が知らなかったものをいくつかピックアップしました。

## 2
ESCでインシデントを送信すると不要な項目が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/4dc5ece5-336e-25b9-9711-0033b13e0439.png)
ESCの赤枠項目を非表示するにはどうしたらよいか？

回答：
インスタンスエディターのCSSを以下の設定すること
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/a3ec6031-9a58-9ea7-9ac9-65348fa20e2f.png)

https://www.servicenow.com/community/developer-forum/unnecessary-items-are-displayed-when-submitting-incident-with/td-p/3001636

## 3
インストールされているサービスのバージョンのパッチを確認する
現在インスタンスを実行しているサービスのパッチを確認できる特定の場所をご存知ですか。

回答：
[システム診断] > [アップグレード履歴] に移動します。
https://www.servicenow.com/community/itom-forum/checking-patch-for-an-installed-service-now-version/td-p/898753

## 4
障害時の緊急アップデートとしては更新セットのあてこみと手動更新。手動更新のほうが手っ取り早いけれど、これは許容されるか？

回答：
No
一般に、実稼働環境ではこのような手動の開発作業は行われません。 ACL、ビジネスルールなどの非アクティブ化も = 開発。企業によっては、本番環境では管理者権限がないため、これが不可能な場合もあります。他の会社では、本番環境では常に管理者と協力するだけです 

通常、実稼働環境ではそのようなマニュアルを実行しませんが、場合によってはそれが実用的になることもあります。緊急性があり、エンドユーザーに影響があり、統合が壊れている場合、または無効化するのに多大な労力がかかる場合、わずか数秒の費用で手動で無効化することと比較して重要でしょうか?

私個人としては、たとえほんの数秒であっても、そのような手作業を常に押し戻そうとします。たとえば、すでに考え方のせいです。本番環境で開発するだけではありません。これを許可すると、本番環境でこれを直接実行すればよい、それが標準になるのを避けよう、という考え方を持ち始めるのが非常に簡単になります。

https://www.servicenow.com/community/upgrades-and-patching-forum/instance-management-best-practise/td-p/3001045

## 5
ロール/ユーザー グループに基づいて、リスク ワークスペースの左側のパネルにカスタム アイコンを表示/非表示にするにはどうすればよいですか?

画像の箇所を非表示したい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/8705de36-5c8f-1a5f-868a-72b2a074030f.png)

回答：
UX ページのプロパティでロールを指定できます。
"group": "top",
"badge":{},
"presence": {},
"availability": {"roles" : [
"admin"]}
}

Inside "availability":{"roles":["<role required to access custom icon>"]}

https://www.servicenow.com/community/grc-forum/how-to-show-hide-custom-icon-on-left-panel-in-risk-workspace/td-p/2747857

## 6
ワークスペースにリストを追加する方法
ここにリストを追加したい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/82ac31b2-71a1-1e16-8f3c-5a54bab9e2ee.png)

回答：
UX List Menu Configuration (sys_ux_list_menu_config) を変更する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/9a434f09-5ddf-0cfe-7179-1859c118cf76.png)

## 7
リストビューでフィルターで検索するときに表示される参考リストを変更することはできますか?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/f398b995-0eb1-7094-ad11-702191dcd189.png)

回答：
できない。これは検索ボックスであり、参照フィールドではありません。参照フィールドの属性を調整できます。検索ボックスには属性はありません。検索ボックスは、参照している列またはテーブルで文字列検索を行うだけです。

https://www.servicenow.com/community/developer-forum/is-it-possible-to-modify-the-reference-list-in-the-filters/m-p/2571875
paiza Aランク問題「本の整理」を Elixir で解いてみた

## はじめに

paiza A ランク問題を Elixir で解いてみます

## 本の整理

選択ソートで本を並び替えます

https://paiza.jp/works/mondai/real_event/book_sort



```elixir
defmodule Paiza do
  def main do
    [n, a] =
      :stdio
      |> IO.read(:all)
      |> String.trim()
      |> String.split("\n")

    n = String.to_integer(n)

    # 書棚の位置番号 => 本の番号
    a =
      a
      |> String.split(" ")
      |> Enum.map(&String.to_integer(&1))
      |> Enum.with_index()
      |> Enum.map(fn {a_k, k} -> {k, a_k - 1} end)
      |> Enum.into(%{})

    # 本の番号 => 書棚の位置番号
    p =
      a
      |> Enum.map(fn {k, a_k} -> {a_k, k} end)
      |> Enum.into(%{})

    # 選択ソート
    {sum, _s, _p} =
      0..n-1
      |> Enum.reduce({0, a, p}, fn k, {sum, s, p} ->
        {count, s, p} = selection_sort(Map.get(s, k), k, s, p)
        {sum + count, s, p}
      end)

    IO.puts(sum)
  end

  defp selection_sort(s_k, k, s, p) when s_k == k, do: {0, s, p}
  defp selection_sort(s_k, k, s, p) do
    index = Map.get(p, k)
    {
      1,
      s |> Map.put(k, k) |> Map.put(index, s_k),
      p |> Map.put(k, k) |> Map.put(s_k, index)
    }
  end
end

Paiza.main()
```

## 解説

最初は `List` のまま並び替えていたため、 3 秒の時間制限に引っかかってしまいました

`List` を使うと数が多い場合に処理が遅くなるため、 `Map` を使います

高速化のため、逆引きの `Map` も用意します

## まとめ

A ランクになってくると、処理効率も求められるようになります

`Enum.at` や `Enum.find_index` などを使うと遅くなるので、 `Map` や `:ets` を使いましょう
sharepointListに接続してレコードを追加する。

```vb
Sub AddRecordToSharePointList()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim strUser As String
    
    ' 現在のユーザー名を取得
    strUser = Environ("USERNAME")
    
    ' SharePointリストに接続
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("LinkedSharePointList")
    
    ' 新しいレコードを追加
    With rst
        .AddNew
        ![ColumnName1] = "Value1" ' カラム名と値を適宜変更
        ![ColumnName2] = "Value2" ' カラム名と値を適宜変更
        ![Timestamp] = Now ' 現在の時刻を追加
        ![AddedBy] = strUser ' 現在のユーザー名を追加
        .Update
    End With
    
    ' レコードセットを閉じる
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Sub
```
paizaのスキルチェック見本問題を解いてみた

# はじめに
paizaのスキルチェック見本問題を解きました

## 問題
>野球の各打者はストライクが 3 つたまるとアウトとなり、ボールが 4 つたまるとフォアボールとなります。
アウトあるいはフォアボールになると、この打者の番は終了します。
>
>あなたはストライクとボールを判定してコールする審判です。
その場の状況に合わせて適切なコールを出しましょう。
>
>【コール一覧】
ストライクが 1 〜 2 つたまったとき → "strike!"
ストライクが 3 つたまったとき → "out!"
ボールが 1 〜 3 つたまったとき → "ball!"
ボールが 4 つたまったとき → "fourball!"
>

>ある打者の番における投球の結果 (ストライクまたはボール) が与えられるので、各投球に対してどのようなコールをすればよいかを出力してください。
>なお、実際の野球にあっても上記にないルール (ヒット、ファウルなど) については考慮する必要はありません。


>1 球目: ボール → "ball!"
>2 球目: ストライク → "strike!"
>3 球目: ボール → "ball!"
>4 球目: ストライク → "strike!"
>5 球目: ストライク → "out!"

>5 球目では、ボールが 2 つ、ストライクが 3 つたまったのでこの打者はアウトとなります。
>これは、入力例 1 に対応しています。


>1 球目: ボール → "ball!"
>2 球目: ストライク → "strike!"
>3 球目: ボール → "ball!"
>4 球目: ボール → "ball!"
>5 球目: ストライク → "strike!"
>6 球目: ボール → "fourball!"

>6 球目では、ストライクが 2 つ、ボールが 4 つたまったのでこの打者はフォアボールとなります。
>これは、入力例 2 に対応しています。

## 実装したソースコード
```python3
def hantei(s_count,b_count,msg):
    if s_count == 3:
        print("out!")
    elif b_count == 4:
        print("fourball!")
    else:
        print(msg + "!") 

def main():
    num = int(input())
    s_count = 0
    b_count = 0
    for i in range(num):
        data = input()
        if data == "strike":
            s_count += 1 
        else:
            b_count += 1
        hantei(s_count,b_count,data)

if __name__ == "__main__":
    main()

```

## 結果
100点満点でした。

# 最後に
Cレベルの問題だそうです。
FastAPI を uvicorn で動かしているとき、SQLAlchemy のSQLが二重に出てしまう件

発行されたSQL文を表示したいとして検索をすると

```python
engine = create_async_engine(db_url, echo=True)
```

こんなふうに echo オプションをつけるというのが出てくるんですが、どうも標準でSQLAchermyのエンジンはINFOにSQLを吐くようなんですよね。なので、これをオンにしちゃうと

```console
backend-1  | 2024-07-30 00:44:22,335 INFO sqlalchemy.engine.Engine SELECT id 
backend-1  | FROM users
backend-1  | 2024-07-30 00:44:22 - sqlalchemy.engine.Engine - INFO - SELECT id
backend-1  | FROM users
```

こんなふうに2回表示されてしまいます。上が SQLAchemry が echo=True で出してるもの、下は（ぼくの環境では） uvicorn が出しているものです。

試行錯誤しています。
Grafanaで箱ひげ図（Boxplot）を描くーその１

### Excelで描いた箱ひげ図の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242268/82f768c4-3a73-d681-a7fa-f3f1b5e74330.png)

### 元のデータ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242268/c563b565-70a6-ff55-e733-d47fce229d20.png)

### Grafanaにプラグインを追加する
admin権限でログインしてプラグインを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242268/5e33890a-4d56-ebde-f8c2-d10cd84aebdd.png)
Business Chartsをインストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242268/54e3c128-0e0b-5d95-a041-d1cde2ed7b15.png)

## Business Chartsとは
Volkov Labsで作られたApache EChartsを用いたグラフ描画プラグイン
サイトにサンプルコードが大量にあるのでどう作るかコードをみて理解した方が早い
https://volkovlabs.io/plugins/volkovlabs-echarts-panel/

## Apache EChartsとは
オープンソースのJavaScriptライブラリ
これもサンプルコードが大量にあるのでどう作るかコードをみて理解した方が早い
https://echarts.apache.org/examples/en/index.html

## 作ったグラフはこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242268/fee8f559-fd5e-a4cc-b366-bfba6d0f31eb.png)

[Grafanaで箱ひげ図（Boxplot）を描くーその２](https://qiita.com/solarisintel/items/0631e27978d92fab7f29)
メールアドレスで簡単メンション！Webhook開始の使い方

# 1. はじめに
近頃自分は社内向けのSlackアプリやワークフローを作成する機会が多かったのですが、以下のような場合はSlackAPIを用いるのよりもワークフローのWebhook開始が手軽で良いということが分かりました。

* メールアドレスだけが分かっている状態でメンションを送りたい
* メッセージに複雑な機能を付与しない

スプレッドシートにてメールアドレスで人を管理している、といったシチュエーションにぴったりです。

# 2. Slack APIのデメリット
現状のSlack APIではメールアドレスのみを指定してメンション付きメッセージを送信する機能はありません。
私の知る限りでは下記の2step踏む必要があります。

1. users.lookupByEmailでユーザーIDを取得する
2. 文面を作成しchat.postMessageでメッセージを送る

しかしこれは正直なところ面倒なものです。

* 送りたいメッセージ数が多いとレート制限に引っかかりやすい
* 最初からSlackユーザーIDで人を管理していることなんてない
* エラー処理が大変…

# 3. Webhook開始の使い方
Slackワークフローを作成し「Webhookを使って開始する」を選択すれば、任意のデータ変数のデータタイプを「Slackユーザーのメールアドレス」として指定して送るだけですみます。

![スクリーンショット 2024-06-11 105803.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516891/3f41cf41-0c0b-0411-2d18-d6a9354d540e.png)

以下はこれに対応するGASの例になります。

```javascript
const SLACK_WORKFLOW_URL = "https://hooks.slack.com/triggers/から始まるURL"

const options = {
    method: "post",
    muteHttpExceptions: true,
    contentType: "application/json; charset=utf-8",
    payload: JSON.stringify({
        email: "example@email.com"
    }),
};

await UrlFetchApp.fetch(SLACK_WORKFLOW_URL, options)

return;
```

# 4. Webhook開始のメリット

送ったメールアドレスをユーザーIDや表示名に自動変換してくれるワークフローの便利機能が使えます！！！
![スクリーンショット 2024-06-11 105849.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516891/3576982e-d509-f970-a0fe-56390d120068.png)

ワークフローの範囲でできるボタンの設置や他サービスとの連携であれば、機能追加も気軽です。

# 5. まとめ
ついつい自由度の高いSlack APIに頼りがちですが、ワークフローの方が適している場面もあると今回知ることができたので記事にしました。

既に知っている人も多い内容だったかもしれませんが、自分と同じ初心者エンジニアの方の助けになれば幸いです。
【SwiftUI】シートへの値渡しにハマった

## はじめに
Swift歴3ヶ月の新米プログラマーのメモ。

## ハマったポイント
ユーザーの入力値から特定の文字列だけを抽出する非同期関数を作り、ボタンを押すとその関数の抽出結果をシートに渡して表示させるコードを書いたら、抽出結果が渡る前にシートが表示されてしまった。

## 原因
シートの表示トリガーを「isPresented」にしていた。

### 何が違うのか

そもそも値渡しをするなら、使い分け的に「item」の方を使うべきだったのだが、それは一旦置いておいて
関数の定義を見てみると、`@escaping`の引数に違いがある。

**isPresented**
```swift
public func sheet<Content>(isPresented: Binding<Bool>, onDismiss: (() -> Void)? = nil, @ViewBuilder content: @escaping () -> Content) -> some View where Content : View
```

**item**
```swift
public func sheet<Item, Content>(item: Binding<Item?>, onDismiss: (() -> Void)? = nil, @ViewBuilder content: @escaping (Item) -> Content) -> some View where Item : Identifiable, Content : View
```

今回の場合、"入力値から特定の文字列だけを抽出する処理"が非同期なため、「isPrsented」にすると抽出結果が渡されてからシートが表示されるか、シートが表示されてから抽出結果が渡されるかが未確定になってしまう。
「item」にすれば、抽出結果の値が入ることによってシートが表示されるので、抽出結果が確実に渡されることを証明することができる。

## ちなみに
どういう原理かはわからないが、ボタンアクションにキーボードを閉じる処理を加えても、ちゃんと抽出結果が渡ってからシートが表示されるようになった。

## 参考

https://developer.apple.com/documentation/swiftui/view/sheet(ispresented:ondismiss:content:)

https://developer.apple.com/documentation/swiftui/view/sheet(item:ondismiss:content:)
Lambda関数で日本語ファイルを処理する際にエラーが出た

# はじめに

Lambda関数でAWS CLIコマンドを使用して、日本語ファイル名のファイルをS3にアップロードしようとしたところ、エラーが出ました。

```
'utf-8' codec can't encode characters in ...
```

Lambda関数のランタイムは `Node.js20.x (OS: Amazon Linux 2023)` です。

# エラーの原因

まずは、環境変数設定で `LANG`　に `ja_JP.utf8` を設定してみますが、結果は変わらず。

![スクリーンショット 2024-07-29 15.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687813/fc945b3b-4e9d-94cd-144c-6edab6db41ab.png)

Amazon Linux 2023のDockerコンテナを起動して確認してみると、そもそもデフォルトで日本語のロケールデータが存在していませんでした。

```bash
$ docker run -it --rm amazonlinux:2023 bash
$ ls -l /usr/lib/locale
total 4
drwxr-xr-x 3 root root 4096 Jul  5 19:23 C.utf8
```

# 対応について

今回は、Lambdaレイヤーとして日本語ロケールデータを登録して、Lambda関数がそれを使用するようにすることで解決しました。

以下にその手順をまとめます。

## 1. 日本語ロケールデータのzipファイルを作成

Amazon Linux 2023のDockerコンテナを起動します。
この後、コンテナ内でLambdaレイヤーにアップロードするzipファイルを作成しますが、そのzipファイルにローカルからもアクセスできるように、`-v` オプションを使用します。

```bash
# 任意の作業ディレクトリに移動
$ cd ~/Desktop
# Dockerコンテナを起動して、glibc-langpack-ja と zip をインストール
$ docker run -it --rm -v ./volume:/volume amazonlinux:2023 bash
$ dnf -y install glibc-langpack-ja zip
```

これで日本語のロケールデータがインストールされました。

```bash
$ ls -l /usr/lib/locale
total 12
drwxr-xr-x 3 root root 4096 Jul  5 19:23 C.utf8
drwxr-xr-x 3 root root 4096 Jul 29 08:35 ja_JP.eucjp
drwxr-xr-x 3 root root 4096 Jul 29 08:35 ja_JP.utf8
```

このロケールデータをzipファイルにまとめます。

```bash
$ mkdir /volume/locale
$ cp -r /usr/lib/locale/ja_JP.utf8 /volume/locale/
$ cd /volume
$ zip -r locale.zip locale
```

## 2. Lambdaレイヤーを作成

前の手順で、`~/Desktop/volume/locale.zip` が作成されています。
このzipファイルを使用してLambdaレイヤーを作成します。

![スクリーンショット 2024-07-29 17.43.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687813/20c501c4-f6fe-be1a-e6b3-f26ddd4f5c60.png)

## 3. 対象のLambda関数にLambdaレイヤーを登録

Lambda関数のレイヤー登録画面から先ほど作成したLambdaレイヤーを登録します。

## 4. Lambdaレイヤーの日本語ロケールデータを使用できるように環境変数を設定

Lambdaレイヤーは `/opt` 配下に展開されるため、日本語ロケールデータは `/opt/locale` に存在することになります。

`LANG` に `ja_JP.utf8`　を設定し、さらに `LOCPATH` に `/opt/locale` を設定することで、Lambdaレイヤーで設定した日本語ロケールデータが読み込まれるようにします。

![スクリーンショット 2024-07-29 17.44.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687813/59374703-3712-c3bc-8a98-c0054726fcc2.png)

これで問題なく日本語ファイルも処理することができました。
circleci/aws-ecr@9 系で push する際の image index を無効にする

circleci/aws-ecr@9 以降、 push の際に image index がデフォルトで有効になった。

この結果、実際には利用することはまずない無名タグの image が push され、 ECR 容量を無駄にしたりライフサイクルポリシーが意図しない挙動になることがある。

こんな様子
![スクリーンショット 2024-07-31 9.47.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325245/c55c2929-3071-34b0-3149-44058bf6e02c.png)

image index　を無効にして、単一の image を push するためには
`build_and_push_image`ジョブなどの`extra_build_args`パラメータで、
`--provenance=false`を設定するとよい。

参考
https://github.com/CircleCI-Public/aws-ecr-orb/issues/325
robloxでassistant その150

# 概要
robloxでassistantやってみた。
練習問題、やってみた。

# 練習問題
pluginでChangeHistoryServiceを使え。
Selectionを使え。

# サンプルコード

```

local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
local toolbar = plugin:CreateToolbar("Custom Script Tools")
local newScriptButton = toolbar:CreateButton("Create Empty Script", "Create an empty script", "rbxassetid://4458901886")
newScriptButton.ClickableWhenViewportHidden = true
local function onNewScriptButtonClicked()
	local selectedObjects = Selection:Get()
	local parent = game:GetService("ServerScriptService")
	if #selectedObjects > 0 then
		parent = selectedObjects[1]
	end
	local newScript = Instance.new("Script")
	newScript.Source = ""
	newScript.Parent = parent
	ChangeHistoryService:SetWaypoint("Added new empty script")
end
newScriptButton.Click:Connect(onNewScriptButtonClicked)




```

以上。
デプロイってなんだ

## はじめに
デプロイという言葉をはじめてきいて「？？」だったので調べたことをアウトプット。用語に関してはまだまだ「？」が多いし、調べても忘れる率が高いので、再びであったときは都度調べている状態💦
最低でも調べた事実があることで「あぁ、あったあった。たしかこんな感じ」というような状態にしたい

## デプロイについて
Deployは、ソフトウェアやシステムの開発において、完成したプログラムやコードを実際の運用環境（プロダクション環境）に配置し、利用可能な状態にするプロセスを指しています

英単語でDeploy（デプロイ）となっていますが、語源はラテン語の「displicare」（広げる、展開する）になります

## デプロイの前と後の違い
デプロイをする前と後でどのような違いがあるのか表にまとめてみました。
| 項目           | デプロイ前                                             | デプロイ後                                                       | 
| -------------- | ------------------------------------------------------ | ---------------------------------------------------------------- | 
| 環境           | 開発環境又はステージング環境で動作                     | 本番環境で動作                                                   | 
| テスト         | 自動テストや手動テストが実施される                     | ユーザーが実際に利用。<br>リアルタイムでフィードバックが得られる | 
| 公開状況       | ユーザーに非公開                                       | ユーザーに公開<br>利用可能                                       | 
| 利用可能機能   | 新機能や変更点は開発者やテスターのみ利用可能           | 新機能や変更点がユーザーに提供される                             | 
| バグ修正       | 発見されたバグは修正される                             | 新たなバグが発見される可能性がある                               | 
| パフォーマンス | ローカル環境やステージング環境でのパフォーマンスを確認 | 本番環境でのパフォーマンスを実際に確認できる                     | 

## デプロイによるメリットとデメリット
デプロイすることによるメリットとデメリットは何があるのか、こちらも表の形式にしました
| 項目               | メリット                                         | デメリット                                           | 
| ------------------ | ------------------------------------------------ | ---------------------------------------------------- | 
| ユーザーアクセス   | 新機能や修正がユーザーにすぐ提供                 | デプロイでの不具合がユーザーに影響与える             | 
| フィードバック収集 | リアルタイムでユーザーからフィードバック得られる | リアルタイムでのバグ報告やクレームが増える可能性ある | 
| 競争力維持         | 継続的な改善で競争力維持                         | 頻繁なデプロイが開発チームに圧力となる               | 
| パフォーマンス     | 本番環境でのパフォーマンスを確認できる           | パフォーマンス問題の発生                             | 
| デプロイ自動化     | CI/CDツールによるデプロイの自動化で効率化        | 自動化プロセスに問題あると大規模影響の可能性ある     | 
| セキュリティ       | 最新のセキュリティアップデートを迅速に反映可能   | デプロイのミスでセキュリティリスク発生する可能性ある | 

## デプロイを調べてみて
今回デプロイについて調べてみて、世の中のアプリは結構な頻度でデプロイを行っているんだな、と実感することができました。意外と身近にデプロイがいた！
何気なく使用しているものがどんな風に動いているかを知る機会をえられるってすごいこと。大人になっても「なぜ」は必要だな。
デプロイを知って、少しレベルアップになったなら幸いです。

## 参考

https://wa3.i-3-i.info/word16767.html
GSNet(GraspNet) 把持点抽出のためのライブラリ

pdf [Graspness Discovery in Clutters for Fast and Accurate Grasp Detection](https://openaccess.thecvf.com/content/ICCV2021/papers/Wang_Graspness_Discovery_in_Clutters_for_Fast_and_Accurate_Grasp_Detection_ICCV_2021_paper.pdf)

github https://github.com/rhett-chen/graspness_implementation

効率的でロバストな把持姿勢検出は、ロボット操作に不可欠である。一般的な6自由度把持の場合、従来の手法ではシーン内の全ての点を等しく扱い、一様なサンプリングを用いて把持候補を選択するのが一般的である。しかし、どこを把持するかを無視することは、現在の把持姿勢検出手法の速度と精度を大きく損なうことがわかった。本論文では、乱雑なシーンにおいて、把持可能な領域を区別する、幾何学的な手がかりに基づく品質である「把持度」を提案する。把持度を測定するために先読み探索法を提案し、統計的な結果から本手法の合理性を検証する。   実際に把持度を素早く検出するために、把持度モデルと名付けたニューラルネットワークを開発し、探索過程を近似する。広範な実験により、我々の把持度モデルの安定性、一般性、有効性を検証し、異なる手法のプラグアンドプレイモジュールとして使用できるようにする。我々の把持度モデルを搭載することで、様々な従来手法において精度の大幅な向上が見られる。さらに、低品質な予測を早期にフィルタリングするために、我々の把持度モデルを組み込んだEnd-to-EndネットワークであるGSNetを開発する。大規模ベンチマークであるGraspNet-10億を用いた実験では、本手法が従来手法に大きなマージン（30AP以上）を持ち、高い推論速度を達成することが示された。

DeepLによる翻訳

![Screenshot from 2024-07-30 11-01-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/047f6d1f-8c75-7596-be33-d4e30f2a5492.png)

![Screenshot from 2024-07-30 11-02-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/d762ea66-4e14-fa39-3a03-7c0671008eaf.png)


![Screenshot from 2024-07-30 10-25-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/85b84520-17b0-46ed-bd95-6ca25ad285b4.png)

図4. GSNetのアーキテクチャ。2行はそれぞれカスケード把持モデルと把持操作モデルの処理を示す。カスケード把持モデルでは、点エンコーダ・デコーダは入力N点に対してC次元の特徴ベクトルを出力する。点ごとに把持可能なランドスケープが生成され、そこからM個のシード点がサンプリングされる。そして、その種を用いて、ビューごとの把持可能ランドスケープを生成し、把持ビューを選択する。把持操作モデルでは、種は円柱領域にグループ化される。グループごとに把持スコアと把持幅を予測し、M個の把持ポーズを出力する。   

DeepL による翻訳


github https://github.com/rhett-chen/graspness_implementation
には、インストール手順が書かれている。
### MinkowskiEngineについて
MinkowskiEngineというモジュールがあります。
「Minkowski エンジンはスパース tensor のための自動微分ライブラリです。それはスパース tensor のための畳込み、プーリング、unpooling とブロードキャスティング演算のような総ての標準的なニューラルネットワーク層をサポートします」

[MinkowskiEngine 0.5 : 概要 (README)](https://torch.classcat.com/2021/03/21/minkowskiengine-0-5-readme/)

セマンティック　セグメンテーション、分類、再構築のネットワークでの利用例が書かれています。



### GSNetの利用例
github [ASGrasp: Generalizable Transparent Object Reconstruction
and 6-DoF Grasp Detection from RGB-D Active Stereo Camera](https://github.com/jun7-shi/ASGrasp)


## 付記
このライブラリは、点群が既に得られているときに、把持する点を算出するライブラリです。
このライブラリ時点では、点群の算出を行なっていません。
また、透明物体へのサポートもこれ自体では行なっていません。
URLについて

## 目的
URLについての理解を深める

## 目次
1. URLとは
2. URLの構成
3. パーセントエンコーディングとは
4. 短縮URLとは
5. URLによるSEO対策
6. おわりに


### 1. URL (Uniform Resource Locator)とは
ブラウザのアドレスバーなどに入力しWebページにアクセスするための文字列。
URLは「どのような手順」で「どこのWebサーバ」の「どのようなコンテンツ」にアクセスするかを示している。

<strong>URI (Uniform Resource Identifier)</strong>：URLとURNを含めた総称。
<strong>URN (Uniform Resource Name)</strong>：世界で唯一のIDを割り振り、識別に用いられる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760634/6b913219-65e0-878e-854b-f9f95edb377b.png)


### 2. URLの構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760634/f8955e52-8825-3635-0ab9-12496d87c8ce.png)
<strong>スキーム</strong>：プロトコルを表す。
<strong>オーソリティ</strong>：「//」で始まり、ホスト名・サービスポート番号を含む。
<strong>パス</strong>：サーバ内のファイルの格納場所。パスを省略して特定のファイルを指定しない場合はデフォルトドキュメントが返される。
<strong>クエリ</strong>：アプリケーションのパラメータやコマンドを指定する。
？[キー]=[値]のペアが複数になる場合は、&記号を使う。
<strong>フラグメント</strong>：同じページの特定の場所を指定するアンカーに使用する。


### 3. パーセントエンコーディングとは
URLのパス部分で使用できない文字を扱えるようにするためのエスケープ処理。
%と2桁の16進数で一つの組み合わせとなる。

（例）「あ」　→　「%E3%81%82」
URL内に「あ」が含まれていた場合以下のように処理される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760634/343d2ee0-8af2-585b-4130-89cc53a73475.png)


### 4. 短縮URLとは
長いURLを短く置き換えるサービス

<strong>☺メリット</strong>
入力の手間が減る。タイプミスが減る。文字制限内に収まる。
<strong>☹デメリット</strong>
どこにアクセスするURLなのかが分かりにくい。短縮URL用のサーバを介するため、Webページ表示までの時間が長くなる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760634/f47f45fb-bdac-2ae2-1c67-dc1d745bd4ec.png)


### 5. URLによるSEO対策
>SEO：検索サイトの上位にランキングされるための対策

#### URLでできる対策
<strong>URL内にコンテンツと関連した単語を埋め込む</strong>
→注意！過度にキーワードを埋め込むのは逆効果。

<strong>URL内のパスを簡潔にする</strong>
→URLは短い方がランキング上位になりやすい傾向がある。適切なURLの設計が求められる。

<strong>一般的なファイル名は使用しない</strong>
→(例：page1.thml)　例のようなファイル名だと検索に掛かりにくくなる。

※上記のSEO対策は一般的なものであり、すべての検索サイトに有効に働くとは限りません。


### 6. おわりに
URLは文字それぞれに意味があるため、それらを理解することで検索する際にも、自分でURLを作成する際にも役立ちます。
また、短縮URLなどの便利な機能には、メリットだけでなくデメリットもあるため、特徴を理解した上で使用することをおすすめします。

---
参考文献
・鶴長鎮一.図解即戦力 Web技術がこれ一冊でしっかりわかる教科書.株式会社技術評論社, 2021.
TypeScript(or other)のすすめ

## TypeScriptとは何か
- 一言で、かつ誤解を恐れずに言えば「型が追加されたJavaScript」

----
## はっきりしておきたいこと（私のスタンス）
- 型のある言語が好きだーーー！
  注意力散漫な私には凡ミスを防ぐ機構が大変ありがたい
- 一方で「ちゃんとテスト書く前提ならそこまで型を厳密にしなくてよくね？」というスタンスには妥当性があると考えます
- NGなのは、誤りが起きにくくする工夫をせずにプログラムを書くこと、だと思う

----
## TypeScriptがなぜ必要か
- JavaScriptは大規模になっていく一方
- 言語仕様的に、JavaScriptは落とし穴が多い
  特に型変換とnull/undefinedは奇怪すぎる

----
## 減る手間と増える手間
- 減る手間：凡ミスに悩まされる時間
  これが嬉しい！
- 増える手間：ビルド！
  これが大きなハードル。だが、苦労してビルド環境を整える価値はあると声を大にして言いたい
  どうせCSSメタ言語でもビルド必要になるし
- 増える手間：学習コスト（TypeScriptの一部使用は非常に難解）
  ときに、型に関するエラーは呪文に見える 
  使いこなしすぎないようにするのが大事


----
## TypeScriptならではの特徴
- JavaScriptも、TypeScriptとして解釈可能
  つまり、JSとTSが混在可能　→ **無理のない移行が可能**

----
## TypeScriptの重要性
- 他にもJavaScriptを安全に書く言語はある
- TypeScriptは汎用性が高い
  Webアプリで言えば、ブラウザ／サーバの両方で使える
  それ以外でもAzure Functions/AWS Lambdaでのサポートが厚かったりする（実行速度も速い）

----
## まとめ
- 徐々に導入していけるTypeScriptはJavaScriptでの開発に限界を感じてるいる場合の現実解
- 活用の幅が広いTypeScriptを覚えると技術者として確実にレベルアップできる
robloxでassistant その149

# 概要
robloxでassistantやってみた。
練習問題、やってみた。

# 練習問題
AssetServiceを使え。

# サンプルコード

```
local AssetService = game:GetService("AssetService")
local BUNDLE_ID = 14
local success, result = pcall(function()
	return AssetService:GetBundleDetailsAsync(BUNDLE_ID)
end)
if success then
	print(result)
end
```

# 実行結果

```
  10:17:51.328   ▼  {
                    ["BundleType"] = "BodyParts",
                    ["Description"] = "5003年、バトルボット5000は最強のライバルと戦うか、時代に忘れられるかのどちらかだ。 ",
                    ["Id"] = 14,
                    ["Items"] =  ▶ {...},
                    ["Name"] = "シニスターボット5001"
                 }  -  サーバー - Script:10
  10:17:52.513  Hello world!  -  クライアント

```

以上。
【devise】before_action :authenticate_user! が動作しない

## はじめに
deviseの RegistrationsController の editアクションにbefore_action :authenticate_user! を適応したい。

そのまま書いてみるだけではできませんでした。
ちなみに、他のコントローラーでは期待どおりに動作します。


## before_action :authenticate_user! とは
特定のアクションを実行する前にユーザーが認証されているかを確認するためのDeviseのメソッドのこと。
このメソッドを使うと、ユーザーがログインしていない場合はログインページにリダイレクトされます。

下記がうまくいかない。
```app/controllers/users/registrations_controller.rb
module Users
  class RegistrationsController < Devise::RegistrationsController
    before_action :authenticate_user!, only: [edit]
```

## 結論
下記の二つの方法でうまくいきました。

```app/controllers/users/registrations_controller.rb
module Users
  class RegistrationsController < Devise::RegistrationsController
    prepend_before_action :authenticate_scope!, only: [edit]
```

または

```app/controllers/users/registrations_controller.rb
module Users
  class RegistrationsController < Devise::RegistrationsController
  before_action ->{ authenticate_user!(force: true) }, only: [edit]
```

## 原因
  [devise](https://github.com/heartcombo/devise/blob/e3a00b27d19ba995891d7dd92394fe2900a789c2/app/controllers/devise/registrations_controller.rb)のコントローラと競合してるっぽい。

```app/controllers/devise/registrations_controller.rb
class Devise::RegistrationsController < DeviseController
  prepend_before_action :require_no_authentication, only: [:new, :create, :cancel]
  prepend_before_action :authenticate_scope!, only: [:edit, :update, :destroy]
  prepend_before_action :set_minimum_password_length, only: [:new, :edit]
  ```

修正後のコードでオーバーライドした形になります。

prepend_before_action は、指定したメソッドを before_action よりも前に実行されます。
そのため、devise の prepend_before_action が優先され、 before_action :authenticate_user! 動かなかったのだと思います。


## 参考記事
  https://github.com/heartcombo/devise/issues/3349
Windowsのコマンドプロンプト（bat）でファイアーウォール詳細設定を管理者権限で開く処理を時短

# この記事はこれの応用です

https://qiita.com/waokitsune/items/bd9bdb96189bea3ff5dd

# 概要

特定の作業をする時だけ『ファイアーウォール詳細設定』を開いて、ファイアーウォールを一時的に無効にしています。

ですが、下記をするのが面倒。

* コントロールパネル経由で『ファイアーウォール詳細設定』を起動しに行く。
* 『ファイアーウォール詳細設定』のショートカットを右クリックから管理者として起動をして、管理者ユーザー名とパスワードを入力。

**キック後に管理者パスワードを入力するだけで『ファイアーウォール詳細設定』が起動するbatを作りたい！**

# やり方

```bat:
runas /user:ドメイン\管理者ユーザー名 "powershell -Command \"Start-Process 'wf.msc' -Verb runAs\""
```

サービスを起動するものとは違い、PowerShellをかませてやる必要があります。

# バージョン

Microsoft Windows [Version 10.0.22631.3958]
【intra-mart】共有とコピーの使い分け

# はじめに
今日もintra-martについて記事を投稿します。

今回は「共有とコピーの使い分け」について説明していきます。
当初intra-martを使って、ワークフローシステムを開発しているときに
共有とコピーの違いがわからなかったので、記事にしました。

# 共有とは
IM-BISでのフロー編集にて**複数のタスクで同じ画面を共有するための画面設定機能**です。
1つのワークフローで申請者と承認者を同じ画面として使用する機能です。

共有の便利機能として**1つのノードに対して画面編集を行うと、
共有されたノードも同じように更新される**ため、自分自身すごぐ便利だなと思いました。

# コピーとは
コピーは共有とほとんど同じで、
1つのタスクから別のタスクで画面を複製することができます。

共有と違う点としては、**1つのノードで画面編集を行うと、
変更を行ったノードの画面のみ変更されます。**
つまり、片方のノードの画面しか変更されないということです。

# 実践
実際にintra-martを触れてやってみましょう！
共有とコピーを分けて実施したいと思います。

## ①共有
1.申請ノードを右クリックで選択し、「共有」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/52c145dd-e668-9275-5958-4a48537c4744.png)

2.承認Aノードを右クリックで選択し、「貼り付け」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/c4252457-b4cd-8fe3-6538-f69581bbe739.png)

承認Aに画面が割り当てられました
申請ノードと承認Aノードを比較すると、**設定内容で画面名が同じであること**がわかります。

1つノードに割り当てられた画面を変更することで、
同じ画面名が設定されているノードが存在すれば同じように反映されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/3508cd98-f663-bdb3-7ad8-9f1ceb4c23fa.png)


## ②コピー 
1.申請ノードを右クリックで選択し、「コピー」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/20822f15-b97c-a095-00f4-76901153a885.png)

2.承認Bを右クリックで選択し、「貼り付け」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/2c3b4376-144d-ecfb-6616-7fc7f922f8ec.png)

承認Bには「承認B」という画面が割り振られました。
申請ノードと承認Bノードの画面名が異なっています。

たとえ、**申請ノードの画面を変更しても
承認Bの画面は同じように反映されない**ということです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/3d2cb3d8-8c0a-83e7-6ae1-d24e83126aa7.png)

# 結局違いって何？
共有とコピーの違いを表で作成しました。

共有は**共有元と同じ画面、かつ同じ画面名を割り当てることが可能**です。
また**共有元と共有先のノードの画面は同じように変更されます。**

コピーは**コピー元と同じ画面を割り当てることはできるが、
コピー先の画面名は異なるため片方のノードのみ変更されます。**

|  |申請者ノード  |承認者ノード  |
|---|---|---|
|共有  |画面A　|画面A  |
|コピー  |画面A  |画面B  |


# 最後に
最後までご覧いただきありがとうございました！

引き続き記事を書いていくので、今後ともよろしくお願いします。
【Notion】簡単3ステップ！Webサイト公開

# はじめに
Notion上に作成したページをWebサイトとして公開できるようなのでやり方などをまとめました

https://www.notion.so/help/guides/build-a-website-with-notion-in-seconds-no-coding-required

# できたもの
今回このようなサイトを公開できました
![スクリーンショット 2024-07-29 16.03.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2125059/a35ef048-4138-1a8d-9f0d-1b1364fa6ea8.png)

# 公開方法
（適当なページをまずは作成しておきます）

1. 右上の `Share` ボタンをプッシュ！
1. `Publish` のタブをプッシュ！
1. `Publish` のボタンをプッシュ！ 

![スクリーンショット 2024-07-29 16.17.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2125059/a3558ead-9826-f9d5-ba0e-625eb086f6e1.png)


# 有料版（Plusプラン以上）でのみできること
自分は無料版を利用しているためできないのですが、Plus以上だと次のようなことができるようです

## ヘッダーの表示項目変更
無料だと公開したページの複製ボタンしか表示の有無を切り替えられません
Notionで作ったことが丸わかりなので、ウォーターマークはけしたいですね
（別途カスタムドメインが必要ですが）
![スクリーンショット 2024-07-29 16.39.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2125059/6893c797-a0af-8276-fa01-a883992aa4f9.png)


## Google Analytics
アクセス解析をすることができます
![スクリーンショット 2024-07-29 17.24.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2125059/9db1f6ce-ed71-98eb-7289-211bc9f488c8.png)

## 期限設定
指定の日時になったら自動で期限切れにして、ページを非公開にすることができます
![スクリーンショット 2024-07-29 17.27.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2125059/060ac74a-4e03-0320-0cb2-6e07fce703f3.png)

## SEO設定
検索でヒットするかどうかは無料でも設定できますが、ヒットしやすくなるような設定もできるようになります
![スクリーンショット 2024-07-29 17.42.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2125059/af0ef0ef-2d87-be9c-f0ba-25998d426127.png)


# おわりに
様々な制限はありますが、手軽に公開できていいなと思いました！

デザインについては、自分で作らなくてもテンプレートがいくつかあるようなのでこの辺を活用して、いかにもNotionではない見た目のページもつくれそうです！

https://www.notion.so/templates
OACでデータの流れを表現してみよう

# はじめに
元々OAC（**Oracle Analytics Cloud**）には、サンキーというビジュアライゼーションが存在します。
2024 July Updateで、このビジュアライゼーションに新しいプロパティが追加され、デフォルトの表現方法が変更されました。

※2024 May Updateと2024 July Updateで比較しています。

# サンキーとは
データの流量を表現するための図表です。

# 比較してみる
こんなデータを準備しました。
Sample Order Linesデータセットを持っている方は、それを使っていただいても構いません。

|Product Category|Ship Mode|Customer Segment|Quantity Ordered|
|:-|:-|:-|-:|
|Furniture|Delivery Truck|Consumer|2680|
|Furniture|Delivery Truck|Corporate|4402|
|Furniture|Delivery Truck|Home Office|2558|
|Furniture|Delivery Truck|Small Business|2403|
|Furniture|Express Air|Consumer|298|
|Furniture|Express Air|Corporate|627|
|Furniture|Express Air|Home Office|600|
|Furniture|Express Air|Small Business|289|
|Furniture|Regular Air|Consumer|2503|
|Furniture|Regular Air|Corporate|3741|
|Furniture|Regular Air|Home Office|3554|
|Furniture|Regular Air|Small Business|2156|
|Office Supplies|Delivery Truck|Consumer|109|
|Office Supplies|Delivery Truck|Corporate|338|
|Office Supplies|Delivery Truck|Home Office|290|
|Office Supplies|Delivery Truck|Small Business|275|
|Office Supplies|Express Air|Consumer|1614|
|Office Supplies|Express Air|Corporate|3299|
|Office Supplies|Express Air|Home Office|2454|
|Office Supplies|Express Air|Small Business|1865|
|Office Supplies|Regular Air|Consumer|12263|
|Office Supplies|Regular Air|Corporate|20245|
|Office Supplies|Regular Air|Home Office|15561|
|Office Supplies|Regular Air|Small Business|12100|
|Technology|Delivery Truck|Consumer|470|
|Technology|Delivery Truck|Corporate|1113|
|Technology|Delivery Truck|Home Office|616|
|Technology|Delivery Truck|Small Business|580|
|Technology|Express Air|Consumer|1098|
|Technology|Express Air|Corporate|1240|
|Technology|Express Air|Home Office|708|
|Technology|Express Air|Small Business|868|
|Technology|Regular Air|Consumer|5352|
|Technology|Regular Air|Corporate|9186|
|Technology|Regular Air|Home Office|6107|
|Technology|Regular Air|Small Business|4110|

**OAC** (2024 May Update)では、このデータからサンキー・ビジュアライゼーションを作成すると、こんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/91c8547e-5070-a774-47c3-96b3c8fc0ac9.png)

流れはわかりますが、それぞれの流量の差がもう一つわかりにくいです。

**OAC** (2024 July Update)で同じデータを使ってサンキー・ビジュアライゼーションを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/a2a543a2-f0c5-e3a9-77d5-0780ddf73493.png)

今度はデータの傾向がよくわかります。
「Office Supplies」という製品カテゴリは、ほとんどが航空便による配送でトラック便はかなり少ないということがわかりました。

以前の表現方法に近づけることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/f33dec96-a94c-ffaf-483a-a899fd11bad7.png)

新しく追加されたプロパティである、データラベルの位置（Data Label Position）を「Below Node」にして、ノードの高さ（Node Height）を「Condense」にしてみました。

# おわりに
新しいサンキーは、従来よりも使いやすくなったと思います。
積極的にデータ分析に活用していただければ幸いです。
キャッシュメモリとレジスタ

コンピュータアーキテクチャでは、キャッシュメモリとレジスタの両方が重要な役割を果たしますが、その目的や特性には明確な違いがあります。この記事では、キャッシュメモリとレジスタの一般的な違いについて詳しく見ていきます。

## キャッシュメモリ

#### 目的:
キャッシュメモリは、頻繁にアクセスするデータや命令を保存し、メインメモリからのデータアクセス時間を短縮する役割を果たします。キャッシュメモリは、CPUとメインメモリの間に位置し、パフォーマンスを大幅に向上させます。

#### 位置:
キャッシュメモリはCPUチップ自体に統合されており、物理的にはCPUダイの一部として存在します。これは、CPUとメインメモリの間の別のコンポーネントではありません。

#### レベル:

- L1キャッシュ: 最も高速で小さいキャッシュで、CPUコア内に位置します。
- L2キャッシュ: L1より大きくて遅いキャッシュで、CPUダイ内に位置し、複数のコア間で共有されるか、各コアに専用で割り当てられます。
- L3キャッシュ: より大きくて遅いキャッシュで、CPUダイ内で全てのコア間で共有されます。

## レジスタ

#### 目的:
レジスタは、CPUが即座に処理するデータを保存する非常に小さなメモリです。レジスタは計算やデータ操作を行う際に最も迅速にアクセスできるメモリです。

#### 位置:
レジスタはCPUコア内に位置します。レジスタは完全にCPUコアに統合されており、CPUが使用できる最も高速なメモリです。

## 比較のまとめ
    
| 特性 | レジスタ | キャッシュメモリ |
| --- | --- | --- |
| 目的 | 即時のデータ処理 | メモリアクセス時間の短縮 |
| 位置 | CPUコア内部 | CPUダイに統合 |
| サイズ | 非常に小さい (バイト単位) | レジスタより大きい (KBからMB単位) |
| 速度 | 最も速い | レジスタより遅いがRAMより速い |
| アクセス時間 | 単一のCPUサイクル | 数CPUサイクル (レベルに依存) |
| 例 | 汎用および特殊レジスタ | L1, L2, L3キャッシュ |

*CPUサイクル（CPUが1回の作業を実行するのにかかる時間）
*CPUのクロック速度が3.0 GHzの場合、1秒間に30億サイクルなので、1サイクル ≈ 0.333ナノ秒
アフェリエイターへの道　きっかけ

# 内容
完全に個人の日記なのでスルーして下さい

https://qiita.com/EasyCording/items/31c9f73c871e936a2869

# 動機

いろいろあるが、最近の出会いの影響が大きい

* Meetsupで出会ったバングラデシュ人の彼
たまたま横浜で、英語の勉強会で知り合い、その後、ずっと話をしていて教えてもらったこと
プログを売買するサイトがあって、客数が見込めるブログは売り物になること　ラッコＭ＆Ａ

* 会社の同期
マンションを貸し出すビジネスを副業で始めたとのこと。定年後も個人事業主として確定申告すれば、自動車さえも経費で落とせる。要するに利益－経費で赤字を作ることで、サラリーマン収入との総和で、払い過ぎた税金が返ってくるとのこと

# 出した結論

先ずは自分で出来る副業について考えた。

借入する副業はダメ　→　友人曰くマンションをローンで買い、貸し出した収入でチャラに出来ると言っているが、自分のポリシーとして借金はしない主義　★

主にＩＴ系　→　自分の得意領域、ただし性格的にはマメではない。競合が多く時間がかかる　★★★

生成ＡＩ活用　→　最近の話題、使いこなすことで自分の能力を拡張できるもの　★★★★★

Youtube　→　性格的に動画撮影と編集は好き、こだわりもあるし、そもそもがクリエイティブで面白い　★★★★


この夏は１０日間の会社からリフレッシュ休暇を頂いた。
なんとか、収入につながる仕掛けを仕込みたいと思う。
月１万でも収入が出来たら、白色申告を使い、経費で落とせる機材を買う。特にカメラやＰＣ機材は、買って経費にして転売。これで商品解説ブログをすると良さそう

https://www.youtube.com/watch?v=8_x8rLtdQRk


# 今後の計画

自宅ＬＡＮの見直し　→　ＷＩＦＩルータの電波が１Ｆ，２Ｆで悪い。仕方なくもう一台追加した。電気代が気になるので、２Ｆは自宅在籍時のみとして、特にREMOTEの時に使用する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212914/ab165918-c005-8393-1371-d50fb39a6cf3.png)

ＮＡＳの設定　→　常時の電源ＯＮが不効率。使っているのはREDMINEと、写真、ビデオのファイル保存用。正直、定期的に転送すれば良いレベル。ポート開放の仕方は覚えたが、何故かサーバーが重い。

ＰＣデスクトップ環境の見直し　→　夏は２Ｆが暑い。冷房の効いた１Ｆから２ＦのＰＣへREMOTE接続でアクセスする。REMOTEが繋がらないのは何故？

ＰＣチェア　→　ゲームチェアが使いにくい。正直に言えば夏場のリクライニングベット代わりになっている。ニトリで買い換えたい。うーむ、経費で買いたい

# ＰＣ関係

ＮＡＳでアプリサーバーにしているが、ＧＡＳの方がイイかも（ただで使える情報あり）

https://segoro.hatenablog.com/entry/GCP/settings

ブログ更新も自動化したい。まずはこれ勉強する

https://segoro.hatenablog.com/entry/python_hatena

# ブログ

自動化して書いたもの

https://ameblo.jp/motochan1969/entry-12861796650.html