OmniAICreator/Qiita-1.07M huggingface dataset:
Goのコードの詳細情報を表示してくれるVSCodeのInlay hints機能を使いやすくカスタマイズする

## 背景
2022年7月に実施されたVSCodeのGo拡張機能のアップデートにて、Goのコード詳細情報を表示してくれる`Inlay hints`機能が導入されました。

https://github.com/golang/vscode-go/releases/tag/v0.35.0

関数やメソッドの引数・返り値の型やiotaで定義された定数の値を、実行せずともエディタ上に表示してくれるという機能です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261575/09a35cc5-3b0c-a38f-31ff-2e1d5711f7dd.png">

元々Language serverの`gopls`に先行して入っており、`Go Nightly`での早期リリースを経て本格導入されました。試すには、[設定] -> [Go > Inlay Hints]でそれぞれの機能を有効化します。
![スクリーンショット 2022-07-28 17.47.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261575/92950b04-ef63-7a3e-2dee-51429f239454.png)

色々と便利な機能が導入されたのですが、デフォルトのままだと少し使いづらい点があります。本記事では、メモも兼ねてもっと使いやすくするための設定を紹介します。

## 必要な時だけ機能をOn/Off
関数の返り値や引数に型情報が表示されるようになる`Inlay Hints: Assign Variable Types`という機能があります。
有効化されていると、仮に長い型名の返り値や引数を持つ関数があった場合など、型情報が長々と表示され視覚的なノイズが増えてしまいます。

