OmniAICreator/Qiita-1.07M huggingface dataset:
なぜあなたの文章は伝わらないか

# 文章が伝わらない原因 

+  相対化能力の不足
+  言語化能力の不足

## 相対化能力

相対化能力とは`伝えたい内容が現状に対してどのような立ち位置にいるのか`を認識する能力

例えば、
+ 日報であれば、昨日と今日の差分
+ 特許であれば、先行技術と自身の発明の差分
+ トラブル報告であれば、あるべき姿と実際の差分

これらの内容と大きさを過不足なく取り出して文章にする必要がある。

### 相対化に失敗したまま文書化すると

差分を正しく伝えられなかった場合、特許であれば類似の特許があると言って突き返される。
大きさを正しく伝えられなかった場合、トラブル報告後の対応を誤りさらなるトラブルを引き起こす。

### うまく相対化するには

事前の調査を綿密に行うことが一番の近道。
エンジニアとしては自分が行ったことに注目したくなるが、現状を事前にきちんと理解した上で文章を書きかじめることである程度改善できるはず。。

## 言語化能力

自分の思考を整理し、それを他人が理解できる形式に落とし込む能力。
洗練された文章を書く文章力とは違う。

### 文章化能力が不足していると

技術文書っぽい謎ポエムを作る事になる。

### うまく言語化するには

文章フォーマットを活用する。

| 背景・前提 | --しかし-->| 課題 |
| :--- | :--- | :--- |
| ⇅ 差分 | | ⇅ 裏返し |
| 手段 | --だから--> | 結果・結論 |

背景、課題、手段、結論について上の表の関係が成り立つように意識する。

## 参考文献 

https://gihyo.jp/book/2019/978-4-297-10406-1
Power Automate for desktop から SharePoint クラウド アクションを利用する-事前準備

# はじめに
Power Automate for desktop (PAD) に追加された SharePoint クラウド アクションの利用について説明する記事です。
本記事では、利用時の必須の設定となる「接続参照の設定」について説明します。

:::note warn
(2023/6/3 追記)
接続参照は、Power Automate for desktop 上から設定することが可能となりました。(PAD の ver 2.33 で確認)
そのため、この記事の手順は必須ではありませんが、参考情報としてご覧ください。

なお、PAD 上からの設定については、クラウド アクションを選択すると以下のような設定画面が表示されますので、アカウント情報を入力し、サインインすることで完了します。

(OneDrive アクションの例)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/702cb02c-0953-1997-4086-e758a503c921.png)

:::


# 前提事項
#### 1.ライセンス
SharePoint クラウド アクションは、プレミアム アカウントを持つユーザーにて使用することができます。(2022/8/23 時点)
プレミアム アカウントを持つユーザーは、Power Automate の アテンド型 RPA のユーザーごとのプランやその試用版のライセンスが割り当てられたユーザーが対象となります。
つまり、Microsoft アカウントや上記ライセンスが付与されていない Microsoft 365 のアカウント (所謂、無償アカウント) では使用できない想定です。

https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/sharepoint

#### 2.PAD のバージョン
SharePoint クラウド アクションは、Power Automate for desktop のバージョンが、Ver 2.23 以上で利用できる機能です。
必要に応じ PAD のアップデート機能や以下のリンクから最新版の PAD をダウンロードし、バージョン アップを行います。

https://go.microsoft.com/fwlink/?linkid=2102613

# 接続参照の設定
#### 接続参照の設定が無いと SharePoint アクションは利用できない
PAD の SharePoint アクションの利用には接続参照の設定が必要となります。
接続参照の設定が実施されていない場合、SharePoint アクションの利用時に「接続参照を取得できませんでした」 のメッセージが表示され、使用することができません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3f039806-0eb4-0738-4e6c-0e539ec631ad.png)

#### 接続参照の設定方法
接続参照の設定は、クラウドの Power Automate 上のソリューションの中で、"SharePoint" コネクターへの [接続参照] を設定が必要です。
以下に手順について記載します。

1) クラウドの Power Automate にアクセスし、[ソリューション] を選択し、任意のソリューションを選択または作成します。(PAD の フローが保存さえているソリューションが好ましいと思われます。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/d29163b7-6c25-2ffa-2a1a-4f533d838651.png)


2) ソリューション内に [接続参照] を追加します。[新規] > [その他] > [接続参照] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/17cf3641-03f4-5c48-3309-8e6efb701d1c.png)

3) 新しい接続参照の設定で、[コネクター] から "SharePoint" を選択し、保存します。設定は以上です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/62b20eeb-c8de-ceed-6cc8-20a8c1ec5a5c.png)

4) 設定が完了すると SharePoint アクションが利用することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/099ee264-8e72-0d8a-f2dd-a4e9d35c4fc2.png)

# 参考情報
接続参照の設定や説明については、下記公開情報にも説明があります。

https://docs.microsoft.com/ja-jp/power-apps/maker/data-platform/create-connection-reference
回帰分析を用いた簡易的な“全数把握見直し”モデルをつくってみる

# まずはお約束（ディスクレーマー）
私は統計学者でも感染学者でもなく、ただのゆるふわデータサイエンティストです。
ここに書いてあることは「ふーんそんな考え方もあるのかな」くらいの気持ちで鼻くそほじりながら読んでください。
本記事は何らかの行動を促すものでは全くありません。
あくまでも、数理モデルとPythonプログラミングに関する資料の一環としてご覧ください。

# モチベーション
今日はもう眠いので明日書きます…💤

# 数理モデル
今日はもう眠いので明日…💤

# 実際にやってみた。
<iframe width="560" height="315" src="https://www.youtube.com/embed/5KdoDP4OtOQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 新規感染者数
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/6de67a56-e1af-7c2d-6ae9-66dee88137d8.png)

## 人口
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/5ca19de7-5616-f68b-9d51-ee3eb39c33d8.png)

## 省略閾値と予測精度のトレードオフ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/177b0adf-a5d8-6a43-ea6f-be1892a09bec.png)

## 東京モデル
### 予測結果（時系列）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/fe8c674d-1406-e7d7-e5c8-91d408d28516.png)
### 予測結果（散布図）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/c83ed307-cd0c-767f-72aa-ce8a5c5903d8.png)

## 東京都＋11道府県モデル
### 予測結果（時系列）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/ed44e116-f11b-fd1d-813c-87af20c26a6e.png)
### 予測結果（散布図）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/4c10645c-14e6-1cfa-6b33-0d89dd99e8b1.png)
### 回帰係数（掛け目）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409544/c29c9bf5-16a6-9f01-b1ad-5c3fc63ba00e.png)

# まとめ
今日はもう眠いので…💤

# Pythonコード
Google Colabで作ったので適宜ご覧ください。

https://colab.research.google.com/drive/1B3ZqUOsAaBb_Js9A7L7LrEDAYK-jledv?usp=sharing
Railsでエラー文の日本語化 (rails-i18n)

## Railsでエラー文を表示させると・・・
おそらく最初英語で表示されると思われます。
その修正方法をメモしておきます。

## まずgemfileの編集
下記コードをgemfileに追記してください。
~~~
gem 'rails-i18n'
~~~

その後、下記実行
~~~
bundle install
~~~
これで準備ができましたのでここから日本語化していきます。
## config/application.rbを編集
日本語化して行きます。
下記のconfig~をendまでに追記してください。
~~~rails:(config/application.rb)
class Application < Rails::Application

・　・　・

config.i18n.default_locale = :ja

・　・　・

end
~~~

これで簡単にですが日本語化出来ていると思います。

ただこれだと中途半端に日本語化されていると思います。
なので、中途半端な部分の日本語化していきます。

### config/localesの下にファイル名(ja.yml)を作成し下記を書き込み。
~~~rails:(config/locales/ja.yml)
ja:
  activerecord:
    attributes:　　　　　　　　　　　　　　# attributes:の直下に
      post:　　　　　　　　　　　　　　　　　　　　　　# モデル名を指定する
        content: 内容　　　# カラム名を指定する
      user:　　　　　　　　　　　　　　　　　　　　　　# モデル名を指定する
        name:    名前　　　# カラム名を指定する
~~~
という形で入力してください。(# モデル名を指定する, # カラム名を指定するは書かなくて大丈夫です。)

見てわかるように日本語化したいモデルのカラム名を指定することにより、そのカラム名を好きな文字列として表示できるようになります。


# 最後に編集内容を適用させます。

もう一度(config/application.rb)を編集します。
先程入力したものの下に入力してください。

~~~rails:(config/application.rb)
    config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s]

~~~

これで日本語されていると思います。
以上になりますお疲れさまでした。
kali linux：smbclientでNT_STATUS_CONNECTION_DISCONNECTEDが発生

# 環境
- ホストOS
    - macOS Big Sur 11.6.1
- ゲストOS
    - Kali GNU/Linux 2022.3
        - smbclient
            - Version 4.16.3-Debian
