OmniAICreator/Qiita-1.07M huggingface dataset:
スモウルボットに明度センサーを追加する

#0.はじめに

「スモウルボットにボタンを追加する」でも書きましたが、スモウルボットの中央にあるマイコン「ATMEGA328P-PU」には未使用の端子があり、書籍「Arduinoをはじめよう(O'REILLY Make:PROJECTSシリーズ)」の巻末のマイコンの図を見ると
・Digital3
・Digital4
・Analog5
・Analog4
・Analog3
・Analog2
・Digital12
・GND
に該当するPinが未使用のようです。

今回、明度センサー(NJL7502L)を追加してみようと思います。明度センサーから取得できる値は、ボタンの押された(ON)、押されていない(OFF)のようにデジタルではなく、周りの明るさなので信号線はアナログの端子に接続しようと思います。今回は、Analog3(スモウルボットのブレッドボードではj15の位置)に接続します。あと電源も必要です。

スモウルボットに流れている電圧は5Vですが、怪我をしないように、配線が合っているか、また、不要な線が繋がっていないかを確認しながら作業を進めましょう。

#1.完成予定図
![IMG_3510 - コピー.JPG](https://qiita-image-store.s3.amazonaws.com/0/217329/a44d8dd4-ad02-203e-3ce1-408247925222.jpeg)

★あいかわらず、スモウルボットの電池ボックス、モーターなどがついていないことはご勘弁ください。

#2.材料

スモウルボットが必要です。それ以外に

1.ミニブレッドボード(秋月さんのP-05155か類似品 130円ぐらい。ミニじゃなくてもOK) x1個
2.明度センサー(秋月さんのI-02325か類似品 2個入りで100円ぐらい) x1個
3.抵抗47kオーム(秋月さんのR-25473か類似品 100個入りで100円ぐらい) x1個
4.オスオスのジャンパーワイヤー(秋月さんのC-05159か類似品 60本入りで220円ぐらい) x3本

#3.明度センサーの組み立て
机のまわりは片づけましょう。電子工作の部品はたいてい小さいので、自分は机の下に良く落として探します。

1.明度センサーをくぼみの近くに差し込みます。明度センサーの端子は2本あり、少し長い方に電源のプラスを接続しますので、どっちが長い方だったか覚えておきましょう。不要な線をニッパーでパッチンするときは、もとの長い方が分かるように少し長めに残しましょう。
2.明度センサーの端子の長い方に赤色のジャンパーワイヤーを繋ぎます。後でプラスに接続します。
3.テスターがあれば、抵抗が本当に47kオームか計測して確認します。
4.明度センサーの一つの端子に、抵抗を繋ぎます。
5.抵抗の左右に黒色のジャンパーワイヤーと黄色のジャンパーワイヤーを繋ぎます。

★説明のため、色を決めていますが好きな色でよいです。ただ、電源に接続するのはプラスは赤色、マイナス(GND)は黒色の方が通例というか感覚に合っていると思います。
★写真では、赤色(プラス)とスイッチが繋がっていないように見えますが、ブレッドボードの内部でつながっています。なので、写真では表面の赤色(プラス)が刺さっている個所からスイッチの間の3つの端子はどこも5Vの電気が流れます。

#4.接続
組み立てた明度センサーをスモウルボットに接続します。

1.スモウルボットにUSBケーブルが繋がっていて、電源が供給されている場合はケーブルを抜いて、電源が供給されていない状態にします(安全第一)。
2.明度センサーの黄色のジャンパーワイヤーをスモウルボットのj15の位置に差し込みます。
3.スイッチの赤色と黒色の電源の線をスモウルボットの電源用のライン(赤と青の線が引いてある箇所の+/-)の列の空いているところに差し込みます。

#5.スモウルビーでブロックの組み立て

明度センサーから値を取得できていることを表示や動きとして知りたいので、ネコが動くようにブロックを組み立てます。
うまくいけば、明るければ前進、暗ければ後退するはずです。
部屋の明るさによって、前後する感度(ブロックの40のところ)を調整してください。
なお、最初のコメントは動作に影響ありませんので不要です。
![20180916-193556.211092611-shot.png](https://qiita-image-store.s3.amazonaws.com/0/217329/d2d66f8b-42b3-ff9c-d6d0-ad33f7972419.png)

1.ログインして、スモウルボットの制御をするためのブロックが使えるように準備します。
2.右上の[メニュー]-[設定]を選択して[スモウルボットV3のブロックを使う]と[ハードウェアブロックを使う]にチェックを付け、[決めた]ボタンをクリックします。
3.ポイントは、[センサー[A3]]というブロックを組み込むことです。
4.ブロックが組み立てられたら、スモウルボットとパソコンをUSBケーブルで接続します。
5.[実行]ボタンをクリックしてプログラムを実行します。
6.明度センサーへ光が当たっているとネコが進んで、光をさえぎるとネコが後退すればOK。

#6.うまくいかない時
次のことを確認してみましょう。

1.スイッチの配線は、赤色(プラス)からたどると黒色(マイナス)までつながっている？
2.スイッチの配線は、赤色(プラス)からたどると黄色(信号)までつながっている？
3.スモウルボットに接続した黄色の線がj15(か、i15,h15,g15)につながっている？
4.電源の赤色(プラス)と黒色(マイナス)の線が合っている？

#7.スモウルビーについて
スモウルビーは、
NPO法人Rubyプログラミング少年団
http://smalruby.jp/
で開発されています。無料で利用できます。
ブロックの組み立てでプログラムができます。
初出勤ーーRubyの環境構築ーー

# スクレイパーやクローラーをプログラミングする仕事始めました
開発経験積んで就活で活かしていきたいので、クローラー開発のアルバイトを始めました。rubyでプログラミングしていきます。元々は学校の研究でMATLABを今年の4月からやってたのと、6月からpythonで機械学習とか勉強してました。勉強用twitterアカウントに連絡をいただき、バイトを始めました。学んだことをつらつらと羅列していきます。

- まずは研修！

rubyは触るの初めてなので、とりあえず最初は研修です。
slackやらTrelloの説明を受け、業務で使うアドレスとスプレッドシートやドライブの説明を受け、研修内容として用意されている課題をこなしていくことに。

- HTML＆CSS

最初の課題はHTMLでhello worldして、その後文字色変えたりエンコード変えたり。
ダウンロードしててよかったAtomさん。この辺は一応progateでちょっとやった程度の僕でも余裕。
こんな感じ。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/292031/2d971880-2fb7-97fc-e1ee-0d60fcba3284.png)

- rubyの環境構築

はい、つまづきました。
環境構築ってやっぱり面倒ですね。避けては通れないからしょうがないけどな！
まず何でつまづいたかというと、僕の使ってるPCはwindowsなんですが、rubyのインストールにrbenvを使えという指示。rbenvはwindowsに対応してないからWindows Subsystem for Linux (WSL) でUbuntuをインストールしてUbuntu上でrubyを動かしていくことになる。研究室のワークステーションぶっ壊したことあるからLinuxにトラウマ...
参考にしたurlはこちら。
https://qiita.com/yukio_tokuyoshi/items/042546812c663ceeccf3

続いてrubyのインストール。この記事にしたがってやっていくことに。
https://qiita.com/godai0505/items/44d12ef0d52b2dc9d560

するとエラー吐いてインストールできない。エラーメッセージをググって解決。(エラーの理由はワカラナイ、解決したからいいや)
https://askubuntu.com/questions/237576/no-acceptable-c-compiler-found-in-path

そして次はbundlerインストールして bundle経由でruby実行できるようにしましょうとの指示。
何それ...
とりあえずググってみてこのページを参考にしてやってみよう。
http://sounanda.jp/itskillup/?p=749

そしてその途中で気づく。「WSL環境でファイルの読み書きってどうやるの...?
ファイルがどこに保存されてるのかも知らねぇ...」社員さんに尋ねてみた。
cui上でしかできないから読み書きはVimでやらなきゃいけないだと...
エディタアプリ使えないってマジか。macならUbuntuも必要なくそのままrbenv使えてエディタもAtom使えたらしい。反apple派の人間だったからwindowsのPC買った5月の俺を呪う。
![71Ts-3JCvkL._SL1500_.jpg](https://qiita-image-store.s3.amazonaws.com/0/292031/653970ff-1ff3-9eb6-4cdd-2fa639e3f1e9.jpeg)

後悔してもしょうがない。Vimの書き方覚えなきゃ。ってところで今日はとりあえず終わり。環境構築も終わってないぞ。大丈夫か。

とりあえず次の出勤までにVimの書き方覚えて.rbファイルの実行はできるようにしときます。
Simple StaticプラグインでWordPressを静的ページに変換する

静的ページ化プラグインで有名なのは

- [Simply Static](https://ja.wordpress.org/plugins/simply-static/)
    - 一番インストール数やレビュー数が多い。更新もまめにされている。
- [WP Static Site Generator](https://wordpress.org/plugins/static-html-output-plugin/)
    - 2番目
- [StaticPress](https://ja.wordpress.org/plugins/staticpress/)
    - インストールやレビュー数はあまり多くない。あまり更新されていない。
    - 日本人が開発しているっぽい

今回はSimply Staticを使ってみた。
生成はデフォルト設定のままで正常にできたものの、生成されたファイル名・ディレクトリ名が`%e3%81%8b%e3%82%8f%e3%81%9b/index.html`のようになっていて困った。`かわせ/index.html`になっていてくれないと、Apacheで正常に配信できない。
なのでこれを変換するスクリプトをRubyで書いた。


```convert.rb
require "cgi"
require "fileutils"

# dir以下を再帰的に変換する
def convert(dir)
  Dir.chdir(dir) do
    Dir.glob("*").each do |filename|
      if filename.include?("%")
        newname = CGI.unescape(filename)
        puts "#{filename} -> #{newname}"
        FileUtils.mv(filename, newname)
      end
    end
    Dir.glob("*").each do |filename|
      if File.directory?(filename)
        convert(filename)
      end
    end
  end
end

convert(".")
```

使い方は、生成された静的ファイルのトップディレクトリにて

```
$ ruby convert.rb
```

これで再帰的に全ファイル名が変換され、そのままApacheで配信できるようになる。
Gmailで受信した特定のメールをSlackに通知を連携させるやーつ

## 背景
サポート宛に来るメールを振り分けたかった。

## 用意するもの
Gmailアカウント
テスト用のSlackのワークスペース


## 手順
### slackのメアド発行

Slack
環境設定 -> Slackへのメールの転送でメアドを発行


Gmail
受信トレイ右上らへんの歯車ボタン -> フィルタとブロック中のアドレス -> 新しいフィルタを作成
![スクリーンショット 2018-09-16 19.48.49.png](https://qiita-image-store.s3.amazonaws.com/0/213284/ced11a4b-c322-0421-e3b9-64695c0d9835.png)
######※ メール本文に含めたいキーワードはカンマ区切り、スペースは含めない。

![スクリーンショット 2018-09-16 19.52.09.png](https://qiita-image-store.s3.amazonaws.com/0/213284/ccd21a1b-ee59-f031-a178-042f7e7bdeab.png)

######※ 適用するカテゴリ、0件の一致する〜にもチェックする。
######※ フィルターの更新は編集ではなく再作成がベター。
######※ 同じ設定のフィルターが複数存在する場合古い方から適用される。
######※ メール転送とPOP/IMAPの設定は通知しないでおk。




## 後は一致キーワードでテストメール送信するだけ。以上。
FragmentからFragmentへのイベント連係で「does not belong to this FragmentManager!」エラー

以下の記事を参考に、Fragmentの勉強をしていたのですが、

> [Android はじめてのFragment イベント編](https://qiita.com/Reyurnible/items/d6397f5fbb03ee4fb93b)

こんなエラーに小一時間困らされました。

```
Fragment フラグメント名1{3dd5c90 #0 id=0x7f07004b} declared target fragment　フラグメント名2{ed47989 id=0x7f070061} that does not belong to this FragmentManager!
```

原因はどうやらFragmentTransactionでaddする順番に問題があったようだ。

```
        transaction.add(R.id.left_fragment, leftFragment);
        transaction.add(R.id.right_fragment, rightFragment);
```

上記ふたつのaddする順番を入れ替えたらエラーが解消しました。
vsto excelアドインの開発においてデバッグ機能が使えなくなる。

少し前にvsto excelアドイン開発で躓いたことがあったのでそれを解決した流れについてメモです。
Qiita初登校です。初歩的なハマり方をしているので、記事にするの少し恥ずかしいですが載せてみました。

## 概要
1. vsto excelアドインの作成を行う
2. 発行ウィザードをからアドインのインストーラを作成し、そのイン ストールを行う
3. アドインの機能追加を行う（ここでデバッグ不能になりました）

## 大まかな環境
Visual Studio 2017 Community
Excel 2013 と 2016 VSTO アドイン開発
Windows 10 Home

## 流れ

### vsto excelアドインの作成を行う
わかりやすく確認するために、VSTO ビジュアルなデザイナーのリボンを追加しそこに適当にイベントを追加してみます。

リボンにボタンを追加し、そのイベントにMessageBoxを表示する簡単なイベントを足してみました。
![リボン01.png](https://qiita-image-store.s3.amazonaws.com/0/292112/34cb61a0-6324-c458-aa06-7f07cdde39ab.png)

```C#
// using System.Windows.Forms;

private void button1_Click(object sender, RibbonControlEventArgs e)
{
	var dialogResult = MessageBox.Show(@"Hello", @"Title", MessageBoxButtons.OKCancel);

	if(dialogResult == DialogResult.OK)
	{
		System.Diagnostics.Trace.WriteLine("Ok");
	}
}
```

button1_Clickイベントの中にブレークポイントを設定して、デバッグの実行を行います。
対応しているexcelがPCにインストールされているならexcelが立ち上がると思うので、適当なbookを開いてアドインタブからボタンに紐づけたイベントを呼び出します。
![アドインタブ01.png](https://qiita-image-store.s3.amazonaws.com/0/292112/4b9c95ca-8c07-ce4e-155a-a28324422600.png)

MessageBoxの表示が行われ、ブレークも作動します。

### 発行ウィザードをからアドインのインストーラを作成し、そのインストールを行う
ソリューションエクスプローラー上でアドイン開発に使用したプロジェクトを選択し、右クリックして発行ウィザードを起動します
。
![発行01.png](https://qiita-image-store.s3.amazonaws.com/0/292112/3eddba33-528f-72b7-70db-903d7f205b6b.png)


出力フォルダ階層を適当に設定し、CD,DVD形式で出力します。
![発行02.png](https://qiita-image-store.s3.amazonaws.com/0/292112/9f8a139a-70cc-6ae4-0b6d-23ce9ed77d8d.png)
次へをクリックします。
![発行03.png](https://qiita-image-store.s3.amazonaws.com/0/292112/1b072f1c-ef5b-5a9c-81b6-9c41a3c6f862.png)
完了をクリックします。

<br>
出力フォルダにできるSetup.exeからアドインをインストールします。
![発行04.png](https://qiita-image-store.s3.amazonaws.com/0/292112/f279319c-f5c8-7f88-e98a-4111333b9685.png)
記述していませんでしたが、AddinTestが今回作成に使用したプロジェクトの名前です。


### アドインの機能追加を行う
初めに作ったリボンに新しいボタンを追加し、新しいイベントを足してみます。
![リボン02.png](https://qiita-image-store.s3.amazonaws.com/0/292112/70545e1c-2e47-3f7b-c0c9-12dd1c07e65b.png)

```C#
private void button2_Click(object sender, RibbonControlEventArgs e)
{
	var dialogResult = MessageBox.Show(@"World", @"Title", MessageBoxButtons.OKCancel);

	if (dialogResult == DialogResult.OK)
	{
		System.Diagnostics.Trace.WriteLine("Ok");
	}
}
```

ここでデバッグ実行を行うと以下のようなエラーダイヤログが発生し、デバッグができなくなります。
ここに表示されている内容を勘違いしたのが今回の原因。
アドインタブの中に実装したボタンが表示されなくなり、当然ブレークポイントも機能しなくなります。
![機能追加01.png](https://qiita-image-store.s3.amazonaws.com/0/292112/981ae587-1c21-ec4a-808d-a8c4bc9cfff6.png)

別バージョンのアドインが読み込まれているのでそのアドインをアンインストールをする必要があるとのこと。アンインストールしてきました。

その後再度アドイン開発を行っていたプロジェクトをデバッグ実行しました。
先ほどのエラーは発生しなくなったものの、依然としてアドインが読み込まれていません。

ここでエラーウィンドウを再度確認
![機能追加03.png](https://qiita-image-store.s3.amazonaws.com/0/292112/eca00b25-c960-3a10-8ea9-cc6a4402fd35.png)

画像下部のパスの欄にある拡張子.vsto形式のファイルをダブルクリックするとアドインのインストールが開始されました。
この状態でデバッグ実行を行うとアドインが存在する状態で実行を行うことができ、ブレークポイントを使用することもできました。
これでひとまず解決です。

## まとめ
エラーメッセージはちゃんと読みましょう。
ここを軽く読み飛ばしてしまったばかりに、半日ほどハマってしまいました。

とはいえ、初めてプロジェクトを実行したときはデバッグ実行と同時にアドインが自動で読み込まれていたので、機能を追加したときも同じく自動で読み込まれると思うじゃん。なんて言い訳をしたくもなったものです。
イラストレーターの環境構築に関する質問です。

イラレCC2017を自宅環境でインストール中ですが、
海外のサイトから拾ってきたアクションなどが日本語版では動かないため、英語環境にしたいと考えています。
AdobeCCから設定で使用言語を英語にすればインストールできるとのことですが、その場合、一緒にインストールしているPhotoshopも英語化されてしまうのでしょうか?
また、別バージョンのイラレを一緒の環境にインストールしていますが、こちらの環境にも影響が出てしまいますでしょうか?

拙い表現で申し訳ありませんが、お試しになられている方が行っらっしゃいましたら、お伺いしたく存じます。
1QBitのフラグメント分子軌道法論文まとめ

はじめまして。[株式会社QunaSys](http://www.qunasys.com/)の楊です。
QunaSysでは量子コンピュータを量子化学や物性計算に活かすことを１つのターゲットとしています。
その中で読んだ論文や実装をQiitaでまとめて行こうと思います。
（量子コンピュータに関する非技術的は話は[Qmedia](https://www.qmedia.jp/)参照 ）

最初に紹介する論文は、1QBitというカナダの量子コンピュータ向けソフトウェア会社が発表した論文です。
この論文は、古典コンピュータの計算パワーがまだまだ足りなかった20年ほど前に、非力な古典コンピュータで量子化学計算をする工夫がベースになっています。
その工夫をqubit数が少ない量子コンピュータに応用したstraightforwardな論文だと思います。

またこの論文は日経XTECHで、弊社CTO御手洗の量子回路学習と一緒に取り上げられました。
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00419/083100004/

## 論文のタイトルとURL
Towards the Practical Application of Near-Term Quantum Computers in Quantum Chemistry Simulations: A Problem Decomposition Approach
https://arxiv.org/pdf/1806.01305.pdf

## 著者
Takeshi Yamazaki, Shunji Matsuura, Ali Narimani, Anushervon Saidmuradov, and Arman Zaribafiyan
日本人の方がいっぱい！

## ポイントは？
Problem Decomposition （PD） technique で大きい分子をsubsystemに分解して、それぞれのsubsystemで量子アルゴリズム（今回は基底エネルギーを計算するVQE）を動かす。subsystem同士の辻褄が合うように計算を繰り返す。
PD techniqueはfragment molecular-orbital (FMO), divide-and-conquer (DC), density matrix embedding theory (DMET) を使った。
 最初2つの手法を使う場合、アルカンの計算をするのに100qubit以上の量子コンピュータが必要だが、DMETは50~100qubitでアルカンのモデリングが可能そう。

## 先行研究と比べて何がすごい？
今回の手法は他の量子回路の深さを削減する手法と組み合わせることが可能。
他のPD techniqueには、elongation method, molecular fractionation with conjugate caps approach, generalized X-Pol theoryなどがある。 

## 技術の手法や肝は？
特に量子コンピュータに載せるための工夫はなさそう 。

PDによって分子を分割して、VQE（将来的にはPEA）で基底エネルギーを求める。VQEの結果を統合して、ハミルトニアンを更新してサブシステムのエネルギーを再度求めることを繰り返す。
![Screen Shot 0030-09-16 at 18.55.47.png](https://qiita-image-store.s3.amazonaws.com/0/128898/6e6457b9-02f3-e1e5-2819-0aba2e43d203.png)
(図は論文から抜粋)  　　

## このアイデアは上手く行く？
PDの手法適用の有無による
- Qubit数削減数
全体系にCCSDを適用して求めたエネルギーとPDの手法も用いて計算したエネルギーの
- 平均絶対偏差（mean absolute deviation (MAD)）
- 相関係数（Pearson correlation coefficient (ρ<sub>P</sub>)）
- スピアマンの順位相関係数（Spearman’s rank correlation coefficient (ρ<sub>S</sub>)）
を評価した。

計算の対象は直鎖のアルカン（C<sub>n</sub>H<sub>2n+2</sub>）で、
1フラグメントは炭素原子１つと水素原子2つで、鎖の両端の場合は水素原子３つ。

<img width="1404" alt="Screen Shot 0030-09-16 at 12.47.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/128898/ae2f7ec4-e502-14e1-2712-bfcf530807fc.png">
(図は論文から抜粋)

実験内容と結果（一例）は以下の通り。

下の図はオクタンの52異性体のそれぞれの全体系にCCSDを使って求めたエネルギーと各PDの手法で求めたエネルギーのプロット。
全ての点で縦軸と横軸の値が一致するとρ<sub>P</sub>=1,ρ<sub>S</sub>=1になり、そうなるのが理想的。 
表のA, B, CはそれぞれFMO, DC, DMETに対応。基底は6-31G。

<img width="866" alt="Screen Shot 0030-09-16 at 19.20.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/128898/8d396e02-efe4-d785-e591-b4a764d54bec.png">
(図は論文から抜粋)  　　

考察は以下の通り。
FMO: 精度は全く出ないがqubit数を70%削減できた。基底の数が多い基底関数を利用するか、1フラグメントを炭素2つにすると精度が上がる。（ただし、その場合qubit数の削減幅は小さくなる） 
DC: 高精度にエネルギーが求まるが、qubit数が大して削減されない。これはbufferを4Åと大きくしたことによる。分子量が増え、bufferが相対的に小さくなれば有用な手法だと考えられる。 
DMET: 精度が良く、 qubit数を80%削減。

## 議論はある？
NISQデバイスで重要になるサンプリングエラーによる計算精度の影響を調べた。サンプリングエラーの標準偏差が0.005 hartreesあると、ρ<sub>P</sub> が0.96 から 0.74 に ρ<sub>S</sub> が 0.86 に 0.70落ちる。 
結構エラーにセンシティブ。

## 関連文献
- 最適化を分割して解いている論文 https://arxiv.org/pdf/1708.03439.pdf  
- FMOの元論文 https://www.sciencedirect.com/science/article/abs/pii/S000926149900874X
- DCの元論文 https://link.springer.com/chapter/10.1007/978-90-481-2853-2_5
- DMETの元論文 https://arxiv.org/pdf/1610.06910.pdf

実装して次回に回します。
Qiitaで特定ユーザーのコメントを非表示にするGreaseMonkeyスクリプト 

Qiitaには現在、特定のユーザーをミュートする機能があり、指定したユーザーの作成した記事がフィードに表示されないようにすることができますが、コメントに対しては適用されません(なんでや！)。

ということで、GreaseMonkey/TamperMonkeyの力を借りて、コメントを消すスクリプトを作成しました(一応先駆者がいないか探しましたが、なぜかいませんでした)。

https://github.com/chromia/qiita-comment-remover

# 導入

1. お使いのブラウザに対応したTamperMonkeyをインストールしてください。<br>
https://tampermonkey.net/
2. 以下のURLからスクリプトをインストールしてください。<br>https://github.com/chromia/qiita-comment-remover/raw/master/qiita-comment-remover.user.js

# 使い方

記事のコメント欄において、各ユーザーの名前の右側に、「×」マークが表示されるようになります。「×」を押すとNGリストに登録され、以降当該ユーザーのコメントは「削除済」と書き換えられた状態になります。

元に戻すには「削除済」と書かれた箇所をダブルクリックします。

# 注意点

・**Qiitaにログインした状態でないと動作しません**

ログイン時と非ログイン時で結構ページの作りが違うようで、ひとまずログインユーザーのみの対応となります。

# 謝辞

本スクリプトは[recyclebin5385](https://twitter.com/recyclebin5385)様の「[togecutter-alt](https://togetter.com/li/961425)」の派生品です。
この作品がなければ、今回作ってみる気にすらならなかったと思います。多謝。

# その他

Javascriptはガチで素人なので(JQueryを今回初めて使ってみたレベル)、ちゃんと動作するか自信ないところがあります。
出来れば人柱になっていただけると幸いです。
Particleと2DDLProで夜空を作る【Unity】

#夜空をつくる
「うさぎロケット」で使用している夜空の表現方法をご紹介します。

##用意するもの
■[2DDL Pro](https://assetstore.unity.com/packages/tools/particles-effects/2ddl-pro-2d-dynamic-lights-and-shadows-25933) 　
■Particle 

##作り方

①HierarchyのCreateから2DDLPro > Lights > Radical Texturized Additive をつくる
![1.png](https://qiita-image-store.s3.amazonaws.com/0/292140/c7c24b24-d53d-ef01-6da0-c7ca33387f47.png)


②レイヤーをNothingにし、大きさや色を調整する![afdwgqfe23.png](https://qiita-image-store.s3.amazonaws.com/0/292140/ff95e41c-4d1e-c179-4f12-0d970b6b90ac.png)
レイヤーがdefaultのままだと当たり判定に合わせて変形してしまうのでレイヤーを変更します。紫色にするだけでもそれっぽくなる


③maincameraの背景色を良いカンジに調整する
![fdghjkl.png](https://qiita-image-store.s3.amazonaws.com/0/292140/a78bbd92-bf18-d587-e938-ec5bdf53e48b.png)
Unityでグラデーションを表現する方法はいろいろありますが、この方法はかなり楽かつ綺麗です。


④Particleを置く
細かい説明は省きますが、Particleよくわからない人は画像のように設定するとなんとかなると思います

![vghbjnkm.png](https://qiita-image-store.s3.amazonaws.com/0/292140/720f8842-dd3d-3427-f983-17fb07cf2867.png)
![dsfghjklik.png](https://qiita-image-store.s3.amazonaws.com/0/292140/3b775d25-81b9-55d4-9753-4e1c35125daa.png)
![rtyuio.png](https://qiita-image-store.s3.amazonaws.com/0/292140/d2a06324-b2bb-193f-1d36-a1a6ae4c1ea7.png)

⑤完成！
お好みで月や雲を追加するとなおよいです

![ertyurdts.png](https://qiita-image-store.s3.amazonaws.com/0/292140/179c4431-01b0-fcf4-aa47-783196c64407.png)
Phoenixを触ってみる その4

[その3](https://qiita.com/utonn/items/7489a66f489dc0e6cdcd)に引き続き
https://hexdocs.pm/phoenix/routing.html#pipelines
のページから

# Pipelines

パイプラインは各リクエストに適用できる共通処理のようなものと思って良さそう。
以下特徴を持つ

- リクエストに対して何かしらの処理や変換を行う
- 順序を決められる

一つ一つの処理はPlugが担っていて、それを順序に沿って並べたものがpipeline。
※Plugって何よ、というのはまたいつか

今までのサンプルでも、こんな感じで定義されている。

``` router.ex
pipeline :browser do
  plug :accepts, ["html"]
  plug :fetch_session
  plug :fetch_flash
  plug :protect_from_forgery
  plug :put_secure_browser_headers
end

pipeline :api do
  plug :accepts, ["json"]
end
```

pipelineを適用するには、pipe_throughを使う。

``` router.ex
scope "/", HelloWeb do
  pipe_through :browser
  get "/hello", HelloController, :index
end
```

この場合、:browserパイプラインはHelloControllerのindexが呼ばれる前に適用される。
コントローラに前処理を追加できるということらしい。

また、パイプラインを複数適用したり、パスによって適用するパイプラインを分けることも可能

``` rpouter.ex
scope "/admin", as: :admin do
  pipe_through [:browser, :admin_check] # /adminのときだけpipelineを追加
  (略)
end

scope "/", HelloWeb do
  pipe_through :browser # こっちには :admin_checkは適用しない
  (略)
end
```

# ChannelRoutes

いきなりWebSocketの話。
WebSocketの場合はRouteの書き方が変わってきますよ、という話。
というかもはやRoutesではなく、endpointに直接書く。

``` endpoint.ex
socket "/socket", HelloWeb.UserSocket
```

``` mix phx.new ```の段階でこのサンプル記述は入っているはず。
Socket周りの実装は別の章であるようなので、ここでは割愛。

とりあえずrouterではないよ、ってことだけ頭に入れておけば良さげ。
初心者がGoogle Analytics Customer Revenue Predictionに挑戦してみた(その2)

#参加コンペ
Google Analytics Customer Revenue Prediction
https://www.kaggle.com/c/google-analytics-customer-revenue-prediction

#参考にしたkernel
LGBM (RF) starter [LB: 1.70]
https://www.kaggle.com/fabiendaniel/lgbm-rf-starter-lb-1-70

#解説
###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```

###
```python
```
RaspberryPi(ラズパイ)にcondaの環境を整えて色々やってみた

##RaspberryPiにcondaの使える環境を整えていろいろやってみました

環境
raspberryPi 3 Model B
os:raspbian
##

まず、ラズベリーパイにcondaの使える環境を構築します。
(anacondaは入らないので　[Berry Conda](https://github.com/jjhelmus/berryconda)というRaspberryPi用のを入れます。)
とりあえず、インストール用のシェルをとってきてインストールします。
＊pythonの2,3両方入れても問題なく動くみたいです。
####自分たちの環境に合わせてinstallerをダウンロードしましょう!

```
armv7l installers (Raspberry Pi 2 or 3)
## python3系のBerry condaのinstaller
wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda3-2.0.0-Linux-armv7l.sh
## python2系のBerry condaのinstaller
wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda2-2.0.0-Linux-armv7l.sh
```

```
##armv6l installers (Raspberry Pi 1 or Zero)
## python3系のBerry condaのinstaller
wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda3-2.0.0-Linux-armv6l.sh
## python2系のBerry condaのinstaller
wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda2-2.0.0-Linux-armv6l.sh
```
####次に、Berry Condaをインストールします。

```
##wgetでダウンロードしたインストーラーを実行しましょう！
chmod +x Berryconda3-2.0.0-Linux-armv7l.sh
./Berryconda3-2.0.0-Linux-armv7l.sh

##インストールが終わったら
#export PATH="/home/pi/berryconda2/bin:$PATH"って感じに.bashrcにパスを通しましょう！
#インストール時に自動で書き込まれていたらやらないでいいです
echo '''
export PATH="/パス/berryconda3/bin:$PATH"
''' >> ~/.bashrc
```
これでラズパイでcondaが使えるようになったはずです。
とりあえず、raspberrypiにpipでnumpyなどをいれるとエラーが出たりしたと思うのでcondaで入れてみます

```
#とりあえずいろいろ入れてみましょう
conda install numpy pandas scipy matplotlib chainer scikit-learn
conda install beautifulsoup4 Django
conda install -c conda-forge opencv
pip install googletrans
```
*openCVのインストールは[ここ](https://qiita.com/sai_kai_cs/items/adae1724931042405ec0)を参考にしました。

まぁ、こんなもんでしょう
condaで入らなかったらpipで、pipで入らなかったらcondaでsearchを使って入れればほとんどのモジュールは入るはずです。

とりあえず、今回はここまでで気が向いたらいろいろ更新していきます。
Windows10でSTSのインストールと日本語化

#STSのインストールと日本語化
STSのインストールと日本語化にする方法は以下の通り。

環境

- Windows10 64bit
- Java8

手順

1. [Spring Tool Suite Downloads](http://spring.io/tools/sts/all)でSTSをダウンロードする。
![windows10_sts_ダウンロード.png](https://qiita-image-store.s3.amazonaws.com/0/289168/5c1679eb-8626-de7a-f620-dabe2519d6ea.png)

2. 「spring-tool-suite-3.9.x.RELEASE-e4.8.x-win32-x86_64.zip」を標準Zipで解凍する。(解凍時にパスが長くなり、失敗するのでC直下で解凍すること)
3. 解凍したSTSフォルダを好きなところに配置する。
4. 英語のSTSが正常起動するか確認し、右上の「×」ボタンでSTSを閉じる。 
5. 日本語化ファイルの[ Pleiades プラグイン・ダウンロード](http://mergedoc.osdn.jp/)でpleiades-win.zipをダウンロードする。
![windows10_pleiades-winzip_ダウンロード.png](https://qiita-image-store.s3.amazonaws.com/0/289168/bc903973-5edf-7323-12db-09bef35284b4.png)

6. 「pleiades-win.zip」を標準Zipで解凍する。
7. pleiades-winのsetup.exeを起動して「STS.exe」を選択し、「日本語化ボタン」を押下する。
![windows10_sts_pleiades日本語化.png](https://qiita-image-store.s3.amazonaws.com/0/289168/ab4f9031-4b0e-9f06-e921-43acd3103b92.png)

8. STS.exeを起動して日本語化されていることを確認する。
![windows10_sts_日本語化.png](https://qiita-image-store.s3.amazonaws.com/0/289168/fb1e4d06-d1d0-51cc-82f8-bf5b9fd867e7.png)

以上、最後に「いいね」ボタン押してください。
順位を統計的に解析したい

#順位係数って何ぞや

二つのデータ（変量）が数値でなく順位で与えられている場合があります．例えば，

- 学習の習熟度
- 病気の重症度
- 好みの程度

などがありますね．

| A |$a_1$|$a_2$|$\cdots$|$a_N$|
|:---:|:---:|:---:|:---:|:---:|
| **B**  |$b_1$|$b_2$|$\cdots$|$b_N$|

$a_1,a_2,\cdots,a_N$，$b_1,b_2,\cdots,b_N$は$1$から$N$までの値となり，**同順位は含まない**とします．この時，

```math
\begin{equation}
r_s=1-\frac{6[(a_1-b_1)^2+(a_2-b_2)^2+\cdots+(a_N-b_N)^2]}{N(N^2-1)}
\end{equation}
```

のことを**スピアマンの順位相関係数（Spearman's rank correlation coefficient）**と呼んでいます．

#具体例

ある学校の10人の学生について，「手の器用さの順位」と「コンピューターの習熟度の順位」について調べました（表）．

| サンプル |$1$|$2$|$3$|$4$|$5$|$6$|$7$|$8$|$9$|$10$|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| **手の器用さ** |$5$|$6$|$9$|$3$|$2$|$4$|$8$|$10$|$7$|$1$|
| **コンピューターの<br>習熟度**  |$7$|$5$|$6$|$3$|$4$|$1$|$8$|$9$|$10$|$2$|

スピアマンの順位相関係数を求めてみましょう．計算を簡単にするために，次の様な表を作成します．

| サンプル |$1$|$2$|$3$|$4$|$5$|$6$|$7$|$8$|$9$|$10$|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| $a_i$ |$5$|$6$|$9$|$3$|$2$|$4$|$8$|$10$|$7$|$1$|
| $b_i$  |$7$|$5$|$6$|$3$|$4$|$1$|$8$|$9$|$10$|$2$|
| $a_i-b_i$  |$-2$|$1$|$3$|$0$|$-2$|$3$|$0$|$1$|$-3$|$1$|
| $(a_i-b_i)^2$  |$4$|$1$|$9$|$0$|$4$|$9$|$0$|$1$|$9$|$1$|

したがって，

```math
\begin{equation}
r_s=1-\frac{6\times(4+1+9+0+4+9+0+1+9+1)}{10\times(10^2-1)}=0.7697
\end{equation}
```

となり，「手の器用さ」と「コンピューターの習熟度」には**正の相関がある**ことが分かりました．

#参考

石村貞夫，"統計解析のはなし"，東京図書，1989年
RHEL6.9のgccとglibcをバージョンアップ

##対象完了
RHEL6.9(64bit)
gcc 4.4.7
glibc 2.12-1

```shell:OSバージョン確認
$ cat /etc/redhat-release
```

```shell:gccバージョン確認
$ gcc --version
```

```shell:glibcバージョン確認(yum)
# yum list installed |grep glibc 
```

```shell:glibcバージョン確認(libc)
$ /lib64/libc-2.12.so
```

## gccの更新
### gccのダウンロード
http://gcc.gnu.org/
のミラーサイトでjapanを選択し「releases/gcc-4.8.5/gcc-4.8.5.tar.gz」をダウンロード。

### gccの展開

```shell:gccの展開
# chmod 777 /usr/local/src
$ tar zxvf gcc-4.8.5.tar.gz -C /usr/local/src/
```
### 必要なパッケージのダウンロード

```shell:必要なパッケージのダウンロード
# cd /usr/local/src/gcc-4.8.5
# ./contrib/download_prerequisites
# yum -y install glibc-devel.i686
# yum -y install gcc-c++.x86_64
```
wgetでダウンロードするためproxyの設定が必要な場合は注意。
yumのインストールは既にインストール済みのため両方とも動かなかった

### ビルド

```shell:ビルド
# mkdir build
# cd build
# ../configure --disable-multilib
# make
```
1時間以上時間がかかるので注意

### インストール

```shell:インストール
# make install
```
インストール後は再起動する。

### バージョン確認

```shell:gccバージョン確認
$ gcc --version
$ g++ --version
```
4.8.5になっていることを確認する。

###libstdc++.so.6の置き換え

```shell:libstdc++.so.6の置き換え
# cd /usr/lib64
# cp -p /usr/local/lib64/libstdc++.so.6.0.19 .
# ln -s -f libstdc++.so.6.0.19 libstdc++.so.6
```
Djangoのテンプレートをテストする

# 目的

実際にやるのかやらないのかは別として、
Djangoのテンプレートのテスト方法について備忘として整理する。

# 前提

動作確認は以下の環境で行った。

- Ubuntu 18.04
- Python python 3.6.6
    - Django 2.1.1
    - requests-html 0.9.0

Djangoで利用しているのはテストとテンプレート部分のみなので
Djangoの1系列の割合新しいものであれば使えるはず。


# 手順

テスト対象のDjangoテンプレートは以下の通り。
(他のテンプレートからincludeする前提なのでpartialなHTML)

```html:thread_list.html
<div class="list-group">
    <div class="list-group-item active">スレッド一覧</div>
{% for comment in comments %}
    <a href="#{{ comment.comment_id }}" class="list-group-item">
        {{ comment.title }}
    </a>
{% endfor %}
</ul>
```

テストコードは以下の通り。

```python:test_thread_list.py
from django import test
from django.shortcuts import render
from requests_html import HTML

class TestThreadList(test.TestCase):
    def test_render(self):
        
        # テンプレートに投入するデータの準備
        comments = []
        for num in range(4):
            comments.append({
                'comment_id': num,
                'title': 'title'+str(num),
            })
        response_param = {
            'comments': comments,
        }

        # レンダリングする
        rendered = render(None, 'thread_list.html', response_param)

        # HTMLパーサを準備してパース
        parser = HTML(html=rendered.content.decode())
        ## aタグのリストを取得
        elements = parser.find('a')

        for index in range(len(comments)):
            element = elements[index]
            ## textアトリビュートかあらaタグの中身を取得して比較する。
            self.assertEqual(element.text, "title"+str(index))
```

```bash:テストの実行
$ python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
----------------------------------------------------------------------
Ran 1 test in 0.004s

OK
Destroying test database for alias 'default'...
```

# 注意

あくまでも期待した(partialな)HTMLが生成されているかを
確認しているだけなので、実際のブラウザ上での表示については別途テストが必要。

基本的に専門外のエンジニアの戯言のようなものなので話半分、参考程度の扱いにしておくこと。

# 雑感

テンプレートのテストを書くのか書かないのかは別として、書く場合のやり方として多少の意味は見いだせそう。
プラスで、大きなテンプレートを一枚いたで準備するのではなく、includeなとを適宜使いながら
細かく作っていくことに意義は見いだせるようになりそう。
【Python3】MeCabでテキストファイルから名詞を頻出順に抽出

## やりたいこと
Python3でMeCabを使ってテキストファイルから名詞のみを抜き出し、出現回数ごとにリストアップ


## コード全文
```python:count_noun.py
import MeCab
import sys
import re
from collections import Counter

# ファイル読み込み
cmd, infile = sys.argv
with open(infile) as f:
    data = f.read()

# パース
mecab = MeCab.Tagger()
parse = mecab.parse(data)
lines = parse.split('\n')
items = (re.split('[\t,]', line) for line in lines)



# 名詞をリストに格納
words = [item[0]
         for item in items
         if (item[0] not in ('EOS', '', 't', 'ー') and
             item[1] == '名詞' and item[2] == '一般')]

# 頻度順に出力
counter = Counter(words)
for word, count in counter.most_common():
    print(f"{word}: {count}")
```


## 実行方法
ターミナルで引数にテキストファイルを与えてやれば良い

```
$ python3 count_noun.py ファイル名.txt
```

## おまけ
試しに夏目漱石の『[吾輩は猫である（青空文庫）](https://www.aozora.gr.jp/cards/000148/files/789_14547.html)』から最頻出単語ベスト10を調べてみた

<br>

```
主人: 933
人: 357
迷亭: 329
先生: 274
顔: 273
人間: 272
猫: 248
細君: 213
鼻: 199
自分: 175
```

<br>

タイトルにある『猫』という単語は作品中に248回と意外と出てこない

<br>
JuliaImagesの備忘録その１

Juliaで画像処理をやってみようと言うことで、練習も兼ねてJulia100%で書かれた[Images](https://github.com/JuliaImages/Images.jl)の備忘録。


# ここで使うもの

WindowsとMac環境で試してみましたが、OSによって別途パッケージのインストールが必要かもしれません(ImageMagick, GtkReactive等)。

* Images
* TestImages
* FileIO
* ImageView

```Julia
import Pkg
Pkg.add("Images")
```

JuliaImagesでは、他と比べて細かい単位でパッケージ分割がされていますので、MatlabやPythonに慣れた方は一度[Comparison with other image processing frameworks](http://juliaimages.github.io/latest/api_comparison.html)を見ておくといいかもしれません。

## サンプル画像の読み込み

`TestImages`を使います。cameramanやmandrill, lena, lena_grayなどのよく使われる画像が使えました。

```Julia
Pkg.add("TestImages")
# Pkg.add("ImageMagick")  # 必要かも・・・

# テスト画像の読み込み例
using Images, TestImages
img = testimage("cameraman")
```

### 画像の読み込み/書き出し

`FileIO`を使うと便利です。画像の読み書き専用ではありませんが、[リポジトリ](https://github.com/JuliaIO/FileIO.jl/blob/master/src/registry.jl#L43)をざっと見る限り、主要なフォーマット(bmp, png, jpg, gif, pdf...)は一通り使えそうです。フォーマット次第かもしれませんが、macだと`QuartzImageIO`のインストールが必要でした。

```Julia
Pkg.add("FileIO")
using FileIO
img = testimage("cameraman")
save("myphoto.png", img)
img2 = load("myphoto.png")
```

## 画像の表示

### Juno

描画メソッドを呼ばなくてもPlotsタブに画像を表示してくれます。

![Screen Shot 2018-09-16 at 4.08.14 PM.png](https://qiita-image-store.s3.amazonaws.com/0/171142/1ea509a1-04bd-5642-ee8b-072effed08bb.png)

### IJulia(Jupyter)

ドキュメントの[ここ](http://juliaimages.github.io/latest/install.html#Displaying-images-1)と同じですね。

<img width="839" alt="Screen Shot 2018-09-16 at 4.10.54 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/171142/835368d4-c03c-9062-e742-70b727b9d1d6.png">

### ImageView

terminalなどで使う方法です。Matlabを使う場合や、PythonでOpenCVやmatplotlibを使う場合に似ていますね。

```Julia
Pkg.add("ImageView")
using TestImages, Images, ImageView
img = testimage("cameraman");
imshow(img)
```

<img width="624" alt="Screen Shot 2018-09-16 at 4.40.39 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/171142/154b5493-6550-402e-e9c1-57eb6e623577.png">

注意点としては、スクリプトで使う場合は[こちら](https://github.com/JuliaImages/ImageView.jl#calling-imshow-from-a-script-file)で紹介されているようにしないとJuliaが終了してしまいます。

----

ここまで。
次回は配列とcolorviewを整理します。

http://juliaimages.github.io/latest/quickstart.html
FCM で FirebaseInstanceIdService の Deprecated を解消する

## はじめに
FCMのバージョンを `17.1.0` に上げてから、以下の部分がDeprecatedで警告が出るようになりました。

```kotlin:MyFirebaseInstanceIDService.kt
class MyFirebaseInstanceIdService : FirebaseInstanceIdService() {
    override fun onTokenRefresh() {
        val token = FirebaseInstanceId.getInstance().token
        // トークンをサーバに送る処理など
    }
}
```

理由としては、バージョン`17.1.0`から [FirebaseInstanceIdService](https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceIdService) のクラス自体がDeprecatedなったからです。
その代わりに、 [FirebaseMessagingService](https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessagingService) にonNewTokenメソッドが追加されました。
このDeprecatedを解消した手順を書きます。

## 手順

### 1. FirebaseInstanceIdService の使用箇所を削除
以下の行を削除。

```xml:AndroidManifest.xml
<service
    android:name=".MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>
```

以下のファイルを削除。

```kotlin:MyFirebaseInstanceIDService.kt
class MyFirebaseInstanceIdService : FirebaseInstanceIdService() {
    override fun onTokenRefresh() {
        val token = FirebaseInstanceId.getInstance().token
        // トークンをサーバに送る処理など
    }
}
```

### 2. FirebaseMessagingService で新しいトークンを取得するように修正

FirebaseMessagingService のonNewTokenメソッドを追加。
FirebaseMessagingService を継承したクラスがない場合は、新規で作成。

```kotlin:MyFirebaseMessagingService.kt
class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onNewToken(token: String?) {
        // トークンをサーバに送る処理など
    }
}
```

新規で作成する場合は、以下の記述も追加。

```xml:AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
```

### 3. 上記以外で、トークンを取得している部分を修正

FirebaseInstanceIdを使って、トークン取得している部分を変える

#### Before

```kotlin
val token = FirebaseInstanceId.getInstance().token
```

#### After

```kotlin
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener { result ->
    val token = result.token
}
```
３つのC++コンパイラを使う

Cは成熟し、標準ライブラリのセキュリティ対策が課題かもしれない。
それに対して、C++は、まだ発展途上。３つのコンパイラを使って、
コンパイルエラー、警告を出してみて、

1 どういうプログラミングをするとよいか
2 どの関数を使うとよいか
3 どのコンパイラを使うとよいか

を検討する。

３つのC++コンパイラでコンパイルしておけば

1 可搬性
2 言語規格適合性
3 大きさと速さ

を確認できる。

#Visual Studio

##文字コード
Macintosh, Linuxで書いたソースをWindowsでコンパイルしようとすると文字コードのエラーがでることがある。

### mac

```
$ brew install nkf
```

```
#!/bin/bash
for var in `ls -1 *.cpp`
do
   nkf -w8  $var > ./cpp/$var
done
```

###windows
nkf32.exe

nkfを使ってファイルの文字コードを変換する
https://dev.classmethod.jp/tool/exchange-file-encode-by-nkf/

nkfツールで文字コードを変換する（Windows編）
http://www.atmarkit.co.jp/ait/articles/1301/25/news092.html

##改行、ファイルの終わり(End of File: EOF)
コンパイラによってはEOFがないと警告を出すものがある。
Add `conda-forge` channel (lowest priority)


## 概要
- conda のdefault channelにないものを探す
- `conda-forge` channelにお世話になる
- `conda install -c conda-forge package-name` するのは面倒
- default を優先しつつ、存在しないときは `conda-forge`から探すように設定する

## reference
> https://github.com/conda/conda-docs/blob/master/docs/source/user-guide/tasks/manage-channels.rst
Conda also now has a command that adds the new channel to the bottom of the channel list, making it the lowest priority:

## run command and confirm
```bash
conda config --append channels conda-forge
```

```bash
# cat  ~/.condarc
channels:
  - defaults
  - conda-forge

# conda config --get channels
--add channels 'conda-forge'   # lowest priority
--add channels 'defaults'   # highest priority
```
macOSでPythonをHomebrewでインストールしている場合にPython 3.6 系を使う方法


[PyCon JP 2018 Tutorial](https://pyconjp.connpass.com/event/94980/)でハマったので共有します。

なぜPython3.6系をインストールするのか
---------------------------------------------------------------------

Django のLTSである 1.11 が Python 3.7 に未対応のため。


結論
---------------------------------------------------------------------

次の2択。

### 1. 自分のCellarに残っているPython3.6系に切り替える

失敗するかもしれないけれことを覚悟しつつ次のコマンドを打ってみる。

```bash
$ brew switch python 3.6.5_1 # or 3.6.5, 3.6.4. ...
```

もし、自分のCellarに残っているバージョンがわからなくても、Python 3.6系が残っていれば次のように表示される。

```bash
$ brew switch python 3.6.5 # Cellarに無いバージョンを指定した場合
Error: python does not have a version "3.6.5" in the Cellar.
python installed versions: 3.6.5_1, 3.7.0
```

### 2. 自分のCellarにPython3.6系が残っていない

上記の方法を行ったときに次のようにPython3.7系しかインストールされていないことがわかった場合の対処方法。

```bash
$ brew switch python 3.6.1
Error: python does not have a version "3.6.1" in the Cellar.
python installed versions: 3.7.0
```

Python 3.6.5_1を次のようにしてインストールできる。

```bash
$ brew unlink python
Unlinking /usr/local/Cellar/python/3.7.0... 25 symlinks removed
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb 

# たくさんのメッセージが出てくる
==> Summary
🍺  /usr/local/Cellar/python/3.6.5_1: 4,740 files, 99.3MB
```

上記が終わったあとに次のコマンドで切り替えられる。

```bash
$ brew switch python 3.6.5_1
```

その他の方法
---------------------------------------------------------------------

次の方法が考えられるが、それぞれオーバーキルになりがちなため普通にインストールした。

1. pyenvの利用
2. dockerの利用

Reference
---------------------------------------------------------------------

* [How can I install a previous version of Python 3 in macOS using homebrew? - Stack Overflow](https://stackoverflow.com/questions/51125013/how-can-i-install-a-previous-version-of-python-3-in-macos-using-homebrew/51125014#51125014)
VBAからのAppleScript呼び出し その２

#これまでのあらすじ
[前回の投稿](https://qiita.com/negiboudu/items/ae63a6b977887e40c690)では、
*Application.FileDialog*の代わりに、
AppleScriptの*choose folder*を使用して、
フォルダ選択ダイアログを表示することまではできました。

あとは、*FileSystemObject*で行っていたことを代替する処理を作って
選択したフォルダ内のファイル名を全て取得するだけ！

#そう簡単にはいかなかった
AppleScriptのヘルプにそれっぽいサンプルがありました。
AppleScriptからFinderアプリケーションを呼び出す（tellする）ことで
簡単に実現できそうでしたが、つまずいたポイントがいくつか。
###１．VBAからtellを含むScriptをMacScript(…)で呼び出すとエラーになる
なぜエラーになるのかは結局わかりませんでしたが…
サポートされないMacScript関数を使うのをあきらめ、
サポートされているAppleScriptTask関数を使うことにしました。

こちらを使う場合、スクリプト部分が別ファイルになり、
美しくはあるのですが、チェックツールがExcelブック1つで済まないので
他者に導入してもらうハードルが上がりました。でもやむなし。

###２．スクリプトファイルを読み込んでくれない
マクロブックとスクリプトファイルを同じパスに置いておけば良いという情報を得ましたが、
どうもうまくいかず。。。
以下のパスにスクリプトファイルを置く必要があるようです。
~/Library/Application Scripts/com.microsoft.Excel/

情報元
https://docs.microsoft.com/ja-jp/office/vba/office-mac/applescripttask
https://www.rondebruin.nl/mac/applescripttask.htm

非表示の「ライブラリ」フォルダへのアクセス
https://helpx.adobe.com/jp/x-productkb/global/cpsid_91195.html

###３．POSIXパス問題
finderをtellしてフォルダを開くとき、
POSIX（/Users/ユーザー名/Downloads/…など）形式でパス指定すると動きませんでした。

[前回の投稿](https://qiita.com/negiboudu/items/ae63a6b977887e40c690)で作成したスクリプトをMacScript関数で実行すると、
POSIXじゃない形式（Macintosh HD:Users:ユーザー名:Downloads:…）でパスが取得できるのですが、
AppleScriptTask関数で実行するとPOSIXになってしまいました。
スクリプト単体をスクリプトエディタで実行するとPOSIXじゃない形式で返ってくるのですが、
Excel for Mac(2016)がどうやら勝手に変換しているようです。。。

情報元
https://www.rondebruin.nl/mac/mac017.htm

結局、フォルダパスをPOSIXで取得し、使う前に変換をかけることでうまくいきました。
finderをtellしている中では変換がうまくいかなかったため、tellする前に変換しています。

```applescript:POSIXで取得
set slctFolder to POSIX path of (choose folder with prompt msg)
```
```applescript:変換
set realpath to POSIX file slctFolder
```
```applescript:使う
tell application "Finder"
  set filelist to every file in folder realpath
end tell

set fnames to ""
repeat with afile in filelist
  set fnames to fnames & "," & name of afile
end repeat
return fnames
```

```vb:VBA側（呼び出し元）
filenames = AppleScriptTask("chktool_formac.scpt", "getFileListString", Path)
```
param1:スクリプトファイル名
param2:呼び出すハンドラ名。関数名と考えて良さそう。
param3:ハンドラに渡すパラメータ

#上記以外の参考サイト
大変助かりました。ありがとうございました！
http://d.hatena.ne.jp/zariganitosh/20100924/apple_script_alias_posix_file
エンジニアのためのドキュメントデザイン術（目次）

エンジニアのためのドキュメントデザイン術の連載につき、目次ページを作成しました。

なお、不要な場合、目次ページは削除するかもしれません。

- エンジニアのためのドキュメントデザイン術（序文）
https://qiita.com/sutton/items/d409b6a79aa965d0e62c

- エンジニアのためのドキュメントデザイン術（目次）
本ページです。

- エンジニアのためのドキュメントデザイン術（フォント・書体）
https://qiita.com/sutton/items/c27c537ac45c46e248a0

- エンジニアのためのドキュメントデザイン術（色彩1）
https://qiita.com/sutton/items/08e3af0f01bfd7bbc417

- エンジニアのためのドキュメントデザイン術（色彩2）　
https://qiita.com/sutton/items/e60229e33bcb99a4d63f

- エンジニアのためのドキュメントデザイン術（色彩3）
https://qiita.com/sutton/items/57c1e22a16a212f9a501

- エンジニアのためのドキュメントデザイン術（色彩4）

- エンジニアのためのドキュメントデザイン術（レイアウト）

- エンジニアのためのドキュメントデザイン術（＊＊＊）
PowerShell で ファイル文字長制限を考慮したファイル一覧を取得する

# 説明

- PowerShellでファイル文字長制限（PathToLongException、指定されたパス、ファイル名、またはその両方が長すぎます。）が発生する場合の対策
- サードパーティーのDLL（[http://alphafs.alphaleonis.com/](http://alphafs.alphaleonis.com/)）を利用します。
    - スクリプトと同じフォルダに配置します。
- 隠し属性のファイルは除いています。
- サイズによる制限も実行部には記載しています。

# コード

```PowerShell:関数
function GetRecurseFiles($mypath) {
    <#
    .DESCRIPTION
    255文字制限対策（サードパーティーの情報を使用する）  
    #>
    Import-Module .\AlphaFS.dll
    $fso = New-Object -ComObject Scripting.FileSystemObject 

    $myfi = @()

    [Alphaleonis.Win32.Filesystem.Directory]::GetFiles($mypath, "*", [System.IO.SearchOption]::AllDirectories) | ForEach-Object {
        $longFullName = $_
        $f = $fso.GetFile($longFullName) 
        $shortName = $f.ShortPath
        $onefile = Get-Item -Force -LiteralPath $shortName

        if ($onefile.Attributes -band [System.IO.FileAttributes]::Hidden) {
        }else{
            $myfi += $onefile
        }
    }

    return $myfi 
}
```

```Powershell:実行部
# フォルダパス
$filepath = "C:\Temp\"
# 50MB以上制限
$maxsize = 1024*50000

# 取得
$fi = GetRecurseFiles($filepath) | Where-Object {$_.Length -ge ($maxsize)}

# 確認
Write-Host $fi.Count
$fi | ForEach-Object {
    Write-Host $_.Name
    Write-Host $_.FullName
    Write-Host $_.Length
}
```
Vue メモ

Vueファイルは大まかに

```
<template>
<script>
<css>
```
で成り立つ。
これでひとつのコンポーネント(部品)となる

このコンポーネントをSinglePageに組み込み、URLのパスで呼び出すコンポーネントを指定する

大元はindex.html
ここにApp.Vueを呼び出す処理を書いておく

```
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
```

App.Vue

```
<template>
  <div id="app">
    <img src="./assets/logo.png">
    <router-view/>
  </div>
</template>
```

```
<router-view/>
```
というところに
router/index.jsで定義されたURLのパスに対応するコンポーネントが入ってくる

なので、どの画面でも同じものを表示したければ.App.Vueに書いてしまおう
property宣言

IEE1800-2017では16.12 Declareing propertiesという節にproperty宣言について書かれています。

書かれていることを抜粋すると
- propertyはデザインのbehaviorを定義するもの。
- 名前付きのpropertyはassumption, obligation, coverageの仕様として使われる。
    - obligationといっているのが検証対象がこういう動きをしなければならいという仕様のことで、あとでassert宣言されるものを指していると思います。
- 検証するためのbehaviorとして使うにはassert, assume, cover宣言が必要。

名前付きのpropertyは次のような箇所で宣言する

- module
- interface
- program
- clocking block
- package
- compilation-unit scope
- generate block
- checker

とあります。
この中でchecker blockは1800-2012で追加されたblockだと思います。ツールが対応しているかどうか確かめるためサンプルコードを書いたことはありますが実務では使ったことがありません。checker blockを活用している人いますか？

class内には書けないので、UVMのdriver classとかmonitor class内に書いて使うことはできません。interface blockにinterfaceのチェックをするproertyを書くという使い方になります。

property宣言の形式は下記のようになります。


**property** *propertyの名前* [([propertyのポートリスト)]**;**
   {アサーション変数}
   [clockingイベント][**disable iff** (disableの条件式)] 
   property本体 [;]
**endproperty**

property本体と書いてあるのはIEEE1800のドキュメントのBNFで書かれた仕様ではproperty_specと書かれているものですが、適当に意味が分かるような言葉に置き換えています。

property本体 [;]
となっていてproperty_specの後にセミコロンをつけてもつけなくてもよくなったんですね。以前の規格ではセミコロンが必ず必要だったような気がしますが手元に仕様書がないので確認できない。

```
property p_sample;
    @(posedge clk) disable iff(!rst_n)
        start |-> ##1 ack
endproperty
```

上のpropertの意味は次のようになります
propertyの名前はp_sample。
clkの立ち上がりでproperty本体の式を評価する。
rst_nがLならチェックをキャンセル。
startがHなら次のサイクルでackがH。
AWS:Cloud9使用時にフリーズした時の対処方法。

##発生した問題
Cloud9で開発中に以下の画像のようなエラーに遭遇し接続不可能になりました。
無事解決に至りましたので、備忘録を含め記録として残したいと思います。



<img width="865" alt="スクリーンショット 2018-09-16 15.55.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/226787/faeb6c3f-b861-e2ab-6c5d-f61438b2f35a.png">


```Ruby:エラー文
This is taking longer than expected. If you think there might be an issue, contact AWS Support.
It might be caused by VPC configuration issues. Please check documentation.
```



##以下のURLにアクセスしインスタンスの状態を停止することで解決。
①下記のURLにアクセスをしてください。

<a href="https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Instances:sort=instanceId">`https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Instances:sort=instanceId`
</a>

<img width="352" alt="スクリーンショット 2018-09-16 15.56.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/226787/8535cbc0-5caf-a12d-0eba-9a9ee4102e4b.png">


②該当プロジェクトを選択後`アクション`をプルダウン。
`インスタンスの状態`を一度`停止`にしていただき、動作停止後`開始`をクリック。
③再度ワークスペースにアクセス。

上記プロセスで解決いたしました。

ご参考になれば幸いです。
コンピューター将棋きふわらべ開発だらだら まとめ。

# だらだら書く。

Lint を入れよう。

使っている言語は Rust、　エディターは Visual Studio Code。
よその Qiita記事を参考にしてみよう。

https://qiita.com/skitoy4321/items/0bf6826f948720bed821

https://qiita.com/kat_out/items/cf89a8dffb4e0629948a

https://qiita.com/hhatto/items/9415cc5c11b3b201030a


Git hub から rls-vscode を拾ってこいとのことだ。

https://github.com/rust-lang-nursery/rls-vscode

Visual studio code からでもインストールできるだろう。


# サーバー先入れろとのこと。

だいたい なんか自動化するときには ローカルPCの中でも Server プログラムをずっと動かしておく。

https://github.com/rust-lang-nursery/rls

Git hub の最初のページの下の方には readme.md が表示されてるんで、
Setup の章を探して読めだぜ。

Windowsのコマンドラインは [Ctrl]+[R]キー、"cmd"と打鍵して[Enter]キー だぜ。


```
rem とりあえず 自分のプロジェクト用のディレクトリに移動しろだぜ。
cd C:\MuzudhoDrive\projects_rust

rem そしてRustをアップデート。
rustup update

rem そのあと、説明書に書いてあるのと同じコマンドをコピペして[Enter]。
rustup component add rls-preview rust-analysis rust-src
```

うまくいっていると、Rustのファイルを開いたときに、Visual Studio Code の一番下の左の方に RLS と表示されているだろう。



# Visual Studio Code マーケットプレイス のアイコンを覚えておこう。

「マーケットプレイス何それ？」という人がいたら　欲しいものを取ってくる仕組みで
最初から使える、早く覚えろ　と説明しておこう。

このような　あとから足す機能をプラグインという。言葉も覚えろ。
なお Visual Studio Code では プラグインではなく Extension（エクステンション）と呼ぶもよう。

左端の一番下に　マーケットプレイスを開くアイコンがあったのでダブルクリックする。


```
rust rls
```

で検索。 ```Rust (rls)``` というのがあるので　多分これだろう。
選んで install ボタンをクリック。


# Visual Studio Code のいろんな設定は [Ctrl] + [,] ショートカットから

「設定何それ？」という人がいたら　取ってきたものを使えるようにする仕組みで
最初から使える、早く覚えろ　と説明しておこう。

インストールしたプラグインも　設定してないと使えないものはある。

左のメニューに ```Extension``` とかあったら　それを選べだぜ。
その中に ```Rust configuration``` という名前のメニューがあるだろう。
このメニューには configuration（設定）が並んでいるのだから、
メニューの名前に「configuration」と付けているのは　冗長（じょうちょう；無駄に長いという意味）だぜ。


# clippy も入れよう。

https://github.com/rust-lang-nursery/rust-clippy

```
rustup component add clippy-preview
```

これで clippy-preview は入ったので、自分で作っている Rust のプロジェクトに cd コマンドで移動する。

```
cargo clippy
```

と打鍵して[Enter]。
これで Lint が動く。

## あるいは

コマンドラインを使わずに

Cargo.toml に次のように書いて、

```
[dependencies]
clippy = { version = "*", optional = true }
```

main.rs の冒頭に

```
#![cfg_attr(feature="clippy", feature(plugin))]
#![cfg_attr(feature="clippy", plugin(clippy))]
```

と書いとけばいいらしいが、別に変化がない。なんだろうか。

```cargo clippy``` が

```
#[allow(never_loop)]
```

と書けと言ってきたり、```cargo build``` が

```
#[allow(never_loop)]
```

なんて知らないぞ、と言ってきたりして　ケンカする。どうしたものか。


# だったらマーケットプレイスに Clippy があるんじゃないのか？

探してみよう。

無い。




／／書きかけ
[Flutter] Firebase Authentication の導入 (Debug用)

Firebase Authentication を使ってGoogleアカウントによる認証を Flutter で導入してみる。Android/iOS ともにFirebase Authenticationを使ったことがなかったのでいくつかハマった、のでメモ。

今回は Debug 用の話なので、もしかしたら Release の際には他にも設定などが必要かもしれない。あくまでも、とりあえず勉強がてら遊んでみたい、という目的なことに注意。

基本的には、以下の公式な導入方法に従えばよいはず。

https://pub.dartlang.org/packages/firebase_auth#-readme-tab-

## Firebase Console にて Authentication を有効にする
Firebase Console から Authentication 機能を有効にする。

「Authentication」 -> 「ログイン方法」 -> 「Google」 とたどり、有効/無効を切り替えるスイッチをONにする。

今回はとりあえず Google アカウントでのログインのみを試す。他にも Facebook とか Twitter とかある。便利だなぁ。。。


## パッケージの導入
２つのパッケージが必要になる。　以下の様に `google_sign_in` と `firebase_auth` の２つを追加。その後 `Packages Get` を実行。

```yaml
dependencies:
  flutter:
    sdk: flutter
  google_sign_in:
  firebase_auth:
```

iOS と Android で必要な作業が異なる。

### iOS:
iOS で利用するためには以下が必要。

#### 設定ファイルの設置と Info.plist の編集
`GoogleServices-Info.plist` を Firebase Console からダウンロードして、 `ios/Runner/GoogleServices-Info.plist` に配置する。

`ios/Runner/Info.plist` に以下を追記。 **`GoogleServices-Info.plist` の `REVERSED_CLIENT_ID` の値をコピペすること！**

```
<!-- Google Sign-in Section -->
<key>CFBundleURLTypes</key>
<array>
	<dict>
		<key>CFBundleTypeRole</key>
		<string>Editor</string>
		<key>CFBundleURLSchemes</key>
		<array>
			<string>{GoogleServices-Info.plist から REVERSED_CLIENT_IDをコピーしてここに貼り付ける}</string>
		</array>
	</dict>
</array>
<!-- End of the Google Sign-in Section -->
```

### Android:
Android で利用するためには以下を行う必要がある。

#### 証明書のSHA1をFirebaseに登録
Android で利用するためには Firebase Console の Android アプリ設定から、証明書の Fingerprint (SHA-1) を設定する必要がある。

Debug 用の証明書の Fingerprint　は以下のコマンドで確認できる。(おそらく一回はビルドしていることが必要。ビルド時に自動生成されるようだ？)

```sh
$ keytool -list -v -keystore ~/.android/debug.keystore
```

上記コマンドを実行すると、「証明書のフィンガプリント」という項目があるので、そこの SHA1 をコピーし、

「Firebase Console」 -> 「プロジェクト設定」 -> 「Androidアプリ」　-> 「フィンガープリントの追加」

にペーストして追加。

#### gradle ファイルの編集
`android/build.gradle` の dependencies に `classpath 'com.google.gms:google-services:3.2.1'` を追加。

`android/app/build.gradle` の末尾に `apply plugin: 'com.google.gms.google-services'` を追記。

もしかしたら Firebase の他の機能などを利用する過程で、すでに記入されているかもしれない。その場合は何もしなくて良い。

## 使ってみる

まずは import をする。

```dart
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
```

`GoogleSignIn` と `FirebaseAuth` を初期化する。

```dart
final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;
```

以下のような感じで認証が実行できる。画面遷移などは勝手に行われる。

```dart
// この関数を呼び出せば、画面遷移なども含めて認証が行われる。成功すれば user が取得できる。
Future<FirebaseUser> _handleSignIn() async {
  GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  GoogleSignInAuthentication googleAuth = await googleUser.authentication;
  FirebaseUser user = await _auth.signInWithGoogle(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );
  print("signed in " + user.displayName);
  return user;
}

```


## おわり
Androidアプリを作ったことがなかったので、証明書関連で少し躓いた。iOS版では `GoogleServices-Info.plist` の `REVERSED_CLIENT_ID` の値を使わないと行けないところを、公式ページに書いてある内容をそのままコピペしてしまってクラッシュしてしまたりして躓いた。。。

要注意。
lubuntu18.04ホストのKVM上にCentOS7をインストールする

# KVMのインストール

```
$ sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager
```

# CentOSのインストールメディアのダウンロード

```
$ wget http://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso
```

# 仮想マシンの作成

```
$ sudo virt-manager
```

仮想マシンマネージャーウィンドウが立ち上がるので、メニューバーのファイル --> 新しい仮想マシンをクリックする。次の5ステップで作成します。。

1. ローカルのインストールメディア（ISOイメージまたはCD-ROMドライブ）をチェックして進む
2. ISOイメージを使用をチェックして参照ボタンからCentOS-7-x86_64-Minimal-1804.isoを選択する
3. メモリ：2048MB、CPU：2個。適当で良い
4. 仮想マシン用にディスクイメージを作成するをチェックして60GiB。適当で良い
5. 名前をmiyu。適当で良い

![create_new_virtualmachine1.png](https://qiita-image-store.s3.amazonaws.com/0/271649/fa03f2bb-db6f-d4f5-dd6b-797521adbdd0.png)
![create_new_virtualmachine2.png](https://qiita-image-store.s3.amazonaws.com/0/271649/08da9bea-647c-f02a-5f7d-b4fbb5efda9e.png)
![create_new_virtualmachine3.png](https://qiita-image-store.s3.amazonaws.com/0/271649/9bdd1f55-62ed-fdfd-b021-d6c8e978fb60.png)
![create_new_virtualmachine4.png](https://qiita-image-store.s3.amazonaws.com/0/271649/8f65cb28-6086-d537-9dfc-c08c289a425a.png)
![create_new_virtualmachine5.png](https://qiita-image-store.s3.amazonaws.com/0/271649/20708e57-91f6-ba5c-de16-33660c0bb34a.png)

# ゲストOSのインストール

1. Install CentOS 7を選択してエンターを押す
2. インストール時に使用する言語を日本語にする
3. インストール先を選択して、virtio Blocks Deviceにチェックが入っていることを確認して完了を押す。
4. ネットワークとホスト名を選択して、接続をオンにして必要であればホスト名を設定する。
5. インストールの開始を押す。
6. インストール中にROOTのパスワードと、ユーザの作成をする。
![install_centos7.png](https://qiita-image-store.s3.amazonaws.com/0/271649/f477faf6-e3e2-cfd5-4998-f4f9465f70a9.png)
![install_language.png](https://qiita-image-store.s3.amazonaws.com/0/271649/cebc648a-aba7-3945-dc81-c6e18aa918a2.png)
![system_install.png](https://qiita-image-store.s3.amazonaws.com/0/271649/98934858-d403-495a-f2bd-1c2e8892ce16.png)
![install_destination.png](https://qiita-image-store.s3.amazonaws.com/0/271649/56716320-2f8b-e8dd-827c-57193e4e73ff.png)
![install_network.png](https://qiita-image-store.s3.amazonaws.com/0/271649/14a2bd4d-55c4-d40f-7818-90c75dc077c2.png)
![install_start.png](https://qiita-image-store.s3.amazonaws.com/0/271649/664f4a97-3c9d-836d-5f78-6d7f16977bce.png)
![user_setting.png](https://qiita-image-store.s3.amazonaws.com/0/271649/5f2f53fe-68e2-1f64-4eed-61c253ebc762.png)

ここまでくればインストールが完了します。:clap: