OmniAICreator/Qiita-1.07M huggingface dataset:
testnetでのビットコインの入手

+ https://testnet.manu.backend.hamburg/faucet

# 新しいアドレスの生成

```
$ bitcoin-cli getnewaddress
mgPHsFbpCoc7Y5pWCSwM7CFW4bQJpTbWvw
```

# アドレスにアカウントを設定

```
$ bitcoin-cli setaccount mgPHsFbpCoc7Y5pWCSwM7CFW4bQJpTbWvw takahero
```
```
$ bitcoin-cli listaccounts
{
  "": 0.00000000,
  "takahero": 0.00000000
}
```

# ワレット残高

```
$ bitcoin-cli getbalance
0.00000000
```

# testnetでのビットコインの入手

<img width="1144" alt="1.png" src="https://qiita-image-store.s3.amazonaws.com/0/7086/6657ae40-bfe9-4678-131a-22767d4f3e20.png">

[![b](https://i.gyazo.com/697cb4d56b2d981c223db30a6b9cc492.png)][a]
[a]: https://www.blocktrail.com/tBTC/tx/d38ea103ce6fdbffcb100a6a21f23c2d390583beb74fba47118f5eda980ee176

+ ワレット残高確認

```
$ bitcoin-cli getbalance
1.30000000
```

# 自分宛てのUTXOを確認

```
$ bitcoin-cli listunspent
[
  {
    "txid": "d38ea103ce6fdbffcb100a6a21f23c2d390583beb74fba47118f5eda980ee176",
    "vout": 0,
    "address": "mgPHsFbpCoc7Y5pWCSwM7CFW4bQJpTbWvw",
    "account": "takahero",
    "scriptPubKey": "76a914098522e4533f105a7939686145346f71bd35fefe88ac",
    "amount": 1.30000000,
    "confirmations": 1,
    "spendable": true,
    "solvable": true,
    "safe": true
  }
]
```

# トランザクション内容の確認

```
$ bitcoin-cli gettransaction d38ea103ce6fdbffcb100a6a21f23c2d390583beb74fba47118f5eda980ee176
{
  "amount": 1.30000000,
  "confirmations": 1,
  "blockhash": "000000000000002d64410852498b7caf40741bc6c16f707bf58046f5a49e0e14",
  "blockindex": 2,
  "blocktime": 1507443519,
  "txid": "d38ea103ce6fdbffcb100a6a21f23c2d390583beb74fba47118f5eda980ee176",
  "walletconflicts": [
  ],
  "time": 1507442414,
  "timereceived": 1507442414,
  "bip125-replaceable": "no",
  "details": [
    {
      "account": "takahero",
      "address": "mgPHsFbpCoc7Y5pWCSwM7CFW4bQJpTbWvw",
      "category": "receive",
      "amount": 1.30000000,
      "label": "takahero",
      "vout": 0
    }
  ],
  "hex": "01000000000101ab7d7d8d0c2451878305ec42085f3d56a62f71024b7f0f409184b5b4bd65108401000000171600149688486ab5df5c63b85f7ebd6d8c5e81ab619493ffffffff0280a4bf07000000001976a914098522e4533f105a7939686145346f71bd35fefe88ac22dac9742e00000017a914aec2000bf609a6d6fcebbe04b7d80dcbe31b770e8702483045022100f7e5f21c3d034c4999563e1569e0f5b8d90c2ec8c594511faa6d49ee562d36c402202b7dd64a11d8ce1ef1c6e6e71e5454be5c78cd7edec3813562b9ea6b15d7abe80121039e20fca831296eef092467d61fe17a80d17320c6e35162e1515945b88131f72100000000"
}
```
Firefoxで起きたちょっと面白い変化

※確か54->55のVerUp時に発覚したお話です。**今更55の話かよとか言わないで**。

# 何がおきたの？
Firefoxにおいて、ある画面のsubmitが正常に動作しなくなったそうです。その画面はボタンを押されるとsubmitをtargetを変更しつつ二回行うことでタブを増やすような処理を行っていました。
なんとjQuery 1.6が使われていたぐらいには「れがしぃ」なコードです……

```JavaScript:rubbish.js
// ※たしかこんな感じだった……はず
$(function(){
  var t = $("#test");
  $("#b").click(
  function(){
      t.attr("target", "_self");
      t.val(1);
      t.submit();  // こっちが実質的に機能してなかった
      t.attr("target", "_blank");
      t.val(2);
      window.setTimeout(function(){t.submit();}, 100);
      return false;
    }
  );
})
```

なお「*submit連打はねーよ*」とか「*なんでform追加で作らないんだ*」とか「*なんだってメソッドチェーンすらしないんだ*」とか「*1つのfunctionでこれとか何考えてんだ*」とかそういうツッコミは受け付けません。
**もう俺がツッコんだ後だよ。**

# どうやって直したのさ。
どうも聞いた限りだと、こんな感じ。

```JavaScript:usable-rubbish.js
$(function(){
  var t = $("#test");
  $("#b").click(
  function(){
      t.attr("target", "_blank");
      t.val(1);
      t.submit();
       
      window.setTimeout(function(){
        t.attr("target", "_self");
        t.val(2);
        t.submit();
      }, 100);
             
      return false;
    }
  );
})
```

要するに、**setTimeoutで2回目のsubmit周辺をまるごと切り離している**のです。
もともとこのsetTimeoutはChromeのSubmit連打対策として導入したもの。色々いじっているうちに「ひょっとしてここに全部ぶち込めば話が済むのか？」となったんだとか。
ただし、**ところでこれでどうして直ったんだ？**という謎が残っています……

なお、ちょっと聞いたところによると、「Firefox 55からマルチタスクな処理が強化されたからそのせいじゃないかなー？」とのこと。
確かに[ここらへんにそれっぽいことが書いてある](https://www.mozilla.org/en-US/firefox/55.0/releasenotes/)んだけど、つまり「submitは非同期な感じの処理になったんだよ！！」ということなんだろうか (その結果targetの書き換えが先に走ったとすれば説明がつく……よね？) 。

# まとめ
**連続Submitはどうあがいてもバグの味しかしないぞ！**
投げっぱなしジャーマンでどっとはらい。

実際ちょっと原因が気になるので、どなたかご存知であればお教えください……
【Windows】リダイレクトに失敗するとリダイレクト元のコマンドが実行されない

案件でbatファイルの修正を行った際に発覚した割とヤバい(と思う)挙動があったので記事にしました。

#はじめに
リダイレクトはコマンドの出力結果を書き込んでくれるので
batファイルの各コマンドの終わりに入れている人も多いと思いますし、それはごく自然な書き方だと思います。

このようにリダイレクト先のtxtはコマンドの結果ログとして使用することが出来ます。
標準エラー出力をリダイレクトするようにしとけば何かエラーあっても
ログ見ればエラー内容を特定できます。超便利ですね。

じゃあ何がまずいのか。。。

#問題点
**リダイレクトに失敗するとリダイレクト元のコマンドが実行されない**ことが問題点です。

え？リダイレクトってコマンドの出力結果を書込みにいくんだから
順序はコマンド実行⇒出力結果書込みでしょ？コマンドは先に実行されてんじゃん。


・・・と思ってましたが現実は違いました。


#再現テスト
簡単に再現できるのでやってみましょう。

>
1. 準備としてaaa.txtとbbb.txtを作成
2. aaa.txtを排他モードでオープン
3. del 直下のパス\bbb.txt >> 直下のパス\aaa.txt
4. 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」というメッセージが出る
5. 削除対象のbbb.txtは削除されていない
>


今回は一例としてリダイレクト元のコマンドをdelにしましたが別にコマンド自体はなんでもいいです。
コマンド実行有無を分かりやすくしたかっただけです。


#解決策
複数プロセスがリダイレクト先ファイルをオープンしに行かないように
リダイレクト先のファイルを処理ごとに分けるか、
リダイレクトが完了してから次処理に移る作り込みをするとかいろいろ考えられると思います。

後者は戻り値見たりする必要がありそうなのでちょっと大変そう。。。？


他にリダイレクトが失敗するケースは
そもそもファイルにアクセス権がないユーザ使ってる。とか
指定したパスが存在しない。とかがありますけど
それは処理ごとの単体テストでちゃんと確認しておけばいいのでは、と思います。

土台から変えるなら

・リダイレクトをやめちゃう。
・そもそもbatを使わない、VBやC等で動かす。
・そもそもWindowsを(ry)


とかでしょうか。
Node-REDをWebサーバー的に使う

簡易的なWebサーバーとして使って内部にjsライブラリをもたせたり、templateノードで作成したhtmlに画像を埋め込みたりできたのでメモです。

#手順
1. スターターコードのダウンロード
2. httpStaticで指定したフォルダへ配置
3. cf push

##1. スターターコードのダウンロード
（ダウンロード画面）
![dl_starter.jpeg](https://qiita-image-store.s3.amazonaws.com/0/206385/877044ae-501f-0cd4-b71c-9fcfc814b4a5.jpeg)

（ダウンロードされたzipファイル内）
<img width="206" alt="スクリーンショット 2017-10-08 14.42.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/206385/51e9750e-08bc-518f-d85f-28e10f10415e.png">



##2. httpStaticで指定したフォルダへ配置
bluemix-settings.jsのhttpStaticを確認すると下のようになっています。

```js:bluemix-settings.js
　　 // Move the admin UI
    httpAdminRoot: '/red',
    // Serve up the welcome page
    httpStatic: path.join(__dirname,"public"),
```
<https://nodered.jp/docs/configuration>
>httpStatic
    ここで指定したPathを静的なWebコンテンツとして表示できます。例えば/home/username/.node-red/と指定した場合、/home/username/.node-red/index.htmlを作成すると/へアクセスすると作成したindex.htmlが表示されます。したがってhttpStaticを指定する場合はhttpAdminRootは/より下層のPathにする必要があります。 


簡易Webサーバーになっているようです。
ここにファイルやフォルダを追加します。
（例）
<img width="413" alt="スクリーンショット 2017-10-08 15.07.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/206385/5c2d325e-0087-a749-d52b-01f1c1ae9b94.png">


##3. cf push
publicに必要なファイルを追加したらcf push
以上です。
/直下に配置できているのが確認できるかと思います。
I2C のカメラインタフェースについても調べたい

([USB3.0 カメラについて調査中](https://qiita.com/nonbiri15/items/1b2123b76e8b6b88fe28)から独立させました。)

ハードウェアにより近い側のカメラインタフェースの１つにI2Cというのがある。
そこでI2C というインタフェースについても調べたい。
（USB のカメラと違って、つなげばそのまま認識されて画像をキャプチャできるわけではない。しかも例にあるやり方では、FPGAで回路生成して信号を取り入れている。）

USBカメラを使っているときには、カメラのバッファの部分や複数のカメラの同期の問題とかが内部の細かい部分に隠されてしまっている。それらを自力で行なってでも、実現したい内容がある場合にかぎって利用することを考えるべきだろう。

I2Cはより回路に近いレベルでのインタフェースだ。
チップ間を直接接続するようなインタフェースなので、距離は取れない。


http://www.kumikomi.net/interface/sample/201411/if11_068.pdf

ArduinoでCMOSカメラと通信してみる　[Arduino]
http://s15silvia.blog.so-net.ne.jp/2014-03-22

ネットワークカメラの製作
http://www.suwa-koubou.jp/micom/NetCamera/NetCamera.html


第9回　カメラモジュールから画像をFPGAへ取り込んでみる
http://www.hmwr-lsi.co.jp/fpga/fpga_9.htm


Raspberry Piカメラのセットアップ方法
http://www.rs-online.com/designspark/electronics/jpn/knowledge-item/raspberry-pi-camera-setup


Raspberry PiでI2Cを使えるようにする方法を解説しています。
http://make.bcde.jp/raspberry-pi/i2c%E3%82%92%E4%BD%BF%E3%81%86%EF%BC%88%E8%A8%AD%E5%AE%9A%E7%B7%A8%EF%BC%89/


Enabling The I2C Interface On The Raspberry Pi
http://www.raspberrypi-spy.co.uk/2014/11/enabling-the-i2c-interface-on-the-raspberry-pi/


Stereo/dual cameras with i2c1 peripheral
https://www.raspberrypi.org/forums/viewtopic.php?f=98&t=122559
ドット直角三角形の共通部分


- 3分42秒かかりました
- メモリもバカ食いっぽいです、Rubyなら死んでいたことでしょう…

```cpp:tyama_henae18.cpp
//https://qiita.com/Nabetani/items/891d07f4d645ec00ce9a
//http://nabetani.sakura.ne.jp/hena/orde18twintri/
#include <iostream>
#include <string>
#include <map>
#include <set>
#include <algorithm>
#include <cstdio>
using namespace std;

typedef struct{
	int x;
	int y;
}dir;
const dir D[]={
	{0,-1},{-1,0},{0,1},{1,0}
};

set<pair<int,int>> get(int X,int Y,int d,int H){
	set<pair<int,int>> se;
	for(int h=0;h<H;h++){
		se.insert({X+D[d].x*h,Y+D[d].y*h});
		for(int i=1;i<=h;i++){
			se.insert({X+D[(d+1)%4].x*i+D[d].x*h,Y+D[(d+1)%4].y*i+D[d].y*h});
			se.insert({X+D[(d+3)%4].x*i+D[d].x*h,Y+D[(d+3)%4].y*i+D[d].y*h});
		}
	}
	return se;
}

int main(){
	const map<char,int> m={
		{'B',0},{'R',1},{'T',2},{'L',3}
	};
	string line;
	for(;getline(cin,line);){
		int x1,y1,h1,x2,y2,h2;
		char d1,d2;
		sscanf(line.c_str(),"%d,%d%c%d/%d,%d%c%d",&x1,&y1,&d1,&h1,&x2,&y2,&d2,&h2);
		//printf("%d %d %c %d %d %d %c %d\n",x1,y1,d1,h1,x2,y2,d2,h2);
		set<pair<int,int>> s1=get(x1,y1,m[d1],h1),s2=get(x2,y2,m[d2],h2),s3;
		set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s3,s3.begin()));
		printf("%d\n",s3.size());
		fflush(stdout);
	}
}
```
Kindleハイライトを編集してハイライトメモをつくる

リニューアルされたKindleのハイライトをまとめるページ。
以前に比べるとだいぶ見やすくなったが、まだ個人的には不満も多いので、コピペして自分なりに編集してからハイライトメモを作っている。

まずは、「Kindle メモとハイライト」のページに行き、ハイライトを取り出したい本を左ペインの中から選択する。
すると、ハイライトしたりメモ書きした内容が一覧で出てくるので、一番上の書籍名から一番下までをコピーして、vimに貼り付ける。（MacVim使ってます。）

コピペしたままだといろいろと不要な部分が残っているので、次のようなコマンドを実行してそれを削除する。

```vim
:%s/ピンク色の.*//g
:%s/\s\s\+//g
:%s/^\n\n\n/\r/g
```

ここで何をしているかというと、まず一行目は「ピンク色のハイライト...」という行を削除している。
ピンク色しか使っていないのでいつもこれだけだが、人によって色を使い分けていたりするとその色ごとに指定が必要になるので注意。

2行目では、何故か先頭からスペースを複数含んだだけの行が幾つか存在しているので、これを削除する。
おそらくハイライトページのデザインの関係で紛れ込んでいると思われるが、当然不要なので消してしまう。

最後に、行間を詰めるために改行だけが続いている部分を改行1つに置き直している。
これは好みなので、行間が広いほうがいいという場合には使わなかったりする。

あとは簡単に章立てを入れたり整形してから、PDF化してDropboxにおいている。
ESXiにISOファイルの場所を登録したのにOSをインストールできない

##■はじめに
VMware ESXiに仮想OSをインストールするためにISOイメージを登録したのに、OSインストールが開始できない事象が出てきたのでそのTipsです。

##■該当パターン
①VMware ESXiに仮想OSをインストールする途中
②ISOイメージから仮想OSをインストールしたくて
③仮想マシンのプロパティからCD/DVDドライブを編集して
④デバイスタイプをホストデバイスまたはデータストアISOファイルを選択して
⑤ISOの場所を登録して
⑥仮想マシンをパワーオンしたのに
⑦「Operation System not found」とコンソールのBIOSに出てOSインストールできない

##■解決方法
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/a032ba3f-037d-6dce-2196-b9c1c60ce06b.png)
「パワーオン時に接続」にチェックが入っていなくて、BIOSがISOを認識できないのが原因です。仮想OSを落として、チェックを入れたのち、再度仮想OSを起動させてください。

##■発生フロー
①VMware ESXiに仮想OSをインストールする途中
②ISOイメージから仮想OSをインストールしたくて

仮想マシンは作成済みで、仮想OSをインストールする場面です。
「仮想マシンの設定の編集」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/b2cc59a9-c999-58bc-9540-087876c8221f.png)

③仮想マシンのプロパティからCD/DVDドライブを編集して
仮想マシンのプロパティから「CD/DVDドライブ」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/04186d67-6f83-9057-0467-95a73fc325c3.png)

④デバイスタイプをホストデバイスまたはデータストアISOファイルを選択して
「デバイスタイプ」を「データストアISOファイル」に変更します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/ad5b8f61-63e1-68fe-f785-1c665d8c6f81.png)

⑤ISOの場所を登録して
「デバイスタイプ」を「データストアISOファイル」の「参照...」から対象のISOを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/38017c44-ac6d-868c-c3c4-24f16c481860.png)

登録が完了しました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/7351a9dc-f6b4-cdd6-11b9-8664b548f766.png)
＃ここで「パワーオン時に接続」の選択を忘れた