# 概要
- ゲストOSからホストOSの共有フォルダに`smbclient`コマンドでアクセスしたい

# 結論
- `smbclient`に`-m NT1`オプションをつける

# 状況
- ゲストOSのKaliからGUIでホストOS共有フォルダにアクセス可能
    - CUIから`smbclient`コマンドでアクセスできない
- ホストOSの共有フォルダ名：shared

# 詳細

以下のようにアクセスできない

```
┌──(kali㉿kali)-[~]
└─$ sudo smbclient //10.0.0.1/shared -U foo       
Password for [WORKGROUP\foo]:
Try "help" to get a list of possible commands.
smb: \> SMBecho failed (NT_STATUS_CONNECTION_DISCONNECTED). The connection is disconnected now
```

`-m NT1`オプションをつけて解決

```
┌──(kali㉿kali)-[~]
└─$ sudo smbclient //10.0.0.1/shared -U foo -m NT1
Password for [WORKGROUP\fooo]:
Try "help" to get a list of possible commands.
smb: \> 
```

# 試したこと

`/etc/samba/smb.conf`ファイルに以下を記載してみたがダメだった

```
client min protocol = NT1
```
とか
```
client min protocol = CORE
client max protocol = SMB3
```

---

結局`-m NT1`オプションの意味がよくわかっていません。。。
AlmaLinux OS 9にRuby 3.0をインストール（AppStream）

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にRuby 3.0をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2032-05がEOLだと思われる。(OS EOLまでのサポート)
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

提供バージョンが増えてモジュール化したら、`yum module install ruby:3.0`のような指定になるかもしれない

```shell-session
# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)

# yum install -y ruby
... 略
```

### 各種確認

```shell-session
# which ruby
/usr/bin/ruby

# ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]
```
PRをpecoで選択してブラウザで開く

![スクリーンショット 2022-09-07 23.26.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113504/3a242365-75a3-32ed-3e07-adb59a52cfc2.png)

```.zshrc
if type gh > /dev/null 2>&1; then
  function gh-pr-list-peco() {
    PR_URL=$(gh pr list --json number,title,url | jq -r '.[] | [.number, .title, .url] | @tsv' | peco | awk '{print $3}')
    open $PR_URL
  }
  alias prlw=gh-pr-list-peco
fi
```

`open`ではなく、
`gh pr view <number> -w`でも同じ動作をするが、openのほうが早い
AlmaLinux 9にPostgreSQL 13をインストール（AppStream）

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にPostgreSQL 13をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2032-05がEOLだと思われる。(OS EOLまでサポート)
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

提供するバージョンが増えてモジュール化したら、`yum install -y @postgresql:13/server`のような指定になるかもしれない。

```shell-session
# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)

# yum install -y postgresql-server
... 略
```

### 各種確認

```shell-session
# which postgres
/usr/bin/postgres

# which psql
/usr/bin/psql

# psql --version
]psql (PostgreSQL) 13.7
```
Python3 模擬試験のミス問題を調べて理解を深める2

### 初めに
現在Pythonの試験勉強を始めて１か月ほど。
残り２週間ほどで試験を受けるつもりなので、模擬試験をこなしてミス問題を復習し、理解を深めていけるようにしたい。
※自分用なのですべての解説を網羅させるつもりではないです。
模擬試験の結果を赤裸々に載せていくので、どんな問題を間違えているのか気になる方は見てもらえればと思います(笑)

模擬試験は無料のPRIME STUDYというサイトで行っています。
模擬試験の結果がメールで届き、正誤を教えてくれるので理解ができていない部分に関してフォローできるので便利だと思いました。

https://study.prime-strategy.co.jp/#exam-list

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/db20e4a5-5e7f-798c-e568-55c45bd5dd8e.png)

前回第一回の試験結果

>受験日2022/9/1
第1回 Python 3 基礎 模擬試験 を受験いただきありがとうございました。
あなたのスコアは 65 点 / 100点満点です。

今回は第二模擬試験の結果になります。（1回受験して、復習してからなので2回目）

### 第二回模擬試験

2回目の受験なので比較的点数高め。

>受験日 2022 9/6
第2回 Python 3 基礎 模擬試験 を受験いただきありがとうございました。
あなたのスコアは 92.5 点 / 100点満点です。

5.文字列に関する次の記述のうち、正しいものはどれか。なお「\」はバックスラッシュに読み替えること。

あなたの回答: 文字列は「*」で繰り返すことができる。「'w' + 3 * 'o'」は対話型インタープリタで出力「wwwo」が得られる。

正答: 対話型インタープリタでは文字列は引用符に囲まれ、特殊文字はバックスラッシュでエスケープされた状態で出力される。print()関数では全体を囲む引用符が除去され、エスケープ文字や特殊文字がプリントされた状態で出力される。

文字列は*で繰り返すことができますが、今回の場合woooなので×。

対話型インタープリタで文字列を出力について

https://docs.python.org/ja/3/tutorial/introduction.html#strings

>対話的インタプリタが文字列を出力するとき、出力文字列は引用符に囲まれ、特殊文字はバックスラッシュでエスケープされます。出力文字が入力とは違って見える (囲っている引用符が変わる) こともありますが、その 2 つの文字列は同じ文字列です。文字列が単引用符を含み二重引用符を含まない場合、二重引用符で囲われ、それ以外の場合は単引用符で囲われます。

36.対話モードでrandomモジュールを用い以下のような各結果を得たい場合、各コード【A】～【C】に入る正しい組み合わせはどれか。
```python
>>> import random
>>> random.【A】(['apple', 'pear', 'banana'])　
'apple'
>>> random.【B】(range(10),3)
[3, 7, 5]
>>> random.【C】(5)
4
```
あなたの回答: 【A】choice 【B】sample 【C】rand
正答: 【A】choice 【B】sample 【C】randrange

このあたりあまり学習していなかったので調べなおします。

randomモジュールについて

https://docs.python.org/ja/3/library/random.html#module-random

>random.randrange(stop)
random.randrange(start, stop[, step])
range(start, stop, step) の要素からランダムに選ばれた要素を返します。この関数は choice(range(start, stop, step)) と等価ですが、実際には range オブジェクトを生成しません。

>random.choice(seq)
空でないシーケンス seq からランダムに要素を返します。 seq が空のときは、 IndexError が送出されます。
random.choices(population, weights=None, *, cum_weights=None, k=1)
population から重複ありで選んだ要素からなる大きさ k のリストを返します。population が空の場合 IndexError を送出します。

>random.sample(population, k, *, counts=None)
母集団のシーケンスまたは集合から選ばれた長さ k の一意な要素からなるリストを返します。重複無しのランダムサンプリングに用いられます。

使い方
指定の範囲から乱数を生成する場合はrandrange
指定の要素からランダムに選択（重複あり）choise
指定の要素からランダムに選択（重複なし）sample

37.今日の日付を次の実行結果のように得たい場合、コードの1行目【A】と2行目の【B】に入る適切なものはどれか。

[ 実行結果 ]
2020-06-27

[ コード ]
【A】
now = 【B】
print(now)

あなたの回答: 【A】import datetime from date 【B】datetime.today()
正答: 【A】from datetime import date　 【B】date.today()

ややこしいです。。。

https://docs.python.org/ja/3.6/library/datetime.html#module-datetime

>class datetime.date
理想的な naive な日付で、これまでもこれからも現在のグレゴリオ暦 (Gregorian calendar) が有効であることを仮定しています。 属性は year, month,および day です。

>class datetime.time
理想的な時刻で、特定の日から独立しており、毎日が厳密に 24*60*60 秒であると仮定しています ("うるう秒: leap seconds" の概念はありません)。 属性は hour, minute, second, microsecond, および tzinfo です。

>class datetime.datetime
日付と時刻を組み合わせたものです。 属性は year, month, day, hour, minute, second, microsecond, および tzinfo です。

簡単にまとめると
datetime.datetime : 日時
datetime.date : 日付
datetime.time : 時刻

使用するにはfrom datetime import date

### 終わり
第二回は初見ではないのである程度解けてます。
残りは第3回あと一つなので、こちらも対策しておきたいです。
Xcode14 iOS16 NavigationBarのタイトルが消える問題（UIKit）

## 問題
iOS16対応のためXcode14でアプリをビルドするとNavigatoinBarのタイトルが消えていた...

## 結論
`navigationItem.title`じゃなくて
`navigationItem.titleView`を使う

### 調べたこと
1. `navigationItem.title`でタイトルを設定していたので、値が入っているかブレイクポイントを置いて確認したところちゃんと入っていた。
2. Debug View Hierarchyで確認したところ、タイトルが設定されていることは確認できたが透明になっているか何かでやはり表示されていなかった。 

## 対応方法
① `navigationItem.titleView`を使用し、制約をつけたUILabelを設定する。
② ①を全てのViewControllerで行うのは大変なのでUIViewControllerのextensionを作成し、各ViewControllerで呼び出す

