OmniAICreator/Qiita-1.07M huggingface dataset:
三角比を考えるときの図をpythonで書く

#やったこと
三角関数について調べる機会があったので、もっと何かできないかと思い、三角比を考えるときによく出てくる図を描画する処理をpythonで書いてみました。

triangle_drow()に角度を渡してやると図を書いて、座標の情報を表示してくれます。

``` python3
# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np

#三角比を図に描画
def triangle_drow(angle):
    #X座標とY座標を算出
    x1 = np.cos(np.radians(angle))
    y1 = np.sin(np.radians(angle))
    
    #円の上に点Pをプロットして座標を表示
    plt.scatter(x1,y1,color="blue")
    target_text = " P(" + str(round(x1,3)) + "," + str(round(y1,3)) + ")"
    plt.text(x1,y1,target_text)

    #点Pを使って三角形を作成
    plt.plot([0,x1],[0,y1],linewidth=3,color="blue")
    plt.plot([x1,x1],[0,y1],linewidth=3,color="blue")
    plt.plot([0,x1],[0,0],linewidth=3,color="blue")

#メイン処理
#軸の描写
plt.axhline(0, linewidth=3, color="black")
plt.axvline(0, linewidth=3, color="black")

#円の描写
angle = np.arange(0,360) #0~360の角度のリストを作成
circle_x = np.cos(np.radians(angle)) #x座標のリスト
circle_y = np.sin(np.radians(angle)) #y座標のリスト
plt.plot(circle_x,circle_y, linestyle="dotted")

#引数で渡した角度の三角形を描画
triangle_drow(45)

plt.axis('equal') #x軸とy軸のスケールを揃える
plt.show()
```

#出力結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1359985/d636a11d-3612-a7df-f59b-15785ed93c34.png)
Scratchのクイズ　コードを短くしよう　問題編

Scratchのプログラムを使ったクイズです。
ディスカッションフォーラムで投稿したものと同じ内容です。
##第一問
![Screenshot 2022-01-09 at 23-06-20 Scratch - Imagine, Program, Share.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2468028/01428d0f-1cee-0bcd-a810-31ca5fd49de0.png)
##第二問
![Screenshot 2022-01-09 at 23-06-36 Scratch - Imagine, Program, Share.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2468028/e7f51f3d-2d6b-6b1d-9a15-ba87f70ac6e7.png)
##第三問
![Screenshot 2022-01-09 at 23-06-42 Scratch - Imagine, Program, Share.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2468028/d9e8d5c5-88a0-f2b2-9a5c-f9c8dddc84d3.png)
##第四問
![Screenshot 2022-01-10 at 12-25-53 Scratch - Imagine, Program, Share.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2468028/197e131a-f5ff-7d7b-0068-66da96e69540.png)

回答編は
「ここにリンクを入れる予定」
を見てください。
raspberry piのVNC接続でメニューバー(ツールバー)が表示されない事象

# 環境
MacOS：Catallina 10.15.3
Raspberry pi：モデル3B+

# 概要
以下の手順にてmacからraspberry piにVNC接続して画面操作をしたかった。

https://qiita.com/murs313/items/81757bf8bc74b6b76cdf

ただし、画面共有した際にメニューバー(ツールバー)が表示されない。
![8cb95e0f05c41bc6de1c095763f66605_png__2880×1800_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153118/75f44b52-96b3-6887-841e-c9c7beb622c4.png)

こんな感じになってしまい、ブラウザやターミナルが操作できないので画面共有した意味がない状態になっている。
いろいろ試行錯誤して海外QAサイトで解決方法を見つけたため、こちらに手順を記載しておく。(あくまで解決方法のひとつだと思います)


原因として、lxpanelというプロセスがないとメニューバーが表示されないとのこと。
実際にlxpanelのプロセスを確認したが、動いていない状態だった。

```
pi@raspberrypi:~ $ ps axf | grep lxpanel
 3488 pts/0    S+     0:00              \_ grep --color=auto lxpanel
```

一部の環境のみ発生するようなのだが、以下の方法で解決することができた。

```
# pi@raspberrypi側で実行
sudo apt remove lxplug-volumepulse

# clean and reinstall pulseaudio
sudo apt-get remove --purge alsa-base pulseaudio
sudo apt-get install alsa-base pulseaudio
sudo apt-get -f install && sudo apt-get -y autoremove && sudo apt-get autoclean && sudo apt-get clean && sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

# fixes user folder permissions
sudo chown -R $USER:$USER $HOME/

# then reboot
sudo reboot 
```

reboot後にプロセスを確認するとlxpanelが起動している状態に！

```
pi@raspberrypi:~ $ ps axf | grep lxpanel
  855 ?        Sl     0:02          \_ lxpanel --profile LXDE-pi
 1501 pts/0    S+     0:00              \_ grep --color=auto lxpanel
```

再度VNC接続してみると無事メニューバーが表示されました。

![root_s_X_desktop__raspberrypi_1__と_Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153118/c0b36a0e-6b8a-0684-7374-82ce28b0569e.png)

よかったよかった


## 参考
https://raspberrypi.stackexchange.com/questions/122579/after-fresh-install-of-raspberry-os-the-menu-bar-is-missing-in-tightvnc-session
【資格】組込みエンジニアの資格一覧

# IT
## 基本情報技術者試験
**①概要**
>ITエンジニアとしてキャリアをスタートするには、まず基本情報技術者試験から受験することをお勧めします。しっかりとした基礎を身に付けることにより、その後の応用力の幅が格段に広がります。

**②受験資格**
　なし

**③日程**
 4月 第3日曜日
10月 第3日曜日