⑥仮想マシンをパワーオンしたのに
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/202ffe6a-f694-5cca-8f71-5a0c55d93af9.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/99c0a98c-294c-2519-cee0-8579f9404d2f.png)

⑦「Operation System not found」とコンソールのBIOSに出てOSインストールできない
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/8d72ae4d-a1eb-6f1d-9155-b5564402c5f5.png)

<br>
##■解決フロー
①「仮想マシンのプロパティ」から、「CD/DVDドライブ」の「デバイスのステータス」にて、「パワーオン時に接続」をチェックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/3d909327-3a09-67c0-0bb0-7ea703421149.png)

②仮想マシンのパワーオンをします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/321bc1c1-1b91-dbcf-7e12-d0ed7d43dc9c.png)

③BIOSが立ち上がって
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/9c160e78-e1b0-b364-b167-fd9b3c7792ae.png)

④CentOSのインストールが開始できました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/9ed5ba61-fccc-70b7-3cc8-01009ab866db.png)

##■所感
ハマり方が浅くてよかったです。ただ浅くて忘れそうなので念のため記事化。

##■参考
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614
ちょっと古いCentOSのisoファイルを入手する(CentOS6.4, CentOS6.6)

##■はじめに
インターネットからちょっと古いCentOSをダウンロードする作業記録です（2017/10/3現在）。
>このページのブランチです。
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614


