レンガ積みのブログ

開発ツールとかの忘備録

WindowsでVisual Studio Codeの拡張機能開発環境を整える

事前準備

renga.hatenadiary.com


yo,generator-codeをインストール

コマンドプロンプトから以下のコマンドでインストールできる

npm install -g yo
npm install -g generator-code

generator-codeで雛形コードを生成する

コマンドプロンプトから以下のコマンドを実行する

コマンドプロンプトはひな形を作成したい場所に移動しておくこと

yo code

統計に協力するか聞かれるのでy/nをタイプする
「Welcom to the Visual Studio Code Extension generator!」としゃべっているアスキーアートが現れれば成功
(AA崩れしているが、気にしない)
f:id:goods-tmu:20160712210757p:plain

必要事項を入力する

まずはどの拡張機能タイプを作るのか聞かれている。
今回は一番上のExtention(TypeScript)を選択(上下キーでカーソルを動かせる)してEnter

f:id:goods-tmu:20160712211442p:plain

後は今回以下のように設定

f:id:goods-tmu:20160712211807p:plain

できたひな形を確認する

作業場所に以下のようなフォルダが作られている
f:id:goods-tmu:20160712212546p:plain

このフォルダをvscodeで開く
f:id:goods-tmu:20160712212756p:plain

デバッグしてみる

雛形では、コマンドパレットでHelloWorldと打つと「HelloWorld!」と表示してくれるものが書かれている

左側のデバッグを開いて、デバッグの開始をクリックする
新しくvscodeのウインドウが開く(この新しいウインドウがデバッグ環境)
f:id:goods-tmu:20160712212940p:plain
[ctrl]+[shift]+[p]でコマンドパレットを開いて、Hello World 拡張機能を実行する
f:id:goods-tmu:20160712213301p:plain

[情報] Hello World! と出れば成功
f:id:goods-tmu:20160712213402p:plain

参考にしたサイト

www.atmarkit.co.jp

WindowsにNode.jsのインストール

環境は

  • Windows10 64bit

Node.jsのダウンロード

以下からダウンロード
https://nodejs.org/en/

f:id:goods-tmu:20160712204542p:plain

Node.jsのインストール

ダウンロードした「node-v4.4.7-x64.msi」を実行してインストール

f:id:goods-tmu:20160712204834p:plain

Node.jsとnpmがインストールされているか確認

コマンドプロンプトで確認

C:\Users>node --version v4.4.7 C:\Users>npm --version 2.15.8 C:\Users>

f:id:goods-tmu:20160712205427p:plain

参考にしたサイト

qiita.com

Pythonで機械学習の練習

Pythonでロスアラモス大学が配布しているSHMTools(構造ヘルスモニタリング機械学習デモ)をやってみた
開発環境は以下の記事通り
renga.hatenadiary.com


www.lanl.gov

とりあえず、データのセットアップと特徴量探索の途中まで

# coding: Shift_JIS
import numpy as np
import pandas as pd
import scipy.io

## データセットの構成
#
# ロスアラモス大学の配布ページからダウンロードする
# SHMTools Software
# http://www.lanl.gov/projects/national-security-education-center/engineering/software/shm-data-sets-and-software.php
#
# \Examples\ExampleData\data3SS.mat
#

data3SS = scipy.io.loadmat("data3SS.mat")

for ch in range(1,5):
    data = np.squeeze(data3SS["dataset"][:,ch,:])

    np.save('data_ch'+str(ch), data)


State = data3SS["states"].T.astype(np.int)
Cond = np.empty((0,1),int)
for i in range(0, State.size):
    if State[i] >=10:
        Cond=np.append(Cond,np.array([['damaged']]),axis=0)
    else:
        Cond=np.append(Cond,np.array([['undamaged']]),axis=0)


df = pd.DataFrame({'State': State.T[0],'Cond':Cond.T[0]})
df.to_csv('StateCond.csv')
# coding: Shift_JIS
import numpy as np
#import scipy.io
from scipy import signal
import matplotlib.pyplot as plt
from statsmodels.tsa import ar_model


## データの読み込み
data = np.load('data_ch4.npy')

dataGood = data[:,1-1]
dataDamaged = data[:,170-1]

Fs = 320
time = np.arange(0, dataGood.size) / Fs