**④実施機関**
[IPA　独立行政法人　情報処理推進機構](https://www.jitec.ipa.go.jp/index.html)


## 応用情報技術者試験

**①概要**
> ITエンジニアとしてのレベルアップを図るには、応用情報技術者試験がお勧めです。技術から管理、経営まで、幅広い知識と応用力が身に付き、システム開発、IT基盤構築などの局面で、高いパフォーマンスを発揮することができます。

**②受験資格**
　なし

**③日程**
 4月 第3日曜日
10月 第3日曜日

**④実施機関**
[IPA　独立行政法人　情報処理推進機構](https://www.jitec.ipa.go.jp/index.html)

#組込み
##エンベデットシステムスペシャリスト
**①概要**
> スマート家電、自動運転などあらゆるモノがつながるIoTが進展する中で、ハードウェアとソフトウェアを適切に組み合わせて組込みシステムを構築し、求められる機能・性能・品質・セキュリティなどを実現する組込みエンジニアやIoT系エンジニアを目指す方に最適です。

**②受験資格**
なし

**③日程**
10月 第3日曜日

**④実施機関**
[IPA　独立行政法人　情報処理推進機構](https://www.jitec.ipa.go.jp/index.html)

## システムアーキテクト試験（SA)
**①概要**
> システム開発の上流工程を主導する立場で、豊富な業務知識に基づいて的確な分析を行い、業務ニーズに適した情報システムのグランドデザインを設計し完成に導く、上級エンジニアを目指す方に最適です。

**②受験資格**
　なし

**③日程**
4月 第3日曜日

**④実施機関**
[IPA　独立行政法人　情報処理推進機構](https://www.jitec.ipa.go.jp/index.html)

##ETEC（組込み技術者試験制度）
**①概要**
> 組込みソフトウェア技術者としての知識レベルの指針となるとともに、キャリア指標の一つとなることを目的としている

**②受験資格**
(1)クラス１(ミドルレベル)、クラス２で「500点」以上
(2)クラス２(エントリレベル)、制限なし

**③日程**
随時

**④実施機関**
[組込みシステム技術協会](https://www.jasa.or.jp/etec/)

##OCRES（OMG認定組込み技術者資格試験プログラム）
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

##アジャイルソフトウエア
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

#言語
##C言語検定
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

##Java検定
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

##オラクルJava
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

#品質
##JCSQE
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

#テスト
##JSTQB認定テスト技術者試験
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

#アプリ開発

##android認定試験
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

## HTML5プロフェッショナル認定
**①概要**
>HTML5、CSS3などの最新のマークアップを使って
マルチデバイスに対応したWebコンテンツをデザイン・制作できる。

**②認定条件**
HTML5 レベル1試験に合格すること
**③日程**
随時
**④実施機関**
[特定非営利活動法人エルピーアイジャパン](https://html5exam.jp/outline/)

## HTML5プロフェッショナル認定
**①概要**
>Javascriptなどの最新のマークアップを使ってシステム間連携や最新のマルチメディア技術に対応したWebアプリケーションや動的Webコンテンツの開発・設計ができる。

**②認定条件**
>HTML5 レベル2試験に合格し、かつ有意なHTML5レベル1認定を保有していること。

**③日程**
随時
**④実施機関**
[特定非営利活動法人エルピーアイジャパン](https://html5exam.jp/outline/)

#ハード
##半導体技術者
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

#語学
##TOEIC（L&R）
**①概要**
　リスニングとリーディング
**②受験資格**
　なし
**③日程**
**④実施機関**
[]()

##独検
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()

## コピペ用
**①概要**
**②受験資格**
**③日程**
**④実施機関**
[]()
AutoHotKey 設定メモ

『AutoHotkey』の使い方【入門編・初心者向け】
https://fuchiaz.com/usage-autohotkey/

↑の記事を参考にAutoHotKeyというキーボードのキーの割り当てを変更できるソフトをインストールして使ってみたので、設定の自分用メモです。


```
#InstallKeybdHook
#UseHook
vk1C::LButton
vk1D::LButton
ScrollLock::Send,^v
Ins::Send,^c
F1::Send,^v
```

変換キーにマウスの左クリック
無変換キーにマウスの左クリック
ScrollLockキーにCtrl + V(貼り付け) ---左手でマウス操作時用
InsertキーにCtrl + c(コピー)　---左手でマウス操作時用
F1キーにCtrl + V(貼り付け)
を割り当て。
仮想空間上でアバターに触れるシステム

こんにちは。ナルキタです。

現在私はVRとタッチケアを合わせた研究に携わっています。

今回はその概要を軽く紹介したいと思います。

まず使用機器一覧です。

Oculus Quest 2
Unityインストール済みのPC
Webカメラ
マイク
マネキン
まずは上記の機器を以下の図のように配置します。

![exp_t.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2488482/d25d8823-49a0-2b32-232f-c6885d4b8fe3.jpeg)

上図の様に、ユーザにOculusを装着してもらい、VRアプリを実行します。

この時に、目の前のマネキンと仮想空間上のアバターの座標が合致するように注意します。

座標調整が済んだらVRアプリを実行します。

![Screenshot 2022-01-10 021539.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2488482/2e13300a-2149-afac-9c64-9fef5c55434c.jpeg)


アプリ実行後、ユーザの目の前のアバターが椅子に座ります。ユーザは仮想空間上でアバターに触れたり撫でることができます。仮想空間上の手は、Oculusのハンドトラッキングによって表示されています。

またユーザの手の動きを後ろからwebカメラで撮影し、ハンドトラッキング及び手の座表を取得します。

![Screenshot 2022-01-10 021255.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2488482/9d610371-8feb-c069-ad36-3e3ee352c4c3.jpeg)

上の画像では手の座標を緑の点で示しています

このように、仮想空間上のアバターをユーザが触れたり撫でることができるVRアプリを制作致しました。

手の速度を検出するシステムは少々複雑ですが、それ以外は簡単なアセットで構成されているUnityシーンですので、皆さんもぜひお試しくださいませ。

それでは～
cargo new でgitを使わない（バージョン管理システムを指定する）方法

# vcsオプション
※ cargo version 1.57.0時点です

通常、`cargo new`でプロジェクトを作成すると、`.git`と`.gitignore`が生成されます。（デフォルトでgitを使用するようになっています。）
`--vcs`オプションで使用するバージョン管理システムを変更することができます

```sh
cargo new {PROJECT_NAME}　--vcs {VCS}
```
|`--vcs`で指定する値|バージョン管理システム|
|:-:|:-:|
|fossil|fossil|
|git|git|
|hg|Mercurial (Hg)|
|pijul|Pijul|
|none|未使用|

以下のように`none`を指定すると、`.git`と`.gitignore`は生成されません。

```sh
cargo new {PROJECT_NAME} --vcs none
```

## デフォルト設定
ちなみに、`~/.cargo/config`ファイルを編集することで、デフォルトで使用するバージョン管理システムを設定できるようです。
設定値は`--vcs`オプションで指定するものと同様で、以下のように設定すると、デフォルトでバージョン管理システムを使用しないようになります。

```config:~/.cargo/config
[cargo-new]
vcs = "none"
```
EclipseのGitで「リモートリポジトリ参照を取得できません」と出た

### 環境
```
Ecllipse 2021-12 (4.22.0)
Windows 11
Github 2022/1時点
```

### エラーの状態
Eclipseからリモートリポジトリにpushして、「トランスポートエラー：リモートリポジト参照を取得できませんhttps://github.com******.git 未認証」とエラーが出てきた状態。
![スクリーンショット (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169545/7ad2cd2a-3bc7-5d52-f2a8-8252b25a4adf.png)

## 対処法

未認証とのことなので、接続と認証の確認をする。


### EclipseでEgitのユーザ確認
ウィンドウ＞バージョン管理（チーム）＞Git＞構成を開いてUserが登録されているか確認。
登録されていない場合は、エントリーの追加をクリックして、登録。
キーに`user.name`と入力し、値に自分のGitHubのユーザ名を入力し、追加をクリック。
キーに`user.email`と入力し、値に自分のGitHubで登録したメールアドレスを入力し、追加をクリック。
![スクリーンショット (34).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169545/4404a012-dcf6-d406-f60b-ca12f05f336b.png)


## GitHubの認証情報を確認
通信プロトコルに合った認証方法を使う。
自分はHTTPSを使うので、個人アクセストークン認証を利用。
個人アクセストークン認証のやり方は公式に載っているので[こちら](https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)を参照。
発行された個人アクセストークンはどこかにメモして置いて下さい。

Eclipseを開いて、プロジェクトで右クリック、チーム＞リモート＞プッシュを選択。
接続は`https`を選択。
ユーザは自分のGitHubのユーザ名をパスワードは先ほど発行したアクセストークンを入力して、次へをクリック。

![スクリーンショット (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169545/f9082a1e-16b0-8aa9-1229-fbde33873382.png)

### 参考文献
- [EclipseのGitで「Can’t connect to any repository: https://XXXXX.git (https://XXXXX.git: 未認証) と出た時の解決方法](https://boukenki.info/eclipse-git-push-cant-connect-to-any-repository-%E6%9C%AA%E8%AA%8D%E8%A8%BC/)
- [一番分かりやすい OAuth の説明](https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be)
[iOS初学者向け]UILabelとは？

##UILabelとは？
ドキュメントの文言をお借りすると、1行以上のテキストを表示するビューのことです。

##詳細
ドキュメントに色々書かれていて、何のことかわかりにくいかなと個人的には思ったのですが、要はテキストを表示するビューのことです。

Android的には、TextView的な。

こちらの型のプロパティを宣言し、さまざまなプロパティやメソッドを用いて値をセットし望みのViewにしていきます。

部分的な具体例ですが、下記を参考にしてみて下さい。

```swift
private let hogeLabel: UILabel = {
     let label = UILabel()
     label.text = "文字をセット"
     label.font = UIFont.systemFont(ofSize: 16.0)
     label.textColor = UIColor.red
     return label
}()
```

#終わり
他にも色々なプロパティがあるので、調べながら使うと細かい調整ができそうです。

##参考
https://developer.apple.com/documentation/uikit/uilabel/
Mac版ExcelではWindows版と違う方法を使い外部データを取り込む

##MacとWin版Excelの差

Excelには外部データの取り込み機能があります。
Windwos版Excelでは、多種のソースから取り込めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/c4c945dc-200d-07aa-cfbb-f23792daa772.png)

一方、Mac版はまだ開発が進んでいないようで、Windows版に比べて選択できるソースが少ないです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/33ed1245-38c8-006c-8f00-d4604874c185.png)

と、Web上のファイルを取得するために「https」を指定することもできません。

##クエリファイルを用意

Mac版の場合、「クエリファイル」が必要になります。
拡張子「iqy」ファイルを探し、元々あるファイルをコピーし、テキストエディタでURLを記載し保存しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/3b24446a-e3ba-8557-863f-594a19f6ac85.png)

上記では、csvファイルの取得先として

>https://covid.ourworldindata.org/data/owid-covid-data.csv

と記述しています。
このデータは「Our World in Data」が提供しています（後述）。

##Excelからクエリファイルを実行

Excelでこのクエリファイルを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/f44dd714-1e63-57d2-5ea1-89af55a27528.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/72df14fb-75a7-c23c-1c96-62012367755b.png)

「データ取り出し」を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/639b3e3a-a40c-3ee3-cb50-4d3699c6466b.png)

##データ区切りで整形

Excelのシート上に取り出せます。
ただ、カンマ区切りが処理されず、1列にまとまってしまいました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/e05cc25b-49c8-bc94-aae8-e3a344956390.png)

パラメータや文字コードなどを指定すれば処理されるかと考えましたが、今回はそこまで調べられませんでした。
Excelのデータ区切りの機能を使い、分割しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/2b79297e-2c8a-33fe-2811-254a71a4b6b8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/93a62a4c-cbcc-d287-4d7f-39af82155314.png)

以降、「データ」→「すべて更新」でデータは更新できます。
ただし、更新毎にデータの区切り操作が必要です。
Windows版が持つ「Power Query エディター」もないので、外部データ取り込みのメインにMac版は使いにくいのが現状です。
Windows版同等の機能を装備する日を待ち望みます。

##Our World in Data

同サイトは世界中の様々なデータを集めています。
[Wikipedia](https://en.wikipedia.org/wiki/Our_World_in_Data)を見ると、オックスフォード大学のチームがベースになっているそうです。

https://ourworldindata.org/covid-vaccinations

NHKなども同サイトのデータを活用しています。

>Our World in Dataの集計で接種回数が上位18番目までの国や地域と日本・韓国のデータを表示しています。
(NHKの「世界のワクチン接種状況」サイトから)

https://www3.nhk.or.jp/news/special/coronavirus/vaccine/world_progress/

**了**
NUI とは

## 勉強前イメージ

なんかで文字だけ見たけど、内容知らぬ・・・

## 調査

### NUI とは

Natural User Interface の略で、
コンピュータ等の操作について自然な直感的な動作で入力などするもののことを言います。
例えばタッチパネルや音声操作などが挙げられます。
東京藝術大学が「ナチュラルインタフェースに関する調査」で、意識調査を実施していますが、
NUIを人間の五感や人間が自然に行う動作によって機会を操作する方法 と定義をしております。

### CUIとGUI、UIを再確認

- CUI

Character User Interface の略で、
ディスプレイに文字が表示され、キーボードの文字入力のことを指します。
テキストデータのみ入力されているUIになります。

- GUI

Graphical User Interface の略で、
画像やアイコンなどで表現されるUIで直感的にわかりやすい見た目になっています。
普通のPCの操作はGUIになります。

- UI

上記のCUIもGUIも含まれたものとしてUI(User Interface)があります。
コンピュータち人間の間で情報をやりとりする方法の総称になります。
NUIもUIに含まれます。

## 勉強後イメージ

そういえば考えたこともなかったけど、これも音声入力とかもコンピュータの操作方法の一つだよね・・
音声とかスマホもNUIになるのかな。。
あとはキネクトもNUIになるらしい

## 参考

- [NUI 【Natural User Interface】 ナチュラルユーザーインターフェース](https://e-words.jp/w/NUI.html)
- [NUI](https://www.sophia-it.com/content/NUI)
- [【初心者向け】CUIとGUIの違いとその特徴。なぜ使い分ける必要があるのか。](https://tcd-theme.com/2019/12/cui-gui.html)
Visual StudioのNuGetで依存関係をインストールしているのに参照エラーが出た

Xamarin.Forms 環境構築時をしている時に、NuGetでインストールされているのに、
何故か参照エラーが出ていました。

解消できたので備忘録を残します。

# 環境
- Windows10 Home
- Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz   3.40 GHz
- Visual Studio community2022

# 依存関係がインストールされているか確認
ソリューションエクスプローラーから「依存関係」を見ても、
ツール > NuGetパッケージマネージャ > ソリューションのNuGetパッケージの管理　を見てもインストール済みであることを確認。

![install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399610/8e38e778-6002-633f-8117-15e012762c36.png)


# エラー内容
しかしなぜか以下のエラーがズラズラ出ていました。

```
エラー	CS0246	型または名前空間の名前 'System' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
エラー	CS0246	型または名前空間の名前 'Xamarin' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
エラー	CS0246	型または名前空間の名前 'Xamarin' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
エラー	CS0246	型または名前空間の名前 'ContentPage' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
エラー	CS0518	定義済みの型 'System.Void' は定義、またはインポートされていません
エラー	CS0518	定義済みの型 'System.Void' は定義、またはインポートされていません
エラー	CS0518	定義済みの型 'System.Object' は定義、またはインポートされていません
エラー	CS0518	定義済みの型 'System.Object' は定義、またはインポートされていません
エラー	CS0246	型または名前空間の名前 'EventArgs' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
エラー	CS0518	定義済みの型 'System.Object' は定義、またはインポートされていません
エラー	CS0103	現在のコンテキストに 'InitializeComponent' という名前は存在しません
エラー	CS0518	定義済みの型 'System.Object' は定義、またはインポートされていません
エラー	CS0103	現在のコンテキストに 'Launcher' という名前は存在しません
エラー	CS0518	定義済みの型 'System.String' は定義、またはインポートされていません
エラー	NU1101	パッケージ Xamarin.Essentials が見つかりません。ソース Microsoft Visual Studio Offline Packages には、この ID のパッケージが存在しません。
エラー	NU1101	パッケージ Xamarin.Forms が見つかりません。ソース Microsoft Visual Studio Offline Packages には、この ID のパッケージが存在しません。
エラー	NU1101	パッケージ Xamarin.Essentials が見つかりません。ソース Microsoft Visual Studio Offline Packages には、この ID のパッケージが存在しません。
エラー	NU1101	パッケージ Xamarin.Forms が見つかりません。ソース Microsoft Visual Studio Offline Packages には、この ID のパッケージが存在しません。
エラー	NU1102	バージョン (>= 2.0.3) のパッケージ NETStandard.Library が見つかりません
```

# 解決方法
困り果てて色々検索していたところ、以下の記事を発見。

https://stackoverflow.com/questions/49512140/visual-studio-and-xamarin-unable-to-find-packages

一応こちらでも手順を残しておきます。

## 手順
- ツール > NuGet パッケージ マネージャー > パッケージ マネージャー設定 から 「NuGet パッケージマネージャ」 を開く
- 「+」 をクリック > 以下を追加して「更新」をクリック

```
名前(N): nuget.org
ソース(S): https://api.nuget.org/v3/index.json
```

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399610/fc9b350d-bf3a-9a8e-2830-0f58069fdeb6.png)

- パッケージソース > 「すべてのNuGetキャッシュをクリア」をクリック

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399610/5ef07bc6-3479-96d4-b67c-beaccaeff7f1.png)

- Visual Studio を再起動

著者の環境では上記手順でエラーが解消されました。

以上ご拝読有難うございました。
[iOS初学者向け]UIViewとは

#UIViewとは
iOSアプリにおいて、長方形の画面全体を管理するユーザーインターフェースのことです。
他のビューオブジェクトを、この範囲内でレンダリングします。

ドキュメント曰く使い方としては、インスタンス化して固定の背景色を表示させたり、継承させたサブクラスでカスタムさせたビューを作成するようです。

#役割
- UIKitなどのフレームワークを用いて、ビューオブジェクトを描画

- サブビュー達のサイズを調整
サブビューの親ビューは一つだけです。

- 継承元にUIResponderがあるため、イベント処理ができる

#参考
https://developer.apple.com/documentation/uikit/uiview
Laravelフォルダを簡単な表にしてみた

###Laravelのフォルダ
簡易一覧表

| フォルダ名| 内容 |
|-----|--------------------------------------------|
|app|アプリケーションのプログラム部分をまとめている。(**Controllers**フォルダ、**Model**がある。)|
|bootstrap|アプリケーション実行時、最初に処理される内容がまとめられている
|config|設定関係のファイルがまとめられている。|
|database|データベースに関するファイルがまとめられている。(**factories・migrations・seeds**フォルダがある。)|
|public|公開フォルダ。Javascriptなどがまとめられている。(css・jsフォルダがある。)|
|resources|リソース関係の配置場所。(**views**フォルダがある。vue.jsの中身を配置する場所。)|
|routes|ルートの保存場所。(**web.php**がある。)|
|storage|ファイルの保存場所。ログファイルがある。|
|tests|ユニットテスト関係のファイルがある。|
|vendor|フレームワークの本体がある。(laravel/framework/src/illuminateがある。)|

※現時点で筆者がよく使うフォルダやファイルを太字にしております。
【PHP】htmlspecialchars()の使い方

#背景
会員登録画面を作成中に出てきたので、備忘録かねて作成しました。
macOS : Monterey
PHP : 8.1.1

#エスケープ処理について
htmlspecialchars()はエスケープ処理を行う関数であるが、まずエスケープ処理ってなんだってなったので調べてみた。
マークアップ言語のHTMLに限らず、プログラミング言語ではその言語にとって特別な意味を持つ記号があり、それをエスケープシーケンス（エスケープ文字、特殊文字）と言う。例えばHTMLでは < とか > とかが該当する。
記事に文章を入力するときなどに < や > を使おうとすると、通常これらの文字は、HTMLを動かす為に必要な記号だと判断され上手く表示されない。
そのため、入力フォームなどで < や > を文字として変換するための処理が用意されており、その処理のことをエスケープ処理という。

#htmlspecialchars（）の使い方
```php:htmlspecialchars()の引数
htmlspecialchars(変換したい文字列, フラグ（変換するルールみたいなもの）, エンコード,  既存のhtmlエンティティをエンコードするか否か(無くてもいい))
```

```php:htmlspecialchars()使用例
htmlspecialchars($memo, ENT_QUOTES, "UTF-8")
```
第一引数 : エスケープ処理したい文字列
第二引数 : デフォルトでは、ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401　詳しくは公式ドキュメント参照
第三引数 : UTF-8などのエンコードを指定
第四引数 : 一つのコード内で、htmlspecialchars()を二重にかける場合などに、変換した文字をさらに変換することを防止（勉強不足ですいませんが、使い方がよく分かってません）
戻り値は、変換後の文字列となる。

因みに、このメソッドはクロスサイト・スクリプティング脆弱性を防止するために重要なメソッドになる。

#参照資料
1.PHP公式ドキュメント
https://www.php.net/manual/ja/function.htmlspecialchars.php
2.エスケープ処理について
https://www.f5.com/ja_jp/services/resources/glossary/escape-processing
3.第四引数について
https://blog.dododori.com/create/program/htmlspecialchars/
4.『体系的に学ぶ 安全なWebアプリケーションの作り方』 P120~137
https://wasbook.org/
mySqlではtimestampにNullを入れられない

初投稿になります。
Udemyの[こちら](https://www.udemy.com/share/104N8g3@lKjwibOOW8wJEfVdhyKoDtP2jeghxhDe3AepXnkal6YJBh-ll792a-BWTMK5DnGsqQ==/)の講座で一通り勉強したので、仕事であったら便利そうなWebアプリを作ってみようと思っています。
プログラミングの勉強を始めたきっかけはいつか別記事で書きたいと思っています。
# つくろうとしている物
弊社には顧客管理や見積請求作成ソフトがありデータがリンクするようになっているのですが、リース器具管理だけ独立してexcelデータで、そこの管理を任されているので業務効率化とプログラミングの勉強を兼ねて`リース管理アプリ`を作成しようと思いました。
# 躓いたところ
1. リース商品は契約開始日や更新日、解約日など日付を入力する部分がたくさんあります。
講座を写径しながら、自分で作りたいものに作り替えいくとエラーにぶち当たりました。
エラーに慣れていなくてまったく読みもせずに、どこを写し間違えたかと見直し→書き直し→migrateをループしていました。ある程度したらエラーアレルギーも収まり、ちょっとずつ読めるようになりました。（これとっても不思議！）記事にするつもりはなかったのでエラー文は残してないのですが、テーブル名とデータの型名、NOT NULL ABLEが読み取れて`TIMESTAMP型`にNullは入れられないことに気づきました。
2. TIMESTAMPにNULLが入れられないということはMySqlでググれば解決策見つかりそうと判断。ついでにphpで書いていると思ったので（~~今現在も何の言語を書いているかよくわかっていない~~）「TIMESTAMP PHP NULL ABLE」で検索してもズバリな記事は見つからず途方に暮れてしまいました。

# ->nullable()で解決
一人で気ままに学習するいいところとして、好きな時に切り上げられる点だと思います。
息抜きに散歩していると「laravelで検索したらわかるんじゃね？」と関係ある要素を考えれば至極当たり前なことに気づき、わくわくしながらググるとサクッと答えが出てきました！といっても日本語の情報ではなくEnglishだったので記事にさせていただきました。

```
$table->timestamp('カラム名')->nullable();
```
このように書くことによりNullを許可した`TIMESTAMP型`でカラムを作ることができます。
# あとがき
なぜ、TIMESTAMPにNullが許可されていないのか。
MySqlの`TIMESTAMP型`には[2038年問題](http://taustation.com/laravel-timestamps-2038-problem/)があるかららしいです。
Nullを許可する情報が少なかったのはこのせいなのかもしれません。
せっかく解決策が分かったけど、`DATETIME型`で作り直そうかなｗ

プログラミングもマークダウンもブログを書くことも初心者なのでこうしたほうがいいとか、間違っている点などあればご指摘お願いします。
Windows 上で Gparted が使いたい！ (VHD も OK！)

## 結論
WSL2 でマウントして WSLg を用いて Gparted を使いましょう．

## 注意点
- USB メモリに対しては使用できません．(https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-mount-disk)

## 手順
1. Windows 11 をインストールします． Windows 10 上では WSLg が使えないので別途 VcXsrv を導入するなどが必要です．
2. PowerShell で `wmic diskdrive list brief` を実行します．
    実行すると以下のように表示されると思います．

    ```
Caption       DeviceID            Model    Partitions  Size
hogehogehoge  \\.\PHYSICALDRIVE0  fugapiyo x           xxxxxxxxxxx
hogefugahoge  \\.\PHYSICALDRIVE1  piyopiyo x           xxxxxxxxxxx
fugafugahoge  \\.\PHYSICALDRIVE2  piyohoge x           xxxxxxxxxxx
    ```



3. マウントしたいディスクを決めたら `sudo wsl --mount \\.\PHYSICALDRIVE(数字)`でマウントします． gsudo が入っていない場合は管理者権限のあるプロンプトで実行してください．

4. WSL のターミナルで `lsblk` を実行して選択したディスクが増えていることを確認してください．
4. WSL のターミナルで `sudo gparted` を実行します．
4. Windows 上で gparted が起動しました．めでたしめでたし．

## 付録 VHD をマウントする
VHD は ディスクの管理からマウントできます．マウント後は通常のディスクと同様に扱えます．
プログラミング初心者が書いたネットワーク周りのこと①

はじめに
--------
エンジニア転職を目指して勉強しているのですが、Twitterや現役エンジニアの人の話を聞いていると
ネットワーク周りのことも勉強しておかなければ現場に入った後についていけないとの意見をよく見かけます。

という訳でよく耳にするけど内容は説明できないなといったネットワーク周りの単語について
改めて調べてみましたのでここに残します。

* IPアドレスとポート番号
* URLとドメイン
* DNS
* HTTP
* HTTPS
* HTTPメソッド
* SSL/TLS

IPアドレスとポート番号
----------------
**IPアドレス**
インターネットに接続されたコンピュータを特定し、データの行き先を管理するための識別番号
インターネットにおいてIPアドレスは世界中でたった1つだけであり、**「住所」**のようなものです

**ポート番号**
コンピュータが提供するサービスを指定するためのもの
ポート番号とはコンピュータの内部にある各サービスを識別するための番号であり
マンションなどで言う**「部屋番号」**に当たります。
ポート番号は「0~65535」までの数字で、範囲によって用途が定められています。
一般的にWebサーバーであれば80番といったようにポート番号が決まっております。

URLとドメイン
----------------
私たちがWebサイトを閲覧する際は**「http://example.com/sample.html」**といった文字列を
使いますが、この文字列を**「URL」**といいます。

URLの細かい内容は以下の通りです。
**・http** ファイルを取得する方法の指定
**・example.com** ファイル取得先のサーバーを指定
**・sample.html** 取得するファイル名

つまり...
**「HTTP」プロトコルを利用して「example.com」サーバーにある「sample.html」ファイルを取得する**
という意味になります。

また、ここで登場した**「example.com」**は**ドメイン**と呼ばれる文字列であり
数字で表記される**IPアドレス**の別名として利用されます。

DNS
----------------
ドメインは文字列で記述されるため私たちにとってはわかりやすいものですが
インターネット上におけるコンピュータ同士の接続にはあくまでもIPアドレスが必要となります。
そしてこのドメインをIPアドレスに変換する仕組みを**DNS(Domain Name System)**と呼びます。

DNSではドメインとIPアドレスが紐づいて管理されているため、DNSを利用することで
ドメインからIPアドレスを知ることができます。

HTTP
---------
Webページが表示される場合は、WebブラウザからWebサーバーにコンテンツを要求し
Webサーバーが要求されたコンテンツをWebブラウザに送信するというやりとりが行われます。

このコンテンツを送信するためのやりとりの手順と、やりとりするメッセージの書式は世界共通の仕様として決められています。

その世界共通のコンテンツをのやりとりの手順を**HTTP(HyperTextTransferProtocol)**と言います。

**クライアント(Webブラウザ)とサーバー(Webサーバー)間のやりとり**

1.　Webブラウザのアドレス欄にURLを入力、あるいはWebサイト内のリンクをクリック
2.　URLやリンク情報に基づいてWebサーバーに対してデータを要求
3.　Webブラウザより要求を受け取ったWebサーバーは要求内容を解析
4.　解析した結果により、要求されたデータをWebブラウザへと応答
5.　WebブラウザはWebサーバーより受け取ったデータを解析し、Webページとして表示

HTTPS
---------------
Webサイトを通じてショッピングやチケット予約などをする方も多くいると思いますが
中には「なりすましサイト」といったサイトもあり、個人情報が盗まれる危険性もあります。
そういった危険から大切なデータを守る仕組みが**HTTPS**と呼ばれます。

HTTPSとは**HTTP over SSL/TLS**の略でHTTPの通信において、暗号化方式である
**SSL(Secure Sockets Layer)**や**TLS(Transport Layer Security)**を利用することで
Webサイトを安全に使うことができます。

WebサイトでIDやパスワードなどの個人情報を入力する際には**HTTPS**が使われているかをしっかり確認することが大切です。
大抵の場合はURLの隣に**鍵のアイコン**が表示されています。

まとめ
----------
実際に調べてみると日常生活の中では聞いたことがあるけど意味までは知らない単語が沢山あり
改めて勉強になりました。
実務をやっていく上ではセキュリティ面などが非常に重要になってくると思いますので
引き続きネットワークやインフラ周りの知識もインプットしていかなければなと感じました！

参考記事
-----------
https://www.amazon.co.jp/%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E5%9B%B3%E8%A7%A3%E5%BC%8F-%E3%81%93%E3%81%AE%E4%B8%80%E5%86%8A%E3%81%A7%E5%85%A8%E9%83%A8%E3%82%8F%E3%81%8B%E3%82%8BWeb%E6%8A%80%E8%A1%93%E3%81%AE%E5%9F%BA%E6%9C%AC-%E5%B0%8F%E6%9E%97-%E6%81%AD%E5%B9%B3/dp/4797388811

→エンジニアを目指す人は一冊持っておいて損はないと思います。。。！！
【Heroku】無料で独自ドメインを適用しSSL対応する手順【Cloudflare】

# 概要
Herokuへデプロイしたアプリケーションへの独自ドメイン適用とSSL対応についてまとめます。

# 前提条件
- アプリケーションはHerokuへデプロイ済み
- お名前.com等で独自ドメインを取得済み(今回の例ではお名前.comで取得)
- Cloudflareのアカウントを作成済み

# 手順
※取得したドメイン名はexample.comと仮定します。

1. Herokuへ独自ドメインの追加
2. Cloudflareへ作成したドメインの追加
3. お名前.comでネームサーバーの入力

### 1.Herokuへ独自ドメインの追加
https://devcenter.heroku.com/ja/articles/custom-domains

基本的にこちらの公式ドキュメント通りに進めば問題ありません。

#### 1-1. heroku domains:add
```
heroku domains:add example.com
```
まず、herokuコマンドが実行できるディレクトリでコマンドを実行します。

下記のエラーが発生した場合はクレジットカードの登録が必要となります。
https://devcenter.heroku.com/categories/billing

```
 ›   Error: Please verify your account in order to add domains (please enter a credit card) For more information, see https://devcenter.heroku.com/categories/billing Verify now at 
 ›   https://heroku.com/verify 
```
※Herokuは独自ドメインでのSSL利用は有料ですが、独自ドメインの使用自体は無料のため、この時点での登録では料金が発生しません。(2022/01/09現在)

ちなみに、Personal>アプリケーション名>Setting>Domains のAdd Domainからでも追加できます。

#### 2-2. heroku domains
```
heroku domains
```

上のコマンドを実行し、DNS Targetをコピーしておきます。こちらは後ほどCloudflareで使用します。

### 2. Cloudflareへ作成したドメインの追加

#### 1-1. ドメインの登録
![スクリーンショット 2022-01-09 20.55.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637441/28878a22-3bbb-682d-f8a0-e6a135a05607.png)

ドメインを入力し、サイトを追加ボタンをクリックします。プラン選択画面が表示されるので、freeを選択します。
![スクリーンショット 2022-01-09 21.06.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637441/eb474b90-5c04-24c0-aed4-332a8fa14453.png)

青色のレコードを追加ボタンからレコードを追加します。
タイプはCNAME、名前には取得したドメイン、ターゲットには先ほどコピーしたDNS Targetを貼り付けます。プロキシステータスにはチェックを入れておいてください。

![スクリーンショット 2022-01-09 21.11.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637441/621fa66b-ea6c-a8f0-90af-e2d1f1f7087b.png)

Cloudflare ネームサーバーに２つネームサーバーがあるので、どちらもコピーしてください。次の手順で使用します。

### 3. お名前.comでネームサーバーの入力

![スクリーンショット 2022-01-09 21.14.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637441/838c1fba-c489-e1ec-590b-c6225e0ff0b6.png)

ページ下部の2.ネームサーバーの選択からその他のサービスを選択し、先ほどCloudflareでコピーしたネームサーバーを貼り付けてください。

これですべての手順は完了です。

# まとめ
無料で独自ドメインを適用しSSL対応する手順をまとめました。注意しなければならないのは、この手順でSSL化するのはブラウザとCloudflareの間のみです。chromeの非SSLページで表示される警告の回避などには十分と考えられますので、参考になれば幸いです。

https://www.serversus.work/topics/pkvfo9ulrrh4vnu5aotn/
【Java文法】配列

こんにちは、コイキングです。

本記事では'配列'について、説明したいと思います。

******

#1．配列とは？
配列は同じデータ型の変数が順次的に格納されているような形のデータ構造です。
数が決まっている同じデータ型のデータを扱う時に配列が使われます。


#2．配列の宣言と初期化
## 1) 配列の宣言

```
// データ型 [] 配列名; 
int [] arrayInt;
```

## 2) 配列の初期化する(配列の長さを指定)

```
// 配列名 = new データ型 [長さ];
arrayInt = new int[3];
```

## 3) 配列の宣言と初期化を同時にする(配列の長さを指定)

```
// データ型 [] 配列名 = new データ型 [長さ];
String [] arrayStr = new String[3];
```

## 4) 配列の宣言と初期化を同時にし、配列にデータを入れて生成
### - 方法1

```
// データ型 [] 配列名 = new データ型[]{要素1, 要素2, 要素3...}
char [] arrayChar = new char[] {'A','B','C'};
```

### - 方法2
```
// データ型 [] 配列名 = {要素1, 要素2, 要素3...}
byte [] arrayByte = {1, 2, 3};​
```

#3. 配列に値を入力・出力する
配列の**要素にアクセスするためにはインデクス(index)番号を知っておく**必要があります。
配列の**インデクス番号は0から初めて'配列名[インデクス番号]'**のように配列の要素にアクセスできます。

```
System.out.println(arrayInt[0]);  // 0 int配列の デフォルト値は0です。.
System.out.println(arrayInt[1]);  // 0 
System.out.println(arrayInt[2]);  // 0 

// 配列の各空間に値を代入
arrayInt[0] = 3;
arrayInt[1] = 2;
arrayInt[2] = 1;

// length配列の長さの値は入っている。
for (int i=0; i<arrayInt.length; i++) {
    System.out.println("配列の["+i+"] 番目インデクスの要素の値 : "+ arrayInt[i]);
}
```

#4. 多次元配列の宣言と初期化

多次元配列は**"データ型 [][] 配列名 = new [上位次元の長さ][下位次元の長さ];"**のように宣言と初期化ができます。

※ 5 * 5の大きさの2次元配列は以下のような空間がメモリーに割当されます。
 [0,0][0,1][0,2][0,3][0,4] 
 [1,0][1,1][1,2][1,3][1,4] 
 [2,0][2,1][2,2][2,3][2,4] 
 [3,0][3,1][3,2][3,3][3,4] 
 [4,0][4,1][4,2][4,3][4,4] 

## 1) 宣言と配列の長さを指定する

```
// データ型 [][] 配列名 = new [上位次元の長さ][下位次元の長さ];
int [][] MultiArrayInt1 = new int[5][5];
```

## 2) 宣言と初期化を同時にする

### - 方法1

```
int [][] MultiArrayInt2 = new int[][] {
    {1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15}
};
```

### - 方法2

```
int [][] MultiArrayInt3 = {
    {1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15}
};
```

# 4. 多次元配列に値入力・出力する
多次元配列の要素にアクセスするためには**'上位次元のインデクス番号'と'下位次元のインデクス番号'を知っておく**必要があります。
'配列名[上位次元のインデクス番号][下位次元のインデクス番号]'のように配列の要素にアクセスできます。

```
System.out.println(MultiArrayInt1[0][0]);  // 0
System.out.println(MultiArrayInt1[0][1]);  // 0 
System.out.println(MultiArrayInt1[0][2]);  // 0 
MultiArrayInt1[0][0] = 3;
MultiArrayInt1[0][1] = 2;
MultiArrayInt1[0][2] = 1;
		
for (int i=0; i<MultiArrayInt1.length; i++) {
    for (int j=0; j<MultiArrayInt1.length; j++) {
        System.out.println("配列の ["+i+","+j+"] 番目 インデクスの要素の値 : "+ MultiArrayInt1[i][j]);
    }
}
```

******
※ 例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_07_Array.java


※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/79?category=1068655
【実践】fileコマンドの使い方

# :page_facing_up:fileコマンドとは
ファイルタイプを識別するものです！
拡張子の有無にかかわらず調べてくれます
CTFではよく使うコマンドではないでしょうか？
#:pushpin:使い方
使い方はシンプルで以下のようにコマンドを入力するだけです

```
$ file [解析したいファイル]
```

#:pencil2:実際に使ってみる

今回使っているファイルはすべてGitHubに載せています。手元でも動かしてみてください！

https://github.com/ocha98/Qiita_file_command

###:computer:実行環境
- Windows10 Pro
- WLS2 Ubuntu(20.04)

##file1の解析：テキストファイル

```
$ file file1
```

###実行結果
```
file1: ASCII text
```
※環境によっては`with CRLF line terminators`が追加で表示されるかもしれません
出力よりこのファイルはアスキーコードで書かれたテキストファイルであることが分かりました！
catで内容を見てみます

```
$ cat file1
Hello World
```
##file2の解析：実行ファイル(Windows)

```
$ file file2
```
###実行結果

```
file2: PE32+ executable (console) x86-64, for MS Windows
```
 `PE32+ executable`の部分は実行ファイルの形式を示しています。`PE`とはwindows上で使用される実行ファイルです
`executable`は「実行可能」という意味の英単語ですね！
`(console)`とあることからコンソールを利用することが分かります

##file3の解析：実行ファイル(Linux)
```
$ file file3
```

###実行結果
```
file3: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6bfad10dfc5d45f9218806fe0c7cc6e6d9049ddc, for GNU/Linux 3.2.0, not stripped
```
さっきよりも少し長いですね。。。
`ELF`とはLinuxなどで用いられる実行ファイル形式です。よって、このファイルはLinux上で実行されるものであることが分かります！
`LSB`とはエンディアンがリトルエンディアンであることを示しています。エンディアンとはバイトオーダーのことです
末尾の`not stripped`は実行ファイル内のシンボル情報が削除されずに残っていることを意味します
シンボル情報が残っていると内部の関数名や変数名の情報が得られることがあります！

####実際に実行することもできます

```
$ ./file3
Hello World
```

##file4の解析：画像(PNG)
```
$ file file4
```
###実行結果
```
file4: PNG image data, 200 x 200, 8-bit/color RGB, non-interlaced
```
fileコマンドでは画像ファイルであることも特定できます！
今回の場合は`PNG`形式の`200 x 200`の画像ファイルであることが分かりました！

中身の画像は以下のものです
![file4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604364/78e200c0-7401-6cfd-6ab4-335e6a4f566e.png "中身の画像")

#:pencil:終わりに
`file`コマンドでは様々なファイルの種類を特定することができることが分かったと思います！
実際に手元で色々なファイルでどのような出力が出るか試してみてください！

より詳しいことはここ↓に乗っています

https://www.ibm.com/docs/ja/aix/7.2?topic=f-file-command

#参考文献
碓井利宣・竹迫良範・廣田一貴・保要隆明・前田優人・美濃圭佑・三村聡志・八木橋優(2015)『セキュリティコンテストチャレンジブック：CTFで学ぼう！情報を守るための戦い方』マイナビ出版
【Python】Airflow ローカルで立ち上げ

#### 概要
Pythonのワークフロー管理ツールであるAirflowをローカルPCで立ち上げまで行う。

#### Airflowとは
はじめにAirflow とは何かを説明する。
**正式名称**: [Apache Airflow](https://airflow.apache.org/)
Airflowとは、Airbnbではじめ開発がスタートされた一連のタスクフローを管理できるOSSのPythonフレームワークである。
もとは、FaceBook社内で使われていたDataswarm（コード非公開）と呼ばれるワークフロー管理ツールの開発者、Maxime BeaucheminがAirbnbに移った後、開発を始めたソフトウェアであるためその時の名残が大きいようである。
各Taskは、Digというファイル内で記述され、一連のワークフローの依存関係もファイル内にPythonコードとして定義する。
OSS自体もPure Pythonで書かれている。
GUIツール上からワークフローの設定変更や実行など行え、比較的UIも洗練されている。
Python上で分岐処理の定義をしておけば、一連のフローをGUI上で確認することもできて便利。
フローをっコーディングで記述できるので拡張性が高い。


##### 環境

|  環境  |  バージョン  |
| ---- | ---- |
|  OS  |  macOS Mojave 10.14.6 |
|  Docker compose  | 1.29.1  |
| Airflow | 2.2.3 | 


#### 立ち上げの流れ
基本、公式ドキュメントからDockerでの実行方法をベースに立ち上げを行う。 

- [Running Airflow in Docker](https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html)

##### 気をつけるべきこと
Docker Desktop の設定から割当可能なMemoryを上げる。
デフォルトでは、2GBであるが、最低4GB, 推奨8GBまであげないとAirflowが立ち上がらない。

自分の場合は、12GBまで上げました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239544/32512171-2e09-977e-10ed-2f7d5b232773.png)
以下はOSがLinuxのとき実行するとあるがmacOSにおいても実行しないと正常にDockerコンテナが立ち上がらない。

```
echo -e "AIRFLOW_UID=$(id -u)" > .env
```


ブラウザ上でアクセスする

```
http://localhost:8080/
```

#### 所感
前処理や無数のパラメータ調整が必須で管理が煩雑になりがちな機械学習モデルの実験管理に役立ちそう。研究系のタスクがメインの方面でも使われそう。
機械学習系の現場の本番環境においても、実データを前処理してETLにデータを突っ込む一連の処理の流れをPythonベースで定義できるので重宝しそう。
Web開発の現場でもバッチ処理を諸々管理できるので、いろんな使いみちがありそう。
ローカルだと少し重め。問題あるレベルではないが。

これからより触って理解を深めていきたいところです。
XAMPPインストールした

# 1. 概要

このページは、XAMPPのインストール方法についてまとめたページである。
XAMPPを今更ながらインストールしたので備忘録

以下のページからインストール可能。
[Apache Friends](https://www.apachefriends.org/jp/index.html)

自分はWindowsなので、Windowsを入れている。この後の説明もWindows10での説明である。
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/9452f3c8-3fe2-cad8-e3c5-f56f378e431f.png)

---

# 2. 手順

### 1. 質問が出るので[Yes]を押す

「ウイルス対策ソフト入れてたら、インストールが遅くなったり、干渉されるかもしれないよ」という警告。

ちゃんと動かなかったらその時はその時でインストールし直したらいい気がするので、[**Yes**]を押す。

![Untitled 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/13c0c3e2-aecf-a09c-2e75-75a3f2a0a3bf.png)

### 2. 警告が出るので[OK]を押す

「**XAMPP**の動作が制限される場合があるので、**”C:\Program Files (x86)"**にインストールする事はやめましょう」という警告。

でもデフォルトで、**C:\Program Files (x86)**に入ることはないので、特に気にせず[**OK**]を押す。

![Untitled 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/34a0e203-c099-9ff9-4595-8b45d42ce539.png)


### 3. デフォルトのまま[**Next**]を押す

![Untitled 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/4aa36b50-ca8b-64b8-11f9-015bfdbc041e.png)


### 4. デフォルトのまま[**Next**]を押す。

場所を変える場合、「**C:\Program Files (x86)**」には入れないようにする。変えなくていいと思うけど。

![Untitled 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/c79d1d79-7705-44ac-5690-7f3f308ce6fe.png)


### 5. 英語で[**Next**]を押す

英語かドイツ語かの二択しかない。

![Untitled 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/88016009-3667-9df2-05c5-7a25f7235310.png)


### 6. 面倒なのでチェック外して[Next]。

「XAMPPについてもっと勉強しよう！」みたいなことを書いている。

![Untitled 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/079203c2-f5d6-61ee-4765-2352690d3acd.png)


### 7. [**Next**]を押す

![Untitled 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/c43afff6-c4db-ec9b-bd93-5fec9ef53265.png)


### 8. インストールが始まるので、終わるまで待つ

![Untitled 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/1157fcf4-830a-7573-d33a-38830bd943d8.png)


### 9. 終わり。そのままXAMPP使いたいので、チェック入れておく

![Untitled 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/02435151-2b0b-fca2-dc44-c7d207007b4f.png)

### 10. インストールできた

![Untitled 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528682/e8ef62fe-93ef-8d5b-c6dd-e2eca45c7ef1.png)
冪集合モノイドの例を見る

この記事を読んだ感想です。
https://tnomura9.exblog.jp/28403476/

ちょうどモノイドについて勉強してわかってきた気がするので、具体例をたくさん見て理解を深めていきたいです。

記事に書いてあること
(G,+,+の単位元)=(任意の集合Sの冪集合,和集合(U),{})
は、可換モノイドをなす。

注: 冪集合とは、
S={1,2,3}とすると、
G={{},{1},{2},{3},{1,2},{2,3},{1,3},{1,2,3}}
のこと。

結合法則
a U (b U c) = (a U b) U c

単位元
e={}（空集合）に対して、
x U e = e U x = x

可換（交換法則）
x U y = y U x

うーん、なりたちますね。
特に、和集合が結合法則を満たしたり可換だったり単位元があるのは自明な気がするので、面白いのは冪集合が和集合に対して閉じている（結果が常に同一冪集合の要素である）ことですかね。

コメント: 以後、Uを+で表現する。

可換モノイドの嬉しいのは、前順序が定まることらしいです。

> さらに可換モノイドの場合、次のように前順序 ≦ が定まる。
前順序： x ≦ y <=> x + z = y 　∃z ∈ M
冪集合の場合包含関係 ⊂ は ∪ で定められることになる。

前順序をwikiより引用
> P を集合とし、≤ を P 上で定義された二項関係とする。
≤ が反射律と推移律を満たすとき、≤ を P 上の前順序という。

反射率と推移律
> 反射律：P の任意の元 a に対し、a ≤ a が成り立つ。
推移律：P の任意の元 a, b, c に対し、a ≤ b かつ b ≤ c ならば a ≤ c が成り立つ。

ふむ。なるほど、可換モノイドの定理として、前順序が存在する、っていうのがあるんですかね？
一般的には分からないので、まずは今回の冪集合の例について考えてみます。
x ≦ yとはすなわち、x　⊂ yということ。
このとき、確かにxにあってyにない要素はない（xの要素は全てyにもある）のだから、zとしてはxに不足している要素のみを選べばいいですし、最悪z=yと取れば必ずzは存在しますね!

たとえば、S={1,2,3,4}で、x　⊂ yの場合、たとえばx={1}, y={1,2,3}なら、zの取り方としてはz={2,3}でもいいですし、雑にz={1,2,3}(yと同じ)でもいいですね。

あと、どうやらこれにより、
> 冪集合 M の 任意の要素は次のように生成系 { {}, {a}, {b}, {c} } から作り出せる。

というのもあるらしいです。
確かに、任意の冪集合の要素は { {}, {a}, {b}, {c} } で作れそうです(空集合があるのは空集合を作るためでしょう）。

一旦ここまで。

前後の記事を読んでいないので、URLの要素命題以降のところはわかりませんでした。。
docker知識の自分なり　まとめ①

Dockerという言葉は知っていたけど、何なのか全然わからんなくて先輩に聞いたり自分で調べたりしたことをまとめています。

###そもそもDockerって何やねん
別々の箱(コンテナ)に入ったアプリケーションを管理するツール
Dockerはコンテナ技術の1つである(Linuxで使用できるからシェアが高いらしい？)
環境構築が楽になり、誰でもコマンド一つで同じ環境が構築できる

###Dockerファイル,Dockerイメージ,Dockerコンテナ って何やねん
| 1 | 2 |
|:-|:-|
| Dockerファイル  | Dockerイメージを言語化したもの  |
| Dockerイメージ  | Dockerコンテナの設計図  |
| Dockerコンテナ  | Docker実際のアプリを入れている箱。このコンテナが起動するとアプリが動く  |

Dockerファイルによって、Dockerイメージが作られる
DockerイメージからDockerコンテナが作られる

###レジストリ,リポジトリ
| 1 | 2 |
|:-|:-|
| レジストリ  | リポジトリを集めたもの  |
| リポジトリ  | Dockerイメージを集めたもの  |
Dockerイメージの集まりをリポジトリ
そのリポジトリの集まりをレジストリ
図で表すと↓↓みたいな感じだと思います
![キャプチャ1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1952885/167c796e-452d-071c-bcfa-5678725a778c.png)

まだまだ勉強中です。
追記していきます
python subprocessで標準出力もエラーもファイル出力する


greeting.py

```python

import argparse
import time

def arg_res():
    parser = argparse.ArgumentParser()
    parser.add_argument('--nickname',required=True)

    args = parser.parse_args()

    nickname = args.nickname

    # エラーなし
    greeting_sentence = f"僕のニックネームは{nickname}"
    print(greeting_sentence)

    # エラーあり
    greeting_sentence = f"僕のニックネームは{nicknames}"
    print(greeting_sentence)

    return greeting_sentence

def test_main():

    greeting_sentence = arg_res()
    print(greeting_sentence)

if __name__=="__main__":
    test_main()


```


run_greeting.py

```python
import subprocess
from time import time

name_list = ["john","power","smith","jack"]

with open('out.txt', 'w') as fp:

    for i in name_list:
        print(i)
        # コンソール実行時の場合に空白で区切る部分を分割してリストに入れる"
        # python greeting.py --nickname XXXX の場合下記のようになる。
        command = ["python","greeting.py","--nickname", f"{i}"]
        proc = subprocess.Popen(command, stdout=fp,stderr=fp)


```

出力結果

out.txt

```

僕のニックネームはsmith
僕のニックネームはjohn
僕のニックネームはpower
Traceback (most recent call last):
  File "greeting.py", line 28, in <module>
    test_main()
  File "greeting.py", line 24, in test_main
    greeting_sentence = arg_res()
  File "greeting.py", line 17, in arg_res
    greeting_sentence = f"僕のニックネームは{nicknames}"
NameError: name 'nicknames' is not defined
Traceback (most recent call last):
  File "greeting.py", line 28, in <module>
    test_main()
  File "greeting.py", line 24, in test_main
    greeting_sentence = arg_res()
  File "greeting.py", line 17, in arg_res
    greeting_sentence = f"僕のニックネームは{nicknames}"
NameError: name 'nicknames' is not defined
Traceback (most recent call last):
  File "greeting.py", line 28, in <module>
    test_main()
  File "greeting.py", line 24, in test_main
    greeting_sentence = arg_res()
  File "greeting.py", line 17, in arg_res
    greeting_sentence = f"僕のニックネームは{nicknames}"
NameError: name 'nicknames' is not defined
僕のニックネームはjack
Traceback (most recent call last):
  File "greeting.py", line 28, in <module>
    test_main()
  File "greeting.py", line 24, in test_main
    greeting_sentence = arg_res()
  File "greeting.py", line 17, in arg_res
    greeting_sentence = f"僕のニックネームは{nicknames}"
NameError: name 'nicknames' is not defined



```
【C#】Win32APIで取得した仮想キーコードをKeys列挙型に変換する方法

# 本文
Win32APIで取得した仮想キーコードを、Formアプリで使用するKeys列挙型に変換する方法。
キーコードをKeysにキャストしたものと、ControlクラスのModifierKeysをORすると変換がおこなる。

```:C#
Keys keys = (Keys)キーコード | Control.ModifierKeys;
```

# 一例
キーフックのコールバック関数内で変換する場合。

```:C#
[StructLayout(LayoutKind.Sequential)]
internal class KBDLLHOOKSTRUCT
{
    public uint vkCode;
    public uint scanCode;
    public uint flags;
    public uint time;
    public UIntPtr dwExtraInfo;
}

private IntPtr HookProcedure(int nCode, IntPtr wParam, KBDLLHOOKSTRUCT lParam)
{
    if (nCode == 0)
    {
        Keys keys = (Keys)lParam.vkCode | Control.ModifierKeys;
    }

    return CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam);
}
```

# 参考
Windows FormsのControlクラス
https://github.com/dotnet/winforms/blob/main/src/System.Windows.Forms/src/System/Windows/Forms/Control.cs
環と半環の項目をwikipediaで読んでみた

## はじめに
purescriptを勉強している途中で少し環と半環をwikipediaで読んでみた。前提として、環や半環の前提知識はない。本日1時間ぶり2投稿目。

## 環
https://ja.wikipedia.org/wiki/%E7%92%B0_(%E6%95%B0%E5%AD%A6)
## 半環
https://ja.wikipedia.org/wiki/%E5%8D%8A%E7%92%B0

## 読む(環)
> 環とは、集合 R とその上の二つの二項演算、加法 +: R × R → R および乗法 ∗: R × R → R の組 (R,+,∗) で、「環の公理系」と呼ばれる以下の条件を満たすものを言う（環の公理系にはいくつか異なる流儀があるが、それについては後で触れる）。

コメント: 半環の方では集合はGだったので勝手にRに変えないで欲しい。以後、引用以外はGと書く。

### 加法群
> (R, +) はアーベル群である
> > 加法に関して閉じている： 任意の a, b ∈ R に対して a + b ∈ R が成り立つ。
加法の結合性： 任意の a, b, c ∈ R に対して (a + b) + c = a + (b + c) が成り立つ。
加法単位元（零元）の存在：如何なる a ∈ R に対しても共通して 0 + a = a + 0 = a を満たす 0 ∈ R が存在する。
加法逆元（反元、マイナス元）の存在： 各 a ∈ R ごとに a + b = b + a = 0 を満たす b ∈ R が存在する。
加法の可換性： 任意の a, b ∈ R に対して a + b = b + a が成立する。

### 乗法半群
> (R,∗) はモノイド（あるいは半群）である
> > 乗法に関して閉じている： 任意の a, b ∈ R に対して a ∗ b ∈ R が成り立つ。
乗法の結合性：任意の a, b, c ∈ R に対して (a ∗ b)∗ c = a ∗(b ∗ c) が成立する。
乗法に関する単位元を持つ[注 1]。

### 分配律
> 乗法は加法の上に分配的である
> > 左分配律: 任意の a, b, c ∈ R に対して a ∗(b + c) = (a ∗ b) + (a ∗ c) が成り立つ。
右分配律: 任意の a, b, c ∈ R に対して (a + b)∗ c = (a ∗ c) + (b ∗ c) が成り立つ。

なるほど?

アーベル群とは[群のとき](https://qiita.com/tetz-akaneya/items/ee6388753bc223ea974e)にやった、(G,μ)=(実数,足し算)や(0以外の実数,掛け算)みたいなやつのこと。

1つのアーベル群に対して定まる演算は1つだけだったけど、環は1つの集合に対して足し算、掛け算の2演算と、それに加えて足し算と掛け算の間の関係にもいつもの関係（分配法則）が成り立つ条件が追加された感じかな。確かに分配法則などは演算1つじゃ考えられない概念だ。

(3+5)*2=3*2+5*2とか、2*(3+5)=2*3+2*5みたいな。

具体例としては、(G,+,*)=（有理数, 足し算, 掛け算)や（実数, 足し算, 掛け算)や（複素数, 足し算, 掛け算)がまずあるらしい。まあ何となく分かる。それ以上の例はちょっと今は追わない。。けど、要はとある環を定めるには、

* 集合
* a+b=b+aが成立する足し算と、足し算における0っぽいやつ、-aっぽいやつ。
* a*b=b*aが成立するとは限らない掛け算と掛け算における1っぽいやつ（1/aはいらない）
* 足し算と掛け算の自然な関係

あたりがあれば良いんだろう多分。一旦おしまい。

## 読む(半環)
定義を読む。
> A: (R, +) は単位元 0 を持つ可換モノイドを成す:
B: (R, ·) は単位元 1 を持つモノイドを成す:
C: 乗法は加法の上に分配的である:
D: 0-倍は R を零化する:

コメント: なるほど。ほぼほぼ環かな？Dは分からないけど、Cは分配法則のことやんな？

### A
(a + b) + c = a + (b + c),
0 + a = a + 0 = a,
a + b = b + a.

### B
(a · b)· c = a ·(b · c),
1 · a = a · 1 = a.

### C
a ·(b + c) = (a · b) + (a · c),
(a + b)· c = (a · c) + (b · c).

### D
0 · a = a · 0 = 0.
この0ってのは足し算での単位元ってのが群の方で勉強した内容と比べて目新しいんやな。

> 以上より、半環が環とは異なる点はその加法が単に可換モノイドであればよく、可換群を成すことまでは要求されないことであると言える。

https://qiita.com/tetz-akaneya/items/ee6388753bc223ea974e
によると、

結合法則と単位元と逆元と交換法則=>アーベル群（可換群）
結合法則と単位元と交換法則=>可換モノイド(足し算をイメージ。-aはない。）

らしいので要は、足し算について逆元(5に対する-5っぽいやつ）があれば環、なければ半環ってことかな。

一旦ここまで。

## purescript
Semiring(半環）のクラス定義は下記

```purescript
class Semiring a where
  add  :: a -> a -> a
  zero :: a
  mul  :: a -> a -> a
  one  :: a
```
要は集合、足し算、掛け算、0、1の定義を求めているわけだが、半環の構成要素は下記であるからバッチリ今回勉強したことと合う。

* 集合
* 足し算、足し算における単位元(0)（環だとこれに加えて逆元-aが必要になるので、半環なのが大事なんやな）
* 掛け算、掛け算における単位元(1)

typescriptで書くと、

```typescript
interface Semiring<T> {
  add: (a: T) => (b: T) => T
  zero: T
  mul: (a: T) => (b: T) => T
  one: T
}
```

みたいな感じかな。

## 感想
環の世界での足し算や掛け算は本当に足し算や掛け算とは限らないので思い込みは危険だけど、とはいえそういう思い込みを作っていかないとイメージしずらいので辛い。こうやって書く側も、なんでわかりにくく書くんだって思われて辛い。
AWS サービスを操作する方法＆IAMロールの利用について

AWSを操作する方法は下記三つあります
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2398199/f7a4e3f6-8872-d83a-fca0-e57ab2d32f5d.png)

各IAMユーザは「アクセスキー/シークレットアクセスキー」のペアを作成.保持することができます。

ただし、「アクセスキー/シークレットアクセスキー」はAWS CLI,AWS SDKの認証情報として
利用することができますが。
認証情報の更新問題や流出の危険性などから推奨されていません。
その代わりに、IAMロールの利用が推奨されています。
IAMロールには、IAMユーザと同様に、
AWSの各種リソースに対するアクセス可否を設定できます。
IAMロールは、EC2インスタンスなどに割り当てることができ、
IAMロールを割り当てられたEC2インスタンス上のプログラムは
「アクセスキー/シークレットアクセスキー」がなくても
IAMロールに許可されているAWSのリソースにアクセスできます。
ただし
IAMロールの利用はAWSリソース間しか利用できません。
例：
①：EC2からS3
②：LambdaからDynamoDB

ローカル端末からS3へアクセスしたい場合は利用できません。

IAMロールの利用例は下記も参照できます。
https://youtu.be/wTd4RBO98aI

今回のシェアは以上になります。
Vue - The Complete Guide (Udemy) １２章・１３章フォームとリクエストについての要約！

#教材　[Vue - The Complete Guide (w/ Router, Vuex, Composition API)](https://www.udemy.com/course/vuejs-2-the-complete-guide/)
理解を深めるために簡単なメモを作成しました。早くしっかりと実装できるようになりたい！

#session 12　フォーム

- 140 入力されたデータを取得する方法は、主に２つ！
  - 独自のカスタム入力イベントリスナーを作成する方法
  - v-modelを使用する方法。
- 141 入力するデータの型を指定する方法！
  - v-モデルを使用を使用すると、型の指定画できる。
  　デフォルトの`JavaScriipt`の検証画面に表示されるものは、すべて文字列として表示されるようである。しかし、Vueを使えば、簡単に型指定ができて後でDBを使用する時に簡単に操作画できる。
- 142 vモデルとドロップダウン
- 143ラジオボックスとラジオバタンでのvモデルの使用
  -  typeで任意の形に表示を変更する。
  -  あたり前だが、入力したあとはnullに戻す。そうしないと前のデーが残ってしまうみたい。
  -  配列にしてデータを保存しないと全部選択されてしまう！[]で指定して上げれば良い。
  -  valueの値は項目ごとに作成しないといけない。
  -  グループで管理されている入力データ軍と単体で管理されている入力データ軍が存在している。
  -  単体は、もともとを真偽で設定して置き、デフォルトの設定は偽にしておき、入力されると真になるように設計を行う！
-  144 フォームの検証の機
    - @blurと設定をすると、blurイベントは、要素がフォーカスを失ったときに発生します。このイベントと focusout との違いは、 focusout がバブリングを行うのに対し blur は行わないことです。
 [Element: blur イベント](https://developer.mozilla.org/ja/docs/Web/API/Element/blur_event)
    - 新しくフォームを入力する場合は、メソッドを作成しそこに入力される値が正しいのかを検証する必要がある。
  - 145　カスタムコンポーネントの実装
    - 手順
      1. 新規コンポーネントの作成
      2. 親で新規コンポーネントを`import`と`componet`してあげる。
      3. 選択を強調したいのなら、新規クラスを作成して、色をつけるようなクラスを作成する。
      4. 他の値が入らないようにv-bindで正しい入力かどうかを判定して上げるようにする。
- 146カスタムコンポーネントで、v-modelを使用する方法！
    - modelValueを使用して、カスタムコンポーネントに使用して同期する。ここの範囲は、とても難しいので一度では理解ができない。他の本などを読んで理解したら再度取り組んで見よう。
    
#Session 13 httpリクエスト
 - 149 ローカル環境での開発から離れるための概要の説明
 - 151　Fiarebaseの説明
  goggleのサービスで、バックエンドで行う機能を提供してくれるサービス。リアルタイムでデータ同期ができることがいいところ。
 - 152　httpリクエストを送信方法について
    - axiousのおすすめ　サードパーティー製のパッケージのようだが、かなり使いやすいみたいである。httpリクエストを行ってくれる。
    - fetch();について。データを送受信するためのメソッド。ここにUrlを書けばいい。
  - 153 データを保存するためのpostの送信
    - firebaseにデータを送信するための、書き方を説明
    - JSONデータとして、送信しないと行けない。
  - 156 データの取得(Get)と応用データの変換
    - fetch()でデータの入力をとってくるように記述する。
    - response.okがokだったら.jsonデータを取得できるように記載する。
    - 失敗に終わったら、エラー文を送信してくれるように処理書くようにする。
  - 157 コンポーネントをマウントする時のデータを取得方法。
    -　ローカル環境をisLoading = flaseに 常に観ているのではなくてリクエストが来たら動くように改良を重ねる。その後にリセットを行う。
  - 158 データなしの状態での書影
  -　if文を書いて、中身がなかったらどうするかの処理を記載するようにする。
 - 160 ブラウザ側のエラーを解決する方法！
    - console.log(error)という風に記載をすれば、errorがはけるようになる。
  - 161 サーバーサイドのエラー文を読み解く方法
AppleTV(第3世代)でAirPlayが使えない場合の対処方法

AppleTVで「アクティベーション不可」と表示され、AppleTV(第3世代)でAirPlayが使えない(端末から認識されない)場合の対処法。

日本語でいい記事がなかったので、備忘も兼ねてメモ。

# 起こっていた問題
- AppleTVでAirPlayが使えない
    - 設定>一般>情報>アクティベート：アクティベーション不可 と表示される

# 解決方法
[Apple Configurator2](https://apps.apple.com/jp/app/apple-configurator-2/id1037126344?mt=12) を利用してAppleTVをアクティベートする。

1. Micro-USB ケーブルを Apple TV に接続し、Apple Configurator2がインストールされたmacに接続する。
2. デバイスウインドウで Apple TV を選択する。
3. 「プロファイル」を選択してアクティベートします

以上です。私の場合はこれで解決しました。
3の後にプロファイルを選択しろと出る場合がありますが、そのまま外して問題ありません。

# 終わりに
いかがだったでしょうか？
ソフトウェアアップデートもかけて、全部最新にしたのに接続できない...とお悩みの方の一助になれば幸いです。
「ssh (対象)」で鍵認証もポート変更にも対応する

## お詫び
ほとんど受講生・スクール生向けです。
諸々の説明を省略していますが、エッセンスを抽出しているのでSSHの概要は分かったけど使い方がわからない方への助けにはなると思います。

## ソースコード
https://github.com/shimajima-eiji/__Settings_Environment/tree/main/for_SSH

必要な情報は全部READMEに書いてます。

## なぜ作ったか？
社会人の新人研修や、プログラミング研修またはプログラミングスクールで講師業をやっていると、ローカル開発でコマンドは使えるけどSSHが意味わからなすぎて挫折してしまう方が結構いました。
こういった方向けに、必要最低限だけの情報でSSHを使ってもらうにはどうすればよいか、という点に注力しました。

**セキュリティの観点からまだまだ問題点が多くあります**が「あまり新人・素人に詰め込みすぎてもなぁ」というのがあるのでSSHの運用ができる事を目的に作成しています。

## 勉強し、理解してほしいこと
- サーバー側で実行するコマンド
- クライアント側で実行するコマンド

が、それぞれ違うので「何でこれやってるんだっけ？」と考えながらやってみてください。
特に最小限のコマンドについてはshファイルでまとめていますが、まずはこれらのコマンドだけでも何をやっているのか、きちんと調べましょう。

sedコマンドは難しいので、viなりnanoなりコマンドエディタを使えるようにしておきましょう。
（本稿では解説しません）