OmniAICreator/Qiita-1.07M huggingface dataset:
SDWebImageでカスタムヘッダをつけてsd_setImageする

ヘッダをつけて画像をダウンロードしたいときってあるよなァ！

## 環境
SDWebImage5.8.0以上

## 方法
`sd_setImage(with:placeholderImage:options:context)`を利用する

```swift
sd_setImage(with: url,
            placeholderImage: nil,
            context: [.downloadRequestModifier: SDWebImageDownloaderRequestModifier(headers: ["Foo": "Bar"])])
```

あるいはclosureを使って

```swift
sd_setImage(with: url,
            placeholderImage: nil,
            context: [.downloadRequestModifier: SDWebImageDownloaderRequestModifier {
                var request = $0
                request.setValue("Bar", forHTTPHeaderField: "Foo")
                return request
}])
```

また、全てのリクエストに共通のヘッダをつけたい場合は
```swift
SDWebImageDownloader.shared.setValue("Bar", forHTTPHeaderField: "Foo")
```

でカスタムヘッダを設定できる

## 参考元
https://github.com/SDWebImage/SDWebImage/pull/2990
https://stackoverflow.com/questions/16266462/sdwebimage-and-setting-custom-http-headers
git stashを誤って削除した際の復元方法

下記手順を行うことで誤って削除したgit stashを戻せると紹介している記事が多数ありますが私の環境では復元できませんでした。
※復元できなかった原因はわかりません……。
1. git fsck | awk '/dangling commit/ {print $3}'
2. git cherry-pick -n -m1 1.で見つけたsha1

上記手順に加え下記手順を行うことで誤って削除したstashを復元することができました。
3. git cat-file -p 1.で見つけたsha1
4. git cherry-pick -n -m1 3.で見つけたsha1

下記コマンドを実行することで詳細を確認することができます。
git show 3.で見つけたsha1
SQL Server Databaseプロジェクトもmacやlinuxでビルドできるようになったみたい

今まではwindows環境でのみビルド可能だったDBプロジェクトが.net coreでもビルドできるようになったらしい。
（EF？それはまぁ置いといて）

## アナウンス
https://techcommunity.microsoft.com/t5/azure-sql-blog/microsoft-build-sql-the-next-frontier-of-sql-projects/ba-p/3290628

関連記事）
https://dev.to/dchowitz/develop-build-and-deploy-microsoft-sql-databases-on-macos-42h
https://erikej.github.io/ssdt/dotnet/2022/03/07/ssdt-dacpac-netcore.html

公式の通り、`dotnet`コマンドでsqlprojもビルドできるようになってます。
VScodeでやるほうがやりやすいかも。（けど普段VSCode使ってない人）
手元のmacでやりましたがちゃんとできました。ありがたい。

## デプロイするときは
ビルドはできる、ではデプロイするときは？
`sqlpackage`もmac/linuxあります。
https://docs.microsoft.com/ja-jp/sql/tools/sqlpackage/sqlpackage-download?view=sql-server-ver15

## あとは
vs for macかRiderが対応してくれれば尚良。
しばらくはVSCodeかな…

## master.dacpacがないためビルドにこけるとき
`master`や`msdb`などのシステムデータベースを参照しているプロジェクトはmacやlinuxに持ってきただけでビルドできない。
これはwindowsのVSにしか〜.dacpacが無いためなので、windowsからコピーして参照パスを変える（sqlprojファイルの直接編集）か、
参照を削除すればなんとかなる。
4年目エンジニアがメンターとOJTをやってみた

## はじめに
2021年に4年目になった私は、はじめてメンター業務とOJT業務を任せていただくことになりました。
今回は
メンター（10人）：新卒社員（14人）
OJT（2人）：チームに参画した新卒社員
と複数人いるなかで、自分も任せていただく形でした。

今回具体的に行った内容は
・メンター：週1〜月1ペースで1on1を行うこと
・OJT：毎日5分〜30分程度の夕会を行い、進捗確認やその日の疑問点の解決をすること。
　　　　週1の1on1を行いモチベーションの確認。
　　　　普段の業務の様子を見ながら次のタスク等の割り振り。
　　　　ソースコードレビュー
　　　　目標設定の相談/評価
　　　　等

## メンター/OJT
会社によって、メンター、OJTの役割は変わってくるとおもいますが、今回自分が経験したメンターとOJTの役割をざっくりと残せればと思います。
まずそれぞれの役割についてですが、今回は下記を目標にしました。
メンター ： 主に業務外のメンタルケアをすること。
OJT：業務進捗、状況を確認し、新卒の業務における成長をメインミッションとすること。

## 共通して意識したこと
■心理的安全性をつくること
1on1で話す際は、5割くらい雑談する勢い。そもそも大前提として、1on1は上司が部下からヒアリングするために設けている時間だと思っています。（もちろん別の意図もあると思いますが）
そのため、新卒や後輩が抱えている悩みを打ち解けてもらえる関係になるために、心理的安全性をつくるためにはじめは雑談を多めにしました。別にプライベートなことを話すわけではなく、自分が新卒だったときはなど例をだしたり、他の同期のことをきいたり質問形式にして、相手が話しやすくなるようにすることを意識しました。


■ヒアリングするときの質問の仕方
ただ質問するわけではなく、「答えやすい質問」にすることも意識しました。
悪い例：
最近どうですか？
→「どう」だけだと、答える側もなにをどうすればいいのか戸惑ってしまう。
仕事についてなのか、人間関係についてなのか、プライベートのことなのか。

良い例：
最近はどんな案件をやっていますか？
OJTの先輩とどんなふうに仕事進めていますか？
仕事以外で同期や家族、友達とお話する時間ありますか？
等

のように、具体的にすることによって答えやすい質問を事前に準備しました。

■その場で100%解決しようとしないこと
進捗確認や新卒が困っていることに対して、可能な限り応えたいと思いつつも、時間が必要だったり自分で解決が難しいことは持ち帰って上長に相談をしたり、持ち帰って宿題にしました。
また、調査方法がわからない場合等は、画面を共有しながら一緒に調査をして課題解決することもありました。
100%答えられるかどうかよりも、話を聞く前よりも進捗、進展がある状態を目指しました。

■自分（先輩社員）に聞いてみたいことがないか聞く
「新卒から先輩社員に話かける」ことに苦手意識を持っている人も少なくないので、こちらから質問がないかと問いかけるようにしました。
業務に直接関係することだけでなく、フラットに質問したいことがないか例を出してヒアリングをしました。
・残業どれくらいしてきましたか
・休みは取りやすかったですか
・部署異動ってできるものですか
など

## やってみての感想
自分が新卒だったころを思い出しながら、ヒアリングをするようにしたため、自分と似たようなタイプの方にはメンタルケアはうまくできたと思います。
ただ、もちろん一人ひとりにあうようにコミュニケーションを取るのは難しいと感じました。
OJT業務では、私の個人的目標として「自分から仕事を探せる状態になってほしい」と思い、技術的なことだけでなく、仕事をする上でこうしたほうが良いということも伝えるようにしたおかげで、現在は仕事を自ら取りに行く後輩の姿をみて、嬉しくなりました。
Jqueryのtoggle()(トグル)とは


# toggle()は、対象の要素を表示・非表示にできる
# コード
### html
```html
<button>スイッチボタン</button>
<ul>
  <li>
    【スイッチONだよ】
  </li>
</ul>
```
### jquery
```javascript
$('button').click(function() {
   $('li').toggle();
})
```



# 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954863/437cd79c-c0b9-13e5-986d-e16cc53b8332.png)
ES6をBabelでコンパイル

# 引用記事
https://barikanblog.com/javascript-es6-babel/#toc-0

Javascriptの新基準であるES6（ES2015=ECMAScript2015）を利用する方法としてBabelによるコンパイルがある。
なぜコンパイルが必要かは、すべてのブラウザがES6に対応していないから。

# Babelの使い方
## babel-cliをインストール
```
// プロジェクトフォルダへ移動
cd myproject

// package.jsonを作成
npm init
（色々聞かれるので全てEnter）

// babel-cliをインストール
npm install --save-dev babel-cli
```

## .babelrcを作成
プロジェクトフォルダのルートにBabelの設定ファイルである.babelrcを作成。

## 利用するPresetをインストールし、.babelrcで設定
ES6からES5にコンパイルしたい場合は、babel-preset-es2015というPresetをインストールし.babelrcへ記述する。
```
// babel-preset-es2015をインストール
npm install --save-dev babel-preset-es2015
```

```
// 下記を.babelrcへ記述
{
  "presets": ["es2015"]
}
```

## コンパイル
```
./node_modules/.bin/babel es6.js
```

コンパイルした結果を別ファイルとして保存したい場合、 `-o`をつけて出力先のファイル名を指定
```
// es6.js → main.js にコンパイル
./node_modules/.bin/babel es6.js -o main.js
```

ソースファイルの変更を常にウォッチして、変更があれば自動的にコンパイルしたい場合は`-w`を付ける。
```
// es6.js → main.js にコンパイル（ウォッチ）
./node_modules/.bin/babel es6.js -w -o main.js
```
【Athena】テーブルの中身をダウンタイムなしでデータを入れ替える

## テーブルデータを入れ替えたい！