```swift
extension UIViewController {
    func setNavigationTitle(title: String) {
        // Label生成
        let titleLabel = UILabel()
        titleLabel.text = title

        // サイズと制約
        titleLabel.sizeToFit()
        titleLabel.translatesAutoresizingMaskIntoConstraints = false
        if let navigationBarHeight = navigationController?.navigationBar.bounds.height {
            titleLabel.heightAnchor.constraint(equalToConstant: navigationBarHeight).isActive = true
        }
        titleLabel.widthAnchor.constraint(lessThanOrEqualToConstant: titleLabel.bounds.width).isActive = true

        // titleを設定
        self.navigationItem.titleView = titleLabel
    }
}
```
ここで少し意識しないといけないのはこの部分
`titleLabel.widthAnchor.constraint(lessThanOrEqualToConstant: titleLabel.bounds.width).isActive = true`
`lessThanOrEqualToConstant`にすることでNavigationBarに他のItemがある場合もそれらが隠れない幅になります。


```swift
override func viewDidLoad() {
    super.viewDidLoad()
    self.setNavigationTitle(title: "hoge")
}
```
あとはこんな感じでviewDidLoad()などタイトルを設定したいタイミングで呼ぶだけ

## 補足
UILabelを設定していますが、UIImageViewを設定すれば画像にも対応できます。
そして記事執筆時まだbetaなのでなおるかも...
AlmaLinux OS 9にPHP 8.0, PHP-FPM 8.0をインストール（AppStream）

# はじめに

Application Stream(AppStream)を利用してAlmaLinux9にPHP8.0をインストール
親記事：[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)
参考：[RHEL8のパッケージ構成 - BaseOSとApplication Stream - 赤帽エンジニアブログ]( https://rheb.hatenablog.com/entry/rhel8_baseos_and_appstream)

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2032-05がEOLだと思われる。(OS EOLまでサポート)
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

提供するバージョンが増えてモジュール化したら、`yum module install php:8.0`のような感じになるかもしれない

```shell-session
# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)

# yum install php
... 略
```

### 各種確認

```shell-session
# which php
/usr/bin/php

# php -v
PHP 8.0.13 (cli) (built: Nov 16 2021 18:07:21) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.13, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.13, Copyright (c), by Zend Technologies

# php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

# which php-fpm
/usr/sbin/php-fpm

# php-fpm -v
PHP 8.0.13 (fpm-fcgi) (built: Nov 16 2021 18:07:21)
Copyright (c) The PHP Group
Zend Engine v4.0.13, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.13, Copyright (c), by Zend Technologies
```
Power Queryの処理が遅いときにチェックすべきことをまとめてみた

# はじめに
「Power Queryの処理が遅い(重い)」は、Power Queryを触り始めた方が感じるであろう、あるあるな悩みではないだろうか。
また、そんな初心者あるあるな悩みに対する解決策が１つにまとまったwebページは、現状ではほとんど見当たらない。
そこで、本記事ではその悩みに対する基本的な解決策について、可能な限り網羅的に例示する。

# 前提条件
以下のようなケースを前提とする。
- 従来のExcel作業に慣れている方が作業する
- データソースはcsvやexcelになることが多く、その他のコネクタを選択する機会が少ない

※以上のようなケースを前提とすることから、表現の厳密性を意図的に避けていることがある。
したがって、厳密な理解が必要な際には、公式ドキュメントを参照いただきたい。

# 総論
Power Queryは、従来のExcel作業イメージにとらわれると失敗することがある。
必要に応じてアンラーニングしなければならない。

その理由の１つとして、Power Queryとは、Power BI・Power Pivot(+Power Apps)に適切な形式のデータを渡すためのツールである。
つまり、Power Query単体ですべての作業を完結しようとする発想は、本来の仕様に沿った使用法ではない。
この点について、以下記事にて詳細に解説されている。

https://qiita.com/moexken/items/b268ef8803c3113db755

関係する記載の抜粋
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684495/89227739-f0c8-6e0d-0f55-325151943974.png)


※実務上は、Power Query単体ですべての作業を完結しても便益を得られる場合が一定ある

# チェックすべきこと
## データソースのファイル形式は最良か？
csvをデータソースにすると、excelに比べて処理速度が速くなる可能性が高い。
csv・excelしか選択肢がないのであれば、なるべくcsvを選択することを推奨する。

## 不要なマージをしていないか？
「クエリのマージ」は負荷が大きい処理になることが多いため、これにより速度が著しく下がるケースが散見される。
従来のExcel作業に慣れているが故に、Vlookup・Xlookup的感覚でついつい使ってしまうと思われる。
「クエリのマージ」を使用していて処理が遅くなっている場合には、以下記載について上から順に検討しよう。
### そもそも本当に必要か？
#### テーブルを複数に分けたほうが適切ではないか？

従来のExcel作業に慣れていると、なんでも１つのテーブルにまとめようとする癖が身につくと思われる。
しかしながら、この考え方はPower Query利用時には捨てなければいけない。
なぜなら、Power BI・Power Pivot活用の大前提となる「スタースキーマ」と対立する考え方だからである。
スタースキーマを理解したうえで、テーブルを複数に分けたほうが適切なケースであると判断できた場合には、
「クエリのマージ」をやめて、Power BI・Power Pivot上でリレーションシップを作成しよう。

https://docs.microsoft.com/ja-jp/power-bi/guidance/star-schema

#### フィルターのみを目的としてマージしているか？
フィルターするのにマージ先のデータが必要なことを理由として、「クエリのマージ」をするケースが散見される。
しかしながら、このようなケースにおいては、List.Contains関数の利用により、「クエリのマージ」の回避が可能である。
具体的には、「フィルター対象のID一覧をリストに変換→List.contains関数でフィルター」といったイメージである。

https://docs.microsoft.com/ja-jp/powerquery-m/list-contains


### 本当に必要な場合は、ひと工夫しよう
Table.Addkey関数を利用することで、処理を高速化できることがある。

https://qiita.com/PowerBIxyz/items/ca87e0b6482450338e9f

## 不要な行のソート(並び替え)をしていないか？
行のソートも、従来のExcel作業では頻出する操作であるため、安易に使ってしまいがちである。
しかしながら、Power Queryにおいてソートが本当に必要なケースはそう多くない。
また、ソートも「クエリのマージ」と同様に、処理速度を下げる要因になり得る。
よって、必要性がない場合は利用を避けるべきである。

https://qiita.com/PowerBIxyz/items/1dcfab420a8d77913036


## 不要な行・列を全て削除できているか？
従来のExcel作業には、「不要そうなデータも念のため消さない」という考え方がある。
主な理由として、以下が挙げられる。
- 一度削除したデータは元に戻せない
- 必要のないデータはグループ化で非表示すれば良い

この考え方は、Power Query利用時には捨てる必要がある。
なぜなら、不要な行・列を残すことが、処理速度を大きく下げる要因になり得るからである。
また、従来のExcel作業と違い、Power Queryでは一度消した行・列を復元することが容易である。

以上より、Power Queryでは、不要な(または不要と思われる)行・列を全て削除することが強く推奨される。

## 負荷が大きいオペレーションがステップの序盤に入っていないか？
「負荷が**小さい**オペレーションをステップ**前半**に配置して、負荷が**大きい**オペレーションをステップ**後半**に配置する」ことで、処理速度を向上させることが可能である。
具体例として、フィルターや列の削除などをステップ前半に配置して、型の変換をステップ後半に配置することで、処理速度向上が期待できる。

https://docs.microsoft.com/en-us/power-query/best-practices#do-expensive-operations-last

https://marshal115.hatenablog.com/entry/2021/09/26/183608


# 全部チェックしても遅い場合どうすべきか
データソースの行数に起因する可能性が高い。
このような場合には、クエリの作成作業時に限り、「最初の行を保持する」によって行数を制限することで、作成作業中の処理速度が向上する。
※作成作業完了後に行数制限を解除することになるため、あくまでも作業中のみ効果を発揮する策である。

https://docs.microsoft.com/en-us/power-query/best-practices#temporarily-work-against-a-subset-of-your-data
ゼロから始めるMidjourney

こんにちは！
Midjourneyに絵を描いてもらえるようになるまでの流れをまとめてみました。

# 利用開始までの流れ
MidjourneyはDiscord上でコマンドを発行して、そのコマンドに従って絵を出力する作りになっています。
Discordの登録とDiscordアカウントとMidjourneyの連携をしていきましょう。

## Discordのアカウントを作る
Discordのアカウントが必要になるので、お持ちでない方は作成しておきましょう。
すでにアカウントをお持ちの方は「Midjourneyと連携する」に進んでいただいて大丈夫です。
https://discord.com