##■結論
<b>CentOS 6.4 iso 64bit download
>CentOS-6.4-x86_64-bin-DVD1.iso
>CentOS-6.4-x86_64-bin-DVD2.iso

http://archive.kernel.org/centos-vault/6.4/isos/x86_64/

<br>
<b>CentOS 6.6 iso 64bit download
>CentOS-6.6-x86_64-bin-DVD1.iso
>CentOS-6.6-x86_64-bin-DVD2.iso

http://archive.kernel.org/centos-vault/6.6/isos/x86_64/

##■ながれ（例：CentOS6.6）
CentOSの公式コミュニティページに移動します。(https://wiki.centos.org/FrontPage)
＃ブラウザはchromeでやってます。

「Download」をクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/142c879c-3fb6-9685-25ef-25be729ec2b0.png)

Downloadページ下部にある、「Archived Versions」から、入手したいOSバージョンの「tree」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/d05236b1-7303-710d-65f7-9254d893d178.png)
↓　下スクロール
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/27265f2a-2f1b-9be7-c9ce-e65ab99dc39e.png)

「isos/」を選択。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/1abdb795-037f-039c-e14e-613c4a588b93.png)

64bit版が欲しいので、「x86_64/」を選択。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/f593c455-d469-86a2-b877-0d3e8f318c35.png)

今回は以下２点が欲しいので、まずは上記のDVD1の方からを選択します。
 CentOS-6.6-x86_64-bin-DVD1.iso
 CentOS-6.6-x86_64-bin-DVD2.iso
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/42924678-6690-f1d2-d732-282cbe61dbf9.png)

「もうこのサーバにないよ」って言われるので、その先のUSAサイトからダウンロードします。今回は以下から。
http://archive.kernel.org/centos-vault/ 
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/a189de98-c772-b804-3783-bff6b71fc163.png)
>In order to conserve the limited bandwidth available .iso images are not downloadable from this Vault Machine.
>
>The Following external Vault mirrors (not monitored by the CentOS Infra team !) provide direct downloads for all content, including isos:

サイトが表示されたら、また入手したいOSバージョンを選びます。今回は「6.6/」で。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/ed698988-30c3-44b8-3f3f-5f1179e0ec07.png)

「isos/」を選択。（２度目）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/7a5fa849-e953-5793-26c8-b878e3c83b77.png)

64bit版が欲しいので、「x86_64/」を選択。（２度目）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/31c3d1a5-e59a-a97e-c28e-536d0c9980cc.png)

今回は以下２点が欲しいので、まずは上記のDVD1の方からを選択します。（２度目）
 CentOS-6.6-x86_64-bin-DVD1.iso
 CentOS-6.6-x86_64-bin-DVD2.iso
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/faa8997a-9ab7-854b-e401-b735457c5a5b.png)

これで、ダウンロードが開始できます。ファイルサイズが大きいので数時間かかるかもですが（数時間かかりました）。

ちなみにCentOS 6.4も同じ手順でダウンロードできました。6.4と6.6しか試してはいないですが、他のバージョンも同じようにしてダウンロードできそうです。


##■所感
二度手間がありましたがなんとか。作業時間はダウンロード含め４時間ほど。


##■参考
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614

以上です。
ESXi 6.0 u2で仮想OSをインストールせずに仮想マシンを起動させてみた（OSが見つかりませんでした。）

##■はじめに
仮想マシンを新規作成したのち、仮想OSをインストールせずに起動（パワーオン）をしてみました。

##■さておためし
トップ画面から、「仮想マシンのパワーオン」を押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/3290e693-2d01-34bb-d889-5b9a07bd9d70.png)

<br>
コンソール画面からBIOS起動状態を見ますが、なんか「Operating System not found」って出てますね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/87bbe375-d6a6-dcac-2f71-5212726a0228.png)

<br>
イベント画面からも警告メッセージが出てますね。
>警告メッセージ: OS が見つかりませんでした。OS のインストール ディスクがある場合は、システムの CD-ROM ドライブにディスクを挿入し、仮想マシンを再起動することができます

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/ee5f5f93-d5ef-8099-8640-6b4c4bb72138.png)

こうなったら電源切るしかないですね。これがvmのbiosってやつなんですかね。

以上、おためしでした。

##■参考
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614
VMware ESXi 6.0 u2のデータストアを拡張する(Nested構成)

##■はじめに
VMware Workstationに構成したESXi 6.0 u2の、datastore増量を実施した作業記録です。
（今回はNested構成関係ないですが）
>このページのブランチです。
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614

##■実施イメージ
仮想OS(VMware ESXi 6.0)のリソース(初期datastore)の拡張をするため、VMware vSphere Clientからdatastore容量の増加を実施します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/4841a51c-b02a-091a-e238-90f67706b964.png)

<br>
ESXi datastoreと物理デバイスの関係については以下のようなイメージで考えています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/5fe111f9-a7b4-80dd-58ad-f36b1bb65887.png)
＃今回はNested構成なので物理デバイスもVMware Workstationで作った仮想デバイスですが。

##■マシン
仮想OS　　　VMware ESXi 6.0 u2
　　　　　　datastore1 40GB **-> 80GB**

HyperVisor　VMware Workstation 12 Player
　　　　　　仮想HDD 120GB

物理ホスト　Windows 7 Home Premium SP1 64bit 
　　　　　　HDD 250GB

##■実施手順
1.vSphehe Clientへのログイン
省略。ちなみに、今回は非メンテナンスモードで実施してます（忘れてただけ）。

<br>
2.datastoreのプロパティ選択
ESXiホストにて、「構成」-「ハードウェア」-「ストレージ」-「データストア」から、対象のデータストアを選択し、右クリックから「プロパティ(P)」を選択します。
（今回はdatastore1を選択）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/aff5e692-0221-62dc-4dfa-e0dac2b84994.png)

<br>
3.容量の増加
datastoreの「プロパティ」から、「拡大...」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/f58d8ca5-c063-7883-1d85-9585c51dc460.png)

「データストアの容量の増加」の画面が起動します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/ab8a2c85-2169-0788-f983-e14257d51b36.png)

datastoreにエクステントするデバイスを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/2d9b8020-ade8-06eb-fd10-6531966b490f.png)

ディスクレイアウトを確認します。本当に見るだけの画面。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/ae878678-ff3b-24bf-1ccb-b360585bd97c.png)

お待ちかね、追加する容量を投入します。デフォルトではエクステントデバイスの最大量が追加されちゃうので、今回は絞って割り当てをします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/32c6e75e-ea35-8c8c-8a41-2456907d81ef.png)
↑デフォルト／↓今回は40GBだけ割り当てて追加
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/7c66100a-9615-84e2-0270-ad60c5b27cf8.png)

最終確認画面なので、「終了(F)」で確定させます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/835a88f8-b7c1-d894-743f-cf3b7205f338.png)

<br>
4.実施後の確認
datastoreの「プロパティ」から、合計容量が増加したことが確認できました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/5a02877e-c34f-af37-1b67-f20d2650f884.png)