Athena参照するデータはS3にあって柔軟にデータを入れ替えることが可能です。
不要になったデータは削除したり、新たに必要なデータを追加したりということが簡単に行なえます。[2019年よりINSERT INTOも対応](https://aws.amazon.com/jp/about-aws/whats-new/2019/09/amazon-athena-adds-support-inserting-data-into-table-results-of-select-query/?fbclid=IwAR2OhlV695_w_CuNZqHPRyHtVVg6oSXBGJgXEySFUTqcEU30hyhk3orZ2OY)されたので、さらにデータの追加も簡単になりました。

## データの入れ替え時に正しくない状態のデータが一時的に存在してしまう
例えば日付ごとのデータを管理していて、2022年4月1日のデータを削除して、新たにデータを入れるとします。
そうすると一時的に2022年4月1日のデータが空になってしまうことになります。この瞬間に他のユーザーがこのテーブルにアクセスすると、正しくないデータを取得してしまう可能性があります。

## viewテーブルを活用
今回は`hoge`テーブルを利用していたとします。この中身をダウンタイム無しで入れ替えるにはhogeテーブルをviewテーブルとして起きます。viewの参照先は`hoge_1`とでもしておきます。`hoge_view_1`にはこれまで`hoge`テーブルが見ていたデータを入れておきます

```sql:create_view.sql
CREATE OR REPLACE VIEW hoge AS
SELECT * FROM hoge_1
```

こうしておけばhogeテーブルはこれまで通り

```sql:select.sql
SELECT * FROM hoge
```

のようにデータを取得できます。このhogeテーブルの中身を入れ替えたいとなったら先にデータを修正した`hoge_2`を作っておきます。
それを再度viewで作り変えます

```sql:create_view.sql
CREATE OR REPLACE VIEW hoge AS
SELECT * FROM hoge_2
```

こうすることで常にhogeテーブルは参照できつつ、データの入れ替えが可能になりました。一時的にS3に存在するデータは倍になるのであまりにもデータが巨大だと難しいかもしれません。

## スキャン量の心配はなし（要検証）
Athenaはviewやサブクエリを利用しても最終的に必要になる分だけのデータしかスキャンしないようになっているようです

```sql:select_limit.sql
SELECT * FROM hoge limit 100
```

として場合、hogeテーブルはviewなのでhoge_1を全件スキャンしたあとに100件だけ取得するような動きに見えるかもしれませんが、実際にはhoge_1から100件のみスキャンしてくれるみたいで、不要なスキャンが増える心配もなさそうです。
ただ様々なパターンで検証はしていないので、特定の場合にはviewを利用したことによりスキャンが増えるかもしれないのでそのへんはご検証ください
【XCode】Build input file cannot be found: '/Users/xxxxxxxxxxxx/xxxxxxxxx/xxxxxxxxx/xxxxxxxxx/Info.plist'を対処する

# 原因
Info.plistを移動させた

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/4db17e56-db74-a2c3-35e6-465fc425d6b8.png" width=45%> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/32dd358e-eb74-43d1-fbd4-caf22702a291.png" width=45%> 
```
AdMob-Earning-Widget/Info.plist

↓ ↓ ↓ 変化 ↓ ↓ ↓

AdMob-Earning-Widget/Resources/Info.plist
```
ファイルパスがこのように変化しました

# 解決方法
![スクリーンショット 2022-04-28 17.16.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/390b56df-edc4-1d1c-bbdc-efafc1cabdb6.png)

![スクリーンショット 2022-04-28 17.22.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d7d988db-3c0c-2598-fd7b-83b14a7ac086.png)


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/14e24bb4-01de-13b5-6710-163d8beb3217.png" width=45%> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/4a6c35b5-9383-2854-4667-2d5575e588d6.png" width=45%>

変更前→変更後

おわり
【Uipath】　アクティビティを表示する方法

#### UiPath Academyで使用されているアクティビティが見当たらない

UiPath Academyにて学習中、UiPath Studioで実装しようとしました。
しかし、UiPath Studioにアクティビティがありません。
また、存在するアクティビティの形式や特徴が若干違うので実装が上手くいきません。

#### 見当たらないアクティビティの例

[アンカーベース (Anchor Base)]
[Excelアプリケーションスコープ (Excel Application Scope)]
[ブラウザを開く (Open broser)]
[アプリケーションを開く (Open Application)]
など。

#### 形式の違うアクティビティの例

[範囲を読み込み (Read Range)]
[文字を入力 (Type Into)]
など。

#### 調べてみたこと

恐らくバージョン違いが原因ではないかと仮説を立ててダウングレードを試してみました。
しかし、ダウングレードする方法をいくら探しても出てきません。
結論UiPath Studioはダウングレードできません。
また、毎4月と10月に新しいバージョンがリリースされ、
旧バージョンへは戻せない仕様とのこと。。。

#### 試したこと
アクティビティの検索バーで調べまくる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061334/e4eb46c2-982e-7bc7-4d8c-94d8fe82cc7b.png)

存在しないアクティビティを検索してみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061334/b72c8cd9-031e-1c24-6d23-4e2454e40ff3.png)

見当たらないアクティビティを検索してみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061334/b2d874cf-93e0-0f41-78b6-7b6ef054e3b0.png)

あれ？？？検索結果が空白？？？

ということは、存在はしているけど、表示しない。
つまり非表示設定になっているのではないかと仮説を立てる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061334/a364a959-6b80-a004-2277-7bd64c7183a0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061334/1c1ffdbe-f97d-e781-faec-c1feba29382d.png)
多分これだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061334/30e0c60a-061a-5c60-05e5-91e4e5a623ad.png)
正解！！！
たったこんなことだったのか。
こんなことなのに、すごく時間が掛ったのでRPA初心者の参考になれば嬉しいです。
週番号とはなにか…？

## 概要
週番号（WeekNumber / ウィークナンバー）をご存知でしょうか？
ざっくり「週」に付与されたindexと思って扱ったら、思わぬ落とし穴があったのでご紹介したいと思います。

## 本文
週番号とは「週」に付けた通し番号のことで（要はindexなのですが…）、1年の始めから終わりまでの週に1から順番に通し番号が付き、**年が変わるとまた1から番号が付けられます（ここが大事）**。

年が変わるとまた1から付与され直されると先ほど書いたのですが、この付与の仕方は地域によって差があり、その差を理解していないと思わぬところで不具合を出してしまいます。


以下のJavaScriptのdayjsを使ったサンプルをご覧ください。

```tsx
import dayjs from "dayjs";

dayjs("2022-12-31", "YYYY-MM-DD").week(); // ・・・①53
dayjs("2023-12-31", "YYYY-MM-DD").week(); // ・・・②1
```

dayjsの場合、`week()` で該当日付の週番号を取得できるのですが、上記それぞれでいくつが取得できるか分かりますでしょうか？
1年は52or53週あるのでどちらの場合でも52or53が取得できると思ったのですが、実はこの場合、**①は53、②は1**となります。

日本の場合、週番号は1月1日が含まれる週が1となります。また、日曜日が週の始まりと定義されているのですが、上記の例の日付で`2023-01-01`は日曜日、`2024-01-01`は月曜日となっています。すなわち `2022-12-31` は`2023-01-01` と週が異なるので週番号は1でないのですが、`2023-12-31` は `2024-01-01` と同じ週になるので週番号が1となってしまうわけです。

| 2022年12月 | 2023年12月 |
| -- | -- |
| ![スクリーンショット 2022-04-25 15.26.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264889/397f38b0-fbd4-b65b-a9fe-013114af9aa6.png) | ![スクリーンショット 2022-04-25 15.26.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264889/f79ce5d4-7d57-976e-fd7a-48cbc391e2ff.png) |

使う機会があまりなかったので知りませんでしたが、いざ使おうという時に知らないと不具合の温床になるので注意が必要です。


## おまけ
補足ですが週番号の付け方は地域によって差異があります。
欧州の場合は1月4日、アメリカや日本等の場合は1月1日が含まれる週が週番号1となります。
Cisco Catalyst L2スイッチを触ってみた

## Cisco IOS
Cisco Internetwork Operating Systemは、シスコシステムズ社製のほとんどのルーターとスイッチで使用されているソフトウェアである。

## L2スイッチ
L2とはOSI参照モデルの第２層における「データリンク層」のこと。macアドレスを持っていない。ポートの接続先にいるPCやルータが持っているmacアドレスを記憶していて、そのmacアドレスをもとにあるポートから別のポートへとパケットを送信する

https://shinmeisha.co.jp/newsroom/2020/01/28/l2%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%81%AE%E6%A6%82%E8%A6%81%E3%81%A8%E5%9F%BA%E6%9C%AC%E5%8B%95%E4%BD%9C/

## VLAN（Virtual LAN）
ブロードキャストドメインを分割する L2 の仮想技術です。分かり易く言うと、物理的に 1 つのスイッチを、あたかも複数のスイッチがあるかのように見せる技術です。

## EthernetとARP
EthernetはLANに使われている通信規格です。IPアドレスからMACアドレスを動的に知るためのアドレス解決プロトコルのこと。

## 初期設定
WindowsのPCからシリアリケーブルで接続するためにTeratermを使います。あと、パスワードがわからなくなっている状態だったので復旧を行います。

https://beginners-network.com/catalyst_jyunbi.html

https://eng-entrance.com/teraterm-install

https://shinmeisha.co.jp/newsroom/2020/02/18/cisco-%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%81%A7%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E5%BF%98%E3%82%8C%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%BE%A9%E6%97%A7%E6%89%8B%E9%A0%86/

# IOSコマンド

## 権限

特権モードに変更することができます。Linuxで言うところのsuコマンド
```
> enable
```

特権EXECモードからグローバルコンフィギュレーションモードに移行
```
# configure terminal
# conf t
```

インターフェイスコンフィグレーションモードに移行する
```
(config)# interface vlan 1
```

## 設定情報

設定情報を確認する
```
show running-config
sh run
```

MACアドレステーブルを確認する
```
# show mac-address-table
```

VLANが割り当てているポートの確認
```
# show vlan
```

ポートにどのVLANが割り当てられているか確認
```
# show interfaces status
```

## スイッチ初期化について

startup-configファイルを削除
```
# erase startup-config
```

再起動する。起動後にセットアップモードに入るか聞かれるので[no]を選択
```
# reload
```

vlanの設定が残ってしまっているので初期化するには以下のコマンド
```
# delete flash:vlan.dat
```
ホームページを作成する！③

始めまして、
実務未経験で転職を目指す者です。

ホームページを作成する②に引き続きホームページを作っていこうと思います。
よろしくお願いします。


# stage2 設計

　　　　　　　![名称未設定ファイル-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1344199/e507b27a-104a-9e61-45a4-f5eab88adf7d.jpeg)