まずは右上のログインを押します。
![a1eb398285d1b27e4beb53776e010988.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/c6bc7a88-3b91-af11-da2d-7232f5e8f315.png)

一番下にある「登録」を押しましょう。
![d8b11be2326abf5a2b55df305e48344b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/5f02adef-1685-17ba-42b2-cdd9df98e299.png)

各種情報を入力して、「はい」を押します。あなたは人間ですか？というよくあるクイズが出るので突破してください。
![スクリーンショット 2022-09-07 21.32.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/1881f00d-e777-5794-f377-4f8f5b0f666d.png)

最初にこんな感じで画面にポップアップが出ますが、右上のクローズボタンで大丈夫でした。
![41cfb02274cfb0a29ae55933b9c0d9b4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/4445e465-d9b8-7cbc-ef2b-3f08e2bf2c7a.png)

これでDiscordに入れました。メールアドレスの確認が必要なので、受信したメールはチェックしておきましょう。
![スクリーンショット 2022-09-07 21.35.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/3cdee499-5953-9752-02ad-dc0efb3daba8.png)


## Midjourneyと連携する
いよいよMidjourneyと連携しましょう。以下のURLへアクセスします。
https://www.midjourney.com

最初は右側の「Sign in」を押します。
どうでもいい話ですが、ギークが作ったようなサイトデザインが素敵ですね。一番初期の頃のherokuみたい。
![caed43499617abaa2226418688e004d3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/d4266e61-644a-44de-9e79-e1cc2870e8e8.jpeg)

ここで、「認証」を押しましょう。これでDiscordとつながります。
![b9c259781e7221824be1efb1c0c39581.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/cbeb05ba-fd47-8652-84c2-822bbb0c36af.png)

そしたら、今度は右側の「Join the beta」を押しましょう。
![1403d14691dc238bd1bdb5fe4953470b.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/dbf4ede6-889b-bfd2-72d9-ea032aab7480.jpeg)

そうすると、こんなふうにポップアップが出てくるので「招待を受ける」を押します。
![スクリーンショット 2022-09-07 21.57.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/94ad7211-b9e8-52f9-1a1e-672fac8eaa46.png)

これでDiscordにMidjourneyのサーバーが追加されました。左側にあるヨットみたいのがそうですね。

「newbies-xxx」となっている部屋がオープンルームで、非課金ユーザーはこの部屋を使うことになるようです。
課金するとMidjourneyにDMでコマンドを実行して絵を描いてもらうことができます。
![312c938b5e0a7efca4bb825fd1588dbe.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/6e3705a1-5ea9-7956-863c-176ea1dc5d88.jpeg)

# 簡単な絵を描いてみる
Slackのスラッシュコマンドみたいに、コマンドを打ち込むと絵を描いてくれます。
たとえば、「おにぎり」を描いてほしかったらこんな感じ。

`/imagine`コマンドに引数としてriceballを設定しました。

```
/imagine riceball
```

![602debdd6214b62de107a724618eb8e8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/3fba13b6-2478-e958-bdd6-3586a3a9be00.png)


仕上がった画像はこんな感じになりました。

![スクリーンショット 2022-09-07 22.52.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10138/4119096b-ced8-6128-598b-bf2d798eef2e.png)

こちらで期待している絵を描いてもらうようになるには、コマンドの使い方など練習が必要ですね。

コマンドを駆使して絵を描いていく、というのはとても新鮮な体験でした。
ITのエンジニアととても相性のいいサービスだと思います。