「構成」-「ハードウェア」-「ストレージ」-「データストア」からも、実施対象のdatastoreが容量増加していることの確認ができました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/d1b2ffc6-f97e-7fc3-70a5-90cf3582db41.png)

完了！

##■所感
所要時間15分くらい。慣れればこれも楽勝の類かなと思います。自動化や大量実施については要調査。


##■参考
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614

以上です。
VMware Workstation上のVMware ESXi 6.0 u2をリソース拡張する(disk編)(Nested構成)

##■はじめに
VMware Workstationに構成した仮想OSのdisk増量を実施したフローです。
>このページのブランチです。
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614

##■実施イメージ

仮想OS(VMware ESXi 6.0)のリソース(CPU/Memory)の拡張をするため、VMware Workstationから物理ホストのリソース再割り当てを実施します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/4c9a20d5-ba99-fabf-b9bf-bb0e64ea085f.png)
＃補足すると、VMware ESXiの初期datastoreを増量するイメージです。


##■マシン
仮想OS　　　VMware ESXi 6.0 u2
　　　　　　40GB **-> 120GB**

HyperVisor　VMware Workstation 12 Player

物理ホスト　Windows 7 Home Premium SP1 64bit 
　　　　　　cpu intel i7 2600 Sandy Bridge (4core/8thread)
　　　　　　Memory 16GB
　　　　　　disk 250GB　（HDD/Eドライブ）

<br>
##■実施手順
1.仮想OSの停止
2.diskの増量
3.仮想OS側(ESXi vSphere Client)から増加量の確認

1.仮想OSの停止
VMware Workstationの設定をいじるため、Workstation上の仮想OSを停止しておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/86ac2fe1-9169-8d2e-7e60-3d441da9e2e2.png)

<br>
2.diskの増量
VMware Workstationの仮想OSを選び、「仮想マシン設定の編集(D)」から、「ハード ディスク(SCSI)」を選択します。今回はインストール時に設定した40GBから、120GBまで引き上げます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/3b5d3703-fb6a-09e0-d5a2-4c04fb53b4f7.png)

＃「拡張(E)」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/ef9dbbd9-8016-c1b1-e010-f7fbc6fdffbb.png)

＃インストール時サイズの40GBから、120GBまで引き上げます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/1aa92560-b3d9-0f4e-c2c8-e6811839b6cf.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/8ea1e588-0241-fd72-7ac5-b152f95e20a5.png)

＃なんかうまくいったようです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/e5ce1fd3-db93-667f-291f-89f6614ad4bd.png)

＃「容量」の最大サイズが更新されたことが確認できました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/df9d2c00-08ac-7825-3056-d1da76468de5.png)

<br>
3.仮想OS側(ESXi vSphere Client)から増加量の確認
・サマリ画面での比較
＃実はこの画面ではわからないです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/3a312069-9a76-eabc-f87d-223358ef7dd8.png)
↑事前／↓事後　（別作業のエビデンスを流用したため、cpu/memoryが増えてますが無視してください）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/82e04967-fba3-2379-bfe3-055ef8798604.png)

・ディスク詳細確認(構成-ハードウェア-ストレージ-デバイス)
＃デバイス容量が120GBになったことが確認できました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/46534b45-5c4e-3a5e-f74f-9071d0168f70.png)

・ディスク詳細確認(構成-ハードウェア-ストレージアダプタ)
＃こちらからも、デバイス容量が120GBになったことが確認できました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/43bf2db7-a895-a1e0-9d7b-c5e93e360221.png)

・ディスク詳細確認(構成-ハードウェア-ストレージ-データストア)
＃データストアは勝手には増えてくれません（初期データストアは1つですが、データストアは複数作成できるので、当たり前っちゃ当たり前ですよね…←ここ実はつまづいてた）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/49013efd-c709-4815-7db7-b568f78bb1dc.png)

完了。

<br>
##■所感
所要時間15分くらいです。別途、VMware ESXiのdatastore増量について記事作成します。

##■参考
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)
https://qiita.com/Higemal/items/2304efc70c8220319614


以上です。
ubuntu16.04 - vim8.0(lua, python, ruby, clipboardが使える)ビルド、インストール

## 参考にした情報