stage2では『サイトマップ』と『ワイヤーフレーム』を作り
サイトの全体像の把握を行なっていきたいと思います。

## サイトマップ

stage1の情報整理で上がった必要な情報
をサイトのどこに配置するのか決めたいと思います。

　　　　　　　　　　　　![名称未設定ファイル-ページ2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1344199/648d55d9-2b63-5a98-1d00-088d44ed3551.jpeg)


このような形にしたいと思います。


## ワイヤーフレーム

掲載したい情報に漏れがないか注意して作成します。


　　　　　　　　　　　　　　　　　![名称未設定ファイル.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1344199/57a83974-e76a-ee1c-36ff-b054c281605c.jpeg)

こんな感じにしようと思っています。

以上でstage2を終えたいと思います。

## 最後に

サイトマップやワイヤーフレームは
draw.ioを使用しました

### 参考

draw.io

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwi7n8rJo7b3AhVtl1YBHTCxBiwQFnoECAQQAQ&url=https%3A%2F%2Fwww.diagrams.net%2F&usg=AOvVaw1-h_Mns_MotizBNxF18KnX
PowerShellスクリプトがPolicyエラーが発生する場合の対応メモ

PowerShellのコマンドを実行したときに、Policy上署名されてないスクリプトが実行できない場合があります。該当エラーを回避するコマンドがあるのですがいつも探すのに時間がかかるため備忘録としてメモします。

```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
```

参考
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-7.2#parameters
【Terraform】よく使うTerraformコマンドまとめ

# はじめに
Terraformを勉強したくて、備忘録として、よく使われるTerraformのコマンドをまとめたいと思います。

# よく使われるTerraformコマンド
1.Terraformのバージョン確認
```
$ terraform version
```

2.ワークディレクトへスイッチ
```
$ terraform -chdir=<path_to/tf> <subcommand>
```

3.ワーキングディレクトの初期化
```
$ terraform init
```

4.実行計画の参照
```
$ terraform plan
```

5.tfファイルの変更箇所を許可
```
$ terraform apply
```

6.インフラストラクチャの破壊
```
$ terraform destroy
```

7.実行計画のアウトプット
```
$ terraform plan -out <plan_name>
```

8.実行計画の破壊
```
$ terraform plan -destory
```

9.実行計画の適用
```
$ terraform apply <plan_name>
```

10.リソース名を指定して適用
```
$ terraform apply -target=<resource_name>
```

11.変数名を指定して適用
```
$ terraform apply -var my_variable=<variable>
```

12.プロバイダーの設定
```
$ terraform providers
```
Bronze DBA 模試 復習アウトプット5

# 簡易接続時
ポート指定省略は、デフォルトポート：1521

# DBCAのテンプレート
複雑かつ大量の場合
データウェアハウスが適している

# リカバリファイルの設定初期パラメータ
DB_RECOVERY系
暗記。

# Enterprise Manager Database Express
画面からユーザー作成した場合
権限付与できていないので、エラーになる。

# インスタンス起動のお話
ここは正直どの場合にこれという明確な基準が分からなかったので
本当の意味では理解できていない。
苦手ポイントとなると思う。。

SPFILE起動の場合
　　状態：ディスク障害で1つのファイルが破損
 2つの制御ファイルを使用して再開する場合
　　インスタンス停止→ノーマウントで起動→SPFILEをスコープに指定→インスタンス停止→起動
　　
　　課題：安全性向上のため、制御ファイルの多重化実現
　　SPFILEをスコープに指定→インスタンス停止→制御ファイルをOSコマンドでコピー→起動

# 初期化パラメータのデフォルト
PFILE：MEMORY
SPFILE：BOTH

# 表領域のQUATAについて
状態：1以上あったQUATAの数値を0にする
新規で作成する場合、データを追加できない
既存で表領域が存在する場合、元の数値を使い切るまでデータの追加はできる。
　1あれば、1行は追加できる。
　実際1あれば1行なのか、10あれば1行なのかは1行のデータの大きさ次第。

# DBCAできないこと
<font color="Red">任意</font>のoraファイル登録
<font color="Red">任意</font>のデータベースユーザー作成

# RMANのバックアップ対象
・データファイル
・制御ファイル
・アーカイブREDOログファイル ※オプションつける場合
・SPFILE

# 自動メモリー管理の自動調整されない対象
・REDOログバッファ

# 多重化の話
REDOログ：1つでもOKであれば稼働する
制御ファイル：1つでもNGであれば停止する
go-swaggerで`ParseComment error in file /go/src/controller/xxx.go :cannot find type definition: json.RawMessage`

# 経緯
GORMのmodelにてjson.RawMessageを定義してると、go-swaggerの`swag init`でドキュメント生成に失敗する

```
/go/src # swag init
2022/04/28 07:10:29 Generate swagger docs....
2022/04/28 07:10:29 Generate general API Info, search dir:./
2022/04/28 07:10:29 Generating xxxxxxxxx
2022/04/28 07:10:29 Generating xxxxxxxxx
2022/04/28 07:10:29 Generating xxxxxxxxx
2022/04/28 07:10:29 Generating xxxxxxxxx
2022/04/28 07:10:29 ParseComment error in file /go/src/controller/xxx.go :cannot find type definition: json.RawMessage
```


# この2つのオプションを追加すると解消した

```
swag init --parseDependency --parseInternal
```
Markdown基本記法

# Markdown記法
Qiita記事を書くためにまずはMarkdown記法をまとめます！

## マークダウンとは
HTMLなどのマークアップ言語を簡略化できるようにしたもの。

## 基本的な記法
| 種類        | やり方                       | 
|:------------|----------------------------:|
| 見出し       | # , ##, ###...              | 
| スペース     | 半角スペース２つ              | 
| 改行         | br                          |  
| リスト       | -テキスト                    |
| 番号付きリスト| 1.テキスト                   |
| リンク       | [テキスト] (URL)             |
| 太字         | **　**                      |
| 斜体         | *　*                        |
| 文字色       | < font color="Red">< /font> |
| 引用         | >テキスト  >>テキスト        |
| インライン   | ` で開始終了                 |
| コード       | ``` で開始終了               |
| 打ち消し     | ~~で開始終了                  |

## 見出し
# #一つ
## ##2つ
### ###3つ
#### ####4つ

## スペース
半  角  ス  ペ  ー  ス  が  ２  つ  

## 改行
< br> <br>
を入れる

## リスト
"-"を入れる

## 太字
"*"2つではさむ
**太字**


## 斜体
"*"1つではさむ
*aaa*

## 文字色
< font color="Red">< /font>
<font color="Red">赤い文字</font>

## 引用
">"をいれる
>引用文　

">"を2ついれる
>>引用文

## インライン
テキスト`インライン`

## コードの挿入
（`）を3つで開いて閉じる
（```）の後にruby:qiita.rbなどを入れる

結果

```ruby:qiita.rb
code input
```

## 打ち消し
（~~）ではさむ
~~うちけし~~
シフト演算

## シフト演算
<b>左右にビットをずらして（シフトして）、乗算や除算の演算をすること
符号を考慮しない論理シフトと、符号を考慮する算術シフトがある。
nビット左にシフト - 2ⁿ 倍
nビット右にシフト - ½ⁿ 倍

## 論理シフト
<b>符号を考慮しないシフト演算
左・右シフトとも、あふれたビットは捨て、空いたビットには0が入る。
### 論理左シフト
例：2進数100 = 10進数4
・論理左シフト(2ビット)
00000100 -> <font color =green>00</font>|000100<font color =blue>00</font>
緑のとこは捨てられ、青にとこは空きに入った0
大きさは4倍になったので、2進数10000 = 10進数16となる。
### 論理右シフト
例：2進数100 = 10進数4
・論理右シフト(2ビット)
00000100 -> <font color =blue>00</font>000001|<font color =green>00</font>
緑のとこは捨てられ、青にとこは空きに入った0
大きさは¼倍になったので、2進数1 = 10進数1となる。

## 算術シフト
<b>符号を考慮するシフト演算
左・右で空きビットの扱い方が違う
### 算術左シフト
・算術左シフト(２ビット)4倍
符号ビットはそのままの位置に留まり、あふれたビットは捨て、空きには0が入る。
※符号ビット - 最上位にある、正(0)・負(1)を表すビット。

例：2進数 11111100 = 10進数 -4
11111100 -> <font color =green>11</font>|<font color = red>1</font>11100<font color =blue>00</font>
緑のとこは捨てられ、青にとこは空きに入った0。赤は符号ビットなのでそのまま
結果は2進数11110000 = 10進数-16となる
### 算術右シフト
・算術右シフト(２ビット)¼倍
符号ビットはそのままの位置に留まり、あふれたビットは捨て、空きには符号ビットと同じビットが入る。
例：2進数 11111100 = 10進数 -4
11111100 -> <font color = red>1</font><font color =blue>11</font>11111|<font color =green>00</font>
緑のとこは捨てられ、青にとこは空きに入った符号ビットと同じビット。赤は符号ビットなのでそのまま
結果は2進数11111111 = 10進数 -1となる

## シフト演算と加算の組合わせ
例：2進数100(4)の9倍の値を求める。()内は10進数
00000100(4) -> 00100000(32) - この時点で3ビット論理左シフトしたので、8倍している
9倍するにはここに、2進数100自身を足せば良い。よって00100100(36)となる。

00000100 * 2³ + 00000100 = 00100100
PHPでのcurlリトライ。エラー番号やメッセージで判定する。

## 概要
API通信では、HTTPのレスポンスがエラーとなり失敗してしまうことがあります。
API通信を再度実行することで、復帰ができる可能性がある場合、curl実行のリトライが有効でしょう。

本記事では、実際にリトライ処理を実装した際に参考にした文献と、追加で検討した内容について述べます。