常に表示させておく必要がないのであれば、**デフォルトでは非表示にしておき、ショートカットで表示させる**ようにしておくと便利です。
![](https://media0.giphy.com/media/IKunovMAQLrw9oSkt2/giphy.gif?cid=790b76116638354b10372a04e43419d8f5bd5b6cba4de2cb&rid=giphy.gif&ct=g)

### 設定方法
- [設定] -> 検索窓で入力：「Inlay Hints」 -> [Inlay Hints] -> 「**offUnlessPressed**」に変更

## みやすい色に変更
表示されるInlay Hintsのデフォルト色は、VSCodeのカラーテーマに合わせて変更されます。
しかし、**使っているVSCodeのカラーテーマとの相性が悪い場合、Inlay Hintsの文字が見にくい場合があります**。
私の場合は[City Light](https://marketplace.visualstudio.com/items?itemName=Yummygum.city-lights-theme)というカラーテーマを使っているのですが、Inlay Hintsで表示される文字とコードの文字色がかなり似ており、（自分的には）読みにくくなってしまいました。

そこで、Inlay Hintsの前景色・背景色をカスタマイズします。かなり見つけにくいところにあるのですが、`workbench.colorCustomizations`で変更できます。

### 設定方法
- 【設定】 -> [設定(JSON)を開く] -> settings.jsonに以下を追加

```json
"workbench.colorCustomizations": {
    "editorInlayHint.foreground": "#2c344c",
    "editorInlayHint.background": "#7196a6",
}
```

:::note warn
カラーコードは、自分の好きな色に変更してください。
:::
#### 変更前
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261575/09a35cc5-3b0c-a38f-31ff-2e1d5711f7dd.png">

#### 変更後
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261575/258012f5-a72d-d28e-f338-04b37639a64e.png">


## 参考
- [Improve default colors for inlay hints #128157
](https://github.com/microsoft/vscode/issues/128157)
チャットの句読点、あると怖い？ないと怖い？

これ、あんまり話題にならない割には結構大事な問題なんじゃないかと個人的には思っています。

チャットをメインに仕事をしていると、句読点(`、` `。`)を入れる派、入れない派に別れると思います[^1]。

個人的には入れる派です。

## ないと怖い
私の感覚として、句読点がない文章はなんか冷たい感じがして怖い印象を受けます。

>〇〇の件、△日までに回答ください。

と

> 〇〇の件△日までに回答ください

だったら、内容は同じなのに後者はなんか責められてると言ったら変ですが、少しつっけんどんで冷たいなという印象を受けるんですよね。もちろん普段からやり取りする、よく知っている相手なので心理的に不安になることはないのですが、文面の印象としてはそう感じるという話です。

感覚の問題なので、もちろん万人に当てはまることではないですし、特段他の誰かの同意がほしい訳ではないのですが。

なので私は、基本的に句読点を書きます。例外として余程急いでいる時は句読点なしでメッセージを送信することもありますが、基本的な方針というかポリシーとしては、私は句読点ありで書きます。

しかしまぁこれも当然といえば当然ですが、句読点があると逆に圧迫感があるというか怖く感じるという人もいる訳です。難しいですね。

とはいえこれも、感覚としては分からなくないです。怒ると敬語になるタイプみたいな感じですよね、多分。距離感を感じて、それが怖いみたいな。私は感覚としてはあまり共感できませんが、そういう人はいるだろうなとは思えます。

なので私は、普段やり取りする相手であれば、相手のスタイルに合わせることが多いです。相手が句読点なしで送ってくるタイプであれば私も最後の文では句点(`。`)を書かないですし、意味が崩れないのであれば読点(`、`)も省略します。

## 頭が赤い魚を食べる猫
特に読点を省略した場合は、「頭が赤い魚を食べる猫」になるおそれがあり、何ならこれが一番怖いです。

https://twitter.com/nakamurakihiro/status/1230798247989366784

適切に読点を書けば「頭が赤い、魚を食べる猫」「頭が赤い魚を、食べる猫」のように意味を崩さずに表現することができますが、そういう意味では句点はともかく読点は大事だと思っています。

伝える側は伝えたいことが明確なのですが、受け取り手側は必ずしも同じ認識とは限らないので、特に顔が見えないコミュニケーションでは「できるだけ、そうとしか解釈できないように伝える」努力を伝える側がすべきかな、とは思っています。

## 絵文字や（笑）など
絵文字や（笑）などを入れるとかなり印象が変わりますよね。（もちろん、そういうキャラじゃないという方もいらっしゃいますが）

> 〇〇の件どうですか？

というのと

> 〇〇の件どうですかー？笑

とではかなり印象が違いますね。相手や組織によってそういうのが許される空気、許されない空気みたいなのはあると思いますが、自分がどういう気持ちでメッセージを送ってるのかの補足になるので、使える場合は使っていってもいいと思います。

逆に、こういう記号的なものや、馴れ馴れしい感じ、ラフな感じなどが苦手な人もいらっしゃると思うので、これも難しいところですが…。

## 結局
句読点があった方が良い、ない方が良いみたいなのは個人間やチーム間の雰囲気や仕事の進め方などによると思います。全ての人・組織に共通する解はありません。

どうしてもちょっと怖いな、やり辛いなと感じたら

> 「すみません、句読点がないと少し冷たくて怖い印象があるので、もし良かったら句点だけでも付けてもらえませんか？」

> 「すみません、句読点があると圧迫感があって苦手なので、もっと話し言葉でメッセージ送ってもらえませんか？（タメ口でも良いので・・・）」

みたいに相談してみるのも良いかもしれませんね。

表情やジェスチャー、声の抑揚などが使えない分、チャットでのコミュニケーションは本来かなり難しいと思います。工夫してうまくコミュニケーションを取りたいですね。

## 追記（2022/12/07）
以下のようなまとめを見つけました。

https://togetter.com/li/1929454

https://twitter.com/S_kisaragi/status/1557214023942565888

やはり句読点の有無による印象の違いは大きいですね。結局は組織や相手によってケースバイケースだとは思いますが、参考まで。
（追記ここまで）

## その他
ブログとCrieitでも記事を公開しているので、よければご覧ください。

ブログ：BOYISH KINGDOM

https://boyi.sh

Crieit：apashoni

https://crieit.net/users/apashoni

[^1]:厳密に決めておらず、その時々で違うという人ももちろんいらっしゃると思いますが…。
3001エラーでVisualzierが開かない時の対処法

## 目次
1. はじめに
1. 対処法
1. 最後に

## はじめに
Visualizerを開いた際に、エラーメッセージとして
**Failed [Port 3001 is in use. Please change 'cacheServerPort' to an available port and retry']**
と表示され、ポートが使用中で開かない場合があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/9f34d97d-63c9-9680-36c9-310df2cb5a19.png)



これは、Visualizerが何らかの理由で強制終了し、
3001ポートが解放されないままになっている可能性があります。

確認方法と解消方法について、紹介しますので参考にしてみてください！


## 確認方法
先ほどのエラーが表示されたら、一度Visualizerを閉じておきましょう。

①ターミナルを開き、
3001ポートを使用中のファイルを表示する下記のコードを実行して下さい。
```
lsof -i -P | grep 3001
```
ファイルが表示された場合、
左から順に下記の項目が表示されます。
![スクリーンショット 0004-08-02 13.45.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/86d1610b-aa32-6790-ce20-318aa209b00c.png)
（参考）https://atmarkit.itmedia.co.jp/ait/articles/1904/18/news033.html

②次に、稼働中の全プロセスを表示する下記を実行してください。
```
ps Ac
```

Visualizerを閉じているにも関わらず、
①の実行結果で、コマンド名に`node`と表示されており（※）、
②の実行結果に`Visualizer`が一覧に表示される場合、
**Visualizerが正しく終了していない可能性があります。**
（※Visualizerはnodeによって動いているため、Visualizer使用中のプロセス名はnodeとなります。）

以下の方法を使い、実行中のプロセスを終了させるようにしてください。

また、上記のような結果にならなかった場合、
他の要因が考えられるため以下のリンクを参考にして原因を探ってみてください。

【エラーまとめ】
- [Konyでよく遭遇するエラーまとめ ＊Kony Visualizer 起動〜開発編＊](https://qiita.com/Kony_Team/items/0667ca2c8ee346f046d7)
- [Konyでよく遭遇するエラーまとめ ＊Build編（共通）＊](https://qiita.com/Kony_Team/items/4a1ac93faf43b2a92dc3)
- [Konyでよく遭遇するエラーまとめ ＊Build編（iOS）＊](https://qiita.com/Kony_Team/items/2dbb66b34c05e09369f7)



## 対処法
### ① 再度ターミナルにて下記のコードを実行

```
lsof -i -P | grep 3001
```
例）3001ポートが使用中の場合
（3001の部分はエラーが表示されたポート番号によって適宜変更してください）

`lsof：プロセスが開いているファイルを表示するコマンド`
`grep：ファイル内の文字列を検索するコマンド`

### ② 返却値を確認
```
node     00000 ×××××××　×××
IPv6 ××××××××××××××　××× 
TCP *:3001 (LISTEN)
```
プロセス名の後に、プロセスのPIDが表示されます。  
（今回は、例として0000という値を表示）

### ③ PIDを指定しプロセスを終了させる
```
kill -9 00000
```
上記コマンドを実行し、
`kill -9`の後に②で表示された、PIDを指定し、プロセスを終了させてください。

`kill：実行中のプロセスを終了する`

ポートのプロセスが終了させることで、Visualizerを開くことが出来ます。

## 最後に
Visualizerが開かない場合の対処について紹介しました！
よくある事例なので、同じように困っている人がいたら
この方法を紹介してみてくださいね:relaxed:

## 最後に一言
より読みやすい記事にしていきたいので、
「ここがわからなかった！」
「ここがもっと知りたい」
など、コメントいただけると嬉しいです！
log.Logger & io.MultiWriter example

# Overview
How to use log.Logger with io.MultiWriter.
In case of writting STDOUT and File

# Example
```
package main

import (
	"io"
	"log"
	"os"
)

func main() {
	logFile, _ := os.Create("log.txt")
	defer logFile.Close()

	mw := io.MultiWriter(os.Stdout, logFile)
	logger := log.New(mw, "prefix ", log.LstdFlags)

	logger.Println("test")
}


```
Javascriptでもアローラロコンをアーロンにする

# やる事
タイトルの通り。入力された文字列を2文字づつ飛ばした文字列にして出力する。Pythonほど楽じゃないけどPHPよりは簡単そう。Typescriptで[もっとすごいこと](https://qiita.com/schrosis/items/1835c8e5787837eb2199)をやってる人がいたけど、こういうのは勢いが大事なのでやっていく。

# 元ネタ

https://twitter.com/hirokiky/status/1552193259820032001

## 触発された記事
[PHPでアローラロコンをアーロンにする](https://qiita.com/tadsan/items/828cf43ec902440255cb)

# コード
```javascript:arora.js
function arora(str){
  return new Array(...str).filter((_,i)=>(i+1)%2===1).join("")
}

function main(){
  const str = "アローラロコン"
  console.log(arora(str))
}

main()
```

# 中身
まず文字列を1文字ずつの配列にする。今回はカタカナ(サロゲートペアを含まないマルチバイト文字)だけなので問題ないが、split()メソッドを使って文字列を分解するとサロゲートペアが破壊される（いわゆる「𠮷田さん」問題）ので、スプリット構文で文字列を分解して配列を作成している。(参考: [String.prototype.split() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split) )


```javascript:arora.js
new Array(...str)
// ['ア', 'ロ', 'ー', 'ラ', 'ロ', 'コ', 'ン']
```


次にfilter()メソッドで奇数番目の文字だけを抽出する。
```javascript:arora.js
new Array(...str).filter((_,i)=>i%2===1)
// ['ア', 'ー', 'ロ', 'ン']
```

filterメソッドのコールバック関数は第2引数にインデックスを取るので、これに1を足した数値が2で割り切れるかどうかで判別すればいい。
後はjoin()メソッドで文字列に戻せば終わり。セパレーターに空文字を指定しないとカンマ区切りで文字列になるので注意。

```javascript:arora.js
new Array(...str).filter((_,i)=>(i+1)%2===1).join("")
// アーロン
```

# 正規表現を使う方法もある
元ネタにあったりコメント欄で頂いたりした正規表現を使う方法。しかも「𠮷田さん」問題に対応
```javascript:regex.js
console.log( '🐈🙀😺'.replace(/(.)./gu, '$1') );
// 🐈😺
```
...きっと正規表現には無限の可能性がある。

# おわり
なんか間違っていたらコメントください。
なんか記事を書くと強い人類から知識が降ってきてすごい。
PowerShellで添付ファイル付きのメール送りたいッ！！

# 概要
日時jobで作成されるファイルを毎日特定の宛先にメールで添付して送るJobつくりたい。
そんな要件あったりしませんか？

…。

あったりしませんか？

ということで、Powershellを使って添付ファイル付きのメールを送るスクリプトを作成しました。

もっといいやり方あると思います、処理がスムーズに行くとかね。
でもいいの、もっとPowershell使いこなせるようになったらいい方法探してみる！
ということで優しいまなざしでご覧くださいませ。

## 簡易構成とメール送信の流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1110996/f3fd39ae-26fd-be3a-2ac8-6d6a9ebc9829.png)
Powershellスクリプト実行用サーバとしてEC2と、AmazonSESをSMTPサーバとして利用し
メールを外部へ送信する構成というものになります。
## .ps1について
:::note info
今回はSMTPサーバとしてAWS上のSESを利用しています。
スクリプト本体に記載のある以下の変数についてはそれぞれの構成にあったSMTPサーバ等をご指定ください。
:::
```powershell:変数
$SMTP_server
$Port
$User
$Password
```
```powershell:sendmail.ps1
# メールを指定する変数
$From                    ="送信元サーバに表示したいメールアドレス"
$To                      = "メール送信先"
$Cc                      = "メール送信先CC"
$Subject                 ="任意の件名"
$Body                    ="本文"

# 添付ファイルを指定する変数
$File_path               = "添付したいファイルが存在するパスを記述"
$File_name               = "添付したいファイルを記述"
$File                    = $File_path +"\$File_name"

# SMTPサーバを指定する変数
$SMTP_server             ="email-smtp.ap-northeast-1.amazonaws.com"
$Port                    ="利用するポートを記述"
$User                    ="Amazon SESユーザー名記述"
$Password                ="Amazon SESパスワード"
$SMTP_client             =New-Object Net.Mail.SmtpClient($SMTP_server,$Port)
$SMTP_client.EnableSsl   =$true
$SMTP_client.Credentials =New-Object Net.NetworkCredential($User,$Password)

# メールメッセージの作成
$Mail_massage=New-Object Net.Mail.MailMessage($From,$To,$Subject,$Body)
$Mail_massage.Cc.Add($Cc)
# ファイルから添付ファイルを作成
$Attachment=New-Object Net.Mail.Attachment($File)
# メールメッセージに添付
$Mail_massage.Attachments.Add($Attachment)
# メールメッセージを送信
$SMTP_client.Send($Mail_massage)
```


## ここまできたら
ここまでくりゃもうあとはタスクスケジューラやら、JP1/AJSやらで煮るなり焼くなりです！
VSCode｜複数選択｜ショートカット

# Visual Studio Code
## 選択するショートカット
:::note info
**Alt + Click** 
クリックした箇所を複数選択する
:::

:::note info
**Ctrl + D**
同じ単語を選択する
:::

:::note info
**Ctrl + Shift + L**
同じ単語を一括で選択する
:::

:::note info
**Ctrl + Alt + 上下矢印**
カーソルを垂直方向に増やす
:::
Gatsby の使い方

プロジェクトの作成

```bash
npx gatsby new cities
```

サーバーの実行

```bash
cd cities
npx gatsby develop -H 0.0.0.0
```

ソフトの改造
>index.js に Page 3 へのリンクを追加
>page-2.js に 日付と時間を追加
>page-2.js をコピーして page-3.js を作成

```js:src/pages/index.js
(省略)
const samplePageLinks = [
  {
    text: "Page 2",
    url: "page-2",
    badge: false,
    description:
      "A simple example of linking to another page within a Gatsby site",
  },
  {
    text: "Page 3",
    url: "page-3",
    badge: false,
    description:
      "A simple example of linking to another page within a Gatsby site",
  },
  { text: "TypeScript", url: "using-typescript" },
  { text: "Server Side Rendering", url: "using-ssr" },
  { text: "Deferred Static Generation", url: "using-dsg" },
]
(省略)
```

```js:src/pages/page-2.js
import * as React from "react"
import { Link } from "gatsby"

import Layout from "../components/layout"
import Seo from "../components/seo"

const SecondPage = () => (
  <Layout>
    <h1>Hi from the second page</h1>
    <p>Welcome to page 2</p>
        <blockquote>
        <p>Jul/28/2022 PM 17:26</p>
        </blockquote>
    <Link to="/">Go back to the homepage</Link>
  </Layout>
)

export const Head = () => <Seo title="Page two" />

export default SecondPage
```

```js:src/pages/page-3.js
import * as React from "react"
import { Link } from "gatsby"

import Layout from "../components/layout"
import Seo from "../components/seo"

const SecondPage = () => (
  <Layout>
    <h1>Hi from the second page</h1>
    <p>Welcome to page 3</p>
        <blockquote>
        <p>こんにちは</p>
        <p>Jul/28/2022 PM 17:27</p>
        </blockquote>
    <Link to="/">Go back to the homepage</Link>
  </Layout>
)

export const Head = () => <Seo title="Page two" />

export default SecondPage
```

## 実行結果 ##
http://example.com:8000/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/ae349b90-ddca-5ac9-09cb-a02a4d6177d9.png)

http://example.com:8000/page-2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/981d7cbd-8ebb-5410-002b-4ecb7e57b5ea.png)

http://example.com:8000/page-3
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/30a1c749-88c4-9f41-2952-0e2a36ddeddb.png)
Stylus で 2022 Q2 版の Gmail UI ヘッダの白い部分を消す

# はじめに
## 対象読者
* 2022 Q2 にリリースされた Gmail の UI に不満を持っている人
  * いわゆる `統合UI` などと呼ばれているもの
    * https://jetstream.bz/archives/154206

https://jetstream.bz/archives/154206

  * 特にヘッダの白い部分が気に入らない人


## 前提
* テーマが `高コントラスト` の場合


## what ヘッダの白い部分
* ↓ ここ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/5e5adbb4-104e-bb7e-e6be-143b7b050af4.png)


# どうなる
* こうなる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/a199f2a2-0f8e-efeb-161d-058fe05fe8ef.png)


# 対応法
## Stylus のインストール
* chrome 拡張なので以下からインストールする
  * https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne?hl=ja

https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne?hl=ja

## 新規スタイルの作成
* 以下のような感じに作成して保存

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/4dd71e37-43fc-3f17-52b9-9277c4abb960.png)

```css
@-moz-document domain("mail.google.com") {
  .S4>:not(.Nr){
    background-color: #eee;
  }

  .G-atb {
    margin-right: 0 !important;
  }
}
```

* `.S4>:not(.Nr)` `.G-atb` の特定は chrome の devtools を用いておこなった


# ついでにその他の箇所の調整
## 受信トレイ選択中の背景色
* ダークグレーから白へ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/76866674-2dae-2713-bd4c-2bab94df45e7.png)

## ラベルまわりのフォントサイズや余白
* フォントサイズを小さく
* 余白が取られすぎているのを小さく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/3faa097c-d15e-1159-7cd2-879fc5cb9e30.png)

## 検索ボックスの背景色と枠線
* ダークグレーの背景色がきついのでナシにし、代わりに枠線

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/7ffb72f3-021f-c7d3-d44d-f04a4cb51216.png)

## 最終的に自分好みのカスタマイズ用コード
* class 指定が重複しているところなどあるけれど devtools で表示されたものベースで対応している

```css
@-moz-document domain("mail.google.com") {
  .S4>:not(.Nr){
    background-color: #eee;
  }
  .G-atb {
    margin-right: 0 !important;
  }
  
  form.aJf {
    background-color: transparent;
    border: 1px solid #aaa;
  }

  .TK .TO.nZ:active, .TK .TO.ol:active, .TK .TO.nZ, .TK .TO.ol, .byl .TK .nZ.aBP, .byl .TK .nZ.aS3, .byl .TK .nZ.aS4, .byl .TK .nZ.aS5, .byl .TK .nZ.aS6 {
    background-color: #fff;
  }
  .TK .TO.nZ:active, .TK .TO.ol:active, .TO.nZ, .TO.ol, .byl .nZ.aBP, .byl .nZ.aS3, .byl .nZ.aS4, .byl .nZ.aS5, .byl .nZ.aS6 {
    background-color: #fff;
  }
  
  .yJ {
    margin-bottom: 0;
  }
  .aAw {
    margin-bottom: 0;
  }
  
  .aAv {
    font-size: .9rem;
  }
}
```


# おわりに
## 雑感
* 使い慣れた道具がいきなり変わると生産性が下がるといのは間違いなくある
* とはいえ、変化に追従していけないと老害と化すというのはあるので、留意はしていきたい
* とはいえとはいえ、別にそこは変わらんでもいいでしょ、っていうところがあることも間違いない
【ServiceNow】カタログアイテムを複数のカテゴリに紐づける方法

カタログアイテムを複数のカテゴリに紐づける方法をご紹介します。
以下のKBを参考に設定しました。

https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0711988


## 設定方法
### カタログアイテムの関連リストにカテゴリを追加
①画面左のメニューの　サービスカタログ >> アイテムの管理　から対象のカタログアイテムを選択します。

➁画面左上のコンテキストメニューから、構成　>>　関連リスト　を選択します。
<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600769/8ed285df-c2cf-0d39-1c86-cf22eaa12bca.png">

③カテゴリ　を選択して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600769/d6c65ccf-aa6b-c935-09f0-c0b5c6799a75.png)