- [既存のvimをluaオプション付きのvim8.0に入れ替える。](https://qiita.com/Fendo181/items/8a5545cd7550bd9a3c91)
    ※この記事が非常に参考になったのですが、clipboardが使えなかったので記事を作成しました。
- https://www.reddit.com/r/vim/comments/52knab/how_to_build_vim_8_with_clipboard_support/

## セットアップ（必要なプログラムのインストール）
```
# lua, python, ruby
sudo apt-get install -y git build-essential ncurses-dev lua5.2 lua5.2-dev luajit python-dev python3-dev ruby-dev

# vimのビルドに必要なツールインストール ※Software & Updateの設定で失敗することがある、その時は以下の操作
sudo apt build-dep vim
```

※ sudo apt build-dep vimが失敗した場合は"Software & Updateを開いて以下の"Source code"にチェックをつける
![image.png](https://qiita-image-store.s3.amazonaws.com/0/45398/9c5461f9-690f-e23b-76bc-0c33a7adfa19.png)

## あとはgitでソースコードを落として、ビルド & インストール

```
#ディレクトリ移動。
cd /opt/
sudo git clone https://github.com/vim/vim 
cd vim/

#ビルドファイル生成
sudo ./configure --with-features=huge --enable-gui=auto --enable-gtk2-check --with-x --enable-multibyte --enable-luainterp=dynamic --enable-gpm --enable-cscope --enable-fontset --enable-fail-if-missing --prefix=/usr/local --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic

## makeファイルを生成
sudo make 

# vim8.0をインストールする。
sudo make install

#vim8.0が正常にインストールされているか確認する。
vim --version

# clipboardが使えるVim8.0
```
「それ、もっとスマートに書けるよ」そう、CoffeeScriptならね

元ネタ

* [それ、もっとスマートに書けるよ - JavaScript コードをもっと短く、もっとシンプルに書く Tips 4選](https://speakerdeck.com/wakamsha/sore-motutosumatonishu-keruyo-javascript-kodowomotutoduan-ku-motutosinpurunishu-ku-tips-4xuan)
* [「それ、もっとスマートに書けるよ」がもっとスマートに書けるよ](https://qiita.com/yassh/items/21b5f53a7ae2f5d4d63e)
* [もしぼくが「それ、もっとスマートに書けるよ」を書くなら](https://qiita.com/trkbt10/items/194fdda04cafa3b4747a)

## Array.prototype.indexOf()

元ネタには`return`があるため関数の中っぽいので、わかりやすくするために`checkBrowser`関数の中という想定。

```coffeescript:CoffeeScript
checkBrowser = ->
  ua = navigator.userAgent
  if ['iPhone', 'iPod', 'iPad'].some ua.includes.bind(ua)
    'ios'
  else
    'other'
```

`return`なんかいらなかった！

## console.log

`{}`でブロックを創る文化が悪い。

```coffeescript:CoffeeScript
arr.map (item) ->
  console.log item
  item * 1000
```

`return`なんかいらなかった！`return`なんかいらなかった！(大事なことなので二回言いました)[^1]

[^1]: 累計三回のような気がしないでもない。

## let / const

三項演算子`?:`は邪悪である。異論は認めない。[^2]

[^2]: [no-ternary](https://github.com/eslint/eslint/blob/master/docs/rules/no-ternary.md)は常にオンだよな？

```coffeescript:CoffeeScript
{foo, bar} = if new Date().getHours() < 12
  foo: 'forenoon'
  bar: 'am'
else
  foo: 'afternoon'
  bar: 'pm'
```

`if`が式なら何の問題は無い。

## array => hash

なぜ、`Map`を使わない？

```coffeescript:CoffeeScript
params = location.search.substring(1).split('&')
result = new Map(
  decodeURIComponent(str) for str in param.split('=') for param in params
)
```

元ネタはkeyを`decodeURIComponent()`していないが、それはそれで問題があると思う。

なお、どうしても`Object`にしたいなら下記のような形に。

```coffeescript:CoffeeScript
result = (
  decodeURIComponent(str) for str in param.split('=') for param in params
).reduce (obj, [key, value]) ->
  obj[key] = value
  obj
, {}
```
【まとめ】VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)を作成する(Nested構成)

##■はじめに
自宅のWindowsでLinux環境を準備するために、仮想化環境の設定とLinuxOSのインストールまでを実施します。

##■構築イメージ
最上部の仮想OSをインストールするのが目的です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/da2675ea-9f00-c5d3-73d5-201523766ea0.png)
VMware公式によると、このようなVMware on VMwareみたいな構成を「Nested構成」というようです。
https://blogs.vmware.com/jp-cim/2014/04/vsphereonfusion.html

ちなみにVMware ESXi 6.0 u2のインストールは以下記事にて。
>VMware Workstation上にVMware ESXi 6.0 u2をインストールする(Nested構成)
https://qiita.com/Higemal/items/523c9ccbfcdcb483c2b3


##■マシン
**仮想OS　VMware ESXi 6.0 u2**
　cpu　2core　Memory　4GB　disk　40GB
**HyperVisor　VMware Workstation 12 Player**
　cpu割当　2core　Memory割当　4GB　disk割当　40GB
**物理ホスト　Windows 7 Home Premium SP1 64bit**
　cpu　intel i7 2600K Sandy Bridge (4core/8thread)
　Memory　16GB　disk　250GB　(Eドライブ/仮想OS用)

※事項以降で主に仮想部分を拡張します。

##■拡張の要件整理
ESXi上に仮想OSをインストールするのに、いまのリソースで足りているかを確認します。

>CentOS 6.4 64bitのインストール要件
CPU　最低1core、Memory　最低512MB/core、Disk　最小 1GB /推奨 5GB
https://access.redhat.com/ja/node/1271503


また、VMware ESXiのインストール要件から、VMware Workstationから設定するVMware ESXiのリソース割当を以下とします。

>VMware ESXi 6.0 u2のインストール要件
CPU 2core、Memory 4GB、Disk 40GB
https://docs.vmware.com/jp/VMware-vSphere/6.0/com.vmware.vsphere.install.doc/GUID-DEB8086A-306B-4239-BF76-E354679202FC.html

以上より、インストールする仮想OSのリソースは以下で確定します。
＃全然足りてないので、若干余裕をもたせてサイジングしてます。

>**CentOS 6.4 64bitの割当リソース**
　CPU　1core、Memory　2GB、Disk　40GB
>**VMware ESXi 6.0 u2の割当リソース**
　CPU　4core、Memory　8GB、Disk　120GB
>**VMware Workstation(仮想マシン：VMware ESXi 6.0 u2)の割当リソース**
　CPU　4core、Memory　8GB、Disk　120GB

（VMware Workstation割当リソース）　≧　(VMware ESXiの必要リソース)　＋　（CentOS 6.4 64bitの必要リソース）

・イメージ図
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/6ee11d83-9de8-a3a5-ccc1-4887aaceeda4.png)

やることが決まったので、あとは資材入手、リソース拡張、OSインストールをします。

##■インストール資材入手
ちょっと古いCentOSのisoファイルを入手する(CentOS6.4, CentOS6.6)
https://qiita.com/Higemal/items/171088bd5841ab1056c4

##■リソース拡張(cpu/memory編)
VMware Workstation上のVMware ESXi 6.0 u2をリソース拡張する(cpu/memory編)(Nested構成)
https://qiita.com/Higemal/items/b9c20c0a53b0c12b1a54

##■リソース拡張(disk編)
VMware Workstation上のVMware ESXi 6.0 u2をリソース拡張する(disk編)(Nested構成)
https://qiita.com/Higemal/items/8e82fbc7c95dc50863a4

##■リソース拡張(データストア編)
VMware ESXi 6.0 u2のデータストアを拡張する(Nested構成)
https://qiita.com/Higemal/items/a11013a43502805ebe64

##■仮想マシン作成
VMware ESXi 6.0 u2で新規仮想マシンを作成する(Nested構成)
https://qiita.com/Higemal/items/44f1b5752ff727350ca0

##■Tips：仮想マシンをISOなしで起動させてみた
ESXi 6.0 u2で仮想OSをインストールせずに仮想マシンを起動させてみた（OSが見つかりませんでした。）
https://qiita.com/Higemal/items/79da711beb81a1b789af

##■データストアにISOイメージを配置
VMware ESXi 6.0 u2でデータストアにファイルを配置する(Nested構成)
https://qiita.com/Higemal/items/1822c5df97211572fd22

##■Tips：
ESXiにISOファイルの場所を登録したのにOSをインストールできない
https://qiita.com/Higemal/items/e43d186177c80091a270

##■ESXi上の仮想OSをインストールする
VMware Workstation上のVMware ESXi 6.0 u2に仮想OS(CentOS 6.4)をインストールする(Nested構成)
https://qiita.com/Higemal/items/5a65d35cba1c1278acf9

<br>
これで作業完了です。
＃記事作成に一番時間かかった

参考になれば幸いです。
Rustでマイコンとか組込みとかのレポジトリやブログ情報をまとめておく

[UPDATED: 2018/05/07]

[awesome-embedded-rust](https://github.com/rust-embedded/awesome-embedded-rust) ができてたので、今後はこちら参照することを推奨します。

---------------------------------------------------

それなりの数になってきてどこかに書き出しておきたくなったので、とりあえずこちらにメモしておいた。
技術記事なのかはいまいち自信がないが、消されないようであれば随時更新していく。

## アプリケーション

すでにアプリケーション・ファームウェアを書いている人もちらほらいる。

- [ws2812b](https://github.com/japaric/ws2812b)
- [2wd](https://github.com/japaric/2wd)
- [AT2XT](https://github.com/cr1901/AT2XT)
- [ts100](https://github.com/wose/ts100)

## OS

組込み向けOSプロジェクト。

- [tock](https://github.com/helena-project/tock)
- [drone](https://github.com/drone-os/drone)

## ライブラリ

### Utilities

- [xargo](https://github.com/japaric/xargo)
- [utest](https://github.com/japaric/utest)
- [svd2rust](https://github.com/japaric/svd2rust)
- [bobbin-cli](https://github.com/bobbin-rs/bobbin-cli)

### Cortex-M

コアのcrateとボードのcrateがごっちゃになっている。

- [cortex-m](https://github.com/japaric/cortex-m)
- [cortex-m-rt](https://github.com/japaric/cortex-m-rt)
- [cortex-m-rtfm](https://github.com/japaric/cortex-m-rtfm)
- [embedded-hal](https://github.com/japaric/embedded-hal)
- [alloc-cortex-m](https://github.com/japaric/alloc-cortex-m)
- [cortex-m-semihosting](https://github.com/japaric/cortex-m-semihosting)
- [f3](https://github.com/japaric/f3)
- [blue-pill](https://github.com/japaric/blue-pill)
- [vl](https://github.com/japaric/vl)
- [stm32f7-discovery](https://github.com/embed-rs/stm32f7-discovery)
- [arduino-due-rust](https://github.com/klangner/arduino-due-rust)
- [teensy3-rs](https://github.com/jamesmunns/teensy3-rs)

### MSP430

- [msp430](https://github.com/pftbest/msp430)
- [msp430-rt](https://github.com/pftbest/msp430-rt)
- [msp430-rtfm](https://github.com/japaric/msp430-rtfm)
- [msp430_svd](https://github.com/pftbest/msp430_svd)
- [msp430g2553](https://github.com/pftbest/msp430g2553)

## ブログ・記事

- [Embedded in Rust](http://blog.japaric.io/)
- [Fearless concurrency in your microcontroller
(slide)](https://japaric.github.io/rustfest-2017-09-30/)
- [The state of embedded Rust (slide)](https://japaric.github.io/rba-2016-11-17/)
- [Digital-Scurf Ramblings](https://blog.digital-scurf.org/)
- [Bobbin Blog](https://www.bobbin.io/blog/)
- [discovery](https://japaric.github.io/discovery/)
- [rust で組み込み(Cortex-M3)](https://nkon.github.io/Rust-embedded/)
- [Rustで組み込みプログラム(Cortex-M)](http://park11.wakwak.com/~nkon/homepc/rust_embedded/)
ubuntuでvi/vimを使った時に打ち込みができない時の修正方法

ubuntuでvi/vimを開いてテキスト修正をしようとすると矢印キーを操作しようとするとABABCAのようにアルファベットが記入され、「あれ？これなんなん？」みたいな感じになりました。  

##原因  
ubuntuのviではデフォルト設定として矢印キーにアルファベットABCDが設定されている。  

これが原因でviでテキスト修正しても全くうまくいきませんでした。  
そんなわけで修正方法をググりました。  

##解決方法  
色々あるが、ubuntu環境にvimをインストールするのが早い。  
現在vimがインストールされていてもそれを削除する必要はなく、
`$ sudo apt-get install vim`
と打ち込めば上書きされます。  

その後
`$vim --version`
でインストールされているか確認してみましょう。  

できていれば矢印キー (↑↓←→)を入力すると(ABCD)になってしまうキー設定も修正され、他の環境と同じように通常通りのvimの修正作業が行えます。
DB＆ユーザー作成(PostgreSQL, MySQL)

## 概要
MySQLやPostgreSQLでユーザーを作ることがあったので、メモを残しておく。

## MySQL

```sql
# DROP DATABASE `sample`;
# DROP USER `user_app`;

-- データベース作成
CREATE DATABASE `sample`;

-- DB選択
USE `sample`;

-- ユーザー作成
CREATE USER `user_app`@`localhost` IDENTIFIED BY 'hogehoge';

-- 権限追加
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `sample`.* TO `user_app`@`localhost` identified by 'hogehoge';
```

## PostgreSQL

```sql
-- データベースの所有者(グループロール)作成  ※ログインできないユーザー
CREATE ROLE "sample_dba" NOLOGIN;

-- ユーザー作成(ユーザー向けアプリ) & グループロールのメンバーに追加
CREATE ROLE "user_app" PASSWORD 'hogehoge' LOGIN;
GRANT "sample_dba" TO "user_app";

-- データベース作成
CREATE DATABASE "sample" OWNER "sample_dba" ENCODING 'UTF8';
```
Spring Beanのライフサイクル

Springframeworkを学習中なので、学習内容をまとめていこうかと思います。
細かいところは省略しています。

# Beanのライフサイクル
DIコンテナで管理されるBeanのライフサイクルは以下の通り

1. 初期化フェーズ
2. 利用フェーズ
3. 終了フェーズ

上記3フェーズの前後で何が行われているかを把握し、活用できるようにする。

## 初期化フェーズ
初期化フェーズには3つの工程がある。

1. Bean読み込み
2. Construct & DI
3. Post Construct

### Bean読み込み
- Java Configなど、Bean定義を収集
- Bean Factory Post Processorによる定義情報の書き換え

### Construct & Dependency Injection
- Beanのインスタンス化
- インジェクション
  1. コンストラクタ
  2. セッター
  3. フィールド

### Post Construct
Post Constructは3つの処理に分かれる。
1. 前処理
2. 初期化処理
3. 後処理
前処理、後処理はBean Post Processorによって行われる。
Bean Post Processorは `org.springframework.bean.factory.config.BeanPostProcessor`
を実装したクラス。

## 終了フェーズ
終了フェーズではPreDestroyが呼び出される。

以上です。お疲れ様でしたー。

# 参考書籍
[Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発] (https://www.amazon.co.jp/Spring%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-Spring-Framework%E3%81%AB%E3%82%88%E3%82%8BJava%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BENTT%E3%83%87%E3%83%BC%E3%82%BF/dp/4798142476/)
ビットコインのアドレス作成方法

base58でエンコードするというデータ形式。

# Base58Checkエンコーディング

+ 任意のサイズの内容(payload)
+ 先頭1バイトはアプリケーションもしくはバージョンの識別子を意味するプレフィックス
+ checksumは、sha256(sha256(prefix+payload))の先頭4バイト
+ データは、prefix+payload+checksum
+ Base58Checkは、データをbase58でエンコーディングしたもの。
    + Base58Check = base58encode(prefix+payload+checksum)

## プレフィックス

| 種類|プレフィックス(16進数)|base58エンコーディング|
|:-----------------|:-----------------:|:------------------:|
| ビットコインアドレス(mainnet)|0x00|1|
| ビットコインアドレス(testnet)|0x6f|mまたはn|
| P2SHアドレス(mainnet)|0x05|3|
| P2SHアドレス(testnet)|0xC4|2|


## コード

```rb
irb(main):001:0> require 'bitcoin'
=> true
```

+ 秘密鍵と公開鍵の配列

```rb
irb(main):002:0> key = Bitcoin::generate_key 
=> ["225a4d7f4d79cd495a2e70d15048bed97dd8fdc524fb89c8eb000d539f62818c", "049d6098acd550c77d405a0197742d28744123718b453cca68aebe359131a818c44a2bc5c016ac1ae917fce5c7d0245d12fe088000a4003f4398c964d5931eb8db"]
irb(main):003:0> private_key = key[0] # 秘密鍵
=> "225a4d7f4d79cd495a2e70d15048bed97dd8fdc524fb89c8eb000d539f62818c"
irb(main):004:0> public_key = key[1] # 公開鍵
=> "049d6098acd550c77d405a0197742d28744123718b453cca68aebe359131a818c44a2bc5c016ac1ae917fce5c7d0245d12fe088000a4003f4398c964d5931eb8db"
```

+ 16進数文字列を1文字ずつ4ビットのビット列にする

```rb
irb(main):006:0> pub_key = [public_key].pack("H*") 
=> "\x04\x9D`\x98\xAC\xD5P\xC7}@Z\x01\x97t-(tA#q\x8BE<\xCAh\xAE\xBE5\x911\xA8\x18\xC4J+\xC5\xC0\x16\xAC\x1A\xE9\x17\xFC\xE5\xC7\xD0$]\x12\xFE\b\x80\x00\xA4\x00?C\x98\xC9d\xD5\x93\x1E\xB8\xDB"
```
```rb
irb(main):007:0> include Digest
=> Object
```

+ ペイロード = RIPEMD-160(SHA256(公開鍵))

```rb
irb(main):008:0> payload = RMD160.hexdigest(SHA256.digest(pub_key))
=> "3a06b20d77bedc9e8d6009dd3c598dec44a51011"
```

+ チェックサム = SHA256(SHA256(プレフィックス+公開鍵))の先頭4バイト

```rb
irb(main):009:0> payload6f = ['6f' + payload].pack("H*")
=> "o:\x06\xB2\rw\xBE\xDC\x9E\x8D`\t\xDD<Y\x8D\xECD\xA5\x10\x11"
irb(main):010:0> checksum = SHA256.hexdigest(SHA256.digest(payload6f))[0...8]
=> "e9ecd541"
```

+ アドレス

```rb
irb(main):011:0> Bitcoin::encode_base58('6f' + payload + checksum)
=> "mkomWPk5NyNwp1REmjVbT1oPTB81scDYAC"
```

+ bitcoin-rubyでのアドレス生成

```rb
irb(main):012:0> Bitcoin::network = :testnet3
=> :testnet3
irb(main):013:0> Bitcoin::pubkey_to_address(public_key)
=> "mkomWPk5NyNwp1REmjVbT1oPTB81scDYAC"
```

+ Base58Check形式の検査

```rb
irb(main):014:0> Bitcoin.base58_checksum?("mkomWPk5NyNwp1REmjVbT1oPTB81scDYAC")
=> true
```
PHPカンファレンス2017@東京_メモ②型を意識したPHPアプリケーション開発

##PHPの型システム
　変数自体には型は無い
　値の方に型を持つ　
　　gettype()で型を調べられる
　動的型付け言語
　暗黙的型変換
　　10 + “5” = 15
　　　stringをintに自動で変換されている
　　10 + “5e” = 15
　　　数値じゃない値が出てきたところで切って自動的にintに変換
　　10 + “5e2” = 510
　　　5e2：指数表記になっている
　型宣言
　　function double(int $i) : int {}
　　引数や戻り値に型を指定出来る
　　　関数に入った瞬間はint型を保証
　　　戻り値もint型を保証
　　　double(“5e”) // TypeError
　　　型宣言使うならstrictモードをオンにする
　　　　declare(strict_types = 1)
　　　　
　まとめ
　　値が型を持つ
　　暗黙的型変換で柔軟に開発
　　型宣言で厳密に開発
　　　ユーザーが選択(使い分け)出来る

##型宣言を利用したコード実装
　Demo
　　型宣言なし
　　スカラー型で型宣言
　　ユーザー定義型で型宣言

ユーザー定義型の例

```php
<?php
//strictモードオン
declare(strict_types=1);

//税込価格計算クラス
final class priceWithTaxRateCalculate{
	public static function calculate(Price $price, TaxRate $taxRate): PriceWithTax //戻り値は税込価格型にする
	{
		return new PriceWithTax(intval($price->asInt() * (1 + $taxRate->asFloat())));
	}
}

//プライス型
final class price
{

	private $value;

	public function __construct(int $value)
	{
		$this->value = $value;
	}

	public function asInt():int
	{
		return $this->value;
	}
}

//税率型
final class taxRate
{

	private $value;

	public function __construct(float $value)
	{
		//消費税が1以下で無い場合は例外
		if(!($value < 1)){
			throw new InvariantException('Invalid taxRate is given');
		}
		$this->value = $value;
	}

	public function asFloat():float
	{
		return $this->value;
	}
}

//税込価格型
final class priceWithTaxRate
{

	private $value;

	public function __construct(int $value)
	{
		$this->value = $value;
	}

	public function asInt():int
	{
		return $this->value;
	}
}


?>

```


##ドメイン特化型の実装Tips
　アプリケーションドメインを表現
　ドメインルールを検証
　型宣言による表現と強制
　　インスタンスの生成 = ルールを満たしていることを保証
　PHPdockは実行時は役に立たない
　型宣言で表現できる範囲は限定される
　　両方を組み合わせて使う

##安易に継承を使わない
　継承元クラス型への適合を防ぐ
　　継承元のクラスをそのまま受け継いでしまう
　　PriceWithTaxがPriceを継承していた場合
　　　税込価格を商品価格として渡してしまう場合チェックが効かない
　継承元メソッドが含まれてしまう
　　必要の無いメソッドが大量に含まれるクラスが出来てしまう
　　　出来るだけドメインに特化したメソッドのみにする
　実装を共有したい場合
　　委譲やトレイトで共有

##イミュータブルにすると安全
　完全コンストラクタ
　不変条件の検証が一度で済む
　　コンストラクタで値をセットしても、setValue()みたいなメソッドがあると値がいつでも変えられてしまう
　ミュータブルな場合は都度検証

##ファクトリメソッド
　newの乱立を防ぐ
　コンストラクタをprivateに
　
##最後に
　型宣言で型を強制
　ドメインを型で表現
　型で気持ちいい開発を！


##質疑(一部)
　Q；ドメイン特化型を導入した場合どのくらいパフォーマンスに影響があるか
　A：ケースバイケース、確かにスカラー型の方がメモリは食わないが優先度による
　Q：型を使った実装を少しずつ導入する場合どこから始めればいいか、単体テストもやって無い状況
　A：数値で仕様が決まっている部分、日付など。小さなクラスを作ってそれの単体テストを書くところから
　Q：PHP7.1でnullableが入ったが、エラーの場合例外で返すか、nullで返すか
　A：基本的にはnullで返すのはあまりよろしく無い。例外で返した方がわかりやすいのではないか。nullが返ってきた場合、使う側も扱いづらい。nullオブジェクトを定義する等。
　Q：ドメイン型からデータベースの型への変更をどうするか
　A：Repository層で処理。DBから取得した値を特化型に変換して返す等。
　Q：ソースの別プロジェクトへの流用がやりにくいのでは無いか
　A：流用すると、使わないメソッド等が入ったクラスが出てきてしまうため、ドメイン特化型の方がいい。ただ全てを特化型にすると時間がかかるので、ケースバイケースで対応。
GitHub ページを React でつくる (基礎編)

## 1. プロジェクトの作成 - *Create React App*
### 1-1. Create React App のインストール
> 公式 : [create-react-app](https://github.com/facebookincubator/create-react-app)

#### 1-1-1. インストールと起動確認
```bash:bash
# カレントディレクトリ : ~/.
npm i -g create-react-app
create-react-app publish-react-project-basic
cd publish-react-project-basic
npm start
```
[![asciicast](https://asciinema.org/a/j5YDoQm1Epm9VSV2irwxE26iv.png)](https://asciinema.org/a/j5YDoQm1Epm9VSV2irwxE26iv)

→ http://localhost:3000 を開くと、 `publish-react-project-basic` の内容が表示されます。

[+ npm のはじめかた](https://qiita.com/KoheiShingaiHQ/items/e9bbef75b52f1976f73c)

## 2. GitHub へのデプロイ
### 2-1. 事前準備
```bash:bash
# カレントディレクトリ : ~/publish-react-project-basic
npm i gh-pages --save-dev
```
```diff:json
# ファイルパス : ~/package.json
  {
    "name": "publish-react-project-basic",
    "version": "0.1.0",
+   "homepage": "https://[username].github.io/[your-repository-name]",

    "scripts": {
+     "deploy": "npm run build && gh-pages -d build"
```

### 2-2. デプロイ
```bash:bash
# カレントディレクトリ : ~/publish-react-project-basic
npm run deploy
```
[![asciicast](https://asciinema.org/a/142194.png)](https://asciinema.org/a/142194)

## 3. 公開完了
> 見本 : [koheishingaihq.github.io/create-react-app](https://koheishingaihq.github.io/create-react-app/)

![publish-react-project](https://c1.staticflickr.com/5/4509/37268153700_b95567ae0f_h.jpg)
ざっくばらんメモ_9：kaggle, 技術適応力，コラボ重視の仕事スタイル


###kaggle zillow
アンサンブルとresnet regressionを組み合わせるも結果は対して変わらず．
根本的のアプローチが間違っていると思われる．
kernelで公開されている手法では，割りと単純なregression tree系の手法を
組み合わせるだけで，ただ組み合わせる時の重み選択はかなり詳細に行われている．
そこで，今まで作ってきたモデルの重み付け和に関して，
線形回帰での学習を行っておき，学習した重みを用いてアンサンブルする．
ー結果，微量の改善．しかし順位に対した影響なし

###技術における適応力を付けるには
技術は日進月歩であり、それに素早く適応していかなければ自分の能力はすぐに陳腐化してしまう。
しかし適応するには学習コストはどうしてもかかる。
それを削減するにはどうしたらよいのか。
学習コストの中で最も高くつくのは時間である。
時間が経つと学ぼうとしている事自体も陳腐化してしまい、結果として得られる効果も薄れてしまうからである。
では時間を減らすにはどうしたらよいか
１．金で時間を買う
これは外注すると言い換えても良いかもしれない。
学びたい事の本質を見極め、それ以外は賢く外注してしまうのが良い。
２．必要な事だけをやる
１．とも関連するが、目的を常に明確化し、そのために最低限必要な事を見極め、それだけを速やかに行う事が理想である。
しかし必要な事を見極めるのは簡単ではなく、実際はやりながら修正を加えていく事がほとんどになる。
３．評価可能な事をやる
評価可能でない事を目標にしてしまうと、その目標を具体化、細分化する事が難しく、つまり↑の１．２．を行う事も難しくなる。
また目標が達成されたかどうかの見極めも難しい。
ただし数値化にこだわると評価可能な事があまりにも少なくなるのでそこはトレードオフである。
４．リスクを知り、リスクを取る
３．で言う評価可能な事をやるのは実際は難しく、大抵は不明瞭な部分を残したまま進まざるを得なくなる。
そうした不明瞭な最中に素早く決断して前に進んでいく事も大事である。
この時、闇雲にやってしまうと失敗ばかりになってしまうのでここもまたバランスが難しい．

###人材の流動性がないから目的の人材とコラボする日本のスタイル
アメリカでは，ほしい人材がいればヘッドハントしていく．
日本ではそれが難しいから，コラボをしようとする．
その場合，相手にもメリットがあり，win-win関係が結べるならば
ビジネスとして理想的だが，そうでない場合（こっちの方が多い）は
こちらからお金を出して協力してもらう．
これは間接的な雇用のようなもの．
しかしお金だけで解決しない利害関係もあるので，
契約関係の問題が面倒である．
似たような事は社内の部署間でも起きている．
またアメリカでは必要でなくなった人材は比較的解雇しやすい．
しかし終身雇用の文化が強い日本ではそれは難しい．
それに対して（ジェネラリスト？）教育を社員へ施し，
社内外で任意のコラボ（調整）が得意な人材を生み出す事で，
上記のスタイルを最大限確立しようとする．
しかしそれに失敗した人材はいわゆる窓際族になってしまう．
npm のはじめかた

# npm のはじめかた 
> 公式 : [npm](https://www.npmjs.com/get-npm)

## 1. インストール
> 公式 : [Node.js download page](https://nodejs.org/en/download)

**Node.js** をインストールすると、一緒に **npm** もインストールされます。

## 2. 最新化
```bash:bash
npm i -g npm
```

[![asciicast](https://asciinema.org/a/142197.png)](https://asciinema.org/a/142197)

**npm** は更新が頻繁なので、定期的な最新化が必要です。
【Unity】当たり判定の表示デバッグ機能

# はじめに

Unityエディター上で当たり判定を表示する方法はいくつもあり、どれも便利です。

- 対象のゲームオブジェクトを選択してSceneビューで確認する
- OnDrawGizmosを実装する
- Physics Debuggerを使用する

Physics Debuggerの使い方については、下記の記事が非常に参考になります。
[【Unity】当たり判定の有無や形状、物理演算の状態を視覚的に確認する　Physics Debugger【5.6】]
(http://tsubakit1.hateblo.jp/entry/2017/01/05/233700)

Gameビューに表示したい場合もOnDrawGizmosを実装することで確認出来るため
実機で表示したい場合やパラメータも同時に表示したい場合に
[collider-visualizer](https://github.com/tomoriaki/collider-visualizer)を使用すると良いと思います。

# collider-visualizer

## 導入方法

[collider-visualizer](https://github.com/tomoriaki/collider-visualizer) (GitHub)からダウンロードして、インポートしてください。

## 使用例

```csharp
using UnityEngine;
using HC.Debug;


/// <summary>
/// 使用例
/// </summary>
[DisallowMultipleComponent]
public class Example : MonoBehaviour
{
    #region フィールド / プロパティ

    [SerializeField, Tooltip("可視コライダーの色")]
    private ColliderVisualizer.VisualizerColorType _visualizerColor;

    [SerializeField, Tooltip("メッセージ")]
    private string _message;

    [SerializeField, Tooltip("フォントサイズ")]
    private int _fontSize = 36;

    [SerializeField, Tooltip("左脚")]
    private GameObject _leftLeg;

    #endregion


    #region アニメーションイベントメソッド

    private void AttackStart()
    {
        _leftLeg.AddComponent<ColliderVisualizer>().Initialize(_visualizerColor, _message, _fontSize);
    }

    private void AttackEnd()
    {
        Destroy(_leftLeg.GetComponent<ColliderVisualizer>());
    }

    #endregion
}
```

![ss1.gif](https://qiita-image-store.s3.amazonaws.com/0/126970/1ba2fe8d-6605-f4fe-2130-86b4ff007889.gif)

# 配布ライセンス

[MIT](https://github.com/tomoriaki/collider-visualizer/blob/master/LICENSE)

# 使用ライセンス

この作品はユニティちゃんライセンス条項の元に提供されています
© Unity Technologies Japan/UCL
Digispark Arduino互換ボード動作確認



[XCSOURCE　3個　Digispark Kickstarter Attiny85マイクロUSB開発ボード] (http://amzn.to/2y87Z6D)

安かったのでつい買ってしまった。
Digisparkとなっているが、本家Digisparkのコピー品の模様。
それにしても3枚で1000円程度って安すぎでしょ・・・。
<img src="https://qiita-image-store.s3.amazonaws.com/0/199149/eb3796c2-8b8f-9ea0-913b-3b74cf2b77c3.jpeg" width="400">


##■セットアップ
###参考サイト
[[メモ] Digispark(ATTiny85) Arduino開発環境で、Lチカ](https://qiita.com/mt08/items/df4ed8c659b205d1fa1e)
[中国製の激安Arduino Nano V3互換機($3)を買ってみた](http://www.dorapro.co.jp/engineerblog/?p=720)
ものは違うが上記を参考にさせていただきセットアップ。

Digisparkボードをインストールし、ボードを`Digispark(Default - 16.5mhz)`するまではどこのサイトを見ても同じようなのでそのまま実施。


しかし、認識しない。ドライバかなと思って↓をインストールしても変わらず。
[windows mac Linux用 CH341ドライバー]
(http://urx.nu/iMGI)


不良品か、それとも全く別の原因かと思って諦めかけていたのだが、
**USBハブを間に噛ませたら認識した。** (正確に言うと書き込みが成功した)

当初MacのUSBポート(2015年のまだUSB-typeAがあるやつ)に直接挿していたのだけど、これが駄目だった様子。
HUB使ってると認識しないと書いているサイトもあったのだけど、まさか逆とは・・・。


ちなみにこのボード、USBに刺してもシリアルポートには表示されない模様。
認識してるかどうかは、書き込んでみるしかないようなので余計わからんかった。
![Digispark2.jpg](https://qiita-image-store.s3.amazonaws.com/0/199149/3a0f2574-8766-a623-e944-e0ddda39a1ec.jpeg "Digispark2.jpg")
↑Bluetoothしか出てきてない。


結局USBポートの相性の問題だったようなので、CH341ドライバーは必要だったのかどうか不明。まぁ動いたから良しとしよう。


更に、普通のArduinoの違って、書き込む際には **USBから抜いて**書き込みを開始しなければならない。
 1. USBからこいつを抜く
 2. 書き込み開始ボタンを押す
 3. `Plug in device now... (will timeout in 60 seconds)`が表示されてから接続する
 4. タイムアウトせずに書き込みが100%になればOK。

こんな妙な仕様だから、スイッチ付きのUSBコネクタなどあったほうが良いだろう。

使えるポート数が少ないから限定的な使い方になるんだろうけど、USB-HIDとして認識するらしいので、オリジナルのキーボードとか作れるのだろうか。
少し寝かせて、アイディア浮かんだら活用することにする。

###Lチカも成功
<img src="https://qiita-image-store.s3.amazonaws.com/0/199149/929b96c1-16ff-709c-56f8-028bb7111114.jpeg" width="400">
webpackでsassとpostcssどちらを選択するのか

tips: 個人的に普段感じている内容です

### node-sass
* コンパイルに長めのオーバーヘッド
* 単純にscssを書ける
* 導入が楽
* 一部webpackのプラグインと相性悪く動作停止する

### postcss
* postcssの設定記述が長い
* コンパイル早い
* プラグインが多すぎる
* sass likeに記述できるプラグインの存在

## 懸念
- とりあえず両方を導入しようとするとメリットとデメリットで打ち消し合います。
　

- postcssは資産に対してメンテナンスする必要が発生する一方、
sassは良い枯れ方で扱われていて楽に運用することができます。
　

- 実際にsassを書いてnode-sassでコンパイルすると異様なコンパイル時間を体験するでしょう。
それは同期的に1ファイルずつコンパイルかけている認識です。
postcssはbabelの様にサクッとコンパイルが完了します。
　

- postcssはプラグイン何でも導入しようとすると、おそらく失敗します。
プラグインの開発は1人でしているものから大規模なものまで品質関係なく公開されているためです。
導入以前からそのプラグインがメンテナンスされているかを認識している必要があります。

## 結局どちらを選択するのか
postcssを導入して、あの長いnode-sassのコンパイル時間を削減したい思いでpostcssを選択します。

## 所感
正直デザインを実現するのにnode-sassでもpostcssどちらでも出来るので、コンパイル時間を短縮する労力がコストに見合うかどうかだと思いました。
RaspberryPiでESP-WROOM-32開発環境の構築

#RaspberryPiでESP-WROOM-32開発環境構築
安価な開発環境を目指す。
##用意したもの
-開発ホスト
RaspberryPi3
OS:Raspbian
-開発ターゲット
ESP32-DevKitC ESP-WROOM-32開発ボード
RaspberryPiとESP32はUSBケーブルで接続する。
![IMG_1915.jpeg](https://qiita-image-store.s3.amazonaws.com/0/140055/bd2d0fe3-95ee-1d4f-ed4c-a3335685a17f.jpeg)


##参考サイト
[ESP-IDF](https://esp-idf.readthedocs.io/en/latest/get-started/index.html)
##環境構築手順
###ESP-IDF Toolchainのインストール
[ESP-IDF Get Started](https://esp-idf.readthedocs.io/en/latest/get-started/index.html)で取得できる32bit版を一度インストールしてみたが、うまくコンパイルできず。
[Setup Linux Toolchain from Scratch](http://esp-idf.readthedocs.io/en/latest/get-started/linux-setup-scratch.html)を参考にソースからのコンパイルに挑戦。

###(1)必要なパッケージのインストール

```
sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial
```

###(2)Toolchainのコンパイル
**コンパイルには数時間がかかるので覚悟しておく。**

依存モジュールのインストール

```
sudo apt-get install gawk gperf grep gettext python python-dev automake bison flex texinfo help2man libtool libtool-bin
```

crosstool-NGをダウンロードしてビルド

```
cd ~/esp
git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --enable-local && make install
```

Toolchainのビルド

```
./ct-ng xtensa-esp32-elf
./ct-ng build
chmod -R u+w builds/xtensa-esp32-elf
```

###(3)ESP-IDFの取得

```
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
```
###(4)ESP-IDFのPATH設定
.basrcに追記しておく。
```
export IDF_PATH=$HOME/esp/esp-idf
```
これで開発環境は整った。

##サンプルプログラムの実行
環境が正しく構築できたことを確認するため、サンプルにあるHello Worldを実行してみる。

```
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
cd ~/esp/hello_world
make menuconfig
```
最初に`make menuconfig`を実行し、設定をする必要がある。
実行すると次の画面が表示される。
![IMG_1918.png](https://qiita-image-store.s3.amazonaws.com/0/140055/37e067f8-843f-f58b-8373-228e3722ad49.png)
Serial flasher config > Default serial portから接続されているシリアルポートが正しいことを確認する。

![IMG_1917.png](https://qiita-image-store.s3.amazonaws.com/0/140055/0bdc9933-8e22-4b61-f650-2dd75a98680c.png)
私の環境では`/dev/ttyUSB0`となる。
< Save >で設定を保存。< Exit >で終了する。
設定を終了した後はコンパイルとFlashへの焼き込みを行う。

```
make flash
```
完了後にminicomなどで出力を確認してみる。
![IMG_1920.png](https://qiita-image-store.s3.amazonaws.com/0/140055/f0561702-b191-efce-2f36-73c520c3989f.png)
正しくプログラムが動作していることが確認できた。