## 結論
→[cURL retry in PHP](https://stackoverflow.com/questions/6080369/curl-retry-in-php)
- 下記判定により、リトライをするかどうかを判断する。
    - PHPの標準ライブラリにある`curl_errno`を用いてエラー種別を確認。
    - （採用）PHPの標準ライブラリにある`curl_error`を用いてエラー文言を確認。


## エラー文言をリトライ処理の判定に組み込んだ理由
**`TCP connection reset by peer`のエラーメッセージが返される場合にリトライを行う**実装にしたかったので、そのエラーメッセージが返ってくる時のエラー番号で判定しようと考えていました。
しかしながら、エラーメッセージとエラー番号の関係は必ず一意になるとは限らないようでした。
また、今回は特定のエラーメッセージが返された時にリトライしたいというニーズだったので、それならエラーメッセージだけで判定すれば良さそう、ということでエラー文言をリトライ処理の判定に組み込む判断をしました。

## さいごに
API通信をリトライする実装をするとなった時、とりあえず全部リトライしてしまえば〜のお気持ちでした。
状況によってはそれでも良いと思います。
ただし、リアルタイム性が問われるアプリケーションの場合、何度もsleepをかけて遅延が大きくなってしまうと大変かもなので、いい塩梅を考えないといけないな、と思いました。

## 参考文献
https://stackoverflow.com/questions/6080369/curl-retry-in-php
https://www.php.net/manual/ja/function.curl-errno.php
https://www.php.net/manual/ja/function.curl-error.php
Wordpressの記載されるURLを少し短くする

## なぜ、Wordpressはすべて絶対URLなの？

その理由はわかりません。

同一サイトを同一ドメインだけで運用するのであれば、絶対URLである必要はないわけです。

いくら defrate やら gzip やら br 圧縮が効いたとしても、URL記述文も削減できます。


## どの変換をするの？
```convert.txt
https://qiita.com/drafts/f9d8e18ff9166ee09d73/edit

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

/drafts/f9d8e18ff9166ee09d73/edit
```

こうするだけで、大量に記載されるスキーマとホスト名を節減できます。

## 多分これでいけます

functions.php の適当な所に記述してみてください。

```functions.php
function urlshort($buffer) {
	$search = array(
		'/href="https?:\/\/' . $_SERVER{'HTTP_HOST'} . '/i',
		'/href=\'https?:\/\/' . $_SERVER{'HTTP_HOST'} . '/i',
		'/src(.?)="https?:\/\/' . $_SERVER{'HTTP_HOST'} . '/i',
		'/src(.?)=\'https?:\/\/' . $_SERVER{'HTTP_HOST'} . '/i',
	);
	$replace = array(
		'href="',
		'href=\'',
		'src\1="',
		'src\1=\'',
	);
	$buffer = preg_replace($search, $replace, $buffer);
	return $buffer;
}

ob_start("urlshort");
```

## 注意

1つのWordpressを複数ドメインで運用するときには適用しないでください。
【CircleCI】"Unable to find gem rubocop-discourse; is the gem installed? Gem::MissingSpecError"が出た時の対処法

# はじめに
CircleCI実行時にRubocopを実行させようとした時に、発生したエラーとその対処方法について、メモしておきます。

### 実行環境
ruby 3.0.2
rails 6.1.4
rubocop 1.24.1
circleci version 2.1

# 発生したエラー
`.config.yml`を以下のように記述し、CIを実行しようとしたところ、rubocopを実行する部分でエラーが発生しました。

```:config.yml
version: 2.1

orbs:
  ruby: circleci/ruby@1.4.0

jobs:
  build:
    docker:
      - image: cimg/ruby:3.0.2
    working_directory: ~/appname_backend
    steps:
      - checkout:
          path: ~/appname_backend
      - ruby/install-deps

  test:
    docker:
      - image: cimg/ruby:3.0.2
      - image: cimg/mysql:8.0.27
        environment:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_DATABASE: appname_test
          MYSQL_USER: user
    environment:
      BUNDLE_JOBS: "3"
      BUNDLE_RETRY: "3"
      APP_DATABASE_HOST: "127.0.0.1"
      RAILS_ENV: test
    working_directory: ~/appname_backend
    steps:
      - checkout:
          path: ~/appname_backend
      - ruby/install-deps
      - run:
          name: Wait for DB
          command: sleep 30
      - run:
          name: Database setup
          command: bundle exec rails db:create db:migrate
      - run:
          name: rubocop
          command: bundle exec rubocop
      - run:
          name: test
          command: bundle exec rspec

workflows:
  version: 2
  build_and_test:
    jobs:
      - build
      - test:
          requires:
            - build

```

```:発生したエラー
Unable to find gem rubocop-discourse; is the gem installed? Gem::MissingSpecError
/home/circleci/appname_backend/vendor/bundle/ruby/3.0.0/gems/rubocop-1.24.1/lib/rubocop/config_loader_resolver.rb:278:in `rescue in gem_config_path'
/home/circleci/appname_backend/vendor/bundle/ruby/3.0.0/gems/rubocop-1.24.1/lib/rubocop/config_loader_resolver.rb:268:in `gem_config_path'
/home/circleci/appname_backend/vendor/bundle/ruby/3.0.0/gems/rubocop-1.24.1/lib/rubocop/config_loader_resolver.rb:69:in `block (2 levels) in resolve_inheritance_from_gems'
/home/circleci/appname_backend/vendor/bundle/ruby/3.0.0/gems/rubocop-1.24.1/lib/rubocop/config_loader_resolver.rb:67:in `reverse_each'
・
・
・
/home/circleci/.rubygems/bin/bundle:23:in `load'
/home/circleci/.rubygems/bin/bundle:23:in `<main>'

Exited with code exit status 2
```

# 解決方法
`.rubocop.yml`に以下を追記する

```:rubocop.yml
AllCops:
  Exclude:
    - 'vendor/**/*'
```

# なぜこの記述がないとエラーになるのか
CircleCIでは、bundle installしたgemsをvendor/bundle配下にロードしているようです。

```
  test:
    steps:
      - checkout:
          path: ~/journey_backend
      - ruby/install-deps
      ↑ このコマンド中にbundle installを実行している
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382306/986ec1dc-31f0-e3ac-d9cf-0a8e3f38ecfa.png)

このため、rubocopがvendor配下のgemsたちまでチェックしてしていたようです。
そこで、`.rubocop.yml`にvendorディレクトリ以下をrubocopの対象から外す記述をすればエラーがなくなるというわけですね。

以上、どなたかの参考になれば幸いです。

# 参考
[https://qiita.com/kabi5/items/40ea864757162e931be1](https://qiita.com/kabi5/items/40ea864757162e931be1)
IBM CloudのCLI(ibmcloudコマンド)でログイン中にAccountを切り替える方法

## IBM Cloud内でのアカウント切り替えについて

IBM Cloudは単一のIBM idでログインし、アカウント(契約先)を切り替えて利用することができます。ブラウザでログインした場合には、画面上のプルダウンで簡単に切り替えができます。

しかし、著者はCLIではibmcloudコマンドでのアカウント切り替えの方法を知らなかったため、切り替え時にはログインし直して対応していました。が、[調べてみると簡単に切り替えができました](https://stackoverflow.com/questions/58104677/how-to-switch-account-with-ibmcloud-cli)ので、日本語でのメモ代わりに記録しておきます。

## アカウントのGUIDの取得

アカウントの切り替えにはアカウントのGUIDが必要です。

CLIでログイン済みの状態で```ibmcloud account list```コマンドを実行すると、アカウントの一覧を表示することができそこにアカウントのGUIDが表示されます。
この例では、左端のaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの部分がアカウントのGUIDとなります。

```shell
$ ibmcloud account list
MTAG@example.org のすべてのアカウントを取得しています...
OK
アカウント GUID                    IMS ID    名前                            状態        所有者ユーザー ID
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa          MASANAO TAGUCHI Account       ACTIVE      mtag@example.org
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   xxxx   Test Account    ACTIVE      test@example.org
```

GUIDはログイン時のアカウント選択画面にも表示されているので、この値を利用することも可能です。
GUIDの値は変わらないので必要なアカウントのGUIDを記録しておき、次回以降のログインで利用することもできます。

## アカウントの切り替え

上記の手順でGUIDを取得すると、```ibmcloud target -c <<GUID>>```でアカウントを切り替えることができます。

```
$ ibmcloud target -c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ターゲットのアカウント MASANAO TAGUCHI's Account (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)

API エンドポイント:      https://cloud.ibm.com
Region:                  jp-tok
ユーザー:                MTAG@example.org
アカウント:              MASANAO TAGUCHI's Account (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください
CF API エンドポイント:
組織:
スペース:
```

## Cloud Shell内での切り替え

この切り替え方法はIBM CloudのCloud Shell内でも利用できます。

あるアカウントから別アカウントへファイルを連携する場合など、Cloud Shell内で送信元アカウントのリソースからファイルを取り出し、アカウント切り替えて、別アカウントのリソースへ展開するなどの対応が行えます(ファイルサイズの制限があります)。
HULFT8.3以前 → 8.4以降 へ定義を移行する際のTips

## 定義抽出/取込の正しい手順
通常、HULFTの設定移行に関しては、下記のどちらかを使うかと思います。

　(1) 専用コマンド (utlgen / utlupdt) でファイルをエクスポート/インポートする
　(2) HULFT Manager で「エクスポート」→「インポート」を実行する

ですが、それぞれ以下の制約があります。

　(1) 完全な移行であれば問題ないが、目視で確認したり、修正を加えたい場合には不向き
　(2) CSVで出力/取込できるが、そもそも HULFT8.4 以降でしか使えない

というわけで、例えば、
　「古くなった現行サーバのOS更改に伴って、別途構築した新サーバへ、HULFT定義を移行したい。
　　移行に際しては、不要な定義を削除したり、一部を修正したりしたい。」
という場合には、上記以外の手順が欲しくなります。

## 他に手順があるの？
無理矢理な方法ではありますが、下記の方法でなんとかなります。

　(3) HULFT Manager で「CSV出力」→「インポート」を実行する

です。

「インポート」は HULFT8.4 以降でしか使えませんが、「CSV出力」は8.3以前のバージョンでも使えるため、このやり方を採用します。

ただし…

## 注意しないといけないこと
「CSV出力」で取得したCSVファイルを「インポート」で取り込む場合には、下記に注意しないといけません。

##### [1] フォーマットの違い
「インポート」のフォーマットでは、どの定義を取り込むかを、CSVの各行の先頭列に記載された内容で判断します。主に、
　SND(配信管理情報), RCV(集信管理情報),
　HST(詳細ホスト情報), TGRP(転送グループ情報),
　JOB(ジョブ起動情報)
のいずれかを、「CSV出力」で取得したCSVファイルの先頭列に追記する必要があります。

##### [2] 項目数の調整
HULFT8.4 と HULFT8.3 以前では、項目数が異なる場合があります。
例えば、HULFT7との比較では、下記の違いがあります。
|7.x|8.x|
|:-|:-|
|自ネットPROXYサーバ名|PROXYサーバ名|
|自ネットPROXYポートNo.|PROXYポートNo.|
|相手ネットPROXYサーバ名|-|
|相手ネットPROXYサーバ名|-|

項目数(＝列数)をあわせておかないと「インポート」時にエラーとなります。

##### [3] 言語の違い
「CSV出力」で取得できるCSVファイルの言語は、HULFT Manager の言語設定によって日本語/英語が選択できますが、「インポート」ではすべて英語で記載されている必要があります。(でないとエラーとなります)

なので、例えば、
　「古くなった現行サーバのOS更改に伴って、別途構築した新サーバへ、HULFT定義を移行したい。
　　移行に際しては、不要な定義を削除したり、一部を修正したりしたい。
　　<font color="#ff0000">そして英語が読めないので、CSVファイルは日本語でほしい。</font>」
という場合には、「インポート」時に英語に直す必要があります。

その時は、下記を参考にしてください。

## 項目名の日本語/英語対応表
HULFTの項目に関して、日本語/英語の対応表が探してもなかったので、作りました。

|Type|項目名|日本語|英語|
|:-|:-|:-|:-|
|共通|各項目で共通|する|Yes|
|||しない|No|
||EBCDICコードセット<br> / EBCDIC Set|自動|Autoconfiguration|
|||カナ文字|Katakana|
|||英小文字|Lower Case|
|||IBM英小文字|Japan (Latin) for IBM|
|||IBM英小文字拡張|Japan (Latin) Extended for IBM|
|||NECカナ文字|NEC Katakana|
|||IBMカナ文字拡張|Japan (Katakana) Extended for IBM|
|||中国語簡体字拡張|Simplified Chinese Extended|
|SND|配信ファイルの扱い<br> / Transfer Block Length|保存|Keep|
|||クリア|Clear|
|||削除|Delete|
|||ロック|Lock|
||圧縮レベル<br> / Compression Preference|圧縮なし|None|
|||横圧縮|Horizontal|
|||縦横圧縮|Vertical|
|||DEFLATE圧縮|DEFLATE|
||シフトコードの扱い<br> / Shiftcode Mode|付加する|Add|
|||付加しない|Do not add|
||コード変換<br> / Code Conversion|配信側|Sending Side|
|||集信側|Receiving Side|
|||無変換|No Conversion|
|RCV|登録モード<br> / Registration Mode|新規作成|New Creation|
|||置き換え|Replace|
|||追加|Append|
||異常時の処置<br> / Error Handling|削除|Delete|
|||保存|Keep|
|||復元|Restore|
||集信形態<br> / Receive Mode|単一集信|Single Receive|
|||複数集信|Multiple Receive|
||集信完了通知<br> / Notification|受信完了|Receive Completion|
|||正常時ジョブ完了|Successful Job Completion|
|HST|漢字コード種<br> / Code Set for Transfer|IBM漢字|IBM Kanji|
|||IBM簡体字|IBM Simplified Chinese|
Linux Ping-t勉強の記録

# Ping-tで出てきた覚えるものを記録(辞書)


## Linuxで使えるOSSで、代表的なデスクトップアプリケーション
LibreOffice,Apache OpenOffice
Mozilla FireFox
Thunderbird
GIMP（Gnu　Image　Manipulation　Program）
Inkscape
## サーバーアプリケーション
Apache HTTP Server(httpd)(アパッチ),nginx/NGINX(エンジンエックス)
Postfix(ポストフィックス),Dovecot(ダヴコット)
MySQL,MariaDB
NFS(Network File System),Samba

# 覚えなきゃいけないもの
###### オフィス業務に必要なソフトウェアをセットにしたもの（オフィススイート)
LibreOffice,Apache　OpenOffice
###### Webサイトの閲覧ができるOSS
Mojira　FireFox
###### 電子メールの送受信、受信したメールの管理
Thunderbird
###### ビットマップ画像加工・編集のOSS
GIMP
###### ベクター画像加工・編集のOSS
Inkspace
###### Webの公開、クライアント要求の処理を行う
Apache HTTP Serverとnginx
###### 電子メールの送信
Postfix
###### 電子メールの取得
Dovecot
###### DBserver
MySQLとMariaDB
###### ネットワークを通して複数のコンピュータ上でファイル共有
NFS
###### Windowsのファイル機能などをLinuxで使用できる
Samba
###### オンラインストレージ機能を提供するアプリ
Nextcloud
LinuxのIntel x86のIntrinsic関数をIBM PowerやARM用にポートする(2)

前回の投稿において、IntelのIntrinsic関数をIBM Powerにポートするにあたっては、テストフレームワークを作ることが必要ということを論じた。
同じieee754を使っていても、浮動小数点演算はアーキテクチャ間でズレがある可能性がある。
精度が必要なコンピューティングに関してはそのためのソフトウェア的な対策も必要となるため、それがパフォーマンスに影響を与える。
浮動小数点演算のアーキテクチャ間のズレを検出する方法として、このテストフレームワークを使えるだろう。

https://qiita.com/daisukeokaoss/items/c0b94eb86a42c28dcce8

今回は、テストフレームワークにおいて、Intrinsic関数にどのような値を入力する必要があるかについて論じる。

```c
extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__,__artificial__))
_mm_add_pd (__m128d __A, __m128d __B)
{
   return (__m128d) ((__v2df)__A + (__v2df)__B);
}
```

上の関数において、`__A`と`__B`において、テストするための値を入力する必要がある。

Perfunctory Testにおいては

standards compliance tests
accuracy tests
regression tests

などがある

standards compliance testsでは±Inf,NaN,±０などの値を入力してテストすることとなる。特別な扱いを必要とする値を入力してテストすることとなる。IntelとIBM Powerにおいて挙動や結果が同じであることを確認するものとなる。
accuracy testsでは、IntelとIBM Powerにおいて誤差が許容範囲にあることを確かめることとなる。
regression testにおいては、前回のリリースでバグを起こした値を入力することとなる。

Randomized Testにおいては、継続的にランダムな値を入力し、結果を比較して正確性を確かめることとなる。

Bit-Identity Testにおいては、浮動小数点値に置いて、ランダムにビットを配置し、それらをIntelとIBM Powerに入力して、挙動や結果が同じであることを確認するものとなる。浮動小数点としては不正な値が入力される可能性もあるが、その場合も挙動や結果が同じであることをチェックすることとなる。

あと、過去にバグが見つかった値のデータを保存しておいて、統計を取り、次回の探索から過去にバグが多く見つかった値を優先的に探索する戦略も取ることができるかもしれない。


参考文献

https://ieeexplore.ieee.org/document/8936472



間違いや意見などがあればコメントでお願いします。
GoogleSpreadSheet chromeで画像欠落対応

自分用のメモも兼ねて。

◆症状
GoogleChromeで
GoogleSpreadSheetに張り付けた画像が画像破損になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095609/65e4a482-b553-8eb9-c4ad-ca0e3b14fc69.png)

◆対応策
Chromeさんの拡張機能の「Googleオフラインドキュメント」をオフで解決

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095609/c0573332-5c1e-590d-899e-87f1bcd1456b.png)

◆対応後イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095609/dcbc0f1c-9898-b648-b22c-597d171a30d0.png)
マイナスからはじめる応用情報処理技術者取得

## はじめに
4月ですね！ 新人さんの来る季節ですね！　そして情報処理技術者試験の季節ですね！！(？？？？)

この記事では、
**「会社で応用情報取れって言われたけど……プログラミング未経験入社なんですが！？」**
**「情報系の知識……なんにもわかんないんですが！？」**
**「どこからどう勉強していいかもわかんないんですが！？」**
という"マイナス"な状態だった筆者が、応用情報技術者試験を（そこそこ力技で）攻略するためにやったことをご紹介します。

同じような悩みを抱える方にとって、何かお役に立てれば幸いです。

## 学習時期・時間
応用情報技術者試験のための学習を始めたのは試験(2021年4月)の半年前(2020年10月)からでした。
ただし、元々は基本情報技術者試験の合格を目指していたため(試験がコロナの影響で延期したため応用に切り替え)、その前の8月頃から基本情報技術者試験対策の学習をしていました。
総学習時間は200時間程度でした。

## 基本情報技術者試験と応用情報技術者試験
基本情報技術者試験を合格してから応用情報技術者試験を受験するのが定石なのかもしれませんが、基本情報の午後問題で必須回答となっているソフトウェア開発(C/Java/Python/アセンブラ/表計算のいずれかを選択)がプログラミング未経験者には辛かったため、**基本情報をすっ飛ばして応用情報の受験に切り替えて良かった**と感じています。
応用情報の午後問題にもプログラミング系の問題がありますが、選択問題なので最悪選ばなければ良いですし、言語に依存しない出題形式である(基本情報午後の「データ構造とアルゴリズム」の出題形式に近い)ため比較的解きやすかったです。

## やったこと
### 0. 書籍で学習
情報系の基礎知識がなかったため、以下の書籍をとりあえず一周しました。
『キタミ式イラストIT塾 基本情報技術者 令和02年』
https://gihyo.jp/book/2019/978-4-297-11021-5

基礎知識がある方は次に紹介する過去問道場でトライアンドエラーを繰り返して学習する、という方法でもよいと思います。
ただ、基礎知識が全くない状態だとおそらく歯が立たないです。自分の場合は先に書籍学習をしてよかったと思いました。

### 1. 過去問道場で午前問題を解きまくる
『基本情報技術者過去問道場』
https://www.fe-siken.com/fekakomon.php
『応用情報技術者過去問道場』
https://www.ap-siken.com/apkakomon.php
通勤時間や退勤後の時間を利用してとにかく解いていました。
試験本番までに、基本情報の午前問題は過去問全問(約2500問)、応用情報は全体の半分弱(約1000問)解いていきました。

特に応用情報の試験が差し迫ってからですが、解く中で出てきた知らない用語はNotionに以下の画像のような形で記録していました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1062427/0613efbc-3a9e-f92d-6dcd-baec068c048c.png)

単語ごとにページを作って説明を書いています。
書き方としては、
1. 知らなかった用語について過去問道場の解説やWeb等で調べた内容をコピペする。画像があるならそれも貼る。
1. コピペした文章を読みながら「です、ます」調を直したり重要なところを太字にしたりと良い感じに整える。
1. コピペした内容を一言で要約して[Summary]欄に書く。

という方法を取っていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1062427/a2ac5567-d71b-a035-37f6-99d61d9c2401.png)

自分で文章を直したり要約する過程で単語を覚えられたので、やって良かったと思っています。

またこのとき、 **4択問題の正解だけを記録するのではなく、4択の中で分からない用語があればすべて記録する**ようにしていました。
例えば暗号解読のための攻撃法を問われたときに正解の選択肢が「ブルートフォース攻撃」だったとしても、その他三択の「線形解読法」「サイドチャネル攻撃」「差分解読法」の中に分からないものがあればすべて調べる、というイメージです。

### 3. 午後問題を解きまくる
午前問題の知識がないとまず歯が立ちません。そのため、ある程度午前問題を解けるようになってから着手しました。

試験までには、「絶対に当日解かない」と決めたデータベース以外の10科目を11回分解いていきました。科目に関しては「これ無理だな」と思ったら見切りをつけていいと思います。

以下の過去問題解説のページが解答入力と採点までやってくれるため、活用していました。
https://www.ap-siken.com/kakomon/03_haru/pm01.html
当時はなかったんですが、今は午後問題も過去問道場があるみたいです。
https://www.ap-siken.com/apkakomon_pm.php

記述式の問題が鬼門になるかと思いますが、自分の場合は正答の書き方を読んで **「どういう言い回しをしているか」** を真似るようにしていました。

また、午前試験の節で書いたNotionへの知らない用語の記録は、午後問題でも実施していました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1062427/c3a5727c-2157-c296-a3fe-fbc5b46147da.png)

## おわりに
 **「自分は非情報系・プログラミング未経験だからなんにもわかんない」** という前提で徹底的に・時間をそれなりにかけて学習に取り組みました。
力技とはじめに書いた通り、**とにかくやり込んでクリアする**という方法なので、もしかすると前提知識のある方だと「もっと効率よくやれるだろう」と思われるかもしれません。
「もっとこんな効率のいい勉強法があるよ！」という方がもしいらっしゃれば、ぜひ教えていただければ幸いです。

### おまけ　応用情報試験の先
応用受かって**更なる高みを目指したい**、**もっと強い敵と戦いたい**という方は、せっかくなので以下試験区分のいわゆる「高度試験」にチャレンジしてもよいかと思います。
https://www.jitec.ipa.go.jp/1_11seido/seido_gaiyo.html
筆者も、応用情報技術者試験合格後に情報処理安全確保支援士とネットワークスペシャリストを受験しました。
応用情報技術者試験合格後2年間は午前の試験の一部が免除になるので、受けやすいのではないでしょうか。
アプリ申請時のサポートURLについて-2022年時点-

# はじめに
アプリを初めて製作し、App Store　にサポートURLをTwitterのURLに設定して提出した所、見事にリジェクトされました。

他のネット記事を見ると、審査が通った記事があったのですが、どうやら2022年時点では駄目みたいです。

個人的な憶測ですが、サポートのサイトとして、問い合わせができる事が必須みたいです。

なので、手間なのですが、問い合わせが出来るサイトを作らなくてはいけないのです。

### 手っ取り早くサイトを作ろう!!
https://ja.wix.com/

私はこのサイトを使い、サポートサイトを作成しました!!

やり方はポチポチクリックしてると、本当に簡単に作れます!!(5分くらい)
無料です!審査も無事通過しました。

初めてのアプリ申請は、とにかく早くリリースしたい気持ちで一杯でしたので、リジェクトされる度にモヤモヤしっぱなしでした。

サポートURLで躓いたら、この記事を参考にして頂ければ幸いです!!

以上です!!
誤差

## 誤差
<b>コンピュータ内部で、数値を指定されたビットで表現するために、真の値と表現する値との間に発生する差のこと

### 桁あふれ誤差
<b>演算結果がコンピュータの表現できる範囲を越えることで発生する誤差(<font color=blue>オーバーフロー</font>)
浮動小数点では、限りなく0に近づいて表現しきれなくなる<font color=blue>アンダーフロー</font>がある。

### 丸め誤差
<b><font color=blue>指定された桁数で演算結果を表すために切捨て・切上げ・四捨五入などを行うことで発生する誤差</font>

### 桁落ち誤差
<b><font color=blue>絶対値がほぼ等しい数値の間で、同符号の減算や異符号の加算をした時に、有効桁数が減ることで発生する誤差</font>

### 情報落ち誤差
<b><font color=blue>絶対値の差が非常に大きい数値の間で加減算を行った時に、絶対値の小さい方の数値が計算結果に反映されないことで発生する誤差</font>

多くの数値の加減算を行うとき、絶対値の昇順(小->大)に並べて計算すると 情報落ち誤差を小さくすることができる。

### 打切り誤差
<b><font color=blue>浮動小数点の計算結果の打ち切りを、指定された規則で行うことで発生する誤差</font>
例として円周率がある。
JavaScriptで要素の表示、非表示を切り替える。

アプリ開発時、要素の表示や非表示を1つのボタンでできないか疑問に思い、備忘録としてまとめます。
イメージは、下記の画像のように「表示非表示ボタン」を押す度に、・aaaaaが表示、非表示を繰り返すようにしたいです。

![スクリーンショット 2022-04-28 14.41.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1244172/b2ae1adb-378a-9851-0d20-cfb20b6d5457.png)

![スクリーンショット 2022-04-28 14.42.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1244172/7c3191fc-f3c9-74d9-3ace-fbeb2de10cdf.png)

# 結論
**・toggleを使う。**

# コード
```html:index.html
<button id="button">表示 非表示ボタン</button>
<ul>
  <li id="list" class="hidden">
    aaaaa
  </li>