### カタログアイテムを追加したいカテゴリを選択する
①カテゴリタブの編集ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600769/0c0ba31d-b8f9-32b7-e388-36b535515dec.png)


➁カタログアイテムを追加したいカテゴリを選択し保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600769/daf2bb7c-c733-0f76-8d0a-1f16551d868b.png)


追加できました。以上で設定完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600769/605bd72e-c970-b57f-6d23-ffb6cc856662.png)



## 動作確認
サービスポータルで設定結果を確認します。
<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600769/500e646a-027f-9153-03b3-44c03710d10a.png">

<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600769/d47c12ba-e81c-f937-57c4-175348e255d1.png">

カテゴリ１にもカテゴリ２にもカタログアイテムAが表示されました。


## おわりに
業務ごとにカテゴリを作成しているものの、複数の業務での使用が想定されるカタログアイテムがありカテゴリを１つに限定したくない
といった要望があり今回調査しました。
型レベのアローラロコンをアーロンにする

https://twitter.com/hirokiky/status/1552193259820032001?s=20&t=7sN1bk-exKhbwfyQmx_Rbg

TypeScriptで型レベルのアローラロコンをアーロンに進化させたい

## 完成形

```typescript
type Evolve<T extends string> = T extends `${infer U}${infer _}${infer V}`
  ? `${U}${Evolve<V>}`
  : T

type Pokemon = Evolve<'アローラロコン'>
//   ^? type Pokemon = "アーロン"
```

https://www.typescriptlang.org/play?all=true#code/C4TwDgpgBAogbgewDZwgHgCpQgD2BAOwBMBnKE4AJwEsCBzAPigF4otd9iyADAEgG9aAMwiUoAVQC+A4aKgB9aYIIixANUncAUFCgB+KH35SB8ZKjRqGmnVABcbLVtCQoABQQBrCAFsEBFlhEFHQAckAihkBbhkAfhkBLhkjAZoZAZ4ZQhi0AenTdKAA9PS0gA

TypeScriptすごい(小並感)
変数の前につける魔法の言葉

# はじめに
Swiftを勉強していると変数名の前にstaticやprivate、State など呪文のような言葉がついており、なんだこれ！？と思った方も多いのではないでしょうか。
ですので、それぞれどういった意味を持っているのかについてまとめました！！

# static
```swift
static var hoge
```
そもそもこのstaticとは一体何者なのでしょうか。
それは、**値を保持し続ける変数を宣言するためのもの**である。一般的には「静的変数」と呼ばれている。

staticで宣言した変数はインスタンスを生成しなくてもアクセスすることができる。
一方で、値の再度初期化ができないため、インスタンス単位でアクセスすることはできない。

# アクセス修飾子
## アクセス修飾子とは
クラスや変数等がどこからアクセス可能であるかを決定するものである。

## 種類
```swift
// デフォルトの修飾子である。省略可能。
internal var hoge

// クラス内でのみアクセス可能。
private var hoge

// 同じファイル内でのみアクセス可能。
fileprivate var hoge

// どこからでもアクセス可能。継承やオーバーライドはできない。
public var hoge

// どこからでもアクセス可能。継承やオーバーライドもできる。
open var hoge

```

open -> public -> internal -> fileprivate -> private
openになるにつれ制限が緩く、privateになるにつれ制限がきつくなる。

# データバインディング
## データバインディングとは
データとViewを紐付けて、データを更新すると、紐付けされたViewが再描画するという仕組みである。

## 種類
### `@state`
Viewとプロパティを紐付けしている仕組みである。
SwiftUIのViewはstructであるため、プロパティの更新ができないが、`@state`を用いることによりプロパティの変更が可能となる。そして、プロパティの値が変更されるとViewがSwiftUIによって自動的に再描画する。