私は絵が下手なんですけど、これ使ってアプリの素材とか作れたらすげーいいなと思いました。
AlmaLinux OS 9にMariaDB 10.5をインストール（AppStream）

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にMariaDB10.5をインストール
親記事：[MySQL, MariaDBの各種インストール方法とEOLまとめ \- Qiita](https://qiita.com/witchcraze/items/72291ee035437ec83273)
参考：[RHEL8のパッケージ構成 - BaseOSとApplication Stream - 赤帽エンジニアブログ]( https://rheb.hatenablog.com/entry/rhel8_baseos_and_appstream)

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2032-06がEOLだと思われる。(OS EOLまでサポート)
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

提供されるMariaDBのバージョンが増えてモジュール化したときは  `@mariadb:10.5` みたいな指定になるかもしれない（不明）

```shell-session
# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)

# yum install -y mariadb-server
... 略
```

### 各種確認

```shell-session
# which mysql
/usr/bin/mysql

# which mysqld
/usr/sbin/mysqld

# yum info mariadb-server
Last metadata expiration check: 0:01:30 ago on Wed Sep  7 14:07:13 2022.
Installed Packages
Name         : mariadb-server
Epoch        : 3
Version      : 10.5.16
Release      : 2.el9_0
Architecture : x86_64
Size         : 62 M
Source       : mariadb-10.5.16-2.el9_0.src.rpm
Repository   : @System
From repo    : appstream
Summary      : The MariaDB server and related files
URL          : http://mariadb.org
License      : GPLv2 and LGPLv2
Description  : MariaDB is a multi-user, multi-threaded SQL database server. It is a
             : client/server implementation consisting of a server daemon (mariadbd)
             : and many different client programs and libraries. This package contains
             : the MariaDB server and some accompanying files and directories.
             : MariaDB is a community developed fork from MySQL.
```
AlmaLinux OS 9にNode.js 16をインストール（AppStream）

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にNode.js 16をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2024-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

提供バージョンが増えてモジュール化した場合は `yum module install nodejs:16` のような指定方法になるかもしれない。

```shell-session
# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)

# yum install -y nodejs
... 略
```

### 各種確認

```shell-session
# which node
/usr/bin/node

# node -v
v16.14.0

# yum info nodejs
Last metadata expiration check: 0:01:14 ago on Wed Sep  7 14:02:40 2022.
Installed Packages
Name         : nodejs
Epoch        : 1
Version      : 16.14.0
Release      : 4.el9_0
Architecture : x86_64
Size         : 838 k
Source       : nodejs-16.14.0-4.el9_0.src.rpm
Repository   : @System
From repo    : appstream
Summary      : JavaScript runtime
URL          : http://nodejs.org/
License      : MIT and ASL 2.0 and ISC and BSD
Description  : Node.js is a platform built on Chrome's JavaScript runtime
             : for easily building fast, scalable network applications.
             : Node.js uses an event-driven, non-blocking I/O model that
             : makes it lightweight and efficient, perfect for data-intensive
             : real-time applications that run across distributed devices.
```
【PHP基礎復習12】空白で区切る、四捨五入、小数点以下表示

[問題]
仲良しグループ3人組のテストの点数の平均点を、四捨五入して小数点以下第1位まで表示させなさい。
3人の点数は、半角スペースで区切って入力される。

# コード
```php
$input = fgets(STDIN);
$array = explode(" ",$input);
$total = round(array_sum($array)/3, 1);
echo number_format($total,1);
```

↓　60 70 65と入力

# 結果
```
65.0
```

☆explode（区切り文字　,　入力文字）
→ 区切り文字で区切った文字列を配列に変換

☆round（値　,　小数点以下の桁数）
→　四捨五入して指定した小数点以下の桁数で表示

☆number_format（値　,　小数点以下の桁数）
→　指定した小数点以下の桁数まで表示
BigQuery の正規表現で特殊な半角スペースを置換する

# 背景
BigQuery で文字列の中にあるスペースを REGEXP_REPLACE を使って置換したところ、置換できない半角スペースがあることを発見！

例えば、以下のsampleテーブルがあったとして、

##### sample テーブル

| id | str |
|:-----------|:------------|
| 001     | AAA BBB CCC           |
| 002       | A A B B C C           |
| 003      | 12 345 678           |

この str の半角スペース、全角スペースを `REGEXP_REPLACE(str, r' |　', '+')` にて 「＋」 に置換して以下の結果を期待しています。

##### sample テーブル

| id | str | 置換後の期待する値
|:-----------|:------------|:------------|
| 001     | AAA BBB CCC           |AAA+BBB+CCC
| 002       | A A B B C C           |A+A+B+B+C+C
| 003      | 12 345 678           |12+345+678

しかし、実際には以下のような結果でした。

##### sample テーブル

| id | str | 実際の置換後の値
|:-----------|:------------|:------------|
| 001     | AAA BBB CCC           |AAA BBB+CCC
| 002       | A A B B C C           |A A B+B+C+C
| 003      | 12 345 678           |12 345 678

<details><summary>上記のsampleテーブル作成用裏クエリ</summary><div>

```sql
SELECT
  "001" AS id
  , CONCAT(REPLACE("AAA BBB", chr(32), chr(160))
      , " CCC"
    ) AS str

UNION ALL

SELECT
  "002" AS id
  , CONCAT(REPLACE("A A B", chr(32), chr(160))
      , " B B C C"
    ) AS str

UNION ALL

SELECT
  "003" AS id
  , CONCAT(REPLACE("12 345", chr(32), chr(160))
      , " 678"
    ) AS str
```
</div></details>

置換できない半角スペースがあるが、これは何だ？ となり、それを調査するところから、解決するまでを少々手こずったので残しておきます。

# 置換できない半角スペースの調査

以下のクエリで各文字の Unicodeコードを調べました。
```sql
SELECT
  id
  , str
  , FORMAT("%T", ARRAY_CONCAT_AGG(TO_CODE_POINTS(str))) as str_code
FROM
  sample
GROUP BY
  id
  , str
```

##### 結果

| id | str | str_code
|:-----------|:------------|:------------|
| 001   |AAA BBB CCC     | [65, 65, 65, 160, 66, 66, 66, 32, 67, 67, 67]     |
| 002   | A A B B C C    | [65, 160, 65, 160, 66, 32, 66, 32, 67, 32, 67]
| 003      | 12 345 678  | [49, 50, 160, 51, 52, 53, 32, 54, 55, 56]

[普通の半角スペースは「32」(0x20)](https://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFF) ですが、REGEXP_REPLACE で置換できなかった半角スペースは「160」(0xA0) になっていました。

このコードを調べたところ、[ノーブレークスペース](https://ja.wikipedia.org/wiki/%E3%83%8E%E3%83%BC%E3%83%96%E3%83%AC%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9) というものだと判明。

# ノーブレークスペースの置換方法

このノーブレークスペースを置換する方法を調べたところ、こちらの記事がとても参考になりました。

https://stackoverflow.com/questions/64721322/bigquery-replace-whitespace-in-string

以下のクエリにてノーブレークスペースと普通の半角スペースのどちらも置換できました。

```sql
SELECT
  *
  , REGEXP_REPLACE(str, '[\u00A0\\s]|　', '+') AS str_replace
FROM
  sample
```

# `[\u00A0\\s]` とは？
- `\u00A0`
  - [\u は unicode](https://qiita.com/akatsuki174/items/af170a4db20bda5d51ef#%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E4%BF%AE%E9%A3%BE%E5%AD%90)
  - 00A0 はノーブレークスペースの unicode

- `\\s`
  - [空白文字 [ \t\r\n\f\v]](https://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html) ← [（半角スペース、タブ、改行、改ページ）](https://style.potepan.com/articles/8495.html#:~:text=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A7%E7%A9%BA%E7%99%BD%E6%96%87%E5%AD%97,%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%82%E3%83%9E%E3%83%83%E3%83%81%E3%81%97%E3%81%BE%E3%81%99%E3%80%82)
どこまで実装していたのか、分からなくなってしまった時。

## 始めに
プログラマーを目指して勉強中の私は、作業を中断することが多い。今回は仕事で手一杯になってしまい（２６日間勤務）しばらくポートフォリオの制作が出来なかった。（言い訳っていいわけ）
　約1ヶ月間ぶりに途中まで作成したポートフォリオを見ても、何が何だかわからない。。。`git`の機能をうまく使えていないことを痛感し、今後この様な事態を防ぐために忘備録として残す。
## Gitを活用できていない人
`git`には作業を一時的に保存する`git commit`というコマンドがある。
この時、作業内容についてメッセージを付与できる`git commit -m`。この時に丁寧にメッセージを書き込めた後から見直してもわかりやすくなるのだが、、、

## コミットのメッセージを閲覧する方法
`git log`でコミットメッセージを閲覧できる
```:ターミナル
git log 　（コマンド入力）
　　　　　　↓                      
commit 47ba90cc909b35a65215fa161b3fe1b7d431015d (HEAD -> feature/Card_layouts)
Author: user <?????????????@gmail.com>
Date:   Wed Aug 17 23:14:39 2022 +0900

    card title修正

commit 6a2671c8cbd739ee8430d97e608291433967ac53 (origin/main, main)
Merge: cf42a6f d11bea0
Author: user <96045656+???????0@users.noreply.github.com>
Date:   Sun Aug 14 22:10:11 2022 +0900

    Merge pull request #29 from ?????????/feature/Carrierwave
    
    画像投稿機能実装
```

log(記録)をよく見てみる
```
commit　IDのようなもの　（一番最新の状態→ブランチ）
Author(製作者)：ユーザー名<メールアドレス>
日付：　コミットした時間
　　　　　　　　　メッセージ内容

commit　IDのようなもの　（メインブランチ）
マージ：不明
製作者：
日付：マージした時間
マージされたブランチ名
ブランチのコミットメッセージ
```
どうやら私は[card title修正]を作業ブランチに反映しているらしい。。
Cloud Armorのエッジセキュリティポリシーの動作確認してみた

# はじめに
LoadBalancer経由のCloud Storageへのアクセスに対するIPアドレス制御が可能になった。
https://cloud.google.com/blog/ja/products/identity-security/cloud-armor-adds-more-edge-security-policies-proxy-load-balancers
Cloud Armorに新たに追加されたエッジセキュリティポリシーの動作確認をする。

# 概要
Google CloudではLoadBalancer(CLB)にCloud Storage(GSC)をバックエンドバケットとして追加が可能で、
カスタムドメインで静的コンテンツを見せることができる。
今までCloud Storageをパブリック公開する場合は、アクセス制御はバケットの権限による全体へアクセスを許可するしか方法がなかった。
が、それに対してCloud Armorの機能追加のエッジセキュリティポリシーによってIPアドレスでのアクセス制御が可能となるので、それの動作確認をしていく。

# 設定
## CLBとGCSの構成する
以下のように作成した
![スクリーンショット 2022-09-07 21.46.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/bc4a8681-66f4-7094-2436-66e30871bdd7.png)

### 注意事項
この時点でCloud Armor のエッジセキュリティポリシーを使う上では、既にハマっているポイントがあったので紹介する。
※よく読めば防げた内容です。
- やりたいことを実現する場合、LBはネットワーク階層がプレミアムである必要がある
- Cloud CDNを有効にする必要がある(本来この作成時点ではバックエンドに対するCDNは有効にできず、先にCDN側で有効にしルールを設定する必要がある)
※Cloud CDNが必要な点については次のCloud CDNを構成するで記載する

## CDNを構成する
以下のように作成した
![スクリーンショット 2022-09-07 21.56.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/99f41003-ff30-c346-f1eb-c23a42024b0e.png)
特段実施したいことに絡む設定はないが、CDN自体は有効にせねばならない。
### CDNが必要な理由
- 以下にも説明があるがあくまでもエッジセキュリティのため、キャッシュに対するフィルタリングや制限をすることが目的であり、GCSに直接で制限するものではない。そのため、キャッシュを効かせるためにCDNを有効にする必要がある。
参照：https://cloud.google.com/armor/docs/security-policy-overview#edge-policies

## 実際にアクセスする
実際にアクセスするとエッジセキュリティポリシーがしっかり効いていることが確認できる。
やはりエッジに対するポリシーであるため、FWのIP許可とは異なり、設定後、効くまでに若干時間を要する。
CDNを有効化しないといくらやってもエッジセキュリティポリシーのルールは効かず、IPアドレスを全拒否しようとしても、問題なくアクセスできる状態になってしまう。

## 1つお試し
上記の結果を受けて、CDNでキャッシュをしないように設定したコンテンツに対してもエッジセキュリティポリシーは効くのか、というのが気になったので試す。
※対象メタデータは以下参照
https://cloud.google.com/storage/docs/metadata?hl=ja#cache-control

### 結果
- no-cacheだとエッジセキュリティポリシーが効いているように見える
- privateでもエッジセキュリティポリシーが効いているように見える

これらのことからキャッシュに対して効いているというより、キャッシュに効かすために、各エッジ自体にセキュリティポリシーは効いていそう
参考までに確認方法
https://cloud.google.com/cdn/docs/troubleshooting-steps?hl=ja

# 所感
GCSに対するIPアドレス制限だ！と飛びついたものの、ちゃんと読めば分かる通り、エッジに対するセキュリティポリシーでした。
ただ、GCSに対するIPアドレス制限したいケースは私でも何回か経験しているので、優先する事項が何か(Cloud CDNが必要だとコストはかかるため)、にもよるかもしれませんが、開発や検証環境で制限するのが必要なケースは多いのではないか、と感じ、そういった場合利用できると思いました。
Amazon Elastic Transcoder とは

## 勉強前イメージ

なんか変換するんかな？

## 調査

### Amazon Elastic Transcoderとは

フルマネージドで動画のファイルを様々なデバイスに対応した動画ファイルへ変換してくれるサービスになります。
動画変換の一連の運用や管理を自動で処理をしてくれるので簡単に作業をすることができます。
ライセンスや初期費用が不要で、処理する動画の長さで費用が決まります。

現在は AWS Elemental MediaConvert という動画や音声の変換処理を行うサービスを推奨しています。

ユースケースとしては
スマートフィンで撮影した動画をいろんなデバイスで見れる動画への変換 や
サムネイルの動画の自動生成 などがあります。

データに関してはs3バケットの中に置かれます。
また、他のサービスと組み合わせることで自動化することができます。
例えばlambdaと組み合わせてアップロードの処理を自動化したり
アップロードした動画をそのままcloudfrontで公開したりすることができます。

### 勉強後イメージ

動画を自動的に変換するとかすぐ作れそうね。

## 参考

- [AWS再入門ブログリレー Amazon Elastic Transcoder編](https://dev.classmethod.jp/articles/relay_looking_back_elastic-transcoder/)
pdo prepared statment（データをdbに格納するまで）

### 基本のpdoでisnert

```insert.php
<?php
mb_internal_encoding("utf8"); //DBへデータ格納の際の文字化け防止

$pdo = new PDO(" mysql:dbname=db名; host=localhost;" , "root","root");
//$pdo=new PDO　 DB接続の決まり文句
//mysql~db名; mysqlに接続し、db名を使用する
//host~ 使用するDB用のサーバー名を記述する (今回はmampのためlocalhost)
//IDとpw pwは""の場合もあり
//実際はスペースなしで記述

$pdo->exec("insert into テーブル名(カラム名、カラム名) values(' " .$_POST['箱の名前']." ' , ' " .$_POST['箱の名前']. " ');" );
//insert intoは通常のsqlと同じ
//~valuesの後は　「'」「"」「.」で囲む
?>
```

### prepared statment版
・予め(prepare) SQL文の型を書いておくこと
・place holderは疑問文型

```insert.php
<?php
 mb_internal_encoding("utf8");

$pdo = new PDO("mysql:dbname=test;host=localhost;","root","root");

$stmt = $pdo->prepare("insert into テーブル名 (name,mail,password,picture,comments) value(?,?,?,?,?)" );

$stmt->bindValue(1,$_post['name']);
$stmt->bindValue(2,$_post['mail']);
$stmt->bindValue(3,$_post['password']);
$stmt->bindValue(4,$_post['picture']);
$stmt->bindValue(5,$_post['comments']);

$stmt->execute(); //insert実行
$pdo=NULL; //pdo切断

?>
```
・bindValue プリペアードステートメントSQL文で、対応する疑問符（名前)に値をバインド（紐付け)する

##### execute 実行という意味
AlmaLinux OS 9にMySQL 8.0をインストール（AppStream）

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にMySQL8.0をインストール
親記事：[MySQL, MariaDBの各種インストール方法とEOLまとめ \- Qiita](https://qiita.com/witchcraze/items/72291ee035437ec83273)
参考：[RHEL8のパッケージ構成 - BaseOSとApplication Stream - 赤帽エンジニアブログ]( https://rheb.hatenablog.com/entry/rhel8_baseos_and_appstream)

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2026-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

提供されるMySQLのバージョンが増えてモジュール化したときは  `@mysql:8.0` みたいな指定になるかもしれない（不明）

```shell-session
# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)

# yum install -y mysql-server
... 略
```

### 各種確認

```shell-session
# which mysql
/usr/bin/mysql

# which mysqld
/usr/sbin/mysqld

# yum info mysql-server
Last metadata expiration check: 0:03:45 ago on Wed Sep  7 13:45:46 2022.
Installed Packages
Name         : mysql-server
Version      : 8.0.28
Release      : 1.el9
Architecture : x86_64
Size         : 105 M
Source       : mysql-8.0.28-1.el9.src.rpm
Repository   : @System
From repo    : appstream
Summary      : The MySQL server and related files
URL          : http://www.mysql.com
License      : GPLv2 with exceptions and LGPLv2 and BSD
Description  : MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
             : client/server implementation consisting of a server daemon (mysqld)
             : and many different client programs and libraries. This package contains
             : the MySQL server and some accompanying files and directories.
```
Excel VBAによる日付セルの背景色変更の方法（期日に近いセルを黄色に・期日当日および過ぎたセルを赤色に）

既存のマクロに処理式を追加することになり、備忘録として書き残します。
読みづらいとは思いますが、参考にしていただければ幸いです。

処理の内容は、
①本日が納期の5日前から1日前の場合、AF列「納期」欄のセルを黄色に塗りつぶす。
②本日が納期当日および納期以降の場合、AF列「納期」欄のセルを赤色に塗りつぶす。
③AI列「ステータス」欄が「完了」の場合、塗りつぶしなし。

```vb
Option Explicit

Sub CellsColor()
   
    Dim i As Integer
    Dim A As Date
    Dim B As Integer
    Dim C As String
   
    'AF列「納期」欄の記載開始行を設定。
    i = 6
   
    '本日の日付を取得する。
    A = Date
   
    'AF列が空白になるまで処理を繰り返す。
    Do Until Cells(i, 32).Value = ""
   
        '納期までの日数をBとする。
        B = Cells(i, 32).Value - A
               
        'AI列「ステータス」欄の値をCとする。
        C = Cells(i, 35).Value
   
        '納期より5日前以下になった場合、AF列のセルを黄色に塗りつぶす。
        '納期当日および納期以降になった場合、AF列のセルを赤色に塗りつぶす。
        'AI列が「完了」の場合、塗りつぶしなし。
        If B <= 5 And B > 0 And C <> "完了" Then
            Cells(i, 32).Interior.Color = RGB(255, 255, 0) '背景色：黄色
        ElseIf B <= 0 And C <> "完了" Then
            Cells(i, 32).Interior.Color = RGB(255, 0, 0) ' 背景色：赤色
        Else
            Cells(i, 32).Interior.Color = xlNone '塗りつぶしなし
        End If
   
        i = i + 1
    Loop
   
End Sub
```
【AWS】AWSコマンドまとめ

## 背景
- AWSコマンドを全然覚えない自分のために、使用したAWSコマンドをまとめておきたい。

## 目標
- 使用したAWSコマンドをまとめていく。

## AWSコマンドまとめテーブル
|コマンド  |説明  |
|---|---|
|`$aws s3 cp s3://[バケット名]  ./  --recursive` | s3のバケットのファイルをローカルにDL　|
|`$aws configure sso --profile [プロファイル名]` | ssoのconfigファイルを作る |
|`$aws sso login --profile [プロファイル名]` | 指定のプロファイルでssoログインする  |
|`$aws iam list-roles` | roleの一覧を表示 |
|`$aws ~ --region [region名]`　| regionを指定のoption |
|`$aws ~ --region ap-northeast-1` | tokyoを指定した場合 |

## 補足
- 自分がわかりやすいように書いているので、色々間違ってるかもしれません。

## 参考資料
https://qiita.com/uhooi/items/48ef6ef2b34162988295

## 個人ブログ
https://takuma-tech.com/2023/01/08/358/
【Azure】AZ-104の資格更新

# AZ-104の資格更新について
◆Azureの経験年数
　資格取得時と変わらず、0年0ヵ月となっております。

◆今回の資格更新について
　以前は取得から2年間の有効期限がありましたが、私が取得前にポリシーが変更され、
　1年で更新が必要になりました。

◆試験内容
①まずは認定資格画面に遷移すると、取得した資格の一覧が表示されるので、
　そこから対象の資格欄の更新ボタンを選択します
　![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512673/c4d19c72-4152-9199-0abf-891a483f7d15.png)

②更新評価を受けるを選択します
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512673/809204d5-af7e-0dba-718c-3f2825e54ba5.png)

③すると急に問題が開始されます。
　制限時間もないので時間かけて受験が可能です
　ただし次へボタンを選択すると前の問題にいは戻れないので注意です
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512673/3cf977d2-ae28-f1d4-a686-51209b5f0aa9.png)

④最後の問題まで行けば結果が表示されます
　特定スコアを超えれば1年無料で延長されます！
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512673/209e7c64-d146-bfff-cc9b-1a7c10d0497c.png)

⑤各セクションの評価まで出してくれるので、苦手分野がわかりやすいです。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512673/fca6e734-4a97-bfb0-5158-cc54e1136040.png)

# 総評
更新の試験は何度でも無料で受けられます。
1回目と2回目はすぐに受けられますが、3回目以降は24時間あける必要があります。
制限時間はなく、調べながらでもOKのようなので、勉強もかねて受けるのが良いと思いました。

正直取得後にまったくAzureを触っていなかったこともあり、1回目はスコア30%くらいで落ちました。
次の日に2回目を受けて合格しましたがだいぶ忘れてますね。。
Herokuデプロイ手順（健忘録）

## Heroku CLIをインストール

```:ターミナル
% brew tap heroku/brew && brew install heroku
```
インストールの確認

```:ターミナル
% heroku --version

heroku/7.40.0 darwin-x64 node-v12.16.2
```
バージョンが出力されればok

## Herokuにログイン
```:ターミナル
% heroku login --interactive
  => Enter your Heroku credentials.
# メールアドレスを入力し、エンターキーを押す
  => Email:
# パスワードを入力して、エンターキーを押す
  => Password:
```

## Heroku上にアプリケーションを作成
```:ターミナル
# 作成したいAppのディレクトリで
% heroku create 「App名」
```
確認のため下記コマンド
```:ターミナル
% git config --list | grep heroku
```

## ClearDBアドオン
```:ターミナル
% heroku addons:add cleardb

Creating cleardb on ⬢ ajax-app-123456... free
Created cleardb-vertical-00000 as CLEARDB_DATABASE_URL
Use heroku addons:docs cleardb to view documentation
```
ClearDBデータベースのURLを変数`heroku_cleardb`に格納

```:ターミナル
% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`
```
データベースのURLを再設定
DATABASE_URLの冒頭が`mysql2://`に変更されている
```:ターミナル
% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}

Setting DATABASE_URL and restarting ⬢ ajax-app-123456... done, v◯◯
DATABASE_URL: mysql2://000000000000:0aa0000@us-cdbr-east-02.cleardb.com/heroku_aaa00000000?reconnect=true
```
## Heroku上に環境変数でmaster.keyを設置
```:ターミナル
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
```
確認のため下記コマンド
```:ターミナル
% heroku config
```
## Stackの指定
```:ターミナル
% heroku stack:set heroku-18 -a 「App名」
```
## Nodeのバージョンの指定
```:ターミナル
% heroku buildpacks:add heroku/nodejs
% heroku buildpacks:add heroku/ruby
```
```:ターミナル
​​% heroku buildpacks

=== App名 Buildpack URLs
1. heroku/nodejs
2. heroku/ruby

# node.jsが一番上にきていればok
```
## package.jsonを編集
```:ターミナル
% node -v

v14.x.x
```

```:package.json
{
 "name": "App名",
 "private": true,
 "dependencies": {
   "@rails/actioncable": "^6.0.0-alpha",
   "@rails/activestorage": "^6.0.0-alpha",
   "@rails/ujs": "^6.0.0-alpha",
   "@rails/webpacker": "4.2.2",
   "turbolinks": "^5.2.0"
 },
 "version": "0.1.0",
 "devDependencies": {
   "webpack-dev-server": "^3.10.3"
 },  // ここにカンマを記述
 "engines" : {
   "node": "14.x.x"  // 確認したバージョンを記述
 }
}
```
リモートリポジトリにpush後、下記コマンドでデプロイ
```:ターミナル
% git push heroku master
```
## Heroku上でマイグレーションファイルを実行
```:ターミナル
% heroku run rails db:migrate
```

Heroku上で実行したいコマンド
`heroku run` + 実行したいコマンド

## Herokuにデプロイされたアプリケーションの情報の確認
```:ターミナル
% heroku apps:info
```
## ログの確認
```:ターミナル
% heroku logs --tail --app 「App名」
# --tail ログの最後の10行を表示するためのオプション
```

## 空のコミットの生成
```:ターミナル
% git commit --allow-empty -m "空のcommit" 
```
【WEB】HTTPステータスコード一覧

## 背景
- インフラエンジニアなので、http通信のステータスコードを見ることがよくある。
- http通信のステータスコードの意味がパッと出てこず調べることが多いのでまとめていきたい。

## 目標
- 遭遇したhttpのステータスコードをまとめていく。

## HTTPステータスコード一覧
|コード  |ざくっとした説明  |
|---|---|
|100番台 | 情報処理中　|
|200番台 | 成功　|
|300番台 | リダイレクト　|
|400番台 | クライアントエラー　|
|500番台 | サバーエラー　|


## 補足
- 自分がわかりやすいように書いているので、色々間違ってるかもしれません。

## 参考資料
https://www.itmanage.co.jp/column/http-www-request-response-statuscode/

## 個人ブログ
https://takuma-tech.com/2023/01/07/357/
Flutterで画面を再描画する方法

シンプルに画面自身を呼び出せばOKです。

    Navigator.pushReplacement(
        context,
        MaterialPageRoute(
            builder: (BuildContext context) => super.widget)
    );

画面全体を再描画したいのに、値を再描画する方法ばかりでこれじゃないんだよなぁぁぁぁってずっとなってたので忘備録のために残します

誰かの参考になれば幸いです。
中間者攻撃 とは

## 勉強前イメージ

真ん中に悪意がある人が入って攻撃すること？

## 調査

### 中間者攻撃 とは

英語でMan In The Middle Attackと呼び、MITM攻撃とも言われています。
中間者攻撃は二者間に割り込んで通信の内容についての盗聴や改ざんを行うものになります。

以下をイメージしていただければと思います。

![12022-09-07 # 中間者攻撃 とは - diagrams.net - Google Chro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/dc31373b-caee-890a-765c-caed18009ac6.png)

それが中間者攻撃によって以下のようにデータが改竄されたり盗み見たりされます。

![22022-09-07 # 中間者攻撃 とは - diagrams.net - Google Chro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/e864cb17-7a6e-1322-3e67-6fb593f2a813.png)

中間者攻撃には以下のような特徴があります。

- 通信が暗号化されていない際に狙われやすい
- セキュリティ対策が行われていない通信機器を使うことで被害を受けやすい

### 中間者攻撃の攻撃について

以下のようなことで中間者攻撃は行われ、被害に会いやすい状態になります。

- フリーWiFiを使用

特徴に記載した通り フリーWiFiを使用することで
十分なセキュリティ対策が取られていなかったり、情報が暗号化されておらず平文でやり取りされていたりして
中間者攻撃を行いやすい状態になります。

- 脆弱性のあるアプリを使用

脆弱性のあるアプリを使用することでセキュリティ対策が十分に取られず情報を見たりすることができる可能性があります。

### 中間者攻撃での被害

中間者攻撃によって以下の被害が発生する可能性があります。

- 機密情報の漏洩

中間者攻撃では企業の機密情報を扱うことが多い部署などを標的として機密情報が狙われることが多いです。
また、企業と顧客の間に割り込んで情報の盗聴をされる可能性もあります。

- 通信妨害

通信の間に割り込まれることで意図しない挙動になる可能性もあり
通信の妨害をされることがあります。

- 通信内容の改竄

上記同様通信の間に割り込まれるので、送信したデータを改竄してサーバ側に送信したりされる可能性もあります。

### 中間者攻撃の対策

- フリーWiFiを使用しない

セキュリティ対策が十分に行われていない可能性もあり情報漏洩のリスクもあるので
使用しない方がよいです。

- 暗号化されたサイトを利用する

httpではなく、httpsを使用して通信していることを確認してください。
httpsであれば暗号化されているので万が一盗み見られたとしても情報漏洩のリスクが下がる可能性があります。

- アプリケーションなどこまめなアップデートを行う

脆弱性があるとそのスキをつかれてしまうので、こまめにアップデートを行う必要があります。

## 勉強後イメージ

結構フリーwifi危ないよって言ってるのはこのことか。

## 参考

- [中間者攻撃とは？今すぐできる対策方法と仕組みをわかりやすく解説](https://office110.jp/security/knowledge/cyber-attack/middle-attack)
- [中間者攻撃とは？セキュリティ対策のために分かりやすく解説します](https://locked.jp/blog/what-is-mitm/)
初投稿！！ショートカットキー一覧_Windows向け


# 対象者
　投稿者本人
　Windowsを使用している方

# よく使うショートカットキー一覧

#### 初級者レベル
| ショートカットキー | アクション |
|:-:|:-:|
| tab | インデント字下げする  |
| Shift + Tab | インデント字上げする  |
| Ctrl + C |  コピー |
| Ctrl + X |  切り取り |
| Ctrl + V |  貼り付け |
| Ctrl + S |  上書き保存 |
| Ctrl + Z |  操作を一つ戻す |
| Ctrl + Y |  操作を一つ進む |
| Ctrl + F | 検索  |
| Ctrl + R |  リロード |
| Ctrl + Shift + R |  スーパーリロード |

#### 中級者レベル
| ショートカットキー | アクション |
|:-:|:-:|
| Alt + ↑↓ | その行を↑↓方向へ移動 |
| Alt + Shift + ↓ | その行を下にコピー |
| Alt + Shift + ↑ | その行を上にコピー |
| スタート + V | クリップボートから選択し貼り付け |
| Ctrl + Alt + Up | マルチカーソルを追加して上の行に移動 |
| Ctrl + Alt + Down | マルチカーソルを追加して下の行に移動 |


#### 上級者レベル
| ショートカットキー | アクション |
|:-:|:-:|
| Ctrl + → 又は ← | 単語単位でカーソル移動 |
| Alt + → 又は ← |　行の最初又は最後に移動|  
| Ctrl + Alt + Right | マルチカーソルを追加し、前の「同じ文字」にジャンプ |
| Ctrl + Alt + Left | マルチカーソルを追加し、次の「同じ文字」にジャンプ 


# 更新履歴
　2022年10月16日：マルチカーソルの操作方法を追記
　2022年10月19日：単語単位でカーソル移動、行の最初又は最後に移動を追記


# 終わりに

　Qiita初投稿なので簡単な内容で投稿させていただきました！
　充実した内容にはなってないため、今後新しくショートカットキーを習得したら更新しようと思います！
テスト76

```vb
Sub Get_DBData()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim DB_Path As String
Dim i As Integer
Dim Product_code As String

On Error GoTo Err_Exit

DB_Path = "C:\Users\User\Desktop\VBA関連\VBA練習\練習用.accdb"

'DBに接続
cn.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _
                      & "Data Source=" & DB_Path & ""
cn.Open

Product_code = "B011"

'テーブルから指定の条件のデータを取得
With rs

    .Source = "T_商品"
    .ActiveConnection = cn
    .Filter = "商品コード = '" & Product_code & "' "
    
    .CursorLocation = adUseClient
    .CursorType = adOpenStatic
    .Open
    
End With
    

If rs.RecordCount = 0 Then
    
    MsgBox Product_code & "に該当する商品が1件もありません。"
    Err.Raise 1111

ElseIf rs.RecordCount >= 2 Then

    MsgBox Product_code & "に該当する商品が2件以上あります。"
    Err.Raise 1111

End If

i = 1

'テーブルの読み込み
Do Until rs.EOF

    With ThisWorkbook.Sheets("DB")
        .Cells(i, 1).Value = rs!商品名
    End With
    
    i = i + 1
    rs.MoveNext
    
Loop

'('ω')～♪

Err_Exit:

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
 
End Sub

'ActiveSheet.Protect AllowFiltering:=True
'1列目：2ケタの数値になっているかチェック
'2列目：数値になっているかチェック
[PHP] CSVからスコア平均を求めてランキング化


https://qiita.com/rana_kualu/items/cd65cd6a05ac62c9a3e8

rana_kualuさんの記事を読んでたら、自分でもできそうな問題があったので挑戦。
PHPは長らく書いてなかったので、練習にはちょうど良い問題だった。

```php:top10ranking.php
<?php

$file = $argv[1];

// 集計
foreach(csv($file) as [, $id, $score]){
    $player[$id] ??= ['total'=>0, 'count'=>0, 'id'=>$id];
    $player[$id]['total'] += $score;
    $player[$id]['count'] += 1;
}

// 平均点
foreach($player as $id => $v){
    $player[$id]['mean'] = round($v['total'] / $v['count']);
}

// 平均点とIDでソート
array_multisort(array_column($player, 'mean'), SORT_DESC, array_column($player, 'id'), SORT_ASC, $player);

// 順位
$all  = 1;
$prev = null;

foreach($player as $id => $v){
    if($v['mean'] !== $prev){
        $rank = $all;
    }
    $all++;
    $prev = $v['mean'];

    $player[$id]['rank'] = $rank;
}

// 出力
print "rank,player_id,mean_score\n";

foreach($player as $id => $v){
    if($v['rank'] > 10){
        break;
    }
    printf("%s,%s,%s\n", $v['rank'], $id, $v['mean']);
}


// CSVジェネレータ
function csv($file){
    $fp = fopen($file, 'r');
    fgetcsv($fp);

    while($line = fgetcsv($fp)){
        yield $line;
    }
}
```

最初は出力と同時に順位の計算を行っていたが、複雑になったので分離。
順位を計算するコードは書いたことがなかったので、検索して参考にした。
全プレイヤーの順位を計算してるのは無駄だが、最初はこんなものである。

それでもやはり、順位を求めるコードが汚いのはどうにかしたい所。
関数化するのが良いのかなあ？

```php:ソート済みの配列を渡すと、順位を返すジェネレータ
function ranking(array $sorted){
    foreach($sorted as $i => $v){
        if($i === 0 or $v !== $sorted[$i-1]){
            $rank = $i + 1;
        }
        yield $rank;
    }
}
```
AWS Cloud Practitionerを取得した話

# 目次
+ はじめに
+ 苦労したこと
+ 学んだこと

# はじめに
こんにちは、中学校の先生です。
現在転職活動してます。
その一貫で、資格取得に力を入れています。
先日ITパスポートを取りましたが、まだ夏休みに余裕があったのでAWSに挑戦しました。
その中で苦労したこと、学んだことを中心に書きます。
勉強期間は1日2時間を2週間、実働30時間程度です。

# 苦労したこと
1. 実務経験が無い
当然ですが使ったことがありません。
用語を覚えて答えるだけならまだ対応できますが、ShieldやACLなど、セキュリティ関係のイメージが難しかったです。
`例：○○で××したいとき、どれを使いますか？
なんて、わりと突っ込んだ質問をされてﾄﾞｷｯとしました。`

2. 和訳が雑
勉強の時はテキストや動画を利用しました。
この時は和訳が丁寧ですんなり頭に入っていきました。
が、**肝心の試験は和訳が雑！！！**
`例：多分これから勉強する人は「AWS料金計算ツール」というのが出てきます。試験では「AWS Pricing Caliculator」と表示されます。（和訳したら意味は同じです）`
こういうの、試験でしれっと出てくるので、英語を勉強して英語で頭に入れておくか、各種ツールを本質的に理解しておいた方がいいと思います。私は次回から英語で勉強しようと思いました。

3. カタカナ語がわからない
業界未経験からしたら「デプロイ」と言われてもピンと来ません。デプロイしたことないので。シンプルにこれ。
普段からQiitaさんなり、Zennさんなり、色々な記事を読んだり、実務で触れている方なら問題ないかも。

4. 勉強方法が限られる
私は過去問で実践して頭に入れるタイプなので、ここが一番苦労しました。
日本の資格試験は大体過去問があって、本番さながらの問題演習ができましたが、AWSはなかなか無いです。
多分サービスが更新され続けているので、意味ないのかもしれないな、と思いました。
市販の勉強本を買うか、実際に使うか、公式の動画を見るぐらいしか無いのかな、と思っています。
（某動画学習サイトは使っていません。）

# 学んだこと
1. クラウドの可能性を感じた
率直に「**クラウド、すげえな…**」と思いました。今までオンプレミス環境で苦労していたことをバンバン解決してくれる可能性を感じました。

2. 規模の経済
一般企業からしたら当然かもしれませんが、規模が大きいと固定費が薄くなり、利益が大きくなるんだな、とぼんやり感じました。この分野は日本の企業じゃ太刀打ちできねねぇな…と思っています。

3. 速く動くコードの有用性
Lambdaはコンピューティング時間に課金が発生するそうです。つまり実行時間の短いコードほど安く済むサービスがある、ということ。今までプログラミングコンテストで何度も時間切れに悩まされ、「こんなの意味ないっしょ…」と文句を垂れていた自分を殴りたいです。すいませんでした。

今回は以上となります。
引き続き就活頑張ります。
デフォルトのvuetifyのリンク色を変えたい。

```javascript:nuxt.config.js
vuetify: {
    treeShake: true,
    theme: {
      dark: true,
      themes: {
        dark: {
          twitter: '#1DA1F2',
          anchor: colors.shades.white, //これ
        },
      },
    },
  },

```

anchorに指定する。

>By default, the theme service will use your application’s primary color for anchor tags. You can override this by adding an anchor property to the theme:

https://vuetifyjs.com/en/features/theme/#customizing
【Ruby】オブジェクト の クラス と メソッド の 調べ方

# 目的
- プログラミングで重要な、分からないことを調べるための手段を学ぶ。

# ポイント
- classメソッドを使う。
- pry で ls を使う。
- --grep でメソッドを絞り込む。



# 書き方の例
```ruby

オブジェクトのクラスを調べる
"".class

クラスの持つメソッドを表示する
ls "" 
ls "" --grep upcase

```
~実際の表示〜
-  => String

-  String#methods: 
  %            delete                 length        squeeze     など

-  String#methods: upcase  upcase!

# 注意するポイント
- lsコマンドは、pry でしか使用出来ない。

# 具体的な例
"HELLO WORLD"のクラスを調べる。
さらに、そのクラスが持つメソッドを使って小文字にする。

~サンプルコード~
```ruby
"HELLO WORLD".class

ls "HELLP WORLD" --grep downcase

puts "HELLO WORLD".downcase
```
~プレビュー画面~
- => String

- String#methods: downcase  downcase!

- hello world
ubuntu ネットワークの共有

いつも忘れるので・・・

# やりたいこと
有線しかないPCを、ノートPC経由で接続したい。

# 接続
ルーター --> wifi --> ubuntu --> eth有線 --> 他PC

# 設定

sysctl.confを書き換え
```
sudo vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sudo systctl -p

または、reboot
```

ネットワークの設定
```
IPv4 メソッド 他のコンピュータと共有
IPv6 メソッド 無効
適用して、OFF−ONする。
```