</ul>
```
```css:style.css
.hidden {
  display: none;
}
```

```javascript:index.js
const btn = document.getElementById("button");
const list = document.getElementById("list");

btn.addEventListener("click",function(){
 list.classList.toggle("hidden")
});
```

# 解説

・id="list"の要素は``display: none;``により、隠れて見えない状態になっている。
・``btn.addEventListener("click",function(){
 list.classList.toggle("hidden")
});``
→ボタンをクリックした時に、id="list"の要素にhiddenクラスを追加、削除を行えるようにしている。

# まとめ
toggleは、クリックなどの同じ操作によって、二つの状態を交互に切り替えられるような仕組み。

# 参考記事
https://qiita.com/science-green/items/8c2ed81c916ebfc801e3
Bronze DBA 模試 復習アウトプット4

# CREATE USER
PASSWORD EXPIREは、期限切れにする設定です。
期限切れにすることで、次回のログイン時にパスワード変更を促すことができる。

# データベースをマウントすると何ができる？
状況：インスタンス停止中
できること
・ファイルの名前を変更できる。
　　具体的なファイル：REDOログ、データファイル
・クリティカル領域のリカバリ
　クリティカルな領域とは？
　　代表：SYSTEM表領域

# DROPに対してできること
・フラッシュバックドロップ　🆚 PURGE
・CASCADEつけると、外部キー全部消せる
・PURGEで使用メモリの再利用できる←ここは知ってた。

#　ここにしてもネーミングメソッド
・簡易接続ネーミングは構成不要
・ディレクトリネーミングはLDAP

# UNDOについて
・ロールバック
・読み取りの一貫性
・フラッシュバック機能(ただし、フラッシュバックドロップは除く)
UNDOは、ロールバックフェーズで使用する

# データベース管理者のタスク
・データベースの作成
・インスタンスの起動停止
・パフォーマンスの監視

# システム権限でできること
・DB接続
・任意のスキーマに対する操作

# CREATE USERでできないこと
・パスワードの有効期限
・権限の付与
・ロールの付与

# Oracle Netの設定
結論
web アプリケーションであろうが、クライアントであろうが
結局それぞれで構成が必要

# 索引でできること
・複数列の組み合わせ
・問い合わせ時のパフォーマンス向上
　問い合わせ時とは？
　　SELECT文のこと
・索引のある列が更新されると、索引自体も更新される。
　連動してる

# ユーザー削除できないのはどんな時？
ユーザーのスキーマに何かしらオブジェクトがあること
 テーブルとかVIEW　

# DBCAの記憶域について
| パターン | 該当するもの |
|:--|:--|
| 記憶域のタイプ  | ファイルシステム、自動ストレージ(ASM)  |
|  関係なし共通 |  oracle Managed files | 

# キャッシュに負荷をかけないようにデータを表に移したい場合
SQL*loaderには2種類移動方法がある。
・従来型パス
・ダイレクトパス
ダイレクトパスだと、キャッシュを経由しないため、キャッシュに負荷なし。

# ロールの説明
・認証認可
・権限系
・複数のユーザーに対して付与

# パッチの役割
ソフトウェアを最新に保つこと
JavaScript

for文
for(初期化値;ループ継続条件式;増減式){
繰り返し実行したい処理
}

(例)
```
for(let i = 1; i <= 3; i++){
 console.log(i);
}
出力結果→1,2,3
for文の流れ
①iの初期値１が出力せれる。
②i <= 3以下なので、i++が実行され1+1の結果２が出力される。
③i <= ３を満たすまで繰り返す。
④終了したらfor文の下の記述が実行させる。