### `@ObservedObject`
データクラス(クラスのインスタンス)とViewを紐付けするための仕組みである。
クラスとして定義をし、`@published`属性が付与されたプロパティを監視している。

### `@EnvironmentObject`
`@ObservedObject`と同様の仕組みである。 
違いは、アプリケーション全体でアクセス可能であること。アプリケーション全体で共有したいデータを扱うときに使用する。




# 最後に
変数の前につけるあれこれをざっと紹介しました！
この記事が全てではなく、大まかな意味を理解できれば良いかなと思い,書きました。
もっと深く理解したい方は参考記事をご覧ください。
最後まで読んでいただきありがとうございました。

# 参考
* [staticについて](https://fuuno.net/swift/static/static.html)
* [アクセス修飾子](https://qiita.com/mototaji/items/d1ae68457a118df71458)
* [データバイディングについて](https://capibara1969.com/3101/)
独学でプログラミングの勉強をしている人に、開発にたどり着くまでを知ってほしい

こんにちは。
会社の上の人に、「Unity勉強7日目の記事にはちゃんとゲームできてますよ」って啖呵切っちゃったので、もうやるしかない。

そんな中で書くことじゃない気もするけれど、独学でプログラマ目指す系の人を見ていて思うことがあったのでつらつら書いていきたいです。ポエムですよ。

# 「開発がしたいからオンラインで勉強しています！」
良いと思います。私もそんな感じです。

それで、**あなたは何を創りたいのですか？**

やみくもにProgateとかしていませんか？
あなたの勉強に「ゴール」はありますか？

たとえば、知らない人に突然

**「貴方がつくろうとしているアプリは何ですか？どのような目的でつくるのですか？」**
**「貴方が想定する『開発』には、どんな要素が必要ですか？」**

といった質問をされた時、持論を展開できますか。

--------
あなたが開発をしたい理由は色々あると思います。

よく聞くのは転職活動時のポートフォリオ作成とかですかね。
趣味なら楽しんでほしいです。でも、何か「成果物」があった方が、達成感ありますよ。

### プログラミングの勉強をしている人が躓くと思うポイント
#### ・「言語の勉強をしているけれど、次に何をしたらいいか分からない」
こういう人多いと思います。特につくりたいものは無い、というか、**実際どうやってつくるの？** って内心思ったりするんじゃないかな。（**私は思ってましたよ。**）

で、考えたんですけれど、とりあえず「ホームページをつくろう」とか「～に似たアプリをつくろう」とか、**暫定的にゴールを自分で設定する**と良いと思うのですね。

あと、最近は **「言語別」** ではなく、 **「やりたいこと別」** でコースが分かれていることもあるので、そういう方向から進めるのも良いと思います。

Progateなら下記とか。

https://prog-8.com/paths/node

paizaはさらに詳しくつくりたいものベースでコースがありますね。
（青い枠線の中）
![無題12.pmg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737718/ba83298b-378d-2219-36f2-563d2662ae2a.png)

で、これらのコースやってからでだいたいで良いので、**「こんな感じのものを作れるな」**、**「今のスキルならこんなものが作れるな」**、という想像をしてみてください。

つくりたいものが見えてきたら、ゴールまで**半分くらいですよ。**



#### ・「つくったものを、どうやって公開したら良いのか分からない」
前述したとおり、つくりたいものが見えたら、つくります。
**「そのためにどんなアルゴリズムが必要か」**
**「UIはどうしようか」**

色々想像が膨らみますね。**「つくりたいもの」から逆算して**自分に必要なスキルなりを習得していくとスムーズに学習も進みます。

で、**標題の「どうやって公開したら良いのか分からない」について。**
これは色々な方法があると思います。とりあえず3つ。

**・Githubで書いてみたコードを公開する**
一番簡単な方法かなと思います。「GitHubもよく分からん！」って人は、.text形式でメモ帳に書いて、人に見せられるようにしとけばとりあえず良いのではないですかね。

**・GitHub Pagesでホームページを作ってみる**
HTMLとCSSとJavaScriptには対応しているので、**目に見える形で何かをつくりたい人は「ホームページ」をつくってみてはいかがかと。**

https://prog-8.com/docs/github-pages

 でもPHP、Ruby、Python などのサーバーサイド言語はサポートしていないので、サーバーサイド言語を使いたい場合は下記ですかね。

**・サーバ契約してそこにアップロードする**
正直これできたらSES（客先常駐とかが多い正社員だけど派遣みたいなエンジニア）とか採用で良くないですか・・・と思います。個人的には、です。

（参考）

https://naoya-ono.com/blog/xserver-publish/


**(2022.07.29 追記)**
冷静に考えたら、**Qiitaに書けばいいじゃん！** と思いました。
以下は私の夏休みの宿題。

https://qiita.com/yukie-t/items/c7a4f6171e248380f430

失敗だけど、失敗してもいいじゃん。

あと **「Qiitaのアカウント持ってるだけで面接官側からの印象が変わる」** と風の噂で聞きましたよ。

-------
とりあえず、
**プログラミング学習のゴールは「言語が記述できること」ではなく、「自分で何かつくれること」。**
と心のどこかに留めておいてください。

というか、**「要件定義」** という言葉を知っていると良いのかもしれない。
以下のブログ記事が個人的にはとても分かりやすかったです。

https://tkmt-hrkz.hatenablog.com/entry/2020/09/15/%E3%80%90%E9%96%8B%E7%99%BA%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%80%91%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA%E3%81%AE%E6%B5%81%E3%82%8C


なんかすごい偉そうに書いているけど、私はエンジニアとしてもプログラマとしても超中途半端で、正直Qiitaに記事書くのもちょっと怖いです。でもコーディングは楽しい、何かが目に見えて開発できていくのは楽しいです。それだけでも伝われば良いのだけどなあ。

おわり。
CLIを使用したGitの初期設定(初心者向け)

先日、初めてGitのリポジトリ作成をし初期設定のコマンドについて学んだので、自分のアウトプットと
これから学習するかたの参考になればと考え、まとめてみました。
(CLIコマンドは、省いて説明しています！)

## Gitのリポジトリ作成
~~~md:書き方
mkdir git
~~~
`mkdir`を使用することでGitフォルダが作成できます。
Gitフォルダをまだ作成していない場合は、この作業から始めます。

## Gitの初期化
~~~md:書き方
git　init
~~~
作成したGitフォルダに移動したら
`init`を使用すると、Gitの「initialize(初期化)」ができます。

## Gitで使用するアカウントの設定
### git config
~~~md:user nameの書き方
git config --global user.name 'YOUR NAME'
~~~
`--global user.name` に続いて、シングルコーテーション('')の中に自分の名前を記入します。

~~~md:mail addressの書き方
git config --global user.email 'youremail@address.com'
~~~
`--global user.email` に続いて、シングルコーテーション('')の中に自分のメールアドレスを記入します。

~~~md:mail addressの書き方
git config --global color.ui true
~~~
`--global color.ui` に続いて、`true`を指定することでターミナルのコマンドに色がつきます。
色をつけたくない場合は、`false`を指定します。


ここまでで、Gitを使用する準備が完了しました！



#### 注釈
今回は、`--global`を使用しましたが、これは、各ユーザー専用のファイルを読み書きする際のオプションになります。(自分のGitアカウントで使用する場合はこれでよさそうです。環境的に一番メジャーと言えそうです。)
他に、`--system`や`--local`があリますが、今回は説明を割愛させていただきます。

## 参考

* [8.1 Git のカスタマイズ - Git の設定 | git](https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%81%AE%E8%A8%AD%E5%AE%9A)
エンジニアのためのSNS文章術

Webサービスをリリースして気づいたことがあります。
***SNSでの発信力はエンジニアでも、必要であると。***
今更ですが、SNSでの発信力を身につけるために、
SNSでの文章術を勉強しました。
SNSをうまく活用できていない問題点を挙げて、
それを解決するヒントを紹介します。

# 目的
エンジニアの皆さんがSNSをやる目的ってなんでしょうか？
- 技術的な情報の共有するため
- エンジニア友達とのコミュニケーションツールとして
- インプットや勉強などの記録をつけるため
- 面白い情報を収集するため
- 創作物の宣伝

SNSは情報収集の場でもありますが、情報発信の場でもあります。
情報を発信し、交流の場として活用することで、情報収集のツールとしての幅も広がります。
また、交流の中で人脈を広げたり、セルフブランディングしたり、モチベーションの維持や集客につながるのがSNS。

# エンジニアSNS問題のあるある
SNSのメリットはわかっているけど、うまく活用できない。
そう思っている人の問題は下のような感じだと思います。
- 書くことがない
- 上手な文が書けない
- 身バレや炎上などのリスクが怖い
- バズりたいけどなにをすればいいかわからない

# 問題解決

## 書くことがない
- 自分がいいと思う文章をいっぱい見て何が「面白い」「役に立つ」か考える
- タイムリーな話題についての思い出を書く
- 記事ではなく他の人へのコメントを書く
- 違和感を感じたことを「ふ〜ん」で終わらせず、なぜ違和感を感じたかを追求すると気づきにつながる
- 子供の目線に戻って書く。常識や先入観を捨ててあたりまえを疑問に思う
- 趣味や日課・勉強などチャレンジの記録を残す。自分の努力の確認と他人からの反応がモチベーションにもなる
- 専門的に発信できることを思いつく限り挙げてみる（狭いテーマでいい）
- 失敗談を語る
- SNSなどで得た情報に自分の見解など、自分のフィルターを通して、自分の視点を加える。
- 「身近な誰か」「過去の自分」をターゲットに書いてみる

## 上手な文が書けない
- SNSでは親しまれる文章が重要で、上手な文章を書いたりやこまかい文法にこだわる必要はない
- ビジネス文章や学術論文と違って砕けた表現でいい
- 「〜たり」を使ったら「〜たり』で続けてリズムを作る
- 「〜です。〜です。」「〜ました。〜ました。」みたいに同じ語尾を続けないで、体言止めを使ったりする
- つたわりやすい文章の書き方
- 二重否定を使わない
- 漢字を減らす
- 一文を短くする
- 主語と述語を近づける
- 情報整理してから何を書くか決めて文章を書き始める。
- 伝えるメッセージは一つだけ
- 読む相手を想定する
- 専門用語を多用しない
- 中学生でも知っている言葉で
- 自分の知識を世間のあたりまえだと思わない

## 身バレや炎上のリスクが怖い
- 誤解を招かないように注意
- 身バレにつながりそうな情報などは、時間差で情報を公開
- 休みの話をしてクライアントなどから反感を買うこともあるから、見た人がどう思うか考える

## バズりたいけどなにをすればいいかわからない
- いいねやリツイートなど共有される情報は「共感」が重要
- シェアしたい情報は共感できる人が発信している。自分ばかりでなく、周りに気配りして、友達の記事に対してリアクションしたりして独りよがりではない、シェアしたくなる人物になる
- ブレない独自の視点を含む文は、その独自性でその人のものの見方。意見にカドがある、エッジが立っているということで、共感につながる。
- つかみは工夫する。数字を使ったり、擬音を使ったり、手紙風にしたりなど
- 知りたい情報や、緊急性の高い情報には、【教えてください！】など最初にタイトルをつける
- 「親しみやすさ」と「人間らしさ」を感じさせながら、友達に「専門的な情報」を発信する
- 自分ばかりではなく、相手にとっても有益であることが重要
- バズることとフォロワーが増えることは別
- フォロワーを増やすには、アイコン、アカウント名、プロフィール名、プロフィール、発信テーマをしっかり設定する
- １投稿で１フォロワー必ず増えるというコンテンツを意識する
- 調べたこと、読んだニュースを箇条書きで投稿。同じ悩みを抱える人を救ってフォロワーにする
- フォローされやすいのは「有益・憧れ・楽しい・安心（励まし）」
- 0いいねがなぜ0いいねだったかの分析をする
- タイムラインが自分の名言集になっていたり、自分語りをしてはいけない。
- まずは相手の知りたいことを聞いてもらって、聞き始めたから関連する他のことにも知りたかっとことにも気づいてついでに話を聞き続けてしまう、一貫性の原理を活用する
- 弱みを隠さない。人は、人がすごい人になっていく過程に興味を持っていく。自分をすごい人にしてくれそうな人に強い関心を持つ

# まとめ
SNSで書いたことは世界中に公開されます。
色々な人が読むことを念頭において、伝わる文章を書きましょう。
そのためにもたくさん文章を書き、その文を分析して次の文章に活かすのが大事だと思います。
自分も頑張ってSNSでの発信を継続していきたいと思います。

# 参考文献
- [ソーシャルメディアで伝わる文章術](https://www.amazon.co.jp/dp/4798037117/)
- [エンジニアのための伝わる書き方講座](https://www.amazon.co.jp/dp/477416576X/)
- [才能に頼らない文章術](https://www.amazon.co.jp/gp/product/B07KP8CB7V/)
- [SNSでフォロワーを増やす前に読む本「やってはいけない10のこと」](https://www.amazon.co.jp/gp/product/B08NHJSN1P/)
- [パッと書けてすぐに売れる稼ぐ人の「超速」文章術](https://www.amazon.co.jp/gp/product/B086KQK72S/)
  
# さいごに
Skebの動画版みたいにYouTubeに動画を納品する
動画コミッションサービス

https://superreq.jp

と
Twitterで個人的ランキングを発表するために見やすい画像を作ってくれる
個人的ランキングサイト

https://favoritetop3.jp

をもっと広めるためにSNS活用術を学んだのでぜひ使ってみてください。

また、この記事で紹介した技を使った面白ツイートは

https://twitter.com/hanulldog

こちらのアカウントで披露するのでぜひフォローしてください。
Reactのonchangeは、javaScriptのonchangeとは違うらしい。

どうやらReactは、Component.onChangeのリスナーをDOM element.oninputイベントに関連付けるようだ。
つまり、Reactのonchangeイベントは、javaScriptのoninputと同じ挙動になるらしい。

※javaScriptのイベントハンドラ
onchange - フォーカスを外したタイミングで発火する
oninput - フォームに入力があるごとに発火する

以下React公式ドキュメントから引用。
![スクリーンショット 2022-07-27 23.30.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1556380/5351d3a1-7f93-b99c-e3a2-937f796877d2.png)

しがたってjavaScriptのonChangeイベントと同じだと思って使用すると
ユーザーの入力後にイベントを発火させたい時はうまくいかない。

これを実現するには、onBlurを使えば良いが
値が手動で変更されたことを確認する必要もある。
あとはシチュエーションによって、工夫する必要がありそう。

## 参考文献

・[Reactでは、onChangeとonInputの違いは何ですか？](https://www.web-dev-qa-db-ja.com/ja/javascript/react%E3%81%A7%E3%81%AF%E3%80%81onchange%E3%81%A8oninput%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/825453536/)
・[React の input でユーザ入力完了後に処理したい](https://let.blog.jp/article/27387978)
Djangoで create table の raw sql を表示する方法

なんかdjango で migrateしても read only error出るので諦めた

まず modelを作ってから

```rb

# migration用のファイルを作る
python manage.py makemigrations

# 本当はこれでいくはずだけど、コケるので
python manage.py migrate

# sqlを表示
python manage.py sqlmigrate <app> <さっきmakemigrationで作ったファイルの番号。0005とか>

BEGIN;
--
-- Create model ...
--
CREATE TABLE `...` (`id` varchar(255) NOT NULL PRIMARY KEY, `...` varchar(255) NOT NULL ...);
--
--
...
COMMIT;
```

表示されたのをそのまま mysql に流してやった。
git + githubを使った開発の流れ

 # gitを使った開発の流れ
まず、githubとセットアップが終わっている前提で書きます
流れとしては
```
1. git switch develop　
```
//メインのブランチに移動
```
2. git pull 
```
//developブランチの最新版を取得
```
3. git switch -c feature/add-login-page 
```
//developブランチ → featureブランチ（作業ブランチ）を作る
```
4. このブランチでコードを書く
```
```
5. git commit -am 'ログイン処理を追加' 
```
//変更をコミット
```
6. git push 
```
//github にコミットを反映
```
7. githubからプルリク作成、チャットでレビュー依頼
```
![スクリーンショット 2022-07-28 16.26.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747920/2d39d661-41cb-9a9a-3537-ae3a85c6fdf2.png)

```
8. 承認もらったらmerge pull requestsで、featureブランチをdevelopブランチにマージする
```
この流れで行って、各チケットごとにブランチを切り替えて開発を行っていく
WSLで構築した環境をエクスポートして共有する

## やりたいこと
WSL2を使って構築した環境を他の人に共有する

## 作ってエクスポートまで

1. 元となるディストリビューションをインストール
   ```cmd
   wsl --install -d Ubuntu
   ```
1. そのディストリビューションでセットアップする
1. 作り終わったディストリビューションを停止
   ```cmd
   wsl -t Ubuntu
   ```
1. 適当なディレクトリにエクスポートする
   ```cmd
   wsl --export Ubuntu  c:\tmp\ubuntu.tar
   ```
1. 作成したtarファイルを共有したい相手に渡す

## 使う側の作業
1. WSLの有効化をしておく
   https://docs.microsoft.com/ja-jp/windows/wsl/install-manual
1. wslconfigも準備する（必要に応じて）
   ```text:%USERPROFILE%\\.wslconfig
   [wsl2]
   kernelCommandLine=vsyscall=emulate
   ```
1. 使いたい端末で受け取ったtarファイルをインポート
   ```cmd
   wsl --import My-Ubuntu c:\wsl\My-Ubuntu\ c:\Download\ubuntu.tar
   ```
1. ユーザ名を変更する（必要に応じて）
   ```cmd
   wsl -u root -d Ubuntu
   ```
   ```bash
   usermod -l 変更後のユーザ名 変更前のユーザ名
   groupmod -n 変更後のユーザ名 変更前のユーザ名
   usermod -d /home/変更後のユーザ名 -m 変更後のユーザ名
   exit
   ```
1. デフォルトユーザを変更する：powershell（必要に応じて）
   ```powershell
   # 一時的にfunction定義
   Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };
   ```
   ```powershell
   # 定義したfunctionを実行する
   WSL-SetDefaultUser Ubuntu ユーザ名
   exit
   ```
1. これで、Windowsターミナルに追加されてるUbuntuで操作できる
   あとは追加でパスワードも変更するなり良しなに
Amazon Linux 2 の環境で rails c を立ち上げた際、日本語入力をすると Encoding::UndefinedConversionError が出ていたので修正

そもそもの文字の設定が問題でした。

`/etc/sysconfig/i18n` など共通で読み込まれるファイルに下記を追記したら入力できるようになりました。

```
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
```
ディスプレイ

出力装置とはコンピュータ内部の処理を結果を外部に出力するための装置
ディスプレイはそのうちの一つ。

# 解像度と、色のあらわし方
ディスプレイの表示面は格子状に細かく区切られている。その一つ一つに点ドットを使って表現している。
点の集まりにすぎない。

このディスプレイの表示面を```どれだけ細かく区切れるか```によって表示される滑らかさが決まる。
この表示するきめ細かさを```解像度```と言う。

一つのドットにRGB３色(RはRed、GはGreen、BはBlue)の光重ねて表現している。

## 気づき
区切りの細かさで滑らかさが決まるのか。
ではどう言うふうにyoutubeは画質の変更をしているのかな?
どう言う風に区切っているのだろうか？
一つの画面で区切るのを大きくしたり小さくしているのだろう。
想像するとすごいな。

# VRAM(ビデオRAM)の話
コンピュータは、画面に表示させる内容を、```VRAM(ビデオRAM）```と言う専用のメモリに保持する。
なので画面に```表示させている容量以上の空き```がなければならない。
画像データサイズの計算法は解像度と色を扱うビットを掛けることで求まる。

## 気づき
画面に表示させる内容はVRAMと言う専用メモリがあるのか。
全部同じメモリに入るのかと思った。
どうのようなメモリなのだろうか？

通常のメモリ（RAM）は、CPUがあらゆる処理を実行するための作業スペースですが、VRAMは映像や画像の処理にだけ特化した作業スペース
出典 https://digitaldiy.jp/article/firstdiy/4827/

なるほど完全に別のメモリなのかそれがGPUに繋がっているのか。

## ディスプレイの種類と特徴
### CRTディスプレイ
* ブラウン管を使ったディスプレイ
* 奥行きがあるために設置面積が広い。
* 消費電力も大きい

### 液晶ディスプレイ
* 電圧によって液晶を制御し、バックライトまたは外部からの光を取り込むことで表示する。
* 薄型で消費電力は小さい
* 現在の主流

### 有機ELディスプレイ
* 有機化合物に電圧を加えることで発光
* 自ら発行するためバックライトが不要

### プラズマディスプレイ
* プラズマ放電により発光
* 高電圧が必要
* パソコン専用として使われることはあまりない。
* ガラス板の間に封入した希ガスに高い電圧をかけてプラズマ放電を起こし、周辺に塗布された蛍光体を発光させる原理のもの。
  出典 https://e-words.jp/w/%E3%83%97%E3%83%A9%E3%82%BA%E3%83%9E%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4.html
## 気づき
有機ELはこの頃聞く。テレビの中に有機化合物とはどう言うことか？

「有機EL」とは、英語の「オルガニック・エレクトロ・ルミネッセンス（organic electro-luminescence）」の略語です。オルガニックは```有機物（有機化合物）で、生物の体を作っている炭素が入った化合物```のことです。またルミネッセンスとは、```ホタルやヒカリゴケなどの生物発光や夜光塗料のように、熱を出さずに光を出す現象```です1。つまり有機ELは「電気を使った有機物の発光」という意味で、現象を指す言葉です。いま注目されているのは、この有機物の発光のしくみを利用した部品（素子）やディスプレイで、日本ではこれらをまとめて「有機EL」あるいは「有機ELデバイス」と呼んでいます2。

ルミネッセンスを電気のエネルギーで起こすのがエレクトロ・ルミネッセンス、つまりELです。身のまわりでたくさん使われているLED（発光ダイオード）にも同じ技術が使われています。LEDは、性質がことなる2種類の半導体を使用して発光させます。電子をよぶんに持った状態（n型）の半導体、もうひとつは電子が足りない（正孔3が多い）状態（p型）の半導体です。```電流が流れると半導体のさかい目部分で、電子（マイナス）とプラスを持つ「正孔」が合わさり、このときに光を出す```しくみになっていします。

いっぽう有機ELは、電極や輸送層（電極や電子などを効率良く運ぶ物質の層）、発光層（電気で発光する有機物質の層）が、透明な基板（ガラスやプラスチックなどの薄い板）の上に積み重なっています。

プラスとマイナスの電極に電源をつなぐと、```LEDの半導体のさかい目と同じように発光層で電子と正孔が合わさって光を出します。``` ```いくつかの物質を重ねた構造```であることや、```電気エネルギーで熱を出さずに光を出す```という点で、LEDと有機ELはとてもよく似ています。
出典　https://global.canon/ja/technology/kids/mystery/m_04_12.html

なんかよくわからないけど。
蛍の仕組みを電気のエネルギーで再現しているのか。
パソコンも熱を出さないものが出ないかな。

# 入出力装置の性能を示す単位
### ppm(pages per minute)
```１分間あたりに印刷可能な出力枚数。```ページ（レーザ）プリンタの性能指標となる。

### 問題を解く時の気づき
* dpiは１インチ中のドットの数 
  出典 https://www.hitachi-hightech.com/jp/channel/units/02_18.html#:~:text=dpi%E3%81%AF1%E3%82%A4%E3%83%B3%E3%83%81%E3%81%AE,%E9%AB%98%E7%94%BB%E8%B3%AA%E3%81%A8%E3%81%84%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82
* １ポイントは１／72インチ
* インチは大きさを表すcmでも表せる。
* ９６dpiなので１インチあたり96ドットある。
  １ポイントは1／72インチなので１インチを７２等分している大きさになる。９６を７２して１２かけてやれば答えが出るはず。
  幅1インチ（約2.54cm）を何個の点（ドット）で表現できるかを表す値。
  出典 https://e-words.jp/w/dpi.html
  長さあたりの数のなのか。だから正方フォントだから１６になるのか。

# 関連記事
https://qiita.com/masatom86650860/items/bf00f285620df581b41e

# 出典
https://gihyo.jp/book/2022/978-4-297-12375-8

https://gihyo.jp/book/2020/978-4-297-11781-8
python 3.10をAWS EC2にinstallする上ではまったこと

## python 3.10がinstall listに表示されない
pyenvでpythonのversion管理を行なっている場合pyenv自体をアップデートしないとpython 3.10が表示されません。

pyenv-updateというパッケージをinstallしてpyenvのバージョンを最新にしましょう。

https://github.com/pyenv/pyenv-update


```
$ git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update
```

install後このコマンドを実行

```
$ pyenv update
```

そうするとpython 3.10がinstall listに表示されるようになるはずです！

```
$ pyenv install list
```




## Openssl11が必要

python 3.10からはEC2環境にinstallするにはOpenSSL1.1.1が必要になります。
これが地味にハマりどころです。


> これまで、Pythonでは OpenSSL のVersion 1.0.2以降が利用可能でしたが、Python 3.10からは、OpenSSL 1.1.1以降が必須となりました(PEP 644 Require OpenSSL 1.1.1 or newer)。
WindowsやMacなどで、Python.orgのインストーラを利用する場合には、OpensSSLの最新版が含まれているので気にする必要はありません。また、Macのbrewなどでインストールする場合も、OpenSSL 1.1.1が使用されます。
Linux環境などで独自にPythonをビルドする場合には、OpenSSL 1.1.1以降を用意する必要があります。

参考

https://www.python.jp/news/wnpython310/require-openssl11.html


ですので以下コマンドでOpenSSL1.1.1をinstallする必要があります。

```
$ sudo yum install openssl11 openssl11-devel
```
RxSwift基礎-オペレーターその6

RxSwiftで使えるオペレーターを備忘録的に書き綴っていきたいと思います。
また、公式Exanpleを参考にしています。
その1は[こちら](https://qiita.com/masasumi0327/items/ef3d2cf4d014414f42d5)
その2は[こちら](https://qiita.com/masasumi0327/items/c5f2c57420235cb58a5e)
その3は[こちら](https://qiita.com/masasumi0327/items/9bf2ad48f2c6a7183dae)
その4は[こちら](https://qiita.com/masasumi0327/items/fb0f250ab65f6cf5c416)
その5は[こちら](https://qiita.com/masasumi0327/items/62ddabf3732052cf7774)


https://github.com/ReactiveX/RxSwift

また、今回の内容はこちらの動画が非常に解りやすいです。

https://www.youtube.com/watch?v=eP7e8MLz1qI&t=617s


作業環境については、

https://qiita.com/masasumi0327/items/2ae144160987e571bce4

を参考に構築して頂ければと思います。
早速、やっていきましょう!!
## Mathematical and Aggregate Operators
### toArray
```swift
func toArray() {
    let disposeBag = DisposeBag()
    
    Observable.range(start: 1, count: 10)
        .toArray()
        .subscribe{ print($0) }
        .disposed(by: disposeBag)
}
toArray() // success([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
```
文字通り、配列として出力してくれるオペレーターです。
### reduce
```swift
func reduce() {
    let disposeBag = DisposeBag()
    
    Observable.of("🐵", "🐶", "🦜")
        .reduce("👶🏻", accumulator: +)
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)
}
reduce() // 👶🏻🐵🐶🦜
```
初期値を指定し、その値に対し、作成したObservableを集約して一つのObservableに変換し、出力するオペレーターです。
### concat
```swift
func concat() {
    let disposeBag = DisposeBag()
    
    let subject1 = PublishSubject<String>()
    let subject2 = PublishSubject<String>()
    
    let subjectsSubject = BehaviorSubject(value: subject1)
    
    subjectsSubject.asObservable()
        .concat()
        .subscribe(onNext:{ print($0) })
        .disposed(by: disposeBag)
    
    subject1.onNext("🍐")
    subject1.onNext("🍊")
    
    subjectsSubject.onNext(subject2)
    
    subject2.onNext("subject1がonCompletedされるまで値を流しません")
    subject2.onNext("🐱")// 値が流れない
    
    subject1.onCompleted()// 次からはsubject2の値が流れます
    
    subject2.onNext("🐭")
}
concat() /*
🍐
🍊
🐭
*/
```
**concat**は、concatenationの略語で、「連結する」の意味があります。
サンプルコードの場合だとsubject1のがcompletedするまでは、subject2の値を流さず、subject1がcompletedすると、subject2のイベントも発生させる事が出来るようになるオペレーターになります。

# さいごに
いよいよオペレーターの勉強も後半戦です。全部のオペレーターを使いこなせる自身は無いですが、😭知識としてインプットしておき、いざという時に使える事が出来たらと思う今日この頃です。
ではまたの機会よろしくお願いします。
文字を表示してみる


[前回書いた記事](https://qiita.com/K_miyuu/items/43dfd4700cabddcbb29e "はじめに～Javaを使う為のソフトダウンロードと初期設定～")
# コンソールを用意する
Eclipsには「コンソール」という、プログラムの結果を表示する機能があるので、そこに文字を表示させてみます。
※画像の黄色で囲ったエリアがコンソールです。
※コンソールを表示方法は、「ウィンドウ」メニュー→ビューの表示→コンソール
![Eclips初期設定08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/3919724a-2657-ea15-74ba-2cd288129adf.png)

# なにかしらの値をJavaで表示させる方法
### コンソールに値を表示する呪文
文字を表示させる命令はよく使うので、下記の基本文を覚えてしまった方が早い。
（Systemクラスについて等、詳細は別途調べました。）
~~~ Java:FirstExample.java
System.out.println();
~~~
システム.アウト.プリントエルエヌ（かっこ）；

:::note info
Eclips便利機能
「**sysout**」と打ちこんで、
**Ctrl**  +　**space**
を押したら自動で「System.out.println();」の命令文に変換してくれます。
:::
![Eclips初期設定05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/98837223-3289-2800-139a-97aa7153cad6.png)
　　　↓↓↓
![Eclips初期設定07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/0afe2787-8207-2d43-d592-c106f9bdf8d2.png)

# 「こんにちは」を表示させてみよう
System.out.println();のカッコの中に表示する値を記入します。
文字列の場合、”　”で囲ってあげます。
※文字列とは、文字や記号、数字を含む並んだテキストのまとまりのことです。
~~~ Java:FirstExample.java
System.out.println("こんにちは");
~~~
![Eclips初期設定09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/c07be3ad-1f35-e9de-edbf-2bde6bc0a2f1.png)

:::note warn
注意
ファイル名の左上に「*」がついてるのは保存されてないという事です。
**ctrl** + **S**で保存するようにしましょう。
:::

### プロジェクトの保存場所の確認

![Eclips初期設定10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/7059f971-075d-524c-d1b8-3b2e2713e052.png)
![Eclips初期設定10-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/3d2477bc-b241-8046-b4ee-dd47ee3cabff.png)

# プログラムの実行
メニュー から、実行を選択し、実行します。
※プログラムを最初に実行するときはこれを選ぶようにしましょう
![Eclips初期設定11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/3850250d-8467-4995-510e-ef978687c921.png)

実行すると、コンソールに表示されます。
![Eclips初期設定12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730862/e0c404b0-e01a-d711-2f92-1424c8cb19b0.png)

:::note info
メモ１
クラス新規作成時のJavaファイル名と、プログラム内のclass名は同じにしてあげてね。
:::

:::note info
メモ２
間違ったとことは赤い波線や、×が出てくれるので、そこから訂正していくよ。
:::
Goの学習方法

## はじめに
私が行ったGoの学習方法をまとめます。

## 記事を書いてる人の経験
[自己紹介](https://qiita.com/bear05/items/9bc49f01def7305fa075)

## 学習方法
1.Goについて調べる
　複数のサイトを読んで、そもそもGoはどんな言語かについてざっくりと調べました。

参考記事
・[Go言語とはどんなプログラミング言語？特徴やできることを解説](https://hnavi.co.jp/knowledge/blog/go/)
・[Go言語とは - 作れるものや特徴を知ろう](https://www.pasonatech.co.jp/workstyle/column/detail.html?p=7489)
・[Goのエキスパートが教えるGoの魅力、プログラミング基礎入門](https://flxy.jp/media/article/10744)

2.学習する
　様々な学習サイトがありましたが、私は公式のリファレンス「A Tour of Go」を一通り学習しました。
　様々な学習サイトをすべて網羅するとキリがないため、
基本だけ学習して、わからないことは開発時に調べながら学習していこうと考えました。

[A Tour of Go](https://go-tour-jp.appspot.com/welcome/1)

3.環境構築
　個人のPCでGoを使用できるように、環境構築を行いました。
 Goの環境構築で行ったことについて、別記事に記載しました。

[バックエンド開発 Goのインストールと初期設定](https://qiita.com/bear05/items/4f5ef82384f82efe5975)
Flutterでスマホのセンサーデータを取得してみた

---
# :book: Flutterの記事を整理し本にしました :book:
https://zenn.dev/kazutxt/books/flutter_practice_introduction

* <font color="red"><b>本稿の記事を含む様々な記事を体系的に整理し本にまとめました</b></font>
* 今後はこちらを最新化するため、<font color="red"><b>最新情報はこちらをご確認ください</b></font>
---

## まとめ記事
* [Flutter系の記事のまとめ](https://qiita.com/kazutxt/items/524acb1c134015682ccf)

# はじめに
**スマートフォンに搭載されているセンサーからデータを取得する方法を解説します。**

# センサー
## パッケージインストール
今回は`sensors_plus`のパッケージを利用します。細かい条件は下記の公式ドキュメントを参照してください。
* https://pub.dev/packages/sensors_plus

まず、必要なパッケージをインストールします。
```diff yaml:pubspec.yml
//中略
dependencies:
  flutter:
    sdk: flutter
+ sensors_plus: ^1.3.2
//中略
```

## 実装
ソースコードの全体像を掲載します。

```dart:main.dart
import 'package:flutter/material.dart';
import 'package:sensors_plus/sensors_plus.dart';
import 'dart:async';

// mainメソッド,MyApp,MyHomePageはデフォルトから変更がないため省略
class _MyHomePageState extends State<MyHomePage> {
  String _userAccelerometerValues = "";
  String _gyroscopeValues = "";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: <Widget>[
            Text(_userAccelerometerValues,
                style: Theme.of(context).textTheme.headline6),
            Text(_gyroscopeValues,
                style: Theme.of(context).textTheme.headline6),
          ],
        ));
  }

  @override
  void initState() {
    super.initState();
    userAccelerometerEvents.listen(
      (UserAccelerometerEvent event) {
        setState(() {
          _userAccelerometerValues =
              "加速度センサー\n${event.x}\n${event.y}\n${event.z}";
        });
      },
    );
    gyroscopeEvents.listen(
      (GyroscopeEvent event) {
        setState(() {
          _gyroscopeValues = "ジャイロセンサー\n${event.x}\n${event.y}\n${event.z}";
        });
      },
    );
  }
}
```

まず、加速度センサーとジャイロセンサー用のデータを扱うための変数と、画面表示用の`Text`を準備しておきます。
そして、`initState`の初期化のタイミングで、ストリーミングでセンサーデータを受け取り、画面を更新するようにします。

## 動作確認
![sensor-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259228/bd8cadca-81de-290a-da33-2c581d844c25.png)


スマートフォンを振ったり、傾けたり動かすことで、値が変わっていきます。
NLogから既存のRichTextBoxにログ出力する

# 環境
- .NET Framework 4.8
- NLog 5.0.1
- NLog.Windows.Form 4.6.0

# 手順
※NLogが既に使える状態になっているのを前提とします。
1. NuGetからNLog.Windows.Formをインストール
1. フォームにRichTextBoxを配置
1. ログ設定を書き込む

## 1. NuGetからインストール
NLog.Windows.Formをインストールしてください。

## 2. RichTextBoxを配置
ログを書き込みたいRichTextBoxを配置してください。
既に配置済みであればそれをそのまま使います。

## 3. ログ設定を書き込む
.configファイルではなく、コードにログ設定を書き込むことにします。
Form1のコンストラクタに書いてみましょう。

```cs:Form1.cs
public partial class Form1 : Form
{
    public Form1()
    {
        var target = new NLog.Windows.Forms.RichTextBoxTarget();
        {
            Name = "richTextBox", // ターゲット名
            TargetRichTextBox = richTextBox1, // ログ出力したいRichTextBoxを指定
            AutoScroll = true, // オートスクロール有効
            Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss} ${level:uppercase=true} ${message}", // ログ出力レイアウト
        };
        // 既存のルールに追加
        var config = NLog.LogManager.Configuration;
        config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Fatal, target);
        NLog.LogManager.Configuration = config;
    }
}
```

ターゲット名などのプロパティや、出力するログレベルは必要に応じて変更してください。
https://github.com/NLog/NLog/wiki/RichTextBox-target

これで、ログ出力を行うとRichTextBoxにも同じ内容が出力されるようになりました。
委託元への通知による例外

#### [全体の目次](https://qiita.com/tetz1/items/da4eb31b920f2acf4349)

**個人情報の保護に関する法律についてのガイドライン（通則編）<br>　[3 個人情報取扱事業者等の義務](https://www.ppc.go.jp/personalinfo/legal/guidelines_tsusoku/#a3)<br> 　　> [3-5 個人データの漏えい等の報告等（法第26条関係）](https://www.ppc.go.jp/personalinfo/legal/guidelines_tsusoku/#a3-5)<br> 　　　> [3-5-3 個人情報保護委員会への報告（法第26条第1項関係）](https://www.ppc.go.jp/personalinfo/legal/guidelines_tsusoku/#a3-5-3)<br> 　　　　> [3-5-3-5 委託元への通知による例外（規則第9条関係）](https://www.ppc.go.jp/personalinfo/legal/guidelines_tsusoku/#a3-5-3-5)**

---

# 委託元への通知による例外
### 委託先は、個人情報保護委員会への報告義務を負っている委託元に対し、[3-5-3-3（1）から（9）までに掲げる事項](https://www.ppc.go.jp/personalinfo/legal/guidelines_tsusoku/#a3-5-3-3)のうち、その時点で把握しているものを通知したときは、報告義務を免除される
<details><summary><B>3-5-3-3（1）から（9）までに掲げる事項</B></summary>

  * **（1）概要**
  * **（2）漏えい等が発生し、又は発生したおそれがある個人データの項目**
  * **（3）漏えい等が発生し、又は発生したおそれがある個人データに係る本人の数**
  * **（4）原因**
  * **（5）二次被害又はそのおそれの有無及びその内容**
  * **（6）本人への対応の実施状況**
  * **（7）公表の実施状況**
  * **（8）再発防止のための措置**
  * **（9）その他参考となる事項**

</details>
 
### 委託元への通知については、速報としての報告と同様に、報告対象事態を知った後、速やかに行わなければならない。

<details><summary><B>「速やか」の目安</B></summary>
「速やか」の日数の目安については、個別の事案によるものの、委託先が当該事態の発生を知った時点から概ね3～5日以内である。
</details>


<details><summary><B>報告を受理する権限の事業所管大臣への委任</B></summary>
個人情報保護委員会が法第147条第1項の規定により報告を受理する権限を事業所管大臣に委任している場合には、当該事業所管大臣に報告する。
事業所管大臣に報告する場合、報告期限は個人情報保護委員会に報告する場合と同様である。
</details>



#### （※）この場合、委託先から通知を受けた委託元が報告をすることになる。委託元は、通常、遅くとも委託先から通知を受けた時点で、報告対象事態を知ったこととなり、速やかに報告を行わなければならない

#### （※）通知を行った委託先は、委託元から報告するに当たり、事態の把握を行うとともに、必要に応じて委託元の漏えい等報告に協力することが求められる
【jQuery】splitで正規表現を使う＆配列から取り出す

こんにちは。E-kan株式会社の岡田です。

既存ページのABテストのため、外部ツールにjQueryでテストしたい要素を書き込んでページを上書きするという業務をよくやるのですが、この間地味に苦労したので備忘録パート２。
ざっくり必要なところだけ抜き出すとこんな感じです。


## 変更前html
```html
<h1>
  <strong>サンプルページ</strong>で可変文言の<br>テストをします
</h1>
```

以下の条件のある「可変文言」の部分をstrongで囲ってほしい。

- テストページはcmsで管理されており複数存在する
- 「可変文言」の部分はページによってテキストが異なる

出来上がりは、こう。


## 変更後html
```html
<h1>
  <strong>サンプルページ</strong>で<strong>可変文言</strong>の<br>テストをします
</h1>
```


## jQuery
```javascript
//h1のテキストを「で」と「の」で区切り、配列２個めの要素を取り出す
var txt = $('h1').text().split(/[での]/)[1];

//取り出した要素を指定のタグで囲む
var html = '<strong>'+txt+'</strong>';

//h1の中身をhtml構造ごと取り出す
var h1 = $('h1').html();

//取り出したh1の該当文字列を、タグで囲んだ文字列に入れ替え
var result = h1.replace(txt, html);

//文字列を入れ替えたh1と元のh１を置き換える
$('h1').html(result);
```

最初、一番初めの配列から取り出すところの指定を[2]にしてしまい「あれ？上手くいかない」とか思いましたが、配列は0からカウントされるんでしたね。
滅多に使わないとすぐ忘れてしまう鳥頭なので、備忘録はとても大事。
組織で GuardDuty の Malware Protection を有効化する際の注意点

## 事象
AWS Organizations を使用して組織で GuardDuty の管理を行なっており、委任された管理者アカウントからメンバーアカウントの Malware Protection を有効化しようとすると以下のようなエラーが発生する。

```
The request failed because you do not have required AWS Organizations master permission.
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/7f6bc65a-cf32-0714-5c5e-38e084f11ebd.png)

## 対応
以下のドキュメントに記載されているとおり、最初に組織の管理アカウントで Malware Protection の信頼されたアクセスを有効化する必要がある。

```
aws organizations enable-aws-service-access --service-principal malware-protection.guardduty.amazonaws.com
```

https://docs.aws.amazon.com/guardduty/latest/ug/malware-protection.html#configure-malware-protection-multi-account

> **Enable Malware Protection when delegated administrator is not a management account in AWS Organizations**
> If the GuardDuty delegated administrator is not a management account in AWS Organizations, the management account must enable Malware Protection feature for their organization. This way, the delegated administrator can create the Service-linked role permissions for GuardDuty Malware Protection, in member accounts that are managed through AWS Organizations.

信頼されたアクセスを有効化後、委任された管理アカウントでメンバーアカウントの Malware Protection を有効化できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/d6dee716-ecbd-8650-40be-4df81bc3627e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/fad1ad02-37aa-22c2-c033-ad67abd136aa.png)

簡単ですが以上です。
参考になれば幸いです。
【VirtualBox】Linuxの時刻がずれる場合の対応

# 概要
VirtualBoxでLinuxのVMを起動したままホストOSであるWindowsをスリープにすると、Windowsをスリープから復帰させた時にLinux上の時刻がずれている。

# 環境
- Windows10
- VirtualBox 6.1
  - OS：CentOS Linux 7 (x86-64)

# 時刻の修正方法

## まずは現在時刻の確認

```
$ timedatectl
      Local time: 水 2022-07-27 22:16:18 JST
  Universal time: 水 2022-07-27 13:16:18 UTC
        RTC time: 火 2022-07-26 18:19:40
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
```
NTP enabledはyesになっていますが、NTP synchronizedがnoになっています。ちなみに現在時刻は2022-07-28 14:53(JST)です。

## chronyを再起動
NTP synchronizedをyesにするために、chronyを再起動します。

```
$ sudo systemctl restart chronyd
```

ずれが少ない場合(感覚的には1日未満)は割とすぐに直りますが、盛大にずれているとすぐに直らないことが多いです。その場合でも、しばらく待つと大体は直ります。

```
$ timedatectl
      Local time: 木 2022-07-28 14:54:55 JST
  Universal time: 木 2022-07-28 05:54:55 UTC
        RTC time: 火 2022-07-26 18:23:02
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
```

## RTC timeを修正する

Local timeとUniversal timeは直りましたが、まだRTC timeがずれているので直します。

```
$ sudo hwclock --systohc

$ timedatectl
      Local time: 木 2022-07-28 15:04:38 JST
  Universal time: 木 2022-07-28 06:04:38 UTC
        RTC time: 木 2022-07-28 06:04:38
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
```

Universal timeとRTC timeが同時刻になったのでOKです。

## chronyを再起動しても直らない場合

仕方ないのでサーバーごと再起動してます(笑)

# 参考
[CentOS7での時刻修正chronyd](https://www.suzu6.net/posts/151-centos7-time-chronyd/)
[Linuxで時刻設定後、ハードウェア再起動後や電源投入後に日時ずれが生じる場合の対応](https://qiita.com/tabimoba/items/f9c4f9024f7c3ff65360)