# 時系列データの表示
plt.figure()
plt.subplot(2,1,1);
plt.plot(time,dataGood)
plt.xlabel('time [s]'), plt.ylabel('acc [m/s^2]'), plt.title('undamaged')
plt.axis('tight'), plt.ylim([-2,2])

plt.subplot(2,1,2);
plt.plot(time,dataDamaged);
plt.xlabel('time [s]'), plt.ylabel('acc [m/s^2]'), plt.title('damaged')
plt.axis('tight'), plt.ylim([-2,2])

plt.tight_layout()
plt.show()


## ヒストグラムの表示
plt.figure()
plt.subplot(2, 1, 1)
plt.hist(dataGood, 50)
plt.xlim([-3,3])
plt.title('histgram : undamaged')

plt.subplot(2, 1, 2)
plt.hist(dataDamaged, 50)
plt.xlim([-3,3])
plt.title('histgram : damaged')

plt.tight_layout()
plt.show()


## 周波数スペクトルの表示
freq1, P1 = signal.welch(dataGood, Fs)
freq2, P2 = signal.welch(dataDamaged, Fs)

plt.figure()
plt.subplot(2, 1, 1)
plt.plot(freq1, 10*np.log10(P1), linewidth=2, label="nseg=n/4")
plt.xlabel("Frequency[Hz]"), plt.ylabel("Power/frequency[dB/Hz]")
plt.title('PSD : undamaged')

plt.subplot(2, 1, 2)
plt.plot(freq2, 10*np.log10(P2), linewidth=2, label="nseg=n/4")
plt.xlabel("Frequency[Hz]"), plt.ylabel("Power/frequency[dB/Hz]")
plt.title('PSD : undamaged')

plt.tight_layout()
plt.show()


## 自己回帰モデルの係数取得と表示
arOrder = 10;

# TODO : モジュール化
N = data.shape[1]   # dataの列数取得

coef = np.zeros((N, arOrder+1))

for id in range(0,N):
    model = ar_model.AR(data[:,id])
    results = model.fit(maxlag = arOrder)
    coef[id,:] = results.params

Features = coef

# 可視化
plt.figure()
for id in range(0,N):
    if id>90:
        plt.plot(Features[id],'b')
    else:
        plt.plot(Features[id],'r')
plt.show()

f:id:goods-tmu:20160709113740p:plain
f:id:goods-tmu:20160709113752p:plain
f:id:goods-tmu:20160709113800p:plain
f:id:goods-tmu:20160711080502p:plain

Visual Studio Codeのおすすめのユーザー設定

vscodeのおすすめの設定

  1. 【必須】shftjis対応設定(日本語の文字化け対策)
  2. 【推奨】空白文字の表示
  3. 【推奨】垂直ルーラー表示
  4. 【推奨】保存時に末尾の空白削除

ユーザー設定ファイルを開く

f:id:goods-tmu:20160708215848p:plain


setting.jsonの中を変更して保存

{
    // ファイルの読み取り/書き込みで使用する既定の文字セット エンコーディング。
    "files.encoding": "shiftjis",
    // エディターで空白文字を表示するかどうかを制御します
    "editor.renderWhitespace": true,
    // 垂直ルーラーを表示する列
    "editor.rulers": [80],
    // 有効にすると、ファイルの保存時に末尾の空白をトリミングします。
    "files.trimTrailingWhitespace": true
}   

f:id:goods-tmu:20160708221130p:plain


これで日本語が入ったファイルを開いても文字化けしない
f:id:goods-tmu:20160708221630p:plain

WindowsでPythonの環境構築

おすすめの環境

Anaconda + Visual Studio Code
で開発するのがおすすめ

自分の環境は

Anaconda

Python+主要なPythonライブラリのセットを簡単にインストールできるようにしたもの
初心者がPythonを個別に入れるのはおすすめしない、絶対にAnacondaを使うべき

Visual Studio Code

ver1.3.0からは自信をもってほかの人にお勧めできるものになったコードエディタ
windows以外のOSでも全く同様に動くというのも素晴らしい

Anacondaのインストール

1,Anacondaのダウンロード

ここからwindows版をダウンロード(32bitPCの場合は32bit版を)
Why Anaconda? | Continuum

f:id:goods-tmu:20160708201333p:plain

2,Anacondaのインストール