*配列は0から始まるので配列が３の場合は3未満なので、<3か　<=2と記入する。
let arr = ['red','green','blue'];
for(let i = 0; i < 3; i++){
  console.log(arr[i]);
}
*継続条件式にlengthを記入する事で、配列が何個増えても記述を変更できなくて良い。
let test = ['name','tel','gender','birthYear']
for(let i = 0; i<test.length; i++){
  console.log(test[i]);
}
```

for文の入れ子構造
```
const scores = [
  [100,99,98,],
  [90,89,87,],
  [80,79,78,],
];
for(let i = 0; i <scores.length; i++){
  for(let j = 0; j <scores.length; j++){
    console.log(scores[i][j]);
  }
}
```

while文
```
let j = 1;
while (j <= 5){
 console.log(j);
 j++;
}
出力結果1,2,3,4,5
① j <= 5を満たしていないので、console.log(i)が出力される。
② j++により、１＋１＝２が実行され、console.log(i)が出力される。
③ j <= ５を満たすまで繰り返し。
*j＋＋を忘れると、　j＝１が永遠に出力させるので注意。
```

forEach文
配列名.forEach(コールバック関数)(要素の値){
実行したい処理
}
```
let colors = ['red','green','blue'];
colors.forEach(function(color){
 console.log(color);
});
```
浮動小数点（未完成）

## 浮動小数点
<b>実数（小数点のついた数）を扱う場合に使用する形式

## 浮動小数点の形式
<b>代表的な形式IEEE754、32ビットの形式。
(-1)ˢ×B×2ᴱと表現する。
符号部　|　指数部　|　仮数部　　　
S　　　　　E　　　　　B
1ビット　　8ビット　　23ビット
S:仮数部の符号(0 : 正 , 1 : 負)
E:2を基数として、実際の値に127を加えたバイアス値
B:絶対値を2進数で表す。1.M(1.xxx・・・)となるように桁移動する(<font color=blue>正規化</font>)


### バイアス
<b>実際の数値に一定の数値を加えること。
【Java_繰り返しの中断(2種類)】

現在、書籍でJavaの学習に取り組んでいます。
この投稿はその備忘録になります。

## break文とcontinue文
for文やwhile文を用いた繰り返しの途中で、その繰り返しを中断したいとき、
`【break文】`や`【for文】`を使います。

#### ■break文
break文を利用した場合

```java
public class App{
 public static void main(String[] args) throws Exception{
  for (int i = 1; i < 10; i++){
   if (i == 3){
    break;
   }
   System.out.print(i);
   System.out.print(" ");
  }
 }
}


【結果】
1 2
```
以上の様に`break`によってif文で指定した値以降の処理は中断されています。
(3以降は出力されない)

#### ■continue文
continue文を利用した場合

```java
public class App{
 public static void main(String[] args) throws Exception{
  for (int i = 1; i < 10; i++){
   if (i == 3){
    continue;
   }
   System.out.print(i);
   System.out.print(" ");
  }
 }
}


【結果】
1 2 4 5 6 7 8 9
```
 以上の様に`continue`によってif文で指定した値の処理は中断されています。
(3のみ出力されない)



以上になります。
[Laravel-adminを導入しよう！その5] Laravel-adminをインストールしSSL化する

# シリーズ一覧
1. [[Laravel-adminを導入しよう！その1] ConoHa VPSにCentOS Stream8をインストールしVSCodeでSSH接続できるようにする - Qiita](https://qiita.com/yuki-masaki/items/8d8e2f595f26a20cdf80)
2. [[Laravel-adminを導入しよう！その2] CentOS Stream8にNginx、PHPをインストールする - Qiita](https://qiita.com/yuki-masaki/items/4d9c2fb4769512049f03)
3. [[Laravel-adminを導入しよう！その3] CentOS Stream8にLaravel9（PHP8、Nginx、MariaDB）をインストールする - Qiita](https://qiita.com/yuki-masaki/items/fe412f961b5164536c64)
4. [[Laravel-adminを導入しよう！その4] [CentOS Stream8 & Nginx] 無料のSSL証明書「Let's Encrypt」でSSL化する - Qiita](https://qiita.com/yuki-masaki/items/fc1e0d73c49d9afdda7e)
5. [[Laravel-adminを導入しよう！その5] Laravel-adminをインストールしSSL化する - Qiita](https://qiita.com/yuki-masaki/items/172bd66f26f9932906e0) ←本記事

# サーバー構成
OS: CentOS Stream8
Nginx: 1.20.2
PHP: 8.1.5
MariaDB: 10.3.28
Laravel: 9.9.0

# 概要
本シリーズは、VPS上に構築したCentOSに、IT資産管理ツールを構築することを最終目的としています。
IT資産管理ツールのUIは、Laravelの管理画面ライブラリである「Laravel-admin」を使用します。
[前回の記事](https://qiita.com/yuki-masaki/items/fc1e0d73c49d9afdda7e)では、Let's Encryptを使ったサイトのHTTPS化をしました。
今回は、手軽に管理画面を構築できるライブラリ「Laravel-admin」のインストール手順を説明します。

# Laravel-adminをインストールする
Laravel-adminはLaravelのライブラリとして提供されています。
前提としてLaravelがインストールされている必要があります。
まだインストールしていない場合は[過去の記事](#シリーズ一覧)を参考にLaravelをインストールしてください。

### Laravel-adminインストール
インストール手順は[公式サイト](https://laravel-admin.org/docs/en/#Installation)に記載されています。

```bash
composer require encore/laravel-admin
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
php artisan admin:install
```

これでインストール完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1140967/9310ecf4-f47b-5a35-f584-11154765510a.png)
`http://サイトのドメイン/admin`にアクセスするとLaravel-adminのログイン画面が表示されます。
初期設定では「ID:admin / PW:admin」でログインできます。

# SSL設定を有効化する
既にサイトをSSL化している場合は、ログインボタン押下後に混合フォーム(Mixed form)に関するエラーが表示されてしまうことがあります。
※混合フォームについて

https://forest.watch.impress.co.jp/docs/news/1271505.html

このエラーは、サイト自体はSSLされているにもかかわらず、Laravel-adminのフォームがSSL化されてないことが原因で起きます。
下記設定ファイルを変更するだけで修正することができます。

```/config/admin.php
'https' => env('ADMIN_HTTPS', false),
```

falseをtrueに変更して上書き保存すればエラーが解消され、ログインボタンが機能するようになります。