ダウンロードした「Anaconda3-4.0.0-Windows-x86_64.exe」ファイルを実行
(※pathの設定などもすべて自動でやってくれる)

Visual Studio Codeのインストール

1,vscodeのダウンロード

ここからwindows版をダウンロード
Download Visual Studio Code - Mac, Linux, Windows

f:id:goods-tmu:20160708201205p:plain

2,vscodeのインストール

ダウンロードした「VSCodeSetup-stable.exe」ファイルを実行

python実行環境を整える

vscode上から実行やデバッグをできるように設定する

1,下準備

pythonの開発を行うフォルダ(以下作業フォルダ)を作り、そのフォルダをvscodeで開く
開き方1:vscodeから「フォルダーを開く」で選択する
f:id:goods-tmu:20160708202643p:plain

開き方2:フォルダをvscodeのショートカットにドラッグする
f:id:goods-tmu:20160708202502p:plain

確認用に.pyファイルを作る
f:id:goods-tmu:20160708202847p:plain

確認用にprint文を書く
f:id:goods-tmu:20160708202951p:plain

2,タスクランナーを設定する

「Ctrl」+「Shift」+「B」のショートカットを押し、
出てきた「タスクランナーの構成をクリック」
f:id:goods-tmu:20160708203143p:plain

「Others」を選択すると、作業フォルダに「.vscode」というフォルダと「tasks.json」というファイルが出来上がる
f:id:goods-tmu:20160708203305p:plain
f:id:goods-tmu:20160708203514p:plain

「tasks.json」を以下のように書き換えて保存する
Pythonコマンドをファイルを引数に渡して実行するようにする)

tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "python",
    "isShellCommand": true,
    "args": ["${file}"],
    "showOutput": "always"
}

f:id:goods-tmu:20160708203834p:plain

test.pyを選択した状態で「Ctrl」+「Shift」+「B」のショートカットを押すと、実行されるようになっているのを確認
f:id:goods-tmu:20160708204206p:plain

3,デバッグ環境を作る

左側一番下にある拡張機能管理ボタンをクリック
python」で検索をかける
ダウンロード数の多い「Python拡張機能をインストールする
f:id:goods-tmu:20160708204409p:plain

左側の下から二番目のデバッグボタンをクリック
歯車マークをクリック
f:id:goods-tmu:20160708204640p:plain

Pythonを選択
f:id:goods-tmu:20160708204729p:plain

デバッグの開始ボタン(ショートカットはF5キー)からデバッグ実行可能になる
一般的なデバッグ機能(ステップ実行、ブレークポンチ、変数監視、ウォッチなど)が使える
f:id:goods-tmu:20160708205117p:plain

これ以降は、この作業フォルダで作業するかぎり

が行えるようになっている

スクリーンショット注釈ツールの調査

Skitchの代替ソフト調査

結構前からWindows版のSkitchがサポート終了してます。

今年に入ってダウンロードさえできなくなったので代わりになるソフトを調査。

しばらくSnipping Toolで頑張ってたけど、つらくなってきたので乗り換えたい

Skitch for Android・Windows・Windows Touch サポート終了のお知らせ – Evernote ヘルプ&参考情報

ほしい機能

  • 美しい各種注釈(矢印、日本語文字、四角形は必須)が可能なこと
  • 注釈の編集がしやすいこと
  • 範囲選択スクリーンショットが可能なこと
  • Windows10で動作すること

 

スクリーンショット注釈ツール選択肢

検索に引っかかった高評価のソフトウェアは以下のとおり

  1. screenpresso
  2. monosnap

screenpresso

Screenpresso: The Ultimate Screen Capture Tool for Windows

  • デフォルトのショートカットは「PrtScr」
  • 各種注釈は綺麗
  • インストールなしで動かせるのもいい
  • 編集感が少し違和感
  • 勝手に保存されるのが嫌だ(何度も取り直したいので)

f:id:goods-tmu:20160608212517p:plain

monosnap

Monosnap - Free Screenshot Tool

  • デフォルトのショートカットは「Ctrl+Alt+5」
  • 各種注釈は綺麗
  • 編集感はOK
  • 日本語がインラインで入力されないのが不便
  • ショートカットを「PrtScr」に割り当てられない

f:id:goods-tmu:20160608210818p:plain

 その他の候補にあったソフト