# 参考サイト
[Laravel admin | laravel-admin](https://laravel-admin.org/docs/en/#Installation)
[危険な“混合フォーム（mixed forms）”にご用心 ～「Google Chrome 86」から警告措置 - 窓の杜](https://forest.watch.impress.co.jp/docs/news/1271505.html)
[laravel-adminのSSL化方法 - Qiita](https://qiita.com/Dev-kenta/items/f4619f11f1d885b0c31c)
saml2awsが動かなくなったけど修正のPRが出ていたのでそのブランチでビルドする

いつも通りsaml2awsしようと思ったら
```
Error authenticating to IdP.: error loading first page: failed to build login form data: could not find any forms matching the provided IDs.
```

困った困った
ところが、同僚が[修正のPR](https://github.com/Versent/saml2aws/pull/806)を見つけてくれたのでこのブランチでビルドしてみる

# リポジトリのREADMEを見ると
```shell-session
$ make mod
$ make install
```
でいけるよ
とのことだったんですが

- 私はsaml2awsをローカルのコンテナ上で動かしている変態なのでlinuxのバイナリが欲しい
- 社内にはmac上でsaml2awsを動かしている人もいるのでdarwinのバイナリも欲しい
- しかし、ローカルにgoの環境構築をしたくない
  - [この記事](https://qiita.com/rh_taro/items/ca08b930f704275286a4)を見ると分かる通り、ローカル環境を汚さずすべてコンテナで行いたいお年頃

という感じなのでREADMEの方法を無視して無駄な頑張りをしてみる


# goのdockerイメージ使ってsaml2awsをクロスコンパイルする
goよくわからんけど `GOOS` と `GOARCH` 指定すればいいらしいので真似してみる

```shell-session
$ git clone git@github.com:jmctune/saml2aws.git
$ cd saml2aws
$ git checkout googleapps-js-fix
$ docker run -e GOOS=darwin -e GOARCH=amd64 -it --rm -v `pwd`:/build golang:latest bash -c 'cd /build && go build -o bin/saml2aws-$GOOS-$GOARCH cmd/saml2aws/main.go'
$ docker run -e GOOS=linux -e GOARCH=amd64 -it --rm -v `pwd`:/build golang:latest bash -c 'cd /build && go build -o bin/saml2aws-$GOOS-$GOARCH cmd/saml2aws/main.go'
$ ls bin
```

ローカルを汚さずクロスコンパイル完了
潔癖症大喜びです

おしまい
ライブラリをCarthageでbuildしたら失敗した。

# 困ったこと

フォークしてきたライブラリ```carthage update```でbuildすると失敗した。

# エラー内容

```
*** Building scheme "ライブラリ名" in ライブラリ名.xcodeproj
Build Failed
	Task failed with exit code 65:
```

詳しくはログを見てちょ！って書いてたから見に行ってみる👀

```
LLVM ERROR: out of memory
Allocation failed
```

アウトオブメモリー！？

助けてー Google先生ぇー！

# 解決方法

[参考サイト](https://developer.apple.com/forums/thread/702200)

```
I'm my case, Xcode 13.3 was breaking with the "LLVM ERROR: out of memory" when archiving. Reading the error log, I've found something interesting: "Embedding bitcode". Well ... bitcode generation is optional. So I've disabled bitcode for that target: Build Settings -> Enable Bitcode = No.

And that's it! After turning off bitcode, Xcode 13.3 was able to archive with no more "LLVM ERROR: out of memory".

So search for "Embedding bitcode" in your Xcode's error log. If you find it, this is the cure ;-). If not, sorry, can't help you.
```

なんかXcodeで```Enable Bitcode = No```を設定したら良いらしい！
さすがGoogle先生！！！
とりあえず試してみる系-サクッとモブプロやってみた

## この記事を読む人
モブプロよく聞くけど、どうやるんだろうと悩んでる人
※モブプロとは、複数人でコミュニケーションを取りながら実装する手法

## きっかけ
DevOpsDays Tokyoというイベントに参加してきまして、兼ねてからやろうかなと思ってたモブプロが紹介されたのと、
たまたまエンジニアが集まる機会があったのでサクッとやってみた報告です。

https://www.devopsdaystokyo.org/


## モブプロの様子(30min)

### 準備(10min)

当日集まったエンジニアは私除いて6人で、"実装に関して"ビギナーが2人、ジュニア~ミドルが3人、シニアが1人という内訳でした。
で、お題はleetcodeの回文判定(※1)をチョイスし、初めての人もいたのでleetcodeの使い方や問題文を解説しました。
その後、ジュニアのうち一人Driver(彼の画面を共有)、他をNavigatorに設定してヨーイドンでやってみました(※2)。
ちなみにリモート・オンサイトの割合は半々でした。

※1:回文とは「しんぶんし」のように前から読んでも後ろから読んでも同じ文のこと。もっと知りたい人は「こたつたこ」でググるとよし！
※2:ざっくり説明すると、Driverが書く人、Navigatorが指示・提案する人

↓ログインが必要かもです。

https://leetcode.com/problems/palindrome-number/

### モブプロ開始！(10min)

言語はなるべく共通で会話しやすいJavascriptを選択しました。
まずは、「for文回して順番に先頭と末尾を比較する案」で議論が進んでました。リモートからもコードの提案が送られてきます。
Navigatorの指示がDriverになかなか伝わらず(どうfor文を書くか etc.)、苦労してたように見えます。
そんな中、なんとシニアエンジニアから「わかったかも」と一声...ドラスティックな解答が提示されました。
動かしてみると、「Accepted」...完了ですね！

### クロージング(10min)

結果を解説してもらって皆に納得してもらいました。
その後、「モブプロ初めてだったけどにいい感触でした！」とまとめ感想言ってもらってクロージングしました。


## まとめ・反省

流れの概要と反省を書いてこの記事を結ぼうと思います。
詳しくは後述しますが、やってよかったと思います。この記事を読んでくださった方に実践してもらうため、アジェンダおいておきます。
* お題/前提条件の共有
* Driver/Navigatorの割り振り(Driver:ジュニア、Navigator:ミドル以上がいい)
* 議論/実装
* 結果の共有←これ重要!!(全体の認識レベルを合わせるため)

### 気づき・よかったこと

* Driver/Navigatorの分担はやはり必要
* ミドル~シニアエンジニアは言語使用での、ジュニアは自然言語(日本語)でのコミュニケーションが多いことがわかった
* シニアエンジニアの実力を再認識できた
* ジュニア~ミドルエンジニアの底上げ...になったかどうかは別として盛り上がったしきっかけになるかな
* かなり短い時間、リモート環境下でもできる

### 改善点

* ビギナー向けにするにはお題やフィールドが少し雑すぎたかな...
* さすがに6人は多かったw(2-3人がいいです)
* やはり効果測定はしてみたい
[Stripe Updates]JP_Stripes What's new 2022/04の補足・追記など

# JP_Stripes What's newとは？

Stripeのユーザーコミュニティ"JP_Stripes"で、2－3か月に1回の頻度で開催している、オンラインミートアップの１つです。
Stripeで直近にリリースされた新サービス・新機能について、３０分程度で網羅的に紹介するセッションを行っています。

配信は2022/4現在、Facebookグループ内で行われています。
視聴・参加にはグループへの参加が必要ですので、ご注意ください。

https://www.facebook.com/groups/jpstripes

# 2022/3-4のStripe Update Pickup

https://speakerdeck.com/stripehideokamoto/jpstripes-whats-new-202204

前回のStripe What's new以降にあったアップデートのうち、日本のユーザーへの影響がありそうなものをピックアップしました。


## Checkout / Payment Links Updates

### Checkoutページに独自ドメインが設定可能に

「サブドメインしか利用できないこと」や、`redirectToCheckout`を使わないリダイレクトが必要など、制限事項がいくつか存在します。

以下のドキュメントや記事を参考にお試しください。

https://stripe.com/docs/payments/checkout/custom-domains

https://qiita.com/hideokamoto/items/d36602a126aa4edf862c

### 参照IDを利用した、支払リンクでの追跡

https://qiita.com/hideokamoto/items/f4dc308337b0ba6e57bd

### Payment LinksのQRコード発行機能

管理画面から発行するだけのシンプルな仕組みです。

発行方法は以下の記事をご覧ください。

https://qiita.com/hideokamoto/items/14ef0c1159d6a567233a

## API Updates

### Search API

分析系だけでなく、顧客データの取得などの組み込み部分でも活用が期待できます。

https://stripe.com/docs/search

https://qiita.com/hideokamoto/items/341f220b799e51bd5752

### Test Clock

Stripe APIまたはCLIを利用すると、サブスクリプションの時間経過もE2Eテストが可能になります。

https://qiita.com/hideokamoto/items/5c7332bce3d5537992df

## Misc updates
### ペイアウトでの「1日の始まり」がカスタマイズ可能に

- 2022/03/15以降に作成されたStripeアカウントの場合、日本時間の0時が設定されています。
- 2022/03/15以前に作成されたアカウントの場合、デフォルトのタイムゾーンはUTCが設定されています。


![スクリーンショット 2022-03-22 12.15.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/89aa95b3-31bc-e88d-eb66-3268a51d336f.png)


[設定ページ](https://dashboard.stripe.com/settings/payouts)

https://stripe.com/docs/payouts/customized-start-of-day 

### ダッシュボードの顧客ページで見れる情報・フィルタリングできる情報が増加

一覧ページで「上位顧客」「リピーター」などのフィルタリングができるようになりました。

また、顧客詳細ページでも、MRRの表示などより深い分析が可能になります。

https://twitter.com/stripe/status/1516810640576311299


# JP_Stripes FBグループに参加して、最新イベント情報をGETしよう！

Stripeのユーザーコミュニティ「JP_Stripes」は、Facebookグループにてユーザー同士のコミュニケーションやオンラインイベントの開催、Stripeによる最新情報のオンライン配信などを行っています。

次回のコミュニティイベント情報などの情報も入手できますので、ぜひご参加ください。

https://www.facebook.com/groups/jpstripes
B - Five Dishes AtCoder

## 問題
https://atcoder.jp/contests/abc123/tasks/abc123_b


## 回答

```Python
a = [int(input()) for _ in range(5)]

b = []
c = 0

ans = 0

for i in range(5):
  if a[i] % 10 != 0: #10で割り切れなかったら
    c = max(c, 10 - a[i] % 10) #標準入力の中で一番大きいあまりの差分である数をcに代入。5こめは10の倍数まで足す必要ないので最後にひく。
    a[i] += 10 - a[i] % 10 #余りに対して10の倍数になるように足す。
    b.append(a[i]) #10までの標準入力に10の位の数までの数字を足した数字を配列として代入。
  else: #割り切れたら
    b.append(a[i]) #bに配列として代入する。
    
ans = sum(b) - c #bの数は全てあまりの数を入れている。最後の数は10の位になる時刻を待つ必要ないのでcを引く。

print(ans)
```


## ポイント

10の位の時刻まで一番差分が大きい数を最後に足せば、最短の時刻になる。最後に注文する数は10の位の時刻になるまで待つ必要がないから。

```
#標準入力
101
86
119
108
57
```

上記の標準入力の時、前の順番を変えてARC カレー　→ABC 丼　→　AGC パスタ　→　ATC ハンバーグ　→　APC ラーメンの順にしても合計値は変わらない。

前検索を使うことはわかったが、10の位の時刻まで一番差分が大きい数を最後に足せば良いという部分がわからず。
ホームページを作成する！②

始めまして、
実務未経験で転職を目指す者です。
html
css
gitとgithub
sql
ruby on railsを学びました。

引き続きホームページを作っていこうと思います。
よろしくお願いします。


# stage 1  情報整理
　　　　　　　　![sample_app-ページ2-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1344199/b5219bf1-fa7a-e70d-c584-665ab57e822c.jpeg)


本題に入る前に、今回ホームページを作る会社の紹介をします。
とある田舎にある養殖された虹鱒や岩魚を加工、販売
している会社です。
現在は市場と地元の商品を売っている直売所？みたいなところに
卸しています。


では、本題に入ります。

## 課題
会社の存在が知られていない。
どんな会社なのか知られていない。
虹鱒の存在を知られていない。
川魚にいいイメージがない。
どこで買えばいいのかが知られていない。

他にもありますが主な課題はこんなところでしょう。

## 対策
上記で挙げた課題に対しての１つの対策として
ホームページを作ります。

## ターゲット
ターゲットを決めたいと思います。
３０代から４０代の男女をターゲットにしたいと思います。
理由は親世代が川魚に抵抗が無くホームページも利用する世代だと
思ったからです。

## 掲載したい情報

次にホームページに掲載したい情報を整理していきます。

会社の基本情報
商品の情報
ブログ
お知らせ

上記は必ず掲載させたい。

## ホームページのコンセプト
シンプルで情報を最低限にして
わかりやすいホームページにする。

## 最後に

stage1は以上になります。
素人なので完璧にはできないですが、
コツコツやっていきたいと思います。

応援よろしくお願いします。


stage2へ続く